//	Playerjs.com 21.1.4
//	20.01.2026 10:40:42
//	API - https://playerjs.com/docs/q=api

eval(function(p, a, c, k, e, d) {
    e = function(c) {
        return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
    };
    if (!''.replace(/^/, String)) {
        while (c--) {
            d[e(c)] = k[c] || e(c)
        }
        k = [function(e) {
            return d[e]
        }];
        e = function() {
            return '\\w+'
        };
        c = 1
    };
    while (c--) {
        if (k[c]) {
            p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c])
        }
    }
    return p
}('if(!1y.4V){1y.4V=[];1y.e2}if(1y[\'If\']){1v(If,1)};E Dy(2D){B o={1q:J,pc:[],tL:[],d8:J,lk:\'MW\',MU:D0,MT:CY,8l:\'21.1.4\',fi:[\'8y\',\'\'],ll:\'\',22:J,8g:J,9m:J,MS:J,dx:J,5n:J,9e:J,8z:J,u:\'#MP#MN#MM#ML#Ji#MJ#MH#MG#MF#MD#MC#N1#MO#Nb#Mq#OW#OM#Pk#Pi#Pg#Pe#NR#NQ#Ji#NP#NO#NE#LY#NC#LY#Oj#Od=\',u2:\'\',u3:\'\',u4:\'\',u5:\'\',u6:\'\',u7:\'\',u8:\'\',u9:\'\',Oc:\'\',y:\'xx??x?=xx??x?=\',p:\'\',Ob:-1,yP:"Lh",f9:"//Lh.an",7q:[],dt:H,pr:H,ga:J,ab:J,l0:[],O6:J,ek:\'//.9g//\',ri:0,2y:[],7E:[],9W:[],2W:[],ng:[],aj:0,ay:[],nj:0,wY:J,5U:J,1w:J,zC:J,7m:J,ni:\'<G0>\',jk:\'</G0>\',a1:1y.kK.Z<2h&&1y.kK.1e<2h,r9:[],O8:[],5F:{\'1J\':1,\'O9\':1,\'jl\':1,\'hw\':1,\'t8\':0},9Z:[],zy:0,dz:0,5l:J,4q:J,g4:J,oY:J,Oa:[],ns:[],aU:J,cY:0,j2:J,zQ:1E,i9:1E,un:J,Gj:E(x){B a;2f(dP(\'#O1#Of=\'));I a},Og:0,jH:4C,4v:J,dq:J,vo:26.vo,d:8N.wT,lb:8N.wT,9s:8N.9s,jb:8N.9s.K("jb")==0,Oh:{},zT:\'Oi-Gk.an/Gk.js\',fd:["Gj","FA"],5T:[],Oo:[],Or:[],jJ:1,mD:[],FA:E(x,y,z){B a;I a},18:0,oB:0,5d:J,dk:-1,al:3,NY:0,xS:0,9L:0,3C:{x:1,y:1,x0:1,y0:1},cq:["la","l7","l6","od","o9","nU","xe","nR","ex","eQ","u1","ub"],mh:["NA","NG","NH","NI"],dA:0,NN:0,xG:0,Bg:0,dw:0,Dx:[],b4:[\'7v\',\'dV\',\'qb\',\'6J\'],NU:[],oW:H,pt:[],vH:0,pT:0,ws:"w"+"s",d8:J,gW:[J,J,J]};B g9={R:{w:20,h:20,1d:"-",NV:"-",a:1,7z:-1,1u:"3G",1F:"",1J:1,gM:-1,aJ:0,2u:1,1p:"",1B:"",4a:"NW",dY:12,iw:0,1r:"Q",2Q:"0 3 0 3",am:"0 0 0 0",2l:1,iK:"0 0 0 0",Os:0,ia:1,bg:0,pK:0,GA:0,5M:1,8Q:-1,4X:"3Y",9M:-1,fR:"0 0 0 0",pM:-1,pN:"3G",9G:-1,lU:-1,6e:"1P",4w:"yG",2u:0,kG:"3Y",kh:0.7,vL:0,y6:"3G",kR:"3 5 3 5",O0:"0 0 0 0",Ot:1,xK:"oG-oF",w6:11,wR:0,2N:"",I1:5,I0:0,3h:0,Pj:2,Ow:2,Ex:0.2,EM:0,Fk:0.1,aB:0,Ox:"Oz",OA:1,OB:5,ED:"3Y",Ez:"3G",F2:"3G",EE:1,Gr:1,xu:1,7p:0,3p:0,fS:20,dp:"<2o Z=\'20\' 1e=\'20\'><g><g1 ry=\'5\' rx=\'5\' cy=\'10\' cx=\'10\' 6k=\'#ht\'/></g></2o>",xB:1,pF:-1,lv:0,lq:1,x9:-1,OD:0.1,ea:0,3a:"",Jm:0,JI:"yG",3y:"",LP:ID,LR:ID,EV:0,5G:0,5C:"3G",Fr:0,Fq:"3Y",Fw:9,xf:"0 0 10 0",xg:"0 0 0 0",Fs:0}};E GW(){I H;o.GX=H}E c6(s){if(s.K(\'.\')==-1){s=s.1i(1);s2=\'\';V(i=0;i<s.S;i+=3){s2+=\'%u0\'+s.4N(i,i+3)}s=OL(s2)}I s};E Iq(){if(o.u!=\'\'){v=aE(v,5e.7y(dP(o.u)))}if(2D.K("#"+v.aw)==0){2T{2D=5e.7y(o[o.fd[0]](2D))}2G(e){}}F{if(2D.K("#"+v.d2)==0){2T{2D=5e.7y(o[o.fd[1]](2D))}2G(e){}}}}E 8a(x,y){}E o0(y,1b){}B uM=E(){B a0=1Z("2e");o.1O.1R(a0);O(a0,{\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'Z\':\'100%\',\'1e\':30,\'2z-1u\':v.Hu,\'1D\':v.HJ,\'2i\':\'1P\'});B x=1Z("2e");o.1O.1R(x);O(x,{\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'Z\':\'100%\',\'1u\':v.HC,\'4a-3R\':v.HK,\'2U\':(v.HE+\'px \'+v.HI+\'px\'),\'2i\':\'1P\'});G.9g=E(1B,n){x.1T=1B;5W(x);O(a0,{\'1e\':x.2Y,\'2i\':\'4E\'});a0.C.5a="ON";V(B i=0;i<x.c9(\'a\').S;i++){x.c9(\'a\')[i].C.1u=\'#ht\'}if(n){1v(G.yF,2h*n)}x.C.5a="OP"};2f(E(w,i,s,e){B as=0;B 8U=0;B gq=0;B e9=[];B eb=[];ow(H){if(as<5)eb.2I(w.6D(as));F if(as<w.S)e9.2I(w.6D(as));as++;if(8U<5)eb.2I(i.6D(8U));F if(8U<i.S)e9.2I(i.6D(8U));8U++;if(gq<5)eb.2I(s.6D(gq));F if(gq<s.S)e9.2I(s.6D(gq));gq++;if(w.S+i.S+s.S+e.S==e9.S+eb.S+e.S)1g}B Iw=e9.sW(\'\');B Ix=eb.sW(\'\');8U=0;B sX=[];V(as=0;as<e9.S;as+=2){B uD=-1;if(Ix.b8(8U)%2)uD=1;sX.2I(6T.tX(2L(Iw.1i(as,2),36)-uD));8U++;if(8U>=eb.S)8U=0}I sX.sW(\'\')}(\'Nv\',\'Mo\',\'Mx\',\'Mu\'))};E kH(x){x==1?o.1L.1R(o.1O):\'\'};E aZ(x){V(B i=1;i<6;i++){if(x.K("{v"+i+"}")>-1){if(L(v["mV"+i])){B re=1t Mt("{v"+i+"}","ig");x=x.1N(re,(v["mV"+i].K("js:")==0?1y[v["mV"+i].1i(3)]:v["mV"+i]))}}}I x};B v={1l:0,tV:0,oy:"#3Y",2R:0,zA:1,8x:"#3Y",4X:"#3G",7p:0,eD:1,qT:1,3c:0,yb:1,e6:0,wf:1,1o:{Mv:0,1u:"3Y",a:"0.4",h:34,l5:1,1k:1,j6:1,eH:0,jq:3,7Z:0,tk:3,6e:"1P",1r:"2P",2Q:"0 0 0 0",7p:0,ih:0,a2:\'\'},1M:{on:1,f:1,r:1,m:1,3F:5,yV:"3F",9c:1,zp:"1I",r5:0,Lv:0,wC:1,kL:0.2},W:{4X:"3Y",9M:"lG",5M:0.9,8Q:-1,1r:"1a",2Q:"0 0 0 0",2U:"7 15 7 15",1u:"3G",4a:"Hw, Ht, oG-oF",dY:12,5o:10,iw:0,5C:"Hr",KY:1,8x:"N3",a:1,7z:-1,N8:0,N9:100,Nd:Ne,Nl:1,sr:1,Jw:"Np",rf:"3Y",ro:-1,Nq:-1,Jy:0,wW:3,hP:16,KZ:"Ns",7p:0,j7:1,nE:1,nD:"3G",s6:0,s5:"3Y",M0:1,LD:0,LJ:"lG",lP:0,i8:4C,cp:0,6Q:0,LX:0,KH:0,eu:1,3B:0,jd:50,uU:0,ly:1,eI:N2,q8:0,x8:"lG",wV:"0 0 0 0",v3:30,8x:"Hk"},1f:{4X:"3Y",9M:"ME",5M:0.7,8Q:-1,4a:"Hw, Ht, oG-oF",1r:"2P-2r",2Q:"0 0 0 0",2U:"7 10 7 15",1u:"3G",dY:12,hP:16,5o:10,iw:0,MK:"3G",5C:"Hr",a:1,1J:5,7z:-1,uJ:1,wW:3,j7:1,nE:1,nD:"3G",lP:0,i8:4C,7p:0,MV:1,MZ:"54",4H:1,N0:"7A",Pq:1,Ps:"1W",RK:0,Sy:"6W",Sw:0,Sv:"59",v3:30,8x:"Hk"},Sk:{1r:"2P-2r",2Q:"0 10 50 0"},1I:0.8,tC:1,mC:1,9k:0,5P:0,D2:1,51:0,4A:0,As:0,Ay:0,3g:0,ti:1,lS:0,wJ:0,wK:0,l9:\',\',nJ:\';\',dr:\'//\',sZ:1,l8:\'[\',ee:\']\',f7:\'6k\',mX:1,mZ:-1,zc:0,Sp:\'20 0 0 20\',So:\'1c-1a\',Sn:100,Sm:100,Sl:-1,xJ:0,Co:1,Hu:"pJ",HC:"3G",HE:5,HI:10,HJ:1,HK:10,nj:0,zF:1,sj:1,g5:1,5h:\'SP\',sC:0,fg:\'5J\',a8:1,Bx:0,AR:0,Ld:0,9E:1,d1:1,JR:5,6I:0,DX:1,q0:0,wQ:5,SN:0,SM:0,SL:0,na:1,DK:1,Lt:0,BV:0,SC:0,rl:1,pX:0,3l:"Ei",SI:Gz,n5:\'100%\',ga:0,BZ:{8w:1,2w:0,lN:0,4k:0,1q:1,z9:0,z4:0,z6:0,SH:0,SG:0,SF:0},CV:{8w:1,2w:0,lN:0,4k:0,1q:1,z9:0,z4:0,z6:0},Si:100,sh:1,h3:1,mJ:14,la:\'100%\',AB:1,mK:20,Ep:1,o9:0.7,DJ:2,y8:3,ex:10,l7:"3G",l6:"FC",od:"3Y",nU:0,xe:0,nR:im,uS:1,eQ:0,yT:1,9d:1,RN:1,RQ:0.3,RR:3,RS:4,RT:5,RU:0,RW:RX,Se:Fd,Af:0,DC:1,wG:1,fp:1,GJ:1,yk:0,HR:Sd,Il:90,Im:0,IE:1,IG:"lG",I6:0,IH:1,aw:\'2\',d2:\'3\',Sc:10,S8:1,S7:1,S5:-1,S4:1,S3:1,SR:-1,SS:0,TJ:1,TI:0,TH:1,TG:0,TF:1,TB:0,TA:1,Tz:0,Ty:1,Tx:0,Tw:1,TK:0,xc:1,TD:0,TL:0,U2:1,U1:0,U0:1,TZ:"#3G",TY:"#3Y",TX:"#3Y",TT:"#3G",TS:"#3Y",TR:"#3G",TQ:"#3Y",TP:"#3G",Tb:"#3Y",Ts:"#3G",T8:"#3Y",T7:"#3G",T6:1,SZ:0,SW:1,SV:0.5,T9:"#3G",T2:"#3Y",Ta:1,U3:1,Tr:1,Tq:1,Tp:1,To:10,Tn:-1,Tl:1,Tj:1,Tc:0,qn:0,Tg:"or",Tf:"or",Te:"or",Td:"or",ST:"50%",RJ:-1,QB:0,RI:-1,Qg:0,Qf:0,Hm:1,Hj:0,Qd:30,Qc:2,CA:10,Ca:0,Qb:30,Ki:1,Jb:1,6b:0,2a:{on:0,4X:"3Y",2R:0,a7:2,8x:"3Y",1r:"1a",2Q:"20 0 0 20",Z:rg,1k:0}};v.9R="ru";B 9a=E(is){B i;B C=[];B f=[];B av=[];B Q9=[];B 5V=[];B 8G=[];B 1K=[];B f2=[];B h0=[];B Q2=[];B 4U=[];B 5r=[];B 5w=[];B dI=[];B b6=J;B 2j;B bE=-1;B 4D=H;B 19=is;B 6u=is=="1f";B W;B 5P=[];B dO=[];B m8;B 3z=\'\';B ef=\'\';B 6s=-1;B hH;B fb=J;B Q8=J;B pw=J;B oQ=J;B eW=J;B hG=J;B qN;B xb;B qA;B jq;B sc;B iP=[];B 6v=[];B qX=0;B b3=0;B hL;B 9U;B 6o="2l";B bh=(o.1h.2c?"fO":"nG");B aM=(o.1h.2c?"fQ":"nH");C=aE(C,v[is]);C=4o(v[is],\'2Q\',\'2Q\');C=4o(v[is],\'am\',\'am\');C=4o(v[is],\'aK\',\'aK\');if(C.q8==0){C.wV="0 0 0 0"}C=4o(v[is],\'fR\',\'wV\');C=4o(v[is],\'2U\',\'2U\');B iq=C.Q6=="1a";B 6V=C.wW;C.nT=0;B au=" Z=\'"+6V*2+"\' 1e=\'"+(6V*2>C.5o?(6V*2):C.5o)+"\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\'>";B Gv="<2o Z=\'"+6V*2+"\' 1e=\'"+C.5o+"\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\' ><g><g1 ry=\'"+(6V-1)+"\' rx=\'"+(6V-1)+"\' cy=\'"+(C.5o/2+2)+"\' cx=\'"+6V+"\' 4d=\'"+3v(C.5C)+"\' 4d=\'1\' 6k-1D=\'0\'/></g></2o>";B tK="<2o C=\'2Q:"+(C.dY/2)+"px "+(iq?\'-\'+C.lM:2t(C.Q5,5))+"px 0 0\'"+au+"<gk 4d=\'"+3v(C.5C)+"\' 4d-Z=\'"+(6V/2)+"\' 6k=\'1P\' 7M=\'-1 2.38 3.82 7.2 11 -1\'></gk></2o>";if(C.Q4==1){au=tK}F{au="<2o C=\'2Q-1c:cP\'"+au+"<g><g1 ry=\'"+(6V)+"\' rx=\'"+6V+"\' cy=\'"+(6V*2>C.5o?6V:(C.5o/2))+"\' cx=\'"+6V+"\' 6k=\'"+3v(C.5C)+"\'/></g></2o>"}B xx=4;B Mk="<4B C=\'2i:aG-4E;\'><2o Z=\'"+(xx+2)+"\' 1e=\'"+(C.5o)+"\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\'><g><2F x1=\'1\' y1=\'"+(C.5o/2-xx)+"\' x2=\'"+xx+"\' y2=\'"+(C.5o/2)+"\' 4d=\'#"+C.1u+"\' 4d-Z=\'1\' 4d-eX=\'4u\'/><2F x1=\'"+xx+"\' y1=\'"+(C.5o/2)+"\' x2=\'1\' y2=\'"+(C.5o/2+xx)+"\' 4d=\'#"+C.1u+"\' 4d-Z=\'1\' 4d-eX=\'4u\'/></g></2o></4B>";B hN="<4B C=\'2i:aG-4E;\'><2o Z=\'"+(xx+10)+"\' 1e=\'"+(C.5o+1)+"\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\' C=\'gL:1a\'><g><2F x1=\'1\' y1=\'"+(C.5o/2+2)+"\' x2=\'"+xx+"\' y2=\'"+(C.5o/2-xx+2)+"\' 4d=\'#"+C.1u+"\' 4d-Z=\'1\' 4d-eX=\'4u\' /><2F x1=\'1\' y1=\'"+(C.5o/2+2)+"\' x2=\'"+xx+"\' y2=\'"+(C.5o/2+xx+2)+"\' 4d=\'#"+C.1u+"\' 4d-Z=\'1\' 4d-eX=\'4u\'/></g></2o></4B>";B 8x=6f(2t(C.8x,\'3G\'),2t(C.L0,1));B 1L=1Z("2e");o.1O.1R(1L);O(1L,{\'6t\':\'3h\',\'2i\':\'4E\',\'1D\':0,\'2R-7b\':C.7p});if(C.pM==1){O(1L,{"2R":"4s 6K "+3v(2t(C.pN,\'3G\'))})}B hZ={};V(B i in o.5F){if(o.5F.2x(i)){hZ[o.5F[i]]=-1}}1L.C.5a=6u?Q3:Qa;B X=1Z("2e");if(o.a1){C.Fm>0?C.dY=C.Fm:\'\';C.Fn>0?C.eI=C.Fn:\'\';C.Fp>0?C.jd=C.Fp:\'\'}O(X,{\'1r\':\'gP\',\'1c\':0,\'1a\':0,\'2i\':\'4E\',\'Z\':\'100%\',\'2U-1c\':C.aL,\'2U-2r\':C.6S+(6u&&C.3B==1?0:20),\'2U-2P\':C.aO,\'2U-1a\':C.6M,\'1u\':C.1u,\'4a-3R\':C.dY*2t(v.8B,1),\'4a-fc\':gy(C.4a),\'kX-f3\':C.iw+\'px\'});if(o.1h.6B){O(X,{\'94-Z\':Ft})}if(is!=="W"){O(X,{\'6t-y\':(6u&&C.3B==1?\'3h\':\'9b\')})}1L.1R(X);if(C.3B!=1){B 7c=1Z("2e");O(7c,{\'2i\':\'4E\',\'6t\':\'3h\',\'2R-7b\':C.7p});if(C.3B!=1){if(o.1h.6B){O(7c,{\'94-Z\':Ft})}}X.1R(7c)}3P(X,{id:(v.id+"47"+is)});if(is=="W"){if(C.3B==1){O(X,{\'Z\':\'100%\',\'2U-2r\':C.6S,\'2U-2P\':C.aO+20,\'6t-x\':\'9b\',\'6t-y\':\'3h\',\'bn-9c\':\'eR\'});O(1L,{\'Z\':o.2V-C.4M-C.4G,\'1e\':C.jd+C.aL+C.aO})}F{O(X,{\'6t-y\':\'9b\',\'6t-x\':\'3h\'});if(C.KA==1){mM()}}if(C.q8==1){O(1L,{\'2z-1u\':C.x8})}if(v.W.2J==1){3m(1L)}}if(C.j7==1){B 5D=1Z("2e");B aP=6f(C.q8==1?C.x8:C.4X);if(C.3B==1){i3(5D,\'to 2r, 5i(\'+aP+\',\'+(C.5M*1+0.3)+\'), 5i(\'+aP+\',0)\',\'1a\',12,5,7,10,7,10,12,15);5D.1z(6o,Jt)}F{i3(5D,\'to 2P, 5i(\'+aP+\',\'+(C.5M*1+0.3)+\'), 5i(\'+aP+\',0)\',\'1c\',5,12,10,7,10,7,15,12);5D.1z(6o,KF)}B 5y=1Z("2e");if(C.3B==1){i3(5y,\'to 1a, 5i(\'+aP+\',\'+(C.5M*1+0.3)+\'), 5i(\'+aP+\',0)\',\'2r\',8,5,13,10,13,10,8,15);5y.1z(6o,Jq)}F{i3(5y,\'to 2P, 5i(\'+aP+\',0), 5i(\'+aP+\',\'+(C.5M*1+0.3)+\')\',\'2P\',5,8,10,13,10,13,15,8);5y.1z(6o,JO)}5D.1z("nG",iU);5D.1z("nH",iU);5y.1z("nG",iU);5y.1z("nH",iU);X.1z("w5",F1,{5Q:J});5D.1z("9I",bc);5y.1z("9I",bc);1L.1R(5D);1L.1R(5y);3D(xb);xb=7u(LT,2h)}X.1z(bh,EA,{5Q:J});X.1z(aM,yf,{5Q:J});if(v.W.9U>0&&!9U&&is=="W"){if(1A Fu!=="1E"){9U=1t Fu(J,v.W)}}if(6u){V(B i=1;i<15;i++){if(L(v["bW"+is][is+i])){v.1f[is+i]=v["bW"+is][is+i];if(L(v["bW"+is][is+i+"1S"])){v.1f[is+i+"1S"]=v["bW"+is][is+i+"1S"]}if(L(v["bW"+is][is+i+"1d"])){v.1f[is+i+"1d"]=v["bW"+is][is+i+"1d"]}}if(L(v.1f[is+i])){if(v.1f[is+i]==1){cC(\'f\',i);cM(f[i],av[i],5V[i],8G[i],i);B 5m=v.1f[is+i+"1d"];B 9B=v.1f[is+i+"1S"];if(!L(5m)){v.1f[is+i+"1d"]="59"}if(5m){if(5m.K("3J")>-1&&9B){if(!v[\'6z\'+5m]){if(9B.K(":")>0){B mi=5m.4N(-1);B dm=v[\'p4\'+mi];B k=4z(9B.1i(9B.K(":")+1)).2q(\',\');B ka=[];B hV;V(B j=0;j<k.S;j++){if(k[j].K("(*)")>-1){!L(dm)?dm=j:\'\';k[j]=k[j].1N("(*)",\'\')}hV=k[j].K("->2O:");ka[j]=\'\';if(hV>0){ka[j]=k[j].1i(hV+6);k[j]=k[j].1i(0,hV)}}o[\'6z\'+5m]=k;o[\'m\'+mi+\'47\'+\'2O\']=ka;9B=v.1f[is+i+"1S"]=9B.1i(0,9B.K(":"))}F{o[\'6z\'+5m]=[];v.1f[is+i+"1S"]=9B}v[\'6z\'+5m]=1;o[\'iO\'+5m]=2t(dm,0)}}}5V[i].1T=2M(5m);if(1X(9B)){5V[i].1T=9B}if(5m=="3b"){o.fk=H}1K[i]=5m;7T(i);if(1K[i]==\'ha\'){if(1A mx!=="1E"){!o.ak?o.ak=1t mx():\'\';if(L(1y.mw)){5V[i].1T=o.ak.Qs();o.ak.Ch()}}}if(1K[i]in o.5F){hZ[1K[i]]=i}f[i].1z(bh,6A,{5Q:J});f[i].1z(aM,6g,{5Q:J});f[i].1z(6o,bw);f[i].1z("9I",bc);if(v.1f[is+i+"1k"]==1){O(f[i],{"1e":0})}}}}}E F1(x){if(is=="W"&&C.3B==1&&x){if(x.wj==0&&x.bU!=0){X.aS-=x.bU;x.96()}}3D(qA);qA=7u(yf,kM);bp()}E EA(){o.3A=H}E yf(){if(C.hm==1){2B(o.hn);o.hn=1v(E(){if(!o.3A&&!o.n2){8F()}},(v.1f.hx>0?v.1f.hx*2h:(o.1h.tv?4i:2h)))}o.3A=J}E 6A(1b){if(o.22){o.5t?o.U.5t(J):\'\'}B i=1b.4w.8b(\'oD\');B x;if(i){x=\'f\'}F{if(1b.4w.8b(\'aQ\')){i=1b.4w.8b(\'aQ\');x=\'f2\'}}if(i){i=2L(i);B gj=J;if(L(2f(x)[i])){if(C.8Q>-1){O(2f(x+\'bg\')[i],{\'1D\':C.8Q})}if(1X(C.dH)){O(2f(x+\'bg\')[i],{\'7a\':\'jl(\'+C.dH+\')\'})}if(C.7z>-1){O(2f(x+\'1S\')[i],{\'1D\':C.7z});O(2f(x+\'5G\')[i],{\'1D\':C.7z})}if(is=="W"){if(1K[i].K("W")==0){B id=1K[i].1i(8);if(3z==id||ef==id){O(2f(x+\'1S\')[i],{\'1u\':C.5C});O(2f(x+\'5G\')[i],{\'1u\':C.5C});gj=H}F{O(2f(x+\'1S\')[i],{\'1u\':C.1u})}}}if(C.yM==1&&L(C.ou)&&gj){}F{O(2f(x+\'bg\')[i],{\'8j\':C.9M})}}}};E 6g(1b){if(o.22){o.5t?o.U.5t(H):\'\'}B i=1b.4w.8b(\'oD\');B x;B gj=J;3D(jO);bp();if(i){x=\'f\'}F{if(1b.4w.8b(\'aQ\')){i=1b.4w.8b(\'aQ\');x=\'f2\'}}if(i){if(L(2f(x)[i])){if(C.8Q>-1){O(2f(x+\'bg\')[i],{\'1D\':C.5M})}if(1X(C.dH)){O(2f(x+\'bg\')[i],{\'7a\':\'jl(1)\'})}if(C.7z>-1){O(2f(x+\'1S\')[i],{\'1D\':C.a});O(2f(x+\'5G\')[i],{\'1D\':C.a})}if(is=="W"){if(1K[i].K("W")==0){B id=1K[i].1i(8);if(3z==id||ef==id){O(2f(x+\'1S\')[i],{\'1u\':C.5C});O(2f(x+\'5G\')[i],{\'1u\':C.5C});gj=H}F{if(L(o.ay[id])){iV(i)}F{O(2f(x+\'1S\')[i],{\'1u\':C.1u})}}}}if(C.yM==1&&L(C.ou)&&gj){}F{O(2f(x+\'bg\')[i],{\'8j\':o.ay[id]?C.rf:C.4X})}}}}E bw(1b){if(!eW){B d=1t 6U();o.aF=d.ae();B i=1b.4w.8b(\'oD\');if(i){if(L(f[i])){if(L(1K[i])){if(is=="W"){o.2b=1E}4Y(i,0)}}}mg()}}B yp;B jO;E Gy(1b){if(!eW){B i=1b.4w.8b(\'aQ\');if(i){if(L(5w[i])){if(2j in o.5F){yp=i;jO=7u(EH,4C)}}}}}E EH(){rn(yp)}E bc(1b){3D(jO);1b.6F=H;bp()}E wy(1b){3D(jO);if(!eW){B d=1t 6U();o.aF=d.ae();B i=1b.4w.8b(\'aQ\');if(i){if(i==0){if(5w[0]==\'1u\'){bX();4Y(qX)}F{d0()}}F{if(L(5w[i])){rn(i)}}}}}E m9(1b){B x=1b.4w.8b(\'Gw\');if(x){wO(x)}}E Lq(1b){bp();B i=1b.4w.8b(\'aQ\');if(L(5w[i])){if(7B("=",i)>0){B x=5w[i].1i(0,7B("=",i));B y=5w[i].1i(7B("=",i)+1);B z=2j+\'FE\';if(!v[z]){v[z]=[]}if(!L(v[z][x])){v[z][x]=v[x]+\'\'}wH(x,y)}}};E wH(x,y){v[x]=y;if(o.4T&&v.uS==1&&x!="eQ"){3x.7V("mH"+x,y)}if(o.5d&&o.3O){o.3O.ag()}o.U.le();wO(x)}E Lp(1b){B i=1b.4w.8b(\'aQ\');B x=5w[i];if(L(x)){if(x.K("=")>0){B z=x.1i(0,x.K("="));B y=x.1i(x.K("=")+1);v[z]=y;s0();7T(o[2j+\'wN\']);if(2j=="oe"){8a("JA")}}}}E 7T(i){if(L(1K[i])){B bB=J;B 8e=J;B 5p=\'\';if(6u){if(1K[i]=="54"){5p=o.P.zS()}if(1K[i]=="7A"){5p=o.P.zO()}if(1K[i]=="3b"){5p=\' \';8e=H}if(1K[i].K("3J")>-1){if(o[\'6z\'+1K[i]]){if(o[\'6z\'+1K[i]].S>0){B t=o[\'iO\'+1K[i]];if(t!=-1){5p=o[\'6z\'+1K[i]][t]}8e=H}}}if(1K[i]=="eh"){if(o.7N){5p=o.ng[o.Qw]}}if(1K[i]=="7A"||1K[i]=="eh"||1K[i]=="54"){if(o[\'6z\'+1K[i]].S==0){bB=H}F{if(o[\'6z\'+1K[i]].S==1&&(C.Ka!=1||o[\'6z\'+1K[i]][0]==1)){bB=H}F{8e=H}}}if(1K[i]=="5n"){if(!o.5n){bB=H}F{8e=H}}if(1K[i]=="6W"){if(o.2p!=\'ew\'&&!v.6W){bB=H}F{8e=H}}if(1K[i]=="1W"){if(L(o.1U)){8e=H;if(o.4q||v.9d==1){if(o.3d){5p=o.2W[!o.4q?o.3d.7o():o.3q]}}F{5p=\'\'}B iY=0;V(B s=0;s<o.1U.S;s++){if(o.1U[s]!=\'\'){iY++}}if(iY==1&&o.jh==1){iY=0}if(v.qp==1&&v.vl==1){}F{if(iY==0){bB=H;8e=J}}}F{bB=H}}if(1K[i]=="59"){5p=o.5T[o.al];5p==1&&C.eF!=1?5p=2M(\'h8\'):\'\';8e=H;if(o.2p=="cD"||(o.P.5Y()&&C.Qv!=1)){bB=H;8e=J}}if(1K[i]in o.5F){5p=jI(1K[i]);8e=H}if(1K[i].K("8K")>0){B x=\' \';B y=[\'FO\',\'FP\',\'FQ\'];V(B z=0;z<y.S;z++){if(L(v[1K[i]+y[z]])){if(v[1K[i]+y[z]]!==\' \'){x+=(x!==\' \'?\':\':\'\')+v[1K[i]+y[z]]}}}5p=x!=\' 0:0\'&&x.K(":")>-1?x:\' \';o[1K[i]+\'7R\']=5p;8e=H}}8G[i].1T=5p+\'&ho;\'+(5p!=\'\'&&C.Qu!=1?\' <2o Z="kT" 1e="EP" vR="-1 -1 5 8" 8l="1.1" 4h="3T://4f.w3.4c/4i/2o" 4h:4g="3T://4f.w3.4c/8f/4g"><gk 4d="\'+3v(C.5C)+\'" 4d-Z="1" 6k="1P" 7M="0 0 3 3 0 6"></gk></2o>\':\'\');B ET=6u&&bE!=-1;if(bB){1k(f[i]);if(6u){dI[i]?2B(dI[i]):\'\';if(o.Q){o.Q.jx(i,J,5p)}F{dI[i]=1v(E(){o.Q.jx(i,J,5p)},4C)}}O(f[i],{\'1r\':\'2C\',\'2r\':0,\'1c\':-100})}if(8e){if(ET){}F{if(C.3B==1){O(f[i],{\'2i\':\'aG-4E\'})}F{1n(f[i])}}if(6u){dI[i]?2B(dI[i]):\'\';if(o.Q){o.Q.jx(i,H,5p)}F{dI[i]=1v(E(){o.Q.jx(i,H,5p)},4e)}}O(f[i],{\'1r\':\'gP\',\'2r\':0,\'1c\':0})}2n()}V(B j=1;j<f.S;j++){if(f[j]){if(6d(f[j])){B 4L=J;4D?4L=H:\'\';4D=J;4L&&o.Q?o.Q.4L():\'\'}}}};B vK=0;E 4Y(i,Ge,fa){fa?1K[i]=fa:\'\';if(L(1K[i])){o.n2=H;bp();B x=qW();if(6u){bE==-1?vK=x[0]:x[0]=vK}if(2j!=1K[i]){2j=1K[i];B vV=2j.K("3J")>-1;if(2j==\'54\'||2j==\'7A\'||2j==\'1W\'||2j==\'59\'||vV||2j==\'eh\'||2j in o.5F||2j.K("8K")>0||2j==\'3b\'||2j==\'1u\'){bE=i;B z=kx(o[\'6z\'+2j]);if(2j=="va"){if(C.uu==1){z=8a("Qr")}F{z=8a("Qk")}}if(2j=="oe"){z=8a("Qq")}if(2j=="3b"&&o.3b){z=[];V(B j=1;j<=16;j++){if(L(v["3b"+j])){z.2I(2M(v["3b"+j]));iP[z.S]=v["3b"+j]}}}if(2j=="1u"&&o.4v){z=[];qX=i;V(B j=0;j<o.mh.S;j++){B co=o.mh[j].1i(4);z.2I(2M(co));6v[z.S]=co}}if(z.S==0&&vV){B ai=2j.4N(-1);if(L(1y[\'ov\'+ai])){1y[\'ov\'+ai](v.id)}8F();I}B ei=o[\'iO\'+2j];B Gu=o[\'Qp\'+2j];V(B j=1;j<f.S;j++){if(f[j]){f[j].C.2i="1P"}}f2=[];cC(\'f2\',0);cM(f2[0],h0[0],4U[0],5r[0],0);O(f2[0],{"2R-2P":"4s 6K "+(C.wa==1?8x:"5i(100,100,100,0.7)")});b3=Ge;B qE=J;4U[0].1T=(x[0]<2||b3==1||C.yN==1?\'\':hN)+E3(mo(v.1f[is+i+"1S"],2M(v.1f[is+i+"1d"])))+(o[1K[i]+\'7R\']?o[1K[i]+\'7R\']:\'\');if(2j==\'1W\'&&!o.wz){B jX=1Z("2e");jX.1T=2M("2D");O(jX,{\'1u\':C.1u,\'9V\':\'2A\',\'6Y\':\'4I\'});5r[0].1R(jX);jX.1z(6o,JY);qE=H}if(2j==\'1W\'&&v.qp==1&&!o.1h.tv&&L(1y.mw)){B uf=1Z("2e");!o.3d?o.3d=1t kY():\'\';uf.1T="<t0 1F=\'3e\' id=\'"+v.id+"Gh\' Qo=\'.zr,.z7,.i4\' C=\'2i:1P\'/>"+2M(\'Qn\');O(uf,{\'1u\':C.1u,\'9V\':\'2A\',\'6Y\':\'4I\',\'2Q-1a\':(qE?\'dK\':0)});5r[0].1R(uf);o.gT=dg(v.id+"Gh");o.gT.Qm=o.3d.zP;uf.1z(6o,o.3d.zP)}if(qE){if(fb){if(b3==2){z=[];3m(f2[0])}V(j=0;j<o.cq.S;j++){if(v.lZ==0&&o.cq[j]=="l6"){}F{z.2I("Ql"+o.cq[j])}}}}O(4U[0],{\'4a-3R\':C.hP*2t(v.8B,1)});5w[0]="Qj";if(2j in o.5F){tm(2j);if(qX>0&&o.mh.K(\'Q0\'+2j)>-1){4U[0].1T=hN+2M(2j);5w[0]="1u";5r[0].1T=jI(2j)}O(5r[0],{\'Z\':C.5o*2.5,\'1B-8A\':\'2r\'})}if(b3!=1&&x[0]>1){f2[0].1z(bh,6A);f2[0].1z(aM,6g);f2[0].1z(6o,wy);f2[0].1z("9I",bc)}F{O(f2[0],{"6Y":\'6P\'})}if(C.us==1){3m(f2[0])}if(L(z)){B zz=\'\';V(j=0;j<z.S;j++){B y=j+1;B e8=0;B 6X=J;if(z[j]&&4z(z[j])!=\'\'){if(2j==\'54\'){if(z[j]==2M("2A")){e8=1}if(o.2p=="1C"&&v.PJ==1){B iz=5g(z[j]);if(iz&&iz<zz){e8=2}zz=5g(z[j])}}cC(\'f2\',y,e8);cM(f2[y],h0[y],4U[y],5r[y],1K[i],i);if(2j==\'59\'){z[j]==1&&C.eF!=1?z[j]=2M(\'h8\'):\'\'}if(1A(z[j])==\'4F\'){if(z[j].K("<<<")==0){z[j]=z[j].1N(\'<<<\',\'\');6X=H}if(z[j].K(\'8K\')>0){o[2j+\'wN\']=i}if(z[j].K("w4")==0){B 1H=z[j];if(1H.K("8K")>0){4U[y].1T=2M(z[j].1i(1H.K("8K")+5))}F{4U[y].1T=2M(z[j].1i(7))}if(z[j]==\'Pu\'){m8=f2[y];O(f2[y],{"2R-1c":"4s 6K "+(C.wa==1?8x:"5i(100,100,100,0.7)")})}}F{4U[y].1T=z[j]}}F{4U[y].1T=z[j]}5w[y]=2j+j;if(ei==j||Gu==j){5r[y].1T=ei==j?au:Gv;if(ei==j){iD(y)}}if(1A(z[j])==\'4F\'){if(z[j].K("w4")==0){B t=z[j].1i(7);if(t.K("1u")>0){5r[y].1T="<2e C=\'"+(v[t]=="3Y"?\'2R:4s 6K #lm;1e:aH;Z:aH;\':\'1e:dK;Z:dK;\')+";2z-1u:"+(v[t].K("#")==-1?\'#\':\'\')+v[t]+";2R-7b:dK;\'></2e>"}F{if(L(v[z[j].1i(7)])){5r[y].1T=v[z[j].1i(7)]}}}if(2j=="3b"){if(L(iP[y])&&o.3b){5r[y].1T=o.3b.1p(iP[y],0.7,3v(C.5C))}}if(2j=="1u"){if(L(6v[y])&&o.4v){5r[y].1T=jI(6v[y])}}if(2j==\'54\'){if(z[j]==2M("2A")&&o.P.jo()){C.5C==C.1u?5r[y].1T=au:\'\';iD(y)}if(1X(v.cj)){B fq=v.cj.2q(",");V(B k=0;k<fq.S;k++){if(z[j].K(fq[k])>-1){3m(f2[y])}}}}}B wu="";if(1A(z[j])==\'4F\'){if(z[j].K("w4")==0){3P(f2[y],{\'Pv\':i,\'Gw\':z[j].1i(7)});wu="m9"}}if(!6X){f2[y].1z(bh,6A);f2[y].1z(aM,6g);if(wu=="m9"){f2[y].1z(6o,m9)}F{f2[y].1z(6o,wy)}f2[y].1z("9I",bc);f2[y].1z("Iz",Gy)}F{O(f2[y],{"6Y":"6P"})}}}}Lr();2n()}if(1K[i]==\'6W\'){o.U.jG();2j=-1}if(1K[i]==\'ha\'&&L(o.ak)){o.ak.6w();2j=-1}if(1K[i].K(\'W\')>-1){B id=1K[i].1i(8);if(L(o.1G[id])){B fl=o.1G[id][\'3e\'];if(L(fl)){if(1K[i].K(\'W\')>-1){if(L(hH)){2j=-1;I}}if(fl.K(\'3F:\')==0){if(id.K(\'x\'+ef)!=0){o.2b=fl.1i(5);bS(id.1i(0,id.pA(\'-\'))+\'-0\');I}if(!o.1w){o.2b=fl.1i(5)}if(!o.1q){o.U.2v()}3r(\'3F\',fl.1i(5));v.W.6Q==0&&v.W.eu==1?8F():\'\';I}eq(i);yJ(id);8a("AW");if(L(o.1G[id][\'7k\'])&&v.7k==1&&v.Pw==1){7k(o.1G[id][\'7k\'])}F{pi(id);o.U.eC(fl,(v.W.hR==1?1:1E));v.W.6Q==0&&v.W.eu==1?1v(8F,4C):\'\';pw=J;oQ=J;pu(id);js("Px")}}F{if(L(o.1G[id][\'53\'])){6m(id);if(pw){6s==-1?4Y(0,0):\'\'}F if(oQ){6s==-1?4Y(2L(f.S)-2,0):\'\'}}}}if(o.2J){o.2J.ge()}}if(1K[i]==\'5n\'){o.P.gz()}}}};G.KQ=E(x){7T(o[x+\'wN\'])};E wO(x){if(x=="ub"){K2();I}if(x=="u1"){B z=2j+\'FE\';if(v[z]){V(B y in v[z]){if(v[z].2x(y)){wH(y,v[z][y])}}fx()}I}bp();V(B i=0;i<f2.S;i++){if(f2[i]){f2[i].C.2i="1P"}}f2=[];cC(\'f2\',0);cM(f2[0],h0[0],4U[0],5r[0],0);O(f2[0],{"2R-2P":"4s 6K "+(C.wa==1?8x:"5i(100,100,100,0.7)")});if(x.K("8K")>0){f2[0].1z(6o,s0);4U[0].1T=2M(x.1i(x.K("8K")+5))}F{f2[0].1z(6o,fx);4U[0].1T=(C.yN!=1?hN:\'\')+2M(x)}O(4U[0],{\'4a-3R\':C.hP*2t(v.8B,1)});f2[0].1z(bh,6A);f2[0].1z(aM,6g);f2[0].1z("9I",bc);B 4p=[];B o7=J;if(x.K("3R")>0){4p=[\'50%\',\'75%\',\'100%\',\'125%\',\'rg%\',\'Di%\',\'4C%\',\'Py%\',\'dW%\',\'im%\']}if(x.K("5M")>0){4p=[\'0\',\'0.2\',\'0.3\',\'0.4\',\'0.5\',\'0.6\',\'0.7\',\'0.8\',\'0.9\',\'1\']}if(x.K("kp")>0){V(B i=-5;i<5.5;i+=0.5){4p.2I(2E.4u(i*100)/100)}}if(x.K("dR")>0){4p=[4C,im,fG]}if(x.K("2P")>0){V(i=0;i<21;i++){4p[i]=i*10}}if(x.K("FO")>0){V(i=0;i<24;i++){4p[i]=i}}if(x.K("FP")>0||x.K("FQ")>0){V(i=0;i<60;i++){4p[i]=i}}if(x.K("a7")>0){o7=H;4p=[0,1]}if(x.K("4d")>0){o7=H;4p=[0,1]}if(x.K("1u")>0){4p=[\'3G\',\'FC\',\'Pz\',\'PA\',\'PB\',\'PC\',\'PD\',\'PE\',\'PF\',\'PG\',\'Pt\',\'PI\',\'PS\',\'PY\',\'PW\',\'PV\',\'PU\',\'3Y\'];B vx=v[x].1N("#","");if(4p.K(vx)==-1){4p[8]=vx}}V(y=1;y<=4p.S;y++){cC(\'f2\',y,0);cM(f2[y],h0[y],4U[y],5r[y],y);O(5r[y],{\'2U-1a\':0});if(x.K("1u")>0||x.K("2P")>0||x.K("8K")>0||x.K("kp")>0){y%3!=0?O(f2[y],{\'gL\':\'1a\'}):\'\';O(f2[y],{\'Z\':\'33.3%\'});if(x.K("1u")>0){4p[y-1]=2t(v["PT"+(y-1)],4p[y-1]);4U[y].1T="<2e C=\'"+(4p[y-1]=="3Y"?\'2R:4s 6K #lm;1e:Li;Z:Li;\':\'1e:eT;Z:eT;\')+";2z-1u:"+3v(4p[y-1])+";2R-7b:eT;\'></2e>";O(f2[y],{\'2F-1e\':1})}F{4U[y].1T=4p[y-1]}}F{if(x.K("dR")>0){4U[y].1T=4p[y-1]}F{y%2!=0?O(f2[y],{\'gL\':\'1a\'}):\'\';O(f2[y],{\'Z\':\'50%\'});if(o7){4U[y].1T=2M(4p[y-1]+\'7R\')}F{4U[y].1T=4p[y-1]}}}5w[y]=x+\'=\'+4p[y-1];if((4p[y-1]==v[x]&&6T(v[x])!=" ")||v[x]==\'#\'+4p[y-1]){5r[y].1T=au;iD(y)}f2[y].1z(bh,6A);f2[y].1z(aM,6g);if(x.K("8K")>0){f2[y].1z(6o,Lp)}F{f2[y].1z(6o,Lq)}f2[y].1z("9I",bc)}2n()}E iD(x){f2[x].n3.ba(\'7e-\'+v.id+\'-d3-p4\');O(4U[x*1],{\'1u\':C.5C});np(h0[x*1])}E Lr(){B fo=o[\'PQ\'+2j];if(fo){if(tJ(fo)){V(B s in fo){iD(fo[s]+1)}}}}E pi(id){if(L(o.1G[id][\'29\'])){v.29=o.1G[id][\'29\'];L(v.29)?o.P.a9(v.29):\'\'}if(L(o.1G[id][\'1S\'])){o.df=o.1G[id][\'1S\']}v.W.Lu>0?hH=1v(Lw,v.W.Lu*2h):\'\';zV()}E pu(id){B t=o.1G[id][\'1S\'];if(L(t)){if(v.lS==1){if(o.U.pn(o.1G[id])){}F{v.1S=(v.wK==1&&L(o.t9)?o.t9+(v.wJ==1?\'<br>\':\' \'):\'\')+t}o.U.c7(\'1S\')}}if(v.aB==1){if(L(o.1G[id][\'7M\'])){v.7M=o.1G[id][\'7M\']}F{v.7M=[]}o.Q.ke()}B xv=[\'5S\',\'mN\',\'6W\',\'7I\',\'Y\',\'l2\',\'AY\',\'nA\',\'s7\',\'4k\',\'4t\',\'1m\',\'Bf\',\'B2\',\'7n\',\'cv\',\'hl\',\'Cj\',\'8W\',\'kk\'];V(B i=0;i<xv.S;i++){B iA=o.1G[id][xv[i]];if(L(iA)){o.ns[xv[i]]=iA;v[xv[i]]=iA;if(i==16){v.W.cp=iA}}F{i<4?v[xv[i]]=1E:\'\'}}V(B uv in o.1G[id]){if(uv.K("B3")==0){v[uv.1i(7)]=o.1G[id][uv]}if(uv.K("29")>0){v[uv]=o.1G[id][uv]}}yJ(id);B 9C=o.1G[id];if(L(9C[\'2k\'])){9C[\'1W\']=9C[\'2k\']}if(L(9C[\'1W\'])){o.U.fv(9C[\'1W\'])}if(L(9C[\'8W\'])){o.Q.rE()}o.U.k5(o.1G[id]);if(o.jp){o.Q.rK(o.jp)}if(L(9C[\'9O\'])){3r(\'9O\',9C[\'9O\'])}if(L(9C.1I)){o.U.42(9C.1I)}}E yJ(id){B x=o.1G[id][\'1w\'];if(L(x)){if(x=="3i"){if(2D.1W&&!o.1G[id][\'1W\']){o.1G[id][\'1W\']=2D.1W}if(o.P.18()>0){v.1w=o.2b=o.P.18()}F{2D.1w&&!o.2b?o.2b=2D.1w:v.1w=0}}F{v.1w=o.2b=x}}F{v.1w=0}}E Lw(){2B(hH);hH=1Y}E eq(x){if(6s==0&&!o.1w){O(5V[6s],{\'1u\':C.1u});O(av[6s],{\'8j\':C.4X});8G[6s].1T=\'\';f[6s].n3.5S(\'7e-\'+v.id+\'-d3-pl\')}F{o.yD=x;if(6s>-1){iV(6s)}if(3z!=\'\'){if(!o.ay[3z]&&L(o.1G[3z])){o.ri+=2t(o.1G[3z].1m,0)}o.ay[3z]=H;5P=tE(5P,3z)}}if(1K[x]){B id=1K[x].1i(8);8G[x].1T=au;f[x].n3.ba(\'7e-\'+v.id+\'-d3-pl\');O(5V[x],{\'1u\':C.5C,\'1B-vU\':\'1P\',\'1D\':C.a});np(av[x]);if(C.yM==1&&L(C.ou)){O(av[x],{\'8j\':C.ou})}6s=x;3z=id;o.3z=3z;v.4S=3z;o.q4=5V[x].1T;o.yD=3z;ef=o.1G[id][\'jD\'];if(o.Q){o.Q.jV()}if(9U){9U.PP()}}}E 6m(id){B x=id==0?o.W:o.1G[id];o.yD=id;V(B i=0;i<f.S;i++){if(f[i]){if(C.3B==1){X.3j(f[i])}F{7c.3j(f[i])}f[i]=1Y}}f=[];6s=-1;if(L(x[\'53\'])){B y=7Y.6l(x[\'53\']).S;cC(\'f\',y);1K[y]="PO";cM(f[y],av[y],5V[y],8G[y],y);if(C.3B==1){O(f[y],{"Z":(C.ly==1?C.eI:"2A"),"1e":C.jd})}if(C.KY==1){B z3="4s 6K "+6f(C.KZ,2t(C.L0,1));if(C.3B==1){O(f[y],{"PN":z3})}F{O(f[y],{"PL":z3})}}B 1H=x.1S;if(C.yN!=1){1H=hN+1H}5V[y].1T=1H;O(5V[y],{\'4a-3R\':C.hP*2t(v.8B,1)});B p=x[\'jD\'];f[y].1z(bh,6A);f[y].1z(aM,6g);f[y].1z(6o,E(){Ju(p)});x=x[\'53\']}B y=7Y.6l(x).S;5P=[];dO=[];if(9U&&C.3B!=1){9U.5S(7c);if(y>v.W.9U){9U.ba(C,7c)}}V(B i=0;i<y;i++){cC(\'f\',i);1K[i]="W"+x[i].id;if(!L(o.ay[x[i].id])&&!L(x[i].53)){5P[x[i].id]=i;dO[x[i].id]=i}cM(f[i],av[i],5V[i],8G[i],i);if(C.3B==1){if(6V==0){O(5V[i],{\'Z\':C.eI-C.lM-C.tZ});3m(8G[i])}O(f[i],{"Z":(C.ly==1?C.eI:"2A"),"1e":C.jd})}5V[i].1T=x[i].1S?x[i].1S:\'&ho;\';if(v.cB==1&&v.C4==1&&x[i].id){if(o.Mf){if(o.Mf.K(x[i].id)>-1){x[i].cA=1}}}if(L(x[i].cA)){if(x[i].cA==1){o.ay[x[i].id]=H;iV(i)}}if(L(x[i].53)){8G[i].1T=Mk;O(8G[i],{"1u":C.1u})}f[i].1z(bh,6A);f[i].1z(aM,6g);f[i].1z(6o,bw);f[i].1z("9I",bc);if(L(o.ay[x[i].id])){iV(i)}if(3z==x[i].id){eq(i)}if(ef==x[i].id){O(5V[i],{\'1u\':C.5C});O(8G[i],{\'1u\':C.5C});np(av[i])}}2n();4D=J;o.Q?o.Q.4L():\'\'}E np(x){if(1X(C.LN)&&x){O(x,{"2z-a2":"3f-4O(5i(0, 0, 0, "+(1-C.LN*1)+") 0 0)"})}}E i3(x,y,z,x1,y1,x2,y2,x3,y3,x4,y4){B ww=(C.3B==1?\'LB\':\'100%\');B hh=(C.3B==1?\'100%\':\'LB\');O(x,{\'1r\':\'2C\',\'2i\':\'aG-4E\',\'Z\':ww,\'1e\':hh,\'1B-8A\':\'8o\'});if(C.M0==1){O(x,{\'2z\':\'-lE-3f-4O(\'+y+\')\',\'2z\':\'-3Q-3f-4O(\'+y+\')\',\'2z\':\'-ms-3f-4O(\'+y+\')\',\'2z\':\'-o-3f-4O(\'+y+\')\',\'2z\':\'3f-4O(\'+y+\')\',})}if(C.3B==1||o.1h.2c){O(x,{\'6Y\':\'4I\'})}F{O(x,{\'4I-3l\':\'1P\'})}if(C.lP==1){O(x,{\'5L-Z\':C.i8+\'px!6a\'})}if(z=="1c"){O(x,{\'1c\':-1,\'1a\':0})}if(z=="2P"){O(x,{\'2P\':-1,\'1a\':0})}if(z=="1a"){O(x,{\'1c\':0,\'1a\':0})}if(z=="2r"){O(x,{\'1c\':0,\'2r\':0})}if(z=="2r"||z=="1a"){O(x,{\'1B-8A\':\'1a\',\'2U-1c\':1L.2Y/2-10})}x.1T="<8o><2e "+(C.LD==1?"Q1=\'G.C.8j=\\"#"+C.LJ+"\\"\' Ra=\'"+(C.s6==1?"G.C.8j=\\"#"+C.s5:"G.C.2z=\\"1P")+"\\"\'":"")+" C=\'4I-3l:2A;6Y:4I;Z:eT;1e:eT;2R-7b:eT;"+(C.s6==1?"2z-1u:#"+C.s5+";":"")+(z=="1c"?"2Q-1c:dK;":"")+(z=="2P"?"2Q-1c:dK;":"")+(z=="2r"?"2Q-1a:gv;":"")+(z=="1a"?"2Q-2r:gv;":"")+"\'><2o Z=\'20\' 1e=\'20\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\'><g><2F x1=\'"+x1+"\' y1=\'"+y1+"\' x2=\'"+x2+"\' y2=\'"+y2+"\' 4d=\'#"+C.nD+"\' 4d-Z=\'"+C.nE+"\' 4d-eX=\'4u\'/><2F x1=\'"+x3+"\' y1=\'"+y3+"\' x2=\'"+x4+"\' y2=\'"+y4+"\' 4d=\'#"+C.nD+"\' 4d-Z=\'"+C.nE+"\' 4d-eX=\'4u\'/></g></2o></2e></8o>"}G.aC=E(){if(C.j7==1){aC()}};E LT(){if(b6){aC()}}E aC(e){if(C.j7==1&&!hG){if(C.3B==1){B h=X.Ro;B m=1L.2g+C.6M+C.6S+20;B t=X.aS}F{B h=X.Kj;B m=1L.2Y;B t=X.di}if(h>m){if(t>0){if(!6d(5D)){1n(5D);B m1=1t 5B({"mc":5D,"1F":"8P","to":1,"18":0.3,"me":"5D"})}}F{if(6d(5D)){B m2=1t 5B({"mc":5D,"1F":"8P","to":0,"18":0.3,"me":"5D","1k":H})}if(e){e.bU<0?e.96():\'\'}}if(t<h-m-10){if(!6d(5y)){1n(5y);B m3=1t 5B({"mc":5y,"1F":"8P","to":1,"18":0.3,"me":"5y"})}}F{if(6d(5y)){B m4=1t 5B({"mc":5y,"1F":"8P","to":0,"18":0.3,"me":"5y","1k":H})}if(e){e.bU>0?e.96():\'\'}}}F{1k(5D);1k(5y)}}}E JO(){B x=X.di+1L.2Y-60;B m=1t 5B({"mc":X,"1F":"9b","to":x,"18":0.3,"me":"L6","6L":"cr"});1v(aC,2h)}E KF(){B x=X.di-1L.2Y+60;B m=1t 5B({"mc":X,"1F":"9b","to":x,"18":0.3,"me":"Rm","6L":"cr"});1v(aC,2h)}E iU(1b){2B(o.hn);1b.aW()}E Jq(){B x=X.aS+(1L.2g+C.6M+C.6S)-60;B m=1t 5B({"mc":X,"1F":"kE","to":x,"18":0.3,"me":"Rl","6L":"cr"});1v(aC,2h)}E Jt(){B x=X.aS-(1L.2g+C.6M+C.6S)+60;B m=1t 5B({"mc":X,"1F":"kE","to":x,"18":0.3,"me":"M4","6L":"cr"});1v(aC,2h)}E Ju(x){if(x==\'\'){6m(0)}F{if(L(o.1G[x])){6m(x)}}2j=\'\'}E iV(x){8G[x].1T=\'\';O(5V[x],{\'1u\':C.Jw});if(C.Jy==1){O(5V[x],{\'1B-vU\':\'2F-Rk\'})}if(C.sr>-1){O(5V[x],{\'1D\':C.sr})}f[x].n3.5S(\'7e-\'+v.id+\'-d3-pl\');O(av[x],{\'8j\':C.rf});if(C.ro>-1){O(av[x],{\'1D\':C.ro})}}E rn(i){if(L(5w[i])){bp();if(7B("54",i)==0){o.U.5X(5w[i].1i(7))}if(7B("7A",i)==0){o.U.ey(5w[i].1i(10))}if(7B("1W",i)==0){!o.3d?o.3d=1t kY():\'\';o.3d.9f(5w[i].1i(8))}if(7B("eh",i)==0&&v.7N==1){o.7N.Aj(5w[i].1i(7))}if(7B("3J",i)==0){B 5m=5w[i].4N(0,-1);o[\'iO\'+5m]!=-1?o[\'iO\'+5m]=i-1:\'\';if(o[\'6z\'+5m]){B mi=5m.4N(-1);if(o[\'m\'+mi+\'47\'+\'2O\'][i-1]!=\'\'){B ap=o[\'m\'+mi+\'47\'+\'2O\'][i-1].2q(":");3r(ap[0],ap.S>1?ap[1]:1Y)}if(L(1y[\'ov\'+mi])){v[\'p4\'+mi]=i-1;1y[\'ov\'+mi](v.id,o[\'6z\'+5m][i-1],i-1)}}7T(bE);8F()}if(7B("3b",i)==0){o.3b?o.3b.2O(iP[i]):\'\';8F()}if(7B("1u",i)==0){bX();4Y(0,0,6v[i])}V(B p in o.5F){if(o.5F.2x(p)){if(7B(p,i)==0){o.P.DO(p,i)}}}if(7B("8K",i)>0){if(4U[i].1T==2M(\'6X\')){8a(2j+\'0\');7T(bE);if(2j=="oe"){8a("JA")}d0()}F{if(2j=="va"&&C.uu==1){8a(\'uu\',i);7T(bE);d0()}}}if(7B("59",i)==0){o.U.91(5w[i].1i(5));j8();1v(8F,4C)}}};G.j8=E(){j8()};G.KP=E(x){V(B i=0;i<1K.S;i++){if(1K[i]==x){I H}}I J};E j8(){V(B i=0;i<1K.S;i++){if(1K[i]=="59"){7T(i);if(2j==\'59\'){bX();4Y(i,0)}}}}E cC(x,i,e8){if(L(2f(x))){2f(x)[i]=1Z("2e");if(i<2||x=="f"||2j!=\'54\'||e8>0){if(C.3B==1){X.1R(2f(x)[i])}F{7c.1R(2f(x)[i])}}F{if(C.3B==1){X.rU(2f(x)[i],2f(x)[i-1])}F{7c.rU(2f(x)[i],2f(x)[e8==2?i-2:i-1])}}if(x==\'f\'){3P(2f(x)[i],{\'oD\':i})}if(x==\'f2\'){3P(2f(x)[i],{\'aQ\':i})}2f(x+\'bg\')[i]=1Z("2e");B oH=1Z("2e");2f(x)[i].1R(oH);oH.1R(2f(x+\'bg\')[i]);hg(oH);2f(x+\'3I\')[i]=1Z("2e");2f(x)[i].1R(2f(x+\'3I\')[i]);eM(2f(x+\'3I\')[i]);hg(2f(x+\'3I\')[i]);if(iq){v5(x,i)}2f(x+\'1S\')[i]=1Z("2e");2f(x)[i].1R(2f(x+\'1S\')[i]);if(!iq){v5(x,i)}if(i>0&&x=="f2"&&6u&&C.uJ==0){3m(2f(x+\'5G\')[i])}}};E v5(x,i){2f(x+\'5G\')[i]=1Z("2e");2f(x)[i].1R(2f(x+\'5G\')[i])};E cM(x,a0,jW,ty,Rb,ii){O(x,{\'1r\':\'gP\',\'2r\':0,\'1c\':0,\'6Y\':\'4I\',\'1e\':\'2A\',\'Z\':\'100%\',\'6t\':\'3h\',\'2i\':\'4E\',\'2F-1e\':\'1.Rh\'});if(6u){if(C.3B==1){O(x,{\'Z\':\'2A\'})}}if(C.uU&&C.3B==1){O(x,{\'Rg\':C.uU})}if(C.3B==1&&(!6u||ii>0||C.us==1)){O(x,{\'2i\':\'aG-4E\',\'bK-8A\':\'1c\',\'bn-9c\':\'h8\'})}O(a0,{\'2z\':(C.Gx==1?"3f-4O(to 1a,"+3v(C.Rf)+", "+3v(C.4X)+")":3v(C.4X)),\'1D\':C.5M,\'9V\':\'1P\',\'5j\':\'1D 0.2s 6L-5k,2z .2s 6L-5k,7a .2s 6L-5k\'});eM(a0);eM(a0.4l);if(C.9X==1){O(a0.4l,{\'kg-7a\':\'9X(aH)\'})}if(C.Re==1){x.C[C.3B==1?"2R-2r":"2R-2P"]="4s 6K "+6f(2t(C.Rc,\'3G\'),2t(C.Rj,0.2))}O(jW,{\'1r\':\'gP\',\'2r\':0,\'1c\':0,\'gL\':(C.8A?C.8A:\'1a\'),\'1u\':C.1u,\'2U-1c\':C.Kq,\'2U-2r\':C.tZ,\'2U-2P\':C.Rr,\'2U-1a\':C.lM,\'9V\':\'1P\',\'1D\':C.a,\'5j\':\'1D 0.2s 3f,1u 0.2s 3f\',});O(ty,{\'1r\':\'gP\',\'2r\':0,\'1c\':0,\'gL\':(iq&&ii>0?\'1a\':\'2r\'),\'2U-1c\':C.Kq,\'2U-2r\':C.tZ,\'2U-1a\':C.lM,\'9V\':\'1P\',\'4a-3R\':C.5o*2t(v.8B,1),\'1D\':C.a,\'1u\':C.5C,\'5j\':\'1D 0.2s 3f,1u 0.2s 3f\'});if(C.lP==1){O(x,{\'5L-Z\':C.i8+\'px!6a\'});O(jW,{\'5L-Z\':(C.i8-70)+\'px!6a\'})}F{if(C.3B==1){if(C.ly==1){O(x,{\'Z\':C.eI});O(jW,{\'Z\':C.eI-70})}}F{O(jW,{\'bn-9c\':\'eR\'});O(ty,{\'bn-9c\':\'eR\'})}}}E d0(){V(B i=1;i<f.S;i++){if(L(f[i])){if(C.3B==1){f[i].C.2i="aG-4E"}F{f[i].C.2i="4E"}}}bp();bX();2n();2j=\'\';bE=-1};E bX(){V(B j=0;j<f2.S;j++){if(f2[j]){if(C.3B==1){X.3j(f2[j])}F{7c.3j(f2[j])}f2[j]=1Y}}f2=[];2j=\'\'}E IX(){I X.2g};G.k0=E(){mM()};E mM(){if(is=="W"){if(C.3B==1||C.KA==1){B x=o.2V-C.4M-C.4G;O(1L,{\'Z\':x});O(X,{\'Z\':x});7c?O(7c,{\'Z\':x}):\'\'}o.2J?o.2J.2n():\'\'}}E 2n(){if(!hG){if(6u){o.Q?o.Q.nf():\'\';B x=C.us==1&&f.S>1?f[1]:f[0]}if(is=="W"){mM();o.Q?o.Q.k0():\'\';B x=f[0];if(v.tR==1){pb()}}f.S>1&&!x?(f[1]?x=f[1]:\'\'):\'\';f.S>2&&!x?(f[2]?x=f[2]:\'\'):\'\';if(x){x.2g==0&&f2.S>0?x=f2[0]:\'\'}if(X.2g-X.rs>0&&x&&C.3B!=1){if(L(5D)){O(5D,{"Z":7c.2g})}if(L(5y)){O(5y,{"Z":7c.2g})}C.nT=(X.2g-x.2g)-(X.rs-x.rs)}F{C.nT=0}}};E qW(){B x=0;B y=0;B z=\'\';V(B i=1;i<f.S;i++){if(L(f[i])){if(f[i].C.5H!="3h"&&f[i].C.2i!="1P"){x++;y=i;z=1K[i]}}}I[x,y,z]}G.z2=E(){fb=H;G.1n();b3=2;fx()};E JY(x){fb=H;fx(x);if(fb&&m8){X.RH(0,m8.p3)}}E K2(x){fb=J;fx(x)}E fx(){d0();V(B i=0;i<1K.S;i++){if(1K[i]=="1W"){4Y(i,b3)}}}E bp(){2B(sc);sc=1v(E(){o.n2=J},4i)}E s0(){B x=2j;d0();V(B i=0;i<1K.S;i++){if(1K[i]==x){4Y(i,0)}}}G.tb=E(){I v.1f.6Q==1&&v.1f.1o==1};E 8F(x){if((!6u&&v.W.Kk==1)||(6u&&v.1f.6Q==1&&x!=2)){I}if(is==\'W\'&&v.W.2J==1&&v.W.RE!=1){if(v.W.6Q==1&&x==1){I}o.2J?o.2J.A4():\'\';b6=J}F{if((x!=1||(C.RD==1&&C.6Q==1))&&!o.1h.tv){B m=1t 5B({"mc":1L,"1F":"8P","to":0,"18":0.1,"me":is,"6L":"Df"});jq=1v(E(){O(1L,{"5H":"3h","1D":0,"1c":-4i});b6=J},4C)}F{O(1L,{"5H":"3h","1D":0,"1c":-4i});b6=J}}if(is==\'W\'){if(v.W.Kb==1&&o.Q){o.Q.v9("1d","W",H)}}3D(qA)};G.c=E(){I 1L};G.co=E(){if(1L.RA(X)){I X}};G.s=E(19){if(19=="4G"||19=="4M"){B k2=19.1N("2Q","am");B k3=19.1N("2Q","aK");if(1X(C[k3])&&o.a1){I o.2V*C[k3]/100}if(1X(C[k2])){I o.2V*C[k2]/100}}I C[19]};G.ss=E(19){I C};G.1n=E(){d0();2B(jq);b6=H;if(is==\'W\'&&v.W.2J==1){o.2J?o.2J.jw():\'\'}F{O(1L,{"5H":"4r","1D":1,"5j":"1D 0.2s 3f"});B x=qW();!hL?hL=x[0]:\'\';if(x[0]==1){if(x[2]=="54"||x[2]=="7A"||x[2]=="1W"||x[2]=="59"||x[2]in o.5F||x[2].K("8K")>0){4Y(x[1],0)}}}if(o.Q){if(is==\'W\'&&o.Q.cT()){o.Q.cL()}if(is==\'1f\'&&o.Q.jM()&&!o.2J&&v.W.6Q!=1&&v.gg!=1){o.Q.KO()}}if(o.Q){is==\'1f\'?o.Q.nf():\'\';if(is==\'W\'){o.Q.k0();if(v.W.Kb==1){o.Q.v9("1d","W",J)}}}if(o.1h.6B){O(X,{\'94-Z\':\'2A\'});if(C.3B!=1){O(7c,{\'94-Z\':\'2A\'})}}eW=H;3D(qN);qN=7u(K8,100)};E K8(){3D(qN);eW=J}G.6w=E(i){4Y(i,1)};G.1k=E(x){8F(x)};G.JH=E(){if(o.2J){o.2J.bu()}};G.5X=E(){V(B i=0;i<1K.S;i++){if(1K[i]=="54"){7T(i);if(o.2y.S>1){1n(f[i])}if(2j==\'54\'){bX();4Y(i,b3)}B x=qW();if(b6&&hL==1){hL=-1;d0()}}}};G.gz=E(){V(B i=0;i<1K.S;i++){if(1K[i]=="5n"){7T(i)}}};G.hT=E(x){V(B i=0;i<1K.S;i++){if(1K[i]==x){7T(i);if(o[\'6z\'+x]){if(o[\'6z\'+x].S>1){1n(f[i])}}if(2j==x){bX();4Y(i,b3)}}}};G.9f=E(){V(B i=0;i<1K.S;i++){if(1K[i]=="1W"){7T(i);if(o.2W){if(o.2W.S>0){B x=J;if(o.1U){V(B y=0;y<o.1U.S;y++){if(o.1U[y]!=\'\'){x=H;1g}}}F{x=H}x?1n(f[i]):\'\'}}if(2j==\'1W\'){bX();4Y(i,0)}}}};G.zs=E(x){o.W=x;6m(0);if(L(v.4S)){if(v.4S.K("x-")!=0){V(B y in o.1G){if(o.1G.2x(y)){if(o.1G[y].dT==v.4S){v.4S=y}}}}if(L(o.1G[v.4S])){fy(o.1G[v.4S]);B y=o.1G[v.4S][\'cl\'];eq(y);if(v.W.wL==1&&C.2J!=1){6m(0);1v(E(){2n()},4e)}F{1v(E(){dX(y);2n()},4e)}v.4S=1E}F{eq(0)}}F{eq(0)}if(C.2J==1){if(!L(o.2J)){o.2J=1t Ry(tK)}}};G.bS=E(x){bS(x)};E bS(x){if(L(o.1G[x])){fy(o.1G[x]);4Y(o.1G[x][\'cl\'],0);dX(o.1G[x][\'cl\'])}};G.oq=E(x){if(L(o.1G[x])){fy(o.1G[x]);if(o.1G[x]["3e"]){o.2b=1E;eq(o.1G[x][\'cl\']);pi(x);o.U.eC(o.1G[x]["3e"],1);pu(x);dX(o.1G[x][\'cl\']);if(o.2J){o.2J.ge()}}F if(o.1G[x]["53"]){6m(x)}}};G.zq=E(x){if(o.2J){o.2J.ge()}};E Le(x){if(L(o.1G[x])){ef=\'\';6m(0);fy(o.1G[x]);pi(x);4Y(o.1G[x][\'cl\'],0);pu(x)}};G.aV=E(){pw=H;B x=2L(6s)+1;if(3z!=\'\'){o.ay[3z]=H;5P=tE(5P,3z)}if(v.5P==1){x=tl(5P);if(x==1Y){if(v.Rw==1||v.W.cp==1){dO.Kg(E(a,b){I 2E.5E()-0.5});V(B x in dO){if(dO.2x(x)){5P[x]=dO[x]}}x=tl(5P);js("5J")}F{o.U.DA()}}}F{if(3z!=\'\'){B y=7X().K(3z);if(y<7X().S){B j;V(B i=y+1;i<7X().S;i++){j=o.1G[7X()[i]];if(j.3e){if(j.3e.K("3F:")!=0&&j.5J!=1&&!j.53){G.oq(j.id);x=-1;o.U.2v();js("5J");1g}}}}}}if(x>-1){o.2b=1E;4Y(x,0);dX(x)}};E dX(x){if(f[x]&&!hG){if(C.3B==1){B to=f[x].hK-20;B m=1t 5B({"mc":X,"1F":"kE","to":to,"18":0.3,"me":"M4","6L":"cr"})}F{B to=f[x].p3-1L.2Y/2+20;B m=1t 5B({"mc":X,"1F":"9b","to":to,"18":0.3,"me":"L6","6L":"cr"})}1v(aC,2h)}}E tl(4y){B 6l=7Y.6l(4y);B x;V(B i=0;i<6l.S;i++){x=4y[6l[6l.S*2E.5E()<<0]];if(x){1g}}I x};G.5F=E(x){tm(x)};E tm(x){hZ[x]>-1?7T(hZ[x]):\'\';if(5r[0]){if(2j==\'1J\'){5r[0].1T=2E.4u(o.3C.x*100)+\'%\'}F{5r[0].1T=jI(2j)}}};E jI(x){if(x=="1J"){I 2E.4u(o.3C.x*100)+\'%\'}F{I 2E.4u(2t(o.9Z[x],o.5F[x])*100)+\'%\'}}G.bq=E(){I rP()};E rP(){if(v.5P==1){I 7Y.6l(5P).S>0}B x=J;if(o.1G){x=7X().K(3z)<7X().S-1}I x};G.oo=E(){if(L(o.jE)){2j=1E;Le(o.jE)}};G.eo=E(){B x=6s>0;if(o.1G){B z=7X().K(3z);x=z>0;if(z==1){if(L(o.1G[7X()[0]].53)){x=J}}}I x};G.hf=E(){I L(o.1G)};G.e1=E(){oQ=H;if(G.eo()){B x=2L(6s)-1;if(x<0){B y=7X().K(3z);if(y>0){B j;B z;V(B i=y-1;i>=0;i--){j=o.1G[7X()[i]];if(j){if(j.3e){z=j;if(j.3e.K("3F:")!=0&&j.5J!=1&&!j.53){z=j;1g}}}}if(z){G.oq(z.id);o.U.2v()}}}F{o.2b=1E;4Y(x,0);dX(x)}js("R8")}};G.om=E(){if(6s>0){dX(6s)}};E 7B(x,i){I 5w[i].K(x)};E fy(x){if(x){if(x[\'yh\']!=-1){fy(o.1G[x[\'jD\']]);6m(x[\'jD\'])}F{6m(0)}}};G.g=E(x){c4(x){1j"Z":I IX();1g;1j"1e":I 1L.2Y;1g;1j"1c":I C.bj;1g;1j"Lg":I X.Kj;1g;1j"Lo":I C.dC;1g;1j"x":I 5g(1L.C.1a);1g;1j"y":I 5g(1L.C.1c);1g;1j"1D":I 1L.C.1D;1g;1j"1n":I b6;1g;1j"6w":I bE;1g;1j"19":I 19;1g;1j"bf":I 19+bf;1g;1j"4D":I 4D;1g;1j"W":I is=="W";1g;1j"cA":I o.ay[3z];1g;1j"6w?":I o.2J?o.2J.sO():b6;1j"uJ":I au;1g;1j"cV":I o.1G[o.cV]?o.1G[o.cV].1S:\'\';1j"cv":I v.cv?v.cv:\'\';1j"EJ":I rP()?o.1G[7X()[7X().K(3z)+1]].1S:\'\'}};E 7X(){I 7Y.6l(o.1G)};G.KM=E(){3z=\'\';v.4S=\'\'};G.4D=E(){if(6u){B x=0;V(B i=1;i<15;i++){if(1K[i]=="54"){B y=o.2y.S;if(L(v.cj)){B z=v.cj.2q(",");V(B j=0;j<z.S;j++){if(o.2y.K(z[j])>-1){y--}}}if(y>0){if(y>1||(y==1&&o.2y!=1&&C.Ka==1)){x++}}}if(1K[i]=="5n"){if(o.5n){x++}}if(1K[i]=="6W"){if(o.2p==\'ew\'||v.6W){x++}}if(1K[i]=="7A"){if(o.7E.S>1){x++}}if(1K[i]=="eh"&&v.7N==1){if(o.ng.S>0){x++}}if(1K[i]=="1W"){if(L(o.1U)){V(B s=0;s<o.1U.S;s++){if(o.1U[s]!=\'\'){x++;1g}}}if(x==1&&o.jh==1){x=0}if(v.qp==1&&v.vl==1){x++}}if(1K[i]=="59"){if(o.2p!="cD"){x++}}if(1K[i]in o.5F||1K[i]=="3b"||1K[i]=="ha"||1K[i]=="1u"){x++}if(1K[i]){if(1K[i].K("8K")>0){x++}if(1K[i].K("3J")>-1){x++}}if(v.1f[is+i+\'1k\']==1){x--}}I x<=0}F if(is=="W"){I f.S==0}F{I 4D}};G.4m=E(){if(1L.4l==o.1O){1L.3j(X);o.1O.3j(1L);o.2J?o.2J.4m():\'\';1L=1Y;X=1Y;hG=H}}};B Bb=E(Y,iH){B 6R=J;if(Y.K(\'6R\')==0){6R=H;Y=Y.1i(5)}B p1=ny(Y);B 2w;B 3c;B k4=J;B 3Z=J;B pI=J;B mE=J;B 2A=H;B rZ=[];B ch=1;B qi=J;B iu=0;B ra;B du=0;B mn=0;B mv=J;B pQ=\'Je\'+v.id+(6R?\'6R\':\'\');ki("#Je"+v.id+"{Z:100%!6a;1e:100%!6a;5L-Z:1P!6a;5L-1e:1P!6a}");B 1L=1Z(\'2e\');B qR=0;1L.7i(\'id\',pQ);iH.1R(1L);o.5n=J;!6R?o.U.jU():\'\';if(o.1h.2c){v.4A=1}if(v.LI!=1){B 8M=1Z(\'2e\');iH.1R(8M);O(8M,{1r:"2C",1c:0,1a:0,"2z-1u":"#pJ",1e:"100%",Z:"100%","1D":0});8M.1z("I7",E(1b){1b.6F=H});if(o.1h.2c){8M.1z("fO",E(1b){1b.6F=H});8M.1z("2l",E(1b){1b.6F=H});8M.1z("fQ",E(1b){1b.6F=H;eZ(1b);if(v.eD==1&&v.QK!=1){1v(J1,100);1v(pG,2h)}})}F{8M.1z("ts",E(1b){B x=H;if(v.1V==1){if(L(v.7v)&&!pI){x=J}if(L(v.nN)&&aI()=="6N"&&18()>0){x=J}}if(x&&v.eD==1&&v.Jo!=1){3m(G);1v(pG,4i)}})}v.eD==1&&v.QL!=1?3m(8M):\'\'}E pG(){5W(8M)}E J1(){if(v.Jo!=1){3m(8M)}}if(v.4A==1&&v.3g==0){9j()}if(!1y[\'YT\']){1y.QN=E(){r0();V(B i=0;i<1y.4V.S;i++){if(1y.4V[i]){if(1y.4V[i].2O("id")!=v.id){if(1y.4V[i].2O(\'AX\')){1y.4V[i].2O(\'Bc\')}}}}};B sR=zR("4W.an/L4","4W.an/L4","QO");if(sR){sR.oR=E(e){o.U.dJ();if(v.BF!=1){2w=\'AM QQ jS\';o.P.5z()}}}}F{r0()}E r0(){if(v.4A==1||6R){!k4?ij():\'\'}F{o.U.dJ()}}E ij(){if("YT"in 1y){if(L(YT.yE)&&!k4){1l("sT h6");B sm=0;if(v.LI==1){sm=1}o.2b>0?du=2L(o.2b):\'\';3c=1t YT.yE(pQ,{1e:o.9l,Z:o.9o,QR:p1,R1:{R7:1,R4:0,R3:\'1P\',R2:pQ,R0:1,QZ:1,eu:1,kU:((v.sh==0||(v.Er!=1&&o.1h.7t))&&o.1h.2c?0:1),QY:3,Q:sm,QX:0,QW:1,9D:0,3g:6R||v.3g==1?1:0,9k:0},3l:{\'Pr\':rX,\'Tk\':Ba,\'5z\':5z,\'QU\':BI}});if(o.2b>0){o.2b=1E}2n();k4=H}F{1v(ij,4e)}}F{1v(ij,4e)}}B iM;E rX(){if(o.P){1l("sT gc");3Z=H;2B(ra);o.U.8k();if(6R){if(o.1h.rd){o.U.5b()}3c.qu();o.1V.QV()}F{if(v.3g==1&&o.1h.rd&&!o.d8){o.U.5b();if(o.1h.2c){3D(iM);iM=7u(B0,dW)}}if(v.4A==0){3c.qu()}F{o.U.dJ()}qR=3c.uZ();o.P.9H();if(ch!=1){91(ch)}cR();2n();if(v.QT==1){2T{if(3c.se()){if(L(3c.se().1S)){v.1S=3c.se().1S;o.U.c7(\'1S\')}}}2G(e){}}}}}E B0(){B x=3c.Bu();if(x==2||x==-1){o.Q.2Z();o.Q.8k();3D(iM)}if(x==1){3D(iM)}}E Ba(1b){if(v.R5==1){1l(\'YT\',1b.28)}if(6R){if(1b.28==YT.dD.AQ){o.1V.R6()}if(1b.28==YT.dD.Bd){}}F{if(1b.28==YT.dD.Bd){if(mn==1){mn=0;rX()}if(!o.1q){o.U.2v()}if(du>0){3c.Eq(du,H);du=0;o.2b=1E}pG();pI=H;3Z=H;if(mE){3c.su()}F{o.P.af();o.P.aX()}BJ();if(L(v.3X)){V(B i=0;i<o.2y.S;i++){if(v.3X==o.2y[i]){5X(i)}}v.3X=1Y}F{if(L(o.3X)){V(B i=0;i<o.2y.S;i++){if(o.3X==o.2y[i]){5X(i)}}o.3X=1Y}}qi=J}if(1b.28==1){3c.QC(\'6b\',\'8V\',{})}if(1b.28==-1&&qi&&o.1q){1l("sT QP")}if(1b.28==YT.dD.QM){}if(1b.28==YT.dD.AQ){8t()}if(1b.28==YT.dD.QJ){if(!o.1q){}if(o.1q){qi=H;9j()}}if(1b.28==YT.dD.QI){}}}E 5z(1b){if(6R){o.1V.QH()}F{if(1b.28==2){2w="K1 4W id"}if(1b.28==5){2w="rL 4D"}if(1b.28==101||1b.28==rg||1b.28==100){2w="G dB is QG"}if(v.QF==1){L(v.BC)?2w=v.BC:\'\'}if(v.BF!=1){o.P.5z()}F{1k(o.29)}}}E 8t(){v.1w>0?du=v.1w:\'\';o.P.8t();o.P.9H()}E gn(){if(!o.KB&&o.1q){o.U.2Z()}}E aX(){o.P.aX()}E cR(){o.P.cR();o.U.uo()}E 9H(){o.P.9H()}E ez(){o.P.ez()}E 9j(){if(o.P){o.P.9j()}F{ra=1v(9j,100)}}E BI(1b){uH(1b.28)}E BJ(){if(!mv){B x=3c.QE()+\'\';if(x!=\'\'&&x!=1E){o.2y=x.2q(\',\');o.2y=o.2y.AH();if(v.sj==0){B y=o.2y.K(\'2A\');if(y>-1){o.2y.xa(y,1)}}V(B i=0;i<o.2y.S;i++){o.2y[i]=ip(o.2y[i])}mv=H;uH(3c.QD())}}}E uH(x){o.3k=o.2y.K(ip(x+\'\'));o.Q.zo(o.3k)}G.3R=E(){I{"Z":0,"1e":0}};G.3y=E(x){p1=ny(x);if(o.2b>0){du=2L(o.2b)}bS(p1)};E aI(){B 6Z=-1;if(3Z){6Z=3c.Bu()}B x=\'\';if(6Z==-1){x="6N"}if(6Z==1||6Z==3){iu=0;x="8r";o.P.aX()}if(6Z==2){x="6N";if(o.1q){iu++;if(iu==2){o.U.2Z();iu=0}}}if(6Z==5){x="6N"}if(6Z==0){x="7l"}I x}E 2n(){2T{if(L(3c)){3c.QS(o.2V,o.4J)}}2G(e){1l(e)}}E ip(x){B y=x;if(x=="R9"){y="yA"}if(x=="a1"){y="oc"}if(x=="Rs"){y="oa"}if(x=="Ru"){y="o1"}if(x=="Rv"){y="oJ"}if(x=="Rx"){y="nW"}if(v.BV==1){y=2M(y)}if(x=="2A"){y=2M("2A")}rZ[y]=x;I y}E 18(){B x=3Z?3c.Rz():0;if(x>0&&v.hO>0){v.4t=x-v.hO;v.hO=-1}I x};E 91(x){2T{3c?3c.Rt(x):\'\';ch=x}2G(e){}};G.lH=E(){r0()};G.2v=E(){if(3Z){3c.qu()}F{if(!k4){ij()}F{}}};G.2Z=E(){if(3Z){3c.su()}};G.eP=E(){if(3Z){aI()==\'8r\'?3c.su():3c.qu()}};G.3N=E(x){if(3Z){3c.Eq(x,H);js("3F",x)}};G.a4=E(){I J};G.5b=E(){3Z?3c.51():\'\'};G.6n=E(){3Z?3c.RC():\'\'};G.42=E(x){3Z?3c.Bs(x*100):\'\'};G.qo=E(){I aI()==\'8r\'};G.5Y=E(){I J};G.sn=E(x){5X(x)};E 5X(x){if(3Z){if(L(o.2y[x])){B y=rZ[o.2y[x]];2A=y==\'2A\';B z=18();3c.RF(y)}}}G.f5=E(x){91(x)};G.3Z=E(){I 3Z};G.7P=E(){I aI()};G.18=E(){I 18()};G.1m=E(){B x=3Z?3c.uZ():0;if(x!=qR){qR=x;o.P.9H()}if(L(v.4k)){if(7s([v.4k],\'-\')){x=x+v.4k*1}F{x=v.4k}}I x};G.8C=E(){B x=0;if(3Z){x=3c.RG()*3c.uZ()}I x};G.4Z=E(){2n()};G.j4=E(){I 2w};G.2A=E(){I v.sj==1?2A:J};G.CM=E(x){bS(x)};E bS(x){Y=x;if(3c){mn=1;3c.RB(x,0)}}G.pq=E(){if(o.1h.2c&&o.1h.bF){G.2v();mE=H}F{if(aI()=="8r"){G.2Z()}}};G.bV=E(){mE=J};G.r8=E(){I H};G.4m=E(){3Z?3c.92():\'\';3Z=J;mv=J;2T{if(1L){iH.3j(1L)}iH.3j(8M)}2G(e){}}};B kY=E(){B 2k=[];B bx=[];B 4D=H;B 7o;B 8X=-1;B vs;B 9Y;B qd=[];B pH;B iB=[];B oT=J;B tt=0;B oO=0;G.1w=E(x){if(!x&&9Y){lD(9Y);9Y=1E}F{x?lD(x):\'\'}};G.yW=E(x){lD(x)};G.AG=E(){iB=[]};G.1B=E(){if(v.6j==1){if(1A CH==\'E\'){if(!o.6j){o.6j=1t CH()}o.6j.jw(2k,tt,1)}}};E lD(x){if(L(x)){if(x.K("#"+v.d2)==0&&x.K(v.dr)>0){o[o.fd[1]](x,CI)}F{aT(x)}}}E CI(x){if(x){o.1U=x;aT(x)}}E aT(x){!x?x=\'\':\'\';if(x!=\'11\'){B 1w=0;B rR=H;B jL=\'\';o.1U=x.2q(",");o.2W=[];o.3q=-1;if(o.4T&&v.yT==1){if(3x.5A("yZ")!=1Y){jL=3x.5A("yZ")}}F{if(o.pL){jL=o.pL}}V(B i=0;i<o.1U.S;i++){if(o.1U[i].K("#0")==0){o.1U[i]=c6(o.1U[i])}if(o.1U[i].K("#"+v.aw)==0){o.1U[i]=o[o.fd[0]](o.1U[i])}if(o.1U[i].K("[")==0&&o.1U[i].K("]")>1){o.2W[i]=o.1U[i].1i(o.1U[i].K("[")+1,o.1U[i].K("]")-1);o.1U[i]=o.1U[i].1i(o.1U[i].K("]")+1);rR=J}F{o.2W[i]=o.1U[i].1i(o.1U[i].pA("/")+1);o.2W[i]=o.2W[i].1i(0,o.2W[i].pA("."))}if(o.1U[i].K("#0")==0){o.1U[i]=c6(o.1U[i])}if(o.1U[i].K("#"+v.aw)==0){o.1U[i]=o[o.fd[0]](o.1U[i])}}if(o.2W.S>1&&v.lZ==1){o.2W.2I(lL(\'Rq\',(v.Rd==1&&L(v.CB)?v.CB:\'+ \'+2M(\'Ri\'))));o.1U.2I("a3")}if(o.2W.S>0&&v.9d==1){if(v.uO==1){7o=0;1w++;o.2W.i6(lL(\'BY\',2M(\'6X\')));o.1U.i6("")}F{o.2W.2I(lL(\'BY\',2M(\'6X\')));o.1U.2I("");7o=o.2W.S-1}}if(L(v.Cl)){V(B i=0;i<o.1U.S;i++){if(v.Cl==o.2W[i]){1w=i;o.3q=i;v.h3=1}}}if(jL!=\'\'){V(B i=0;i<o.1U.S;i++){if(jL==o.2W[i]){1w=i;o.3q=i}}}if(v.9d==1&&v.h3==0){o.3q=7o}L(o.Q)?o.Q.aR():\'\';if(v.h3==1){o.3q=1w;if(o.1w){if(v.lZ==1&&o.1U[1w]=="a3"){zX(o.3q)}F{iR(o.3q)}}F{9Y=x;o.4q=o.1U[1w]!=\'6X\'&&1w!=7o;1v(ju,4e)}}F{if(rR&&o.1U.S<3){iR(7o==0?1:0)}v.9d!=1?o.3q=-1:\'\'}}F{4m()}};E Bw(x){if(x.K(\'js:\')==0){2T{x=2f(x.1i(3))}2G(e){9h.1l(e.9N)}}I x?x:\'\'};G.uj=E(x){ji(x,\'1C\')};E iR(x){if(L(o.1U[x])){o.1U[x]=Bw(o.1U[x]);if(o.1U[x]){if(o.1U[x].K(".")>-1||o.1U[x].K("Rn")==0){o.nF=o.1U[x].2q(" or ");o.eY=0;ji(x)}F{if(o.1U[x].K(\'bx\')==0){if(bx[o.1U[x].1i(4)]){sd(o.2W[x],bx[o.1U[x].1i(4)])}}if(o.1U[x].K(\'1C\')==0){o.P.fw(x,"JU");o.4q=H;o.3q=x;o.Q.aR()}}}}}E zX(x){o.4q=H;ju()}E ji(x,y){B Y=y==\'1C\'?x:4z(o.nF[o.eY]);B l2=dN(Y);B fh;if(qd[Y]){if(o.1U[x]!=\'a3\'){o.4q=H;ju()}}F{if(Y.K(\'cJ\')>0&&Y.K(\'cJ\')<4){fh=Y.1i(0,Y.K(\'cJ\'));l2=Y.1i(Y.K(\'cJ\')+3)}B 5q=i0(l2);8X=x;o.jh=1;5q.aN=E(){o.jh=0;if(G.hM==4&&G.7P==4C){o.4q=H;sd(Y,G.jN,x,y)}F{if(o.eY+1<o.nF.S){o.eY++;ji(8X)}F{os("gH")}}};5q.oR=E(e){o.jh=0;if(o.eY+1<o.nF.S){o.eY++;ji(8X)}F{os("gH")}};5q.h4()}};E os(x){1l("1W h7 ox or Ek Eo");if(o.2W&&o.1U){if(o.2W[o.3q]){if(o.2W[o.3q].K(2M("gH"))==-1){o.2W[o.3q]=o.2W[o.3q]+\' (\'+2M(x)+\')\'}}if(v.Rp==1&&8X>-1){o.1U[8X]=\'\';o.2W[8X]=\'\'}}o.3q=-1;o.4q=J;if(o.QA){o.Q.aR();o.Q.4L()}F{1v(E(){if(o.Q){o.Q.aR();o.Q.4L()}},100)}if(L(o.1W)){o.1O.3j(o.1W);o.1W=1Y}}E sd(Y,x,y,z){B fh;if(x.K("#"+v.aw)==0){x=o[o.fd[0]](x)}if(x.K("#"+v.d2)==0&&x.K(v.dr)>0){x=o[o.fd[1]](x)}if(Y.K(\'cJ\')>0&&Y.K(\'cJ\')<4){fh=Y.1i(0,Y.K(\'cJ\'))}if(Y.K(\'.i4\')>-1||Y.K(\'.z7\')>-1||Y.K(\'.n7\')>-1||Y.K(\'.zr\')>-1){B l=fh?fh:o.3q;!o.1U?o.1U=[]:\'\';if(o.1U[l]=="a3"){l=y}if(z!=\'1C\'||!2k[l]){2k[l]=7Y();2k[l][0]=[];2k[l][1]=[]}B 3t=ac();3t=x.2q(/\\r|\\n/);B 7O=1;B t1=0;B t2=0;B md=o.P.1m();B gJ=(L(v.AO)?v.AO:0);if(Y.K(\'kp=\')>0){gJ=Y.1i(Y.K(\'kp=\')+6)*1}V(B i=0;i<3t.S;i++){if(Y.K(\'.i4\')>-1||Y.K(\'.zr\')>-1){if(3t[i].K(\'-->\')>-1&&3t[i].K(\':\')>-1){if(z==\'1C\'){if(iB.K(3t[i])>-1){3i}iB.2I(3t[i])}t1=i1(3t[i].1i(0,3t[i].K(\'-->\')))*1+gJ;t1==0?t1=1:\'\';t2=i1(3t[i].1i(3t[i].K(\'-->\')+4,12))*1+gJ;L(2k[l][0][t1])?\'\':2k[l][0][t1]=\'\';if(md>0){if(t1>md*20){3i}}t2-t1>100?t2=t1+100:\'\';V(B j=t1;j<t2;j++){2k[l][1][j]=t1}7O++}F{3t[i]=4z(3t[i]);if(7O==1&&3t[i]*1>0){7O=3t[i]*1}if(3t[i]!=\'\'&&3t[i].S>0&&3t[i]!=7O&&3t[i]!=\'Qz\'){if(1X(2k[l][0][t1])){2k[l][0][t1]=2k[l][0][t1]+\'<br>\'+3t[i]}F{2k[l][0][t1]=3t[i]}}}}if(Y.K(\'.z7\')>-1||Y.K(\'.n7\')>-1){if(3t[i].K(\'PM:\')>-1){t1=i1(3t[i].1i((Y.K(\'.n7\')>-1?3t[i].K(\'=0\')+3:12),12))*1+gJ;t2=i1(3t[i].1i((Y.K(\'.n7\')>-1?3t[i].K(\'=0\')+14:23),10))*1+gJ;B p=\'\';if(3t[i].K(\'0,,\')>0){p=3t[i].1i(3t[i].K(\'0,,\')+3)}F{if(3t[i].K(\'DL,\')>0){p=3t[i].1i(3t[i].K(\'DL,\')+6)}if(3t[i].K(\')}\')>0){p=3t[i].1i(3t[i].K(\')}\')+2)}}if(p!=\'\'){if(2k[l][0][t1]!=1E){2k[l][0][t1]+=\'<br>\'+p}F{2k[l][0][t1]=p}2k[l][0][t1]=2k[l][0][t1].1N(/{.*?}/,\'\');2k[l][0][t1]=2k[l][0][t1].1N(/\\\\\\\\N/,\'<br>\');2k[l][0][t1]=2k[l][0][t1].1N(/\\\\N/,\'<br>\');if(md>0){if(t1>md*2){1g}}t2-t1>100?t2=t1+100:\'\';V(B j=t1;j<t2;j++){2k[l][1][j]=t1}}}}}qd[Y]=H;if(o.1U[y]!=\'a3\'){z!=\'1C\'?ju():\'\'}}F{if(x!=\'\'){if(x.K(\'[\')==0){aT(x)}F{os("2w")}}F{4m();o.Q.4L()}}}E ju(){o.Q.aR();o.U.le();o.Q.4L()}E i1(i4){B 1H=i4.2q(\':\');B 5k=0;1H.S==2?1H.i6("d6"):\'\';1H[0]!=\'d6\'?5k+=1H[0]*uC:\'\';1H[1]!=\'d6\'?5k+=1H[1]*60:\'\';5k+=1H[2].1i(0,2)*1;5k=5k*10+1H[2].1i(3,1)*1;I 5k};E 9f(x){if(L(o.3q)){if(o.3q!=x){iB=[];if(x==-1||(v.9d==1&&x==7o)){lT()}F{v.eQ=0;o.3q=x;o.4q=H;v.h3=1;vI(x);js("1W",o.2W[x]);o.Q.aR()}}F{if(v.9d!=1){lT()}}o.6j?o.6j.PK():\'\'}}E wt(){if(L(o.2W[o.3q])){if(o.4T&&v.yT==1){3x.7V("yZ",o.2W[o.3q])}F{v.PR!=1?o.pL=o.2W[o.3q]:\'\'}}}E vI(x){if(L(o.1U[x])){1l("fv",x);o.3q=x;wt();if(o.2p=="1C"&&o.ao==H){o.P.fw(x,"1C")}F{if(o.2p=="3M"&&o.wz==H){o.P.fw(x,"3M")}F{if(o.1U[x]=="a3"){zX(o.3q)}F{iR(o.3q)}}}}};G.zP=E(){if(o.gT){B x=o.gT.3U;if(x[0]){B y=1t mw();y.aN=E(e){B z=e.4w.lh;bx.2I(z);o.3q=-1;B z=x[0].6c;if(z.S>40){z=x[0].6c.1i(0,15)+\'...\'+x[0].6c.1i(-15)}if(v.9d==1&&v.uO==1){o.1U.2I(\'bx\'+(bx.S-1));o.2W.2I(z+\'\');9f(o.1U.S-1)}F{o.1U.i6(\'bx\'+(bx.S-1));o.2W.i6(z+\'\');v.9d==1?7o++:\'\';9f(0)}o.gT.5G=""};y.PX(x[0])}F{o.gT.2l()}}};G.9f=E(x){9f(x)};G.7o=E(){I 7o};G.Mj=E(){I 2k?2k.S>0:J};G.PH=E(x){7o=x};G.1n=E(x){jw(x)};G.C=E(){ym()};G.5S=E(){4m()};G.6X=E(){lT()};E lT(){js("1W","6X");o.4q?o.Bk=o.3q:\'\';o.3q=v.9d==1?7o:-1;v.h3=0;o.4q=J;o.Q.aR();wt();o.wz?vI(o.3q):\'\';L(o.1W)?o.1O.3j(o.1W):\'\';o.1W=1Y}E jw(18){if(o.9m){I}B t=2L(18*10);if(v.eQ){18=18-v.eQ*1}if(o.4q&&L(o.1U)){if(2k){B x=o.3q;B t=2L(18*10);tt=t*100;if(v.zN==1&&!o.1q){I}if(o.1U[x]=="a3"){if(!pH){V(B i=0;i<o.1U.S;i++){1v(iR,i*4e,i)}if(!2k[x]){2k[x]=7Y();2k[x][0]=ac();2k[x][1]=ac()}pH=H}F{if(2k[x][1][t]){}F{V(B i=0;i<o.1U.S;i++){if(2k[i]){if(L(2k[i][1])){if(L(2k[i][1][t])){if(!2k[x][0][t]){2k[x][0][t]=\'\'}2k[x][0][t]+=(2k[x][0][t]!=\'\'?\'<br>[m7]\':\'\')+2k[i][0][2k[i][1][t]]+(2k[x][0][t]!=\'\'?\'[/m7]\':\'\')}}}}if(L(2k[x][0])){if(L(2k[x][0][t])){2k[x][1][t]=t}}}}}if(L(2k[x])){if(L(2k[x][1])){if(L(2k[x][1][t])){oO=2k[x][1][t];B y=2k[x][0][oO];if(!L(o.1W)){o.1W=1Z(\'2e\');3P(o.1W,{id:\'ja\'+v.id+\'47\'+\'1W\'});o.1O.1R(o.1W);ym();js("uA",o.2W[x])}if(4D){5W(o.1W)}AI();if(v.AS==1){y=PZ(y)}if(v.lZ==1){y=y.1N(/\\[m7\\]/gm,\'<7j C="1u:\'+3v(v.l6)+\'">\');y=y.1N(/\\[\\/m7\\]/gm,\'</7j>\')}if(y.K(\'<c.\')>-1){y=y.1N(/\\<c./gm,\'<7j C=1u:\');y=y.1N(/\\<\\/c\\>/gm,\'</7j>\')}if(v.8S){if(v.8S.2k==1&&vs!=y){js("2k",y);vs=y}}o.1W.1T=\'<7j C="\'+(v.Ep==1?\'2z-1u:\'+6f(v.od,v.o9)+\';\':\'\')+\'-3Q-7D-vU-1g: Qt;1u:\'+3v(v.l7)+\';2U:\'+v.y8+\'px \'+v.y8*2+\'px;2R-7b:\'+v.DJ+\'px;2Q:0 0;2F-1e:\'+(v.Dd?v.Dd:1.8)+\';4a-dR:\'+v.nR+\'">\'+4z(y)+\'</7j>\';O(o.1W,{"4a-3R":((2L(v.mJ)+((2L(v.la)-100)*2L(v.mJ)/100))+"px")});if(v.AB==1){if(o.22){O(o.1W,{"4a-3R":((v.mK+((2L(v.la)-100)*v.mK/100))+"px")})}}4D=J;if(o.6j){if(o.6j.jr()){o.6j.ge(2k,oO);if(v.Qx==1){3m(o.Ax);3m(o.oj);oT=H}}F{if(oT&&!4D){5W(o.Ax);5W(o.oj);oT=J}}}}F{if(!4D&&L(o.1W)){yo()}}}}F{yo()}}}}E yo(){if(!4D){o.1W?o.1W.1T=\'\':\'\';4D=H;3m(o.1W)}}E ym(){if(o.1W){O(o.1W,{"1r":"2C","Z":"100%","2U-1a":"10%","2U-2r":"10%","1a":0,"1u":v.l7,"1B-8A":"8o","7D-kj":"2R-7D"});if(v.Qy==1&&L(v.xi)){v.xi!=\'\'?O(o.1W,{"4a-fc":v.xi}):\'\'}if(v.xe==1){O(o.1W,{"1B-a7":"-4s -4s 0 #hj,4s -4s 0 #hj,-4s  4s 0 #hj,4s  4s 0 #hj"})}F{if(v.nU==1){O(o.1W,{"1B-a7":"4s 4s Qi Qh"})}F{O(o.1W,{"1B-a7":"1P"})}}if(v.Q7==1){tT(o.1W,\'o.oK\')}F{v.AS!=1?hg(o.1W):\'\'}}}E AI(){if(!o.oK){if((o.Q.eA()||v.ex>v.1o.h)&&v.Qe==1){O(o.1W,{"1r":"2C","1c":"2A","1a":0,"2P":v.ex*1})}F{O(o.1W,{"1r":"2C","1a":0,"2P":(v.ex*1+v.1o.h*1)})}}}E 4m(){o.3q=-1;o.4q=J;o.oY=J;v.1W=1Y;v.mN=1Y;o.2k=1Y;o.1U=1Y;pH=J;qd=[];2k=[];if(L(o.Q)){o.Q.aR()}o.2W=[];if(L(o.1W)){o.1O.3j(o.1W);o.1W=1Y}o.3q=1Y;o.4q=J}};B 5B=E(x){B gf;B Th;B 2X;B 4Q;B 3E;B pz;B fm=0;B ch;B xM=J;B xN;if(x.me!=1E&&x.mc!=1E&&x.1F!=1E&&x.to!=1E){if(x.18==1Y){if(x.1F.K("f0")>-1){x.to==0?x.18=0.5:x.18=0.2}F{x.18=0.20}}gf=Dz(x.6L);if(x.1F.K("1J")==-1){if(L(o.7q[x.me])){o.7q[x.me].rq()}o.7q[x.me]=G}if(x.1n==1){x.mc.1Q("2i",H)}2X=x.1F.2q(\'|\');3E=6T(x.to).2q(\'|\');4Q=1t ac();V(B i=0;i<2X.S;i++){if(!3E[i]){3E[i]=3E[0]}if(2X[i]=="f0"){4Q[i]=x.mc.g("1D")}if(2X[i]=="8P"){4Q[i]=x.mc.C.1D}if(2X[i]=="y"){4Q[i]=x.mc.g("y")}if(2X[i]=="x"){4Q[i]=x.mc.g("x")}if(2X[i]=="1a"){4Q[i]=2L(x.mc.C.1a)}if(2X[i]=="1c"){4Q[i]=2L(x.mc.C.1c)}if(2X[i]=="1J"){4Q[i]=x.mc.g("3w")}if(2X[i]=="9b"){4Q[i]=x.mc.di}if(2X[i]=="kE"){4Q[i]=x.mc.aS}if(2X[i]=="3H"){4Q[i]=x.mc.g("3H")}if(2X[i]=="3w"){4Q[i]=x.mc.g("3w")}if(2X[i]=="Z"){4Q[i]=x.mc.g("Z")}if(2X[i]=="A9"){4Q[i]=x.mc.2g;3E[i]=2E.9r(3E[i]);x.me=="Ti"?1l("Z",x.me,4Q[i],3E[i],x.mc.2g):\'\'}if(2X[i]=="1e"){4Q[i]=x.mc.g("1e")}if(2X[i]=="At"){4Q[i]=x.mc.2Y}3E[i]=BR(3E[i]);4Q[i]=BR(4Q[i])}ch=x.18*2h/gf.S;pz=gf.S;if(2X.S==1&&4Q[0]==3E[0]){9Q()}F{1v(py,2E.4u(ch))}}E py(){V(B i=0;i<2X.S;i++){B 1H=4Q[i]+(3E[i]-4Q[i])*(gf[fm]?gf[fm]:0);xO(2X[i],1H);if(2X[i]=="y"){x.mc.1Q("1c",1H)}if(2X[i]=="x"){x.mc.1Q("1a",1H)}if(2X[i]=="1a"){x.mc.C.1a=1H+"px"}if(2X[i]=="1c"){x.mc.C.1c=1H+"px"}if(2X[i]=="1J"){x.mc.1Q("1J",1H)}if(2X[i]=="3H"){x.mc.1Q("3H",1H)}if(2X[i]=="3w"){x.mc.1Q("3w",1H)}if(2X[i]=="9b"){x.mc.di=1H}if(2X[i]=="kE"){x.mc.aS=1H}if(2X[i]=="Z"){x.mc.1Q("Z",1H)}if(2X[i]=="A9"){O(x.mc,{"Z":1H})}if(2X[i]=="1e"){x.mc.1Q("1e",1H)}if(2X[i]=="At"){O(x.mc,{"1e":1H})}}fm++;if(!xM){if(fm==pz){9Q()}F{xN=1v(py,2E.4u(ch))}}}E 9Q(){xM=H;if(x.1k){if(2X[0]=="8P"||2X[0]=="1a"){1k(x.mc)}F{x.mc.1Q("2i",J)}}if(x.1F.K("1J")==-1){o.7q[x.me]=1Y;4t o.7q[x.me]}V(B i=0;i<2X.S;i++){xO(2X[i],3E[i])}2B(xN)};E xO(y,z){if(y=="f0"){x.mc.1Q("1D",z)}if(y=="8P"){x.mc.C.1D=z}}G.rq=E(){9Q()};G.Da=E(){fm=pz-1;py();9Q()};G.XY=E(x0,x1,y0,y1){B e=J;V(B i=0;i<2X.S;i++){if(2X[i]==\'x\'&&x0!=x1){e=H}if(2X[i]==\'y\'&&y0!=y1){e=H}}e?9Q():\'\'};E Dz(DF){c4(DF){1j"Df":I[0,0.SX,0.SY,1.T0,1.SU,1.T1,1.102,0.T3,0.T4,0.87,0.T5,0.Tt,1.TM,1.TO,1.TN,1.TU,0.TW,0.Tv,0.TC,0.TE,1.Tu,1.CS,1.Sj,1.CS,1.S6,0.lm,0.lI,0.lI,0.lI,0.lI,1];1g;1j"cr":I[0,0.S2,0.S9,0.Sb,0.Sf,0.Sg,0.Sa,0.S0,0.RL,0.RZ,0.RY,0.RV,0.RP,0.RO,0.RM,0.Sh,0.S1,0.SB,0.DB,0.95,0.SD,0.SE,0.SJ,0.SO,0.99,0.SQ,0.SK,0.lm,1];1g;6P:I[0,0.Di,0.32,0.44,0.52,0.6,0.67,0.73,0.SA,0.82,0.85,0.Ss,0.Sz,0.DB,0.95,0.97,0.Sq,0.Sr,1];1g}}};B GT=E(){B N=7d.St,ua=7d.Su,yB;B M=ua.yO(/(n4|kd|6B|Aq|Ao)\\/?\\s*(\\.?\\d+(\\.\\d+)*)/i);B M=ua.yO(/(n4|kd|6B|Aq|Ao|Sx|p7)\\/?\\s*(\\.?\\d+(\\.\\d+)*)/i);if(M&&(yB=ua.yO(/8l\\/([\\.\\d]+)/i))!=1Y)M[2]=yB[1];B nb=7d.A8;G.cg=M?M[1]:N;G.8l=M?M[2]:7d.Ok;G.eK=7d.A8>1;G.9R=7d.Ja;G.n4=G.cg=="MY";G.x6=G.cg=="Bq 9.0";G.ie=G.cg=="Bq"||G.cg=="MR"||G.cg=="MQ";G.p7=ua.cw(/(p7)\\/?\\s*/i)>-1;G.ff=G.cg=="MB";G.6B=G.cg=="Nr";G.kd=1y.kd;G.jR=ua.cw("Nn NT")>-1;G.4x=(ua.cw(/(7t|kS|Nm)\\/?\\s*/i)>-1)||(7d.Nk===\'Nj\'&&nb>1);G.tv=v.BL!=1&&ua.cw(/(TV|Ni|Ng|N4|Nf|N7|N6|N5)\\/?\\s*/i)>-1;G.lg=v.BL!=1&&ua.cw(/(LG)\\/?\\s*/i)>-1;G.7t=ua.cw(/(7t)\\/?\\s*/i)>-1;G.kS=G.4x&&!G.7t;G.3Q=\'MA\'in 26.oV.C;if(ua.cw(/(bF)\\/?\\s*/i)>-1){nb>0?G.bF=H:G.tv=H;if(Mr(\'(4I:Mw)\').Mp){G.tv=H}}G.2c=(2D.2c==1||G.4x||G.bF||(ua.cw(/(Ms|My|n4 nC)\\/?\\s*/i)>-1))&&!G.tv&&2D.Mm!=1;G.rd=G.6B||G.kd;G.22=J;if(G.4x){G.Mn=41(ua.1i(ua.K(\'OS \')+3,4).1N(\'47\',\'.\'));if(G.kS&&(!\'FN\'in 1y||nb<2)){G.2c=G.4x=J;G.tv=H}}G.gr=!G.2c;G.xp=G.2c||G.eK;G.H7=G.2c||G.tv;G.Ou=G.3Q&&G.gr;if(o.1O.zG||o.1O.ko||o.1O.zH||o.1O.zU||o.1O.yx){G.22=H}};E aE(4y,7w){V(B s in 7w){if(1A(7w[s])==\'3u\'){if(s=="3l"||s=="3e"){4y[s]=7w[s]}F{V(B s2 in 7w[s]){if(1A(4y[s])!=\'3u\'){4y[s]={}}if(1A(7w[s][s2])==\'3u\'){V(B s3 in 7w[s][s2]){if(1A(4y[s][s2])!=\'3u\'){4y[s][s2]={}}if(1A(7w[s][s2][s3])==\'3u\'){V(B s4 in 7w[s][s2][s3]){if(1A(4y[s][s2][s3])!=\'3u\'){4y[s][s2][s3]={}}4y[s][s2][s3][s4]=7w[s][s2][s3][s4];if(s3==\'2U\'||s3==\'2Q\'){4y[s][s2][s3][s4]=2L(4y[s][s2][s3][s4])}}}F{4y[s][s2][s3]=7w[s][s2][s3];if(s2==\'2U\'||s2==\'2Q\'){4y[s][s2][s3]=2L(4y[s][s2][s3])}}}}F{4y[s][s2]=7w[s][s2];if(s==\'2U\'||s==\'2Q\'){4y[s][s2]=2L(4y[s][s2])}}}}}F{if(s.K("Ah")>0&&4z(7w[s])===""){}F{4y[s]=xL(s,7w[s])}}}I 4y};B xL=E(19,5G){if(1A(5G)==\'4F\'){5G=4z(5G);if(19.K("1u")>-1&&5G!=-1){5G=3v(5G)}}I 5G};E Ir(){2T{B 4T=1y[\'3x\'],x=\'OV\';4T.7V(x,x);4T.ul(x);I H}2G(e){I J}};E zk(bf){if(bf){if(L(o.7q[bf])){o.7q[bf].rq()}}};B 2M=E(x){B y=x;if(y){y=x.6D(0).Br()+x.4N(1);if(y.K("47")>-1){y=y.1N(/47/ig," ")}}B en={"of":"of","iN":"iN","OT":"DS on E0","OQ":"DS 2w on E0","8E":"mG","OO":"No","va":"OJ","oe":"OH","ha":"jr 3e","Ov":"OG","ex":"OF 2Q","nR":"OE dR","nU":"OC","o9":"a6 1D","od":"a6 1u","la":"tj 3R","l7":"tj 1u","l6":"tj 1u 2","eQ":"3V kp","ub":"bu 2D","u1":"OX","ep":"OY","Pd":"Pp to Po","yA":"Pn","oc":"Pm","oa":"Pl","o1":"CC","CQ":"CC","oJ":"HD","nW":"Pf HD","P0":"Pb HD","yI":"Pa HD","yY":"P9 HD 4K","P8":"Ad","P7":"Go to Nw P5\'s P4","7A":"P3","5l":"P2","22":"P1 22","Jl":"Bj 22"};if(L(en[x])){y=en[x]}if(v.D7==1){if(o[\'lR\'+o.1h.9R]){v.9R=o.1h.9R;v.D7=0}}if(L(o[\'lR\'+v.9R])){if(L(o[\'lR\'+v.9R][x])){y=o[\'lR\'+v.9R][x]}}if(v.tF){if(v.tF[x]){y=v.tF[x]}}I y};B aa=E(x,y,z){if(!L(o.l0[y])&&v.tf!=1){B t=o.df?o.df:(v.1S?v.1S:\'\');L(v.7n)?t=v.7n:\'\';if(v.CV[x]==1&&v.Em==1&&L(v.tY)){if(L(1y["CT"+v.tY])){1y["CT"+v.tY].NM(\'mq\'+x,{1S:t});1l("C7",\'mq\'+x)}F{1l("C7 Ny 2w")}}if(v.BZ[x]==1){if(v.ga==1){B kQ;if(1y.Ci){kQ={\'NF\':\'ND\',\'Nz\':t};if(v.kb){if(1A(v.kb)=="3u"){V(B g in v.kb){if(v.kb.2x(g)){kQ[g]=v.kb[g]}}}}v.NL==1?1l(\'ga\',\'mq\'+x,kQ):\'\';Ci(\'1b\',\'mq\'+x,kQ)}}}}z?o.l0[y]=H:\'\'};B ny=E(Y){B x=\'\';Y=Y.1N("v=","{=");if(Y){if(Y.K(\'nt.be/\')>-1){x=Y.1i(Y.K(".be/")+4);x.1N("/","")}F{x=Y.2q(/(nt.be\\/|v\\/|s7\\/|Oq\\?|4W.Op\\/GZ\\/[^#]*#([^\\/]*?\\/)*)\\??{?=?([^#\\&\\?]*)/)[3]}if(x!=\'\'){if(x.K("?t=")>0){v.1w=x.1i(x.K("?t=")+3);B h=0;B m=0;B s=0;if(v.1w.K("h")>0){h=v.1w.1i(0,v.1w.K("h"));v.1w=v.1w.1i(v.1w.K("h")+1)}if(v.1w.K("m")>0){m=v.1w.1i(0,v.1w.K("m"));v.1w=v.1w.1i(v.1w.K("m")+1)}if(v.1w.K("s")>0){s=v.1w.1i(0,v.1w.K("s"));v.1w=v.1w.1i(v.1w.K("s")+1)}if(h>0||m>0||s>0){v.1w=h*uC+m*60+s*1}}if(x.K("?")>0){x=x.1i(0,x.K("?"))}}}I x};B js=E(x,y,li,ev){if(1A(y)==\'4F\'){y=y.1N(/\'/ig,\'′\')}if(x=="8w"){o.8w=H}if(ev==1){V(B yi in y){if(y.2x(yi)){if(1A(y[yi])=="3u"){y[yi]=\'\'}}}}if(v.pX==1&&o.8w){if(v.Om==1||li==1){sY(x,y)}F{if(y!=1E){if(1A(y)==\'3u\'){2T{y=5e.nk(y)}2G(e){}}}if(1A(v.3l)==\'4F\'){if(v.3l.K("{")==0){2T{v.3l=v.3l.1N(/\\\'/ig,\'"\');v.3l=5e.7y(v.3l)}2G(e){9h.1l(e)}}}if(1A(v.3l)==\'3u\'){if(L(v.3l[x])||L(v.3l[\'sN\'])){B z=x;if(!L(v.3l[x])&&L(v.3l[\'sN\'])){z=\'sN\'}if(x.K("6r")==0){if(L(v.3l[\'1V\'])){z=\'1V\'}}2T{if(y!==1E){2f(v.3l[z]+"(\'"+x+"\',\'"+v.id+"\',\'"+y+"\')")}F{2f(v.3l[z]+"(\'"+x+"\',\'"+v.id+"\')")}}2G(e){1l("3l",e,x)}}}F{if(v.3l==\'\'){v.3l="Ei"}2T{if(y!==1E){2f(v.3l+"(\'"+x+"\',\'"+v.id+"\',\'"+y+"\')")}F{2f(v.3l+"(\'"+x+"\',\'"+v.id+"\')")}}2G(e){1l("3l",e,x,y)}}}}if(o.8w&&v.Bh==1){if(o.Dr){2T{o.Dr.kP.lK({1b:x,8R:y},"*")}2G(e){}}}if(v.Ha==1&&li!==1){if(x&&1X(v.Dp)){B pm=v.Dp.1N(/\\s+/ig,\'\').2q(\',\');if(pm.K(x)==-1){I}}B zv={1b:x,18:o.P?(x=="3F"?o.Dj:o.P.18()):0};if(y!=1E){zv["28"]=y}if(x=="1m"||x=="18"){zv["1m"]=o.P.1m()}if(x=="1I"||x=="9q"){zv["1I"]=v.1I}if(x=="1t"){zv["id"]=3r("BD")}2T{1y.9F.lK(zv,\'*\')}2G(e){};B z=x;x=="8w"||x=="1w"||x=="4k"?z=x+"ed":\'\';x=="1q"?z="O7":\'\';x=="3K"?z="6N":\'\';x=="51"?z="3o":\'\';x=="9q"?z="O5":\'\';x=="3F"?z="O4":\'\';x=="O3"?z="Mz":\'\';zv["1b"]=z;if(z!=\'\'&&z!=x){zv=5e.7y(5e.nk(zv));2T{1y.9F.lK(zv,\'*\')}2G(e){}}}};B sY=E(x,y){B ev=26.P6(\'7J\');if(y!==1E){ev.8R=y}ev.O2(x,H,H);o.1L.Ol(ev)};G.2O=E(x,y,R){v.Oe==1?1l(\'2O\',x,y):\'\';I 3r(x,y,R)};E 3r(x,y,R){if(L(o.U)&&1A(x)==\'4F\'){if(o.iX==1){I}if(R){if(1A(R)==\'4F\'){if(R.K("id:")==0){R=o.Q.zE(R.1i(3),"4P");if(R){if(x=="e5"&&y=="NZ"){R.Gp()}}}}}if(x=="1q"||x=="3e"){if(L(y)){B aU=J;if(1A(y)==\'4F\'){y=y.1N(/(\\r\\n|\\n|\\r)/gm,"");B 2b=-1;if(y.K("[3F:")>-1&&y.pA("]")==y.S-1){2b=y.1i(y.K("[3F:")+6,y.S-1);2b=2b.1i(0,2b.S-1);if(2b=="18"){2b=o.P.18()}F{2b=2L(2b)}y=y.1i(0,y.K("[3F:"));if(y==\'\'){if(o.P.1m()>0){o.U.3N(2b);o.U.2v();I}F{o.2b=2b;o.U.2v();I}}F{o.2b=2b}}if(y.K("[Ag]")>-1){aU=H;y=y.1N(\'[Ag]\',\'\')}if(y.K("#"+v.aw)==0){y=o[o.fd[0]](y)}if(y.K("#"+v.d2)==0&&y.K(v.dr)>0){o[o.fd[1]](y,Au,x);I}if(y.K("#0")==0){y=c6(y)}if(v.aZ==1){y=aZ(y)}if(y.K(".9g")==y.S-4){B 5q=i0(y);5q.aN=E(){if(G.hM==4&&G.7P==4C){2T{3r(\'1q\',5e.7y(G.jN))}2G(e){}}};5q.h4();I}if(y.K("id:")==0&&L(o.1G)){B z=AE(y);if(L(o.1G[z])){o.Q.KL(z);2b>-1?o.2b=2b:\'\';I H}F{I J}}if(y.K("NB:")==0){B z=y.1i(10);if(o.2p=="4W"){o.P.CK(z);I H}F{y=\'//nt.be/\'+z}}}if(x=="1q"){o.Q.KN();o.U.eC(y,1E,1E,(aU?1:0))}if(x=="3e"){o.nr=H;v.3g=0;o.U.eC(y,1,1E,(aU?1:0));o.Q.4b(0,0);o.1w=J}}F{if(x=="1q"){o.U.2v()}if(x=="3e"){1A Ak==\'E\'?Ak():\'\'}}}if(x=="c0"){y?o.P.wq(y):\'\'}if(x=="4A"){if(L(y)){o.nr=H;o.U.eC(y,1,1)}F{o.P.td()}}if(x=="3K"){if(o.1q){o.U.2Z();o.U.le()}if(L(y)){if(y==1){2T{if(o.1V){o.1V.3K()}if(o.9u){o.9u.3K()}}2G(e){}}}}if(x=="eh"&&L(y)){o.1w&&o.7N?o.7N.Aj(y):\'\'}if(x.K("NJ")==0){if(o.1V){o.1V.NK(x.1i(6),y)}}if(x=="5m"){I o.d8}if(x=="ax"){o.ax.yF();o.ax=1t uM();if(L(y)){o.ax.9g(y)}F{if(v.Cg==1){o.ax.9g(v.Ct)}F{o.ax.9g("NS 9N")}if(v.Cw==1&&L(v.Cx)){o.dS=1t C0()}}}if(x=="7W"){!o.1w?o.Q.zl():\'\';o.Q.9t();o.Q.KT("mk")}if(x=="iZ"){o.1q?o.U.2Z():o.U.2v()}if(x=="2H"){v.4A=0;v.3g=0;o.P.v1();o.U.c5()}if(x=="6I"){o.18=o.P.18();o.U.gw()}if(x=="6W"){if(v.8S){if(v.8S.on==1&&v.8S.NX==1){o.U.jG()}}}if(x=="sG"&&L(y)){if(o.5c){o.5c.2O(y)}}if(x=="3b"){o.Q.JF()}if(x=="OZ"&&L(y)){if(v.1V==1){if(y.K(\'js:\')==0){v.6J=y;v.hI=H;o.U.vn("6J")}F{if(o.p!=\'\'){B sv=5e.7y(dP(o.p));V(B l in sv){if(sv.2x(l)){if(L(sv[l].id)){if(y==sv[l].id){v.6J=\'Pc\'+(L(sv[l][\'vh\'])?\'vh\'+sv[l][\'vh\']:\'\')+y+\'47\'+sv[l].7v;v.hI=H;o.U.vn("6J")}}}}}}}}if(x=="Ph"){1A Ae=="E"?Ae(y):\'\'}if(x=="Ab"&&y){v.Ab=y;o.3i?o.3i.OI():\'\'}if(x=="51"){o.U.5b()}if(x=="59"){if(L(y)){o.U.91(y)}F{I o.5T[o.al]}}if(x=="cA"){if(v.8S&&o.bG){if(v.8S.bG==1){I 2E.4u((o.bG.7a(Oy).S-1)/2E.4u(o.P.1m())*100)}}}if(x=="iG"){I o.5T}if(x=="9q"){o.U.6n()}if(x=="mN"){if(L(y)){v[x]=y;o.U.lf()}}if(x=="d9"){I o.2y}if(x=="AC"){I o.ab?H:J}if(x=="5l"){I o.P?o.P.5Y():J}if(x=="uA"){I v.9d==1?(v.uO==1?o.2W.4N(1):o.2W.4N(0,-1)):o.2W}if(x=="Lc"){if(o.3d){o.4q?o.3d.6X():o.3d.9f(2t(o.Bk,(o.3d.7o()==0?1:0)))}}if(x=="Ml"){if(o.3d){o.3d.1B()}}if(x=="ew"){I o.9m}if(x.K("1W:")==0&&y){v[x.1N(\'1S:\',\'47\')]=y;o.U.le()}if(x=="OU"){I o.jY}if(x=="bC"){I o.7E}if(x=="1I"||x=="Bs"){if(L(y)){if(1A y=="4F"){if(y.K("+")==0){y=v.1I+41(y.1i(1))}F{if(y.K("-")==0){y=v.1I-41(y.1i(1))}}}if(y>=0&&y<=1){o.U.42(y)}}I o.3o?0:v.1I}if(x=="qO"){o.P.uN(y)}if(x=="c0"){o.P.wq(y)}if(x=="3o"){I L(o.3o)?o.3o:J}if(x=="Nx"){o.Q?o.Q.KJ(y):\'\'}if(x=="9O"){1A BO==\'E\'?BO(y):\'\'}if(x=="nA"){I v.nA}if(x.K("Na")==0){2f(\'1y.\'+x.1i(4)+\'=\'+y);I H}if(x=="4Z"){o.Q.rj()}if(x=="tI"){o.Q.nf()}if(x=="rj"){cW()}if(x=="2w"){o.P.5z(x)}if(x=="3F"){if(L(y)){if(1A y=="4F"){if(y.K("%")>-1){y=2L(y.1i(0,y.K("%")));y=o.P.1m()*y/100}F{B q7=o.P.18();if(o.3i&&!o.1w){if(!o.3i.mA){B f=o.3i.bo();if(f.t&&f.d){q7=f.t;o.3i.mA=H}}}if(y.K("+")==0){y=q7+41(y.1i(1))}F{if(y.K("-")==0){y=q7-41(y.1i(1))}}}}y=y*1;y<0?y=0:\'\';if(o.P.1m()>0){y>o.P.1m()?y=0:\'\'}if(!L(o.1V)&&!L(o.5K)&&o.P.1m()>0){o.2b=1E;o.U.3N(y,H);o.U.mf()}F{o.2b=y}}}if(x=="Nc"){9h.1l(y);y?v.1M.3F=y:\'\'}if(x=="22"){!o.22?o.U.aq():\'\'}if(x=="wA"){o.22?o.U.8I():\'\'}if(x=="Nt"){I o.22}if(x=="3R"){I o.2V+\'/\'+o.4J}if(x=="Nu"){I o.P?o.P.3R():1E}if(x=="vz"){if(L(o.gp)){o.gp.Do()}}if(x=="Mi"||x=="Nh"){if(L(o.gp)){o.gp.Un()}}if(x=="18"||x=="AT"){B lj=o.P?o.P.18():0;if(o.3i&&v.cB==1&&!o.1w&&lj==0){B f=o.3i.bo();if(f.t){lj=f.t}}I x=="AT"?gl(lj):lj}if(x=="MI"){if(o.cV){3r("1q","id:"+o.cV)}if(o.AL){3r("3F",o.AL);3r("1q")}}if(x=="1m"){I o.P?o.P.1m():0}if(x=="8H"){I o.P?o.P.8C():0}if(x=="7M"){if(y){v.7M=y;o.Q.ke()}}if(x=="54"){if(L(y)){if(R){v.hd=b9(v.hd,y,R);if(o.2y.S==2){o.U.5X(v.hd)}}F{o.U.5X(y)}}F{I o.P?ze(o.P.zS()):0}}if(x=="7A"){if(L(y)){if(y==\'B6\'){I o.7f*1}if(R){v.sQ=b9(v.sQ,y,R);if(o.7E.S==2){o.U.ey(v.sQ)}}F{o.U.ey(y)}}F{I o.P?o.P.zO():0}}if(x=="AX"){I o.2p=="4W"}if(x=="xR"){if(o.7f>0){o.lA=o.7f}o.U.eC(o.3U[o.nz])}if(x=="8r"){I o.1q}if(x=="pI"){I o.1w}if(x=="1h"){I o.1h[y]}if(x=="Bc"){o.iX!=1?o.P.wm():\'\'}if(x=="id"){I v.id}if(x=="1l"){v.1l=y}if(x=="pX"){v.pX=y}if(x=="2a"){o.P.Db()}if(x=="MX"){o.P.DT();if(R){o.zy=b9(o.zy,y,R)}}if(x=="5n"){o.P.gz()}if(x=="U5"){if(1A(Ev)==\'E\'){Ev(x,y)}}if(x=="9e"){o.P.ec()}if(x=="2D"&&v.tf!=1){9h.1l(2D)}if(x=="WD"&&o.3O){o.3O.8w()}if(x=="13W"&&o.3O){o.3O.5S()}if(x=="1W"){if(L(y)){if(y==\'B6\'){I o.3q*1}if(y==\'0/1\'){if(o.4q){o.sb=o.3q;y=-1}F{y=o.sb?o.sb:0}}if(y.5Z().S<3&&o.3d){o.3d.9f(y*1)}F{v.1W=y;o.U.fv(y)}}F{I o.2W?o.2W[o.3q]:\'\'}}if(x=="+1W"&&v.1W){if(L(y)){v.1W+=\',\'+y;o.U.fv(v.1W)}}if(x=="ca"){if(L(o.ca)){if(L(y)){o.ca.2O(y)}F{I o.ca.13U()}}}if(x=="vd"){if(o.Be){I o.Be}F{I J}}if(x=="9J"){I o.P.9J()}if(x=="7D"){if(o.cN){o.cN.4l?o.cN.4l.3j(o.cN):\'\'}o.cN=1Z("2e");o.cN.id=y;o.cN.C.5a=13C;o.1O.1R(o.cN)}if(x=="JL"){if(o.4v){B 5f=1Z("5f");B 3R=o.P.3R();5f.Z=3R.Z>0?3R.Z:o.bb;5f.1e=3R.1e>0?3R.1e:o.eE;O(5f,{"1r":"2C","1c":-5f.1e,"1a":-5f.Z,"2i":"1P"});26.bH.1R(5f);B 9x=5f.AP(\'2d\');9x.rb(o.P.a4(),0,0,5f.Z,5f.1e);B 54=2;B k7=26.1Z("5f");k7.Z=5f.Z*54;k7.1e=5f.1e*54;B kV=k7.AP("2d");kV.rb(o.P.a4(),0,0,5f.Z*54,5f.1e*54);if(v.13m==1&&L(v.rS)){!L(v.kl)?v.kl=20:\'\';!L(v.sH)?v.sH="3G":\'\';kV.4a=v.kl+"px 139, 13c";kV.13g=3v(v.sH);kV.13p((v.rS=="lb"?o.lb:v.rS),v.kl,5f.1e*54-v.kl-5)}9x.rb(k7,0,0,5f.Z,5f.1e);B 3I;2T{3I=5f.13t("a2/14d")}2G(e){9h.1l(e.9N);I J}I 3I}F{I J}}if(x=="3M"){I o.2p==x?o.P.lW():1E}if(x=="1C"){I o.2p==x?o.P.lX():1E}if(x=="29"){if(!o.1q||v.g5===0){o.P.a9(y);I H}F{I J}}if(x=="LW"){if(L(y)){y==\'1/0\'?y=1-2t(v.lV,0):\'\';v.lV=y;o.P.iy()}F{I 2t(v.lV,0)}}if(x=="1J"){if(L(y)){if(y==0){o.P.iy()}F{o.P.1J(y)}}F{I[o.3C.x,o.3C.y,o.46.C.1a,o.46.C.1c]}}if(x=="1S"){if(L(y)){L(y)?v.1S=y:\'\';o.U.c7(\'1S\');I H}F{I v.1S}}if(x=="14y"){o.U.AJ()}if(x=="2I"){if(y){!o.kW?o.kW=[]:\'\';if(1A(y)==\'3u\'){y=o.kW.9P(y);x="W"}}}if(x=="W"){if(y){if(1A(y)==\'3u\'){2T{o.U.6m(y);I H}2G(e){I J}}F{if(y.K(".9g")==y.S-4||y.K(".9g?")>0){B 5q=i0(y);5q.aN=E(){if(G.hM==4&&G.7P==4C){2T{3r(\'W\',5e.7y(G.jN))}2G(e){}}};5q.h4();I H}F{if(y==\'\'){o.U.6m([])}F{if(y==\'cA\'&&o.jY>0){B 1H=2E.4u(((o.ri+(!o.Q.bY("cA")?o.P.18():0))/o.jY)*100);if(1H<o.rD||1H>100){I o.rD}F{o.rD=1H;I 1H}}}}}}}if(x=="5J"){o.Q?o.Q.aV():\'\'}if(x=="ep"){o.Q?o.Q.e1():\'\'}if(x=="6p"){o.Q?o.Q.ku(y):\'\'}if(x=="6p?"){I o.az?[o.14J,o.131]:0}if(x=="fU"){o.P?o.P.fU():\'\'}if(x=="q5"){if(L(y)&&L(o.1G)){!o.1q?v.3g=0:\'\';V(B j in o.1G){if(o.1G.2x(j)){if(o.1G[j].dT==y){y=j}}}if(L(o.1G[y])){o.Q.KK(y);I H}F{I J}}}if(x=="11q"){B 1H=[];if(L(o.1G)){V(B j in o.1G){if(o.1G[j].53&&o.1G[j].yh==-1){1H.2I({1S:o.1G[j].1S,id:o.1G[j].id})}}}I 1H}if(x=="BD"){if(o.3z){I o.1G[o.3z].dT?o.1G[o.3z].dT:o.3z}}if(x=="11p"){if(o.1G){I 7Y.6l(o.1G).S}F{I-1}}if(x=="q4"){if(L(o.q4)){I o.q4}}if(x=="11n"){o.Q.jP(y)}if(x=="11l"){o.P.hX()}if(x=="1o"){if(y=="on"){v.1o.1k=0}F if(y=="6X"){v.1o.1k=1;o.Q.da()}F{o.Q.ib()}}if(x=="p4"){o.Q.9a()}if(x=="11t"||x=="11K"||x=="11y"){if(L(y)){o[\'11x\'+x.4N(-1)]=v[x]=y*1;o.Q.jB(\'3J\'+x.4N(-1))}F{I v[x]}}if(x=="5U"){o[x]=H}if(x=="11v"){if(o.1V){I H}F{I J}}if(x=="10x"){if(o.1V){I An()}F{I J}}if(x=="10y"){if(o.1V){I o.1V.3K()}F{I J}}if(x=="10z"){if(o.1V){I o.1V.Aa()}F{I J}}if(x=="10A"){if(o.1V){o.1V.10H()}F{I J}}if(x=="10Y"){if(o.1V){o.1V.51()}F{I J}}if(x=="6b"){if(R){v.6b=b9(v.6b,y,R);o.P.6b()}F{I v.6b}}if(x=="9k"){if(L(R)){v.9k=b9(v.9k,y,R)}F{if(L(y)){y==\'0/1\'?y=1-v.9k:\'\';v.9k=y}F{I v.9k}}}if(x=="5P"){if(L(R)){v.5P=b9(v.5P,y,R)}F{if(L(y)){v.5P=y}F{I v.5P}}}if(x=="kk"||x=="n9"){B z="cp";x=="n9"?z="n8":"";if(L(R)){v.W[z]=b9(v.W[z],y,R)}F{if(L(y)){y==\'0/1\'?y=1-v.W[z]:\'\';v.W[z]=y}}I v.W[z]}if(x=="hd"){if(o.2y.S==2){v.hd=o.2y[o.3k];v.hd=b9(v.hd,y,R);if(o.2y[0]==v.hd){o.U.5X(0)}F{o.U.5X(1)}}}if(x=="v"&&y){if(y.K(\'3e\')==0||y.K(\'bk\')==0){I}I v[y]}if(x.K("dU:")==0){B xx=x.1i(7);if(1A(y)==\'3u\'&&1A(v[xx])==\'3u\'){V(B yy in y){if(y.2x(yy)){v[xx][yy]=y[yy]}}}F{if(x.K(\'HN\')==-1){v[xx]=y}if(x.K("Ah")>0){v[xx+\'47\'+\'fN\']=y}}o.U.DM();I H}if(x.K("1B:")==0){o.Q.JE(x.1i(5),y)}if(v.Hs==1&&x.K("1u")==0&&y){ki(\'4B, 4B > *{--7e\'+x+\':\'+6f(y,v[y.1N("1u","6v")+\'a\'])+\'}\')}if(x=="10V"){I o.P?o.P.ci():\'\'}if(x=="10S"){I o.8l+\' \'+o.lk}if(x=="lk"){I o.lk}if(x=="rY"){I o.rY}if(x=="Az"){I o.Az}if(x=="5H"){I o.5H}if(x=="10Q"){I o.1V?o.Al:1E}if(x=="92"){o.U.og();v.1M.on=0;if(v.yb==1){V(B i=0;i<4V.S;i++){if(4V[i]){if(4V[i].2O("id")==v.id){4V[i]=1Y}}}}V(B w in 1y){if(1y[w]==o.G){1y[w]=1Y}}if(1y.e2==v.id){1y.e2=\'\'}if(o.3O){o.3O.5S()}pY();o.iX=1;o.1L.1T=\'\';o.G=1Y}}F{I J}};E Au(x,y){if(x&&y){3r(y,x)}}E b9(x,y,R){B z=4z(y)+\'\';if(y){if(y.K("/")>0){B y2=y.2q("/");if(y2.S==2){if(x==4z(y2[0])){z=4z(y2[1]);if(R){R.db(1)}}F{z=4z(y2[0]);if(R){R.db(0)}}}}}I z}E i0(x){B 5q=1t C2();5q.6w(\'BX\',x,H);I 5q}E AE(y){B z=y.1i(3);if(o.1G){V(B j in o.1G){if(o.1G.2x(j)){if(o.1G[j].dT==z){z=j}}}}I z}E An(){B x;if(o.9u){if(o.9u.d3()){x=o.9u}}if(!x&&o.1V){if(o.1V.d3()){x=o.1V}}if(!x&&o.5K){x=o.5K}if(x){B u=mo(o.xA,\'\')+(x.8R("Am")?x.8R("11d")+x.8R("Am"):\'\');u=u.1N(/\'/ig,\'′\');B y={is:o.3W,1h:x.8R("11M"),8l:x.8R("8l"),12t:x.8R("A2"),Y:u,1F:x.8R("12H"),1m:x.8R("bT"),3e:x.8R("3e"),18:(o.P?o.P.18():\'\'),1I:x.12F(),id:o.Al};if(o.3W=="6J"){y.12E=o.12D}I y}}E zV(){if(\'bR\'in 7d){B t=E1(2t(o.df,v.1S));B p=2t(v.12B,v.29);if(!t&&!p){I}B ms={};1X(t)?ms.1S=t:\'\';1X(p)?ms.12u=[{3y:p}]:\'\';if(v.tn){if(1A(v.tn)==\'3u\'){ms=aE(ms,v.tn)}}7d.bR.7m=1t 12A(ms);if(!o.A6){7d.bR.gX(\'1q\',E(){3r("1q")});7d.bR.gX(\'3K\',E(){3r("3K")});o.A6=H}if(o.Q.hf()){if(o.Q.bq()){!o.pj?7d.bR.gX(\'zY\',E(){3r("5J")}):\'\';o.pj=H}F{o.pj?7d.bR.gX(\'zY\',1Y):\'\';o.pj=J}if(o.Q.eo()){!o.ph?7d.bR.gX(\'DD\',E(){3r("ep")}):\'\';o.ph=H}F{o.ph?7d.bR.gX(\'DD\',1Y):\'\';o.ph=J}}}}B 1Z=E(x){B y=x;x==\'2e\'||x==\'zh\'?y=\'4B\':\'\';B z=26.1Z(y);if(x==\'zh\'){O(z,{"6Y":"4I","2i":"4E"})}I z};B 1l=E(a,b,c,d,e,f,g){if(v.1l==1||v.tV==1){B x=a+(b!=1E?" "+b:"")+(c!=1E?" "+c:"")+(d!=1E?" "+d:"")+(e!=1E?" "+e:"")+(f!=1E?" "+f:"")+(g!=1E?" "+g:"");9h.1l("Dy"+(v.wl==1?"2":"")+": "+x);if(v.tV==1&&L(dg("DH"))){dg("DH").1T+=x+\'<br/>\'}}};B dg=E(x){I 26.he(x)};B GU=E(){if(v.wn==1&&L(v.et)&&v.et!=\'\'){B x=26.1Z(\'ea\');x.9D=\'12z\';v.et.K(\':\')>0&&v.et.K(\':lw\')==-1?v.et=v.et.1N(/:/ig,\':lw@\'):\'\';x.9s=\'jb://wn.12w.an/12W?fc=\'+v.et.1N(/,/ig,"&fc=").1N(/ /ig,"+");26.12V.1R(x)+\'&2i=12S\'}};B dN=E(x){if(v.12R==1){if(1A Dl!=="1E"){x=Dl(x)}}I x};B Hd=E(x){if(2D[x]){I o.b4.K(x)>-1&&2D[x].5Z().K(\'rt\')==1}};B qj=E(2e,6v){B x=["EC","f4","gk","oZ","g1","12Q"];V(B y=0;y<x.S;y++){B z=2e.EB("2o "+x[y]);if(z.S>0){V(B y2=0;y2<z.S;y2++){z[y2].C.6k=3v(6v)}}}};B mg=E(){if(v.8S){if(v.8S.12s==1){js("2l")}}};B 3V=E(18){18<0?18=0:\'\';B Eb=o.P.1m>=fG?H:J;B DP=o.P.1m>=uC?H:J;B 6E=2E.9r(18/60);B 7Q=2E.9r(18-6E*60);B 8q=2E.9r(6E/60);B k9=2E.9r(8q/24);6E=6E-8q*60;if(k9>0){8q=8q-k9*24}if(v.lB==1&&o.P.5Y()){B d=1t 6U();I 6T(1t 6U(d.ae()+18*2h).Ef())}F{I 6T((k9>0?k9+\':\':\'\')+(8q>0||DP?8q+\':\':\'\')+((8q>0||Eb)&&6E<10?\'0\':\'\')+6E+\':\'+(7Q<10?\'0\':\'\')+7Q)}};B gl=E(x){B 7Q=2E.9r(x);B 6E=2E.9r(7Q/60);B 8q=2E.9r(6E/60);6E=2E.9r(6E%60);7Q=2E.9r(7Q%60);8q>0&&6E<10?6E="0"+6E:"";7Q=7Q>=0?((7Q>=10)?7Q:"0"+7Q):"d6";B 5k=(8q>0?8q+":":"")+(6E>=0?6E:"0")+":"+7Q;if(v.lB==1&&o.P.5Y()){B d=1t 6U();I 6T(1t 6U(d.ae()+x*2h).Ef())}F{I 5k}};B He=E(){I GK((1y.8N!=1y.9F.8N)?26.nq:26.8N.9s)};B ze=E(x){if(x){x=x.5Z();B sI=x.K(" <7j C=\'1D");if(sI>-1){x=x.1i(0,sI)}}I x};B zR=E(x,y,z){B t;if(!E2(x)&&y){t=26.1Z(\'pf\');y=="12b"?y=x:\'\';t.3y=y.K(\'//\')==-1?\'jb://\'+y:y;t.12r=1;if(z){t.6c=z}B s=26.c9(\'pf\')[0];if(!s){s=26.c9(\'ea\')[0]}s?s.4l.rU(t,s):\'\'}I t};B E1=E(x){if(x){if(1A(x)==\'4F\'){x=x.1N(/<[^>]*>?/gm,\'\')}}I x};B E2=E(y){B x=J;B oh=26.c9(\'pf\');V(B i=0;i<oh.S;i++){if(oh[i].3y.K(y)>-1){x=H}}I x};B E3=E(x){if(x){x=x.1N(\'<2o\',\'<yK\').1N(\'2o>\',\'yK>\')}I x};B 6f=E(x,y,z){if(x){if(x.K(\'1u\')>-1||x.K(\'B\')>-1){if(L(y)&&L(z)){z.C.1D=y}I 3v(x)}F{x=x.1N(\'#\',\'\');B r=2L(x.S==3?x.4N(0,1).fn(2):x.4N(0,2),16);B g=2L(x.S==3?x.4N(1,2).fn(2):x.4N(2,4),16);B b=2L(x.S==3?x.4N(2,3).fn(2):x.4N(4,6),16);if(L(y)){I\'5i(\'+r+\', \'+g+\', \'+b+\', \'+y+\')\'}F{I\'Cn(\'+r+\', \'+g+\', \'+b+\')\'}}}};B 7x=E(y){B x=y;if(v.zm&&v.zm!=1){x=y/v.zm}if(v.sU&&v.sU!=1&&!o.22){x=y/v.sU}I x};B O=E(e,o){if(L(e)){V(B 19 in o){if(o.2x(19)){if(o[19]!=\'126\'&&o[19]!=1E){if(1A o[19]==\'124\'&&19!=\'4a-dR\'&&19!=\'1D\'&&19!=\'5a\'){o[19]+=\'px\'}if(19.K("123")>-1&&19.K("HM")==-1){o[19]=3v(o[19])}if(19=="2S"||19.K("kg")>-1){e.C[\'-ms-\'+19]=o[19];e.C[\'-lE-\'+19]=o[19];e.C[\'-3Q-\'+19]=o[19];e.C[\'-o-\'+19]=o[19]}if(19=="zf"){if(o[19].K(" ")>-1){o[19]=\'"\'+o[19]+\'"\'}}if(19=="7D-kj"){e.C.11Z(19,o[19],\'6a\')}F{e.C[19]=o[19]}}}}}};B yC=E(x,6v,b1,b2){6v=3v(6v);B y=2t(b1,1)*1;B z=2t(b2,1)*1;O(x,{"2z":"11X-3f-4O(-11V,"+6v+","+6v+" "+y+"px,5i(0,0,0,0),"+y+"px,5i(0,0,0,0) "+(y+z)+"px)"})};B 3v=E(c){if(c){c.K("1u")==0?c=\'B(--7e\'+c+\')\':\'\';I c.1i(0,1)!=\'#\'&&c.K("B")==-1&&c.K("Cn")==-1?c="#"+c:c}F{I\'#ht\'}};B EK=E(x,1u,y){!1u?1u=\'#ht\':\'\';1u=3v(1u);B r=5E(qB,11O);x=x.1N(/\\(Ai\\)/g,r);x=x.1N(/\\(1u\\)/g,1u);x=x.1N(/\\(eL\\)/g,1+(v.11U.1J-1)/2);B Cr=x.1i(0,x.K(\'|||\'));B uz=x.1i(x.K(\'|||\')+3);B bD=\'\';if(o.1h.3Q){bD=uz.1N(/6e:/g,"-3Q-6e:");bD=bD.1N(/6e-/g,"-3Q-6e-");bD=bD.1N(/@Cp/g,"@-3Q-Cp");bD=bD.1N(/2S/g,"-3Q-2S")}y?y.1T=Cr:\'\';ki(bD+uz)};B 7s=E(x,y,f){B z=J;if(x){V(B i=0;i<x.S;i++){if(x[i]){if(f){if(41(y)==41(x[i])){z=i;1g}}F{if(6T(x[i]).K(y)>-1){z=H}}}}}I z};B dn=E(x,y){B z=J;if(x&&y){V(B i=0;i<y.S;i++){if(6T(x).K(y[i])>-1){z=H}}}I z};B tJ=E(x){I 1A(x)==\'3u\'};B ki=E(x){if(o.O){if(o.O.C5){o.O.C5.11T=x}F{o.O.1R(26.H6(x))}}};B eM=E(x){O(x,{"1r":"2C","1c":0,"1a":0,"Z":"100%","1e":"100%"})};B hg=E(x){O(x,{"9V":"1P"})};B 5q=E(y,z){B x=1t C2();x.6w(\'BX\',y,H);x.aN=z;x.h4()};B 11Q=E(x){if(x){V(B i=0;i<5;i++){if(x.11P=="129"){1g}F{if(x.C8){x=x.C8}}}}I x};B gY=E(z){B gY=26.1Z("3I");if(o.mD.K(z)>-1){o.mD.2I(z);if(z.K("?")>0){z=z+\'&\'+2E.5E()}F{z=z+\'?\'+2E.5E()}}F{o.mD.2I(z)}gY.7i(\'3y\',z);gY.7i(\'1e\',\'4s\');gY.7i(\'Z\',\'4s\')};B 3P=E(e,o){V(B x in o){if(o.2x(x)){e.7i(x,o[x])}}};B 92=E(e){if(e){2T{e.4l.3j(e);e=1Y}2G(e){}}};B 5E=E(94,5L){I 2E.9r(12p.S>1?(5L-94+1)*2E.5E()+94:(94+1)*2E.5E())};B nc=E(){I 2E.5E().5Z(36).12l(2,12)};B tE=E(x,y){x=7Y.6l(x).12j(E(4y,19){if(19!=y){4y[19]=x[19]}I 4y},{});I x};B 4z=E(x){if(1A x=="4F"){I x.1N(/^\\s+|\\s+$/gm,\'\')}F{I x}};B 6p=E(x,y,z){B r=J;if(x){if(x.K(y)>-1){B r=x.1i(x.K(y)+y.S);if(z){if(r.K(z)>-1){r=r.1i(0,r.K(z))}}}}I r};B 12i=E(x,n){if(n==0){I"#0"+cS.e(x)}if(n==-1){I cS.e(x)}if(n==1){I"#1"+rk(cS.e(x),1)}};B rp=E(x){if(v[x]!=""){if(1A v[x]!="4F"){o[x+\'o\']=v[x]}F{if(v[x].K("[{")==0){2T{v[x]=v[x].1N(/7e\'qt/ig,\'"\');o[x+\'o\']=2f(v[x])}2G(e){}}}}};B 62=E(x){I 6T.tX(x)};B dP=E(x){if(1A x=="3u"){x=5e.nk(x)};if(x.1i(0,2)=="#1"){I cS.d(rk(x.1i(2),-1))}F if(x.1i(0,2)=="#0"){I cS.d(x.1i(2))}F{I x}};B LF=E(x){if(x){if(x.K(\'3T\')==-1&&x.K(\'.\')==-1&&x.S>100&&x.K(\'28:\')==-1){x=\'28:a2/vE;ln,\'+x}}I x};B 1k=E(x){x?x.C.5H="3h":\'\'};B 1n=E(x){x?x.C.5H="4r":\'\'};B 3m=E(x){if(x){if(ac.D6(x)){V(B i in x){if(tJ(x[i])){x[i].C.2i="1P"}}}F{x.C.2i="1P"}}};B 5W=E(x,y){if(x){if(ac.D6(x)){V(B i in x){if(1A x[i]=="3u"){x[i].C.2i="4E"}}}F{x.C.2i="4E"}}};B 6d=E(x){I x?x.C.5H!="3h"&&x.C.2i!="1P":J};B 5g=E(s){if(1A s=="4F"){if(s.K("px")>0){s=s.1i(0,s.K("px"))}}I 2L(s)};B 3h=E(x){I x.C.2i=="1P"};B 4o=E(o,x,y){o[x+\'1c\']=0;o[x+\'2r\']=0;o[x+\'2P\']=0;o[x+\'1a\']=0;if(L(o[y])){B z=o[y].2q(" ");if(z.S==4){o[x+\'1c\']=z[0]?41(z[0]):0;o[x+\'2r\']=z[1]?41(z[1]):0;o[x+\'2P\']=z[2]?41(z[2]):0;o[x+\'1a\']=z[3]?41(z[3]):0}}I o};B 12h=E(x){if(x){x=x.1N(/ /ig,\'px \')}I x+\'px\'};B lL=E(x,y){I v[x]&&v[x]!=\'\'?v[x]:y};B gb=6T.tX(65,66,67,68,69,70,71,72,73,74,75,76,77,97,98,99,100,101,102,103,104,105,106,107,108,109,78,79,80,81,82,83,84,85,86,87,88,89,90,110,111,112,113,114,115,116,117,118,119,120,121,122);B cS={bt:gb+"12d+/=",e:E(e){B t="";B n,r,i,s,o,u,a;B f=0;e=cS.Dc(e);ow(f<e.S){n=e.b8(f++);r=e.b8(f++);i=e.b8(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(uh(r)){u=a=64}F if(uh(i)){a=64}t=t+G.bt.6D(s)+G.bt.6D(o)+G.bt.6D(u)+G.bt.6D(a)}I t},d:E(e){B t="";B n,r,i;B s,o,u,a;B f=0;e=e.1N(/[^A-Za-z0-9\\+\\/\\=]/g,"");ow(f<e.S){s=G.bt.K(e.6D(f++));o=G.bt.K(e.6D(f++));u=G.bt.K(e.6D(f++));a=G.bt.K(e.6D(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+62(n);if(u!=64){t=t+62(r)}if(a!=64){t=t+62(i)}}t=cS.Ea(t);I t},Dc:E(e){e=e.1N(/\\r\\n/g,"\\n");B t="";V(B n=0;n<e.S;n++){B r=e.b8(n);if(r<128){t+=62(r)}F if(r>127&&r<12e){t+=62(r>>6|12f);t+=62(r&63|128)}F{t+=62(r>>12|Dt);t+=62(r>>6&63|128);t+=62(r&63|128)}}I t},Ea:E(e){B t="";B n=0;B r=0;B c1=0;B c2=0;B c3=0;ow(n<e.S){r=e.b8(n);if(r<128){t+=62(r);n++}F if(r>12g&&r<Dt){c2=e.b8(n+1);t+=62((r&31)<<6|c2&63);n+=2}F{c2=e.b8(n+1);c3=e.b8(n+2);t+=62((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}I t}};B rk=E(s,n){s=s.1N(/\\+/g,"#");s=s.1N(/#/g,"+");B a=BU(o.y)*n;if(n<0)a+=gb.S/2;B r=gb.1i(a*2)+gb.1i(0,a*2);I s.1N(/[A-Za-z]/g,E(c){I r.6D(gb.K(c))})};B BU=E(x){x=x.2q(62(61));B lh=\'\';B c1=62(120);B sB;V(B i in x){if(x.2x(i)){B sy=\'\';V(B j in x[i]){if(x[i].2x(j)){sy+=(x[i][j]==c1)?62(49):62(48)}}sB=2L(sy,2);lh+=62(sB.5Z(10))}}I lh.1i(0,lh.S-1)};B L=E(x){I x!=1Y&&1A(x)!=\'1E\'&&x!=12c&&x!=\'1E\'};B 2t=E(x,y){I L(x)?x:y};B 1X=E(x){I L(x)&&x!=-1&&x!=\'\'};B mo=E(x,y){I 1X(x)?x:y};B kx=E(x){if(1A x=="3u"){x=5e.7y(5e.nk(x))}I x};B hu=E(el){B x=el.BT().1a+(1y.Bv?1y.Bv:1y.12m);I x};B gy=E(x){v.12n==1&&1X(v.Bt)?x=v.Bt:\'\';I x};B lp=E(el){12o oZ=el.BT();I oZ.1c+1y.12q};B 7k=E(x,y){if(x!=\'\'){if(v.12k==1||y==\'12a\'){1y.6w(x)}F{if(v.11W==1||y==\'1c\'){1y.9F.8N.9s=x}F{1y.8N.9s=x}}x=\'\'}};B zJ=E(){if(v.4R==1){o.4R?o.1O.3j(o.4R):\'\';o.4R=1Y}};B HO=E(){B mP=J;o.1h.tv?1l("tv"):\'\';o.1h.2c?1l("2c"+(o.1h.4x?\' 4x\':\'\')):\'\';G.c7=E(x){o.Q?o.Q.1S(x):\'\'};G.6y=E(x){if(x){if(1A(x)==\'4F\'){x=qH(x)}if(1A(x)==\'4F\'){x=x.1N(/(\\r\\n|\\n|\\r)/gm,"");if(x.K("[{")==0){2T{x=x.1N(/7e\'qt/ig,\'"\');x=5e.7y(x)}2G(e){x="Dk 5e"}}}if(1A(x)==\'3u\'){o.1G=[];o.kW=kx(x);o.W=yd(x);if(o.W.S>0){if(v.W.11R==1&&!v.4S){B 6l=7Y.6l(o.1G);B s9=6l.4N(-1)[0];s9?v.4S=s9:\'\'}B y=Ar();if(y){x=y.3e;o.df=y.1S;o.Q?o.Q.JG(y.1S):\'\';if(1X(y.29)){if(o.P){o.P.a9(y.29)}F{v.29=y.29}}if(L(y.2k)){y.1W=y.2k}if(L(y.1w)){if(y.1w=="3i"&&!o.1w){}F{v.1w=o.2b=y.1w}}8a("AW");if(L(y.id)){o.3z=y.id}B sx=["1W","nA","s7","Y","l2","AY","Bf","mN","hl","Cj","7n","6W","7M","5S","4k","4t","B2","cv","1m","7I","8W","1I"];if(L(v.cO)){if(v.cO.11S==1&&v.cO.lS==1){sx.2I("1S");sx.2I("t1");sx.2I("t2");sx.2I("t3");sx.2I("t4");sx.2I("t5")}}V(B i=0;i<sx.S;i++){if(L(y[sx[i]])){v[sx[i]]=y[sx[i]];o.ns[sx[i]]=y[sx[i]]}}V(B uv in y){if(uv.K("B3")==0){v[uv.1i(7)]=y[uv]}if(uv.K("29")>0){v[uv]=y[uv];o.ns[uv]=y[uv]}}k5(y);if(sx.K(\'1S\')>0){if(v.cO.Ij==1){o.my=v.cO.F5;o.U.pn(y)}o.U.c7(\'1S\')}if(L(y.1I)){1v(E(){o.U.42(y.1I)},4C)}if(o.Q){o.Q.6m(o.W);if(v.8W){o.Q.rE()}}if(o.2J){o.2J.ge()}}F{}}}if(1A(x)==\'4F\'){x=qH(x);if(x){if(x.K("#"+v.aw)==0){x=o[o.fd[0]](x)}if(x){if(x.K("#"+v.d2)==0&&x.K(v.dr)>0){x=o[o.fd[1]](x)}if(x){if(x.K("#0")==0){x=c6(x)}x=qH(x)}F{x=\'\'}}}if(v.aZ==1){x=aZ(x)}if(x==\'\'){1l("4D 3e");o.9i=H;js("2w","4D")}o.2y=[];o.9W=[];o.7E=[];o.nz=0;o.3k=0;o.7f=0;o.aj=0;v.l9==\'\'?v.l9=\',\':\'\';if((x.K(v.l8)>-1&&x.K(v.ee)>-1)||L(v.d9)){o.3U=x.2q(v.l9)}F{o.3U=[x]}o.bC=[];if(L(v.d9)){B d9=v.d9.2q(v.l9)}if(o.3U.S>0){B q=-1;V(B i=0;i<o.3U.S;i++){o.3U[i]=4z(o.3U[i]);if(o.3U[i]!=\'\'){if(o.3U[i].K(v.l8)==0&&o.3U[i].K(v.ee)>1){o.2y[i]=o.3U[i].1i(o.3U[i].K(v.l8)+v.l8.S,o.3U[i].K(v.ee)-v.ee.S);o.3U[i]=o.3U[i].1i(o.3U[i].K(v.ee)+v.ee.S)}F{if(L(v.d9)){o.2y[i]=L(d9[i])?d9[i]:\'\'}F{o.2y[i]=i+1}}B is=0;if(L(v.3X)&&q==-1){if(6T(v.3X).K("jy:")==0&&o.3U.S>1){B nm=v.3X.1i(4)*1;nm>=o.3U.S?v.3X="5L":\'\';if(nm==i){is=1}}if(v.3X==o.2y[i]){is=1}if(v.3X=="5L"&&i==o.3U.S-1){is=1}}if(L(o.3X)){if(o.3X==o.2y[i]){is=1;q=i}}if(is==1){o.nz=i;o.3k=i}o.3U[i]=zB(o.3U[i])}}}F{o.3U[0]=zB(o.3U[0])}I o.3U[o.nz]}}F{I x}};E zB(x){if(L(v.mY)&&x.K("//")==-1){x=v.mY+x}I x};G.AJ=E(){if(o.W){B x=o.W.AH();V(B i=0;i<x.S;i++){x[i].cl=i}o.W=x;o.Q.6m(o.W)}};E k5(y){B yU;V(B i=1;i<6;i++){B t="1B"+i;if(L(y[t])){v[t]=y[t];yU=H}}if(yU&&o.Q){o.Q.JD()}}G.k5=E(x){k5(x)};G.6m=E(x){if(1A(x)==\'3u\'){o.1G=[];o.kW=kx(x);o.W=yd(x);if(o.Q){o.Q.6m(o.W)}}};G.eC=E(x,y,z,no){if(!L(y)){o.3g=H;o.es=H}!L(z)?v.4A=0:\'\';v.1m=1E;v.4k=1E;!2D.4t?v.4t=1E:\'\';o.9i!=2?o.9i=J:\'\';o.7m=J;o.9e=J;o.9L=0;o.l0=[];o.wd=J;o.tH=J;o.B5=J;o.ah=1E;o.gW=[J,J,J];o.12L=nc();o.Ip=0;o.dz=0;o.bG?o.bG=[]:\'\';o.2p!=\'7e\'&&o.3d?o.3d.5S():\'\';if(o.AV){o.AV=[];o.12N=[]}o.c8=0;o.12O=0;if(o.dS){o.dS.5S()}if(o.P.7P()=="8r"){G.c5()}if(o.6p&&o.az){o.Q.ku()}if(L(o.3b)){o.3b.4m()}if(L(o.bZ)){2B(o.bZ)}js("1t");if(v.1V==1&&no!=1){o.U.fs();o.U.fs(\'6J\')}x=G.6y(x);if(y==1){o.2p=\'\';7G();1v(E(){o.P.By()},100);o.zK=H}o.P.6y(x);if((o.1h.2c||o.1h.6B)&&!L(y)){o.U.2v()}if(L(o.kn)){o.3C={x:1,y:1,x0:1,y0:1};o.P.iy()}y!=1?aa("1q","2v"):\'\';o.P.hQ();o.Q.k1();o.Q.oz();o.Q.4L();o.gS?o.gS.L2():\'\'};G.pn=E(x){B y=J;if(x&&o.my){v.1S=o.my;V(B i=1;i<6;i++){if(L(x[\'t\'+i])){v.1S=v.1S.1N("{"+i+"}",x[\'t\'+i]);y=H}}}I y};G.dJ=E(){if(v.3g==1&&!v.BE||o.3g){if(v.kD==1){1v(E(){o.U.2v()},4e)}F{G.2v()}v.BE=1;o.3g=J}lf()};G.lf=E(){lf()};E lf(){if(v.yk==1){if(1A AF!=="1E"){o.th=1t AF()}}}G.hQ=E(){B x=J;if(o.1h.2c){x=H;if(v.H3==1&&o.1h.7t){x=J}if(v.H5==1&&o.1h.kS){x=J}if(v.H2==1&&o.1h.4x){x=J}if(v.12P==1&&o.1h.bF){x=J}}if(v.12M==1&&o.1h.tv){x=H}I x};G.w7=E(){o.P.42(v.1I);if(o.3o){o.P.5b()}o.7m=H;o.Q?o.Q.4L():\'\';if(!o.1q&&!o.1w){v.5c==1?o.5c.2O("3K"):\'\'}if(o.5d&&o.4v){o.3O.Bj();o.3O.Go()}if(v.1V==1){if(v.E7!=1&&v.hI==1){!L(o.1V)?l3("6J","7m"):\'\'}}js("7m")};G.CW=E(){!o.hz?af(H):\'\'};E af(x){o.hz=H;if(o.Q){if(o.Q.cT()){o.Q.9a()}}if(o.2J){o.2J.bu()}if(o.9D){o.9D.bu()}!x?o.P.2v():\'\';if(!o.wd){1v(E(){o.P.hQ()},4e)}!o.1q?o.Q.2v():\'\';v.5c==1?o.5c.2O("1q"):\'\';v.1V==1?o.U.fs(\'dV\'):\'\';if(o.1h.2c){o.Q.gU()}if(L(o.3b)){o.3b.12T()?o.3b.A4():\'\'}}G.2v=E(aU){if(!o.1q&&o.P){o.g6=H;o.qg=J;o.7l=J;o.De=J;v.6I==9?v.6I=1:\'\';2B(o.Ac);B 2H=J;if(o.2p=="4W"){if(!o.P.lH()&&v.3g!=1&&v.4A==1){2H=H;if(1y[\'YT\']){v.3g=1;o.3g=H;o.P.wm()}}}if(v.8E==1&&v.Ck==0){o.U.mG();2H=H}if(o.9i||2H){if(o.9i){8s("7v")?kH(2):\'\'}}F{o.nr=J;o.es=J;Bp(!o.1w);o.ax.yF();if(!o.1w){js("1w");o.1w=H;if(v.1o.nw==1){1v(E(){o.Q.rw()},100)}if(v.1o.7Z>0&&v.3g==1){o.g4=H;1v(zL,v.1o.7Z*2h)}if(v.12X==1&&v.12Y){12Z()}V(B i=0;i<o.b4.S;i++){if(v[\'It\'+o.b4[i]]==1){3x.7V("Iu"+o.b4[i],6U.fE())}}if(v.130==1&&v.12U){12K("1w")}if(o.3d){o.3d.1w()}js("1t");o.jp?o.Q.rK(o.jp):\'\';o.Q.zl();o.Q.4L();aa("1q","2v");v.12C!==0?zV():\'\';o.ab?aa("AC","12J",1):\'\'}F{if(o.zK){aa("1q","2v");o.zK=J}F{aa("Aa","12v")}}if(v.Af==1&&!o.22){B dd=1t 6U();B tt=dd.ae();if(tt-o.aF<dW){if(!o.1h.4x&&(v.DC!=1||o.1h.2c)){G.aq()}}}if(o.4q){if(v.zN==1){5W(o.1W);5W(o.oj)}}if(o.dS){o.dS.5S()}if(aU!=1&&8s("7v")||8s("6R")){kH(2)}F{if(v.7k==1&&L(v.DE)&&!L(2D.7k)){7k(v.DE);2H=H}if(!2H){1l("2v");zw();if(!o.zC){o.zC=H;if(v.1o.7Z>0&&v.3g==1){o.g4=H;1v(zL,v.1o.7Z*2h)}}B nN=J;if(o.P.18()>1&&v.qn==1&&aU!=1&&!8m()&&!L(o.1V)&&!L(o.5K)){nN=8s("dV")}if(nN){8m()?af(J):\'\'}F{af(J)}}}}}F{o.P?o.P.2v():\'\'}};G.DM=E(){zw()};E zw(){o.P.1m()>0?o.Q.4b(o.P.18(),o.P.1m()):\'\'}E zL(){o.g4=J;o.Q.4L()}G.2Z=E(){if(o.1q){o.g6=J;1l("2Z");o.P.2Z();o.Q.2Z();js("3K");v.xJ==1?7G():\'\';v.yQ==1?p5():\'\';v.5c==1?o.5c.2O("3K"):\'\';if(o.4q){if(v.zN==1){3m(o.1W);3m(o.oj)}}if(!L(o.1V)&&!L(o.5K)&&v.qn==0){if(8s("dV")){}F{if(v.E8!=1&&v.pt==1){l3("ej","3K")}}}if(8m()){o.qg=H}o.hz=J}};G.5b=E(){o.P.5b();o.Q.5b();o.3o=H;js("51")};G.6n=E(){o.P.6n();o.3o=J;o.Q.6n();o.P.42(v.1I);js("9q")};G.42=E(x,y){if(o.Q){x<0.12x?x=0:\'\';x>1?x=1:\'\';if(x<=0){G.5b();v.1I=0;x=0}F{if(o.3o){G.6n()}v.1I=x}js("1I",x);o.Q.42(x,y);o.P.42(x)}};G.9t=E(){o.Q.9t()};G.8k=E(){o.Q?o.Q.8k():\'\'};G.12y=E(){G.8k()};G.we=E(){o.U.6G();G.8k()};G.4b=E(18,1m){if(o.3i&&!o.1w){B f=o.3i.bo();if(f.t&&f.d){18=f.t}}o.Q?o.Q.4b(18,1m):\'\'};G.uo=E(18,1m){if(o.2b>0&&o.2p!="4W"){o.U.3N(o.2b,J);o.2b=1E}};G.eZ=E(){B d=1t 6U();o.aF=d.ae();B x=J;if(o.Q.cT()&&v.1f.6Q!=1){o.Q.cL();x=H}if(o.2J){if(o.2J.sO()){o.2J.bu();x=H}}if(v.W.6Q==0){if(o.Q.jM()&&v.W.eu==1){o.Q.gC();x=H}}if(v.7k==1&&L(v.Dh)&&!L(2D.7k)){7k(v.Dh);x=H}if(o.3o&&v.oL==1){o.U.6n();v.oL=0;x=H}if(!x){if(v.1M.on==1&&v.1M.2K==1&&v.1M.vb==1){7F(\'1q\',(o.1q?0:1))}G.eP()}};G.Kr=E(){if(o.Q.cT()){o.Q.9a()}};G.eP=E(){if(o.P.7P()=="8r"){js("IZ");v.12I==1?G.og():G.2Z()}F{js("IW");G.2v()}ag()};G.3N=E(bm,ia){if(bm<o.P.1m()){if(v.hi.11L==1){if(bm>o.P.18()){I}}if(v.4t>0){bm<v.4t?bm=v.4t:\'\'}1l("3N",bm);o.Dj=bm;o.De=!o.1q;o.P.3N(bm);if(ia){o.Q.3N(bm,o.P.1m())}o.ix=H;o.h5=o.P.18();ag(o.h5)}};G.jr=E(Y,4w,Du){if(o.P.7P()=="8r"&&o.g2!=\'DY\'){2Z();if(o.22&&Du){o.U.8I()}}1y.6w(Y,4w)};G.jG=E(){if(v.1V==1&&!o.1w){if(8s("7v")){o.xH=H;I}}B x=o.P.ci();if(L(v.6W)){x=v.6W}if(x!=\'\'){js("6W");B jR=1y.6w(x,(v.10N==1?\'10O\':\'yG\'));jR.5U()}};G.6G=E(x){B 18=o.P.18();B 1m=o.P.1m();if(!o.1w&&o.2b>0){18=o.2b}o.Q.k8(18,1m,x)};G.mf=E(){B 18=o.P.18();B 1m=o.P.1m();B bd=1m>0?18/1m:0;B c8=2E.pU(bd*100);o.vH++;if(!o.ix){o.Q?o.Q.k8((o.2b>0?o.2b:18),1m):\'\'}F{18!=o.h5&&o.h5!=-9?o.ix=J:\'\'}if((v.ga==1||v.Em==1)&&1m>0){o4("z9","2v 25%",bd,0.25);o4("z4","2v 50%",bd,0.50);o4("z6","2v 75%",bd,0.75)}V(B i=0;i<3;i++){if(!o.gW[i]){if(bd>=i*0.25+0.25){C3(i)}}}v.za==1?1l(1,18,1m):\'\';if(v.6I==1||v.zb>0){if(o.1q){B z=J;B oC=J;if(v.DX==1&&v.6I==1){if(!o.P.5Y()){z=H}}if(18>0){if(18==o.18&&!z){oC=H}F{o.9L=0}o.18=18}F{if(v.10P==1){B ld=o.P.8C();v.za==1?1l(2,ld,o.oB):\'\';if(!z){if(ld==o.oB){oC=H}F{o.9L=0}}o.oB=ld}}if(oC){o.9L++;if(v.6I==1){v.za==1?1l(3,o.9L):\'\';if(o.9L==v.wQ*(2h/o.jH)){o.U.gw()}}F if(v.zb>0&&o.P.so()>1){if(o.9L==v.zb*(2h/o.jH)){o.P.5z(\'OR rT\')}}}}}if(v.8S){if(v.8S.bG==1&&1m>0){!o.bG?o.bG=[]:\'\';o.bG[2E.4u(18)]=1}}if(v.1V==1){if(v.E7!=1&&v.hI==1){!L(o.1V)?l3("6J",18,1m):\'\'}if(v.E8!=1&&v.pt==1){!L(o.1V)?l3("ej",18,1m):\'\'}}if(v.D4==1&&v.zn>0){if(18>=v.zn){if(!L(o.1V)){if(8s("6R")){o.P.2Z();o.Q.2Z()}v.zn=0}}}8a("1q");if(v.8E==1&&v.Ck>-1){10R(18,1m)}if(v.10M==1&&v.10T){if(1A Cu!=="1E"){Cu(18)}}if(o.4q){ag(18)}if(o.4T&&v.cB==1){if(o.3i){!o.2b?o.3i.vf(18,1m):\'\'}}if(o.az){o.6p?o.6p.1q(18):\'\'}if(L(v.4k)){B ed=v.4k;if(7s([v.4k],\'-\')){ed=1m}if(ed>0&&18>ed){yR()}}if(L(v.5S)){B r1=v.5S.2q(",");V(B i=0;i<r1.S;i++){B r2=r1[i].2q("-");if(r2.S==2){if(18>r2[0]&&18<r2[1]){if(r2[1]*1>1m){yR()}F{o.P.3N(r2[1]*1+(o.1h.6B?1:0))}}}}}if(o.c8!=c8&&c8>0){if(v.10W==1){if(1A Cq!=="1E"){Cq(18,1m,c8)}}if(v.10X==1&&o.dt){if(1A Cd!=="1E"){Cd()}}}o.c8=c8};E yR(){o.P.2Z();o.P.3N(v.1w>0?v.1w:0);o.U.mz()}E C3(x){o.gW[x]=H;if(v.cB==1&&v.C4==1&&v.Ca==x){if(o.4T&&o.3z){o.3i?o.3i.10Z(o.3z):\'\'}}js("gW",(x+1)*25+\'%\')}E o4(x,y,t,p){if(!L(o.l0[y])){if(t>p){aa(x,y,1)}}};G.gw=E(){o.9L=0;L(o.bZ)?2B(o.bZ):\'\';if(v.11a==1){js("6I")}F{o.2b>0||o.P.5Y()?\'\':o.2b=o.P.18()+(v.10U>0?1:0);B CU=o.Q.jM();js("6I");o.P.6I();CU&&v.W.eu==1?o.Q.jP():\'\'}};G.E5=E(){o.Q.k8(0,0);o.Q.zt(0,0);o.U.4b(0,0);o.Q.8k()};G.zd=E(){if(o.P){B 18=o.P.8C();if(v.10K==1){js("8C",18)}B 1m=o.P.1m();o.Q?o.Q.zt(18,1m):\'\'}};G.mz=E(){js("10v");js("gW","100%");o.7l=H;if(v.9k==1){if(o.2p=="4W"){G.c5()}v.1V==1?o.U.fs(\'7v\'):\'\';if(v.1w>0){o.U.3N(v.1w);o.2b=1E}G.2v()}F{if(o.P.5Y()||o.2p=="4W"||o.2p=="rt"){G.c5()}F{if(v.D2==1){o.U.3N((v.1w>0?v.1w:0),H);if(o.1h.ie){o.P.2Z()}}}o.Q.8t();v.D4==1?v.10J=1:\'\';if(8s("qb")||8s("x7")){}F{9Q()}}js("4k")};G.aq=E(){B 2H=J;B 2w=J;o.CD=J;o.bz=H;1v(E(){o.bz=J},kM);V(B x in o.7q){if(o.7q.2x(x)){if(L(o.7q[x])){2T{o.7q[x].Da()}2G(e){}}}}2T{o.dx=H;if(((o.1h.4x&&v.fp==1)||(o.1h.bF&&v.Gq==1))&&o.4v&&!o.9m){B x=o.P.a4();if(x){if(x.10I||x.ko){g3();2H=H}}}if(!2H){B mR;B y=o.1O;if((o.2p=="dm"||o.2p=="cD")&&o.1h.7t&&v.fp==1){o.P.jC();I}if(y.ko){o.8g=H;mR=y.ko({lF:"1k"});if(mR!==1E){mR.jF(E(){}).2G(E(2w){})}}F if(y.zG){y.zG({lF:"1k"});o.8g=H}F if(o.1O.zH){y.zH({lF:"1k"});o.8g=H}F if(y.zU){y.zU({lF:"1k"});o.8g=H}F if(y.yx){y.yx();o.8g=H}}}2G(e){2w=H;1l(e)}if(o.1h.3Q){if(26.10G===J){o.8g=J}}if(!o.8g&&!2H){if(o.1h.3Q&&o.mT){g3()}F{G.uF()}}if(!2w){1v(CE,4C)}};E g3(){B x=o.P.a4();if(x){if(o.P.18()==0&&o.1h.4x&&v.10F!=1){!o.1q?o.U.2v():\'\'}F{o.l4=H;if(o.1h.bF){x.ko()}if(o.1h.4x){o.P.Dm();x.10E();x.1z("Jp",D8)}}}}E qJ(){B x=o.P.a4();if(x){x.10D()}};G.g3=E(){g3()};G.qJ=E(){qJ()};E CE(){if(o.CD!=H){if(o.8z){o.P.ec()}if(v.1M.wC==1){mp(H);o.5t=H}v.5c==1?o.5c.2O("lN"):\'\';js("22");aa("lN","aq",1)}};B bP;B 8p={x:0,y:0};E vF(e){if(o.2J){if(o.2J.10C()){I}}if(o.6j){if(o.6j.jr()){I}}if(e.10B!=0){e.wj!=0?8p.x++:8p.x--;e.bU!=0?8p.y++:8p.y--;if((v.1M.D9==1||v.1M.D3==1)&&o.22&&8p.y>8p.x){3D(bP);bP=7u(E(){8p={x:0,y:0};3D(bP)},2h)}F{o.7C=H;3D(bP);bP=7u(E(){o.7C=J;o.Q.4Z();8p={x:0,y:0};3D(bP)},4i);o.Q.4Z();e.96()}if(8p.x>8p.y){if(e.wj>0){o.U.42(41(v.1I)-v.1M.kL/10,"no")}F{o.U.42(41(v.1I)+v.1M.kL/10,"no")}}F{B st=(o.1h.jR?-v.1M.kL/10:v.1M.kL/10);if(v.1M.D3==1&&o.22){o.P.1J((e.bU>0?st:-st))}F if(v.1M.D9==1&&o.22){3r("3F",(e.bU>0?"+"+st*10:"-"+st*10))}F{o.U.42(41(v.1I)+(e.bU>0?st:-st),"no");o.Q.j0()}}}}E D8(){1v(D5,100)}E D5(){if(!o.8z){if(o.1h.4x){o.P.DN();js("wA")}o.l4=J}}G.uF=E(){if(o.dx){o.22=H;o.Q.aq();if(!o.8g){if(L(o.8J)){2T{O(o.8J,{\'Z\':\'100%\',\'1e\':\'100%\',\'1r\':\'uw\',\'1a\':0,\'1c\':0,\'5a\':"qB"})}2G(eJ){}}O(o.1O,{\'Z\':\'100%\',\'1e\':\'100%\',\'1r\':\'uw\',\'1a\':0,\'1c\':0,\'5a\':"qB"});o.2V=o.1O.2g;o.4J=o.1O.2Y;2T{26.bH.C.6t=\'3h\';if(!L(o.W)){26.wb=E(e){e.96()}}}2G(eJ){}}if(v.wG==1){O(o.1O,{\'8j\':\'#3Y\'})}if(v.wf==1&&o.1h.3Q==1&&!o.1h.ff){B sw=1y.kK.Z;B fz=1;V(B i=1;i<6;i++){if(sw>2h*i){fz=2t(v[\'wf\'+(2h*i)],i)}}if(fz>1){o.1O.C.Cs=fz;v.zm=fz;cW()}}if(o.2J){o.2J.bu()}ag();o.dx=J}};G.8I=E(){mP=H;if(26.D1){26.D1()}F if(26.CZ){26.CZ()}F if(26.CX){26.CX()}F if(26.Cz){26.Cz()}F if(26.Cf){26.Cf()}F if(26.Cc){26.Cc()}if(!o.8g){G.uq(J)}};G.J2=E(x,y){wX(x,y)};E wX(x,Cb){if(L(o.1V)&&!Cb){o.qf=x}F{B 2H=J;B ds=o.9o/x;B dl=0;B mB={\'1e\':ds};if(v.10w==1){if(ds>o.9l){ds=o.9l;dl=o.9o/x;o.9o=mB[\'Z\']=dl}}if(L(o.8J)&&v.H0!=1){2T{O(o.8J,mB)}2G(eJ){2H=H;1l("e6 11b 10L")}}if(!2H){o.5h=x;o.9l=ds;if(o.5h>0){O(o.1L,mB)}if(dl>0){js("Z",dl)}js("1e",ds)}if(o.1V&&!o.22){o.4J=ds;if(dl>0){o.2V=dl}o.1V.2n()}}};G.uq=E(x){if(mP||x){o.22=J;o.l4=J;if(!o.8g){if(L(o.8J)){2T{O(o.8J,{\'1r\':\'nd\',\'1a\':0,\'1c\':0,\'5a\':\'C1\'});O(o.8J,o.GY);O(o.8J,{\'Z\':o.bb,\'1e\':o.eE})}2G(eJ){}}O(o.1O,{\'Z\':o.bb,\'1e\':o.eE,\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'5a\':\'C1\'});2T{26.bH.C.6t=\'2A\';26.wb=E(e){I H}}2G(eJ){}}o.Q.8I();if(v.wG==1){O(o.1O,{\'8j\':v.oy});if(v.eO==1){o.1O.C.8j=\'eO\'}F{O(o.1O,{\'8j\':v.oy})}}if(v.zm>1){o.1O.C.Cs=1;v.zm=1;cW()}if(v.1M.wC==1){mp(J);o.5t=J}if(o.2J){o.2J.bu()}ag();o.oK?o.oK=J:\'\';o.Q.om();mP=J;js("wA");o.8g=J;o.bz=J}};G.5t=E(x){v.1M.132!=0?mp(x):\'\'};E mp(x){8p={x:0,y:0};if(x){1y.1z("w5",vF,{5Q:J})}F{3D(bP);1y.6x("w5",vF)}}G.c5=E(x){v.4A=0;if(x!=1){o.Q.2Z();o.U.E5()}F{}o.P.42(v.1I);if(o.Q.cT()){o.Q.9a()}if(o.3o){G.5b()}ag(0);1l("2H");js("2H")};G.og=E(){v.4A=0;v.3g=0;v.q0=0;v.6I==1?v.6I=9:\'\';o.P.v1();o.U.c5()};G.5X=E(x){if(L(o.3k)){if(o.3k!=x){o.3k=x;if(v.rl==1){o.3X=o.2y[x];if(o.4T){3x.7V("rB",o.3X)}}o.P.5X(x);js("54",o.2y[x]);o.Q.zo(x)}}};G.jU=E(){o.Q?o.Q.jU():\'\'};G.ey=E(x){if(L(o.7f)){if(o.7f!=x){o.7f=x;if(v.Is==1){o.b7=v.b7=o.7E[x];if(o.4T){3x.7V("rr",o.b7)}}o.P.ey(x);js("7A",x);o.Q.jB("7A")}}};G.91=E(x,z){x==\'0.0\'?x=0.1:\'\';B y=x;6T(y).K(\'.\')>0?z=1:\'\';y=y*1;if(!z){y=x==o.eF?1:o.5T[x];o.al=x}y=41(y);if(o.kJ||z){o.jJ=y;V(B i=0;i<o.5T.S;i++){if(y<=o.5T[i]*1){o.al=i;1g}}}if(o.4T&&v.Fc==1){3x.7V("Fe",y)}js("59",y);o.P.91(y);o.Q.jB("59")};E ag(x){o.3d?o.3d.1n(L(x)?x:o.P.18()):\'\'};G.le=E(){if(o.3d){ag();o.3d.C()}};G.fv=E(x){if(1A(kY)==\'E\'){!o.3d?o.3d=1t kY():\'\';o.3d.yW(x)}};B 7K;B 9z;B pP;B 2m;E 8s(x){if(v["6r"+x+"DV"]>0&&o.4T){B tb=3x.5A("mH"+x+"47"+o.d);if(tb){B ct=1t 6U();o.aF=ct.ae();B E4=(ct.ae()-tb)/11c;if(E4<v["6r"+x+"DV"]){I J}}}if(v["6r"+x+"E9"]>0){if(o.P.1m()>0){if(o.P.1m()<v["6r"+x+"E9"]*60){if(v["6r"+x+"El"]>0){v["6r"+x+"47"+"Ap"]=v["6r"+x+"El"]}F{I J}}}}if(o.ll.K("8L")!=-1&&v.1V==1&&!o.aU&&v[x+\'s\']==1){if(1A xT=="1E"){I J}if(x=="6R"||x=="x7"){if(1A Es!=="1E"){2m=[];I Es(x)}}if(L(o.1V)||L(o.5K)){if(!6d(o.vS)||8m(o.3W)){1l(\'ad bg\');I J}F{1l(\'ad fE\');I H}}F{if(L(v[x])){if(v[x].5Z().K(".")>-1||v[x].5Z().K(":")>-1||v[x].5Z().K("[11z]")>-1){js("11A",x);if(!8m(x)&&x!="ej"){1v(E(){o.1q||(o.5K==1Y&&o.1V==1Y)?\'\':o.U.9t()},10);hc()}7K=0;9z=0;pP=x;2m=v[x].2q(" hb ");o.5x=[];o.yg=2m.S;lc();o.B8=1;o.oW=H;V(B i=0;i<2m.S;i++){2m[i]=2m[i].2q(" or ")}v[x.9P("47","fN")]=v[x];v[x]=1Y;o.3W=x;if(x!=\'ej\'){o.1V=1t xT()}o.5K=1t pV();V(B i=0;i<2m.S;i++){V(B j=0;j<2m[i].S;j++){B 8i=4z(2m[i][j]);if(8i.K("[50%]")>0){B 1H=5E(1,2);2m[i][j]=2m[i][j].1N("[50%]","");if(1H==2){2m[i][j]=\'\'}}}}if(v.wZ==1){V(B i=0;i<2m.S;i++){B n=i==0?1:0;if(2m[i].S>n){V(B j=n;j<2m[i].S;j++){B 8i=4z(2m[i][j]);if(o.1h.x6){g0(8i)}F{1v(g0,i*100,8i)}}}}}if(2m[0][0]==\'\'){ky()}F{o.5K.pW(4z(2m[0][0]),x)}I H}F{I J}}F{I J}}}F{I J}};G.vn=E(x){8s(x)};E l3(w,x,d){if(L(o[w+\'o\'])&&v[w+\'s\']==1){B y;V(B i in o[w+\'o\']){if(o[w+\'o\'].2x(i)){!o[w+\'o\'][i].18&&o[w+\'o\'][i].km?o[w+\'o\'][i].18=o[w+\'o\'][i].km:\'\';if(!o[w+\'o\'][i].q9&&L(o[w+\'o\'][i].18)&&L(o[w+\'o\'][i].1V)){B z=o[w+\'o\'][i].18.5Z();B ok=J;if(z){if(x=="7m"){if(z==x){ok=H}}F{if(z=="3K"){if(z==x){ok=H}}if(z.K("%")>0){if(d>0){z=2L(z.1i(0,z.K("%")))*d/100}F{z=-1}}F{z=2L(z)}if(o[w+\'o\'][i].km){x=o.vH*o.jH/2h}if(x>=z){if(v[\'6r\'+w+\'Eh\']>0&&z>-1){if(x-z>=v[\'6r\'+w+\'Eh\']){z=-1}}if(z>-1){ok=H}}}if(o[w+\'o\'][i].Eg&&o.P.1m()>0){if(o.P.1m()<o[w+\'o\'][i].Eg*1){o[w+\'o\'][i].q9=H;ok=J}}if(ok){y=o[w+\'o\'][i].1V;v[w]=o[w+\'o\'][i].1V;o[w+\'11B\']=o[w+\'o\'][i].18;o[w+\'11C\']=o[w+\'o\'][i].11w;if(8s(w)){if(o[w+\'o\'][i].km){o[w+\'o\'][i].18=o[w+\'o\'][i].18+o[w+\'o\'][i].km;o[w+\'o\'].2I(o[w+\'o\'][i])}o[w+\'o\'][i].q9=H;1g}}}}}}}};E pE(){if(8m()){if(o.dA==0||v[\'6r\'+o.3W+\'11D\']==1){O(o.vS,{"1D":0,"5H":"3h","1c":4i});1l(o.3W+" 1k");o.3W==\'6J\'?o.P.2v():\'\'}}}E 8m(z){B y=J;B x=[\'6J\',\'dV\'];V(B i=0;i<x.S;i++){if(o.3W==x[i]||z==x[i]){if(v[\'6r\'+x[i]+\'11F\']==1){y=H}}}I y};G.8m=E(x){I 8m(x)};G.11G=E(x){x?\'\':qw();o.3W=="6J"?o.Dx.2I(o.xA):\'\'};G.11H=E(){qw()};G.11I=E(){qw()};E qw(){if(8m()){if(o.1q){o.P.2Z();o.Q.2Z()}1l(o.3W+" 1n");O(o.vS,{"1D":1,"5H":"4r","1c":0});o.p6=1}if(o.l4&&!o.8g){qJ()}F{if(v["6r"+o.3W+"h8"]==1&&o.22){o.U.8I()}}};G.11J=E(x){o.5K=1Y;o.p6=0;1l("8L 3Z",o.3W);js("11E",o.3W);if(x.1F=="ej"){B Bm=1t 11u(x);o.pt.2I(Bm)}F{if(L(o.1V)){if(v.4A==0&&v.11m==1&&o.P.18()==0&&!o.7m){v.4A=1;o.P.td()}if((!o.1V.11f()||x.A2)&&o.xS>0){1l("8L 11g");o.1V.4m();o.1V=1Y;o.1V=1t xT()}if(8m()){pE()}F{if(o.1q){o.P.2Z();o.Q.2Z()}}o.xS++;if(o.oW&&v.dw>0){2B(o.dw);o.dw=1v(Aw,v.dw*2h*60);if(L(v.zZ)){if(v.zZ!=\'\'){o.iv?o.iv.5S():\'\';o.iv=1t 11h()}}}o.oW=J;if(v.Av>0){1l("8L 11i");js("11j");1v(xV,v.Av*2h,x)}F{xV(x)}}F{1l("8L 11k")}}};E xV(x){o.1V.Go(x)}E Aw(){if(L(o.1V)){if(o.1V.d3()&&o.dA==0){o.1V.xm();1l("8L rT "+v.dw);2m=[];cF()}}}G.11e=E(){js(\'11o\',o.3W);1l("8L 2w");yq()};G.ky=E(){yq()};E yq(){B n=lc();1l("8L 5J "+!n);!n?ky():cF()};G.11r=E(x){if(v[o.3W+"yc"]){V(B i=0;i<3;i++){v[o.3W+"yc"]=v[o.3W+"yc"].1N(x+(i==0?\' hb \':(i==1?\' or \':\'\')),\'\')}}};G.11s=E(){I lc()};E lc(){B x=J;if(o.3W){B 7R=v[\'6r\'+o.3W+\'47\'+\'Ap\'];B kq=v[\'6r\'+o.3W+\'47\'+\'11N\'];if(kq||7R){if(kq>0&&o.xG>0){o.yg=kq;if(o.dA>=kq){x=H}}F{if(7R>0){o.yg=7R;if(o.dA>=7R){x=H}}}}}I x}E ky(){if(2m.S>0&&2m[7K]){if(9z<2m[7K].S-1){1l("8L 133");o.1V?o.1V.xm():\'\';pE();9z++;B 8i=4z(2m[7K][9z]);B gu=xr(8i);if(gu==\'7I\'){o.5K=1t pV();o.5K.pW(8i,o.3W)}if(gu==\'2w\'){ky()}}F{cF()}}F{cF()}}E xr(8i){B x=\'7I\';if(v.wZ==1&&o.5x){B q5=J;B n=0;V(B i=0;i<o.5x.S;i++){if(o.5x[i].qh==0){if(o.5x[i].cE.BM(8i)){o.5x[i].qh=1;B y=o.5x[i].cE.aI();if(y==\'3Z\'){o.5K=o.5x[i].cE;1l("8L BM");o.5x[i].cE.gc();x=y}F{if(y==\'\'){x=\'ok\';1l("8L 13e");o.5K=o.5x[i].cE;o.5x[i].cE.14s()}if(y==\'2w\'){x=\'2w\'}}q5=H}if(q5&&o.5x[i].dZ==0){n++;if(n<6){xE(o.5x[i])}F{1g}}}}}I x}G.14k=E(x,y){if(x!=\'\'){B z=7K;B x5=J;if(y){V(B j=0;j<2m.S;j++){2m[j]==y?z=j:\'\'}}if(2m.S==1){if(2m[0].S>1&&9z<2m[0].S-1&&2m[9z]){B AZ=2m[9z].4N(1,99);2m[0].xa(9z+1,99);x5=H}}if(1A(x)=="3u"){V(B i=0;i<x.S;i++){2m.xa(z+i+1,0,[x[i]]);if(o.1h.x6){g0(x[i])}F{1v(g0,i*100,x[i])}}}F{if(1A(x)=="4F"){2m.2I([x]);g0(x)}}if(x5){2m[2m.S-1]=2m[2m.S-1].9P(AZ)}}};G.14j=E(x,y){if(x!=\'\'){B z=7K;if(y){V(B j=0;j<2m.S;j++){2m[j]==y?z=j:\'\'}}if(2m[z]){if(1A(x)=="3u"){V(B i=0;i<x.S;i++){2m[z].2I(x[i])}}F{if(1A(x)=="4F"){2m[z].2I(x)}}}}};G.cF=E(x){cF(x)};E g0(x){if(v.wZ==1&&o.5x){B i=0;V(B i=0;i<2m.S;i++){if(2m[i]==x){if(7K>=i){I}F{}}}if(2m.S==1&&2m[0].S>1){}F{B n=0;V(i=0;i<o.5x.S;i++){o.5x[i].qh==0?n++:\'\'}o.5x.2I({dZ:0,qh:0,x:4z(x),t:o.3W,cE:1t pV(H)});n<5?xE(o.5x[o.5x.S-1]):\'\'}}}E xE(x){if(x){x.dZ=1;x.cE.pW(x.x,x.t)}}E cF(hR){B 2H=lc();1l("8L 5S ("+o.dA+")");if(2m.S>0&&7K==2m.S-1){if(2m[0][0].K("js:")==0){7K=-1;2m=[[2m[0][0]]]}}if(o.14h==2){2H=H}if(2m.S>7K+1&&!2H){o.1V.xm();pE();7K++;o.B8++;9z=0;B 8i=4z(2m[7K][0]);B gu=xr(8i);if(gu==\'7I\'){o.5K=1t pV();o.5K.pW(8i,pP)}if(gu==\'2w\'){cF(hR)}}F{go();o.Q.8k();if(L(o.1V)){o.1V.4m();o.1V=1Y}o.5K=1Y;2m=[];9z=0;7K=0;o.p6=0;o.B7!=1?js("14g",o.3W):\'\';o.B7=0;if(v.L1==1){if(o.9u){2T{o.9u.pY()}2G(e){1l(o.9u,e)}o.9u=1E}}pP=\'\';o.dA=0;o.Bg=0;o.xA=\'\';2B(o.dw);3D(o.14u);o.iv?o.iv.5S():\'\';o.cm?o.cm.1k():\'\';o.xG++;if(o.3W=="7v"||(o.3W=="dV"&&v.qn==1&&o.g6)||o.3W=="6J"){if(v.3e!=\'?\'){o.P.bV();B re;if(o.xH){o.U.jG();o.xH=J;re=H}if(o.2p=="4W"&&!o.wY&&o.1h.4x){re=H;o.3W=="7v"?o.P.DW():\'\'}if(re||hR==\'hR\'||v.14o==1||o.qg){o.qg=J}F{o.U.2v(1)}}}if(o.qf>0){wX(o.qf);o.qf=0}if(o.3W=="qb"){9Q()}o.wY=J;o.3W=1Y}};G.14D=E(){2m=[[\'\']]};G.fs=E(y){B x=[\'7v\',\'dV\',\'qb\',\'6R\',\'x7\'];B z;V(B i=0;i<x.S;i++){z=J;if(y){y!=x[i]?z=H:\'\'}if(!z&&L(v[x[i].9P("47","fN")])){v[\'6r\'+x[i].9P("47","BG")]--;if(v[\'6r\'+x[i].9P("47","BG")]>0){v[x[i]]=v[x[i].9P("47","fN")];v[x[i].9P("47","fN")]=1Y}}}if(y=="7v"||y=="6J"){if(v.xc>1){if(L(o.wU)&&v.hI==1){V(B i in o.wU){o.wU[i].q9=1E}v.xc--}}}};G.mG=E(){hc();if(L(o.8E)){o.8E.4m();o.8E=1Y}o.8E=1t 14E()};G.14H=E(){go();o.8E.4m();o.8E=1Y};G.hc=E(){hc()};G.go=E(){go()};E hc(){if(o.9K){}F{o.9K=1Z("2e");o.1O.1R(o.9K);eM(o.9K);O(o.9K,{"2z":"#3Y","1D":0.1});o.9K.C.5a=JK}};E go(){if(o.9K){o.1O.3j(o.9K);o.9K=1Y}};E 7G(){if(L(o.29)){B p=o.22?2t(v.14I,v.29):v.29;if(p!=o.vj){a9(p,o.29,v.f7)}1n(o.29);O(o.29,{"1D":v.mX});o.Q.4L();o.eV?o.eV.1q():\'\'}};G.gI=E(){if(L(o.29)){if(6d(o.29)){3D(o.uP);B t=o.P.18();if(t==0&&v.CJ==1){}F{if(v.BA>0){2B(o.xI);o.xI=1v(p5,v.BA*2h)}F{p5()}}}}};E p5(){2B(o.xI);if((v.xJ==1&&!o.1q)||v.Bn==1){v.Bn==1?7G():\'\'}F{O(o.29,{"1D":0});1v(Bo,4e)}}E Bo(){if(!o.1q&&v.g5==1){}F{1k(o.29);o.eV?o.eV.3K():\'\';o.Q.4L()}}G.7G=E(){7G()};E Bp(x){if(v.yb==1){V(B i=0;i<1y.4V.S;i++){if(1y.4V[i]){if(1y.4V[i].2O("id")!=v.id){1y.4V[i].2O(\'3K\',(v.14t==1?1:0))}}}}1y.e2=v.id}E yd(x){B y=7Y.6l(x).S;o.jY=0;if(y>0){x=ya(x,y,\'\',-1)}I x}E ya(x,y,p,j){B x2=[];B 2H;if(L(x[\'W\'])){x=x[\'W\'];y=x.S}B ii=0;V(B i=0;i<y;i++){2H=J;if(L(x[i][\'id\'])){x[i][\'dT\']=x[i][\'id\']}x[i][\'id\']="x"+p+\'-\'+i+(L(x[i][\'id\'])?\'-\'+x[i][\'id\']:\'\');j==-1&&i==0&&!L(x[i][\'53\'])?o.jE=x[i][\'id\']:\'\';if(!L(o.jE)){j==0&&!L(x[i][\'53\'])?o.jE=x[i][\'id\']:\'\'}x[i][\'jD\']=p;x[i][\'yh\']=j;x[i][\'cl\']=ii;if(L(x[i][\'1m\'])){o.jY+=x[i][\'1m\']}if(L(x[i][\'A5\'])){x[i][\'1S\']=x[i][\'A5\'];B q1=x[i][\'3e\']?x[i][\'3e\'].K(\'[\'):0;B q2=x[i][\'3e\']?x[i][\'3e\'].K(\']\'):0;if(q1>0&&q2>0){B s1=x[i][\'3e\'].1i(q1+1,q2-q1-1);B s2=s1.2q(",");B s3=\'\';V(B k=0;k<s2.S;k++){s3+="["+s2[k]+"]"+x[i][\'3e\'].1N("["+s1+"]",s2[k])+(k<s2.S-1?",":\'\')}x[i][\'3e\']=s3}}if(L(x[i][\'W\'])){x[i][\'53\']=x[i][\'W\']}if(!L(x[i][\'53\'])){if(L(x[i][\'3e\'])){if(x[i][\'3e\']==\'\'&&!L(x[i][\'7k\'])){2H=H}}F{2H=H}}if(!2H){o.1G[x[i][\'id\']]=x[i];ii+=1}if(L(x[i][\'53\'])){B z=7Y.6l(x[i][\'53\']).S;if(z>0){x[i][\'53\']=ya(x[i][\'53\'],z,x[i][\'id\'],i)}}if(!2H){x2.2I(x[i])}}I x2}E Ar(){B x=[];if(L(v.4S)){if(v.4S.K("x-")!=0){V(B y in o.1G){if(o.1G.2x(y)){if(o.1G[y].dT==v.4S){v.4S=y}}}}if(L(o.1G[v.4S])){v.W.14r==1?v.W.wL=0:\'\';x=o.1G[v.4S]}F{x=o.W[0];if(v.4S==o.AD){o.2b=1E}}}F{x=o.W[0]}if(x){V(B i=0;i<10;i++){if(L(x[\'53\'])){x=x[\'53\'][0]}F{1g}}v.4S=x.id;if(v.4S==o.AD&&x.1w!=\'3i\'){x.1w=1E}}I x}G.fA=E(){I fA()};E fA(){B x=J;if(o.Q){if(o.Q.hf()){if((v.W.cp==1||v.kk==1)&&o.Q.bq()){x=H}}}I x};E 9Q(){aa("4k","9Q",1);o.U.fs();if(o.4T&&v.cB==1){o.3i.vf(0,o.P.1m())}if(o.Q.hf()){if(fA()){if(L(v.W.BW)){o.Ac=1v(E(){o.Q.aV()},v.W.BW*2h)}F{o.Q.aV()}}F{xW()}}F{if(v.14K==1&&o.22){o.U.8I()}xX()}}G.DA=E(){xW()};E xW(){if(v.W.cp==1&&v.W.n8==1&&!o.Q.bq()){o.Q.oo();I}if(v.W.G7==1){!o.Q.jM()?o.Q.gC():\'\'}xX()}E xX(){v.5c==1?o.5c.2O("4k"):\'\';js("14q");if(v.7k==1&&v.14p==1&&1X(v.Dv)){7k(v.Dv)}if(v.9D){if(1A Dg!=="1E"){!o.9D?o.9D=1t Dg():o.9D.jr()}}!o.9D?7G():\'\'}E qH(x){if(x.K(\'js:\')==0){2T{x=2f(x.1i(3))}2G(e){9h.1l(e.9N)}}I x?x:\'\'}};B ut=E(Y){B Y;B 3L;B n0;B 7g;B fD="";B dh=0;B ir=J;B nY=J;B P;B 3n;o.3C={x:1,y:1,x0:1,y0:1};B 9Y;B jz=[];B qC=0;B h1=0;B hD;if(1A(Y)==\'4F\'){Y=4z(Y);if(Y.K("[{")==0){2T{Y=Y.1N(/7e\'qt/ig,\'"\');Y=5e.7y(Y);9Y?Y=o.U.6y(Y):\'\'}2G(e){Y="Dk 5e"}}if(Y.K("#"+v.aw)==0){Y=o[o.fd[0]](Y)}if(Y){if(Y.K("#"+v.d2)==0&&Y.K(v.dr)>0){9Y=H;o[o.fd[1]](Y,aT)}}if(Y){if(Y.K("#0")==0){if(Y.K(o.ek)>0){Y=c6(Y.1N(o.ek,\'\'))+o.ek}F{Y=c6(Y)}}}if(v.aZ==1){Y=aZ(Y)}if(1A(Y)==\'4F\'){if(Y.K(".8u")==Y.S-4||Y.K(".9g")>0){jz=Y.2q(" or ");vw()}}}o.46=1Z("2e");eM(o.46);O(o.46,{"5j":"2S 0.2s 3f","1B-8A":"8o"});o.1O.1R(o.46);if(v.1M.Dq==1){if(!o.vZ){tT(o.46,\'o.Dq\',v.1M.iJ!=1,v.1M.iJ==1,Ds);o.vZ=H}}if(!9Y){aT()}E Ds(){B p=o.46.hK;B p2=o.2V;if(v.1M.iJ==1){p=o.46.p3;p2=o.4J}B x;if(p>p2*2t(v.1M.DQ,0.5)){if(o.Q.eo()){x=H;o.Q.e1()}}F{if(p<-p2*2t(v.1M.DQ,0.5)){if(o.Q.bq()){x=H;o.Q.aV()}}}if(x){if(v.1M.iJ==1){O(o.46,{"1c":0})}F{O(o.46,{"1a":0})}}F{1t 5B({mc:o.46,1F:(v.1M.iJ==1?"1c":"1a"),to:0,18:0.1,6L:"IY",me:"vZ"})}}E vw(){Y=jz[qC];if(Y.K(o.ek)>0){Y=Y.1N(o.ek,\'\');v.3e=Y}B 5q=i0(Y);5q.aN=E(){if(G.hM==4&&G.7P==4C){gC(G);o.Q.Kh()}F{m0(1)}};5q.oR=E(e){m0(3)};5q.h4();9Y=H}E m0(x){if(jz.S>1){if(qC+1<jz.S){qC++;vw();x=0}}if(x==1){5z("W h7 ox or Ek Eo")}if(x==2){5z("14i 5e")}}E gC(x){if(x.jN){B y=x.jN;if(y.K("#"+v.aw)==0){y=o[o.fd[0]](y)}if(y.K("#"+v.d2)==0&&y.K(v.dr)>0){y=o[o.fd[1]](y)}if(Y.K(".8u")==Y.S-4){B 8u=y.2q(/(\\r\\n\\t|\\n|\\r\\t)/gm);Y=[];B vC=1;B b5=\'\';V(B i=0;i<8u.S;i++){if(8u[i].K("#14n")>-1){if(8u[i].K(" - ")>-1){B 1H=8u[i].2q(" - ");b5=1H[1H.S-1]}F{if(8u[i].K("DZ-6c")>-1){b5=8u[i].1i(8u[i].K("DZ-6c")+10);b5=b5.1i(0,b5.K(\'"\'))}}}F{if(8u[i].K("3T")==0){Y.2I({1S:""+(b5!=\'\'?b5:vC),3e:8u[i]});vC++;b5=\'\'}}}}F{y=y.1N(/(\\r\\n\\t|\\n|\\r\\t)/gm,"");2T{Y=5e.7y(y)}2G(e){9h.1l(e.9N);m0(2)}}if(o.Q){if(v.W.mI==1){o.Q.jP(2)}}aT();cW();1v(E(){js("W")},1)}}E aT(x){Y=o.U.6y(x?x:Y);Y&&Y!=\'?\'?6y(Y):\'\';o.1q&&x&&!o.1V?o.P.2v():\'\';v.14m==1?v6():\'\'}E 5z(x,E6){B y=H;B yy=H;js("14c",x);if(o.iX){I}if(E6!=1&&v.6I==1&&v.wh==1){wP();I}if(3L){if(o.1q||o.g6||(v.3g==1&&!o.1w)){if(3L.S>0){7g++;y=7g>3L.S-1;if(y&&3L.S>1&&v.dz>0){if(o.dz<v.dz){7g=0;y=J}o.dz++}if(y&&v.14f==1){if(o.3U.S>1){if(o.2y[o.3k].K(2M("gH"))==-1){o.2y[o.3k]=o.2y[o.3k]+\' (\'+2M("gH")+\')\'}if(o.3k>0){yy=J;o.U.5X(o.3k-1);jv()}F{if(o.2y[o.3k+1].K(2M("gH"))==-1){yy=J;o.U.5X(o.3k+1);jv()}}}}if(!y){o.2b>0||!o.1w||P.5Y()?\'\':o.2b=3V();if(o.2p!=nL(3L[7g])||!o.4v){if(o.1q){o.U.c5(1)}}o.fL=J;if(v.yz>0){2B(o.fJ);o.fJ=1v(j3,v.yz*2h)}F{j3()}}F{if(v.6I==1&&yy&&v.wh!=1){y=J;wP()}}}}F{y=J;if(!o.1w){j3()}}}if(y&&yy&&x){wr(x,H)}};E j3(){if(o.iX){I}if(o.1q||o.g6||(v.3g==1&&!o.1w)){1l("14l cZ",7g);6y(\'or\');o.1w&&!o.1V?P.2v():\'\';jv()}F{if(!o.1w){if(3L.S>0){if(7g+1<3L.S){7g++;o.dz++;6y(\'or\')}}}F{2B(o.fJ);o.fJ=1v(j3,1X(v.yz,5)*2h)}}}E wr(x,mr){aa("2w","jS",H);o.es=J;if(v.Co==1&&!o.9i){if(v.Cg==1){o.ax.9g(v.Ct)}F{o.ax.9g(x)}if(v.Cw==1&&L(v.Cx)){o.dS=1t C0();o.U.gI()}}mr?o.9i=H:\'\';if(o.1q){o.U.8k();o.Q.2Z()}L(o.29)&&!L(o.dS)?o.U.7G():\'\';js("2w",x)}E wP(){h1++;1l("jS gw Ec "+h1);o.1q?o.o2=1:\'\';L(o.bZ)?2B(o.bZ):\'\';o.bZ=1v(C9,v.wQ*2h)}E C9(){B x=2t(v.14v,10);if(o.1q||o.o2==1){o.o2=0;if(h1<x){o.U.gw()}F{if(v.wh==1){5z(P.j4(),1)}F{wr(\'gw jS \'+P.j4())}}}}G.5z=E(x){5z(x?x:P.j4())};G.8t=E(y){1l("mz");ir=H;2B(hD);B x=J;if(4b()>0&&!o.5d&&!y){B 18=o.CR;if(18+10<4b()){1l(\'14G (Cy)\');js("Cy");P.2v();P.3N(18);x=H}}if(!x){o.U.mz()}};G.af=E(){if(v.yQ==1){L(o.29)?o.U.7G():\'\'}v.g5==1?o.U.gI():\'\';o.Q.2v();o.U.CW();v6();js("1q")};G.hQ=E(){if(v.kN==1&&o.4v){if(o.U.hQ()){o.9m=P.r8();o.Q.4L();zu()}}o.wd=H};G.gn=E(){3V()>0&&3V()==4b()&&o.U.fA()?\'\':o.U.2Z()};G.hA=E(){1l("14F")};G.hW=E(){1l("we");o.U.we();L(o.h5)?js("3F",o.h5):\'\'};G.cR=E(){1l("w7");h1=0;o.U.w7();o.2p=="1C"?sl(1):\'\'};G.9H=E(){if(P){1l("4b",4b());o.U.4b(3V(),4b());js("1m",4b());h1=0;2B(o.bZ);if(L(o.lA)){o.U.ey(o.lA);o.lA=1Y}o.qF=1E}};E 3V(){B x=P.18();I x}E 4b(){B x=P.1m();I x}G.ez=E(){};G.9j=E(){1l("9t");o.U.9t();js("7W")};G.aX=E(){if(dh!=3V()){if(!o.9K){o.U.8k();if(dh==0){if(v.g5==1&&v.CJ==1){o.U.gI()}}}}dh=3V();B bT=4b();js("18",dh);if(v.2a.on==1){if(1A(CF)==\'E\'){!v.c0&&v.2a.c0?v.c0=v.2a.c0:\'\';if(!3n&&v.2a.3J!=1&&v.c0&&v.c0!=\'\'&&dh>0){o.e4=1t CF();3n=o.e4.gZ()}}}if(o.2p=="1C"&&o.1h.6B&&bT>0){if(o.1q&&dh>bT-1){2B(hD);hD=1v(CG,4i)}}};E CG(){if(!ir){o.U.2Z();o.P.8t()}}G.wm=E(){if(o.2p=="4W"){P?P.lH():\'\'}};G.CK=E(x){o.U.c5();P.CM(x)};G.uN=E(x){if(L(x)){if(3n){3n.42(x)}v.2a.1I=x}};G.wq=E(x){if(L(x)){if(3n){3n.3y(x);3n.2v()}}};G.lH=E(){if(o.2p=="4W"&&P){I P.3Z()}F{I H}};G.lX=E(){I o.2p=="1C"?P.lX():1E};G.lW=E(){I P.lW()};G.5X=E(x){1l("14w",x);if((o.2p=="ew"||o.2p==o.ws||(o.2p=="1C"&&(v.9E==0||9T()<2))||(o.2p=="3M"&&(v.na==0||de()<2)))&&L(o.3U[x])){B 18=G.18();o.2b>0?\'\':o.2b=18;o.U.3N(18,J);6y(o.3U[x],H);B y=H;if(v.1f){if((v.1f.14C==1&&!o.1q)||!o.1w){y=J}}if(o.aj>0){P.gx(o.aj)}if(y){o.U.2v()}}if(o.2p=="1C"&&v.9E==1&&9T()>1){P.JP(x)}F if(o.2p=="3M"&&v.na==1&&de()>1){P.K5(x)}F if(o.2p=="4W"||o.2p=="rt"){P.sn(x)}};G.LC=E(x,y){I ip(x,y)};G.uV=E(x,y){I Ee(x,y)};E ip(x,y){B r=x.1e+\'p\';if(x.1e<4C){r=\'yA\'}F if(x.1e>=4C&&x.1e<=dW){r=\'oc\'}F if(x.1e>dW&&x.1e<=im){r=\'oa\'}F if(x.1e>im&&x.1e<=4e){r=\'o1\'}F if(x.1e>4e&&x.1e<=fG){r=\'CQ\'}F if(x.1e>fG&&x.1e<=CP){r=\'oJ\'}F if(x.1e>CP&&x.1e<=CO){r=\'nW\'}F if(x.1e>CO&&x.1e<=CN){r=\'yI\'}F if(x.1e>CN&&x.1e<=CL){r=\'14B\'}F if(x.1e>CL){r=\'yY\'}if(x.Z==14A&&x.1e<=14z){r=\'oc\'}F if(x.Z==D0&&x.1e<=CY){r=\'oa\'}F if(x.Z==14x&&x.1e<=14e){r=\'o1\'}F if(x.Z==13D&&x.1e<=14a){r=\'oJ\'}F if(x.Z==13A&&x.1e<=13z){r=\'nW\'}F if(x.Z==13y&&x.1e<=13x){r=\'yI\'}F if(x.Z==13w&&x.1e<=13v){r=\'yY\'}if(v.1f.13u==1&&L(v.1f[\'6c\'+r])){r=v.1f[\'6c\'+r]}F{if(y==1){r=2M(r)}if(y==2&&L(x.ah)){r=2L(x.ah/2h)+\' \'+2M(\'iN\')}}I r};E Ee(x,y){B r=x.lO();if(1A(v.op)=="3u"){if(L(v.op[x])){x=v.op[x]}F{x=2t(v.op[y.5Z()],x)}}I x};E zu(){if(o.4v&&o.1U&&!o.ux){P.uE();V(B i=0;i<o.1U.S;i++){if(o.1U[i]!=\'a3\'){P.JQ(o.1U[i],o.2W[i],(i==o.3q))}}o.ux=H}}G.91=E(x){1l("13s",x);x=41(x);P?P.f5(x):\'\';if(v.2a.on==1){if(3n){3n.f5(x)}}};G.Dm=E(){zu()};G.DN=E(){P.uE()};G.ey=E(x){1l("13r",x);if(o.bC.S>0){if(o.bC[x]){B 18=G.18();o.2b>0?\'\':o.2b=18;o.U.3N(18,J);6y(o.bC[x],H);o.U.2v()}}F{if(o.2p=="1C"&&v.d1==1){P.JX(x)}F if(o.2p=="3M"&&v.DK==1){P.K3(x)}F if(o.4v){P.gx(x)}}};G.zS=E(){B x=o.2y[o.3k];x==1E?x=\'\':\'\';B y=jo()&&v.a8==1&&v.9E==1&&x!=2M("2A");I(y?\'\'+2M("2A")+\' \':\'\')+(v.13q==1&&y?\'\':x)};G.zO=E(){B x=o.7E[o.7f];x==1E?x=\'\':\'\';I x};G.jo=E(){I jo()};E jo(){B x=J;if(P){if(o.2p=="4W"){x=P.2A()}if(o.2p=="1C"&&v.9E==1&&9T()>1&&v.a8==1){x=P.2A()}if(o.2p=="3M"&&v.na==1&&de()>1){x=P.2A()}}I x}E 9T(){if(o.2p=="1C"){I P.9T()}F{I 0}}E de(){if(o.2p=="3M"){I P.de()}F{I 0}};G.9J=E(){I o.4v?P.9J():o.5h};G.4Z=E(x){if(P&&(o.sP||L(v.9J))){P.4Z()}if(v.ud>0){O(o.46,{"1e":(o.22?"100%":o.eE-v.ud)})}if(o.3n&&v.2a.DU==1){o.e4.4Z()}if(v.zc==1){13o()}if(o.rO){o.rO.4Z()}};G.3R=E(){I P?P.3R():{}};G.jC=E(){P.jC()};G.6I=E(){1l(\'6I\');o.9L=0;o.1w?v.3g=1:\'\';o.U.9t();if(Y&&v.13n!=1){if(Y.K(\'(5E)\')==-1){Y=Y+(Y.K(\'?\')==-1?\'?\':\'&\')+\'Ai=(5E)\'}}if(Y){if(o.4v){P.3y(Y);G.2v()}F{6y(Y)}}};if(!L(o.29)){te()}if(L(v.29)){if(v.29!=\'\'){a9(v.29,o.29,v.f7);if(v.yQ==1&&!o.1w){1k(o.29)}}F{v.29=1Y}}E aI(){fD=P?P.7P():\'\'}E BS(Y){3L=Y.2q(" or ");V(B i=0;i<3L.S;i++){if(3L[i].K(" hb ")>-1){n0=3L[i].2q(" hb ");3L[i]=n0[5E(0,n0.S-1)]}if(L(v.mY)&&3L[i].K("//")==-1){3L[i]=v.mY+3L[i]}}7g=0}E B4(){aI();if(fD=="8r"||o.5d){o.U.mf()}if(fD!=""){o.U.zd()}}E te(){if(o.29){o.1O.3j(o.29)}o.29=1Z("2e");O(o.29,{"4I-3l":"1P","1D":v.mX,5j:"1D 0.5s"});if(v.zc==1){13l()}F{eM(o.29)}o.1O.1R(o.29)}E 6y(x,y,BH){if(x){if(x.K("3F:")==0&&o.W){o.2b=x.1i(5);o.Q.Kf(0);I}}2B(hD);v.nJ==\'\'?v.nJ=\';\':\'\';if(x.K(\'{\')>-1&&x.K(\'}\')>-1){B z=x.2q(v.nJ);o.bC=[];V(B i=0;i<z.S;i++){o.7E[i]=z[i].1i(z[i].K("{")+1,z[i].K("}")-1);o.bC[i]=z[i].1i(z[i].K("}")+1);if(L(v.b7)){if(v.b7==o.7E[i]){o.7f=i}}}x=o.bC[o.7f]}!L(3L)?3L=[]:\'\';o.ol?2B(o.ol):\'\';x&&x!=\'or\'&&x!=\'x\'?BS(x):\'\';B ft=o.AN;if(3L.S>0){B fu=3L[7g];if(fu){if(fu.K(\'js:\')==0){2T{fu=2f(fu.1i(3))}2G(e){9h.1l(e.9N)}}}if(fu){o.2p=nL(fu);B gZ=J;if(BH){gZ=H}Y=fu;if(Y){Y=Y.1N(/\\(5E\\)/g,2E.5E())}F{Y=3L[0]}Y=Y.1N(/\\&136;/g,\'&\');if(!gZ&&x!=\'x\'&&P&&o.2p==ft&&(ft=="ew"||(ft=="cD"&&!o.1h.2c)||(ft=="4W"&&o.1w&&!nY)||ft=="dm"||ft=="1C"||ft=="3M")&&!o.qU){P.3y(Y)}F{1l("13k");mW();BQ(Y)}o.AN=o.2p;sl()}}if(!y){3D(o.zQ);o.zQ=7u(B4,o.jH);if(!L(v.1W)&&v.qp==1&&v.vl==1){v.1W=\'\'}if(L(v.1W)){o.U.fv(v.1W)}if(v.gg==1){if(v.kN==1&&o.1h.2c){}F{if(o.2p=="4W"){O(o.46,{"1c":-kM,"1a":-kM})}F{3m(o.46)}v.1o.1k=0}}}}E sl(x){if(o.eF||x){if(o.kJ){P.f5(o.jJ)}F{if(o.al!=o.eF){P.f5(o.5T[o.al])}}}}E nL(x){B 1F="ew";if(x){if(x.K(".A1")>0){1F="1C"}F if(x.K(".DI")>0){1F="3M"}F if(x.K("w")==0&&x.K("s")==1){1F=o.ws}F if(x.K(\'4W.an/\')>-1||x.K(\'nt.be/\')>-1){if(1A(Bb)==\'E\'){1F="4W";if(v.zF==1){B y=\'jb://3I.4W.an/vi/\'+ny(x)+\'/\';BK(y+\'B9.iI\',E(z){z>100?v.29=y+\'B9.iI\':v.29=y+\'13j.iI\';if(o.1G){o.1G[o.3z][\'29\']=v.29}v.3g==1||o.1w?\'\':a9(v.29,o.29,v.f7)})}}F{1l("No AM")}}F if(v.cD==1&&x.K(\'cD.an/\')>-1){1F="cD"}F if(v.13i==1&&x.K(\'13h.r\')>-1){1F="rt"}F if(v.Bh==1){if(1A(Bi)==\'E\'){Bi(x)?1F="7e":\'\'}}}o.sP=1F=="4W"||1F=="cD"||1F=="rt";o.4v=1F=="ew"||1F=="1C"||1F=="3M"||1F==o.ws;I 1F}E BK(Y,BP){B 3I=1t Kl();3I.aN=E(){BP(G.1e)};3I.3y=Y}E BQ(x){o.2p=nL(x);if(o.4v){P=1t DR(x,o.46,J)}if(o.sP){P=2f("1t ut"+o.2p[0].Br()+o.2p.4N(1)+"(x,o.46);")}if(o.2p=="7e"){P=1t 13f(x)}o.Q?o.Q.Ll():\'\';sJ()}G.By=E(){sJ()};E sJ(){if(L(v.1m)){B t=0;if(o.3i&&v.cB==1&&!o.1w){t=o.3i.bo().t}1v(E(){o.U.4b(t,v.1m)},100)}}E mW(){if(P){P.4m();P=1Y;fD="7l"}if(3n){3n.4m();3n=1Y;3n=1E;o.e4.5S();o.3n=1Y;o.e4=1Y}};G.4m=E(){mW()};G.14b=E(){3L=[];mW()};G.6y=E(x,y,z){6y(x,y,z)};G.a9=E(x){a9(x,o.29,v.f7)};G.2v=E(x){if(P){ir=J;nY=J;if(o.5d){o.3O.2v()}F{P.2v(x);v.g5==1?o.U.gI():\'\'}if(L(3n)){3n.2v()}if(o.7N){if(o.4v){if(o.aF>0&&!o.7N.13d()){o.7N.ge()}}F{o.ng=[];o.Q.jB("eh")}}if(o.4v&&v.qI>-1&&!o.tH&&!o.1h.4x){if(o.aF>0){P.Jx()}}jv()}F{1v(G.2v,4e)}};E jv(){if(v.Dn>0&&3L.S>1){if(4b()==0||v.Ej==1){2B(o.ol);o.ol=1v(Ed,v.Dn*2h)}}}E Ed(){if(o.1q&&(4b()==0||v.Ej==1)&&3V()==0&&!o.fJ){if(P){if(P.8C()==0&&7g!=3L.S-1){5z(\'6y Ec\')}}}}G.DT=E(1b){if(o.3n){if(v.2a.DU==1){if(o.r9[o.3n]>2){I}}if(1b){1b.aW();1y.1b?1y.1b.6F=H:\'\'}B 1H=P;P.t7(H,o.3n);3n.t7(J,o.46);P=3n;3n=1H;P.2v();3n.2v();js("2a")}};G.DW=E(){P.3y(Y)};G.sq=E(){v.5c==1?o.5c.2O("1k"):\'\';o.un=H};G.jf=E(){if(v.1o.zj){v.1o.zj=J;if(o.Q){o.Q.xZ(1);o.Q.rw()}}o.un=J};G.Db=E(){if(o.3n&&o.e4){o.e4.iZ()}};G.gz=E(){if(o.4v&&o.5n){o.j2=H;P.5n()}};G.ec=E(){if(o.4v&&o.9e){P.9e()}};G.pq=E(){if(v.fP==1&&L(v.13b)){if(L(o.fP)){o.fP.1n()}F{if(1A(Cm)==\'E\'){o.fP=1t Cm()}}}hX();if(P){kH(0);P.pq()}};G.bV=E(){o.fP?o.fP.1k():\'\';P?P.bV():\'\'};G.hX=E(x){hX(x)};E hX(x){if(v.13a==1&&1X(v.cm)){if(L(o.cm)){o.cm.1n(x)}F{if(1A(C6)==\'E\'){o.cm=1t C6()}}}}G.2Z=E(x){if(o.5d){o.3O.2Z()}F{P?P.2Z(x):1l("138")}if(L(o.3n)){3n.2Z()}};G.v1=E(){nY=H;o.U.3N(0,J);L(o.29)?o.U.7G():\'\';6y(\'x\')};G.eP=E(){P?P.eP():\'\'};G.3N=E(x){if(P){if(o.5d){o.3O.3N(x)}F{P.3N(x);if(v.2a.on==1){if(3n){3n.3N(x)}}}}};G.5b=E(){if(P){P.5b();o.5d?o.3O.5b():\'\';1l("51")}if(v.2a.on==1&&v.2a.gE==1){if(3n){3n.5b()}}};G.6n=E(){if(P){P.6n();o.5d?o.3O.6n():\'\';1l("9q")}if(v.2a.on==1&&v.2a.gE==1){if(3n){3n.6n()}}};G.42=E(x){P?P.42(x):\'\';if(v.2a.on==1){if(v.2a.gE==1&&3n&&!o.IO){3n.42(x)}}if(o.5d){o.3O.42(x)}};G.qo=E(){I P?P.qo():J};G.5Y=E(){I P?P.5Y():J};G.7P=E(){I fD};G.7l=E(){I ir};G.18=E(){B x=0;if(P){x=3V();if(o.5d){B y=o.3O.3V();y?x=y:\'\'}F{if(4b()>0&&x!=4b()){o.CR=x+0.137}}I x}F{I 0}};G.1m=E(){B x=0;if(P){x=4b();x==0&&L(v.1m)?x=v.1m*1:\'\';if(o.5d){B y=o.3O.4b();y?x=y:\'\'}}I x};G.8C=E(){I P?P.8C():0};G.fU=E(){o.3C.fU=o.3C.fU?J:H;O(o.46,{"2S":(o.3C.fU?"3w(-1)":"3w(1)")})};G.13B=E(){te()};G.td=E(){if(o.4v){P.4A()}};G.DO=E(x,y){if(x==\'1J\'){if(y==1){e7(v.1f.1J/100)}if(y==2){e7(-v.1f.1J/100)}if(y==3){o.P.iy()}}F{if(o.4v){if(!o.9Z[x]){if(x==\'t8\'){o.9Z[x]=0}F{o.9Z[x]=1}}if(y==1){o.9Z[x]+=v.1f[x]/100}if(y==2){o.9Z[x]-=v.1f[x]/100}if(y==3){if(x==\'t8\'){o.9Z[x]=0}F{o.9Z[x]=1}}!o.io?o.io=[]:\'\';o.io[x]=x+\'(\'+2L(o.9Z[x]*100)+\'%) \';B cf=\'\';V(B i in o.io){cf+=o.io[i]}O(P.a4(),{\'7a\':cf});o.Q.nO(x)}}};G.1J=E(x){e7(x)};E e7(x){if(6T(x).K(":")>0){B y=x.2q(":");B z0=o.2V/o.4J;B z1=o.P.3R();if(z1.Z>0){z0=z1.Z/z1.1e}B z=y[0]/y[1];if(z0!=z){if(o.4v){P.gt()}B w2=o.4J*z;B x2=w2/o.2V;B h2=o.2V/z;B y2=h2/o.4J;if(x2<1){o.3C.x0=o.3C.x=41(x2);o.3C.y=1}F{o.3C.x=1;o.3C.y0=o.3C.y=41(y2)}hF();o.kn=x}}F{o.3C.x+=41(x);o.3C.y+=41(x);hF()}if(v.1M.13X==1){if(!o.tB){if(o.3C.x>0||o.3C.y>1){tT(o.46,\'o.13Y\');o.tB=H}}tS()}o.Q?o.Q.nO(\'1J\'):\'\';tW()};G.iy=E(){if(o.4v){P.gt()}o.3C.x=o.3C.x0;o.3C.y=o.3C.y0;hF();o.kn=1Y;tS();tW()};G.eL=E(){hF()};E hF(){O(o.46,{"2S":"3w("+o.3C.x+") 3H("+o.3C.y+")"});o.Q?o.Q.nO(\'1J\'):\'\'}E tW(){if(o.4T&&v.I8==1){3x.7V("tM",o.3C.x);3x.7V("Ie",o.3C.y)}}E tS(){if(o.tB&&v.1M.13Z!=1){if(o.3C.x==1&&o.3C.y==1){O(o.46,{"1c":0,"1a":0})}}};G.fw=E(x,y){P.fw(x,y)};G.ci=E(){I ci()};E ci(){I 3L?(3L.S>0?(3L[7g]?3L[7g]:\'\'):\'\'):\'\'};G.so=E(){I 3L.S};G.a4=E(){I P?P.a4():J};G.6b=E(){if(o.4v){P.6b()}};G.v2=E(){P.v2()};E v6(){if(1A(uL)==\'E\'){if(v.140==1&&L(v.Ce)){if(v.Ce.S>5){uL(3L[7g]);3D(o.Cv);o.Cv=7u(E(){uL(3L[7g])},v.CA*2h)}}}}};B DR=E(Y,1L,2a){B 17=1Z(v.gg==1?"DY":"dB");B 8Y;B uk=0;B 1C;B 43=J;B rH=J;B hY=0;B tD=J;B aA=J;B gF=-1;B mm=-1;B 3M;B 6O=J;B ws;B ug=J;B 6q=J;o.5l=J;B 8D=0;B 8Z=J;B iL=0;B 2w;B 141;B pa=J;B j1=-1;B bN=-1;B rh;B rA;B ao;B ic;B 13V;B qZ;B M1=\'dB/Jc; 142="144.145, 146.40.2"\';B ar=J;O(17,{\'1r\':\'nd\',\'Z\':\'100%\',\'1e\':\'100%\',\'3u-lr\':\'tu\',\'5j\':"7a 0.2s 3f",\'94-1e\':\'2A\',\'5L-1e\':\'1P\',\'94-Z\':\'2A\',\'5L-Z\':\'1P\'});gt();if(o.1h.7t&&v.3g==1&&v.ti==1){if(!o.1w&&v.7v){3P(17,{\'kU\':1})}F{o.3o=H;o.Q?o.Q.5b():\'\';3P(17,{\'3o\':1,\'kU\':1,\'3g\':1})}}F{if(v.sh==1&&o.1h.2c){if(v.Er!=1&&o.1h.7t&&v.1V!=1){}F{3P(17,{\'kU\':1})}}if(!o.1h.tv){3P(17,{\'4A\':(v.4A==1?\'7m\':\'1P\')})}}if(v.147==1){3P(17,{"148":"En","149":"En"})}Y=dN(hl(Y));3P(17,{\'3y\':Y,\'x-3Q-5n\':\'Hv\',\'sF\':\'H\'});if(v.29&&v.143==1){3P(17,{"29":v.29})}if(v.13T!=1){3P(17,{\'sF\':\'H\'})}if(v.13E==1){3P(17,{\'2a\':\'J\'})}if(2a){17.3g=H;if(v.2a.gE!=1||v.3g==1){17.3o=H}F{17.1I=1X(v.2a.1I)?v.2a.1I:v.1I}}if(v.13S==1){3P(17,{\'13R\':\'13Q\'})}rI();if(v.13P==1){B er=1Z("e6");3P(er,{"HB":"no","Hy":"H","Hh":"H","3y":""});O(er,{"1r":"2C","Z":"100%","1e":"100%","2R":0});1L.1R(er);B Dw=1y.7u(E(){if(er.kP.26.hM==="JZ"){1y.3D(Dw);O(er.tG.bH,{"2U":0,"2Q":0});er.tG.bH.1R(17)}},100)}F{1L.1R(17)}if(!L(Y)){Y=\'\'}B hS=J;if(o.1h.tv){if(Y.K("13O")>0){hS=H}}if(o.1h.6B){if(Y.K("13N")>0||(v.Me==1&&v.bi==1)){hS=H}}if(o.1h.4x){if(Y.K("sZ")>0){hS=H}}o.1h.6B?KE():\'\';if(Y.K(".DI")>0){6q=H;if(!o.3M){if(1A DG!=="1E"){o.3M=1t DG()}F{6q=J}}if(L(o.3M)){if(!L(1y.A0)){o.3M.pf()}F{uQ()}}}F if(((2D.1C==1&&v.tf!=1)||Y.K(".A1")>0)&&!hS&&(o.fi.K("8y")!=-1||L(1y.5I))){43=H;rH=H;2T{if(L(1y.5I)){if(!5I.AA()||(o.1h.6B&&v.13M==1&&!o.1h.4x)||(o.1h.4x&&v.sZ==1)||(o.1h.p7&&v.13L==1)){1l(\'8y 13K \',5I.AA());43=J}F{if(v.4A==1||v.3g==1||v.As==1||2a){d5(J)}}}F{43=J}}2G(2w){43=J}}F if(Y.K("w")==0&&Y.K("s")==1&&v.13J==1){8Z=H;tA()}if(o.1h.tv&&v.3g==1&&!43&&!6q&&!8Z){1v(E(){o.U.dJ()},100)}if(v.7N==1){L(o.7N)?o.7N.bu():\'\';o.7N=1t 13I()};G.v2=E(){uQ()};E uQ(){6q=H;if(um()){if(v.4A==1||v.3g==1||v.Ay==1){qv(J)}}F{6q=J;1l("13H h7 Kt")}}E qv(x){if(o.3M&&!6O){o.3M.gZ(x,17,Y,2a);L(1y.A0)?6O=H:\'\'}}E d5(x){1l("8y");if(o.3U.S>1){v.9E=0;v.A7=H}F{v.A7?v.9E=1:\'\'}if(o.bC.S>1){v.d1=0;v.A3=H}F{v.A3?v.d1=1:\'\'}o.ao=J;gF=-1;ao=[];o.3d?o.3d.AG():\'\';B uB=J;if(v.7v&&v.Bz==1){uB=H;v.Bz=0}8Y={Kn:(v.Bx==1&&!2a),13G:(v.4A==1||v.3g==1||2a||x)&&!uB,fH:60,sL:60,13F:J};if(v.Bl>0){8Y.11Y={6P:{BB:v.Bl*2h}}}if(v.BN>0){8Y.10u={6P:{BB:v.BN*2h}}}if(v.Xc==1){8Y.10s=H}if(v.bi==1){B ks=[\'wv\',\'pr\',\'ck\'];B hy=[\'an.W4.f0\',\'an.W5.W6\',\'4c.w3.W7\'];B dj={};V(B i=0;i<ks.S;i++){if(v[\'bi\'+ks[i]]==1){dj[hy[i]]={};if(1X(v[\'bi\'+ks[i]+\'l\'])){dj[hy[i]].W8=pZ(v[\'bi\'+ks[i]+\'l\'])}if(1X(v[\'bi\'+ks[i]+\'s\'])){dj[hy[i]].AU=pZ(v[\'bi\'+ks[i]+\'s\'])}if(1X(v[\'bi\'+ks[i]+\'s\'])){dj[hy[i]].AU=pZ(v[\'bi\'+ks[i]+\'s\'])}}}8Y.W9=H;8Y.Wa=dj}if(v.AR==1){8Y[\'Wb\']=E(5q,Y){5q.Wc=H}}if(L(v.6C)){if(L(v.6C.fH)){if(v.6C.fH>fG){v.6C.fH=fG}v.6C.sL=v.6C.fH}if(L(v.6C.AK)){v.6C.sL=v.6C.fH=v.6C.AK}if(1A v.6C=="3u"){V(B 19 in v.6C){if(v.6C[19].5Z().K(\'2f:\')==0){v.6C[19]=2f(v.6C[19].1i(5))}8Y[19]=v.6C[19]}}}if(v.W3==1){8Y[\'Wd\']=99}js("Wf",1C);1C=1t 5I(8Y);js("1C",1C,1);1C.JW(Y);1C.Wg(17);1C.on(5I.7J.Wh,E(){1l("8y Wi")});1C.on(5I.7J.Wj,E(1b,28){!2a?o.U.dJ():\'\'});1C.on(5I.7J.Wk,E(1b,28){if(!2a&&v.9E==1&&9T()>1){M3();qe();o.Q?o.Q.k1(o.3k):\'\'}});1C.on(5I.7J.Wl,E(1b,28){qe()});1C.on(5I.7J.Wm,E(1b,28){qe()});1C.on(5I.7J.Wn,E(1b,28){if(!2a){if(28.hE.5l!=o.5l){o.5l=28.hE.5l;o.Q.4L()}o.5l=28.hE.5l;if(o.5l){1l("We");o.B5=Y.K("?ye")>-1;if(17.1m>0&&17.bQ>0){if(17.1m-17.bQ<10){if(o.i5>0){if(o.i5==17.bQ&&o.B1==17.1m){o.pT++;if(o.pT>2){o.pT=0;o.i5=-1;1C.92();d5(H);8t()}}F{o.i5=-1}}F{o.i5=17.bQ;o.B1=17.1m}}}}}if(v.9E==1){o.3k=1C.m6;o.Q?o.Q.k1(o.3k):\'\'}lY()});1C.on(5I.7J.W1,E(1b,28){if(L(28.i7)){!2a?js("VQ",28.i7.W0):\'\';if(v.dL==1){if(!o.dL){if(1A Et!=="1E"){o.dL=1t Et()}}o.dL?o.dL.Go(28.i7):\'\'}}if(gF>-1){1C.LZ=gF;gF=-1}2B(o.fJ);tD=H;Ke()});1C.on(5I.7J.VG,E(1b,28){js("VH",28,1)});1C.on(5I.7J.VI,E(1b,28){if(!2a&&v.d1==1){1v(uY,4e)}});1C.on(5I.7J.VJ,E(1b,28){if(!2a&&v.d1==1){uR()}});1C.VK=J;if(v.VL==1){1C.on(5I.7J.VM,E(1b,28){if(1A(28)=="3u"){if(28.i7.1F==\'1W\'){B fu=28.i7.Y;if(fu){B st=1C.JT;if(o.4q){o.3d.uj(st+\'cJ\'+fu)}F{!ao[st]?ao[st]=[]:\'\';ao[st].2I(fu)}}}}});1C.on(5I.7J.VN,E(1b,28){B x=1C.VO;B y=\'\';V(B i=0;i<x.S;i++){y+=(y!=\'\'?\',\':\'\')+\'[\'+x[i].6c+\']1C\'+i;x[i].6P?o.pL=x[i].6c:\'\'}3r("1W",y)})}1C.on(5I.7J.VF,E(1b,28){v.1l==1?9h.1l(28):\'\';js(28.1F+\'5I\',28,0,H);o.rY=28;if(28.fL){if(28.1F=="VP"){1l("8y fL rL 2w");if(v.q0==1&&3V()==0){rv()}F{2w=28.hE+\' (\'+28.1F+\')\';o.2b>0||2a||v.5l==1||8Z?\'\':o.2b=3V();1C.92();if(!2a){o.fL=H;o.P.5z()}}}F{B nx=J;if(28.1F=="VR"){if(v.VS==1&&o.P.so()>0){nx=H}F{1l("8y fL P 2w, fN");1C.VT()}}F{nx=H}if(nx){2w="8y fL 2w, 92";1C.92();!2a?o.P.5z():\'\'}}}F{1l("8y ",28.1F,28.hE,(28.pO?28.pO.rM:\'\'));js("VU",(28.pO?28.pO.rM:\'\'));if(8D>0){8D=2;rQ()}}});aA=H}E pZ(x){if(x){V(B j=1;j<11;j++){if(v["KG"+j]){x=x.1N("{"+j+"}",v["KG"+j])}}}I x}E qe(){if(!2a&&v.9E==1&&9T()>1){if(o.3k!=1C.m6){o.3k=1C.m6;o.Q?o.Q.k1(o.3k):\'\';1l("8y VV "+o.3k)}if(1X(v.cj)&&o.3k>0){B fq=v.cj.2q(",");V(B k=0;k<fq.S;k++){if(o.2y[o.3k].K(fq[k])>-1){1l(\'VW 54\');1C.fe=o.3k-1;o.3k--;1g}}}if(v.a8!=1&&r4()){v.fg="ei";sg(mm>-1?mm:1C.fe);1l("VX")}}}E tA(){if(L(1y.Jd)){if(um()){if(!L(o.ws)){o.ws=1t VY()}ws=1t Jd(17,Y,2t(v.VZ,{Kn:H}));ug=H}F{8Z=J;1l("h7 Kt")}}}E Ke(){sA()};G.6b=E(){sA()};E sA(){if(v.G4&&o.Q){if(17.cu.S>0){if(v.6b==1){17.cu[17.cu.S-1].g2="Kd"}F{17.cu[17.cu.S-1].g2="3h"}if(!o.6b){o.6b=H;o.Q.4L()}}F{if(o.6b){o.6b=J;o.Q.4L()}}}}E rv(){1l("Wo");!2a&&o.1q?o.U.2Z():\'\';o.U.7G();8D=1;rQ(o.1q)}E rQ(x){if(8D>0){2B(rh);rh=1v(JV,v.JR*2h)}}E JV(){if(8D>0){1l("W2");if(43){if(8D==1){1C.JW(Y)}if(8D==2){1C.92();d5(H);17.1q()}}F{3P(17,{\'3y\':Y})}}}17.1z(\'Wp\',JS);17.1z(\'2w\',tq);17.1z(\'7l\',8t);17.1z(\'1q\',af);17.1z(\'3K\',gn);17.1z(\'Kz\',aX);17.1z(\'ix\',hA);17.1z(\'mA\',hW);17.1z(\'Ky\',cR);17.1z(\'Kx\',ez);17.1z(\'7W\',9j);17.1z(\'Kw\',9H);17.1z(\'WO\',JC);17.1z(\'Kv\',tU);17.1z(\'Ku\',tN);if(v.Me==1&&o.1h.6B){if(1X(v.WQ)){if(1X(v.WR)){17.1z(\'Ks\',uG)}}}if(o.1h.7t){17.1z("WS",jC,J);17.1z(\'Jp\',K9)}E K9(){if(v.kN!=1){17.dv("Q")}}E jC(){if(17.WT){o.U.g3()}}E JS(){if(!43&&!6q){!2a?o.U.dJ():\'\'}}E tq(){if(!43&&!6q){if(17.2w){B x=17.2w.rM;2w=17.2w.9N;if(2w==\'\'){if(x==1){2w="Mg"}if(x==2){2w="rL"}if(x==3){2w="dP"}if(x==4){2w="h7 ox"}}1l("jS: ",2w)}if(rH&&v.q0==1&&3V()==0){2w=1E;rv()}if(2w!=1E||o.1h.2c){5z()}}}E 5z(){!2a?o.P.5z():\'\'}E 8t(){if(!2a){o.P.8t()}F{if(v.2a.9k==1){17.bQ=0;17.1q()}}}E af(){if(!o.1w&&v.7v){1l(\'K1 1q\');3K();o.U.2v();I}if(43&&8D>0){}F{if(!2a){B 8O=o.U.8m()&&o.p6!=1;if(8O||bN==-1){B x=J;if(43){if(L(o.1V)||L(o.5K)){if(8O){}F{1l(\'3K hz\');3K();x=H}}}if(!x){o.P.af()}}}}}E gn(){if(!ar){1l("WU");if(o.1q&&o.g6&&!17.7l&&v.KC==1&&!o.9m){1l("KC");h9()}F{!2a&&!o.KB&&17.6N?o.P.gn():\'\'}}}E aX(){!2a?o.P.aX():\'\';if(bN>-1){if(3V()>bN){3K();bN=-1}}}E hA(){!2a?o.P.hA():\'\'}E hW(){!2a?o.P.hW():\'\'}E cR(){if(2a){qq()}F{o.P.cR();ta();if(43&&8D>0){8D=0;1l("WV up");1C.Lf();h9();o.Q.2v()}if(L(v.9J)){2n()}qZ?K4():\'\';1v(Kp,4e)}}E L7(){if(17.C.1c=="-WW"||17.p3<-2h){bV()}}E Kp(){if(17){if(17.d4&&o.7E.S==0&&v.WX!=0){B at=17.d4;V(i=0;i<at.S;i++){B x=o.P.uV((at[i].7n?at[i].7n+\' (\':\'\')+at[i].Ja+(at[i].7n?\')\':\'\'),i);if(x==v.b7){o.7f=o.aj=i}o.7E[i]=x}o.Q.oz(o.aj)}}if(o.aj>0){gx(o.aj,1)}};G.9J=E(){I(17.qP/17.gK)};E qq(){if(17.gK>0){O(1L,{"1e":1L.2g/(17.qP/17.gK)-2L(v.2a.2R)})}F{if(uk<20){1v(qq,100);uk++}}}E ta(){if(v.oI==1){3D(o.ur);o.ur=7u(uy,100);uy()}}E uy(){if(17){if(17.gK>0){o.U.J2(17.qP/17.gK);3D(o.ur)}}}E 9H(){!2a&&!8Z?o.P.9H():\'\'}E ez(){!2a?o.P.ez():\'\'}E 9j(){if(43&&8D>0){}F{!2a?o.P.9j():\'\'}}E JC(){o.U.uo()}E um(){B oM=1y.Js=1y.Js||1y.WY;B hB=1y.LV=1y.LV||1y.WP;B oU=oM&&1A oM.oU===\'E\'&&oM.oU(M1);B Md=!hB||hB.vg&&1A hB.vg.WZ===\'E\'&&1A hB.vg.5S===\'E\';I oU&&Md}B v4="<7j C=\'1D:0.5\'>";E M3(){if(!2a&&v.9E==1){B x=1C.a5;B q=-1;o.2y=[];if(x.S>1){if(L(v.3X)){if(v.3X==\'5L\'){q=x.S-1}if(v.3X.K(\'jy:\')==0){q=v.3X.1i(4)*1;q>=x.S?q=x.S-1:\'\'}}V(B i=0;i<x.S;i++){if(L(x[i].1e)){B y=o.P.LC(x[i],v.Lt);if(o.2y.K(y)>-1||v.X1==1){if(L(x[i].ah)){B yi=o.2y.K(y);yi>-1?o.2y[yi]+=" "+v4+" &ho;"+2L(x[yi].ah/2h)+\' \'+2M(\'iN\')+\'</7j>\':\'\';o.2y[i]=y+" "+v4+" &ho;"+2L(x[i].ah/2h)+\' \'+2M(\'iN\')+\'</7j>\'}}F{o.2y[i]=y}if(L(x[i].Ln)){o.9W[i]=x[i].Ln[0]}}F if(L(x[i].6c)){o.2y[i]=x[i].6c}F{o.2y[i]=i}if(L(v.3X)&&q==-1){if(v.3X==o.2y[i]){q=i}}if(L(o.3X)){if(o.3X==o.2y[i]){q=i}}}if(v.a8==1){o.2y[x.S]=2M("2A")}F{q==-1?q=x.S-1:\'\'}if(v.Ld==1||q>-1){if(v.fg=="5J"||(!o.1w&&v.4A==0)){1C.rW=q}F{if(v.fg=="ei"){1C.fe=q}}o.3k=q}F{if(v.a8==1){o.3k=1C.a5.S-1}F{o.3k=1C.X2}}if(v.Lb>0){1C.mj=x.S-v.Lb*1-1}lY()}if(1C.a5[o.3k]){o.ah=2t(1C.a5[o.3k].ah,0)}o.Q?o.Q.4L():\'\'}}E lY(){if(v.d1==1){uY();uR()}}E uY(){if(!2a&&v.d1==1){B x=1C.d4;o.7E=[];B 2H;B 1Q=-1;if(x.S>1){V(B i=0;i<x.S;i++){2H=J;if(L(x[i].gB)&&o.9W.S>0){if(x[i].gB!=o.9W[o.3k]){V(B j=0;j<o.9W.S;j++){if(o.9W[j]==x[i].gB){2H=H}}}}if(!2H){o.7E[i]=(L(x[i].6c)?o.P.uV(x[i].6c,i):i)+(v.X3==1&&L(x[i].9R)?\' (\'+x[i].9R+\')\':\'\');if(L(v.b7)){if(v.b7==o.7E[i]){1Q=i}}}}}}if(1Q>-1){o.7f=1Q;1C.mO=1Q}}E uR(){if(!2a){B x=1C.d4;B y=1C.mO;if(y>-1){if(L(x[y].gB)){if(o.9W.S>0){if(o.9W[o.3k]!=x[y].gB){V(B i=0;i<x.S;i++){if(x[i].6c==x[y].6c&&x[i].gB==o.9W[o.3k]){1C.mO=i;y=i;1g}}}}}o.7f=y;1l("8y X4",o.7f);o.Q.oz(o.7f)}}};G.gx=E(x,y){gx(x,y)};E gx(x,y){if(17.d4.S>1){17.d4[x].rJ=H;17.d4[y==1?0:o.aj].rJ=J;o.aj=x;y!=1?17.bQ=o.P.18():\'\'}}E 3V(){if(6q){I 6O?o.3M.18():0}F{B x=17.bQ;if(L(v.gQ)){x=x*v.gQ}I x}};E 4b(){B x=17.1m;if(!x&&o.qF){x=o.qF}if(x==X5){v.5l=1;x=3V()+10;if(o.bT){x<o.bT?x=o.bT:\'\'}o.bT=x}if(6q&&6O){x=o.3M.1m()}if(L(v.gQ)){x=x*v.gQ}if(L(v.4k)){if(7s([v.4k],\'-\')){x=x+v.4k*1}F{x=v.4k}}I!uh(x)?x:0}G.2v=E(x){if(x=="ar"){ar=J}B p=H;if(43&&!tD){if(!aA){d5(H)}1C.Lf()}if(6q&&!6O){qv(H);p=J}if(8Z){if(!ug){tA()}ws.1q();p=J}L7();p?h9():\'\'};B X6;E h9(){if(Y!="1P"&&17){B pp=17.1q();if(pp!==1E){pp.jF(E(){1l("12G");if(!o.3o){if(17.3o){1l("X7");17.3o=J}}iL=0}).2G(E(2w){B em=2w.9N;1l("X8",em);if(em.K(\'cZ\')==-1&&em.K(\'X9 by\')==-1){if(v.ti==1&&L(17)&&o.1q){1l(\'X0\',o.1q);o.U.5b();2T{17.1I=0}2G(e){};B tg=17.1q();if(tg){tg.jF(E(){}).2G(E(e){1l("WN",e.9N);if(o.1h.tv&&(43||6q)){}F{o.Q.2Z();o.U.7G();js("WC")}})}}F{if(!o.d8){o.Q.2Z();o.U.7G()}}}F{if(em.K(\'dZ WM\')>0||em.K(\'Mg\')>0){if(o.1q){if(iL<5){1l("Ws",iL);1v(h9,Wt);iL++}F{}}}}})}}}G.pq=E(){if(o.5K||o.1V){if(o.8z){ec()}if(!o.j2&&o.1h.2c&&o.1h.3Q){if(!17.3o){17.3o=H;pa=H}O(17,{"1r":"2C","1a":-4i,"1c":-4i});bN=3V();if(!8Z){17.1q()}if(bN==0&&o.2b>0){ic=o.2b}}}};G.bV=E(){bV()};E bV(){if(!o.j2&&(o.1h.2c||o.1h.3Q)){O(17,{"1r":"nd","1a":0,"1c":0});if(L(v.9J)){2n()}if(pa){!o.3o?17.3o=J:\'\';pa=J}if(ic>0){o.2b=ic;ic=0}bN=-1}};G.2Z=E(x){if(x=="ar"){ar=H}1l(\'6N\');3K()};E 3K(){if(8Z){ws.3K()}F{17.3K()}};G.eP=E(){!17.6N?2Z():h9()};G.3N=E(x){if(L(v.gQ)){x=x*(1/v.gQ)}if(6q&&6O){o.3M.3F(x)}F{if(43){if(v.Wu==1&&x>0&&r4()&&v.a8==1){gF=1C.fe;1C.LZ=0}}17.bQ=x}};G.5b=E(){17.3o=H};G.6n=E(){17.3o=J;if(o.2p=="1C"&&o.1h.4x&&v.1V==1){if(!L(o.LK)){ar=H;1l("4x 9q");17.3K();1v(E(){17.1q();ar=J},10);o.LK=H}}};G.42=E(x){17.1I=x};G.Jx=E(){if(o.Km!=17){B cZ;B 9x;if(o.pc[17]){cZ=o.pc[17];9x=o.tL[17]}F{1y.pe=1y.pe||1y.Wv;if(L(1y.pe)){2T{9x=1t pe();cZ=9x.Ww(17);o.pc[17]=cZ;o.tL[17]=9x}2G(e){1l(e)}}}if(9x){B jT=9x.Wx();jT.jT.5G=v.qI;cZ.J8(jT);jT.J8(9x.Wy);o.tH=H;o.Km=17}}};G.qo=E(){I!17.6N};G.5Y=E(){I v.5l==1||8Z?H:o.5l};G.a4=E(){I 17};G.r8=E(){3P(17,{\'Q\':\'1\'});I H};G.4A=E(){3P(17,{\'4A\':\'7m\'});if(43&&!aA){d5(J)}if(6q&&!6O){qv(J)}};G.7P=E(){B 6Z="8r";if(17.6N){6Z="6N"}if(17.7l){6Z="7l"}I 6Z};G.t7=E(x,y){2a=x;y.1R(17);1L=y;if(x){if(v.2a.gE!=1){17.3o=H}F{if(!o.3o){17.3o=J}}qq();if(o.2y.S>0&&v.a8==1){if(43){j1=o.3k;1C.mj=0;1C.fe=0}}}F{if(!o.3o&&v.2a.gE!=1){17.3o=J}17.1I=1X(v.2a.1I)?v.2a.1I:v.1I;ta();if(o.2y.S>0&&v.a8==1){if(43){1C.mj=-1;if(j1>-1){j1<1C.a5.S?1C.rW=j1:\'\'}}}}};G.18=E(){I 3V()};G.1m=E(){I 4b()};G.8C=E(){B x=0;if(17.8H){if(17.8H.S>0){B y=3V();V(B i=0;i<17.8H.S;i++){if((y>=17.8H.1w(i)||y>=17.8H.1w(i)-100)&&y<=17.8H.4k(i)){x=17.8H.4k(i)}}x==0?x=17.8H.4k(17.8H.S-1):\'\'}}if(L(v.4k)){B ed=v.4k;if(7s([ed],\'-\')){ed=4b()}x>ed?x=ed:\'\'}I x};G.2A=E(){I r4()};E r4(){B x=J;if(43){if(aA){x=1C.Wz}}F if(6q){if(6O){x=o.3M.2A()}}I x}G.3R=E(){I{"Z":17.qP,"1e":17.gK}};G.3y=E(x){if(x){1l("3y");x=x.1N(/\\(5E\\)/g,2E.5E());x=dN(hl(x));o.9i!=2?o.9i=J:\'\';if(6q){if(6O){o.3M.cZ(x)}}F if(43){43&&1C?1C.92():\'\';Y=x;d5(o.1w||o.3g);sM()}F{3P(17,{\'3y\':x,\'3g\':0});rI();3K()}}};E hl(x){if(x){B y=x.K(\':WA:\');if(y>0){o.hl=x.1i(y+6);x=x.1i(0,y)}}I x}E rI(){if(o.1h.6B&&17){B y=17.cu;if(y){V(B i=0;i<y.S;i++){y[i].g2="Wr"}}y=17.d4;if(y){V(i=0;i<y.S;i++){y[i].rJ=(i==0?1:0)}}}sM();if(v.rO==1){1A Ko!=="1E"?Ko(Y,17,1L):\'\'}}E KE(){if(o.2p=="1C"&&43){}F{if(1y.WB){qZ=H;K6()}}}E K4(){qZ=J}E K6(e){o.5n=H;1l("5n");!2a?o.U.jU():\'\';17.1z(\'10t\',E(1b){o.qK=17.WE;if(o.2p=="1C"){1l("5n",o.qK);if(o.qK&&hY==0&&43){o.2b=3V();1C.92();17.3y=Y;17.sF=J;17.1q();43=J;hY=6U.fE()}if(!o.qK&&6U.fE()-hY>2h&&!43){o.2b=3V();d5(H);17.1q();43=H;hY=0}}})}G.5n=E(){17.WF()};G.9e=E(){ec()};E sM(){if(o.1h.3Q){if(L(17.WG)&&!o.1h.7t){o.9e=H}if(26.WH&&!17.WI){o.9e=H}}}E ec(){if(o.1h.6B){if(17.WJ==="qr-in-qr"){17.Kc("aG");o.8z=J}F{17.Kc("qr-in-qr");o.8z=H}}F{if(!26.WK){2f(\'17.WL().jF(p => {o.8z = H;}).2G(2w => {o.8z = J;});\')}F{2f(\'26.Wq().jF(ok =>{o.8z = J;}).2G(2w => {});\')}}};E tU(){1l("2a");o.8z=H};E tN(){1l("VD");o.8z=J};E uG(e){if(1A K7!=="1E"){!o.qU?o.qU=1t K7():\'\';o.qU.Go(17,e)}}G.K5=E(x){if(6O){o.3M.sn(x)}};G.K3=E(x){if(6O){if(17.8H.S>0){o.3M.US(x)}}};G.VC=E(x){if(o.ws){o.ws.K0(ws,x,-1)}};G.Uv=E(x){if(o.ws){o.ws.K0(ws,-1,x)}};G.JP=E(x){mm=x*1;sg(x)};E sg(x){if(aA){B y=2L(x);if(y>=1C.a5.S){if(v.a8==1){y=-1;1C.mj=-1}F{y=1C.a5.S-1}}if(v.fg=="ei"){1v(9j,4e);1C.fe=y}if(v.fg=="5J"){1l("8y 5J Uw "+y);1C.rW=y}if(y==-1){o.3k=1C.m6}lY()}};G.lX=E(){I 1C};G.lW=E(){I 6O?o.3M.Ux():J};G.9T=E(){I 9T()};E 9T(){B x=0;if(aA){if(1C.a5){x=1C.a5.S}}I x}G.de=E(){I de()};G.gt=E(){gt()};E gt(){if(17){if(v.lV==1||v.6k==1){if(v.Uy==1||v.6k==1){O(17,{\'3u-lr\':\'6k\'})}F{O(17,{\'3u-lr\':\'uT\'})}}F{O(17,{\'3u-lr\':\'tu\'})}}}G.4Z=E(){2n()};E 2n(){if(v.9J){3r(\'1J\',6T(v.9J).1N(\'/\',\':\'))}}E de(){B x=0;if(6O){x=o.3M.a5()}I x}G.JX=E(x){if(aA){1C.mO=2L(x)}};G.fw=E(x,y){if(y=="1C"&&aA&&rA){rA.Uz(x)}if(y=="JU"&&aA){if(ao[x]&&o.3d){V(B i=0;i<ao[x].S;i++){o.3d.uj(ao[x][i])}}1v(E(){1C.JT=x*1},4e)}if(y=="3M"&&6O){o.3M.UB(x)}};G.f5=E(x){if(x){17.UC=x}};G.uE=E(){B x=17.UD;B y=[];V(B i=0;i<x.S;i++){if(x[i].lx.lO()==\'8V\'){x[i].6x("dZ",vc);y.2I(x[i])}}V(B i=0;i<y.S;i++){17.3j(y[i])}V(B i=0;i<17.cu.S;i++){17.cu[i].g2=\'3h\'}o.ux=J};G.JQ=E(x,y,z){if(x!=\'\'){if(x.K(\' or \')>0){B xx=x.2q(\' or \');x=xx[0]}B 8V=26.1Z(\'8V\');8V.7i(\'3y\',x);8V.7i(\'7n\',y);8V.7i(\'UE\',\'uA\');8V.7i(\'g2\',\'Kd\');if(z){8V.7i(\'6P\',\'\')}17.1R(8V);8V.1z("dZ",vc)}};E vc(e){if(e.4w.7n&&o.3d){V(B i=0;i<o.2W.S;i++){if(o.2W[i]==e.4w.7n){o.3d.9f(i)}}}};G.j4=E(){I 2w?2w:\'\'};G.4m=E(){3D(o.Uu);43&&1C?1C.92():\'\';6q&&6O?o.3M.UF():\'\';8Z&&ws?ws.2H():\'\';17.6x(\'2w\',tq);17.6x(\'7l\',8t);17.6x(\'1q\',af);17.6x(\'3K\',gn);17.6x(\'Kz\',aX);17.6x(\'ix\',hA);17.6x(\'mA\',hW);17.6x(\'Ky\',cR);17.6x(\'Kx\',ez);17.6x(\'7W\',9j);17.6x(\'Kw\',9H);17.6x(\'Kv\',tU);17.6x(\'Ku\',tN);17.6x(\'Ks\',uG);17.3y=\'\';if(1L.lx=="H1"){1L.tG.bH.3j(17)}F{1L.3j(17)}17=1Y}};B Ii=E(){B b=[];B gV=[];B 5v=[];B 7W=J;B ne;B 8h=J;B 1f;B W;if(o.4H){o.4H.1k();o.4H=1Y}B n6;o.5T=[0.25,0.5,0.75,1,1.25,1.5,2];if(v.1f.UH==1&&L(v.1f.iG)){v.1f.iG=v.1f.iG.1N(/\\n/ig,\'\');o.5T=v.1f.iG.2q(",")}o.eF=7s(o.5T,1,H);o.al==3?o.al=o.eF:\'\';V(B i in o.5F){if(o.5F.2x(i)){!L(v.1f[i])?v.1f[i]=5:\'\';o[\'6z\'+i]=[\'+ \'+v.1f[i]+\'%\',\'&UI; \'+v.1f[i]+\'%\',(o.5F[i]*100+\'%\')]}}if(v.1o.eH==1&&o.1h.4x&&v.fp==1){v.1o.1k=0}B nB=J;B 9n=0;B mU=0;B fX=J;B sK=H;B iT;B bg=1t vT();B 1f;B 56=[];B tP=J;B tQ=J;B ik=0;B ce=[];if(v.hi.1r=="Q-2r"){v.hi.1r="Q"}V(B y in v){if(v.2x(y)){if(y.K("bW")==0&&v[y]){!L(v[y].tO)?v[y].tO=v[y].56:v[y].56=v[y].tO;if(56[v[y].56]){v[y].56+=v[y].56}56[v[y].56]=y;if(v.hi.1r!="Q"){if(v[y].1r=="Q-2r"){ce.2I([y,v[y].56]);tP=H}F{if(v[y].1r=="Q"||v[y].1r==1E){tP?tQ=H:\'\'}}}ik<v[y].56?ik=v[y].56:\'\'}}}if(tQ){ce.Kg(E(a,b){I a[1]-b[1]});V(B i=0;i<ce.S;i++){56[v[ce[i][0]].56]=1Y;v[ce[i][0]].56=ik+1;ik++;56[v[ce[i][0]].56]=ce[i][0]}}o.bM=v.1o.1k==1&&v.1o.EF==1;if(o.bM){o.1o=1Z("2e");o.1O.1R(o.1o);O(o.1o,{\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'Z\':\'100%\',\'1e\':\'100%\',\'5j\':\'1c 0.3s 6L-5k\',\'4I-3l\':\'1P\'})}B 3S=1Z("2e");if(o.bM){o.1o.1R(3S)}F{o.1O.1R(3S)}B bs;if(v.1o.UJ==1){bs=1t vT(H)}O(3S,{\'1r\':\'2C\',\'1a\':0,\'2P\':0,\'Z\':\'100%\',\'1e\':v.1o.h});3S.hq=E(){!o.1h.2c?o.U.Kr():\'\'};if(v.wM==1){3m(bg.c());3m(3S)}V(B i=1;i<56.S;i++){if(56[i]){B y=56[i];if(y){B 1d=v[y].1d;B UK=v[y].1k;if(o.1h.2c){if(1d=="1I"&&v[y].8d=="59"){}F{if(1d=="1I"&&v.UL==1&&o.1h.2c){v[y].hJ=0}F{if(1d=="1I"||(1d=="22"&&v.UM)){v[y].on=0}}}if(1d=="bO"){v[y].UN==1?v[y].on=0:\'\'}}F{if(1d=="bO"){v[y].UO==1?v[y].on=0:\'\'}}if(v[y].1k==1){if(v[y].LH==1&&L(v[y].nv)){2D[v[y].nv]?v[y].on=0:\'\'}if(v[y].LE==1&&L(v[y].nu)){!2D[v[y].nu]?v[y].on=0:\'\'}}if(v.wM==1){v[y].on=0}if(v[y].on==1){if(1d=="2F"||1d=="1I"){b[y]=1t EI(y,1d);b[y].2n(b[y].s("w"))}F{b[y]=1t La(y)}gV.2I(y);if(b[y].g("1d")=="1S"){if(b[y].s("1B")==\'\'){if(b[y].s("B")!=\'\'){if(!L(v[b[y].s("B")])){b[y].1Q("2i",J)}}F{b[y].1Q("2i",J)}}}if(b[y].g("1d")=="3J"){B lu=b[y].s("3a");if(lu){if(lu.K("2O:")==0&&lu.K(",0/1")>0){B z=lu.2q(",");3r(z[0].1i(4))==0?b[y].db(0):\'\'}if(7s([lu],"3b")){o.fk=H}}}b[y].1Q("1J",b[y].s("1J"))}}}}if(L(v.1f)){if(1A(9a)==\'E\'){1f=1t 9a("1f");v.1f.6Q==1?1f.1n():1f.1k()}F{o.UP=H}}if(L(v.W)){if(1A(9a)==\'E\'){W=1t 9a("W");if(L(o.W)){W.zs(o.W);if(v.W.mI==0||!L(v.W.mI)){v.W.6Q==0?W.1k():\'\'}F{W.1n()}if(v.W.Kk==1){W.1n()}}F{W.1k(1)}jV()}}lQ();rF();2n(H);4n();z8();sK=J;E Jj(R){B x=0;B UG=J;if(R){if(R.g("1d")==\'2F\'){x=5v.1a+R.s("4G")+R.g("Z")/2;if(5v.fY!=1Y){}F{5v.fY=[]}}F{if(5v.fY!=1Y){B cG=R.g("Z")+R.s("4M")+R.s("4G");if(hv(R)){cG=0}if(R.s("3h")==1&&!R.g("1n")){cG=0}if(R.s("bK")>0){cG=0}x=bg.g("w")-v.1o.iF*1-cG+R.g("Z")/2+R.s("4G");B i=0;5v.2r-=cG;V(i=0;i<5v.fY.S;i++){B cH=b[5v.fY[i]];if(cH.s("bK")>0){O(cH.c(),{"1a":(cH.g("x0")-cG)})}F{O(cH.c(),{"1a":(cH.g("x")-cG)})}cH.1Q("x0",cH.g("x"))}5v.fY.2I(R.g("19"));R.1Q(\'gA\',1)}F{if(R.s("3h")==1&&!R.g("1n")&&!R.g("g7")){if(R.g("1d")=="1I"){if(R.s("1k")==1&&R.s("hJ")==1&&fX){9n+=R.g("Z")+R.s("4G")+R.s("4M");fX=J}}}F{if(R.s("bK")>0){x=5v.1a+R.s("4G")+R.s("4M")}F{B 2H=J;if(R.g("1d")=="1I"){if(R.s("1k")==1&&R.s("hJ")==1&&!R.g("g7")){if(!o.eN&&!o.7C){2H=H;fX=J}F{if(!fX){9n-=R.g("Z")+R.s("4G")+R.s("4M");fX=H}}}}if(hv(R)){2H=H}if(!2H){5v.1a+=R.g("Z")/2+R.s("4G");x=5v.1a;5v.1a+=R.g("Z")/2+R.s("4M")}F{x=5v.1a}}}}}}I x};G.Kh=E(){lQ();if(W&&v.W.6Q&&!o.1w){W.1n()}};G.Kf=E(x){if(W){W.6w(x)}};G.Ho=E(){lQ()};E lQ(){if(o.fk){1A JN==\'E\'?o.3b=1t JN():\'\'}}E sV(R){B Z=o.22&&v.1o.l5===0?o.bb:o.2V;B 1e=o.4J;B aD=0;if(R!=bg){aD=Z/2+R.s("4G")-R.s("4M")}B eG=1e/2;B tc=R.g("Z");B lJ=R.g("1e");B p=R.s("1r");if(p.K("8o")>-1){aD=o.2V/2+R.s("4G")-R.s("4M")}if(p.K("1c")==0){eG=lJ/2+(R.s("JM")*o.4J/100)}if(p.K("2P")==0){eG=o.4J-(R==bg?lJ:lJ/2)-(R.s("Jn")*o.4J/100)}if(p.K("2r")>-1){aD=o.2V-tc/2+R.s("4G")-R.s("4M")-(R.s("Jf")*o.2V/100)}if(p.K("1a")>-1){aD=tc/2+R.s("4G")-(R.s("1F")=="1B"?0:R.s("4M"))+(R.s("j5")*o.2V/100)}if(p.K("9y")>-1){eG=-o.qa/2-(R.s("Jn")*o.qa/100)+(R.s("JM")*o.qa/100);aD=(p=="9y"?-1:1)*o.xo/2+(R.s("j5")*o.xo/100)+R.s("4G")-R.s("4M")}if(p.K("Q")>-1){B cx=Jj(R);aD=(bg?(bg.c()?5g(bg.c().hK):0):0)+cx;if(p=="Q-2r"){aD+=9n;R.g("1n")?o.ob++:\'\'}if(v.1o.1r=="1c"){eG=v.1o.h/2-(v.dy<0?v.dy:0)}F{eG=1e-v.1o.h/2}}I{x:aD,y:eG+R.s("bj")-R.s("dC")}}E JB(){o.6j?o.6j.2n():\'\'}E 2n(a3){B w=o.22&&v.1o.l5==0?o.bb:o.2V;B h=o.4J;if(v.1o.Us==1){v.1o.Jg=1X(v.1o.Jh)&&o.a1?v.1o.Jh:v.1o.tk;v.1o.iF=o.2V*v.1o.Jg/100}F{v.1o.iF=v.1o.tk}O(bg.c(),{\'1c\':(v.1o.1r=="1c"?0:o.4J-v.1o.h)-v.dy});bg.1Q("y0",(o.4J-v.1o.h-v.dy));if(v.1o.l5==0&&bg){O(bg.c(),{\'Z\':w,\'1a\':0,\'2Q-1a\':0});bg.1Q("w",w);if(o.22){O(bg.c(),{\'1a\':\'50%\',\'2Q-1a\':-w/2})}}5v={"1a":v.1o.iF*1,"2r":(bg.g("w")-v.1o.iF*1)};B tx=J;if(!bg.g("1n")){bg.1Q("2i",H);tx=H}B 19;o.ob=0;V(B i=0;i<gV.S;i++){19=gV[i];if(b[19]){B cc=sV(b[19]);if(cc){if(b[19].s("6e")=="1r"){if(L(o.7q[19])){if(b[19].g("x0")==cc.x&&b[19].g("y0")==cc.y){3i}F{o.7q[19].XY(b[19].g("x0"),cc.x,b[19].g("y0"),cc.y)}}}b[19].1Q("x0",cc.x);b[19].1Q("y0",cc.y);if(b[19].s("3h")==1&&!b[19].g("1n")&&!a3){vk(b[19])}F{O(b[19].c(),{"1r":"2C","1a":b[19].g("x0"),"1c":b[19].g("y0")})}}}}if(o.IC){o.ob>0?bg.1Q("Iv",o.ob*v.1o.Io):\'\'}if(tx){bg.1Q("2i",J)}9n=0;V(19 in b){if(b.2x(19)){if(b[19].s("1r")=="Q-2r"&&b[19].g("1d")!="2F"&&9n>-1){9n=5v.2r-5v.1a}if(b[19].g("1d")=="2F"&&bg){B cQ;B ml=b[19].s("4G")+b[19].s("j5")*o.2V/100;B mr=b[19].s("4M")+b[19].s("Jf")*o.2V/100;if(b[19].s("Ug")==1){if(b[19].s("Ur")==1){cQ=(o.2V*b[19].s("w")/100)-ml-mr}F{cQ=b[19].s("w")}}F{if(b[19].s("1r").K("Q")>-1){cQ=5v.2r-5v.1a-ml-mr;O(b[19].c(),{"1a":(5g(bg.c().hK)+5v.1a+ml+cQ/2)});9n=-1}F{cQ=bg.g("w")-ml-mr;if(bg.c()){O(b[19].c(),{"1a":(5g(bg.c().hK)+ml+cQ/2)})}}}b[19].1Q("x0",b[19].g("x"));b[19].2n(cQ)}}}if(1f){jZ(1f)}if(W){jZ(W)}if(nB||o.22||mU!=9n){4n()}}E vk(b){B 1a=0;B 1c=0;if(b.s("1r").K("2r")>-1&&b.s("1r").K("Q")==-1){1a=o.2V+b.g("Z")+10}if(b.s("1r").K("1a")>-1){1a=-b.g("Z")-10}if(b.s("1r").K("1c")>-1){1c=-b.g("1e")*2}if(b.s("1r").K("2P")>-1||b.s("1r").K("Q")>-1){1c=o.4J+b.g("1e")+b.g("Z")+10}if(1a>0){O(b.c(),{"1a":1a})}if(1c>0){O(b.c(),{"1c":1c})}}E jZ(x){B 1c=-4i;x.k0();B y=o.4J-v.1o.h*(x.s("1r").K("1c")>-1?1:2);if(x==W&&v.tR==1){y=o.4J}B nV=(o.1h.2c&&o.4J<U7&&L(x.s("J6"))?x.s("J6"):x.s("v3"))*1;B i2=y-(o.22&&!o.1h.2c?100+nV:nV)-(x==W&&nV==0?x.s("bj"):0);i2<100?i2=100:\'\';O(x.c(),{\'5L-1e\':i2});x.co()?O(x.co(),{\'5L-1e\':i2}):\'\';if(x.g("1n")){1c=o.4J/2-x.g("1e")/2+x.s("bj")-x.s("dC");if(x.s("1r").K("1c")>-1){1c=x.s("bj")-x.s("dC")}if(x.s("1r").K("2P")>-1){1c=o.4J-(v.1o.1r!=\'1c\'?v.1o.h:0)-x.g("1e")+x.s("bj")-x.s("dC")}1c<0?1c=0:\'\'}if(x.g("19")=="1f"&&o.cn){B J5=o.2V-x.g("Z")-x.s("4M");if(o.cn>J5){O(x.c(),{"1r":"2C","2r":x.s("4M"),"1a":"2A","1c":1c})}F{O(x.c(),{"1r":"2C","1a":o.cn,"2r":"2A","1c":(o.jQ<1c?o.jQ:1c)})}}F{if(x.s("1r").K("2r")>-1){O(x.c(),{"1r":"2C","2r":x.s("4M")-x.s("nT"),"1a":"2A","1c":1c})}F if(x.s("1r").K("1a")>-1){O(x.c(),{"1r":"2C","1a":x.s("4G"),"2r":"2A","1c":1c})}F{if(x.g("19")=="W"&&x.s("3B")==1){O(x.c(),{"1r":"2C","1a":o.2V/2-x.g("Z")/2+x.s("4G")/2-x.s("4M")/2,"1c":1c})}F{B l=o.2V/2-x.g("Z")/2+x.s("4G")-x.s("4M");O(x.c(),{"1r":"2C","1a":(l>0?l:0),"1c":1c})}}}x.aC()};G.fC=E(19){B R=b[19];B a=R.g("1d");if(a){B d=1t 6U();o.aF=d.ae();if(a&&a!=""){4Y(R);a=="3K"?o.J4=1:\'\';a=="1q"?o.J4=0:\'\'}}mg()};G.v9=E(z,x,y){V(B 19 in b){if(b.2x(19)){if(b[19].s(z)==x){b[19].1Q(y?"5W":"3m")}}}};G.zE=E(x,s){B y=6h(s,x);I y};G.GC=E(){ot()};E ot(){if(o.3o&&v.J3==1){o.U.6n();v.J3=0}if(v.1M.on==1&&v.1M.2K==1&&v.1M.vb==1){7F(\'1q\',1)}js("IW")}E uK(){if(v.1M.on==1&&v.1M.2K==1&&v.1M.vb==1){7F(\'1q\',0)}js("IZ")}E 4Y(R,1F){o.d8=H;n6=R;B a=R.g("1d");if(a=="1q"){o.U.2v();ot()}F{if(a=="3K"){o.o2=0;o.U.2Z();uK()}if(a=="2H"){o.U.og()}}if(a=="IY"){o.U.3N(0,J)}if(a=="22"){!o.5d?o.U.aq():\'\'}F{if(a=="Jl"){o.U.8I()}}if(a=="2F"){B ld=o.P.1m();B lt=R.g("2l")*ld;if(v.4t>0){ld-=v.4t*1;lt=R.g("2l")*ld+v.4t*1}if(v.hO>0){if(v.hO/ld<=1-R.g("2l")){I}}js(a,lt);o.U.3N(lt,H);if(o.3i){o.3i.vf(lt,ld);o.2b>0?o.2b=1E:\'\'}js("o6",lt)}if(a=="1I"){B x=R.g("2l");x<0.U8?x=0:\'\';x>1?x=1:\'\';if(R.s("8d")=="59"){x=41(x*o.5T.4N(-1)[0]).vY(1);o.U.91(x,1)}F if(R.s("8d")=="qO"){o.P.uN(x)}F{if(o.4T&&v.tC==1){3x.7V("t6",x);if(R.g("2l")>0||o.1h.7t||v.mC==0){3x.ul("kC")}F{3x.7V("kC",1)}}o.U.42(x)}}if(a=="51"){o.eB?o.7C=H:\'\';if(o.4T&&!o.1h.7t&&v.mC==1){3x.7V("kC",1)}o.U.5b();if(v.1M.2K==1&&v.1M.J9==1){7F(\'51\',0)}}F{if(a=="9q"){o.eB?o.7C=H:\'\';if(o.4T){3x.ul("kC")}o.U.6n();if(v.1M.2K==1&&v.1M.J9==1){7F(\'51\',1)}}}if(a=="qk"){o.P.U9()}if(a=="1J+"){o.P.e7(0.1)}if(a=="1J-"){o.P.e7(-0.1)}if(a=="1J"){o.P.e7(0)}if(a=="5l"){3r("xR");R.1Q("qD",1);R.1Q("hw",1)}if(a=="3b"){js("3b");rC()}if(a=="1f"){o.cn=1E;if(1f){if(!1f.g("1n")){1f.1n()}F{1f.1k()}}}if(a=="W"){if(o.gd==a){I}o.Q.jP()}if(a=="5J"){o.Q.aV()}if(a=="ep"){o.Q.e1()}if(a=="3J"){if(R.s("ea")==1&&R.s("3a")!=""){B x=4z(R.s("3a"));if(o.gd==a+x){I}if(x.K(\'{18}\')>-1){x=x.1N(\'{18}\',(L(o.3i)?o.3i.bo().t:o.P.18()))}if(x.K(\'{3e}\')>-1){x=x.1N(\'{3e}\',o.P.ci())}if(x.K(\'{1S}\')>-1){x=x.1N(\'{1S}\',v.1S.1N(/,/ig," "))}if(x=="5n"){o.P.gz()}if(x=="ha"){o.ak?o.ak.6w():\'\'}if(x.K(\'7I\')==0){if(R.s("7I")>0){o.U.3N(o.d7?o.d7.Ua():R.s("7I"))}}if(x.K(\'Ub\')==0){if(o.d7){o.d7.Uc()}}if(x=="Ud"){o.U.3N(R.s("j5")*o.P.1m()/100);!o.1q?o.U.2v():\'\'}R.s("Jm")==1?o.U.2Z():\'\';B y=x.2q(",");if(x.K("2O:")==0){B z=x.1i(4).2q(";");V(B i=0;i<z.S;i++){y=z[i].2q(",");if(y.S>1){if(y[0]==\'3F\'){if(v.1M.2K==1&&v.1M.Ue==1){7F(\'3F\',y[1]>0?1:0)}}3r(y[0],y[1],R);js("o6",y[1]);y[1]==\'0/1\'||y[1]==\'1/0\'?zJ():\'\'}F{if(y[0]=="JL"){B ss=3r(y[0]);if(ss){if(ss.K("28")>-1){if(v.U6==1){B 3I=26.1Z(\'3I\');3I.7i(\'3y\',ss);O(3I,{1r:"uw",2r:(L(v.oA)?v.oA:20),2P:(L(v.oA)?v.oA:20),Z:0,5j:"Z 0.5s cr-Uf(.75,-0.5,0,1.75)"});3I.C.5a=JK;26.bH.1R(3I);1v(E(){O(3I,{Z:(L(v.JJ)?v.JJ:4C)})},1);3I.hq=E(){G.4l.3j(G)}}if(v.Uh==1){B a=1Z("a");a.9s=ss;a.6W=y[0]+".iI";a.2l()}}}F{1l(y[0]+" 2w")}}F{3r(y[0],1E,R);if(y[0]=="1q"){ot()}if(y[0]=="3K"){uK()}}}}}F{if(x.K("js:")==0){if(x.K("(")>0&&x.K(")")>0){2f(x.1i(3))}F{2f(y[0].1i(3)+\'(\'+(L(y[1])?\'"\'+y[1]+\'"\':\'\')+(L(y[2])?\',"\'+y[2]+\'"\':\'\')+\')\')}}if(x.K("1b:")==0){sY(x.1i(6),o.P.18())}if(x.K("3b:")==0&&o.3b){o.3b.2O(x.1i(6))}if(x.K("sG:")==0&&o.5c){3r("sG",x.1i(7))}if(x.K("3T")==0||x.K("/")==0||x.K("?")==0||x.K("Y:")==0){x.K("Y:")==0?x=x.1i(4):\'\';1y.6w(x,R.s("JI"))}if(x.K("6W")==0){o.U.jG()}if(x=="2O:9e"){o.P.ec()}}if(x.K("1f#")>-1){if(1f){B si=x.1i(9).2q(",");if(1f.g("1n")&&1f.g("6w")==si[0]){o.cn=1E;o.jQ=1E;1f.1k()}F{o.cn=R.g("x")-R.g("Z")/2;o.jQ=R.g("y")+R.g("h");V(B i=0;i<si.S;i++){i==0?1f.1n():\'\';1f.6w(si[i])}W?W.JH():\'\'}}}if(x.K("1f:")>-1&&v.1f.Ui==1){if(!o.4H){o.4H=1t Uj()}if(v.1f.hm==1){if(1F=="6H"){o.4H.1n(x)}F{o.4H.iZ(x)}}F{if(!1F){o.4H.iZ(x)}}}if(x=="FM"){o.U.go();o.w8=0;R.1Q("3m");B bl=6h("3a","4E");if(bl){bl.1Q("3m")}}if(x=="4E"){R.6i("OK");R.s("je")?1y.8N.9s=4z(R.s("je")):\'\'}}}};G.1S=E(t){B y=J;V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="1S"){if(b[x].s("B")==t||t=="1S"){if(b[x].s("1k")==1&&b[x].s("vy")==1&&o.1q){y=H}if(v[t]==\'\'||y){b[x].1Q("2i",J)}F{b[x].1Q("2i",H)}b[x].6i(v[t])}}}}rz()};G.JG=E(){rz()};G.rw=E(){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="3J"){if(b[x].s("1F")=="1B"){b[x].8v()}}}}};E rz(){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="3J"){if(b[x].s("1F")=="1B"){b[x].Fz(H)}}}}}E rC(){if(L(o.3b)){o.3b.jw()}}G.JF=E(){rC()};G.KR=E(){if(v.1S!=\'\'){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="1S"){B y=J;if(!b[x].g("1n")){y=H;b[x].1Q("2i",H)}b[x].6i(v.1S);if(y){b[x].1Q("2i",J)}}}}}};G.rE=E(){rF()};E rF(){if(v.8W){if(1A(v.8W)=="3u"){V(B x in v.8W){if(v.8W.2x(x)){iE(x,v.8W[x])}}}}};G.JE=E(y,z){iE(y,z)};G.rK=E(x){if(b[x]){b[x].yt()}};G.JD=E(){V(B x in b){if(b.2x(x)){if(b[x].g("w1")){b[x].yt()}}}};E iE(y,z){if(y){V(B x in b){if(b.2x(x)){if(b[x].g("w1")){if(b[x].s("4P")==y){if((!b[x].g("1n")||b[x].s("3h")==1)&&!hv(b[x])){b[x].1Q("Gf");b[x].1Q("2i",H)}b[x].iE(z)}}}}}};G.4Z=E(){2n()};G.tI=E(){2n();JB()};G.rj=E(){2n(H)};G.nf=E(){jZ(1f)};G.k0=E(){jZ(W)};G.2v=E(){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="1q"){b[x].On()}if(b[x].s("pp")==1){b[x].vP(1)}if(b[x].s("wk")==1){b[x].f8()}}}o.cm?o.cm.1k():\'\';rc();if(o.6j){o.6j.2v()}o.1q=H;4n(3)};G.2Z=E(){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="3K"||b[x].g("1d")=="2H"){b[x].jc()}if(b[x].s("pp")==1){b[x].vP(0)}if(b[x].s("wk")==1){b[x].fj()}}}if(W){if(!o.es&&v.W.FS==1&&!W.4D()){W.1n()}}o.1q=J;G.8k();4n();if(v.1o.1k==1&&v.1o.gO==1){if(e3()){}F{da(H)}}if(o.P.18()>0){B y=6h("1d","5l");if(y){y.1Q("qD",0.5);y.1Q("hw",0)}}if(o.6j){o.6j.2Z()}};G.5b=E(){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="51"){b[x].On()}G.42(0)}}4n(3)};G.6n=E(){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="9q"){b[x].jc()}}}if(v.1I<0.1){v.1I=0.5;o.U.42(v.1I)}F{G.42(v.1I)}4n(3)};G.42=E(1I,y){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="1I"){if(!b[x].s("8d")||b[x].s("8d")=="1I"){b[x].6G(1I,1,(y=="no"?y:H))}}if(b[x].g("1d")=="51"){b[x].xY(1I)}}}4n(3)};G.aq=E(){B bl=6h("1d","22");if(bl){bl.On();bl.1Q("1J",bl.s("1J"))}4n();nB?1v(4n,4e):\'\';if(o.22&&o.FZ){if(o.1h.jR||o.1h.tv){1v(2n,10)}}gU();r7()};G.8I=E(){B bl=6h("1d","22");if(bl){bl.jc()}2n();3D(o.i9);4n();r7()};E r7(){if(o.cn){o.cn=1E;o.jQ=1E;1f.1k()}}G.8t=E(){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="1q"){b[x].xP()}}}};G.ve=E(){4n()};G.IT=E(){rc()};E rc(){if(W){if(W.g("1n")&&v.W.eu==1){o.Q.gC()}}}E yL(){if(o.1h.2c){o.4j=H;2B(o.Jz);o.Jz=1v(E(){o.4j=J},4e)}}E 4n(hr){if(hr==3){yL()}V(B x in b){if(b.2x(x)){if(b[x].g("1d")!="bO"){cd(b[x])}}}cd(bg);if(mU!=9n){mU=9n;2n()}if(o.bM){gR(!o.g4&&!o.4j&&!o.22&&o.1q&&v.1o.eH!=1&&!o.5d)}};E ib(){B 1n=8h&&v.1o.j6==1;if(v.1o.1k==1){if(!o.1q&&v.1o.gO==1){if(e3()){}F{1n=J}}}if(1n){V(B x in b){if(b.2x(x)){if(b[x].g("1d")!="bO"){cd(b[x],J)}}}O(o.1O,{"6Y":"6P"});o.iQ=H;cd(bg,J);if(bg.g("1n")){jf()}gR(J)}if(o.uc){2n(H);o.uc=J}}E da(){if(o.1h.2c&&o.4j){I}B 1k=o.1q&&v.1o.j6==1&&!o.3A;if(o.dq&&v.1o.Uk==1){1k=J}if(!o.1q&&v.1o.1k==1&&v.1o.gO==1){if(e3()){}F{1k=H}}B n1;if(W){if(W.g("6w?")){n1=H}}if(1f){if(1f.g("1n")){n1=H}if(1f.g("1n")&&o.n2){1k=J}}if(n1&&v.1o.Ul==1){B m=v.1o.Um;if(m==1&&o.1h.2c){I}F{if(m==0||!L(m)){I}}}if(o.5d){1k=J}if(1k){V(B x in b){if(b.2x(x)){if(b[x].g("1d")!="bO"){cd(b[x],H)}}}cd(bg,H);if(!bg.g("1n")){8h=H;o.P.sq();if(o.1q){O(o.1O,{"6Y":"1P"});o.iQ=J}}gR(H)}}E gU(){if(v.1o.j6==1){if(v.1o.eH==1&&!o.22&&!o.bz){}F{3D(o.i9);o.i9=7u(da,((v.1o.7Z>0?v.1o.7Z:v.1o.jq)*2h))}}}E e3(){I o.4j&&v.1o.Uo==1&&!o.1h.2c}E cd(R,cz){B 1k=J;B 1n=J;B bI=J;if(v.1o.1k==1){if((!o.g4&&!o.4j&&!o.22&&o.1q&&v.1o.eH!=1&&!o.5d)||(o.22&&8h&&!o.iQ&&v.1o.Up!=1)||(o.U.fA()&&o.7l&&!o.4j)){1k=H;1n=J;bI=H}F{1k=J;1n=H}if(L(cz)&&!o.5d){1k=cz;1n=!1k}if(o.bM&&(R.s("1r").K("Q")==0||R.s("1d")=="2F")){1k=J;1n=H}if(v.1o.gO==1&&!o.1q){if(e3()){}F{1k=H;1n=J;bI=J}}if(v.1o.Uq==1&&!o.d8){1k=H;1n=J;bI=H}if(v.1o.UQ==1&&!o.7m&&o.1q){1k=J;1n=H}}F{if(R.s("1k")!=1){1n=H}}if(1n&&!o.iQ){O(o.1O,{"6Y":"6P"});o.iQ=H}B a=R.g("1d");if(a=="3J"&&R.s("1r").K("Q")==-1||R.s("Jv")==1){1k=J;1n=H}if(o.5d){if(a=="2F"){if(o.P.1m()==-1){1k=H;1n=J}}}B sS=J;B hp=hv(R);if(R.s("1k")==1){if(R.s("FG")==1){if(bI||cz||(o.1q&&!o.4j)){!bI&&!cz?\'\':hp=H}}if(R.s("Jv")==1){if(!bI&&!cz){hp=H}}if(R.s("Ut")==1){if(o.1q&&!o.4j){hp=H}}if(R.s("LQ")==1||R.s("LS")==1||R.s("Mc")==1){nB=H}}if(hp){1k=H;1n=J}F{!1k?1n=H:\'\'}if(R.s("1d")=="1I"){if(R.s("1k")==1&&R.s("hJ")==1&&!R.g("g7")){1k=H;1n=J;if(!bI&&(o.7C||o.eN)&&!cz&&R.s("dQ")!=1){1k=J;1n=H}F{sS=H}}}if(o.9m||(!o.1w&&v.1o.1k==1&&v.1o.nw==1)||(!o.7m&&v.1o.1k==1&&v.1o.Mh==1)||(!o.22&&v.1o.1k==1&&v.1o.UR==1)){if((o.9m&&R.g("19")=="mk"&&R.s("Mb")!=1)||dn(R.s("1r"),["2P","Q"])){1k=H;1n=J}if(v.1o.eH==1&&!o.22){1k=J;1n=H}}if(1f){if(1f.g("1n")&&v.1f.6Q!=1){bI=J;cz=J}}if(W&&o.2J){if(v.W.Vg==1){if(o.2J.sO()){I}}}if(a=="3b"){if(L(o.3b)){if(o.3b.4D()){1k=H;1n=J;R.1Q("6e","1P")}}}if(a=="W"||a=="5J"||a=="ep"||R.s("Jr")==1){if(W){if(W.4D()&&R.s("Jr")!=0){1k=H;1n=J;R.1Q("6e","1P")}}F{1k=H;1n=J}}if(o.Vi==1){1k=H;1n=J}if(sS){B cc=sV(R);if(cc){cc.y>0?R.1Q("y0",cc.y):\'\';O(R.c(),{"1r":"2C","1c":R.g("y0")})}}if(1k){8F(R,(sK?H:J))}if(1n){Ma(R)}if(R==bg){if(!1k&&1n){jf();5W(3S);bs?bs.1Q("1D",bs.s("a")):\'\';8h=J;iT==0?js("ui",1):\'\';iT=1;o.6p&&o.az?o.6p.1n():\'\'}if(1k&&!1n&&!o.5d){o.P.sq();3m(3S);if(bs){if(v.1o.Vj==1&&!o.1q){}F{bs.1Q("1D",0)}}8h=H;iT==1?js("ui",0):\'\';iT=0;o.6p&&o.az?o.6p.1k():\'\'}if(1f){if(1f.tb()){if(!1f.g("1n")){1n&&!1k?1f.1n():\'\'}F{!1n&&1k?1f.1k(2):\'\'}}}if(W){if(v.W.6Q==1&&!W.4D()){if(1n||o.9m){if(v.W.KH==1&&o.22){}F{if(!W.g("1n")){if(v.W.LX==1){!o.1q&&!o.es?W.1n():\'\'}F{W.1n()}}}}F{if(1k&&W.g("1n")){W.1k()}}}}}};E hv(R){B x=J;B a=R.g("1d");if(R.s("1k")==1){if(R.s("vy")==1){o.1q||o.es?x=H:\'\'}if(R.s("gO")==1){if(R==bg&&e3()){}F{!o.1q&&!o.es?x=H:\'\'}}if(R.s("Vk")==1){o.7l?x=H:\'\'}if(R.s("gs")==1){x=H}F{if(R.s("Vl")==1){if(o.1h.gr){R.1Q("gs",1);x=H}}if(R.s("Vm")==1){if(o.1h.2c){R.1Q("gs",1);x=H}}}if(R.s("LS")==1){if(o.2V>R.s("LR")){R.1Q("dQ",1);x=H}F{R.1Q("dQ",0)}}if(R.s("Vn")==1&&!7W){x=H;o.nh=1}if(R.s("Vo")==1){x=H;if(L(o.3d)){if(o.4q&&!R.g("on")){R.On()}if(!o.4q&&R.g("on")){R.jc()}x=J}}if(R.s("Vp")==1&&!o.9i){x=H}if(R.s("Vq")==1&&o.9i){x=H}if(R.s("Vh")==1&&7W){x=H;o.nh=1}if(R.s("LQ")==1){if(o.2V<=R.s("LP")){R.1Q("dQ",1);x=H}F{R.1Q("dQ",0)}}if(R.s("Vr")==1){o.1w?x=H:\'\'}B t=o.P.18();B d=o.P.1m();if(R.s("FL")==1&&R.s("LO")>0){if(t>=R.s("LO")){x=H}}if(R.s("FK")==1&&R.s("LM")>0){if(t<R.s("LM")){x=H}}if(R.s("FJ")==1&&R.s("LA")>0){if(t<d-R.s("LA")||d==0){x=H}}if(R.s("Vt")==1){if(W){if(!W.bq()){x=H}}}if(R.s("Vu")==1){if(o.1w||!o.3i||o.P.5Y()){if(R.s("nw")!=1){x=H}}if(o.3i){if(o.3i.bo().t==0){x=H}}}if(R.s("nw")==1){!o.1w?x=H:\'\'}if(R.s("mL")>0){x=H}if(R.s("LH")==1){if(L(R.s("nv"))){2D[R.s("nv")]?x=H:\'\'}}if(R.s("Vv")==1){if(!L(R.s("8W"))){x=H}}if(R.s("LE")==1){if(L(R.s("nu"))){!2D[R.s("nu")]?x=H:\'\'}}if(R.s("Vw")==1&&o.1h.4x){!o.1w||o.nr?x=H:\'\'}if(R.s("Vx")==1){!o.P.7l()?x=H:\'\'}if(R.s("Vy")==1){!o.P.5Y()?x=H:\'\'}if(R.s("Vz")==1){!o.4j?x=H:\'\'}if(R.s("VA")==1){!o.22?x=H:\'\'}if(R.s("Mc")==1){o.22?x=H:\'\'}if(R.s("VB")==1){!o.3o?x=H:\'\'}if(R.s("Vs")==1){o.P.5Y()&&o.P.ci().K("?ye")==-1?x=H:\'\'}if(R.s("EN")==1){6d(o.29)?x=H:\'\'}if(R.s("Mh")==1){!o.7m?x=H:\'\'}if(R.s("Vf")==1){o.7m?x=H:\'\'}if(R.s("V4")==1){o.nC?x=H:\'\'}if(R.s("Ve")==1){!o.nC?x=H:\'\'}if(R.s("Ga")==1){if(R.g("jt")){x=H}}if(R.s("UU")==1){!o.ab?x=H:\'\'}if(R.s("UV")==1){o.ab?x=H:\'\'}if(R.s("UW")==1){if(v.4A==1&&v.eD==1){if(o.2p=="4W"&&!L(v.29)&&v.zF==0){if(!o.1w||o.P.7P()=="7l"){if(v.29==\'\'){}F{x=H}}}}}}if(a=="3J"){B lu=R.s("3a");if(lu){if(lu=="2O:5n"||lu=="5n"){if(!o.5n&&!o.j2&&!o.UX){x=H}}if(lu=="2O:9e"){if(!o.9e||(!o.1w&&v.4A==0)){x=H}}if(lu=="2O:Ml"){if(L(o.3d)){if(o.3d.Mj()&&o.1U&&o.4q&&!x){}F{x=H}}F{x=H}}if(lu=="2O:Mi"){if(!o.nC){x=H}}if(lu.K("6b")>-1){if(!o.6b){x=H}}if(7s([lu],"7I")&&!7s([lu],"js:")&&R.s("gs")!=1){B sk=J;if(L(v.7I)){if(!o.d7){1A M2==\'E\'?o.d7=1t M2():\'\'}if(o.d7){sk=o.d7.yW(R)}}!sk?x=H:\'\'}}}if(a=="W"||a=="5J"||a=="ep"){if(W){if(W.4D()){x=H}}F{x=H}}if(a=="1f"){if(1f){if(1f.4D()){x=H;o.2p!=\'1C\'?R.1Q("6e","1P"):\'\'}}F{x=H}}if(R.g("1F")=="1B"){if(R.g("S")==0){x=H}}if(R.g("1f#")){if(!R.g("1Q#4r")){x=H}}if(R.s("3O")==1){B cb=dg("UY"+v.id);if((o.P.1m()==0&&o.P.18()==0)||!o.4v||!6d(cb)||!o.UZ){x=H}}if(R.s("w0")==1){!x?R.1Q("w0",1):\'\'}if(a=="1m"){if(o.P.5Y()&&R.s("V0")!=1){x=H}}if(R.g("19")=="mk"){if(o.9m&&o.1h.bF&&R.s("Mb")!=1){x=H}}I x}E 8F(R,z5){if(R.g("1n")){if(o.bz||R.s("6e")=="1P"||z5){R.1Q("2i",J)}F{M9(R)}R.1Q("1n",J)}};E Ma(R){if(!R.g("1n")){if(R.s("6e")=="1P"||o.bz){R.1Q("2i",H);if(o.bz){R.1Q("1D",1)}if(R.g("1d")=="1I"){if(o.eB){vk(R)}}}F{M8(R)}if(R.s("1d")=="1I"){o.Q.42(o.3o?0:v.1I)}if(R.s("1d")=="2F"){o.U.zd()}R.1Q("1n",H)}};E M9(R){zk(R.g("19"));B 5O="f0|";B 5u="0|";B 1k=1;B a=R.s("6e");if(R.s("M7")==1){5O=\'\';5u=\'\'}B p=R.s("1r");B eL=R.g("3w");1X(R.s("nK"))?p=R.s("nK"):\'\';dn(p,[\'2P\'])&&o.bM?p="":\'\';if(a=="1J"){5O+="1J|";5u+="0|"}if(a=="1r"){if(p.K("2r")>-1&&p.K("Q")==-1){5O+="x|";5u+=5g(o.2V+R.g("Z")/2*eL)+"|"}if(p.K("1a")>-1){5O+="x|";5u+=5g(-R.g("Z")/2)*eL+"|"}if(p.K("1c")>-1){5O+="y|";5u+=(-R.g("1e")/2)*eL+"|"}if(dn(p,["2P","Q","9y"])){5O+="y|";if(R.g("1d")=="2F"||R.g("1d")=="1I"){5u+=5g(o.4J+R.s("h")+(R.s("h")<20?20-R.s("h"):0))+"|"}F{5u+=5g(o.4J+R.g("1e")/2)+"|"}}if(p=="8o"){5O+="1J|";5u+="0|"}}B m=1t 5B({"mc":R,"me":R.g("19"),"1F":5O.1i(0,5O.S-1),"to":5u.1i(0,5u.S-1),"1k":1k})};E M8(R){zk(R.g("19"));B 5O="";B 5u="";B a=R.s("6e");B p=R.s("1r");1X(R.s("nK"))?p=R.s("nK"):\'\';if(R.g("1D")!=1&&R.s("M7")!=1){5O="f0|";5u=(R.g("19")==\'bg\'?v.1o.a:"1")+"|"}if(a=="1J"){if(R.g("3w")!=R.s("1J")){5O+="1J|";5u+=R.s("1J")+"|"}}if(a=="1r"){if(p=="8o"){if(R.g("3w")!=R.s("1J")){5O+="1J|";5u+=R.s("1J")+"|"}}F{if(p.K("Q")>-1||p=="2P"){if(R.g("y")!=R.g("y0")){5O+="y|";5u+=R.g("y0")+"|"}}F{5O+="x|y|";5u+=R.g("x0")+"|"+R.g("y0")+"|"}}}if(5O!=""&&5u!=""){B m=1t 5B({mc:R,me:R.g("19"),1F:5O.1i(0,5O.S-1),to:5u.1i(0,5u.S-1),1n:1})}F{R.1Q("2i",H)}};G.lo=E(19,1F,z5){B 4Z=J;B 2H=J;B R=b[19];B 1d=R.g("1d");B 3a=R.s("3a");if(1F=="6H"){if(o.eB){if(1d=="1I"||1d=="51"||1d=="9q"){if(!R.g("g7")){o.7C=H;o.eN=H;4Z=H;4n();if(v.hi.M6==1){B bl=6h("1d","2F");if(bl){3m(bl.c())}}}}}if(1f&&v.1f.hm==1&&((1d=="1f"||3a.K("M5")==0)||3a.K("1f:")==0)){2B(o.hn);if(!1f.g("1n")||n6!=R){4Y(R,1F);o.gd=1d+3a;1v(E(){o.gd=1Y},4e)}}if(W&&v.W.hm==1&&1d=="W"){2B(o.zg);if(!W.g("1n")||n6!=R){4Y(R,1F);o.gd=1d;1v(E(){o.gd=1Y},4e)}}}if(1F=="5k"){if(o.eB){if(1d=="1I"||1d=="51"||1d=="9q"){o.7C=J;o.eN=H;1v(E(){if(!o.7C){o.eN=J;V(B x in b){if(b.2x(x)){B a=b[x].g("1d");if(!8h){if(a=="1I"&&!b[x].g("g7")){8F(b[x]);2n()}}if(a=="2F"){if(v.hi.M6==1){5W(b[x].c())}}if(a=="51"||a=="9q"){if(v.EU.IV==1){b[x].ER()}}}}}},4e)}}if(1d=="2F"){o.U.6G(1)}if(v.1f.hm==1&&((1d=="1f"||3a.K("M5")==0)||3a.K("1f:")==0)){2B(o.hn);o.hn=1v(E(){if(!o.3A){cL(1)}},(v.1f.hx>0?v.1f.hx*2h:2h))}if(W&&v.W.hm==1&&1d=="W"){2B(o.zg);o.zg=1v(E(){if(!o.3A){W.g("1n")?W.1k(1):\'\'}},(v.W.hx>0?v.W.hx*2h:2h))}}if(4Z){1v(2n,10)}};G.nQ=E(){if(o.5t&&!o.22&&!o.bz){o.U.5t(J);o.5t=J}if(o.29){if(v.mZ>-1&&6d(o.29)){O(o.29,{1D:v.mX})}}if(o.1q&&v.Lx==1&&v.V1!=0){o.U.2Z()}if(v.1o.7Z>0){2B(o.L8);o.L8=1v(4n,v.1o.7Z*2h)}F{4n()}};G.Iy=E(){if(o.29){if(v.mZ>-1&&6d(o.29)){O(o.29,{1D:v.mZ})}}if(!o.1q&&v.Lx==1){o.U.2v()}2n();4n();gR(J)};G.fT=E(bJ,bL){B y;V(B x in b){if(b.2x(x)){y=b[x].g("1d");if(y=="2F"||y=="1I"){b[x].fT(bJ,bL)}}}};G.nZ=E(){if(v.1o.1k==1){if(v.1o.eH==1&&!o.22){I}if((!o.4j||o.1h.2c)&&o.P.7P()=="8r"){o.4j=H;4n(3);yL()}if(v.1o.j6==1){ib();gU()}gR(J)}};G.fM=E(bJ,bL){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="2F"||b[x].g("1d")=="1I"){b[x].fM(bJ,bL)}}}};G.k8=E(18,1m,Ly){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="2F"){b[x].6G(18,1m,Ly)}if(b[x].g("1d")=="18"){nl(b[x],18,1m)}if(b[x].s("FX")==1){b[x].ES(18,1m)}if(b[x].s("FH")==1){if(b[x].s("3a")=="FI"||b[x].s("3a")=="ah"){1A L3==\'E\'?L3(b[x]):\'\'}if(b[x].s("FF")==1&&!b[x].g("1n")&&8h){}F{if(b[x].g("1n")==hv(b[x])){4n();2n()}}}}}};E gR(x){if(v.1o.1k==1){x?cL():\'\';if(o.bM){if(!o.1q&&v.1o.gO==1){if(e3()){}F{x=H}}if(x&&!o.zI){O(o.1o,{"1c":bg.h()})}if(!x&&o.zI){O(o.1o,{"1c":0})}o.zI=x}}}E jf(){8h=J;o.P.jf();if(o.zi){o.zi=J;2n();1v(2n,dW)}}E nl(x,18,1m){if(v.4t>0){18-=v.4t*1;1m-=v.4t*1}B y=3V(18);if(x.s("ma")=="1"){y=3V(1m-18)}if(x.s("V2")=="1"){if(x.s("UT")=="1"){y=y+(1m>0?\' \'+2M(x.s("V3"))+\' \'+3V(1m):\'\')}F{18==0?y=3V(1m):\'\'}}x.6i(y)}G.zt=E(18,1m){B x=6h("1d","2F");if(x){x.HV(18,1m)}};G.ku=E(y){if(o.P.1m()>0){B x=6h("1d","2F");if(x){x.ku(y)}}};G.9t=E(){if(!7W){if(v.gg==1){2B(ne);ne=1v(9t,4e)}F{9t()}}};E 9t(){if(!7W){js("V5");7W=H;B x=6h("1d","bO");if(x){x.EO();if(v.Eu==1&&o.1q){2B(o.KX);o.KX=1v(KV,(v.KW>0?v.KW:1)*2h)}}B y=6h("KI",1);if(y){y.f8()}o.nh?4n():\'\'}}E KV(){if(o.1q&&7W){o.U.7G()}}G.KT=E(y){V(B x in b){if(x==y){b[x].1Q("3m")}}};G.8k=E(){2B(ne);if(7W){js("8H");B x=6h("1d","bO");if(x){x.iS();if(v.Eu==1&&o.1q){o.U.gI()}}B y=6h("KI",1);if(y){y.fj()}7W=J;o.nh?4n():\'\'}};G.j0=E(){B x=6h("3a","1I 9b");if(x){x.1Q("5W");x.6i(2M(\'1I\')+\' \'+(o.3o?0:2E.pU(v.1I*100))+\'%\');2B(o.j0);o.j0=1v(KS,2h)}};E KS(){B x=6h("3a","1I 9b");if(x){x.6i(\'\');x.1Q("3m");2B(o.j0)}}G.3N=E(18,1m){if(v.4t>0){18-=v.4t*1;1m-=v.4t*1}V(B x in b){if(b.2x(x)){if(b[x].s("on")==1){if(b[x].g("1d")=="2F"){1m>0?b[x].1Q("2l",18/1m):\'\';b[x].HW()}if(b[x].g("1d")=="18"){nl(b[x],18,1m)}if(b[x].g("1d")=="5l"){b[x].1Q("qD",0.5);b[x].1Q("hw",0)}}}}};G.4b=E(18,1m){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="1m"){if(v.4t>0){1m-=v.4t*1}b[x].6i(3V(1m))}if(b[x].g("1d")=="2F"){b[x].6G(18,1m);b[x].I5(1m)}if(b[x].g("1d")=="18"){nl(b[x],18,1m)}}}};G.9a=E(){if(!o.4H){1f.g("1n")?1f.1k():1f.1n()}};G.cT=E(){if(1f){if(o.4H){I o.4H.6d()||1f.g("1n")}F{I 1f.g("1n")?H:J}}F{I J}};G.nO=E(x){if(1f){1f.5F(x)}};G.cL=E(){cL()};G.V6=E(x){if(1f){1f.KQ(x)}};G.Fg=E(){if(1f){1f.j8()}};G.Ff=E(x){if(1f){I 1f.KP(x)}};E cL(x){if(1f){1f.g("1n")?1f.1k(x):\'\'}o.4H?o.4H.1k():\'\'};G.gC=E(){if(W){if(W.g("1n")){W.1k(1)}F{W.1n()}}};G.jP=E(x){if(W){if(W.g("1n")&&x!=1){x!=2?W.1k():\'\'}F{1v(E(){W.1n()},100)}}};G.jM=E(){if(W){I W.g("1n")?H:J}F{I J}};G.KO=E(x){if(W){W.g("1n")?W.1k(x):\'\'}};G.bY=E(x){I W?W.g(x):\'\'};G.6m=E(x){if(W){W.zs(x)}};G.KN=E(x){if(W){W.KM(x)}};G.aV=E(){if(W){W.aV()}};G.om=E(){if(W){W.om()}};G.jV=E(){jV()};E jV(){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="5J"){O(b[x].c(),{"1D":(!W.bq()?0.5:1)})}if(b[x].g("1d")=="ep"){O(b[x].c(),{"1D":(!W.eo()?0.5:1)})}}}}G.bq=E(){if(W){I W.bq()}F{I J}};G.eo=E(){if(W){I W.eo()}F{I J}};G.hf=E(){if(W){I W.hf()}F{I J}};G.oo=E(){if(W){W.oo()}};G.e1=E(){if(W){W.e1()}};G.KL=E(x){if(x&&W){W.bS(x)}};G.KK=E(x){if(x&&W){W.oq(x)}};G.KJ=E(x){if(x&&W){O(W.co(),{"V7":"1P","2U-2r":W.s("6S")});dg(x).1R(W.co());3m(W.c())}};G.V8=E(){};G.zo=E(x){if(1f){1f.5X();1f.g("1n")?1v(E(){1f.1k()},4C):\'\'}};G.k1=E(){if(1f){1f.5X()}if(o.4H){o.4H.dU()}};G.jU=E(x){if(1f){1f.gz()}2n();4n()};G.jB=E(x){if(1f){1f.hT(x);1f.g("1n")?1f.1k():\'\'}if(o.4H){o.4H.dU()}if(o.KU&&x=="7A"){W.zq()}x=="59"?z8():\'\'};E z8(){if(o.kJ){B x=41(o.jJ/o.5T.4N(-1)[0],1).vY(2);V(B i in b){if(b.2x(i)){if(b[i].s("8d")=="59"&&o.jJ){b[i].6G(x,1)}if(b[i].s("3a")=="2O:59,1.0"){b[i].xY(x)}}}}}G.oz=E(x){if(1f){1f.hT("7A")}if(o.4H){o.4H.dU()}if(o.KU){W.zq()}};G.aR=E(){if(1f){1f.9f();1f.g("1n")?1v(E(){1f.1k()},4C):\'\'}if(o.4H){o.4H.dU()}if(o.5d&&o.4v){o.3O.ag()}};G.z2=E(){o.4H?o.4H.1k():\'\';if(1f){1f.z2()}};G.jx=E(jy,2i,7R){V(B x in b){if(b.2x(x)){if(b[x].g("1d")=="1f"){if(b[x].s("eU")==1){b[x].EL()}}if(b[x].g("Gg")=="1f#"+jy){b[x].1Q("1Q#4r",2i);if(b[x].g("1F")=="1B"){if(7R){b[x].6i(ze(7R))}}F{if(v.1f[\'1f\'+jy+\'1d\']=="1W"){if(7R==2M("6X")){b[x].db(0)}F{b[x].db(1)}}2n()}cd(b[x])}}}};G.Ll=E(){if(1f){1f.5X();1f.hT("7A");1f.hT("6W")}};G.ke=E(){B x=6h("1d","2F");if(x){x.ke()}};G.4Z=E(){2n();if(8h){o.zi=H}};G.xZ=E(x){if(!8h||x==1){2n();4n()}F{v.1o.zj=H}};G.zl=E(){B b=6h("1F","O");if(b){b.Ew()}};G.4L=E(){4n();2n();4n();if(o.9m){3m(3S)}F{!8h?5W(3S):\'\'}};G.IP=E(1b){if(1y.e2==v.id&&v.1M.on==1){B x=1b.L9;B y=J;if(x==1E){x=1b.Lj}if(L(o.1V)||L(o.8E)||o.w8==1){I J}if(o.1q&&v.1M.hz==1){y=H}if(((v.1M.9c==1&&x==32)||(v.1M.V9==1&&x==13)||(v.1M.k==1&&x==75))&&(o.5U||o.4j||y)){if(v.1M.2K==1){7F(\'1q\',o.1q?0:1)}o.U.eP();1b.96();I J}!v.1M.o8?v.1M.o8=0.2:\'\';!v.1M.1J?v.1M.1J=5:\'\';if(v.1M.Lv==1&&(o.5U||y)){if(o.P.1m()>0){V(B i=48;i<58;i++){if(x==i){o.U.3N((o.P.1m()*(x-48)*10)/100,H)}}}}if((x==39||(v.1M.l==1&&x==76))&&(o.5U||y)){o3(v.1M.yV)}if((x==37||(v.1M.j==1&&x==74))&&(o.5U||y)){o5(v.1M.yV)}if(x==38&&(o.5U||y)){o3(v.1M.zp)}if(x==40&&(o.5U||y)){o5(v.1M.zp)}if(x==Va&&(o.5U||y)){o3(v.1M.Lm)}if(x==Vb&&(o.5U||y)){o5(v.1M.Lm)}}};E 6h(y,z){V(B x in b){if(b.2x(x)){if(b[x].s(y)==z){I b[x]}}}}E o3(x){if(x=="5J"){if(o.W){o.Q.aV()}F{x="3F"}}if(x=="3F"){if(o.P.1m()>0){B sk=o.P.18()+41(v.1M.3F);if(sk<o.P.1m()){o.U.3N(sk,H);js("o6",sk)}}}if(x=="1I"){o.U.42(41(v.1I)+41(v.1M.o8));1b.96()}if(x=="1J"){o.P.1J(v.1M.1J/100);1b.96()}if(v.1M.2K==1){7F(x,1)}}E o5(x){if(x=="5J"){if(o.W){o.Q.e1()}F{x="3F"}}if(x=="3F"){if(o.P.1m()>0&&o.1w){B sk=o.P.18()-v.1M.3F>=0?o.P.18()-v.1M.3F:0;o.U.3N(sk,H);js("o6",sk)}}if(x=="1I"){o.U.42(41(v.1I)-41(v.1M.o8));1b.96()}if(x=="1J"){o.P.1J(-v.1M.1J/100);1b.96()}if(v.1M.2K==1){7F(x,0)}};G.IS=E(1b){if(1y.e2==v.id){B x=1b.L9;if(x==1E){x=1b.Lj}if(x==57){if(v.1l==1){}}if(o.22&&x==27){o.U.8I()}if(L(o.1V)||L(o.8E)){I J}if(v.1M.on==1){if(v.1M.f==1&&x==70&&v.gg!=1&&(o.5U||o.4j)){if(v.1M.2K==1){7F(\'22\',o.22?0:1)}o.22?o.U.8I():o.U.aq()}if(v.1M.s==1&&x==83&&(o.5U||o.4j)){if(o.3d){if(v.1M.2K==1){7F(\'1W\',o.4q?0:1)}3r("Lc")}}if(v.1M.m==1&&x==77&&(o.5U||o.4j)){if(v.1M.2K==1){7F(\'51\',o.3o?1:0)}o.3o?o.U.6n():o.U.5b()}}}};G.4m=E(){3D(o.i9);V(B x in o){if(x.K("X")==0&&x.K("Ls")>-1){3D(o[x])}}V(B i=0;i<gV.S;i++){B 19=gV[i];if(b[19]){b[19].4m()}}if(1f){1f.4m()}if(W){W.4m()}bg.4m();bs?bs.4m():\'\';if(3S.4l==o.1O){o.1O.3j(3S)}F{o.1o?o.1o.3j(3S):\'\'}};G.ib=E(){ib()};G.da=E(x){da();x?\'\':4n()};G.gU=E(){gU()};G.eA=E(){I 8h}};B La=E(19){B i;B C=[];B w;B h;B pd=0;B bg;B 3S;B mQ;B 9w;B pC=0;B 4r=H;B Gt=J;B 3w=1;B 3H=1;B 2u;B jK;B 2N;B 8n;B 1d;B 9S=\'\';B x0;B y0;B on;B 6H=J;B cK=J;B vA=0;B Vc;B Vd=0;B gA=0;B FD=0;B hk=0;B qY=J;B F3=J;B jt=J;B 3h=J;B hU;B eU;B r6;B vW=J;B wF=J;B qy;B y7;C=aE(C,g9.R);C=aE(C,v[19]);B U=[C.1d];1d=U[0];L(C.IU)?U[1]=C.IU:\'\';L(C.G6)?U[1]=C.G6:\'\';L(C.1S)?C.1B=C.1S:\'\';if(1X(C.G5)){o.a1?C.1J=C.G5:\'\'}if(1d=="3b"){o.fk=H}if(L(C.3a)){if(C.1F=="1B"&&C.3a!=\'\'){if(L(v[C.3a+\'1B\'])){C.1B=v[C.3a+\'1B\']}}if(C.3a.K("1f#")==0){9S=C.3a;if(C.2N==\'\'&&9S.K(",")==-1){C.2N=2M(v.1f[\'1f\'+9S.1i(9)+\'1d\'])}}if(C.3a.K("6b")>-1){v.G4=H}if(C.3a.K("3b:")>-1){o.fk=H}if(C.3a=="Xa"){C.VE=1t Xb(C)}}B 7h=C.2N?C.2N.2q("///"):[];if(C.G2==1){C.1F="1B";C.1B=j9(0)+(U.S>1?\'///\'+j9(1):\'\');if(1X(C.9G)){C.1u=C.9G}}C.it=[];C.il=[];B wE=0;B 2K=1t ac();B 1p=1t ac();B e0=1t ac();B YK=1t ac();B jn=0;B bA;if(C.1F=="1B"){if(C.4P){if(L(v[C.4P+\'1B\'])){C.1B=v[C.4P+\'1B\']}}if(L(C.1B)){2K[0]=4z(C.1B);C.qL=C.1B.S;B wo=[\'/\',\'|\',\'-\'];wo.K(C.1B.1i(-1))>-1?C.vM=C.1B.1i(-1):\'\';wo.K(C.1B.1i(0,1))>-1?C.qS=C.1B.1i(0,1):\'\';if(1d=="18"||1d=="1m"){if(C.1B.K(\'0:\')==0){C.qG=H}if(C.1B.2q(":").S==3){C.F0=H}F{if(C.1B.K(\'d6:d6\')>-1){C.EZ=H}}if(C.lB==1){v.lB=1}}if(C.ma==1&&C.1B.K("-")==0){C.vN=H}if(C.1B.K("///")>0&&(1d=="3J"||C.G2==1)){C.gN=C.1B.2q("///");C.1B=2K[0]=C.gN[0]}}if(v.wn==1){1v(8v,100);1v(8v,4e);1v(8v,2h)}if(C.3S==1){1v(8v,10)}}F{if(L(C.1p)){2K[0]=C.1p;if(2K[0].K("///")>0&&2K[0].K("ln")==-1){2K=C.1p.2q("///")}if(L(C.m5)){2K[1]=C.m5}if(C.EW==1){if(1X(C.G1)){2K.2I(C.G1);jn=2K.S-1}}}}if(1d=="3J"){if(C.Zc==1&&L(C.je)){C.vu=C.3a}}B X=1Z("2e");B sp=C.1r;if(sp.K(\'9y\')>-1){o.9y?o.9y.1R(X):1v(E(){o.9y.1R(X)},100);o.FZ=H}F{if(o.bM&&((dn(sp,["2P"])&&C.Zd!=1)||(dn(sp,["X"])))){o.1o.1R(X)}F{o.1O.1R(X)}if(C.Ze==1){X.C.5a=mF}}if(C.FX==1){C.jj=1t Zf(C,X)}B mQ=1Z("2e");X.1R(mQ);B dM=1Z("2e");O(dM,{"1r":"2C","1a":0,"1c":0});X.1R(dM);O(X,{"1r":"2C","1a":0,"1c":0,"1D":1,"eg":"oi","r3":"kA"});if(1X(C.4P)){3P(X,{"id":(v.id+"47"+"bW"+C.4P)})}if(C.wk==1||C.vD==1||C.Zg==1){O(dM,{"5j":"2S 0.2s 3f"})}if(2K.S>0){V(i=0;i<2K.S;i++){1p[i]=1Z("2e");O(1p[i],{"1r":"2C","1c":0,"1a":0,"9V":"1P","1D":C.a,"5j":"1D 0.1s 3f"});if(C.gM>C.1J){O(1p[i],{"5j":"1D 0.1s 3f,2S 0.1s 3f"})}if(C.1F=="gG"&&C.3y!=\'\'){if(1X(C.4P)){3P(1p[i],{"id":(v.id+"47"+"X"+"47"+C.4P+"47"+"1p")});if(v[C.4P+\'3y\']){C.3y=v[C.4P+\'3y\']}}if(dn(C.3y,[".vE",".iI",".Zh","ln",".gY"])){C.3y.K("//")==-1&&C.3y.K("ln")==-1?C.3y=\'//\'+C.3y:\'\';B z=1Z("3I");C.8X=1;z.1z("dZ",vq);z.3y=C.3y;1p[i].1R(z);C.w=1p[i].2g;C.h=1p[i].2Y;if(C.FV>0){O(z,{1e:C.FV})}}}if(C.1F=="1B"){O(1p[i],{"1u":(C.1u),"eg":C.dY*2t(v.8B,1),"zf":gy(C.4a),"kX-f3":C.iw+\'px\',"2U":"0 cP 0 cP","bn-9c":"eR"});if(o.a1){if(1X(C.FU)){O(1p[i],{"eg":C.FU*2t(v.8B,1),})}}if(C.2l==1){if(C.1B.K("<a ")>-1||19=="cO"){O(1p[i],{"9V":"2A"})}}if(C.FT==1){O(1p[i],{"4a-dR":"FT"})}if(C.lw>0){O(1p[i],{"4a-dR":C.lw})}if(C.FR){O(1p[i],{"r3":C.FR+"em"})}2K[i]==\'5l\'?2K[i]=2M("5l"):\'\';1p[i].1T=yw(2K[i]);1v(wS,100);C.w=1p[i].2g;C.h=1p[i].2Y;if(1X(C.4P)){3P(1p[i],{"id":(v.id+"oX"+C.4P+"Zi")})}}if(C.1F=="O"){o.1w?1v(yn,4C):\'\'}B 9v=2K[i].5Z();if(9v.K(\'B:\')==0){9v=2t(1y[9v.1i(4)],\'\')}B mt=9v.K(\'<2o\')>-1||9v.K(\'<Zj\')>-1;if(C.1F=="2o"&&(9v.K(\'<g>\')>-1||mt)){if(1d=="51"||1d=="3J"){9v=9v.1N(/ja/g,\'ja\'+v.id+19)}if(9v.K(\'4I\')>-1){bv(1p[i])}1p[i].1T=(!mt?"<2o Z=\'20\' 1e=\'20\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\'>":\'\')+9v+(!mt?"</2o>":\'\');1p[i].2g>20?C.w=1p[i].2g:\'\';1p[i].2Y>20?C.h=1p[i].2Y:\'\';O(1p[i],{"Z":C.w,"1e":C.h});if(C.9G!=-1){g8(1p,C.9G)}if(1X(C.4P)){3P(1p[i],{"id":(v.id+"oX"+C.4P+"Zk"+i)})}}dM.1R(1p[i]);if(C.3a=="ha"){if(1A mx!=="1E"&&L(1y.mw)){!o.ak?o.ak=1t mx(1p[i]):\'\'}}i>0?1k(1p[i]):\'\'}a6();r6?vq():\'\';if(C.3a=="3O"){C.3O=1;C.1k=1;o.3O?1p[0].1T=o.3O.e5(C.9G!=-1?C.9G:\'#3G\'):\'\';if(o.1h.2c){1p[0].FN=wx;1p[0].Zb=6g;1p[0].wb=wI}F{1p[0].kr=6A;1p[0].kv=6g;1p[0].kZ=dG}}F{if((bg.2g*C.1J<35||bg.2Y*C.1J<35)&&C.1F!=\'1B\'){vp();bv(9w)}F{bv(bg);if(C.fV==1){a6();bv(bg)}}}if(1d=="3J"){B lu=\'\';if(C.ea==1&&L(C.3a)){lu=C.3a;if(lu.K("2O:")==0){if(lu==\'2O:1q\'&&C.je==\'2O:3K\'){C.pp=1}B 1H=lu.1i(4).2q(",");if(1H.S==2){B w9=1H[1].2q("/");if(w9.S==2){1H[0]==\'hd\'?1H[0]="3X":\'\';if(v[1H[0]]==w9[1]){C.a=1;O(1p[0],{"1D":C.a})}}}}if(lu=="FM"||lu=="4E"){o.U.hc();X.C.5a=mF;o.w8=1}}if((C.1k==1&&(C.FL==1||C.FK==1||C.FJ==1))||lu.K("7I")==0||lu=="FI"||lu=="ah"){C.FH=1;if(7s([C.1r],"X")||C.FG==1){C.FF=1}}if(lu.K("7I")==0){X.C.5a=mF}}V(B sf in C){yr(sf)}if(1d=="1f"&&C.eU==1){eU=1t Zl(X,bg,C)}if(C.2l==0){hg(X)}if(C.8X==1){1k(bg)}if(C.2u==1){po()}if(C.1r.K("2r")>-1){gA=1}if(C.1r.K("1c")>-1){FD=1}if(C.1r.K("2P")>-1){hk=1;1d=="3J"&&1X(C.3a)?X.C.5a=mF:\'\'}if(C.1r.K("X")>-1){hk=1}2n();B t=\'\';if(C.aJ!=0){t+="qk("+C.aJ+"xz)"}if(C.Zn==1){t+=" 3w(-1)"}if(C.Zo==1){t+=" 3H(-1)"}if(t!=\'\'){O(dM,{"2S":t})}if(1d=="bO"){iS()}B 1H=[];B i;if(1d=="W"){1H=[\'cp\',\'G7\',\'mI\',\'FS\',\'wL\',\'n8\'];V(i=0;i<1H.S;i++){if(L(C[1H[i]])&&!L(v.W[1H[i]])){v.W[1H[i]]=C[1H[i]]}}}if(1d=="1S"){1H=[\'lS\',\'wK\',\'wJ\'];V(i=0;i<1H.S;i++){if(L(C[1H[i]])&&!L(2D[1H[i]])){v[1H[i]]=C[1H[i]]}}}C.qs==1?9A():\'\';if(1d=="3J"&&C.on==0){3m(X)}if(C.1k==1&&C.mL>0){1v(G8,C.mL*2h)}}E G8(){C.mL=-1;o.Q.4L()}E vp(){if(9w){9w.4l.3j(9w)}9w=1Z(C.fV==1?"e5":"2e");O(9w,{"1r":"2C","1c":0,"1a":0,"Z":C.1F=="gG"?bg.2g:(bg.2g>35?bg.2g:35)*C.Gr,"1e":C.1F=="gG"?bg.2Y:(bg.2Y>35?bg.2Y:35)*C.xu});C=4o(C,\'iK\',\'iK\');X.1R(9w)}E bv(x){if(1d.K("18")==0&&U.S==1){C.2l=0}if(C.vO==1){C.2l=1}if(1d=="3J"&&C.ea==0){C.2l=0}if(C.2l==1){wF=C.fV==1&&x==bg;if(C.fV==1&&1X(C.fW)){3P(x,{"fW-7n":C.fW})}if(C.ia==1){O(x,{"6Y":"4I"})}O(x,{"9V":"2A"});if(o.1h.2c){x.1z("cK",E(e){wI(e)},{5Q:J});x.1z("fO",E(e){wx(e)},{5Q:J});x.1z("fQ",E(e){GE(e)},{5Q:J})}x.hq=bw;if(v.1o.ih==1||C.ih==1){O(x,{"2z-1u":"#pJ","1D":0.5})}}F{O(x,{"6Y":"6P"})}if(!o.1h.2c){x.kr=6A;x.kv=6g}x.F6=fI;x.F7=fK;if(C.3h==1||C.2u==1){x.kZ=dG}}E wI(e){js("Zp"+19);e.aW();cK=H}E wx(e){C.GD==1?6A():\'\';e.aW()}E GE(e){e.aW();e.96();C.GD==1?6g():\'\';if(!cK){bw(e)}cK=J}E a6(){if(bg){bg.4l.3j(bg)}bg=1Z(wF?"e5":"2e");O(bg,{"1r":"2C","1c":0,"1a":0});if(1X(C.4P)){3P(bg,{"id":(v.id+"oX"+C.4P+"Zq")})}w=C.w;h=C.h;C.b0=-1;C.8O=-1;C=4o(C,\'2Q\',\'2Q\');C=4o(C,\'am\',\'am\');if(C.aK&&o.a1){if(C.aK!=\'0 0 0 0\'){C=4o(C,\'am\',\'aK\')}}if(C.1F=="1B"){w=1p[wE].2g;h=1p[wE].2Y;if(C.wD>0){w<C.wD?w=C.wD:\'\'}}C=4o(C,\'fR\',\'fR\');C=4o(C,\'GB\',\'GB\');if(1X(C.4P)&&L(v.3J)&&C.1d=="3J"){if(1A(v.3J)==\'3u\'){V(B i=0;i<7Y.6l(v.3J).S;i++){if(v.3J[i][C.4P]){if(v.3J[i][C.4P]=="6X"){C.on=0}F{B 1H=v.3J[i][C.4P].2q(":");if(1H[0]=="2Q-1a"){if(1H[1].K("%")>0){C.j5=2L(1H[1])}F{C.4G=2L(1H[1])}}}}}}}C.h=h;C.w=w;if(C.bg==1){h=h+C.aL+C.aO;w=w+C.6M+C.6S;C.h=h;C.w=w;if(C.1F=="1B"){C.fZ=1p[0].2Y}}F{C.5M=0}O(bg,{"Z":(C.GA==1?Gz:w),"1e":h,"xt":(C.pK*h)/2,"5j":"2z .1s 3f, 1D .2s, 2S .1s 3f"+(1X(C.dH)?\', 7a .1s 3f\':\'\')});jg(C.4X,C.5M);if(C.1F=="gG"){O(bg,{"Z":w,"1e":h,"xt":(C.pK*h/C.1J)/2,})}if(C.GH==1){yC(bg,C.4X,C.HP,C.Ik)}if(C.pM==1){O(bg,{"2R":2t(C.F8,1)+"px 6K "+C.pN})}if(C.9X==1){O(bg,{\'kg-7a\':\'9X(aH)\'})}mQ.1R(bg);if(C.3S==1&&C.bg==1){if(1A mS!=="1E"){3S=1t mS();3S.Zr(1p,C)}}}E jg(x,y){!1X(x)?x=C.4X:\'\';!1X(y)?y=C.5M:\'\';O(bg,{"2z":(C.Gx==1?"3f-4O("+(C.Zs==1?"to 2r,":\'\')+6f(x,y)+","+6f(C.Zt,y)+")":6f(x,y,bg))})}E 2n(){B b0=(-bg.2Y/2);B 8O=(-bg.2g/2);if(b0!=C.b0||8O!=C.8O){O(bg,{"1c":(-bg.2Y/2),"1a":(-bg.2g/2)});C.b0=b0;C.8O=8O}if(9w){B x=C.1F=="gG"?bg.2g:(bg.2g>35?bg.2g:35);B y=C.1F=="gG"?bg.2Y:(bg.2Y>35?bg.2Y:35);O(9w,{"1c":(-y/2)+C.GG-C.FB,"1a":(-x/2)+C.Zu-C.Zv})}V(B i=0;i<2K.S;i++){B it=C.1F=="2o"?2E.4u(2L(1p[i].C.1e))/2:2E.4u(1p[i].2Y)/2;B il=C.1F=="2o"?2L(1p[i].C.Z)/2:1p[i].2g/2;if(it!=C.it[i]||il!=C.il[i]){O(1p[i],{"1c":-it,"1a":-il});if(bg){O(1p[i],{"1c":(5g(1p[i].C.1c)+C.aL/2-C.aO/2+C.Zm/2+C.Z8/2),"1a":(5g(1p[i].C.1a)+C.6M/2-C.6S/2+C.YX/2+C.Z7/2)})}C.it[i]=it;C.il[i]=il}}}E 6A(){B i;6H=H;if(C.e0==1){if(on&&L(C.m5)){i=1}F{i=0}if(bA&&e0.S>2){i=2}if(e0[i]){p8();1n(1p[e0[i]])}}if(C.bg==1){if(1X(C.9M)||1X(C.8Q)){jg(C.9M,C.8Q)}if(1X(C.dH)){O(bg,{"7a":"jl("+C.dH+")"})}if(3S){3S.Gs(1p,C,1)}}if(C.7z>-1&&!Gt){V(i=0;i<2K.S;i++){if(1p[i].C.5H!="3h"){O(1p[i],{"1D":C.7z})}}}if(C.lU!=-1){g8(1p,C.lU)}if(C.vD==1){f8()}if(C.gM>C.1J&&C.gM>-1){1J(C.gM)}if(1d=="1f"&&o.Q.cT()){}F{if(C.2u==1&&C.qs!=1){B x=7h.S>1&&!on?7h[1]:7h[0];if(x){if(x.K(\'B:\')==0){2N.1T=1y[x.1i(4)];9A()}}1n(2u);O(2u,{"1D":1})}}if(1d=="51"){o.U.5t(H);o.5t=H}o.dq=H;o.Q.lo(19,"6H")}E 6g(){fK();6H=J;B i;if(C.e0==1){if(on&&L(C.m5)){i=1}F{i=0}if(bA&&e0.S>2){i=2}p8();1n(1p[i])}if(C.bg==1){if(1X(C.9M)||1X(C.8Q)){if(C.IV==1&&o.7C){}F{jg(C.4X,C.5M)}}if(1X(C.dH)){O(bg,{"7a":"jl(1)"})}if(3S){3S.Gs(1p,C)}}if(C.7z>-1){V(i=0;i<2K.S;i++){if(1p[i].C.5H!="3h"){O(1p[i],{"1D":C.a})}}}if(C.gM>-1){1J(C.1J)}if(C.lU!=-1){g8(1p,(C.9G==-1?\'#3G\':C.9G))}if(C.vD==1){fj()}if(1d=="51"&&!o.22){o.U.5t(J);o.5t=J}vB();o.dq=J;o.Q?o.Q.lo(19,"5k"):\'\'}E vB(){if(C.2u==1&&C.qs!=1){1k(2u);O(2u,{"1D":0})}}E bw(e){e?e.6F=H:\'\';if(!qY){o.Q.fC(19);if(1d=="3J"){iW()}if(1d=="18"){if(C.vO==1){B si=C.ma;C.ma=si?0:1;C.vN=si?0:1;C.qS=!si?\'-\':\'\';o.U.mf()}}vB();if(C.YM==1){vA-=30;qz(1p[0],vA)}jt=H;if(C.Ga==1||(19=="mk"&&C.1k==1&&C.vy==1)){o.Q.4L()}}};G.Gp=E(){bw()};E fI(){if(1X(C.vv)){1J(C.vv)}if(1X(C.vm)){g8(1p,C.vm)}}E fK(){if(1X(C.vv)){1J(C.1J)}if(1X(C.vm)){g8(1p,mo(C.9G,\'3G\'))}}E iW(){if(2K){if(2K.S>1){if(on==H){1n(1p[0]);1k(1p[1])}F{1n(1p[1]);1k(1p[0])}}if(C.2u==1&&7h.S>1){2N.1T=o.ni+(on==H?7h[0]:7h[1])+o.jk;9A()}}if(L(C.vu)){if(on==H){C.3a=C.vu}F{C.3a=C.je}}jm();on=!on;if(C.3a){if(C.3a.K(",0/1")>-1){js(C.3a,on?1:0)}}if(C.bg==1&&L(C.vt)){if(C.vt!=-1){if(on){C.Gn=C.4X;C.4X=C.vt}F{C.4X=C.Gn}a6();bv(bg);2n();if(C.1F=="1B"){8v()}F{1J(C.1J)}}}}E jm(){if(L(C.gN)){if(C.gN.S>1){if(on==H){6i(C.gN[0])}F{6i(C.gN[1])}}}}E xP(1b){1b.6F=H;o.Q.fC(19)}E p8(){V(B i=0;i<2K.S;i++){if(1p[i].C.5H!="3h"){O(1p[i],{"1D":C.a});1k(1p[i])}}}E wS(1B){if(1p[0]){if(1p[0].2g>o.2V-C.4G-C.4M-C.6M-C.6S){if(C.vr==1){if(!1B){1B=1p[0].1T}1p[0].1T=\'<vr>\'+1B+\'</vr>\'}F{O(1p[0],{"bn-9c":"h8"})}O(1p[0],{"Z":o.2V-C.4G-C.4M-C.6M-C.6S})}}}E vq(){if(bg){r6=J;C.8X=0;1k(bg);if(1p[0]){C.w=1p[0].2g*C.1J;C.h=1p[0].2Y*C.1J;1J(C.1J)}C.8C=0;a6();vp();bv(9w);1n(bg);2n();o.Q.4Z();if(!6d(X)){3m(X)}}F{r6=H}}E Ic(1b){1b.6F=H}E dG(){if(!o.1h.2c&&!o.dq){6A()}9A()}E 1J(x){if(x>0){O(bg,{"2S":"1J("+x+")"});V(i=0;i<2K.S;i++){O(1p[i],{"2S":"1J("+x+")"})}if(C.jj){C.jj.1J(x)}3w=x;3H=x}}E po(){2u=1Z("2e");O(2u,{\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'1e\':\'2A\',"1D":0,"5j":"1D 0.1s 3f"});jK=1Z("2e");C=4o(C,\'kR\',\'kR\');C=4o(C,\'Gm\',\'Gm\');O(jK,{\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'Z\':\'100%\',\'1e\':30,\'2z-1u\':C.kG,\'1D\':C.kh,\'2R-7b\':C.vL});2N=1Z("2e");O(2N,{\'1r\':\'2C\',\'1a\':C.xU,\'1c\':C.pg,\'1u\':C.y6,\'4a-fc\':gy(C.xK),\'4a-3R\':C.w6*2t(v.8B,1),"kX-f3":C.wR+\'px\',"2F-1e":"1"});if(C.2N){if(C.2N.K("B:")==0){C.Gl=H}}if(!C.Gl){O(2N,{\'bn-9c\':\'eR\'})}if(C.f6==1){8n=1Z("2e");8n.1T=\'<2o Z="aH" 1e="vQ" vR="0 0 8 6" 8l="1.1" 4h="3T://4f.w3.4c/4i/2o" 4h:4g="3T://4f.w3.4c/8f/4g"><f4 id="IK" 4d="1P" 6k="#\'+C.kG.1N("#","")+\'" 6k-IL="IF" 7M="0 0 8 0 4 6"></f4></2o>\'}if(C.qs==1){O(2u,{"1D":1});bv(2u)}F{hg(2u)}X.1R(2u);2N.1T=o.ni+(C.2N==\'\'?2M(1d):7h[0])+o.jk;2u.1R(jK);2u.1R(2N);if(C.f6==1){2u.1R(8n);B vG=o.vo?\'-aH\':\'-vQ\';B ps=C.YN;if(!L(ps)){ps=\'\'}B tp=ps.K("1c")>-1;if(tp){qz(8n,\'-YO\')}O(8n,{\'1r\':\'2C\',\'2r\':(ps.K("2r")>-1?10*C.1J:\'2A\'),\'1a\':(ps.K("1a")>-1?10*C.1J:(ps==\'\'||ps==\'1c\'?\'50%\':\'2A\')),\'2Q-1a\':(ps==\'\'||ps==\'1c\'?\'-GN\':0),\'2P\':(tp?\'2A\':vG),\'1c\':(tp?vG:\'2A\'),\'1D\':C.kh})}9A()}E 9A(){if(C.2u==1){O(2u,{"1c":(hk==1?-h-2u.2Y+3:-2u.2Y/2)+C.YP-C.YQ,"1a":(gA==1?-2N.2g:(hk==1?-w/2:+2N.2g))-(hk==1?0:2N.2g/2+5)+C.YR-C.YS,"1e":C.pg+2N.2Y+C.y5,"Z":C.xU+2N.2g+C.II});O(jK,{\'1e\':2u.2Y});2u.C.5a="2h"}}G.c=E(){I X};G.s=E(x){if(1d=="3J"){yr(x)}I C[x]};G.ss=E(x,x2){I L(C[x])?C[x][x2]:J};G.g=E(x){c4(x){1j"Z":I w;1g;1j"1e":I h;1g;1j"h":I 2t(C.fZ,h);1g;1j"x":I 5g(X.C.1a);1g;1j"y":I 5g(X.C.1c);1g;1j"1D":I X.C.1D?X.C.1D:1;1g;1j"1n":I 4r;1g;1j"3w":I 3w;1g;1j"3H":I 3H;1g;1j"1d":I 1d;1g;1j"Gg":I 9S;1g;1j"jt":I jt;1g;1j"1F":I C.1F;1g;1j"S":I C.qL?C.qL:0;1g;1j"19":I 19;1g;1j"x0":I x0;1g;1j"y0":I y0;1g;1j"on":I on;1g;1j"6H":I 6H;1g;1j"1f#":I 9S.K("1f#")==0;1g;1j"1f:":I 9S.K("1f:")==0;1g;1j"w1":I 1d=="3J"&&C.1F=="1B";1g;1j"1Q#4r":I vW;1g;6P:I J}};G.1Q=E(k,x){c4(k){1j"1n":6H?6g():\'\';4r=x;1g;1j"2i":Gc(x);1g;1j"5W":5W(X);1g;1j"3m":3m(X);1g;1j"Gf":C.3h=0;1g;1j"w0":if(C.Gd>0&&C.3h!=1&&!hU){2B(hU);hU=1v(E(){3m(X);(C.YU!=1?C.3h=1:\'\');hU=1E},C.Gd*2h)}1g;1j"1J":1J(x);1g;1j"YV":O(X,{"2S":"1J(0)"});1g;1j"3w":O(X,{"2S":"3w("+x+")"});3w=x;1g;1j"3H":O(X,{"2S":"3H("+x+")"});3H=x;1g;1j"1D":O(X,{"1D":x});1g;1j"qD":O(1p[0],{"1D":x});1g;1j"hw":O(1p[0],{"7a":"hw("+x+")"});1g;1j"1a":O(X,{"1a":x});1g;1j"1c":O(X,{"1c":x});1g;1j"Z":O(X,{"Z":x});1g;1j"1e":O(X,{"1e":x});1g;1j"ys":C.ys=x;1g;1j"gA":gA=x;1g;1j"1Q#4r":vW=x;1g;1j"x":O(X,{"1a":x});1g;1j"y":O(X,{"1c":x});1g;1j"6e":C.6e=x;1g;1j"7I":C.7I=x;1g;1j"x0":x0=x;1g;1j"y0":y0=x;1g;1j"gs":C.gs=x;1g;6P:I J}};E Gc(x){if(x&&o.1h.2c){qY=H;1v(Gb,dW)}if(!x){if(pk()&&bA){1k(1p[jn]);1n(1p[0]);bA=J}}if(C.8X==1){x?1n(X):1k(X)}F{if(19=="YL"||19=="YW"){x?1n(X):1k(X)}F{O(X,{"2i":(x?"4E":"1P")})}4r=x;x?1n(X):\'\'}if(x&&C.qx){C.qx=J;1v(8v,100)}}E Gb(){qY=J}G.6i=E(x,y){if(9S!=\'\'&&(C.1B==\'x\'||C.1B==\'1x\')){x=x+\'x\'}if(y){x=C.1B+x}6i(x);!6d(X)?C.qx=H:\'\'};B vJ;G.iE=E(x){if(vJ!=x){C.8W=x;6i(x);!6d(X)?C.qx=H:\'\';o.Q?o.Q.4Z():\'\'}vJ=x};G.f8=E(){f8()};G.fj=E(){fj()};E f8(){3D(qy);qy=7u(E(){qz(dM,pC);pC+=5},(1/2t(C.YY,4))*100)}E fj(){3D(qy)}E qz(x,y){O(x,{"2S":"qk("+y+"xz)"+(x==1p[0]&&!F3&&3w!=1?\' 1J(\'+3w+\')\':\'\')})};G.Fz=E(x){if(C.1B.K("{1S")>-1){6i(C.1B)}};G.iW=E(){iW()};G.vP=E(x){on=x==0;jm()};E 6i(1B){if(C.1F=="1B"){B tt=1B;if(pd>0&&1B==y7&&!C.vO){I}if(L(1B)){if(C.F0){if(1B.S==4){1B=(C.qG?\'0:0\':\'d6:0\')+1B}if(1B.S==5){1B=(C.qG?\'0:\':\'d6:\')+1B}if(1B.S==7){1B=(C.qG?\'\':\'0\')+1B}}if(C.EZ){if(1B.S==4){1B=\'0\'+1B}}C.qL=1B.S}1B=(C.qS?C.qS+(C.vN?\'\':\' \'):\'\')+1B+(C.vM?\' \'+C.vM:\'\');B EY=1p[0].2g+(C.bg==1?C.aL+C.aO:0);B EX=1p[0].2Y+(C.bg==1?C.aL+C.aO:0);1p[0].1T=o.ni+(1d=="3J"?yw(1B):1B)+o.jk;if(C.YZ==1){1p[0].1T+=\'<7j C="2i:aG-4E;Z:dK"></7j><7j C="2R-1c: cP 6K \'+3v(C.1u)+\';2R-1a: cP 6K eO;2R-2r: cP 6K eO;1r: 2C;2r:cP;1c: 50%;2Q-1c: -4s;"></7j>\'}if(1d=="1S"){O(1p[0],{"Z":"2A","bn-9c":"eR"});wS(1B)}C.w=1p[0].2g+(C.bg==1?C.6S+C.6M:0);C.h=1p[0].2Y+(C.bg==1?C.aL+C.aO:0);if(EY!=C.w||EX!=C.h||(C.w>0&&pd==0)){8v()}if(1p[0].2g>0){pd=C.w}F{9S!=\'\'?1k(1p[0]):\'\';if(1B!=\'\'){1v(8v,10)}}y7=tt}}G.8v=E(){8v()};E pk(){I!o.P.5Y()&&C.EW==1}E 8v(){if(C.1F=="1B"){if(1p[0]){if(1p[0].2g>0){9S!=\'\'?1n(1p[0]):\'\';w=C.w=1p[0].2g;h=C.h=1p[0].2Y;a6();bv(bg);2n();if(o.Q){if(7s([C.1r],"X")){o.Q.xZ()}F{o.Q.4Z()}}}}}}G.xY=E(x){if(C.EV==1){B n=4;if(19=="EU"){if(o.1h.2c){I}}F{n=8}B y=\'ja\';B z=[];V(B i=1;i<n;i++){z[i]=dg(y.9P(v.id,19,\'Z0\',i))}if(z[1]){V(B i=1;i<n;i++){z[i]?1k(z[i]):\'\'}if(n==4){V(B i=1;i<n;i++){x>(i/n-0.2)&&z[i]?1n(z[i]):\'\'}}F{V(B i=n;i>0;i--){if(x*1+(1/n)>=(i/n)&&z[i]){1n(z[i]);1g}}}}}};G.On=E(){if(!on){if(2K){if(2K.S>1){1k(1p[0]);1n(1p[1])}}if(U.S>1){1d=U[1];if(C.2u==1){2N.1T=j9(1);9A()}}if(pk()&&bA){1k(1p[jn]);bA=J}if(C.pp==1){iW(1)}jm();on=H}};E j9(x){I o.ni+(C.2N==\'\'?2M(U[x]):(7h.S>1?7h[x]:7h[0]))+o.jk}G.db=E(x){db(x)};G.ES=E(x,y){if(C.jj){C.jj.dU(x,y)}};G.ER=E(){jg(C.4X,C.5M)};E db(x){B y=\'ja\';B z=dg(y.9P(v.id,19,\'Z1\'));if(z){O(z,{"5j":"2S 0.1s 6L-5k"});if(x==1){z.C.2S=\'EQ(0, 0)\'}F{z.C.2S=\'EQ(-EP, 0)\'}}F{if(x==1){C.a=1}F{C.a=0.5}}on=x==1;if(C.2u==1&&7h.S>1){2N.1T=(on?7h[0]:7h[1])}O(1p[0],{"1D":C.a})};G.jc=E(){if(on){if(2K){if(2K.S>1){1n(1p[0]);1k(1p[1]);O(1p[0],{"1D":C.a})}}1d=U[0];if(U.S>1){if(C.2u==1){2N.1T=j9(0);9A()}}jm();on=J;bA=J}};G.xP=E(){if(pk()){p8();1n(1p[jn]);bA=H}};G.EO=E(){B 2H=J;if(C.1k==1){if(C.EN==1){if(6d(o.29)){2H=H}}if(C.Z2==1&&!o.22){2H=H}if(C.Z3==1&&o.22){2H=H}}if(!2H){5W(X);B f1=X.c9("*");V(B i=f1.S;i--;){O(f1[i],{"6e-1q-6Z":"Z4"})}4r=H}};G.iS=E(){iS()};E iS(){3m(X);B f1=X.c9("*");V(B i=f1.S;i--;){O(f1[i],{"6e-1q-6Z":"6N"})}4r=J}G.4m=E(){if(2K.S>0){V(i=0;i<2K.S;i++){if(1p[i].4l==X){X.3j(1p[i])}1p[i]=1Y}}if(bg){bg.dv("hq");bg.dv("kr");bg.dv("kv");bg.4l.3j(bg);bg=1Y}if(C.1r.K(\'9y\')>-1){if(X.4l==o.9y){o.9y.3j(X)}}F{if(X.4l==o.1O){o.1O.3j(X)}F{if(o.1o){if(X.4l==o.1o){o.1o.3j(X)}}}}if(2u){if(2u.4l==X){X.3j(2u)}}X=1Y};G.EL=E(){eU?eU.iZ():\'\'};G.Ew=E(){yn()};E yn(){EK(2K[0],C.1u,1p[0])}E yw(x){B z=x+\'\';if(x.K(\'{\')>-1){if(x.K(\'{18}\')>-1&&L(o.3i)){x=x.1N(\'{18}\',gl(o.3i.bo().t))}if(x.K(\'{1S\')>-1){B y=o.df?o.df:(v.1S?v.1S:\'\');if(x.K(\'{cv}\')>-1&&o.Q){x=x.1N(\'{cv}\',o.Q.bY(\'cv\'))}if(o.cV&&o.Q){y=o.Q.bY(\'cV\')}x=x.1N(\'{1S}\',y);if(o.cV&&!o.Q){1v(6i,100,z)}}if(x.K(\'{1B\')>-1){V(B i=1;i<6;i++){if(x.K(\'{1B\'+i+\'}\')>-1){if(L(v[\'1B\'+i])){x=x.1N(\'{1B\'+i+\'}\',v[\'1B\'+i])}F{x=x.1N(\'{1B\'+i+\'}\',\'\')}}}}if(x.K(\'{5J}\')>-1){o.jp=19;if(o.Q){x=x.1N(\'{5J}\',o.Q.bY(\'EJ\'))}}}I x}G.yt=E(){6i(C.1B)};E yr(sf){if(1X(C[sf+\'47\'+\'B\'])){B x=v[C[sf+\'47\'+\'B\']];if(1X(x)){if(1A(x)=="4F"){C[sf]=x}}}}E g8(1p,6v){V(B i=0;i<1p.S;i++){qj(1p[i],6v)}if(C.3a=="3O"){if(o.3O){o.3O.Z5(1p[0],6v)}}}};B EI=E(19,1d){B i;B C=[];B w;B h;B bg;B 3S;B 4r=H;B x0;B y0;B 3w=1;B 3H=1;B gh=0;B 7U=0;B Z6;B 3A;B qm;B 6H;B 6N;B 2l;B 3p;B 7H;B HU;B HY;B xQ;B HX;B 2u;B 2N;B 8n;B gi;B yl;o.Id=-1;B pS;B 6H;B xF;V(i in g9.R){C[i]=g9.R[i]}B 1d=v[19].1d;B 1F=v[19].1F;V(i in g9[1d]){C[i]=g9[1d][i]}V(i in v[19]){C[i]=v[19][i]}C.w=2L(C.w);C.h=2L(C.h);C=4o(C,\'2Q\',\'2Q\');C=4o(C,\'am\',\'am\');if(o.a1){if(C.EG>0){C.w=2L(C.EG)}if(C.aK){if(C.aK!=\'0 0 0 0\'){C=4o(C,\'am\',\'aK\')}}}B X=1Z("2e");if(v.1o.EF==1&&v.1o.1k==1){o.1o.1R(X)}F{o.1O.1R(X)}1d=="2F"?o.9y=X:\'\';B 7S=J;if(C.8d){if(C.8d!=\'1I\'){7S=H}}O(X,{"1r":"2C","1c":0,"1a":0,"1D":1,"eg":"oi","r3":"kA"});if(C.EE==1){X.C.5a=C.56}a6();B 7L=1Z("2e");O(7L,{"1r":"2C","2P":2E.4u(-C.h/2),"1a":2E.4u(-C.w/2)});if(C.7p>0&&C.Fa==1){O(7L,{"2R-7b":C.7p*C.h/2,"1e":C.h,"6t":"3h","4I-3l":"1P"})}if(1X(C.4P)){3P(X,{"id":(v.id+"oX"+C.4P)})}X.1R(7L);if(1d==\'2F\'&&v.yk==1){HS()}if(C.2u==1){po()}B 9p=1Z("2e");iC(0,9p,0.3,(C.4O==1?"3f-4O("+(C.xl==1?"to 1a,":\'\')+3v(C.ED)+", "+3v(C.p0)+")":3v(C.p0)),C.w,C.Zw);if(C.Fy==1&&L(C.pB)){B jA=1Z("2e");jA.1T=C.pB.1N(/\\#Fx/g,3v(C.p0));9p.1R(jA);O(jA,{"1r":"2C","2P":-2E.4u(C.h/2),"1a":0,"4I-3l":"1P"});O(9p,{"6t":"3h","2z":"1P"});B x=["EC","f4","gk","oZ","g1"];V(B y=0;y<x.S;y++){B z=jA.EB("2o "+x[y]);if(z.S>0){V(B y2=0;y2<z.S;y2++){z[y2].C.6k=3v(C.p0)}}}}7L.1R(9p);B Z9=[];B dc=1Z("2e");B q3=(C.4O==1?"3f-4O("+(C.xl==1?"to 1a,":\'\')+3v(C.Ez)+", "+3v(C.Ey)+")":C.Ey);iC(1,dc,C.Ex,q3,0,C.Zx);7L.1R(dc);if(C.7z>0){B aY=1Z("2e");iC(2,aY,C.EM,C.ZW,0,C.7z);7L.1R(aY)}B 7r=1Z("2e");B qc=(C.4O==1?"3f-4O("+(C.xl==1?"to 1a,":\'\')+3v(C.F2)+", "+3v(C.1u)+")":C.1u);iC(3,7r,C.Fk,qc,0,C.a);if(C.Fy==1&&L(C.pB)){B p9=1Z("2e");p9.1T=C.pB.1N(/\\#Fx/g,3v(C.1u));O(p9,{"1r":"2C","2P":-2E.4u(C.h/2),"1a":0,"4I-3l":"1P"});O(7r,{"6t":"3h","2z":"1P"});7r.1R(p9)}if(C.5G==1){B cU=1Z("2e");C=4o(C,\'xg\',\'xg\');C=4o(C,\'xf\',\'xf\');O(cU,{"1r":"2C","2P":C.h/2,"1a":0,"4I-3l":"1P","4a-3R":C.Fw*2t(v.8B,1),"1u":C.5C,"2F-1e":"100%","2U-1c":C.ZY,"2U-2P":C.ZZ,"2U-1a":C.10a,"2U-2r":C.10b,"2Q-1c":C.10c,"2Q-2P":C.10d,"2Q-1a":C.10e,"2Q-2r":C.10f,"2R-7b":(C.Fs+"px"),"2i":"1P"});if(C.Fr==1){O(cU,{"2z":3v(C.Fq)})}7r.1R(cU);B l1=J;B 10g=J}o.qa=C.h;7L.1R(7r);if(C.aB==1){B 7M=[];B pR;if(1A Fo!=="1E"){B 5N=1t Fo(X,7M,w,C,qc,q3)}}if(C.ZX==1&&v.10h){if(1A Fl!=="1E"){o.xq=1t Fl(X,w,C,qc,q3)}}if(C.3p==1){if(C.dp.5Z().K(\'<2o\')==-1){C.dp==\'\'?C.dp="<2o Z=\'20\' 1e=\'20\'><g><g1 ry=\'5\' rx=\'5\' cy=\'10\' cx=\'10\' 6k=\'#ht\'/></g></2o>":\'\'}3p=1Z("2e");3p.1T=C.dp.5Z();C=4o(C,\'Fh\',\'Fh\');O(3p,{"1r":"2C","1c":-10+C.10j-C.10k,"1a":-2h,"4I-3l":"1P","1e":20,"Z":C.fS,"1D":C.xB,"5j":"2S 0.1s 3f, 1D 0.1s 3f"});if(C.lv==1||C.oP==1){O(3p,{"2S":"1J(0)"})}F{if(C.lq!=1){O(3p,{"2S":"1J("+C.lq+")"})}}if(C.10l==1){O(3p,{"7a":"10m-a7(4s 4s cP 5i(0, 0, 0, .7))"})}X.1R(3p);if(C.x9!=-1){qj(3p,C.x9)}C.Ih=3p.2g;if(C.7H==1){7H=3p.10n(H);X.1R(7H);if(C.xk&&C.xk!=-1){qj(7H,C.xk)}}}if(C.aJ!=0){O(X,{"2S":"qk("+C.aJ+"xz)"})}if(C.3h==1){1k(X);4r=J}if(1d=="1I"&&!7S){if(C.1k==1&&C.hJ==1){o.eB=H;C.3h=H}F{o.eB=J}}C.bK=0;if(C.aJ!=0){C.hC=2E.KD(C.aJ);if(C.hC>45&&C.hC<135){C.bK=90}if(C.hC>10o&&C.hC<Fd){C.bK=I9}}if(7S){C.8d?o[\'2F\'+\'47\'+C.8d]=C.8d:\'\';w=C.w;C.8d=="59"?6G(1,o.5T.4N(-1)[0],"no"):\'\';if(C.8d=="qO"){B pv=v.1I;v.2a?(v.2a.1I?pv=v.2a.1I:\'\'):\'\';6G(pv,1,"no")}}E iC(n,x,y,z,Fb,F9){O(x,{"1r":"2C","2P":0,"1a":0,"Z":Fb,"1e":(C[\'h\'+n]>0?C[\'h\'+n]:C.h),"2z":z?(z.K("3f")>-1?z:3v(z)):\'\',"2R-7b":(C.Fa==1?1:C.7p*C.h/2),"1D":F9,"4I-3l":"1P","5j":"2S 0.2s 6L-in-5k"})}E a6(){bg=1Z(C.fV==1?"e5":"2e");C=4o(C,\'fR\',\'fR\');B fZ=C.h+C.aL+C.aO;B xn=C.w+C.6M+C.6S;if(C.bg==1){}F{C.5M=0}C=4o(C,\'iK\',\'iK\');if(v.1o.ih==1||C.ih==1){C.4X=\'#pJ\';C.bg=1;C.5M=0.5}O(bg,{"1r":"2C","1c":0,"1a":0,"Z":xn,"1e":fZ*C.xu,"xt":(C.pK*fZ)/2,"2z":6f(C.4X,C.5M),"9V":"2A","5j":"1D .1s 3f, 2z .1s 3f"});if(C.9X==1){O(bg,{\'kg-7a\':\'9X(aH)\'})}if(C.pM==1){O(bg,{"2R":2t(C.F8,1)+"px 6K #"+C.pN})}if(C.2l==1){if(C.ia==1){O(bg,{"6Y":"4I"})}if(!o.1h.2c||v.gr==1){bg.hq=bw;bg.F7=fK;bg.F6=fI;bg.kZ=dG}if(C.fV==1&&1X(C.fW)){3P(bg,{"fW-7n":C.fW})}}F{O(bg,{"6Y":"6P"})}if(!o.1h.2c){bg.kr=6A;bg.kZ=dG;bg.kv=6g}if(o.1h.xp&&C.2l==1){bg.1z("fO",E(1b){1b.6F=H;if(!L(1b.5R)&&1b.8c.S>0){1b.5R=1b.8c[0].kf;1b.8T=1b.8c[0].nP}o.tz=H;pS=1b;6A(1b);fI(1b)},{5Q:J});bg.1z("fQ",E(1b){1b.6F=H;o.3A=J;1v(E(){o.tz=J},4C);6g(1b);fK(pS)},{5Q:J});bg.1z("2l",E(1b){1b.6F=H});bg.1z("cK",E(1b){if(!L(1b.5R)&&1b.8c.S>0){1b.5R=1b.8c[0].kf;1b.8T=1b.8c[0].nP}pS=1b;o.3A=H;dG(1b);if(o.1h.xp){fI(1b)}},{5Q:J})}B 8O=2E.pU(-C.w/2-C.6M);B b0=2E.pU(-C.h/2-C.aL+C.GG-C.FB);O(bg,{"1a":8O});O(bg,{"1c":b0});if(C.GH==1){yC(bg,C.4X,C.HP,C.Ik)}X.1R(bg);if(C.3S==1){if(1A mS!=="1E"){3S=1t mS();3S.2F(X,C,xn,fZ,8O,b0)}}}E 2n(Z){if(Z!=w){w=Z;o.xo=w;B bd=w/9p.2g;O(bg,{"Z":(w+C.6M+C.6S),"1a":-w/2-C.6M,});O(7L,{"1a":-w/2});O(9p,{"Z":w});O(7L,{"Z":w});B xx=dc.2g*bd;if(xx>9p.2g){xx=9p.2g}O(dc,{"Z":xx});B wp=7r.2g*bd;O(7r,{"Z":wp});do(wp);if(1d=="2F"){IM()}if(C.aB==1){if(5N){B p=5N.HQ(w,wp);kc(p)}F{kc(0)}}if(o.xq){o.xq.2n(w)}if(o.6p){o.6p.2n()}}}E kc(p){if(p>0){1k(7L);pR=H}F{if(pR){1n(7L);pR=J}}}E do(x,y){if(C.3p==1){B cI=C.Ih/2;if(x<cI&&C.fS!=20){x=cI}if(x>w-cI&&C.fS!=20){x=w-cI}B x2=x-w/2-cI+C.10p-C.10q;if(x2>w/2-cI){x2=w/2-cI}if(y==2){7H?O(7H,{"1a":x2}):\'\'}F{O(3p,{"1a":x2})}}}E oN(x){O((x==2?7H:3p),{"2S":"1J("+C.lq+")"})}E 6A(1b){o.Q.lo(19,"6H");if(C.bg==1){if(C.8Q!=-1){B m=1t 5B({"mc":bg,"1F":"8P","to":C.8Q,"18":0.1,"me":(19+"bg")})}if(1X(C.9M)){O(bg,{"2z-1u":C.9M})}if(3S){3S.aY(C,1)}}if(1X(C.xs)){O(7r,{"2z-1u":C.xs})}if(C.3p==1){if(C.Ig==1&&L(C.xy)){if(C.ql==1&&3A){}F{3p.1T="<2o Z=\'"+C.fS+"\' 1e=\'20\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\'>"+C.xy.5Z()+"</2o>"}}if(C.lv==1){if(C.oP==1&&!o.1w){}F{oN()}}F{if(C.pF!=-1){B m2=1t 5B({"mc":3p,"1F":"8P","to":C.pF,"18":0.1,"me":(19+"3p")})}}if(7H){oN(2);do(7x(1b.5R)-7U,2)}if(1X(C.xC)){O(3p,{"2S":"1J("+C.xC+")"})}}if(C.2u==1&&(o.P.1m()>0||1d=="1I"||7S)){kO()}if(C.fB>0){O(bg,{"2S":"3H("+((C.fB-1)/5+1)+")"});xD(C.fB)}if(C.3p==1&&C.y9==1){do(7x(1b.5R)-7U)}if(1d=="1I"){o.U.5t(H);o.5t=H}6H=H;o.dq=H}E xD(x){O(9p,{"2S":"3H("+x+")"});O(dc,{"2S":"3H("+x+")"});aY?O(aY,{"2S":"3H("+x+")"}):\'\';O(7r,{"2S":"3H("+x+")"})}E 6g(){if(!qm){if(C.7z>0){O(aY,{"Z":0})}if(1X(C.xs)){O(7r,{"2z-1u":C.1u})}if(C.bg==1){if(C.8Q!=-1){B m=1t 5B({"mc":bg,"1F":"8P","to":C.5M,"18":0.1,"me":(19+"bg")})}if(1X(C.9M)){O(bg,{"2z-1u":C.4X})}if(3S){3S.aY(C)}}if(C.3p==1){if(C.Ig==1&&L(C.xy)){if(C.ql==1&&3A){}F{3p.1T="<2o Z=\'"+C.fS+"\' 1e=\'20\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\'>"+C.dp.5Z()+"</2o>"}}if(C.lv==1||(C.oP==1&&!o.1w)){O(3p,{"2S":"1J(0)"})}F{if(C.pF!=-1){B m2=1t 5B({"mc":3p,"1F":"8P","to":C.xB,"18":0.1,"me":(19+"3p")})}if(1X(C.xC)){O(3p,{"2S":"1J("+C.lq+")"})}}if(7H){O(7H,{"2S":"1J(0)"})}}if(C.fB>0){O(bg,{"2S":"3H(1)"});xD(1)}if(1d=="1I"&&!o.22){o.U.5t(J);o.5t=J}o.Q.lo(19,"5k")}if(C.aB==1&&5N){5N.5k()}if(C.2u==1&&(o.P.1m()>0||1d=="1I")){oS()}if(o.oY&&1d=="2F"){o.th.1k();o.Id=-1}6H=J;o.dq=J}E bw(1b){1b.6F=H}E Ic(1b){1b.6F=H}E fK(1b){if(1d=="1I"){if(o.7C){qm=H;2B(xF);xF=1v(E(){qm=J;6g()},2h)}}yv();o.3A=J;if(C.3p==1){if(C.ql==1&&L(C.xj)){3p.1T="<2o Z=\'20\' 1e=\'20\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\'>"+C.dp.5Z()+"</2o>"}}cs(1b.5R,1b.8T);o.Q.fC(19);o.Q.fM(1b.5R,1b.8T);xd();1b.6F=H}E fI(1b){3A=H;if(C.3p==1){if(C.ql==1&&L(C.xj)){3p.1T="<2o Z=\'20\' 1e=\'20\' 4h:4g=\'3T://4f.w3.4c/8f/4g\' 4h=\'3T://4f.w3.4c/4i/2o\'>"+C.xj.5Z()+"</2o>"}}gh=7x(lp(bg));7U=7x(hu(bg));cs(1b.5R,1b.8T);if(C.yu==1){if(C.I4==1&&o.1q){6N=H;o.P.2Z(\'ar\')}}6G(2l,1,"no")}E cs(dE,dF){B x;dE=7x(dE);dF=7x(dF);B Ia=2E.5L(26.oV.aS,26.bH.aS);B Ib=2E.5L(26.oV.di,26.bH.di);if(o.1h.2c){}F{dF=dF+Ib;dE=dE+Ia}if(C.bK>0){x=dF-gh-C.6S;2l=x/w;if(C.bK==I9){x=dF-gh-C.6M;2l=x/w;2l=(2l-1)*-1}}F{x=dE-7U-C.6M;2l=x/w;if(C.aJ>134&&C.aJ<10r){x=dE-7U-C.6S;2l=x/w;2l=(2l-1)*-1}}2l>1?2l=1:\'\';2l<0?2l=0:\'\'}G.I5=E(){if(5N){B p=5N.HQ(w);kc(p)}};G.ke=E(){if(5N){B p=5N.dU(w);kc(p)}};E yv(){3A=J;xd()}E xd(){if(C.yu==1){if(C.I4==1&&6N){6N=J;o.P.2v(\'ar\')}}}E dG(1b){7U=7x(hu(bg));if(C.7z>0){B 3E=7x(1b.5R)-7U;O(aY,{"Z":3E});if(C.aB==1){5N?5N.10i(3E):\'\'}}if(C.2u==1&&(o.P.1m()>0||1d=="1I"||7S)){kO();gh=lp(bg);cs(1b.5R,1b.8T);if(1d=="2F"){if(v.ZV==1){if(o.P.5Y()&&o.P.ci().K("?ye")>0){2N.1T=\'- \'+gl((1-2l)*o.P.1m(H))}F{2N.1T=gl(2l*o.P.1m())}}F{B d=o.P.1m();if(v.4t>0){d=d-v.4t*1}B ba=\'\';if(C.aB==1&&5N){ba=5N.2u(2l*d);ba!=\'\'?ba=ba+\'<br>\':\'\'}if(o.dL&&o.I3){2N.1T=o.dL.Tm(o.I3+2l*d*2h)}F{2N.1T=ba+gl(2l*d)}}}if(1d=="1I"||7S){2N.1T=vX(2l)}9A(1b)}if(o.oY&&1d=="2F"&&o.th){yl=1b;if(!gi||v.I2!=1){yj()}if(v.I2==1){2B(gi);gi=1v(yj,50)}}if(C.3p==1){(C.y9==1||3A)?do(7x(1b.5R)-7U-C.6M):\'\';if(7H){do(7x(1b.5R)-7U,2)}}}E yj(){2B(gi);gi=1E;if(C.2u==0){gh=7x(lp(bg));7U=7x(hu(bg));cs(1b.5R,1b.8T)}6H?o.th.cX(yl,w,2l,7U):\'\'}E 9A(1b,t,l){B tw=2N.2g;B 1a=(-w/2+(7x(1b.5R)+26.oV.aS-7U)-tw/2)+(l?l:0);B kI=0;if(v.zW!=1){if(1a+w/2+tw+10>o.2V){kI=1a;1a=o.2V-w/2-tw-10}if(1a+o.2V/2<0){kI=1a;1a=-o.2V/2}}if(1a>w/2-tw/2){1a=w/2-tw/2}if(1a<-w/2){1a=-w/2}B x={"1c":(-2N.2Y-C.I1*1-C.pg-C.y5)-(C.I0==1?(C.h/2)*(C.fB>0?C.fB:1):0)+(t?t:0),"1a":1a};O(2u,x);if(C.f6==1){O(8n,{\'1r\':\'2C\',\'1a\':2N.2g/2-4+(kI!=0?kI-1a:0),\'1c\':2N.2Y-6})}}G.kO=E(e,x,t,l){kO();2N.1T=x;9A(e,t,l)};E kO(){if(!6d(2u)||2u.C.1D==0){1n(2u);O(2u,{"1D":1})}}G.oS=E(){oS()};E oS(){1k(2u);O(2u,{"1D":0})}G.c=E(){I X};G.s=E(19){I C[19]};G.ss=E(x,x2){I C[x][x2]};G.g=E(x){c4(x){1j"Z":I w;1g;1j"ZK":I 9p.2g;1g;1j"1e":I C.h;1g;1j"x":I 5g(X.C.1a);1g;1j"y":I 5g(X.C.1c);1g;1j"1D":I X.C.1D?X.C.1D:1;1g;1j"1n":I 4r;1g;1j"3w":I 3w;1g;1j"3H":I 3H;1g;1j"1d":I 1d;1g;1j"19":I 19;1g;1j"x0":I x0;1g;1j"y0":I y0;1g;1j"2l":I 2l;1g;1j"g7":I 7S;1g;6P:I J}};G.1Q=E(19,x){c4(19){1j"1n":4r=x;1g;1j"3A":3A=x;1g;1j"2i":1d=="2F"||C.1k==1?O(X,{"5H":(x?"4r":"3h")}):O(X,{"2i":(x?"4E":"1P")});4r=x;1g;1j"3w":O(X,{"2S":"3w("+x+")"});3w=x;1g;1j"3H":O(X,{"2S":"3H("+x+")"});3H=x;1g;1j"1D":O(X,{"1D":x});1g;1j"1a":O(X,{"1a":x});1g;1j"1c":O(X,{"1c":x});1g;1j"2l":2l=x;1g;1j"dQ":C.dQ=x;1g;1j"Z":O(X,{"Z":x});1g;1j"1e":O(X,{"1e":x});1g;1j"ys":C.ZU=x;1g;1j"x":O(X,{"1a":x});1g;1j"y":O(X,{"1c":x});1g;1j"x0":x0=x;1g;1j"y0":y0=x;1g}};G.2n=E(x){2n(x)};G.nQ=E(x){};G.fT=E(bJ,bL){if(3A){if(1d=="1I"||7S||C.yu==1){cs(bJ,bL);o.Q.fC(19)}if(1d=="1I"){o.7C=H}cs(bJ,bL);6G(2l,1,"no")}};G.fM=E(bJ,bL){if(3A){yv();3A=J;cs(bJ,bL);o.Q.fC(19);6G(2l,1,"no")}};E 6G(18,1m,x){18<0?18=0:\'\';if(v.4t>0&&1m>1){1m=1m-v.4t;18=18-v.4t}if(C.3p==1&&C.oP==1&&C.lv!=1){if(!C.HZ&&18>0){oN();C.HZ=H}}if(3A&&1m!=1){}F{B 3E;if(1m>0&&18>0){if(18>1m){18=1m}3E=w*(18/1m);if(3E==7r.2g){3E=-1}}F{3E=0}if(3E>=0){O(7r,{"Z":3E});if(C.y9==1&&6H&&!x){}F{do(3E)}if(C.aB==1){if(5N){5N.cA(3E)}}}if(L(cU)){if(1m<2&&1d=="2F"){if(l1){3m(cU);l1=J}}F{if(!l1){5W(cU);l1=H}cU.1T=1d=="2F"?3V(18==0?1m:18):vX(18)}}}};G.6G=E(18,1m,x){if(1m!=HY||18!=HX||x){6G(18,1m,x)}};G.HW=E(){2l>1?2l=1:\'\';2l<0?2l=0:\'\';O(7r,{"Z":(2l*w)})};G.HV=E(18,1m){B 3E=0;if(1m>0&&18>0){3E=w*(18/1m);3E>w?3E=w:\'\';O(dc,{"Z":5g(3E)});HU=1m;xQ=18;if(C.aB==1){if(5N){5N.8C(3E)}}}F{xQ=0;O(dc,{"Z":0})}if(C.aB==1){if(5N){5N.8C(3E)}}};G.ku=E(x){if(C.6p==1){if(!o.6p){if(x!=0){if(1A HT!=="1E"){o.6p=1t HT(X,C,x);o.az=H}}}F{if((!L(x)||x==0)&&o.az){o.6p.1k();o.az=J}F{if(!o.az||(L(x)&&x!=1&&x!=0)){o.6p.xR(x);o.az=H}}}}};E HS(){o.cX=1Z("2e");O(o.cX,{\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'Z\':v.HR,\'1e\':v.Il,\'6t\':\'3h\',"4I-3l":"1P","2z-1u":"#hj","2R-7b":v.I6+\'px\',"2i":"1P"});o.cX.id="ZA"+v.id;if(v.Im==1){O(o.cX,{"2R":v.IE+"px 6K "+xL(\'1u\',v.IG)})}if(v.IH==1){O(o.cX,{"7D-a7":"gv 4s kT 5i(0,0,0,0.5)"})}o.cX.C.5a="lm";X.1R(o.cX)}E po(){2u=1Z("2e");O(2u,{\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'1e\':\'2A\',"4I-3l":"1P","1D":0,"5j":"1D 0.1s 3f"});C=4o(C,\'kR\',\'kR\');2N=1Z("2e");O(2N,{\'1r\':\'2C\',\'2U-1a\':C.xU,\'2U-2r\':C.II,\'2U-1c\':C.pg,\'2U-2P\':C.y5-1,\'1B-8A\':\'8o\',\'1u\':C.y6,\'4a-fc\':gy(C.xK),\'4a-3R\':C.w6*2t(v.8B,1),\'kX-f3\':C.wR+\'px\',\'2F-1e\':"1",\'2z-1u\':6f(C.kG,C.kh),\'2R-7b\':C.vL});C.IJ?C.f6=C.IJ:\'\';if(C.f6==1){8n=1Z("2e");8n.1T=\'<2o Z="aH" 1e="vQ" vR="0 0 8 6" 8l="1.1" 4h="3T://4f.w3.4c/4i/2o" 4h:4g="3T://4f.w3.4c/8f/4g"><f4 id="IK" 4d="1P" 6k="\'+3v(C.kG)+\'" 6k-IL="IF" 7M="0 0 8 0 4 6"></f4></2o>\'}X.1R(2u);2u.1R(2N);if(C.f6==1){2u.1R(8n);O(8n,{\'1D\':C.kh})}2u.C.5a="2h"};E IM(){if(o.3i&&v.cB==1&&!o.1w&&!2l){B f=o.3i.bo();if(f.t&&f.d){o.qF=f.d;6G(f.t,f.d)}}};E vX(x){B y=2E.4u(x*100);if(1d=="1I"){if(v.qI>1&&!7S){y=y*v.qI+\'%\'}}if(7S){if(o.kJ){I(7S&&1X(C.2N)?C.2N+\'&ho;\':\'\')+41(x*o.5T.4N(-1)[0]).vY(1)}if(o.IO){I(7S&&1X(C.2N)?C.2N+\'&ho;\':\'\')+o.qO}}I y};G.4m=E(){X.3j(7L);if(bg){bg.dv("hq");bg.dv("kr");bg.dv("kv");bg.4l.3j(bg);bg=1Y}if(3p){X.3j(3p)}if(7H){X.3j(7H)}if(X.4l==o.1O){o.1O.3j(X)}F{if(o.1o){if(X.4l==o.1o){o.1o.3j(X)}}}X=1Y}};B vT=E(1c){B i;B C=[];B w;B h;B 4r=H;B 3w=1;B 3H=1;B x0=0;B y0=0;B bf=5E(qB,ZB);B 1d,19="bg";B 1F="ZC";if(1c==H){C["1r"]=\'1c\';C.h=2t(v.1o.ZD,50);C.a=2t(v.1o.ZE,0.5);C.1u=2t(v.1o.ZF,\'#hj\')}F{C["1r"]=v.1o.1r;V(B k in v.1o){if(v.1o.2x(k)){C[k]=v.1o[k]}}}if(C.1n==0){v.1o.h=C.h=0;C.2U=C.2Q="0 0 0 0";C.4O=0}C["1J"]=1;C=4o(C,\'2Q\',\'2Q\');if(1X(C.IN)&&o.a1){C=4o(C,\'2Q\',\'IN\')}if(C.ZG==1){C.4G+=\'%\';C.4M+=\'%\'}B X=1Z("2e");if(C.9X==1&&C.4O==0){C.a<1?C.wB=C.a:C.wB=0.2;v.1o.a=C.a=1}F{C.9X=0}O(X,{\'1r\':\'2C\',\'1a\':0,\'1c\':0,\'Z\':(C.l5==1||1c?\'100%\':o.bb),\'1D\':C.a,\'4I-3l\':\'1P\',\'eg\':\'oi\',\'r3\':\'kA\'});o.1O.1R(X);B bg=1Z("2e");O(bg,{\'1e\':C.h-(C.1r!=\'1c\'?C.dC+C.bj:0),\'2i\':\'4E\',\'2Q-1a\':C.4G,\'2Q-2r\':C.4M,\'2R-7b\':C.7p});if(C.k6>0){B k6=\'4s 6K \'+6f(2t(C.ZH,\'3G\'),C.k6);if(C.ZI==1){O(bg,{\'2R-1c\':k6})}F{O(bg,{\'2R\':k6})}}if(C.vz>0){O(bg,{"Z":C.vz});if(C.Zz==1){O(bg,{\'gL\':\'2r\'});C.Io>0?o.IC=H:\'\'}}X.1R(bg);w=X.2g;v.dy=-C.bj;if(C.4O==1||1c){if((C.1u==\'3Y\'||v.1o.a2!=\'\')&&!1c&&C.dC==0){if(C.1r!=\'1c\'){v.dy=98-C.h}B 3I=\'28:a2/vE;ln,ZJ+ZL/T/D+ZM/ZN/ZO==\';if(v.1o.a2.K("28:a2")>-1){3I=v.1o.a2}O(bg,{\'1e\':C.h+(C.1r!=\'1c\'?v.dy:0),\'2z\':\'Y(\'+3I+\') fn-x 50% 100%\',\'2z-3R\':\'2A\'})}F{B gD=(1c?\'to 1c, \':\'to 2P, \')+6f(C.1u,0)+\', \'+6f(C.1u,1);O(bg,{\'2z\':\'-lE-3f-4O(\'+gD+\')\',\'2z\':\'-3Q-3f-4O(\'+gD+\')\',\'2z\':\'-ms-3f-4O(\'+gD+\')\',\'2z\':\'-o-3f-4O(\'+gD+\')\',\'2z\':\'3f-4O(\'+gD+\')\'})}}F{if(C.9X==1){O(X,{\'kg-7a\':\'9X(aH)\'});O(bg,{\'1D\':C.wB})}O(bg,{\'2z-1u\':C.1u})}if(1c){O(X,{"5j":"1D 0.2s 6L-5k"})}G.h=E(){I C.h-(C.1r!=\'1c\'?C.bj:0)};G.c=E(){I X};G.s=E(19){I C[19]};G.g=E(x){if(X){c4(x){1j"w":X.2g>0?w=X.2g:\'\';I w;1g;1j"Z":I X.2g;1g;1j"1e":I X.2Y;1g;1j"x":I 5g(X.C.1a);1g;1j"y":I 5g(X.C.1c);1g;1j"1D":I X.C.1D?X.C.1D:1;1g;1j"1n":I 4r;1g;1j"3w":I 3w;1g;1j"3H":I 3H;1g;1j"19":I 19;1g;1j"x0":I x0;1g;1j"y0":I y0;1g;1j"bf":I 19+bf;1g;6P:I J}}F{I J}};G.1Q=E(19,x){c4(19){1j"1n":4r=x;1g;1j"w":w=x;1g;1j"Iv":O(bg,{"Z":x});1g;1j"2i":O(X,{"2i":(x&&v.wM!=1?"4E":"1P")});4r=x;1g;1j"1J":O(X,{"2S":"1J("+x+")"});3w=x;3H=x;1g;1j"3w":O(X,{"2S":"3w("+x+")"});3w=x;1g;1j"3H":O(X,{"2S":"3H("+x+")"});3H=x;1g;1j"1D":O(X,{"1D":x});1g;1j"1a":O(X,{"1a":x});1g;1j"1c":O(X,{"1c":x});1g;1j"Z":O(X,{"Z":x});1g;1j"1e":O(X,{"1e":x});1g;1j"x":O(X,{"1a":x});1g;1j"y":O(X,{"1c":x});1g;1j"x0":x0=x;1g;1j"y0":y0=x;1g}};G.4m=E(){o.1O.3j(X);X=1Y}};if(1A(2D)=="4F"){Iq()}o.G=G;if(2D.id){if(26.he(2D.id)){wc()}F{26.1z(\'ZP\',h6)}}F{1A In==\'E\'?In():\'\'}E wc(){if(L(2D.id)){if(26.he(2D.id)){if(!Lz(26.he(2D.id))||2D.4r==1){2D.ZQ==1?1v(h6,50):h6()}F{1v(wc,50)}}}}E h6(){V(B i=0;i<1y.4V.S;i++){if(L(1y.4V[i])){if(1y.4V[i].2O("id")==2D.id){if(1y.4V[i].2O("8r")){1y.4V[i].2O(\'2H\')}}F{if(v.ZR==1&&1y.4V[i].2O("v","3g")==1){2D.3g=0}}}}1y.4V.2I(o.G);B 2H=J;o.v0=kx(v);2D.9O?2D.3c=2D.9O:\'\';if(L(2D.3c)){V(B i=2;i<10;i++){if(2D.3c==i&&o[\'u\'+i]!=\'\'){v=aE(v,5e.7y(dP(o[\'u\'+i])));2H=H}}}if(o.u!=\'\'&&!2H){v=aE(v,(1A o.u!="3u"?5e.7y(dP(o.u)):o.u))}if(1A(ZS)!="E"){V(B 19 in 2D){if(2D.2x(19)){if(19.K("HN")==0||Hd(19)){2D[19]=1Y}}}}v=aE(v,2D);o.1L=26.he(v.id);if(v.kD==1&&v.ZT==1&&1A(wg)=="E"){uI(o.1L,"Zy");if(!wg()){1y.26.1z("9b",wg,{5Q:J})}}F{Hb()}}E Hb(){B wi=v.29;if(v.YJ==1&&L(v.29)&&L(wi)){v.29!=\'\'?v.29=wi:\'\'}if((!L(v.3e)||v.3e==\'\')&&v.XX==1){1l(\'5S\');I}if(v.Ha==1||v.wl==1){1y.1z(\'9N\',E(1b){B x=1E;B y;L(1b.28.18)?x=1b.28.18:\'\';L(1b.28.1I)?x=1b.28.1I:\'\';L(1b.28.H9)?y=1b.28.H9:\'\';L(1b.28.2O)?y=1b.28.2O:\'\';if(y&&1X(v.H8)){B pm=v.H8.1N(/\\s+/ig,\'\').2q(\',\');if(pm.K(y)==-1){I}}if(v.wl==1){if(1A(H4)=="E"){H4(1b)}}if(y&&o.8w){if(L(1b.28.1Q)){x=1b.28.1Q}B z=3r(y,x);1y.9F.lK({1b:y,YI:z},\'*\')}})}V(B 19 in o.fi){if(o.fi.2x(19)){o.fi[19]!=\'\'?o.ll+=o.fi[19]+\' \':\'\'}}1l(o.8l+\' \'+o.ll);1y.e2=v.id;o.d=8N.wT;o.hs=8N.XB;if(!v.4S&&7s([o.hs],\'#1q-\')){v.4S=o.hs.1i(o.hs.K(\'#1q-\')+6)}if(9F){B lz=J;2T{if(9F){if(9F.26){B lC=9F.26.c9("H1");V(B i=0;i<lC.S;i++){if(lC[i].kP===1y){o.8J=lC[i];o.mT=H;v.H0!=1?O(o.8J,{"2R":"1P"}):\'\';o.GY=o.8J.C;1l("e6")}}}F{lz=H}}}2G(eJ){lz=H}if(lz){o.mT=H;1l("XC-lb")}}o.mT&&26.nq?o.lb=26.nq.2q(\'/\')[2]:\'\';!o.GX?GW():\'\';if(1A(GV)=="E"){if(GV()){I}}o.8w=H;GU();B GS=1t 6U();if(GS.XD()==20){if(5E(1,20)==10&&v.XE!=0){zR(o.zT,o.zT);1v(E(){if(1y.ga){ga(\'gZ\',\'UA-XF-6\',\'2A\',{\'6c\':\'7e\',\'XG\':H});ga(\'XH\',\'GO\');ga(\'GO:XI\',[o.d]);ga(\'7e.h4\',\'1b\',{XJ:\'yE\',XA:\'h6\',XK:o.d})}},kM)}}if(!o.1L){v.1l=1;1l(\'id "\'+v.id+\'" h7 ox\');I J}o.1L.1T=\'\';O(o.1L,{\'2U\':0,\'XM-f3\':\'h8\'});o.9l=o.1L.2Y;o.9o=o.1L.2g;if(L(v.kF)&&!L(v.5h)){if(L(v.kF.5h)){v.5h=v.kF.5h}if(L(v.kF.oI)){v.oI=v.kF.oI}}if(o.1L.C.Z.K("%")>-1){o.XN=o.1L.C.Z}if(v.5h=="6X"||o.1L.C.1e.K("%")>-1){v.5h="%";o.n5=o.1L.C.1e;o.9l=0}if(o.9o==0){if(o.1L.C.Z.K("px")>0){o.9o=2L(o.1L.C.Z)}F{if(o.1L.4l.C.Z.K("px")>0){o.9o=2L(o.1L.4l.C.Z)}F{if(o.1L.4l.4l.C.Z.K("px")>0){o.9o=2L(o.1L.4l.4l.C.Z)}}}}if(6T(v.5h).K("x")>0){o.5h=v.5h.2q("x")[0]/v.5h.2q("x")[1];if(o.9l==0){o.9l=o.9o/o.5h}}F{o.5h=0}O(o.1L,{\'1r\':\'gP\',\'7D-kj\':\'zM-7D\',\'1B-8A\':\'1a\',\'-3Q-GZ-XO\':\'1P\',\'zf\':gy(\'oG-oF\'),\'94-1e\':15,\'eg\':14*2t(v.8B,1),\'2F-1e\':\'kA\',\'Hq\':\'Hp\',\'1u-HM\':\'1P\'});if(v.a7==1){O(o.1L,{\'7D-a7\':\' 0 HL XP 5i(50,50,93,.1), 0 kT HL 5i(0,0,0,.XQ)\'})}if(o.5h>0){O(o.1L,{\'1e\':o.9l})}F{O(o.1L,{\'1e\':o.9l==0?o.n5:o.9l})}if(o.9o==0){O(o.1L,{\'Z\':\'100%\'})}o.1O=1Z("2e");O(o.1O,{\'1r\':\'2C\',\'7D-kj\':\'zM-7D\',\'8j\':v.oy,\'1u\':\'#3G\',\'Z\':\'100%\',\'1e\':\'100%\',\'1a\':0,\'1c\':0,\'eg\':\'oi\',\'2F-1e\':\'kA\'});if(v.zW!=1){o.1O.C.6t=\'3h\'}if(v.XR==1){o.1O.C.8j=\'eO\'}o.O=26.1Z(\'C\');o.O.1F=\'1B/O\';o.1O.1R(o.O);o.1O.7i("id",\'XS\'+v.id);kH(1);if(1y.HH){B HF=1t HH(E(e){if(e[0].yH.S>0){V(B i=0;i<e[0].yH.S;i++){if(e[0].yH[i]==o.1O){pY()}}}});HF.XT(o.1L,{XU:H})}o.eS=1Z(\'e6\');3P(o.eS,{"id":"HA"+v.id,"HB":"no","1S":"HA"+v.id,"Hy":"H","Hh":"H","Hv-oh":"H"});O(o.eS,{\'1r\':\'2C\',\'Z\':\'100%\',\'1e\':\'100%\',\'2R\':0,\'4I-3l\':\'1P\'});if(v.2R==1){if(v.XL==1){O(o.eS,{"7D-a7":"gv gv gv "+v.zA+"px "+v.8x+" Xy",\'5a\':2})}F{O(o.1L,{\'2R\':v.zA+\'px 6K \'+v.8x})}}if(!26.Xn(\'.yX\')){B 1H="";if(v.Hs==1){V(B i=1;i<6;i++){if(1X(v[\'1u\'+i])){1H+=\'--Xx\'+i+\':\'+6f(v[\'1u\'+i],v[\'6v\'+i+\'a\'])+\';\'}}}ki("4B, 4B > *{2z:1P;2R:0;-3Q-Xe-5H: 3h;1r: nd;1c: 2A;1a: 2A;6t:4r;Hq:Hp!6a;5L-Z:1P!6a;eK-1d: Xf;2S-Xg: 8o 8o;7D-kj:zM-7D!6a;-3Q-Hn-Hl-1u: 5i(0,0,0,0);-3Q-Hn-Hl-1u: eO;1B-Xh:0!6a;"+1H+"}4B 3I,4B dB,4B 5f {5L-Z:1P;6t: Xi}4B > *:5U{Xj: 1P} 4B,4B a,4B a:Xk,4B a:Xl,4B a:ea,4B a:d3,4B a:5U{1u:#ht;4a-3R:100%;}4B e6{2R:0}4B e6{2i:4E!6a;5L-1e:1P!6a;2z:eO}.yX{}4B 2o{2Q:0;2i:aG}4B yK{2i:1P}");o.1O.7i(\'Xd\',\'yX\')}o.1O.1R(o.eS);o.5c?o.5c.2O(\'8w\'):\'\';o.1L.Xm=E Xo(e){o.nj++;if(o.nj==5){v.1l=1;1l(o.8l+\' \'+o.ll+\' \'+o.lk)}if(!e)B e=1y.1b;e.6F=H;if(e.aW)e.aW();B x=e.kf-hu(o.1O);B y=e.nP-lp(o.1O);if(v.Xp==1){if(L(v.nM)){if(4z(v.nM)!=\'\'){o.yP=v.nM;L(v.Hi)?o.f9=v.Hi:\'\';v.nM==\'1P\'?o.f9=o.d:\'\'}}}zD(x,y);I J};E zD(x,y){if(o.f9.K(o.d)==-1||v.Hj==1||v.4R==1){if(!L(o.4R)){!v.nI?v.nI="3Y":\'\';!v.rV?v.rV="3G":\'\';o.4R=1Z(\'2e\');B 1H;B n=0;V(B i=0;i<10;i++){if((v[\'rm\'+i]==1&&v.4R==1)||i==9){if((L(v[\'rm\'+i+\'t\'])&&L(v[\'rm\'+i+\'a\'])||i==9)){1H=1Z("zh");if(i==9){if(v.Xq!=1){1H.yS=o.yP+(v.Hm==1?" "+o.8l:\'\')}F{1g}}F{1H.yS=v[\'rm\'+i+\'t\']}if(i!=9){if(v[\'rm\'+i+\'a\'].K(",0/1")>-1||v[\'rm\'+i+\'a\'].K(",1/0")>-1){B z=v[\'rm\'+i+\'a\'].2q(\',\');1H.yS+=\' (\'+(3r(z[0].1i(4))==1?2M(\'on\'):2M(\'6X\'))+\')\'}if(v[\'rm\'+i+\'a\'].K("3b")==0){o.fk=H;!o.3b?o.Q.Ho():\'\'}}1H.7i("i",i);GM(1H);1H.1z("2l",HG);o.4R.1R(1H);n++}}}O(o.4R,{"1B-2S":"Xr","2F-1e":"1","bn-9c":"eR","2z":6f(v.nI,0.7)});if(n>1){O(o.4R,{"2U":"kT"})}o.4R.C.5a="Xs";o.4R.kZ=Hz;o.1O.1R(o.4R)}F{5W(o.4R)}O(o.4R,{"1r":"2C","1c":y,"1a":x,"1B-8A":"1a"});B zx=J;if(o.2V-x<o.4R.2g-20&&v.zW!=1){O(o.4R,{"1a":x-o.4R.2g});zx=H}if(v.Xt==1||zx){O(o.4R,{"1B-8A":"2r"})}o.Hx=x;o.Hf=y;2B(o.nn);o.nn=1v(E(){3m(o.4R)},4i)}}E Hz(){2B(o.nn);o.nn=1v(E(){3m(o.4R)},4i)}E HG(e){B i=e.4w.8b("i");B y;B s8=J;if(i>0){if(i==9){o.f9!=\'\'?1y.6w(o.f9):\'\'}F{B x=v[\'rm\'+i+\'a\'];if(x){if(x.K("2O:")==0){if(x.K(",0/1")>-1||x.K(",1/0")>-1){B z=x.2q(\',\');B b=o.Q.zE(x,"3a");B u=3r(z[0].1i(4),z[1],b);js(z,u);zJ();zD(o.Hx,o.Hf);s8=H}F{y=x.2q(",");3r(y[0].1i(4),(L(y[1])?y[1]:1Y))}}if(x.K("3b:")==0&&o.3b){o.3b.2O(x.1i(6))}if(x.K("js:")==0){y=x.2q(",");2f(y[0].1i(3)+\'(\'+(L(y[1])?\'"\'+y[1]+\'"\':\'\')+(L(y[2])?\',"\'+y[2]+\'"\':\'\')+\')\')}if(x.K("Y:")==0){x=x.1N(/\\(Y\\)/g,He());x=x.1N(/\\(Xu\\)/g,GK(L(v.GL)?v.GL:26.nq));x=x.1N(/\\(1S\\)/g,o.df);x=x.1N(/\\(7n\\)/g,v.7n);1y.6w(x.1i(4))}}}!s8?3m(o.4R):\'\'}}E GM(x){O(x,{"2U":"GN kT","4a-3R":(v.GP?v.GP:"55")*2t(v.8B,1)+"%","kX-f3":"0.Xv","1D":0.9,"1u":v.rV});x.1z("nG",GQ);x.1z("nH",GR)}E GQ(e){O(e.4w,{"1D":1});O(e.4w,{"2z":6f(v.nI,0.5)})}E GR(e){O(e.4w,{"1D":0.9});O(e.4w,{"2z":"1P"})}o.1h=1t GT();if(o.1h.4x){B sz=(v.GJ==1?\'*::-3Q-P-Q-1w-Xw-e5 {2i: 1P!6a;-3Q-sD: 1P;}\':\'\');if(v.kN==1&&v.H2!=1&&(v.H3!=1||!o.1h.7t)&&(v.H5!=1||!o.1h.kS)){}F{if(o.1h.4x&&v.fp==1){}F{sz+=\'dB::-3Q-P-Q {2i:1P !6a;}*::-3Q-P-Q-XV {2i: 1P!6a;-3Q-sD: 1P;}*::6Z(3Q-P-Q-1q-e5){2i: 1P!6a;-3Q-sD: 1P;}\'}}B 1H=26.1Z(\'C\');1H.1F=\'1B/O\';1H.1R(26.H6(sz));o.1O.1R(1H)}if(o.1h.H7){v.3g==1&&v.Xz==1?v.3g=0:\'\'}if(o.5h==0){if(o.1O.2Y==15&&!o.n5&&v.Hc>0){O(o.1L,{"1e":v.Hc})}}if(L(v.kk)){v.W.cp=v.kk}if(L(v.n9)){v.W.n8=v.n9}if(L(v.1w)){o.2b=v.1w}if(L(1y.Hg)&&v.XW==1){1y.Hg(gc)}F{gc()}}E gc(){1l("gc");o.U=1t HO();if(!v.3e){v.3e="?"}if(v.pl){v.3e=v.pl+o.ek}o.Ym=nc();o.Ip=0;o.4T=Ir();if(o.4T){if(3x.5A("rN")!=1Y){o.rG=3x.5A("rN")}F{o.rG=nc();3x.7V("rN",o.rG)}if(v.rl==1){if(3x.5A("rB")!=1Y){o.3X=3x.5A("rB");if(1X(v.cj)){if(v.cj.K(o.3X)>-1){o.3X=1Y}}}}if(v.Is==1){if(3x.5A("rr")!=1Y){v.b7=3x.5A("rr")}}V(B i=0;i<o.b4.S;i++){if(v[\'It\'+o.b4[i]]==1){if(3x.5A("Iu"+o.b4[i])!=1Y){}F{v[o.b4[i]+\'s\']=0}}}8a("Yo");8a("Yp")}o.kB=o.9s.1i(o.9s.K("://")+3);if(o.kB.K("#")>0){o.kB=o.kB.1i(0,o.kB.K("#"))}if(o.4T&&v.cB==1){o.3i=1t Yq()}if(v.kD==1){o.5H=v.Yr;uI(o.1L,"5H",H)}v.gp==1&&v.kD==1?o.gp=1t Ys():\'\';v.ab==1?Yt():\'\';if(v.Yu==1){o.ca=1t Yv();o.ca.aT()}o.P=1t ut(v.3e);if(!o.1h.2c||v.gr==1){o.1O.1z("Yw",E(){o.4j=H;o.oE=H;o.Q?o.Q.Iy():\'\'});o.1O.1z("Yn",E(e){if(!o.3A){if(v.1o.7Z>0){2B(o.nS);o.nS=1v(E(){if(o.4j!=o.oE){o.4j=o.oE;o.Q.ve()}},v.1o.7Z*2h)}F{o.4j=J}o.oE=J;if(o.Q){o.Q.nQ()}}})}if(!o.1h.2c){o.1O.1z("Iz",E(e){if(!o.kz){o.3A=H}});o.1O.1z("9I",E(e){if(!o.kz){o.3A=J;if(!o.5t){o.7C=J;o.eN=J}if(o.1h.eK&&o.1h.gr&&o.22){1v(E(){o.4j=J;o.Q.ve()},4e)}1v(E(){o.5U=H},4e);if(o.1h.2c&&o.Q.eA()){}F{o.Q?o.Q.fM(e.5R,e.8T):\'\'}if(v.gg==1){if(o.Q.cT()){o.Q.9a()}}}});o.1O.1z("ts",E(e){if(!o.kz){if(L(o.Q)){if(o.3A){o.Q.fT(e.5R,e.8T)}F{o.Q.nZ()}}}})}if(o.1h.2c){1y.1z("Yx",J0,J)}v.vd==1&&1A IA==\'E\'?o.vd=1t IA():\'\';v.Yz==1&&1A IB==\'E\'?IB():\'\';o.46.1z("fO",E(e){if(e.8c){o.fF=e.8c.S}o.3A=H;o.4j=H;o.nX=J;o0("1w",e)},{5Q:H});o.46.1z("cK",E(e){if(e.8c){o.fF=e.8c.S;if(o.fF>1){o.uX=1}}if(o.3A){o.nX=H;o0("YA",e)}},{5Q:H});o.46.1z("fQ",E(e){o.3A=J;2B(o.nS);o.nS=1v(E(){o.4j=J},(v.1o.7Z>0?v.1o.7Z:0.5)*2h);if(v.mb==1){B fE=1t 6U().ae();if(fE-o.aF<(v.ls?v.ls:0.3)*2h){qQ(e)}}!o.nX&&o.fF<2&&o.uX!=1?eZ(e):\'\';o.nX=J;o.fF=0;if(e.8c.S==0){o.fF=0;o.uX=0}o0("4k",e)},{5Q:H});2T{1y.26.1z("9I",E(e){o.5U=J;if(!o.5t){o.7C=J;o.eN=J}if(o.3A&&o.Q){o.3A=J;o.Q.fM(e.5R,e.8T);o.Q.nQ()}if(!o.4j&&!o.1h.2c&&!o.1h.tv){if(o.Q){o.Q.cL();o.Q.IT()}if(o.2J){o.2J.bu()}}if(o.Q&&!o.tz&&!o.4j&&o.1h.2c&&v.YB==1){!o.Q.eA()?o.Q.da():\'\'}})}2G(eJ){}1y.26.1z("ts",E(e){if(o.Q){if(o.3A){o.Q.fT(e.5R,e.8T)}F{if(o.22&&o.tr){o.Q.nZ()}}}});if(!o.1h.tv){o.1O.1z("fO",E(e){o.kz=H;if(!o.1h.2c){1l("tr");o.tr=H}o.eK=H;o.3A=H},{5Q:H});o.1O.1z("fQ",E(e){o.eK=J;o.3A=J},{5Q:H});1y.26.1z("cK",E(e){if(o.Q&&o.eK){o.Q.fT(e.8c[0].kf,e.8c[0].nP)}},{5Q:H})}1y.26.1z("YC",E(e){B x=e.4w.lx.lO();if(x==\'t0\'||x==\'IR\'||x==\'IQ\'){I}F{o.Q?o.Q.IS(e):\'\'}});1y.26.1z("YD",E(e){B x=e.4w.lx.lO();if(x==\'t0\'||x==\'IR\'||x==\'2e\'||x==\'IQ\'){I}F{o.Q?o.Q.IP(e):\'\'}});if(o.8J){ue(9F.26,Lk)}ue(26,J7);E ue(x,z){B y=[\'\',\'lE\',\'3Q\',\'ms\',\'YE\'];if(x){V(B i=0;i<y.S;i++){x.1z(y[i]+(i<y.S-1?"YF":\'\'),z,J)}}}if(!L(o.eS.kP)){1l("YG");I}F{o.eS.kP.1z(\'4Z\',pD,H)}o.46.1z("2l",E(e){!o.kz?eZ(e):\'\'},J);if(v.qT==1&&v.mb==1){o.46.1z("I7",qQ,J)}pb();if(o.4T&&v.I8==1){if(3x.5A("tM")!=1Y){o.3C.x=3x.5A("tM")*1;o.3C.y=3x.5A("Ie")*1;o.P.eL()}}if(v.3O){v.3O.on==1?o.3O=1t YH():\'\'}v.5c==1?o.5c=1t Yy():\'\';v.gS==1?o.gS=1t Yl():\'\';o.Q=1t Ii();if(v.cO.Ij){o.my=v.cO.F5}c7();cW();if(o.4T){if(v.tC==1&&v.1I!=0&&!o.1h.2c){if(3x.5A("t6")!=1Y){v.1I=3x.5A("t6")}if(3x.5A("kC")==1&&v.mC==1){v.51=1}}if(v.Fc==1){B sp=3x.5A("Fe");if(L(sp)){if(sp.K(\'.\')>0&&o.kJ){o.U.91(sp,1)}F{if(o.5T){B mu=7s(o.5T,sp,H);if(mu!=-1&&o.Q.Ff(\'59\')){o.al=mu;o.P.91(o.5T[mu])}o.Q.Fg()}}}}B uW=J;if(v.uS==1){V(B j=0;j<o.cq.S;j++){if(3x.5A("mH"+o.cq[j])!=1Y){v[o.cq[j]]=3x.5A("mH"+o.cq[j]);uW=H}}}if(o.1h.2c){if(!uW){1X(v.Fi)?v.ex=v.Fi:\'\'}if(L(v.F4)){v.mJ=v.F4;1X(v.Fj)?v.mK=v.Fj:\'\'}}}if(o.3i){B f=o.3i.bo();if(f.t&&f.d){o.Q.k8(f.t,f.d);o.Q.4b(f.t,f.d);v.1m=f.d}}o.U.42(v.1I);if(v.51==1){o.U.5b();o.Q.4L()}if(L(v.Fv)){3r("59",v.Fv)}o.ax=1t uM();if(v.7p>0){O(o.1L,{"2R-7b":(v.7p+"px")});O(o.1O,{"2R-7b":(v.7p+"px")})}if(L(v.6J)){rp("6J")}if(L(v.ej)){rp("ej")}if(L(o.W)){js("W")}if(v.8E==1&&v.Ya==1){o.U.mG()}V(B i=2;i<10;i++){if(L(v["9O"+i])){if((v["9O"+i]=="2c")&&o.1h.2c){3r("9O",i)}}}v.G9>0&&o.1h.2c?3r("9O",v.G9*1):\'\';1v(pD,4e,H);1v(E(){js("8w");if(v.3Z){if(1A v.3Z==\'E\'){v.3Z=v.3Z.6c};2f(v.3Z+(v.3Z.K(\'()\')==-1?\'("\'+v.id+\'")\':\'\'))}},1)}E eZ(e){if(o.r9[o.46]>2){I}o.d8=H;v.ls==0?v.mb=1:\'\';if(o.qM&&v.eD==1&&!o.1h.tv){qQ(e)}F{B t=(v.ls?v.ls:0.35)*2h;qV();2B(o.Gi);o.Gi=1v(E(){o.cY=0},t+4C);if(v.mb==1||(v.qT==0&&v.1M.r5!=1)){sa()}F{o.qM=1v(sa,t)}}o.cY++;mg()}E sa(){qV();if(o.1h.2c){if(o.Q.eA()){o.Q.nZ();if(o.3o&&v.oL==1){o.U.6n();v.oL=0}if(v.Yk!=1){I}}if(o.l4){if(v.Gq==1&&v.Y0==1&&o.1h.bF){I}if(v.fp==1&&v.Y1==1&&o.1h.4x){I}}}if(o.cY>1&&v.1M.r5==1){o.cY=0;I}o.cY=0;if(v.eD==1){if((o.1h.2c&&v.Y2==1)||v.Y3==1){!o.Q.eA()?o.Q.da(1):\'\'}F{if(v.3g==1&&v.GF==1){o.U.3N(0);o.Q.GC();v.GF=0}F{o.U.eZ()}}}}E qQ(e){qV();B y=J;if(v.1M.r5==1){if(e){if(v.1M.Y4==1&&!o.1h.2c){}F{B x;if(o.1h.2c){x=e.Y5;if(!x){if(e.FW){x=e.FW[0].kf-hu(o.1O)}}}F{x=e.Y6}if(v.zm&&v.zm!=1){x=x/v.zm}if(x){if(x<o.2V/2){if(x<o.2V*20/100){3r("3F","-"+2t(v.1M.FY,10)*o.cY);v.1M.2K==1&&v.1M.G3==1?7F(\'3F\',0):\'\';y=H}}F{if(x>o.2V-o.2V*20/100){3r("3F","+"+2t(v.1M.FY,10)*o.cY);v.1M.2K==1&&v.1M.G3==1?7F(\'3F\',1):\'\';y=H}}if(y){if(e.aW)e.aW()}}}}}if(!y){if(v.qT==1){if(v.kN==1&&o.1h.2c){}F{o.22?o.U.8I():o.U.aq()}}}}E qV(){2B(o.qM);o.qM=1E}E pD(x){if(o.GI!=o.1O.2g){x?o.GI=o.1O.2g:\'\';pD()}F{cW()}}E cW(){B y=J;if(o.bb!=o.1O.2g||o.eE!=o.1O.2Y){y=H}pb();if(o.Q){o.Q.tI()}o.P.4Z();y&&!o.22?js("4Z",o.bb+\',\'+o.eE):\'\'}E pb(){B xw=o.1O.2g;B xh=o.1O.2Y;if(o.Q){if(v.tR==1){if(v.W.1r!="2P"){B x=o.Q.bY("Lg")+o.Q.bY("1c")+5+o.Q.bY("Lo")+2t(v.Y7,0);O(o.1L,{"1e":x})}}if(o.Q.eA()){o.uc=H}}if(o.5h>0&&!o.22&&!o.dx){xh=xw/o.5h+2t(v.ud,0);O(o.1L,{"1e":xh})}if(!o.22&&!o.dx&&!o.bz){o.bb=2E.4u(xw);o.eE=2E.4u(xh)}o.2V=xw;o.4J=xh;if(L(v.1S)&&o.Q){v.1S!=\'\'?o.Q.KR():\'\'}if(L(o.kn)){o.P.1J(o.kn)}if(o.1V&&!o.22){o.1V.2n()}if(v.L1==1&&L(o.9u)){2T{o.9u.2n()}2G(e){9h.1l(e)}}o.2J?o.2J.2n():\'\';o.ca?o.ca.2n():\'\';o.5c?o.5c.2O(\'4Z\'):\'\';o.9D?o.9D.2n():\'\'}E c7(){o.U.pn(v);V(B x in v){if(v.2x(x)){if(x.K("1S")==0){if(v[x]!=\'\'){o.t9=v[x];o.U.c7(x)}}}}o.gS?o.gS.L2():\'\'}E a9(Y,7O,1J){if(Y){if(Y!=\'\'){if(v.aZ==1){Y=aZ(Y)}if(7O==o.29&&Y==o.vj){}F{if(Y.K("#"+v.aw)==0){Y=o[o.fd[0]](Y)}if(Y.K("#0")==0){Y=c6(Y)}Y=LF(Y);if(L(v.LL)&&Y.K("//")==-1){Y=v.LL+Y}B s="tu";if(1J=="6k"){s="uT"}if(1J=="1P"){s="2A"}if(1J=="LW"){s="100% 100%"}if(Y.K(\' hb \')>0&&7O==o.29){o.kw=Y.2q(\' hb \');3D(o.uP);o.uP=7u(Jk,2t(v.Y8,2)*2h);o.fr=0;Y=o.kw[0]}if(v.XZ==1&&7s([Y],\'.Jc\')){Y=Y.1N(/\\s/g,\'%20\');B 1H=\'7e\'+v.id+\'Y9\';7O.1T=\'<dB id="\'+1H+\'" 3y="\'+dN(Y)+\'" 9k=1 kU=1 3g=1 3o=1 C="\'+(v.Yb==1?\'3u-lr:uT;\':\'\')+\'Z:100%;1e:100%"></dB>\';o.eV=26.he(1H)}F{if(Y.K(\' or \')>-1){o.kt=Y.2q(\' or \');v7(0,7O,s)}F{v8(Y,7O,s)}}1n(7O);7O==o.29?o.vj=Y:\'\'}}}};E v7(x,y,s){if(o.kt){B Y=o.kt[x];B 3I=1t Kl();3I.aN=E(e){v8(Y,y,s)};3I.oR=E(e){if(o.kt.S>x+1){v7(x+1,y,s)}};3I.3y=dN(Y);if(3I.JZ)3I.aN()}}E v8(x,y,s){o.eV=1E;o.kt=1E;y.1T=\'\';x=x.1N(/\\s/g,\'%20\');O(y,{\'2z-a2\':\'Y("\'+dN(x)+\'")\',\'2z-fn\':\'no-fn\',\'2z-1r\':\'8o\',\'2z-3R\':s})}E Jk(){if(L(o.kw)&&L(o.fr)){o.fr++;if(o.fr>=o.kw.S){o.fr=0}a9(o.kw[o.fr],o.29,v.f7)}}E J7(){if(o.22&&!sE()){o.U.uq(H);o.1h.ff?cW():\'\'}F{if(o.dx||o.4j){sE()?o.22=H:\'\';o.U.uF()}}if(o.1h.2c&&o.22&&v.sC==1&&kK.q6){if(1A L5==\'E\'){L5()}}1l("22",o.22);o.Q.4Z()}E Lk(){if(v.kD==1){uI(o.1L,"5H",H)}}E Yc(){1l("q6 "+kK.q6.pC)}E J0(){if(2E.KD(1y.q6)===90){1l("Yd");if(v.LU==1){B ok=H;if(v.Ki==1&&!o.1w){ok=J}if(v.Jb==1&&!o.1q){ok=J}if(o.8z){ok=J}if(o.1V){ok=H}!o.22&&ok?o.U.aq():\'\'}}F{1l("Ye");if(v.LU==1){o.22&&v.sC!=1?o.U.8I():\'\'}}}E sE(x){!x?x=26:\'\';B y=J;2T{y=!!(x.Yf||x.Yg||x.Yh||x.Yi||(x.Yj!=1E))}2G(e){y=J}I y}E Lz(x){I x.2g==0&&x.2Y==0};E pY(){V(B x in o){if(o.2x(x)){if(x.K("Ls")>-1){3D(o[x])}if(x.K("rT")>-1){2B(o[x])}}}1l("U4")}}', 62, 4139, '|||||||||||||||||||||||||||||||||||||var|style||function|else|this|true|return|false|indexOf|exist|||css|media|controls|but|length||actions|for|playlist|control|url|width||||||||pjstg|time|key|left|event|top|action|height|settings|break|system|substr|case|hide|log|duration|show|toolbar|icon|play|position||new|color|setTimeout|start||window|addEventListener|typeof|text|hls|opacity|undefined|type|playlist_dic|tmp|volume|scale|faction|container|hotkey|replace|frame|none|set|appendChild|title|innerHTML|subs|vast|subtitle|exist2|null|createElement|||fullscreen||||document||data|poster|pip|seekto|mobile||div|eval|offsetWidth|1000|display|open_action|sub|click|vasturl|Resize|svg|file_type|split|right||existv|tip|Play|error|hasOwnProperty|files_quality|background|auto|clearTimeout|absolute|options|Math|line|catch|stop|push|droplist|icons|parseInt|Lang|tiptext|api|bottom|margin|border|transform|try|padding|screen_w|files_subtitle|_type|offsetHeight|Pause|||||||||||linkurl|share|player|sbt|file|linear|autoplay|hidden|continue|removeChild|current_quality|events|hide2|media2|muted|handle|current_subtitle|apiProcessor||rows|object|CheckColor|scaleX|localStorage|src|plid|mouseDown|floatleft|mediascale|clearInterval|_to|seek|ffffff|scaleY|img|custom|pause|urls|dash|Seek|chromecast|attr|webkit|size|bg2|http|files|Time|vasttype|default_quality|000000|ready||parseFloat|Volume|is_hls|||mediacontainer|_|||font|Duration|org|stroke|500|www|xlink|xmlns|2000|mouseHere|end|parentNode|Remove|ShowOrHide|MarginPadding|values|subtitle_on|visible|1px|delete|round|tagvideo|target|ios|obj|trim|preload|pjsdiv|200|empty|block|string|marginleft|settings2|pointer|screen_h||refresh|marginright|slice|gradient|dom|_from|rightmenu|plstart|storage|f2title|pljssglobal|youtube|bgcolor|Action|resize||mute||folder|quality||order|||speed|zIndex|Mute|effects|casting|JSON|canvas|int|aspect|rgba|transition|out|live|act|airplay|valuefontsize|_value|xhr|f2value||volumewheel|m_to|butPosition|f2action|vast_loaders|arr_down|onError|getItem|Motion|valuecolor|arr_up|random|menuproc|value|visibility|Hls|next|vastloader|max|bga|pnt|m_type|shuffle|passive|clientX|remove|files_speed|focus|ftitle|show2|SetQuality|isLive|toString|||dechar||||||||important|captions|name|isVisible|animation|hex2rgb|onOut|FindBut|UpdateText|sublist|fill|keys|UpdatePlaylist|Unmute|evntclk|cut|is_dash|vast_|plx|overflow|iset|clr|open|removeEventListener|File|files_|onOver|safari|hlsconfig|charAt|minutes|cancelBubble|UpdatePlay|over|reload|midroll|solid|ease|bgpaddingleft|paused|dash_created|default|always|intro|bgpaddingright|String|Date|icnsz|download|off|cursor|state|||||||||||filter|radius|control2|navigator|pjs|current_audiotrack|current_url|tips|setAttribute|span|redirect|ended|metadata|label|ioff|rounding|motions|line3|indOf|iphone|setInterval|preroll|obj2|Zoomed|parse|aover|audiotrack|f2i|hddnvlmovr|box|files_audiotrack|PluginHotIcon|ShowPoster|handle2|skip|Events|vast_and|lines|points|channels|cnt|status|seconds|val|_cul|Value|leftBg|setItem|waiting|okpd|Object|hideleavetimeout|||||||||||SettingsTimers|getAttribute|touches|customline|_show|1999|realfullscreen|toolbarHidden|_url|backgroundColor|StopWaiting|version|isVastBgLoad|tipcrn|center|lastwheel|hours|playing|Advertising|onEnded|m3u|ResizeText|init|bordercolor|HLS|ispipkit|align|globalfs|loaded|is_sleep|pass|HideControl|fvalue|buffered|Normalscreen|parentIframe|timer|VAST|layer|location|bgl|alpha_div|bgaover|info|apiprm|clientY|ll1I|track|customtext|loading|hls_config|is_ws||SetSpeed|destroy||min||preventDefault||||Settings|scroll|space|sub_off|pipwebkit|SetSubtitle|txt|console|media_error|onWaiting|loop|container_h|nativecontrols|stretch_width|container_w|line0|unmute|floor|href|Waiting|ima|icn|area|ctx|timeline|vast_or|Tip|ttl|opid|rel|hlsquality|parent|iconscolor|onDuration|mouseup|ratio|curtain|reloadTimer|bgcolorover|message|design|concat|End|lang|actionstt|HlsLevelsLength|srch|pointerEvents|files_quality_ag|blur|wait|fltrs|xbg|small|image|all|tag|levels|Background|shadow|hlsautoquality|Poster|gaTracker||Array||getTime|onPlay|Sub|bitrate||ncrtat|upldfl|current_speed|marginproc|com|hls_subs||Fullscreen|nops|lIll||_activeIcon|fbg|enc2|alert|plhistory|cutted|hls_created|pointed|Arrows|but_x|UpdateObject|clicktime|inline|8px|Status|rotation|mrgnprs|bgpaddingtop|evntout|onload|bgpaddingbottom|scrollbgcolor|f2id|SubtitleChanged|scrollLeft|Start|noads|PlaylistNext|stopPropagation|onTimeupdate|line2|fplace|bgt|||_cstm|vsts|m3ut|is_visible|default_audio|charCodeAt|Switcher|add|normal_w|onMouseUp|delta||motion_id||evntovr|hlsdrm|margintop|||sec|white|flag|Retimer|PlaylistNextExist||bgtop|_keyStr|Close|Clickable|onClick|upld||fullscreen_process|replay|_hide|audiotracks|_css2|open_settings|android|pld|body|toolbar_hide|stage_x|vertical|stage_y|tlbrhd|pause_before_vast|buffer|volumewheelin|currentTime|mediaSession|playById|dur|deltaY|AfterVast|control_|Remove2|PlaylistG|reloadto|file2||||switch|Stop|fd0|Title|prc|getElementsByTagName|quiz|||ShowOrHideProcessor|_rb||browser|_speed|currentFile|forbidden_quality||pjs_i|vast_loadtxt|sttx||autoplaylist|sub_options|cubic|CalculateClick||textTracks|title2|search|||forcehide|played|timestore|CreateItem|vimeo|ldr|VastRemoveAndPlay|but_space|but2|hw2|id_|touchmove|SettingsClose|StyleItem|subtox|control_title|3px|line_width|onMeta|salt|SettingsVisible|line3value|butplstart|MainResize|thumb|clicks|source|Home|hlsaudio|enc3|active|audioTracks|CreateHLS|00|skpbt|acted|qualities|HideForce|CustomSwitch|line1||DashLevelsLength|titlestore|gebi|_lastime|scrollTop|||cow||indOf2|HandleWidth|handleicon|controlover|file3_separator|coh||_start|removeAttribute|vast_longtimeout|fullscreen_start|toolbar_margintop|or0|vast_impressions|video|marginbottom|PlayerState|event_x|event_y|onMove|bgbrovr|stout|MediaReady|10px|hlsfdt|icns|ChckDrv|shuffle_|decode|hiddenwidth|weight|err404v|pjs_id|update|pauseroll|300|ScrollTo|fontsize|load|iconsover|PlaylistPrev|pljssglobalid|Hidepsms|mediapip|button|iframe|Scale|toend|ll1l|link|l1lI|PipWebkit||qbr2|plfolder|fontSize|channel|current|overlay|pltxt||||PlaylistPrevExist|prev|ActionPlaylist|tagframe|newplay|fontnames|autohide||native|sub_bottom|SetAudioTrack|onVolume|ToolbarHidden|hddnvlm|NewFile|screenclick|normal_h|speed1|but_y|hidejustfull|floatwidth|err|touch|scl|Pos0|hddnvlmovr2|transparent|Toggle|sub_shift|nowrap|frameresize|20px|hdicon|pstrv|justshow|linecap|sub_or|ScreenClick|alpha|items||spacing|polygon|setSpeed|tippointer|poster_scale|Rtt|brandurl||sub_settings_on|family||currentLevel||hlschangequality|_id|compilation|Rtt2|shareme||_step|repeat||nativefullios||pstrsi|VastRecover|||Subtitle|hlsDashSub|SubtitleSettingsMenu|FindPlStart||plNxtExst|expand|ControlClick|_status|now|tchs|600|maxBufferLength|onDown|errorto|onUp|fatal|StageMouseUp|recover|touchstart|vast_poster|touchend|bgpadding|handle_width|StageMove|flip|bttn|aria|stretch_with_volume|rightbs|bgh|VastAddPreload|ellipse|mode|NativeEnterFs|starttimeout|posterhide|actplay|cul|IconsColor|default_style||abc|Ready|overopentimeout|Update|_ease|hidevideo|topBg|thmove|opn|polyline|timeFormat||onPause|RemoveCurtain|minify|Il1l|desktop|hdnn|ObjectFit|_preloaded|0px|Reload|nativeAudioTrack|checkFont|Airplay|rightside|groupId|Playlist|bgg|nomute|hls_force|pic|loading_error|HidePoster|url_shift|videoHeight|float|scaleover|texts|hideonpause|relative|factor|ToolbarDown|mediatags|subupld|HideInterval|butNames|quartile|setActionHandler|gif|create|f2bg|rldcnt||subtitle_start|send|seeking_time|Init|not|normal|TagPlay|openfile|and|Curtain||getElementById|PlaylistExist|Pnt0||control_line|000|bottomside|casturl|showovercontrol|settingsovertimer|nbsp||onclick|||fff|findLeft|HideProof|saturate|showoverto|ksu|onplay|onSeeking|sourceBuffer|rotation2|hlsend_to|details|Scl|removed|pldly|midrolls|hideoutmute|offsetLeft|_lstx0|readyState|_prevIcon|seekwindow|headfontsize|NativeControls|dontplay|nohls|SetSetting|htto|kap|onSeeked|VstLdTxt|airhls|mpi|XHR|TimeSub|ymax|StyleArrow|srt|hls_stuck_time|unshift|frag|limitmaxwidth|toolbarInterval|hand|ShowForce|_seekaftervast|||||clickarea||YtInit|_max_order||400||cftlr|RenameQualities|vllft|_ended|||_psd|vast_longtomsg|letterspacing|seeking|normalscale||tpp|hlsrows|StyleLine|StyleActive|CustomText|lrpd|speeds|parentcontainer|jpg|swipev|clickmargin|play_errs|_play_i|kbps|current_|shr|fcdef|SubtitleLoad|BufferStop|uijs|ScrollOverOut|HistoryPlaylist|CustomToogle|destroyed|sxs|toggle|volumescroll|pip_quality|airplayed|ErrorOr|errorMessage|marginprocleft|hidewithoutmoving|scrollarrows|UpdateSpeed|TipText|pjs_|https|Off|floatheight|linkurl2|ToolbarShow|BgClr|subload|SubtitleLoad2|tmln|ni2|brightness|SwitchText|iconreplay|autoQuality|ctxtnk|hidetimeout|Open||clicked|Parsed|FileTo|Show|SettingsN|num|plurls|svg0|SettingChanged|iosfull|pjs_parent|pl_first_id|then|Download|timerTime|FltrVal|custom_speed|tipbg|memory|PlaylistVisible|responseText|downin|PlaylistShow|stty|win|Error|gain|AirplayChanged|PlaylistControls|xtitle|prm|pldur|ResizeSettings|resizePlaylist|QualityChangedNoHand|||created|Ctxt|brd|canvas2|Played|days||galabels|Pntd|chrome|RenewPoints|pageX|backdrop|tipbga|pushCSS|sizing|autonext|ssfontsize|every|custom_aspect|requestFullscreen|shift|va2l|onmouseover||pstrurls|Cut|onmouseout|pstrs|copyObject|VastNext|touched|1em|href2|pljsmute|observer|scrollleft|playersize|tipbgcolor|datetime|left0|line_speed|screen|wheelstep|3000|nativecontrolsmobile|ShowTip|contentWindow|gao|tippadding|ipad|5px|playsinline|ctx2|playlist_source|letter|PluginSub|onmousemove|gatracked|l3v_show|url2|MidrollOverlay|nativefull|stretchonfullscreen|sub_color2|sub_color|qbr1|file_separator|sub_sizeproc|domain|VastAndLimit||RenewSubtitle|Thumbs||result||_t|playerid|compilations|999|base64|Mouse|findTop|handlescale|fit|dclckto|||handlehide|wght|tagName|floatlimitwidth|exception|restart_audio|dvrtime|frames|Start0|moz|navigationUI|333333|YoutubeReady|998|but_h|postMessage|StringVar|paddingleft|full|toLowerCase|limitwidth|CreateShare|lang_|showtitleplaylist|SubtitleOff|iconscolorover|covervideo|getDASH|getHLS|HlsUpdateAudio|sub_all|PlaylistError|||||icon2|loadLevel|sub2|subopt1|onClickSubtitle|inversetime|click0timeout||||Playing|JsClk|clr_options||autoLevelCapping|control_start||hlscq|_readyonplay|exist2v|VolumeWheelX|playerjs_|||isvg|spd|quality_received|FileReader|PluginOpen|title_template|Ended|seeked|nhs|mutestore|gifed|vastonmobile|2001|Password|pljs|openplaylistbefore|sub_size|sub_size_fullscreen|hideuntilto|ResizePlaylist|thumbnails|audioTrack|_fullscreen_end|bgcontainer|fspr|PlugBg2|iniframe|stretch_width_last|fpv|RemoveMedia|poster_a|prefile|poster_aover|urls_and|hdstp|setaction|classList|opera|container_h_procent|_lastactbut|ssa|playlistrewind|playlistloop|dashquality|mtp|randomstr|static|wait_to|resizeSettings|files_channel|wtcntrl||rightclick|stringify|UpdateTime||rightout||BgBrAct|referrer|newfile|plopt|youtu|hidevar2|hidevar|hideuntilstarted||YoutubeID|current_file|vars|resizeonwidth|mini|scrollarrowcolor|scrollarrowsize|subsor|mouseover|mouseout|rmbgcolor|file2_separator|apdr|FileType|rc_label|playroll|MenuProc|pageY|StageLeave|sub_weight|leavetimeout2|scrollwidth|sub_shadow|hmx|1080p|mouseMove|_stopped|StageMove2|Touch|480p|rldplay|KeyPlusUp|gaTrackPlay|KeyPlusDown|userseek|valuefromlang|vol|sub_bga|360p|crb|240p|sub_bgcolor|offsettimer||StopMedia|scripts|14px|subtitle2||fileTimeout|PlaylistHere||PlaylistRewind|rename_audio|openById||SubtitleError|PlayAction|playbgcolor|PlayerjsMenu|while|found|screencolor|AudioTrackChangedNoHand|ssflyp|timeld|rld|fid|mouseHere2|serif|sans|bgtmp|changeheight|720p|subdrag|unmuteonclick|mediaSource|ShowHandle|ttt|handlehideinit|autoprevopenfolder|onerror|HideTip|sblsthd|isTypeSupported|documentElement|adsfirst|_control_|thumbs_on|rect|colorbg|youtube_id||offsetTop|menu|HidePoster2|vastfrombg|edge|hideAllIcons|svg3|unmuteplease|MainUpdateSize|audiosrc|last_text_w|AudioContext|script|tippaddingtop|mssprv|UpdateVars0|mssnxt|isReplay|||TitleTemplate|CreateTip||BeforeVast|||overlays|UpdateVars||autonextopenfolder||onStep|_steps|lastIndexOf|customdesignsvg|angle|FrameResizer|VastBgLoad|handleaover|ShowLayer|alldd|started|ff0000|bgo|remember_sub|bgborder|bgbordercolor|response|vast_type|container_id|pntd|lastTouch|stuck|ceil|VastLoader|Load|eventstracker|Destroy|DrmVars|livewakeup|||clr_load|playlist_title|find|orientation|omt|marginbg|worked|timeline_h|postroll|clr_play|parsed|HlsLevel|resizeonplay|vstpause|done|_wait|SvgColor|rotate|handleiconspress|mouseUp|pauserollonplay|isPlaying|sub_upload|PipSize|picture|tipalways||playVideo|CreateDASH|VastVisible|resizetxt|rtt|Rot|wheelinterval|100000|current_plurl|iconopacity|suboptns|stored_dur|timeshort|fjs|volumegain|NativeExitFs|airpl|lngth|click_t|showinterval|volume2|videoWidth|DoubleClick|drtn|presmbl|doubleclick|hlsfps|ClearClick|VisibleItems|iclr|noclick|arpl|YouTubeIframeAPIReady|||lineHeight|isAuto|seeksides|imgldd|CloseSttx|nativeControls|moving|startwait_t|drawImage|ClosePl|mutedautoplay||historybgcolor|150|sleep_timeout|pldur2|resize2|pepper|qualitystore||Action2|historybga|str2obj|TheEnd|pljstrack|clientWidth|||HlsSleep0|resizetext|||TitlePl|_hlssubtracks|pljsquality|ShowShare|pldur3|customTextPl|CustomTextButs|userid|is_hls2|tagSrc|enabled|upText|network|code|pljsuserid|v360|NxtExt|HlsSleep|urlcnfg|sstext|timeout|insertBefore|rmcolor|nextLevel|onYtPlayerReady|hlserror|_set_quality|SubtitleTimerMenu|||||scrollarrowbgcolor|scrollarrowbg|embed|dont|last|ScreenClick2|submm|settimer|SubtitleParse|getVideoData||SetHlsQuality|playsinlineonmobile||ytautoquality||StartSpeed|cntrls|setQuality|urlsl||ToolbarHide|historytitlea|||pauseVideo||||encoded|ioscss|Captions|chr|landfullmobile|appearance|isFullscreen|disableRemotePlayback|effect|ssfontcolor|spn|ChkDrt|firstly|maxMaxBufferLength|CheckPip|other|Visible|file_yv|ahd|scrpt|re_y|Youtube|scld|ControlCoordinate|join|l1ll|JsEvent|nativehlsios|input||||||pljsvolume|ChangePip|sepia|maintitle|PlayerSize||but_w|Preload|CreatePoster|playerjscom|pp2||autoplaymute|Text|leftandrightpadding|Shuffle|Menuproc|mediasession|||onTagError|mobiled|mousemove||contain|||bg_hide|xvalue|lntch|CreateWS|mediadrag|volumestore|hls_started|removebykey|rename|contentDocument|gained|mainresize|iobj|_iconv|audioctx|pljssclx|onPipLeave|order0|_rights|_move_rights|change2playlist|xy00|PluginMovable|onPipEnter|logout|ScaleStore|fromCharCode|yamtrid|paddingright||sub_reset||||||||||sub_x|cntrlrsz|screenmarginbottom|FSL||ws_created|isNaN||hlsSub|pipto|removeItem|MseIsSupported|toolbarhidden|LoadedData||NormalscreenUI|heightInterval|nohead|Media|sleep2||fixed|nativesub|WaitSize|_css|subtitles|dontload|3600|ll11|removeTracks|FullscreenUI|onWkitKey|SetCurrentQuality|Visibility|activeicon|PauseAction|PluginRadio|Alert|pipVol|sub_off0|pstrsin|CheckDash|HlsAudioTrack|sub_designstore|cover|floatmarginright|renameTracks|substore|tchs2|HlsAudioTracks|getDuration||Recover|onDash|hmaxk|span05|CrtVl|RadioTags|PstrLd|PstrLdd|toggleControl|sleeptimer|playiconbut|iOSTrackLoaded|geo|Review|write|prototype|cpm||currentposter|HidePositionControl|sub_upload0|icnclrdwn|advertising|doctype|ClickArea|imageLoaded|marquee|lastsub|bgcolorlink2|linkurl0|scldwn|PlaylistLoad||hideonplay|fix|iconangle|TipHide|m3ui|rotateonhover|png|VolumeWheel|btm|plds|SetSubtitle2|lastt|stvs|tipbgrounding|postsmbl|minus4back|tggltm|CstmTgl|6px|viewBox|vastcontainer|ControlsBg|decoration|csta|settingsNumberVisible|TipVol|toFixed|mdswp|hidetime|ctxt|||pjslng|wheel|tipfontsize|Metadata|stopkeys|tmp2|bordercolored|ontouchmove|VisibleCheck|checknative|Seeked|fzoom|InitVisible|reloadfirst|pstr|deltaX|rotateplaying|pjsframed|onYoutubeReady|fonts|smbls||pipSrc|ErrorMsg||SubRem|clck|||onMobOver|onClick2|dash_subs|exitfullscreen|blra|volumewheelfull|minw|_currentIcon|bttnbg|fullblack|StyleSubtitle|onMobMove|addtitleplaylistbr|addtitleplaylist|openplaylistroot|nocontrols|_i|ActionOptions|ErrorReload|reloadtimeout|tipletterspacing|Marquee|hostname|midrollo|marginbgpadding|activeiconsize|NewAspect|vastclick|vast_preload||||||moveOr2end|ie9|outro|marginbgcolor|handlecolor|splice|arrinterval|vast_midroll_limit|Mvskpl|sub_stroke|valuemargin|valuepadding||sub_font|handleiconpress|handle2color|grdlft|RemoveForNextAd|bgw|timeline_w|mobtch|wave|VastPreloaded|coloroverplay|borderRadius|clickscaley||||handleiconover|deg|current_vast_url|handlea|hndsovr|LineScale|VastPreloadLoad|onup_to|vast_starts|vstdwn|pstr_to|posteronpause|tipfont|SettingsParser|_stop|_timeout|Alpha|ReplayIcon|_time_load|restart|vastgo|VastVideo|tippaddingleft|VastGo|End2|End3|UpdateVolume|resizeFromText||||||tippaddingbottom|tipcolor|last_text|sub_bgpadding|handlemove|IndexPlaylistProcessor|stopotherplayers|_recover|IndexPlaylist|DVR|ControlOut|adsinchain|pjs_parent_i||Thumb2|thumbs|movevent|Style|SetCSS|Empty|downi|VastCheckNext|CheckHideVars|over_final|UpText|moveseek|EndMove|Places|msRequestFullscreen||filerorto|160p|tem|Bglines|plopenid|Player|close|_blank|removedNodes|1440p|UpdateStart|pjshd|MbMv|playbgcolored|noprevicon|match|brand|posterhidepause|EarlyEnd|innerText|sub_store|utx|leftright|check|pjscssed|2160p|pljssubtitle|||SubOpt|hdbrdclr|play50|quick|play75|ass|SpeedChanged|play25|reloadlog|fileorto|poster_float|Loading|NoSpan|fontFamily|playlistovertimer|div2|resizeonmouse|resizeme|killMotion|startcss||introstart|QualityChanged|updown|dropupdate|vtt|updatePlaylist|Loaded|NativeSubtitle||UpdateDt|tmpr|piped||bordersize|Prefile|start2|RightMenu|butByS|youtubeposter|requestFullScreen|mozRequestFullScreen|toolbarisdown|reRightMenu|nwfl|StartTimeout|content|subpausehide|getAudioTrack|SubUpload|timerInterval|Script|getQuality|gaurl|webkitRequestFullScreen|MediaSess|notofh|SubtitleLoadAll|nexttrack|vast_longtimemsg|dashjs|m3u8|isVpaid|hlsaudio_off|Hide|comment|mss|hlsquality_off|maxTouchPoints|width_div|resume|cuid|plapto||VastBreak|fullonplay|skipads|roll|rand|SetChannel|Papi41|vast_adid|wrapper|VastInfo|msie|andlimit|firefox|FindFileInPlaylist|preloadhls|height_div|api_|vast_prestarttimeout|VastLongTimeout|subtitle1|preloaddash|dasherror|isSupported|sub_big_fullscreen|adblock|plcontinue|FindIdPl|PluginThumbs|reHls|reverse|SubtitleBottom|InvertPlaylist|customBuffer|butseekto|YouTube|file_type_old|subshift|getContext|ENDED|hlscookies|sub_split2words|time2|serverCertificateUrl|trkp|offset|isyoutube|url3|last_ors|PlayingChecker|hls_stuck_duration|outside|update_|Timer|dvr|index|shwvstfnsh|adscounter|maxresdefault|onYtPlayerStateChange|MediaYoutube|youtubeready|PLAYING|geobj|heartbeat|vpaid_starts|pjsframe|PjsFramed|Exit|last_subtitle|hlsmto|ovr|showposter|HidePoster3|StopOtherPlayer|MSIE|toUpperCase|setVolume|globalfontname|getPlayerState|scrollX|sfjs|hlsdebug|Drt|hlsvastwait|posterhidetime|maxLoadTimeMs|customyterror|playlist_id|autoplayed|yterrors|limit|crt|onQualityChanged|Qualities|imageExists|notv|preloaded|hlsfto|PlugDsgn|callback|CreateMedia|Number|ParseUrl|getBoundingClientRect|sugar|nameofyoutubequality|apto|GET|sub_off_title|ga_event|PluginErrorVideo|unset|XMLHttpRequest|Quartile|playedstore|styleSheet|PlgnVstLdtx|Yandex|parentElement|ReloadTimeout|playedquartile|frmvst|msExitFullscreen|PluginHeart|tagsurl|webkitCancelFullScreen|alert404||gtag|castname|passontime|default_subtitle|PlgnVstPstr|rgb|alerts|keyframes|PluginTrack|_html|zoom|alert404text|PluginSlides|radio_Interval|alert404v|alert404video|recovery|mozCancelFullScreen|tagsinterval|sub_allmyt|High|fs_error|PostFullscreen|PluginPip|ChkHlsEnd|PlugSublist|Start00|posterhidestart|playByYoutubeId|1800|playId|1550|1150|900|540p|current_time|006|yaCounter|openpl|yamtr_event|onPlayTag|cancelFullscreen|360|exitFullscreen|640|cancelFullScreen|finishrewind|scrollwheelfull|intros|checkIosFullPip|isArray|slng|iosExitFullscreen|whlskfll|TheEnd2|PipToggle|_ue|sub_lineheight|pauseseek|elastic|PluginRel|redirectonclick|175|seeked_time|incorrect|PluginDrive|nativeSubtitle|fileto||pmevnts|swiping|pjsfrm|Swiping|224|endfull|after|framei|midrollimprsd|Playerjs|Ease|ShuffleEnd|935|fullonplaymobile|previoustrack|redirectonplay|str|PluginDash|pjslog|mpd|sub_bgo|dashaudio|ffect|upDT|removeNativeSubtitle|menufltr|full_hours|swipep|MediaVideo|Playback|PipSwitch|movable|timebreak|reYT|reloadlive|audio|tvg|device|notag|Scripted|hidesvg|ct2|Stopped|norld|nomidroll|nooverlay|timelimit|_ud|full_minutes|Timeout|FileTimeout|RenameTracks|toLocaleTimeString|minduration|rest|PlayerjsEvents|filetod|access|timelimited|yamtr|anonymous|denied|sub_bg|seekTo|playsinlineonmobileiphone|PluginIntro|PlgHlsFdt|posteronwait|PluginCam|setcss|linespeed1|colorload|gradientcolorload|ControlOver|querySelectorAll|path|gradientcolorbg|ontop|hidedown|wps|DownIn|ControlLine|nxtttl|controlCSS|HdIcon|linespeed2|hidewithposter|Buffer|7px|translate|Bgavn|Tmln|iset2|control_mute|displayvolume|iconsreplay|prevorius_default_h|prevorius_default_w|with_min|with_hours|Wheel|gradientcolor|zoomed|sub_sizemob|template|onmousedown|onmouseup|bgbrdrw|_a|roundout|_w|speedstore|315|pljsspeed|SettingsExist|SettingsSpeed|handlemargin|sub_bottommob|sub_sizemobfull|linespeed3|PluginWave|smallfontsize|floatwidthsmall|PluginPoints|floatheightsmall|valuebgcolor|valuebg|valuerounding|220|PluginPlSrch|default_speed|valuesize|FFFFFF|customdesign|RenewFromTitle|DDzbnyGH|clickmarginbottom|ffeeab|topside|_reset|often2|hideonleaveandplay|often|bandwidth|hidebefore2|hidebefore|hideafter|unblock|ontouchstart|hour|minute|second|lineh|openplaylistpause|bold|fontsizesmall|picheight|changedTouches|svgtmln|seeksidesec|rszr|noindex|icon3|liketext|seekicon|hlscaptions|scalesmall|opposite|openplaylistafter|Hideuntilto|mobiledesign|hideafterclick|noClickTimeout|DisplayControl|hidesec|cstm|unhidden|action_settings|_subfile|click_t2|NFRSEHab|analytics|tipvar|tipmargin|bgcolorlink0||Click|nativefulldroid|clickscalex|cntrl2|selectOpen|pressed|_xIcon|setupx|bggr|onMouseDown|5000|bgstretch|iconmargin|Ply|mobileover|onMobOut|frstclkply|clickmargintop|bglines|screen_lw|hidestartbutios|encodeURIComponent|parent_domain|RightCSS|4px|linker|rmsize|RightOver|RightOut|today|System|CustomFonts|PjsFr|prtObj|prted|parentIframe_style|user|notframe|IFRAME|nativenotios|nativenotiphone|PjsFrMsg|nativenotipad|createTextNode|mobiletv|postmessages|method|postmessage|Init2|playerheight|Vsts|Href|right_y|requestAnimationFrame|allowtransparency|rc_labelurl|rc_anyway|666666|highlight|rc_version|tap|CrShr|ltr|direction|ffdd1f|clrs|helvetica|alertsbgcolor|allow|arial|right_x|allowfullscreen|RightMove|pjsfrrs|scrolling|alertscolor||alertspaddingv|obsrvr|RightClick|MutationObserver|alertspaddingh|alertsbga|alertsfontsize|15px|scheme|rc_|Actions|bgline1|place|thumb_width|CreateThumb|PluginCut|_duration_load|UpdateLoad|UpdatePlaySeek|_time_play|_duration_play|handleinit|toptip|linetipmarginbottom|thumb_move|hlsptm|mvskps|PlacePoints|thumb_radius|dblclick|scalestore|270|xOffset|yOffset|CancelBubble|current_thumb|pljsscly|PlayerjsAsync|handleiconsover|handlewidth|Controls|templated|bgline2|thumb_height|thumb_border|PluginReplace|fixk|sesstime|optStr|StorageSupport|trackstore|vast_nofirst|pljsfirst|fixw|lI1l|I1lI|StageOver|mousedown|PluginGeo|PlugScaled|bgfxk|700|thumb_borderwidth|evenodd|thumb_bordercolor|thumb_shadow|tippaddingright|linetippointer|Rectangle|rule|Continue|mrgnsmll|line_volume2|KeyDown|pjsin|textarea|KeyUp|closePl|action2|bgavn|userplay|Width|back|userpause|OrientationChange|HideLayer|changeAspect|unmuteonplay|actpause|sttr|hmaxk2|FullscreenChange|connect|muteiconbut|language|lsfullplay|mp4|FlussonicMsePlayer|pljs_yt_|marginprocright|lrppp|lrpps|Hxonh3eSHNAXARQOg24rAOTNHzF2eqt3fbJ0fv0SEOsSAymQfbiTiv0SEOsSHOpSAzJqdb5reR9qgL0SizBmgSFXdcJQCvAXAvEUBr48hyx0futPHKiFELdXFq4pErd2ELwrENtEELdXFq4pEvPpFOP0FKtEELMZEOs4ELh4FKo3DOwoGLw2GLI1AwopFu4qFrMoGLEXFq4pEvPpFOP0FKtvELIZEOh1EvPrDvEZELP5ELA2EOMlELwZEvdrELP3DvslFq4pErh1Fvd0FKooAwErDOApELl5FLPpDvslEuorDOw5GLwqFOA1AvsXFq4pEvPpFOP0FKtvEuopEK4oELPqELA2AvEZEOwpGvP1GLwXELIZEOw4ErE4GKs3DOwrFrM0FOI1Dvw0DOApGvErGvPlLvhZELE3FLI2FvMXELAZFvIpEvI2FKtvFu4pGLErEvl1FKopEN40FvwoFvd1AvwZFrl0Erl2FOAXELsZEvIpFrspGuspDOh4FvE4FOdqDvhZELs5ELd5FvMlIrwZFrl0Erl2FOAXFu4pFrd2ErhoFKs0DOw5ErEoGvM1DvwZFrh3EOPqErdlFq4pErh1Fvd0FKopDOh3FrA5EOE2AwEpEu4oGvw3GvI0DvwZFrh3EOPqErdlELAZFvPoFrs2Eqo0DOw3FOdrFrs1AvwqDOI5EvhoFOEXFq4pEvPpFOP0FKtEELsZFOI0FLw2Fqo3DOwoGLw2GLI1AwopEq4rGvA4GLP2DvwpDOM1EOIoEvIlLvw2DvhZELE2FOwpErAlbNhleRQXgv0SA2eReReReNh|ControlX|Posters|normalscreen|linkpause|marginprocbottom|ytcl|webkitendfullscreen|ScrollRight|hidewithoutplaylist|MediaSource|ScrollLeft|PlaylistBack|hideonbar|historycolor|Gain|historytitlestrike|mbmv_timeout|offsetwrite|ResizeMain|onLoadedData|upTexts|customText|showShare|titlepl|plclose|linktarget|ssflyw|1001|screenshot|marginproctop|PluginShare|ScrollDown|setHlsQuality|addTrack|livewakeuptime|onLoadStart|subtitleTrack|hls2|HlsLiveWaiting|loadSource|setHlsAudioTrack|SubtitleSettings|complete|setTracks|wrong|SubtitleSettingsClose|setDashAudioTrack|UnArpl|setDashQuality|Arpl2|PluginHlsFps|ShowTimeout|iosexfull|show1value|hidecontrol|webkitSetPresentationMode|showing|hlsTextTracks|OpenPl|sort|NewPl|lsfullstart|scrollHeight|always2|Image|gainedsource|debug|PjsCheck360|MetaAudio|paddingtop|ControlsBgClick|webkitneedkey|supported|leavepictureinpicture|enterpictureinpicture|durationchange|volumechange|loadedmetadata|timeupdate|width100|nopause|unpause|abs|Arpl|ScrollUp|drm|alwaysnotfullscreen|rotatewait|PlaylistMove|PlaylistOpenId|PlaylistPlayId|prenewpl|PreNewPl|PlaylistClose|Exist|UpdateTimer|updateTitle|Volumescrolled|HideElement|plaudio|WaitPoster|pstrwt|wtpstr_to|borderbottom|headbordercolor|brda|vast_ima|read|PluginMbps|iframe_api|PluginLand|scroll_down|CheckTop|leavetimeout|which|Control|hlsmaxlvl|togglesubs|hlslowquality|showById|startLoad|scroll_height|playerjs|18px|keyCode|ParentFS|UpdateSettings|plusminus|audioGroupIds|margin_bottom|onClickTimer2|onClickSubtitle2|StyleFew|Interval|nameofhlsquality|pldelay|nums|Pldelay|playonhover|upd|isHidden|hidebeforesec2|40px|renameQualities|scrollarrowbgover|hidewovar|checkBase64||hideonvar|youtubecontrols|scrollarrowbgovercolor|um1|preposter|hidebeforesec|bgbract|hideaftersec|hideonwidthlimit|hideonwidth|hideoverwidthlimit|hideoverwidth|ArrowsInterval|landscapefull|SourceBuffer|stretch|alwaysjustpause|Hxoner48cu9riRh|nextAutoLevel|scrollarrowgradient|mimeCodec|PluginSkip|HlsQualityLevels|scroll_left|setting|hideonvolume|apdra|ShowAnimate|HideAnimate|ShowControl|showntv|hideonfullscreen|sourceBufferValidAPI|hlsdrmfp|playedstored|aborted|hideuntilmeta|unfixing|exst|_nextIcon|subfeed|nomobile|iosv| |matches| |matchMedia|blackberry|RegExp|9c6c01c4368d663576a4b513dfecc687|customimage|fine| |iemobile|adShown|WebkitAppearance|Firefox|Hxonhy9XjbingO48cu9SHOphD3F2er4NDuBmd3JUg24NGNBYicJQANoNdbF0fb9ZENA6ASaZgca0eKAXASJ5hyMNGNBriRhNDuBPfcFogyx5iR9Xib1QAOTpDuBmAOTNEu43ANoNdb92ecANGNApANoNgbxqe2QZAOTNEusoAvslFKB9DuBOg250hR9Xc3engzaYeKA6jqBnhRJQhNA6FNoNg24NGOwXASJ5hyMNGNBrfyxoeKAXARxOiyQngNA6ASengzaYeKAXARlNGOhXASBnib5Pfb5SAOTNEKAXARF1h3JngciUezJTAOTpDuB3AOTpEvsXARwNGOwXARxNeqA6AOwNDuBmg3eQhNA6AOsNDuBOg2pnhNA6AOEoGvaOGuAXARFngy9qdRhNGNAoEvsoEvsNDuBOg2pnhR92ecANGNBReReReRdNDuBTfbJQAOTpDuBTfbJQg3a0gca0eKA6EKoNhR90dcJUg24NGNAqFrsNDuBNe3tmeyJUgRhNGNApEus2AvPlFNAXARBSAOTpDuBTdb5PgyMNGOwXAR1mhRiUgNA6AOslEus4GusoANoNhy9rfcJUg24NGNBNg3J0g20YhRQSfzINDuBNe2Fngy9qAOTNErErErErANoNdRinAOTNEu4rANoNfyxZeypQh2FmgyMNGNApDOMNkKoNd29ZizBngx90fb1QAOU7AR9qeyaqAOT3DuBngNA6EuoNdbF0fb9ZAOTNiyQYeKAXASJ5hyMNGNB0ecm0ANoNiya4iuA6AOs6EvsNDuBRg250h2Q6eKA6ELsXAR1mhRiUgNA6AOslEusoAvw1ANoNd2pUd2XNGOsXASFQhyxqdcJnhNA6AQonAS0XARFngSJqg2pkezaqdcJUg24NGSXNg3BPecANGOlXAR9ZAOToDuBmd3JUg24NGNBPicBmiyQngNAXASJ5hyMNGNB0ecm0ANoNiya4iuA6AQonAvs6EvsNDuBRg250h2Q6eKA6ELsXAR1mhRiUgNA6AOslEusoAvsNDuBOgyQOfqA6Ez0XARFngSJqg2pkdSaReRaqAOU7AR9qeyaqAOT5DuBngNA6EKoNfbFngNA6AOpPfcdld2pmh3E9B2pndbJQhNmqdb5PCKh|Hxonhy9XjbingO48cu9SHOphD3F2er4NDuBUd29ZENA6AOpriRhli2QPiyl9BrAoBqtTebQSfzI9BrAoBr48eqtRfbpXDcB1gyM9B25ngSUQhR8SAyeUgyo9BqFReReReRdSAzJqdb5reR9qgL0SizBmgSFXdcJQCvAXAvEUBr48hy9XjbingNtog2QZizE9BrllEus4Avw1AvIZELAlELwlEuspEKsoAvIlFu4pENs0BqtRfbpXHKhOeReReReRBr48cu9og2p5e29ZHOpog2p5e29ZAztnfb50hr0SELwZFOAlFu4qErMlELEZFvhlFN4oGvwlELMZErwlFu4qErMlELdZFOMlFK41FrIlELIZGus3DOIqAvw2DOd2AvPZEOhqAvw1DOEpAvwoDOdoFNspEq40FNs4DOh2ENspEK42ENspEu42EvdlELsZEOllGK4qFrMlELAZELAlFq40EOdlELsZEOllFK41GuspEK42ENs0DOArFKhleRQXgv0SA2eReReReNh|222222|HztngzQSg24lhy9UgSJrHKh4AvslGuspFKs0DOwqAvwpAvslELwlEus0AvIZELAlFuhleRQXgv0SA2eReReReNh|Hztmiyllev0SLLwoDOA4DvAZFvw0AwEpEN44Frs4GvwXEN40ELIlELIZGLPrDvIZFOd1GvI4FLElELIZGLPrDvhZFvd0AwEpFu45GLEXELsZEOdqFLM4AvwqDOl3ELI1EOwXELAZFLwrAvwoDOA4DvwqDOMpEqtEELsZEOlXELIZEvd3AwEpEq43FLs4FOE4Dvw0DOs2FqspFN41FvhXELwZELsoGLl1FuspFN41FvhXFq40FOIlIrw2DOM0FqorDOlqFrMrFOE4AvwrDOh1EvIqFvwXEu44FNspEu4qGuooDOl2AwopEu4qGuoqDOIpFutfBqtRfbpXHKhOeReReReRBr48cu9odcJTHOpodcJTAyI9B00pEu4qGKo1DOE3FutvELwZErM5EOw2DvMZErh0AvwqDOA0Eqo2DOEpFvw2FrwrAvwqDOA0Eqo3DOMlIrwqDOA0Eqo4DOd4FOwoEvh1AvwpDOE1GvP0GvdXGK42EOhlELsZEOPXGK42EOhlLvwoDOA5DvwpDOw4EKtvELAZEOE5FLP1FNopEK4pGvwlELEZFrP3DvPZFLArFvI4FOAlELEZFrP3DvhZFKtvELEZFrP3DvMZFvh2FOd1FrllELAZEOE5FOl2GKorDOlqAvwoDOA5DvEZGvAlLvwoDOA5DvMZErh0AxTSAyeUgyo9BqFReReReRdSHOphD3tmiyl|HyhleRQXgu1qibpQHKiZg256ecBnBqt0hRxZh2enhR09B3Jqdb5rgyx0eKlqDusrCKh|timeplay|Hxonhyx0fv48cu9SHOphD3F2er4NDuBmd3JUg24NGNBogyx5ANoNdbF0fb9ZENA6AStmicFQANoNizQoeKA6ASF2eqAXASFOdbpQAOTNEKAXASFOdbpQg3eQhNA6AN0pANoNgbxqe2QZAOTNEusoAvslELsNDuBmAOTNEu44ANoNdb92ecANGNApAS0XARFngSJqg2pkgca0eKA6jqBnhRJQhNA6FKoNg24NGOwXARQOg24NGNA8h3eSAziUezJTHKhqEuhlfyaUe2m0HKhqEuh|titlecolor|HzBQd3Iljv0SFN41Bqt5HKhoBqt3fbJ0fv0SEq41BqtTebQSfzI9BrwqBqtRfbpXHKhOeReReReRB1onHOphD2h|Hxonh3eSHNAXARQOg24qAOTNHzF2eqt3fbJ0fv0SEOsSAymQfbiTiv0SEOsSHOpSAyeUgyoYhSaXeL0SgR9ZjRaqgqhlizBmgSFRg3BYHKi0hRxZh2pmiyMTFKolFuPSHOpqebF0Azl9BrsSAzP9BrsSAziUezJTHKhrDOMSAymQfbiTiv0SELASAyeUgyo9BqFReReReRdScu8|HztngzQXfb5QAztnfb50hr0SEu41GLE3FKsoDOI4FvE4AvsZFLdqFKspEq41ELM2EqspEK40Erh1AvhlEu41GLE3FKsoDOI4FvE4BqtRfbpXHKhOeReReReRB1onHOphD2h|Hxonh3eSHOphD2JUiO58kzoZgy9meyaqCzBmgRIUAzYog3FUiyQngOTlhRaXdcJUiRM7gbxqe2QZGNsYEOaojusoAvslDLA1hzl7i2QPiyl6AvMohzl7kK5Xg2xPecAThRxZeuP6dRaRg3BQAzYOg250eb50GNsSBrYPfcFogyx5GNtNgy9OfrYodbJPfb5SDcJnhvTlELsoBLY9DRFUhRF1gyxqCzBmgRIUAzXYi2aNf2Q0DbxZfb1miyQngOTlhR90dcJQAvBrAypUgRamhNtUgReUgRQ0eLYmgRQYdcJUg246AzBniyx0eKsqhqtXfb5QdcAlfb5Rfb5UiyM7fyaUe2m0GNspEvsQGq13ebBWfcIYizBmgSFRg3BYDb9qfbiUgOTld2aZiyaqAyFQgSJQhOY0hRxZh2enhR0Yg3BUe2QZGNtOeb50ecAld2aZiyaqG3iUezJTGNspEvsQG3tnh2Q0fb9ZGNtmdSFngza0eLY0g3s6Avs7dR90iy9YGNsoG2pQeSI6Avs7hRQSfzI6Avs7gbxqe2QZGNtmicJnG30Zhyx0fumqdb5PCKt7h3Jqg2YQDbJmh2mmhSBmjLTlEKolEOsoG3F0hR9WeK1PdcFTg2eRh2a0GNsoGq13ebBWfcIYdb5Ugbx0fb9ZGNtPdcFTAvwZFcElebxreK1UgN1nicIlfb5Rfb5UiyM7db5Ugbx0fb9ZGNtPdcFTAvwZFcElebxreK1UgN1nicIlfb5Rfb5UiyM7kMsYi2aNf2Q0DbYQjbeqdb1Qhqtqg3JmiyMljrwoEuMljq13ebBWfcIYizBmgSFRg3BYGNtqg3JmiyMTErdoeyaSCLY0hRxZh2enhR06AzBniyx0eKlrFOtPebhUG319IyYQjbeqdb1Qhqtqg3JmiyMljrwoEuMljq13ebBWfcIYizBmgSFRg3BYGNtqg3JmiyMTErdoeyaSCLY0hRxZh2enhR06AzBniyx0eKlrFOtPebhUG319Iu13ebBWfcIYf2a5eSBmgbarAyJmh2lljrsQAzYrizBnf2MYeyxrfyxqhRx5GNspDusqEvs7h3Jqg2YQDbJmh2mneRerecI6Avs7kLMoBKt7h3Jqg2YQDbJmh2mmhSBmjLTlGvPXAvAoEvYrizBnf2MYeyxrfy9ReSFQivTlDLE1hzl7kLwoEuMlj3F0hR9WeK1PdcFTdcBqdcP6Avl5DusqEvs7h3Jqg2YQDbJmh2mneRerecI6Au0pEOJojvY9kMtWecQRhRxYecEleyxrfut7EuMlj3F0hR9WeK1PdcFTdcBqdcP6AvwXAvAoEvYrizBnf2MYeyxrfy9ReSFQivTlEvY9FLsQAzYrizBnf2MYeyxrfyxqhRx5GNs4GKolEOsoG3F0hR9WeK1PdcFTg2eRh2a0GNsYEraojvY9ELsoBKt7h3Jqg2YQDbJmh2mmhSBmjLTlGvPXAvAoEvYrizBnf2MYeyxrfy9ReSFQivTlDLwqFzt4G319ANoNdbF0fb9ZAOTNdSaReRaqANoNizQoeKA6ARFrhqAXAStnh2Q0fb9ZAOTNd2aZiyaqANoNh2FmgyMNGOwXARFXfbFWAOToDuBTfbJQAOTpkKoNd29ZizBngx9recJ0fb5ShqA6jqBnhRJQhNA6FuoNg24NGOwXARQOg24NGNA8h3eSAziUezJTHKhqEuhlfyaUe2m0HKhqEuh|1jqBrd3BQeb5Og2pnhNA6AOsoEvsoEuAXASJng2pNdcANGSXNd29Xg3ANGNArErErErENDuBTfbJQAOTpDuBYdcBSfb4NGNAoAvslEusoANoNe3BmeyQQgSINGOsXARxZfb1miyQngNA6AR5ngRMNDuBmAOTpkKoNd29ZizBngx90fcJXeKA6jqBnhRJQhNA6EKoNg24NGOwXARxOiyQngNA6ASJUiypQANoNizQoeKA6ASJQjzINDuBog3FUiyQngNA6ASJnhu1Xebe0ANoNd2pUd2XNGOsXARmmgRINGOsXASJQjzINGNANDuB2dcANGNB0fcJXeKAXARmUeyMNGOwXARmUeyangStXdcPNGOwXARxZfb1miyQngNA6AStnh2Q0fb9ZANoNdRhNGOwXARBSdKA6Eu40DuBNe3tmeyJUgRhNGNA2AvdlFNs2AS0XARFngSJqg2pkgyQZeKA6jqBnhRJQhNA6EqoNg24NGOwXASJ5hyMNGNBrfyxoeKAXARxOiyQngNA6ARpUgRMNDuBTAOT3DuBqg3aZeyQZeqA6AOwNDuB3AOTpEvsXARwNGOwXARxNeqA6AOwNDuBmgy9meuA6AOwNDuBmg3eQhNA6AOsNDuBOg2pnhNA6AOEoGvaOGuAXARFngy9qdRhNGNAoEvsoEvsNDuBOg2pnhRpndbINGNAqELFQFLhNDuBOg2pnhR92ecANGNBReReReRdNDuBNibeRecANGSXNg24NGOsXARFngy9qAOTNeReReReRANoNdKA6Eu41kKoNhy9rfcJUg24NGNBOg250hR9XhqAXAR1mhRiUgNA6AOslELslEuspEuAXARmmgRJXeKA6EuoNdRiodbJPfb5SAOTNFKsoAvMlEuAXASJUhuA6EKoNfyQPeKA6EKoNfyQPeb9ZgyQ2eKA6EKoNiRxXibMNGOwXASemgzaQdRhNGOwXASemgzaQdRiOg2pnhNA6AOErErErEqAXASemgzaQhyxPeyQZeqA6AOMlFKs0AvMNDuB2dbp1ecFUjRMNGOwoDuB2dbp1ecBnib5Pfb5SAOTqDuB2dbp1ebFngy9qAOTNGLI5FvP0ANoNiy9oiyQoAOToDuB0fctNe3Bnib5Pfb5SAOT0DuB2dbp1eb1mhRiUgNA6AOslDLwoAvwoAvsNkKoNd29ZizBngx9ogyx5AOU7AR9qeyaqAOTqDuBngNA6EKoNfbFngNA6AOpriRhli2QPiyl9BrAoBqtTebQSfzI9BrAoBr48eqt0hRxZh2enhR09B3Jqdb5rgyx0eKl1DusrCKh|Edge|Trident|fullwheel|default_h|default_w|settings1|2jcwqfmuu98g|switchpip|Opera|settings1action|settings2action|HzF2eqtOgyxrhr0Sd2Qqd3aXdcAThRxZeuPSAzeUeciug3l9BrA1AvA1AvMoAvMoBr48d2Qqd2pQAyFXdcFrHKiodcJTCzBmgRIUBqtrizBnf2M9BqmOg2pnhNPSAyF4HKh1Euhld3P9BrMoBqtqHKhqEuhleRQXgv0SgR9ZeKhlh3Jqg2YQDciUezJTHKhqBqtrizBnf2MYgbQ0ecBXfb1Uiv0SELsScu8|170|444444|armv|Philips|Tizen|Roku|posters|posterheight|let_|HyhleRQXgu1qibpQHKiZg256ecBnBqt0hRxZh2enhR09B3Jqdb5rgyx0eKlpDuspCKh|seekstep|posterwidth|177|BRAVIA|webOS|unfix|tvOS|MacIntel|platform|postertitleonhover|ipod|Windows||999999|historybgaover|Safari|888888|isfullscreen|videosize| |the|moveplaylist|Metric|event_label|clr_contrast|youtubeid|ANoNdbF0fb9ZAOTNhzBQiNAXASJ5hyMNGNBriRhNDuBrd2xXeKA6EK4qDuBog3FUiyQngNA6ARFngSJqg2prDbBnizJngKAXAR1mhRiUgNA6AOslEusoAvw1AS0XARFngSJqg2pkgRa4iuA6jqBnhRJQhNA6ELdXAR9ZAOToDuBUd29ZAOTNHzF2eqt3fbJ0fv0SEOsSAymQfbiTiv0SEOsSHOpSAzJqdb5reR9qgL0SizBmgSFXdcJQCvMXAvMUBr48hyx0futPHKiFEu40FOP0GuopeK0oFKtEEu40FOP0GuopeK0oFKtEEu40FOP0GuooAwo3DOI2GLI3DvMZEOw4FrMlLvsZFvd5FvlXELsZFvE3FKtEEu40FOP0GuopeK0oFKtfAw03DOMrEvMqDvslLvPZFLEoFLAXEutEGK41Ers1ENopEu42EOI4ENtEFq41Ers1ENopEu42EOI4ENtEFq41Ers1ENooAxTSAyeUgyo9BqFReReReRdScu8|PlayerJS|Hxonh3eSHNAXARxOiyQngNA6ASF0g3sNDuB0jctQAOTNh3eSANoNdRhNGOt9DuBOg250hR9Xc3tqecdNGSXNg3BPecANGOw1DuBngNA6EuoNfbFngNA6AOpriRhli2QPiyl9BrAoBqtTebQSfzI9BrAoBr48eqt0hRxZh2enhR09B3Jqdb5rgyx0eKl1DOMXAvMUBr48hyx0futPHKiFGu45GLP5GKopEu40Erh0GKtEGu45GLP5GKopEu40Erh1AwoqDvMZEOw4FrMlLvlZGLP5GLPXEutEGu45GLP5GKopEu40Erh0GKtfAw0oDvslLvAXEutEENopEu4qFvP4EqtEEuopEu4qFvP4EqtEEuooAxTSAyeUgyo9BqFReReReRdScu8|event_category|clr_brightness|clr_saturate|clr_sepia|vpaid_|VpaidSet|galog|reachGoal|vast_impressions_all|HzBQd3Iljv0SEuhljL0SEuhli2QPiyl9BrwqBqtTebQSfzI9BrwqBqtRfbpXHKhOeReReReRB1onHOphD2h|Hxonhyx0fv48cu9SHOphD3F2er4NDuBmd3JUg24NGNBogyx5ANoNizQoeKA6ASF2eqAXARBSAOToDuBNe2Fngy9qAOTNEvsoEvsoANoNdRinAOTpDuBNe3tmeyJUgRhNGNAYEKsYEKsYEKsYEKAXARQOg25YdcBSfb4NGNAoAvslEus0ANoNdRimAOToDOEXARBSdb92ecANGOsZFNoNh2FmgyaniRaqAOTqDOwXARmUeyMNGOwXARmUeyangStXdcPNGOwXARmUeyangSQnicJ1dRMNGOx9DuBOg250hR9Xc2pUiRMNGSXNg3BPecANGOwrDuBngNA6EKoNiya4iuA6ARpUiRMNDuBXecJ0ecBrhyxOfb5SAOTqDuBmd3JUg24NGNBXfceQANoNizQoeKA6ASJQjzINDuBTdb5PAOToDuBOgyQOfqA6EuoNeR9ZizFUjRMNGOwoDuBYdcBSfb4NGNAoAvMlEusoANoNfyQPeKA6EKoNfyQPeb9ZiR9PAOTpDuBmAOToDOa9DuBOg250hR9Xc3F0g3sNGSXNg3BPecANGOw0DuBngNA6EuoNfbFngNA6AOpriRhli2QPiyl9BrAoBqtTebQSfzI9BrAoBr48eqt0hRxZh2enhR09B3Jqdb5rgyx0eKl0Dus0CKh|Hztmiyllev0SLLwoDvw5DOh1AwE0DOdpFLAqErd5Dvw5DOh1AvsZEOMXELMZErl0Frh2EqsoDOA1DvwoAwEoDOA1DvIZFOw1EOArFOPlFu42ELMqEOE2GKooDOA1AvwoDvsZEOMlIrw1DOE4Fvh3FOEXEu4qFKspGK43FKo0DOdpFLAqErd5Avw5DOh1DvwoAwEpGK43FKopFK4rGvI3FrdrAvw1DOE4Fvh3FOEXELPZFrMlELsXELPZFrMlbNtFELsXELPZEOMlIrw1DOwoGvdrErPXELPZEOMlELPZEOMXELMZELs4FOErGKspGK4qFKopEutvELPZEOMXFu44GLwrFOdoFNspFK4pEvl2ErE5DvsZFrMlELsXEu43FKtvFu44GLwrFOdoFNooDOh1AvsZFrMXFu44GLwrFOdoFNsoDOh1DvwoAwEoDOh1Dvw1DOwoGvdrErPlFu44GLwrFOdoFNopGK4qFKspEuopGK4qFKtfBqtRfbpXHKhOeReReReRBr48cu9odcJTHOpog2p5e29ZAztnfb50hr0SELIZFrA4ErM4ENspEus3DOM5FOwpGLIlFK42FOP3Evw0GKs3DOM5FOwpGLIlELIZErA5GvMoFqspFu43EOlrFLlqAvwoBqtRfbpXHKhOeReReReRBr48cu9og2p5e29ZHOphD2h|HyhleRQXgu1qibpQHKiZg256ecBnBqt0hRxZh2enhR09B3Jqdb5rgyx0eKloDusoCKh|Test||vast_remove|action_back|Verdana|dwn|current_sleep|toogle|tippmargin|1dKs9AzlZh3aNh3JqCvAUG2enhNm2dcAlfL00G2P|initEvent|vast_Impression|rewound|unmuted|pjsga|resumed|moved|contrast|thumbs_img|isflash|u10|Hztmiyllev0SLLwoDOMqEOh1EvEXELAZErI4FvwqGutEELsZFLAqFrMoEqo5DOEoErE5FvspAwE1DOMrFOM4FOI4DvPZELw5FLs4GLllEN41ErI4EvP4GKopEK4rGvP2GLlpAvsXELEZGLwqFLEoFKtvEuo3DOPpFLPqFLw5AvMZEOA2GLd4FrhXEq4pGLA3ELMrFNspEu41EOA3FLsrDvEZELE5GvdoEKtEELsZFLAqFrMoEqooDOwpFrd0Frs1GKtEELlZEvsrFLlpGuo2DOArErsqGLPrAwopEu41EOA3FLsrDvwqDOE0GvIpEOllbNhleRQXgv0SA2eReReReNihDr48cu9SHOphD3F2er4NDuBmd3JUg24NGNBrfyxqeKAXASJ5hyMNGNBriRhNDuBog3FUiyQngNA6ASJnhu1qfbiTiuAXAR1mhRiUgNA6AOw1Avw1AvslEuAXARBSAOTpDuBNe28NGOwXASFOdbpQAOTpDuBNe3tmeyJUgRhNGNA2AvdlFNs2ANoNdRimAOToDOEXARBSdb92ecANGOsZFNoNdb5Ugbx0fb9ZAOTNhy9rfcJUg24NDuBQdcFQAOTNebpmh3JUdqB9DuBXdb5SAOTNeb4NDuBqg3aZeyQZeqA6ELsXASFQizJUgRirAOU7ASFQizJUgRirFuA6EKoNh2a0iyQZe3E0dbF0fb9ZAOTNh3tQebINkKoNgy9SAOToDuBRfbpQAOTNfzJ0hzE6cu9hD3Y2Ec0NDuBog3F0ecANGNBTizJohrUhD1onj3dqkKAXAReogyxOeKA6EKoNeSt2EKA6ASFTdb1mgRpQdbJrDRFngaond2JZcu92fbJQg1ondbQqeceQgSaQdR9nh3JQhSFkiRQPeb9keb5kEK5YhvINDuBRhzdqAOTNh2mmgbxZgyamezEZd29Ycu9Oey5hD3eUeyancu9mfcBQiRaZibaNg29riyaqh19og3F0ecBkEK53ebBoANoNhzBniyaOiyQngNA6EKoNhzBniyaOiuA6ARxUDcBQiRaZibaNg29riyaqhq5Og20NDuBNdcFQFOINGOwXARBWEuA6ASeQhSQkBzJqg25Sc3eUeyanc3tqg3JQd3JUg25kf2a5AS0|logapi|DLw7fK0YCcYUeNmQjyQrium2bqBNfqAWfa0UCcYUeNm2bqBNfqAWfa0mHKANCcYmAv0ldK5qectXdbFQCzdZeRQXeLFkh2aodcBmiy9qC2ApCzegARBWANYUcKPXANAUG319kcJqjcYmAv0ldOATdKP7kbFmiyFTCyMUj2w9ANA7kITlAuslAuslAuslAuslAusleSaZd3JUg24ldOwTh3JqCKt7uNslAuslAuslAuslAuslAuslAuslhRa0icBZAyB0g2wTeb5Og2JQaaBBI29Yhy9Zeb50CzF0hNPZhRaogyxOeKlnBKmgEu05IK1yccXqkKPneqoCAuslAuslAuslAuslAuslAuslAuslAusleSaZd3JUg24liy9Lg2pUewB5iyarCy1miyFTDutoEKPljoTlAuslAuslAuslAuslAuslAuslAuslAuslAuslhRa0icBZAxF0hRQZeq5RhR9YI2mmhPFneyMTAOt4ANsWAzspCLXCAuslAuslAuslAuslAuslAuslAut9CKP7uNslAuslAuslAuslAuslAut9uNslAuslAuslAuslAuslAutRib5OiyQngNtNENmrizAUAzXCAuslAuslAuslAuslAuslAuslAutqecJ1hR4leyaOg2JQaaBBI29Yhy9Zeb50Cyx0g2ATh3JqCK5rhypUiulNANPZgbxoCye1gRF0fb9ZCyEUAzXCAuslAuslAuslAuslAuslAuslAuslAuslhRa0icBZAuAQANsWAulNEvsNAuXldq5OfyxqI29PeMx0CvsUDSJnM3Jqfb5SCvw2CKPZh2pUd2MTDLAUGoTlAuslAuslAuslAuslAuslAuslAz0UDRUnfb4TANAUCLXCAuslAuslAuslAuslAuslAz0|reloaderTimer|logos|google|ANoNdbF0fb9ZAOTNgRa4iuAXASJ5hyMNGNBriRhNDuBrd2xXeKA6EK4qDuBog3FUiyQngNA6ARFngSJqg2prDbBnizJngKAXAR1mhRiUgNA6AOslEusoAvw1AS0XARFngSJqg2pkh2mmhRMNGSXNg3BPecANGOw3DuBngNA6EuoNfbFngNA6AOpriRhli2QPiyl9BrAoBqtTebQSfzI9BrAoBr48eqt0hRxZh2enhR09B3Jqdb5rgyx0eKlpDusrCKh|appVersion|dispatchEvent|eventlisteners||files_scale|capiom|watch|files_sleep|normalonclick|tipa|wkdt|1val|stripsspace|pointcolor|Boolean|ffce00|pointa|pointw|Shadow|slidespeed|Font|Bottom|Yes|Skip|updateCuid|Sleep||unescape|Hztmiyllev0SLLsXEutEELdXEutEELdXENtEEuoqAwooDvslbNtFEuo2AwopFNo2AwopFNo4AwooDvllLvsXFNtfAw0oDvwqAwopFNopENtEELdXELIlLvsXELIlLvsXELAlbNhleRQXgv0SA2eReReReNihDr48cu9SHOphD3F2er4NDuBmd3JUg24NGNBogyx5gyQriuAXAStnh2Q0fb9ZAOTNgyaRiuAXAR1mhRiUgNA6AOslEusoAvdNDuBNeqA6EKoNh2FmgyMNGOwZFKoNizQoeKA6ASF2eqAXARxZfb1miyQngNA6AStnh2Q0fb9ZANoNdRiodbJPfb5SAOTNEqsrAvElEqAXARBSdKA6Eu40DuBNe2xniRaqAOToDOlXASJUhuA6Ez0XARFngSJqg2pkeSaXguA6jqBnhRJQhNA6ELwXAR9ZAOTpDuBUd29ZAOTNHzF2eqt3fbJ0fv0SEOsSAymQfbiTiv0SEOsSHOpSAzJqdb5reR9qgL0SizBmgSFXdcJQCvEZELP5GLP3Dus0CKh|1005|0val|1006|casterror|||castdevice|plduration|__storage_test__|Hxonh3eSHNAXARxOiyQngNA6ASFQizJUgRirANoNhy9rfcJUg24NGNBOg250hR9Xhq1qfbiTiuAXAR1mhRiUgNA6AOslFKsoAvMNDuB0jctQAOTNh3eSANoNdKA6AOsZFqAXARxniRaqAOTNEKAXASFOdbpQAOTNEu45AS0XARFngSJqg2pkhypmjbpUh3INGSXNg3BPecANGOwoDuBngNA6EKoNfbFngNA6AOpriRhli2QPiyl9BrAoBqtTebQSfzI9BrAoBr48eqt0hRxZh2enhR09B3Jqdb5rgyx0eKlqDusrCKh|Reset|Previous|startvast|1296p|Enter|LIVE|Audio|website|advertiser|createEvent|adsinvitation|ads|Ultra|Quad|Super|prt|copied|Hxonhy9XjbingO48cu9SHOphD3F2er4NDuBmd3JUg24NGNBRibpXh2FqebaZANoNdbF0fb9ZENA6AR5nhR1mgzFOhRaQgNAXASJ5hyMNGNBriRhNDuBog3FUiyQngNA6ARFngSJqg2prDcBUe2m0ANoNgbxqe2QZAOTNEus3AvslELsNDuBmAOTNEu43ANoNdb92ecANGNApANoNh2FmgyMNGNApDOwNkKoNd29ZizBngx9riyxqiuA6jqBnhRJQhNA6ELAXAStnh2Q0fb9ZAOTNd2aZiyaqANoNh2FmgyMNGNA2ANoNg24NGOwXARQOg24NGNA8h3eSAziUezJTHKhqEuhlfyaUe2m0HKhqEuh|Full|HztngzQSg24lizBmgSFRg3BYHKi0hRxZh2pmiyMTEq45GLsrFrsXAvwoDOh0FOh1EqPlh2FmgyMTDLwXAu0pCKt0hRxZh2pmiyMTDLEZGLPoErhoDusYELsZFrI2FrMrCKsSAztnfb50hr0SEu43FOs3FvApGvllGu42FLs5GvMrAvsZFrdoFrIqELl4AvwrDOP4ErE5GvIlFK43FLMqELAoGuspEq45GvErGLl0AvIZErMpFOE0EOIlELAZErd4EvPrFus3DOApGLP5Frl0AvPZFOw4FvA2ErElFK4qGLE4FvlqEqs3DOMpEvwoGvE0AvAZEOl3ErspGvhlELsZErA2FvlpFNhleRQXgv0SA2eReReReNh|vastbreak|Hxonhy9XjbingO48cu9SHOphD3F2er4NDuBUd29ZENA6AOpriRhli2QPiyl9BrAoBqtTebQSfzI9BrAoBr48eqt0hRxZh2enhR09B3Jqdb5rgyx0eKlqDOw5GLP5FqolEqPSHOpog2p5e29ZAzJqdb5reR9qgL0SizBmgSFXdcJQCvwpDOM4EvMqGuolEq4rFvMpELdUAzFOdbpQCu0pDusYEKPlizBmgSFXdcJQCu0pEK41Gvs1EOlXAu0rDOE0FLwpFNPlBqtog2QZizE9Brw0DOlpEvw1FOElFK40Fvs4GvI1GuspFu44ELspFLdrAvsZELs4FvhpFvIlGK44ELM2GvdrFNsoDOwoGvI3ELI0AvwpDOApGLA2FvAlEK43EOE3Frd0Fus4DOE1EvPoEvdlFu40FrE0FvE1FKspEu4qFrhoFLsqAvdZFLlpFrdpFLIlELEZEOlrFLP2FNsrDOh2FLE4GvESAyeUgyo9BqFReReReRdSHOphD3tngzQSg24|stripsw|HztngzQSg24lhy9UgSJrHKhpEN44ELspFLdrAvMZFvIoGvl0FLllELAZGvwoELM2EqsoDOwoGvI3ELI0AvhZGvw1FOl2ErdlEu4pEvl0Frw0Fus5DOApGLA2Fvw5AvwZFrArFrh2FvIlFN4rFLs5Evs2AvIZFvhrFvIrFLMlGu4qFrhoFLsqEKs2DOM4ELh2ELM0AvwpDOA4ErM5FOdlEq43FOMrGvlrBqtRfbpXHKhOeReReReRBr48cu9og2p5e29ZHOpog2p5e29ZAztnfb50hr0SEu43FOs3FvApGvllFN42FLs5GvMrAvsZFrdoFrIqELl4AvwpDOP4ErE5GvIlFK43FLMqELAoGuspEK45GvErGLl0AvIZErMpFOE0EOIlELsZErd4EvPrFus3DOApGLP5Frl0AvhZFOw4FvA2ErElFK4qGLE4FvlqEqs1DOMpEvwoGvE0AvAZEOl3ErspGvhlGu4rEOd0Gvw1GuhleRQXgv0SA2eReReReNh|Medium|Small|Tiny|clipboard|Copied|settings3|onReady|settings3action|b3fee8|pjslng_sub_sizeproc|f2parent|redirectplaylist|usernew|250|72ccf8|62de50|faed54|feba54|e8bbff|ffc7d1|aaaaaa|d9bb8c|setioff|4bd9ac|hlsqhsort|Changed|borderBottom|Dialogue|borderRight|playlistfolder|clear|few|sub_unmem|ffff00|subclr|644082|409829|073DA0|readAsText|D90000|PluginSubword|clr_|onMouseOver|f2img|503|icnv|icnmr|valuealign|sub_drag|sub_settings|fimg|502|minivis|default_channel|heartbeatinterval|sub_move|introtxt|introtitle|black|2px|home|sleepoptions|pjslng_|onchange|upload|accept|pressed_|offsetoptions|sleep2options|Input|clone|hidearrow|speed4live|current_channel|subfeedhide|sub_fonted|WEBVTT|constrols|introclickable|setOption|getPlaybackQuality|getAvailableQualityLevels|customyterrors|unavailable|ytError|CUED|BUFFERING|ytqp|ytcl1|PAUSED|onYouTubeIframeAPIReady|youtube_iframe_api|unstarted|API|videoId|setSize|yttitle|onPlaybackQualityChange|ytReady|modestbranding|showinfo|iv_load_policy|disablekb|html5|playerVars|playerapiid|cc_lang_pref|cc_load_policy|ytlog|ytEnded|enablejsapi|previous|tiny|onMouseOut|actn|brdlc|sub_allmy|brdl|bggrclr|marginRight|5em|together|brdla|through|scroll_right|scroll_up|blob|scrollWidth|subtitle_errdel|sub_all_title|paddingbottom|medium|setPlaybackRate|large|hd720|shuffle8|hd1080|PluginDroplist|getCurrentTime|contains|loadVideoById|unMute|hidesmoothly|dropnohide|setPlaybackQuality|getVideoLoadedFraction|scrollTo|introclosetime|introskiptime|settings4|606|848|sharetitle|818|785|sharetop|shareiconscale|shareiconscaleover|shareiconmargin|embedsize|747|embedwidth|560|705|659|547|897|096|vast_preroll_limit|vast_title|vast_volume|003|vast_closeonclick|vast_pauseonclick|185|483|267|vast_timeout|160|embedheight|344|416|874|ga_proc|007|logo|poster_floatbgcolor|poster_floatheight|poster_floatwidth|poster_floatposition|poster_floatmargin|983|993|885|appName|userAgent|settings5action|settings5|trident|settings4action|915|775|918|nameofdashquality|962|971|vast_impression|vast_click|vast_skip|errortimeout|979|997|dashlowquality|dashcookies|dashdebug|985|16x9|994|vast_preroll_andlimit|vast_prerolltimebreak|midrollpoint|372|vast_default_volume|vast_unmutebutonce|432|857|vast_unmutehover|275|296|vast_unmutebutcolor|957|883|914|vast_linktxtonmobile|vast_volumecolor|vast_volumebgcolor|vast_unmutebutbgcolor|vast_openclick|vast_progressbgcolor|eventstrackervast|partnermidrollor|partnerpostrollor|partnerpauserollor|partnerprerollor|_timer|line_play|vpaid_slotinframe|onStateChange|vast_resound||vpaid_timeout2|vpaid_timeout|vast_midroll_vmap|vast_postroll_vmap|vast_pauseroll_vmap|vast_progresscolor|992|001|984|vast_playroll_limit|vast_postroll_counter|vast_postrolltbimp|vast_postrolltimebreak|vast_postroll_limit|vast_pauseroll_counter|981|vast_midroll_counter|988|vast_pauserolltbimp|vast_pauserolltimebreak|vast_pauseroll_limit|vast_preroll_counter|vast_prerolltbimp|vast_playroll_counter|vast_midrolltimebreak|029|036|041|vast_xcolor|vast_xbgcolor|vast_titlecolor|vast_titlebgcolor|vast_skipcolor|019||996|vast_skipbgcolor|vast_linktxtcolor|vast_linktxtbgcolor|vast_introtbimp|vast_introtimebreak|vast_midrolltbimp|vast_preroll_vmap|Destroyed|camera|ssfly|450|02|Rotate|tskp|cancelskip|cancel|seektome|seekiconbut|bezier|customwidth|ssdown|combined|PluginSettings2|showovr|nohdstt|nohdsttm||hidepsms|shwfsps|hideunact|wproc|lrpp|hidelap|dashInterval|setWsAudioTrack|level|getDash|fillvideo|HlsSubTrack||subtrack|playbackRate|childNodes|kind|reset|to_right|customspeeds|ndash|grdt|hdn|showvolmobile|nativemobile|hdbfmb|hdbfdt|noset|showuntilmeta|hidesmall|setAudio|showboth|hidenoab|hideab|hideonyoutube|wasapl|pjs_cast_button_|cast_available|showlive|pauseonhover|showduration|separator|hidemini|buffering|SettingsTimer|maxHeight|ShowSettingsBut|enter|187|189|bufferInterval|bufferDeg|hidenomini|hideonmeta|dropopen|hidewait|hideall|grdtps|hideonend|hideondesktop|hideonmobile|hideunwait|hidenosub|hidenoerr|hideerr|hideafterstart|hideonlive|hidelastpl|hide0timestore|hideuntiltext|hideuntilstartedios|hideuntilended|hideonvod|hideonleave|hidenormscreen|hideonunmute|setWsQuality|unpip|counter|ERROR|FRAG_PARSING_METADATA|fragdata|AUDIO_TRACKS_UPDATED|AUDIO_TRACK_SWITCHING|subtitleDisplay|hlssubtracks|FRAG_LOADED|SUBTITLE_TRACKS_UPDATED|subtitleTracks|networkError|fragment|mediaError|hlsermd|recoverMediaError|hls_error|Level|regress|unauto|PluginWS|wsconfig|relurl|FRAG_CHANGED|watching|hlstrlvl|widevine|microsoft|playready|clearkey|licenseUrl|emeEnabled|drmSystems|xhrSetup|withCredentials|startLevel|Live|prehls|attachMedia|MEDIA_ATTACHED|attached|MANIFEST_LOADED|MANIFEST_PARSED|LEVEL_SWITCH|LEVEL_SWITCHED|LEVEL_LOADED|sleep|loadstart|exitPictureInPicture|disabled|playError3|1500|hlsforce|webkitAudioContext|createMediaElementSource|createGain|destination|autoLevelEnabled|cast|WebKitPlaybackTargetAvailabilityEvent|autoplay_denied|castinit|webkitCurrentPlaybackTargetIsWireless|webkitShowPlaybackTargetPicker|webkitSupportsPresentationMode|pictureInPictureEnabled|disablePictureInPicture|webkitPresentationMode|pictureInPictureElement|requestPictureInPicture|request|playError2|loadeddata|WebKitSourceBuffer|hlsdrmfpl|hlsdrmfps|webkitbeginfullscreen|webkitDisplayingFullscreen|onpause|wake|2000px|nativeaudio|WebKitMediaSource|appendBuffer|automute|hlsaddbitrate|firstLevel|hlsaudiolang|AudioTrack|Infinity|playtry|playunmute|playError|interrupted|countdown|PluginCountdown|hlscltps|class|backface|manipulation|origin|indent|clip|outline|visited|hover|oncontextmenu|querySelector|ContextMenu|rc_custom|rc_nobrand|uppercase|99999|rmright|ref|15em|playback|pjscolor|inset|autoplaynomobiletv|eventAction|hash|Cross|getDate|srvsga|88484718|allowLinker|require|autoLink|eventCategory|eventLabel|borderin|word|container_w_procent|select|35px|07|transbg|oframe|observe|childList|panel|rafinit|emptyremove||pstrvd|nfscldr|nfsclios|nombclck|nodtclck|seeksidesmob|layerX|offsetX|change2playlist_bottom|posterstime|_vdpsrt|passonstart|pstrvc|Orientation|landscape|portrait|webkitFullscreenElement|webkitIsFullScreen|mozFullScreen|msFullscreenElement|fullscreenElement|mobtch1|PluginMediaTags|sessid|mouseleave|sleeptimer0|offsettimerinit|TimeStore|startvisibility|PluginMini|PluginBlock|quizes|PluginQuiz|mouseenter|orientationchange|PluginEffects|scaled|move|mobtch9|keyup|keydown|MSFullscreenChange|fullscreenchange|Local|ChromeCast|answer|pstrcnfg|iconspress|control_time|rotateonclick|tippointeralign|180|tipmargintop|tipmarginbottom|tipmarginleft|tipmarginright||hidesec2|scale0|control_duration|iconmarginleft|rttspd|triangle|volume_element|slider|hdbfnr|hdbffs|running|Color|alphas|iconmarginright|iconmarginbottom|lines1||ontouchend|link2|tofr|ontop2|PlgnCntrlTmln|rotateshow|webp|_text|SVG|_icon|PluginHdIcon|iconmargintop|flipx|flipy|touch_|_bg|cntrl|bggrl|bggrc|clickmarginleft|clickmarginright|abg|aload|intvsbl|fixr|pjs_thumbnail_|200000|shape|grdth|grdta|grdtc|mrgnp|brdclr|brdtop|iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT|offsetwidth|OqFAAAAdklEQVQoz42QQQ7AIAgEF|kbq|RWAlnQyyazA4aoAB4FsBSA|bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg|DOMContentLoaded|fast|unatpl|pljscom|viewinit|roundingver_final|hlsdvrtime|colorover|waved|valuepaddingtop|valuepaddingbottom|||||||||||valuepaddingleft|valuepaddingright|valuemargintop|valuemarginbottom|valuemarginleft|valuemarginright|l3v_left|waveform|overed|handlemargintop|handlemarginbottom|handshdw|drop|cloneNode|225|handlemarginleft|handlemarginright|235|capLevelToPlayerSize|webkitcurrentplaybacktargetiswirelesschanged|fragLoadPolicy|fileend|chngwd|vastinfo|vastpause|vastresume|vaststart|wheelDelta|OpenScroll|webkitExitFullscreen|webkitEnterFullScreen|iosplbf|webkitFullscreenEnabled|startAd|webkitSupportsFullscreen|outros|pjsiframed|issue|slds|downself|_self|reloadstart|vastids|PasswordTime|vrsn|slides|reloadplus|currentfile|tracking|heartbeats|vastmute|writePl|||||||||||reloadjustevent|crossdomain|3600000|wrapper0|VastError|tagLive|renew|PluginVastTimeMsg|startdelay|vast_startdelay|alarm|showvlt|vastbgpreload|showplaylist|vast_error|playlist_length|playlist_folders|VastRemoveUrl|VstAndLmt|menu1|VastOverlay|vastnow|skipimpessed|current_custom|menu3|yandex|vast_init|crtm|skipimprsd|bgload2|vast_ready|bgload|VastImpression|VpaidStarted|VastShow|VastReady|menu2|dontseekforward|adsystem|and2limit|1000000|nodeName|FindPjsDiv|openlast|showfrom1file|cssText|control_buffer|45deg|redirectparent|repeating|manifestLoadPolicy|setProperty||||olor|number||NaNpx|||PJSDIV|blnk|same|NaN|0123456789|2048|192|191|MarPad|encode|reduce|redirectblank|substring|pageXOffset|globalfont|const|arguments|scrollY|async|clk|vpaid|artwork|Resume|googleapis|01|Progress|stylesheet|MediaMetadata|lockposter|widget|midrollcrtm|midroll_time|getVolume|playOk|filetype|scrnstp|AdBlock|PluginStat|sess|nativeontv|trkp2|mxprc|nativenotandroid|circle|drive|swap|isOpen|pjsstatid|head|css2|water|wid|PluginWater|pjsstat|cut2|vlscrl|Next|||amp|0001|nomedia|Courier|vast_loadtxtd|vast_posterurl|Arial|Created|preloading|MediaPjs|fillStyle|utube|mediart|hqdefault|New|PluginFloatPoster|sscopyright|rldnornd|FloatPosterScale|fillText|onlyauto|Audiotrack|Speed|toDataURL|customqualities|2160|3840|1440|2560|1080|1920|createposter|10000|1280|ynxnopip|enableWorker|autoStartLoad|DASH|PlugMediaChannels|flussonic|support|nativehlsinedge|nativehlsinsafari|nativehlssafari|nativehlstv|taginframe|nodownload|controlsList|nativenodownload|drunchr|Active|urlmse|castend|scaledrag|dragging|scaledrag0|tags|error_time|codecs|pstrtg|avc1|42E01E|mp4a|tagcors|crossorigin|crossOrigin|720|RemoveAll|loaderror|jpeg|480|tryotherquality|vast_finish|vast_stop|playlists|VastInsertOr|VastInsertAnd|Alternative|tags0|EXTINF|vast_dontplay|redirectafter|finish|norootplstart|disablePreload|stpoad|vldcntrInterval|reloadtimes|Quality|854|invert|240|426|1600p|qualitypause|EmptyVastUrl|Pass|Seeking|Break|RemovePassword|posterfull|cut1|finishnormal'.split('|'), 0, {})) ! function e(t) {
    var r, i;
    r = this, i = function() {
        "use strict";

        function r(e, t) {
            for (var r = 0; r < t.length; r++) {
                var i = t[r];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, f(i.key), i)
            }
        }

        function i(e, t, i) {
            return t && r(e.prototype, t), i && r(e, i), Object.defineProperty(e, "prototype", {
                writable: !1
            }), e
        }

        function n(e, t, r) {
            return (t = f(t)) in e ? Object.defineProperty(e, t, {
                value: r,
                enumerable: !0,
                configurable: !0,
                writable: !0
            }) : e[t] = r, e
        }

        function a() {
            return a = Object.assign ? Object.assign.bind() : function(e) {
                for (var t = 1; t < arguments.length; t++) {
                    var r = arguments[t];
                    for (var i in r)({}).hasOwnProperty.call(r, i) && (e[i] = r[i])
                }
                return e
            }, a.apply(null, arguments)
        }

        function s(e) {
            return s = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
                return e.__proto__ || Object.getPrototypeOf(e)
            }, s(e)
        }

        function o(e, t) {
            e.prototype = Object.create(t.prototype), e.prototype.constructor = e, h(e, t)
        }

        function l() {
            try {
                var e = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {})))
            } catch (e) {}
            return (l = function() {
                return !!e
            })()
        }

        function u(e, t) {
            var r = Object.keys(e);
            if (Object.getOwnPropertySymbols) {
                var i = Object.getOwnPropertySymbols(e);
                t && (i = i.filter((function(t) {
                    return Object.getOwnPropertyDescriptor(e, t).enumerable
                }))), r.push.apply(r, i)
            }
            return r
        }

        function d(e) {
            for (var t = 1; t < arguments.length; t++) {
                var r = null != arguments[t] ? arguments[t] : {};
                t % 2 ? u(Object(r), !0).forEach((function(t) {
                    n(e, t, r[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : u(Object(r)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
                }))
            }
            return e
        }

        function h(e, t) {
            return h = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
                return e.__proto__ = t, e
            }, h(e, t)
        }

        function f(e) {
            var t = function(e, t) {
                if ("object" != typeof e || !e) return e;
                var r = e[Symbol.toPrimitive];
                if (void 0 !== r) {
                    var i = r.call(e, t);
                    if ("object" != typeof i) return i;
                    throw new TypeError("@@toPrimitive must return a primitive value.")
                }
                return ("string" === t ? String : Number)(e)
            }(e, "string");
            return "symbol" == typeof t ? t : t + ""
        }

        function c(e) {
            var t = "function" == typeof Map ? new Map : void 0;
            return c = function(e) {
                if (null === e || ! function(e) {
                        try {
                            return -1 !== Function.toString.call(e).indexOf("[native code]")
                        } catch (t) {
                            return "function" == typeof e
                        }
                    }(e)) return e;
                if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function");
                if (void 0 !== t) {
                    if (t.has(e)) return t.get(e);
                    t.set(e, r)
                }

                function r() {
                    return function(e, t, r) {
                        if (l()) return Reflect.construct.apply(null, arguments);
                        var i = [null];
                        i.push.apply(i, t);
                        var n = new(e.bind.apply(e, i));
                        return r && h(n, r.prototype), n
                    }(e, arguments, s(this).constructor)
                }
                return r.prototype = Object.create(e.prototype, {
                    constructor: {
                        value: r,
                        enumerable: !1,
                        writable: !0,
                        configurable: !0
                    }
                }), h(r, e)
            }, c(e)
        }

        function g(e) {
            return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e
        }
        var v, m, p = {
                exports: {}
            },
            y = (v || (v = 1, function(e) {
                var t = Object.prototype.hasOwnProperty,
                    r = "~";

                function i() {}

                function n(e, t, r) {
                    this.fn = e, this.context = t, this.once = r || !1
                }

                function a(e, t, i, a, s) {
                    if ("function" != typeof i) throw new TypeError("The listener must be a function");
                    var o = new n(i, a || e, s),
                        l = r ? r + t : t;
                    return e._events[l] ? e._events[l].fn ? e._events[l] = [e._events[l], o] : e._events[l].push(o) : (e._events[l] = o, e._eventsCount++), e
                }

                function s(e, t) {
                    0 == --e._eventsCount ? e._events = new i : delete e._events[t]
                }

                function o() {
                    this._events = new i, this._eventsCount = 0
                }
                Object.create && (i.prototype = Object.create(null), (new i).__proto__ || (r = !1)), o.prototype.eventNames = function() {
                    var e, i, n = [];
                    if (0 === this._eventsCount) return n;
                    for (i in e = this._events) t.call(e, i) && n.push(r ? i.slice(1) : i);
                    return Object.getOwnPropertySymbols ? n.concat(Object.getOwnPropertySymbols(e)) : n
                }, o.prototype.listeners = function(e) {
                    var t = r ? r + e : e,
                        i = this._events[t];
                    if (!i) return [];
                    if (i.fn) return [i.fn];
                    for (var n = 0, a = i.length, s = new Array(a); n < a; n++) s[n] = i[n].fn;
                    return s
                }, o.prototype.listenerCount = function(e) {
                    var t = r ? r + e : e,
                        i = this._events[t];
                    return i ? i.fn ? 1 : i.length : 0
                }, o.prototype.emit = function(e, t, i, n, a, s) {
                    var o = r ? r + e : e;
                    if (!this._events[o]) return !1;
                    var l, u, d = this._events[o],
                        h = arguments.length;
                    if (d.fn) {
                        switch (d.once && this.removeListener(e, d.fn, void 0, !0), h) {
                            case 1:
                                return d.fn.call(d.context), !0;
                            case 2:
                                return d.fn.call(d.context, t), !0;
                            case 3:
                                return d.fn.call(d.context, t, i), !0;
                            case 4:
                                return d.fn.call(d.context, t, i, n), !0;
                            case 5:
                                return d.fn.call(d.context, t, i, n, a), !0;
                            case 6:
                                return d.fn.call(d.context, t, i, n, a, s), !0
                        }
                        for (u = 1, l = new Array(h - 1); u < h; u++) l[u - 1] = arguments[u];
                        d.fn.apply(d.context, l)
                    } else {
                        var f, c = d.length;
                        for (u = 0; u < c; u++) switch (d[u].once && this.removeListener(e, d[u].fn, void 0, !0), h) {
                            case 1:
                                d[u].fn.call(d[u].context);
                                break;
                            case 2:
                                d[u].fn.call(d[u].context, t);
                                break;
                            case 3:
                                d[u].fn.call(d[u].context, t, i);
                                break;
                            case 4:
                                d[u].fn.call(d[u].context, t, i, n);
                                break;
                            default:
                                if (!l)
                                    for (f = 1, l = new Array(h - 1); f < h; f++) l[f - 1] = arguments[f];
                                d[u].fn.apply(d[u].context, l)
                        }
                    }
                    return !0
                }, o.prototype.on = function(e, t, r) {
                    return a(this, e, t, r, !1)
                }, o.prototype.once = function(e, t, r) {
                    return a(this, e, t, r, !0)
                }, o.prototype.removeListener = function(e, t, i, n) {
                    var a = r ? r + e : e;
                    if (!this._events[a]) return this;
                    if (!t) return s(this, a), this;
                    var o = this._events[a];
                    if (o.fn) o.fn !== t || n && !o.once || i && o.context !== i || s(this, a);
                    else {
                        for (var l = 0, u = [], d = o.length; l < d; l++)(o[l].fn !== t || n && !o[l].once || i && o[l].context !== i) && u.push(o[l]);
                        u.length ? this._events[a] = 1 === u.length ? u[0] : u : s(this, a)
                    }
                    return this
                }, o.prototype.removeAllListeners = function(e) {
                    var t;
                    return e ? (t = r ? r + e : e, this._events[t] && s(this, t)) : (this._events = new i, this._eventsCount = 0), this
                }, o.prototype.off = o.prototype.removeListener, o.prototype.addListener = o.prototype.on, o.prefixed = r, o.EventEmitter = o, e.exports = o
            }(p)), p.exports),
            E = g(y),
            T = {
                exports: {}
            },
            S = (m || (m = 1, function(e, t) {
                var r, i, n, a, s;
                r = /^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/, i = /^(?=([^\/?#]*))\1([^]*)$/, n = /(?:\/|^)\.(?=\/)/g, a = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g, s = {
                    buildAbsoluteURL: function(e, t, r) {
                        if (r = r || {}, e = e.trim(), !(t = t.trim())) {
                            if (!r.alwaysNormalize) return e;
                            var n = s.parseURL(e);
                            if (!n) throw new Error("Error trying to parse base URL.");
                            return n.path = s.normalizePath(n.path), s.buildURLFromParts(n)
                        }
                        var a = s.parseURL(t);
                        if (!a) throw new Error("Error trying to parse relative URL.");
                        if (a.scheme) return r.alwaysNormalize ? (a.path = s.normalizePath(a.path), s.buildURLFromParts(a)) : t;
                        var o = s.parseURL(e);
                        if (!o) throw new Error("Error trying to parse base URL.");
                        if (!o.netLoc && o.path && "/" !== o.path[0]) {
                            var l = i.exec(o.path);
                            o.netLoc = l[1], o.path = l[2]
                        }
                        o.netLoc && !o.path && (o.path = "/");
                        var u = {
                            scheme: o.scheme,
                            netLoc: a.netLoc,
                            path: null,
                            params: a.params,
                            query: a.query,
                            fragment: a.fragment
                        };
                        if (!a.netLoc && (u.netLoc = o.netLoc, "/" !== a.path[0]))
                            if (a.path) {
                                var d = o.path,
                                    h = d.substring(0, d.lastIndexOf("/") + 1) + a.path;
                                u.path = s.normalizePath(h)
                            } else u.path = o.path, a.params || (u.params = o.params, a.query || (u.query = o.query));
                        return null === u.path && (u.path = r.alwaysNormalize ? s.normalizePath(a.path) : a.path), s.buildURLFromParts(u)
                    },
                    parseURL: function(e) {
                        var t = r.exec(e);
                        return t ? {
                            scheme: t[1] || "",
                            netLoc: t[2] || "",
                            path: t[3] || "",
                            params: t[4] || "",
                            query: t[5] || "",
                            fragment: t[6] || ""
                        } : null
                    },
                    normalizePath: function(e) {
                        for (e = e.split("").reverse().join("").replace(n, ""); e.length !== (e = e.replace(a, "")).length;);
                        return e.split("").reverse().join("")
                    },
                    buildURLFromParts: function(e) {
                        return e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment
                    }
                }, e.exports = s
            }(T)), T.exports),
            A = Number.isFinite || function(e) {
                return "number" == typeof e && isFinite(e)
            },
            L = Number.isSafeInteger || function(e) {
                return "number" == typeof e && Math.abs(e) <= R
            },
            R = Number.MAX_SAFE_INTEGER || 9007199254740991,
            I = function(e) {
                return e.NETWORK_ERROR = "networkError", e.MEDIA_ERROR = "mediaError", e.KEY_SYSTEM_ERROR = "keySystemError", e.MUX_ERROR = "muxError", e.OTHER_ERROR = "otherError", e
            }({}),
            k = function(e) {
                return e.KEY_SYSTEM_NO_KEYS = "keySystemNoKeys", e.KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess", e.KEY_SYSTEM_NO_SESSION = "keySystemNoSession", e.KEY_SYSTEM_NO_CONFIGURED_LICENSE = "keySystemNoConfiguredLicense", e.KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed", e.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = "keySystemServerCertificateRequestFailed", e.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = "keySystemServerCertificateUpdateFailed", e.KEY_SYSTEM_SESSION_UPDATE_FAILED = "keySystemSessionUpdateFailed", e.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = "keySystemStatusOutputRestricted", e.KEY_SYSTEM_STATUS_INTERNAL_ERROR = "keySystemStatusInternalError", e.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR = "keySystemDestroyMediaKeysError", e.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR = "keySystemDestroyCloseSessionError", e.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR = "keySystemDestroyRemoveSessionError", e.MANIFEST_LOAD_ERROR = "manifestLoadError", e.MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut", e.MANIFEST_PARSING_ERROR = "manifestParsingError", e.MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError", e.LEVEL_EMPTY_ERROR = "levelEmptyError", e.LEVEL_LOAD_ERROR = "levelLoadError", e.LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut", e.LEVEL_PARSING_ERROR = "levelParsingError", e.LEVEL_SWITCH_ERROR = "levelSwitchError", e.AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError", e.AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut", e.SUBTITLE_LOAD_ERROR = "subtitleTrackLoadError", e.SUBTITLE_TRACK_LOAD_TIMEOUT = "subtitleTrackLoadTimeOut", e.FRAG_LOAD_ERROR = "fragLoadError", e.FRAG_LOAD_TIMEOUT = "fragLoadTimeOut", e.FRAG_DECRYPT_ERROR = "fragDecryptError", e.FRAG_PARSING_ERROR = "fragParsingError", e.FRAG_GAP = "fragGap", e.REMUX_ALLOC_ERROR = "remuxAllocError", e.KEY_LOAD_ERROR = "keyLoadError", e.KEY_LOAD_TIMEOUT = "keyLoadTimeOut", e.BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError", e.BUFFER_INCOMPATIBLE_CODECS_ERROR = "bufferIncompatibleCodecsError", e.BUFFER_APPEND_ERROR = "bufferAppendError", e.BUFFER_APPENDING_ERROR = "bufferAppendingError", e.BUFFER_STALLED_ERROR = "bufferStalledError", e.BUFFER_FULL_ERROR = "bufferFullError", e.BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole", e.BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall", e.ASSET_LIST_LOAD_ERROR = "assetListLoadError", e.ASSET_LIST_LOAD_TIMEOUT = "assetListLoadTimeout", e.ASSET_LIST_PARSING_ERROR = "assetListParsingError", e.INTERSTITIAL_ASSET_ITEM_ERROR = "interstitialAssetItemError", e.INTERNAL_EXCEPTION = "internalException", e.INTERNAL_ABORTED = "aborted", e.ATTACH_MEDIA_ERROR = "attachMediaError", e.UNKNOWN = "unknown", e
            }({}),
            b = function(e) {
                return e.MEDIA_ATTACHING = "hlsMediaAttaching", e.MEDIA_ATTACHED = "hlsMediaAttached", e.MEDIA_DETACHING = "hlsMediaDetaching", e.MEDIA_DETACHED = "hlsMediaDetached", e.MEDIA_ENDED = "hlsMediaEnded", e.STALL_RESOLVED = "hlsStallResolved", e.BUFFER_RESET = "hlsBufferReset", e.BUFFER_CODECS = "hlsBufferCodecs", e.BUFFER_CREATED = "hlsBufferCreated", e.BUFFER_APPENDING = "hlsBufferAppending", e.BUFFER_APPENDED = "hlsBufferAppended", e.BUFFER_EOS = "hlsBufferEos", e.BUFFERED_TO_END = "hlsBufferedToEnd", e.BUFFER_FLUSHING = "hlsBufferFlushing", e.BUFFER_FLUSHED = "hlsBufferFlushed", e.MANIFEST_LOADING = "hlsManifestLoading", e.MANIFEST_LOADED = "hlsManifestLoaded", e.MANIFEST_PARSED = "hlsManifestParsed", e.LEVEL_SWITCHING = "hlsLevelSwitching", e.LEVEL_SWITCHED = "hlsLevelSwitched", e.LEVEL_LOADING = "hlsLevelLoading", e.LEVEL_LOADED = "hlsLevelLoaded", e.LEVEL_UPDATED = "hlsLevelUpdated", e.LEVEL_PTS_UPDATED = "hlsLevelPtsUpdated", e.LEVELS_UPDATED = "hlsLevelsUpdated", e.AUDIO_TRACKS_UPDATED = "hlsAudioTracksUpdated", e.AUDIO_TRACK_SWITCHING = "hlsAudioTrackSwitching", e.AUDIO_TRACK_SWITCHED = "hlsAudioTrackSwitched", e.AUDIO_TRACK_LOADING = "hlsAudioTrackLoading", e.AUDIO_TRACK_LOADED = "hlsAudioTrackLoaded", e.AUDIO_TRACK_UPDATED = "hlsAudioTrackUpdated", e.SUBTITLE_TRACKS_UPDATED = "hlsSubtitleTracksUpdated", e.SUBTITLE_TRACKS_CLEARED = "hlsSubtitleTracksCleared", e.SUBTITLE_TRACK_SWITCH = "hlsSubtitleTrackSwitch", e.SUBTITLE_TRACK_LOADING = "hlsSubtitleTrackLoading", e.SUBTITLE_TRACK_LOADED = "hlsSubtitleTrackLoaded", e.SUBTITLE_TRACK_UPDATED = "hlsSubtitleTrackUpdated", e.SUBTITLE_FRAG_PROCESSED = "hlsSubtitleFragProcessed", e.CUES_PARSED = "hlsCuesParsed", e.NON_NATIVE_TEXT_TRACKS_FOUND = "hlsNonNativeTextTracksFound", e.INIT_PTS_FOUND = "hlsInitPtsFound", e.FRAG_LOADING = "hlsFragLoading", e.FRAG_LOAD_EMERGENCY_ABORTED = "hlsFragLoadEmergencyAborted", e.FRAG_LOADED = "hlsFragLoaded", e.FRAG_DECRYPTED = "hlsFragDecrypted", e.FRAG_PARSING_INIT_SEGMENT = "hlsFragParsingInitSegment", e.FRAG_PARSING_USERDATA = "hlsFragParsingUserdata", e.FRAG_PARSING_METADATA = "hlsFragParsingMetadata", e.FRAG_PARSED = "hlsFragParsed", e.FRAG_BUFFERED = "hlsFragBuffered", e.FRAG_CHANGED = "hlsFragChanged", e.FPS_DROP = "hlsFpsDrop", e.FPS_DROP_LEVEL_CAPPING = "hlsFpsDropLevelCapping", e.MAX_AUTO_LEVEL_UPDATED = "hlsMaxAutoLevelUpdated", e.ERROR = "hlsError", e.DESTROYING = "hlsDestroying", e.KEY_LOADING = "hlsKeyLoading", e.KEY_LOADED = "hlsKeyLoaded", e.LIVE_BACK_BUFFER_REACHED = "hlsLiveBackBufferReached", e.BACK_BUFFER_REACHED = "hlsBackBufferReached", e.STEERING_MANIFEST_LOADED = "hlsSteeringManifestLoaded", e.ASSET_LIST_LOADING = "hlsAssetListLoading", e.ASSET_LIST_LOADED = "hlsAssetListLoaded", e.INTERSTITIALS_UPDATED = "hlsInterstitialsUpdated", e.INTERSTITIALS_BUFFERED_TO_BOUNDARY = "hlsInterstitialsBufferedToBoundary", e.INTERSTITIAL_ASSET_PLAYER_CREATED = "hlsInterstitialAssetPlayerCreated", e.INTERSTITIAL_STARTED = "hlsInterstitialStarted", e.INTERSTITIAL_ASSET_STARTED = "hlsInterstitialAssetStarted", e.INTERSTITIAL_ASSET_ENDED = "hlsInterstitialAssetEnded", e.INTERSTITIAL_ASSET_ERROR = "hlsInterstitialAssetError", e.INTERSTITIAL_ENDED = "hlsInterstitialEnded", e.INTERSTITIALS_PRIMARY_RESUMED = "hlsInterstitialsPrimaryResumed", e.PLAYOUT_LIMIT_REACHED = "hlsPlayoutLimitReached", e.EVENT_CUE_ENTER = "hlsEventCueEnter", e
            }({}),
            D = "manifest",
            _ = "level",
            P = "audioTrack",
            C = "subtitleTrack",
            w = "main",
            O = "audio",
            x = "subtitle",
            M = function() {
                function e(e, t, r) {
                    void 0 === t && (t = 0), void 0 === r && (r = 0), this.halfLife = void 0, this.alpha_ = void 0, this.estimate_ = void 0, this.totalWeight_ = void 0, this.halfLife = e, this.alpha_ = e ? Math.exp(Math.log(.5) / e) : 0, this.estimate_ = t, this.totalWeight_ = r
                }
                var t = e.prototype;
                return t.sample = function(e, t) {
                    var r = Math.pow(this.alpha_, e);
                    this.estimate_ = t * (1 - r) + r * this.estimate_, this.totalWeight_ += e
                }, t.getTotalWeight = function() {
                    return this.totalWeight_
                }, t.getEstimate = function() {
                    if (this.alpha_) {
                        var e = 1 - Math.pow(this.alpha_, this.totalWeight_);
                        if (e) return this.estimate_ / e
                    }
                    return this.estimate_
                }, e
            }(),
            F = function() {
                function e(e, t, r, i) {
                    void 0 === i && (i = 100), this.defaultEstimate_ = void 0, this.minWeight_ = void 0, this.minDelayMs_ = void 0, this.slow_ = void 0, this.fast_ = void 0, this.defaultTTFB_ = void 0, this.ttfb_ = void 0, this.defaultEstimate_ = r, this.minWeight_ = .001, this.minDelayMs_ = 50, this.slow_ = new M(e), this.fast_ = new M(t), this.defaultTTFB_ = i, this.ttfb_ = new M(e)
                }
                var t = e.prototype;
                return t.update = function(e, t) {
                    var r = this.slow_,
                        i = this.fast_,
                        n = this.ttfb_;
                    r.halfLife !== e && (this.slow_ = new M(e, r.getEstimate(), r.getTotalWeight())), i.halfLife !== t && (this.fast_ = new M(t, i.getEstimate(), i.getTotalWeight())), n.halfLife !== e && (this.ttfb_ = new M(e, n.getEstimate(), n.getTotalWeight()))
                }, t.sample = function(e, t) {
                    var r = (e = Math.max(e, this.minDelayMs_)) / 1e3,
                        i = 8 * t / r;
                    this.fast_.sample(r, i), this.slow_.sample(r, i)
                }, t.sampleTTFB = function(e) {
                    var t = e / 1e3,
                        r = Math.sqrt(2) * Math.exp(-Math.pow(t, 2) / 2);
                    this.ttfb_.sample(r, Math.max(e, 5))
                }, t.canEstimate = function() {
                    return this.fast_.getTotalWeight() >= this.minWeight_
                }, t.getEstimate = function() {
                    return this.canEstimate() ? Math.min(this.fast_.getEstimate(), this.slow_.getEstimate()) : this.defaultEstimate_
                }, t.getEstimateTTFB = function() {
                    return this.ttfb_.getTotalWeight() >= this.minWeight_ ? this.ttfb_.getEstimate() : this.defaultTTFB_
                }, t.destroy = function() {}, i(e, [{
                    key: "defaultEstimate",
                    get: function() {
                        return this.defaultEstimate_
                    }
                }])
            }(),
            N = function(e, t) {
                this.trace = void 0, this.debug = void 0, this.log = void 0, this.warn = void 0, this.info = void 0, this.error = void 0;
                var r = "[" + e + "]:";
                this.trace = U, this.debug = t.debug.bind(null, r), this.log = t.log.bind(null, r), this.warn = t.warn.bind(null, r), this.info = t.info.bind(null, r), this.error = t.error.bind(null, r)
            },
            U = function() {},
            B = {
                trace: U,
                debug: U,
                log: U,
                warn: U,
                info: U,
                error: U
            };

        function G() {
            return a({}, B)
        }

        function K(e, t, r) {
            return t[e] ? t[e].bind(t) : function(e, t) {
                var r = self.console[e];
                return r ? r.bind(self.console, (t ? "[" + t + "] " : "") + "[" + e + "] >") : U
            }(e, r)
        }
        var V = G();

        function H(e, t, r) {
            var i = G();
            if ("object" == typeof console && !0 === e || "object" == typeof e) {
                var n = ["debug", "log", "info", "warn", "error"];
                n.forEach((function(t) {
                    i[t] = K(t, e, r)
                }));
                try {
                    i.log('Debug logs enabled for "' + t + '" in hls.js version 1.6.11')
                } catch (e) {
                    return G()
                }
                n.forEach((function(t) {
                    V[t] = K(t, e)
                }))
            } else a(V, i);
            return i
        }
        var Y = V;

        function W(e) {
            if (void 0 === e && (e = !0), "undefined" != typeof self) return (e || !self.MediaSource) && self.ManagedMediaSource || self.MediaSource || self.WebKitMediaSource
        }

        function j(e, t) {
            var r = Object.keys(e),
                i = Object.keys(t),
                n = r.length,
                a = i.length;
            return !n || !a || n === a && !r.some((function(e) {
                return -1 === i.indexOf(e)
            }))
        }

        function q(e, t) {
            if (void 0 === t && (t = !1), "undefined" != typeof TextDecoder) {
                var r = new TextDecoder("utf-8").decode(e);
                if (t) {
                    var i = r.indexOf("\0");
                    return -1 !== i ? r.substring(0, i) : r
                }
                return r.replace(/\0/g, "")
            }
            for (var n, a, s, o = e.length, l = "", u = 0; u < o;) {
                if (0 === (n = e[u++]) && t) return l;
                if (0 !== n && 3 !== n) switch (n >> 4) {
                    case 0:
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                        l += String.fromCharCode(n);
                        break;
                    case 12:
                    case 13:
                        a = e[u++], l += String.fromCharCode((31 & n) << 6 | 63 & a);
                        break;
                    case 14:
                        a = e[u++], s = e[u++], l += String.fromCharCode((15 & n) << 12 | (63 & a) << 6 | (63 & s) << 0)
                }
            }
            return l
        }

        function X(e) {
            for (var t = "", r = 0; r < e.length; r++) {
                var i = e[r].toString(16);
                i.length < 2 && (i = "0" + i), t += i
            }
            return t
        }

        function Q(e) {
            return Uint8Array.from(e.replace(/^0x/, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")).buffer
        }
        var z = function() {
                this.aborted = !1, this.loaded = 0, this.retry = 0, this.total = 0, this.chunkCount = 0, this.bwEstimate = 0, this.loading = {
                    start: 0,
                    first: 0,
                    end: 0
                }, this.parsing = {
                    start: 0,
                    end: 0
                }, this.buffering = {
                    start: 0,
                    first: 0,
                    end: 0
                }
            },
            $ = "audio",
            Z = "video",
            J = "audiovideo",
            ee = function() {
                function e(e) {
                    var t, r, i;
                    this._byteRange = null, this._url = null, this._stats = null, this._streams = null, this.base = void 0, this.relurl = void 0, "string" == typeof e && (e = {
                        url: e
                    }), this.base = e, (i = ne(t = this, r = "stats")) && (i.enumerable = !0, Object.defineProperty(t, r, i))
                }
                var t = e.prototype;
                return t.setByteRange = function(e, t) {
                    var r, i = e.split("@", 2);
                    r = 1 === i.length ? (null == t ? void 0 : t.byteRangeEndOffset) || 0 : parseInt(i[1]), this._byteRange = [r, parseInt(i[0]) + r]
                }, t.clearElementaryStreamInfo = function() {
                    var e = this.elementaryStreams;
                    e[$] = null, e[Z] = null, e[J] = null
                }, i(e, [{
                    key: "baseurl",
                    get: function() {
                        return this.base.url
                    }
                }, {
                    key: "byteRange",
                    get: function() {
                        return null === this._byteRange ? [] : this._byteRange
                    }
                }, {
                    key: "byteRangeStartOffset",
                    get: function() {
                        return this.byteRange[0]
                    }
                }, {
                    key: "byteRangeEndOffset",
                    get: function() {
                        return this.byteRange[1]
                    }
                }, {
                    key: "elementaryStreams",
                    get: function() {
                        var e;
                        return null === this._streams && (this._streams = ((e = {})[$] = null, e[Z] = null, e[J] = null, e)), this._streams
                    },
                    set: function(e) {
                        this._streams = e
                    }
                }, {
                    key: "hasStats",
                    get: function() {
                        return null !== this._stats
                    }
                }, {
                    key: "hasStreams",
                    get: function() {
                        return null !== this._streams
                    }
                }, {
                    key: "stats",
                    get: function() {
                        return null === this._stats && (this._stats = new z), this._stats
                    },
                    set: function(e) {
                        this._stats = e
                    }
                }, {
                    key: "url",
                    get: function() {
                        return !this._url && this.baseurl && this.relurl && (this._url = S.buildAbsoluteURL(this.baseurl, this.relurl, {
                            alwaysNormalize: !0
                        })), this._url || ""
                    },
                    set: function(e) {
                        this._url = e
                    }
                }])
            }();

        function te(e) {
            return "initSegment" !== e.sn
        }
        var re = function(e) {
                function t(t, r) {
                    var i;
                    return (i = e.call(this, r) || this)._decryptdata = null, i._programDateTime = null, i._ref = null, i._bitrate = void 0, i.rawProgramDateTime = null, i.tagList = [], i.duration = 0, i.sn = 0, i.levelkeys = void 0, i.type = void 0, i.loader = null, i.keyLoader = null, i.level = -1, i.cc = 0, i.startPTS = void 0, i.endPTS = void 0, i.startDTS = void 0, i.endDTS = void 0, i.start = 0, i.playlistOffset = 0, i.deltaPTS = void 0, i.maxStartPTS = void 0, i.minEndPTS = void 0, i.data = void 0, i.bitrateTest = !1, i.title = null, i.initSegment = null, i.endList = void 0, i.gap = void 0, i.urlId = 0, i.type = t, i
                }
                o(t, e);
                var r = t.prototype;
                return r.addStart = function(e) {
                    this.setStart(this.start + e)
                }, r.setStart = function(e) {
                    this.start = e, this._ref && (this._ref.start = e)
                }, r.setDuration = function(e) {
                    this.duration = e, this._ref && (this._ref.duration = e)
                }, r.setKeyFormat = function(e) {
                    if (this.levelkeys) {
                        var t = this.levelkeys[e];
                        t && !this._decryptdata && (this._decryptdata = t.getDecryptData(this.sn))
                    }
                }, r.abortRequests = function() {
                    var e, t;
                    null == (e = this.loader) || e.abort(), null == (t = this.keyLoader) || t.abort()
                }, r.setElementaryStreamInfo = function(e, t, r, i, n, a) {
                    void 0 === a && (a = !1);
                    var s = this.elementaryStreams,
                        o = s[e];
                    o ? (o.startPTS = Math.min(o.startPTS, t), o.endPTS = Math.max(o.endPTS, r), o.startDTS = Math.min(o.startDTS, i), o.endDTS = Math.max(o.endDTS, n)) : s[e] = {
                        startPTS: t,
                        endPTS: r,
                        startDTS: i,
                        endDTS: n,
                        partial: a
                    }
                }, i(t, [{
                    key: "byteLength",
                    get: function() {
                        if (this.hasStats) {
                            var e = this.stats.total;
                            if (e) return e
                        }
                        if (this.byteRange.length) {
                            var t = this.byteRange[0],
                                r = this.byteRange[1];
                            if (A(t) && A(r)) return r - t
                        }
                        return null
                    }
                }, {
                    key: "bitrate",
                    get: function() {
                        return this.byteLength ? 8 * this.byteLength / this.duration : this._bitrate ? this._bitrate : null
                    },
                    set: function(e) {
                        this._bitrate = e
                    }
                }, {
                    key: "decryptdata",
                    get: function() {
                        if (!this.levelkeys && !this._decryptdata) return null;
                        if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {
                            var e = this.levelkeys.identity;
                            if (e) this._decryptdata = e.getDecryptData(this.sn);
                            else {
                                var t = Object.keys(this.levelkeys);
                                if (1 === t.length) {
                                    var r = this._decryptdata = this.levelkeys[t[0]] || null;
                                    if (r) return r.getDecryptData(this.sn)
                                }
                            }
                        }
                        return this._decryptdata
                    }
                }, {
                    key: "end",
                    get: function() {
                        return this.start + this.duration
                    }
                }, {
                    key: "endProgramDateTime",
                    get: function() {
                        if (null === this.programDateTime) return null;
                        var e = A(this.duration) ? this.duration : 0;
                        return this.programDateTime + 1e3 * e
                    }
                }, {
                    key: "encrypted",
                    get: function() {
                        var e;
                        if (null != (e = this._decryptdata) && e.encrypted) return !0;
                        if (this.levelkeys) {
                            var t, r = Object.keys(this.levelkeys),
                                i = r.length;
                            if (i > 1 || 1 === i && null != (t = this.levelkeys[r[0]]) && t.encrypted) return !0
                        }
                        return !1
                    }
                }, {
                    key: "programDateTime",
                    get: function() {
                        return null === this._programDateTime && this.rawProgramDateTime && (this.programDateTime = Date.parse(this.rawProgramDateTime)), this._programDateTime
                    },
                    set: function(e) {
                        A(e) ? this._programDateTime = e : this._programDateTime = this.rawProgramDateTime = null
                    }
                }, {
                    key: "ref",
                    get: function() {
                        return te(this) ? (this._ref || (this._ref = {
                            base: this.base,
                            start: this.start,
                            duration: this.duration,
                            sn: this.sn,
                            programDateTime: this.programDateTime
                        }), this._ref) : null
                    }
                }])
            }(ee),
            ie = function(e) {
                function t(t, r, i, n, a) {
                    var s;
                    (s = e.call(this, i) || this).fragOffset = 0, s.duration = 0, s.gap = !1, s.independent = !1, s.relurl = void 0, s.fragment = void 0, s.index = void 0, s.duration = t.decimalFloatingPoint("DURATION"), s.gap = t.bool("GAP"), s.independent = t.bool("INDEPENDENT"), s.relurl = t.enumeratedString("URI"), s.fragment = r, s.index = n;
                    var o = t.enumeratedString("BYTERANGE");
                    return o && s.setByteRange(o, a), a && (s.fragOffset = a.fragOffset + a.duration), s
                }
                return o(t, e), i(t, [{
                    key: "start",
                    get: function() {
                        return this.fragment.start + this.fragOffset
                    }
                }, {
                    key: "end",
                    get: function() {
                        return this.start + this.duration
                    }
                }, {
                    key: "loaded",
                    get: function() {
                        var e = this.elementaryStreams;
                        return !!(e.audio || e.video || e.audiovideo)
                    }
                }])
            }(ee);

        function ne(e, t) {
            var r = Object.getPrototypeOf(e);
            if (r) {
                var i = Object.getOwnPropertyDescriptor(r, t);
                return i || ne(r, t)
            }
        }
        var ae = Math.pow(2, 32) - 1,
            se = [].push,
            oe = {
                video: 1,
                audio: 2,
                id3: 3,
                text: 4
            };

        function le(e) {
            return String.fromCharCode.apply(null, e)
        }

        function ue(e, t) {
            var r = e[t] << 8 | e[t + 1];
            return r < 0 ? 65536 + r : r
        }

        function de(e, t) {
            var r = fe(e, t);
            return r < 0 ? 4294967296 + r : r
        }

        function he(e, t) {
            var r = de(e, t);
            return r *= Math.pow(2, 32), r += de(e, t + 4)
        }

        function fe(e, t) {
            return e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3]
        }

        function ce(e, t) {
            var r = [];
            if (!t.length) return r;
            for (var i = e.byteLength, n = 0; n < i;) {
                var a = de(e, n),
                    s = a > 1 ? n + a : i;
                if (le(e.subarray(n + 4, n + 8)) === t[0])
                    if (1 === t.length) r.push(e.subarray(n + 8, s));
                    else {
                        var o = ce(e.subarray(n + 8, s), t.slice(1));
                        o.length && se.apply(r, o)
                    }
                n = s
            }
            return r
        }

        function ge(e) {
            var t = [],
                r = e[0],
                i = 8,
                n = de(e, i);
            i += 4;
            var a = 0,
                s = 0;
            0 === r ? (a = de(e, i), s = de(e, i + 4), i += 8) : (a = he(e, i), s = he(e, i + 8), i += 16), i += 2;
            var o = e.length + s,
                l = ue(e, i);
            i += 2;
            for (var u = 0; u < l; u++) {
                var d = i,
                    h = de(e, d);
                d += 4;
                var f = 2147483647 & h;
                if (1 == (2147483648 & h) >>> 31) return Y.warn("SIDX has hierarchical references (not supported)"), null;
                var c = de(e, d);
                d += 4, t.push({
                    referenceSize: f,
                    subsegmentDuration: c,
                    info: {
                        duration: c / n,
                        start: o,
                        end: o + f - 1
                    }
                }), o += f, i = d += 4
            }
            return {
                earliestPresentationTime: a,
                timescale: n,
                version: r,
                referencesCount: l,
                references: t
            }
        }

        function ve(e) {
            for (var t = [], r = ce(e, ["moov", "trak"]), i = 0; i < r.length; i++) {
                var n = r[i],
                    a = ce(n, ["tkhd"])[0];
                if (a) {
                    var s = a[0],
                        o = de(a, 0 === s ? 12 : 20),
                        l = ce(n, ["mdia", "mdhd"])[0];
                    if (l) {
                        var u = de(l, 0 === (s = l[0]) ? 12 : 20),
                            h = ce(n, ["mdia", "hdlr"])[0];
                        if (h) {
                            var f = le(h.subarray(8, 12)),
                                c = {
                                    soun: $,
                                    vide: Z
                                }[f],
                                g = me(ce(n, ["mdia", "minf", "stbl", "stsd"])[0]);
                            c ? (t[o] = {
                                timescale: u,
                                type: c,
                                stsd: g
                            }, t[c] = d({
                                timescale: u,
                                id: o
                            }, g)) : t[o] = {
                                timescale: u,
                                type: f,
                                stsd: g
                            }
                        }
                    }
                }
            }
            return ce(e, ["moov", "mvex", "trex"]).forEach((function(e) {
                var r = de(e, 4),
                    i = t[r];
                i && (i.default = {
                    duration: de(e, 12),
                    flags: de(e, 20)
                })
            })), t
        }

        function me(e) {
            var t, r = e.subarray(8),
                i = r.subarray(86),
                n = le(r.subarray(4, 8)),
                a = n,
                s = "enca" === n || "encv" === n;
            if (s) {
                var o = ce(r, [n])[0];
                ce(o.subarray("enca" === n ? 28 : 78), ["sinf"]).forEach((function(e) {
                    var t = ce(e, ["schm"])[0];
                    if (t) {
                        var r = le(t.subarray(4, 8));
                        if ("cbcs" === r || "cenc" === r) {
                            var i = ce(e, ["frma"])[0];
                            i && (a = le(i))
                        }
                    }
                }))
            }
            var l = a;
            switch (a) {
                case "avc1":
                case "avc2":
                case "avc3":
                case "avc4":
                    var u = ce(i, ["avcC"])[0];
                    u && u.length > 3 && (a += "." + Ee(u[1]) + Ee(u[2]) + Ee(u[3]), t = pe("avc1" === l ? "dva1" : "dvav", i));
                    break;
                case "mp4a":
                    var d = ce(r, [n])[0],
                        h = ce(d.subarray(28), ["esds"])[0];
                    if (h && h.length > 7) {
                        var f = 4;
                        if (3 !== h[f++]) break;
                        f = ye(h, f), f += 2;
                        var c = h[f++];
                        if (128 & c && (f += 2), 64 & c && (f += h[f++]), 4 !== h[f++]) break;
                        f = ye(h, f);
                        var g = h[f++];
                        if (64 !== g) break;
                        if (a += "." + Ee(g), f += 12, 5 !== h[f++]) break;
                        f = ye(h, f);
                        var v = h[f++],
                            m = (248 & v) >> 3;
                        31 === m && (m += 1 + ((7 & v) << 3) + ((224 & h[f]) >> 5)), a += "." + m
                    }
                    break;
                case "hvc1":
                case "hev1":
                    var p = ce(i, ["hvcC"])[0];
                    if (p && p.length > 12) {
                        var y = p[1],
                            E = ["", "A", "B", "C"][y >> 6],
                            T = 31 & y,
                            S = de(p, 2),
                            A = (32 & y) >> 5 ? "H" : "L",
                            L = p[12],
                            R = p.subarray(6, 12);
                        a += "." + E + T, a += "." + function(e) {
                            for (var t = 0, r = 0; r < 32; r++) t |= (e >> r & 1) << 31 - r;
                            return t >>> 0
                        }(S).toString(16).toUpperCase(), a += "." + A + L;
                        for (var I = "", k = R.length; k--;) {
                            var b = R[k];
                            (b || I) && (I = "." + b.toString(16).toUpperCase() + I)
                        }
                        a += I
                    }
                    t = pe("hev1" == l ? "dvhe" : "dvh1", i);
                    break;
                case "dvh1":
                case "dvhe":
                case "dvav":
                case "dva1":
                case "dav1":
                    a = pe(a, i) || a;
                    break;
                case "vp09":
                    var D = ce(i, ["vpcC"])[0];
                    if (D && D.length > 6) {
                        var _ = D[4],
                            P = D[5],
                            C = D[6] >> 4 & 15;
                        a += "." + Te(_) + "." + Te(P) + "." + Te(C)
                    }
                    break;
                case "av01":
                    var w = ce(i, ["av1C"])[0];
                    if (w && w.length > 2) {
                        var O = w[1] >>> 5,
                            x = 31 & w[1],
                            M = w[2] >>> 7 ? "H" : "M",
                            F = (64 & w[2]) >> 6,
                            N = (32 & w[2]) >> 5,
                            U = 2 === O && F ? N ? 12 : 10 : F ? 10 : 8,
                            B = (16 & w[2]) >> 4,
                            G = (8 & w[2]) >> 3,
                            K = (4 & w[2]) >> 2,
                            V = 3 & w[2];
                        a += "." + O + "." + Te(x) + M + "." + Te(U) + "." + B + "." + G + K + V + "." + Te(1) + "." + Te(1) + "." + Te(1) + ".0", t = pe("dav1", i)
                    }
            }
            return {
                codec: a,
                encrypted: s,
                supplemental: t
            }
        }

        function pe(e, t) {
            var r = ce(t, ["dvvC"]),
                i = r.length ? r[0] : ce(t, ["dvcC"])[0];
            if (i) {
                var n = i[2] >> 1 & 127,
                    a = i[2] << 5 & 32 | i[3] >> 3 & 31;
                return e + "." + Te(n) + "." + Te(a)
            }
        }

        function ye(e, t) {
            for (var r = t + 5; 128 & e[t++] && t < r;);
            return t
        }

        function Ee(e) {
            return ("0" + e.toString(16).toUpperCase()).slice(-2)
        }

        function Te(e) {
            return (e < 10 ? "0" : "") + e
        }

        function Se(e) {
            var t = ce(e, ["schm"])[0];
            if (t) {
                var r = le(t.subarray(4, 8));
                if ("cbcs" === r || "cenc" === r) return ce(e, ["schi", "tenc"])[0]
            }
            return null
        }

        function Ae(e, t) {
            var r = new Uint8Array(e.length + t.length);
            return r.set(e), r.set(t, e.length), r
        }

        function Le(e, t) {
            var r = [],
                i = t.samples,
                n = t.timescale,
                a = t.id,
                s = !1;
            return ce(i, ["moof"]).map((function(o) {
                var l = o.byteOffset - 8;
                ce(o, ["traf"]).map((function(o) {
                    var u = ce(o, ["tfdt"]).map((function(e) {
                        var t = e[0],
                            r = de(e, 4);
                        return 1 === t && (r *= Math.pow(2, 32), r += de(e, 8)), r / n
                    }))[0];
                    return void 0 !== u && (e = u), ce(o, ["tfhd"]).map((function(u) {
                        var d = de(u, 4),
                            h = 16777215 & de(u, 0),
                            f = 0,
                            c = 0 != (16 & h),
                            g = 0,
                            v = 0 != (32 & h),
                            m = 8;
                        d === a && (0 != (1 & h) && (m += 8), 0 != (2 & h) && (m += 4), 0 != (8 & h) && (f = de(u, m), m += 4), c && (g = de(u, m), m += 4), v && (m += 4), "video" === t.type && (s = Re(t.codec)), ce(o, ["trun"]).map((function(a) {
                            var o = a[0],
                                u = 16777215 & de(a, 0),
                                d = 0 != (1 & u),
                                h = 0,
                                c = 0 != (4 & u),
                                v = 0 != (256 & u),
                                m = 0,
                                p = 0 != (512 & u),
                                y = 0,
                                E = 0 != (1024 & u),
                                T = 0 != (2048 & u),
                                S = 0,
                                A = de(a, 4),
                                L = 8;
                            d && (h = de(a, L), L += 4), c && (L += 4);
                            for (var R = h + l, I = 0; I < A; I++) {
                                if (v ? (m = de(a, L), L += 4) : m = f, p ? (y = de(a, L), L += 4) : y = g, E && (L += 4), T && (S = 0 === o ? de(a, L) : fe(a, L), L += 4), t.type === Z)
                                    for (var k = 0; k < y;) {
                                        var b = de(i, R);
                                        Ie(s, i[R += 4]) && ke(i.subarray(R, R + b), s ? 2 : 1, e + S / n, r), R += b, k += b + 4
                                    }
                                e += m / n
                            }
                        })))
                    }))
                }))
            })), r
        }

        function Re(e) {
            if (!e) return !1;
            var t = e.substring(0, 4);
            return "hvc1" === t || "hev1" === t || "dvh1" === t || "dvhe" === t
        }

        function Ie(e, t) {
            if (e) {
                var r = t >> 1 & 63;
                return 39 === r || 40 === r
            }
            return 6 == (31 & t)
        }

        function ke(e, t, r, i) {
            var n = be(e),
                a = 0;
            a += t;
            for (var s = 0, o = 0, l = 0; a < n.length;) {
                s = 0;
                do {
                    if (a >= n.length) break;
                    s += l = n[a++]
                } while (255 === l);
                o = 0;
                do {
                    if (a >= n.length) break;
                    o += l = n[a++]
                } while (255 === l);
                var u = n.length - a,
                    d = a;
                if (o < u) a += o;
                else if (o > u) {
                    Y.error("Malformed SEI payload. " + o + " is too small, only " + u + " bytes left to parse.");
                    break
                }
                if (4 === s) {
                    if (181 === n[d++]) {
                        var h = ue(n, d);
                        if (d += 2, 49 === h) {
                            var f = de(n, d);
                            if (d += 4, 1195456820 === f) {
                                var c = n[d++];
                                if (3 === c) {
                                    var g = n[d++],
                                        v = 64 & g,
                                        m = v ? 2 + 3 * (31 & g) : 0,
                                        p = new Uint8Array(m);
                                    if (v) {
                                        p[0] = g;
                                        for (var y = 1; y < m; y++) p[y] = n[d++]
                                    }
                                    i.push({
                                        type: c,
                                        payloadType: s,
                                        pts: r,
                                        bytes: p
                                    })
                                }
                            }
                        }
                    }
                } else if (5 === s && o > 16) {
                    for (var E = [], T = 0; T < 16; T++) {
                        var S = n[d++].toString(16);
                        E.push(1 == S.length ? "0" + S : S), 3 !== T && 5 !== T && 7 !== T && 9 !== T || E.push("-")
                    }
                    for (var A = o - 16, L = new Uint8Array(A), R = 0; R < A; R++) L[R] = n[d++];
                    i.push({
                        payloadType: s,
                        pts: r,
                        uuid: E.join(""),
                        userData: q(L),
                        userDataBytes: L
                    })
                }
            }
        }

        function be(e) {
            for (var t = e.byteLength, r = [], i = 1; i < t - 2;) 0 === e[i] && 0 === e[i + 1] && 3 === e[i + 2] ? (r.push(i + 2), i += 2) : i++;
            if (0 === r.length) return e;
            var n = t - r.length,
                a = new Uint8Array(n),
                s = 0;
            for (i = 0; i < n; s++, i++) s === r[0] && (s++, r.shift()), a[i] = e[s];
            return a
        }

        function De(e, t, r) {
            if (16 !== e.byteLength) throw new RangeError("Invalid system id");
            var i, n;
            i = new Uint8Array, n = new Uint8Array;
            var a = new Uint8Array(4);
            return r.byteLength > 0 && new DataView(a.buffer).setUint32(0, r.byteLength, !1),
                function(e) {
                    for (var t = arguments.length, r = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++) r[i - 1] = arguments[i];
                    for (var n = r.length, a = 8, s = n; s--;) a += r[s].byteLength;
                    var o = new Uint8Array(a);
                    for (o[0] = a >> 24 & 255, o[1] = a >> 16 & 255, o[2] = a >> 8 & 255, o[3] = 255 & a, o.set(e, 4), s = 0, a = 8; s < n; s++) o.set(r[s], a), a += r[s].byteLength;
                    return o
                }([112, 115, 115, 104], new Uint8Array([0, 0, 0, 0]), e, n, i, a, r)
        }
        var _e = function() {
                return /\(Windows.+Firefox\//i.test(navigator.userAgent)
            },
            Pe = {
                audio: {
                    a3ds: 1,
                    "ac-3": .95,
                    "ac-4": 1,
                    alac: .9,
                    alaw: 1,
                    dra1: 1,
                    "dts+": 1,
                    "dts-": 1,
                    dtsc: 1,
                    dtse: 1,
                    dtsh: 1,
                    "ec-3": .9,
                    enca: 1,
                    fLaC: .9,
                    flac: .9,
                    FLAC: .9,
                    g719: 1,
                    g726: 1,
                    m4ae: 1,
                    mha1: 1,
                    mha2: 1,
                    mhm1: 1,
                    mhm2: 1,
                    mlpa: 1,
                    mp4a: 1,
                    "raw ": 1,
                    Opus: 1,
                    opus: 1,
                    samr: 1,
                    sawb: 1,
                    sawp: 1,
                    sevc: 1,
                    sqcp: 1,
                    ssmv: 1,
                    twos: 1,
                    ulaw: 1
                },
                video: {
                    avc1: 1,
                    avc2: 1,
                    avc3: 1,
                    avc4: 1,
                    avcp: 1,
                    av01: .8,
                    dav1: .8,
                    drac: 1,
                    dva1: 1,
                    dvav: 1,
                    dvh1: .7,
                    dvhe: .7,
                    encv: 1,
                    hev1: .75,
                    hvc1: .75,
                    mjp2: 1,
                    mp4v: 1,
                    mvc1: 1,
                    mvc2: 1,
                    mvc3: 1,
                    mvc4: 1,
                    resv: 1,
                    rv60: 1,
                    s263: 1,
                    svc1: 1,
                    svc2: 1,
                    "vc-1": 1,
                    vp08: 1,
                    vp09: .9
                },
                text: {
                    stpp: 1,
                    wvtt: 1
                }
            };

        function Ce(e, t) {
            var r = Pe[t];
            return !!r && !!r[e.slice(0, 4)]
        }

        function we(e, t, r) {
            return void 0 === r && (r = !0), !e.split(",").some((function(e) {
                return !Oe(e, t, r)
            }))
        }

        function Oe(e, t, r) {
            var i;
            void 0 === r && (r = !0);
            var n = W(r);
            return null != (i = null == n ? void 0 : n.isTypeSupported(xe(e, t))) && i
        }

        function xe(e, t) {
            return t + "/mp4;codecs=" + e
        }

        function Me(e) {
            if (e) {
                var t = e.substring(0, 4);
                return Pe.video[t]
            }
            return 2
        }

        function Fe(e) {
            var t = _e();
            return e.split(",").reduce((function(e, r) {
                var i = t && Re(r) ? 9 : Pe.video[r];
                return i ? (2 * i + e) / (e ? 3 : 2) : (Pe.audio[r] + e) / (e ? 2 : 1)
            }), 0)
        }
        var Ne = {},
            Ue = /flac|opus|mp4a\.40\.34/i;

        function Be(e, t) {
            return void 0 === t && (t = !0), e.replace(Ue, (function(e) {
                return function(e, t) {
                    if (void 0 === t && (t = !0), Ne[e]) return Ne[e];
                    for (var r = {
                            flac: ["flac", "fLaC", "FLAC"],
                            opus: ["opus", "Opus"],
                            "mp4a.40.34": ["mp3"]
                        }[e], i = 0; i < r.length; i++) {
                        var n;
                        if (Oe(r[i], "audio", t)) return Ne[e] = r[i], r[i];
                        if ("mp3" === r[i] && null != (n = W(t)) && n.isTypeSupported("audio/mpeg")) return ""
                    }
                    return e
                }(e.toLowerCase(), t)
            }))
        }

        function Ge(e, t) {
            if (e && (e.length > 4 || -1 !== ["ac-3", "ec-3", "alac", "fLaC", "Opus"].indexOf(e)) && (Ke(e, "audio") || Ke(e, "video"))) return e;
            if (t) {
                var r = t.split(",");
                if (r.length > 1) {
                    if (e)
                        for (var i = r.length; i--;)
                            if (r[i].substring(0, 4) === e.substring(0, 4)) return r[i];
                    return r[0]
                }
            }
            return t || e
        }

        function Ke(e, t) {
            return Ce(e, t) && Oe(e, t)
        }

        function Ve(e) {
            if (e.startsWith("av01.")) {
                for (var t = e.split("."), r = ["0", "111", "01", "01", "01", "0"], i = t.length; i > 4 && i < 10; i++) t[i] = r[i - 4];
                return t.join(".")
            }
            return e
        }

        function He(e) {
            var t = W(e) || {
                isTypeSupported: function() {
                    return !1
                }
            };
            return {
                mpeg: t.isTypeSupported("audio/mpeg"),
                mp3: t.isTypeSupported('audio/mp4; codecs="mp3"'),
                ac3: t.isTypeSupported('audio/mp4; codecs="ac-3"')
            }
        }

        function Ye(e) {
            return e.replace(/^.+codecs=["']?([^"']+).*$/, "$1")
        }
        var We = {
                supported: !1,
                smooth: !1,
                powerEfficient: !1
            },
            je = {
                supported: !0,
                configurations: [],
                decodingInfoResults: [{
                    supported: !0,
                    powerEfficient: !0,
                    smooth: !0
                }]
            };

        function qe(e, t) {
            return {
                supported: !1,
                configurations: t,
                decodingInfoResults: [We],
                error: e
            }
        }

        function Xe(e, t, r, i) {
            void 0 === i && (i = {});
            var n = e.videoCodec;
            if (!n && !e.audioCodec || !r) return Promise.resolve(je);
            for (var a = [], s = function(e) {
                    var t, r = null == (t = e.videoCodec) ? void 0 : t.split(","),
                        i = ze(e),
                        n = e.width || 640,
                        a = e.height || 480,
                        s = e.frameRate || 30,
                        o = e.videoRange.toLowerCase();
                    return r ? r.map((function(e) {
                        var t = {
                            contentType: xe(Ve(e), "video"),
                            width: n,
                            height: a,
                            bitrate: i,
                            framerate: s
                        };
                        return "sdr" !== o && (t.transferFunction = o), t
                    })) : []
                }(e), o = s.length, l = function(e, t, r) {
                    var i, n = null == (i = e.audioCodec) ? void 0 : i.split(","),
                        a = ze(e);
                    return n && e.audioGroups ? e.audioGroups.reduce((function(e, i) {
                        var s, o = i ? null == (s = t.groups[i]) ? void 0 : s.tracks : null;
                        return o ? o.reduce((function(e, t) {
                            if (t.groupId === i) {
                                var s = parseFloat(t.channels || "");
                                n.forEach((function(t) {
                                    var i = {
                                        contentType: xe(t, "audio"),
                                        bitrate: r ? Qe(t, a) : a
                                    };
                                    s && (i.channels = "" + s), e.push(i)
                                }))
                            }
                            return e
                        }), e) : e
                    }), []) : []
                }(e, t, o > 0), u = l.length, d = o || 1 * u || 1; d--;) {
                var h = {
                    type: "media-source"
                };
                if (o && (h.video = s[d % o]), u) {
                    h.audio = l[d % u];
                    var f = h.audio.bitrate;
                    h.video && f && (h.video.bitrate -= f)
                }
                a.push(h)
            }
            if (n) {
                var c = navigator.userAgent;
                if (n.split(",").some((function(e) {
                        return Re(e)
                    })) && _e()) return Promise.resolve(qe(new Error("Overriding Windows Firefox HEVC MediaCapabilities result based on user-agent string: (" + c + ")"), a))
            }
            return Promise.all(a.map((function(e) {
                var t, n, a, s, o = (n = "", a = (t = e).audio, (s = t.video) && (n += Ye(s.contentType) + "_r" + s.height + "x" + s.width + "f" + Math.ceil(s.framerate) + (s.transferFunction || "sd") + "_" + Math.ceil(s.bitrate / 1e5)), a && (n += (s ? "_" : "") + Ye(a.contentType) + "_c" + a.channels), n);
                return i[o] || (i[o] = r.decodingInfo(e))
            }))).then((function(e) {
                return {
                    supported: !e.some((function(e) {
                        return !e.supported
                    })),
                    configurations: a,
                    decodingInfoResults: e
                }
            })).catch((function(e) {
                return {
                    supported: !1,
                    configurations: a,
                    decodingInfoResults: [],
                    error: e
                }
            }))
        }

        function Qe(e, t) {
            if (t <= 1) return 1;
            var r = 128e3;
            return "ec-3" === e ? r = 768e3 : "ac-3" === e && (r = 64e4), Math.min(t / 2, r)
        }

        function ze(e) {
            return 1e3 * Math.ceil(Math.max(.9 * e.bitrate, e.averageBitrate) / 1e3) || 1
        }
        var $e = ["NONE", "TYPE-0", "TYPE-1", null],
            Ze = ["SDR", "PQ", "HLG"],
            Je = "",
            et = "YES",
            tt = "v2";

        function rt(e) {
            var t = e.canSkipUntil,
                r = e.canSkipDateRanges,
                i = e.age;
            return t && i < t / 2 ? r ? tt : et : Je
        }
        var it = function() {
                function e(e, t, r) {
                    this.msn = void 0, this.part = void 0, this.skip = void 0, this.msn = e, this.part = t, this.skip = r
                }
                return e.prototype.addDirectives = function(e) {
                    var t = new self.URL(e);
                    return void 0 !== this.msn && t.searchParams.set("_HLS_msn", this.msn.toString()), void 0 !== this.part && t.searchParams.set("_HLS_part", this.part.toString()), this.skip && t.searchParams.set("_HLS_skip", this.skip), t.href
                }, e
            }(),
            nt = function() {
                function e(e) {
                    if (this._attrs = void 0, this.audioCodec = void 0, this.bitrate = void 0, this.codecSet = void 0, this.url = void 0, this.frameRate = void 0, this.height = void 0, this.id = void 0, this.name = void 0, this.supplemental = void 0, this.videoCodec = void 0, this.width = void 0, this.details = void 0, this.fragmentError = 0, this.loadError = 0, this.loaded = void 0, this.realBitrate = 0, this.supportedPromise = void 0, this.supportedResult = void 0, this._avgBitrate = 0, this._audioGroups = void 0, this._subtitleGroups = void 0, this._urlId = 0, this.url = [e.url], this._attrs = [e.attrs], this.bitrate = e.bitrate, e.details && (this.details = e.details), this.id = e.id || 0, this.name = e.name, this.width = e.width || 0, this.height = e.height || 0, this.frameRate = e.attrs.optionalFloat("FRAME-RATE", 0), this._avgBitrate = e.attrs.decimalInteger("AVERAGE-BANDWIDTH"), this.audioCodec = e.audioCodec, this.videoCodec = e.videoCodec, this.codecSet = [e.videoCodec, e.audioCodec].filter((function(e) {
                            return !!e
                        })).map((function(e) {
                            return e.substring(0, 4)
                        })).join(","), "supplemental" in e) {
                        var t;
                        this.supplemental = e.supplemental;
                        var r = null == (t = e.supplemental) ? void 0 : t.videoCodec;
                        r && r !== e.videoCodec && (this.codecSet += "," + r.substring(0, 4))
                    }
                    this.addGroupId("audio", e.attrs.AUDIO), this.addGroupId("text", e.attrs.SUBTITLES)
                }
                var t = e.prototype;
                return t.hasAudioGroup = function(e) {
                    return at(this._audioGroups, e)
                }, t.hasSubtitleGroup = function(e) {
                    return at(this._subtitleGroups, e)
                }, t.addGroupId = function(e, t) {
                    if (t)
                        if ("audio" === e) {
                            var r = this._audioGroups;
                            r || (r = this._audioGroups = []), -1 === r.indexOf(t) && r.push(t)
                        } else if ("text" === e) {
                        var i = this._subtitleGroups;
                        i || (i = this._subtitleGroups = []), -1 === i.indexOf(t) && i.push(t)
                    }
                }, t.addFallback = function() {}, i(e, [{
                    key: "maxBitrate",
                    get: function() {
                        return Math.max(this.realBitrate, this.bitrate)
                    }
                }, {
                    key: "averageBitrate",
                    get: function() {
                        return this._avgBitrate || this.realBitrate || this.bitrate
                    }
                }, {
                    key: "attrs",
                    get: function() {
                        return this._attrs[0]
                    }
                }, {
                    key: "codecs",
                    get: function() {
                        return this.attrs.CODECS || ""
                    }
                }, {
                    key: "pathwayId",
                    get: function() {
                        return this.attrs["PATHWAY-ID"] || "."
                    }
                }, {
                    key: "videoRange",
                    get: function() {
                        return this.attrs["VIDEO-RANGE"] || "SDR"
                    }
                }, {
                    key: "score",
                    get: function() {
                        return this.attrs.optionalFloat("SCORE", 0)
                    }
                }, {
                    key: "uri",
                    get: function() {
                        return this.url[0] || ""
                    }
                }, {
                    key: "audioGroups",
                    get: function() {
                        return this._audioGroups
                    }
                }, {
                    key: "subtitleGroups",
                    get: function() {
                        return this._subtitleGroups
                    }
                }, {
                    key: "urlId",
                    get: function() {
                        return 0
                    },
                    set: function(e) {}
                }, {
                    key: "audioGroupIds",
                    get: function() {
                        return this.audioGroups ? [this.audioGroupId] : void 0
                    }
                }, {
                    key: "textGroupIds",
                    get: function() {
                        return this.subtitleGroups ? [this.textGroupId] : void 0
                    }
                }, {
                    key: "audioGroupId",
                    get: function() {
                        var e;
                        return null == (e = this.audioGroups) ? void 0 : e[0]
                    }
                }, {
                    key: "textGroupId",
                    get: function() {
                        var e;
                        return null == (e = this.subtitleGroups) ? void 0 : e[0]
                    }
                }])
            }();

        function at(e, t) {
            return !(!t || !e) && -1 !== e.indexOf(t)
        }

        function st(e, t) {
            var r = !1,
                i = [];
            if (e && (r = "SDR" !== e, i = [e]), t) {
                var n = "SDR" !== (i = t.allowedVideoRanges || Ze.slice(0)).join("") && !t.videoCodec;
                (r = void 0 !== t.preferHDR ? t.preferHDR : n && function() {
                    if ("function" == typeof matchMedia) {
                        var e = matchMedia("(dynamic-range: high)"),
                            t = matchMedia("bad query");
                        if (e.media !== t.media) return !0 === e.matches
                    }
                    return !1
                }()) || (i = ["SDR"])
            }
            return {
                preferHDR: r,
                allowedVideoRanges: i
            }
        }
        var ot = function(e, t) {
            return JSON.stringify(e, function(e) {
                var t = new WeakSet;
                return function(r, i) {
                    if (e && (i = e(r, i)), "object" == typeof i && null !== i) {
                        if (t.has(i)) return;
                        t.add(i)
                    }
                    return i
                }
            }(t))
        };

        function lt(e, t) {
            Y.log('[abr] start candidates with "' + e + '" ignored because ' + t)
        }

        function ut(e) {
            return e.reduce((function(e, t) {
                var r = e.groups[t.groupId];
                r || (r = e.groups[t.groupId] = {
                    tracks: [],
                    channels: {
                        2: 0
                    },
                    hasDefault: !1,
                    hasAutoSelect: !1
                }), r.tracks.push(t);
                var i = t.channels || "2";
                return r.channels[i] = (r.channels[i] || 0) + 1, r.hasDefault = r.hasDefault || t.default, r.hasAutoSelect = r.hasAutoSelect || t.autoselect, r.hasDefault && (e.hasDefaultAudio = !0), r.hasAutoSelect && (e.hasAutoSelectAudio = !0), e
            }), {
                hasDefaultAudio: !1,
                hasAutoSelectAudio: !1,
                groups: {}
            })
        }

        function dt(e) {
            if (!e) return e;
            var t = e;
            return {
                lang: t.lang,
                assocLang: t.assocLang,
                characteristics: t.characteristics,
                channels: t.channels,
                audioCodec: t.audioCodec
            }
        }

        function ht(e, t, r) {
            if ("attrs" in e) {
                var i = t.indexOf(e);
                if (-1 !== i) return i
            }
            for (var n = 0; n < t.length; n++)
                if (ft(e, t[n], r)) return n;
            return -1
        }

        function ft(e, t, r) {
            var i, n, a = e.groupId,
                s = e.name,
                o = e.lang,
                l = e.assocLang,
                u = e.default,
                d = e.forced;
            return (void 0 === a || t.groupId === a) && (void 0 === s || t.name === s) && (void 0 === o || (i = o, void 0 === (n = t.lang) && (n = "--"), i.length === n.length ? i === n : i.startsWith(n) || n.startsWith(i))) && (void 0 === o || t.assocLang === l) && (void 0 === u || t.default === u) && (void 0 === d || t.forced === d) && (!("characteristics" in e) || function(e, t) {
                void 0 === t && (t = "");
                var r = e.split(","),
                    i = t.split(",");
                return r.length === i.length && !r.some((function(e) {
                    return -1 === i.indexOf(e)
                }))
            }(e.characteristics || "", t.characteristics)) && (void 0 === r || r(e, t))
        }

        function ct(e, t) {
            var r = e.audioCodec,
                i = e.channels;
            return !(void 0 !== r && (t.audioCodec || "").substring(0, 4) !== r.substring(0, 4) || void 0 !== i && i !== (t.channels || "2"))
        }

        function gt(e, t, r) {
            for (var i = t; i > -1; i--)
                if (r(e[i])) return i;
            for (var n = t + 1; n < e.length; n++)
                if (r(e[n])) return n;
            return -1
        }

        function vt(e, t) {
            var r;
            return !!e && e !== (null == (r = t.loadLevelObj) ? void 0 : r.uri)
        }
        var mt = function(e) {
                function t(t) {
                    var r;
                    return (r = e.call(this, "abr", t.logger) || this).hls = void 0, r.lastLevelLoadSec = 0, r.lastLoadedFragLevel = -1, r.firstSelection = -1, r._nextAutoLevel = -1, r.nextAutoLevelKey = "", r.audioTracksByGroup = null, r.codecTiers = null, r.timer = -1, r.fragCurrent = null, r.partCurrent = null, r.bitrateTestDelay = 0, r.rebufferNotice = -1, r.supportedCache = {}, r.bwEstimator = void 0, r._abandonRulesCheck = function(e) {
                        var t, i = r,
                            n = i.fragCurrent,
                            a = i.partCurrent,
                            s = i.hls,
                            o = s.autoLevelEnabled,
                            l = s.media;
                        if (n && l) {
                            var u = performance.now(),
                                d = a ? a.stats : n.stats,
                                h = a ? a.duration : n.duration,
                                f = u - d.loading.start,
                                c = s.minAutoLevel,
                                g = n.level,
                                v = r._nextAutoLevel;
                            if (d.aborted || d.loaded && d.loaded === d.total || g <= c) return r.clearTimer(), void(r._nextAutoLevel = -1);
                            if (o) {
                                var m = v > -1 && v !== g,
                                    p = !!e || m;
                                if (p || !l.paused && l.playbackRate && l.readyState) {
                                    var y = s.mainForwardBufferInfo;
                                    if (p || null !== y) {
                                        var E = r.bwEstimator.getEstimateTTFB(),
                                            T = Math.abs(l.playbackRate);
                                        if (!(f <= Math.max(E, h / (2 * T) * 1e3))) {
                                            var S = y ? y.len / T : 0,
                                                L = d.loading.first ? d.loading.first - d.loading.start : -1,
                                                R = d.loaded && L > -1,
                                                I = r.getBwEstimate(),
                                                k = s.levels,
                                                D = k[g],
                                                _ = Math.max(d.loaded, Math.round(h * (n.bitrate || D.averageBitrate) / 8)),
                                                P = R ? f - L : f;
                                            P < 1 && R && (P = Math.min(f, 8 * d.loaded / I));
                                            var C = R ? 1e3 * d.loaded / P : 0,
                                                w = E / 1e3,
                                                O = C ? (_ - d.loaded) / C : 8 * _ / I + w;
                                            if (!(O <= S)) {
                                                var x, M = C ? 8 * C : I,
                                                    F = !0 === (null == (t = (null == e ? void 0 : e.details) || r.hls.latestLevelDetails) ? void 0 : t.live),
                                                    N = r.hls.config.abrBandWidthUpFactor,
                                                    U = Number.POSITIVE_INFINITY;
                                                for (x = g - 1; x > c; x--) {
                                                    var B = k[x].maxBitrate,
                                                        G = !k[x].details || F;
                                                    if ((U = r.getTimeToLoadFrag(w, M, h * B, G)) < Math.min(S, h + w)) break
                                                }
                                                if (!(U >= O || U > 10 * h)) {
                                                    R ? r.bwEstimator.sample(f - Math.min(E, L), d.loaded) : r.bwEstimator.sampleTTFB(f);
                                                    var K = k[x].maxBitrate;
                                                    r.getBwEstimate() * N > K && r.resetEstimator(K);
                                                    var V = r.findBestLevel(K, c, x, 0, S, 1, 1);
                                                    V > -1 && (x = V), r.warn("Fragment " + n.sn + (a ? " part " + a.index : "") + " of level " + g + " is loading too slowly;\n      Fragment duration: " + n.duration.toFixed(3) + "\n      Time to underbuffer: " + S.toFixed(3) + " s\n      Estimated load time for current fragment: " + O.toFixed(3) + " s\n      Estimated load time for down switch fragment: " + U.toFixed(3) + " s\n      TTFB estimate: " + (0 | L) + " ms\n      Current BW estimate: " + (A(I) ? 0 | I : "Unknown") + " bps\n      New BW estimate: " + (0 | r.getBwEstimate()) + " bps\n      Switching to level " + x + " @ " + (0 | K) + " bps"), s.nextLoadLevel = s.nextAutoLevel = x, r.clearTimer();
                                                    var H = function() {
                                                        if (r.clearTimer(), r.fragCurrent === n && r.hls.loadLevel === x && x > 0) {
                                                            var e = r.getStarvationDelay();
                                                            if (r.warn("Aborting inflight request " + (x > 0 ? "and switching down" : "") + "\n      Fragment duration: " + n.duration.toFixed(3) + " s\n      Time to underbuffer: " + e.toFixed(3) + " s"), n.abortRequests(), r.fragCurrent = r.partCurrent = null, x > c) {
                                                                var t = r.findBestLevel(r.hls.levels[c].bitrate, c, x, 0, e, 1, 1); - 1 === t && (t = c), r.hls.nextLoadLevel = r.hls.nextAutoLevel = t, r.resetEstimator(r.hls.levels[t].bitrate)
                                                            }
                                                        }
                                                    };
                                                    m || O > 2 * U ? H() : r.timer = self.setInterval(H, 1e3 * U), s.trigger(b.FRAG_LOAD_EMERGENCY_ABORTED, {
                                                        frag: n,
                                                        part: a,
                                                        stats: d
                                                    })
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }, r.hls = t, r.bwEstimator = r.initEstimator(), r.registerListeners(), r
                }
                o(t, e);
                var r = t.prototype;
                return r.resetEstimator = function(e) {
                    e && (this.log("setting initial bwe to " + e), this.hls.config.abrEwmaDefaultEstimate = e), this.firstSelection = -1, this.bwEstimator = this.initEstimator()
                }, r.initEstimator = function() {
                    var e = this.hls.config;
                    return new F(e.abrEwmaSlowVoD, e.abrEwmaFastVoD, e.abrEwmaDefaultEstimate)
                }, r.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.FRAG_LOADING, this.onFragLoading, this), e.on(b.FRAG_LOADED, this.onFragLoaded, this), e.on(b.FRAG_BUFFERED, this.onFragBuffered, this), e.on(b.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(b.LEVEL_LOADED, this.onLevelLoaded, this), e.on(b.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(b.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this), e.on(b.ERROR, this.onError, this)
                }, r.unregisterListeners = function() {
                    var e = this.hls;
                    e && (e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.FRAG_LOADING, this.onFragLoading, this), e.off(b.FRAG_LOADED, this.onFragLoaded, this), e.off(b.FRAG_BUFFERED, this.onFragBuffered, this), e.off(b.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(b.LEVEL_LOADED, this.onLevelLoaded, this), e.off(b.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(b.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this), e.off(b.ERROR, this.onError, this))
                }, r.destroy = function() {
                    this.unregisterListeners(), this.clearTimer(), this.hls = this._abandonRulesCheck = this.supportedCache = null, this.fragCurrent = this.partCurrent = null
                }, r.onManifestLoading = function(e, t) {
                    this.lastLoadedFragLevel = -1, this.firstSelection = -1, this.lastLevelLoadSec = 0, this.supportedCache = {}, this.fragCurrent = this.partCurrent = null, this.onLevelsUpdated(), this.clearTimer()
                }, r.onLevelsUpdated = function() {
                    this.lastLoadedFragLevel > -1 && this.fragCurrent && (this.lastLoadedFragLevel = this.fragCurrent.level), this._nextAutoLevel = -1, this.onMaxAutoLevelUpdated(), this.codecTiers = null, this.audioTracksByGroup = null
                }, r.onMaxAutoLevelUpdated = function() {
                    this.firstSelection = -1, this.nextAutoLevelKey = ""
                }, r.onFragLoading = function(e, t) {
                    var r, i = t.frag;
                    this.ignoreFragment(i) || (i.bitrateTest || (this.fragCurrent = i, this.partCurrent = null != (r = t.part) ? r : null), this.clearTimer(), this.timer = self.setInterval(this._abandonRulesCheck, 100))
                }, r.onLevelSwitching = function(e, t) {
                    this.clearTimer()
                }, r.onError = function(e, t) {
                    if (!t.fatal) switch (t.details) {
                        case k.BUFFER_ADD_CODEC_ERROR:
                        case k.BUFFER_APPEND_ERROR:
                            this.lastLoadedFragLevel = -1, this.firstSelection = -1;
                            break;
                        case k.FRAG_LOAD_TIMEOUT:
                            var r = t.frag,
                                i = this.fragCurrent,
                                n = this.partCurrent;
                            if (r && i && r.sn === i.sn && r.level === i.level) {
                                var a = performance.now(),
                                    s = n ? n.stats : r.stats,
                                    o = a - s.loading.start,
                                    l = s.loading.first ? s.loading.first - s.loading.start : -1;
                                if (s.loaded && l > -1) {
                                    var u = this.bwEstimator.getEstimateTTFB();
                                    this.bwEstimator.sample(o - Math.min(u, l), s.loaded)
                                } else this.bwEstimator.sampleTTFB(o)
                            }
                    }
                }, r.getTimeToLoadFrag = function(e, t, r, i) {
                    return e + r / t + (i ? e + this.lastLevelLoadSec : 0)
                }, r.onLevelLoaded = function(e, t) {
                    var r = this.hls.config,
                        i = t.stats.loading,
                        n = i.end - i.first;
                    A(n) && (this.lastLevelLoadSec = n / 1e3), t.details.live ? this.bwEstimator.update(r.abrEwmaSlowLive, r.abrEwmaFastLive) : this.bwEstimator.update(r.abrEwmaSlowVoD, r.abrEwmaFastVoD), this.timer > -1 && this._abandonRulesCheck(t.levelInfo)
                }, r.onFragLoaded = function(e, t) {
                    var r = t.frag,
                        i = t.part,
                        n = i ? i.stats : r.stats;
                    if (r.type === w && this.bwEstimator.sampleTTFB(n.loading.first - n.loading.start), !this.ignoreFragment(r)) {
                        if (this.clearTimer(), r.level === this._nextAutoLevel && (this._nextAutoLevel = -1), this.firstSelection = -1, this.hls.config.abrMaxWithRealBitrate) {
                            var a = i ? i.duration : r.duration,
                                s = this.hls.levels[r.level],
                                o = (s.loaded ? s.loaded.bytes : 0) + n.loaded,
                                l = (s.loaded ? s.loaded.duration : 0) + a;
                            s.loaded = {
                                bytes: o,
                                duration: l
                            }, s.realBitrate = Math.round(8 * o / l)
                        }
                        if (r.bitrateTest) {
                            var u = {
                                stats: n,
                                frag: r,
                                part: i,
                                id: r.type
                            };
                            this.onFragBuffered(b.FRAG_BUFFERED, u), r.bitrateTest = !1
                        } else this.lastLoadedFragLevel = r.level
                    }
                }, r.onFragBuffered = function(e, t) {
                    var r = t.frag,
                        i = t.part,
                        n = null != i && i.stats.loaded ? i.stats : r.stats;
                    if (!n.aborted && !this.ignoreFragment(r)) {
                        var a = n.parsing.end - n.loading.start - Math.min(n.loading.first - n.loading.start, this.bwEstimator.getEstimateTTFB());
                        this.bwEstimator.sample(a, n.loaded), n.bwEstimate = this.getBwEstimate(), r.bitrateTest ? this.bitrateTestDelay = a / 1e3 : this.bitrateTestDelay = 0
                    }
                }, r.ignoreFragment = function(e) {
                    return e.type !== w || "initSegment" === e.sn
                }, r.clearTimer = function() {
                    this.timer > -1 && (self.clearInterval(this.timer), this.timer = -1)
                }, r.getAutoLevelKey = function() {
                    return this.getBwEstimate() + "_" + this.getStarvationDelay().toFixed(2)
                }, r.getNextABRAutoLevel = function() {
                    var e = this.fragCurrent,
                        t = this.partCurrent,
                        r = this.hls;
                    if (r.levels.length <= 1) return r.loadLevel;
                    var i = r.maxAutoLevel,
                        n = r.config,
                        a = r.minAutoLevel,
                        s = t ? t.duration : e ? e.duration : 0,
                        o = this.getBwEstimate(),
                        l = this.getStarvationDelay(),
                        u = n.abrBandWidthFactor,
                        d = n.abrBandWidthUpFactor;
                    if (l) {
                        var h = this.findBestLevel(o, a, i, l, 0, u, d);
                        if (h >= 0) return this.rebufferNotice = -1, h
                    }
                    var f = s ? Math.min(s, n.maxStarvationDelay) : n.maxStarvationDelay;
                    if (!l) {
                        var c = this.bitrateTestDelay;
                        c && (f = (s ? Math.min(s, n.maxLoadingDelay) : n.maxLoadingDelay) - c, this.info("bitrate test took " + Math.round(1e3 * c) + "ms, set first fragment max fetchDuration to " + Math.round(1e3 * f) + " ms"), u = d = 1)
                    }
                    var g = this.findBestLevel(o, a, i, l, f, u, d);
                    if (this.rebufferNotice !== g && (this.rebufferNotice = g, this.info((l ? "rebuffering expected" : "buffer is empty") + ", optimal quality level " + g)), g > -1) return g;
                    var v = r.levels[a],
                        m = r.loadLevelObj;
                    return m && (null == v ? void 0 : v.bitrate) < m.bitrate ? a : r.loadLevel
                }, r.getStarvationDelay = function() {
                    var e = this.hls,
                        t = e.media;
                    if (!t) return 1 / 0;
                    var r = t && 0 !== t.playbackRate ? Math.abs(t.playbackRate) : 1,
                        i = e.mainForwardBufferInfo;
                    return (i ? i.len : 0) / r
                }, r.getBwEstimate = function() {
                    return this.bwEstimator.canEstimate() ? this.bwEstimator.getEstimate() : this.hls.config.abrEwmaDefaultEstimate
                }, r.findBestLevel = function(e, t, r, i, n, a, s) {
                    var o, l = this,
                        u = i + n,
                        d = this.lastLoadedFragLevel,
                        h = -1 === d ? this.hls.firstLevel : d,
                        f = this.fragCurrent,
                        c = this.partCurrent,
                        g = this.hls,
                        v = g.levels,
                        m = g.allAudioTracks,
                        p = g.loadLevel,
                        y = g.config;
                    if (1 === v.length) return 0;
                    var E, T = v[h],
                        S = !(null == (o = this.hls.latestLevelDetails) || !o.live),
                        L = -1 === p || -1 === d,
                        R = "SDR",
                        I = (null == T ? void 0 : T.frameRate) || 0,
                        k = y.audioPreference,
                        b = y.videoPreference,
                        D = this.audioTracksByGroup || (this.audioTracksByGroup = ut(m)),
                        _ = -1;
                    if (L) {
                        if (-1 !== this.firstSelection) return this.firstSelection;
                        var P = this.codecTiers || (this.codecTiers = function(e, t, r, i) {
                                return e.slice(r, i + 1).reduce((function(e, r, i) {
                                    if (!r.codecSet) return e;
                                    var n = r.audioGroups,
                                        a = e[r.codecSet];
                                    a || (e[r.codecSet] = a = {
                                        minBitrate: 1 / 0,
                                        minHeight: 1 / 0,
                                        minFramerate: 1 / 0,
                                        minIndex: i,
                                        maxScore: 0,
                                        videoRanges: {
                                            SDR: 0
                                        },
                                        channels: {
                                            2: 0
                                        },
                                        hasDefaultAudio: !n,
                                        fragmentError: 0
                                    }), a.minBitrate = Math.min(a.minBitrate, r.bitrate);
                                    var s = Math.min(r.height, r.width);
                                    return a.minHeight = Math.min(a.minHeight, s), a.minFramerate = Math.min(a.minFramerate, r.frameRate), a.minIndex = Math.min(a.minIndex, i), a.maxScore = Math.max(a.maxScore, r.score), a.fragmentError += r.fragmentError, a.videoRanges[r.videoRange] = (a.videoRanges[r.videoRange] || 0) + 1, n && n.forEach((function(e) {
                                        if (e) {
                                            var r = t.groups[e];
                                            r && (a.hasDefaultAudio = a.hasDefaultAudio || t.hasDefaultAudio ? r.hasDefault : r.hasAutoSelect || !t.hasDefaultAudio && !t.hasAutoSelectAudio, Object.keys(r.channels).forEach((function(e) {
                                                a.channels[e] = (a.channels[e] || 0) + r.channels[e]
                                            })))
                                        }
                                    })), e
                                }), {})
                            }(v, D, t, r)),
                            C = function(e, t, r, i, n) {
                                for (var a = Object.keys(e), s = null == i ? void 0 : i.channels, o = null == i ? void 0 : i.audioCodec, l = null == n ? void 0 : n.videoCodec, u = s && 2 === parseInt(s), d = !1, h = !1, f = 1 / 0, c = 1 / 0, g = 1 / 0, v = 1 / 0, m = 0, p = [], y = st(t, n), E = y.preferHDR, T = y.allowedVideoRanges, S = function() {
                                        var t = e[a[L]];
                                        d || (d = t.channels[2] > 0), f = Math.min(f, t.minHeight), c = Math.min(c, t.minFramerate), g = Math.min(g, t.minBitrate), T.filter((function(e) {
                                            return t.videoRanges[e] > 0
                                        })).length > 0 && (h = !0)
                                    }, L = a.length; L--;) S();
                                f = A(f) ? f : 0, c = A(c) ? c : 0;
                                var R = Math.max(1080, f),
                                    I = Math.max(30, c);
                                g = A(g) ? g : r, r = Math.max(g, r), h || (t = void 0);
                                var k = a.length > 1;
                                return {
                                    codecSet: a.reduce((function(t, i) {
                                        var n = e[i];
                                        if (i === t) return t;
                                        if (p = h ? T.filter((function(e) {
                                                return n.videoRanges[e] > 0
                                            })) : [], k) {
                                            if (n.minBitrate > r) return lt(i, "min bitrate of " + n.minBitrate + " > current estimate of " + r), t;
                                            if (!n.hasDefaultAudio) return lt(i, "no renditions with default or auto-select sound found"), t;
                                            if (o && i.indexOf(o.substring(0, 4)) % 5 != 0) return lt(i, 'audio codec preference "' + o + '" not found'), t;
                                            if (s && !u) {
                                                if (!n.channels[s]) return lt(i, "no renditions with " + s + " channel sound found (channels options: " + Object.keys(n.channels) + ")"), t
                                            } else if ((!o || u) && d && 0 === n.channels[2]) return lt(i, "no renditions with stereo sound found"), t;
                                            if (n.minHeight > R) return lt(i, "min resolution of " + n.minHeight + " > maximum of " + R), t;
                                            if (n.minFramerate > I) return lt(i, "min framerate of " + n.minFramerate + " > maximum of " + I), t;
                                            if (!p.some((function(e) {
                                                    return n.videoRanges[e] > 0
                                                }))) return lt(i, "no variants with VIDEO-RANGE of " + ot(p) + " found"), t;
                                            if (l && i.indexOf(l.substring(0, 4)) % 5 != 0) return lt(i, 'video codec preference "' + l + '" not found'), t;
                                            if (n.maxScore < m) return lt(i, "max score of " + n.maxScore + " < selected max of " + m), t
                                        }
                                        return t && (Fe(i) >= Fe(t) || n.fragmentError > e[t].fragmentError) ? t : (v = n.minIndex, m = n.maxScore, i)
                                    }), void 0),
                                    videoRanges: p,
                                    preferHDR: E,
                                    minFramerate: c,
                                    minBitrate: g,
                                    minIndex: v
                                }
                            }(P, R, e, k, b),
                            w = C.codecSet,
                            O = C.videoRanges,
                            x = C.minFramerate,
                            M = C.minBitrate,
                            F = C.minIndex,
                            N = C.preferHDR;
                        _ = F, E = w, R = N ? O[O.length - 1] : O[0], I = x, e = Math.max(e, M), this.log("picked start tier " + ot(C))
                    } else E = null == T ? void 0 : T.codecSet, R = null == T ? void 0 : T.videoRange;
                    for (var U, B = c ? c.duration : f ? f.duration : 0, G = this.bwEstimator.getEstimateTTFB() / 1e3, K = [], V = function() {
                            var t, o = v[H],
                                f = H > h;
                            if (!o) return 0;
                            if (y.useMediaCapabilities && !o.supportedResult && !o.supportedPromise) {
                                var g = navigator.mediaCapabilities;
                                "function" == typeof(null == g ? void 0 : g.decodingInfo) && function(e, t, r, i, n, a) {
                                    var s = e.videoCodec,
                                        o = e.audioCodec ? e.audioGroups : null,
                                        l = null == a ? void 0 : a.audioCodec,
                                        u = null == a ? void 0 : a.channels,
                                        d = u ? parseInt(u) : l ? 1 / 0 : 2,
                                        h = null;
                                    if (null != o && o.length) try {
                                        h = 1 === o.length && o[0] ? t.groups[o[0]].channels : o.reduce((function(e, r) {
                                            if (r) {
                                                var i = t.groups[r];
                                                if (!i) throw new Error("Audio track group " + r + " not found");
                                                Object.keys(i.channels).forEach((function(t) {
                                                    e[t] = (e[t] || 0) + i.channels[t]
                                                }))
                                            }
                                            return e
                                        }), {
                                            2: 0
                                        })
                                    } catch (e) {
                                        return !0
                                    }
                                    return void 0 !== s && (s.split(",").some((function(e) {
                                        return Re(e)
                                    })) || e.width > 1920 && e.height > 1088 || e.height > 1920 && e.width > 1088 || e.frameRate > Math.max(i, 30) || "SDR" !== e.videoRange && e.videoRange !== r || e.bitrate > Math.max(n, 8e6)) || !!h && A(d) && Object.keys(h).some((function(e) {
                                        return parseInt(e) > d
                                    }))
                                }(o, D, R, I, e, k) ? (o.supportedPromise = Xe(o, D, g, l.supportedCache), o.supportedPromise.then((function(e) {
                                    if (l.hls) {
                                        o.supportedResult = e;
                                        var t = l.hls.levels,
                                            r = t.indexOf(o);
                                        e.error ? l.warn('MediaCapabilities decodingInfo error: "' + e.error + '" for level ' + r + " " + ot(e)) : e.supported ? e.decodingInfoResults.some((function(e) {
                                            return !1 === e.smooth || !1 === e.powerEfficient
                                        })) && l.log("MediaCapabilities decodingInfo for level " + r + " not smooth or powerEfficient: " + ot(e)) : (l.warn("Unsupported MediaCapabilities decodingInfo result for level " + r + " " + ot(e)), r > -1 && t.length > 1 && (l.log("Removing unsupported level " + r), l.hls.removeLevel(r), -1 === l.hls.loadLevel && (l.hls.nextLoadLevel = 0)))
                                    }
                                })).catch((function(e) {
                                    l.warn("Error handling MediaCapabilities decodingInfo: " + e)
                                }))) : o.supportedResult = je
                            }
                            if ((E && o.codecSet !== E || R && o.videoRange !== R || f && I > o.frameRate || !f && I > 0 && I < o.frameRate || null != (t = o.supportedResult) && null != (t = t.decodingInfoResults) && t.some((function(e) {
                                    return !1 === e.smooth
                                }))) && (!L || H !== _)) return K.push(H), 0;
                            var m, T = o.details,
                                b = (c ? null == T ? void 0 : T.partTarget : null == T ? void 0 : T.averagetargetduration) || B;
                            m = f ? s * e : a * e;
                            var P = B && i >= 2 * B && 0 === n ? o.averageBitrate : o.maxBitrate,
                                C = l.getTimeToLoadFrag(G, m, P * b, void 0 === T);
                            if (m >= P && (H === d || 0 === o.loadError && 0 === o.fragmentError) && (C <= G || !A(C) || S && !l.bitrateTestDelay || C < u)) {
                                var w = l.forcedAutoLevel;
                                return H === p || -1 !== w && w === p || (K.length && l.trace("Skipped level(s) " + K.join(",") + " of " + r + ' max with CODECS and VIDEO-RANGE:"' + v[K[0]].codecs + '" ' + v[K[0]].videoRange + '; not compatible with "' + E + '" ' + R), l.info("switch candidate:" + h + "->" + H + " adjustedbw(" + Math.round(m) + ")-bitrate=" + Math.round(m - P) + " ttfb:" + G.toFixed(1) + " avgDuration:" + b.toFixed(1) + " maxFetchDuration:" + u.toFixed(1) + " fetchDuration:" + C.toFixed(1) + " firstSelection:" + L + " codecSet:" + o.codecSet + " videoRange:" + o.videoRange + " hls.loadLevel:" + p)), L && (l.firstSelection = H), {
                                    v: H
                                }
                            }
                        }, H = r; H >= t; H--)
                        if (0 !== (U = V()) && U) return U.v;
                    return -1
                }, r.deriveNextAutoLevel = function(e) {
                    var t = this.hls,
                        r = t.maxAutoLevel,
                        i = t.minAutoLevel;
                    return Math.min(Math.max(e, i), r)
                }, i(t, [{
                    key: "firstAutoLevel",
                    get: function() {
                        var e = this.hls,
                            t = e.maxAutoLevel,
                            r = e.minAutoLevel,
                            i = this.getBwEstimate(),
                            n = this.hls.config.maxStarvationDelay,
                            a = this.findBestLevel(i, r, t, 0, n, 1, 1);
                        if (a > -1) return a;
                        var s = this.hls.firstLevel,
                            o = Math.min(Math.max(s, r), t);
                        return this.warn("Could not find best starting auto level. Defaulting to first in playlist " + s + " clamped to " + o), o
                    }
                }, {
                    key: "forcedAutoLevel",
                    get: function() {
                        return this.nextAutoLevelKey ? -1 : this._nextAutoLevel
                    }
                }, {
                    key: "nextAutoLevel",
                    get: function() {
                        var e = this.forcedAutoLevel,
                            t = this.bwEstimator.canEstimate(),
                            r = this.lastLoadedFragLevel > -1;
                        if (!(-1 === e || t && r && this.nextAutoLevelKey !== this.getAutoLevelKey())) return e;
                        var i = t && r ? this.getNextABRAutoLevel() : this.firstAutoLevel;
                        if (-1 !== e) {
                            var n = this.hls.levels;
                            if (n.length > Math.max(e, i) && n[e].loadError <= n[i].loadError) return e
                        }
                        return this._nextAutoLevel = i, this.nextAutoLevelKey = this.getAutoLevelKey(), i
                    },
                    set: function(e) {
                        var t = this.deriveNextAutoLevel(e);
                        this._nextAutoLevel !== t && (this.nextAutoLevelKey = "", this._nextAutoLevel = t)
                    }
                }])
            }(N),
            pt = function(e, t) {
                for (var r = 0, i = e.length - 1, n = null, a = null; r <= i;) {
                    var s = t(a = e[n = (r + i) / 2 | 0]);
                    if (s > 0) r = n + 1;
                    else {
                        if (!(s < 0)) return a;
                        i = n - 1
                    }
                }
                return null
            };

        function yt(e, t, r, i, n) {
            void 0 === r && (r = 0), void 0 === i && (i = 0), void 0 === n && (n = .005);
            var a = null;
            if (e) {
                a = t[1 + e.sn - t[0].sn] || null;
                var s = e.endDTS - r;
                s > 0 && s < 15e-7 && (r += 15e-7), a && e.level !== a.level && a.end <= e.end && (a = t[2 + e.sn - t[0].sn] || null)
            } else 0 === r && 0 === t[0].start && (a = t[0]);
            if (a && ((!e || e.level === a.level) && 0 === Et(r, i, a) || function(e, t, r) {
                    if (t && 0 === t.start && t.level < e.level && (t.endPTS || 0) > 0) {
                        var i = t.tagList.reduce((function(e, t) {
                            return "INF" === t[0] && (e += parseFloat(t[1])), e
                        }), r);
                        return e.start <= i
                    }
                    return !1
                }(a, e, Math.min(n, i)))) return a;
            var o = pt(t, Et.bind(null, r, i));
            return !o || o === e && a ? a : o
        }

        function Et(e, t, r) {
            if (void 0 === e && (e = 0), void 0 === t && (t = 0), r.start <= e && r.start + r.duration > e) return 0;
            var i = Math.min(t, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
            return r.start + r.duration - i <= e ? 1 : r.start - i > e && r.start ? -1 : 0
        }

        function Tt(e, t, r) {
            var i = 1e3 * Math.min(t, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
            return (r.endProgramDateTime || 0) - i > e
        }

        function St(e, t, r) {
            if (e && e.startCC <= t && e.endCC >= t) {
                var i, n = e.fragments,
                    a = e.fragmentHint;
                return a && (n = n.concat(a)), pt(n, (function(e) {
                    return e.cc < t ? 1 : e.cc > t ? -1 : (i = e, e.end <= r ? 1 : e.start > r ? -1 : 0)
                })), i || null
            }
            return null
        }

        function At(e) {
            switch (e.details) {
                case k.FRAG_LOAD_TIMEOUT:
                case k.KEY_LOAD_TIMEOUT:
                case k.LEVEL_LOAD_TIMEOUT:
                case k.MANIFEST_LOAD_TIMEOUT:
                    return !0
            }
            return !1
        }

        function Lt(e, t) {
            var r = At(t);
            return e.default[(r ? "timeout" : "error") + "Retry"]
        }

        function Rt(e, t) {
            var r = "linear" === e.backoff ? 1 : Math.pow(2, t);
            return Math.min(r * e.retryDelayMs, e.maxRetryDelayMs)
        }

        function It(e) {
            return d(d({}, e), {
                errorRetry: null,
                timeoutRetry: null
            })
        }

        function kt(e, t, r, i) {
            if (!e) return !1;
            var n = null == i ? void 0 : i.code,
                a = t < e.maxNumRetry && (function(e) {
                    return bt(e) || !!e && (e < 400 || e > 499)
                }(n) || !!r);
            return e.shouldRetry ? e.shouldRetry(e, t, r, i, a) : a
        }

        function bt(e) {
            return 0 === e && !1 === navigator.onLine
        }
        var Dt = 0,
            _t = 2,
            Pt = 3,
            Ct = 5,
            wt = 0,
            Ot = 1,
            xt = 2,
            Mt = 4,
            Ft = function(e) {
                function t(t) {
                    var r;
                    return (r = e.call(this, "error-controller", t.logger) || this).hls = void 0, r.playlistError = 0, r.hls = t, r.registerListeners(), r
                }
                o(t, e);
                var r = t.prototype;
                return r.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.ERROR, this.onError, this), e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.LEVEL_UPDATED, this.onLevelUpdated, this)
                }, r.unregisterListeners = function() {
                    var e = this.hls;
                    e && (e.off(b.ERROR, this.onError, this), e.off(b.ERROR, this.onErrorOut, this), e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.LEVEL_UPDATED, this.onLevelUpdated, this))
                }, r.destroy = function() {
                    this.unregisterListeners(), this.hls = null
                }, r.startLoad = function(e) {}, r.stopLoad = function() {
                    this.playlistError = 0
                }, r.getVariantLevelIndex = function(e) {
                    return (null == e ? void 0 : e.type) === w ? e.level : this.getVariantIndex()
                }, r.getVariantIndex = function() {
                    var e, t = this.hls,
                        r = t.currentLevel;
                    return null != (e = t.loadLevelObj) && e.details || -1 === r ? t.loadLevel : r
                }, r.variantHasKey = function(e, t) {
                    if (e) {
                        var r;
                        if (null != (r = e.details) && r.hasKey(t)) return !0;
                        var i = e.audioGroups;
                        if (i) return this.hls.allAudioTracks.filter((function(e) {
                            return i.indexOf(e.groupId) >= 0
                        })).some((function(e) {
                            var r;
                            return null == (r = e.details) ? void 0 : r.hasKey(t)
                        }))
                    }
                    return !1
                }, r.onManifestLoading = function() {
                    this.playlistError = 0
                }, r.onLevelUpdated = function() {
                    this.playlistError = 0
                }, r.onError = function(e, t) {
                    var r;
                    if (!t.fatal) {
                        var i = this.hls,
                            n = t.context;
                        switch (t.details) {
                            case k.FRAG_LOAD_ERROR:
                            case k.FRAG_LOAD_TIMEOUT:
                            case k.KEY_LOAD_ERROR:
                            case k.KEY_LOAD_TIMEOUT:
                                return void(t.errorAction = this.getFragRetryOrSwitchAction(t));
                            case k.FRAG_PARSING_ERROR:
                                if (null != (r = t.frag) && r.gap) return void(t.errorAction = Nt());
                            case k.FRAG_GAP:
                            case k.FRAG_DECRYPT_ERROR:
                                return t.errorAction = this.getFragRetryOrSwitchAction(t), void(t.errorAction.action = _t);
                            case k.LEVEL_EMPTY_ERROR:
                            case k.LEVEL_PARSING_ERROR:
                                var a, s = t.parent === w ? t.level : i.loadLevel;
                                return void(t.details === k.LEVEL_EMPTY_ERROR && null != (a = t.context) && null != (a = a.levelDetails) && a.live ? t.errorAction = this.getPlaylistRetryOrSwitchAction(t, s) : (t.levelRetry = !1, t.errorAction = this.getLevelSwitchAction(t, s)));
                            case k.LEVEL_LOAD_ERROR:
                            case k.LEVEL_LOAD_TIMEOUT:
                                return void("number" == typeof(null == n ? void 0 : n.level) && (t.errorAction = this.getPlaylistRetryOrSwitchAction(t, n.level)));
                            case k.AUDIO_TRACK_LOAD_ERROR:
                            case k.AUDIO_TRACK_LOAD_TIMEOUT:
                            case k.SUBTITLE_LOAD_ERROR:
                            case k.SUBTITLE_TRACK_LOAD_TIMEOUT:
                                if (n) {
                                    var o = i.loadLevelObj;
                                    if (o && (n.type === P && o.hasAudioGroup(n.groupId) || n.type === C && o.hasSubtitleGroup(n.groupId))) return t.errorAction = this.getPlaylistRetryOrSwitchAction(t, i.loadLevel), t.errorAction.action = _t, void(t.errorAction.flags = Ot)
                                }
                                return;
                            case k.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:
                                return void(t.errorAction = {
                                    action: _t,
                                    flags: xt
                                });
                            case k.KEY_SYSTEM_SESSION_UPDATE_FAILED:
                            case k.KEY_SYSTEM_STATUS_INTERNAL_ERROR:
                            case k.KEY_SYSTEM_NO_SESSION:
                                return void(t.errorAction = {
                                    action: _t,
                                    flags: Mt
                                });
                            case k.BUFFER_ADD_CODEC_ERROR:
                            case k.REMUX_ALLOC_ERROR:
                            case k.BUFFER_APPEND_ERROR:
                                var l;
                                return void(t.errorAction || (t.errorAction = this.getLevelSwitchAction(t, null != (l = t.level) ? l : i.loadLevel)));
                            case k.INTERNAL_EXCEPTION:
                            case k.BUFFER_APPENDING_ERROR:
                            case k.BUFFER_FULL_ERROR:
                            case k.LEVEL_SWITCH_ERROR:
                            case k.BUFFER_STALLED_ERROR:
                            case k.BUFFER_SEEK_OVER_HOLE:
                            case k.BUFFER_NUDGE_ON_STALL:
                                return void(t.errorAction = Nt())
                        }
                        t.type === I.KEY_SYSTEM_ERROR && (t.levelRetry = !1, t.errorAction = Nt())
                    }
                }, r.getPlaylistRetryOrSwitchAction = function(e, t) {
                    var r = Lt(this.hls.config.playlistLoadPolicy, e),
                        i = this.playlistError++;
                    if (kt(r, i, At(e), e.response)) return {
                        action: Ct,
                        flags: wt,
                        retryConfig: r,
                        retryCount: i
                    };
                    var n = this.getLevelSwitchAction(e, t);
                    return r && (n.retryConfig = r, n.retryCount = i), n
                }, r.getFragRetryOrSwitchAction = function(e) {
                    var t = this.hls,
                        r = this.getVariantLevelIndex(e.frag),
                        i = t.levels[r],
                        n = t.config,
                        a = n.fragLoadPolicy,
                        s = n.keyLoadPolicy,
                        o = Lt(e.details.startsWith("key") ? s : a, e),
                        l = t.levels.reduce((function(e, t) {
                            return e + t.fragmentError
                        }), 0);
                    if (i && (e.details !== k.FRAG_GAP && i.fragmentError++, kt(o, l, At(e), e.response))) return {
                        action: Ct,
                        flags: wt,
                        retryConfig: o,
                        retryCount: l
                    };
                    var u = this.getLevelSwitchAction(e, r);
                    return o && (u.retryConfig = o, u.retryCount = l), u
                }, r.getLevelSwitchAction = function(e, t) {
                    var r = this.hls;
                    null == t && (t = r.loadLevel);
                    var i = this.hls.levels[t];
                    if (i) {
                        var n, a, s = e.details;
                        i.loadError++, s === k.BUFFER_APPEND_ERROR && i.fragmentError++;
                        var o = -1,
                            l = r.levels,
                            u = r.loadLevel,
                            d = r.minAutoLevel,
                            h = r.maxAutoLevel;
                        r.autoLevelEnabled || r.config.preserveManualLevelOnError || (r.loadLevel = -1);
                        for (var f, c = null == (n = e.frag) ? void 0 : n.type, g = (c === O && s === k.FRAG_PARSING_ERROR || "audio" === e.sourceBufferName && (s === k.BUFFER_ADD_CODEC_ERROR || s === k.BUFFER_APPEND_ERROR)) && l.some((function(e) {
                                var t = e.audioCodec;
                                return i.audioCodec !== t
                            })), v = "video" === e.sourceBufferName && (s === k.BUFFER_ADD_CODEC_ERROR || s === k.BUFFER_APPEND_ERROR) && l.some((function(e) {
                                var t = e.codecSet,
                                    r = e.audioCodec;
                                return i.codecSet !== t && i.audioCodec === r
                            })), m = null != (a = e.context) ? a : {}, p = m.type, y = m.groupId, E = function() {
                                var t = (T + u) % l.length;
                                if (t !== u && t >= d && t <= h && 0 === l[t].loadError) {
                                    var r, n, a = l[t];
                                    if (s === k.FRAG_GAP && c === w && e.frag) {
                                        var f = l[t].details;
                                        if (f) {
                                            var m = yt(e.frag, f.fragments, e.frag.start);
                                            if (null != m && m.gap) return 0
                                        }
                                    } else {
                                        if (p === P && a.hasAudioGroup(y) || p === C && a.hasSubtitleGroup(y)) return 0;
                                        if (c === O && null != (r = i.audioGroups) && r.some((function(e) {
                                                return a.hasAudioGroup(e)
                                            })) || c === x && null != (n = i.subtitleGroups) && n.some((function(e) {
                                                return a.hasSubtitleGroup(e)
                                            })) || g && i.audioCodec === a.audioCodec || v && i.codecSet === a.codecSet || !g && i.codecSet !== a.codecSet) return 0
                                    }
                                    return o = t, 1
                                }
                            }, T = l.length; T-- && (0 === (f = E()) || 1 !== f););
                        if (o > -1 && r.loadLevel !== o) return e.levelRetry = !0, this.playlistError = 0, {
                            action: _t,
                            flags: wt,
                            nextAutoLevel: o
                        }
                    }
                    return {
                        action: _t,
                        flags: Ot
                    }
                }, r.onErrorOut = function(e, t) {
                    var r;
                    switch (null == (r = t.errorAction) ? void 0 : r.action) {
                        case Dt:
                            break;
                        case _t:
                            this.sendAlternateToPenaltyBox(t), t.errorAction.resolved || t.details === k.FRAG_GAP ? /MediaSource readyState: ended/.test(t.error.message) && (this.warn('MediaSource ended after "' + t.sourceBufferName + '" sourceBuffer append error. Attempting to recover from media error.'), this.hls.recoverMediaError()) : t.fatal = !0
                    }
                    t.fatal && this.hls.stopLoad()
                }, r.sendAlternateToPenaltyBox = function(e) {
                    var t = this.hls,
                        r = e.errorAction;
                    if (r) {
                        var i = r.flags,
                            n = r.nextAutoLevel;
                        switch (i) {
                            case wt:
                                this.switchLevel(e, n);
                                break;
                            case xt:
                                var a = this.getVariantLevelIndex(e.frag),
                                    s = t.levels[a],
                                    o = null == s ? void 0 : s.attrs["HDCP-LEVEL"];
                                if (r.hdcpLevel = o, o) {
                                    t.maxHdcpLevel = $e[$e.indexOf(o) - 1], r.resolved = !0, this.warn('Restricting playback to HDCP-LEVEL of "' + t.maxHdcpLevel + '" or lower');
                                    break
                                }
                            case Mt:
                                var l = e.decryptdata;
                                if (l) {
                                    for (var u = this.hls.levels, d = u.length; d--;) {
                                        var h, f;
                                        this.variantHasKey(u[d], l) && (this.log("Banned key found in level " + d + " (" + u[d].bitrate + 'bps) or audio group "' + (null == (h = u[d].audioGroups) ? void 0 : h.join(",")) + '" (' + (null == (f = e.frag) ? void 0 : f.type) + " fragment) " + X(l.keyId || [])), u[d].fragmentError++, u[d].loadError++, this.log("Removing level " + d + " with key error (" + e.error + ")"), this.hls.removeLevel(d))
                                    }
                                    u.length && (r.resolved = !0)
                                }
                        }
                        r.resolved || this.switchLevel(e, n)
                    }
                }, r.switchLevel = function(e, t) {
                    if (void 0 !== t && e.errorAction && (this.warn("switching to level " + t + " after " + e.details), this.hls.nextAutoLevel = t, e.errorAction.resolved = !0, this.hls.nextLoadLevel = this.hls.nextAutoLevel, e.details === k.BUFFER_ADD_CODEC_ERROR && e.mimeType && "audiovideo" !== e.sourceBufferName))
                        for (var r = Ye(e.mimeType), i = this.hls.levels, n = i.length; n--;) i[n][e.sourceBufferName + "Codec"] === r && (this.log("Removing level " + n + " for " + e.details + ' ("' + r + '" not supported)'), this.hls.removeLevel(n))
                }, t
            }(N);

        function Nt(e) {
            var t = {
                action: Dt,
                flags: wt
            };
            return e && (t.resolved = !0), t
        }
        var Ut = "NOT_LOADED",
            Bt = "APPENDING",
            Gt = "PARTIAL",
            Kt = "OK",
            Vt = function() {
                function e(e) {
                    this.activePartLists = Object.create(null), this.endListFragments = Object.create(null), this.fragments = Object.create(null), this.timeRanges = Object.create(null), this.bufferPadding = .2, this.hls = void 0, this.hasGaps = !1, this.hls = e, this._registerListeners()
                }
                var t = e.prototype;
                return t._registerListeners = function() {
                    var e = this.hls;
                    e && (e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.BUFFER_APPENDED, this.onBufferAppended, this), e.on(b.FRAG_BUFFERED, this.onFragBuffered, this), e.on(b.FRAG_LOADED, this.onFragLoaded, this))
                }, t._unregisterListeners = function() {
                    var e = this.hls;
                    e && (e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.BUFFER_APPENDED, this.onBufferAppended, this), e.off(b.FRAG_BUFFERED, this.onFragBuffered, this), e.off(b.FRAG_LOADED, this.onFragLoaded, this))
                }, t.destroy = function() {
                    this._unregisterListeners(), this.hls = this.fragments = this.activePartLists = this.endListFragments = this.timeRanges = null
                }, t.getAppendedFrag = function(e, t) {
                    var r = this.activePartLists[t];
                    if (r)
                        for (var i = r.length; i--;) {
                            var n = r[i];
                            if (!n) break;
                            if (n.start <= e && e <= n.end && n.loaded) return n
                        }
                    return this.getBufferedFrag(e, t)
                }, t.getBufferedFrag = function(e, t) {
                    return this.getFragAtPos(e, t, !0)
                }, t.getFragAtPos = function(e, t, r) {
                    for (var i = this.fragments, n = Object.keys(i), a = n.length; a--;) {
                        var s = i[n[a]];
                        if ((null == s ? void 0 : s.body.type) === t && (!r || s.buffered)) {
                            var o = s.body;
                            if (o.start <= e && e <= o.end) return o
                        }
                    }
                    return null
                }, t.detectEvictedFragments = function(e, t, r, i, n) {
                    var a = this;
                    this.timeRanges && (this.timeRanges[e] = t);
                    var s = (null == i ? void 0 : i.fragment.sn) || -1;
                    Object.keys(this.fragments).forEach((function(i) {
                        var o = a.fragments[i];
                        if (o && !(s >= o.body.sn))
                            if (o.buffered || o.loaded && !n) {
                                var l = o.range[e];
                                l && (0 !== l.time.length ? l.time.some((function(e) {
                                    var r = !a.isTimeBuffered(e.startPTS, e.endPTS, t);
                                    return r && a.removeFragment(o.body), r
                                })) : a.removeFragment(o.body))
                            } else o.body.type === r && a.removeFragment(o.body)
                    }))
                }, t.detectPartialFragments = function(e) {
                    var t = this,
                        r = this.timeRanges;
                    if (r && "initSegment" !== e.frag.sn) {
                        var i = e.frag,
                            n = Yt(i),
                            a = this.fragments[n];
                        if (!(!a || a.buffered && i.gap)) {
                            var s = !i.relurl;
                            Object.keys(r).forEach((function(n) {
                                var o = i.elementaryStreams[n];
                                if (o) {
                                    var l = r[n],
                                        u = s || !0 === o.partial;
                                    a.range[n] = t.getBufferedTimes(i, e.part, u, l)
                                }
                            })), a.loaded = null, Object.keys(a.range).length ? (a.buffered = !0, (a.body.endList = i.endList || a.body.endList) && (this.endListFragments[a.body.type] = a), Ht(a) || this.removeParts(i.sn - 1, i.type)) : this.removeFragment(a.body)
                        }
                    }
                }, t.removeParts = function(e, t) {
                    var r = this.activePartLists[t];
                    r && (this.activePartLists[t] = Wt(r, (function(t) {
                        return t.fragment.sn >= e
                    })))
                }, t.fragBuffered = function(e, t) {
                    var r = Yt(e),
                        i = this.fragments[r];
                    !i && t && (i = this.fragments[r] = {
                        body: e,
                        appendedPTS: null,
                        loaded: null,
                        buffered: !1,
                        range: Object.create(null)
                    }, e.gap && (this.hasGaps = !0)), i && (i.loaded = null, i.buffered = !0)
                }, t.getBufferedTimes = function(e, t, r, i) {
                    for (var n = {
                            time: [],
                            partial: r
                        }, a = e.start, s = e.end, o = e.minEndPTS || s, l = e.maxStartPTS || a, u = 0; u < i.length; u++) {
                        var d = i.start(u) - this.bufferPadding,
                            h = i.end(u) + this.bufferPadding;
                        if (l >= d && o <= h) {
                            n.time.push({
                                startPTS: Math.max(a, i.start(u)),
                                endPTS: Math.min(s, i.end(u))
                            });
                            break
                        }
                        if (a < h && s > d) {
                            var f = Math.max(a, i.start(u)),
                                c = Math.min(s, i.end(u));
                            c > f && (n.partial = !0, n.time.push({
                                startPTS: f,
                                endPTS: c
                            }))
                        } else if (s <= d) break
                    }
                    return n
                }, t.getPartialFragment = function(e) {
                    var t, r, i, n = null,
                        a = 0,
                        s = this.bufferPadding,
                        o = this.fragments;
                    return Object.keys(o).forEach((function(l) {
                        var u = o[l];
                        u && Ht(u) && (r = u.body.start - s, i = u.body.end + s, e >= r && e <= i && (t = Math.min(e - r, i - e), a <= t && (n = u.body, a = t)))
                    })), n
                }, t.isEndListAppended = function(e) {
                    var t = this.endListFragments[e];
                    return void 0 !== t && (t.buffered || Ht(t))
                }, t.getState = function(e) {
                    var t = Yt(e),
                        r = this.fragments[t];
                    return r ? r.buffered ? Ht(r) ? Gt : Kt : Bt : Ut
                }, t.isTimeBuffered = function(e, t, r) {
                    for (var i, n, a = 0; a < r.length; a++) {
                        if (i = r.start(a) - this.bufferPadding, n = r.end(a) + this.bufferPadding, e >= i && t <= n) return !0;
                        if (t <= i) return !1
                    }
                    return !1
                }, t.onManifestLoading = function() {
                    this.removeAllFragments()
                }, t.onFragLoaded = function(e, t) {
                    if ("initSegment" !== t.frag.sn && !t.frag.bitrateTest) {
                        var r = t.frag,
                            i = t.part ? null : t,
                            n = Yt(r);
                        this.fragments[n] = {
                            body: r,
                            appendedPTS: null,
                            loaded: i,
                            buffered: !1,
                            range: Object.create(null)
                        }
                    }
                }, t.onBufferAppended = function(e, t) {
                    var r = t.frag,
                        i = t.part,
                        n = t.timeRanges,
                        a = t.type;
                    if ("initSegment" !== r.sn) {
                        var s = r.type;
                        if (i) {
                            var o = this.activePartLists[s];
                            o || (this.activePartLists[s] = o = []), o.push(i)
                        }
                        this.timeRanges = n;
                        var l = n[a];
                        this.detectEvictedFragments(a, l, s, i)
                    }
                }, t.onFragBuffered = function(e, t) {
                    this.detectPartialFragments(t)
                }, t.hasFragment = function(e) {
                    var t = Yt(e);
                    return !!this.fragments[t]
                }, t.hasFragments = function(e) {
                    var t = this.fragments,
                        r = Object.keys(t);
                    if (!e) return r.length > 0;
                    for (var i = r.length; i--;) {
                        var n = t[r[i]];
                        if ((null == n ? void 0 : n.body.type) === e) return !0
                    }
                    return !1
                }, t.hasParts = function(e) {
                    var t;
                    return !(null == (t = this.activePartLists[e]) || !t.length)
                }, t.removeFragmentsInRange = function(e, t, r, i, n) {
                    var a = this;
                    i && !this.hasGaps || Object.keys(this.fragments).forEach((function(s) {
                        var o = a.fragments[s];
                        if (o) {
                            var l = o.body;
                            l.type !== r || i && !l.gap || l.start < t && l.end > e && (o.buffered || n) && a.removeFragment(l)
                        }
                    }))
                }, t.removeFragment = function(e) {
                    var t = Yt(e);
                    e.clearElementaryStreamInfo();
                    var r = this.activePartLists[e.type];
                    if (r) {
                        var i = e.sn;
                        this.activePartLists[e.type] = Wt(r, (function(e) {
                            return e.fragment.sn !== i
                        }))
                    }
                    delete this.fragments[t], e.endList && delete this.endListFragments[e.type]
                }, t.removeAllFragments = function() {
                    var e;
                    this.fragments = Object.create(null), this.endListFragments = Object.create(null), this.activePartLists = Object.create(null), this.hasGaps = !1;
                    var t = null == (e = this.hls) || null == (e = e.latestLevelDetails) ? void 0 : e.partList;
                    t && t.forEach((function(e) {
                        return e.clearElementaryStreamInfo()
                    }))
                }, e
            }();

        function Ht(e) {
            var t, r, i;
            return e.buffered && !!(e.body.gap || null != (t = e.range.video) && t.partial || null != (r = e.range.audio) && r.partial || null != (i = e.range.audiovideo) && i.partial)
        }

        function Yt(e) {
            return e.type + "_" + e.level + "_" + e.sn
        }

        function Wt(e, t) {
            return e.filter((function(e) {
                var r = t(e);
                return r || e.clearElementaryStreamInfo(), r
            }))
        }
        var jt = 0,
            qt = 1,
            Xt = function() {
                function e(e, t, r) {
                    this.subtle = void 0, this.aesIV = void 0, this.aesMode = void 0, this.subtle = e, this.aesIV = t, this.aesMode = r
                }
                return e.prototype.decrypt = function(e, t) {
                    switch (this.aesMode) {
                        case jt:
                            return this.subtle.decrypt({
                                name: "AES-CBC",
                                iv: this.aesIV
                            }, t, e);
                        case qt:
                            return this.subtle.decrypt({
                                name: "AES-CTR",
                                counter: this.aesIV,
                                length: 64
                            }, t, e);
                        default:
                            throw new Error("[AESCrypto] invalid aes mode " + this.aesMode)
                    }
                }, e
            }(),
            Qt = function() {
                function e() {
                    this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.sBox = new Uint32Array(256), this.invSBox = new Uint32Array(256), this.key = new Uint32Array(0), this.ksRows = 0, this.keySize = 0, this.keySchedule = void 0, this.invKeySchedule = void 0, this.initTable()
                }
                var t = e.prototype;
                return t.uint8ArrayToUint32Array_ = function(e) {
                    for (var t = new DataView(e), r = new Uint32Array(4), i = 0; i < 4; i++) r[i] = t.getUint32(4 * i);
                    return r
                }, t.initTable = function() {
                    var e = this.sBox,
                        t = this.invSBox,
                        r = this.subMix,
                        i = r[0],
                        n = r[1],
                        a = r[2],
                        s = r[3],
                        o = this.invSubMix,
                        l = o[0],
                        u = o[1],
                        d = o[2],
                        h = o[3],
                        f = new Uint32Array(256),
                        c = 0,
                        g = 0,
                        v = 0;
                    for (v = 0; v < 256; v++) f[v] = v < 128 ? v << 1 : v << 1 ^ 283;
                    for (v = 0; v < 256; v++) {
                        var m = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4;
                        m = m >>> 8 ^ 255 & m ^ 99, e[c] = m, t[m] = c;
                        var p = f[c],
                            y = f[p],
                            E = f[y],
                            T = 257 * f[m] ^ 16843008 * m;
                        i[c] = T << 24 | T >>> 8, n[c] = T << 16 | T >>> 16, a[c] = T << 8 | T >>> 24, s[c] = T, T = 16843009 * E ^ 65537 * y ^ 257 * p ^ 16843008 * c, l[m] = T << 24 | T >>> 8, u[m] = T << 16 | T >>> 16, d[m] = T << 8 | T >>> 24, h[m] = T, c ? (c = p ^ f[f[f[E ^ p]]], g ^= f[f[g]]) : c = g = 1
                    }
                }, t.expandKey = function(e) {
                    for (var t = this.uint8ArrayToUint32Array_(e), r = !0, i = 0; i < t.length && r;) r = t[i] === this.key[i], i++;
                    if (!r) {
                        this.key = t;
                        var n = this.keySize = t.length;
                        if (4 !== n && 6 !== n && 8 !== n) throw new Error("Invalid aes key size=" + n);
                        var a, s, o, l, u = this.ksRows = 4 * (n + 6 + 1),
                            d = this.keySchedule = new Uint32Array(u),
                            h = this.invKeySchedule = new Uint32Array(u),
                            f = this.sBox,
                            c = this.rcon,
                            g = this.invSubMix,
                            v = g[0],
                            m = g[1],
                            p = g[2],
                            y = g[3];
                        for (a = 0; a < u; a++) a < n ? o = d[a] = t[a] : (l = o, a % n == 0 ? (l = f[(l = l << 8 | l >>> 24) >>> 24] << 24 | f[l >>> 16 & 255] << 16 | f[l >>> 8 & 255] << 8 | f[255 & l], l ^= c[a / n | 0] << 24) : n > 6 && a % n == 4 && (l = f[l >>> 24] << 24 | f[l >>> 16 & 255] << 16 | f[l >>> 8 & 255] << 8 | f[255 & l]), d[a] = o = (d[a - n] ^ l) >>> 0);
                        for (s = 0; s < u; s++) a = u - s, l = 3 & s ? d[a] : d[a - 4], h[s] = s < 4 || a <= 4 ? l : v[f[l >>> 24]] ^ m[f[l >>> 16 & 255]] ^ p[f[l >>> 8 & 255]] ^ y[f[255 & l]], h[s] = h[s] >>> 0
                    }
                }, t.networkToHostOrderSwap = function(e) {
                    return e << 24 | (65280 & e) << 8 | (16711680 & e) >> 8 | e >>> 24
                }, t.decrypt = function(e, t, r) {
                    for (var i, n, a, s, o, l, u, d, h, f, c, g, v, m, p = this.keySize + 6, y = this.invKeySchedule, E = this.invSBox, T = this.invSubMix, S = T[0], A = T[1], L = T[2], R = T[3], I = this.uint8ArrayToUint32Array_(r), k = I[0], b = I[1], D = I[2], _ = I[3], P = new Int32Array(e), C = new Int32Array(P.length), w = this.networkToHostOrderSwap; t < P.length;) {
                        for (h = w(P[t]), f = w(P[t + 1]), c = w(P[t + 2]), g = w(P[t + 3]), o = h ^ y[0], l = g ^ y[1], u = c ^ y[2], d = f ^ y[3], v = 4, m = 1; m < p; m++) i = S[o >>> 24] ^ A[l >> 16 & 255] ^ L[u >> 8 & 255] ^ R[255 & d] ^ y[v], n = S[l >>> 24] ^ A[u >> 16 & 255] ^ L[d >> 8 & 255] ^ R[255 & o] ^ y[v + 1], a = S[u >>> 24] ^ A[d >> 16 & 255] ^ L[o >> 8 & 255] ^ R[255 & l] ^ y[v + 2], s = S[d >>> 24] ^ A[o >> 16 & 255] ^ L[l >> 8 & 255] ^ R[255 & u] ^ y[v + 3], o = i, l = n, u = a, d = s, v += 4;
                        i = E[o >>> 24] << 24 ^ E[l >> 16 & 255] << 16 ^ E[u >> 8 & 255] << 8 ^ E[255 & d] ^ y[v], n = E[l >>> 24] << 24 ^ E[u >> 16 & 255] << 16 ^ E[d >> 8 & 255] << 8 ^ E[255 & o] ^ y[v + 1], a = E[u >>> 24] << 24 ^ E[d >> 16 & 255] << 16 ^ E[o >> 8 & 255] << 8 ^ E[255 & l] ^ y[v + 2], s = E[d >>> 24] << 24 ^ E[o >> 16 & 255] << 16 ^ E[l >> 8 & 255] << 8 ^ E[255 & u] ^ y[v + 3], C[t] = w(i ^ k), C[t + 1] = w(s ^ b), C[t + 2] = w(a ^ D), C[t + 3] = w(n ^ _), k = h, b = f, D = c, _ = g, t += 4
                    }
                    return C.buffer
                }, e
            }(),
            zt = function() {
                function e(e, t, r) {
                    this.subtle = void 0, this.key = void 0, this.aesMode = void 0, this.subtle = e, this.key = t, this.aesMode = r
                }
                return e.prototype.expandKey = function() {
                    var e = function(e) {
                        switch (e) {
                            case jt:
                                return "AES-CBC";
                            case qt:
                                return "AES-CTR";
                            default:
                                throw new Error("[FastAESKey] invalid aes mode " + e)
                        }
                    }(this.aesMode);
                    return this.subtle.importKey("raw", this.key, {
                        name: e
                    }, !1, ["encrypt", "decrypt"])
                }, e
            }(),
            $t = function() {
                function e(e, t) {
                    var r = (void 0 === t ? {} : t).removePKCS7Padding,
                        i = void 0 === r || r;
                    if (this.logEnabled = !0, this.removePKCS7Padding = void 0, this.subtle = null, this.softwareDecrypter = null, this.key = null, this.fastAesKey = null, this.remainderData = null, this.currentIV = null, this.currentResult = null, this.useSoftware = void 0, this.enableSoftwareAES = void 0, this.enableSoftwareAES = e.enableSoftwareAES, this.removePKCS7Padding = i, i) try {
                        var n = self.crypto;
                        n && (this.subtle = n.subtle || n.webkitSubtle)
                    } catch (e) {}
                    this.useSoftware = !this.subtle
                }
                var t = e.prototype;
                return t.destroy = function() {
                    this.subtle = null, this.softwareDecrypter = null, this.key = null, this.fastAesKey = null, this.remainderData = null, this.currentIV = null, this.currentResult = null
                }, t.isSync = function() {
                    return this.useSoftware
                }, t.flush = function() {
                    var e = this.currentResult,
                        t = this.remainderData;
                    if (!e || t) return this.reset(), null;
                    var r, i, n, a = new Uint8Array(e);
                    return this.reset(), this.removePKCS7Padding ? (i = (r = a).byteLength, (n = i && new DataView(r.buffer).getUint8(i - 1)) ? r.slice(0, i - n) : r) : a
                }, t.reset = function() {
                    this.currentResult = null, this.currentIV = null, this.remainderData = null, this.softwareDecrypter && (this.softwareDecrypter = null)
                }, t.decrypt = function(e, t, r, i) {
                    var n = this;
                    return this.useSoftware ? new Promise((function(a, s) {
                        var o = ArrayBuffer.isView(e) ? e : new Uint8Array(e);
                        n.softwareDecrypt(o, t, r, i);
                        var l = n.flush();
                        l ? a(l.buffer) : s(new Error("[softwareDecrypt] Failed to decrypt data"))
                    })) : this.webCryptoDecrypt(new Uint8Array(e), t, r, i)
                }, t.softwareDecrypt = function(e, t, r, i) {
                    var n = this.currentIV,
                        a = this.currentResult,
                        s = this.remainderData;
                    if (i !== jt || 16 !== t.byteLength) return Y.warn("SoftwareDecrypt: can only handle AES-128-CBC"), null;
                    this.logOnce("JS AES decrypt"), s && (e = Ae(s, e), this.remainderData = null);
                    var o = this.getValidChunk(e);
                    if (!o.length) return null;
                    n && (r = n);
                    var l = this.softwareDecrypter;
                    l || (l = this.softwareDecrypter = new Qt), l.expandKey(t);
                    var u = a;
                    return this.currentResult = l.decrypt(o.buffer, 0, r), this.currentIV = o.slice(-16).buffer, u || null
                }, t.webCryptoDecrypt = function(e, t, r, i) {
                    var n = this;
                    if (this.key !== t || !this.fastAesKey) {
                        if (!this.subtle) return Promise.resolve(this.onWebCryptoError(e, t, r, i));
                        this.key = t, this.fastAesKey = new zt(this.subtle, t, i)
                    }
                    return this.fastAesKey.expandKey().then((function(t) {
                        return n.subtle ? (n.logOnce("WebCrypto AES decrypt"), new Xt(n.subtle, new Uint8Array(r), i).decrypt(e.buffer, t)) : Promise.reject(new Error("web crypto not initialized"))
                    })).catch((function(a) {
                        return Y.warn("[decrypter]: WebCrypto Error, disable WebCrypto API, " + a.name + ": " + a.message), n.onWebCryptoError(e, t, r, i)
                    }))
                }, t.onWebCryptoError = function(e, t, r, i) {
                    var n = this.enableSoftwareAES;
                    if (n) {
                        this.useSoftware = !0, this.logEnabled = !0, this.softwareDecrypt(e, t, r, i);
                        var a = this.flush();
                        if (a) return a.buffer
                    }
                    throw new Error("WebCrypto" + (n ? " and softwareDecrypt" : "") + ": failed to decrypt data")
                }, t.getValidChunk = function(e) {
                    var t = e,
                        r = e.length - e.length % 16;
                    return r !== e.length && (t = e.slice(0, r), this.remainderData = e.slice(r)), t
                }, t.logOnce = function(e) {
                    this.logEnabled && (Y.log("[decrypter]: " + e), this.logEnabled = !1)
                }, e
            }(),
            Zt = Math.pow(2, 17),
            Jt = function() {
                function e(e) {
                    this.config = void 0, this.loader = null, this.partLoadTimeout = -1, this.config = e
                }
                var t = e.prototype;
                return t.destroy = function() {
                    this.loader && (this.loader.destroy(), this.loader = null)
                }, t.abort = function() {
                    this.loader && this.loader.abort()
                }, t.load = function(e, t) {
                    var r = this,
                        i = e.url;
                    if (!i) return Promise.reject(new rr({
                        type: I.NETWORK_ERROR,
                        details: k.FRAG_LOAD_ERROR,
                        fatal: !1,
                        frag: e,
                        error: new Error("Fragment does not have a " + (i ? "part list" : "url")),
                        networkDetails: null
                    }));
                    this.abort();
                    var n = this.config,
                        a = n.fLoader,
                        s = n.loader;
                    return new Promise((function(o, l) {
                        if (r.loader && r.loader.destroy(), e.gap) {
                            if (e.tagList.some((function(e) {
                                    return "GAP" === e[0]
                                }))) return void l(tr(e));
                            e.gap = !1
                        }
                        var u = r.loader = a ? new a(n) : new s(n),
                            h = er(e);
                        e.loader = u;
                        var f = It(n.fragLoadPolicy.default),
                            c = {
                                loadPolicy: f,
                                timeout: f.maxLoadTimeMs,
                                maxRetry: 0,
                                retryDelay: 0,
                                maxRetryDelay: 0,
                                highWaterMark: "initSegment" === e.sn ? 1 / 0 : Zt
                            };
                        e.stats = u.stats;
                        var g = {
                            onSuccess: function(t, i, n, a) {
                                r.resetLoader(e, u);
                                var s = t.data;
                                n.resetIV && e.decryptdata && (e.decryptdata.iv = new Uint8Array(s.slice(0, 16)), s = s.slice(16)), o({
                                    frag: e,
                                    part: null,
                                    payload: s,
                                    networkDetails: a
                                })
                            },
                            onError: function(t, n, a, s) {
                                r.resetLoader(e, u), l(new rr({
                                    type: I.NETWORK_ERROR,
                                    details: k.FRAG_LOAD_ERROR,
                                    fatal: !1,
                                    frag: e,
                                    response: d({
                                        url: i,
                                        data: void 0
                                    }, t),
                                    error: new Error("HTTP Error " + t.code + " " + t.text),
                                    networkDetails: a,
                                    stats: s
                                }))
                            },
                            onAbort: function(t, i, n) {
                                r.resetLoader(e, u), l(new rr({
                                    type: I.NETWORK_ERROR,
                                    details: k.INTERNAL_ABORTED,
                                    fatal: !1,
                                    frag: e,
                                    error: new Error("Aborted"),
                                    networkDetails: n,
                                    stats: t
                                }))
                            },
                            onTimeout: function(t, i, n) {
                                r.resetLoader(e, u), l(new rr({
                                    type: I.NETWORK_ERROR,
                                    details: k.FRAG_LOAD_TIMEOUT,
                                    fatal: !1,
                                    frag: e,
                                    error: new Error("Timeout after " + c.timeout + "ms"),
                                    networkDetails: n,
                                    stats: t
                                }))
                            }
                        };
                        t && (g.onProgress = function(r, i, n, a) {
                            return t({
                                frag: e,
                                part: null,
                                payload: n,
                                networkDetails: a
                            })
                        }), u.load(h, c, g)
                    }))
                }, t.loadPart = function(e, t, r) {
                    var i = this;
                    this.abort();
                    var n = this.config,
                        a = n.fLoader,
                        s = n.loader;
                    return new Promise((function(o, l) {
                        if (i.loader && i.loader.destroy(), e.gap || t.gap) l(tr(e, t));
                        else {
                            var u = i.loader = a ? new a(n) : new s(n),
                                h = er(e, t);
                            e.loader = u;
                            var f = It(n.fragLoadPolicy.default),
                                c = {
                                    loadPolicy: f,
                                    timeout: f.maxLoadTimeMs,
                                    maxRetry: 0,
                                    retryDelay: 0,
                                    maxRetryDelay: 0,
                                    highWaterMark: Zt
                                };
                            t.stats = u.stats, u.load(h, c, {
                                onSuccess: function(n, a, s, l) {
                                    i.resetLoader(e, u), i.updateStatsFromPart(e, t);
                                    var d = {
                                        frag: e,
                                        part: t,
                                        payload: n.data,
                                        networkDetails: l
                                    };
                                    r(d), o(d)
                                },
                                onError: function(r, n, a, s) {
                                    i.resetLoader(e, u), l(new rr({
                                        type: I.NETWORK_ERROR,
                                        details: k.FRAG_LOAD_ERROR,
                                        fatal: !1,
                                        frag: e,
                                        part: t,
                                        response: d({
                                            url: h.url,
                                            data: void 0
                                        }, r),
                                        error: new Error("HTTP Error " + r.code + " " + r.text),
                                        networkDetails: a,
                                        stats: s
                                    }))
                                },
                                onAbort: function(r, n, a) {
                                    e.stats.aborted = t.stats.aborted, i.resetLoader(e, u), l(new rr({
                                        type: I.NETWORK_ERROR,
                                        details: k.INTERNAL_ABORTED,
                                        fatal: !1,
                                        frag: e,
                                        part: t,
                                        error: new Error("Aborted"),
                                        networkDetails: a,
                                        stats: r
                                    }))
                                },
                                onTimeout: function(r, n, a) {
                                    i.resetLoader(e, u), l(new rr({
                                        type: I.NETWORK_ERROR,
                                        details: k.FRAG_LOAD_TIMEOUT,
                                        fatal: !1,
                                        frag: e,
                                        part: t,
                                        error: new Error("Timeout after " + c.timeout + "ms"),
                                        networkDetails: a,
                                        stats: r
                                    }))
                                }
                            })
                        }
                    }))
                }, t.updateStatsFromPart = function(e, t) {
                    var r = e.stats,
                        i = t.stats,
                        n = i.total;
                    if (r.loaded += i.loaded, n) {
                        var a = Math.round(e.duration / t.duration),
                            s = Math.min(Math.round(r.loaded / n), a),
                            o = (a - s) * Math.round(r.loaded / s);
                        r.total = r.loaded + o
                    } else r.total = Math.max(r.loaded, r.total);
                    var l = r.loading,
                        u = i.loading;
                    l.start ? l.first += u.first - u.start : (l.start = u.start, l.first = u.first), l.end = u.end
                }, t.resetLoader = function(e, t) {
                    e.loader = null, this.loader === t && (self.clearTimeout(this.partLoadTimeout), this.loader = null), t.destroy()
                }, e
            }();

        function er(e, t) {
            void 0 === t && (t = null);
            var r, i = t || e,
                n = {
                    frag: e,
                    part: t,
                    responseType: "arraybuffer",
                    url: i.url,
                    headers: {},
                    rangeStart: 0,
                    rangeEnd: 0
                },
                a = i.byteRangeStartOffset,
                s = i.byteRangeEndOffset;
            if (A(a) && A(s)) {
                var o, l = a,
                    u = s;
                if ("initSegment" === e.sn && ("AES-128" === (r = null == (o = e.decryptdata) ? void 0 : o.method) || "AES-256" === r)) {
                    var d = s - a;
                    d % 16 && (u = s + (16 - d % 16)), 0 !== a && (n.resetIV = !0, l = a - 16)
                }
                n.rangeStart = l, n.rangeEnd = u
            }
            return n
        }

        function tr(e, t) {
            var r = new Error("GAP " + (e.gap ? "tag" : "attribute") + " found"),
                i = {
                    type: I.MEDIA_ERROR,
                    details: k.FRAG_GAP,
                    fatal: !1,
                    frag: e,
                    error: r,
                    networkDetails: null
                };
            return t && (i.part = t), (t || e).stats.aborted = !0, new rr(i)
        }
        var rr = function(e) {
                function t(t) {
                    var r;
                    return (r = e.call(this, t.error.message) || this).data = void 0, r.data = t, r
                }
                return o(t, e), t
            }(c(Error)),
            ir = function(e) {
                function t(t, r) {
                    var i;
                    return (i = e.call(this, t, r) || this)._boundTick = void 0, i._tickTimer = null, i._tickInterval = null, i._tickCallCount = 0, i._boundTick = i.tick.bind(i), i
                }
                o(t, e);
                var r = t.prototype;
                return r.destroy = function() {
                    this.onHandlerDestroying(), this.onHandlerDestroyed()
                }, r.onHandlerDestroying = function() {
                    this.clearNextTick(), this.clearInterval()
                }, r.onHandlerDestroyed = function() {}, r.hasInterval = function() {
                    return !!this._tickInterval
                }, r.hasNextTick = function() {
                    return !!this._tickTimer
                }, r.setInterval = function(e) {
                    return !this._tickInterval && (this._tickCallCount = 0, this._tickInterval = self.setInterval(this._boundTick, e), !0)
                }, r.clearInterval = function() {
                    return !!this._tickInterval && (self.clearInterval(this._tickInterval), this._tickInterval = null, !0)
                }, r.clearNextTick = function() {
                    return !!this._tickTimer && (self.clearTimeout(this._tickTimer), this._tickTimer = null, !0)
                }, r.tick = function() {
                    this._tickCallCount++, 1 === this._tickCallCount && (this.doTick(), this._tickCallCount > 1 && this.tickImmediate(), this._tickCallCount = 0)
                }, r.tickImmediate = function() {
                    this.clearNextTick(), this._tickTimer = self.setTimeout(this._boundTick, 0)
                }, r.doTick = function() {}, t
            }(N),
            nr = function(e, t, r, i, n, a) {
                void 0 === i && (i = 0), void 0 === n && (n = -1), void 0 === a && (a = !1), this.level = void 0, this.sn = void 0, this.part = void 0, this.id = void 0, this.size = void 0, this.partial = void 0, this.transmuxing = {
                    start: 0,
                    executeStart: 0,
                    executeEnd: 0,
                    end: 0
                }, this.buffering = {
                    audio: {
                        start: 0,
                        executeStart: 0,
                        executeEnd: 0,
                        end: 0
                    },
                    video: {
                        start: 0,
                        executeStart: 0,
                        executeEnd: 0,
                        end: 0
                    },
                    audiovideo: {
                        start: 0,
                        executeStart: 0,
                        executeEnd: 0,
                        end: 0
                    }
                }, this.level = e, this.sn = t, this.id = r, this.size = i, this.part = n, this.partial = a
            },
            ar = {
                length: 0,
                start: function() {
                    return 0
                },
                end: function() {
                    return 0
                }
            },
            sr = function() {
                function e() {}
                return e.isBuffered = function(t, r) {
                    if (t)
                        for (var i = e.getBuffered(t), n = i.length; n--;)
                            if (r >= i.start(n) && r <= i.end(n)) return !0;
                    return !1
                }, e.bufferedRanges = function(t) {
                    if (t) {
                        var r = e.getBuffered(t);
                        return e.timeRangesToArray(r)
                    }
                    return []
                }, e.timeRangesToArray = function(e) {
                    for (var t = [], r = 0; r < e.length; r++) t.push({
                        start: e.start(r),
                        end: e.end(r)
                    });
                    return t
                }, e.bufferInfo = function(t, r, i) {
                    if (t) {
                        var n = e.bufferedRanges(t);
                        if (n.length) return e.bufferedInfo(n, r, i)
                    }
                    return {
                        len: 0,
                        start: r,
                        end: r,
                        bufferedIndex: -1
                    }
                }, e.bufferedInfo = function(e, t, r) {
                    t = Math.max(0, t), e.length > 1 && e.sort((function(e, t) {
                        return e.start - t.start || t.end - e.end
                    }));
                    var i = -1,
                        n = [];
                    if (r)
                        for (var a = 0; a < e.length; a++) {
                            t >= e[a].start && t <= e[a].end && (i = a);
                            var s = n.length;
                            if (s) {
                                var o = n[s - 1].end;
                                e[a].start - o < r ? e[a].end > o && (n[s - 1].end = e[a].end) : n.push(e[a])
                            } else n.push(e[a])
                        } else n = e;
                    for (var l, u = 0, d = t, h = t, f = 0; f < n.length; f++) {
                        var c = n[f].start,
                            g = n[f].end;
                        if (-1 === i && t >= c && t <= g && (i = f), t + r >= c && t < g) d = c, u = (h = g) - t;
                        else if (t + r < c) {
                            l = c;
                            break
                        }
                    }
                    return {
                        len: u,
                        start: d || 0,
                        end: h || 0,
                        nextStart: l,
                        buffered: e,
                        bufferedIndex: i
                    }
                }, e.getBuffered = function(e) {
                    try {
                        return e.buffered || ar
                    } catch (e) {
                        return Y.log("failed to get media.buffered", e), ar
                    }
                }, e
            }(),
            or = /\{\$([a-zA-Z0-9-_]+)\}/g;

        function lr(e) {
            return or.test(e)
        }

        function ur(e, t) {
            if (null !== e.variableList || e.hasVariableRefs) {
                var r = e.variableList;
                return t.replace(or, (function(t) {
                    var i = t.substring(2, t.length - 1),
                        n = null == r ? void 0 : r[i];
                    return void 0 === n ? (e.playlistParsingError || (e.playlistParsingError = new Error('Missing preceding EXT-X-DEFINE tag for Variable Reference: "' + i + '"')), t) : n
                }))
            }
            return t
        }

        function dr(e, t, r) {
            var i, n, a = e.variableList;
            if (a || (e.variableList = a = {}), "QUERYPARAM" in t) {
                i = t.QUERYPARAM;
                try {
                    var s = new self.URL(r).searchParams;
                    if (!s.has(i)) throw new Error('"' + i + '" does not match any query parameter in URI: "' + r + '"');
                    n = s.get(i)
                } catch (t) {
                    e.playlistParsingError || (e.playlistParsingError = new Error("EXT-X-DEFINE QUERYPARAM: " + t.message))
                }
            } else i = t.NAME, n = t.VALUE;
            i in a ? e.playlistParsingError || (e.playlistParsingError = new Error('EXT-X-DEFINE duplicate Variable Name declarations: "' + i + '"')) : a[i] = n || ""
        }

        function hr(e, t, r) {
            var i = t.IMPORT;
            if (r && i in r) {
                var n = e.variableList;
                n || (e.variableList = n = {}), n[i] = r[i]
            } else e.playlistParsingError || (e.playlistParsingError = new Error('EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "' + i + '"'))
        }
        var fr = /^(\d+)x(\d+)$/,
            cr = /(.+?)=(".*?"|.*?)(?:,|$)/g,
            gr = function() {
                function e(t, r) {
                    "string" == typeof t && (t = e.parseAttrList(t, r)), a(this, t)
                }
                var t = e.prototype;
                return t.decimalInteger = function(e) {
                    var t = parseInt(this[e], 10);
                    return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t
                }, t.hexadecimalInteger = function(e) {
                    if (this[e]) {
                        var t = (this[e] || "0x").slice(2);
                        t = (1 & t.length ? "0" : "") + t;
                        for (var r = new Uint8Array(t.length / 2), i = 0; i < t.length / 2; i++) r[i] = parseInt(t.slice(2 * i, 2 * i + 2), 16);
                        return r
                    }
                    return null
                }, t.hexadecimalIntegerAsNumber = function(e) {
                    var t = parseInt(this[e], 16);
                    return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t
                }, t.decimalFloatingPoint = function(e) {
                    return parseFloat(this[e])
                }, t.optionalFloat = function(e, t) {
                    var r = this[e];
                    return r ? parseFloat(r) : t
                }, t.enumeratedString = function(e) {
                    return this[e]
                }, t.enumeratedStringList = function(e, t) {
                    var r = this[e];
                    return (r ? r.split(/[ ,]+/) : []).reduce((function(e, t) {
                        return e[t.toLowerCase()] = !0, e
                    }), t)
                }, t.bool = function(e) {
                    return "YES" === this[e]
                }, t.decimalResolution = function(e) {
                    var t = fr.exec(this[e]);
                    if (null !== t) return {
                        width: parseInt(t[1], 10),
                        height: parseInt(t[2], 10)
                    }
                }, e.parseAttrList = function(e, t) {
                    var r, i = {};
                    for (cr.lastIndex = 0; null !== (r = cr.exec(e));) {
                        var n = r[1].trim(),
                            a = r[2],
                            s = 0 === a.indexOf('"') && a.lastIndexOf('"') === a.length - 1,
                            o = !1;
                        if (s) a = a.slice(1, -1);
                        else switch (n) {
                            case "IV":
                            case "SCTE35-CMD":
                            case "SCTE35-IN":
                            case "SCTE35-OUT":
                                o = !0
                        }
                        if (t && (s || o)) a = ur(t, a);
                        else if (!o && !s) switch (n) {
                            case "CLOSED-CAPTIONS":
                                if ("NONE" === a) break;
                            case "ALLOWED-CPC":
                            case "CLASS":
                            case "ASSOC-LANGUAGE":
                            case "AUDIO":
                            case "BYTERANGE":
                            case "CHANNELS":
                            case "CHARACTERISTICS":
                            case "CODECS":
                            case "DATA-ID":
                            case "END-DATE":
                            case "GROUP-ID":
                            case "ID":
                            case "IMPORT":
                            case "INSTREAM-ID":
                            case "KEYFORMAT":
                            case "KEYFORMATVERSIONS":
                            case "LANGUAGE":
                            case "NAME":
                            case "PATHWAY-ID":
                            case "QUERYPARAM":
                            case "RECENTLY-REMOVED-DATERANGES":
                            case "SERVER-URI":
                            case "STABLE-RENDITION-ID":
                            case "STABLE-VARIANT-ID":
                            case "START-DATE":
                            case "SUBTITLES":
                            case "SUPPLEMENTAL-CODECS":
                            case "URI":
                            case "VALUE":
                            case "VIDEO":
                            case "X-ASSET-LIST":
                            case "X-ASSET-URI":
                                Y.warn(e + ": attribute " + n + " is missing quotes")
                        }
                        i[n] = a
                    }
                    return i
                }, i(e, [{
                    key: "clientAttrs",
                    get: function() {
                        return Object.keys(this).filter((function(e) {
                            return "X-" === e.substring(0, 2)
                        }))
                    }
                }])
            }();

        function vr(e) {
            return "SCTE35-OUT" === e || "SCTE35-IN" === e || "SCTE35-CMD" === e
        }
        var mr = function() {
                return i((function(e, t, r) {
                    var i;
                    if (void 0 === r && (r = 0), this.attr = void 0, this.tagAnchor = void 0, this.tagOrder = void 0, this._startDate = void 0, this._endDate = void 0, this._dateAtEnd = void 0, this._cue = void 0, this._badValueForSameId = void 0, this.tagAnchor = (null == t ? void 0 : t.tagAnchor) || null, this.tagOrder = null != (i = null == t ? void 0 : t.tagOrder) ? i : r, t) {
                        var n = t.attr;
                        for (var s in n)
                            if (Object.prototype.hasOwnProperty.call(e, s) && e[s] !== n[s]) {
                                Y.warn('DATERANGE tag attribute: "' + s + '" does not match for tags with ID: "' + e.ID + '"'), this._badValueForSameId = s;
                                break
                            }
                        e = a(new gr({}), n, e)
                    }
                    if (this.attr = e, t ? (this._startDate = t._startDate, this._cue = t._cue, this._endDate = t._endDate, this._dateAtEnd = t._dateAtEnd) : this._startDate = new Date(e["START-DATE"]), "END-DATE" in this.attr) {
                        var o = (null == t ? void 0 : t.endDate) || new Date(this.attr["END-DATE"]);
                        A(o.getTime()) && (this._endDate = o)
                    }
                }), [{
                    key: "id",
                    get: function() {
                        return this.attr.ID
                    }
                }, {
                    key: "class",
                    get: function() {
                        return this.attr.CLASS
                    }
                }, {
                    key: "cue",
                    get: function() {
                        var e = this._cue;
                        return void 0 === e ? this._cue = this.attr.enumeratedStringList(this.attr.CUE ? "CUE" : "X-CUE", {
                            pre: !1,
                            post: !1,
                            once: !1
                        }) : e
                    }
                }, {
                    key: "startTime",
                    get: function() {
                        var e = this.tagAnchor;
                        return null === e || null === e.programDateTime ? (Y.warn('Expected tagAnchor Fragment with PDT set for DateRange "' + this.id + '": ' + e), NaN) : e.start + (this.startDate.getTime() - e.programDateTime) / 1e3
                    }
                }, {
                    key: "startDate",
                    get: function() {
                        return this._startDate
                    }
                }, {
                    key: "endDate",
                    get: function() {
                        var e = this._endDate || this._dateAtEnd;
                        if (e) return e;
                        var t = this.duration;
                        return null !== t ? this._dateAtEnd = new Date(this._startDate.getTime() + 1e3 * t) : null
                    }
                }, {
                    key: "duration",
                    get: function() {
                        if ("DURATION" in this.attr) {
                            var e = this.attr.decimalFloatingPoint("DURATION");
                            if (A(e)) return e
                        } else if (this._endDate) return (this._endDate.getTime() - this._startDate.getTime()) / 1e3;
                        return null
                    }
                }, {
                    key: "plannedDuration",
                    get: function() {
                        return "PLANNED-DURATION" in this.attr ? this.attr.decimalFloatingPoint("PLANNED-DURATION") : null
                    }
                }, {
                    key: "endOnNext",
                    get: function() {
                        return this.attr.bool("END-ON-NEXT")
                    }
                }, {
                    key: "isInterstitial",
                    get: function() {
                        return "com.apple.hls.interstitial" === this.class
                    }
                }, {
                    key: "isValid",
                    get: function() {
                        return !!this.id && !this._badValueForSameId && A(this.startDate.getTime()) && (null === this.duration || this.duration >= 0) && (!this.endOnNext || !!this.class) && (!this.attr.CUE || !this.cue.pre && !this.cue.post || this.cue.pre !== this.cue.post) && (!this.isInterstitial || "X-ASSET-URI" in this.attr || "X-ASSET-LIST" in this.attr)
                    }
                }])
            }(),
            pr = function() {
                function e(e) {
                    this.PTSKnown = !1, this.alignedSliding = !1, this.averagetargetduration = void 0, this.endCC = 0, this.endSN = 0, this.fragments = void 0, this.fragmentHint = void 0, this.partList = null, this.dateRanges = void 0, this.dateRangeTagCount = 0, this.live = !0, this.requestScheduled = -1, this.ageHeader = 0, this.advancedDateTime = void 0, this.updated = !0, this.advanced = !0, this.misses = 0, this.startCC = 0, this.startSN = 0, this.startTimeOffset = null, this.targetduration = 0, this.totalduration = 0, this.type = null, this.url = void 0, this.m3u8 = "", this.version = null, this.canBlockReload = !1, this.canSkipUntil = 0, this.canSkipDateRanges = !1, this.skippedSegments = 0, this.recentlyRemovedDateranges = void 0, this.partHoldBack = 0, this.holdBack = 0, this.partTarget = 0, this.preloadHint = void 0, this.renditionReports = void 0, this.tuneInGoal = 0, this.deltaUpdateFailed = void 0, this.driftStartTime = 0, this.driftEndTime = 0, this.driftStart = 0, this.driftEnd = 0, this.encryptedFragments = void 0, this.playlistParsingError = null, this.variableList = null, this.hasVariableRefs = !1, this.appliedTimelineOffset = void 0, this.fragments = [], this.encryptedFragments = [], this.dateRanges = {}, this.url = e
                }
                var t = e.prototype;
                return t.reloaded = function(e) {
                    if (!e) return this.advanced = !0, void(this.updated = !0);
                    var t = this.lastPartSn - e.lastPartSn,
                        r = this.lastPartIndex - e.lastPartIndex;
                    this.updated = this.endSN !== e.endSN || !!r || !!t || !this.live, this.advanced = this.endSN > e.endSN || t > 0 || 0 === t && r > 0, this.updated || this.advanced ? this.misses = Math.floor(.6 * e.misses) : this.misses = e.misses + 1
                }, t.hasKey = function(e) {
                    return this.encryptedFragments.some((function(t) {
                        var r = t.decryptdata;
                        return r || (t.setKeyFormat(e.keyFormat), r = t.decryptdata), !!r && e.matches(r)
                    }))
                }, i(e, [{
                    key: "hasProgramDateTime",
                    get: function() {
                        return !!this.fragments.length && A(this.fragments[this.fragments.length - 1].programDateTime)
                    }
                }, {
                    key: "levelTargetDuration",
                    get: function() {
                        return this.averagetargetduration || this.targetduration || 10
                    }
                }, {
                    key: "drift",
                    get: function() {
                        var e = this.driftEndTime - this.driftStartTime;
                        return e > 0 ? 1e3 * (this.driftEnd - this.driftStart) / e : 1
                    }
                }, {
                    key: "edge",
                    get: function() {
                        return this.partEnd || this.fragmentEnd
                    }
                }, {
                    key: "partEnd",
                    get: function() {
                        var e;
                        return null != (e = this.partList) && e.length ? this.partList[this.partList.length - 1].end : this.fragmentEnd
                    }
                }, {
                    key: "fragmentEnd",
                    get: function() {
                        return this.fragments.length ? this.fragments[this.fragments.length - 1].end : 0
                    }
                }, {
                    key: "fragmentStart",
                    get: function() {
                        return this.fragments.length ? this.fragments[0].start : 0
                    }
                }, {
                    key: "age",
                    get: function() {
                        return this.advancedDateTime ? Math.max(Date.now() - this.advancedDateTime, 0) / 1e3 : 0
                    }
                }, {
                    key: "lastPartIndex",
                    get: function() {
                        var e;
                        return null != (e = this.partList) && e.length ? this.partList[this.partList.length - 1].index : -1
                    }
                }, {
                    key: "maxPartIndex",
                    get: function() {
                        var e = this.partList;
                        if (e) {
                            var t = this.lastPartIndex;
                            if (-1 !== t) {
                                for (var r = e.length; r--;)
                                    if (e[r].index > t) return e[r].index;
                                return t
                            }
                        }
                        return 0
                    }
                }, {
                    key: "lastPartSn",
                    get: function() {
                        var e;
                        return null != (e = this.partList) && e.length ? this.partList[this.partList.length - 1].fragment.sn : this.endSN
                    }
                }, {
                    key: "expired",
                    get: function() {
                        if (this.live && this.age && this.misses < 3) {
                            var e = this.partEnd - this.fragmentStart;
                            return this.age > Math.max(e, this.totalduration) + this.levelTargetDuration
                        }
                        return !1
                    }
                }])
            }();

        function yr(e, t) {
            return e.length === t.length && !e.some((function(e, r) {
                return e !== t[r]
            }))
        }

        function Er(e, t) {
            return !e && !t || !(!e || !t) && yr(e, t)
        }

        function Tr(e) {
            return "AES-128" === e || "AES-256" === e || "AES-256-CTR" === e
        }

        function Sr(e) {
            switch (e) {
                case "AES-128":
                case "AES-256":
                    return jt;
                case "AES-256-CTR":
                    return qt;
                default:
                    throw new Error("invalid full segment method " + e)
            }
        }

        function Ar(e) {
            return Uint8Array.from(atob(e), (function(e) {
                return e.charCodeAt(0)
            }))
        }

        function Lr(e) {
            return Uint8Array.from(unescape(encodeURIComponent(e)), (function(e) {
                return e.charCodeAt(0)
            }))
        }

        function Rr(e) {
            var t, r, i = e.split(":"),
                n = null;
            if ("data" === i[0] && 2 === i.length) {
                var a = i[1].split(";"),
                    s = a[a.length - 1].split(",");
                if (2 === s.length) {
                    var o = "base64" === s[0],
                        l = s[1];
                    o ? (a.splice(-1, 1), n = Ar(l)) : (t = Lr(l).subarray(0, 16), (r = new Uint8Array(16)).set(t, 16 - t.length), n = r)
                }
            }
            return n
        }
        var Ir = "undefined" != typeof self ? self : void 0,
            kr = {
                CLEARKEY: "org.w3.clearkey",
                FAIRPLAY: "com.apple.fps",
                PLAYREADY: "com.microsoft.playready",
                WIDEVINE: "com.widevine.alpha"
            },
            br = "org.w3.clearkey",
            Dr = "com.apple.streamingkeydelivery",
            _r = "com.microsoft.playready",
            Pr = "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";

        function Cr(e) {
            switch (e) {
                case Dr:
                    return kr.FAIRPLAY;
                case _r:
                    return kr.PLAYREADY;
                case Pr:
                    return kr.WIDEVINE;
                case br:
                    return kr.CLEARKEY
            }
        }

        function wr(e) {
            switch (e) {
                case kr.FAIRPLAY:
                    return Dr;
                case kr.PLAYREADY:
                    return _r;
                case kr.WIDEVINE:
                    return Pr;
                case kr.CLEARKEY:
                    return br
            }
        }

        function Or(e) {
            var t = e.drmSystems,
                r = e.widevineLicenseUrl,
                i = t ? [kr.FAIRPLAY, kr.WIDEVINE, kr.PLAYREADY, kr.CLEARKEY].filter((function(e) {
                    return !!t[e]
                })) : [];
            return !i[kr.WIDEVINE] && r && i.push(kr.WIDEVINE), i
        }
        var xr, Mr = null != Ir && null != (xr = Ir.navigator) && xr.requestMediaKeySystemAccess ? self.navigator.requestMediaKeySystemAccess.bind(self.navigator) : null,
            Fr = {},
            Nr = function() {
                function e(e, t, r, i, n, a) {
                    void 0 === i && (i = [1]), void 0 === n && (n = null), this.uri = void 0, this.method = void 0, this.keyFormat = void 0, this.keyFormatVersions = void 0, this.encrypted = void 0, this.isCommonEncryption = void 0, this.iv = null, this.key = null, this.keyId = null, this.pssh = null, this.method = e, this.uri = t, this.keyFormat = r, this.keyFormatVersions = i, this.iv = n, this.encrypted = !!e && "NONE" !== e, this.isCommonEncryption = this.encrypted && !Tr(e), null != a && a.startsWith("0x") && (this.keyId = new Uint8Array(Q(a)))
                }
                e.clearKeyUriToKeyIdMap = function() {
                    Fr = {}
                };
                var t = e.prototype;
                return t.matches = function(e) {
                    return e.uri === this.uri && e.method === this.method && e.encrypted === this.encrypted && e.keyFormat === this.keyFormat && yr(e.keyFormatVersions, this.keyFormatVersions) && Er(e.iv, this.iv) && Er(e.keyId, this.keyId)
                }, t.isSupported = function() {
                    if (this.method) {
                        if (Tr(this.method) || "NONE" === this.method) return !0;
                        if ("identity" === this.keyFormat) return "SAMPLE-AES" === this.method;
                        switch (this.keyFormat) {
                            case Dr:
                            case Pr:
                            case _r:
                            case br:
                                return -1 !== ["SAMPLE-AES", "SAMPLE-AES-CENC", "SAMPLE-AES-CTR"].indexOf(this.method)
                        }
                    }
                    return !1
                }, t.getDecryptData = function(t) {
                    if (!this.encrypted || !this.uri) return null;
                    if (Tr(this.method) && this.uri && !this.iv) {
                        "number" != typeof t && (Y.warn('missing IV for initialization segment with method="' + this.method + '" - compliance issue'), t = 0);
                        var r = function(e) {
                            for (var t = new Uint8Array(16), r = 12; r < 16; r++) t[r] = e >> 8 * (15 - r) & 255;
                            return t
                        }(t);
                        return new e(this.method, this.uri, "identity", this.keyFormatVersions, r)
                    }
                    if (this.pssh && this.keyId) return this;
                    var i = Rr(this.uri);
                    if (i) switch (this.keyFormat) {
                        case Pr:
                            if (this.pssh = i, !this.keyId && i.length >= 22) {
                                var n = i.length - 22;
                                this.keyId = i.subarray(n, n + 16)
                            }
                            break;
                        case _r:
                            var a = new Uint8Array([154, 4, 240, 121, 152, 64, 66, 134, 171, 146, 230, 91, 224, 136, 95, 149]);
                            this.pssh = De(a, 0, i), this.keyId = function(e) {
                                var t = new Uint16Array(e.buffer, e.byteOffset, e.byteLength / 2),
                                    r = String.fromCharCode.apply(null, Array.from(t)),
                                    i = r.substring(r.indexOf("<"), r.length),
                                    n = (new DOMParser).parseFromString(i, "text/xml").getElementsByTagName("KID")[0];
                                if (n) {
                                    var a = n.childNodes[0] ? n.childNodes[0].nodeValue : n.getAttribute("VALUE");
                                    if (a) {
                                        var s = Ar(a).subarray(0, 16);
                                        return function(e) {
                                            var t = function(e, t, r) {
                                                var i = e[t];
                                                e[t] = e[r], e[r] = i
                                            };
                                            t(e, 0, 3), t(e, 1, 2), t(e, 4, 5), t(e, 6, 7)
                                        }(s), s
                                    }
                                }
                                return null
                            }(i);
                            break;
                        default:
                            var s = i.subarray(0, 16);
                            if (16 !== s.length) {
                                var o = new Uint8Array(16);
                                o.set(s, 16 - s.length), s = o
                            }
                            this.keyId = s
                    }
                    if (!this.keyId || 16 !== this.keyId.byteLength) {
                        var l = Fr[this.uri];
                        if (!l) {
                            var u = Object.keys(Fr).length % Number.MAX_SAFE_INTEGER;
                            l = new Uint8Array(16), new DataView(l.buffer, 12, 4).setUint32(0, u), Fr[this.uri] = l
                        }
                        this.keyId = l
                    }
                    return this
                }, e
            }(),
            Ur = /#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,
            Br = /#EXT-X-MEDIA:(.*)/g,
            Gr = /^#EXT(?:INF|-X-TARGETDURATION):/m,
            Kr = new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source, /(?!#) *(\S[^\r\n]*)/.source, /#.*/.source].join("|"), "g"),
            Vr = new RegExp([/#EXT-X-(PROGRAM-DATE-TIME|BYTERANGE|DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\r?\n?/.source].join("|")),
            Hr = function() {
                function e() {}
                return e.findGroup = function(e, t) {
                    for (var r = 0; r < e.length; r++) {
                        var i = e[r];
                        if (i.id === t) return i
                    }
                }, e.resolve = function(e, t) {
                    return S.buildAbsoluteURL(t, e, {
                        alwaysNormalize: !0
                    })
                }, e.isMediaPlaylist = function(e) {
                    return Gr.test(e)
                }, e.parseMasterPlaylist = function(t, r) {
                    var i, n = {
                            contentSteering: null,
                            levels: [],
                            playlistParsingError: null,
                            sessionData: null,
                            sessionKeys: null,
                            startTimeOffset: null,
                            variableList: null,
                            hasVariableRefs: lr(t)
                        },
                        a = [];
                    for (Ur.lastIndex = 0; null != (i = Ur.exec(t));)
                        if (i[1]) {
                            var s, o = new gr(i[1], n),
                                l = ur(n, i[2]),
                                u = {
                                    attrs: o,
                                    bitrate: o.decimalInteger("BANDWIDTH") || o.decimalInteger("AVERAGE-BANDWIDTH"),
                                    name: o.NAME,
                                    url: e.resolve(l, r)
                                },
                                d = o.decimalResolution("RESOLUTION");
                            d && (u.width = d.width, u.height = d.height), Xr(o.CODECS, u);
                            var h = o["SUPPLEMENTAL-CODECS"];
                            h && (u.supplemental = {}, Xr(h, u.supplemental)), null != (s = u.unknownCodecs) && s.length || a.push(u), n.levels.push(u)
                        } else if (i[3]) {
                        var f = i[3],
                            c = i[4];
                        switch (f) {
                            case "SESSION-DATA":
                                var g = new gr(c, n),
                                    v = g["DATA-ID"];
                                v && (null === n.sessionData && (n.sessionData = {}), n.sessionData[v] = g);
                                break;
                            case "SESSION-KEY":
                                var m = jr(c, r, n);
                                m.encrypted && m.isSupported() ? (null === n.sessionKeys && (n.sessionKeys = []), n.sessionKeys.push(m)) : Y.warn('[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "' + c + '"');
                                break;
                            case "DEFINE":
                                dr(n, new gr(c, n), r);
                                break;
                            case "CONTENT-STEERING":
                                var p = new gr(c, n);
                                n.contentSteering = {
                                    uri: e.resolve(p["SERVER-URI"], r),
                                    pathwayId: p["PATHWAY-ID"] || "."
                                };
                                break;
                            case "START":
                                n.startTimeOffset = qr(c)
                        }
                    }
                    var y = a.length > 0 && a.length < n.levels.length;
                    return n.levels = y ? a : n.levels, 0 === n.levels.length && (n.playlistParsingError = new Error("no levels found in manifest")), n
                }, e.parseMasterPlaylistMedia = function(t, r, i) {
                    var n, a = {},
                        s = i.levels,
                        o = {
                            AUDIO: s.map((function(e) {
                                return {
                                    id: e.attrs.AUDIO,
                                    audioCodec: e.audioCodec
                                }
                            })),
                            SUBTITLES: s.map((function(e) {
                                return {
                                    id: e.attrs.SUBTITLES,
                                    textCodec: e.textCodec
                                }
                            })),
                            "CLOSED-CAPTIONS": []
                        },
                        l = 0;
                    for (Br.lastIndex = 0; null !== (n = Br.exec(t));) {
                        var u = new gr(n[1], i),
                            d = u.TYPE;
                        if (d) {
                            var h = o[d],
                                f = a[d] || [];
                            a[d] = f;
                            var c = u.LANGUAGE,
                                g = u["ASSOC-LANGUAGE"],
                                v = u.CHANNELS,
                                m = u.CHARACTERISTICS,
                                p = u["INSTREAM-ID"],
                                y = {
                                    attrs: u,
                                    bitrate: 0,
                                    id: l++,
                                    groupId: u["GROUP-ID"] || "",
                                    name: u.NAME || c || "",
                                    type: d,
                                    default: u.bool("DEFAULT"),
                                    autoselect: u.bool("AUTOSELECT"),
                                    forced: u.bool("FORCED"),
                                    lang: c,
                                    url: u.URI ? e.resolve(u.URI, r) : ""
                                };
                            if (g && (y.assocLang = g), v && (y.channels = v), m && (y.characteristics = m), p && (y.instreamId = p), null != h && h.length) {
                                var E = e.findGroup(h, y.groupId) || h[0];
                                Qr(y, E, "audioCodec"), Qr(y, E, "textCodec")
                            }
                            f.push(y)
                        }
                    }
                    return a
                }, e.parseLevelPlaylist = function(e, t, r, i, n, s) {
                    var o, l, u, d, h, f = {
                            url: t
                        },
                        c = new pr(t),
                        g = c.fragments,
                        v = [],
                        m = null,
                        p = 0,
                        y = 0,
                        E = 0,
                        T = 0,
                        S = 0,
                        L = null,
                        R = new re(i, f),
                        I = -1,
                        k = !1,
                        b = null;
                    if (Kr.lastIndex = 0, c.m3u8 = e, c.hasVariableRefs = lr(e), "#EXTM3U" !== (null == (o = Kr.exec(e)) ? void 0 : o[0])) return c.playlistParsingError = new Error("Missing format identifier #EXTM3U"), c;
                    for (; null !== (l = Kr.exec(e));) {
                        k && (k = !1, (R = new re(i, f)).playlistOffset = E, R.setStart(E), R.sn = p, R.cc = T, S && (R.bitrate = S), R.level = r, m && (R.initSegment = m, m.rawProgramDateTime && (R.rawProgramDateTime = m.rawProgramDateTime, m.rawProgramDateTime = null), b && (R.setByteRange(b), b = null)));
                        var D = l[1];
                        if (D) {
                            R.duration = parseFloat(D);
                            var _ = (" " + l[2]).slice(1);
                            R.title = _ || null, R.tagList.push(_ ? ["INF", D, _] : ["INF", D])
                        } else if (l[3]) {
                            if (A(R.duration)) {
                                R.playlistOffset = E, R.setStart(E), d && Zr(R, d, c), R.sn = p, R.level = r, R.cc = T, g.push(R);
                                var P = (" " + l[3]).slice(1);
                                R.relurl = ur(c, P), zr(R, L, v), L = R, E += R.duration, p++, y = 0, k = !0
                            }
                        } else {
                            if (!(l = l[0].match(Vr))) {
                                Y.warn("No matches on slow regex match for level playlist!");
                                continue
                            }
                            for (u = 1; u < l.length && void 0 === l[u]; u++);
                            var C = (" " + l[u]).slice(1),
                                w = (" " + l[u + 1]).slice(1),
                                O = l[u + 2] ? (" " + l[u + 2]).slice(1) : null;
                            switch (C) {
                                case "BYTERANGE":
                                    L ? R.setByteRange(w, L) : R.setByteRange(w);
                                    break;
                                case "PROGRAM-DATE-TIME":
                                    R.rawProgramDateTime = w, R.tagList.push(["PROGRAM-DATE-TIME", w]), -1 === I && (I = g.length);
                                    break;
                                case "PLAYLIST-TYPE":
                                    c.type && Jr(c, C, l), c.type = w.toUpperCase();
                                    break;
                                case "MEDIA-SEQUENCE":
                                    0 !== c.startSN ? Jr(c, C, l) : g.length > 0 && ei(c, C, l), p = c.startSN = parseInt(w);
                                    break;
                                case "SKIP":
                                    c.skippedSegments && Jr(c, C, l);
                                    var x = new gr(w, c),
                                        M = x.decimalInteger("SKIPPED-SEGMENTS");
                                    if (A(M)) {
                                        c.skippedSegments += M;
                                        for (var F = M; F--;) g.push(null);
                                        p += M
                                    }
                                    var N = x.enumeratedString("RECENTLY-REMOVED-DATERANGES");
                                    N && (c.recentlyRemovedDateranges = (c.recentlyRemovedDateranges || []).concat(N.split("\t")));
                                    break;
                                case "TARGETDURATION":
                                    0 !== c.targetduration && Jr(c, C, l), c.targetduration = Math.max(parseInt(w), 1);
                                    break;
                                case "VERSION":
                                    null !== c.version && Jr(c, C, l), c.version = parseInt(w);
                                    break;
                                case "INDEPENDENT-SEGMENTS":
                                    break;
                                case "ENDLIST":
                                    c.live || Jr(c, C, l), c.live = !1;
                                    break;
                                case "#":
                                    (w || O) && R.tagList.push(O ? [w, O] : [w]);
                                    break;
                                case "DISCONTINUITY":
                                    T++, R.tagList.push(["DIS"]);
                                    break;
                                case "GAP":
                                    R.gap = !0, R.tagList.push([C]);
                                    break;
                                case "BITRATE":
                                    R.tagList.push([C, w]), S = 1e3 * parseInt(w), A(S) ? R.bitrate = S : S = 0;
                                    break;
                                case "DATERANGE":
                                    var U = new gr(w, c),
                                        B = new mr(U, c.dateRanges[U.ID], c.dateRangeTagCount);
                                    c.dateRangeTagCount++, B.isValid || c.skippedSegments ? c.dateRanges[B.id] = B : Y.warn('Ignoring invalid DATERANGE tag: "' + w + '"'), R.tagList.push(["EXT-X-DATERANGE", w]);
                                    break;
                                case "DEFINE":
                                    var G = new gr(w, c);
                                    "IMPORT" in G ? hr(c, G, s) : dr(c, G, t);
                                    break;
                                case "DISCONTINUITY-SEQUENCE":
                                    0 !== c.startCC ? Jr(c, C, l) : g.length > 0 && ei(c, C, l), c.startCC = T = parseInt(w);
                                    break;
                                case "KEY":
                                    var K = jr(w, t, c);
                                    if (K.isSupported()) {
                                        if ("NONE" === K.method) {
                                            d = void 0;
                                            break
                                        }
                                        d || (d = {});
                                        var V = d[K.keyFormat];
                                        null != V && V.matches(K) || (V && (d = a({}, d)), d[K.keyFormat] = K)
                                    } else Y.warn('[Keys] Ignoring invalid EXT-X-KEY tag: "' + w + '"');
                                    break;
                                case "START":
                                    c.startTimeOffset = qr(w);
                                    break;
                                case "MAP":
                                    var H = new gr(w, c);
                                    if (R.duration) {
                                        var W = new re(i, f);
                                        $r(W, H, r, d), m = W, R.initSegment = m, m.rawProgramDateTime && !R.rawProgramDateTime && (R.rawProgramDateTime = m.rawProgramDateTime)
                                    } else {
                                        var j = R.byteRangeEndOffset;
                                        if (j) {
                                            var q = R.byteRangeStartOffset;
                                            b = j - q + "@" + q
                                        } else b = null;
                                        $r(R, H, r, d), m = R, k = !0
                                    }
                                    m.cc = T;
                                    break;
                                case "SERVER-CONTROL":
                                    h && Jr(c, C, l), h = new gr(w), c.canBlockReload = h.bool("CAN-BLOCK-RELOAD"), c.canSkipUntil = h.optionalFloat("CAN-SKIP-UNTIL", 0), c.canSkipDateRanges = c.canSkipUntil > 0 && h.bool("CAN-SKIP-DATERANGES"), c.partHoldBack = h.optionalFloat("PART-HOLD-BACK", 0), c.holdBack = h.optionalFloat("HOLD-BACK", 0);
                                    break;
                                case "PART-INF":
                                    c.partTarget && Jr(c, C, l);
                                    var X = new gr(w);
                                    c.partTarget = X.decimalFloatingPoint("PART-TARGET");
                                    break;
                                case "PART":
                                    var Q = c.partList;
                                    Q || (Q = c.partList = []);
                                    var z = y > 0 ? Q[Q.length - 1] : void 0,
                                        $ = y++,
                                        Z = new gr(w, c),
                                        J = new ie(Z, R, f, $, z);
                                    Q.push(J), R.duration += J.duration;
                                    break;
                                case "PRELOAD-HINT":
                                    var ee = new gr(w, c);
                                    c.preloadHint = ee;
                                    break;
                                case "RENDITION-REPORT":
                                    var te = new gr(w, c);
                                    c.renditionReports = c.renditionReports || [], c.renditionReports.push(te);
                                    break;
                                default:
                                    Y.warn("line parsed but not handled: " + l)
                            }
                        }
                    }
                    L && !L.relurl ? (g.pop(), E -= L.duration, c.partList && (c.fragmentHint = L)) : c.partList && (zr(R, L, v), R.cc = T, c.fragmentHint = R, d && Zr(R, d, c)), c.targetduration || (c.playlistParsingError = new Error("#EXT-X-TARGETDURATION is required"));
                    var ne = g.length,
                        ae = g[0],
                        se = g[ne - 1];
                    if ((E += c.skippedSegments * c.targetduration) > 0 && ne && se) {
                        c.averagetargetduration = E / ne;
                        var oe = se.sn;
                        c.endSN = "initSegment" !== oe ? oe : 0, c.live || (se.endList = !0), I > 0 && (function(e, t) {
                            for (var r = e[t], i = t; i--;) {
                                var n = e[i];
                                if (!n) return;
                                n.programDateTime = r.programDateTime - 1e3 * n.duration, r = n
                            }
                        }(g, I), ae && v.unshift(ae))
                    }
                    return c.fragmentHint && (E += c.fragmentHint.duration), c.totalduration = E, v.length && c.dateRangeTagCount && ae && Yr(v, c), c.endCC = T, c
                }, e
            }();

        function Yr(e, t) {
            var r = e.length;
            if (!r) {
                if (!t.hasProgramDateTime) return;
                var i = t.fragments[t.fragments.length - 1];
                e.push(i), r++
            }
            for (var n = e[r - 1], a = t.live ? 1 / 0 : t.totalduration, s = Object.keys(t.dateRanges), o = s.length; o--;) {
                var l = t.dateRanges[s[o]],
                    u = l.startDate.getTime();
                l.tagAnchor = n.ref;
                for (var d = r; d--;) {
                    var h;
                    if ((null == (h = e[d]) ? void 0 : h.sn) < t.startSN) break;
                    var f = Wr(t, u, e, d, a);
                    if (-1 !== f) {
                        l.tagAnchor = t.fragments[f].ref;
                        break
                    }
                }
            }
        }

        function Wr(e, t, r, i, n) {
            var a = r[i];
            if (a) {
                var s, o = a.programDateTime;
                if ((t >= o || 0 === i) && t <= o + 1e3 * (((null == (s = r[i + 1]) ? void 0 : s.start) || n) - a.start)) {
                    var l = r[i].sn - e.startSN;
                    if (l < 0) return -1;
                    var u = e.fragments;
                    if (u.length > r.length)
                        for (var d = (r[i + 1] || u[u.length - 1]).sn - e.startSN; d > l; d--) {
                            var h = u[d].programDateTime;
                            if (t >= h && t < h + 1e3 * u[d].duration) return d
                        }
                    return l
                }
            }
            return -1
        }

        function jr(e, t, r) {
            var i, n, a = new gr(e, r),
                s = null != (i = a.METHOD) ? i : "",
                o = a.URI,
                l = a.hexadecimalInteger("IV"),
                u = a.KEYFORMATVERSIONS,
                d = null != (n = a.KEYFORMAT) ? n : "identity";
            o && a.IV && !l && Y.error("Invalid IV: " + a.IV);
            var h = o ? Hr.resolve(o, t) : "",
                f = (u || "1").split("/").map(Number).filter(Number.isFinite);
            return new Nr(s, h, d, f, l, a.KEYID)
        }

        function qr(e) {
            var t = new gr(e).decimalFloatingPoint("TIME-OFFSET");
            return A(t) ? t : null
        }

        function Xr(e, t) {
            var r = (e || "").split(/[ ,]+/).filter((function(e) {
                return e
            }));
            ["video", "audio", "text"].forEach((function(e) {
                var i = r.filter((function(t) {
                    return Ce(t, e)
                }));
                i.length && (t[e + "Codec"] = i.map((function(e) {
                    return e.split("/")[0]
                })).join(","), r = r.filter((function(e) {
                    return -1 === i.indexOf(e)
                })))
            })), t.unknownCodecs = r
        }

        function Qr(e, t, r) {
            var i = t[r];
            i && (e[r] = i)
        }

        function zr(e, t, r) {
            e.rawProgramDateTime ? r.push(e) : null != t && t.programDateTime && (e.programDateTime = t.endProgramDateTime)
        }

        function $r(e, t, r, i) {
            e.relurl = t.URI, t.BYTERANGE && e.setByteRange(t.BYTERANGE), e.level = r, e.sn = "initSegment", i && (e.levelkeys = i), e.initSegment = null
        }

        function Zr(e, t, r) {
            e.levelkeys = t;
            var i = r.encryptedFragments;
            i.length && i[i.length - 1].levelkeys === t || !Object.keys(t).some((function(e) {
                return t[e].isCommonEncryption
            })) || i.push(e)
        }

        function Jr(e, t, r) {
            e.playlistParsingError = new Error("#EXT-X-" + t + " must not appear more than once (" + r[0] + ")")
        }

        function ei(e, t, r) {
            e.playlistParsingError = new Error("#EXT-X-" + t + " must appear before the first Media Segment (" + r[0] + ")")
        }

        function ti(e, t) {
            var r = t.startPTS;
            if (A(r)) {
                var i, n = 0;
                t.sn > e.sn ? (n = r - e.start, i = e) : (n = e.start - r, i = t), i.duration !== n && i.setDuration(n)
            } else t.sn > e.sn ? e.cc === t.cc && e.minEndPTS ? t.setStart(e.start + (e.minEndPTS - e.start)) : t.setStart(e.start + e.duration) : t.setStart(Math.max(e.start - t.duration, 0))
        }

        function ri(e, t, r, i, n, a, s) {
            i - r <= 0 && (s.warn("Fragment should have a positive duration", t), i = r + t.duration, a = n + t.duration);
            var o = r,
                l = i,
                u = t.startPTS,
                d = t.endPTS;
            if (A(u)) {
                var h = Math.abs(u - r);
                e && h > e.totalduration ? s.warn("media timestamps and playlist times differ by " + h + "s for level " + t.level + " " + e.url) : A(t.deltaPTS) ? t.deltaPTS = Math.max(h, t.deltaPTS) : t.deltaPTS = h, o = Math.max(r, u), r = Math.min(r, u), n = void 0 !== t.startDTS ? Math.min(n, t.startDTS) : n, l = Math.min(i, d), i = Math.max(i, d), a = void 0 !== t.endDTS ? Math.max(a, t.endDTS) : a
            }
            var f = r - t.start;
            0 !== t.start && t.setStart(r), t.setDuration(i - t.start), t.startPTS = r, t.maxStartPTS = o, t.startDTS = n, t.endPTS = i, t.minEndPTS = l, t.endDTS = a;
            var c, g = t.sn;
            if (!e || g < e.startSN || g > e.endSN) return 0;
            var v = g - e.startSN,
                m = e.fragments;
            for (m[v] = t, c = v; c > 0; c--) ti(m[c], m[c - 1]);
            for (c = v; c < m.length - 1; c++) ti(m[c], m[c + 1]);
            return e.fragmentHint && ti(m[m.length - 1], e.fragmentHint), e.PTSKnown = e.alignedSliding = !0, f
        }

        function ii(e, t, r) {
            if (e !== t) {
                for (var i, n = null, s = e.fragments, o = s.length - 1; o >= 0; o--) {
                    var l = s[o].initSegment;
                    if (l) {
                        n = l;
                        break
                    }
                }
                e.fragmentHint && delete e.fragmentHint.endPTS,
                    function(e, t, r) {
                        for (var i = t.skippedSegments, n = Math.max(e.startSN, t.startSN) - t.startSN, a = (e.fragmentHint ? 1 : 0) + (i ? t.endSN : Math.min(e.endSN, t.endSN)) - t.startSN, s = t.startSN - e.startSN, o = t.fragmentHint ? t.fragments.concat(t.fragmentHint) : t.fragments, l = e.fragmentHint ? e.fragments.concat(e.fragmentHint) : e.fragments, u = n; u <= a; u++) {
                            var d = l[s + u],
                                h = o[u];
                            if (i && !h && d && (h = t.fragments[u] = d), d && h) {
                                r(d, h, u, o);
                                var f = d.relurl,
                                    c = h.relurl;
                                if (f && fi(f, c)) return void(t.playlistParsingError = ni("media sequence mismatch " + h.sn + ":", e, t, 0, h));
                                if (d.cc !== h.cc) return void(t.playlistParsingError = ni("discontinuity sequence mismatch (" + d.cc + "!=" + h.cc + ")", e, t, 0, h))
                            }
                        }
                    }(e, t, (function(e, r, a, s) {
                        if ((!t.startCC || t.skippedSegments) && r.cc !== e.cc) {
                            for (var o = e.cc - r.cc, l = a; l < s.length; l++) s[l].cc += o;
                            t.endCC = s[s.length - 1].cc
                        }
                        A(e.startPTS) && A(e.endPTS) && (r.setStart(r.startPTS = e.startPTS), r.startDTS = e.startDTS, r.maxStartPTS = e.maxStartPTS, r.endPTS = e.endPTS, r.endDTS = e.endDTS, r.minEndPTS = e.minEndPTS, r.setDuration(e.endPTS - e.startPTS), r.duration && (i = r), t.PTSKnown = t.alignedSliding = !0), e.hasStreams && (r.elementaryStreams = e.elementaryStreams), r.loader = e.loader, e.hasStats && (r.stats = e.stats), e.initSegment && (r.initSegment = e.initSegment, n = e.initSegment)
                    }));
                var u = t.fragments,
                    d = t.fragmentHint ? u.concat(t.fragmentHint) : u;
                if (n && d.forEach((function(e) {
                        var t;
                        !e || e.initSegment && e.initSegment.relurl !== (null == (t = n) ? void 0 : t.relurl) || (e.initSegment = n)
                    })), t.skippedSegments) {
                    if (t.deltaUpdateFailed = u.some((function(e) {
                            return !e
                        })), t.deltaUpdateFailed) {
                        r.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");
                        for (var h = t.skippedSegments; h--;) u.shift();
                        t.startSN = u[0].sn
                    } else {
                        t.canSkipDateRanges && (t.dateRanges = function(e, t, r) {
                            var i = t.dateRanges,
                                n = t.recentlyRemovedDateranges,
                                s = a({}, e);
                            n && n.forEach((function(e) {
                                delete s[e]
                            }));
                            var o = Object.keys(s).length;
                            return o ? (Object.keys(i).forEach((function(e) {
                                var t = s[e],
                                    n = new mr(i[e].attr, t);
                                n.isValid ? (s[e] = n, t || (n.tagOrder += o)) : r.warn('Ignoring invalid Playlist Delta Update DATERANGE tag: "' + ot(i[e].attr) + '"')
                            })), s) : i
                        }(e.dateRanges, t, r));
                        var f = e.fragments.filter((function(e) {
                            return e.rawProgramDateTime
                        }));
                        if (e.hasProgramDateTime && !t.hasProgramDateTime)
                            for (var c = 1; c < d.length; c++) null === d[c].programDateTime && zr(d[c], d[c - 1], f);
                        Yr(f, t)
                    }
                    t.endCC = u[u.length - 1].cc
                }
                if (!t.startCC) {
                    var g, v = li(e, t.startSN - 1);
                    t.startCC = null != (g = null == v ? void 0 : v.cc) ? g : u[0].cc
                }! function(e, t, r) {
                    if (e && t)
                        for (var i = 0, n = 0, a = e.length; n <= a; n++) {
                            var s = e[n],
                                o = t[n + i];
                            s && o && s.index === o.index && s.fragment.sn === o.fragment.sn ? r(s, o) : i--
                        }
                }(e.partList, t.partList, (function(e, t) {
                    t.elementaryStreams = e.elementaryStreams, t.stats = e.stats
                })), i ? ri(t, i, i.startPTS, i.endPTS, i.startDTS, i.endDTS, r) : ai(e, t), u.length && (t.totalduration = t.edge - u[0].start), t.driftStartTime = e.driftStartTime, t.driftStart = e.driftStart;
                var m = t.advancedDateTime;
                if (t.advanced && m) {
                    var p = t.edge;
                    t.driftStart || (t.driftStartTime = m, t.driftStart = p), t.driftEndTime = m, t.driftEnd = p
                } else t.driftEndTime = e.driftEndTime, t.driftEnd = e.driftEnd, t.advancedDateTime = e.advancedDateTime; - 1 === t.requestScheduled && (t.requestScheduled = e.requestScheduled)
            }
        }

        function ni(e, t, r, i, n) {
            return new Error(e + " " + n.url + "\nPlaylist starting @" + t.startSN + "\n" + t.m3u8 + "\n\nPlaylist starting @" + r.startSN + "\n" + r.m3u8)
        }

        function ai(e, t, r) {
            void 0 === r && (r = !0);
            var i = t.startSN + t.skippedSegments - e.startSN,
                n = e.fragments,
                a = i >= 0,
                s = 0;
            if (a && i < n.length) s = n[i].start;
            else if (a && t.startSN === e.endSN + 1) s = e.fragmentEnd;
            else if (a && r) s = e.fragmentStart + i * t.levelTargetDuration;
            else {
                if (t.skippedSegments || 0 !== t.fragmentStart) return;
                s = e.fragmentStart
            }
            si(t, s)
        }

        function si(e, t) {
            if (t) {
                for (var r = e.fragments, i = e.skippedSegments; i < r.length; i++) r[i].addStart(t);
                e.fragmentHint && e.fragmentHint.addStart(t)
            }
        }

        function oi(e, t) {
            void 0 === t && (t = 1 / 0);
            var r = 1e3 * e.targetduration;
            if (e.updated) {
                var i = e.fragments;
                if (i.length && 4 * r > t) {
                    var n = 1e3 * i[i.length - 1].duration;
                    n < r && (r = n)
                }
            } else r /= 2;
            return Math.round(r)
        }

        function li(e, t, r) {
            if (!e) return null;
            var i = e.fragments[t - e.startSN];
            return i || ((i = e.fragmentHint) && i.sn === t ? i : t < e.startSN && r && r.sn === t ? r : null)
        }

        function ui(e, t, r) {
            return e ? di(e.partList, t, r) : null
        }

        function di(e, t, r) {
            if (e)
                for (var i = e.length; i--;) {
                    var n = e[i];
                    if (n.index === r && n.fragment.sn === t) return n
                }
            return null
        }

        function hi(e) {
            e.forEach((function(e, t) {
                var r;
                null == (r = e.details) || r.fragments.forEach((function(e) {
                    e.level = t, e.initSegment && (e.initSegment.level = t)
                }))
            }))
        }

        function fi(e, t) {
            return !(e === t || !t) && ci(e) !== ci(t)
        }

        function ci(e) {
            return e.replace(/\?[^?]*$/, "")
        }

        function gi(e, t) {
            for (var r = 0, i = e.length; r < i; r++) {
                var n;
                if ((null == (n = e[r]) ? void 0 : n.cc) === t) return e[r]
            }
            return null
        }

        function vi(e, t) {
            var r = e.start + t;
            e.startPTS = r, e.setStart(r), e.endPTS = r + e.duration
        }

        function mi(e, t) {
            for (var r = t.fragments, i = 0, n = r.length; i < n; i++) vi(r[i], e);
            t.fragmentHint && vi(t.fragmentHint, e), t.alignedSliding = !0
        }

        function pi(e, t) {
            if (function(e, t) {
                    return !!(e && t.startCC < e.endCC && t.endCC > e.startCC)
                }(t, e)) {
                var r = Math.min(t.endCC, e.endCC),
                    i = gi(t.fragments, r),
                    n = gi(e.fragments, r);
                i && n && (Y.log("Aligning playlist at start of dicontinuity sequence " + r), mi(i.start - n.start, e))
            }
        }

        function yi(e, t) {
            if (e.hasProgramDateTime && t.hasProgramDateTime) {
                var r = e.fragments,
                    i = t.fragments;
                if (r.length && i.length) {
                    var n, a, s = Math.min(t.endCC, e.endCC);
                    t.startCC < s && e.startCC < s && (n = gi(i, s), a = gi(r, s)), n && a || (a = gi(r, (n = i[Math.floor(i.length / 2)]).cc) || r[Math.floor(r.length / 2)]);
                    var o = n.programDateTime,
                        l = a.programDateTime;
                    o && l && mi((l - o) / 1e3 - (a.start - n.start), e)
                }
            }
        }

        function Ei(e, t, r) {
            Ti(e, t, r), e.addEventListener(t, r)
        }

        function Ti(e, t, r) {
            e.removeEventListener(t, r)
        }
        var Si = function(e) {
                for (var t = "", r = e.length, i = 0; i < r; i++) t += "[" + e.start(i).toFixed(3) + "-" + e.end(i).toFixed(3) + "]";
                return t
            },
            Ai = {
                STOPPED: "STOPPED",
                IDLE: "IDLE",
                KEY_LOADING: "KEY_LOADING",
                FRAG_LOADING: "FRAG_LOADING",
                FRAG_LOADING_WAITING_RETRY: "FRAG_LOADING_WAITING_RETRY",
                WAITING_TRACK: "WAITING_TRACK",
                PARSING: "PARSING",
                PARSED: "PARSED",
                ENDED: "ENDED",
                ERROR: "ERROR",
                WAITING_INIT_PTS: "WAITING_INIT_PTS",
                WAITING_LEVEL: "WAITING_LEVEL"
            },
            Li = function(e) {
                function t(t, r, i, n, a) {
                    var s;
                    return (s = e.call(this, n, t.logger) || this).hls = void 0, s.fragPrevious = null, s.fragCurrent = null, s.fragmentTracker = void 0, s.transmuxer = null, s._state = Ai.STOPPED, s.playlistType = void 0, s.media = null, s.mediaBuffer = null, s.config = void 0, s.bitrateTest = !1, s.lastCurrentTime = 0, s.nextLoadPosition = 0, s.startPosition = 0, s.startTimeOffset = null, s.retryDate = 0, s.levels = null, s.fragmentLoader = void 0, s.keyLoader = void 0, s.levelLastLoaded = null, s.startFragRequested = !1, s.decrypter = void 0, s.initPTS = [], s.buffering = !0, s.loadingParts = !1, s.loopSn = void 0, s.onMediaSeeking = function() {
                        var e = s,
                            t = e.config,
                            r = e.fragCurrent,
                            i = e.media,
                            n = e.mediaBuffer,
                            a = e.state,
                            o = i ? i.currentTime : 0,
                            l = sr.bufferInfo(n || i, o, t.maxBufferHole),
                            u = !l.len;
                        if (s.log("Media seeking to " + (A(o) ? o.toFixed(3) : o) + ", state: " + a + ", " + (u ? "out of" : "in") + " buffer"), s.state === Ai.ENDED) s.resetLoadingState();
                        else if (r) {
                            var d = t.maxFragLookUpTolerance,
                                h = r.start - d,
                                f = r.start + r.duration + d;
                            if (u || f < l.start || h > l.end) {
                                var c = o > f;
                                (o < h || c) && (c && r.loader && (s.log("Cancelling fragment load for seek (sn: " + r.sn + ")"), r.abortRequests(), s.resetLoadingState()), s.fragPrevious = null)
                            }
                        }
                        if (i && (s.fragmentTracker.removeFragmentsInRange(o, 1 / 0, s.playlistType, !0), o > s.lastCurrentTime && (s.lastCurrentTime = o), !s.loadingParts)) {
                            var g = Math.max(l.end, o),
                                v = s.shouldLoadParts(s.getLevelDetails(), g);
                            v && (s.log("LL-Part loading ON after seeking to " + o.toFixed(2) + " with buffer @" + g.toFixed(2)), s.loadingParts = v)
                        }
                        s.hls.hasEnoughToStart || (s.log("Setting " + (u ? "startPosition" : "nextLoadPosition") + " to " + o + " for seek without enough to start"), s.nextLoadPosition = o, u && (s.startPosition = o)), u && s.state === Ai.IDLE && s.tickImmediate()
                    }, s.onMediaEnded = function() {
                        s.log("setting startPosition to 0 because media ended"), s.startPosition = s.lastCurrentTime = 0
                    }, s.playlistType = a, s.hls = t, s.fragmentLoader = new Jt(t.config), s.keyLoader = i, s.fragmentTracker = r, s.config = t.config, s.decrypter = new $t(t.config), s
                }
                o(t, e);
                var r = t.prototype;
                return r.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(b.ERROR, this.onError, this)
                }, r.unregisterListeners = function() {
                    var e = this.hls;
                    e.off(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(b.ERROR, this.onError, this)
                }, r.doTick = function() {
                    this.onTickEnd()
                }, r.onTickEnd = function() {}, r.startLoad = function(e) {}, r.stopLoad = function() {
                    if (this.state !== Ai.STOPPED) {
                        this.fragmentLoader.abort(), this.keyLoader.abort(this.playlistType);
                        var e = this.fragCurrent;
                        null != e && e.loader && (e.abortRequests(), this.fragmentTracker.removeFragment(e)), this.resetTransmuxer(), this.fragCurrent = null, this.fragPrevious = null, this.clearInterval(), this.clearNextTick(), this.state = Ai.STOPPED
                    }
                }, r.pauseBuffering = function() {
                    this.buffering = !1
                }, r.resumeBuffering = function() {
                    this.buffering = !0
                }, r._streamEnded = function(e, t) {
                    if (t.live || !this.media) return !1;
                    var r = e.end || 0,
                        i = this.config.timelineOffset || 0;
                    if (r <= i) return !1;
                    var n = e.buffered;
                    this.config.maxBufferHole && n && n.length > 1 && (e = sr.bufferedInfo(n, e.start, 0));
                    var a = e.nextStart;
                    if (a && a > i && a < t.edge) return !1;
                    if (this.media.currentTime < e.start) return !1;
                    var s = t.partList;
                    if (null != s && s.length) {
                        var o = s[s.length - 1];
                        return sr.isBuffered(this.media, o.start + o.duration / 2)
                    }
                    var l = t.fragments[t.fragments.length - 1].type;
                    return this.fragmentTracker.isEndListAppended(l)
                }, r.getLevelDetails = function() {
                    if (this.levels && null !== this.levelLastLoaded) return this.levelLastLoaded.details
                }, r.onMediaAttached = function(e, t) {
                    var r = this.media = this.mediaBuffer = t.media;
                    Ei(r, "seeking", this.onMediaSeeking), Ei(r, "ended", this.onMediaEnded);
                    var i = this.config;
                    this.levels && i.autoStartLoad && this.state === Ai.STOPPED && this.startLoad(i.startPosition)
                }, r.onMediaDetaching = function(e, t) {
                    var r = !!t.transferMedia,
                        i = this.media;
                    if (null !== i) {
                        if (i.ended && (this.log("MSE detaching and video ended, reset startPosition"), this.startPosition = this.lastCurrentTime = 0), Ti(i, "seeking", this.onMediaSeeking), Ti(i, "ended", this.onMediaEnded), this.keyLoader && !r && this.keyLoader.detach(), this.media = this.mediaBuffer = null, this.loopSn = void 0, r) return this.resetLoadingState(), void this.resetTransmuxer();
                        this.loadingParts = !1, this.fragmentTracker.removeAllFragments(), this.stopLoad()
                    }
                }, r.onManifestLoading = function() {
                    this.initPTS = [], this.levels = this.levelLastLoaded = this.fragCurrent = null, this.lastCurrentTime = this.startPosition = 0, this.startFragRequested = !1
                }, r.onError = function(e, t) {}, r.onManifestLoaded = function(e, t) {
                    this.startTimeOffset = t.startTimeOffset
                }, r.onHandlerDestroying = function() {
                    this.stopLoad(), this.transmuxer && (this.transmuxer.destroy(), this.transmuxer = null), e.prototype.onHandlerDestroying.call(this), this.hls = this.onMediaSeeking = this.onMediaEnded = null
                }, r.onHandlerDestroyed = function() {
                    this.state = Ai.STOPPED, this.fragmentLoader && this.fragmentLoader.destroy(), this.keyLoader && this.keyLoader.destroy(), this.decrypter && this.decrypter.destroy(), this.hls = this.log = this.warn = this.decrypter = this.keyLoader = this.fragmentLoader = this.fragmentTracker = null, e.prototype.onHandlerDestroyed.call(this)
                }, r.loadFragment = function(e, t, r) {
                    this.startFragRequested = !0, this._loadFragForPlayback(e, t, r)
                }, r._loadFragForPlayback = function(e, t, r) {
                    var i = this;
                    this._doFragLoad(e, t, r, (function(e) {
                        var t = e.frag;
                        if (i.fragContextChanged(t)) return i.warn(t.type + " sn: " + t.sn + (e.part ? " part: " + e.part.index : "") + " of " + i.fragInfo(t, !1, e.part) + ") was dropped during download."), void i.fragmentTracker.removeFragment(t);
                        t.stats.chunkCount++, i._handleFragmentLoadProgress(e)
                    })).then((function(e) {
                        if (e) {
                            var t = i.state,
                                r = e.frag;
                            i.fragContextChanged(r) ? (t === Ai.FRAG_LOADING || !i.fragCurrent && t === Ai.PARSING) && (i.fragmentTracker.removeFragment(r), i.state = Ai.IDLE) : ("payload" in e && (i.log("Loaded " + r.type + " sn: " + r.sn + " of " + i.playlistLabel() + " " + r.level), i.hls.trigger(b.FRAG_LOADED, e)), i._handleFragmentLoadComplete(e))
                        }
                    })).catch((function(t) {
                        i.state !== Ai.STOPPED && i.state !== Ai.ERROR && (i.warn("Frag error: " + ((null == t ? void 0 : t.message) || t)), i.resetFragmentLoading(e))
                    }))
                }, r.clearTrackerIfNeeded = function(e) {
                    var t, r = this.fragmentTracker;
                    if (r.getState(e) === Bt) {
                        var i = e.type,
                            n = this.getFwdBufferInfo(this.mediaBuffer, i),
                            a = Math.max(e.duration, n ? n.len : this.config.maxBufferLength),
                            s = this.backtrackFragment;
                        (1 == (s ? e.sn - s.sn : 0) || this.reduceMaxBufferLength(a, e.duration)) && r.removeFragment(e)
                    } else 0 === (null == (t = this.mediaBuffer) ? void 0 : t.buffered.length) ? r.removeAllFragments() : r.hasParts(e.type) && (r.detectPartialFragments({
                        frag: e,
                        part: null,
                        stats: e.stats,
                        id: e.type
                    }), r.getState(e) === Gt && r.removeFragment(e))
                }, r.checkLiveUpdate = function(e) {
                    if (e.updated && !e.live) {
                        var t = e.fragments[e.fragments.length - 1];
                        this.fragmentTracker.detectPartialFragments({
                            frag: t,
                            part: null,
                            stats: t.stats,
                            id: t.type
                        })
                    }
                    e.fragments[0] || (e.deltaUpdateFailed = !0)
                }, r.waitForLive = function(e) {
                    var t = e.details;
                    return (null == t ? void 0 : t.live) && "EVENT" !== t.type && (this.levelLastLoaded !== e || t.expired)
                }, r.flushMainBuffer = function(e, t, r) {
                    if (void 0 === r && (r = null), e - t) {
                        var i = {
                            startOffset: e,
                            endOffset: t,
                            type: r
                        };
                        this.hls.trigger(b.BUFFER_FLUSHING, i)
                    }
                }, r._loadInitSegment = function(e, t) {
                    var r = this;
                    this._doFragLoad(e, t).then((function(e) {
                        var t = null == e ? void 0 : e.frag;
                        if (!t || r.fragContextChanged(t) || !r.levels) throw new Error("init load aborted");
                        return e
                    })).then((function(e) {
                        var t = r.hls,
                            i = e.frag,
                            n = e.payload,
                            a = i.decryptdata;
                        if (n && n.byteLength > 0 && null != a && a.key && a.iv && Tr(a.method)) {
                            var s = self.performance.now();
                            return r.decrypter.decrypt(new Uint8Array(n), a.key.buffer, a.iv.buffer, Sr(a.method)).catch((function(e) {
                                throw t.trigger(b.ERROR, {
                                    type: I.MEDIA_ERROR,
                                    details: k.FRAG_DECRYPT_ERROR,
                                    fatal: !1,
                                    error: e,
                                    reason: e.message,
                                    frag: i
                                }), e
                            })).then((function(n) {
                                var a = self.performance.now();
                                return t.trigger(b.FRAG_DECRYPTED, {
                                    frag: i,
                                    payload: n,
                                    stats: {
                                        tstart: s,
                                        tdecrypt: a
                                    }
                                }), e.payload = n, r.completeInitSegmentLoad(e)
                            }))
                        }
                        return r.completeInitSegmentLoad(e)
                    })).catch((function(t) {
                        r.state !== Ai.STOPPED && r.state !== Ai.ERROR && (r.warn(t), r.resetFragmentLoading(e))
                    }))
                }, r.completeInitSegmentLoad = function(e) {
                    if (!this.levels) throw new Error("init load aborted, missing levels");
                    var t = e.frag.stats;
                    this.state !== Ai.STOPPED && (this.state = Ai.IDLE), e.frag.data = new Uint8Array(e.payload), t.parsing.start = t.buffering.start = self.performance.now(), t.parsing.end = t.buffering.end = self.performance.now(), this.tick()
                }, r.unhandledEncryptionError = function(e, t) {
                    var r, i, n = e.tracks;
                    if (n && !t.encrypted && (null != (r = n.audio) && r.encrypted || null != (i = n.video) && i.encrypted) && (!this.config.emeEnabled || !this.keyLoader.emeController)) {
                        var a = this.media,
                            s = new Error("Encrypted track with no key in " + this.fragInfo(t) + " (media " + (a ? "attached mediaKeys: " + a.mediaKeys : "detached") + ")");
                        return this.warn(s.message), !(!a || a.mediaKeys) && (this.hls.trigger(b.ERROR, {
                            type: I.KEY_SYSTEM_ERROR,
                            details: k.KEY_SYSTEM_NO_KEYS,
                            fatal: !1,
                            error: s,
                            frag: t
                        }), this.resetTransmuxer(), !0)
                    }
                    return !1
                }, r.fragContextChanged = function(e) {
                    var t = this.fragCurrent;
                    return !e || !t || e.sn !== t.sn || e.level !== t.level
                }, r.fragBufferedComplete = function(e, t) {
                    var r = this.mediaBuffer ? this.mediaBuffer : this.media;
                    if (this.log("Buffered " + e.type + " sn: " + e.sn + (t ? " part: " + t.index : "") + " of " + this.fragInfo(e, !1, t) + " > buffer:" + (r ? Si(sr.getBuffered(r)) : "(detached)") + ")"), te(e)) {
                        var i;
                        if (e.type !== x) {
                            var n = e.elementaryStreams;
                            if (!Object.keys(n).some((function(e) {
                                    return !!n[e]
                                }))) return void(this.state = Ai.IDLE)
                        }
                        var a = null == (i = this.levels) ? void 0 : i[e.level];
                        null != a && a.fragmentError && (this.log("Resetting level fragment error count of " + a.fragmentError + " on frag buffered"), a.fragmentError = 0)
                    }
                    this.state = Ai.IDLE
                }, r._handleFragmentLoadComplete = function(e) {
                    var t = this.transmuxer;
                    if (t) {
                        var r = e.frag,
                            i = e.part,
                            n = e.partsLoaded,
                            a = !n || 0 === n.length || n.some((function(e) {
                                return !e
                            })),
                            s = new nr(r.level, r.sn, r.stats.chunkCount + 1, 0, i ? i.index : -1, !a);
                        t.flush(s)
                    }
                }, r._handleFragmentLoadProgress = function(e) {}, r._doFragLoad = function(e, t, r, i) {
                    var n, a = this;
                    void 0 === r && (r = null), this.fragCurrent = e;
                    var s = t.details;
                    if (!this.levels || !s) throw new Error("frag load aborted, missing level" + (s ? "" : " detail") + "s");
                    var o = null;
                    if (!e.encrypted || null != (n = e.decryptdata) && n.key) e.encrypted || (o = this.keyLoader.loadClear(e, s.encryptedFragments, this.startFragRequested)) && this.log("[eme] blocking frag load until media-keys acquired");
                    else if (this.log("Loading key for " + e.sn + " of [" + s.startSN + "-" + s.endSN + "], " + this.playlistLabel() + " " + e.level), this.state = Ai.KEY_LOADING, this.fragCurrent = e, o = this.keyLoader.load(e).then((function(e) {
                            if (!a.fragContextChanged(e.frag)) return a.hls.trigger(b.KEY_LOADED, e), a.state === Ai.KEY_LOADING && (a.state = Ai.IDLE), e
                        })), this.hls.trigger(b.KEY_LOADING, {
                            frag: e
                        }), null === this.fragCurrent) return this.log("context changed in KEY_LOADING"), Promise.resolve(null);
                    var l, u = this.fragPrevious;
                    if (te(e) && (!u || e.sn !== u.sn)) {
                        var d = this.shouldLoadParts(t.details, e.end);
                        d !== this.loadingParts && (this.log("LL-Part loading " + (d ? "ON" : "OFF") + " loading sn " + (null == u ? void 0 : u.sn) + "->" + e.sn), this.loadingParts = d)
                    }
                    if (r = Math.max(e.start, r || 0), this.loadingParts && te(e)) {
                        var h = s.partList;
                        if (h && i) {
                            r > s.fragmentEnd && s.fragmentHint && (e = s.fragmentHint);
                            var f = this.getNextPart(h, e, r);
                            if (f > -1) {
                                var c, g = h[f];
                                return e = this.fragCurrent = g.fragment, this.log("Loading " + e.type + " sn: " + e.sn + " part: " + g.index + " (" + f + "/" + (h.length - 1) + ") of " + this.fragInfo(e, !1, g) + ") cc: " + e.cc + " [" + s.startSN + "-" + s.endSN + "], target: " + parseFloat(r.toFixed(3))), this.nextLoadPosition = g.start + g.duration, this.state = Ai.FRAG_LOADING, c = o ? o.then((function(r) {
                                    return !r || a.fragContextChanged(r.frag) ? null : a.doFragPartsLoad(e, g, t, i)
                                })).catch((function(e) {
                                    return a.handleFragLoadError(e)
                                })) : this.doFragPartsLoad(e, g, t, i).catch((function(e) {
                                    return a.handleFragLoadError(e)
                                })), this.hls.trigger(b.FRAG_LOADING, {
                                    frag: e,
                                    part: g,
                                    targetBufferTime: r
                                }), null === this.fragCurrent ? Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")) : c
                            }
                            if (!e.url || this.loadedEndOfParts(h, r)) return Promise.resolve(null)
                        }
                    }
                    if (te(e) && this.loadingParts) this.log("LL-Part loading OFF after next part miss @" + r.toFixed(2) + " Check buffer at sn: " + e.sn + " loaded parts: " + (null == (l = s.partList) ? void 0 : l.filter((function(e) {
                        return e.loaded
                    })).map((function(e) {
                        return "[" + e.start + "-" + e.end + "]"
                    })))), this.loadingParts = !1;
                    else if (!e.url) return Promise.resolve(null);
                    this.log("Loading " + e.type + " sn: " + e.sn + " of " + this.fragInfo(e, !1) + ") cc: " + e.cc + " [" + s.startSN + "-" + s.endSN + "], target: " + parseFloat(r.toFixed(3))), A(e.sn) && !this.bitrateTest && (this.nextLoadPosition = e.start + e.duration), this.state = Ai.FRAG_LOADING;
                    var v, m = this.config.progressive;
                    return v = m && o ? o.then((function(t) {
                        return !t || a.fragContextChanged(t.frag) ? null : a.fragmentLoader.load(e, i)
                    })).catch((function(e) {
                        return a.handleFragLoadError(e)
                    })) : Promise.all([this.fragmentLoader.load(e, m ? i : void 0), o]).then((function(e) {
                        var t = e[0];
                        return !m && i && i(t), t
                    })).catch((function(e) {
                        return a.handleFragLoadError(e)
                    })), this.hls.trigger(b.FRAG_LOADING, {
                        frag: e,
                        targetBufferTime: r
                    }), null === this.fragCurrent ? Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")) : v
                }, r.doFragPartsLoad = function(e, t, r, i) {
                    var n = this;
                    return new Promise((function(a, s) {
                        var o, l = [],
                            u = null == (o = r.details) ? void 0 : o.partList,
                            d = function(t) {
                                n.fragmentLoader.loadPart(e, t, i).then((function(i) {
                                    l[t.index] = i;
                                    var s = i.part;
                                    n.hls.trigger(b.FRAG_LOADED, i);
                                    var o = ui(r.details, e.sn, t.index + 1) || di(u, e.sn, t.index + 1);
                                    if (!o) return a({
                                        frag: e,
                                        part: s,
                                        partsLoaded: l
                                    });
                                    d(o)
                                })).catch(s)
                            };
                        d(t)
                    }))
                }, r.handleFragLoadError = function(e) {
                    if ("data" in e) {
                        var t = e.data;
                        t.frag && t.details === k.INTERNAL_ABORTED ? this.handleFragLoadAborted(t.frag, t.part) : t.frag && t.type === I.KEY_SYSTEM_ERROR ? (t.frag.abortRequests(), this.resetFragmentLoading(t.frag)) : this.hls.trigger(b.ERROR, t)
                    } else this.hls.trigger(b.ERROR, {
                        type: I.OTHER_ERROR,
                        details: k.INTERNAL_EXCEPTION,
                        err: e,
                        error: e,
                        fatal: !0
                    });
                    return null
                }, r._handleTransmuxerFlush = function(e) {
                    var t = this.getCurrentContext(e);
                    if (t && this.state === Ai.PARSING) {
                        var r = t.frag,
                            i = t.part,
                            n = t.level,
                            a = self.performance.now();
                        r.stats.parsing.end = a, i && (i.stats.parsing.end = a);
                        var s = this.getLevelDetails(),
                            o = s && r.sn > s.endSN || this.shouldLoadParts(s, r.end);
                        o !== this.loadingParts && (this.log("LL-Part loading " + (o ? "ON" : "OFF") + " after parsing segment ending @" + r.end.toFixed(2)), this.loadingParts = o), this.updateLevelTiming(r, i, n, e.partial)
                    } else this.fragCurrent || this.state === Ai.STOPPED || this.state === Ai.ERROR || (this.state = Ai.IDLE)
                }, r.shouldLoadParts = function(e, t) {
                    if (this.config.lowLatencyMode) {
                        if (!e) return this.loadingParts;
                        if (e.partList) {
                            var r, i, n = e.partList[0];
                            if (n.fragment.type === x) return !1;
                            if (t >= n.end + ((null == (r = e.fragmentHint) ? void 0 : r.duration) || 0) && (this.hls.hasEnoughToStart ? (null == (i = this.media) ? void 0 : i.currentTime) || this.lastCurrentTime : this.getLoadPosition()) > n.start - n.fragment.duration) return !0
                        }
                    }
                    return !1
                }, r.getCurrentContext = function(e) {
                    var t = this.levels,
                        r = this.fragCurrent,
                        i = e.level,
                        n = e.sn,
                        a = e.part;
                    if (null == t || !t[i]) return this.warn("Levels object was unset while buffering fragment " + n + " of " + this.playlistLabel() + " " + i + ". The current chunk will not be buffered."), null;
                    var s = t[i],
                        o = s.details,
                        l = a > -1 ? ui(o, n, a) : null,
                        u = l ? l.fragment : li(o, n, r);
                    return u ? (r && r !== u && (u.stats = r.stats), {
                        frag: u,
                        part: l,
                        level: s
                    }) : null
                }, r.bufferFragmentData = function(e, t, r, i, n) {
                    if (this.state === Ai.PARSING) {
                        var a = e.data1,
                            s = e.data2,
                            o = a;
                        if (s && (o = Ae(a, s)), o.length) {
                            var l = this.initPTS[t.cc],
                                u = l ? -l.baseTime / l.timescale : void 0,
                                d = {
                                    type: e.type,
                                    frag: t,
                                    part: r,
                                    chunkMeta: i,
                                    offset: u,
                                    parent: t.type,
                                    data: o
                                };
                            if (this.hls.trigger(b.BUFFER_APPENDING, d), e.dropped && e.independent && !r) {
                                if (n) return;
                                this.flushBufferGap(t)
                            }
                        }
                    }
                }, r.flushBufferGap = function(e) {
                    var t = this.media;
                    if (t)
                        if (sr.isBuffered(t, t.currentTime)) {
                            var r = t.currentTime,
                                i = sr.bufferInfo(t, r, 0),
                                n = e.duration,
                                a = Math.min(2 * this.config.maxFragLookUpTolerance, .25 * n),
                                s = Math.max(Math.min(e.start - a, i.end - a), r + a);
                            e.start - s > a && this.flushMainBuffer(s, e.start)
                        } else this.flushMainBuffer(0, e.start)
                }, r.getFwdBufferInfo = function(e, t) {
                    var r, i = this.getLoadPosition();
                    if (!A(i)) return null;
                    var n = this.lastCurrentTime > i || null != (r = this.media) && r.paused ? 0 : this.config.maxBufferHole;
                    return this.getFwdBufferInfoAtPos(e, i, t, n)
                }, r.getFwdBufferInfoAtPos = function(e, t, r, i) {
                    var n = sr.bufferInfo(e, t, i);
                    if (0 === n.len && void 0 !== n.nextStart) {
                        var a = this.fragmentTracker.getBufferedFrag(t, r);
                        if (a && (n.nextStart <= a.end || a.gap)) {
                            var s = Math.max(Math.min(n.nextStart, a.end) - t, i);
                            return sr.bufferInfo(e, t, s)
                        }
                    }
                    return n
                }, r.getMaxBufferLength = function(e) {
                    var t, r = this.config;
                    return t = e ? Math.max(8 * r.maxBufferSize / e, r.maxBufferLength) : r.maxBufferLength, Math.min(t, r.maxMaxBufferLength)
                }, r.reduceMaxBufferLength = function(e, t) {
                    var r = this.config,
                        i = Math.max(Math.min(e - t, r.maxBufferLength), t),
                        n = Math.max(e - 3 * t, r.maxMaxBufferLength / 2, i);
                    return n >= i && (r.maxMaxBufferLength = n, this.warn("Reduce max buffer length to " + n + "s"), !0)
                }, r.getAppendedFrag = function(e, t) {
                    void 0 === t && (t = w);
                    var r = this.fragmentTracker ? this.fragmentTracker.getAppendedFrag(e, t) : null;
                    return r && "fragment" in r ? r.fragment : r
                }, r.getNextFragment = function(e, t) {
                    var r = t.fragments,
                        i = r.length;
                    if (!i) return null;
                    var n = this.config,
                        a = r[0].start,
                        s = n.lowLatencyMode && !!t.partList,
                        o = null;
                    if (t.live) {
                        var l = n.initialLiveManifestSize;
                        if (i < l) return this.warn("Not enough fragments to start playback (have: " + i + ", need: " + l + ")"), null;
                        if (!t.PTSKnown && !this.startFragRequested && -1 === this.startPosition || e < a) {
                            var u;
                            s && !this.loadingParts && (this.log("LL-Part loading ON for initial live fragment"), this.loadingParts = !0), o = this.getInitialLiveFragment(t);
                            var d = this.hls.startPosition,
                                h = this.hls.liveSyncPosition,
                                f = o ? (-1 !== d && d >= a ? d : h) || o.start : e;
                            this.log("Setting startPosition to " + f + " to match start frag at live edge. mainStart: " + d + " liveSyncPosition: " + h + " frag.start: " + (null == (u = o) ? void 0 : u.start)), this.startPosition = this.nextLoadPosition = f
                        }
                    } else e <= a && (o = r[0]);
                    if (!o) {
                        var c = this.loadingParts ? t.partEnd : t.fragmentEnd;
                        o = this.getFragmentAtPosition(e, c, t)
                    }
                    var g = this.filterReplacedPrimary(o, t);
                    if (!g && o) {
                        var v = o.sn - t.startSN;
                        g = this.filterReplacedPrimary(r[v + 1] || null, t)
                    }
                    return this.mapToInitFragWhenRequired(g)
                }, r.isLoopLoading = function(e, t) {
                    var r = this.fragmentTracker.getState(e);
                    return (r === Kt || r === Gt && !!e.gap) && this.nextLoadPosition > t
                }, r.getNextFragmentLoopLoading = function(e, t, r, i, n) {
                    var a = null;
                    if (e.gap && (a = this.getNextFragment(this.nextLoadPosition, t)) && !a.gap && r.nextStart) {
                        var s = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, r.nextStart, i, 0);
                        if (null !== s && r.len + s.len >= n) {
                            var o = a.sn;
                            return this.loopSn !== o && (this.log('buffer full after gaps in "' + i + '" playlist starting at sn: ' + o), this.loopSn = o), null
                        }
                    }
                    return this.loopSn = void 0, a
                }, r.filterReplacedPrimary = function(e, t) {
                    if (!e) return e;
                    if (Ri(this.config) && e.type !== x) {
                        var r = this.hls.interstitialsManager,
                            i = null == r ? void 0 : r.bufferingItem;
                        if (i) {
                            var n = i.event;
                            if (n) {
                                if (n.appendInPlace || Math.abs(e.start - i.start) > 1 || 0 === i.start) return null
                            } else {
                                if (e.end <= i.start && !1 === (null == t ? void 0 : t.live)) return null;
                                if (e.start > i.end && i.nextEvent && (i.nextEvent.appendInPlace || e.start - i.end > 1)) return null
                            }
                        }
                        var a = null == r ? void 0 : r.playerQueue;
                        if (a)
                            for (var s = a.length; s--;) {
                                var o = a[s].interstitial;
                                if (o.appendInPlace && e.start >= o.startTime && e.end <= o.resumeTime) return null
                            }
                    }
                    return e
                }, r.mapToInitFragWhenRequired = function(e) {
                    return null == e || !e.initSegment || e.initSegment.data || this.bitrateTest ? e : e.initSegment
                }, r.getNextPart = function(e, t, r) {
                    for (var i = -1, n = !1, a = !0, s = 0, o = e.length; s < o; s++) {
                        var l = e[s];
                        if (a = a && !l.independent, i > -1 && r < l.start) break;
                        var u = l.loaded;
                        u ? i = -1 : (n || (l.independent || a) && l.fragment === t) && (l.fragment !== t && this.warn("Need buffer at " + r + " but next unloaded part starts at " + l.start), i = s), n = u
                    }
                    return i
                }, r.loadedEndOfParts = function(e, t) {
                    for (var r, i = e.length; i--;) {
                        if (!(r = e[i]).loaded) return !1;
                        if (t > r.start) return !0
                    }
                    return !1
                }, r.getInitialLiveFragment = function(e) {
                    var t = e.fragments,
                        r = this.fragPrevious,
                        i = null;
                    if (r) {
                        if (e.hasProgramDateTime && (this.log("Live playlist, switching playlist, load frag with same PDT: " + r.programDateTime), i = function(e, t, r) {
                                if (null === t || !Array.isArray(e) || !e.length || !A(t)) return null;
                                if (t < (e[0].programDateTime || 0)) return null;
                                if (t >= (e[e.length - 1].endProgramDateTime || 0)) return null;
                                for (var i = 0; i < e.length; ++i) {
                                    var n = e[i];
                                    if (Tt(t, r, n)) return n
                                }
                                return null
                            }(t, r.endProgramDateTime, this.config.maxFragLookUpTolerance)), !i) {
                            var n = r.sn + 1;
                            if (n >= e.startSN && n <= e.endSN) {
                                var a = t[n - e.startSN];
                                r.cc === a.cc && (i = a, this.log("Live playlist, switching playlist, load frag with next SN: " + i.sn))
                            }
                            i || (i = St(e, r.cc, r.end)) && this.log("Live playlist, switching playlist, load frag with same CC: " + i.sn)
                        }
                    } else {
                        var s = this.hls.liveSyncPosition;
                        null !== s && (i = this.getFragmentAtPosition(s, this.bitrateTest ? e.fragmentEnd : e.edge, e))
                    }
                    return i
                }, r.getFragmentAtPosition = function(e, t, r) {
                    var i, n, a = this.config,
                        s = this.fragPrevious,
                        o = r.fragments,
                        l = r.endSN,
                        u = r.fragmentHint,
                        d = a.maxFragLookUpTolerance,
                        h = r.partList,
                        f = !!(this.loadingParts && null != h && h.length && u);
                    if (f && !this.bitrateTest && h[h.length - 1].fragment.sn === u.sn && (o = o.concat(u), l = u.sn), i = e < t ? yt(s, o, e, e < this.lastCurrentTime || e > t - d || null != (n = this.media) && n.paused || !this.startFragRequested ? 0 : d) : o[o.length - 1]) {
                        var c = i.sn - r.startSN,
                            g = this.fragmentTracker.getState(i);
                        if ((g === Kt || g === Gt && i.gap) && (s = i), s && i.sn === s.sn && (!f || h[0].fragment.sn > i.sn || !r.live) && i.level === s.level) {
                            var v = o[c + 1];
                            i = i.sn < l && this.fragmentTracker.getState(v) !== Kt ? v : null
                        }
                    }
                    return i
                }, r.alignPlaylists = function(e, t, r) {
                    var i = e.fragments.length;
                    if (!i) return this.warn("No fragments in live playlist"), 0;
                    var n = e.fragmentStart,
                        a = !t,
                        s = e.alignedSliding && A(n);
                    if (a || !s && !n) {
                        ! function(e, t) {
                            e && (pi(t, e), t.alignedSliding || yi(t, e), t.alignedSliding || t.skippedSegments || ai(e, t, !1))
                        }(r, e);
                        var o = e.fragmentStart;
                        return this.log("Live playlist sliding: " + o.toFixed(2) + " start-sn: " + (t ? t.startSN : "na") + "->" + e.startSN + " fragments: " + i), o
                    }
                    return n
                }, r.waitForCdnTuneIn = function(e) {
                    return e.live && e.canBlockReload && e.partTarget && e.tuneInGoal > Math.max(e.partHoldBack, 3 * e.partTarget)
                }, r.setStartPosition = function(e, t) {
                    var r = this.startPosition;
                    r < t && (r = -1);
                    var i = this.timelineOffset;
                    if (-1 === r) {
                        var n = null !== this.startTimeOffset,
                            a = n ? this.startTimeOffset : e.startTimeOffset;
                        null !== a && A(a) ? (r = t + a, a < 0 && (r += e.edge), r = Math.min(Math.max(t, r), t + e.totalduration), this.log("Setting startPosition to " + r + " for start time offset " + a + " found in " + (n ? "multivariant" : "media") + " playlist"), this.startPosition = r) : e.live ? (r = this.hls.liveSyncPosition || t, this.log("Setting startPosition to -1 to start at live edge " + r), this.startPosition = -1) : (this.log("setting startPosition to 0 by default"), this.startPosition = r = 0), this.lastCurrentTime = r + i
                    }
                    this.nextLoadPosition = r + i
                }, r.getLoadPosition = function() {
                    var e, t = this.media,
                        r = 0;
                    return null != (e = this.hls) && e.hasEnoughToStart && t ? r = t.currentTime : this.nextLoadPosition >= 0 && (r = this.nextLoadPosition), r
                }, r.handleFragLoadAborted = function(e, t) {
                    this.transmuxer && e.type === this.playlistType && te(e) && e.stats.aborted && (this.log("Fragment " + e.sn + (t ? " part " + t.index : "") + " of " + this.playlistLabel() + " " + e.level + " was aborted"), this.resetFragmentLoading(e))
                }, r.resetFragmentLoading = function(e) {
                    this.fragCurrent && (this.fragContextChanged(e) || this.state === Ai.FRAG_LOADING_WAITING_RETRY) || (this.state = Ai.IDLE)
                }, r.onFragmentOrKeyLoadError = function(e, t) {
                    var r;
                    if (t.chunkMeta && !t.frag) {
                        var i = this.getCurrentContext(t.chunkMeta);
                        i && (t.frag = i.frag)
                    }
                    var n = t.frag;
                    if (n && n.type === e && this.levels)
                        if (this.fragContextChanged(n)) {
                            var a;
                            this.warn("Frag load error must match current frag to retry " + n.url + " > " + (null == (a = this.fragCurrent) ? void 0 : a.url))
                        } else {
                            var s = t.details === k.FRAG_GAP;
                            s && this.fragmentTracker.fragBuffered(n, !0);
                            var o = t.errorAction;
                            if (o) {
                                var l = o.action,
                                    u = o.flags,
                                    d = o.retryCount,
                                    h = void 0 === d ? 0 : d,
                                    f = o.retryConfig,
                                    c = !!f,
                                    g = c && l === Ct,
                                    v = c && !o.resolved && u === Ot,
                                    m = null == (r = this.hls.latestLevelDetails) ? void 0 : r.live;
                                if (!g && v && te(n) && !n.endList && m) this.resetFragmentErrors(e), this.treatAsGap(n), o.resolved = !0;
                                else if ((g || v) && h < f.maxNumRetry) {
                                    var p, y = bt(null == (p = t.response) ? void 0 : p.code),
                                        E = Rt(f, h);
                                    if (this.resetStartWhenNotLoaded(), this.retryDate = self.performance.now() + E, this.state = Ai.FRAG_LOADING_WAITING_RETRY, o.resolved = !0, y) return this.log("Waiting for connection (offline)"), this.retryDate = 1 / 0, void(t.reason = "offline");
                                    this.warn("Fragment " + n.sn + " of " + e + " " + n.level + " errored with " + t.details + ", retrying loading " + (h + 1) + "/" + f.maxNumRetry + " in " + E + "ms")
                                } else if (f) {
                                    if (this.resetFragmentErrors(e), !(h < f.maxNumRetry)) return void this.warn(t.details + " reached or exceeded max retry (" + h + ")");
                                    s || l === Pt || (o.resolved = !0)
                                } else this.state = l === _t ? Ai.WAITING_LEVEL : Ai.ERROR;
                                this.tickImmediate()
                            } else this.state = Ai.ERROR
                        }
                }, r.checkRetryDate = function() {
                    var e = self.performance.now(),
                        t = this.retryDate,
                        r = t === 1 / 0;
                    (!t || e >= t || r && !bt(0)) && (r && this.log("Connection restored (online)"), this.resetStartWhenNotLoaded(), this.state = Ai.IDLE)
                }, r.reduceLengthAndFlushBuffer = function(e) {
                    if (this.state === Ai.PARSING || this.state === Ai.PARSED) {
                        var t = e.frag,
                            r = e.parent,
                            i = this.getFwdBufferInfo(this.mediaBuffer, r),
                            n = i && i.len > .5;
                        n && this.reduceMaxBufferLength(i.len, (null == t ? void 0 : t.duration) || 10);
                        var a = !n;
                        return a && this.warn("Buffer full error while media.currentTime (" + this.getLoadPosition() + ") is not buffered, flush " + r + " buffer"), t && (this.fragmentTracker.removeFragment(t), this.nextLoadPosition = t.start), this.resetLoadingState(), a
                    }
                    return !1
                }, r.resetFragmentErrors = function(e) {
                    e === O && (this.fragCurrent = null), this.hls.hasEnoughToStart || (this.startFragRequested = !1), this.state !== Ai.STOPPED && (this.state = Ai.IDLE)
                }, r.afterBufferFlushed = function(e, t, r) {
                    if (e) {
                        var i = sr.getBuffered(e);
                        this.fragmentTracker.detectEvictedFragments(t, i, r), this.state === Ai.ENDED && this.resetLoadingState()
                    }
                }, r.resetLoadingState = function() {
                    this.log("Reset loading state"), this.fragCurrent = null, this.fragPrevious = null, this.state !== Ai.STOPPED && (this.state = Ai.IDLE)
                }, r.resetStartWhenNotLoaded = function() {
                    if (!this.hls.hasEnoughToStart) {
                        this.startFragRequested = !1;
                        var e = this.levelLastLoaded,
                            t = e ? e.details : null;
                        null != t && t.live ? (this.log("resetting startPosition for live start"), this.startPosition = -1, this.setStartPosition(t, t.fragmentStart), this.resetLoadingState()) : this.nextLoadPosition = this.startPosition
                    }
                }, r.resetWhenMissingContext = function(e) {
                    this.log("Loading context changed while buffering sn " + e.sn + " of " + this.playlistLabel() + " " + (-1 === e.level ? "<removed>" : e.level) + ". This chunk will not be buffered."), this.removeUnbufferedFrags(), this.resetStartWhenNotLoaded(), this.resetLoadingState()
                }, r.removeUnbufferedFrags = function(e) {
                    void 0 === e && (e = 0), this.fragmentTracker.removeFragmentsInRange(e, 1 / 0, this.playlistType, !1, !0)
                }, r.updateLevelTiming = function(e, t, r, i) {
                    var n = this,
                        a = r.details;
                    if (a) {
                        var s;
                        if (!Object.keys(e.elementaryStreams).reduce((function(t, s) {
                                var o = e.elementaryStreams[s];
                                if (o) {
                                    var l = o.endPTS - o.startPTS;
                                    if (l <= 0) return n.warn("Could not parse fragment " + e.sn + " " + s + " duration reliably (" + l + ")"), t || !1;
                                    var u = i ? 0 : ri(a, e, o.startPTS, o.endPTS, o.startDTS, o.endDTS, n);
                                    return n.hls.trigger(b.LEVEL_PTS_UPDATED, {
                                        details: a,
                                        level: r,
                                        drift: u,
                                        type: s,
                                        frag: e,
                                        start: o.startPTS,
                                        end: o.endPTS
                                    }), !0
                                }
                                return t
                            }), !1) && (0 === r.fragmentError && this.treatAsGap(e, r), null === (null == (s = this.transmuxer) ? void 0 : s.error))) {
                            var o = new Error("Found no media in fragment " + e.sn + " of " + this.playlistLabel() + " " + e.level + " resetting transmuxer to fallback to playlist timing");
                            if (this.warn(o.message), this.hls.trigger(b.ERROR, {
                                    type: I.MEDIA_ERROR,
                                    details: k.FRAG_PARSING_ERROR,
                                    fatal: !1,
                                    error: o,
                                    frag: e,
                                    reason: "Found no media in msn " + e.sn + " of " + this.playlistLabel() + ' "' + r.url + '"'
                                }), !this.hls) return;
                            this.resetTransmuxer()
                        }
                        this.state = Ai.PARSED, this.log("Parsed " + e.type + " sn: " + e.sn + (t ? " part: " + t.index : "") + " of " + this.fragInfo(e, !1, t) + ")"), this.hls.trigger(b.FRAG_PARSED, {
                            frag: e,
                            part: t
                        })
                    } else this.warn("level.details undefined")
                }, r.playlistLabel = function() {
                    return this.playlistType === w ? "level" : "track"
                }, r.fragInfo = function(e, t, r) {
                    var i, n;
                    return void 0 === t && (t = !0), this.playlistLabel() + " " + e.level + " (" + (r ? "part" : "frag") + ":[" + (null != (i = t && !r ? e.startPTS : (r || e).start) ? i : NaN).toFixed(3) + "-" + (null != (n = t && !r ? e.endPTS : (r || e).end) ? n : NaN).toFixed(3) + "]" + (r && "main" === e.type ? "INDEPENDENT=" + (r.independent ? "YES" : "NO") : "")
                }, r.treatAsGap = function(e, t) {
                    t && t.fragmentError++, e.gap = !0, this.fragmentTracker.removeFragment(e), this.fragmentTracker.fragBuffered(e, !0)
                }, r.resetTransmuxer = function() {
                    var e;
                    null == (e = this.transmuxer) || e.reset()
                }, r.recoverWorkerError = function(e) {
                    "demuxerWorker" === e.event && (this.fragmentTracker.removeAllFragments(), this.transmuxer && (this.transmuxer.destroy(), this.transmuxer = null), this.resetStartWhenNotLoaded(), this.resetLoadingState())
                }, i(t, [{
                    key: "startPositionValue",
                    get: function() {
                        var e = this.nextLoadPosition,
                            t = this.startPosition;
                        return -1 === t && e ? e : t
                    }
                }, {
                    key: "bufferingEnabled",
                    get: function() {
                        return this.buffering
                    }
                }, {
                    key: "inFlightFrag",
                    get: function() {
                        return {
                            frag: this.fragCurrent,
                            state: this.state
                        }
                    }
                }, {
                    key: "timelineOffset",
                    get: function() {
                        var e, t = this.config.timelineOffset;
                        return t ? (null == (e = this.getLevelDetails()) ? void 0 : e.appliedTimelineOffset) || t : 0
                    }
                }, {
                    key: "primaryPrefetch",
                    get: function() {
                        var e;
                        return !(!Ri(this.config) || !(null == (e = this.hls.interstitialsManager) || null == (e = e.playingItem) ? void 0 : e.event))
                    }
                }, {
                    key: "state",
                    get: function() {
                        return this._state
                    },
                    set: function(e) {
                        var t = this._state;
                        t !== e && (this._state = e, this.log(t + "->" + e))
                    }
                }])
            }(ir);

        function Ri(e) {
            return !!e.interstitialsController && !1 !== e.enableInterstitialPlayback
        }
        var Ii = function() {
            function e() {
                this.chunks = [], this.dataLength = 0
            }
            var t = e.prototype;
            return t.push = function(e) {
                this.chunks.push(e), this.dataLength += e.length
            }, t.flush = function() {
                var e, t = this.chunks,
                    r = this.dataLength;
                return t.length ? (e = 1 === t.length ? t[0] : function(e, t) {
                    for (var r = new Uint8Array(t), i = 0, n = 0; n < e.length; n++) {
                        var a = e[n];
                        r.set(a, i), i += a.length
                    }
                    return r
                }(t, r), this.reset(), e) : new Uint8Array(0)
            }, t.reset = function() {
                this.chunks.length = 0, this.dataLength = 0
            }, e
        }();

        function ki(e, t) {
            return t + 10 <= e.length && 51 === e[t] && 68 === e[t + 1] && 73 === e[t + 2] && e[t + 3] < 255 && e[t + 4] < 255 && e[t + 6] < 128 && e[t + 7] < 128 && e[t + 8] < 128 && e[t + 9] < 128
        }

        function bi(e, t) {
            return t + 10 <= e.length && 73 === e[t] && 68 === e[t + 1] && 51 === e[t + 2] && e[t + 3] < 255 && e[t + 4] < 255 && e[t + 6] < 128 && e[t + 7] < 128 && e[t + 8] < 128 && e[t + 9] < 128
        }

        function Di(e, t) {
            var r = 0;
            return r = (127 & e[t]) << 21, r |= (127 & e[t + 1]) << 14, r |= (127 & e[t + 2]) << 7, r |= 127 & e[t + 3]
        }

        function _i(e, t) {
            for (var r = t, i = 0; bi(e, t);) i += 10, i += Di(e, t + 6), ki(e, t + 10) && (i += 10), t += i;
            if (i > 0) return e.subarray(r, r + i)
        }

        function Pi(e, t) {
            return 255 === e[t] && 240 == (246 & e[t + 1])
        }

        function Ci(e, t) {
            return 1 & e[t + 1] ? 7 : 9
        }

        function wi(e, t) {
            return (3 & e[t + 3]) << 11 | e[t + 4] << 3 | (224 & e[t + 5]) >>> 5
        }

        function Oi(e, t) {
            return t + 1 < e.length && Pi(e, t)
        }

        function xi(e, t) {
            if (Oi(e, t)) {
                var r = Ci(e, t);
                if (t + r >= e.length) return !1;
                var i = wi(e, t);
                if (i <= r) return !1;
                var n = t + i;
                return n === e.length || Oi(e, n)
            }
            return !1
        }

        function Mi(e, t, r, i, n) {
            if (!e.samplerate) {
                var s = function(e, t, r, i) {
                    var n = t[r + 2],
                        a = n >> 2 & 15;
                    if (!(a > 12)) {
                        var s = 1 + (n >> 6 & 3),
                            o = t[r + 3] >> 6 & 3 | (1 & n) << 2,
                            l = "mp4a.40." + s,
                            u = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350][a],
                            d = a;
                        5 !== s && 29 !== s || (d -= 3);
                        var h = [s << 3 | (14 & d) >> 1, (1 & d) << 7 | o << 3];
                        return Y.log("manifest codec:" + i + ", parsed codec:" + l + ", channels:" + o + ", rate:" + u + " (ADTS object type:" + s + " sampling index:" + a + ")"), {
                            config: h,
                            samplerate: u,
                            channelCount: o,
                            codec: l,
                            parsedCodec: l,
                            manifestCodec: i
                        }
                    }
                    var f = new Error("invalid ADTS sampling index:" + a);
                    e.emit(b.ERROR, b.ERROR, {
                        type: I.MEDIA_ERROR,
                        details: k.FRAG_PARSING_ERROR,
                        fatal: !0,
                        error: f,
                        reason: f.message
                    })
                }(t, r, i, n);
                if (!s) return;
                a(e, s)
            }
        }

        function Fi(e) {
            return 9216e4 / e
        }

        function Ni(e, t, r, i, n) {
            var a, s = i + n * Fi(e.samplerate),
                o = function(e, t) {
                    var r = Ci(e, t);
                    if (t + r <= e.length) {
                        var i = wi(e, t) - r;
                        if (i > 0) return {
                            headerLength: r,
                            frameLength: i
                        }
                    }
                }(t, r);
            if (o) {
                var l = o.frameLength,
                    u = o.headerLength,
                    d = u + l,
                    h = Math.max(0, r + d - t.length);
                h ? (a = new Uint8Array(d - u)).set(t.subarray(r + u, t.length), 0) : a = t.subarray(r + u, r + d);
                var f = {
                    unit: a,
                    pts: s
                };
                return h || e.samples.push(f), {
                    sample: f,
                    length: d,
                    missing: h
                }
            }
            var c = t.length - r;
            return (a = new Uint8Array(c)).set(t.subarray(r, t.length), 0), {
                sample: {
                    unit: a,
                    pts: s
                },
                length: c,
                missing: -1
            }
        }

        function Ui(e, t) {
            return bi(e, t) && Di(e, t + 6) + 10 <= e.length - t
        }

        function Bi(e, t, r) {
            return void 0 === t && (t = 0), void 0 === r && (r = 1 / 0),
                function(e, t, r, i) {
                    var n = function(e) {
                            return e instanceof ArrayBuffer ? e : e.buffer
                        }(e),
                        a = 1;
                    "BYTES_PER_ELEMENT" in i && (a = i.BYTES_PER_ELEMENT);
                    var s, o = (s = e) && s.buffer instanceof ArrayBuffer && void 0 !== s.byteLength && void 0 !== s.byteOffset ? e.byteOffset : 0,
                        l = (o + e.byteLength) / a,
                        u = (o + t) / a,
                        d = Math.floor(Math.max(0, Math.min(u, l))),
                        h = Math.floor(Math.min(d + Math.max(r, 0), l));
                    return new i(n, d, h - d)
                }(e, t, r, Uint8Array)
        }

        function Gi(e) {
            var t = {
                key: e.type,
                description: "",
                data: "",
                mimeType: null,
                pictureType: null
            };
            if (!(e.size < 2))
                if (3 === e.data[0]) {
                    var r = e.data.subarray(1).indexOf(0);
                    if (-1 !== r) {
                        var i = q(Bi(e.data, 1, r)),
                            n = e.data[2 + r],
                            a = e.data.subarray(3 + r).indexOf(0);
                        if (-1 !== a) {
                            var s, o = q(Bi(e.data, 3 + r, a));
                            return s = "--\x3e" === i ? q(Bi(e.data, 4 + r + a)) : function(e) {
                                return e instanceof ArrayBuffer ? e : 0 == e.byteOffset && e.byteLength == e.buffer.byteLength ? e.buffer : new Uint8Array(e).buffer
                            }(e.data.subarray(4 + r + a)), t.mimeType = i, t.pictureType = n, t.description = o, t.data = s, t
                        }
                    }
                } else console.log("Ignore frame with unrecognized character encoding")
        }

        function Ki(e) {
            return "PRIV" === e.type ? function(e) {
                if (!(e.size < 2)) {
                    var t = q(e.data, !0),
                        r = new Uint8Array(e.data.subarray(t.length + 1));
                    return {
                        key: e.type,
                        info: t,
                        data: r.buffer
                    }
                }
            }(e) : "W" === e.type[0] ? function(e) {
                if ("WXXX" === e.type) {
                    if (e.size < 2) return;
                    var t = 1,
                        r = q(e.data.subarray(t), !0);
                    t += r.length + 1;
                    var i = q(e.data.subarray(t));
                    return {
                        key: e.type,
                        info: r,
                        data: i
                    }
                }
                var n = q(e.data);
                return {
                    key: e.type,
                    info: "",
                    data: n
                }
            }(e) : "APIC" === e.type ? Gi(e) : function(e) {
                if (!(e.size < 2)) {
                    if ("TXXX" === e.type) {
                        var t = 1,
                            r = q(e.data.subarray(t), !0);
                        t += r.length + 1;
                        var i = q(e.data.subarray(t));
                        return {
                            key: e.type,
                            info: r,
                            data: i
                        }
                    }
                    var n = q(e.data.subarray(1));
                    return {
                        key: e.type,
                        info: "",
                        data: n
                    }
                }
            }(e)
        }

        function Vi(e) {
            var t = String.fromCharCode(e[0], e[1], e[2], e[3]),
                r = Di(e, 4);
            return {
                type: t,
                size: r,
                data: e.subarray(10, 10 + r)
            }
        }
        var Hi = 10,
            Yi = 10;

        function Wi(e) {
            for (var t = 0, r = []; bi(e, t);) {
                var i = Di(e, t + 6);
                e[t + 5] >> 6 & 1 && (t += Hi);
                for (var n = (t += Hi) + i; t + Yi < n;) {
                    var a = Vi(e.subarray(t)),
                        s = Ki(a);
                    s && r.push(s), t += a.size + Hi
                }
                ki(e, t) && (t += Hi)
            }
            return r
        }

        function ji(e) {
            return e && "PRIV" === e.key && "com.apple.streaming.transportStreamTimestamp" === e.info
        }

        function qi(e) {
            if (8 === e.data.byteLength) {
                var t = new Uint8Array(e.data),
                    r = 1 & t[3],
                    i = (t[4] << 23) + (t[5] << 15) + (t[6] << 7) + t[7];
                return i /= 45, r && (i += 47721858.84), Math.round(i)
            }
        }

        function Xi(e) {
            for (var t = Wi(e), r = 0; r < t.length; r++) {
                var i = t[r];
                if (ji(i)) return qi(i)
            }
        }
        var Qi = function(e) {
            return e.audioId3 = "org.id3", e.dateRange = "com.apple.quicktime.HLS", e.emsg = "https://aomedia.org/emsg/ID3", e.misbklv = "urn:misb:KLV:bin:1910.1", e
        }({});

        function zi(e, t) {
            return void 0 === e && (e = ""), void 0 === t && (t = 9e4), {
                type: e,
                id: -1,
                pid: -1,
                inputTimeScale: t,
                sequenceNumber: -1,
                samples: [],
                dropped: 0
            }
        }
        var $i = function() {
                function e() {
                    this._audioTrack = void 0, this._id3Track = void 0, this.frameIndex = 0, this.cachedData = null, this.basePTS = null, this.initPTS = null, this.lastPTS = null
                }
                var t = e.prototype;
                return t.resetInitSegment = function(e, t, r, i) {
                    this._id3Track = {
                        type: "id3",
                        id: 3,
                        pid: -1,
                        inputTimeScale: 9e4,
                        sequenceNumber: 0,
                        samples: [],
                        dropped: 0
                    }
                }, t.resetTimeStamp = function(e) {
                    this.initPTS = e, this.resetContiguity()
                }, t.resetContiguity = function() {
                    this.basePTS = null, this.lastPTS = null, this.frameIndex = 0
                }, t.canParse = function(e, t) {
                    return !1
                }, t.appendFrame = function(e, t, r) {}, t.demux = function(e, t) {
                    this.cachedData && (e = Ae(this.cachedData, e), this.cachedData = null);
                    var r, i = _i(e, 0),
                        n = i ? i.length : 0,
                        a = this._audioTrack,
                        s = this._id3Track,
                        o = i ? Xi(i) : void 0,
                        l = e.length;
                    for ((null === this.basePTS || 0 === this.frameIndex && A(o)) && (this.basePTS = Zi(o, t, this.initPTS), this.lastPTS = this.basePTS), null === this.lastPTS && (this.lastPTS = this.basePTS), i && i.length > 0 && s.samples.push({
                            pts: this.lastPTS,
                            dts: this.lastPTS,
                            data: i,
                            type: Qi.audioId3,
                            duration: Number.POSITIVE_INFINITY
                        }); n < l;) {
                        if (this.canParse(e, n)) {
                            var u = this.appendFrame(a, e, n);
                            u ? (this.frameIndex++, this.lastPTS = u.sample.pts, r = n += u.length) : n = l
                        } else Ui(e, n) ? (i = _i(e, n), s.samples.push({
                            pts: this.lastPTS,
                            dts: this.lastPTS,
                            data: i,
                            type: Qi.audioId3,
                            duration: Number.POSITIVE_INFINITY
                        }), r = n += i.length) : n++;
                        if (n === l && r !== l) {
                            var d = e.slice(r);
                            this.cachedData ? this.cachedData = Ae(this.cachedData, d) : this.cachedData = d
                        }
                    }
                    return {
                        audioTrack: a,
                        videoTrack: zi(),
                        id3Track: s,
                        textTrack: zi()
                    }
                }, t.demuxSampleAes = function(e, t, r) {
                    return Promise.reject(new Error("[" + this + "] This demuxer does not support Sample-AES decryption"))
                }, t.flush = function(e) {
                    var t = this.cachedData;
                    return t && (this.cachedData = null, this.demux(t, 0)), {
                        audioTrack: this._audioTrack,
                        videoTrack: zi(),
                        id3Track: this._id3Track,
                        textTrack: zi()
                    }
                }, t.destroy = function() {
                    this.cachedData = null, this._audioTrack = this._id3Track = void 0
                }, e
            }(),
            Zi = function(e, t, r) {
                return A(e) ? 90 * e : 9e4 * t + (r ? 9e4 * r.baseTime / r.timescale : 0)
            },
            Ji = null,
            en = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
            tn = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3],
            rn = [
                [0, 72, 144, 12],
                [0, 0, 0, 0],
                [0, 72, 144, 12],
                [0, 144, 144, 12]
            ],
            nn = [0, 1, 1, 4];

        function an(e, t, r, i, n) {
            if (!(r + 24 > t.length)) {
                var a = sn(t, r);
                if (a && r + a.frameLength <= t.length) {
                    var s = i + n * (9e4 * a.samplesPerFrame / a.sampleRate),
                        o = {
                            unit: t.subarray(r, r + a.frameLength),
                            pts: s,
                            dts: s
                        };
                    return e.config = [], e.channelCount = a.channelCount, e.samplerate = a.sampleRate, e.samples.push(o), {
                        sample: o,
                        length: a.frameLength,
                        missing: 0
                    }
                }
            }
        }

        function sn(e, t) {
            var r = e[t + 1] >> 3 & 3,
                i = e[t + 1] >> 1 & 3,
                n = e[t + 2] >> 4 & 15,
                a = e[t + 2] >> 2 & 3;
            if (1 !== r && 0 !== n && 15 !== n && 3 !== a) {
                var s = e[t + 2] >> 1 & 1,
                    o = e[t + 3] >> 6,
                    l = 1e3 * en[14 * (3 === r ? 3 - i : 3 === i ? 3 : 4) + n - 1],
                    u = tn[3 * (3 === r ? 0 : 2 === r ? 1 : 2) + a],
                    d = 3 === o ? 1 : 2,
                    h = rn[r][i],
                    f = nn[i],
                    c = 8 * h * f,
                    g = Math.floor(h * l / u + s) * f;
                if (null === Ji) {
                    var v = (navigator.userAgent || "").match(/Chrome\/(\d+)/i);
                    Ji = v ? parseInt(v[1]) : 0
                }
                return !!Ji && Ji <= 87 && 2 === i && l >= 224e3 && 0 === o && (e[t + 3] = 128 | e[t + 3]), {
                    sampleRate: u,
                    channelCount: d,
                    frameLength: g,
                    samplesPerFrame: c
                }
            }
        }

        function on(e, t) {
            return 255 === e[t] && 224 == (224 & e[t + 1]) && 0 != (6 & e[t + 1])
        }

        function ln(e, t) {
            return t + 1 < e.length && on(e, t)
        }

        function un(e, t) {
            if (t + 1 < e.length && on(e, t)) {
                var r = sn(e, t),
                    i = 4;
                null != r && r.frameLength && (i = r.frameLength);
                var n = t + i;
                return n === e.length || ln(e, n)
            }
            return !1
        }
        var dn = function(e) {
                function t(t, r) {
                    var i;
                    return (i = e.call(this) || this).observer = void 0, i.config = void 0, i.observer = t, i.config = r, i
                }
                o(t, e);
                var r = t.prototype;
                return r.resetInitSegment = function(t, r, i, n) {
                    e.prototype.resetInitSegment.call(this, t, r, i, n), this._audioTrack = {
                        container: "audio/adts",
                        type: "audio",
                        id: 2,
                        pid: -1,
                        sequenceNumber: 0,
                        segmentCodec: "aac",
                        samples: [],
                        manifestCodec: r,
                        duration: n,
                        inputTimeScale: 9e4,
                        dropped: 0
                    }
                }, t.probe = function(e, t) {
                    if (!e) return !1;
                    var r = _i(e, 0),
                        i = (null == r ? void 0 : r.length) || 0;
                    if (un(e, i)) return !1;
                    for (var n = e.length; i < n; i++)
                        if (xi(e, i)) return t.log("ADTS sync word found !"), !0;
                    return !1
                }, r.canParse = function(e, t) {
                    return function(e, t) {
                        return function(e, t) {
                            return t + 5 < e.length
                        }(e, t) && Pi(e, t) && wi(e, t) <= e.length - t
                    }(e, t)
                }, r.appendFrame = function(e, t, r) {
                    Mi(e, this.observer, t, r, e.manifestCodec);
                    var i = Ni(e, t, r, this.basePTS, this.frameIndex);
                    if (i && 0 === i.missing) return i
                }, t
            }($i),
            hn = function(e, t) {
                var r = 0,
                    i = 5;
                t += i;
                for (var n = new Uint32Array(1), a = new Uint32Array(1), s = new Uint8Array(1); i > 0;) {
                    s[0] = e[t];
                    var o = Math.min(i, 8),
                        l = 8 - o;
                    a[0] = 4278190080 >>> 24 + l << l, n[0] = (s[0] & a[0]) >> l, r = r ? r << o | n[0] : n[0], t += 1, i -= o
                }
                return r
            },
            fn = function(e) {
                function t(t) {
                    var r;
                    return (r = e.call(this) || this).observer = void 0, r.observer = t, r
                }
                o(t, e);
                var r = t.prototype;
                return r.resetInitSegment = function(t, r, i, n) {
                    e.prototype.resetInitSegment.call(this, t, r, i, n), this._audioTrack = {
                        container: "audio/ac-3",
                        type: "audio",
                        id: 2,
                        pid: -1,
                        sequenceNumber: 0,
                        segmentCodec: "ac3",
                        samples: [],
                        manifestCodec: r,
                        duration: n,
                        inputTimeScale: 9e4,
                        dropped: 0
                    }
                }, r.canParse = function(e, t) {
                    return t + 64 < e.length
                }, r.appendFrame = function(e, t, r) {
                    var i = cn(e, t, r, this.basePTS, this.frameIndex);
                    if (-1 !== i) return {
                        sample: e.samples[e.samples.length - 1],
                        length: i,
                        missing: 0
                    }
                }, t.probe = function(e) {
                    if (!e) return !1;
                    var t = _i(e, 0);
                    if (!t) return !1;
                    var r = t.length;
                    return 11 === e[r] && 119 === e[r + 1] && void 0 !== Xi(t) && hn(e, r) < 16
                }, t
            }($i);

        function cn(e, t, r, i, n) {
            if (r + 8 > t.length) return -1;
            if (11 !== t[r] || 119 !== t[r + 1]) return -1;
            var a = t[r + 4] >> 6;
            if (a >= 3) return -1;
            var s = [48e3, 44100, 32e3][a],
                o = 63 & t[r + 4],
                l = 2 * [64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112, 121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240, 192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279, 384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 576, 448, 487, 672, 448, 488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152, 768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536, 1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920][3 * o + a];
            if (r + l > t.length) return -1;
            var u = t[r + 6] >> 5,
                d = 0;
            2 === u ? d += 2 : (1 & u && 1 !== u && (d += 2), 4 & u && (d += 2));
            var h = (t[r + 6] << 8 | t[r + 7]) >> 12 - d & 1,
                f = [2, 1, 2, 3, 3, 4, 4, 5][u] + h,
                c = t[r + 5] >> 3,
                g = 7 & t[r + 5],
                v = new Uint8Array([a << 6 | c << 1 | g >> 2, (3 & g) << 6 | u << 3 | h << 2 | o >> 4, o << 4 & 224]),
                m = i + n * (1536 / s * 9e4),
                p = t.subarray(r, r + l);
            return e.config = v, e.channelCount = f, e.samplerate = s, e.samples.push({
                unit: p,
                pts: m
            }), l
        }
        var gn = function(e) {
                function t() {
                    return e.apply(this, arguments) || this
                }
                o(t, e);
                var r = t.prototype;
                return r.resetInitSegment = function(t, r, i, n) {
                    e.prototype.resetInitSegment.call(this, t, r, i, n), this._audioTrack = {
                        container: "audio/mpeg",
                        type: "audio",
                        id: 2,
                        pid: -1,
                        sequenceNumber: 0,
                        segmentCodec: "mp3",
                        samples: [],
                        manifestCodec: r,
                        duration: n,
                        inputTimeScale: 9e4,
                        dropped: 0
                    }
                }, t.probe = function(e) {
                    if (!e) return !1;
                    var t = _i(e, 0),
                        r = (null == t ? void 0 : t.length) || 0;
                    if (t && 11 === e[r] && 119 === e[r + 1] && void 0 !== Xi(t) && hn(e, r) <= 16) return !1;
                    for (var i = e.length; r < i; r++)
                        if (un(e, r)) return Y.log("MPEG Audio sync word found !"), !0;
                    return !1
                }, r.canParse = function(e, t) {
                    return function(e, t) {
                        return on(e, t) && 4 <= e.length - t
                    }(e, t)
                }, r.appendFrame = function(e, t, r) {
                    if (null !== this.basePTS) return an(e, t, r, this.basePTS, this.frameIndex)
                }, t
            }($i),
            vn = /\/emsg[-/]ID3/i,
            mn = function() {
                function e(e, t) {
                    this.remainderData = null, this.timeOffset = 0, this.config = void 0, this.videoTrack = void 0, this.audioTrack = void 0, this.id3Track = void 0, this.txtTrack = void 0, this.config = t
                }
                var t = e.prototype;
                return t.resetTimeStamp = function() {}, t.resetInitSegment = function(e, t, r, i) {
                    var n = this.videoTrack = zi("video", 1),
                        a = this.audioTrack = zi("audio", 1),
                        s = this.txtTrack = zi("text", 1);
                    if (this.id3Track = zi("id3", 1), this.timeOffset = 0, null != e && e.byteLength) {
                        var o = ve(e);
                        if (o.video) {
                            var l = o.video,
                                u = l.id,
                                d = l.timescale,
                                h = l.codec,
                                f = l.supplemental;
                            n.id = u, n.timescale = s.timescale = d, n.codec = h, n.supplemental = f
                        }
                        if (o.audio) {
                            var c = o.audio,
                                g = c.id,
                                v = c.timescale,
                                m = c.codec;
                            a.id = g, a.timescale = v, a.codec = m
                        }
                        s.id = oe.text, n.sampleDuration = 0, n.duration = a.duration = i
                    }
                }, t.resetContiguity = function() {
                    this.remainderData = null
                }, e.probe = function(e) {
                    return function(e) {
                        for (var t = e.byteLength, r = 0; r < t;) {
                            var i = de(e, r);
                            if (i > 8 && 109 === e[r + 4] && 111 === e[r + 5] && 111 === e[r + 6] && 102 === e[r + 7]) return !0;
                            r = i > 1 ? r + i : t
                        }
                        return !1
                    }(e)
                }, t.demux = function(e, t) {
                    this.timeOffset = t;
                    var r = e,
                        i = this.videoTrack,
                        n = this.txtTrack;
                    if (this.config.progressive) {
                        this.remainderData && (r = Ae(this.remainderData, e));
                        var a = function(e) {
                            var t = {
                                    valid: null,
                                    remainder: null
                                },
                                r = ce(e, ["moof"]);
                            if (r.length < 2) return t.remainder = e, t;
                            var i = r[r.length - 1];
                            return t.valid = e.slice(0, i.byteOffset - 8), t.remainder = e.slice(i.byteOffset - 8), t
                        }(r);
                        this.remainderData = a.remainder, i.samples = a.valid || new Uint8Array
                    } else i.samples = r;
                    var s = this.extractID3Track(i, t);
                    return n.samples = Le(t, i), {
                        videoTrack: i,
                        audioTrack: this.audioTrack,
                        id3Track: s,
                        textTrack: this.txtTrack
                    }
                }, t.flush = function() {
                    var e = this.timeOffset,
                        t = this.videoTrack,
                        r = this.txtTrack;
                    t.samples = this.remainderData || new Uint8Array, this.remainderData = null;
                    var i = this.extractID3Track(t, this.timeOffset);
                    return r.samples = Le(e, t), {
                        videoTrack: t,
                        audioTrack: zi(),
                        id3Track: i,
                        textTrack: zi()
                    }
                }, t.extractID3Track = function(e, t) {
                    var r = this,
                        i = this.id3Track;
                    if (e.samples.length) {
                        var n = ce(e.samples, ["emsg"]);
                        n && n.forEach((function(e) {
                            var n = function(e) {
                                var t = e[0],
                                    r = "",
                                    i = "",
                                    n = 0,
                                    a = 0,
                                    s = 0,
                                    o = 0,
                                    l = 0,
                                    u = 0;
                                if (0 === t) {
                                    for (;
                                        "\0" !== le(e.subarray(u, u + 1));) r += le(e.subarray(u, u + 1)), u += 1;
                                    for (r += le(e.subarray(u, u + 1)), u += 1;
                                        "\0" !== le(e.subarray(u, u + 1));) i += le(e.subarray(u, u + 1)), u += 1;
                                    i += le(e.subarray(u, u + 1)), u += 1, n = de(e, 12), a = de(e, 16), o = de(e, 20), l = de(e, 24), u = 28
                                } else if (1 === t) {
                                    n = de(e, u += 4);
                                    var d = de(e, u += 4),
                                        h = de(e, u += 4);
                                    for (u += 4, s = Math.pow(2, 32) * d + h, L(s) || (s = Number.MAX_SAFE_INTEGER, Y.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")), o = de(e, u), l = de(e, u += 4), u += 4;
                                        "\0" !== le(e.subarray(u, u + 1));) r += le(e.subarray(u, u + 1)), u += 1;
                                    for (r += le(e.subarray(u, u + 1)), u += 1;
                                        "\0" !== le(e.subarray(u, u + 1));) i += le(e.subarray(u, u + 1)), u += 1;
                                    i += le(e.subarray(u, u + 1)), u += 1
                                }
                                return {
                                    schemeIdUri: r,
                                    value: i,
                                    timeScale: n,
                                    presentationTime: s,
                                    presentationTimeDelta: a,
                                    eventDuration: o,
                                    id: l,
                                    payload: e.subarray(u, e.byteLength)
                                }
                            }(e);
                            if (vn.test(n.schemeIdUri)) {
                                var a = pn(n, t),
                                    s = 4294967295 === n.eventDuration ? Number.POSITIVE_INFINITY : n.eventDuration / n.timeScale;
                                s <= .001 && (s = Number.POSITIVE_INFINITY);
                                var o = n.payload;
                                i.samples.push({
                                    data: o,
                                    len: o.byteLength,
                                    dts: a,
                                    pts: a,
                                    type: Qi.emsg,
                                    duration: s
                                })
                            } else if (r.config.enableEmsgKLVMetadata && n.schemeIdUri.startsWith("urn:misb:KLV:bin:1910.1")) {
                                var l = pn(n, t);
                                i.samples.push({
                                    data: n.payload,
                                    len: n.payload.byteLength,
                                    dts: l,
                                    pts: l,
                                    type: Qi.misbklv,
                                    duration: Number.POSITIVE_INFINITY
                                })
                            }
                        }))
                    }
                    return i
                }, t.demuxSampleAes = function(e, t, r) {
                    return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))
                }, t.destroy = function() {
                    this.config = null, this.remainderData = null, this.videoTrack = this.audioTrack = this.id3Track = this.txtTrack = void 0
                }, e
            }();

        function pn(e, t) {
            return A(e.presentationTime) ? e.presentationTime / e.timeScale : t + e.presentationTimeDelta / e.timeScale
        }
        var yn = function() {
                function e(e, t, r) {
                    this.keyData = void 0, this.decrypter = void 0, this.keyData = r, this.decrypter = new $t(t, {
                        removePKCS7Padding: !1
                    })
                }
                var t = e.prototype;
                return t.decryptBuffer = function(e) {
                    return this.decrypter.decrypt(e, this.keyData.key.buffer, this.keyData.iv.buffer, jt)
                }, t.decryptAacSample = function(e, t, r) {
                    var i = this,
                        n = e[t].unit;
                    if (!(n.length <= 16)) {
                        var a = n.subarray(16, n.length - n.length % 16),
                            s = a.buffer.slice(a.byteOffset, a.byteOffset + a.length);
                        this.decryptBuffer(s).then((function(a) {
                            var s = new Uint8Array(a);
                            n.set(s, 16), i.decrypter.isSync() || i.decryptAacSamples(e, t + 1, r)
                        })).catch(r)
                    }
                }, t.decryptAacSamples = function(e, t, r) {
                    for (;; t++) {
                        if (t >= e.length) return void r();
                        if (!(e[t].unit.length < 32 || (this.decryptAacSample(e, t, r), this.decrypter.isSync()))) return
                    }
                }, t.getAvcEncryptedData = function(e) {
                    for (var t = 16 * Math.floor((e.length - 48) / 160) + 16, r = new Int8Array(t), i = 0, n = 32; n < e.length - 16; n += 160, i += 16) r.set(e.subarray(n, n + 16), i);
                    return r
                }, t.getAvcDecryptedUnit = function(e, t) {
                    for (var r = new Uint8Array(t), i = 0, n = 32; n < e.length - 16; n += 160, i += 16) e.set(r.subarray(i, i + 16), n);
                    return e
                }, t.decryptAvcSample = function(e, t, r, i, n) {
                    var a = this,
                        s = be(n.data),
                        o = this.getAvcEncryptedData(s);
                    this.decryptBuffer(o.buffer).then((function(o) {
                        n.data = a.getAvcDecryptedUnit(s, o), a.decrypter.isSync() || a.decryptAvcSamples(e, t, r + 1, i)
                    })).catch(i)
                }, t.decryptAvcSamples = function(e, t, r, i) {
                    if (e instanceof Uint8Array) throw new Error("Cannot decrypt samples of type Uint8Array");
                    for (;; t++, r = 0) {
                        if (t >= e.length) return void i();
                        for (var n = e[t].units; !(r >= n.length); r++) {
                            var a = n[r];
                            if (!(a.data.length <= 48 || 1 !== a.type && 5 !== a.type || (this.decryptAvcSample(e, t, r, i, a), this.decrypter.isSync()))) return
                        }
                    }
                }, e
            }(),
            En = function() {
                function e() {
                    this.VideoSample = null
                }
                var t = e.prototype;
                return t.createVideoSample = function(e, t, r) {
                    return {
                        key: e,
                        frame: !1,
                        pts: t,
                        dts: r,
                        units: [],
                        length: 0
                    }
                }, t.getLastNalUnit = function(e) {
                    var t, r, i = this.VideoSample;
                    if (i && 0 !== i.units.length || (i = e[e.length - 1]), null != (t = i) && t.units) {
                        var n = i.units;
                        r = n[n.length - 1]
                    }
                    return r
                }, t.pushAccessUnit = function(e, t) {
                    if (e.units.length && e.frame) {
                        if (void 0 === e.pts) {
                            var r = t.samples,
                                i = r.length;
                            if (!i) return void t.dropped++;
                            var n = r[i - 1];
                            e.pts = n.pts, e.dts = n.dts
                        }
                        t.samples.push(e)
                    }
                }, t.parseNALu = function(e, t, r) {
                    var i, n, a = t.byteLength,
                        s = e.naluState || 0,
                        o = s,
                        l = [],
                        u = 0,
                        d = -1,
                        h = 0;
                    for (-1 === s && (d = 0, h = this.getNALuType(t, 0), s = 0, u = 1); u < a;)
                        if (i = t[u++], s)
                            if (1 !== s)
                                if (i)
                                    if (1 === i) {
                                        if (n = u - s - 1, d >= 0) {
                                            var f = {
                                                data: t.subarray(d, n),
                                                type: h
                                            };
                                            l.push(f)
                                        } else {
                                            var c = this.getLastNalUnit(e.samples);
                                            c && (o && u <= 4 - o && c.state && (c.data = c.data.subarray(0, c.data.byteLength - o)), n > 0 && (c.data = Ae(c.data, t.subarray(0, n)), c.state = 0))
                                        }
                                        u < a ? (d = u, h = this.getNALuType(t, u), s = 0) : s = -1
                                    } else s = 0;
                    else s = 3;
                    else s = i ? 0 : 2;
                    else s = i ? 0 : 1;
                    if (d >= 0 && s >= 0) {
                        var g = {
                            data: t.subarray(d, a),
                            type: h,
                            state: s
                        };
                        l.push(g)
                    }
                    if (0 === l.length) {
                        var v = this.getLastNalUnit(e.samples);
                        v && (v.data = Ae(v.data, t))
                    }
                    return e.naluState = s, l
                }, e
            }(),
            Tn = function() {
                function e(e) {
                    this.data = void 0, this.bytesAvailable = void 0, this.word = void 0, this.bitsAvailable = void 0, this.data = e, this.bytesAvailable = e.byteLength, this.word = 0, this.bitsAvailable = 0
                }
                var t = e.prototype;
                return t.loadWord = function() {
                    var e = this.data,
                        t = this.bytesAvailable,
                        r = e.byteLength - t,
                        i = new Uint8Array(4),
                        n = Math.min(4, t);
                    if (0 === n) throw new Error("no bytes available");
                    i.set(e.subarray(r, r + n)), this.word = new DataView(i.buffer).getUint32(0), this.bitsAvailable = 8 * n, this.bytesAvailable -= n
                }, t.skipBits = function(e) {
                    var t;
                    e = Math.min(e, 8 * this.bytesAvailable + this.bitsAvailable), this.bitsAvailable > e ? (this.word <<= e, this.bitsAvailable -= e) : (e -= this.bitsAvailable, e -= (t = e >> 3) << 3, this.bytesAvailable -= t, this.loadWord(), this.word <<= e, this.bitsAvailable -= e)
                }, t.readBits = function(e) {
                    var t = Math.min(this.bitsAvailable, e),
                        r = this.word >>> 32 - t;
                    if (e > 32 && Y.error("Cannot read more than 32 bits at a time"), this.bitsAvailable -= t, this.bitsAvailable > 0) this.word <<= t;
                    else {
                        if (!(this.bytesAvailable > 0)) throw new Error("no bits available");
                        this.loadWord()
                    }
                    return (t = e - t) > 0 && this.bitsAvailable ? r << t | this.readBits(t) : r
                }, t.skipLZ = function() {
                    var e;
                    for (e = 0; e < this.bitsAvailable; ++e)
                        if (0 != (this.word & 2147483648 >>> e)) return this.word <<= e, this.bitsAvailable -= e, e;
                    return this.loadWord(), e + this.skipLZ()
                }, t.skipUEG = function() {
                    this.skipBits(1 + this.skipLZ())
                }, t.skipEG = function() {
                    this.skipBits(1 + this.skipLZ())
                }, t.readUEG = function() {
                    var e = this.skipLZ();
                    return this.readBits(e + 1) - 1
                }, t.readEG = function() {
                    var e = this.readUEG();
                    return 1 & e ? 1 + e >>> 1 : -1 * (e >>> 1)
                }, t.readBoolean = function() {
                    return 1 === this.readBits(1)
                }, t.readUByte = function() {
                    return this.readBits(8)
                }, t.readUShort = function() {
                    return this.readBits(16)
                }, t.readUInt = function() {
                    return this.readBits(32)
                }, e
            }(),
            Sn = function(e) {
                function t() {
                    return e.apply(this, arguments) || this
                }
                o(t, e);
                var r = t.prototype;
                return r.parsePES = function(e, t, r, i) {
                    var n, a = this,
                        s = this.parseNALu(e, r.data, i),
                        o = this.VideoSample,
                        l = !1;
                    r.data = null, o && s.length && !e.audFound && (this.pushAccessUnit(o, e), o = this.VideoSample = this.createVideoSample(!1, r.pts, r.dts)), s.forEach((function(i) {
                        var s, u;
                        switch (i.type) {
                            case 1:
                                var d = !1;
                                n = !0;
                                var h, f = i.data;
                                if (l && f.length > 4) {
                                    var c = a.readSliceType(f);
                                    2 !== c && 4 !== c && 7 !== c && 9 !== c || (d = !0)
                                }
                                d && null != (h = o) && h.frame && !o.key && (a.pushAccessUnit(o, e), o = a.VideoSample = null), o || (o = a.VideoSample = a.createVideoSample(!0, r.pts, r.dts)), o.frame = !0, o.key = d;
                                break;
                            case 5:
                                n = !0, null != (s = o) && s.frame && !o.key && (a.pushAccessUnit(o, e), o = a.VideoSample = null), o || (o = a.VideoSample = a.createVideoSample(!0, r.pts, r.dts)), o.key = !0, o.frame = !0;
                                break;
                            case 6:
                                n = !0, ke(i.data, 1, r.pts, t.samples);
                                break;
                            case 7:
                                var g, v;
                                n = !0, l = !0;
                                var m = i.data,
                                    p = a.readSPS(m);
                                if (!e.sps || e.width !== p.width || e.height !== p.height || (null == (g = e.pixelRatio) ? void 0 : g[0]) !== p.pixelRatio[0] || (null == (v = e.pixelRatio) ? void 0 : v[1]) !== p.pixelRatio[1]) {
                                    e.width = p.width, e.height = p.height, e.pixelRatio = p.pixelRatio, e.sps = [m];
                                    for (var y = m.subarray(1, 4), E = "avc1.", T = 0; T < 3; T++) {
                                        var S = y[T].toString(16);
                                        S.length < 2 && (S = "0" + S), E += S
                                    }
                                    e.codec = E
                                }
                                break;
                            case 8:
                                n = !0, e.pps = [i.data];
                                break;
                            case 9:
                                n = !0, e.audFound = !0, null != (u = o) && u.frame && (a.pushAccessUnit(o, e), o = null), o || (o = a.VideoSample = a.createVideoSample(!1, r.pts, r.dts));
                                break;
                            case 12:
                                n = !0;
                                break;
                            default:
                                n = !1
                        }
                        o && n && o.units.push(i)
                    })), i && o && (this.pushAccessUnit(o, e), this.VideoSample = null)
                }, r.getNALuType = function(e, t) {
                    return 31 & e[t]
                }, r.readSliceType = function(e) {
                    var t = new Tn(e);
                    return t.readUByte(), t.readUEG(), t.readUEG()
                }, r.skipScalingList = function(e, t) {
                    for (var r = 8, i = 8, n = 0; n < e; n++) 0 !== i && (i = (r + t.readEG() + 256) % 256), r = 0 === i ? r : i
                }, r.readSPS = function(e) {
                    var t, r, i, n = new Tn(e),
                        a = 0,
                        s = 0,
                        o = 0,
                        l = 0,
                        u = n.readUByte.bind(n),
                        d = n.readBits.bind(n),
                        h = n.readUEG.bind(n),
                        f = n.readBoolean.bind(n),
                        c = n.skipBits.bind(n),
                        g = n.skipEG.bind(n),
                        v = n.skipUEG.bind(n),
                        m = this.skipScalingList.bind(this);
                    u();
                    var p = u();
                    if (d(5), c(3), u(), v(), 100 === p || 110 === p || 122 === p || 244 === p || 44 === p || 83 === p || 86 === p || 118 === p || 128 === p) {
                        var y = h();
                        if (3 === y && c(1), v(), v(), c(1), f())
                            for (r = 3 !== y ? 8 : 12, i = 0; i < r; i++) f() && m(i < 6 ? 16 : 64, n)
                    }
                    v();
                    var E = h();
                    if (0 === E) h();
                    else if (1 === E)
                        for (c(1), g(), g(), t = h(), i = 0; i < t; i++) g();
                    v(), c(1);
                    var T = h(),
                        S = h(),
                        A = d(1);
                    0 === A && c(1), c(1), f() && (a = h(), s = h(), o = h(), l = h());
                    var L = [1, 1];
                    if (f() && f()) switch (u()) {
                        case 1:
                            L = [1, 1];
                            break;
                        case 2:
                            L = [12, 11];
                            break;
                        case 3:
                            L = [10, 11];
                            break;
                        case 4:
                            L = [16, 11];
                            break;
                        case 5:
                            L = [40, 33];
                            break;
                        case 6:
                            L = [24, 11];
                            break;
                        case 7:
                            L = [20, 11];
                            break;
                        case 8:
                            L = [32, 11];
                            break;
                        case 9:
                            L = [80, 33];
                            break;
                        case 10:
                            L = [18, 11];
                            break;
                        case 11:
                            L = [15, 11];
                            break;
                        case 12:
                            L = [64, 33];
                            break;
                        case 13:
                            L = [160, 99];
                            break;
                        case 14:
                            L = [4, 3];
                            break;
                        case 15:
                            L = [3, 2];
                            break;
                        case 16:
                            L = [2, 1];
                            break;
                        case 255:
                            L = [u() << 8 | u(), u() << 8 | u()]
                    }
                    return {
                        width: Math.ceil(16 * (T + 1) - 2 * a - 2 * s),
                        height: (2 - A) * (S + 1) * 16 - (A ? 2 : 4) * (o + l),
                        pixelRatio: L
                    }
                }, t
            }(En),
            An = function(e) {
                function t() {
                    for (var t, r = arguments.length, i = new Array(r), n = 0; n < r; n++) i[n] = arguments[n];
                    return (t = e.call.apply(e, [this].concat(i)) || this).initVPS = null, t
                }
                o(t, e);
                var r = t.prototype;
                return r.parsePES = function(e, t, r, i) {
                    var n, s = this,
                        o = this.parseNALu(e, r.data, i),
                        l = this.VideoSample,
                        u = !1;
                    r.data = null, l && o.length && !e.audFound && (this.pushAccessUnit(l, e), l = this.VideoSample = this.createVideoSample(!1, r.pts, r.dts)), o.forEach((function(i) {
                        var o, d;
                        switch (i.type) {
                            case 0:
                            case 1:
                            case 2:
                            case 3:
                            case 4:
                            case 5:
                            case 6:
                            case 7:
                            case 8:
                            case 9:
                                l || (l = s.VideoSample = s.createVideoSample(!1, r.pts, r.dts)), l.frame = !0, n = !0;
                                break;
                            case 16:
                            case 17:
                            case 18:
                            case 21:
                                var h;
                                n = !0, u && null != (h = l) && h.frame && !l.key && (s.pushAccessUnit(l, e), l = s.VideoSample = null), l || (l = s.VideoSample = s.createVideoSample(!0, r.pts, r.dts)), l.key = !0, l.frame = !0;
                                break;
                            case 19:
                            case 20:
                                n = !0, null != (o = l) && o.frame && !l.key && (s.pushAccessUnit(l, e), l = s.VideoSample = null), l || (l = s.VideoSample = s.createVideoSample(!0, r.pts, r.dts)), l.key = !0, l.frame = !0;
                                break;
                            case 39:
                                n = !0, ke(i.data, 2, r.pts, t.samples);
                                break;
                            case 32:
                                n = !0, e.vps || ("object" != typeof e.params && (e.params = {}), e.params = a(e.params, s.readVPS(i.data)), s.initVPS = i.data), e.vps = [i.data];
                                break;
                            case 33:
                                if (n = !0, u = !0, void 0 === e.vps || e.vps[0] === s.initVPS || void 0 === e.sps || s.matchSPS(e.sps[0], i.data) || (s.initVPS = e.vps[0], e.sps = e.pps = void 0), !e.sps) {
                                    var f = s.readSPS(i.data);
                                    for (var c in e.width = f.width, e.height = f.height, e.pixelRatio = f.pixelRatio, e.codec = f.codecString, e.sps = [], "object" != typeof e.params && (e.params = {}), f.params) e.params[c] = f.params[c]
                                }
                                s.pushParameterSet(e.sps, i.data, e.vps), l || (l = s.VideoSample = s.createVideoSample(!0, r.pts, r.dts)), l.key = !0;
                                break;
                            case 34:
                                if (n = !0, "object" == typeof e.params) {
                                    if (!e.pps) {
                                        e.pps = [];
                                        var g = s.readPPS(i.data);
                                        for (var v in g) e.params[v] = g[v]
                                    }
                                    s.pushParameterSet(e.pps, i.data, e.vps)
                                }
                                break;
                            case 35:
                                n = !0, e.audFound = !0, null != (d = l) && d.frame && (s.pushAccessUnit(l, e), l = null), l || (l = s.VideoSample = s.createVideoSample(!1, r.pts, r.dts));
                                break;
                            default:
                                n = !1
                        }
                        l && n && l.units.push(i)
                    })), i && l && (this.pushAccessUnit(l, e), this.VideoSample = null)
                }, r.pushParameterSet = function(e, t, r) {
                    (r && r[0] === this.initVPS || !r && !e.length) && e.push(t)
                }, r.getNALuType = function(e, t) {
                    return (126 & e[t]) >>> 1
                }, r.ebsp2rbsp = function(e) {
                    for (var t = new Uint8Array(e.byteLength), r = 0, i = 0; i < e.byteLength; i++) i >= 2 && 3 === e[i] && 0 === e[i - 1] && 0 === e[i - 2] || (t[r] = e[i], r++);
                    return new Uint8Array(t.buffer, 0, r)
                }, r.pushAccessUnit = function(t, r) {
                    e.prototype.pushAccessUnit.call(this, t, r), this.initVPS && (this.initVPS = null)
                }, r.readVPS = function(e) {
                    var t = new Tn(e);
                    return t.readUByte(), t.readUByte(), t.readBits(4), t.skipBits(2), t.readBits(6), {
                        numTemporalLayers: t.readBits(3) + 1,
                        temporalIdNested: t.readBoolean()
                    }
                }, r.readSPS = function(e) {
                    var t = new Tn(this.ebsp2rbsp(e));
                    t.readUByte(), t.readUByte(), t.readBits(4);
                    var r = t.readBits(3);
                    t.readBoolean();
                    for (var i = t.readBits(2), n = t.readBoolean(), a = t.readBits(5), s = t.readUByte(), o = t.readUByte(), l = t.readUByte(), u = t.readUByte(), d = t.readUByte(), h = t.readUByte(), f = t.readUByte(), c = t.readUByte(), g = t.readUByte(), v = t.readUByte(), m = t.readUByte(), p = [], y = [], E = 0; E < r; E++) p.push(t.readBoolean()), y.push(t.readBoolean());
                    if (r > 0)
                        for (var T = r; T < 8; T++) t.readBits(2);
                    for (var S = 0; S < r; S++) p[S] && (t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte()), y[S] && t.readUByte();
                    t.readUEG();
                    var A = t.readUEG();
                    3 == A && t.skipBits(1);
                    var L = t.readUEG(),
                        R = t.readUEG(),
                        I = t.readBoolean(),
                        k = 0,
                        b = 0,
                        D = 0,
                        _ = 0;
                    I && (k += t.readUEG(), b += t.readUEG(), D += t.readUEG(), _ += t.readUEG());
                    for (var P = t.readUEG(), C = t.readUEG(), w = t.readUEG(), O = t.readBoolean() ? 0 : r; O <= r; O++) t.skipUEG(), t.skipUEG(), t.skipUEG();
                    if (t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.readBoolean() && t.readBoolean())
                        for (var x = 0; x < 4; x++)
                            for (var M = 0; M < (3 === x ? 2 : 6); M++)
                                if (t.readBoolean()) {
                                    var F = Math.min(64, 1 << 4 + (x << 1));
                                    x > 1 && t.readEG();
                                    for (var N = 0; N < F; N++) t.readEG()
                                } else t.readUEG();
                    t.readBoolean(), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.skipUEG(), t.skipUEG(), t.readBoolean());
                    for (var U = t.readUEG(), B = 0, G = 0; G < U; G++) {
                        var K = !1;
                        if (0 !== G && (K = t.readBoolean()), K) {
                            G === U && t.readUEG(), t.readBoolean(), t.readUEG();
                            for (var V = 0, H = 0; H <= B; H++) {
                                var Y = t.readBoolean(),
                                    W = !1;
                                Y || (W = t.readBoolean()), (Y || W) && V++
                            }
                            B = V
                        } else {
                            var j = t.readUEG(),
                                q = t.readUEG();
                            B = j + q;
                            for (var X = 0; X < j; X++) t.readUEG(), t.readBoolean();
                            for (var Q = 0; Q < q; Q++) t.readUEG(), t.readBoolean()
                        }
                    }
                    if (t.readBoolean())
                        for (var z = t.readUEG(), $ = 0; $ < z; $++) {
                            for (var Z = 0; Z < w + 4; Z++) t.readBits(1);
                            t.readBits(1)
                        }
                    var J = 0,
                        ee = 1,
                        te = 1,
                        re = !0,
                        ie = 1,
                        ne = 0;
                    if (t.readBoolean(), t.readBoolean(), t.readBoolean()) {
                        if (t.readBoolean()) {
                            var ae = t.readUByte();
                            ae > 0 && ae < 16 ? (ee = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][ae - 1], te = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][ae - 1]) : 255 === ae && (ee = t.readBits(16), te = t.readBits(16))
                        }
                        if (t.readBoolean() && t.readBoolean(), t.readBoolean() && (t.readBits(3), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.readUByte(), t.readUByte())), t.readBoolean() && (t.readUEG(), t.readUEG()), t.readBoolean(), t.readBoolean(), t.readBoolean(), t.readBoolean() && (t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG()), t.readBoolean() && (ie = t.readBits(32), ne = t.readBits(32), t.readBoolean() && t.readUEG(), t.readBoolean())) {
                            var se = t.readBoolean(),
                                oe = t.readBoolean(),
                                le = !1;
                            (se || oe) && ((le = t.readBoolean()) && (t.readUByte(), t.readBits(5), t.readBoolean(), t.readBits(5)), t.readBits(4), t.readBits(4), le && t.readBits(4), t.readBits(5), t.readBits(5), t.readBits(5));
                            for (var ue = 0; ue <= r; ue++) {
                                var de = !1;
                                (re = t.readBoolean()) || t.readBoolean() ? t.readEG() : de = t.readBoolean();
                                var he = de ? 1 : t.readUEG() + 1;
                                if (se)
                                    for (var fe = 0; fe < he; fe++) t.readUEG(), t.readUEG(), le && (t.readUEG(), t.readUEG()), t.skipBits(1);
                                if (oe)
                                    for (var ce = 0; ce < he; ce++) t.readUEG(), t.readUEG(), le && (t.readUEG(), t.readUEG()), t.skipBits(1)
                            }
                        }
                        t.readBoolean() && (t.readBoolean(), t.readBoolean(), t.readBoolean(), J = t.readUEG())
                    }
                    var ge = L,
                        ve = R;
                    if (I) {
                        var me = 1,
                            pe = 1;
                        1 === A ? me = pe = 2 : 2 == A && (me = 2), ge = L - me * b - me * k, ve = R - pe * _ - pe * D
                    }
                    for (var ye = i ? ["A", "B", "C"][i] : "", Ee = s << 24 | o << 16 | l << 8 | u, Te = 0, Se = 0; Se < 32; Se++) Te = (Te | (Ee >> Se & 1) << 31 - Se) >>> 0;
                    var Ae = Te.toString(16);
                    return 1 === a && "2" === Ae && (Ae = "6"), {
                        codecString: "hvc1." + ye + a + "." + Ae + "." + (n ? "H" : "L") + m + ".B0",
                        params: {
                            general_tier_flag: n,
                            general_profile_idc: a,
                            general_profile_space: i,
                            general_profile_compatibility_flags: [s, o, l, u],
                            general_constraint_indicator_flags: [d, h, f, c, g, v],
                            general_level_idc: m,
                            bit_depth: P + 8,
                            bit_depth_luma_minus8: P,
                            bit_depth_chroma_minus8: C,
                            min_spatial_segmentation_idc: J,
                            chroma_format_idc: A,
                            frame_rate: {
                                fixed: re,
                                fps: ne / ie
                            }
                        },
                        width: ge,
                        height: ve,
                        pixelRatio: [ee, te]
                    }
                }, r.readPPS = function(e) {
                    var t = new Tn(this.ebsp2rbsp(e));
                    t.readUByte(), t.readUByte(), t.skipUEG(), t.skipUEG(), t.skipBits(2), t.skipBits(3), t.skipBits(2), t.skipUEG(), t.skipUEG(), t.skipEG(), t.skipBits(2), t.readBoolean() && t.skipUEG(), t.skipEG(), t.skipEG(), t.skipBits(4);
                    var r = t.readBoolean(),
                        i = t.readBoolean(),
                        n = 1;
                    return i && r ? n = 0 : i ? n = 3 : r && (n = 2), {
                        parallelismType: n
                    }
                }, r.matchSPS = function(e, t) {
                    return String.fromCharCode.apply(null, e).substr(3) === String.fromCharCode.apply(null, t).substr(3)
                }, t
            }(En),
            Ln = 188,
            Rn = function() {
                function e(e, t, r, i) {
                    this.logger = void 0, this.observer = void 0, this.config = void 0, this.typeSupported = void 0, this.sampleAes = null, this.pmtParsed = !1, this.audioCodec = void 0, this.videoCodec = void 0, this._pmtId = -1, this._videoTrack = void 0, this._audioTrack = void 0, this._id3Track = void 0, this._txtTrack = void 0, this.aacOverFlow = null, this.remainderData = null, this.videoParser = void 0, this.observer = e, this.config = t, this.typeSupported = r, this.logger = i, this.videoParser = null
                }
                e.probe = function(t, r) {
                    var i = e.syncOffset(t);
                    return i > 0 && r.warn("MPEG2-TS detected but first sync word found @ offset " + i), -1 !== i
                }, e.syncOffset = function(e) {
                    for (var t = e.length, r = Math.min(940, t - Ln) + 1, i = 0; i < r;) {
                        for (var n = !1, a = -1, s = 0, o = i; o < t; o += Ln) {
                            if (71 !== e[o] || t - o !== Ln && 71 !== e[o + Ln]) {
                                if (s) return -1;
                                break
                            }
                            if (s++, -1 === a && 0 !== (a = o) && (r = Math.min(a + 18612, e.length - Ln) + 1), n || (n = 0 === In(e, o)), n && s > 1 && (0 === a && s > 2 || o + Ln > r)) return a
                        }
                        i++
                    }
                    return -1
                }, e.createTrack = function(e, t) {
                    return {
                        container: "video" === e || "audio" === e ? "video/mp2t" : void 0,
                        type: e,
                        id: oe[e],
                        pid: -1,
                        inputTimeScale: 9e4,
                        sequenceNumber: 0,
                        samples: [],
                        dropped: 0,
                        duration: "audio" === e ? t : void 0
                    }
                };
                var t = e.prototype;
                return t.resetInitSegment = function(t, r, i, n) {
                    this.pmtParsed = !1, this._pmtId = -1, this._videoTrack = e.createTrack("video"), this._videoTrack.duration = n, this._audioTrack = e.createTrack("audio", n), this._id3Track = e.createTrack("id3"), this._txtTrack = e.createTrack("text"), this._audioTrack.segmentCodec = "aac", this.videoParser = null, this.aacOverFlow = null, this.remainderData = null, this.audioCodec = r, this.videoCodec = i
                }, t.resetTimeStamp = function() {}, t.resetContiguity = function() {
                    var e = this._audioTrack,
                        t = this._videoTrack,
                        r = this._id3Track;
                    e && (e.pesData = null), t && (t.pesData = null), r && (r.pesData = null), this.aacOverFlow = null, this.remainderData = null
                }, t.demux = function(t, r, i, n) {
                    var a;
                    void 0 === i && (i = !1), void 0 === n && (n = !1), i || (this.sampleAes = null);
                    var s = this._videoTrack,
                        o = this._audioTrack,
                        l = this._id3Track,
                        u = this._txtTrack,
                        d = s.pid,
                        h = s.pesData,
                        f = o.pid,
                        c = l.pid,
                        g = o.pesData,
                        v = l.pesData,
                        m = null,
                        p = this.pmtParsed,
                        y = this._pmtId,
                        E = t.length;
                    if (this.remainderData && (E = (t = Ae(this.remainderData, t)).length, this.remainderData = null), E < Ln && !n) return this.remainderData = t, {
                        audioTrack: o,
                        videoTrack: s,
                        id3Track: l,
                        textTrack: u
                    };
                    var T = Math.max(0, e.syncOffset(t));
                    (E -= (E - T) % Ln) < t.byteLength && !n && (this.remainderData = new Uint8Array(t.buffer, E, t.buffer.byteLength - E));
                    for (var S = 0, A = T; A < E; A += Ln)
                        if (71 === t[A]) {
                            var L = !!(64 & t[A + 1]),
                                R = In(t, A),
                                I = void 0;
                            if ((48 & t[A + 3]) >> 4 > 1) {
                                if ((I = A + 5 + t[A + 4]) === A + Ln) continue
                            } else I = A + 4;
                            switch (R) {
                                case d:
                                    L && (h && (a = Pn(h, this.logger)) && (this.readyVideoParser(s.segmentCodec), null !== this.videoParser && this.videoParser.parsePES(s, u, a, !1)), h = {
                                        data: [],
                                        size: 0
                                    }), h && (h.data.push(t.subarray(I, A + Ln)), h.size += A + Ln - I);
                                    break;
                                case f:
                                    if (L) {
                                        if (g && (a = Pn(g, this.logger))) switch (o.segmentCodec) {
                                            case "aac":
                                                this.parseAACPES(o, a);
                                                break;
                                            case "mp3":
                                                this.parseMPEGPES(o, a);
                                                break;
                                            case "ac3":
                                                this.parseAC3PES(o, a)
                                        }
                                        g = {
                                            data: [],
                                            size: 0
                                        }
                                    }
                                    g && (g.data.push(t.subarray(I, A + Ln)), g.size += A + Ln - I);
                                    break;
                                case c:
                                    L && (v && (a = Pn(v, this.logger)) && this.parseID3PES(l, a), v = {
                                        data: [],
                                        size: 0
                                    }), v && (v.data.push(t.subarray(I, A + Ln)), v.size += A + Ln - I);
                                    break;
                                case 0:
                                    L && (I += t[I] + 1), y = this._pmtId = kn(t, I);
                                    break;
                                case y:
                                    L && (I += t[I] + 1);
                                    var k = bn(t, I, this.typeSupported, i, this.observer, this.logger);
                                    (d = k.videoPid) > 0 && (s.pid = d, s.segmentCodec = k.segmentVideoCodec), (f = k.audioPid) > 0 && (o.pid = f, o.segmentCodec = k.segmentAudioCodec), (c = k.id3Pid) > 0 && (l.pid = c), null === m || p || (this.logger.warn("MPEG-TS PMT found at " + A + " after unknown PID '" + m + "'. Backtracking to sync byte @" + T + " to parse all TS packets."), m = null, A = T - 188), p = this.pmtParsed = !0;
                                    break;
                                case 17:
                                case 8191:
                                    break;
                                default:
                                    m = R
                            }
                        } else S++;
                    S > 0 && Dn(this.observer, new Error("Found " + S + " TS packet/s that do not start with 0x47"), void 0, this.logger), s.pesData = h, o.pesData = g, l.pesData = v;
                    var b = {
                        audioTrack: o,
                        videoTrack: s,
                        id3Track: l,
                        textTrack: u
                    };
                    return n && this.extractRemainingSamples(b), b
                }, t.flush = function() {
                    var e, t = this.remainderData;
                    return this.remainderData = null, e = t ? this.demux(t, -1, !1, !0) : {
                        videoTrack: this._videoTrack,
                        audioTrack: this._audioTrack,
                        id3Track: this._id3Track,
                        textTrack: this._txtTrack
                    }, this.extractRemainingSamples(e), this.sampleAes ? this.decrypt(e, this.sampleAes) : e
                }, t.extractRemainingSamples = function(e) {
                    var t, r = e.audioTrack,
                        i = e.videoTrack,
                        n = e.id3Track,
                        a = e.textTrack,
                        s = i.pesData,
                        o = r.pesData,
                        l = n.pesData;
                    if (s && (t = Pn(s, this.logger)) ? (this.readyVideoParser(i.segmentCodec), null !== this.videoParser && (this.videoParser.parsePES(i, a, t, !0), i.pesData = null)) : i.pesData = s, o && (t = Pn(o, this.logger))) {
                        switch (r.segmentCodec) {
                            case "aac":
                                this.parseAACPES(r, t);
                                break;
                            case "mp3":
                                this.parseMPEGPES(r, t);
                                break;
                            case "ac3":
                                this.parseAC3PES(r, t)
                        }
                        r.pesData = null
                    } else null != o && o.size && this.logger.log("last AAC PES packet truncated,might overlap between fragments"), r.pesData = o;
                    l && (t = Pn(l, this.logger)) ? (this.parseID3PES(n, t), n.pesData = null) : n.pesData = l
                }, t.demuxSampleAes = function(e, t, r) {
                    var i = this.demux(e, r, !0, !this.config.progressive),
                        n = this.sampleAes = new yn(this.observer, this.config, t);
                    return this.decrypt(i, n)
                }, t.readyVideoParser = function(e) {
                    null === this.videoParser && ("avc" === e ? this.videoParser = new Sn : "hevc" === e && (this.videoParser = new An))
                }, t.decrypt = function(e, t) {
                    return new Promise((function(r) {
                        var i = e.audioTrack,
                            n = e.videoTrack;
                        i.samples && "aac" === i.segmentCodec ? t.decryptAacSamples(i.samples, 0, (function() {
                            n.samples ? t.decryptAvcSamples(n.samples, 0, 0, (function() {
                                r(e)
                            })) : r(e)
                        })) : n.samples && t.decryptAvcSamples(n.samples, 0, 0, (function() {
                            r(e)
                        }))
                    }))
                }, t.destroy = function() {
                    this.observer && this.observer.removeAllListeners(), this.config = this.logger = this.observer = null, this.aacOverFlow = this.videoParser = this.remainderData = this.sampleAes = null, this._videoTrack = this._audioTrack = this._id3Track = this._txtTrack = void 0
                }, t.parseAACPES = function(e, t) {
                    var r, i, n, a = 0,
                        s = this.aacOverFlow,
                        o = t.data;
                    if (s) {
                        this.aacOverFlow = null;
                        var l = s.missing,
                            u = s.sample.unit.byteLength;
                        if (-1 === l) o = Ae(s.sample.unit, o);
                        else {
                            var d = u - l;
                            s.sample.unit.set(o.subarray(0, l), d), e.samples.push(s.sample), a = s.missing
                        }
                    }
                    for (r = a, i = o.length; r < i - 1 && !Oi(o, r); r++);
                    if (r !== a) {
                        var h, f = r < i - 1;
                        if (h = f ? "AAC PES did not start with ADTS header,offset:" + r : "No ADTS header found in AAC PES", Dn(this.observer, new Error(h), f, this.logger), !f) return
                    }
                    if (Mi(e, this.observer, o, r, this.audioCodec), void 0 !== t.pts) n = t.pts;
                    else {
                        if (!s) return void this.logger.warn("[tsdemuxer]: AAC PES unknown PTS");
                        var c = Fi(e.samplerate);
                        n = s.sample.pts + c
                    }
                    for (var g, v = 0; r < i;) {
                        if (r += (g = Ni(e, o, r, n, v)).length, g.missing) {
                            this.aacOverFlow = g;
                            break
                        }
                        for (v++; r < i - 1 && !Oi(o, r); r++);
                    }
                }, t.parseMPEGPES = function(e, t) {
                    var r = t.data,
                        i = r.length,
                        n = 0,
                        a = 0,
                        s = t.pts;
                    if (void 0 !== s)
                        for (; a < i;)
                            if (ln(r, a)) {
                                var o = an(e, r, a, s, n);
                                if (!o) break;
                                a += o.length, n++
                            } else a++;
                    else this.logger.warn("[tsdemuxer]: MPEG PES unknown PTS")
                }, t.parseAC3PES = function(e, t) {
                    var r = t.data,
                        i = t.pts;
                    if (void 0 !== i)
                        for (var n, a = r.length, s = 0, o = 0; o < a && (n = cn(e, r, o, i, s++)) > 0;) o += n;
                    else this.logger.warn("[tsdemuxer]: AC3 PES unknown PTS")
                }, t.parseID3PES = function(e, t) {
                    if (void 0 !== t.pts) {
                        var r = a({}, t, {
                            type: this._videoTrack ? Qi.emsg : Qi.audioId3,
                            duration: Number.POSITIVE_INFINITY
                        });
                        e.samples.push(r)
                    } else this.logger.warn("[tsdemuxer]: ID3 PES unknown PTS")
                }, e
            }();

        function In(e, t) {
            return ((31 & e[t + 1]) << 8) + e[t + 2]
        }

        function kn(e, t) {
            return (31 & e[t + 10]) << 8 | e[t + 11]
        }

        function bn(e, t, r, i, n, a) {
            var s = {
                    audioPid: -1,
                    videoPid: -1,
                    id3Pid: -1,
                    segmentVideoCodec: "avc",
                    segmentAudioCodec: "aac"
                },
                o = t + 3 + ((15 & e[t + 1]) << 8 | e[t + 2]) - 4;
            for (t += 12 + ((15 & e[t + 10]) << 8 | e[t + 11]); t < o;) {
                var l = In(e, t),
                    u = (15 & e[t + 3]) << 8 | e[t + 4];
                switch (e[t]) {
                    case 207:
                        if (!i) {
                            _n("ADTS AAC", a);
                            break
                        }
                    case 15:
                        -1 === s.audioPid && (s.audioPid = l);
                        break;
                    case 21:
                        -1 === s.id3Pid && (s.id3Pid = l);
                        break;
                    case 219:
                        if (!i) {
                            _n("H.264", a);
                            break
                        }
                    case 27:
                        -1 === s.videoPid && (s.videoPid = l);
                        break;
                    case 3:
                    case 4:
                        r.mpeg || r.mp3 ? -1 === s.audioPid && (s.audioPid = l, s.segmentAudioCodec = "mp3") : a.log("MPEG audio found, not supported in this browser");
                        break;
                    case 193:
                        if (!i) {
                            _n("AC-3", a);
                            break
                        }
                    case 129:
                        r.ac3 ? -1 === s.audioPid && (s.audioPid = l, s.segmentAudioCodec = "ac3") : a.log("AC-3 audio found, not supported in this browser");
                        break;
                    case 6:
                        if (-1 === s.audioPid && u > 0)
                            for (var d = t + 5, h = u; h > 2;) {
                                106 === e[d] && (!0 !== r.ac3 ? a.log("AC-3 audio found, not supported in this browser for now") : (s.audioPid = l, s.segmentAudioCodec = "ac3"));
                                var f = e[d + 1] + 2;
                                d += f, h -= f
                            }
                        break;
                    case 194:
                    case 135:
                        return Dn(n, new Error("Unsupported EC-3 in M2TS found"), void 0, a), s;
                    case 36:
                        -1 === s.videoPid && (s.videoPid = l, s.segmentVideoCodec = "hevc", a.log("HEVC in M2TS found"))
                }
                t += u + 5
            }
            return s
        }

        function Dn(e, t, r, i) {
            i.warn("parsing error: " + t.message), e.emit(b.ERROR, b.ERROR, {
                type: I.MEDIA_ERROR,
                details: k.FRAG_PARSING_ERROR,
                fatal: !1,
                levelRetry: r,
                error: t,
                reason: t.message
            })
        }

        function _n(e, t) {
            t.log(e + " with AES-128-CBC encryption found in unencrypted stream")
        }

        function Pn(e, t) {
            var r, i, n, a, s, o = 0,
                l = e.data;
            if (!e || 0 === e.size) return null;
            for (; l[0].length < 19 && l.length > 1;) l[0] = Ae(l[0], l[1]), l.splice(1, 1);
            if (1 === ((r = l[0])[0] << 16) + (r[1] << 8) + r[2]) {
                if ((i = (r[4] << 8) + r[5]) && i > e.size - 6) return null;
                var u = r[7];
                192 & u && (a = 536870912 * (14 & r[9]) + 4194304 * (255 & r[10]) + 16384 * (254 & r[11]) + 128 * (255 & r[12]) + (254 & r[13]) / 2, 64 & u ? a - (s = 536870912 * (14 & r[14]) + 4194304 * (255 & r[15]) + 16384 * (254 & r[16]) + 128 * (255 & r[17]) + (254 & r[18]) / 2) > 54e5 && (t.warn(Math.round((a - s) / 9e4) + "s delta between PTS and DTS, align them"), a = s) : s = a);
                var d = (n = r[8]) + 9;
                if (e.size <= d) return null;
                e.size -= d;
                for (var h = new Uint8Array(e.size), f = 0, c = l.length; f < c; f++) {
                    var g = (r = l[f]).byteLength;
                    if (d) {
                        if (d > g) {
                            d -= g;
                            continue
                        }
                        r = r.subarray(d), g -= d, d = 0
                    }
                    h.set(r, o), o += g
                }
                return i && (i -= n + 3), {
                    data: h,
                    pts: a,
                    dts: s,
                    len: i
                }
            }
            return null
        }
        var Cn = function() {
                function e() {}
                return e.getSilentFrame = function(e, t) {
                    if ("mp4a.40.2" === e) {
                        if (1 === t) return new Uint8Array([0, 200, 0, 128, 35, 128]);
                        if (2 === t) return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);
                        if (3 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);
                        if (4 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);
                        if (5 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]);
                        if (6 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224])
                    } else {
                        if (1 === t) return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
                        if (2 === t) return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
                        if (3 === t) return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94])
                    }
                }, e
            }(),
            wn = Math.pow(2, 32) - 1,
            On = function() {
                function e() {}
                return e.init = function() {
                    var t;
                    for (t in e.types = {
                            avc1: [],
                            avcC: [],
                            hvc1: [],
                            hvcC: [],
                            btrt: [],
                            dinf: [],
                            dref: [],
                            esds: [],
                            ftyp: [],
                            hdlr: [],
                            mdat: [],
                            mdhd: [],
                            mdia: [],
                            mfhd: [],
                            minf: [],
                            moof: [],
                            moov: [],
                            mp4a: [],
                            ".mp3": [],
                            dac3: [],
                            "ac-3": [],
                            mvex: [],
                            mvhd: [],
                            pasp: [],
                            sdtp: [],
                            stbl: [],
                            stco: [],
                            stsc: [],
                            stsd: [],
                            stsz: [],
                            stts: [],
                            tfdt: [],
                            tfhd: [],
                            traf: [],
                            trak: [],
                            trun: [],
                            trex: [],
                            tkhd: [],
                            vmhd: [],
                            smhd: []
                        }, e.types) e.types.hasOwnProperty(t) && (e.types[t] = [t.charCodeAt(0), t.charCodeAt(1), t.charCodeAt(2), t.charCodeAt(3)]);
                    var r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0]),
                        i = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0]);
                    e.HDLR_TYPES = {
                        video: r,
                        audio: i
                    };
                    var n = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1]),
                        a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
                    e.STTS = e.STSC = e.STCO = a, e.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), e.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]), e.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), e.STSD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]);
                    var s = new Uint8Array([105, 115, 111, 109]),
                        o = new Uint8Array([97, 118, 99, 49]),
                        l = new Uint8Array([0, 0, 0, 1]);
                    e.FTYP = e.box(e.types.ftyp, s, l, s, o), e.DINF = e.box(e.types.dinf, e.box(e.types.dref, n))
                }, e.box = function(e) {
                    for (var t = 8, r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), n = 1; n < r; n++) i[n - 1] = arguments[n];
                    for (var a = i.length, s = a; a--;) t += i[a].byteLength;
                    var o = new Uint8Array(t);
                    for (o[0] = t >> 24 & 255, o[1] = t >> 16 & 255, o[2] = t >> 8 & 255, o[3] = 255 & t, o.set(e, 4), a = 0, t = 8; a < s; a++) o.set(i[a], t), t += i[a].byteLength;
                    return o
                }, e.hdlr = function(t) {
                    return e.box(e.types.hdlr, e.HDLR_TYPES[t])
                }, e.mdat = function(t) {
                    return e.box(e.types.mdat, t)
                }, e.mdhd = function(t, r) {
                    r *= t;
                    var i = Math.floor(r / (wn + 1)),
                        n = Math.floor(r % (wn + 1));
                    return e.box(e.types.mdhd, new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, i >> 24, i >> 16 & 255, i >> 8 & 255, 255 & i, n >> 24, n >> 16 & 255, n >> 8 & 255, 255 & n, 85, 196, 0, 0]))
                }, e.mdia = function(t) {
                    return e.box(e.types.mdia, e.mdhd(t.timescale || 0, t.duration || 0), e.hdlr(t.type), e.minf(t))
                }, e.mfhd = function(t) {
                    return e.box(e.types.mfhd, new Uint8Array([0, 0, 0, 0, t >> 24, t >> 16 & 255, t >> 8 & 255, 255 & t]))
                }, e.minf = function(t) {
                    return "audio" === t.type ? e.box(e.types.minf, e.box(e.types.smhd, e.SMHD), e.DINF, e.stbl(t)) : e.box(e.types.minf, e.box(e.types.vmhd, e.VMHD), e.DINF, e.stbl(t))
                }, e.moof = function(t, r, i) {
                    return e.box(e.types.moof, e.mfhd(t), e.traf(i, r))
                }, e.moov = function(t) {
                    for (var r = t.length, i = []; r--;) i[r] = e.trak(t[r]);
                    return e.box.apply(null, [e.types.moov, e.mvhd(t[0].timescale || 0, t[0].duration || 0)].concat(i).concat(e.mvex(t)))
                }, e.mvex = function(t) {
                    for (var r = t.length, i = []; r--;) i[r] = e.trex(t[r]);
                    return e.box.apply(null, [e.types.mvex].concat(i))
                }, e.mvhd = function(t, r) {
                    r *= t;
                    var i = Math.floor(r / (wn + 1)),
                        n = Math.floor(r % (wn + 1)),
                        a = new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, i >> 24, i >> 16 & 255, i >> 8 & 255, 255 & i, n >> 24, n >> 16 & 255, n >> 8 & 255, 255 & n, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255]);
                    return e.box(e.types.mvhd, a)
                }, e.sdtp = function(t) {
                    var r, i, n = t.samples || [],
                        a = new Uint8Array(4 + n.length);
                    for (r = 0; r < n.length; r++) i = n[r].flags, a[r + 4] = i.dependsOn << 4 | i.isDependedOn << 2 | i.hasRedundancy;
                    return e.box(e.types.sdtp, a)
                }, e.stbl = function(t) {
                    return e.box(e.types.stbl, e.stsd(t), e.box(e.types.stts, e.STTS), e.box(e.types.stsc, e.STSC), e.box(e.types.stsz, e.STSZ), e.box(e.types.stco, e.STCO))
                }, e.avc1 = function(t) {
                    var r, i, n, a = [],
                        s = [];
                    for (r = 0; r < t.sps.length; r++) n = (i = t.sps[r]).byteLength, a.push(n >>> 8 & 255), a.push(255 & n), a = a.concat(Array.prototype.slice.call(i));
                    for (r = 0; r < t.pps.length; r++) n = (i = t.pps[r]).byteLength, s.push(n >>> 8 & 255), s.push(255 & n), s = s.concat(Array.prototype.slice.call(i));
                    var o = e.box(e.types.avcC, new Uint8Array([1, a[3], a[4], a[5], 255, 224 | t.sps.length].concat(a).concat([t.pps.length]).concat(s))),
                        l = t.width,
                        u = t.height,
                        d = t.pixelRatio[0],
                        h = t.pixelRatio[1];
                    return e.box(e.types.avc1, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, l >> 8 & 255, 255 & l, u >> 8 & 255, 255 & u, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 18, 100, 97, 105, 108, 121, 109, 111, 116, 105, 111, 110, 47, 104, 108, 115, 46, 106, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 17]), o, e.box(e.types.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])), e.box(e.types.pasp, new Uint8Array([d >> 24, d >> 16 & 255, d >> 8 & 255, 255 & d, h >> 24, h >> 16 & 255, h >> 8 & 255, 255 & h])))
                }, e.esds = function(e) {
                    var t = e.config;
                    return new Uint8Array([0, 0, 0, 0, 3, 25, 0, 1, 0, 4, 17, 64, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2].concat(t, [6, 1, 2]))
                }, e.audioStsd = function(e) {
                    var t = e.samplerate || 0;
                    return new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, e.channelCount || 0, 0, 16, 0, 0, 0, 0, t >> 8 & 255, 255 & t, 0, 0])
                }, e.mp4a = function(t) {
                    return e.box(e.types.mp4a, e.audioStsd(t), e.box(e.types.esds, e.esds(t)))
                }, e.mp3 = function(t) {
                    return e.box(e.types[".mp3"], e.audioStsd(t))
                }, e.ac3 = function(t) {
                    return e.box(e.types["ac-3"], e.audioStsd(t), e.box(e.types.dac3, t.config))
                }, e.stsd = function(t) {
                    var r = t.segmentCodec;
                    if ("audio" === t.type) {
                        if ("aac" === r) return e.box(e.types.stsd, e.STSD, e.mp4a(t));
                        if ("ac3" === r && t.config) return e.box(e.types.stsd, e.STSD, e.ac3(t));
                        if ("mp3" === r && "mp3" === t.codec) return e.box(e.types.stsd, e.STSD, e.mp3(t))
                    } else {
                        if (!t.pps || !t.sps) throw new Error("video track missing pps or sps");
                        if ("avc" === r) return e.box(e.types.stsd, e.STSD, e.avc1(t));
                        if ("hevc" === r && t.vps) return e.box(e.types.stsd, e.STSD, e.hvc1(t))
                    }
                    throw new Error("unsupported " + t.type + " segment codec (" + r + "/" + t.codec + ")")
                }, e.tkhd = function(t) {
                    var r = t.id,
                        i = (t.duration || 0) * (t.timescale || 0),
                        n = t.width || 0,
                        a = t.height || 0,
                        s = Math.floor(i / (wn + 1)),
                        o = Math.floor(i % (wn + 1));
                    return e.box(e.types.tkhd, new Uint8Array([1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, r >> 24 & 255, r >> 16 & 255, r >> 8 & 255, 255 & r, 0, 0, 0, 0, s >> 24, s >> 16 & 255, s >> 8 & 255, 255 & s, o >> 24, o >> 16 & 255, o >> 8 & 255, 255 & o, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, n >> 8 & 255, 255 & n, 0, 0, a >> 8 & 255, 255 & a, 0, 0]))
                }, e.traf = function(t, r) {
                    var i = e.sdtp(t),
                        n = t.id,
                        a = Math.floor(r / (wn + 1)),
                        s = Math.floor(r % (wn + 1));
                    return e.box(e.types.traf, e.box(e.types.tfhd, new Uint8Array([0, 0, 0, 0, n >> 24, n >> 16 & 255, n >> 8 & 255, 255 & n])), e.box(e.types.tfdt, new Uint8Array([1, 0, 0, 0, a >> 24, a >> 16 & 255, a >> 8 & 255, 255 & a, s >> 24, s >> 16 & 255, s >> 8 & 255, 255 & s])), e.trun(t, i.length + 16 + 20 + 8 + 16 + 8 + 8), i)
                }, e.trak = function(t) {
                    return t.duration = t.duration || 4294967295, e.box(e.types.trak, e.tkhd(t), e.mdia(t))
                }, e.trex = function(t) {
                    var r = t.id;
                    return e.box(e.types.trex, new Uint8Array([0, 0, 0, 0, r >> 24, r >> 16 & 255, r >> 8 & 255, 255 & r, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]))
                }, e.trun = function(t, r) {
                    var i, n, a, s, o, l, u = t.samples || [],
                        d = u.length,
                        h = 12 + 16 * d,
                        f = new Uint8Array(h);
                    for (r += 8 + h, f.set(["video" === t.type ? 1 : 0, 0, 15, 1, d >>> 24 & 255, d >>> 16 & 255, d >>> 8 & 255, 255 & d, r >>> 24 & 255, r >>> 16 & 255, r >>> 8 & 255, 255 & r], 0), i = 0; i < d; i++) a = (n = u[i]).duration, s = n.size, o = n.flags, l = n.cts, f.set([a >>> 24 & 255, a >>> 16 & 255, a >>> 8 & 255, 255 & a, s >>> 24 & 255, s >>> 16 & 255, s >>> 8 & 255, 255 & s, o.isLeading << 2 | o.dependsOn, o.isDependedOn << 6 | o.hasRedundancy << 4 | o.paddingValue << 1 | o.isNonSync, 61440 & o.degradPrio, 15 & o.degradPrio, l >>> 24 & 255, l >>> 16 & 255, l >>> 8 & 255, 255 & l], 12 + 16 * i);
                    return e.box(e.types.trun, f)
                }, e.initSegment = function(t) {
                    e.types || e.init();
                    var r = e.moov(t);
                    return Ae(e.FTYP, r)
                }, e.hvc1 = function(t) {
                    for (var r = t.params, i = [t.vps, t.sps, t.pps], n = new Uint8Array([1, r.general_profile_space << 6 | (r.general_tier_flag ? 32 : 0) | r.general_profile_idc, r.general_profile_compatibility_flags[0], r.general_profile_compatibility_flags[1], r.general_profile_compatibility_flags[2], r.general_profile_compatibility_flags[3], r.general_constraint_indicator_flags[0], r.general_constraint_indicator_flags[1], r.general_constraint_indicator_flags[2], r.general_constraint_indicator_flags[3], r.general_constraint_indicator_flags[4], r.general_constraint_indicator_flags[5], r.general_level_idc, 240 | r.min_spatial_segmentation_idc >> 8, 255 & r.min_spatial_segmentation_idc, 252 | r.parallelismType, 252 | r.chroma_format_idc, 248 | r.bit_depth_luma_minus8, 248 | r.bit_depth_chroma_minus8, 0, parseInt(r.frame_rate.fps), 3 | r.temporal_id_nested << 2 | r.num_temporal_layers << 3 | (r.frame_rate.fixed ? 64 : 0), i.length]), a = n.length, s = 0; s < i.length; s += 1) {
                        a += 3;
                        for (var o = 0; o < i[s].length; o += 1) a += 2 + i[s][o].length
                    }
                    var l = new Uint8Array(a);
                    l.set(n, 0), a = n.length;
                    for (var u = i.length - 1, d = 0; d < i.length; d += 1) {
                        l.set(new Uint8Array([32 + d | (d === u ? 128 : 0), 0, i[d].length]), a), a += 3;
                        for (var h = 0; h < i[d].length; h += 1) l.set(new Uint8Array([i[d][h].length >> 8, 255 & i[d][h].length]), a), a += 2, l.set(i[d][h], a), a += i[d][h].length
                    }
                    var f = e.box(e.types.hvcC, l),
                        c = t.width,
                        g = t.height,
                        v = t.pixelRatio[0],
                        m = t.pixelRatio[1];
                    return e.box(e.types.hvc1, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c >> 8 & 255, 255 & c, g >> 8 & 255, 255 & g, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 18, 100, 97, 105, 108, 121, 109, 111, 116, 105, 111, 110, 47, 104, 108, 115, 46, 106, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 17]), f, e.box(e.types.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])), e.box(e.types.pasp, new Uint8Array([v >> 24, v >> 16 & 255, v >> 8 & 255, 255 & v, m >> 24, m >> 16 & 255, m >> 8 & 255, 255 & m])))
                }, e
            }();
        On.types = void 0, On.HDLR_TYPES = void 0, On.STTS = void 0, On.STSC = void 0, On.STCO = void 0, On.STSZ = void 0, On.VMHD = void 0, On.SMHD = void 0, On.STSD = void 0, On.FTYP = void 0, On.DINF = void 0;
        var xn = 9e4;

        function Mn(e, t, r, i) {
            void 0 === r && (r = 1), void 0 === i && (i = !1);
            var n = e * t * r;
            return i ? Math.round(n) : n
        }

        function Fn(e, t) {
            return Mn(e, 1e3, 1 / xn, t)
        }
        var Nn = null,
            Un = null;

        function Bn(e, t, r, i) {
            return {
                duration: t,
                size: r,
                cts: i,
                flags: {
                    isLeading: 0,
                    isDependedOn: 0,
                    hasRedundancy: 0,
                    degradPrio: 0,
                    dependsOn: e ? 2 : 1,
                    isNonSync: e ? 0 : 1
                }
            }
        }
        var Gn = function(e) {
            function t(t, r, i, n) {
                var a;
                if ((a = e.call(this, "mp4-remuxer", n) || this).observer = void 0, a.config = void 0, a.typeSupported = void 0, a.ISGenerated = !1, a._initPTS = null, a._initDTS = null, a.nextVideoTs = null, a.nextAudioTs = null, a.videoSampleDuration = null, a.isAudioContiguous = !1, a.isVideoContiguous = !1, a.videoTrackConfig = void 0, a.observer = t, a.config = r, a.typeSupported = i, a.ISGenerated = !1, null === Nn) {
                    var s = (navigator.userAgent || "").match(/Chrome\/(\d+)/i);
                    Nn = s ? parseInt(s[1]) : 0
                }
                if (null === Un) {
                    var o = navigator.userAgent.match(/Safari\/(\d+)/i);
                    Un = o ? parseInt(o[1]) : 0
                }
                return a
            }
            o(t, e);
            var r = t.prototype;
            return r.destroy = function() {
                this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null
            }, r.resetTimeStamp = function(e) {
                this.log("initPTS & initDTS reset"), this._initPTS = this._initDTS = e
            }, r.resetNextTimestamp = function() {
                this.log("reset next timestamp"), this.isVideoContiguous = !1, this.isAudioContiguous = !1
            }, r.resetInitSegment = function() {
                this.log("ISGenerated flag reset"), this.ISGenerated = !1, this.videoTrackConfig = void 0
            }, r.getVideoStartPts = function(e) {
                var t = !1,
                    r = e[0].pts,
                    i = e.reduce((function(e, i) {
                        var n = i.pts,
                            a = n - e;
                        return a < -4294967296 && (t = !0, a = (n = Kn(n, r)) - e), a > 0 ? e : n
                    }), r);
                return t && this.debug("PTS rollover detected"), i
            }, r.remux = function(e, t, r, i, n, a, s, o) {
                var l, u, d, h, f, c, g = n,
                    v = n,
                    m = e.pid > -1,
                    p = t.pid > -1,
                    y = t.samples.length,
                    E = e.samples.length > 0,
                    T = s && y > 0 || y > 1;
                if ((!m || E) && (!p || T) || this.ISGenerated || s) {
                    if (this.ISGenerated) {
                        var S, A, L, R, I = this.videoTrackConfig;
                        (I && (t.width !== I.width || t.height !== I.height || (null == (S = t.pixelRatio) ? void 0 : S[0]) !== (null == (A = I.pixelRatio) ? void 0 : A[0]) || (null == (L = t.pixelRatio) ? void 0 : L[1]) !== (null == (R = I.pixelRatio) ? void 0 : R[1])) || !I && T || null === this.nextAudioTs && E) && this.resetInitSegment()
                    }
                    this.ISGenerated || (d = this.generateIS(e, t, n, a));
                    var k, b = this.isVideoContiguous,
                        D = -1;
                    if (T && (D = function(e) {
                            for (var t = 0; t < e.length; t++)
                                if (e[t].key) return t;
                            return -1
                        }(t.samples), !b && this.config.forceKeyFrameOnDiscontinuity))
                        if (c = !0, D > 0) {
                            this.warn("Dropped " + D + " out of " + y + " video samples due to a missing keyframe");
                            var _ = this.getVideoStartPts(t.samples);
                            t.samples = t.samples.slice(D), t.dropped += D, k = v += (t.samples[0].pts - _) / t.inputTimeScale
                        } else -1 === D && (this.warn("No keyframe found out of " + y + " video samples"), c = !1);
                    if (this.ISGenerated) {
                        if (E && T) {
                            var P = this.getVideoStartPts(t.samples),
                                C = (Kn(e.samples[0].pts, P) - P) / t.inputTimeScale;
                            g += Math.max(0, C), v += Math.max(0, -C)
                        }
                        if (E) {
                            if (e.samplerate || (this.warn("regenerate InitSegment as audio detected"), d = this.generateIS(e, t, n, a)), u = this.remuxAudio(e, g, this.isAudioContiguous, a, p || T || o === O ? v : void 0), T) {
                                var w = u ? u.endPTS - u.startPTS : 0;
                                t.inputTimeScale || (this.warn("regenerate InitSegment as video detected"), d = this.generateIS(e, t, n, a)), l = this.remuxVideo(t, v, b, w)
                            }
                        } else T && (l = this.remuxVideo(t, v, b, 0));
                        l && (l.firstKeyFrame = D, l.independent = -1 !== D, l.firstKeyFramePTS = k)
                    }
                }
                return this.ISGenerated && this._initPTS && this._initDTS && (r.samples.length && (f = Vn(r, n, this._initPTS, this._initDTS)), i.samples.length && (h = Hn(i, n, this._initPTS))), {
                    audio: u,
                    video: l,
                    initSegment: d,
                    independent: c,
                    text: h,
                    id3: f
                }
            }, r.generateIS = function(e, t, r, i) {
                var n, a, s, o = e.samples,
                    l = t.samples,
                    u = this.typeSupported,
                    d = {},
                    h = this._initPTS,
                    f = !h || i,
                    c = "audio/mp4",
                    g = -1;
                if (f && (n = a = 1 / 0), e.config && o.length) {
                    switch (e.timescale = e.samplerate, e.segmentCodec) {
                        case "mp3":
                            u.mpeg ? (c = "audio/mpeg", e.codec = "") : u.mp3 && (e.codec = "mp3");
                            break;
                        case "ac3":
                            e.codec = "ac-3"
                    }
                    d.audio = {
                        id: "audio",
                        container: c,
                        codec: e.codec,
                        initSegment: "mp3" === e.segmentCodec && u.mpeg ? new Uint8Array(0) : On.initSegment([e]),
                        metadata: {
                            channelCount: e.channelCount
                        }
                    }, f && (g = e.id, s = e.inputTimeScale, h && s === h.timescale ? f = !1 : n = a = o[0].pts - Math.round(s * r))
                }
                if (t.sps && t.pps && l.length) {
                    if (t.timescale = t.inputTimeScale, d.video = {
                            id: "main",
                            container: "video/mp4",
                            codec: t.codec,
                            initSegment: On.initSegment([t]),
                            metadata: {
                                width: t.width,
                                height: t.height
                            }
                        }, f)
                        if (g = t.id, s = t.inputTimeScale, h && s === h.timescale) f = !1;
                        else {
                            var v = this.getVideoStartPts(l),
                                m = Math.round(s * r);
                            a = Math.min(a, Kn(l[0].dts, v) - m), n = Math.min(n, v - m)
                        }
                    this.videoTrackConfig = {
                        width: t.width,
                        height: t.height,
                        pixelRatio: t.pixelRatio
                    }
                }
                if (Object.keys(d).length) return this.ISGenerated = !0, f ? (h && this.warn("Timestamps at playlist time: " + (i ? "" : "~") + r + " " + n / s + " != initPTS: " + h.baseTime / h.timescale + " (" + h.baseTime + "/" + h.timescale + ") trackId: " + h.trackId), this.log("Found initPTS at playlist time: " + r + " offset: " + n / s + " (" + n + "/" + s + ") trackId: " + g), this._initPTS = {
                    baseTime: n,
                    timescale: s,
                    trackId: g
                }, this._initDTS = {
                    baseTime: a,
                    timescale: s,
                    trackId: g
                }) : n = s = void 0, {
                    tracks: d,
                    initPTS: n,
                    timescale: s,
                    trackId: g
                }
            }, r.remuxVideo = function(e, t, r, i) {
                var n, s, o = e.inputTimeScale,
                    l = e.samples,
                    u = [],
                    d = l.length,
                    h = this._initPTS,
                    f = h.baseTime * o / h.timescale,
                    c = this.nextVideoTs,
                    g = 8,
                    v = this.videoSampleDuration,
                    m = Number.POSITIVE_INFINITY,
                    p = Number.NEGATIVE_INFINITY,
                    y = !1;
                if (!r || null === c) {
                    var E = f + t * o,
                        T = l[0].pts - Kn(l[0].dts, l[0].pts);
                    Nn && null !== c && Math.abs(E - T - (c + f)) < 15e3 ? r = !0 : c = E - T - f
                }
                for (var S = c + f, A = 0; A < d; A++) {
                    var L = l[A];
                    L.pts = Kn(L.pts, S), L.dts = Kn(L.dts, S), L.dts < l[A > 0 ? A - 1 : A].dts && (y = !0)
                }
                y && l.sort((function(e, t) {
                    var r = e.dts - t.dts,
                        i = e.pts - t.pts;
                    return r || i
                })), n = l[0].dts;
                var R = (s = l[l.length - 1].dts) - n,
                    D = R ? Math.round(R / (d - 1)) : v || e.inputTimeScale / 30;
                if (r) {
                    var _ = n - S,
                        P = _ > D,
                        C = _ < -1;
                    if ((P || C) && (P ? this.warn((e.segmentCodec || "").toUpperCase() + ": " + Fn(_, !0) + " ms (" + _ + "dts) hole between fragments detected at " + t.toFixed(3)) : this.warn((e.segmentCodec || "").toUpperCase() + ": " + Fn(-_, !0) + " ms (" + _ + "dts) overlapping between fragments detected at " + t.toFixed(3)), !C || S >= l[0].pts || Nn)) {
                        n = S;
                        var w = l[0].pts - _;
                        if (P) l[0].dts = n, l[0].pts = w;
                        else
                            for (var O = !0, x = 0; x < l.length && !(l[x].dts > w && O); x++) {
                                var M = l[x].pts;
                                if (l[x].dts -= _, l[x].pts -= _, x < l.length - 1) {
                                    var F = l[x + 1].pts;
                                    O = F <= l[x].pts == F <= M
                                }
                            }
                        this.log("Video: Initial PTS/DTS adjusted: " + Fn(w, !0) + "/" + Fn(n, !0) + ", delta: " + Fn(_, !0) + " ms")
                    }
                }
                for (var N = 0, U = 0, B = n = Math.max(0, n), G = 0; G < d; G++) {
                    for (var K = l[G], V = K.units, H = V.length, Y = 0, W = 0; W < H; W++) Y += V[W].data.length;
                    U += Y, N += H, K.length = Y, K.dts < B ? (K.dts = B, B += D / 4 | 0 || 1) : B = K.dts, m = Math.min(K.pts, m), p = Math.max(K.pts, p)
                }
                s = l[d - 1].dts;
                var j, q = U + 4 * N + 8;
                try {
                    j = new Uint8Array(q)
                } catch (e) {
                    return void this.observer.emit(b.ERROR, b.ERROR, {
                        type: I.MUX_ERROR,
                        details: k.REMUX_ALLOC_ERROR,
                        fatal: !1,
                        error: e,
                        bytes: q,
                        reason: "fail allocating video mdat " + q
                    })
                }
                var X = new DataView(j.buffer);
                X.setUint32(0, q), j.set(On.types.mdat, 4);
                for (var Q = !1, z = Number.POSITIVE_INFINITY, $ = Number.POSITIVE_INFINITY, Z = Number.NEGATIVE_INFINITY, J = Number.NEGATIVE_INFINITY, ee = 0; ee < d; ee++) {
                    for (var te = l[ee], re = te.units, ie = 0, ne = 0, ae = re.length; ne < ae; ne++) {
                        var se = re[ne],
                            oe = se.data,
                            le = se.data.byteLength;
                        X.setUint32(g, le), g += 4, j.set(oe, g), g += le, ie += 4 + le
                    }
                    var ue = void 0;
                    if (ee < d - 1) v = l[ee + 1].dts - te.dts, ue = l[ee + 1].pts - te.pts;
                    else {
                        var de = this.config,
                            he = ee > 0 ? te.dts - l[ee - 1].dts : D;
                        if (ue = ee > 0 ? te.pts - l[ee - 1].pts : D, de.stretchShortVideoTrack && null !== this.nextAudioTs) {
                            var fe = Math.floor(de.maxBufferHole * o),
                                ce = (i ? m + i * o : this.nextAudioTs + f) - te.pts;
                            ce > fe ? ((v = ce - he) < 0 ? v = he : Q = !0, this.log("It is approximately " + ce / 90 + " ms to the next segment; using duration " + v / 90 + " ms for the last video frame.")) : v = he
                        } else v = he
                    }
                    var ge = Math.round(te.pts - te.dts);
                    z = Math.min(z, v), Z = Math.max(Z, v), $ = Math.min($, ue), J = Math.max(J, ue), u.push(Bn(te.key, v, ie, ge))
                }
                if (u.length)
                    if (Nn) {
                        if (Nn < 70) {
                            var ve = u[0].flags;
                            ve.dependsOn = 2, ve.isNonSync = 0
                        }
                    } else if (Un && J - $ < Z - z && D / Z < .025 && 0 === u[0].cts) {
                    this.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.");
                    for (var me = n, pe = 0, ye = u.length; pe < ye; pe++) {
                        var Ee = me + u[pe].duration,
                            Te = me + u[pe].cts;
                        if (pe < ye - 1) {
                            var Se = Ee + u[pe + 1].cts;
                            u[pe].duration = Se - Te
                        } else u[pe].duration = pe ? u[pe - 1].duration : D;
                        u[pe].cts = 0, me = Ee
                    }
                }
                var Ae = s + (v = Q || !v ? D : v);
                this.nextVideoTs = c = Ae - f, this.videoSampleDuration = v, this.isVideoContiguous = !0;
                var Le = {
                    data1: On.moof(e.sequenceNumber++, n, a(e, {
                        samples: u
                    })),
                    data2: j,
                    startPTS: (m - f) / o,
                    endPTS: (p + v - f) / o,
                    startDTS: (n - f) / o,
                    endDTS: c / o,
                    type: "video",
                    hasAudio: !1,
                    hasVideo: !0,
                    nb: u.length,
                    dropped: e.dropped
                };
                return e.samples = [], e.dropped = 0, Le
            }, r.getSamplesPerFrame = function(e) {
                switch (e.segmentCodec) {
                    case "mp3":
                        return 1152;
                    case "ac3":
                        return 1536;
                    default:
                        return 1024
                }
            }, r.remuxAudio = function(e, t, r, i, n) {
                var s = e.inputTimeScale,
                    o = s / (e.samplerate ? e.samplerate : s),
                    l = this.getSamplesPerFrame(e),
                    u = l * o,
                    d = this._initPTS,
                    h = "mp3" === e.segmentCodec && this.typeSupported.mpeg,
                    f = [],
                    c = void 0 !== n,
                    g = e.samples,
                    v = h ? 0 : 8,
                    m = this.nextAudioTs || -1,
                    p = d.baseTime * s / d.timescale,
                    y = p + t * s;
                if (this.isAudioContiguous = r = r || g.length && m > 0 && (i && Math.abs(y - (m + p)) < 9e3 || Math.abs(Kn(g[0].pts, y) - (m + p)) < 20 * u), g.forEach((function(e) {
                        e.pts = Kn(e.pts, y)
                    })), !r || m < 0) {
                    if (g = g.filter((function(e) {
                            return e.pts >= 0
                        })), !g.length) return;
                    m = 0 === n ? 0 : i && !c ? Math.max(0, y - p) : g[0].pts - p
                }
                if ("aac" === e.segmentCodec)
                    for (var E = this.config.maxAudioFramesDrift, T = 0, S = m + p; T < g.length; T++) {
                        var A = g[T],
                            L = A.pts,
                            R = L - S,
                            D = Math.abs(1e3 * R / s);
                        if (R <= -E * u && c) 0 === T && (this.warn("Audio frame @ " + (L / s).toFixed(3) + "s overlaps marker by " + Math.round(1e3 * R / s) + " ms."), this.nextAudioTs = m = L - p, S = L);
                        else if (R >= E * u && D < 1e4 && c) {
                            var _ = Math.round(R / u);
                            for (S = L - _ * u; S < 0 && _ && u;) _--, S += u;
                            0 === T && (this.nextAudioTs = m = S - p), this.warn("Injecting " + _ + " audio frames @ " + ((S - p) / s).toFixed(3) + "s due to " + Math.round(1e3 * R / s) + " ms gap.");
                            for (var P = 0; P < _; P++) {
                                var C = Cn.getSilentFrame(e.parsedCodec || e.manifestCodec || e.codec, e.channelCount);
                                C || (this.log("Unable to get silent frame for given audio codec; duplicating last frame instead."), C = A.unit.subarray()), g.splice(T, 0, {
                                    unit: C,
                                    pts: S
                                }), S += u, T++
                            }
                        }
                        A.pts = S, S += u
                    }
                for (var w, O = null, x = null, M = 0, F = g.length; F--;) M += g[F].unit.byteLength;
                for (var N = 0, U = g.length; N < U; N++) {
                    var B = g[N],
                        G = B.unit,
                        K = B.pts;
                    if (null !== x) f[N - 1].duration = Math.round((K - x) / o);
                    else {
                        if (r && "aac" === e.segmentCodec && (K = m + p), O = K, !(M > 0)) return;
                        M += v;
                        try {
                            w = new Uint8Array(M)
                        } catch (e) {
                            return void this.observer.emit(b.ERROR, b.ERROR, {
                                type: I.MUX_ERROR,
                                details: k.REMUX_ALLOC_ERROR,
                                fatal: !1,
                                error: e,
                                bytes: M,
                                reason: "fail allocating audio mdat " + M
                            })
                        }
                        h || (new DataView(w.buffer).setUint32(0, M), w.set(On.types.mdat, 4))
                    }
                    w.set(G, v);
                    var V = G.byteLength;
                    v += V, f.push(Bn(!0, l, V, 0)), x = K
                }
                var H = f.length;
                if (H) {
                    var Y = f[f.length - 1];
                    m = x - p, this.nextAudioTs = m + o * Y.duration;
                    var W = h ? new Uint8Array(0) : On.moof(e.sequenceNumber++, O / o, a({}, e, {
                        samples: f
                    }));
                    e.samples = [];
                    var j = (O - p) / s,
                        q = m / s,
                        X = {
                            data1: W,
                            data2: w,
                            startPTS: j,
                            endPTS: q,
                            startDTS: j,
                            endDTS: q,
                            type: "audio",
                            hasAudio: !0,
                            hasVideo: !1,
                            nb: H
                        };
                    return this.isAudioContiguous = !0, X
                }
            }, t
        }(N);

        function Kn(e, t) {
            var r;
            if (null === t) return e;
            for (r = t < e ? -8589934592 : 8589934592; Math.abs(e - t) > 4294967296;) e += r;
            return e
        }

        function Vn(e, t, r, i) {
            var n = e.samples.length;
            if (n) {
                for (var a = e.inputTimeScale, s = 0; s < n; s++) {
                    var o = e.samples[s];
                    o.pts = Kn(o.pts - r.baseTime * a / r.timescale, t * a) / a, o.dts = Kn(o.dts - i.baseTime * a / i.timescale, t * a) / a
                }
                var l = e.samples;
                return e.samples = [], {
                    samples: l
                }
            }
        }

        function Hn(e, t, r) {
            var i = e.samples.length;
            if (i) {
                for (var n = e.inputTimeScale, a = 0; a < i; a++) {
                    var s = e.samples[a];
                    s.pts = Kn(s.pts - r.baseTime * n / r.timescale, t * n) / n
                }
                e.samples.sort((function(e, t) {
                    return e.pts - t.pts
                }));
                var o = e.samples;
                return e.samples = [], {
                    samples: o
                }
            }
        }
        var Yn, Wn = function(e) {
            function t(t, r, i, n) {
                var a;
                return (a = e.call(this, "passthrough-remuxer", n) || this).emitInitSegment = !1, a.audioCodec = void 0, a.videoCodec = void 0, a.initData = void 0, a.initPTS = null, a.initTracks = void 0, a.lastEndTime = null, a.isVideoContiguous = !1, a
            }
            o(t, e);
            var r = t.prototype;
            return r.destroy = function() {}, r.resetTimeStamp = function(e) {
                this.lastEndTime = null;
                var t = this.initPTS;
                t && e && t.baseTime === e.baseTime && t.timescale === e.timescale || (this.initPTS = e)
            }, r.resetNextTimestamp = function() {
                this.isVideoContiguous = !1, this.lastEndTime = null
            }, r.resetInitSegment = function(e, t, r, i) {
                this.audioCodec = t, this.videoCodec = r, this.generateInitSegment(e, i), this.emitInitSegment = !0
            }, r.generateInitSegment = function(e, t) {
                var r = this.audioCodec,
                    i = this.videoCodec;
                if (null == e || !e.byteLength) return this.initTracks = void 0, void(this.initData = void 0);
                var n = this.initData = ve(e),
                    a = n.audio,
                    s = n.video;
                if (t) ! function(e, t) {
                    if (e && t) {
                        var r = t.keyId;
                        r && t.isCommonEncryption && ce(e, ["moov", "trak"]).forEach((function(e) {
                            var t = ce(e, ["mdia", "minf", "stbl", "stsd"])[0].subarray(8),
                                i = ce(t, ["enca"]),
                                n = i.length > 0;
                            n || (i = ce(t, ["encv"])), i.forEach((function(e) {
                                ce(n ? e.subarray(28) : e.subarray(78), ["sinf"]).forEach((function(e) {
                                    var t = Se(e);
                                    if (t) {
                                        var i = t.subarray(8, 24);
                                        i.some((function(e) {
                                            return 0 !== e
                                        })) || (Y.log("[eme] Patching keyId in 'enc" + (n ? "a" : "v") + ">sinf>>tenc' box: " + X(i) + " -> " + X(r)), t.set(r, 8))
                                    }
                                }))
                            }))
                        }))
                    }
                }(e, t);
                else {
                    var o = a || s;
                    null != o && o.encrypted && this.warn('Init segment with encrypted track with has no key ("' + o.codec + '")!')
                }
                a && (r = qn(a, $, this)), s && (i = qn(s, Z, this));
                var l = {};
                a && s ? l.audiovideo = {
                    container: "video/mp4",
                    codec: r + "," + i,
                    supplemental: s.supplemental,
                    encrypted: s.encrypted,
                    initSegment: e,
                    id: "main"
                } : a ? l.audio = {
                    container: "audio/mp4",
                    codec: r,
                    encrypted: a.encrypted,
                    initSegment: e,
                    id: "audio"
                } : s ? l.video = {
                    container: "video/mp4",
                    codec: i,
                    supplemental: s.supplemental,
                    encrypted: s.encrypted,
                    initSegment: e,
                    id: "main"
                } : this.warn("initSegment does not contain moov or trak boxes."), this.initTracks = l
            }, r.remux = function(e, t, r, i, n, a) {
                var s, o, l = this.initPTS,
                    u = this.lastEndTime,
                    d = {
                        audio: void 0,
                        video: void 0,
                        text: i,
                        id3: r,
                        initSegment: void 0
                    };
                A(u) || (u = this.lastEndTime = n || 0);
                var h = t.samples;
                if (!h.length) return d;
                var f = {
                        initPTS: void 0,
                        timescale: void 0,
                        trackId: void 0
                    },
                    c = this.initData;
                if (null != (s = c) && s.length || (this.generateInitSegment(h), c = this.initData), null == (o = c) || !o.length) return this.warn("Failed to generate initSegment."), d;
                this.emitInitSegment && (f.tracks = this.initTracks, this.emitInitSegment = !1);
                var g = function(e, t, r) {
                        for (var i = {}, n = ce(e, ["moof", "traf"]), a = 0; a < n.length; a++) {
                            var s = n[a],
                                o = ce(s, ["tfhd"])[0],
                                l = de(o, 4),
                                u = t[l];
                            if (u) {
                                i[l] || (i[l] = {
                                    start: NaN,
                                    duration: 0,
                                    sampleCount: 0,
                                    timescale: u.timescale,
                                    type: u.type
                                });
                                var d = i[l],
                                    h = ce(s, ["tfdt"])[0];
                                if (h) {
                                    var f = h[0],
                                        c = de(h, 4);
                                    1 === f && (c === ae ? r.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time") : (c *= ae + 1, c += de(h, 8))), A(c) && (!A(d.start) || c < d.start) && (d.start = c)
                                }
                                var g = u.default,
                                    v = de(o, 0) | (null == g ? void 0 : g.flags),
                                    m = (null == g ? void 0 : g.duration) || 0;
                                8 & v && (m = de(o, 2 & v ? 12 : 8));
                                for (var p = ce(s, ["trun"]), y = d.start || 0, E = 0, T = m, S = 0; S < p.length; S++) {
                                    var L = p[S],
                                        R = de(L, 4),
                                        I = d.sampleCount;
                                    d.sampleCount += R;
                                    var k = 1 & L[3],
                                        b = 4 & L[3],
                                        D = 1 & L[2],
                                        _ = 2 & L[2],
                                        P = 4 & L[2],
                                        C = 8 & L[2],
                                        w = 8,
                                        O = R;
                                    for (k && (w += 4), b && R && (1 & L[w + 1] || void 0 !== d.keyFrameIndex || (d.keyFrameIndex = I), w += 4, D ? (T = de(L, w), w += 4) : T = m, _ && (w += 4), C && (w += 4), y += T, E += T, O--); O--;) D ? (T = de(L, w), w += 4) : T = m, _ && (w += 4), P && (1 & L[w + 1] || void 0 === d.keyFrameIndex && (d.keyFrameIndex = d.sampleCount - (O + 1), d.keyFrameStart = y), w += 4), C && (w += 4), y += T, E += T;
                                    !E && m && (E += m * R)
                                }
                                d.duration += E
                            }
                        }
                        if (!Object.keys(i).some((function(e) {
                                return i[e].duration
                            }))) {
                            for (var x = 1 / 0, M = 0, F = ce(e, ["sidx"]), N = 0; N < F.length; N++) {
                                var U = ge(F[N]);
                                if (null != U && U.references) {
                                    x = Math.min(x, U.earliestPresentationTime / U.timescale);
                                    var B = U.references.reduce((function(e, t) {
                                        return e + t.info.duration || 0
                                    }), 0);
                                    M = Math.max(M, B + U.earliestPresentationTime / U.timescale)
                                }
                            }
                            M && A(M) && Object.keys(i).forEach((function(e) {
                                i[e].duration || (i[e].duration = M * i[e].timescale - i[e].start)
                            }))
                        }
                        return i
                    }(h, c, this),
                    v = c.audio ? g[c.audio.id] : null,
                    m = c.video ? g[c.video.id] : null,
                    p = jn(m, 1 / 0),
                    y = jn(v, 1 / 0),
                    E = jn(m, 0, !0),
                    T = jn(v, 0, !0),
                    S = n,
                    L = 0,
                    R = v && (!m || !l && y < p || l && l.trackId === c.audio.id),
                    I = R ? v : m;
                if (I) {
                    var k = I.timescale,
                        b = I.start - n * k,
                        D = R ? c.audio.id : c.video.id;
                    S = I.start / k, L = R ? T - y : E - p, !a && l || ! function(e, t, r, i) {
                        if (null === e) return !0;
                        var n = Math.max(i, 1),
                            a = t - e.baseTime / e.timescale;
                        return Math.abs(a - r) > n
                    }(l, S, n, L) && k === l.timescale || (l && this.warn("Timestamps at playlist time: " + (a ? "" : "~") + n + " " + b / k + " != initPTS: " + l.baseTime / l.timescale + " (" + l.baseTime + "/" + l.timescale + ") trackId: " + l.trackId), this.log("Found initPTS at playlist time: " + n + " offset: " + (S - n) + " (" + b + "/" + k + ") trackId: " + D), l = null, f.initPTS = b, f.timescale = k, f.trackId = D)
                } else this.warn("No audio or video samples found for initPTS at playlist time: " + n);
                l ? (f.initPTS = l.baseTime, f.timescale = l.timescale, f.trackId = l.trackId) : (f.timescale && void 0 !== f.trackId && void 0 !== f.initPTS || (this.warn("Could not set initPTS"), f.initPTS = S, f.timescale = 1, f.trackId = -1), this.initPTS = l = {
                    baseTime: f.initPTS,
                    timescale: f.timescale,
                    trackId: f.trackId
                });
                var _ = S - l.baseTime / l.timescale,
                    P = _ + L;
                L > 0 ? this.lastEndTime = P : (this.warn("Duration parsed from mp4 should be greater than zero"), this.resetNextTimestamp());
                var C = !!c.audio,
                    w = !!c.video,
                    O = "";
                C && (O += "audio"), w && (O += "video");
                var x = {
                    data1: h,
                    startPTS: _,
                    startDTS: _,
                    endPTS: P,
                    endDTS: P,
                    type: O,
                    hasAudio: C,
                    hasVideo: w,
                    nb: 1,
                    dropped: 0,
                    encrypted: !!c.audio && c.audio.encrypted || !!c.video && c.video.encrypted
                };
                d.audio = C && !w ? x : void 0, d.video = w ? x : void 0;
                var M = null == m ? void 0 : m.sampleCount;
                if (M) {
                    var F = m.keyFrameIndex,
                        N = -1 !== F;
                    x.nb = M, x.dropped = 0 === F || this.isVideoContiguous ? 0 : N ? F : M, x.independent = N, x.firstKeyFrame = F, N && m.keyFrameStart && (x.firstKeyFramePTS = (m.keyFrameStart - l.baseTime) / l.timescale), this.isVideoContiguous || (d.independent = N), this.isVideoContiguous || (this.isVideoContiguous = N), x.dropped && this.warn("fmp4 does not start with IDR: firstIDR " + F + "/" + M + " dropped: " + x.dropped + " start: " + (x.firstKeyFramePTS || "NA"))
                }
                return d.initSegment = f, d.id3 = Vn(r, n, l, l), i.samples.length && (d.text = Hn(i, n, l)), d
            }, t
        }(N);

        function jn(e, t, r) {
            return void 0 === r && (r = !1), void 0 !== (null == e ? void 0 : e.start) ? (e.start + (r ? e.duration : 0)) / e.timescale : t
        }

        function qn(e, t, r) {
            var i = e.codec;
            return i && i.length > 4 ? i : t === $ ? "ec-3" === i || "ac-3" === i || "alac" === i ? i : "fLaC" === i || "Opus" === i ? Be(i, !1) : (r.warn('Unhandled audio codec "' + i + '" in mp4 MAP'), i || "mp4a") : (r.warn('Unhandled video codec "' + i + '" in mp4 MAP'), i || "avc1")
        }
        try {
            Yn = self.performance.now.bind(self.performance)
        } catch (e) {
            Yn = Date.now
        }
        var Xn = [{
            demux: mn,
            remux: Wn
        }, {
            demux: Rn,
            remux: Gn
        }, {
            demux: dn,
            remux: Gn
        }, {
            demux: gn,
            remux: Gn
        }];
        Xn.splice(2, 0, {
            demux: fn,
            remux: Gn
        });
        var Qn = function() {
                function e(e, t, r, i, n, a) {
                    this.asyncResult = !1, this.logger = void 0, this.observer = void 0, this.typeSupported = void 0, this.config = void 0, this.id = void 0, this.demuxer = void 0, this.remuxer = void 0, this.decrypter = void 0, this.probe = void 0, this.decryptionPromise = null, this.transmuxConfig = void 0, this.currentTransmuxState = void 0, this.observer = e, this.typeSupported = t, this.config = r, this.id = n, this.logger = a
                }
                var t = e.prototype;
                return t.configure = function(e) {
                    this.transmuxConfig = e, this.decrypter && this.decrypter.reset()
                }, t.push = function(e, t, r, i) {
                    var n = this,
                        a = r.transmuxing;
                    a.executeStart = Yn();
                    var s = new Uint8Array(e),
                        o = this.currentTransmuxState,
                        l = this.transmuxConfig;
                    i && (this.currentTransmuxState = i);
                    var u = i || o,
                        d = u.contiguous,
                        h = u.discontinuity,
                        f = u.trackSwitch,
                        c = u.accurateTimeOffset,
                        g = u.timeOffset,
                        v = u.initSegmentChange,
                        m = l.audioCodec,
                        p = l.videoCodec,
                        y = l.defaultInitPts,
                        E = l.duration,
                        T = l.initSegmentData,
                        S = function(e, t) {
                            var r = null;
                            return e.byteLength > 0 && null != (null == t ? void 0 : t.key) && null !== t.iv && null != t.method && (r = t), r
                        }(s, t);
                    if (S && Tr(S.method)) {
                        var A = this.getDecrypter(),
                            L = Sr(S.method);
                        if (!A.isSync()) return this.asyncResult = !0, this.decryptionPromise = A.webCryptoDecrypt(s, S.key.buffer, S.iv.buffer, L).then((function(e) {
                            var t = n.push(e, null, r);
                            return n.decryptionPromise = null, t
                        })), this.decryptionPromise;
                        var R = A.softwareDecrypt(s, S.key.buffer, S.iv.buffer, L);
                        if (r.part > -1) {
                            var D = A.flush();
                            R = D ? D.buffer : D
                        }
                        if (!R) return a.executeEnd = Yn(), zn(r);
                        s = new Uint8Array(R)
                    }
                    var _ = this.needsProbing(h, f);
                    if (_) {
                        var P = this.configureTransmuxer(s);
                        if (P) return this.logger.warn("[transmuxer] " + P.message), this.observer.emit(b.ERROR, b.ERROR, {
                            type: I.MEDIA_ERROR,
                            details: k.FRAG_PARSING_ERROR,
                            fatal: !1,
                            error: P,
                            reason: P.message
                        }), a.executeEnd = Yn(), zn(r)
                    }(h || f || v || _) && this.resetInitSegment(T, m, p, E, t), (h || v || _) && this.resetInitialTimestamp(y), d || this.resetContiguity();
                    var C = this.transmux(s, S, g, c, r);
                    this.asyncResult = $n(C);
                    var w = this.currentTransmuxState;
                    return w.contiguous = !0, w.discontinuity = !1, w.trackSwitch = !1, a.executeEnd = Yn(), C
                }, t.flush = function(e) {
                    var t = this,
                        r = e.transmuxing;
                    r.executeStart = Yn();
                    var i = this.decrypter,
                        n = this.currentTransmuxState,
                        a = this.decryptionPromise;
                    if (a) return this.asyncResult = !0, a.then((function() {
                        return t.flush(e)
                    }));
                    var s = [],
                        o = n.timeOffset;
                    if (i) {
                        var l = i.flush();
                        l && s.push(this.push(l.buffer, null, e))
                    }
                    var u = this.demuxer,
                        d = this.remuxer;
                    if (!u || !d) {
                        r.executeEnd = Yn();
                        var h = [zn(e)];
                        return this.asyncResult ? Promise.resolve(h) : h
                    }
                    var f = u.flush(o);
                    return $n(f) ? (this.asyncResult = !0, f.then((function(r) {
                        return t.flushRemux(s, r, e), s
                    }))) : (this.flushRemux(s, f, e), this.asyncResult ? Promise.resolve(s) : s)
                }, t.flushRemux = function(e, t, r) {
                    var i = t.audioTrack,
                        n = t.videoTrack,
                        a = t.id3Track,
                        s = t.textTrack,
                        o = this.currentTransmuxState,
                        l = o.accurateTimeOffset,
                        u = o.timeOffset;
                    this.logger.log("[transmuxer.ts]: Flushed " + this.id + " sn: " + r.sn + (r.part > -1 ? " part: " + r.part : "") + " of " + (this.id === w ? "level" : "track") + " " + r.level);
                    var d = this.remuxer.remux(i, n, a, s, u, l, !0, this.id);
                    e.push({
                        remuxResult: d,
                        chunkMeta: r
                    }), r.transmuxing.executeEnd = Yn()
                }, t.resetInitialTimestamp = function(e) {
                    var t = this.demuxer,
                        r = this.remuxer;
                    t && r && (t.resetTimeStamp(e), r.resetTimeStamp(e))
                }, t.resetContiguity = function() {
                    var e = this.demuxer,
                        t = this.remuxer;
                    e && t && (e.resetContiguity(), t.resetNextTimestamp())
                }, t.resetInitSegment = function(e, t, r, i, n) {
                    var a = this.demuxer,
                        s = this.remuxer;
                    a && s && (a.resetInitSegment(e, t, r, i), s.resetInitSegment(e, t, r, n))
                }, t.destroy = function() {
                    this.demuxer && (this.demuxer.destroy(), this.demuxer = void 0), this.remuxer && (this.remuxer.destroy(), this.remuxer = void 0)
                }, t.transmux = function(e, t, r, i, n) {
                    return t && "SAMPLE-AES" === t.method ? this.transmuxSampleAes(e, t, r, i, n) : this.transmuxUnencrypted(e, r, i, n)
                }, t.transmuxUnencrypted = function(e, t, r, i) {
                    var n = this.demuxer.demux(e, t, !1, !this.config.progressive),
                        a = n.audioTrack,
                        s = n.videoTrack,
                        o = n.id3Track,
                        l = n.textTrack;
                    return {
                        remuxResult: this.remuxer.remux(a, s, o, l, t, r, !1, this.id),
                        chunkMeta: i
                    }
                }, t.transmuxSampleAes = function(e, t, r, i, n) {
                    var a = this;
                    return this.demuxer.demuxSampleAes(e, t, r).then((function(e) {
                        return {
                            remuxResult: a.remuxer.remux(e.audioTrack, e.videoTrack, e.id3Track, e.textTrack, r, i, !1, a.id),
                            chunkMeta: n
                        }
                    }))
                }, t.configureTransmuxer = function(e) {
                    for (var t, r = this.config, i = this.observer, n = this.typeSupported, a = 0, s = Xn.length; a < s; a++) {
                        var o;
                        if (null != (o = Xn[a].demux) && o.probe(e, this.logger)) {
                            t = Xn[a];
                            break
                        }
                    }
                    if (!t) return new Error("Failed to find demuxer by probing fragment data");
                    var l = this.demuxer,
                        u = this.remuxer,
                        d = t.remux,
                        h = t.demux;
                    u && u instanceof d || (this.remuxer = new d(i, r, n, this.logger)), l && l instanceof h || (this.demuxer = new h(i, r, n, this.logger), this.probe = h.probe)
                }, t.needsProbing = function(e, t) {
                    return !this.demuxer || !this.remuxer || e || t
                }, t.getDecrypter = function() {
                    var e = this.decrypter;
                    return e || (e = this.decrypter = new $t(this.config)), e
                }, e
            }(),
            zn = function(e) {
                return {
                    remuxResult: {},
                    chunkMeta: e
                }
            };

        function $n(e) {
            return "then" in e && e.then instanceof Function
        }
        var Zn = function(e, t, r, i, n) {
                this.audioCodec = void 0, this.videoCodec = void 0, this.initSegmentData = void 0, this.duration = void 0, this.defaultInitPts = void 0, this.audioCodec = e, this.videoCodec = t, this.initSegmentData = r, this.duration = i, this.defaultInitPts = n || null
            },
            Jn = function(e, t, r, i, n, a) {
                this.discontinuity = void 0, this.contiguous = void 0, this.accurateTimeOffset = void 0, this.trackSwitch = void 0, this.timeOffset = void 0, this.initSegmentChange = void 0, this.discontinuity = e, this.contiguous = t, this.accurateTimeOffset = r, this.trackSwitch = i, this.timeOffset = n, this.initSegmentChange = a
            },
            ea = [];

        function ta(e, t, r) {
            if (!((i = t.remuxResult).audio || i.video || i.text || i.id3 || i.initSegment)) return !1;
            var i, n = [],
                a = t.remuxResult,
                s = a.audio,
                o = a.video;
            return s && ra(n, s), o && ra(n, o), e.postMessage({
                event: "transmuxComplete",
                data: t,
                instanceNo: r
            }, n), !0
        }

        function ra(e, t) {
            t.data1 && e.push(t.data1.buffer), t.data2 && e.push(t.data2.buffer)
        }

        function ia(e, t, r, i) {
            t.reduce((function(t, r) {
                return ta(e, r, i) || t
            }), !1) || e.postMessage({
                event: "transmuxComplete",
                data: t[0],
                instanceNo: i
            }), e.postMessage({
                event: "flush",
                data: r,
                instanceNo: i
            })
        }

        function na(e, t, r) {
            self.postMessage({
                event: e,
                data: t,
                instanceNo: r
            })
        }
        void 0 !== t && t && self.addEventListener("message", (function(e) {
            var t = e.data,
                r = t.instanceNo;
            if (void 0 !== r) {
                var i = ea[r];
                if ("reset" === t.cmd && (delete ea[t.resetNo], i && i.destroy(), t.cmd = "init"), "init" === t.cmd) {
                    var n = JSON.parse(t.config),
                        a = new E;
                    a.on(b.FRAG_DECRYPTED, na), a.on(b.ERROR, na);
                    var s = H(n.debug, t.id);
                    return function(e, t) {
                        var r = function(r) {
                            e[r] = function() {
                                var e = Array.prototype.join.call(arguments, " ");
                                na("workerLog", {
                                    logType: r,
                                    message: e
                                }, t)
                            }
                        };
                        for (var i in e) r(i)
                    }(s, r), ea[r] = new Qn(a, t.typeSupported, n, "", t.id, s), void na("init", null, r)
                }
                if (i) switch (t.cmd) {
                    case "configure":
                        i.configure(t.config);
                        break;
                    case "demux":
                        var o = i.push(t.data, t.decryptdata, t.chunkMeta, t.state);
                        $n(o) ? o.then((function(e) {
                            ta(self, e, r)
                        })).catch((function(e) {
                            na(b.ERROR, {
                                instanceNo: r,
                                type: I.MEDIA_ERROR,
                                details: k.FRAG_PARSING_ERROR,
                                chunkMeta: t.chunkMeta,
                                fatal: !1,
                                error: e,
                                err: e,
                                reason: "transmuxer-worker push error"
                            }, r)
                        })) : ta(self, o, r);
                        break;
                    case "flush":
                        var l = t.chunkMeta,
                            u = i.flush(l);
                        $n(u) ? u.then((function(e) {
                            ia(self, e, l, r)
                        })).catch((function(e) {
                            na(b.ERROR, {
                                type: I.MEDIA_ERROR,
                                details: k.FRAG_PARSING_ERROR,
                                chunkMeta: t.chunkMeta,
                                fatal: !1,
                                error: e,
                                err: e,
                                reason: "transmuxer-worker flush error"
                            }, r)
                        })) : ia(self, u, l, r)
                }
            }
        }));
        var aa = "1.6.11",
            sa = {},
            oa = 0,
            la = function() {
                function t(t, r, i, n) {
                    var a = this;
                    this.error = null, this.hls = void 0, this.id = void 0, this.instanceNo = oa++, this.observer = void 0, this.frag = null, this.part = null, this.useWorker = void 0, this.workerContext = null, this.transmuxer = null, this.onTransmuxComplete = void 0, this.onFlush = void 0, this.onWorkerMessage = function(e) {
                        var t = e.data,
                            r = a.hls;
                        if (r && null != t && t.event && t.instanceNo === a.instanceNo) switch (t.event) {
                            case "init":
                                var i, n = null == (i = a.workerContext) ? void 0 : i.objectURL;
                                n && self.URL.revokeObjectURL(n);
                                break;
                            case "transmuxComplete":
                                a.handleTransmuxComplete(t.data);
                                break;
                            case "flush":
                                a.onFlush(t.data);
                                break;
                            case "workerLog":
                                r.logger[t.data.logType] && r.logger[t.data.logType](t.data.message);
                                break;
                            default:
                                t.data = t.data || {}, t.data.frag = a.frag, t.data.part = a.part, t.data.id = a.id, r.trigger(t.event, t.data)
                        }
                    }, this.onWorkerError = function(e) {
                        if (a.hls) {
                            var t = new Error(e.message + "  (" + e.filename + ":" + e.lineno + ")");
                            a.hls.config.enableWorker = !1, a.hls.logger.warn('Error in "' + a.id + '" Web Worker, fallback to inline'), a.hls.trigger(b.ERROR, {
                                type: I.OTHER_ERROR,
                                details: k.INTERNAL_EXCEPTION,
                                fatal: !1,
                                event: "demuxerWorker",
                                error: t
                            })
                        }
                    };
                    var s = t.config;
                    this.hls = t, this.id = r, this.useWorker = !!s.enableWorker, this.onTransmuxComplete = i, this.onFlush = n;
                    var o = function(e, t) {
                        (t = t || {}).frag = a.frag || void 0, e === b.ERROR && (t.parent = a.id, t.part = a.part, a.error = t.error), a.hls.trigger(e, t)
                    };
                    this.observer = new E, this.observer.on(b.FRAG_DECRYPTED, o), this.observer.on(b.ERROR, o);
                    var l = He(s.preferManagedMediaSource);
                    if (this.useWorker && "undefined" != typeof Worker) {
                        var u = this.hls.logger;
                        s.workerPath;
                        try {
                            s.workerPath ? (u.log("loading Web Worker " + s.workerPath + ' for "' + r + '"'), this.workerContext = function(e) {
                                var t = sa[e];
                                if (t) return t.clientCount++, t;
                                var r = new self.URL(e, self.location.href).href,
                                    i = {
                                        worker: new self.Worker(r),
                                        scriptURL: r,
                                        clientCount: 1
                                    };
                                return sa[e] = i, i
                            }(s.workerPath)) : (u.log('injecting Web Worker for "' + r + '"'), this.workerContext = function() {
                                var t = sa[aa];
                                if (t) return t.clientCount++, t;
                                var r = new self.Blob(["var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(" + e.toString() + ")(true);"], {
                                        type: "text/javascript"
                                    }),
                                    i = self.URL.createObjectURL(r),
                                    n = {
                                        worker: new self.Worker(i),
                                        objectURL: i,
                                        clientCount: 1
                                    };
                                return sa[aa] = n, n
                            }());
                            var d = this.workerContext.worker;
                            d.addEventListener("message", this.onWorkerMessage), d.addEventListener("error", this.onWorkerError), d.postMessage({
                                instanceNo: this.instanceNo,
                                cmd: "init",
                                typeSupported: l,
                                id: r,
                                config: ot(s)
                            })
                        } catch (e) {
                            u.warn('Error setting up "' + r + '" Web Worker, fallback to inline', e), this.terminateWorker(), this.error = null, this.transmuxer = new Qn(this.observer, l, s, "", r, t.logger)
                        }
                    } else this.transmuxer = new Qn(this.observer, l, s, "", r, t.logger)
                }
                var r = t.prototype;
                return r.reset = function() {
                    if (this.frag = null, this.part = null, this.workerContext) {
                        var e = this.instanceNo;
                        this.instanceNo = oa++;
                        var t = this.hls.config,
                            r = He(t.preferManagedMediaSource);
                        this.workerContext.worker.postMessage({
                            instanceNo: this.instanceNo,
                            cmd: "reset",
                            resetNo: e,
                            typeSupported: r,
                            id: this.id,
                            config: ot(t)
                        })
                    }
                }, r.terminateWorker = function() {
                    if (this.workerContext) {
                        var e = this.workerContext.worker;
                        this.workerContext = null, e.removeEventListener("message", this.onWorkerMessage), e.removeEventListener("error", this.onWorkerError),
                            function(e) {
                                var t = sa[e || aa];
                                if (t && 1 == t.clientCount--) {
                                    var r = t.worker,
                                        i = t.objectURL;
                                    delete sa[e || aa], i && self.URL.revokeObjectURL(i), r.terminate()
                                }
                            }(this.hls.config.workerPath)
                    }
                }, r.destroy = function() {
                    if (this.workerContext) this.terminateWorker(), this.onWorkerMessage = this.onWorkerError = null;
                    else {
                        var e = this.transmuxer;
                        e && (e.destroy(), this.transmuxer = null)
                    }
                    var t = this.observer;
                    t && t.removeAllListeners(), this.frag = null, this.part = null, this.observer = null, this.hls = null
                }, r.push = function(e, t, r, i, n, a, s, o, l, u) {
                    var d, h, f = this;
                    l.transmuxing.start = self.performance.now();
                    var c = this.instanceNo,
                        g = this.transmuxer,
                        v = a ? a.start : n.start,
                        m = n.decryptdata,
                        p = this.frag,
                        y = !(p && n.cc === p.cc),
                        E = !(p && l.level === p.level),
                        T = p ? l.sn - p.sn : -1,
                        S = this.part ? l.part - this.part.index : -1,
                        A = 0 === T && l.id > 1 && l.id === (null == p ? void 0 : p.stats.chunkCount),
                        L = !E && (1 === T || 0 === T && (1 === S || A && S <= 0)),
                        R = self.performance.now();
                    (E || T || 0 === n.stats.parsing.start) && (n.stats.parsing.start = R), !a || !S && L || (a.stats.parsing.start = R);
                    var I = !(p && (null == (d = n.initSegment) ? void 0 : d.url) === (null == (h = p.initSegment) ? void 0 : h.url)),
                        k = new Jn(y, L, o, E, v, I);
                    if (!L || y || I) {
                        this.hls.logger.log("[transmuxer-interface]: Starting new transmux session for " + n.type + " sn: " + l.sn + (l.part > -1 ? " part: " + l.part : "") + " " + (this.id === w ? "level" : "track") + ": " + l.level + " id: " + l.id + "\n        discontinuity: " + y + "\n        trackSwitch: " + E + "\n        contiguous: " + L + "\n        accurateTimeOffset: " + o + "\n        timeOffset: " + v + "\n        initSegmentChange: " + I);
                        var b = new Zn(r, i, t, s, u);
                        this.configureTransmuxer(b)
                    }
                    if (this.frag = n, this.part = a, this.workerContext) this.workerContext.worker.postMessage({
                        instanceNo: c,
                        cmd: "demux",
                        data: e,
                        decryptdata: m,
                        chunkMeta: l,
                        state: k
                    }, e instanceof ArrayBuffer ? [e] : []);
                    else if (g) {
                        var D = g.push(e, m, l, k);
                        $n(D) ? D.then((function(e) {
                            f.handleTransmuxComplete(e)
                        })).catch((function(e) {
                            f.transmuxerError(e, l, "transmuxer-interface push error")
                        })) : this.handleTransmuxComplete(D)
                    }
                }, r.flush = function(e) {
                    var t = this;
                    e.transmuxing.start = self.performance.now();
                    var r = this.instanceNo,
                        i = this.transmuxer;
                    if (this.workerContext) this.workerContext.worker.postMessage({
                        instanceNo: r,
                        cmd: "flush",
                        chunkMeta: e
                    });
                    else if (i) {
                        var n = i.flush(e);
                        $n(n) ? n.then((function(r) {
                            t.handleFlushResult(r, e)
                        })).catch((function(r) {
                            t.transmuxerError(r, e, "transmuxer-interface flush error")
                        })) : this.handleFlushResult(n, e)
                    }
                }, r.transmuxerError = function(e, t, r) {
                    this.hls && (this.error = e, this.hls.trigger(b.ERROR, {
                        type: I.MEDIA_ERROR,
                        details: k.FRAG_PARSING_ERROR,
                        chunkMeta: t,
                        frag: this.frag || void 0,
                        part: this.part || void 0,
                        fatal: !1,
                        error: e,
                        err: e,
                        reason: r
                    }))
                }, r.handleFlushResult = function(e, t) {
                    var r = this;
                    e.forEach((function(e) {
                        r.handleTransmuxComplete(e)
                    })), this.onFlush(t)
                }, r.configureTransmuxer = function(e) {
                    var t = this.instanceNo,
                        r = this.transmuxer;
                    this.workerContext ? this.workerContext.worker.postMessage({
                        instanceNo: t,
                        cmd: "configure",
                        config: e
                    }) : r && r.configure(e)
                }, r.handleTransmuxComplete = function(e) {
                    e.chunkMeta.transmuxing.end = self.performance.now(), this.onTransmuxComplete(e)
                }, t
            }(),
            ua = function(e) {
                function t(t, r, i) {
                    var n;
                    return (n = e.call(this, t, r, i, "audio-stream-controller", O) || this).mainAnchor = null, n.mainFragLoading = null, n.audioOnly = !1, n.bufferedTrack = null, n.switchingTrack = null, n.trackId = -1, n.waitingData = null, n.mainDetails = null, n.flushing = !1, n.bufferFlushed = !1, n.cachedTrackLoadedData = null, n.registerListeners(), n
                }
                o(t, e);
                var r = t.prototype;
                return r.onHandlerDestroying = function() {
                    this.unregisterListeners(), e.prototype.onHandlerDestroying.call(this), this.resetItem()
                }, r.resetItem = function() {
                    this.mainDetails = this.mainAnchor = this.mainFragLoading = this.bufferedTrack = this.switchingTrack = this.waitingData = this.cachedTrackLoadedData = null
                }, r.registerListeners = function() {
                    e.prototype.registerListeners.call(this);
                    var t = this.hls;
                    t.on(b.LEVEL_LOADED, this.onLevelLoaded, this), t.on(b.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this), t.on(b.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), t.on(b.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), t.on(b.BUFFER_RESET, this.onBufferReset, this), t.on(b.BUFFER_CREATED, this.onBufferCreated, this), t.on(b.BUFFER_FLUSHING, this.onBufferFlushing, this), t.on(b.BUFFER_FLUSHED, this.onBufferFlushed, this), t.on(b.INIT_PTS_FOUND, this.onInitPtsFound, this), t.on(b.FRAG_LOADING, this.onFragLoading, this), t.on(b.FRAG_BUFFERED, this.onFragBuffered, this)
                }, r.unregisterListeners = function() {
                    var t = this.hls;
                    t && (e.prototype.unregisterListeners.call(this), t.off(b.LEVEL_LOADED, this.onLevelLoaded, this), t.off(b.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this), t.off(b.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), t.off(b.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), t.off(b.BUFFER_RESET, this.onBufferReset, this), t.off(b.BUFFER_CREATED, this.onBufferCreated, this), t.off(b.BUFFER_FLUSHING, this.onBufferFlushing, this), t.off(b.BUFFER_FLUSHED, this.onBufferFlushed, this), t.off(b.INIT_PTS_FOUND, this.onInitPtsFound, this), t.off(b.FRAG_LOADING, this.onFragLoading, this), t.off(b.FRAG_BUFFERED, this.onFragBuffered, this))
                }, r.onInitPtsFound = function(e, t) {
                    var r = t.frag,
                        i = t.id,
                        n = t.initPTS,
                        a = t.timescale,
                        s = t.trackId;
                    if (i === w) {
                        var o = r.cc,
                            l = this.fragCurrent;
                        if (this.initPTS[o] = {
                                baseTime: n,
                                timescale: a,
                                trackId: s
                            }, this.log("InitPTS for cc: " + o + " found from main: " + n / a + " (" + n + "/" + a + ") trackId: " + s), this.mainAnchor = r, this.state === Ai.WAITING_INIT_PTS) {
                            var u = this.waitingData;
                            (!u && !this.loadingParts || u && u.frag.cc !== o) && this.syncWithAnchor(r, null == u ? void 0 : u.frag)
                        } else !this.hls.hasEnoughToStart && l && l.cc !== o ? (l.abortRequests(), this.syncWithAnchor(r, l)) : this.state === Ai.IDLE && this.tick()
                    }
                }, r.getLoadPosition = function() {
                    return !this.startFragRequested && this.nextLoadPosition >= 0 ? this.nextLoadPosition : e.prototype.getLoadPosition.call(this)
                }, r.syncWithAnchor = function(e, t) {
                    var r, i = (null == (r = this.mainFragLoading) ? void 0 : r.frag) || null;
                    if (!t || (null == i ? void 0 : i.cc) !== t.cc) {
                        var n = (i || e).cc,
                            a = St(this.getLevelDetails(), n, this.getLoadPosition());
                        a && (this.log("Syncing with main frag at " + a.start + " cc " + a.cc), this.startFragRequested = !1, this.nextLoadPosition = a.start, this.resetLoadingState(), this.state === Ai.IDLE && this.doTickIdle())
                    }
                }, r.startLoad = function(e, t) {
                    if (!this.levels) return this.startPosition = e, void(this.state = Ai.STOPPED);
                    var r = this.lastCurrentTime;
                    this.stopLoad(), this.setInterval(100), r > 0 && -1 === e ? (this.log("Override startPosition with lastCurrentTime @" + r.toFixed(3)), e = r, this.state = Ai.IDLE) : this.state = Ai.WAITING_TRACK, this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick()
                }, r.doTick = function() {
                    switch (this.state) {
                        case Ai.IDLE:
                            this.doTickIdle();
                            break;
                        case Ai.WAITING_TRACK:
                            var t = this.levels,
                                r = this.trackId,
                                i = null == t ? void 0 : t[r],
                                n = null == i ? void 0 : i.details;
                            if (n && !this.waitForLive(i)) {
                                if (this.waitForCdnTuneIn(n)) break;
                                this.state = Ai.WAITING_INIT_PTS
                            }
                            break;
                        case Ai.FRAG_LOADING_WAITING_RETRY:
                            this.checkRetryDate();
                            break;
                        case Ai.WAITING_INIT_PTS:
                            var a = this.waitingData;
                            if (a) {
                                var s = a.frag,
                                    o = a.part,
                                    l = a.cache,
                                    u = a.complete,
                                    d = this.mainAnchor;
                                if (void 0 !== this.initPTS[s.cc]) {
                                    this.waitingData = null, this.state = Ai.FRAG_LOADING;
                                    var h = {
                                        frag: s,
                                        part: o,
                                        payload: l.flush().buffer,
                                        networkDetails: null
                                    };
                                    this._handleFragmentLoadProgress(h), u && e.prototype._handleFragmentLoadComplete.call(this, h)
                                } else d && d.cc !== a.frag.cc && this.syncWithAnchor(d, a.frag)
                            } else this.state = Ai.IDLE
                    }
                    this.onTickEnd()
                }, r.resetLoadingState = function() {
                    var t = this.waitingData;
                    t && (this.fragmentTracker.removeFragment(t.frag), this.waitingData = null), e.prototype.resetLoadingState.call(this)
                }, r.onTickEnd = function() {
                    var e = this.media;
                    null != e && e.readyState && (this.lastCurrentTime = e.currentTime)
                }, r.doTickIdle = function() {
                    var e, t = this.hls,
                        r = this.levels,
                        i = this.media,
                        n = this.trackId,
                        a = t.config;
                    if (this.buffering && (i || this.primaryPrefetch || !this.startFragRequested && a.startFragPrefetch) && null != r && r[n]) {
                        var s = r[n],
                            o = s.details;
                        if (!o || this.waitForLive(s) || this.waitForCdnTuneIn(o)) return this.state = Ai.WAITING_TRACK, void(this.startFragRequested = !1);
                        var l = this.mediaBuffer ? this.mediaBuffer : this.media;
                        this.bufferFlushed && l && (this.bufferFlushed = !1, this.afterBufferFlushed(l, $, O));
                        var u = this.getFwdBufferInfo(l, O);
                        if (null !== u) {
                            if (!this.switchingTrack && this._streamEnded(u, o)) return t.trigger(b.BUFFER_EOS, {
                                type: "audio"
                            }), void(this.state = Ai.ENDED);
                            var d = u.len,
                                h = t.maxBufferLength,
                                f = o.fragments,
                                c = f[0].start,
                                g = this.getLoadPosition(),
                                v = this.flushing ? g : u.end;
                            if (this.switchingTrack && i) {
                                var m = g;
                                o.PTSKnown && m < c && (u.end > c || u.nextStart) && (this.log("Alt audio track ahead of main track, seek to start of alt audio track"), i.currentTime = c + .05)
                            }
                            if (!(d >= h && !this.switchingTrack && v < f[f.length - 1].start)) {
                                var p = this.getNextFragment(v, o);
                                if (p && this.isLoopLoading(p, v) && (p = this.getNextFragmentLoopLoading(p, o, u, w, h)), p) {
                                    var y = (null == (e = this.mainFragLoading) ? void 0 : e.frag) || null;
                                    if (!this.audioOnly && this.startFragRequested && y && te(p) && !p.endList && (!o.live || !this.loadingParts && v < this.hls.liveSyncPosition) && (this.fragmentTracker.getState(y) === Kt && (this.mainFragLoading = y = null), y && te(y))) {
                                        if (p.start > y.end) {
                                            var E = this.fragmentTracker.getFragAtPos(v, w);
                                            E && E.end > y.end && (y = E, this.mainFragLoading = {
                                                frag: E,
                                                targetBufferTime: null
                                            })
                                        }
                                        if (p.start > y.end) return
                                    }
                                    this.loadFragment(p, s, v)
                                } else this.bufferFlushed = !0
                            }
                        }
                    }
                }, r.onMediaDetaching = function(t, r) {
                    this.bufferFlushed = this.flushing = !1, e.prototype.onMediaDetaching.call(this, t, r)
                }, r.onAudioTracksUpdated = function(e, t) {
                    var r = t.audioTracks;
                    this.resetTransmuxer(), this.levels = r.map((function(e) {
                        return new nt(e)
                    }))
                }, r.onAudioTrackSwitching = function(e, t) {
                    var r = !!t.url;
                    this.trackId = t.id;
                    var i = this.fragCurrent;
                    i && (i.abortRequests(), this.removeUnbufferedFrags(i.start)), this.resetLoadingState(), r ? (this.switchingTrack = t, this.flushAudioIfNeeded(t), this.state !== Ai.STOPPED && (this.setInterval(100), this.state = Ai.IDLE, this.tick())) : (this.resetTransmuxer(), this.switchingTrack = null, this.bufferedTrack = t, this.clearInterval())
                }, r.onManifestLoading = function() {
                    e.prototype.onManifestLoading.call(this), this.bufferFlushed = this.flushing = this.audioOnly = !1, this.resetItem(), this.trackId = -1
                }, r.onLevelLoaded = function(e, t) {
                    this.mainDetails = t.details;
                    var r = this.cachedTrackLoadedData;
                    r && (this.cachedTrackLoadedData = null, this.onAudioTrackLoaded(b.AUDIO_TRACK_LOADED, r))
                }, r.onAudioTrackLoaded = function(e, t) {
                    var r, i = this.levels,
                        n = t.details,
                        a = t.id,
                        s = t.groupId,
                        o = t.track;
                    if (i) {
                        var l = this.mainDetails;
                        if (!l || n.endCC > l.endCC || l.expired) return this.cachedTrackLoadedData = t, void(this.state !== Ai.STOPPED && (this.state = Ai.WAITING_TRACK));
                        this.cachedTrackLoadedData = null, this.log("Audio track " + a + ' "' + o.name + '" of "' + s + '" loaded [' + n.startSN + "," + n.endSN + "]" + (n.lastPartSn ? "[part-" + n.lastPartSn + "-" + n.lastPartIndex + "]" : "") + ",duration:" + n.totalduration);
                        var u = i[a],
                            d = 0;
                        if (n.live || null != (r = u.details) && r.live) {
                            if (this.checkLiveUpdate(n), n.deltaUpdateFailed) return;
                            var h;
                            u.details && (d = this.alignPlaylists(n, u.details, null == (h = this.levelLastLoaded) ? void 0 : h.details)), n.alignedSliding || (pi(n, l), n.alignedSliding || yi(n, l), d = n.fragmentStart)
                        }
                        u.details = n, this.levelLastLoaded = u, this.startFragRequested || this.setStartPosition(l, d), this.hls.trigger(b.AUDIO_TRACK_UPDATED, {
                            details: n,
                            id: a,
                            groupId: t.groupId
                        }), this.state !== Ai.WAITING_TRACK || this.waitForCdnTuneIn(n) || (this.state = Ai.IDLE), this.tick()
                    } else this.warn("Audio tracks reset while loading track " + a + ' "' + o.name + '" of "' + s + '"')
                }, r._handleFragmentLoadProgress = function(e) {
                    var t, r = e.frag,
                        i = e.part,
                        n = e.payload,
                        a = this.config,
                        s = this.trackId,
                        o = this.levels;
                    if (o) {
                        var l = o[s];
                        if (l) {
                            var u = l.details;
                            if (!u) return this.warn("Audio track details undefined on fragment load progress"), void this.removeUnbufferedFrags(r.start);
                            var d = a.defaultAudioCodec || l.audioCodec || "mp4a.40.2",
                                h = this.transmuxer;
                            h || (h = this.transmuxer = new la(this.hls, O, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this)));
                            var f = this.initPTS[r.cc],
                                c = null == (t = r.initSegment) ? void 0 : t.data;
                            if (void 0 !== f) {
                                var g = i ? i.index : -1,
                                    v = -1 !== g,
                                    m = new nr(r.level, r.sn, r.stats.chunkCount, n.byteLength, g, v);
                                h.push(n, c, d, "", r, i, u.totalduration, !1, m, f)
                            } else this.log("Unknown video PTS for cc " + r.cc + ", waiting for video PTS before demuxing audio frag " + r.sn + " of [" + u.startSN + " ," + u.endSN + "],track " + s), (this.waitingData = this.waitingData || {
                                frag: r,
                                part: i,
                                cache: new Ii,
                                complete: !1
                            }).cache.push(new Uint8Array(n)), this.state !== Ai.STOPPED && (this.state = Ai.WAITING_INIT_PTS)
                        } else this.warn("Audio track is undefined on fragment load progress")
                    } else this.warn("Audio tracks were reset while fragment load was in progress. Fragment " + r.sn + " of level " + r.level + " will not be buffered")
                }, r._handleFragmentLoadComplete = function(t) {
                    this.waitingData ? this.waitingData.complete = !0 : e.prototype._handleFragmentLoadComplete.call(this, t)
                }, r.onBufferReset = function() {
                    this.mediaBuffer = null
                }, r.onBufferCreated = function(e, t) {
                    this.bufferFlushed = this.flushing = !1;
                    var r = t.tracks.audio;
                    r && (this.mediaBuffer = r.buffer || null)
                }, r.onFragLoading = function(e, t) {
                    !this.audioOnly && t.frag.type === w && te(t.frag) && (this.mainFragLoading = t, this.state === Ai.IDLE && this.tick())
                }, r.onFragBuffered = function(e, t) {
                    var r = t.frag,
                        i = t.part;
                    if (r.type === O)
                        if (this.fragContextChanged(r)) this.warn("Fragment " + r.sn + (i ? " p: " + i.index : "") + " of level " + r.level + " finished buffering, but was aborted. state: " + this.state + ", audioSwitch: " + (this.switchingTrack ? this.switchingTrack.name : "false"));
                        else {
                            if (te(r)) {
                                this.fragPrevious = r;
                                var n = this.switchingTrack;
                                n && (this.bufferedTrack = n, this.switchingTrack = null, this.hls.trigger(b.AUDIO_TRACK_SWITCHED, d({}, n)))
                            }
                            this.fragBufferedComplete(r, i), this.media && this.tick()
                        }
                    else this.audioOnly || r.type !== w || r.elementaryStreams.video || r.elementaryStreams.audiovideo || (this.audioOnly = !0, this.mainFragLoading = null)
                }, r.onError = function(t, r) {
                    var i;
                    if (r.fatal) this.state = Ai.ERROR;
                    else switch (r.details) {
                        case k.FRAG_GAP:
                        case k.FRAG_PARSING_ERROR:
                        case k.FRAG_DECRYPT_ERROR:
                        case k.FRAG_LOAD_ERROR:
                        case k.FRAG_LOAD_TIMEOUT:
                        case k.KEY_LOAD_ERROR:
                        case k.KEY_LOAD_TIMEOUT:
                            this.onFragmentOrKeyLoadError(O, r);
                            break;
                        case k.AUDIO_TRACK_LOAD_ERROR:
                        case k.AUDIO_TRACK_LOAD_TIMEOUT:
                        case k.LEVEL_PARSING_ERROR:
                            r.levelRetry || this.state !== Ai.WAITING_TRACK || (null == (i = r.context) ? void 0 : i.type) !== P || (this.state = Ai.IDLE);
                            break;
                        case k.BUFFER_ADD_CODEC_ERROR:
                        case k.BUFFER_APPEND_ERROR:
                            if ("audio" !== r.parent) return;
                            this.reduceLengthAndFlushBuffer(r) || this.resetLoadingState();
                            break;
                        case k.BUFFER_FULL_ERROR:
                            if ("audio" !== r.parent) return;
                            this.reduceLengthAndFlushBuffer(r) && (this.bufferedTrack = null, e.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, "audio"));
                            break;
                        case k.INTERNAL_EXCEPTION:
                            this.recoverWorkerError(r)
                    }
                }, r.onBufferFlushing = function(e, t) {
                    t.type !== Z && (this.flushing = !0)
                }, r.onBufferFlushed = function(e, t) {
                    var r = t.type;
                    if (r !== Z) {
                        this.flushing = !1, this.bufferFlushed = !0, this.state === Ai.ENDED && (this.state = Ai.IDLE);
                        var i = this.mediaBuffer || this.media;
                        i && (this.afterBufferFlushed(i, r, O), this.tick())
                    }
                }, r._handleTransmuxComplete = function(e) {
                    var t, r = "audio",
                        i = this.hls,
                        n = e.remuxResult,
                        s = e.chunkMeta,
                        o = this.getCurrentContext(s);
                    if (o) {
                        var l = o.frag,
                            u = o.part,
                            d = o.level,
                            h = d.details,
                            f = n.audio,
                            c = n.text,
                            g = n.id3,
                            v = n.initSegment;
                        if (!this.fragContextChanged(l) && h) {
                            if (this.state = Ai.PARSING, this.switchingTrack && f && this.completeAudioSwitch(this.switchingTrack), null != v && v.tracks) {
                                var m = l.initSegment || l;
                                if (this.unhandledEncryptionError(v, l)) return;
                                this._bufferInitSegment(d, v.tracks, m, s), i.trigger(b.FRAG_PARSING_INIT_SEGMENT, {
                                    frag: m,
                                    id: r,
                                    tracks: v.tracks
                                })
                            }
                            if (f) {
                                var p = f.startPTS,
                                    y = f.endPTS,
                                    E = f.startDTS,
                                    T = f.endDTS;
                                u && (u.elementaryStreams[$] = {
                                    startPTS: p,
                                    endPTS: y,
                                    startDTS: E,
                                    endDTS: T
                                }), l.setElementaryStreamInfo($, p, y, E, T), this.bufferFragmentData(f, l, u, s)
                            }
                            if (null != g && null != (t = g.samples) && t.length) {
                                var S = a({
                                    id: r,
                                    frag: l,
                                    details: h
                                }, g);
                                i.trigger(b.FRAG_PARSING_METADATA, S)
                            }
                            if (c) {
                                var A = a({
                                    id: r,
                                    frag: l,
                                    details: h
                                }, c);
                                i.trigger(b.FRAG_PARSING_USERDATA, A)
                            }
                        } else this.fragmentTracker.removeFragment(l)
                    } else this.resetWhenMissingContext(s)
                }, r._bufferInitSegment = function(e, t, r, i) {
                    if (this.state === Ai.PARSING && (t.video && delete t.video, t.audiovideo && delete t.audiovideo, t.audio)) {
                        var n = t.audio;
                        n.id = O;
                        var a = e.audioCodec;
                        this.log("Init audio buffer, container:" + n.container + ", codecs[level/parsed]=[" + a + "/" + n.codec + "]"), a && 1 === a.split(",").length && (n.levelCodec = a), this.hls.trigger(b.BUFFER_CODECS, t);
                        var s = n.initSegment;
                        if (null != s && s.byteLength) {
                            var o = {
                                type: "audio",
                                frag: r,
                                part: null,
                                chunkMeta: i,
                                parent: r.type,
                                data: s
                            };
                            this.hls.trigger(b.BUFFER_APPENDING, o)
                        }
                        this.tickImmediate()
                    }
                }, r.loadFragment = function(t, r, i) {
                    var n, a = this.fragmentTracker.getState(t);
                    if (this.switchingTrack || a === Ut || a === Gt)
                        if (te(t))
                            if (null != (n = r.details) && n.live && !this.initPTS[t.cc]) {
                                this.log("Waiting for video PTS in continuity counter " + t.cc + " of live stream before loading audio fragment " + t.sn + " of level " + this.trackId), this.state = Ai.WAITING_INIT_PTS;
                                var s = this.mainDetails;
                                s && s.fragmentStart !== r.details.fragmentStart && yi(r.details, s)
                            } else e.prototype.loadFragment.call(this, t, r, i);
                    else this._loadInitSegment(t, r);
                    else this.clearTrackerIfNeeded(t)
                }, r.flushAudioIfNeeded = function(t) {
                    if (this.media && this.bufferedTrack) {
                        var r = this.bufferedTrack;
                        ft({
                            name: r.name,
                            lang: r.lang,
                            assocLang: r.assocLang,
                            characteristics: r.characteristics,
                            audioCodec: r.audioCodec,
                            channels: r.channels
                        }, t, ct) || (vt(t.url, this.hls) ? (this.log("Switching audio track : flushing all audio"), e.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, "audio"), this.bufferedTrack = null) : this.bufferedTrack = t)
                    }
                }, r.completeAudioSwitch = function(e) {
                    var t = this.hls;
                    this.flushAudioIfNeeded(e), this.bufferedTrack = e, this.switchingTrack = null, t.trigger(b.AUDIO_TRACK_SWITCHED, d({}, e))
                }, t
            }(Li),
            da = function(e) {
                function t(t, r) {
                    var i;
                    return (i = e.call(this, r, t.logger) || this).hls = void 0, i.canLoad = !1, i.timer = -1, i.hls = t, i
                }
                o(t, e);
                var r = t.prototype;
                return r.destroy = function() {
                    this.clearTimer(), this.hls = this.log = this.warn = null
                }, r.clearTimer = function() {
                    -1 !== this.timer && (self.clearTimeout(this.timer), this.timer = -1)
                }, r.startLoad = function() {
                    this.canLoad = !0, this.loadPlaylist()
                }, r.stopLoad = function() {
                    this.canLoad = !1, this.clearTimer()
                }, r.switchParams = function(e, t, r) {
                    var i = null == t ? void 0 : t.renditionReports;
                    if (i) {
                        for (var n = -1, a = 0; a < i.length; a++) {
                            var s = i[a],
                                o = void 0;
                            try {
                                o = new self.URL(s.URI, t.url).href
                            } catch (e) {
                                this.warn("Could not construct new URL for Rendition Report: " + e), o = s.URI || ""
                            }
                            if (o === e) {
                                n = a;
                                break
                            }
                            o === e.substring(0, o.length) && (n = a)
                        }
                        if (-1 !== n) {
                            var l = i[n],
                                u = parseInt(l["LAST-MSN"]) || t.lastPartSn,
                                d = parseInt(l["LAST-PART"]) || t.lastPartIndex;
                            if (this.hls.config.lowLatencyMode) {
                                var h = Math.min(t.age - t.partTarget, t.targetduration);
                                d >= 0 && h > t.partTarget && (d += 1)
                            }
                            var f = r && rt(r);
                            return new it(u, d >= 0 ? d : void 0, f)
                        }
                    }
                }, r.loadPlaylist = function(e) {
                    this.clearTimer()
                }, r.loadingPlaylist = function(e, t) {
                    this.clearTimer()
                }, r.shouldLoadPlaylist = function(e) {
                    return this.canLoad && !!e && !!e.url && (!e.details || e.details.live)
                }, r.getUrlWithDirectives = function(e, t) {
                    if (t) try {
                        return t.addDirectives(e)
                    } catch (e) {
                        this.warn("Could not construct new URL with HLS Delivery Directives: " + e)
                    }
                    return e
                }, r.playlistLoaded = function(e, t, r) {
                    var i = t.details,
                        n = t.stats,
                        a = self.performance.now(),
                        s = n.loading.first ? Math.max(0, a - n.loading.first) : 0;
                    i.advancedDateTime = Date.now() - s;
                    var o = this.hls.config.timelineOffset;
                    if (o !== i.appliedTimelineOffset) {
                        var l = Math.max(o || 0, 0);
                        i.appliedTimelineOffset = l, i.fragments.forEach((function(e) {
                            e.setStart(e.playlistOffset + l)
                        }))
                    }
                    if (i.live || null != r && r.live) {
                        var u = "levelInfo" in t ? t.levelInfo : t.track;
                        if (i.reloaded(r), r && i.fragments.length > 0) {
                            ii(r, i, this);
                            var d = i.playlistParsingError;
                            if (d) {
                                this.warn(d);
                                var h = this.hls;
                                if (!h.config.ignorePlaylistParsingErrors) {
                                    var f, c = t.networkDetails;
                                    return void h.trigger(b.ERROR, {
                                        type: I.NETWORK_ERROR,
                                        details: k.LEVEL_PARSING_ERROR,
                                        fatal: !1,
                                        url: i.url,
                                        error: d,
                                        reason: d.message,
                                        level: t.level || void 0,
                                        parent: null == (f = i.fragments[0]) ? void 0 : f.type,
                                        networkDetails: c,
                                        stats: n
                                    })
                                }
                                i.playlistParsingError = null
                            }
                        } - 1 === i.requestScheduled && (i.requestScheduled = n.loading.start);
                        var g, v = this.hls.mainForwardBufferInfo,
                            m = v ? v.end - v.len : 0,
                            p = oi(i, 1e3 * (i.edge - m));
                        if (i.requestScheduled + p < a ? i.requestScheduled = a : i.requestScheduled += p, this.log("live playlist " + e + " " + (i.advanced ? "REFRESHED " + i.lastPartSn + "-" + i.lastPartIndex : i.updated ? "UPDATED" : "MISSED")), !this.canLoad || !i.live) return;
                        var y = void 0,
                            E = void 0;
                        if (i.canBlockReload && i.endSN && i.advanced) {
                            var T = this.hls.config.lowLatencyMode,
                                S = i.lastPartSn,
                                A = i.endSN,
                                L = i.lastPartIndex,
                                R = S === A; - 1 !== L ? R ? (y = A + 1, E = T ? 0 : L) : (y = S, E = T ? L + 1 : i.maxPartIndex) : y = A + 1;
                            var D = i.age,
                                _ = D + i.ageHeader,
                                P = Math.min(_ - i.partTarget, 1.5 * i.targetduration);
                            if (P > 0) {
                                if (_ > 3 * i.targetduration) this.log("Playlist last advanced " + D.toFixed(2) + "s ago. Omitting segment and part directives."), y = void 0, E = void 0;
                                else if (null != r && r.tuneInGoal && _ - i.partTarget > r.tuneInGoal) this.warn("CDN Tune-in goal increased from: " + r.tuneInGoal + " to: " + P + " with playlist age: " + i.age), P = 0;
                                else {
                                    var C = Math.floor(P / i.targetduration);
                                    y += C, void 0 !== E && (E += Math.round(P % i.targetduration / i.partTarget)), this.log("CDN Tune-in age: " + i.ageHeader + "s last advanced " + D.toFixed(2) + "s goal: " + P + " skip sn " + C + " to part " + E)
                                }
                                i.tuneInGoal = P
                            }
                            if (g = this.getDeliveryDirectives(i, t.deliveryDirectives, y, E), T || !R) return i.requestScheduled = a, void this.loadingPlaylist(u, g)
                        } else(i.canBlockReload || i.canSkipUntil) && (g = this.getDeliveryDirectives(i, t.deliveryDirectives, y, E));
                        g && void 0 !== y && i.canBlockReload && (i.requestScheduled = n.loading.first + Math.max(p - 2 * s, p / 2)), this.scheduleLoading(u, g, i)
                    } else this.clearTimer()
                }, r.scheduleLoading = function(e, t, r) {
                    var i = this,
                        n = r || e.details;
                    if (n) {
                        var a = self.performance.now(),
                            s = n.requestScheduled;
                        if (a >= s) this.loadingPlaylist(e, t);
                        else {
                            var o = s - a;
                            this.log("reload live playlist " + (e.name || e.bitrate + "bps") + " in " + Math.round(o) + " ms"), this.clearTimer(), this.timer = self.setTimeout((function() {
                                return i.loadingPlaylist(e, t)
                            }), o)
                        }
                    } else this.loadingPlaylist(e, t)
                }, r.getDeliveryDirectives = function(e, t, r, i) {
                    var n = rt(e);
                    return null != t && t.skip && e.deltaUpdateFailed && (r = t.msn, i = t.part, n = Je), new it(r, i, n)
                }, r.checkRetry = function(e) {
                    var t = this,
                        r = e.details,
                        i = At(e),
                        n = e.errorAction,
                        a = n || {},
                        s = a.action,
                        o = a.retryCount,
                        l = void 0 === o ? 0 : o,
                        u = a.retryConfig,
                        d = !!n && !!u && (s === Ct || !n.resolved && s === _t);
                    if (d) {
                        var h;
                        if (l >= u.maxNumRetry) return !1;
                        if (i && null != (h = e.context) && h.deliveryDirectives) this.warn("Retrying playlist loading " + (l + 1) + "/" + u.maxNumRetry + ' after "' + r + '" without delivery-directives'), this.loadPlaylist();
                        else {
                            var f = Rt(u, l);
                            this.clearTimer(), this.timer = self.setTimeout((function() {
                                return t.loadPlaylist()
                            }), f), this.warn("Retrying playlist loading " + (l + 1) + "/" + u.maxNumRetry + ' after "' + r + '" in ' + f + "ms")
                        }
                        e.levelRetry = !0, n.resolved = !0
                    }
                    return d
                }, t
            }(N);

        function ha(e, t) {
            if (e.length !== t.length) return !1;
            for (var r = 0; r < e.length; r++)
                if (!fa(e[r].attrs, t[r].attrs)) return !1;
            return !0
        }

        function fa(e, t, r) {
            var i = e["STABLE-RENDITION-ID"];
            return i && !r ? i === t["STABLE-RENDITION-ID"] : !(r || ["LANGUAGE", "NAME", "CHARACTERISTICS", "AUTOSELECT", "DEFAULT", "FORCED", "ASSOC-LANGUAGE"]).some((function(r) {
                return e[r] !== t[r]
            }))
        }

        function ca(e, t) {
            return t.label.toLowerCase() === e.name.toLowerCase() && (!t.language || t.language.toLowerCase() === (e.lang || "").toLowerCase())
        }
        var ga = function(e) {
                function t(t) {
                    var r;
                    return (r = e.call(this, t, "audio-track-controller") || this).tracks = [], r.groupIds = null, r.tracksInGroup = [], r.trackId = -1, r.currentTrack = null, r.selectDefaultTrack = !0, r.registerListeners(), r
                }
                o(t, e);
                var r = t.prototype;
                return r.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.MANIFEST_PARSED, this.onManifestParsed, this), e.on(b.LEVEL_LOADING, this.onLevelLoading, this), e.on(b.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(b.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.on(b.ERROR, this.onError, this)
                }, r.unregisterListeners = function() {
                    var e = this.hls;
                    e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.MANIFEST_PARSED, this.onManifestParsed, this), e.off(b.LEVEL_LOADING, this.onLevelLoading, this), e.off(b.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(b.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.off(b.ERROR, this.onError, this)
                }, r.destroy = function() {
                    this.unregisterListeners(), this.tracks.length = 0, this.tracksInGroup.length = 0, this.currentTrack = null, e.prototype.destroy.call(this)
                }, r.onManifestLoading = function() {
                    this.tracks = [], this.tracksInGroup = [], this.groupIds = null, this.currentTrack = null, this.trackId = -1, this.selectDefaultTrack = !0
                }, r.onManifestParsed = function(e, t) {
                    this.tracks = t.audioTracks || []
                }, r.onAudioTrackLoaded = function(e, t) {
                    var r = t.id,
                        i = t.groupId,
                        n = t.details,
                        a = this.tracksInGroup[r];
                    if (a && a.groupId === i) {
                        var s = a.details;
                        a.details = t.details, this.log("Audio track " + r + ' "' + a.name + '" lang:' + a.lang + " group:" + i + " loaded [" + n.startSN + "-" + n.endSN + "]"), r === this.trackId && this.playlistLoaded(r, t, s)
                    } else this.warn("Audio track with id:" + r + " and group:" + i + " not found in active group " + (null == a ? void 0 : a.groupId))
                }, r.onLevelLoading = function(e, t) {
                    this.switchLevel(t.level)
                }, r.onLevelSwitching = function(e, t) {
                    this.switchLevel(t.level)
                }, r.switchLevel = function(e) {
                    var t = this.hls.levels[e];
                    if (t) {
                        var r = t.audioGroups || null,
                            i = this.groupIds,
                            n = this.currentTrack;
                        if (!r || (null == i ? void 0 : i.length) !== (null == r ? void 0 : r.length) || null != r && r.some((function(e) {
                                return -1 === (null == i ? void 0 : i.indexOf(e))
                            }))) {
                            this.groupIds = r, this.trackId = -1, this.currentTrack = null;
                            var a = this.tracks.filter((function(e) {
                                return !r || -1 !== r.indexOf(e.groupId)
                            }));
                            if (a.length) this.selectDefaultTrack && !a.some((function(e) {
                                return e.default
                            })) && (this.selectDefaultTrack = !1), a.forEach((function(e, t) {
                                e.id = t
                            }));
                            else if (!n && !this.tracksInGroup.length) return;
                            this.tracksInGroup = a;
                            var s = this.hls.config.audioPreference;
                            if (!n && s) {
                                var o = ht(s, a, ct);
                                if (o > -1) n = a[o];
                                else {
                                    var l = ht(s, this.tracks);
                                    n = this.tracks[l]
                                }
                            }
                            var u = this.findTrackId(n); - 1 === u && n && (u = this.findTrackId(null));
                            var d = {
                                audioTracks: a
                            };
                            this.log("Updating audio tracks, " + a.length + " track(s) found in group(s): " + (null == r ? void 0 : r.join(","))), this.hls.trigger(b.AUDIO_TRACKS_UPDATED, d);
                            var h = this.trackId;
                            if (-1 !== u && -1 === h) this.setAudioTrack(u);
                            else if (a.length && -1 === h) {
                                var f, c = new Error("No audio track selected for current audio group-ID(s): " + (null == (f = this.groupIds) ? void 0 : f.join(",")) + " track count: " + a.length);
                                this.warn(c.message), this.hls.trigger(b.ERROR, {
                                    type: I.MEDIA_ERROR,
                                    details: k.AUDIO_TRACK_LOAD_ERROR,
                                    fatal: !0,
                                    error: c
                                })
                            }
                        }
                    }
                }, r.onError = function(e, t) {
                    !t.fatal && t.context && (t.context.type !== P || t.context.id !== this.trackId || this.groupIds && -1 === this.groupIds.indexOf(t.context.groupId) || this.checkRetry(t))
                }, r.setAudioOption = function(e) {
                    var t = this.hls;
                    if (t.config.audioPreference = e, e) {
                        var r = this.allAudioTracks;
                        if (this.selectDefaultTrack = !1, r.length) {
                            var i = this.currentTrack;
                            if (i && ft(e, i, ct)) return i;
                            var n = ht(e, this.tracksInGroup, ct);
                            if (n > -1) {
                                var a = this.tracksInGroup[n];
                                return this.setAudioTrack(n), a
                            }
                            if (i) {
                                var s = t.loadLevel; - 1 === s && (s = t.firstAutoLevel);
                                var o = function(e, t, r, i, n) {
                                    var a = t[i],
                                        s = t.reduce((function(e, t, r) {
                                            var i = t.uri;
                                            return (e[i] || (e[i] = [])).push(r), e
                                        }), {})[a.uri];
                                    s.length > 1 && (i = Math.max.apply(Math, s));
                                    var o = a.videoRange,
                                        l = a.frameRate,
                                        u = a.codecSet.substring(0, 4),
                                        d = gt(t, i, (function(t) {
                                            if (t.videoRange !== o || t.frameRate !== l || t.codecSet.substring(0, 4) !== u) return !1;
                                            var i = t.audioGroups,
                                                a = r.filter((function(e) {
                                                    return !i || -1 !== i.indexOf(e.groupId)
                                                }));
                                            return ht(e, a, n) > -1
                                        }));
                                    return d > -1 ? d : gt(t, i, (function(t) {
                                        var i = t.audioGroups,
                                            a = r.filter((function(e) {
                                                return !i || -1 !== i.indexOf(e.groupId)
                                            }));
                                        return ht(e, a, n) > -1
                                    }))
                                }(e, t.levels, r, s, ct);
                                if (-1 === o) return null;
                                t.nextLoadLevel = o
                            }
                            if (e.channels || e.audioCodec) {
                                var l = ht(e, r);
                                if (l > -1) return r[l]
                            }
                        }
                    }
                    return null
                }, r.setAudioTrack = function(e) {
                    var t = this.tracksInGroup;
                    if (e < 0 || e >= t.length) this.warn("Invalid audio track id: " + e);
                    else {
                        this.selectDefaultTrack = !1;
                        var r = this.currentTrack,
                            i = t[e],
                            n = i.details && !i.details.live;
                        if (!(e === this.trackId && i === r && n || (this.log("Switching to audio-track " + e + ' "' + i.name + '" lang:' + i.lang + " group:" + i.groupId + " channels:" + i.channels), this.trackId = e, this.currentTrack = i, this.hls.trigger(b.AUDIO_TRACK_SWITCHING, d({}, i)), n))) {
                            var a = this.switchParams(i.url, null == r ? void 0 : r.details, i.details);
                            this.loadPlaylist(a)
                        }
                    }
                }, r.findTrackId = function(e) {
                    for (var t = this.tracksInGroup, r = 0; r < t.length; r++) {
                        var i = t[r];
                        if ((!this.selectDefaultTrack || i.default) && (!e || ft(e, i, ct))) return r
                    }
                    if (e) {
                        for (var n = e.name, a = e.lang, s = e.assocLang, o = e.characteristics, l = e.audioCodec, u = e.channels, d = 0; d < t.length; d++)
                            if (ft({
                                    name: n,
                                    lang: a,
                                    assocLang: s,
                                    characteristics: o,
                                    audioCodec: l,
                                    channels: u
                                }, t[d], ct)) return d;
                        for (var h = 0; h < t.length; h++) {
                            var f = t[h];
                            if (fa(e.attrs, f.attrs, ["LANGUAGE", "ASSOC-LANGUAGE", "CHARACTERISTICS"])) return h
                        }
                        for (var c = 0; c < t.length; c++) {
                            var g = t[c];
                            if (fa(e.attrs, g.attrs, ["LANGUAGE"])) return c
                        }
                    }
                    return -1
                }, r.loadPlaylist = function(t) {
                    e.prototype.loadPlaylist.call(this);
                    var r = this.currentTrack;
                    this.shouldLoadPlaylist(r) && vt(r.url, this.hls) && this.scheduleLoading(r, t)
                }, r.loadingPlaylist = function(t, r) {
                    e.prototype.loadingPlaylist.call(this, t, r);
                    var i = t.id,
                        n = t.groupId,
                        a = this.getUrlWithDirectives(t.url, r),
                        s = t.details,
                        o = null == s ? void 0 : s.age;
                    this.log("Loading audio-track " + i + ' "' + t.name + '" lang:' + t.lang + " group:" + n + (void 0 !== (null == r ? void 0 : r.msn) ? " at sn " + r.msn + " part " + r.part : "") + (o && s.live ? " age " + o.toFixed(1) + (s.type && " " + s.type || "") : "") + " " + a), this.hls.trigger(b.AUDIO_TRACK_LOADING, {
                        url: a,
                        id: i,
                        groupId: n,
                        deliveryDirectives: r || null,
                        track: t
                    })
                }, i(t, [{
                    key: "allAudioTracks",
                    get: function() {
                        return this.tracks
                    }
                }, {
                    key: "audioTracks",
                    get: function() {
                        return this.tracksInGroup
                    }
                }, {
                    key: "audioTrack",
                    get: function() {
                        return this.trackId
                    },
                    set: function(e) {
                        this.selectDefaultTrack = !1, this.setAudioTrack(e)
                    }
                }])
            }(da),
            va = function() {
                function e(e) {
                    this.tracks = void 0, this.queues = {
                        video: [],
                        audio: [],
                        audiovideo: []
                    }, this.tracks = e
                }
                var t = e.prototype;
                return t.destroy = function() {
                    this.tracks = this.queues = null
                }, t.append = function(e, t, r) {
                    if (null !== this.queues && null !== this.tracks) {
                        var i = this.queues[t];
                        i.push(e), 1 !== i.length || r || this.executeNext(t)
                    }
                }, t.appendBlocker = function(e) {
                    var t = this;
                    return new Promise((function(r) {
                        var i = {
                            label: "async-blocker",
                            execute: r,
                            onStart: function() {},
                            onComplete: function() {},
                            onError: function() {}
                        };
                        t.append(i, e)
                    }))
                }, t.prependBlocker = function(e) {
                    var t = this;
                    return new Promise((function(r) {
                        if (t.queues) {
                            var i = {
                                label: "async-blocker-prepend",
                                execute: r,
                                onStart: function() {},
                                onComplete: function() {},
                                onError: function() {}
                            };
                            t.queues[e].unshift(i)
                        }
                    }))
                }, t.removeBlockers = function() {
                    null !== this.queues && [this.queues.video, this.queues.audio, this.queues.audiovideo].forEach((function(e) {
                        var t, r = null == (t = e[0]) ? void 0 : t.label;
                        "async-blocker" !== r && "async-blocker-prepend" !== r || (e[0].execute(), e.splice(0, 1))
                    }))
                }, t.unblockAudio = function(e) {
                    null !== this.queues && this.queues.audio[0] === e && this.shiftAndExecuteNext("audio")
                }, t.executeNext = function(e) {
                    if (null !== this.queues && null !== this.tracks) {
                        var t = this.queues[e];
                        if (t.length) {
                            var r = t[0];
                            try {
                                r.execute()
                            } catch (t) {
                                var i;
                                if (r.onError(t), null === this.queues || null === this.tracks) return;
                                var n = null == (i = this.tracks[e]) ? void 0 : i.buffer;
                                null != n && n.updating || this.shiftAndExecuteNext(e)
                            }
                        }
                    }
                }, t.shiftAndExecuteNext = function(e) {
                    null !== this.queues && (this.queues[e].shift(), this.executeNext(e))
                }, t.current = function(e) {
                    var t;
                    return (null == (t = this.queues) ? void 0 : t[e][0]) || null
                }, t.toString = function() {
                    var e = this.queues,
                        t = this.tracks;
                    return null === e || null === t ? "<destroyed>" : "\n" + this.list("video") + "\n" + this.list("audio") + "\n" + this.list("audiovideo") + "}"
                }, t.list = function(e) {
                    var t, r;
                    return null != (t = this.queues) && t[e] || null != (r = this.tracks) && r[e] ? e + ": (" + this.listSbInfo(e) + ") " + this.listOps(e) : ""
                }, t.listSbInfo = function(e) {
                    var t, r = null == (t = this.tracks) ? void 0 : t[e],
                        i = null == r ? void 0 : r.buffer;
                    return i ? "SourceBuffer" + (i.updating ? " updating" : "") + (r.ended ? " ended" : "") + (r.ending ? " ending" : "") : "none"
                }, t.listOps = function(e) {
                    var t;
                    return (null == (t = this.queues) ? void 0 : t[e].map((function(e) {
                        return e.label
                    })).join(", ")) || ""
                }, e
            }(),
            ma = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,
            pa = "HlsJsTrackRemovedError",
            ya = function(e) {
                function t(t) {
                    var r;
                    return (r = e.call(this, t) || this).name = pa, r
                }
                return o(t, e), t
            }(c(Error)),
            Ea = function(e) {
                function t(t, r) {
                    var i, n;
                    return (i = e.call(this, "buffer-controller", t.logger) || this).hls = void 0, i.fragmentTracker = void 0, i.details = null, i._objectUrl = null, i.operationQueue = null, i.bufferCodecEventsTotal = 0, i.media = null, i.mediaSource = null, i.lastMpegAudioChunk = null, i.blockedAudioAppend = null, i.lastVideoAppendEnd = 0, i.appendSource = void 0, i.transferData = void 0, i.overrides = void 0, i.appendErrors = {
                        audio: 0,
                        video: 0,
                        audiovideo: 0
                    }, i.tracks = {}, i.sourceBuffers = [
                        [null, null],
                        [null, null]
                    ], i._onEndStreaming = function(e) {
                        var t;
                        i.hls && "open" === (null == (t = i.mediaSource) ? void 0 : t.readyState) && i.hls.pauseBuffering()
                    }, i._onStartStreaming = function(e) {
                        i.hls && i.hls.resumeBuffering()
                    }, i._onMediaSourceOpen = function(e) {
                        var t = i,
                            r = t.media,
                            n = t.mediaSource;
                        e && i.log("Media source opened"), r && n && (n.removeEventListener("sourceopen", i._onMediaSourceOpen), r.removeEventListener("emptied", i._onMediaEmptied), i.updateDuration(), i.hls.trigger(b.MEDIA_ATTACHED, {
                            media: r,
                            mediaSource: n
                        }), null !== i.mediaSource && i.checkPendingTracks())
                    }, i._onMediaSourceClose = function() {
                        i.log("Media source closed")
                    }, i._onMediaSourceEnded = function() {
                        i.log("Media source ended")
                    }, i._onMediaEmptied = function() {
                        var e = i,
                            t = e.mediaSrc,
                            r = e._objectUrl;
                        t !== r && i.error("Media element src was set while attaching MediaSource (" + r + " > " + t + ")")
                    }, i.hls = t, i.fragmentTracker = r, i.appendSource = (n = W(t.config.preferManagedMediaSource), "undefined" != typeof self && n === self.ManagedMediaSource), i.initTracks(), i.registerListeners(), i
                }
                o(t, e);
                var r = t.prototype;
                return r.hasSourceTypes = function() {
                    return Object.keys(this.tracks).length > 0
                }, r.destroy = function() {
                    this.unregisterListeners(), this.details = null, this.lastMpegAudioChunk = this.blockedAudioAppend = null, this.transferData = this.overrides = void 0, this.operationQueue && (this.operationQueue.destroy(), this.operationQueue = null), this.hls = this.fragmentTracker = null, this._onMediaSourceOpen = this._onMediaSourceClose = null, this._onMediaSourceEnded = null, this._onStartStreaming = this._onEndStreaming = null
                }, r.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.MANIFEST_PARSED, this.onManifestParsed, this), e.on(b.BUFFER_RESET, this.onBufferReset, this), e.on(b.BUFFER_APPENDING, this.onBufferAppending, this), e.on(b.BUFFER_CODECS, this.onBufferCodecs, this), e.on(b.BUFFER_EOS, this.onBufferEos, this), e.on(b.BUFFER_FLUSHING, this.onBufferFlushing, this), e.on(b.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(b.FRAG_PARSED, this.onFragParsed, this), e.on(b.FRAG_CHANGED, this.onFragChanged, this), e.on(b.ERROR, this.onError, this)
                }, r.unregisterListeners = function() {
                    var e = this.hls;
                    e.off(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.MANIFEST_PARSED, this.onManifestParsed, this), e.off(b.BUFFER_RESET, this.onBufferReset, this), e.off(b.BUFFER_APPENDING, this.onBufferAppending, this), e.off(b.BUFFER_CODECS, this.onBufferCodecs, this), e.off(b.BUFFER_EOS, this.onBufferEos, this), e.off(b.BUFFER_FLUSHING, this.onBufferFlushing, this), e.off(b.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(b.FRAG_PARSED, this.onFragParsed, this), e.off(b.FRAG_CHANGED, this.onFragChanged, this), e.off(b.ERROR, this.onError, this)
                }, r.transferMedia = function() {
                    var e = this,
                        t = this.media,
                        r = this.mediaSource;
                    if (!t) return null;
                    var i = {};
                    if (this.operationQueue) {
                        var n = this.isUpdating();
                        n || this.operationQueue.removeBlockers();
                        var s = this.isQueued();
                        (n || s) && this.warn("Transfering MediaSource with" + (s ? " operations in queue" : "") + (n ? " updating SourceBuffer(s)" : "") + " " + this.operationQueue), this.operationQueue.destroy()
                    }
                    var o = this.transferData;
                    return !this.sourceBufferCount && o && o.mediaSource === r ? a(i, o.tracks) : this.sourceBuffers.forEach((function(t) {
                        var r = t[0];
                        r && (i[r] = a({}, e.tracks[r]), e.removeBuffer(r)), t[0] = t[1] = null
                    })), {
                        media: t,
                        mediaSource: r,
                        tracks: i
                    }
                }, r.initTracks = function() {
                    this.sourceBuffers = [
                        [null, null],
                        [null, null]
                    ], this.tracks = {}, this.resetQueue(), this.resetAppendErrors(), this.lastMpegAudioChunk = this.blockedAudioAppend = null, this.lastVideoAppendEnd = 0
                }, r.onManifestLoading = function() {
                    this.bufferCodecEventsTotal = 0, this.details = null
                }, r.onManifestParsed = function(e, t) {
                    var r, i = 2;
                    (t.audio && !t.video || !t.altAudio) && (i = 1), this.bufferCodecEventsTotal = i, this.log(i + " bufferCodec event(s) expected."), null != (r = this.transferData) && r.mediaSource && this.sourceBufferCount && i && this.bufferCreated()
                }, r.onMediaAttaching = function(e, t) {
                    var r = this.media = t.media;
                    this.transferData = this.overrides = void 0;
                    var i = W(this.appendSource);
                    if (i) {
                        var n = !!t.mediaSource;
                        (n || t.overrides) && (this.transferData = t, this.overrides = t.overrides);
                        var a = this.mediaSource = t.mediaSource || new i;
                        if (this.assignMediaSource(a), n) this._objectUrl = r.src, this.attachTransferred();
                        else {
                            var s = this._objectUrl = self.URL.createObjectURL(a);
                            if (this.appendSource) try {
                                r.removeAttribute("src");
                                var o = self.ManagedMediaSource;
                                r.disableRemotePlayback = r.disableRemotePlayback || o && a instanceof o, Ta(r),
                                    function(e, t) {
                                        var r = self.document.createElement("source");
                                        r.type = "video/mp4", r.src = t, e.appendChild(r)
                                    }(r, s), r.load()
                            } catch (e) {
                                r.src = s
                            } else r.src = s
                        }
                        r.addEventListener("emptied", this._onMediaEmptied)
                    }
                }, r.assignMediaSource = function(e) {
                    var t, r;
                    this.log(((null == (t = this.transferData) ? void 0 : t.mediaSource) === e ? "transferred" : "created") + " media source: " + (null == (r = e.constructor) ? void 0 : r.name)), e.addEventListener("sourceopen", this._onMediaSourceOpen), e.addEventListener("sourceended", this._onMediaSourceEnded), e.addEventListener("sourceclose", this._onMediaSourceClose), this.appendSource && (e.addEventListener("startstreaming", this._onStartStreaming), e.addEventListener("endstreaming", this._onEndStreaming))
                }, r.attachTransferred = function() {
                    var e = this,
                        t = this.media,
                        r = this.transferData;
                    if (r && t) {
                        var i = this.tracks,
                            n = r.tracks,
                            a = n ? Object.keys(n) : null,
                            s = a ? a.length : 0,
                            o = function() {
                                Promise.resolve().then((function() {
                                    e.media && e.mediaSourceOpenOrEnded && e._onMediaSourceOpen()
                                }))
                            };
                        if (n && a && s) {
                            if (!this.tracksReady) return this.hls.config.startFragPrefetch = !0, void this.log("attachTransferred: waiting for SourceBuffer track info");
                            if (this.log("attachTransferred: (bufferCodecEventsTotal " + this.bufferCodecEventsTotal + ")\nrequired tracks: " + ot(i, (function(e, t) {
                                    return "initSegment" === e ? void 0 : t
                                })) + ";\ntransfer tracks: " + ot(n, (function(e, t) {
                                    return "initSegment" === e ? void 0 : t
                                })) + "}"), !j(n, i)) {
                                r.mediaSource = null, r.tracks = void 0;
                                var l = t.currentTime,
                                    u = this.details,
                                    d = Math.max(l, (null == u ? void 0 : u.fragments[0].start) || 0);
                                return d - l > 1 ? void this.log("attachTransferred: waiting for playback to reach new tracks start time " + l + " -> " + d) : (this.warn('attachTransferred: resetting MediaSource for incompatible tracks ("' + Object.keys(n) + '"->"' + Object.keys(i) + '") start time: ' + d + " currentTime: " + l), this.onMediaDetaching(b.MEDIA_DETACHING, {}), this.onMediaAttaching(b.MEDIA_ATTACHING, r), void(t.currentTime = d))
                            }
                            this.transferData = void 0, a.forEach((function(t) {
                                var r = t,
                                    i = n[r];
                                if (i) {
                                    var a = i.buffer;
                                    if (a) {
                                        var s = e.fragmentTracker,
                                            o = i.id;
                                        if (s.hasFragments(o) || s.hasParts(o)) {
                                            var l = sr.getBuffered(a);
                                            s.detectEvictedFragments(r, l, o, null, !0)
                                        }
                                        var u = Sa(r),
                                            d = [r, a];
                                        e.sourceBuffers[u] = d, a.updating && e.operationQueue && e.operationQueue.prependBlocker(r), e.trackSourceBuffer(r, i)
                                    }
                                }
                            })), o(), this.bufferCreated()
                        } else this.log("attachTransferred: MediaSource w/o SourceBuffers"), o()
                    }
                }, r.onMediaDetaching = function(e, t) {
                    var r = this,
                        i = !!t.transferMedia;
                    this.transferData = this.overrides = void 0;
                    var n = this.media,
                        a = this.mediaSource,
                        s = this._objectUrl;
                    if (a) {
                        if (this.log("media source " + (i ? "transferring" : "detaching")), i) this.sourceBuffers.forEach((function(e) {
                            var t = e[0];
                            t && r.removeBuffer(t)
                        })), this.resetQueue();
                        else {
                            if (this.mediaSourceOpenOrEnded) {
                                var o = "open" === a.readyState;
                                try {
                                    for (var l = a.sourceBuffers, u = l.length; u--;) o && l[u].abort(), a.removeSourceBuffer(l[u]);
                                    o && a.endOfStream()
                                } catch (e) {
                                    this.warn("onMediaDetaching: " + e.message + " while calling endOfStream")
                                }
                            }
                            this.sourceBufferCount && this.onBufferReset()
                        }
                        a.removeEventListener("sourceopen", this._onMediaSourceOpen), a.removeEventListener("sourceended", this._onMediaSourceEnded), a.removeEventListener("sourceclose", this._onMediaSourceClose), this.appendSource && (a.removeEventListener("startstreaming", this._onStartStreaming), a.removeEventListener("endstreaming", this._onEndStreaming)), this.mediaSource = null, this._objectUrl = null
                    }
                    n && (n.removeEventListener("emptied", this._onMediaEmptied), i || (s && self.URL.revokeObjectURL(s), this.mediaSrc === s ? (n.removeAttribute("src"), this.appendSource && Ta(n), n.load()) : this.warn("media|source.src was changed by a third party - skip cleanup")), this.media = null), this.hls.trigger(b.MEDIA_DETACHED, t)
                }, r.onBufferReset = function() {
                    var e = this;
                    this.sourceBuffers.forEach((function(t) {
                        var r = t[0];
                        r && e.resetBuffer(r)
                    })), this.initTracks()
                }, r.resetBuffer = function(e) {
                    var t, r = null == (t = this.tracks[e]) ? void 0 : t.buffer;
                    if (this.removeBuffer(e), r) try {
                        var i;
                        null != (i = this.mediaSource) && i.sourceBuffers.length && this.mediaSource.removeSourceBuffer(r)
                    } catch (t) {
                        this.warn("onBufferReset " + e, t)
                    }
                    delete this.tracks[e]
                }, r.removeBuffer = function(e) {
                    this.removeBufferListeners(e), this.sourceBuffers[Sa(e)] = [null, null];
                    var t = this.tracks[e];
                    t && (t.buffer = void 0)
                }, r.resetQueue = function() {
                    this.operationQueue && this.operationQueue.destroy(), this.operationQueue = new va(this.tracks)
                }, r.onBufferCodecs = function(e, t) {
                    var r = this,
                        i = this.tracks,
                        n = Object.keys(t);
                    this.log('BUFFER_CODECS: "' + n + '" (current SB count ' + this.sourceBufferCount + ")");
                    var a = "audiovideo" in t && (i.audio || i.video) || i.audiovideo && ("audio" in t || "video" in t),
                        s = !a && this.sourceBufferCount && this.media && n.some((function(e) {
                            return !i[e]
                        }));
                    a || s ? this.warn('Unsupported transition between "' + Object.keys(i) + '" and "' + n + '" SourceBuffers') : (n.forEach((function(e) {
                        var n, a, s = t[e],
                            o = s.id,
                            l = s.codec,
                            u = s.levelCodec,
                            d = s.container,
                            h = s.metadata,
                            f = s.supplemental,
                            c = i[e],
                            g = null == (n = r.transferData) || null == (n = n.tracks) ? void 0 : n[e],
                            v = null != g && g.buffer ? g : c,
                            m = (null == v ? void 0 : v.pendingCodec) || (null == v ? void 0 : v.codec),
                            p = null == v ? void 0 : v.levelCodec;
                        c || (c = i[e] = {
                            buffer: void 0,
                            listeners: [],
                            codec: l,
                            supplemental: f,
                            container: d,
                            levelCodec: u,
                            metadata: h,
                            id: o
                        });
                        var y = Ge(m, p),
                            E = null == y ? void 0 : y.replace(ma, "$1"),
                            T = Ge(l, u),
                            S = null == (a = T) ? void 0 : a.replace(ma, "$1");
                        T && y && E !== S && ("audio" === e.slice(0, 5) && (T = Be(T, r.appendSource)), r.log("switching codec " + m + " to " + T), T !== (c.pendingCodec || c.codec) && (c.pendingCodec = T), c.container = d, r.appendChangeType(e, d, T))
                    })), (this.tracksReady || this.sourceBufferCount) && (t.tracks = this.sourceBufferTracks), this.sourceBufferCount || this.mediaSourceOpenOrEnded && this.checkPendingTracks())
                }, r.appendChangeType = function(e, t, r) {
                    var i = this,
                        n = t + ";codecs=" + r,
                        a = {
                            label: "change-type=" + n,
                            execute: function() {
                                var a = i.tracks[e];
                                if (a) {
                                    var s = a.buffer;
                                    null != s && s.changeType && (i.log("changing " + e + " sourceBuffer type to " + n), s.changeType(n), a.codec = r, a.container = t)
                                }
                                i.shiftAndExecuteNext(e)
                            },
                            onStart: function() {},
                            onComplete: function() {},
                            onError: function(t) {
                                i.warn("Failed to change " + e + " SourceBuffer type", t)
                            }
                        };
                    this.append(a, e, this.isPending(this.tracks[e]))
                }, r.blockAudio = function(e) {
                    var t, r = this,
                        i = e.start,
                        n = i + .05 * e.duration;
                    if (!0 !== (null == (t = this.fragmentTracker.getAppendedFrag(i, w)) ? void 0 : t.gap)) {
                        var a = {
                            label: "block-audio",
                            execute: function() {
                                var e, t = r.tracks.video;
                                (r.lastVideoAppendEnd > n || null != t && t.buffer && sr.isBuffered(t.buffer, n) || !0 === (null == (e = r.fragmentTracker.getAppendedFrag(n, w)) ? void 0 : e.gap)) && (r.blockedAudioAppend = null, r.shiftAndExecuteNext("audio"))
                            },
                            onStart: function() {},
                            onComplete: function() {},
                            onError: function(e) {
                                r.warn("Error executing block-audio operation", e)
                            }
                        };
                        this.blockedAudioAppend = {
                            op: a,
                            frag: e
                        }, this.append(a, "audio", !0)
                    }
                }, r.unblockAudio = function() {
                    var e = this.blockedAudioAppend,
                        t = this.operationQueue;
                    e && t && (this.blockedAudioAppend = null, t.unblockAudio(e.op))
                }, r.onBufferAppending = function(e, t) {
                    var r = this,
                        i = this.tracks,
                        n = t.data,
                        a = t.type,
                        s = t.parent,
                        o = t.frag,
                        l = t.part,
                        u = t.chunkMeta,
                        d = t.offset,
                        h = u.buffering[a],
                        f = o.sn,
                        c = o.cc,
                        g = self.performance.now();
                    h.start = g;
                    var v = o.stats.buffering,
                        m = l ? l.stats.buffering : null;
                    0 === v.start && (v.start = g), m && 0 === m.start && (m.start = g);
                    var p = i.audio,
                        y = !1;
                    "audio" === a && "audio/mpeg" === (null == p ? void 0 : p.container) && (y = !this.lastMpegAudioChunk || 1 === u.id || this.lastMpegAudioChunk.sn !== u.sn, this.lastMpegAudioChunk = u);
                    var E = i.video,
                        T = null == E ? void 0 : E.buffer;
                    if (T && "initSegment" !== f) {
                        var S = l || o,
                            L = this.blockedAudioAppend;
                        if ("audio" !== a || "main" === s || this.blockedAudioAppend || E.ending || E.ended) {
                            if ("video" === a) {
                                var R = S.end;
                                if (L) {
                                    var D = L.frag.start;
                                    (R > D || R < this.lastVideoAppendEnd || sr.isBuffered(T, D)) && this.unblockAudio()
                                }
                                this.lastVideoAppendEnd = R
                            }
                        } else {
                            var _ = S.start + .05 * S.duration,
                                P = T.buffered,
                                C = this.currentOp("video");
                            P.length || C ? !C && !sr.isBuffered(T, _) && this.lastVideoAppendEnd < _ && this.blockAudio(S) : this.blockAudio(S)
                        }
                    }
                    var w = (l || o).start,
                        O = {
                            label: "append-" + a,
                            execute: function() {
                                var e;
                                h.executeStart = self.performance.now();
                                var t = null == (e = r.tracks[a]) ? void 0 : e.buffer;
                                t && (y ? r.updateTimestampOffset(t, w, .1, a, f, c) : void 0 !== d && A(d) && r.updateTimestampOffset(t, d, 1e-6, a, f, c)), r.appendExecutor(n, a)
                            },
                            onStart: function() {},
                            onComplete: function() {
                                var e = self.performance.now();
                                h.executeEnd = h.end = e, 0 === v.first && (v.first = e), m && 0 === m.first && (m.first = e);
                                var t = {};
                                r.sourceBuffers.forEach((function(e) {
                                    var r = e[0],
                                        i = e[1];
                                    r && (t[r] = sr.getBuffered(i))
                                })), r.appendErrors[a] = 0, "audio" === a || "video" === a ? r.appendErrors.audiovideo = 0 : (r.appendErrors.audio = 0, r.appendErrors.video = 0), r.hls.trigger(b.BUFFER_APPENDED, {
                                    type: a,
                                    frag: o,
                                    part: l,
                                    chunkMeta: u,
                                    parent: o.type,
                                    timeRanges: t
                                })
                            },
                            onError: function(e) {
                                var t, i = {
                                        type: I.MEDIA_ERROR,
                                        parent: o.type,
                                        details: k.BUFFER_APPEND_ERROR,
                                        sourceBufferName: a,
                                        frag: o,
                                        part: l,
                                        chunkMeta: u,
                                        error: e,
                                        err: e,
                                        fatal: !1
                                    },
                                    n = null == (t = r.media) ? void 0 : t.error;
                                if (e.code === DOMException.QUOTA_EXCEEDED_ERR || "QuotaExceededError" == e.name || "quota" in e) i.details = k.BUFFER_FULL_ERROR;
                                else if (e.code === DOMException.INVALID_STATE_ERR && r.mediaSourceOpenOrEnded && !n) i.errorAction = Nt(!0);
                                else if (e.name === pa && 0 === r.sourceBufferCount) i.errorAction = Nt(!0);
                                else {
                                    var s = ++r.appendErrors[a];
                                    r.warn("Failed " + s + "/" + r.hls.config.appendErrorMaxRetry + ' times to append segment in "' + a + '" sourceBuffer (' + (n || "no media error") + ")"), (s >= r.hls.config.appendErrorMaxRetry || n) && (i.fatal = !0)
                                }
                                r.hls.trigger(b.ERROR, i)
                            }
                        };
                    this.append(O, a, this.isPending(this.tracks[a]))
                }, r.getFlushOp = function(e, t, r) {
                    var i = this;
                    return this.log('queuing "' + e + '" remove ' + t + "-" + r), {
                        label: "remove",
                        execute: function() {
                            i.removeExecutor(e, t, r)
                        },
                        onStart: function() {},
                        onComplete: function() {
                            i.hls.trigger(b.BUFFER_FLUSHED, {
                                type: e
                            })
                        },
                        onError: function(n) {
                            i.warn("Failed to remove " + t + "-" + r + ' from "' + e + '" SourceBuffer', n)
                        }
                    }
                }, r.onBufferFlushing = function(e, t) {
                    var r = this,
                        i = t.type,
                        n = t.startOffset,
                        a = t.endOffset;
                    i ? this.append(this.getFlushOp(i, n, a), i) : this.sourceBuffers.forEach((function(e) {
                        var t = e[0];
                        t && r.append(r.getFlushOp(t, n, a), t)
                    }))
                }, r.onFragParsed = function(e, t) {
                    var r = this,
                        i = t.frag,
                        n = t.part,
                        a = [],
                        s = n ? n.elementaryStreams : i.elementaryStreams;
                    s[J] ? a.push("audiovideo") : (s[$] && a.push("audio"), s[Z] && a.push("video")), 0 === a.length && this.warn("Fragments must have at least one ElementaryStreamType set. type: " + i.type + " level: " + i.level + " sn: " + i.sn), this.blockBuffers((function() {
                        var e = self.performance.now();
                        i.stats.buffering.end = e, n && (n.stats.buffering.end = e);
                        var t = n ? n.stats : i.stats;
                        r.hls.trigger(b.FRAG_BUFFERED, {
                            frag: i,
                            part: n,
                            stats: t,
                            id: i.type
                        })
                    }), a).catch((function(e) {
                        r.warn("Fragment buffered callback " + e), r.stepOperationQueue(r.sourceBufferTypes)
                    }))
                }, r.onFragChanged = function(e, t) {
                    this.trimBuffers()
                }, r.onBufferEos = function(e, t) {
                    var r, i = this;
                    this.sourceBuffers.forEach((function(e) {
                        var r = e[0];
                        if (r) {
                            var n = i.tracks[r];
                            t.type && t.type !== r || (n.ending = !0, n.ended || (n.ended = !0, i.log(r + " buffer reached EOS")))
                        }
                    }));
                    var n = !1 !== (null == (r = this.overrides) ? void 0 : r.endOfStream);
                    this.sourceBufferCount > 0 && !this.sourceBuffers.some((function(e) {
                        var t, r = e[0];
                        return r && !(null != (t = i.tracks[r]) && t.ended)
                    })) ? n ? (this.log("Queueing EOS"), this.blockUntilOpen((function() {
                        i.tracksEnded();
                        var e = i.mediaSource;
                        e && "open" === e.readyState ? (i.log("Calling mediaSource.endOfStream()"), e.endOfStream(), i.hls.trigger(b.BUFFERED_TO_END, void 0)) : e && i.log("Could not call mediaSource.endOfStream(). mediaSource.readyState: " + e.readyState)
                    }))) : (this.tracksEnded(), this.hls.trigger(b.BUFFERED_TO_END, void 0)) : "video" === t.type && this.unblockAudio()
                }, r.tracksEnded = function() {
                    var e = this;
                    this.sourceBuffers.forEach((function(t) {
                        var r = t[0];
                        if (null !== r) {
                            var i = e.tracks[r];
                            i && (i.ending = !1)
                        }
                    }))
                }, r.onLevelUpdated = function(e, t) {
                    var r = t.details;
                    r.fragments.length && (this.details = r, this.updateDuration())
                }, r.updateDuration = function() {
                    var e = this;
                    this.blockUntilOpen((function() {
                        var t = e.getDurationAndRange();
                        t && e.updateMediaSource(t)
                    }))
                }, r.onError = function(e, t) {
                    if (t.details === k.BUFFER_APPEND_ERROR && t.frag) {
                        var r, i = null == (r = t.errorAction) ? void 0 : r.nextAutoLevel;
                        A(i) && i !== t.frag.level && this.resetAppendErrors()
                    }
                }, r.resetAppendErrors = function() {
                    this.appendErrors = {
                        audio: 0,
                        video: 0,
                        audiovideo: 0
                    }
                }, r.trimBuffers = function() {
                    var e = this.hls,
                        t = this.details,
                        r = this.media;
                    if (r && null !== t && this.sourceBufferCount) {
                        var i = e.config,
                            n = r.currentTime,
                            a = t.levelTargetDuration,
                            s = t.live && null !== i.liveBackBufferLength ? i.liveBackBufferLength : i.backBufferLength;
                        if (A(s) && s >= 0) {
                            var o = Math.max(s, a),
                                l = Math.floor(n / a) * a - o;
                            this.flushBackBuffer(n, a, l)
                        }
                        var u = i.frontBufferFlushThreshold;
                        if (A(u) && u > 0) {
                            var d = Math.max(i.maxBufferLength, u),
                                h = Math.max(d, a),
                                f = Math.floor(n / a) * a + h;
                            this.flushFrontBuffer(n, a, f)
                        }
                    }
                }, r.flushBackBuffer = function(e, t, r) {
                    var i = this;
                    this.sourceBuffers.forEach((function(e) {
                        var t = e[0],
                            n = e[1];
                        if (n) {
                            var a = sr.getBuffered(n);
                            if (a.length > 0 && r > a.start(0)) {
                                var s;
                                i.hls.trigger(b.BACK_BUFFER_REACHED, {
                                    bufferEnd: r
                                });
                                var o = i.tracks[t];
                                if (null != (s = i.details) && s.live) i.hls.trigger(b.LIVE_BACK_BUFFER_REACHED, {
                                    bufferEnd: r
                                });
                                else if (null != o && o.ended) return void i.log("Cannot flush " + t + " back buffer while SourceBuffer is in ended state");
                                i.hls.trigger(b.BUFFER_FLUSHING, {
                                    startOffset: 0,
                                    endOffset: r,
                                    type: t
                                })
                            }
                        }
                    }))
                }, r.flushFrontBuffer = function(e, t, r) {
                    var i = this;
                    this.sourceBuffers.forEach((function(t) {
                        var n = t[0],
                            a = t[1];
                        if (a) {
                            var s = sr.getBuffered(a),
                                o = s.length;
                            if (o < 2) return;
                            var l = s.start(o - 1),
                                u = s.end(o - 1);
                            if (r > l || e >= l && e <= u) return;
                            i.hls.trigger(b.BUFFER_FLUSHING, {
                                startOffset: l,
                                endOffset: 1 / 0,
                                type: n
                            })
                        }
                    }))
                }, r.getDurationAndRange = function() {
                    var e, t = this.details,
                        r = this.mediaSource;
                    if (!t || !this.media || "open" !== (null == r ? void 0 : r.readyState)) return null;
                    var i = t.edge;
                    if (t.live && this.hls.config.liveDurationInfinity) {
                        if (t.fragments.length && r.setLiveSeekableRange) {
                            var n = Math.max(0, t.fragmentStart);
                            return {
                                duration: 1 / 0,
                                start: n,
                                end: Math.max(n, i)
                            }
                        }
                        return {
                            duration: 1 / 0
                        }
                    }
                    var a = null == (e = this.overrides) ? void 0 : e.duration;
                    if (a) return A(a) ? {
                        duration: a
                    } : null;
                    var s = this.media.duration;
                    return i > (A(r.duration) ? r.duration : 0) && i > s || !A(s) ? {
                        duration: i
                    } : null
                }, r.updateMediaSource = function(e) {
                    var t = e.duration,
                        r = e.start,
                        i = e.end,
                        n = this.mediaSource;
                    this.media && n && "open" === n.readyState && (n.duration !== t && (A(t) && this.log("Updating MediaSource duration to " + t.toFixed(3)), n.duration = t), void 0 !== r && void 0 !== i && (this.log("MediaSource duration is set to " + n.duration + ". Setting seekable range to " + r + "-" + i + "."), n.setLiveSeekableRange(r, i)))
                }, r.checkPendingTracks = function() {
                    var e = this.bufferCodecEventsTotal,
                        t = this.pendingTrackCount,
                        r = this.tracks;
                    if (this.log("checkPendingTracks (pending: " + t + " codec events expected: " + e + ") " + ot(r)), this.tracksReady) {
                        var i, n = null == (i = this.transferData) ? void 0 : i.tracks;
                        n && Object.keys(n).length ? this.attachTransferred() : this.createSourceBuffers()
                    }
                }, r.bufferCreated = function() {
                    var e = this;
                    if (this.sourceBufferCount) {
                        var t = {};
                        this.sourceBuffers.forEach((function(r) {
                            var i = r[0],
                                n = r[1];
                            if (i) {
                                var a = e.tracks[i];
                                t[i] = {
                                    buffer: n,
                                    container: a.container,
                                    codec: a.codec,
                                    supplemental: a.supplemental,
                                    levelCodec: a.levelCodec,
                                    id: a.id,
                                    metadata: a.metadata
                                }
                            }
                        })), this.hls.trigger(b.BUFFER_CREATED, {
                            tracks: t
                        }), this.log("SourceBuffers created. Running queue: " + this.operationQueue), this.sourceBuffers.forEach((function(t) {
                            var r = t[0];
                            e.executeNext(r)
                        }))
                    } else {
                        var r = new Error("could not create source buffer for media codec(s)");
                        this.hls.trigger(b.ERROR, {
                            type: I.MEDIA_ERROR,
                            details: k.BUFFER_INCOMPATIBLE_CODECS_ERROR,
                            fatal: !0,
                            error: r,
                            reason: r.message
                        })
                    }
                }, r.createSourceBuffers = function() {
                    var e = this.tracks,
                        t = this.sourceBuffers,
                        r = this.mediaSource;
                    if (!r) throw new Error("createSourceBuffers called when mediaSource was null");
                    for (var i in e) {
                        var n = i,
                            a = e[n];
                        if (this.isPending(a)) {
                            var s = this.getTrackCodec(a, n),
                                o = a.container + ";codecs=" + s;
                            a.codec = s, this.log("creating sourceBuffer(" + o + ")" + (this.currentOp(n) ? " Queued" : "") + " " + ot(a));
                            try {
                                var l = r.addSourceBuffer(o),
                                    u = Sa(n),
                                    d = [n, l];
                                t[u] = d, a.buffer = l
                            } catch (e) {
                                var h;
                                return this.error("error while trying to add sourceBuffer: " + e.message), this.shiftAndExecuteNext(n), null == (h = this.operationQueue) || h.removeBlockers(), delete this.tracks[n], void this.hls.trigger(b.ERROR, {
                                    type: I.MEDIA_ERROR,
                                    details: k.BUFFER_ADD_CODEC_ERROR,
                                    fatal: !1,
                                    error: e,
                                    sourceBufferName: n,
                                    mimeType: o,
                                    parent: a.id
                                })
                            }
                            this.trackSourceBuffer(n, a)
                        }
                    }
                    this.bufferCreated()
                }, r.getTrackCodec = function(e, t) {
                    var r = e.supplemental,
                        i = e.codec;
                    r && ("video" === t || "audiovideo" === t) && we(r, "video") && (i = function(e, t) {
                        var r = [];
                        if (e)
                            for (var i = e.split(","), n = 0; n < i.length; n++) Ce(i[n], "video") || r.push(i[n]);
                        return t && r.push(t), r.join(",")
                    }(i, r));
                    var n = Ge(i, e.levelCodec);
                    return n ? "audio" === t.slice(0, 5) ? Be(n, this.appendSource) : n : ""
                }, r.trackSourceBuffer = function(e, t) {
                    var r = this,
                        i = t.buffer;
                    if (i) {
                        var n = this.getTrackCodec(t, e);
                        this.tracks[e] = {
                            buffer: i,
                            codec: n,
                            container: t.container,
                            levelCodec: t.levelCodec,
                            supplemental: t.supplemental,
                            metadata: t.metadata,
                            id: t.id,
                            listeners: []
                        }, this.removeBufferListeners(e), this.addBufferListener(e, "updatestart", this.onSBUpdateStart), this.addBufferListener(e, "updateend", this.onSBUpdateEnd), this.addBufferListener(e, "error", this.onSBUpdateError), this.appendSource && this.addBufferListener(e, "bufferedchange", (function(e, t) {
                            var i = t.removedRanges;
                            null != i && i.length && r.hls.trigger(b.BUFFER_FLUSHED, {
                                type: e
                            })
                        }))
                    }
                }, r.onSBUpdateStart = function(e) {
                    var t = this.currentOp(e);
                    t && t.onStart()
                }, r.onSBUpdateEnd = function(e) {
                    var t;
                    if ("closed" !== (null == (t = this.mediaSource) ? void 0 : t.readyState)) {
                        var r = this.currentOp(e);
                        r && (r.onComplete(), this.shiftAndExecuteNext(e))
                    } else this.resetBuffer(e)
                }, r.onSBUpdateError = function(e, t) {
                    var r, i = new Error(e + " SourceBuffer error. MediaSource readyState: " + (null == (r = this.mediaSource) ? void 0 : r.readyState));
                    this.error("" + i, t), this.hls.trigger(b.ERROR, {
                        type: I.MEDIA_ERROR,
                        details: k.BUFFER_APPENDING_ERROR,
                        sourceBufferName: e,
                        error: i,
                        fatal: !1
                    });
                    var n = this.currentOp(e);
                    n && n.onError(i)
                }, r.updateTimestampOffset = function(e, t, r, i, n, a) {
                    var s = t - e.timestampOffset;
                    Math.abs(s) >= r && (this.log("Updating " + i + " SourceBuffer timestampOffset to " + t + " (sn: " + n + " cc: " + a + ")"), e.timestampOffset = t)
                }, r.removeExecutor = function(e, t, r) {
                    var i = this.media,
                        n = this.mediaSource,
                        a = this.tracks[e],
                        s = null == a ? void 0 : a.buffer;
                    if (!i || !n || !s) return this.warn("Attempting to remove from the " + e + " SourceBuffer, but it does not exist"), void this.shiftAndExecuteNext(e);
                    var o = A(i.duration) ? i.duration : 1 / 0,
                        l = A(n.duration) ? n.duration : 1 / 0,
                        u = Math.max(0, t),
                        d = Math.min(r, o, l);
                    d > u && (!a.ending || a.ended) ? (a.ended = !1, this.log("Removing [" + u + "," + d + "] from the " + e + " SourceBuffer"), s.remove(u, d)) : this.shiftAndExecuteNext(e)
                }, r.appendExecutor = function(e, t) {
                    var r = this.tracks[t],
                        i = null == r ? void 0 : r.buffer;
                    if (!i) throw new ya("Attempting to append to the " + t + " SourceBuffer, but it does not exist");
                    r.ending = !1, r.ended = !1, i.appendBuffer(e)
                }, r.blockUntilOpen = function(e) {
                    var t = this;
                    if (this.isUpdating() || this.isQueued()) this.blockBuffers(e).catch((function(e) {
                        t.warn("SourceBuffer blocked callback " + e), t.stepOperationQueue(t.sourceBufferTypes)
                    }));
                    else try {
                        e()
                    } catch (e) {
                        this.warn("Callback run without blocking " + this.operationQueue + " " + e)
                    }
                }, r.isUpdating = function() {
                    return this.sourceBuffers.some((function(e) {
                        var t = e[0],
                            r = e[1];
                        return t && r.updating
                    }))
                }, r.isQueued = function() {
                    var e = this;
                    return this.sourceBuffers.some((function(t) {
                        var r = t[0];
                        return r && !!e.currentOp(r)
                    }))
                }, r.isPending = function(e) {
                    return !!e && !e.buffer
                }, r.blockBuffers = function(e, t) {
                    var r = this;
                    if (void 0 === t && (t = this.sourceBufferTypes), !t.length) return this.log("Blocking operation requested, but no SourceBuffers exist"), Promise.resolve().then(e);
                    var i = this.operationQueue,
                        n = t.map((function(e) {
                            return r.appendBlocker(e)
                        }));
                    return t.length > 1 && !!this.blockedAudioAppend && this.unblockAudio(), Promise.all(n).then((function(t) {
                        i === r.operationQueue && (e(), r.stepOperationQueue(r.sourceBufferTypes))
                    }))
                }, r.stepOperationQueue = function(e) {
                    var t = this;
                    e.forEach((function(e) {
                        var r, i = null == (r = t.tracks[e]) ? void 0 : r.buffer;
                        i && !i.updating && t.shiftAndExecuteNext(e)
                    }))
                }, r.append = function(e, t, r) {
                    this.operationQueue && this.operationQueue.append(e, t, r)
                }, r.appendBlocker = function(e) {
                    if (this.operationQueue) return this.operationQueue.appendBlocker(e)
                }, r.currentOp = function(e) {
                    return this.operationQueue ? this.operationQueue.current(e) : null
                }, r.executeNext = function(e) {
                    e && this.operationQueue && this.operationQueue.executeNext(e)
                }, r.shiftAndExecuteNext = function(e) {
                    this.operationQueue && this.operationQueue.shiftAndExecuteNext(e)
                }, r.addBufferListener = function(e, t, r) {
                    var i = this.tracks[e];
                    if (i) {
                        var n = i.buffer;
                        if (n) {
                            var a = r.bind(this, e);
                            i.listeners.push({
                                event: t,
                                listener: a
                            }), n.addEventListener(t, a)
                        }
                    }
                }, r.removeBufferListeners = function(e) {
                    var t = this.tracks[e];
                    if (t) {
                        var r = t.buffer;
                        r && (t.listeners.forEach((function(e) {
                            r.removeEventListener(e.event, e.listener)
                        })), t.listeners.length = 0)
                    }
                }, i(t, [{
                    key: "mediaSourceOpenOrEnded",
                    get: function() {
                        var e, t = null == (e = this.mediaSource) ? void 0 : e.readyState;
                        return "open" === t || "ended" === t
                    }
                }, {
                    key: "sourceBufferTracks",
                    get: function() {
                        var e = this;
                        return Object.keys(this.tracks).reduce((function(t, r) {
                            var i = e.tracks[r];
                            return t[r] = {
                                id: i.id,
                                container: i.container,
                                codec: i.codec,
                                levelCodec: i.levelCodec
                            }, t
                        }), {})
                    }
                }, {
                    key: "bufferedToEnd",
                    get: function() {
                        var e = this;
                        return this.sourceBufferCount > 0 && !this.sourceBuffers.some((function(t) {
                            var r = t[0];
                            if (r) {
                                var i = e.tracks[r];
                                if (i) return !i.ended || i.ending
                            }
                            return !1
                        }))
                    }
                }, {
                    key: "tracksReady",
                    get: function() {
                        var e = this.pendingTrackCount;
                        return e > 0 && (e >= this.bufferCodecEventsTotal || this.isPending(this.tracks.audiovideo))
                    }
                }, {
                    key: "mediaSrc",
                    get: function() {
                        var e, t, r = (null == (e = this.media) || null == (t = e.querySelector) ? void 0 : t.call(e, "source")) || this.media;
                        return null == r ? void 0 : r.src
                    }
                }, {
                    key: "pendingTrackCount",
                    get: function() {
                        var e = this;
                        return Object.keys(this.tracks).reduce((function(t, r) {
                            return t + (e.isPending(e.tracks[r]) ? 1 : 0)
                        }), 0)
                    }
                }, {
                    key: "sourceBufferCount",
                    get: function() {
                        return this.sourceBuffers.reduce((function(e, t) {
                            return e + (t[0] ? 1 : 0)
                        }), 0)
                    }
                }, {
                    key: "sourceBufferTypes",
                    get: function() {
                        return this.sourceBuffers.map((function(e) {
                            return e[0]
                        })).filter((function(e) {
                            return !!e
                        }))
                    }
                }])
            }(N);

        function Ta(e) {
            var t = e.querySelectorAll("source");
            [].slice.call(t).forEach((function(t) {
                e.removeChild(t)
            }))
        }

        function Sa(e) {
            return "audio" === e ? 1 : 0
        }
        var Aa = function() {
                function e(e) {
                    this.hls = void 0, this.autoLevelCapping = void 0, this.firstLevel = void 0, this.media = void 0, this.restrictedLevels = void 0, this.timer = void 0, this.clientRect = void 0, this.streamController = void 0, this.hls = e, this.autoLevelCapping = Number.POSITIVE_INFINITY, this.firstLevel = -1, this.media = null, this.restrictedLevels = [], this.timer = void 0, this.clientRect = null, this.registerListeners()
                }
                var t = e.prototype;
                return t.setStreamController = function(e) {
                    this.streamController = e
                }, t.destroy = function() {
                    this.hls && this.unregisterListener(), this.timer && this.stopCapping(), this.media = null, this.clientRect = null, this.hls = this.streamController = null
                }, t.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this), e.on(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(b.MANIFEST_PARSED, this.onManifestParsed, this), e.on(b.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(b.BUFFER_CODECS, this.onBufferCodecs, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this)
                }, t.unregisterListener = function() {
                    var e = this.hls;
                    e.off(b.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this), e.off(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(b.MANIFEST_PARSED, this.onManifestParsed, this), e.off(b.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(b.BUFFER_CODECS, this.onBufferCodecs, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this)
                }, t.onFpsDropLevelCapping = function(e, t) {
                    var r = this.hls.levels[t.droppedLevel];
                    this.isLevelAllowed(r) && this.restrictedLevels.push({
                        bitrate: r.bitrate,
                        height: r.height,
                        width: r.width
                    })
                }, t.onMediaAttaching = function(e, t) {
                    this.media = t.media instanceof HTMLVideoElement ? t.media : null, this.clientRect = null, this.timer && this.hls.levels.length && this.detectPlayerSize()
                }, t.onManifestParsed = function(e, t) {
                    var r = this.hls;
                    this.restrictedLevels = [], this.firstLevel = t.firstLevel, r.config.capLevelToPlayerSize && t.video && this.startCapping()
                }, t.onLevelsUpdated = function(e, t) {
                    this.timer && A(this.autoLevelCapping) && this.detectPlayerSize()
                }, t.onBufferCodecs = function(e, t) {
                    this.hls.config.capLevelToPlayerSize && t.video && this.startCapping()
                }, t.onMediaDetaching = function() {
                    this.stopCapping(), this.media = null
                }, t.detectPlayerSize = function() {
                    if (this.media) {
                        if (this.mediaHeight <= 0 || this.mediaWidth <= 0) return void(this.clientRect = null);
                        var e = this.hls.levels;
                        if (e.length) {
                            var t = this.hls,
                                r = this.getMaxLevel(e.length - 1);
                            r !== this.autoLevelCapping && t.logger.log("Setting autoLevelCapping to " + r + ": " + e[r].height + "p@" + e[r].bitrate + " for media " + this.mediaWidth + "x" + this.mediaHeight), t.autoLevelCapping = r, t.autoLevelEnabled && t.autoLevelCapping > this.autoLevelCapping && this.streamController && this.streamController.nextLevelSwitch(), this.autoLevelCapping = t.autoLevelCapping
                        }
                    }
                }, t.getMaxLevel = function(t) {
                    var r = this,
                        i = this.hls.levels;
                    if (!i.length) return -1;
                    var n = i.filter((function(e, i) {
                        return r.isLevelAllowed(e) && i <= t
                    }));
                    return this.clientRect = null, e.getMaxLevelByMediaSize(n, this.mediaWidth, this.mediaHeight)
                }, t.startCapping = function() {
                    this.timer || (this.autoLevelCapping = Number.POSITIVE_INFINITY, self.clearInterval(this.timer), this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1e3), this.detectPlayerSize())
                }, t.stopCapping = function() {
                    this.restrictedLevels = [], this.firstLevel = -1, this.autoLevelCapping = Number.POSITIVE_INFINITY, this.timer && (self.clearInterval(this.timer), this.timer = void 0)
                }, t.getDimensions = function() {
                    if (this.clientRect) return this.clientRect;
                    var e = this.media,
                        t = {
                            width: 0,
                            height: 0
                        };
                    if (e) {
                        var r = e.getBoundingClientRect();
                        t.width = r.width, t.height = r.height, t.width || t.height || (t.width = r.right - r.left || e.width || 0, t.height = r.bottom - r.top || e.height || 0)
                    }
                    return this.clientRect = t, t
                }, t.isLevelAllowed = function(e) {
                    return !this.restrictedLevels.some((function(t) {
                        return e.bitrate === t.bitrate && e.width === t.width && e.height === t.height
                    }))
                }, e.getMaxLevelByMediaSize = function(e, t, r) {
                    if (null == e || !e.length) return -1;
                    for (var i, n, a = e.length - 1, s = Math.max(t, r), o = 0; o < e.length; o += 1) {
                        var l = e[o];
                        if ((l.width >= s || l.height >= s) && (i = l, !(n = e[o + 1]) || i.width !== n.width || i.height !== n.height)) {
                            a = o;
                            break
                        }
                    }
                    return a
                }, i(e, [{
                    key: "mediaWidth",
                    get: function() {
                        return this.getDimensions().width * this.contentScaleFactor
                    }
                }, {
                    key: "mediaHeight",
                    get: function() {
                        return this.getDimensions().height * this.contentScaleFactor
                    }
                }, {
                    key: "contentScaleFactor",
                    get: function() {
                        var e = 1;
                        if (!this.hls.config.ignoreDevicePixelRatio) try {
                            e = self.devicePixelRatio
                        } catch (e) {}
                        return Math.min(e, this.hls.config.maxDevicePixelRatio)
                    }
                }])
            }(),
            La = {
                MANIFEST: "m",
                AUDIO: "a",
                VIDEO: "v",
                MUXED: "av",
                INIT: "i",
                CAPTION: "c",
                TIMED_TEXT: "tt",
                KEY: "k",
                OTHER: "o"
            },
            Ra = {
                HLS: "h"
            },
            Ia = function e(t, r) {
                Array.isArray(t) && (t = t.map((function(t) {
                    return t instanceof e ? t : new e(t)
                }))), this.value = t, this.params = r
            },
            ka = "Dict";

        function ba(e, t, r, i) {
            return new Error("failed to " + e + ' "' + (n = t, (Array.isArray(n) ? JSON.stringify(n) : n instanceof Map ? "Map{}" : n instanceof Set ? "Set{}" : "object" == typeof n ? JSON.stringify(n) : String(n)) + '" as ') + r, {
                cause: i
            });
            var n
        }

        function Da(e, t, r) {
            return ba("serialize", e, t, r)
        }
        var _a = function(e) {
                this.description = e
            },
            Pa = "Bare Item",
            Ca = "Boolean",
            wa = "Byte Sequence";

        function Oa(e) {
            if (!1 === ArrayBuffer.isView(e)) throw Da(e, wa);
            return ":" + (t = e, btoa(String.fromCharCode.apply(String, t)) + ":");
            var t
        }
        var xa = "Integer";

        function Ma(e) {
            if (function(e) {
                    return e < -999999999999999 || 999999999999999 < e
                }(e)) throw Da(e, xa);
            return e.toString()
        }

        function Fa(e, t) {
            if (e < 0) return -Fa(-e, t);
            var r = Math.pow(10, t);
            if (Math.abs(e * r % 1 - .5) < Number.EPSILON) {
                var i = Math.floor(e * r);
                return (i % 2 == 0 ? i : i + 1) / r
            }
            return Math.round(e * r) / r
        }
        var Na = "Decimal";

        function Ua(e) {
            var t = Fa(e, 3);
            if (Math.floor(Math.abs(t)).toString().length > 12) throw Da(e, Na);
            var r = t.toString();
            return r.includes(".") ? r : r + ".0"
        }
        var Ba = "String",
            Ga = /[\x00-\x1f\x7f]+/,
            Ka = "Token";

        function Va(e) {
            var t, r = (t = e).description || t.toString().slice(7, -1);
            if (!1 === /^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(r)) throw Da(r, Ka);
            return r
        }

        function Ha(e) {
            switch (typeof e) {
                case "number":
                    if (!A(e)) throw Da(e, Pa);
                    return Number.isInteger(e) ? Ma(e) : Ua(e);
                case "string":
                    return function(e) {
                        if (Ga.test(e)) throw Da(e, Ba);
                        return '"' + e.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"'
                    }(e);
                case "symbol":
                    return Va(e);
                case "boolean":
                    return function(e) {
                        if ("boolean" != typeof e) throw Da(e, Ca);
                        return e ? "?1" : "?0"
                    }(e);
                case "object":
                    if (e instanceof Date) return function(e) {
                        return "@" + Ma(e.getTime() / 1e3)
                    }(e);
                    if (e instanceof Uint8Array) return Oa(e);
                    if (e instanceof _a) return Va(e);
                default:
                    throw Da(e, Pa)
            }
        }
        var Ya = "Key";

        function Wa(e) {
            if (!1 === /^[a-z*][a-z0-9\-_.*]*$/.test(e)) throw Da(e, Ya);
            return e
        }

        function ja(e) {
            return null == e ? "" : Object.entries(e).map((function(e) {
                var t = e[0],
                    r = e[1];
                return !0 === r ? ";" + Wa(t) : ";" + Wa(t) + "=" + Ha(r)
            })).join("")
        }

        function qa(e) {
            return e instanceof Ia ? "" + Ha(e.value) + ja(e.params) : Ha(e)
        }

        function Xa(e, t) {
            if (void 0 === t && (t = {
                    whitespace: !0
                }), "object" != typeof e || null == e) throw Da(e, ka);
            var r = e instanceof Map ? e.entries() : Object.entries(e),
                i = (null == t ? void 0 : t.whitespace) ? " " : "";
            return Array.from(r).map((function(e) {
                var t = e[0],
                    r = e[1];
                r instanceof Ia == 0 && (r = new Ia(r));
                var i, n = Wa(t);
                return !0 === r.value ? n += ja(r.params) : (n += "=", Array.isArray(r.value) ? n += "(" + (i = r).value.map(qa).join(" ") + ")" + ja(i.params) : n += qa(r)), n
            })).join("," + i)
        }

        function Qa(e, t) {
            return Xa(e, t)
        }
        var za = "CMCD-Object",
            $a = "CMCD-Request",
            Za = "CMCD-Session",
            Ja = "CMCD-Status",
            es = {
                br: za,
                ab: za,
                d: za,
                ot: za,
                tb: za,
                tpb: za,
                lb: za,
                tab: za,
                lab: za,
                url: za,
                pb: $a,
                bl: $a,
                tbl: $a,
                dl: $a,
                ltc: $a,
                mtp: $a,
                nor: $a,
                nrr: $a,
                rc: $a,
                sn: $a,
                sta: $a,
                su: $a,
                ttfb: $a,
                ttfbb: $a,
                ttlb: $a,
                cmsdd: $a,
                cmsds: $a,
                smrt: $a,
                df: $a,
                cs: $a,
                ts: $a,
                cid: Za,
                pr: Za,
                sf: Za,
                sid: Za,
                st: Za,
                v: Za,
                msd: Za,
                bs: Ja,
                bsd: Ja,
                cdn: Ja,
                rtp: Ja,
                bg: Ja,
                pt: Ja,
                ec: Ja,
                e: Ja
            },
            ts = {
                REQUEST: $a
            };

        function rs(e, t) {
            var r = {};
            if (!e) return r;
            var i, n = Object.keys(e),
                a = t ? (i = t, Object.keys(i).reduce((function(e, t) {
                    var r;
                    return null === (r = i[t]) || void 0 === r || r.forEach((function(r) {
                        return e[r] = t
                    })), e
                }), {})) : {};
            return n.reduce((function(t, r) {
                var i, n = es[r] || a[r] || ts.REQUEST;
                return (null !== (i = t[n]) && void 0 !== i ? i : t[n] = {})[r] = e[r], t
            }), r)
        }
        var is = "event",
            ns = function(e) {
                return Math.round(e)
            },
            as = function(e, t) {
                return Array.isArray(e) ? e.map((function(e) {
                    return as(e, t)
                })) : e instanceof Ia && "string" == typeof e.value ? new Ia(as(e.value, t), e.params) : (t.baseUrl && (e = function(e, t) {
                    var r = new URL(e),
                        i = new URL(t);
                    if (r.origin !== i.origin) return e;
                    for (var n = r.pathname.split("/").slice(1), a = i.pathname.split("/").slice(1, -1); n[0] === a[0];) n.shift(), a.shift();
                    for (; a.length;) a.shift(), n.unshift("..");
                    return n.join("/") + r.search + r.hash
                }(e, t.baseUrl)), 1 === t.version ? encodeURIComponent(e) : e)
            },
            ss = function(e) {
                return 100 * ns(e / 100)
            },
            os = {
                br: ns,
                d: ns,
                bl: ss,
                dl: ss,
                mtp: ss,
                nor: function(e, t) {
                    var r = e;
                    return t.version >= 2 && (e instanceof Ia && "string" == typeof e.value ? r = new Ia([e]) : "string" == typeof e && (r = [e])), as(r, t)
                },
                rtp: ss,
                tb: ns
            },
            ls = "request",
            us = "response",
            ds = ["ab", "bg", "bl", "br", "bs", "bsd", "cdn", "cid", "cs", "df", "ec", "lab", "lb", "ltc", "msd", "mtp", "pb", "pr", "pt", "sf", "sid", "sn", "st", "sta", "tab", "tb", "tbl", "tpb", "ts", "v"],
            hs = ["e"],
            fs = /^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/;

        function cs(e) {
            return fs.test(e)
        }
        var gs, vs = ["d", "dl", "nor", "ot", "rtp", "su"],
            ms = ["cmsdd", "cmsds", "rc", "smrt", "ttfb", "ttfbb", "ttlb", "url"],
            ps = ["bl", "br", "bs", "cid", "d", "dl", "mtp", "nor", "nrr", "ot", "pr", "rtp", "sf", "sid", "st", "su", "tb", "v"];

        function ys(e) {
            return ps.includes(e) || cs(e)
        }
        var Es = ((gs = {})[us] = function(e) {
            return ds.includes(e) || vs.includes(e) || ms.includes(e) || cs(e)
        }, gs[is] = function(e) {
            return ds.includes(e) || hs.includes(e) || cs(e)
        }, gs[ls] = function(e) {
            return ds.includes(e) || vs.includes(e) || cs(e)
        }, gs);

        function Ts(e, t) {
            void 0 === t && (t = {});
            var r = {};
            if (null == e || "object" != typeof e) return r;
            var i = t.version || e.v || 1,
                n = t.reportingMode || ls,
                s = 1 === i ? ys : Es[n],
                o = Object.keys(e).filter(s),
                l = t.filter;
            "function" == typeof l && (o = o.filter(l));
            var u = n === us || n === is;
            u && !o.includes("ts") && o.push("ts"), i > 1 && !o.includes("v") && o.push("v");
            var d = a({}, os, t.formatters),
                h = {
                    version: i,
                    reportingMode: n,
                    baseUrl: t.baseUrl
                };
            return o.sort().forEach((function(t) {
                var n = e[t],
                    a = d[t];
                if ("function" == typeof a && (n = a(n, h)), "v" === t) {
                    if (1 === i) return;
                    n = i
                }
                "pr" == t && 1 === n || (u && "ts" === t && !A(n) && (n = Date.now()), function(e) {
                    return "number" == typeof e ? A(e) : null != e && "" !== e && !1 !== e
                }(n) && (function(e) {
                    return ["ot", "sf", "st", "e", "sta"].includes(e)
                }(t) && "string" == typeof n && (n = new _a(n)), r[t] = n))
            })), r
        }

        function Ss(e, t, r) {
            return a(e, function(e, t) {
                void 0 === t && (t = {});
                var r = {};
                if (!e) return r;
                var i = rs(Ts(e, t), null == t ? void 0 : t.customHeaderMap);
                return Object.entries(i).reduce((function(e, t) {
                    var r = t[0],
                        i = Qa(t[1], {
                            whitespace: !1
                        });
                    return i && (e[r] = i), e
                }), r)
            }(t, r))
        }
        var As = "CMCD";

        function Ls(e, t) {
            if (void 0 === t && (t = {}), !e) return "";
            var r = function(e, t) {
                return void 0 === t && (t = {}), e ? Qa(Ts(e, t), {
                    whitespace: !1
                }) : ""
            }(e, t);
            return encodeURIComponent(r)
        }
        var Rs = /CMCD=[^&#]+/;

        function Is(e, t, r) {
            var i = function(e, t) {
                if (void 0 === t && (t = {}), !e) return "";
                var r = Ls(e, t);
                return As + "=" + r
            }(t, r);
            if (!i) return e;
            if (Rs.test(e)) return e.replace(Rs, i);
            var n = e.includes("?") ? "&" : "?";
            return "" + e + n + i
        }
        var ks = function() {
                function e(e) {
                    var t = this;
                    this.hls = void 0, this.config = void 0, this.media = void 0, this.sid = void 0, this.cid = void 0, this.useHeaders = !1, this.includeKeys = void 0, this.initialized = !1, this.starved = !1, this.buffering = !0, this.audioBuffer = void 0, this.videoBuffer = void 0, this.onWaiting = function() {
                        t.initialized && (t.starved = !0), t.buffering = !0
                    }, this.onPlaying = function() {
                        t.initialized || (t.initialized = !0), t.buffering = !1
                    }, this.applyPlaylistData = function(e) {
                        try {
                            t.apply(e, {
                                ot: La.MANIFEST,
                                su: !t.initialized
                            })
                        } catch (e) {
                            t.hls.logger.warn("Could not generate manifest CMCD data.", e)
                        }
                    }, this.applyFragmentData = function(e) {
                        try {
                            var r = e.frag,
                                i = e.part,
                                n = t.hls.levels[r.level],
                                a = t.getObjectType(r),
                                s = {
                                    d: 1e3 * (i || r).duration,
                                    ot: a
                                };
                            a !== La.VIDEO && a !== La.AUDIO && a != La.MUXED || (s.br = n.bitrate / 1e3, s.tb = t.getTopBandwidth(a) / 1e3, s.bl = t.getBufferLength(a));
                            var o = i ? t.getNextPart(i) : t.getNextFrag(r);
                            null != o && o.url && o.url !== r.url && (s.nor = o.url), t.apply(e, s)
                        } catch (e) {
                            t.hls.logger.warn("Could not generate segment CMCD data.", e)
                        }
                    }, this.hls = e;
                    var r = this.config = e.config,
                        i = r.cmcd;
                    null != i && (r.pLoader = this.createPlaylistLoader(), r.fLoader = this.createFragmentLoader(), this.sid = i.sessionId || e.sessionId, this.cid = i.contentId, this.useHeaders = !0 === i.useHeaders, this.includeKeys = i.includeKeys, this.registerListeners())
                }
                var t = e.prototype;
                return t.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(b.MEDIA_DETACHED, this.onMediaDetached, this), e.on(b.BUFFER_CREATED, this.onBufferCreated, this)
                }, t.unregisterListeners = function() {
                    var e = this.hls;
                    e.off(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(b.MEDIA_DETACHED, this.onMediaDetached, this), e.off(b.BUFFER_CREATED, this.onBufferCreated, this)
                }, t.destroy = function() {
                    this.unregisterListeners(), this.onMediaDetached(), this.hls = this.config = this.audioBuffer = this.videoBuffer = null, this.onWaiting = this.onPlaying = this.media = null
                }, t.onMediaAttached = function(e, t) {
                    this.media = t.media, this.media.addEventListener("waiting", this.onWaiting), this.media.addEventListener("playing", this.onPlaying)
                }, t.onMediaDetached = function() {
                    this.media && (this.media.removeEventListener("waiting", this.onWaiting), this.media.removeEventListener("playing", this.onPlaying), this.media = null)
                }, t.onBufferCreated = function(e, t) {
                    var r, i;
                    this.audioBuffer = null == (r = t.tracks.audio) ? void 0 : r.buffer, this.videoBuffer = null == (i = t.tracks.video) ? void 0 : i.buffer
                }, t.createData = function() {
                    var e;
                    return {
                        v: 1,
                        sf: Ra.HLS,
                        sid: this.sid,
                        cid: this.cid,
                        pr: null == (e = this.media) ? void 0 : e.playbackRate,
                        mtp: this.hls.bandwidthEstimate / 1e3
                    }
                }, t.apply = function(e, t) {
                    void 0 === t && (t = {}), a(t, this.createData());
                    var r = t.ot === La.INIT || t.ot === La.VIDEO || t.ot === La.MUXED;
                    this.starved && r && (t.bs = !0, t.su = !0, this.starved = !1), null == t.su && (t.su = this.buffering);
                    var i = this.includeKeys;
                    i && (t = Object.keys(t).reduce((function(e, r) {
                        return i.includes(r) && (e[r] = t[r]), e
                    }), {}));
                    var n = {
                        baseUrl: e.url
                    };
                    this.useHeaders ? (e.headers || (e.headers = {}), Ss(e.headers, t, n)) : e.url = Is(e.url, t, n)
                }, t.getNextFrag = function(e) {
                    var t, r = null == (t = this.hls.levels[e.level]) ? void 0 : t.details;
                    if (r) {
                        var i = e.sn - r.startSN;
                        return r.fragments[i + 1]
                    }
                }, t.getNextPart = function(e) {
                    var t, r = e.index,
                        i = e.fragment,
                        n = null == (t = this.hls.levels[i.level]) || null == (t = t.details) ? void 0 : t.partList;
                    if (n)
                        for (var a = i.sn, s = n.length - 1; s >= 0; s--) {
                            var o = n[s];
                            if (o.index === r && o.fragment.sn === a) return n[s + 1]
                        }
                }, t.getObjectType = function(e) {
                    var t = e.type;
                    return "subtitle" === t ? La.TIMED_TEXT : "initSegment" === e.sn ? La.INIT : "audio" === t ? La.AUDIO : "main" === t ? this.hls.audioTracks.length ? La.VIDEO : La.MUXED : void 0
                }, t.getTopBandwidth = function(e) {
                    var t, r = 0,
                        i = this.hls;
                    if (e === La.AUDIO) t = i.audioTracks;
                    else {
                        var n = i.maxAutoLevel,
                            a = n > -1 ? n + 1 : i.levels.length;
                        t = i.levels.slice(0, a)
                    }
                    return t.forEach((function(e) {
                        e.bitrate > r && (r = e.bitrate)
                    })), r > 0 ? r : NaN
                }, t.getBufferLength = function(e) {
                    var t = this.media,
                        r = e === La.AUDIO ? this.audioBuffer : this.videoBuffer;
                    return r && t ? 1e3 * sr.bufferInfo(r, t.currentTime, this.config.maxBufferHole).len : NaN
                }, t.createPlaylistLoader = function() {
                    var e = this.config.pLoader,
                        t = this.applyPlaylistData,
                        r = e || this.config.loader;
                    return function() {
                        function e(e) {
                            this.loader = void 0, this.loader = new r(e)
                        }
                        var n = e.prototype;
                        return n.destroy = function() {
                            this.loader.destroy()
                        }, n.abort = function() {
                            this.loader.abort()
                        }, n.load = function(e, r, i) {
                            t(e), this.loader.load(e, r, i)
                        }, i(e, [{
                            key: "stats",
                            get: function() {
                                return this.loader.stats
                            }
                        }, {
                            key: "context",
                            get: function() {
                                return this.loader.context
                            }
                        }])
                    }()
                }, t.createFragmentLoader = function() {
                    var e = this.config.fLoader,
                        t = this.applyFragmentData,
                        r = e || this.config.loader;
                    return function() {
                        function e(e) {
                            this.loader = void 0, this.loader = new r(e)
                        }
                        var n = e.prototype;
                        return n.destroy = function() {
                            this.loader.destroy()
                        }, n.abort = function() {
                            this.loader.abort()
                        }, n.load = function(e, r, i) {
                            t(e), this.loader.load(e, r, i)
                        }, i(e, [{
                            key: "stats",
                            get: function() {
                                return this.loader.stats
                            }
                        }, {
                            key: "context",
                            get: function() {
                                return this.loader.context
                            }
                        }])
                    }()
                }, e
            }(),
            bs = function(e) {
                function t(t) {
                    var r;
                    return (r = e.call(this, "content-steering", t.logger) || this).hls = void 0, r.loader = null, r.uri = null, r.pathwayId = ".", r._pathwayPriority = null, r.timeToLoad = 300, r.reloadTimer = -1, r.updated = 0, r.started = !1, r.enabled = !0, r.levels = null, r.audioTracks = null, r.subtitleTracks = null, r.penalizedPathways = {}, r.hls = t, r.registerListeners(), r
                }
                o(t, e);
                var r = t.prototype;
                return r.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(b.MANIFEST_PARSED, this.onManifestParsed, this), e.on(b.ERROR, this.onError, this)
                }, r.unregisterListeners = function() {
                    var e = this.hls;
                    e && (e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(b.MANIFEST_PARSED, this.onManifestParsed, this), e.off(b.ERROR, this.onError, this))
                }, r.pathways = function() {
                    return (this.levels || []).reduce((function(e, t) {
                        return -1 === e.indexOf(t.pathwayId) && e.push(t.pathwayId), e
                    }), [])
                }, r.startLoad = function() {
                    if (this.started = !0, this.clearTimeout(), this.enabled && this.uri) {
                        if (this.updated) {
                            var e = 1e3 * this.timeToLoad - (performance.now() - this.updated);
                            if (e > 0) return void this.scheduleRefresh(this.uri, e)
                        }
                        this.loadSteeringManifest(this.uri)
                    }
                }, r.stopLoad = function() {
                    this.started = !1, this.loader && (this.loader.destroy(), this.loader = null), this.clearTimeout()
                }, r.clearTimeout = function() {
                    -1 !== this.reloadTimer && (self.clearTimeout(this.reloadTimer), this.reloadTimer = -1)
                }, r.destroy = function() {
                    this.unregisterListeners(), this.stopLoad(), this.hls = null, this.levels = this.audioTracks = this.subtitleTracks = null
                }, r.removeLevel = function(e) {
                    var t = this.levels;
                    t && (this.levels = t.filter((function(t) {
                        return t !== e
                    })))
                }, r.onManifestLoading = function() {
                    this.stopLoad(), this.enabled = !0, this.timeToLoad = 300, this.updated = 0, this.uri = null, this.pathwayId = ".", this.levels = this.audioTracks = this.subtitleTracks = null
                }, r.onManifestLoaded = function(e, t) {
                    var r = t.contentSteering;
                    null !== r && (this.pathwayId = r.pathwayId, this.uri = r.uri, this.started && this.startLoad())
                }, r.onManifestParsed = function(e, t) {
                    this.audioTracks = t.audioTracks, this.subtitleTracks = t.subtitleTracks
                }, r.onError = function(e, t) {
                    var r = t.errorAction;
                    if ((null == r ? void 0 : r.action) === _t && r.flags === Ot) {
                        var i = this.levels,
                            n = this._pathwayPriority,
                            a = this.pathwayId;
                        if (t.context) {
                            var s = t.context,
                                o = s.groupId,
                                l = s.pathwayId,
                                u = s.type;
                            o && i ? a = this.getPathwayForGroupId(o, u, a) : l && (a = l)
                        }
                        a in this.penalizedPathways || (this.penalizedPathways[a] = performance.now()), !n && i && (n = this.pathways()), n && n.length > 1 && (this.updatePathwayPriority(n), r.resolved = this.pathwayId !== a), t.details !== k.BUFFER_APPEND_ERROR || t.fatal ? r.resolved || this.warn("Could not resolve " + t.details + ' ("' + t.error.message + '") with content-steering for Pathway: ' + a + " levels: " + (i ? i.length : i) + " priorities: " + ot(n) + " penalized: " + ot(this.penalizedPathways)) : r.resolved = !0
                    }
                }, r.filterParsedLevels = function(e) {
                    this.levels = e;
                    var t = this.getLevelsForPathway(this.pathwayId);
                    if (0 === t.length) {
                        var r = e[0].pathwayId;
                        this.log("No levels found in Pathway " + this.pathwayId + '. Setting initial Pathway to "' + r + '"'), t = this.getLevelsForPathway(r), this.pathwayId = r
                    }
                    return t.length !== e.length && this.log("Found " + t.length + "/" + e.length + ' levels in Pathway "' + this.pathwayId + '"'), t
                }, r.getLevelsForPathway = function(e) {
                    return null === this.levels ? [] : this.levels.filter((function(t) {
                        return e === t.pathwayId
                    }))
                }, r.updatePathwayPriority = function(e) {
                    var t;
                    this._pathwayPriority = e;
                    var r = this.penalizedPathways,
                        i = performance.now();
                    Object.keys(r).forEach((function(e) {
                        i - r[e] > 3e5 && delete r[e]
                    }));
                    for (var n = 0; n < e.length; n++) {
                        var a = e[n];
                        if (!(a in r)) {
                            if (a === this.pathwayId) return;
                            var s = this.hls.nextLoadLevel,
                                o = this.hls.levels[s];
                            if ((t = this.getLevelsForPathway(a)).length > 0) {
                                this.log('Setting Pathway to "' + a + '"'), this.pathwayId = a, hi(t), this.hls.trigger(b.LEVELS_UPDATED, {
                                    levels: t
                                });
                                var l = this.hls.levels[s];
                                o && l && this.levels && (l.attrs["STABLE-VARIANT-ID"] !== o.attrs["STABLE-VARIANT-ID"] && l.bitrate !== o.bitrate && this.log("Unstable Pathways change from bitrate " + o.bitrate + " to " + l.bitrate), this.hls.nextLoadLevel = s);
                                break
                            }
                        }
                    }
                }, r.getPathwayForGroupId = function(e, t, r) {
                    for (var i = this.getLevelsForPathway(r).concat(this.levels || []), n = 0; n < i.length; n++)
                        if (t === P && i[n].hasAudioGroup(e) || t === C && i[n].hasSubtitleGroup(e)) return i[n].pathwayId;
                    return r
                }, r.clonePathways = function(e) {
                    var t = this,
                        r = this.levels;
                    if (r) {
                        var i = {},
                            n = {};
                        e.forEach((function(e) {
                            var a = e.ID,
                                s = e["BASE-ID"],
                                o = e["URI-REPLACEMENT"];
                            if (!r.some((function(e) {
                                    return e.pathwayId === a
                                }))) {
                                var l = t.getLevelsForPathway(s).map((function(e) {
                                    var t = new gr(e.attrs);
                                    t["PATHWAY-ID"] = a;
                                    var r = t.AUDIO && t.AUDIO + "_clone_" + a,
                                        s = t.SUBTITLES && t.SUBTITLES + "_clone_" + a;
                                    r && (i[t.AUDIO] = r, t.AUDIO = r), s && (n[t.SUBTITLES] = s, t.SUBTITLES = s);
                                    var l = _s(e.uri, t["STABLE-VARIANT-ID"], "PER-VARIANT-URIS", o),
                                        u = new nt({
                                            attrs: t,
                                            audioCodec: e.audioCodec,
                                            bitrate: e.bitrate,
                                            height: e.height,
                                            name: e.name,
                                            url: l,
                                            videoCodec: e.videoCodec,
                                            width: e.width
                                        });
                                    if (e.audioGroups)
                                        for (var d = 1; d < e.audioGroups.length; d++) u.addGroupId("audio", e.audioGroups[d] + "_clone_" + a);
                                    if (e.subtitleGroups)
                                        for (var h = 1; h < e.subtitleGroups.length; h++) u.addGroupId("text", e.subtitleGroups[h] + "_clone_" + a);
                                    return u
                                }));
                                r.push.apply(r, l), Ds(t.audioTracks, i, o, a), Ds(t.subtitleTracks, n, o, a)
                            }
                        }))
                    }
                }, r.loadSteeringManifest = function(e) {
                    var t, r = this,
                        i = this.hls.config,
                        n = i.loader;
                    this.loader && this.loader.destroy(), this.loader = new n(i);
                    try {
                        t = new self.URL(e)
                    } catch (t) {
                        return this.enabled = !1, void this.log("Failed to parse Steering Manifest URI: " + e)
                    }
                    if ("data:" !== t.protocol) {
                        var a = 0 | (this.hls.bandwidthEstimate || i.abrEwmaDefaultEstimate);
                        t.searchParams.set("_HLS_pathway", this.pathwayId), t.searchParams.set("_HLS_throughput", "" + a)
                    }
                    var s = {
                            responseType: "json",
                            url: t.href
                        },
                        o = i.steeringManifestLoadPolicy.default,
                        l = o.errorRetry || o.timeoutRetry || {},
                        u = {
                            loadPolicy: o,
                            timeout: o.maxLoadTimeMs,
                            maxRetry: l.maxNumRetry || 0,
                            retryDelay: l.retryDelayMs || 0,
                            maxRetryDelay: l.maxRetryDelayMs || 0
                        },
                        d = {
                            onSuccess: function(e, i, n, a) {
                                r.log('Loaded steering manifest: "' + t + '"');
                                var s = e.data;
                                if (1 === (null == s ? void 0 : s.VERSION)) {
                                    r.updated = performance.now(), r.timeToLoad = s.TTL;
                                    var o = s["RELOAD-URI"],
                                        l = s["PATHWAY-CLONES"],
                                        u = s["PATHWAY-PRIORITY"];
                                    if (o) try {
                                        r.uri = new self.URL(o, t).href
                                    } catch (e) {
                                        return r.enabled = !1, void r.log("Failed to parse Steering Manifest RELOAD-URI: " + o)
                                    }
                                    r.scheduleRefresh(r.uri || n.url), l && r.clonePathways(l);
                                    var d = {
                                        steeringManifest: s,
                                        url: t.toString()
                                    };
                                    r.hls.trigger(b.STEERING_MANIFEST_LOADED, d), u && r.updatePathwayPriority(u)
                                } else r.log("Steering VERSION " + s.VERSION + " not supported!")
                            },
                            onError: function(e, t, i, n) {
                                if (r.log("Error loading steering manifest: " + e.code + " " + e.text + " (" + t.url + ")"), r.stopLoad(), 410 === e.code) return r.enabled = !1, void r.log("Steering manifest " + t.url + " no longer available");
                                var a = 1e3 * r.timeToLoad;
                                if (429 !== e.code) r.scheduleRefresh(r.uri || t.url, a);
                                else {
                                    var s = r.loader;
                                    if ("function" == typeof(null == s ? void 0 : s.getResponseHeader)) {
                                        var o = s.getResponseHeader("Retry-After");
                                        o && (a = 1e3 * parseFloat(o))
                                    }
                                    r.log("Steering manifest " + t.url + " rate limited")
                                }
                            },
                            onTimeout: function(e, t, i) {
                                r.log("Timeout loading steering manifest (" + t.url + ")"), r.scheduleRefresh(r.uri || t.url)
                            }
                        };
                    this.log("Requesting steering manifest: " + t), this.loader.load(s, u, d)
                }, r.scheduleRefresh = function(e, t) {
                    var r = this;
                    void 0 === t && (t = 1e3 * this.timeToLoad), this.clearTimeout(), this.reloadTimer = self.setTimeout((function() {
                        var t, i = null == (t = r.hls) ? void 0 : t.media;
                        !i || i.ended ? r.scheduleRefresh(e, 1e3 * r.timeToLoad) : r.loadSteeringManifest(e)
                    }), t)
                }, i(t, [{
                    key: "pathwayPriority",
                    get: function() {
                        return this._pathwayPriority
                    },
                    set: function(e) {
                        this.updatePathwayPriority(e)
                    }
                }])
            }(N);

        function Ds(e, t, r, i) {
            e && Object.keys(t).forEach((function(n) {
                var s = e.filter((function(e) {
                    return e.groupId === n
                })).map((function(e) {
                    var s = a({}, e);
                    return s.details = void 0, s.attrs = new gr(s.attrs), s.url = s.attrs.URI = _s(e.url, e.attrs["STABLE-RENDITION-ID"], "PER-RENDITION-URIS", r), s.groupId = s.attrs["GROUP-ID"] = t[n], s.attrs["PATHWAY-ID"] = i, s
                }));
                e.push.apply(e, s)
            }))
        }

        function _s(e, t, r, i) {
            var n, a = i.HOST,
                s = i.PARAMS,
                o = i[r];
            t && (n = null == o ? void 0 : o[t]) && (e = n);
            var l = new self.URL(e);
            return a && !n && (l.host = a), s && Object.keys(s).sort().forEach((function(e) {
                e && l.searchParams.set(e, s[e])
            })), l.href
        }
        var Ps = function(e) {
            function t(r) {
                var i;
                return (i = e.call(this, "eme", r.logger) || this).hls = void 0, i.config = void 0, i.media = null, i.keyFormatPromise = null, i.keySystemAccessPromises = {}, i._requestLicenseFailureCount = 0, i.mediaKeySessions = [], i.keyIdToKeySessionPromise = {}, i.mediaKeys = null, i.setMediaKeysQueue = t.CDMCleanupPromise ? [t.CDMCleanupPromise] : [], i.bannedKeyIds = {}, i.onMediaEncrypted = function(e) {
                    var t = e.initDataType,
                        r = e.initData,
                        n = '"' + e.type + '" event: init data type: "' + t + '"';
                    if (i.debug(n), null !== r) {
                        if (!i.keyFormatPromise) {
                            var a = Object.keys(i.keySystemAccessPromises);
                            a.length || (a = Or(i.config));
                            var s = a.map(wr).filter((function(e) {
                                return !!e
                            }));
                            i.keyFormatPromise = i.getKeyFormatPromise(s)
                        }
                        i.keyFormatPromise.then((function(a) {
                            var s = Cr(a);
                            if ("sinf" === t && s === kr.FAIRPLAY) {
                                var o;
                                try {
                                    var l = le(new Uint8Array(r)),
                                        u = Se(Ar(JSON.parse(l).sinf));
                                    if (!u) throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc");
                                    o = new Uint8Array(u.subarray(8, 24))
                                } catch (e) {
                                    return void i.warn(n + " Failed to parse sinf: " + e)
                                }
                                for (var d, h = X(o), f = i, c = f.keyIdToKeySessionPromise, g = f.mediaKeySessions, v = c[h], m = function() {
                                        var e = g[p],
                                            n = e.decryptdata;
                                        if (!n.keyId) return 0;
                                        var a = X(n.keyId);
                                        return h === a || -1 !== n.uri.replace(/-/g, "").indexOf(h) ? (v = c[a]) ? (n.pssh || (delete c[a], n.pssh = new Uint8Array(r), n.keyId = o, (v = c[h] = v.then((function() {
                                            return i.generateRequestWithPreferredKeySession(e, t, r, "encrypted-event-key-match")
                                        }))).catch((function(e) {
                                            return i.handleError(e)
                                        }))), 1) : 0 : void 0
                                    }, p = 0; p < g.length && (0 === (d = m()) || 1 !== d); p++);
                                v || i.handleError(new Error("Key ID " + h + " not encountered in playlist. Key-system sessions " + g.length + "."))
                            } else i.log('Ignoring "' + e.type + '" event with init data type: "' + t + '" for selected key-system ' + s)
                        })).catch((function(e) {
                            return i.handleError(e)
                        }))
                    }
                }, i.onWaitingForKey = function(e) {
                    i.log('"' + e.type + '" event')
                }, i.hls = r, i.config = r.config, i.registerListeners(), i
            }
            o(t, e);
            var r = t.prototype;
            return r.destroy = function() {
                this.onDestroying(), this.onMediaDetached();
                var e = this.config;
                e.requestMediaKeySystemAccessFunc = null, e.licenseXhrSetup = e.licenseResponseCallback = void 0, e.drmSystems = e.drmSystemOptions = {}, this.hls = this.config = this.keyIdToKeySessionPromise = null, this.onMediaEncrypted = this.onWaitingForKey = null
            }, r.registerListeners = function() {
                this.hls.on(b.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.on(b.MEDIA_DETACHED, this.onMediaDetached, this), this.hls.on(b.MANIFEST_LOADING, this.onManifestLoading, this), this.hls.on(b.MANIFEST_LOADED, this.onManifestLoaded, this), this.hls.on(b.DESTROYING, this.onDestroying, this)
            }, r.unregisterListeners = function() {
                this.hls.off(b.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.off(b.MEDIA_DETACHED, this.onMediaDetached, this), this.hls.off(b.MANIFEST_LOADING, this.onManifestLoading, this), this.hls.off(b.MANIFEST_LOADED, this.onManifestLoaded, this), this.hls.off(b.DESTROYING, this.onDestroying, this)
            }, r.getLicenseServerUrl = function(e) {
                var t = this.config,
                    r = t.drmSystems,
                    i = t.widevineLicenseUrl,
                    n = null == r ? void 0 : r[e];
                return n ? n.licenseUrl : e === kr.WIDEVINE && i ? i : void 0
            }, r.getLicenseServerUrlOrThrow = function(e) {
                var t = this.getLicenseServerUrl(e);
                if (void 0 === t) throw new Error('no license server URL configured for key-system "' + e + '"');
                return t
            }, r.getServerCertificateUrl = function(e) {
                var t = this.config.drmSystems,
                    r = null == t ? void 0 : t[e];
                if (r) return r.serverCertificateUrl;
                this.log('No Server Certificate in config.drmSystems["' + e + '"]')
            }, r.attemptKeySystemAccess = function(e) {
                var t = this,
                    r = this.hls.levels,
                    i = function(e, t, r) {
                        return !!e && r.indexOf(e) === t
                    },
                    n = r.map((function(e) {
                        return e.audioCodec
                    })).filter(i),
                    a = r.map((function(e) {
                        return e.videoCodec
                    })).filter(i);
                return n.length + a.length === 0 && a.push("avc1.42e01e"), new Promise((function(r, i) {
                    var s = function(e) {
                        var o = e.shift();
                        t.getMediaKeysPromise(o, n, a).then((function(e) {
                            return r({
                                keySystem: o,
                                mediaKeys: e
                            })
                        })).catch((function(t) {
                            e.length ? s(e) : i(t instanceof Cs ? t : new Cs({
                                type: I.KEY_SYSTEM_ERROR,
                                details: k.KEY_SYSTEM_NO_ACCESS,
                                error: t,
                                fatal: !0
                            }, t.message))
                        }))
                    };
                    s(e)
                }))
            }, r.requestMediaKeySystemAccess = function(e, t) {
                var r = this.config.requestMediaKeySystemAccessFunc;
                if ("function" != typeof r) {
                    var i = "Configured requestMediaKeySystemAccess is not a function " + r;
                    return null === Mr && "http:" === self.location.protocol && (i = "navigator.requestMediaKeySystemAccess is not available over insecure protocol " + location.protocol), Promise.reject(new Error(i))
                }
                return r(e, t)
            }, r.getMediaKeysPromise = function(e, t, r) {
                var i, n = this,
                    a = function(e, t, r, i) {
                        var n;
                        switch (e) {
                            case kr.FAIRPLAY:
                                n = ["cenc", "sinf"];
                                break;
                            case kr.WIDEVINE:
                            case kr.PLAYREADY:
                                n = ["cenc"];
                                break;
                            case kr.CLEARKEY:
                                n = ["cenc", "keyids"];
                                break;
                            default:
                                throw new Error("Unknown key-system: " + e)
                        }
                        return function(e, t, r, i) {
                            return [{
                                initDataTypes: e,
                                persistentState: i.persistentState || "optional",
                                distinctiveIdentifier: i.distinctiveIdentifier || "optional",
                                sessionTypes: i.sessionTypes || [i.sessionType || "temporary"],
                                audioCapabilities: t.map((function(e) {
                                    return {
                                        contentType: "audio/mp4; codecs=" + e,
                                        robustness: i.audioRobustness || "",
                                        encryptionScheme: i.audioEncryptionScheme || null
                                    }
                                })),
                                videoCapabilities: r.map((function(e) {
                                    return {
                                        contentType: "video/mp4; codecs=" + e,
                                        robustness: i.videoRobustness || "",
                                        encryptionScheme: i.videoEncryptionScheme || null
                                    }
                                }))
                            }]
                        }(n, t, r, i)
                    }(e, t, r, this.config.drmSystemOptions || {}),
                    s = this.keySystemAccessPromises[e],
                    o = null == (i = s) ? void 0 : i.keySystemAccess;
                if (!o) {
                    this.log('Requesting encrypted media "' + e + '" key-system access with config: ' + ot(a)), o = this.requestMediaKeySystemAccess(e, a);
                    var l = s = this.keySystemAccessPromises[e] = {
                        keySystemAccess: o
                    };
                    return o.catch((function(t) {
                        n.log('Failed to obtain access to key-system "' + e + '": ' + t)
                    })), o.then((function(t) {
                        n.log('Access for key-system "' + t.keySystem + '" obtained');
                        var r = n.fetchServerCertificate(e);
                        n.log('Create media-keys for "' + e + '"');
                        var i = l.mediaKeys = t.createMediaKeys().then((function(t) {
                            return n.log('Media-keys created for "' + e + '"'), l.hasMediaKeys = !0, r.then((function(r) {
                                return r ? n.setMediaKeysServerCertificate(t, e, r) : t
                            }))
                        }));
                        return i.catch((function(t) {
                            n.error('Failed to create media-keys for "' + e + '"}: ' + t)
                        })), i
                    }))
                }
                return o.then((function() {
                    return s.mediaKeys
                }))
            }, r.createMediaKeySessionContext = function(e) {
                var t = e.decryptdata,
                    r = e.keySystem,
                    i = e.mediaKeys;
                this.log('Creating key-system session "' + r + '" keyId: ' + X(t.keyId || []));
                var n = i.createSession(),
                    a = {
                        decryptdata: t,
                        keySystem: r,
                        mediaKeys: i,
                        mediaKeysSession: n,
                        keyStatus: "status-pending"
                    };
                return this.mediaKeySessions.push(a), a
            }, r.renewKeySession = function(e) {
                var t = e.decryptdata;
                if (t.pssh) {
                    var r = this.createMediaKeySessionContext(e),
                        i = this.getKeyIdString(t);
                    this.keyIdToKeySessionPromise[i] = this.generateRequestWithPreferredKeySession(r, "cenc", t.pssh.buffer, "expired")
                } else this.warn("Could not renew expired session. Missing pssh initData.");
                this.removeSession(e)
            }, r.getKeyIdString = function(e) {
                if (!e) throw new Error("Could not read keyId of undefined decryptdata");
                if (null === e.keyId) throw new Error("keyId is null");
                return X(e.keyId)
            }, r.updateKeySession = function(e, t) {
                var r = e.mediaKeysSession;
                return this.log('Updating key-session "' + r.sessionId + '" for keyId ' + X(e.decryptdata.keyId || []) + "\n      } (data length: " + t.byteLength + ")"), r.update(t)
            }, r.getSelectedKeySystemFormats = function() {
                var e = this;
                return Object.keys(this.keySystemAccessPromises).map((function(t) {
                    return {
                        keySystem: t,
                        hasMediaKeys: e.keySystemAccessPromises[t].hasMediaKeys
                    }
                })).filter((function(e) {
                    return !!e.hasMediaKeys
                })).map((function(e) {
                    return wr(e.keySystem)
                })).filter((function(e) {
                    return !!e
                }))
            }, r.getKeySystemAccess = function(e) {
                var t = this;
                return this.getKeySystemSelectionPromise(e).then((function(e) {
                    var r = e.keySystem,
                        i = e.mediaKeys;
                    return t.attemptSetMediaKeys(r, i)
                }))
            }, r.selectKeySystem = function(e) {
                var t = this;
                return new Promise((function(r, i) {
                    t.getKeySystemSelectionPromise(e).then((function(e) {
                        var t = e.keySystem,
                            n = wr(t);
                        n ? r(n) : i(new Error('Unable to find format for key-system "' + t + '"'))
                    })).catch(i)
                }))
            }, r.selectKeySystemFormat = function(e) {
                var t = Object.keys(e.levelkeys || {});
                return this.keyFormatPromise || (this.log("Selecting key-system from fragment (sn: " + e.sn + " " + e.type + ": " + e.level + ") key formats " + t.join(", ")), this.keyFormatPromise = this.getKeyFormatPromise(t)), this.keyFormatPromise
            }, r.getKeyFormatPromise = function(e) {
                var t = Or(this.config),
                    r = e.map(Cr).filter((function(e) {
                        return !!e && -1 !== t.indexOf(e)
                    }));
                return this.selectKeySystem(r)
            }, r.loadKey = function(e) {
                var t = this,
                    r = e.keyInfo.decryptdata,
                    i = this.getKeyIdString(r),
                    n = this.bannedKeyIds[i];
                if (n) {
                    var a = ws(n, r);
                    return this.handleError(a, e.frag), Promise.reject(a)
                }
                var s = "(keyId: " + i + ' format: "' + r.keyFormat + '" method: ' + r.method + " uri: " + r.uri + ")";
                this.log("Starting session for key " + s);
                var o = this.keyIdToKeySessionPromise[i];
                if (!o) {
                    var l = this.getKeySystemForKeyPromise(r).then((function(i) {
                        var n = i.keySystem,
                            a = i.mediaKeys;
                        return t.throwIfDestroyed(), t.log("Handle encrypted media sn: " + e.frag.sn + " " + e.frag.type + ": " + e.frag.level + " using key " + s), t.attemptSetMediaKeys(n, a).then((function() {
                            return t.throwIfDestroyed(), t.createMediaKeySessionContext({
                                keySystem: n,
                                mediaKeys: a,
                                decryptdata: r
                            })
                        }))
                    })).then((function(e) {
                        var i = r.pssh ? r.pssh.buffer : null;
                        return t.generateRequestWithPreferredKeySession(e, "cenc", i, "playlist-key")
                    }));
                    return l.catch((function(r) {
                        return t.handleError(r, e.frag)
                    })), this.keyIdToKeySessionPromise[i] = l, l
                }
                return o
            }, r.throwIfDestroyed = function(e) {
                if (!this.hls) throw new Error("invalid state")
            }, r.handleError = function(e, t) {
                this.hls && (this.error(e.message), e instanceof Cs ? (t && (e.data.frag = t), this.hls.trigger(b.ERROR, e.data)) : this.hls.trigger(b.ERROR, {
                    type: I.KEY_SYSTEM_ERROR,
                    details: k.KEY_SYSTEM_NO_KEYS,
                    error: e,
                    fatal: !0
                }))
            }, r.getKeySystemForKeyPromise = function(e) {
                var t = this.getKeyIdString(e),
                    r = this.keyIdToKeySessionPromise[t];
                if (!r) {
                    var i = Cr(e.keyFormat),
                        n = i ? [i] : Or(this.config);
                    return this.attemptKeySystemAccess(n)
                }
                return r
            }, r.getKeySystemSelectionPromise = function(e) {
                if (e.length || (e = Or(this.config)), 0 === e.length) throw new Cs({
                    type: I.KEY_SYSTEM_ERROR,
                    details: k.KEY_SYSTEM_NO_CONFIGURED_LICENSE,
                    fatal: !0
                }, "Missing key-system license configuration options " + ot({
                    drmSystems: this.config.drmSystems
                }));
                return this.attemptKeySystemAccess(e)
            }, r.attemptSetMediaKeys = function(e, t) {
                var r = this;
                if (this.mediaKeys === t) return Promise.resolve();
                var i = this.setMediaKeysQueue.slice();
                this.log('Setting media-keys for "' + e + '"');
                var n = Promise.all(i).then((function() {
                    if (!r.media) throw r.mediaKeys = null, new Error("Attempted to set mediaKeys without media element attached");
                    return r.media.setMediaKeys(t)
                }));
                return this.mediaKeys = t, this.setMediaKeysQueue.push(n), n.then((function() {
                    r.log('Media-keys set for "' + e + '"'), i.push(n), r.setMediaKeysQueue = r.setMediaKeysQueue.filter((function(e) {
                        return -1 === i.indexOf(e)
                    }))
                }))
            }, r.generateRequestWithPreferredKeySession = function(e, t, r, i) {
                var n, a = this,
                    s = null == (n = this.config.drmSystems) || null == (n = n[e.keySystem]) ? void 0 : n.generateRequest;
                if (s) try {
                    var o = s.call(this.hls, t, r, e);
                    if (!o) throw new Error("Invalid response from configured generateRequest filter");
                    t = o.initDataType, r = o.initData ? o.initData : null, e.decryptdata.pssh = r ? new Uint8Array(r) : null
                } catch (e) {
                    if (this.warn(e.message), this.hls && this.hls.config.debug) throw e
                }
                if (null === r) return this.log('Skipping key-session request for "' + i + '" (no initData)'), Promise.resolve(e);
                var l = this.getKeyIdString(e.decryptdata);
                this.log('Generating key-session request for "' + i + '": ' + l + " (init data type: " + t + " length: " + r.byteLength + ")");
                var u = new E,
                    d = e._onmessage = function(t) {
                        var r = e.mediaKeysSession;
                        if (r) {
                            var i = t.messageType,
                                n = t.message;
                            a.log('"' + i + '" message event for session "' + r.sessionId + '" message size: ' + n.byteLength), "license-request" === i || "license-renewal" === i ? a.renewLicense(e, n).catch((function(e) {
                                u.eventNames().length ? u.emit("error", e) : a.handleError(e)
                            })) : "license-release" === i ? e.keySystem === kr.FAIRPLAY && (a.updateKeySession(e, Lr("acknowledged")), a.removeSession(e)) : a.warn('unhandled media key message type "' + i + '"')
                        } else u.emit("error", new Error("invalid state"))
                    },
                    h = e._onkeystatuseschange = function(t) {
                        if (e.mediaKeysSession) {
                            var r = e.keyStatus;
                            a.onKeyStatusChange(e);
                            var i = e.keyStatus;
                            i !== r && (u.emit("keyStatus", i, e), "expired" === i && (a.log(e.keySystem + " expired for key " + l), a.renewKeySession(e)))
                        } else u.emit("error", new Error("invalid state"))
                    };
                Ei(e.mediaKeysSession, "message", d), Ei(e.mediaKeysSession, "keystatuseschange", h);
                var f = new Promise((function(e, t) {
                    u.on("error", t), u.on("keyStatus", (function(r, i) {
                        var n = i.decryptdata;
                        r.startsWith("usable") ? e() : "internal-error" === r || "output-restricted" === r ? t(ws(r, n)) : "expired" === r ? t(new Error("key expired while generating request (keyId: " + l + ")")) : a.warn('unhandled key status change "' + r + '" (keyId: ' + l + ")")
                    }))
                }));
                return e.mediaKeysSession.generateRequest(t, r).then((function() {
                    a.log('Request generated for key-session "' + e.mediaKeysSession.sessionId + '" keyId: ' + l)
                })).catch((function(t) {
                    throw new Cs({
                        type: I.KEY_SYSTEM_ERROR,
                        details: k.KEY_SYSTEM_NO_SESSION,
                        error: t,
                        decryptdata: e.decryptdata,
                        fatal: !1
                    }, "Error generating key-session request: " + t)
                })).then((function() {
                    return f
                })).catch((function(t) {
                    throw u.removeAllListeners(), a.removeSession(e), t
                })).then((function() {
                    return u.removeAllListeners(), e
                }))
            }, r.onKeyStatusChange = function(e) {
                var t = this,
                    r = X(new Uint8Array(e.decryptdata.keyId || []));
                e.mediaKeysSession.keyStatuses.forEach((function(i, n) {
                    if ("string" == typeof n && "object" == typeof i) {
                        var a = n;
                        n = i, i = a
                    }
                    var s = X("buffer" in n ? new Uint8Array(n.buffer, n.byteOffset, n.byteLength) : new Uint8Array(n));
                    "internal-error" === i && (t.bannedKeyIds[s] = i);
                    var o = s === r;
                    t.log((o ? "" : "un") + 'matched key status change "' + i + '" for keyStatuses keyId: ' + s + " session keyId: " + r + " uri: " + e.decryptdata.uri), o && (e.keyStatus = i)
                }))
            }, r.fetchServerCertificate = function(e) {
                var t = this.config,
                    r = new(0, t.loader)(t),
                    i = this.getServerCertificateUrl(e);
                return i ? (this.log('Fetching server certificate for "' + e + '"'), new Promise((function(n, a) {
                    var s = {
                            responseType: "arraybuffer",
                            url: i
                        },
                        o = t.certLoadPolicy.default,
                        l = {
                            loadPolicy: o,
                            timeout: o.maxLoadTimeMs,
                            maxRetry: 0,
                            retryDelay: 0,
                            maxRetryDelay: 0
                        },
                        u = {
                            onSuccess: function(e, t, r, i) {
                                n(e.data)
                            },
                            onError: function(t, r, n, o) {
                                a(new Cs({
                                    type: I.KEY_SYSTEM_ERROR,
                                    details: k.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
                                    fatal: !0,
                                    networkDetails: n,
                                    response: d({
                                        url: s.url,
                                        data: void 0
                                    }, t)
                                }, '"' + e + '" certificate request failed (' + i + "). Status: " + t.code + " (" + t.text + ")"))
                            },
                            onTimeout: function(t, r, n) {
                                a(new Cs({
                                    type: I.KEY_SYSTEM_ERROR,
                                    details: k.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
                                    fatal: !0,
                                    networkDetails: n,
                                    response: {
                                        url: s.url,
                                        data: void 0
                                    }
                                }, '"' + e + '" certificate request timed out (' + i + ")"))
                            },
                            onAbort: function(e, t, r) {
                                a(new Error("aborted"))
                            }
                        };
                    r.load(s, l, u)
                }))) : Promise.resolve()
            }, r.setMediaKeysServerCertificate = function(e, t, r) {
                var i = this;
                return new Promise((function(n, a) {
                    e.setServerCertificate(r).then((function(a) {
                        i.log("setServerCertificate " + (a ? "success" : "not supported by CDM") + " (" + r.byteLength + ') on "' + t + '"'), n(e)
                    })).catch((function(e) {
                        a(new Cs({
                            type: I.KEY_SYSTEM_ERROR,
                            details: k.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,
                            error: e,
                            fatal: !0
                        }, e.message))
                    }))
                }))
            }, r.renewLicense = function(e, t) {
                var r = this;
                return this.requestLicense(e, new Uint8Array(t)).then((function(t) {
                    return r.updateKeySession(e, new Uint8Array(t)).catch((function(t) {
                        throw new Cs({
                            type: I.KEY_SYSTEM_ERROR,
                            details: k.KEY_SYSTEM_SESSION_UPDATE_FAILED,
                            decryptdata: e.decryptdata,
                            error: t,
                            fatal: !1
                        }, t.message)
                    }))
                }))
            }, r.unpackPlayReadyKeyMessage = function(e, t) {
                var r = String.fromCharCode.apply(null, new Uint16Array(t.buffer));
                if (!r.includes("PlayReadyKeyMessage")) return e.setRequestHeader("Content-Type", "text/xml; charset=utf-8"), t;
                var i = (new DOMParser).parseFromString(r, "application/xml"),
                    n = i.querySelectorAll("HttpHeader");
                if (n.length > 0)
                    for (var a, s = 0, o = n.length; s < o; s++) {
                        var l, u, d = null == (l = (a = n[s]).querySelector("name")) ? void 0 : l.textContent,
                            h = null == (u = a.querySelector("value")) ? void 0 : u.textContent;
                        d && h && e.setRequestHeader(d, h)
                    }
                var f = i.querySelector("Challenge"),
                    c = null == f ? void 0 : f.textContent;
                if (!c) throw new Error("Cannot find <Challenge> in key message");
                return Lr(atob(c))
            }, r.setupLicenseXHR = function(e, t, r, i) {
                var n = this,
                    a = this.config.licenseXhrSetup;
                return a ? Promise.resolve().then((function() {
                    if (!r.decryptdata) throw new Error("Key removed");
                    return a.call(n.hls, e, t, r, i)
                })).catch((function(s) {
                    if (!r.decryptdata) throw s;
                    return e.open("POST", t, !0), a.call(n.hls, e, t, r, i)
                })).then((function(r) {
                    return e.readyState || e.open("POST", t, !0), {
                        xhr: e,
                        licenseChallenge: r || i
                    }
                })) : (e.open("POST", t, !0), Promise.resolve({
                    xhr: e,
                    licenseChallenge: i
                }))
            }, r.requestLicense = function(e, t) {
                var r = this,
                    i = this.config.keyLoadPolicy.default;
                return new Promise((function(n, a) {
                    var s = r.getLicenseServerUrlOrThrow(e.keySystem);
                    r.log("Sending license request to URL: " + s);
                    var o = new XMLHttpRequest;
                    o.responseType = "arraybuffer", o.onreadystatechange = function() {
                        if (!r.hls || !e.mediaKeysSession) return a(new Error("invalid state"));
                        if (4 === o.readyState)
                            if (200 === o.status) {
                                r._requestLicenseFailureCount = 0;
                                var l = o.response;
                                r.log("License received " + (l instanceof ArrayBuffer ? l.byteLength : l));
                                var u = r.config.licenseResponseCallback;
                                if (u) try {
                                    l = u.call(r.hls, o, s, e)
                                } catch (e) {
                                    r.error(e)
                                }
                                n(l)
                            } else {
                                var d = i.errorRetry,
                                    h = d ? d.maxNumRetry : 0;
                                if (r._requestLicenseFailureCount++, r._requestLicenseFailureCount > h || o.status >= 400 && o.status < 500) a(new Cs({
                                    type: I.KEY_SYSTEM_ERROR,
                                    details: k.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
                                    decryptdata: e.decryptdata,
                                    fatal: !0,
                                    networkDetails: o,
                                    response: {
                                        url: s,
                                        data: void 0,
                                        code: o.status,
                                        text: o.statusText
                                    }
                                }, "License Request XHR failed (" + s + "). Status: " + o.status + " (" + o.statusText + ")"));
                                else {
                                    var f = h - r._requestLicenseFailureCount + 1;
                                    r.warn("Retrying license request, " + f + " attempts left"), r.requestLicense(e, t).then(n, a)
                                }
                            }
                    }, e.licenseXhr && e.licenseXhr.readyState !== XMLHttpRequest.DONE && e.licenseXhr.abort(), e.licenseXhr = o, r.setupLicenseXHR(o, s, e, t).then((function(t) {
                        var i = t.xhr,
                            n = t.licenseChallenge;
                        e.keySystem == kr.PLAYREADY && (n = r.unpackPlayReadyKeyMessage(i, n)), i.send(n)
                    })).catch(a)
                }))
            }, r.onDestroying = function() {
                this.unregisterListeners(), this._clear()
            }, r.onMediaAttached = function(e, t) {
                if (this.config.emeEnabled) {
                    var r = t.media;
                    this.media = r, Ei(r, "encrypted", this.onMediaEncrypted), Ei(r, "waitingforkey", this.onWaitingForKey)
                }
            }, r.onMediaDetached = function() {
                var e = this.media;
                e && (Ti(e, "encrypted", this.onMediaEncrypted), Ti(e, "waitingforkey", this.onWaitingForKey), this.media = null, this.mediaKeys = null)
            }, r._clear = function() {
                var e, r = this;
                if (this._requestLicenseFailureCount = 0, this.keyIdToKeySessionPromise = {}, this.bannedKeyIds = {}, this.mediaKeys || this.mediaKeySessions.length) {
                    var i = this.media,
                        n = this.mediaKeySessions.slice();
                    this.mediaKeySessions = [], this.mediaKeys = null, Nr.clearKeyUriToKeyIdMap();
                    var a = n.length;
                    t.CDMCleanupPromise = Promise.all(n.map((function(e) {
                        return r.removeSession(e)
                    })).concat(null == i || null == (e = i.setMediaKeys(null)) ? void 0 : e.catch((function(e) {
                        r.log("Could not clear media keys: " + e), r.hls && r.hls.trigger(b.ERROR, {
                            type: I.OTHER_ERROR,
                            details: k.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR,
                            fatal: !1,
                            error: new Error("Could not clear media keys: " + e)
                        })
                    })))).catch((function(e) {
                        r.log("Could not close sessions and clear media keys: " + e), r.hls && r.hls.trigger(b.ERROR, {
                            type: I.OTHER_ERROR,
                            details: k.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,
                            fatal: !1,
                            error: new Error("Could not close sessions and clear media keys: " + e)
                        })
                    })).then((function() {
                        a && r.log("finished closing key sessions and clearing media keys")
                    }))
                }
            }, r.onManifestLoading = function() {
                this.keyFormatPromise = null, this.bannedKeyIds = {}
            }, r.onManifestLoaded = function(e, t) {
                var r = t.sessionKeys;
                if (r && this.config.emeEnabled && !this.keyFormatPromise) {
                    var i = r.reduce((function(e, t) {
                        return -1 === e.indexOf(t.keyFormat) && e.push(t.keyFormat), e
                    }), []);
                    this.log("Selecting key-system from session-keys " + i.join(", ")), this.keyFormatPromise = this.getKeyFormatPromise(i)
                }
            }, r.removeSession = function(e) {
                var t = this,
                    r = e.mediaKeysSession,
                    i = e.licenseXhr,
                    n = e.decryptdata;
                if (r) {
                    this.log('Remove licenses and keys and close session "' + r.sessionId + '" keyId: ' + X((null == n ? void 0 : n.keyId) || [])), e._onmessage && (r.removeEventListener("message", e._onmessage), e._onmessage = void 0), e._onkeystatuseschange && (r.removeEventListener("keystatuseschange", e._onkeystatuseschange), e._onkeystatuseschange = void 0), i && i.readyState !== XMLHttpRequest.DONE && i.abort(), e.mediaKeysSession = e.decryptdata = e.licenseXhr = void 0;
                    var a = this.mediaKeySessions.indexOf(e);
                    a > -1 && this.mediaKeySessions.splice(a, 1);
                    var s = function(e) {
                        var t;
                        return !(!e || "persistent-license" !== e.sessionType && (null == (t = e.sessionTypes) || !t.some((function(e) {
                            return "persistent-license" === e
                        }))))
                    }(this.config.drmSystemOptions) ? new Promise((function(e, t) {
                        self.setTimeout((function() {
                            return t(new Error("MediaKeySession.remove() timeout"))
                        }), 8e3), r.remove().then(e).catch(t)
                    })) : Promise.resolve();
                    return s.catch((function(e) {
                        t.log("Could not remove session: " + e), t.hls && t.hls.trigger(b.ERROR, {
                            type: I.OTHER_ERROR,
                            details: k.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR,
                            fatal: !1,
                            error: new Error("Could not remove session: " + e)
                        })
                    })).then((function() {
                        return r.close()
                    })).catch((function(e) {
                        t.log("Could not close session: " + e), t.hls && t.hls.trigger(b.ERROR, {
                            type: I.OTHER_ERROR,
                            details: k.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,
                            fatal: !1,
                            error: new Error("Could not close session: " + e)
                        })
                    }))
                }
            }, t
        }(N);
        Ps.CDMCleanupPromise = void 0;
        var Cs = function(e) {
            function t(t, r) {
                var i;
                return (i = e.call(this, r) || this).data = void 0, t.error || (t.error = new Error(r)), i.data = t, t.err = t.error, i
            }
            return o(t, e), t
        }(c(Error));

        function ws(e, t) {
            var r = "output-restricted" === e,
                i = r ? k.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED : k.KEY_SYSTEM_STATUS_INTERNAL_ERROR;
            return new Cs({
                type: I.KEY_SYSTEM_ERROR,
                details: i,
                fatal: !1,
                decryptdata: t
            }, r ? "HDCP level output restricted" : 'key status changed to "' + e + '"')
        }
        var Os = function() {
            function e(e) {
                this.hls = void 0, this.isVideoPlaybackQualityAvailable = !1, this.timer = void 0, this.media = null, this.lastTime = void 0, this.lastDroppedFrames = 0, this.lastDecodedFrames = 0, this.streamController = void 0, this.hls = e, this.registerListeners()
            }
            var t = e.prototype;
            return t.setStreamController = function(e) {
                this.streamController = e
            }, t.registerListeners = function() {
                this.hls.on(b.MEDIA_ATTACHING, this.onMediaAttaching, this), this.hls.on(b.MEDIA_DETACHING, this.onMediaDetaching, this)
            }, t.unregisterListeners = function() {
                this.hls.off(b.MEDIA_ATTACHING, this.onMediaAttaching, this), this.hls.off(b.MEDIA_DETACHING, this.onMediaDetaching, this)
            }, t.destroy = function() {
                this.timer && clearInterval(this.timer), this.unregisterListeners(), this.isVideoPlaybackQualityAvailable = !1, this.media = null
            }, t.onMediaAttaching = function(e, t) {
                var r = this.hls.config;
                if (r.capLevelOnFPSDrop) {
                    var i = t.media instanceof self.HTMLVideoElement ? t.media : null;
                    this.media = i, i && "function" == typeof i.getVideoPlaybackQuality && (this.isVideoPlaybackQualityAvailable = !0), self.clearInterval(this.timer), this.timer = self.setInterval(this.checkFPSInterval.bind(this), r.fpsDroppedMonitoringPeriod)
                }
            }, t.onMediaDetaching = function() {
                this.media = null
            }, t.checkFPS = function(e, t, r) {
                var i = performance.now();
                if (t) {
                    if (this.lastTime) {
                        var n = i - this.lastTime,
                            a = r - this.lastDroppedFrames,
                            s = t - this.lastDecodedFrames,
                            o = 1e3 * a / n,
                            l = this.hls;
                        if (l.trigger(b.FPS_DROP, {
                                currentDropped: a,
                                currentDecoded: s,
                                totalDroppedFrames: r
                            }), o > 0 && a > l.config.fpsDroppedMonitoringThreshold * s) {
                            var u = l.currentLevel;
                            l.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: " + u), u > 0 && (-1 === l.autoLevelCapping || l.autoLevelCapping >= u) && (u -= 1, l.trigger(b.FPS_DROP_LEVEL_CAPPING, {
                                level: u,
                                droppedLevel: l.currentLevel
                            }), l.autoLevelCapping = u, this.streamController.nextLevelSwitch())
                        }
                    }
                    this.lastTime = i, this.lastDroppedFrames = r, this.lastDecodedFrames = t
                }
            }, t.checkFPSInterval = function() {
                var e = this.media;
                if (e)
                    if (this.isVideoPlaybackQualityAvailable) {
                        var t = e.getVideoPlaybackQuality();
                        this.checkFPS(e, t.totalVideoFrames, t.droppedVideoFrames)
                    } else this.checkFPS(e, e.webkitDecodedFrameCount, e.webkitDroppedFrameCount)
            }, e
        }();

        function xs(e) {
            for (var t = 5381, r = e.length; r;) t = 33 * t ^ e.charCodeAt(--r);
            return (t >>> 0).toString()
        }
        var Ms = .025,
            Fs = function(e) {
                return e[e.Point = 0] = "Point", e[e.Range = 1] = "Range", e
            }({});

        function Ns(e, t, r) {
            return e.identifier + "-" + (r + 1) + "-" + xs(t)
        }
        var Us = function() {
            function e(e, t) {
                this.base = void 0, this._duration = null, this._timelineStart = null, this.appendInPlaceDisabled = void 0, this.appendInPlaceStarted = void 0, this.dateRange = void 0, this.hasPlayed = !1, this.cumulativeDuration = 0, this.resumeOffset = NaN, this.playoutLimit = NaN, this.restrictions = {
                    skip: !1,
                    jump: !1
                }, this.snapOptions = {
                    out: !1,
                    in: !1
                }, this.assetList = [], this.assetListLoader = void 0, this.assetListResponse = null, this.resumeAnchor = void 0, this.error = void 0, this.resetOnResume = void 0, this.base = t, this.dateRange = e, this.setDateRange(e)
            }
            var t = e.prototype;
            return t.setDateRange = function(e) {
                this.dateRange = e, this.resumeOffset = e.attr.optionalFloat("X-RESUME-OFFSET", this.resumeOffset), this.playoutLimit = e.attr.optionalFloat("X-PLAYOUT-LIMIT", this.playoutLimit), this.restrictions = e.attr.enumeratedStringList("X-RESTRICT", this.restrictions), this.snapOptions = e.attr.enumeratedStringList("X-SNAP", this.snapOptions)
            }, t.reset = function() {
                var e;
                this.appendInPlaceStarted = !1, null == (e = this.assetListLoader) || e.destroy(), this.assetListLoader = void 0, this.supplementsPrimary || (this.assetListResponse = null, this.assetList = [], this._duration = null)
            }, t.isAssetPastPlayoutLimit = function(e) {
                var t;
                if (e > 0 && e >= this.assetList.length) return !0;
                var r = this.playoutLimit;
                return !(e <= 0 || isNaN(r)) && (0 === r || ((null == (t = this.assetList[e]) ? void 0 : t.startOffset) || 0) > r)
            }, t.findAssetIndex = function(e) {
                return this.assetList.indexOf(e)
            }, t.toString = function() {
                return '["' + (e = this).identifier + '" ' + (e.cue.pre ? "<pre>" : e.cue.post ? "<post>" : "") + e.timelineStart.toFixed(2) + "-" + e.resumeTime.toFixed(2) + "]";
                var e
            }, i(e, [{
                key: "identifier",
                get: function() {
                    return this.dateRange.id
                }
            }, {
                key: "startDate",
                get: function() {
                    return this.dateRange.startDate
                }
            }, {
                key: "startTime",
                get: function() {
                    var e = this.dateRange.startTime;
                    if (this.snapOptions.out) {
                        var t = this.dateRange.tagAnchor;
                        if (t) return Bs(e, t)
                    }
                    return e
                }
            }, {
                key: "startOffset",
                get: function() {
                    return this.cue.pre ? 0 : this.startTime
                }
            }, {
                key: "startIsAligned",
                get: function() {
                    if (0 === this.startTime || this.snapOptions.out) return !0;
                    var e = this.dateRange.tagAnchor;
                    if (e) {
                        var t = this.dateRange.startTime;
                        return t - Bs(t, e) < .1
                    }
                    return !1
                }
            }, {
                key: "resumptionOffset",
                get: function() {
                    var e = this.resumeOffset,
                        t = A(e) ? e : this.duration;
                    return this.cumulativeDuration + t
                }
            }, {
                key: "resumeTime",
                get: function() {
                    var e = this.startOffset + this.resumptionOffset;
                    if (this.snapOptions.in) {
                        var t = this.resumeAnchor;
                        if (t) return Bs(e, t)
                    }
                    return e
                }
            }, {
                key: "appendInPlace",
                get: function() {
                    return !!this.appendInPlaceStarted || !this.appendInPlaceDisabled && !(this.cue.once || this.cue.pre || !this.startIsAligned || !(isNaN(this.playoutLimit) && isNaN(this.resumeOffset) || this.resumeOffset && this.duration && Math.abs(this.resumeOffset - this.duration) < Ms))
                },
                set: function(e) {
                    this.appendInPlaceStarted ? this.resetOnResume = !e : this.appendInPlaceDisabled = !e
                }
            }, {
                key: "timelineStart",
                get: function() {
                    return null !== this._timelineStart ? this._timelineStart : this.startTime
                },
                set: function(e) {
                    this._timelineStart = e
                }
            }, {
                key: "duration",
                get: function() {
                    var e, t = this.playoutLimit;
                    return e = null !== this._duration ? this._duration : this.dateRange.duration ? this.dateRange.duration : this.dateRange.plannedDuration || 0, !isNaN(t) && t < e && (e = t), e
                },
                set: function(e) {
                    this._duration = e
                }
            }, {
                key: "cue",
                get: function() {
                    return this.dateRange.cue
                }
            }, {
                key: "timelineOccupancy",
                get: function() {
                    return "RANGE" === this.dateRange.attr["X-TIMELINE-OCCUPIES"] ? Fs.Range : Fs.Point
                }
            }, {
                key: "supplementsPrimary",
                get: function() {
                    return "PRIMARY" === this.dateRange.attr["X-TIMELINE-STYLE"]
                }
            }, {
                key: "contentMayVary",
                get: function() {
                    return "NO" !== this.dateRange.attr["X-CONTENT-MAY-VARY"]
                }
            }, {
                key: "assetUrl",
                get: function() {
                    return this.dateRange.attr["X-ASSET-URI"]
                }
            }, {
                key: "assetListUrl",
                get: function() {
                    return this.dateRange.attr["X-ASSET-LIST"]
                }
            }, {
                key: "baseUrl",
                get: function() {
                    return this.base.url
                }
            }, {
                key: "assetListLoaded",
                get: function() {
                    return this.assetList.length > 0 || null !== this.assetListResponse
                }
            }])
        }();

        function Bs(e, t) {
            return e - t.start < t.duration / 2 && !(Math.abs(e - (t.start + t.duration)) < Ms) ? t.start : t.start + t.duration
        }

        function Gs(e, t, r) {
            var i = new self.URL(e, r);
            return "data:" !== i.protocol && i.searchParams.set("_HLS_primary_id", t), i
        }

        function Ks(e, t) {
            for (; null != (r = e.assetList[++t]) && r.error;) var r;
            return t
        }

        function Vs(e) {
            var t = e.timelineStart,
                r = e.duration || 0;
            return '["' + e.identifier + '" ' + t.toFixed(2) + "-" + (t + r).toFixed(2) + "]"
        }
        var Hs = function() {
                function e(e, t, r, i) {
                    var n = this;
                    this.hls = void 0, this.interstitial = void 0, this.assetItem = void 0, this.tracks = null, this.hasDetails = !1, this.mediaAttached = null, this._currentTime = void 0, this._bufferedEosTime = void 0, this.checkPlayout = function() {
                        n.reachedPlayout(n.currentTime) && n.hls && n.hls.trigger(b.PLAYOUT_LIMIT_REACHED, {})
                    };
                    var a = this.hls = new e(t);
                    this.interstitial = r, this.assetItem = i;
                    var s = function() {
                        n.hasDetails = !0
                    };
                    a.once(b.LEVEL_LOADED, s), a.once(b.AUDIO_TRACK_LOADED, s), a.once(b.SUBTITLE_TRACK_LOADED, s), a.on(b.MEDIA_ATTACHING, (function(e, t) {
                        var r = t.media;
                        n.removeMediaListeners(), n.mediaAttached = r, n.interstitial.playoutLimit && (r.addEventListener("timeupdate", n.checkPlayout), n.appendInPlace && a.on(b.BUFFER_APPENDED, (function() {
                            var e = n.bufferedEnd;
                            n.reachedPlayout(e) && (n._bufferedEosTime = e, a.trigger(b.BUFFERED_TO_END, void 0))
                        })))
                    }))
                }
                var t = e.prototype;
                return t.loadSource = function() {
                    var e = this.hls;
                    if (e)
                        if (e.url) e.levels.length && !e.started && e.startLoad(-1, !0);
                        else {
                            var t = this.assetItem.uri;
                            try {
                                t = Gs(t, e.config.primarySessionId || "").href
                            } catch (e) {}
                            e.loadSource(t)
                        }
                }, t.bufferedInPlaceToEnd = function(e) {
                    var t;
                    if (!this.appendInPlace) return !1;
                    if (null != (t = this.hls) && t.bufferedToEnd) return !0;
                    if (!e) return !1;
                    var r = Math.min(this._bufferedEosTime || 1 / 0, this.duration),
                        i = this.timelineOffset,
                        n = sr.bufferInfo(e, i, 0);
                    return this.getAssetTime(n.end) >= r - .02
                }, t.reachedPlayout = function(e) {
                    var t = this.interstitial.playoutLimit;
                    return this.startOffset + e >= t
                }, t.getAssetTime = function(e) {
                    var t = this.timelineOffset,
                        r = this.duration;
                    return Math.min(Math.max(0, e - t), r)
                }, t.removeMediaListeners = function() {
                    var e = this.mediaAttached;
                    e && (this._currentTime = e.currentTime, this.bufferSnapShot(), e.removeEventListener("timeupdate", this.checkPlayout))
                }, t.bufferSnapShot = function() {
                    var e;
                    this.mediaAttached && null != (e = this.hls) && e.bufferedToEnd && (this._bufferedEosTime = this.bufferedEnd)
                }, t.destroy = function() {
                    this.removeMediaListeners(), this.hls && this.hls.destroy(), this.hls = null, this.tracks = this.mediaAttached = this.checkPlayout = null
                }, t.attachMedia = function(e) {
                    var t;
                    this.loadSource(), null == (t = this.hls) || t.attachMedia(e)
                }, t.detachMedia = function() {
                    var e;
                    this.removeMediaListeners(), this.mediaAttached = null, null == (e = this.hls) || e.detachMedia()
                }, t.resumeBuffering = function() {
                    var e;
                    null == (e = this.hls) || e.resumeBuffering()
                }, t.pauseBuffering = function() {
                    var e;
                    null == (e = this.hls) || e.pauseBuffering()
                }, t.transferMedia = function() {
                    var e;
                    return this.bufferSnapShot(), (null == (e = this.hls) ? void 0 : e.transferMedia()) || null
                }, t.resetDetails = function() {
                    var e = this.hls;
                    if (e && this.hasDetails) {
                        e.stopLoad();
                        var t = function(e) {
                            return delete e.details
                        };
                        e.levels.forEach(t), e.allAudioTracks.forEach(t), e.allSubtitleTracks.forEach(t), this.hasDetails = !1
                    }
                }, t.on = function(e, t, r) {
                    var i;
                    null == (i = this.hls) || i.on(e, t)
                }, t.once = function(e, t, r) {
                    var i;
                    null == (i = this.hls) || i.once(e, t)
                }, t.off = function(e, t, r) {
                    var i;
                    null == (i = this.hls) || i.off(e, t)
                }, t.toString = function() {
                    var e;
                    return "HlsAssetPlayer: " + Vs(this.assetItem) + " " + (null == (e = this.hls) ? void 0 : e.sessionId) + " " + (this.appendInPlace ? "append-in-place" : "")
                }, i(e, [{
                    key: "appendInPlace",
                    get: function() {
                        return this.interstitial.appendInPlace
                    }
                }, {
                    key: "destroyed",
                    get: function() {
                        var e;
                        return !(null != (e = this.hls) && e.userConfig)
                    }
                }, {
                    key: "assetId",
                    get: function() {
                        return this.assetItem.identifier
                    }
                }, {
                    key: "interstitialId",
                    get: function() {
                        return this.assetItem.parentIdentifier
                    }
                }, {
                    key: "media",
                    get: function() {
                        var e;
                        return (null == (e = this.hls) ? void 0 : e.media) || null
                    }
                }, {
                    key: "bufferedEnd",
                    get: function() {
                        var e = this.media || this.mediaAttached;
                        if (!e) return this._bufferedEosTime ? this._bufferedEosTime : this.currentTime;
                        var t = sr.bufferInfo(e, e.currentTime, .001);
                        return this.getAssetTime(t.end)
                    }
                }, {
                    key: "currentTime",
                    get: function() {
                        var e = this.media || this.mediaAttached;
                        return e ? this.getAssetTime(e.currentTime) : this._currentTime || 0
                    }
                }, {
                    key: "duration",
                    get: function() {
                        var e = this.assetItem.duration;
                        if (!e) return 0;
                        var t = this.interstitial.playoutLimit;
                        if (t) {
                            var r = t - this.startOffset;
                            if (r > 0 && r < e) return r
                        }
                        return e
                    }
                }, {
                    key: "remaining",
                    get: function() {
                        var e = this.duration;
                        return e ? Math.max(0, e - this.currentTime) : 0
                    }
                }, {
                    key: "startOffset",
                    get: function() {
                        return this.assetItem.startOffset
                    }
                }, {
                    key: "timelineOffset",
                    get: function() {
                        var e;
                        return (null == (e = this.hls) ? void 0 : e.config.timelineOffset) || 0
                    },
                    set: function(e) {
                        var t = this.timelineOffset;
                        if (e !== t) {
                            var r = e - t;
                            if (Math.abs(r) > 1 / 9e4 && this.hls) {
                                if (this.hasDetails) throw new Error("Cannot set timelineOffset after playlists are loaded");
                                this.hls.config.timelineOffset = e
                            }
                        }
                    }
                }])
            }(),
            Ys = function(e) {
                function t(t, r) {
                    var i;
                    return (i = e.call(this, "interstitials-sched", r) || this).onScheduleUpdate = void 0, i.eventMap = {}, i.events = null, i.items = null, i.durations = {
                        primary: 0,
                        playout: 0,
                        integrated: 0
                    }, i.onScheduleUpdate = t, i
                }
                o(t, e);
                var r = t.prototype;
                return r.destroy = function() {
                    this.reset(), this.onScheduleUpdate = null
                }, r.reset = function() {
                    this.eventMap = {}, this.setDurations(0, 0, 0), this.events && this.events.forEach((function(e) {
                        return e.reset()
                    })), this.events = this.items = null
                }, r.resetErrorsInRange = function(e, t) {
                    return this.events ? this.events.reduce((function(r, i) {
                        return e <= i.startOffset && t > i.startOffset ? (delete i.error, r + 1) : r
                    }), 0) : 0
                }, r.getEvent = function(e) {
                    return e && this.eventMap[e] || null
                }, r.hasEvent = function(e) {
                    return e in this.eventMap
                }, r.findItemIndex = function(e, t) {
                    if (e.event) return this.findEventIndex(e.event.identifier);
                    var r = -1;
                    e.nextEvent ? r = this.findEventIndex(e.nextEvent.identifier) - 1 : e.previousEvent && (r = this.findEventIndex(e.previousEvent.identifier) + 1);
                    var i = this.items;
                    if (i)
                        for (i[r] || (void 0 === t && (t = e.start), r = this.findItemIndexAtTime(t)); r >= 0 && null != (n = i[r]) && n.event;) {
                            var n;
                            r--
                        }
                    return r
                }, r.findItemIndexAtTime = function(e, t) {
                    var r = this.items;
                    if (r)
                        for (var i = 0; i < r.length; i++) {
                            var n = r[i];
                            if (t && "primary" !== t && (n = n[t]), e === n.start || e > n.start && e < n.end) return i
                        }
                    return -1
                }, r.findJumpRestrictedIndex = function(e, t) {
                    var r = this.items;
                    if (r)
                        for (var i = e; i <= t && r[i]; i++) {
                            var n = r[i].event;
                            if (null != n && n.restrictions.jump && !n.appendInPlace) return i
                        }
                    return -1
                }, r.findEventIndex = function(e) {
                    var t = this.items;
                    if (t)
                        for (var r = t.length; r--;) {
                            var i;
                            if ((null == (i = t[r].event) ? void 0 : i.identifier) === e) return r
                        }
                    return -1
                }, r.findAssetIndex = function(e, t) {
                    var r = e.assetList,
                        i = r.length;
                    if (i > 1)
                        for (var n = 0; n < i; n++) {
                            var a = r[n];
                            if (!a.error) {
                                var s = a.timelineStart;
                                if (t === s || t > s && (t < s + (a.duration || 0) || n === i - 1)) return n
                            }
                        }
                    return 0
                }, r.parseInterstitialDateRanges = function(e, t) {
                    var r = this,
                        i = e.main.details,
                        n = i.dateRanges,
                        a = this.events,
                        s = this.parseDateRanges(n, {
                            url: i.url
                        }, t),
                        o = Object.keys(n),
                        l = a ? a.filter((function(e) {
                            return !o.includes(e.identifier)
                        })) : [];
                    s.length && s.sort((function(e, t) {
                        var r = e.cue.pre,
                            i = e.cue.post,
                            n = t.cue.pre,
                            a = t.cue.post;
                        if (r && !n) return -1;
                        if (n && !r) return 1;
                        if (i && !a) return 1;
                        if (a && !i) return -1;
                        if (!(r || n || i || a)) {
                            var s = e.startTime,
                                o = t.startTime;
                            if (s !== o) return s - o
                        }
                        return e.dateRange.tagOrder - t.dateRange.tagOrder
                    })), this.events = s, l.forEach((function(e) {
                        r.removeEvent(e)
                    })), this.updateSchedule(e, l)
                }, r.updateSchedule = function(e, t, r) {
                    void 0 === t && (t = []), void 0 === r && (r = !1);
                    var i = this.events || [];
                    if (i.length || t.length || this.length < 2) {
                        var n = this.items,
                            a = this.parseSchedule(i, e);
                        (r || t.length || (null == n ? void 0 : n.length) !== a.length || a.some((function(e, t) {
                            return Math.abs(e.playout.start - n[t].playout.start) > .005 || Math.abs(e.playout.end - n[t].playout.end) > .005
                        }))) && (this.items = a, this.onScheduleUpdate(t, n))
                    }
                }, r.parseDateRanges = function(e, t, r) {
                    for (var i = [], n = Object.keys(e), a = 0; a < n.length; a++) {
                        var s = n[a],
                            o = e[s];
                        if (o.isInterstitial) {
                            var l = this.eventMap[s];
                            l ? l.setDateRange(o) : (l = new Us(o, t), this.eventMap[s] = l, !1 === r && (l.appendInPlace = r)), i.push(l)
                        }
                    }
                    return i
                }, r.parseSchedule = function(e, t) {
                    var r = [],
                        i = t.main.details,
                        n = i.live ? 1 / 0 : i.edge,
                        a = 0;
                    if ((e = e.filter((function(e) {
                            return !(e.error || e.cue.once && e.hasPlayed)
                        }))).length) {
                        this.resolveOffsets(e, t);
                        var s = 0,
                            o = 0;
                        if (e.forEach((function(t, i) {
                                var l = t.cue.pre,
                                    u = t.cue.post,
                                    d = e[i - 1] || null,
                                    h = t.appendInPlace,
                                    f = u ? n : t.startOffset,
                                    c = t.duration,
                                    g = t.timelineOccupancy === Fs.Range ? c : 0,
                                    v = t.resumptionOffset,
                                    m = (null == d ? void 0 : d.startTime) === f,
                                    p = f + t.cumulativeDuration,
                                    y = h ? p + c : f + v;
                                if (l || !u && f <= 0) {
                                    var E = o;
                                    o += g, t.timelineStart = p;
                                    var T = a;
                                    a += c, r.push({
                                        event: t,
                                        start: p,
                                        end: y,
                                        playout: {
                                            start: T,
                                            end: a
                                        },
                                        integrated: {
                                            start: E,
                                            end: o
                                        }
                                    })
                                } else {
                                    if (!(f <= n)) return;
                                    if (!m) {
                                        var S = f - s;
                                        if (S > .033) {
                                            var A = s,
                                                L = o;
                                            o += S;
                                            var R = a;
                                            a += S;
                                            var I = {
                                                previousEvent: e[i - 1] || null,
                                                nextEvent: t,
                                                start: A,
                                                end: A + S,
                                                playout: {
                                                    start: R,
                                                    end: a
                                                },
                                                integrated: {
                                                    start: L,
                                                    end: o
                                                }
                                            };
                                            r.push(I)
                                        } else S > 0 && d && (d.cumulativeDuration += S, r[r.length - 1].end = f)
                                    }
                                    u && (y = p), t.timelineStart = p;
                                    var k = o;
                                    o += g;
                                    var b = a;
                                    a += c, r.push({
                                        event: t,
                                        start: p,
                                        end: y,
                                        playout: {
                                            start: b,
                                            end: a
                                        },
                                        integrated: {
                                            start: k,
                                            end: o
                                        }
                                    })
                                }
                                var D = t.resumeTime;
                                s = u || D > n ? n : D
                            })), s < n) {
                            var l, u = s,
                                d = o,
                                h = n - s;
                            o += h;
                            var f = a;
                            a += h, r.push({
                                previousEvent: (null == (l = r[r.length - 1]) ? void 0 : l.event) || null,
                                nextEvent: null,
                                start: s,
                                end: u + h,
                                playout: {
                                    start: f,
                                    end: a
                                },
                                integrated: {
                                    start: d,
                                    end: o
                                }
                            })
                        }
                        this.setDurations(n, a, o)
                    } else r.push({
                        previousEvent: null,
                        nextEvent: null,
                        start: 0,
                        end: n,
                        playout: {
                            start: 0,
                            end: n
                        },
                        integrated: {
                            start: 0,
                            end: n
                        }
                    }), this.setDurations(n, n, n);
                    return r
                }, r.setDurations = function(e, t, r) {
                    this.durations = {
                        primary: e,
                        playout: t,
                        integrated: r
                    }
                }, r.resolveOffsets = function(e, t) {
                    var r = this,
                        i = t.main.details,
                        n = i.live ? 1 / 0 : i.edge,
                        a = 0,
                        s = -1;
                    e.forEach((function(o, l) {
                        var u = o.cue.pre,
                            d = o.cue.post,
                            h = u ? 0 : d ? n : o.startTime;
                        r.updateAssetDurations(o), s === h ? o.cumulativeDuration = a : (a = 0, s = h), !d && o.snapOptions.in && (o.resumeAnchor = yt(null, i.fragments, o.startOffset + o.resumptionOffset, 0, 0) || void 0), o.appendInPlace && !o.appendInPlaceStarted && (r.primaryCanResumeInPlaceAt(o, t) || (o.appendInPlace = !1)), !o.appendInPlace && l + 1 < e.length && e[l + 1].startTime - e[l].resumeTime < .033 && (e[l + 1].appendInPlace = !1, e[l + 1].appendInPlace && r.warn("Could not change append strategy for abutting event " + o));
                        var f = A(o.resumeOffset) ? o.resumeOffset : o.duration;
                        a += f
                    }))
                }, r.primaryCanResumeInPlaceAt = function(e, t) {
                    var r = this,
                        i = e.resumeTime,
                        n = e.startTime + e.resumptionOffset;
                    return Math.abs(i - n) > Ms ? (this.log('"' + e.identifier + '" resumption ' + i + " not aligned with estimated timeline end " + n), !1) : !Object.keys(t).some((function(n) {
                        var a = t[n].details,
                            s = a.edge;
                        if (i >= s) return r.log('"' + e.identifier + '" resumption ' + i + " past " + n + " playlist end " + s), !1;
                        var o = yt(null, a.fragments, i);
                        if (!o) return r.log('"' + e.identifier + '" resumption ' + i + " does not align with any fragments in " + n + " playlist (" + a.fragStart + "-" + a.fragmentEnd + ")"), !0;
                        var l = "audio" === n ? .175 : 0;
                        return !(Math.abs(o.start - i) < Ms + l || Math.abs(o.end - i) < Ms + l || (r.log('"' + e.identifier + '" resumption ' + i + " not aligned with " + n + " fragment bounds (" + o.start + "-" + o.end + " sn: " + o.sn + " cc: " + o.cc + ")"), 0))
                    }))
                }, r.updateAssetDurations = function(e) {
                    if (e.assetListLoaded) {
                        for (var t = e.timelineStart, r = 0, i = !1, n = !1, a = 0; a < e.assetList.length; a++) {
                            var s = e.assetList[a],
                                o = t + r;
                            s.startOffset = r, s.timelineStart = o, i || (i = null === s.duration), n || (n = !!s.error), r += s.error ? 0 : s.duration || 0
                        }
                        e.duration = i && !n ? Math.max(r, e.duration) : r
                    }
                }, r.removeEvent = function(e) {
                    e.reset(), delete this.eventMap[e.identifier]
                }, i(t, [{
                    key: "duration",
                    get: function() {
                        var e = this.items;
                        return e ? e[e.length - 1].end : 0
                    }
                }, {
                    key: "length",
                    get: function() {
                        return this.items ? this.items.length : 0
                    }
                }, {
                    key: "assetIdAtEnd",
                    get: function() {
                        var e, t = null == (e = this.items) || null == (e = e[this.length - 1]) ? void 0 : e.event;
                        if (t) {
                            var r = t.assetList,
                                i = r[r.length - 1];
                            if (i) return i.identifier
                        }
                        return null
                    }
                }])
            }(N);

        function Ws(e) {
            return "[" + (e.event ? '"' + e.event.identifier + '"' : "primary") + ": " + e.start.toFixed(2) + "-" + e.end.toFixed(2) + "]"
        }
        var js = function() {
            function e(e) {
                this.hls = void 0, this.hls = e
            }
            var t = e.prototype;
            return t.destroy = function() {
                this.hls = null
            }, t.loadAssetList = function(e, t) {
                var r, i = this,
                    n = e.assetListUrl;
                try {
                    r = Gs(n, this.hls.sessionId, e.baseUrl)
                } catch (t) {
                    var a = this.assignAssetListError(e, k.ASSET_LIST_LOAD_ERROR, t, n);
                    return void this.hls.trigger(b.ERROR, a)
                }
                t && "data:" !== r.protocol && r.searchParams.set("_HLS_start_offset", "" + t);
                var s = this.hls.config,
                    o = new(0, s.loader)(s),
                    l = {
                        responseType: "json",
                        url: r.href
                    },
                    u = s.interstitialAssetListLoadPolicy.default,
                    d = {
                        loadPolicy: u,
                        timeout: u.maxLoadTimeMs,
                        maxRetry: 0,
                        retryDelay: 0,
                        maxRetryDelay: 0
                    },
                    h = {
                        onSuccess: function(t, r, n, a) {
                            var s = t.data,
                                o = null == s ? void 0 : s.ASSETS;
                            if (Array.isArray(o)) e.assetListResponse = s, i.hls.trigger(b.ASSET_LIST_LOADED, {
                                event: e,
                                assetListResponse: s,
                                networkDetails: a
                            });
                            else {
                                var l = i.assignAssetListError(e, k.ASSET_LIST_PARSING_ERROR, new Error("Invalid interstitial asset list"), n.url, r, a);
                                i.hls.trigger(b.ERROR, l)
                            }
                        },
                        onError: function(t, r, n, a) {
                            var s = i.assignAssetListError(e, k.ASSET_LIST_LOAD_ERROR, new Error("Error loading X-ASSET-LIST: HTTP status " + t.code + " " + t.text + " (" + r.url + ")"), r.url, a, n);
                            i.hls.trigger(b.ERROR, s)
                        },
                        onTimeout: function(t, r, n) {
                            var a = i.assignAssetListError(e, k.ASSET_LIST_LOAD_TIMEOUT, new Error("Timeout loading X-ASSET-LIST (" + r.url + ")"), r.url, t, n);
                            i.hls.trigger(b.ERROR, a)
                        }
                    };
                return o.load(l, d, h), this.hls.trigger(b.ASSET_LIST_LOADING, {
                    event: e
                }), o
            }, t.assignAssetListError = function(e, t, r, i, n, a) {
                return e.error = r, {
                    type: I.NETWORK_ERROR,
                    details: t,
                    fatal: !1,
                    interstitial: e,
                    url: i,
                    error: r,
                    networkDetails: a,
                    stats: n
                }
            }, e
        }();

        function qs(e) {
            null == e || e.play().catch((function() {}))
        }

        function Xs(e, t) {
            return "[" + e + "] Advancing timeline position to " + t
        }
        var Qs = function(e) {
                function t(t, r) {
                    var i;
                    return (i = e.call(this, "interstitials", t.logger) || this).HlsPlayerClass = void 0, i.hls = void 0, i.assetListLoader = void 0, i.mediaSelection = null, i.altSelection = null, i.media = null, i.detachedData = null, i.requiredTracks = null, i.manager = null, i.playerQueue = [], i.bufferedPos = -1, i.timelinePos = -1, i.schedule = void 0, i.playingItem = null, i.bufferingItem = null, i.waitingItem = null, i.endedItem = null, i.playingAsset = null, i.endedAsset = null, i.bufferingAsset = null, i.shouldPlay = !1, i.onPlay = function() {
                        i.shouldPlay = !0
                    }, i.onPause = function() {
                        i.shouldPlay = !1
                    }, i.onSeeking = function() {
                        var e = i.currentTime;
                        if (void 0 !== e && !i.playbackDisabled && i.schedule) {
                            var t = e - i.timelinePos;
                            if (!(Math.abs(t) < 1 / 7056e5)) {
                                var r = t <= -.01;
                                i.timelinePos = e, i.bufferedPos = e;
                                var n = i.playingItem;
                                if (n)
                                    if (r && i.schedule.resetErrorsInRange(e, e - t) && i.updateSchedule(!0), i.checkBuffer(), r && e < n.start || e >= n.end) {
                                        var a, s = i.findItemIndex(n),
                                            o = i.schedule.findItemIndexAtTime(e);
                                        if (-1 === o && (o = s + (r ? -1 : 1), i.log("seeked " + (r ? "back " : "") + "to position not covered by schedule " + e + " (resolving from " + s + " to " + o + ")")), !i.isInterstitial(n) && null != (a = i.media) && a.paused && (i.shouldPlay = !1), !r && o > s) {
                                            var l = i.schedule.findJumpRestrictedIndex(s + 1, o);
                                            if (l > s) return void i.setSchedulePosition(l)
                                        }
                                        i.setSchedulePosition(o)
                                    } else {
                                        var u = i.playingAsset;
                                        if (u) {
                                            var d, h = u.timelineStart,
                                                f = u.duration || 0;
                                            (r && e < h || e >= h + f) && (null != (d = n.event) && d.appendInPlace && (i.clearInterstitial(n.event, n), i.flushFrontBuffer(e)), i.setScheduleToAssetAtTime(e, u))
                                        } else if (i.playingLastItem && i.isInterstitial(n)) {
                                            var c = n.event.assetList[0];
                                            c && (i.endedItem = i.playingItem, i.playingItem = null, i.setScheduleToAssetAtTime(e, c))
                                        }
                                    }
                                else i.checkBuffer()
                            }
                        }
                    }, i.onTimeupdate = function() {
                        var e = i.currentTime;
                        if (void 0 !== e && !i.playbackDisabled && e > i.timelinePos) {
                            i.timelinePos = e, e > i.bufferedPos && i.checkBuffer();
                            var t = i.playingItem;
                            if (t && !i.playingLastItem) {
                                if (e >= t.end) {
                                    i.timelinePos = t.end;
                                    var r = i.findItemIndex(t);
                                    i.setSchedulePosition(r + 1)
                                }
                                var n = i.playingAsset;
                                n && e >= n.timelineStart + (n.duration || 0) && i.setScheduleToAssetAtTime(e, n)
                            }
                        }
                    }, i.onScheduleUpdate = function(e, t) {
                        var r = i.schedule;
                        if (r) {
                            var n = i.playingItem,
                                a = r.events || [],
                                s = r.items || [],
                                o = r.durations,
                                l = e.map((function(e) {
                                    return e.identifier
                                })),
                                u = !(!a.length && !l.length);
                            (u || t) && i.log("INTERSTITIALS_UPDATED (" + a.length + "): " + a + "\nSchedule: " + s.map((function(e) {
                                return Ws(e)
                            })) + " pos: " + i.timelinePos), l.length && i.log("Removed events " + l);
                            var d = null,
                                h = null;
                            n && (d = i.updateItem(n, i.timelinePos), i.itemsMatch(n, d) ? i.playingItem = d : i.waitingItem = i.endedItem = null), i.waitingItem = i.updateItem(i.waitingItem), i.endedItem = i.updateItem(i.endedItem);
                            var f = i.bufferingItem;
                            if (f && (h = i.updateItem(f, i.bufferedPos), i.itemsMatch(f, h) ? i.bufferingItem = h : f.event && (i.bufferingItem = i.playingItem, i.clearInterstitial(f.event, null))), e.forEach((function(e) {
                                    e.assetList.forEach((function(e) {
                                        i.clearAssetPlayer(e.identifier, null)
                                    }))
                                })), i.playerQueue.forEach((function(e) {
                                    if (e.interstitial.appendInPlace) {
                                        var t = e.assetItem.timelineStart,
                                            r = e.timelineOffset - t;
                                        if (r) try {
                                            e.timelineOffset = t
                                        } catch (n) {
                                            Math.abs(r) > Ms && i.warn(n + ' ("' + e.assetId + '" ' + e.timelineOffset + "->" + t + ")")
                                        }
                                    }
                                })), u || t) {
                                if (i.hls.trigger(b.INTERSTITIALS_UPDATED, {
                                        events: a.slice(0),
                                        schedule: s.slice(0),
                                        durations: o,
                                        removedIds: l
                                    }), i.isInterstitial(n) && l.includes(n.event.identifier)) return i.warn('Interstitial "' + n.event.identifier + '" removed while playing'), void i.primaryFallback(n.event);
                                n && i.trimInPlace(d, n), f && h !== d && i.trimInPlace(h, f), i.checkBuffer()
                            }
                        }
                    }, i.hls = t, i.HlsPlayerClass = r, i.assetListLoader = new js(t), i.schedule = new Ys(i.onScheduleUpdate, t.logger), i.registerListeners(), i
                }
                o(t, e);
                var r = t.prototype;
                return r.registerListeners = function() {
                    var e = this.hls;
                    e && (e.on(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(b.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.on(b.AUDIO_TRACK_UPDATED, this.onAudioTrackUpdated, this), e.on(b.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.on(b.SUBTITLE_TRACK_UPDATED, this.onSubtitleTrackUpdated, this), e.on(b.EVENT_CUE_ENTER, this.onInterstitialCueEnter, this), e.on(b.ASSET_LIST_LOADED, this.onAssetListLoaded, this), e.on(b.BUFFER_APPENDED, this.onBufferAppended, this), e.on(b.BUFFER_FLUSHED, this.onBufferFlushed, this), e.on(b.BUFFERED_TO_END, this.onBufferedToEnd, this), e.on(b.MEDIA_ENDED, this.onMediaEnded, this), e.on(b.ERROR, this.onError, this), e.on(b.DESTROYING, this.onDestroying, this))
                }, r.unregisterListeners = function() {
                    var e = this.hls;
                    e && (e.off(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(b.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.off(b.AUDIO_TRACK_UPDATED, this.onAudioTrackUpdated, this), e.off(b.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.off(b.SUBTITLE_TRACK_UPDATED, this.onSubtitleTrackUpdated, this), e.off(b.EVENT_CUE_ENTER, this.onInterstitialCueEnter, this), e.off(b.ASSET_LIST_LOADED, this.onAssetListLoaded, this), e.off(b.BUFFER_CODECS, this.onBufferCodecs, this), e.off(b.BUFFER_APPENDED, this.onBufferAppended, this), e.off(b.BUFFER_FLUSHED, this.onBufferFlushed, this), e.off(b.BUFFERED_TO_END, this.onBufferedToEnd, this), e.off(b.MEDIA_ENDED, this.onMediaEnded, this), e.off(b.ERROR, this.onError, this), e.off(b.DESTROYING, this.onDestroying, this))
                }, r.startLoad = function() {
                    this.resumeBuffering()
                }, r.stopLoad = function() {
                    this.pauseBuffering()
                }, r.resumeBuffering = function() {
                    var e;
                    null == (e = this.getBufferingPlayer()) || e.resumeBuffering()
                }, r.pauseBuffering = function() {
                    var e;
                    null == (e = this.getBufferingPlayer()) || e.pauseBuffering()
                }, r.destroy = function() {
                    this.unregisterListeners(), this.stopLoad(), this.assetListLoader && this.assetListLoader.destroy(), this.emptyPlayerQueue(), this.clearScheduleState(), this.schedule && this.schedule.destroy(), this.media = this.detachedData = this.mediaSelection = this.requiredTracks = this.altSelection = this.schedule = this.manager = null, this.hls = this.HlsPlayerClass = this.log = null, this.assetListLoader = null, this.onPlay = this.onPause = this.onSeeking = this.onTimeupdate = null, this.onScheduleUpdate = null
                }, r.onDestroying = function() {
                    var e = this.primaryMedia || this.media;
                    e && this.removeMediaListeners(e)
                }, r.removeMediaListeners = function(e) {
                    Ti(e, "play", this.onPlay), Ti(e, "pause", this.onPause), Ti(e, "seeking", this.onSeeking), Ti(e, "timeupdate", this.onTimeupdate)
                }, r.onMediaAttaching = function(e, t) {
                    var r = this.media = t.media;
                    Ei(r, "seeking", this.onSeeking), Ei(r, "timeupdate", this.onTimeupdate), Ei(r, "play", this.onPlay), Ei(r, "pause", this.onPause)
                }, r.onMediaAttached = function(e, t) {
                    var r = this.effectivePlayingItem,
                        i = this.detachedData;
                    if (this.detachedData = null, null === r) this.checkStart();
                    else if (!i) {
                        this.clearScheduleState();
                        var n = this.findItemIndex(r);
                        this.setSchedulePosition(n)
                    }
                }, r.clearScheduleState = function() {
                    this.log("clear schedule state"), this.playingItem = this.bufferingItem = this.waitingItem = this.endedItem = this.playingAsset = this.endedAsset = this.bufferingAsset = null
                }, r.onMediaDetaching = function(e, t) {
                    var r = !!t.transferMedia,
                        i = this.media;
                    if (this.media = null, !r && (i && this.removeMediaListeners(i), this.detachedData)) {
                        var n = this.getBufferingPlayer();
                        n && (this.log("Removing schedule state for detachedData and " + n), this.playingAsset = this.endedAsset = this.bufferingAsset = this.bufferingItem = this.waitingItem = this.detachedData = null, n.detachMedia()), this.shouldPlay = !1
                    }
                }, r.isInterstitial = function(e) {
                    return !(null == e || !e.event)
                }, r.retreiveMediaSource = function(e, t) {
                    var r = this.getAssetPlayer(e);
                    r && this.transferMediaFromPlayer(r, t)
                }, r.transferMediaFromPlayer = function(e, t) {
                    var r = e.interstitial.appendInPlace,
                        i = e.media;
                    if (r && i === this.primaryMedia) {
                        if (this.bufferingAsset = null, (!t || this.isInterstitial(t) && !t.event.appendInPlace) && t && i) return void(this.detachedData = {
                            media: i
                        });
                        var n = e.transferMedia();
                        this.log("transfer MediaSource from " + e + " " + ot(n)), this.detachedData = n
                    } else t && i && (this.shouldPlay || (this.shouldPlay = !i.paused))
                }, r.transferMediaTo = function(e, t) {
                    var r, i, n = this;
                    if (e.media !== t) {
                        var a, s = null,
                            o = this.hls,
                            l = e !== o,
                            u = l && e.interstitial.appendInPlace,
                            d = null == (r = this.detachedData) ? void 0 : r.mediaSource;
                        if (o.media) u && (s = o.transferMedia(), this.detachedData = s), a = "Primary";
                        else if (d) {
                            var h = this.getBufferingPlayer();
                            h ? (s = h.transferMedia(), a = "" + h) : a = "detached MediaSource"
                        } else a = "detached media";
                        if (!s)
                            if (d) s = this.detachedData, this.log("using detachedData: MediaSource " + ot(s));
                            else if (!this.detachedData || o.media === t) {
                            var f = this.playerQueue;
                            f.length > 1 && f.forEach((function(e) {
                                if (l && e.interstitial.appendInPlace !== u) {
                                    var t = e.interstitial;
                                    n.clearInterstitial(e.interstitial, null), t.appendInPlace = !1, t.appendInPlace && n.warn("Could not change append strategy for queued assets " + t)
                                }
                            })), this.hls.detachMedia(), this.detachedData = {
                                media: t
                            }
                        }
                        var c = s && "mediaSource" in s && "closed" !== (null == (i = s.mediaSource) ? void 0 : i.readyState),
                            g = c && s ? s : t;
                        this.log((c ? "transfering MediaSource" : "attaching media") + " to " + (l ? e : "Primary") + " from " + a + " (media.currentTime: " + t.currentTime + ")");
                        var v = this.schedule;
                        if (g === s && v) {
                            var m = l && e.assetId === v.assetIdAtEnd;
                            g.overrides = {
                                duration: v.duration,
                                endOfStream: !l || m,
                                cueRemoval: !l
                            }
                        }
                        e.attachMedia(g)
                    }
                }, r.onInterstitialCueEnter = function() {
                    this.onTimeupdate()
                }, r.checkStart = function() {
                    var e = this.schedule,
                        t = null == e ? void 0 : e.events;
                    if (t && !this.playbackDisabled && this.media) {
                        -1 === this.bufferedPos && (this.bufferedPos = 0);
                        var r = this.timelinePos,
                            i = this.effectivePlayingItem;
                        if (-1 === r) {
                            var n = this.hls.startPosition;
                            if (this.log(Xs("checkStart", n)), this.timelinePos = n, t.length && t[0].cue.pre) {
                                var a = e.findEventIndex(t[0].identifier);
                                this.setSchedulePosition(a)
                            } else if (n >= 0 || !this.primaryLive) {
                                var s = this.timelinePos = n > 0 ? n : 0,
                                    o = e.findItemIndexAtTime(s);
                                this.setSchedulePosition(o)
                            }
                        } else if (i && !this.playingItem) {
                            var l = e.findItemIndex(i);
                            this.setSchedulePosition(l)
                        }
                    }
                }, r.advanceAssetBuffering = function(e, t) {
                    var r = e.event,
                        i = r.findAssetIndex(t),
                        n = Ks(r, i);
                    if (r.isAssetPastPlayoutLimit(n)) {
                        if (this.schedule) {
                            var a, s = null == (a = this.schedule.items) ? void 0 : a[this.findItemIndex(e) + 1];
                            s && this.bufferedToItem(s)
                        }
                    } else this.bufferedToEvent(e, n)
                }, r.advanceAfterAssetEnded = function(e, t, r) {
                    var i = Ks(e, r);
                    if (e.isAssetPastPlayoutLimit(i)) {
                        if (this.schedule) {
                            var n = this.schedule.items;
                            if (n) {
                                var a = t + 1;
                                if (a >= n.length) return void this.setSchedulePosition(-1);
                                var s = e.resumeTime;
                                this.timelinePos < s && (this.log(Xs("advanceAfterAssetEnded", s)), this.timelinePos = s, e.appendInPlace && this.advanceInPlace(s), this.checkBuffer(this.bufferedPos < s)), this.setSchedulePosition(a)
                            }
                        }
                    } else {
                        if (e.appendInPlace) {
                            var o = e.assetList[i];
                            o && this.advanceInPlace(o.timelineStart)
                        }
                        this.setSchedulePosition(t, i)
                    }
                }, r.setScheduleToAssetAtTime = function(e, t) {
                    var r = this.schedule;
                    if (r) {
                        var i = t.parentIdentifier,
                            n = r.getEvent(i);
                        if (n) {
                            var a = r.findEventIndex(i),
                                s = r.findAssetIndex(n, e);
                            this.advanceAfterAssetEnded(n, a, s - 1)
                        }
                    }
                }, r.setSchedulePosition = function(e, t) {
                    var r, i = null == (r = this.schedule) ? void 0 : r.items;
                    if (i && !this.playbackDisabled) {
                        var n = e >= 0 ? i[e] : null;
                        this.log("setSchedulePosition " + e + ", " + t + " (" + (n ? Ws(n) : n) + ") pos: " + this.timelinePos);
                        var a = this.waitingItem || this.playingItem,
                            s = this.playingLastItem;
                        if (this.isInterstitial(a)) {
                            var o = a.event,
                                l = this.playingAsset,
                                u = null == l ? void 0 : l.identifier,
                                d = u ? this.getAssetPlayer(u) : null;
                            if (d && u && (!this.eventItemsMatch(a, n) || void 0 !== t && u !== o.assetList[t].identifier)) {
                                var h, f = o.findAssetIndex(l);
                                if (this.log("INTERSTITIAL_ASSET_ENDED " + (f + 1) + "/" + o.assetList.length + " " + Vs(l)), this.endedAsset = l, this.playingAsset = null, this.hls.trigger(b.INTERSTITIAL_ASSET_ENDED, {
                                        asset: l,
                                        assetListIndex: f,
                                        event: o,
                                        schedule: i.slice(0),
                                        scheduleIndex: e,
                                        player: d
                                    }), a !== this.playingItem) return void(this.itemsMatch(a, this.playingItem) && !this.playingAsset && this.advanceAfterAssetEnded(o, this.findItemIndex(this.playingItem), f));
                                this.retreiveMediaSource(u, n), !d.media || null != (h = this.detachedData) && h.mediaSource || d.detachMedia()
                            }
                            if (!this.eventItemsMatch(a, n) && (this.endedItem = a, this.playingItem = null, this.log("INTERSTITIAL_ENDED " + o + " " + Ws(a)), o.hasPlayed = !0, this.hls.trigger(b.INTERSTITIAL_ENDED, {
                                    event: o,
                                    schedule: i.slice(0),
                                    scheduleIndex: e
                                }), o.cue.once)) {
                                var c;
                                this.updateSchedule();
                                var g = null == (c = this.schedule) ? void 0 : c.items;
                                if (n && g) {
                                    var v = this.findItemIndex(n);
                                    this.advanceSchedule(v, g, t, a, s)
                                }
                                return
                            }
                        }
                        this.advanceSchedule(e, i, t, a, s)
                    }
                }, r.advanceSchedule = function(e, t, r, i, n) {
                    var a = this,
                        s = this.schedule;
                    if (s) {
                        var o = t[e] || null,
                            l = this.primaryMedia,
                            u = this.playerQueue;
                        if (u.length && u.forEach((function(t) {
                                var r = t.interstitial,
                                    i = s.findEventIndex(r.identifier);
                                (i < e || i > e + 1) && a.clearInterstitial(r, o)
                            })), this.isInterstitial(o)) {
                            this.timelinePos = Math.min(Math.max(this.timelinePos, o.start), o.end);
                            var d = o.event;
                            if (void 0 === r) {
                                var h = Ks(d, (r = s.findAssetIndex(d, this.timelinePos)) - 1);
                                if (d.isAssetPastPlayoutLimit(h) || d.appendInPlace && this.timelinePos === o.end) return void this.advanceAfterAssetEnded(d, e, r);
                                r = h
                            }
                            var f = this.waitingItem;
                            this.assetsBuffered(o, l) || this.setBufferingItem(o);
                            var c = this.preloadAssets(d, r);
                            if (this.eventItemsMatch(o, f || i) || (this.waitingItem = o, this.log("INTERSTITIAL_STARTED " + Ws(o) + " " + (d.appendInPlace ? "append in place" : "")), this.hls.trigger(b.INTERSTITIAL_STARTED, {
                                    event: d,
                                    schedule: t.slice(0),
                                    scheduleIndex: e
                                })), !d.assetListLoaded) return void this.log("Waiting for ASSET-LIST to complete loading " + d);
                            if (d.assetListLoader && (d.assetListLoader.destroy(), d.assetListLoader = void 0), !l) return void this.log("Waiting for attachMedia to start Interstitial " + d);
                            this.waitingItem = this.endedItem = null, this.playingItem = o;
                            var g = d.assetList[r];
                            if (!g) return void this.advanceAfterAssetEnded(d, e, r || 0);
                            if (c || (c = this.getAssetPlayer(g.identifier)), null === c || c.destroyed) {
                                var v = d.assetList.length;
                                this.warn("asset " + (r + 1) + "/" + v + " player destroyed " + d), (c = this.createAssetPlayer(d, g, r)).loadSource()
                            }
                            if (!this.eventItemsMatch(o, this.bufferingItem) && d.appendInPlace && this.isAssetBuffered(g)) return;
                            this.startAssetPlayer(c, r, t, e, l), this.shouldPlay && qs(c.media)
                        } else o ? (this.resumePrimary(o, e, i), this.shouldPlay && qs(this.hls.media)) : n && this.isInterstitial(i) && (this.endedItem = null, this.playingItem = i, i.event.appendInPlace || this.attachPrimary(s.durations.primary, null))
                    }
                }, r.resumePrimary = function(e, t, r) {
                    var i, n;
                    if (this.playingItem = e, this.playingAsset = this.endedAsset = null, this.waitingItem = this.endedItem = null, this.bufferedToItem(e), this.log("resuming " + Ws(e)), null == (i = this.detachedData) || !i.mediaSource) {
                        var a = this.timelinePos;
                        (a < e.start || a >= e.end) && (a = this.getPrimaryResumption(e, t), this.log(Xs("resumePrimary", a)), this.timelinePos = a), this.attachPrimary(a, e)
                    }
                    if (r) {
                        var s = null == (n = this.schedule) ? void 0 : n.items;
                        s && (this.log("INTERSTITIALS_PRIMARY_RESUMED " + Ws(e)), this.hls.trigger(b.INTERSTITIALS_PRIMARY_RESUMED, {
                            schedule: s.slice(0),
                            scheduleIndex: t
                        }), this.checkBuffer())
                    }
                }, r.getPrimaryResumption = function(e, t) {
                    var r = e.start;
                    if (this.primaryLive) {
                        var i = this.primaryDetails;
                        if (0 === t) return this.hls.startPosition;
                        if (i && (r < i.fragmentStart || r > i.edge)) return this.hls.liveSyncPosition || -1
                    }
                    return r
                }, r.isAssetBuffered = function(e) {
                    var t = this.getAssetPlayer(e.identifier);
                    return null != t && t.hls ? t.hls.bufferedToEnd : sr.bufferInfo(this.primaryMedia, this.timelinePos, 0).end + 1 >= e.timelineStart + (e.duration || 0)
                }, r.attachPrimary = function(e, t, r) {
                    t ? this.setBufferingItem(t) : this.bufferingItem = this.playingItem, this.bufferingAsset = null;
                    var i = this.primaryMedia;
                    if (i) {
                        var n = this.hls;
                        n.media ? this.checkBuffer() : (this.transferMediaTo(n, i), r && this.startLoadingPrimaryAt(e, r)), r || (this.log(Xs("attachPrimary", e)), this.timelinePos = e, this.startLoadingPrimaryAt(e, r))
                    }
                }, r.startLoadingPrimaryAt = function(e, t) {
                    var r, i = this.hls;
                    !i.loadingEnabled || !i.media || Math.abs(((null == (r = i.mainForwardBufferInfo) ? void 0 : r.start) || i.media.currentTime) - e) > .5 ? i.startLoad(e, t) : i.bufferingEnabled || i.resumeBuffering()
                }, r.onManifestLoading = function() {
                    var e;
                    this.stopLoad(), null == (e = this.schedule) || e.reset(), this.emptyPlayerQueue(), this.clearScheduleState(), this.shouldPlay = !1, this.bufferedPos = this.timelinePos = -1, this.mediaSelection = this.altSelection = this.manager = this.requiredTracks = null, this.hls.off(b.BUFFER_CODECS, this.onBufferCodecs, this), this.hls.on(b.BUFFER_CODECS, this.onBufferCodecs, this)
                }, r.onLevelUpdated = function(e, t) {
                    if (-1 !== t.level && this.schedule) {
                        var r = this.hls.levels[t.level],
                            i = d(d({}, this.mediaSelection || this.altSelection), {}, {
                                main: r
                            });
                        this.mediaSelection = i, this.schedule.parseInterstitialDateRanges(i, this.hls.config.interstitialAppendInPlace), !this.effectivePlayingItem && this.schedule.items && this.checkStart()
                    }
                }, r.onAudioTrackUpdated = function(e, t) {
                    var r = this.hls.audioTracks[t.id],
                        i = this.mediaSelection;
                    if (i) {
                        var n = d(d({}, i), {}, {
                            audio: r
                        });
                        this.mediaSelection = n
                    } else this.altSelection = d(d({}, this.altSelection), {}, {
                        audio: r
                    })
                }, r.onSubtitleTrackUpdated = function(e, t) {
                    var r = this.hls.subtitleTracks[t.id],
                        i = this.mediaSelection;
                    if (i) {
                        var n = d(d({}, i), {}, {
                            subtitles: r
                        });
                        this.mediaSelection = n
                    } else this.altSelection = d(d({}, this.altSelection), {}, {
                        subtitles: r
                    })
                }, r.onAudioTrackSwitching = function(e, t) {
                    var r = dt(t);
                    this.playerQueue.forEach((function(e) {
                        var i = e.hls;
                        return i && (i.setAudioOption(t) || i.setAudioOption(r))
                    }))
                }, r.onSubtitleTrackSwitch = function(e, t) {
                    var r = dt(t);
                    this.playerQueue.forEach((function(e) {
                        var i = e.hls;
                        return i && (i.setSubtitleOption(t) || -1 !== t.id && i.setSubtitleOption(r))
                    }))
                }, r.onBufferCodecs = function(e, t) {
                    var r = t.tracks;
                    r && (this.requiredTracks = r)
                }, r.onBufferAppended = function(e, t) {
                    this.checkBuffer()
                }, r.onBufferFlushed = function(e, t) {
                    var r = this.playingItem;
                    if (r && !this.itemsMatch(r, this.bufferingItem) && !this.isInterstitial(r)) {
                        var i = this.timelinePos;
                        this.bufferedPos = i, this.checkBuffer()
                    }
                }, r.onBufferedToEnd = function(e) {
                    if (this.schedule) {
                        var t = this.schedule.events;
                        if (this.bufferedPos < Number.MAX_VALUE && t) {
                            for (var r = 0; r < t.length; r++) {
                                var i = t[r];
                                if (i.cue.post) {
                                    var n, a = this.schedule.findEventIndex(i.identifier),
                                        s = null == (n = this.schedule.items) ? void 0 : n[a];
                                    this.isInterstitial(s) && this.eventItemsMatch(s, this.bufferingItem) && this.bufferedToItem(s, 0);
                                    break
                                }
                            }
                            this.bufferedPos = Number.MAX_VALUE
                        }
                    }
                }, r.onMediaEnded = function(e) {
                    var t = this.playingItem;
                    if (!this.playingLastItem && t) {
                        var r = this.findItemIndex(t);
                        this.setSchedulePosition(r + 1)
                    } else this.shouldPlay = !1
                }, r.updateItem = function(e, t) {
                    var r, i = null == (r = this.schedule) ? void 0 : r.items;
                    return e && i && i[this.findItemIndex(e, t)] || null
                }, r.trimInPlace = function(e, t) {
                    var r = this;
                    if (this.isInterstitial(e) && e.event.appendInPlace && t.end - e.end > .25) {
                        e.event.assetList.forEach((function(t, i) {
                            e.event.isAssetPastPlayoutLimit(i) && r.clearAssetPlayer(t.identifier, null)
                        }));
                        var i = e.end + .25,
                            n = sr.bufferInfo(this.primaryMedia, i, 0);
                        (n.end > i || (n.nextStart || 0) > i) && (this.log("trim buffered interstitial " + Ws(e) + " (was " + Ws(t) + ")"), this.attachPrimary(i, null, !0), this.flushFrontBuffer(i))
                    }
                }, r.itemsMatch = function(e, t) {
                    return !!t && (e === t || e.event && t.event && this.eventItemsMatch(e, t) || !e.event && !t.event && this.findItemIndex(e) === this.findItemIndex(t))
                }, r.eventItemsMatch = function(e, t) {
                    var r;
                    return !!t && (e === t || e.event.identifier === (null == (r = t.event) ? void 0 : r.identifier))
                }, r.findItemIndex = function(e, t) {
                    return e && this.schedule ? this.schedule.findItemIndex(e, t) : -1
                }, r.updateSchedule = function(e) {
                    var t;
                    void 0 === e && (e = !1);
                    var r = this.mediaSelection;
                    r && (null == (t = this.schedule) || t.updateSchedule(r, [], e))
                }, r.checkBuffer = function(e) {
                    var t, r = null == (t = this.schedule) ? void 0 : t.items;
                    if (r) {
                        var i = sr.bufferInfo(this.primaryMedia, this.timelinePos, 0);
                        e && (this.bufferedPos = this.timelinePos), e || (e = i.len < 1), this.updateBufferedPos(i.end, r, e)
                    }
                }, r.updateBufferedPos = function(e, t, r) {
                    var i = this.schedule,
                        n = this.bufferingItem;
                    if (!(this.bufferedPos > e) && i)
                        if (1 === t.length && this.itemsMatch(t[0], n)) this.bufferedPos = e;
                        else {
                            var a = this.playingItem,
                                s = this.findItemIndex(a),
                                o = i.findItemIndexAtTime(e);
                            if (this.bufferedPos < e) {
                                var l, u = this.findItemIndex(n),
                                    d = Math.min(u + 1, t.length - 1),
                                    h = t[d];
                                if ((-1 === o && n && e >= n.end || null != (l = h.event) && l.appendInPlace && e + .01 >= h.start) && (o = d), this.isInterstitial(n)) {
                                    var f = n.event;
                                    if (d - s > 1 && !1 === f.appendInPlace) return;
                                    if (0 === f.assetList.length && f.assetListLoader) return
                                }
                                if (this.bufferedPos = e, o > u && o > s) this.bufferedToItem(h);
                                else {
                                    var c = this.primaryDetails;
                                    this.primaryLive && c && e > c.edge - c.targetduration && h.start < c.edge + this.hls.config.interstitialLiveLookAhead && this.isInterstitial(h) && this.preloadAssets(h.event, 0)
                                }
                            } else r && a && !this.itemsMatch(a, n) && (o === s ? this.bufferedToItem(a) : o === s + 1 && this.bufferedToItem(t[o]))
                        }
                }, r.assetsBuffered = function(e, t) {
                    var r = this;
                    return 0 !== e.event.assetList.length && !e.event.assetList.some((function(e) {
                        var i = r.getAssetPlayer(e.identifier);
                        return !(null != i && i.bufferedInPlaceToEnd(t))
                    }))
                }, r.setBufferingItem = function(e) {
                    var t = this,
                        r = this.bufferingItem,
                        i = this.schedule;
                    if (!this.itemsMatch(e, r) && i) {
                        var n = i.items,
                            a = i.events;
                        if (!n || !a) return r;
                        var s = this.isInterstitial(e),
                            o = this.getBufferingPlayer();
                        this.bufferingItem = e, this.bufferedPos = Math.max(e.start, Math.min(e.end, this.timelinePos));
                        var l = o ? o.remaining : r ? r.end - this.timelinePos : 0;
                        if (this.log("INTERSTITIALS_BUFFERED_TO_BOUNDARY " + Ws(e) + (r ? " (" + l.toFixed(2) + " remaining)" : "")), !this.playbackDisabled)
                            if (s) {
                                var u = i.findAssetIndex(e.event, this.bufferedPos);
                                e.event.assetList.forEach((function(e, r) {
                                    var i = t.getAssetPlayer(e.identifier);
                                    i && (r === u && i.loadSource(), i.resumeBuffering())
                                }))
                            } else this.hls.resumeBuffering(), this.playerQueue.forEach((function(e) {
                                return e.pauseBuffering()
                            }));
                        this.hls.trigger(b.INTERSTITIALS_BUFFERED_TO_BOUNDARY, {
                            events: a.slice(0),
                            schedule: n.slice(0),
                            bufferingIndex: this.findItemIndex(e),
                            playingIndex: this.findItemIndex(this.playingItem)
                        })
                    } else this.bufferingItem !== e && (this.bufferingItem = e);
                    return r
                }, r.bufferedToItem = function(e, t) {
                    void 0 === t && (t = 0);
                    var r = this.setBufferingItem(e);
                    if (!this.playbackDisabled)
                        if (this.isInterstitial(e)) this.bufferedToEvent(e, t);
                        else if (null !== r) {
                        this.bufferingAsset = null;
                        var i = this.detachedData;
                        i && i.mediaSource ? this.attachPrimary(e.start, e, !0) : this.preloadPrimary(e)
                    }
                }, r.preloadPrimary = function(e) {
                    var t = this.findItemIndex(e),
                        r = this.getPrimaryResumption(e, t);
                    this.startLoadingPrimaryAt(r)
                }, r.bufferedToEvent = function(e, t) {
                    var r = e.event,
                        i = 0 === r.assetList.length && !r.assetListLoader,
                        n = r.cue.once;
                    if (i || !n) {
                        var a = this.preloadAssets(r, t);
                        if (null != a && a.interstitial.appendInPlace) {
                            var s = this.primaryMedia;
                            s && this.bufferAssetPlayer(a, s)
                        }
                    }
                }, r.preloadAssets = function(e, t) {
                    var r = e.assetUrl,
                        i = e.assetList.length,
                        n = 0 === i && !e.assetListLoader,
                        a = e.cue.once;
                    if (n) {
                        var s, o = e.timelineStart;
                        if (e.appendInPlace) {
                            var l, u = this.playingItem;
                            this.isInterstitial(u) || (null == u || null == (l = u.nextEvent) ? void 0 : l.identifier) !== e.identifier || this.flushFrontBuffer(o + .25)
                        }
                        var d = 0;
                        if (!this.playingItem && this.primaryLive && -1 === (d = this.hls.startPosition) && (d = this.hls.liveSyncPosition || 0), d && !e.cue.pre && !e.cue.post) {
                            var h = d - o;
                            h > 0 && (s = Math.round(1e3 * h) / 1e3)
                        }
                        if (this.log("Load interstitial asset " + (t + 1) + "/" + (r ? 1 : i) + " " + e + (s ? " live-start: " + d + " start-offset: " + s : "")), r) return this.createAsset(e, 0, 0, o, e.duration, r);
                        var f = this.assetListLoader.loadAssetList(e, s);
                        f && (e.assetListLoader = f)
                    } else if (!a && i) {
                        for (var c = t; c < i; c++) {
                            var g = e.assetList[c],
                                v = this.getAssetPlayerQueueIndex(g.identifier); - 1 !== v && !this.playerQueue[v].destroyed || g.error || this.createAssetPlayer(e, g, c)
                        }
                        var m = e.assetList[t];
                        if (m) {
                            var p = this.getAssetPlayer(m.identifier);
                            return p && p.loadSource(), p
                        }
                    }
                    return null
                }, r.flushFrontBuffer = function(e) {
                    var t = this,
                        r = this.requiredTracks;
                    r && (this.log("Removing front buffer starting at " + e), Object.keys(r).forEach((function(r) {
                        t.hls.trigger(b.BUFFER_FLUSHING, {
                            startOffset: e,
                            endOffset: 1 / 0,
                            type: r
                        })
                    })))
                }, r.getAssetPlayerQueueIndex = function(e) {
                    for (var t = this.playerQueue, r = 0; r < t.length; r++)
                        if (e === t[r].assetId) return r;
                    return -1
                }, r.getAssetPlayer = function(e) {
                    var t = this.getAssetPlayerQueueIndex(e);
                    return this.playerQueue[t] || null
                }, r.getBufferingPlayer = function() {
                    var e = this.playerQueue,
                        t = this.primaryMedia;
                    if (t)
                        for (var r = 0; r < e.length; r++)
                            if (e[r].media === t) return e[r];
                    return null
                }, r.createAsset = function(e, t, r, i, n, a) {
                    var s = {
                        parentIdentifier: e.identifier,
                        identifier: Ns(e, a, t),
                        duration: n,
                        startOffset: r,
                        timelineStart: i,
                        uri: a
                    };
                    return this.createAssetPlayer(e, s, t)
                }, r.createAssetPlayer = function(e, t, r) {
                    var i = this,
                        n = this.hls,
                        s = n.userConfig,
                        o = s.videoPreference,
                        l = n.loadLevelObj || n.levels[n.currentLevel];
                    (o || l) && (o = a({}, o), l.videoCodec && (o.videoCodec = l.videoCodec), l.videoRange && (o.allowedVideoRanges = [l.videoRange]));
                    var u = n.audioTracks[n.audioTrack],
                        h = n.subtitleTracks[n.subtitleTrack],
                        f = 0;
                    if (this.primaryLive || e.appendInPlace) {
                        var c = this.timelinePos - t.timelineStart;
                        if (c > 1) {
                            var g = t.duration;
                            g && c < g && (f = c)
                        }
                    }
                    var v = t.identifier,
                        m = d(d({}, s), {}, {
                            maxMaxBufferLength: Math.min(180, n.config.maxMaxBufferLength),
                            autoStartLoad: !0,
                            startFragPrefetch: !0,
                            primarySessionId: n.sessionId,
                            assetPlayerId: v,
                            abrEwmaDefaultEstimate: n.bandwidthEstimate,
                            interstitialsController: void 0,
                            startPosition: f,
                            liveDurationInfinity: !1,
                            testBandwidth: !1,
                            videoPreference: o,
                            audioPreference: u || s.audioPreference,
                            subtitlePreference: h || s.subtitlePreference
                        });
                    e.appendInPlace && (e.appendInPlaceStarted = !0, t.timelineStart && (m.timelineOffset = t.timelineStart));
                    var p = m.cmcd;
                    null != p && p.sessionId && p.contentId && (m.cmcd = a({}, p, {
                        contentId: xs(t.uri)
                    })), this.getAssetPlayer(v) && this.warn("Duplicate date range identifier " + e + " and asset " + v);
                    var y = new Hs(this.HlsPlayerClass, m, e, t);
                    this.playerQueue.push(y), e.assetList[r] = t;
                    var E = !0,
                        T = function(n) {
                            if (n.live) {
                                var a, s = new Error("Interstitials MUST be VOD assets " + e),
                                    o = {
                                        fatal: !0,
                                        type: I.OTHER_ERROR,
                                        details: k.INTERSTITIAL_ASSET_ITEM_ERROR,
                                        error: s
                                    },
                                    l = (null == (a = i.schedule) ? void 0 : a.findEventIndex(e.identifier)) || -1;
                                i.handleAssetItemError(o, e, l, r, s.message)
                            } else {
                                var u = n.edge - n.fragmentStart,
                                    d = t.duration;
                                (E || null === d || u > d) && (E = !1, i.log('Interstitial asset "' + v + '" duration change ' + d + " > " + u), t.duration = u, i.updateSchedule())
                            }
                        };
                    y.on(b.LEVEL_UPDATED, (function(e, t) {
                        var r = t.details;
                        return T(r)
                    })), y.on(b.LEVEL_PTS_UPDATED, (function(e, t) {
                        var r = t.details;
                        return T(r)
                    })), y.on(b.EVENT_CUE_ENTER, (function() {
                        return i.onInterstitialCueEnter()
                    }));
                    var S = function(e, t) {
                        var r = i.getAssetPlayer(v);
                        if (r && t.tracks) {
                            r.off(b.BUFFER_CODECS, S), r.tracks = t.tracks;
                            var n = i.primaryMedia;
                            i.bufferingAsset === r.assetItem && n && !r.media && i.bufferAssetPlayer(r, n)
                        }
                    };
                    y.on(b.BUFFER_CODECS, S), y.on(b.BUFFERED_TO_END, (function() {
                        var r, n = i.getAssetPlayer(v);
                        if (i.log("buffered to end of asset " + n), n && i.schedule) {
                            var a = i.schedule.findEventIndex(e.identifier),
                                s = null == (r = i.schedule.items) ? void 0 : r[a];
                            i.isInterstitial(s) && i.advanceAssetBuffering(s, t)
                        }
                    }));
                    var A = function(t) {
                        return function() {
                            if (i.getAssetPlayer(v) && i.schedule) {
                                i.shouldPlay = !0;
                                var r = i.schedule.findEventIndex(e.identifier);
                                i.advanceAfterAssetEnded(e, r, t)
                            }
                        }
                    };
                    return y.once(b.MEDIA_ENDED, A(r)), y.once(b.PLAYOUT_LIMIT_REACHED, A(1 / 0)), y.on(b.ERROR, (function(t, n) {
                        if (i.schedule) {
                            var a = i.getAssetPlayer(v);
                            if (n.details === k.BUFFER_STALLED_ERROR) return null != a && a.appendInPlace ? void i.handleInPlaceStall(e) : (i.onTimeupdate(), void i.checkBuffer(!0));
                            i.handleAssetItemError(n, e, i.schedule.findEventIndex(e.identifier), r, "Asset player error " + n.error + " " + e)
                        }
                    })), y.on(b.DESTROYING, (function() {
                        if (i.getAssetPlayer(v) && i.schedule) {
                            var t = new Error("Asset player destroyed unexpectedly " + v),
                                n = {
                                    fatal: !0,
                                    type: I.OTHER_ERROR,
                                    details: k.INTERSTITIAL_ASSET_ITEM_ERROR,
                                    error: t
                                };
                            i.handleAssetItemError(n, e, i.schedule.findEventIndex(e.identifier), r, t.message)
                        }
                    })), this.log("INTERSTITIAL_ASSET_PLAYER_CREATED " + Vs(t)), this.hls.trigger(b.INTERSTITIAL_ASSET_PLAYER_CREATED, {
                        asset: t,
                        assetListIndex: r,
                        event: e,
                        player: y
                    }), y
                }, r.clearInterstitial = function(e, t) {
                    var r = this;
                    e.assetList.forEach((function(e) {
                        r.clearAssetPlayer(e.identifier, t)
                    })), e.reset()
                }, r.resetAssetPlayer = function(e) {
                    var t = this.getAssetPlayerQueueIndex(e);
                    if (-1 !== t) {
                        this.log('reset asset player "' + e + '" after error');
                        var r = this.playerQueue[t];
                        this.transferMediaFromPlayer(r, null), r.resetDetails()
                    }
                }, r.clearAssetPlayer = function(e, t) {
                    var r = this.getAssetPlayerQueueIndex(e);
                    if (-1 !== r) {
                        var i = this.playerQueue[r];
                        this.log("clear " + i + " toSegment: " + (t ? Ws(t) : t)), this.transferMediaFromPlayer(i, t), this.playerQueue.splice(r, 1), i.destroy()
                    }
                }, r.emptyPlayerQueue = function() {
                    for (var e; e = this.playerQueue.pop();) e.destroy();
                    this.playerQueue = []
                }, r.startAssetPlayer = function(e, t, r, i, n) {
                    var a = e.interstitial,
                        s = e.assetItem,
                        o = e.assetId,
                        l = a.assetList.length,
                        u = this.playingAsset;
                    this.endedAsset = null, this.playingAsset = s, u && u.identifier === o || (u && (this.clearAssetPlayer(u.identifier, r[i]), delete u.error), this.log("INTERSTITIAL_ASSET_STARTED " + (t + 1) + "/" + l + " " + Vs(s)), this.hls.trigger(b.INTERSTITIAL_ASSET_STARTED, {
                        asset: s,
                        assetListIndex: t,
                        event: a,
                        schedule: r.slice(0),
                        scheduleIndex: i,
                        player: e
                    })), this.bufferAssetPlayer(e, n)
                }, r.bufferAssetPlayer = function(e, t) {
                    var r, i;
                    if (this.schedule) {
                        var n = e.interstitial,
                            a = e.assetItem,
                            s = this.schedule.findEventIndex(n.identifier),
                            o = null == (r = this.schedule.items) ? void 0 : r[s];
                        if (o) {
                            e.loadSource(), this.setBufferingItem(o), this.bufferingAsset = a;
                            var l = this.getBufferingPlayer();
                            if (l !== e) {
                                var u = n.appendInPlace;
                                if (!u || !1 !== (null == l ? void 0 : l.interstitial.appendInPlace)) {
                                    var d = (null == l ? void 0 : l.tracks) || (null == (i = this.detachedData) ? void 0 : i.tracks) || this.requiredTracks;
                                    if (u && a !== this.playingAsset) {
                                        if (!e.tracks) return void this.log("Waiting for track info before buffering " + e);
                                        if (d && !j(d, e.tracks)) {
                                            var h = new Error("Asset " + Vs(a) + " SourceBuffer tracks ('" + Object.keys(e.tracks) + "') are not compatible with primary content tracks ('" + Object.keys(d) + "')"),
                                                f = {
                                                    fatal: !0,
                                                    type: I.OTHER_ERROR,
                                                    details: k.INTERSTITIAL_ASSET_ITEM_ERROR,
                                                    error: h
                                                },
                                                c = n.findAssetIndex(a);
                                            return void this.handleAssetItemError(f, n, s, c, h.message)
                                        }
                                    }
                                    this.transferMediaTo(e, t)
                                }
                            }
                        }
                    }
                }, r.handleInPlaceStall = function(e) {
                    var t = this.schedule,
                        r = this.primaryMedia;
                    if (t && r) {
                        var i = r.currentTime,
                            n = t.findAssetIndex(e, i),
                            a = e.assetList[n];
                        if (a) {
                            var s = this.getAssetPlayer(a.identifier);
                            if (s) {
                                var o = s.currentTime || i - a.timelineStart,
                                    l = s.duration - o;
                                if (this.warn("Stalled at " + o + " of " + (o + l) + " in " + s + " " + e + " (media.currentTime: " + i + ")"), o && (l / r.playbackRate < .5 || s.bufferedInPlaceToEnd(r)) && s.hls) {
                                    var u = t.findEventIndex(e.identifier);
                                    this.advanceAfterAssetEnded(e, u, n)
                                }
                            }
                        }
                    }
                }, r.advanceInPlace = function(e) {
                    var t = this.primaryMedia;
                    t && t.currentTime < e && (t.currentTime = e)
                }, r.handleAssetItemError = function(e, t, r, i, n) {
                    if (e.details !== k.BUFFER_STALLED_ERROR) {
                        var s = t.assetList[i] || null;
                        if (this.warn("INTERSTITIAL_ASSET_ERROR " + (s ? Vs(s) : s) + " " + e.error), this.schedule) {
                            var o = (null == s ? void 0 : s.identifier) || "",
                                l = this.getAssetPlayerQueueIndex(o),
                                u = this.playerQueue[l] || null,
                                d = this.schedule.items,
                                h = a({}, e, {
                                    fatal: !1,
                                    errorAction: Nt(!0),
                                    asset: s,
                                    assetListIndex: i,
                                    event: t,
                                    schedule: d,
                                    scheduleIndex: r,
                                    player: u
                                });
                            if (this.hls.trigger(b.INTERSTITIAL_ASSET_ERROR, h), e.fatal) {
                                var f = this.playingAsset,
                                    c = this.bufferingAsset,
                                    g = new Error(n);
                                if (s && (this.clearAssetPlayer(o, null), s.error = g), t.assetList.some((function(e) {
                                        return !e.error
                                    })))
                                    for (var v = i; v < t.assetList.length; v++) this.resetAssetPlayer(t.assetList[v].identifier);
                                else t.error = g;
                                this.updateSchedule(!0), t.error ? this.primaryFallback(t) : f && f.identifier === o ? this.advanceAfterAssetEnded(t, r, i) : c && c.identifier === o && this.isInterstitial(this.bufferingItem) && this.advanceAssetBuffering(this.bufferingItem, c)
                            }
                        }
                    }
                }, r.primaryFallback = function(e) {
                    var t = e.timelineStart,
                        r = this.effectivePlayingItem;
                    if (r) {
                        this.log('Fallback to primary from event "' + e.identifier + '" start: ' + t + " pos: " + this.timelinePos + " playing: " + Ws(r) + " error: " + e.error);
                        var i = this.timelinePos; - 1 === i && (i = this.hls.startPosition);
                        var n = this.updateItem(r, i);
                        if (this.itemsMatch(r, n) && this.clearInterstitial(e, null), e.appendInPlace && (this.attachPrimary(t, null), this.flushFrontBuffer(t)), !this.schedule) return;
                        var a = this.schedule.findItemIndexAtTime(i);
                        this.setSchedulePosition(a)
                    } else this.checkStart()
                }, r.onAssetListLoaded = function(e, t) {
                    var r, i, n = this,
                        a = t.event,
                        s = a.identifier,
                        o = t.assetListResponse.ASSETS;
                    if (null != (r = this.schedule) && r.hasEvent(s)) {
                        var l = a.timelineStart,
                            u = a.duration,
                            d = 0;
                        o.forEach((function(e, t) {
                            var r = parseFloat(e.DURATION);
                            n.createAsset(a, t, d, l + d, r, e.URI), d += r
                        })), a.duration = d, this.log("Loaded asset-list with duration: " + d + " (was: " + u + ") " + a);
                        var h = this.waitingItem,
                            f = (null == h ? void 0 : h.event.identifier) === s;
                        this.updateSchedule();
                        var c = null == (i = this.bufferingItem) ? void 0 : i.event;
                        if (f) {
                            var g, v = this.schedule.findEventIndex(s),
                                m = null == (g = this.schedule.items) ? void 0 : g[v];
                            if (m) {
                                if (!this.playingItem && this.timelinePos > m.end && this.schedule.findItemIndexAtTime(this.timelinePos) !== v) return a.error = new Error("Interstitial no longer within playback range " + this.timelinePos + " " + a), this.updateSchedule(!0), void this.primaryFallback(a);
                                this.setBufferingItem(m)
                            }
                            this.setSchedulePosition(v)
                        } else if ((null == c ? void 0 : c.identifier) === s) {
                            var p = a.assetList[0];
                            if (p) {
                                var y = this.getAssetPlayer(p.identifier);
                                if (c.appendInPlace) {
                                    var E = this.primaryMedia;
                                    y && E && this.bufferAssetPlayer(y, E)
                                } else y && y.loadSource()
                            }
                        }
                    }
                }, r.onError = function(e, t) {
                    if (this.schedule) switch (t.details) {
                        case k.ASSET_LIST_PARSING_ERROR:
                        case k.ASSET_LIST_LOAD_ERROR:
                        case k.ASSET_LIST_LOAD_TIMEOUT:
                            var r = t.interstitial;
                            r && (this.updateSchedule(!0), this.primaryFallback(r));
                            break;
                        case k.BUFFER_STALLED_ERROR:
                            var i = this.endedItem || this.waitingItem || this.playingItem;
                            if (this.isInterstitial(i) && i.event.appendInPlace) return void this.handleInPlaceStall(i.event);
                            this.log("Primary player stall @" + this.timelinePos + " bufferedPos: " + this.bufferedPos), this.onTimeupdate(), this.checkBuffer(!0)
                    }
                }, i(t, [{
                    key: "interstitialsManager",
                    get: function() {
                        if (!this.hls) return null;
                        if (this.manager) return this.manager;
                        var e = this,
                            t = function() {
                                return e.bufferingItem || e.waitingItem
                            },
                            r = function(t) {
                                return t ? e.getAssetPlayer(t.identifier) : t
                            },
                            i = function(t, i, a, s, o) {
                                if (t) {
                                    var l = t[i].start,
                                        u = t.event;
                                    if (u) {
                                        if ("playout" === i || u.timelineOccupancy !== Fs.Point) {
                                            var d = r(a);
                                            (null == d ? void 0 : d.interstitial) === u && (l += d.assetItem.startOffset + d[o])
                                        }
                                    } else l += ("bufferedPos" === s ? n() : e[s]) - t.start;
                                    return l
                                }
                                return 0
                            },
                            n = function() {
                                var t = e.bufferedPos;
                                return t === Number.MAX_VALUE ? a("primary") : Math.max(t, 0)
                            },
                            a = function(t) {
                                var r, i;
                                return null != (r = e.primaryDetails) && r.live ? e.primaryDetails.edge : (null == (i = e.schedule) ? void 0 : i.durations[t]) || 0
                            },
                            s = function(t, n) {
                                var a, s, o = e.effectivePlayingItem;
                                if ((null == o || null == (a = o.event) || !a.restrictions.skip) && e.schedule) {
                                    e.log("seek to " + t + ' "' + n + '"');
                                    var l = e.effectivePlayingItem,
                                        u = e.schedule.findItemIndexAtTime(t, n),
                                        d = null == (s = e.schedule.items) ? void 0 : s[u],
                                        h = e.getBufferingPlayer(),
                                        f = null == h ? void 0 : h.interstitial,
                                        c = null == f ? void 0 : f.appendInPlace,
                                        g = l && e.itemsMatch(l, d);
                                    if (l && (c || g)) {
                                        var v = r(e.playingAsset),
                                            m = (null == v ? void 0 : v.media) || e.primaryMedia;
                                        if (m) {
                                            var p = "primary" === n ? m.currentTime : i(l, n, e.playingAsset, "timelinePos", "currentTime"),
                                                y = t - p,
                                                E = (c ? p : m.currentTime) + y;
                                            if (E >= 0 && (!v || c || E <= v.duration)) return void(m.currentTime = E)
                                        }
                                    }
                                    if (d) {
                                        var T = t;
                                        if ("primary" !== n) {
                                            var S = t - d[n].start;
                                            T = d.start + S
                                        }
                                        var A = !e.isInterstitial(d);
                                        if (e.isInterstitial(l) && !l.event.appendInPlace || !A && !d.event.appendInPlace) {
                                            if (l) {
                                                var L = e.findItemIndex(l);
                                                if (u > L) {
                                                    var R = e.schedule.findJumpRestrictedIndex(L + 1, u);
                                                    if (R > L) return void e.setSchedulePosition(R)
                                                }
                                                var I = 0;
                                                if (A) e.timelinePos = T, e.checkBuffer();
                                                else
                                                    for (var k = d.event.assetList, b = t - (d[n] || d).start, D = k.length; D--;) {
                                                        var _ = k[D];
                                                        if (_.duration && b >= _.startOffset && b < _.startOffset + _.duration) {
                                                            I = D;
                                                            break
                                                        }
                                                    }
                                                e.setSchedulePosition(u, I)
                                            }
                                        } else {
                                            var P = e.media || (c ? null == h ? void 0 : h.media : null);
                                            P && (P.currentTime = T)
                                        }
                                    }
                                }
                            },
                            o = function() {
                                var r = e.effectivePlayingItem;
                                if (e.isInterstitial(r)) return r;
                                var i = t();
                                return e.isInterstitial(i) ? i : null
                            },
                            l = {
                                get bufferedEnd() {
                                    var r, n = t(),
                                        a = e.bufferingItem;
                                    return a && a === n && (i(a, "playout", e.bufferingAsset, "bufferedPos", "bufferedEnd") - a.playout.start || (null == (r = e.bufferingAsset) ? void 0 : r.startOffset)) || 0
                                },
                                get currentTime() {
                                    var t = o(),
                                        r = e.effectivePlayingItem;
                                    return r && r === t ? i(r, "playout", e.effectivePlayingAsset, "timelinePos", "currentTime") - r.playout.start : 0
                                },
                                set currentTime(t) {
                                    var r = o(),
                                        i = e.effectivePlayingItem;
                                    i && i === r && s(t + i.playout.start, "playout")
                                },
                                get duration() {
                                    var e = o();
                                    return e ? e.playout.end - e.playout.start : 0
                                },
                                get assetPlayers() {
                                    var t, r = null == (t = o()) ? void 0 : t.event.assetList;
                                    return r ? r.map((function(t) {
                                        return e.getAssetPlayer(t.identifier)
                                    })) : []
                                },
                                get playingIndex() {
                                    var t, r = null == (t = o()) ? void 0 : t.event;
                                    return r && e.effectivePlayingAsset ? r.findAssetIndex(e.effectivePlayingAsset) : -1
                                },
                                get scheduleItem() {
                                    return o()
                                }
                            };
                        return this.manager = {
                            get events() {
                                var t;
                                return (null == (t = e.schedule) || null == (t = t.events) ? void 0 : t.slice(0)) || []
                            },
                            get schedule() {
                                var t;
                                return (null == (t = e.schedule) || null == (t = t.items) ? void 0 : t.slice(0)) || []
                            },
                            get interstitialPlayer() {
                                return o() ? l : null
                            },
                            get playerQueue() {
                                return e.playerQueue.slice(0)
                            },
                            get bufferingAsset() {
                                return e.bufferingAsset
                            },
                            get bufferingItem() {
                                return t()
                            },
                            get bufferingIndex() {
                                var r = t();
                                return e.findItemIndex(r)
                            },
                            get playingAsset() {
                                return e.effectivePlayingAsset
                            },
                            get playingItem() {
                                return e.effectivePlayingItem
                            },
                            get playingIndex() {
                                var t = e.effectivePlayingItem;
                                return e.findItemIndex(t)
                            },
                            primary: {
                                get bufferedEnd() {
                                    return n()
                                },
                                get currentTime() {
                                    var t = e.timelinePos;
                                    return t > 0 ? t : 0
                                },
                                set currentTime(e) {
                                    s(e, "primary")
                                },
                                get duration() {
                                    return a("primary")
                                },
                                get seekableStart() {
                                    var t;
                                    return (null == (t = e.primaryDetails) ? void 0 : t.fragmentStart) || 0
                                }
                            },
                            integrated: {
                                get bufferedEnd() {
                                    return i(t(), "integrated", e.bufferingAsset, "bufferedPos", "bufferedEnd")
                                },
                                get currentTime() {
                                    return i(e.effectivePlayingItem, "integrated", e.effectivePlayingAsset, "timelinePos", "currentTime")
                                },
                                set currentTime(e) {
                                    s(e, "integrated")
                                },
                                get duration() {
                                    return a("integrated")
                                },
                                get seekableStart() {
                                    var t;
                                    return function(t, r) {
                                        var i;
                                        if (0 !== t && "primary" !== r && null != (i = e.schedule) && i.length) {
                                            var n, a = e.schedule.findItemIndexAtTime(t),
                                                s = null == (n = e.schedule.items) ? void 0 : n[a];
                                            if (s) return t + (s[r].start - s.start)
                                        }
                                        return t
                                    }((null == (t = e.primaryDetails) ? void 0 : t.fragmentStart) || 0, "integrated")
                                }
                            },
                            skip: function() {
                                var t = e.effectivePlayingItem,
                                    r = null == t ? void 0 : t.event;
                                if (r && !r.restrictions.skip) {
                                    var i = e.findItemIndex(t);
                                    if (r.appendInPlace) {
                                        var n = t.playout.start + t.event.duration;
                                        s(n + .001, "playout")
                                    } else e.advanceAfterAssetEnded(r, i, 1 / 0)
                                }
                            }
                        }
                    }
                }, {
                    key: "effectivePlayingItem",
                    get: function() {
                        return this.waitingItem || this.playingItem || this.endedItem
                    }
                }, {
                    key: "effectivePlayingAsset",
                    get: function() {
                        return this.playingAsset || this.endedAsset
                    }
                }, {
                    key: "playingLastItem",
                    get: function() {
                        var e, t = this.playingItem,
                            r = null == (e = this.schedule) ? void 0 : e.items;
                        return !!(this.playbackStarted && t && r) && this.findItemIndex(t) === r.length - 1
                    }
                }, {
                    key: "playbackStarted",
                    get: function() {
                        return null !== this.effectivePlayingItem
                    }
                }, {
                    key: "currentTime",
                    get: function() {
                        var e, t;
                        if (null !== this.mediaSelection) {
                            var r = this.waitingItem || this.playingItem;
                            if (!this.isInterstitial(r) || r.event.appendInPlace) {
                                var i = this.media;
                                !i && null != (e = this.bufferingItem) && null != (e = e.event) && e.appendInPlace && (i = this.primaryMedia);
                                var n = null == (t = i) ? void 0 : t.currentTime;
                                if (void 0 !== n && A(n)) return n
                            }
                        }
                    }
                }, {
                    key: "primaryMedia",
                    get: function() {
                        var e;
                        return this.media || (null == (e = this.detachedData) ? void 0 : e.media) || null
                    }
                }, {
                    key: "playbackDisabled",
                    get: function() {
                        return !1 === this.hls.config.enableInterstitialPlayback
                    }
                }, {
                    key: "primaryDetails",
                    get: function() {
                        var e;
                        return null == (e = this.mediaSelection) ? void 0 : e.main.details
                    }
                }, {
                    key: "primaryLive",
                    get: function() {
                        var e;
                        return !(null == (e = this.primaryDetails) || !e.live)
                    }
                }])
            }(N),
            zs = function(e) {
                function t(t, r, i) {
                    var n;
                    return (n = e.call(this, t, r, i, "subtitle-stream-controller", x) || this).currentTrackId = -1, n.tracksBuffered = [], n.mainDetails = null, n.registerListeners(), n
                }
                o(t, e);
                var r = t.prototype;
                return r.onHandlerDestroying = function() {
                    this.unregisterListeners(), e.prototype.onHandlerDestroying.call(this), this.mainDetails = null
                }, r.registerListeners = function() {
                    e.prototype.registerListeners.call(this);
                    var t = this.hls;
                    t.on(b.LEVEL_LOADED, this.onLevelLoaded, this), t.on(b.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), t.on(b.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), t.on(b.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), t.on(b.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this), t.on(b.BUFFER_FLUSHING, this.onBufferFlushing, this)
                }, r.unregisterListeners = function() {
                    e.prototype.unregisterListeners.call(this);
                    var t = this.hls;
                    t.off(b.LEVEL_LOADED, this.onLevelLoaded, this), t.off(b.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), t.off(b.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), t.off(b.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), t.off(b.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this), t.off(b.BUFFER_FLUSHING, this.onBufferFlushing, this)
                }, r.startLoad = function(e, t) {
                    this.stopLoad(), this.state = Ai.IDLE, this.setInterval(500), this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick()
                }, r.onManifestLoading = function() {
                    e.prototype.onManifestLoading.call(this), this.mainDetails = null
                }, r.onMediaDetaching = function(t, r) {
                    this.tracksBuffered = [], e.prototype.onMediaDetaching.call(this, t, r)
                }, r.onLevelLoaded = function(e, t) {
                    this.mainDetails = t.details
                }, r.onSubtitleFragProcessed = function(e, t) {
                    var r = t.frag,
                        i = t.success;
                    if (this.fragContextChanged(r) || (te(r) && (this.fragPrevious = r), this.state = Ai.IDLE), i) {
                        var n = this.tracksBuffered[this.currentTrackId];
                        if (n) {
                            for (var a, s = r.start, o = 0; o < n.length; o++)
                                if (s >= n[o].start && s <= n[o].end) {
                                    a = n[o];
                                    break
                                }
                            var l = r.start + r.duration;
                            a ? a.end = l : (a = {
                                start: s,
                                end: l
                            }, n.push(a)), this.fragmentTracker.fragBuffered(r), this.fragBufferedComplete(r, null), this.media && this.tick()
                        }
                    }
                }, r.onBufferFlushing = function(e, t) {
                    var r = t.startOffset,
                        i = t.endOffset;
                    if (0 === r && i !== Number.POSITIVE_INFINITY) {
                        var n = i - 1;
                        if (n <= 0) return;
                        t.endOffsetSubtitles = Math.max(0, n), this.tracksBuffered.forEach((function(e) {
                            for (var t = 0; t < e.length;)
                                if (e[t].end <= n) e.shift();
                                else {
                                    if (!(e[t].start < n)) break;
                                    e[t].start = n, t++
                                }
                        })), this.fragmentTracker.removeFragmentsInRange(r, n, x)
                    }
                }, r.onError = function(e, t) {
                    var r = t.frag;
                    (null == r ? void 0 : r.type) === x && (t.details === k.FRAG_GAP && this.fragmentTracker.fragBuffered(r, !0), this.fragCurrent && this.fragCurrent.abortRequests(), this.state !== Ai.STOPPED && (this.state = Ai.IDLE))
                }, r.onSubtitleTracksUpdated = function(e, t) {
                    var r = this,
                        i = t.subtitleTracks;
                    this.levels && ha(this.levels, i) ? this.levels = i.map((function(e) {
                        return new nt(e)
                    })) : (this.tracksBuffered = [], this.levels = i.map((function(e) {
                        var t = new nt(e);
                        return r.tracksBuffered[t.id] = [], t
                    })), this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, x), this.fragPrevious = null, this.mediaBuffer = null)
                }, r.onSubtitleTrackSwitch = function(e, t) {
                    var r;
                    if (this.currentTrackId = t.id, null != (r = this.levels) && r.length && -1 !== this.currentTrackId) {
                        var i = this.levels[this.currentTrackId];
                        null != i && i.details ? this.mediaBuffer = this.mediaBufferTimeRanges : this.mediaBuffer = null, i && this.state !== Ai.STOPPED && this.setInterval(500)
                    } else this.clearInterval()
                }, r.onSubtitleTrackLoaded = function(e, t) {
                    var r, i = this.currentTrackId,
                        n = this.levels,
                        a = t.details,
                        s = t.id;
                    if (n) {
                        var o = n[s];
                        if (!(s >= n.length) && o) {
                            this.log("Subtitle track " + s + " loaded [" + a.startSN + "," + a.endSN + "]" + (a.lastPartSn ? "[part-" + a.lastPartSn + "-" + a.lastPartIndex + "]" : "") + ",duration:" + a.totalduration), this.mediaBuffer = this.mediaBufferTimeRanges;
                            var l = 0;
                            if (a.live || null != (r = o.details) && r.live) {
                                if (a.deltaUpdateFailed) return;
                                var u = this.mainDetails;
                                if (!u) return void(this.startFragRequested = !1);
                                var d, h = u.fragments[0];
                                o.details ? 0 === (l = this.alignPlaylists(a, o.details, null == (d = this.levelLastLoaded) ? void 0 : d.details)) && h && si(a, l = h.start) : a.hasProgramDateTime && u.hasProgramDateTime ? (yi(a, u), l = a.fragmentStart) : h && si(a, l = h.start), u && !this.startFragRequested && this.setStartPosition(u, l)
                            }
                            o.details = a, this.levelLastLoaded = o, s === i && (this.hls.trigger(b.SUBTITLE_TRACK_UPDATED, {
                                details: a,
                                id: s,
                                groupId: t.groupId
                            }), this.tick(), a.live && !this.fragCurrent && this.media && this.state === Ai.IDLE && (yt(null, a.fragments, this.media.currentTime, 0) || (this.warn("Subtitle playlist not aligned with playback"), o.details = void 0)))
                        }
                    } else this.warn("Subtitle tracks were reset while loading level " + s)
                }, r._handleFragmentLoadComplete = function(e) {
                    var t = this,
                        r = e.frag,
                        i = e.payload,
                        n = r.decryptdata,
                        a = this.hls;
                    if (!this.fragContextChanged(r) && i && i.byteLength > 0 && null != n && n.key && n.iv && Tr(n.method)) {
                        var s = performance.now();
                        this.decrypter.decrypt(new Uint8Array(i), n.key.buffer, n.iv.buffer, Sr(n.method)).catch((function(e) {
                            throw a.trigger(b.ERROR, {
                                type: I.MEDIA_ERROR,
                                details: k.FRAG_DECRYPT_ERROR,
                                fatal: !1,
                                error: e,
                                reason: e.message,
                                frag: r
                            }), e
                        })).then((function(e) {
                            var t = performance.now();
                            a.trigger(b.FRAG_DECRYPTED, {
                                frag: r,
                                payload: e,
                                stats: {
                                    tstart: s,
                                    tdecrypt: t
                                }
                            })
                        })).catch((function(e) {
                            t.warn(e.name + ": " + e.message), t.state = Ai.IDLE
                        }))
                    }
                }, r.doTick = function() {
                    if (this.media) {
                        if (this.state === Ai.IDLE) {
                            var e = this.currentTrackId,
                                t = this.levels,
                                r = null == t ? void 0 : t[e];
                            if (!r || !t.length || !r.details) return;
                            if (this.waitForLive(r)) return;
                            var i = this.config,
                                n = this.getLoadPosition(),
                                a = sr.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], n, i.maxBufferHole),
                                s = a.end,
                                o = a.len,
                                l = r.details;
                            if (o > this.hls.maxBufferLength + l.levelTargetDuration) return;
                            var u = l.fragments,
                                d = u.length,
                                h = l.edge,
                                f = null,
                                c = this.fragPrevious;
                            if (s < h) {
                                var g = i.maxFragLookUpTolerance,
                                    v = s > h - g ? 0 : g;
                                !(f = yt(c, u, Math.max(u[0].start, s), v)) && c && c.start < u[0].start && (f = u[0])
                            } else f = u[d - 1];
                            if (!(f = this.filterReplacedPrimary(f, r.details))) return;
                            var m = u[f.sn - l.startSN - 1];
                            if (m && m.cc === f.cc && this.fragmentTracker.getState(m) === Ut && (f = m), this.fragmentTracker.getState(f) === Ut) {
                                var p = this.mapToInitFragWhenRequired(f);
                                p && this.loadFragment(p, r, s)
                            }
                        }
                    } else this.state = Ai.IDLE
                }, r.loadFragment = function(t, r, i) {
                    te(t) ? e.prototype.loadFragment.call(this, t, r, i) : this._loadInitSegment(t, r)
                }, i(t, [{
                    key: "mediaBufferTimeRanges",
                    get: function() {
                        return new $s(this.tracksBuffered[this.currentTrackId] || [])
                    }
                }])
            }(Li),
            $s = function(e) {
                this.buffered = void 0;
                var t = function(t, r, i) {
                    if ((r >>>= 0) > i - 1) throw new DOMException("Failed to execute '" + t + "' on 'TimeRanges': The index provided (" + r + ") is greater than the maximum bound (" + i + ")");
                    return e[r][t]
                };
                this.buffered = {
                    get length() {
                        return e.length
                    },
                    end: function(r) {
                        return t("end", r, e.length)
                    },
                    start: function(r) {
                        return t("start", r, e.length)
                    }
                }
            };

        function Zs(e, t) {
            var r;
            try {
                r = new Event("addtrack")
            } catch (e) {
                (r = document.createEvent("Event")).initEvent("addtrack", !1, !1)
            }
            r.track = e, t.dispatchEvent(r)
        }

        function Js(e, t) {
            var r = e.mode;
            if ("disabled" === r && (e.mode = "hidden"), e.cues && !e.cues.getCueById(t.id)) try {
                if (e.addCue(t), !e.cues.getCueById(t.id)) throw new Error("addCue is failed for: " + t)
            } catch (r) {
                Y.debug("[texttrack-utils]: " + r);
                try {
                    var i = new self.TextTrackCue(t.startTime, t.endTime, t.text);
                    i.id = t.id, e.addCue(i)
                } catch (e) {
                    Y.debug("[texttrack-utils]: Legacy TextTrackCue fallback failed: " + e)
                }
            }
            "disabled" === r && (e.mode = r)
        }

        function eo(e, t) {
            var r = e.mode;
            if ("disabled" === r && (e.mode = "hidden"), e.cues)
                for (var i = e.cues.length; i--;) t && e.cues[i].removeEventListener("enter", t), e.removeCue(e.cues[i]);
            "disabled" === r && (e.mode = r)
        }

        function to(e, t, r, i) {
            var n = e.mode;
            if ("disabled" === n && (e.mode = "hidden"), e.cues && e.cues.length > 0)
                for (var a = function(e, t, r) {
                        var i = [],
                            n = function(e, t) {
                                if (t <= e[0].startTime) return 0;
                                var r = e.length - 1;
                                if (t > e[r].endTime) return -1;
                                for (var i, n = 0, a = r; n <= a;)
                                    if (t < e[i = Math.floor((a + n) / 2)].startTime) a = i - 1;
                                    else {
                                        if (!(t > e[i].startTime && n < r)) return i;
                                        n = i + 1
                                    }
                                return e[n].startTime - t < t - e[a].startTime ? n : a
                            }(e, t);
                        if (n > -1)
                            for (var a = n, s = e.length; a < s; a++) {
                                var o = e[a];
                                if (o.startTime >= t && o.endTime <= r) i.push(o);
                                else if (o.startTime > r) return i
                            }
                        return i
                    }(e.cues, t, r), s = 0; s < a.length; s++) i && !i(a[s]) || e.removeCue(a[s]);
            "disabled" === n && (e.mode = n)
        }

        function ro(e) {
            for (var t = [], r = 0; r < e.length; r++) {
                var i = e[r];
                "subtitles" !== i.kind && "captions" !== i.kind || !i.label || t.push(e[r])
            }
            return t
        }
        var io = function(e) {
                function t(t) {
                    var r;
                    return (r = e.call(this, t, "subtitle-track-controller") || this).media = null, r.tracks = [], r.groupIds = null, r.tracksInGroup = [], r.trackId = -1, r.currentTrack = null, r.selectDefaultTrack = !0, r.queuedDefaultTrack = -1, r.useTextTrackPolling = !1, r.subtitlePollingInterval = -1, r._subtitleDisplay = !0, r.asyncPollTrackChange = function() {
                        return r.pollTrackChange(0)
                    }, r.onTextTracksChanged = function() {
                        if (r.useTextTrackPolling || self.clearInterval(r.subtitlePollingInterval), r.media && r.hls.config.renderTextTracksNatively) {
                            for (var e = null, t = ro(r.media.textTracks), i = 0; i < t.length; i++)
                                if ("hidden" === t[i].mode) e = t[i];
                                else if ("showing" === t[i].mode) {
                                e = t[i];
                                break
                            }
                            var n = r.findTrackForTextTrack(e);
                            r.subtitleTrack !== n && r.setSubtitleTrack(n)
                        }
                    }, r.registerListeners(), r
                }
                o(t, e);
                var r = t.prototype;
                return r.destroy = function() {
                    this.unregisterListeners(), this.tracks.length = 0, this.tracksInGroup.length = 0, this.currentTrack = null, this.onTextTracksChanged = this.asyncPollTrackChange = null, e.prototype.destroy.call(this)
                }, r.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.MANIFEST_PARSED, this.onManifestParsed, this), e.on(b.LEVEL_LOADING, this.onLevelLoading, this), e.on(b.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(b.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.on(b.ERROR, this.onError, this)
                }, r.unregisterListeners = function() {
                    var e = this.hls;
                    e.off(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.MANIFEST_PARSED, this.onManifestParsed, this), e.off(b.LEVEL_LOADING, this.onLevelLoading, this), e.off(b.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(b.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.off(b.ERROR, this.onError, this)
                }, r.onMediaAttached = function(e, t) {
                    this.media = t.media, this.media && (this.queuedDefaultTrack > -1 && (this.subtitleTrack = this.queuedDefaultTrack, this.queuedDefaultTrack = -1), this.useTextTrackPolling = !(this.media.textTracks && "onchange" in this.media.textTracks), this.useTextTrackPolling ? this.pollTrackChange(500) : this.media.textTracks.addEventListener("change", this.asyncPollTrackChange))
                }, r.pollTrackChange = function(e) {
                    self.clearInterval(this.subtitlePollingInterval), this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, e)
                }, r.onMediaDetaching = function(e, t) {
                    var r = this.media;
                    if (r) {
                        var i = !!t.transferMedia;
                        self.clearInterval(this.subtitlePollingInterval), this.useTextTrackPolling || r.textTracks.removeEventListener("change", this.asyncPollTrackChange), this.trackId > -1 && (this.queuedDefaultTrack = this.trackId), this.subtitleTrack = -1, this.media = null, i || ro(r.textTracks).forEach((function(e) {
                            eo(e)
                        }))
                    }
                }, r.onManifestLoading = function() {
                    this.tracks = [], this.groupIds = null, this.tracksInGroup = [], this.trackId = -1, this.currentTrack = null, this.selectDefaultTrack = !0
                }, r.onManifestParsed = function(e, t) {
                    this.tracks = t.subtitleTracks
                }, r.onSubtitleTrackLoaded = function(e, t) {
                    var r = t.id,
                        i = t.groupId,
                        n = t.details,
                        a = this.tracksInGroup[r];
                    if (a && a.groupId === i) {
                        var s = a.details;
                        a.details = t.details, this.log("Subtitle track " + r + ' "' + a.name + '" lang:' + a.lang + " group:" + i + " loaded [" + n.startSN + "-" + n.endSN + "]"), r === this.trackId && this.playlistLoaded(r, t, s)
                    } else this.warn("Subtitle track with id:" + r + " and group:" + i + " not found in active group " + (null == a ? void 0 : a.groupId))
                }, r.onLevelLoading = function(e, t) {
                    this.switchLevel(t.level)
                }, r.onLevelSwitching = function(e, t) {
                    this.switchLevel(t.level)
                }, r.switchLevel = function(e) {
                    var t = this.hls.levels[e];
                    if (t) {
                        var r = t.subtitleGroups || null,
                            i = this.groupIds,
                            n = this.currentTrack;
                        if (!r || (null == i ? void 0 : i.length) !== (null == r ? void 0 : r.length) || null != r && r.some((function(e) {
                                return -1 === (null == i ? void 0 : i.indexOf(e))
                            }))) {
                            this.groupIds = r, this.trackId = -1, this.currentTrack = null;
                            var a = this.tracks.filter((function(e) {
                                return !r || -1 !== r.indexOf(e.groupId)
                            }));
                            if (a.length) this.selectDefaultTrack && !a.some((function(e) {
                                return e.default
                            })) && (this.selectDefaultTrack = !1), a.forEach((function(e, t) {
                                e.id = t
                            }));
                            else if (!n && !this.tracksInGroup.length) return;
                            this.tracksInGroup = a;
                            var s = this.hls.config.subtitlePreference;
                            if (!n && s) {
                                this.selectDefaultTrack = !1;
                                var o = ht(s, a);
                                if (o > -1) n = a[o];
                                else {
                                    var l = ht(s, this.tracks);
                                    n = this.tracks[l]
                                }
                            }
                            var u = this.findTrackId(n); - 1 === u && n && (u = this.findTrackId(null));
                            var d = {
                                subtitleTracks: a
                            };
                            this.log("Updating subtitle tracks, " + a.length + ' track(s) found in "' + (null == r ? void 0 : r.join(",")) + '" group-id'), this.hls.trigger(b.SUBTITLE_TRACKS_UPDATED, d), -1 !== u && -1 === this.trackId && this.setSubtitleTrack(u)
                        }
                    }
                }, r.findTrackId = function(e) {
                    for (var t = this.tracksInGroup, r = this.selectDefaultTrack, i = 0; i < t.length; i++) {
                        var n = t[i];
                        if ((!r || n.default) && (r || e) && (!e || ft(n, e))) return i
                    }
                    if (e) {
                        for (var a = 0; a < t.length; a++) {
                            var s = t[a];
                            if (fa(e.attrs, s.attrs, ["LANGUAGE", "ASSOC-LANGUAGE", "CHARACTERISTICS"])) return a
                        }
                        for (var o = 0; o < t.length; o++) {
                            var l = t[o];
                            if (fa(e.attrs, l.attrs, ["LANGUAGE"])) return o
                        }
                    }
                    return -1
                }, r.findTrackForTextTrack = function(e) {
                    if (e)
                        for (var t = this.tracksInGroup, r = 0; r < t.length; r++)
                            if (ca(t[r], e)) return r;
                    return -1
                }, r.onError = function(e, t) {
                    !t.fatal && t.context && (t.context.type !== C || t.context.id !== this.trackId || this.groupIds && -1 === this.groupIds.indexOf(t.context.groupId) || this.checkRetry(t))
                }, r.setSubtitleOption = function(e) {
                    if (this.hls.config.subtitlePreference = e, e) {
                        if (-1 === e.id) return this.setSubtitleTrack(-1), null;
                        var t = this.allSubtitleTracks;
                        if (this.selectDefaultTrack = !1, t.length) {
                            var r = this.currentTrack;
                            if (r && ft(e, r)) return r;
                            var i = ht(e, this.tracksInGroup);
                            if (i > -1) {
                                var n = this.tracksInGroup[i];
                                return this.setSubtitleTrack(i), n
                            }
                            if (r) return null;
                            var a = ht(e, t);
                            if (a > -1) return t[a]
                        }
                    }
                    return null
                }, r.loadPlaylist = function(t) {
                    e.prototype.loadPlaylist.call(this), this.shouldLoadPlaylist(this.currentTrack) && this.scheduleLoading(this.currentTrack, t)
                }, r.loadingPlaylist = function(t, r) {
                    e.prototype.loadingPlaylist.call(this, t, r);
                    var i = t.id,
                        n = t.groupId,
                        a = this.getUrlWithDirectives(t.url, r),
                        s = t.details,
                        o = null == s ? void 0 : s.age;
                    this.log("Loading subtitle " + i + ' "' + t.name + '" lang:' + t.lang + " group:" + n + (void 0 !== (null == r ? void 0 : r.msn) ? " at sn " + r.msn + " part " + r.part : "") + (o && s.live ? " age " + o.toFixed(1) + (s.type && " " + s.type || "") : "") + " " + a), this.hls.trigger(b.SUBTITLE_TRACK_LOADING, {
                        url: a,
                        id: i,
                        groupId: n,
                        deliveryDirectives: r || null,
                        track: t
                    })
                }, r.toggleTrackModes = function() {
                    var e = this.media;
                    if (e) {
                        var t, r = ro(e.textTracks),
                            i = this.currentTrack;
                        if (i && ((t = r.filter((function(e) {
                                return ca(i, e)
                            }))[0]) || this.warn('Unable to find subtitle TextTrack with name "' + i.name + '" and language "' + i.lang + '"')), [].slice.call(r).forEach((function(e) {
                                "disabled" !== e.mode && e !== t && (e.mode = "disabled")
                            })), t) {
                            var n = this.subtitleDisplay ? "showing" : "hidden";
                            t.mode !== n && (t.mode = n)
                        }
                    }
                }, r.setSubtitleTrack = function(e) {
                    var t = this.tracksInGroup;
                    if (this.media)
                        if (e < -1 || e >= t.length || !A(e)) this.warn("Invalid subtitle track id: " + e);
                        else {
                            this.selectDefaultTrack = !1;
                            var r = this.currentTrack,
                                i = t[e] || null;
                            if (this.trackId = e, this.currentTrack = i, this.toggleTrackModes(), i) {
                                var n = !!i.details && !i.details.live;
                                if (e !== this.trackId || i !== r || !n) {
                                    this.log("Switching to subtitle-track " + e + (i ? ' "' + i.name + '" lang:' + i.lang + " group:" + i.groupId : ""));
                                    var a = i.id,
                                        s = i.groupId,
                                        o = void 0 === s ? "" : s,
                                        l = i.name,
                                        u = i.type,
                                        d = i.url;
                                    this.hls.trigger(b.SUBTITLE_TRACK_SWITCH, {
                                        id: a,
                                        groupId: o,
                                        name: l,
                                        type: u,
                                        url: d
                                    });
                                    var h = this.switchParams(i.url, null == r ? void 0 : r.details, i.details);
                                    this.loadPlaylist(h)
                                }
                            } else this.hls.trigger(b.SUBTITLE_TRACK_SWITCH, {
                                id: e
                            })
                        }
                    else this.queuedDefaultTrack = e
                }, i(t, [{
                    key: "subtitleDisplay",
                    get: function() {
                        return this._subtitleDisplay
                    },
                    set: function(e) {
                        this._subtitleDisplay = e, this.trackId > -1 && this.toggleTrackModes()
                    }
                }, {
                    key: "allSubtitleTracks",
                    get: function() {
                        return this.tracks
                    }
                }, {
                    key: "subtitleTracks",
                    get: function() {
                        return this.tracksInGroup
                    }
                }, {
                    key: "subtitleTrack",
                    get: function() {
                        return this.trackId
                    },
                    set: function(e) {
                        this.selectDefaultTrack = !1, this.setSubtitleTrack(e)
                    }
                }])
            }(da),
            no = {
                42: 225,
                92: 233,
                94: 237,
                95: 243,
                96: 250,
                123: 231,
                124: 247,
                125: 209,
                126: 241,
                127: 9608,
                128: 174,
                129: 176,
                130: 189,
                131: 191,
                132: 8482,
                133: 162,
                134: 163,
                135: 9834,
                136: 224,
                137: 32,
                138: 232,
                139: 226,
                140: 234,
                141: 238,
                142: 244,
                143: 251,
                144: 193,
                145: 201,
                146: 211,
                147: 218,
                148: 220,
                149: 252,
                150: 8216,
                151: 161,
                152: 42,
                153: 8217,
                154: 9473,
                155: 169,
                156: 8480,
                157: 8226,
                158: 8220,
                159: 8221,
                160: 192,
                161: 194,
                162: 199,
                163: 200,
                164: 202,
                165: 203,
                166: 235,
                167: 206,
                168: 207,
                169: 239,
                170: 212,
                171: 217,
                172: 249,
                173: 219,
                174: 171,
                175: 187,
                176: 195,
                177: 227,
                178: 205,
                179: 204,
                180: 236,
                181: 210,
                182: 242,
                183: 213,
                184: 245,
                185: 123,
                186: 125,
                187: 92,
                188: 94,
                189: 95,
                190: 124,
                191: 8764,
                192: 196,
                193: 228,
                194: 214,
                195: 246,
                196: 223,
                197: 165,
                198: 164,
                199: 9475,
                200: 197,
                201: 229,
                202: 216,
                203: 248,
                204: 9487,
                205: 9491,
                206: 9495,
                207: 9499
            },
            ao = function(e) {
                return String.fromCharCode(no[e] || e)
            },
            so = 15,
            oo = 100,
            lo = {
                17: 1,
                18: 3,
                21: 5,
                22: 7,
                23: 9,
                16: 11,
                19: 12,
                20: 14
            },
            uo = {
                17: 2,
                18: 4,
                21: 6,
                22: 8,
                23: 10,
                19: 13,
                20: 15
            },
            ho = {
                25: 1,
                26: 3,
                29: 5,
                30: 7,
                31: 9,
                24: 11,
                27: 12,
                28: 14
            },
            fo = {
                25: 2,
                26: 4,
                29: 6,
                30: 8,
                31: 10,
                27: 13,
                28: 15
            },
            co = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "black", "transparent"],
            go = function() {
                function e() {
                    this.time = null, this.verboseLevel = 0
                }
                return e.prototype.log = function(e, t) {
                    if (this.verboseLevel >= e) {
                        var r = "function" == typeof t ? t() : t;
                        Y.log(this.time + " [" + e + "] " + r)
                    }
                }, e
            }(),
            vo = function(e) {
                for (var t = [], r = 0; r < e.length; r++) t.push(e[r].toString(16));
                return t
            },
            mo = function() {
                function e() {
                    this.foreground = "white", this.underline = !1, this.italics = !1, this.background = "black", this.flash = !1
                }
                var t = e.prototype;
                return t.reset = function() {
                    this.foreground = "white", this.underline = !1, this.italics = !1, this.background = "black", this.flash = !1
                }, t.setStyles = function(e) {
                    for (var t = ["foreground", "underline", "italics", "background", "flash"], r = 0; r < t.length; r++) {
                        var i = t[r];
                        e.hasOwnProperty(i) && (this[i] = e[i])
                    }
                }, t.isDefault = function() {
                    return "white" === this.foreground && !this.underline && !this.italics && "black" === this.background && !this.flash
                }, t.equals = function(e) {
                    return this.foreground === e.foreground && this.underline === e.underline && this.italics === e.italics && this.background === e.background && this.flash === e.flash
                }, t.copy = function(e) {
                    this.foreground = e.foreground, this.underline = e.underline, this.italics = e.italics, this.background = e.background, this.flash = e.flash
                }, t.toString = function() {
                    return "color=" + this.foreground + ", underline=" + this.underline + ", italics=" + this.italics + ", background=" + this.background + ", flash=" + this.flash
                }, e
            }(),
            po = function() {
                function e() {
                    this.uchar = " ", this.penState = new mo
                }
                var t = e.prototype;
                return t.reset = function() {
                    this.uchar = " ", this.penState.reset()
                }, t.setChar = function(e, t) {
                    this.uchar = e, this.penState.copy(t)
                }, t.setPenState = function(e) {
                    this.penState.copy(e)
                }, t.equals = function(e) {
                    return this.uchar === e.uchar && this.penState.equals(e.penState)
                }, t.copy = function(e) {
                    this.uchar = e.uchar, this.penState.copy(e.penState)
                }, t.isEmpty = function() {
                    return " " === this.uchar && this.penState.isDefault()
                }, e
            }(),
            yo = function() {
                function e(e) {
                    this.chars = [], this.pos = 0, this.currPenState = new mo, this.cueStartTime = null, this.logger = void 0;
                    for (var t = 0; t < oo; t++) this.chars.push(new po);
                    this.logger = e
                }
                var t = e.prototype;
                return t.equals = function(e) {
                    for (var t = 0; t < oo; t++)
                        if (!this.chars[t].equals(e.chars[t])) return !1;
                    return !0
                }, t.copy = function(e) {
                    for (var t = 0; t < oo; t++) this.chars[t].copy(e.chars[t])
                }, t.isEmpty = function() {
                    for (var e = !0, t = 0; t < oo; t++)
                        if (!this.chars[t].isEmpty()) {
                            e = !1;
                            break
                        }
                    return e
                }, t.setCursor = function(e) {
                    this.pos !== e && (this.pos = e), this.pos < 0 ? (this.logger.log(3, "Negative cursor position " + this.pos), this.pos = 0) : this.pos > oo && (this.logger.log(3, "Too large cursor position " + this.pos), this.pos = oo)
                }, t.moveCursor = function(e) {
                    var t = this.pos + e;
                    if (e > 1)
                        for (var r = this.pos + 1; r < t + 1; r++) this.chars[r].setPenState(this.currPenState);
                    this.setCursor(t)
                }, t.backSpace = function() {
                    this.moveCursor(-1), this.chars[this.pos].setChar(" ", this.currPenState)
                }, t.insertChar = function(e) {
                    var t = this;
                    e >= 144 && this.backSpace();
                    var r = ao(e);
                    this.pos >= oo ? this.logger.log(0, (function() {
                        return "Cannot insert " + e.toString(16) + " (" + r + ") at position " + t.pos + ". Skipping it!"
                    })) : (this.chars[this.pos].setChar(r, this.currPenState), this.moveCursor(1))
                }, t.clearFromPos = function(e) {
                    var t;
                    for (t = e; t < oo; t++) this.chars[t].reset()
                }, t.clear = function() {
                    this.clearFromPos(0), this.pos = 0, this.currPenState.reset()
                }, t.clearToEndOfRow = function() {
                    this.clearFromPos(this.pos)
                }, t.getTextString = function() {
                    for (var e = [], t = !0, r = 0; r < oo; r++) {
                        var i = this.chars[r].uchar;
                        " " !== i && (t = !1), e.push(i)
                    }
                    return t ? "" : e.join("")
                }, t.setPenStyles = function(e) {
                    this.currPenState.setStyles(e), this.chars[this.pos].setPenState(this.currPenState)
                }, e
            }(),
            Eo = function() {
                function e(e) {
                    this.rows = [], this.currRow = 14, this.nrRollUpRows = null, this.lastOutputScreen = null, this.logger = void 0;
                    for (var t = 0; t < so; t++) this.rows.push(new yo(e));
                    this.logger = e
                }
                var t = e.prototype;
                return t.reset = function() {
                    for (var e = 0; e < so; e++) this.rows[e].clear();
                    this.currRow = 14
                }, t.equals = function(e) {
                    for (var t = !0, r = 0; r < so; r++)
                        if (!this.rows[r].equals(e.rows[r])) {
                            t = !1;
                            break
                        }
                    return t
                }, t.copy = function(e) {
                    for (var t = 0; t < so; t++) this.rows[t].copy(e.rows[t])
                }, t.isEmpty = function() {
                    for (var e = !0, t = 0; t < so; t++)
                        if (!this.rows[t].isEmpty()) {
                            e = !1;
                            break
                        }
                    return e
                }, t.backSpace = function() {
                    this.rows[this.currRow].backSpace()
                }, t.clearToEndOfRow = function() {
                    this.rows[this.currRow].clearToEndOfRow()
                }, t.insertChar = function(e) {
                    this.rows[this.currRow].insertChar(e)
                }, t.setPen = function(e) {
                    this.rows[this.currRow].setPenStyles(e)
                }, t.moveCursor = function(e) {
                    this.rows[this.currRow].moveCursor(e)
                }, t.setCursor = function(e) {
                    this.logger.log(2, "setCursor: " + e), this.rows[this.currRow].setCursor(e)
                }, t.setPAC = function(e) {
                    this.logger.log(2, (function() {
                        return "pacData = " + ot(e)
                    }));
                    var t = e.row - 1;
                    if (this.nrRollUpRows && t < this.nrRollUpRows - 1 && (t = this.nrRollUpRows - 1), this.nrRollUpRows && this.currRow !== t) {
                        for (var r = 0; r < so; r++) this.rows[r].clear();
                        var i = this.currRow + 1 - this.nrRollUpRows,
                            n = this.lastOutputScreen;
                        if (n) {
                            var a = n.rows[i].cueStartTime,
                                s = this.logger.time;
                            if (null !== a && null !== s && a < s)
                                for (var o = 0; o < this.nrRollUpRows; o++) this.rows[t - this.nrRollUpRows + o + 1].copy(n.rows[i + o])
                        }
                    }
                    this.currRow = t;
                    var l = this.rows[this.currRow];
                    if (null !== e.indent) {
                        var u = e.indent,
                            d = Math.max(u - 1, 0);
                        l.setCursor(e.indent), e.color = l.chars[d].penState.foreground
                    }
                    var h = {
                        foreground: e.color,
                        underline: e.underline,
                        italics: e.italics,
                        background: "black",
                        flash: !1
                    };
                    this.setPen(h)
                }, t.setBkgData = function(e) {
                    this.logger.log(2, (function() {
                        return "bkgData = " + ot(e)
                    })), this.backSpace(), this.setPen(e), this.insertChar(32)
                }, t.setRollUpRows = function(e) {
                    this.nrRollUpRows = e
                }, t.rollUp = function() {
                    var e = this;
                    if (null !== this.nrRollUpRows) {
                        this.logger.log(1, (function() {
                            return e.getDisplayText()
                        }));
                        var t = this.currRow + 1 - this.nrRollUpRows,
                            r = this.rows.splice(t, 1)[0];
                        r.clear(), this.rows.splice(this.currRow, 0, r), this.logger.log(2, "Rolling up")
                    } else this.logger.log(3, "roll_up but nrRollUpRows not set yet")
                }, t.getDisplayText = function(e) {
                    e = e || !1;
                    for (var t = [], r = "", i = -1, n = 0; n < so; n++) {
                        var a = this.rows[n].getTextString();
                        a && (i = n + 1, e ? t.push("Row " + i + ": '" + a + "'") : t.push(a.trim()))
                    }
                    return t.length > 0 && (r = e ? "[" + t.join(" | ") + "]" : t.join("\n")), r
                }, t.getTextAndFormat = function() {
                    return this.rows
                }, e
            }(),
            To = function() {
                function e(e, t, r) {
                    this.chNr = void 0, this.outputFilter = void 0, this.mode = void 0, this.verbose = void 0, this.displayedMemory = void 0, this.nonDisplayedMemory = void 0, this.lastOutputScreen = void 0, this.currRollUpRow = void 0, this.writeScreen = void 0, this.cueStartTime = void 0, this.logger = void 0, this.chNr = e, this.outputFilter = t, this.mode = null, this.verbose = 0, this.displayedMemory = new Eo(r), this.nonDisplayedMemory = new Eo(r), this.lastOutputScreen = new Eo(r), this.currRollUpRow = this.displayedMemory.rows[14], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null, this.logger = r
                }
                var t = e.prototype;
                return t.reset = function() {
                    this.mode = null, this.displayedMemory.reset(), this.nonDisplayedMemory.reset(), this.lastOutputScreen.reset(), this.outputFilter.reset(), this.currRollUpRow = this.displayedMemory.rows[14], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null
                }, t.getHandler = function() {
                    return this.outputFilter
                }, t.setHandler = function(e) {
                    this.outputFilter = e
                }, t.setPAC = function(e) {
                    this.writeScreen.setPAC(e)
                }, t.setBkgData = function(e) {
                    this.writeScreen.setBkgData(e)
                }, t.setMode = function(e) {
                    e !== this.mode && (this.mode = e, this.logger.log(2, (function() {
                        return "MODE=" + e
                    })), "MODE_POP-ON" === this.mode ? this.writeScreen = this.nonDisplayedMemory : (this.writeScreen = this.displayedMemory, this.writeScreen.reset()), "MODE_ROLL-UP" !== this.mode && (this.displayedMemory.nrRollUpRows = null, this.nonDisplayedMemory.nrRollUpRows = null), this.mode = e)
                }, t.insertChars = function(e) {
                    for (var t = this, r = 0; r < e.length; r++) this.writeScreen.insertChar(e[r]);
                    var i = this.writeScreen === this.displayedMemory ? "DISP" : "NON_DISP";
                    this.logger.log(2, (function() {
                        return i + ": " + t.writeScreen.getDisplayText(!0)
                    })), "MODE_PAINT-ON" !== this.mode && "MODE_ROLL-UP" !== this.mode || (this.logger.log(1, (function() {
                        return "DISPLAYED: " + t.displayedMemory.getDisplayText(!0)
                    })), this.outputDataUpdate())
                }, t.ccRCL = function() {
                    this.logger.log(2, "RCL - Resume Caption Loading"), this.setMode("MODE_POP-ON")
                }, t.ccBS = function() {
                    this.logger.log(2, "BS - BackSpace"), "MODE_TEXT" !== this.mode && (this.writeScreen.backSpace(), this.writeScreen === this.displayedMemory && this.outputDataUpdate())
                }, t.ccAOF = function() {}, t.ccAON = function() {}, t.ccDER = function() {
                    this.logger.log(2, "DER- Delete to End of Row"), this.writeScreen.clearToEndOfRow(), this.outputDataUpdate()
                }, t.ccRU = function(e) {
                    this.logger.log(2, "RU(" + e + ") - Roll Up"), this.writeScreen = this.displayedMemory, this.setMode("MODE_ROLL-UP"), this.writeScreen.setRollUpRows(e)
                }, t.ccFON = function() {
                    this.logger.log(2, "FON - Flash On"), this.writeScreen.setPen({
                        flash: !0
                    })
                }, t.ccRDC = function() {
                    this.logger.log(2, "RDC - Resume Direct Captioning"), this.setMode("MODE_PAINT-ON")
                }, t.ccTR = function() {
                    this.logger.log(2, "TR"), this.setMode("MODE_TEXT")
                }, t.ccRTD = function() {
                    this.logger.log(2, "RTD"), this.setMode("MODE_TEXT")
                }, t.ccEDM = function() {
                    this.logger.log(2, "EDM - Erase Displayed Memory"), this.displayedMemory.reset(), this.outputDataUpdate(!0)
                }, t.ccCR = function() {
                    this.logger.log(2, "CR - Carriage Return"), this.writeScreen.rollUp(), this.outputDataUpdate(!0)
                }, t.ccENM = function() {
                    this.logger.log(2, "ENM - Erase Non-displayed Memory"), this.nonDisplayedMemory.reset()
                }, t.ccEOC = function() {
                    var e = this;
                    if (this.logger.log(2, "EOC - End Of Caption"), "MODE_POP-ON" === this.mode) {
                        var t = this.displayedMemory;
                        this.displayedMemory = this.nonDisplayedMemory, this.nonDisplayedMemory = t, this.writeScreen = this.nonDisplayedMemory, this.logger.log(1, (function() {
                            return "DISP: " + e.displayedMemory.getDisplayText()
                        }))
                    }
                    this.outputDataUpdate(!0)
                }, t.ccTO = function(e) {
                    this.logger.log(2, "TO(" + e + ") - Tab Offset"), this.writeScreen.moveCursor(e)
                }, t.ccMIDROW = function(e) {
                    var t = {
                        flash: !1
                    };
                    if (t.underline = e % 2 == 1, t.italics = e >= 46, t.italics) t.foreground = "white";
                    else {
                        var r = Math.floor(e / 2) - 16;
                        t.foreground = ["white", "green", "blue", "cyan", "red", "yellow", "magenta"][r]
                    }
                    this.logger.log(2, "MIDROW: " + ot(t)), this.writeScreen.setPen(t)
                }, t.outputDataUpdate = function(e) {
                    void 0 === e && (e = !1);
                    var t = this.logger.time;
                    null !== t && this.outputFilter && (null !== this.cueStartTime || this.displayedMemory.isEmpty() ? this.displayedMemory.equals(this.lastOutputScreen) || (this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen), e && this.outputFilter.dispatchCue && this.outputFilter.dispatchCue(), this.cueStartTime = this.displayedMemory.isEmpty() ? null : t) : this.cueStartTime = t, this.lastOutputScreen.copy(this.displayedMemory))
                }, t.cueSplitAtTime = function(e) {
                    this.outputFilter && (this.displayedMemory.isEmpty() || (this.outputFilter.newCue && this.outputFilter.newCue(this.cueStartTime, e, this.displayedMemory), this.cueStartTime = e))
                }, e
            }(),
            So = function() {
                function e(e, t, r) {
                    this.channels = void 0, this.currentChannel = 0, this.cmdHistory = {
                        a: null,
                        b: null
                    }, this.logger = void 0;
                    var i = this.logger = new go;
                    this.channels = [null, new To(e, t, i), new To(e + 1, r, i)]
                }
                var t = e.prototype;
                return t.getHandler = function(e) {
                    return this.channels[e].getHandler()
                }, t.setHandler = function(e, t) {
                    this.channels[e].setHandler(t)
                }, t.addData = function(e, t) {
                    var r = this;
                    this.logger.time = e;
                    for (var i = function(e) {
                            var i = 127 & t[e],
                                n = 127 & t[e + 1],
                                a = !1,
                                s = null;
                            if (0 === i && 0 === n) return 0;
                            r.logger.log(3, (function() {
                                return "[" + vo([t[e], t[e + 1]]) + "] -> (" + vo([i, n]) + ")"
                            }));
                            var o = r.cmdHistory;
                            if (i >= 16 && i <= 31) {
                                if (function(e, t, r) {
                                        return r.a === e && r.b === t
                                    }(i, n, o)) return Ao(null, null, o), r.logger.log(3, (function() {
                                    return "Repeated command (" + vo([i, n]) + ") is dropped"
                                })), 0;
                                Ao(i, n, r.cmdHistory), (a = r.parseCmd(i, n)) || (a = r.parseMidrow(i, n)), a || (a = r.parsePAC(i, n)), a || (a = r.parseBackgroundAttributes(i, n))
                            } else Ao(null, null, o);
                            if (!a && (s = r.parseChars(i, n))) {
                                var l = r.currentChannel;
                                l && l > 0 ? r.channels[l].insertChars(s) : r.logger.log(2, "No channel found yet. TEXT-MODE?")
                            }
                            a || s || r.logger.log(2, (function() {
                                return "Couldn't parse cleaned data " + vo([i, n]) + " orig: " + vo([t[e], t[e + 1]])
                            }))
                        }, n = 0; n < t.length; n += 2) i(n)
                }, t.parseCmd = function(e, t) {
                    if (!((20 === e || 28 === e || 21 === e || 29 === e) && t >= 32 && t <= 47 || (23 === e || 31 === e) && t >= 33 && t <= 35)) return !1;
                    var r = 20 === e || 21 === e || 23 === e ? 1 : 2,
                        i = this.channels[r];
                    return 20 === e || 21 === e || 28 === e || 29 === e ? 32 === t ? i.ccRCL() : 33 === t ? i.ccBS() : 34 === t ? i.ccAOF() : 35 === t ? i.ccAON() : 36 === t ? i.ccDER() : 37 === t ? i.ccRU(2) : 38 === t ? i.ccRU(3) : 39 === t ? i.ccRU(4) : 40 === t ? i.ccFON() : 41 === t ? i.ccRDC() : 42 === t ? i.ccTR() : 43 === t ? i.ccRTD() : 44 === t ? i.ccEDM() : 45 === t ? i.ccCR() : 46 === t ? i.ccENM() : 47 === t && i.ccEOC() : i.ccTO(t - 32), this.currentChannel = r, !0
                }, t.parseMidrow = function(e, t) {
                    var r = 0;
                    if ((17 === e || 25 === e) && t >= 32 && t <= 47) {
                        if ((r = 17 === e ? 1 : 2) !== this.currentChannel) return this.logger.log(0, "Mismatch channel in midrow parsing"), !1;
                        var i = this.channels[r];
                        return !!i && (i.ccMIDROW(t), this.logger.log(3, (function() {
                            return "MIDROW (" + vo([e, t]) + ")"
                        })), !0)
                    }
                    return !1
                }, t.parsePAC = function(e, t) {
                    var r;
                    if (!((e >= 17 && e <= 23 || e >= 25 && e <= 31) && t >= 64 && t <= 127 || (16 === e || 24 === e) && t >= 64 && t <= 95)) return !1;
                    var i = e <= 23 ? 1 : 2;
                    r = t >= 64 && t <= 95 ? 1 === i ? lo[e] : ho[e] : 1 === i ? uo[e] : fo[e];
                    var n = this.channels[i];
                    return !!n && (n.setPAC(this.interpretPAC(r, t)), this.currentChannel = i, !0)
                }, t.interpretPAC = function(e, t) {
                    var r, i = {
                        color: null,
                        italics: !1,
                        indent: null,
                        underline: !1,
                        row: e
                    };
                    return r = t > 95 ? t - 96 : t - 64, i.underline = 1 == (1 & r), r <= 13 ? i.color = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "white"][Math.floor(r / 2)] : r <= 15 ? (i.italics = !0, i.color = "white") : i.indent = 4 * Math.floor((r - 16) / 2), i
                }, t.parseChars = function(e, t) {
                    var r, i, n = null,
                        a = null;
                    return e >= 25 ? (r = 2, a = e - 8) : (r = 1, a = e), a >= 17 && a <= 19 ? (i = 17 === a ? t + 80 : 18 === a ? t + 112 : t + 144, this.logger.log(2, (function() {
                        return "Special char '" + ao(i) + "' in channel " + r
                    })), n = [i]) : e >= 32 && e <= 127 && (n = 0 === t ? [e] : [e, t]), n && this.logger.log(3, (function() {
                        return "Char codes =  " + vo(n).join(",")
                    })), n
                }, t.parseBackgroundAttributes = function(e, t) {
                    var r;
                    if (!((16 === e || 24 === e) && t >= 32 && t <= 47 || (23 === e || 31 === e) && t >= 45 && t <= 47)) return !1;
                    var i = {};
                    16 === e || 24 === e ? (r = Math.floor((t - 32) / 2), i.background = co[r], t % 2 == 1 && (i.background = i.background + "_semi")) : 45 === t ? i.background = "transparent" : (i.foreground = "black", 47 === t && (i.underline = !0));
                    var n = e <= 23 ? 1 : 2;
                    return this.channels[n].setBkgData(i), !0
                }, t.reset = function() {
                    for (var e = 0; e < Object.keys(this.channels).length; e++) {
                        var t = this.channels[e];
                        t && t.reset()
                    }
                    Ao(null, null, this.cmdHistory)
                }, t.cueSplitAtTime = function(e) {
                    for (var t = 0; t < this.channels.length; t++) {
                        var r = this.channels[t];
                        r && r.cueSplitAtTime(e)
                    }
                }, e
            }();

        function Ao(e, t, r) {
            r.a = e, r.b = t
        }
        var Lo = function() {
                if (null != Ir && Ir.VTTCue) return self.VTTCue;
                var e = ["", "lr", "rl"],
                    t = ["start", "middle", "end", "left", "right"];

                function r(e, t) {
                    if ("string" != typeof t) return !1;
                    if (!Array.isArray(e)) return !1;
                    var r = t.toLowerCase();
                    return !!~e.indexOf(r) && r
                }

                function i(e) {
                    return r(t, e)
                }

                function n(e) {
                    for (var t = arguments.length, r = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++) r[i - 1] = arguments[i];
                    for (var n = 1; n < arguments.length; n++) {
                        var a = arguments[n];
                        for (var s in a) e[s] = a[s]
                    }
                    return e
                }

                function a(t, a, s) {
                    var o = this,
                        l = {
                            enumerable: !0
                        };
                    o.hasBeenReset = !1;
                    var u = "",
                        d = !1,
                        h = t,
                        f = a,
                        c = s,
                        g = null,
                        v = "",
                        m = !0,
                        p = "auto",
                        y = "start",
                        E = 50,
                        T = "middle",
                        S = 50,
                        A = "middle";
                    Object.defineProperty(o, "id", n({}, l, {
                        get: function() {
                            return u
                        },
                        set: function(e) {
                            u = "" + e
                        }
                    })), Object.defineProperty(o, "pauseOnExit", n({}, l, {
                        get: function() {
                            return d
                        },
                        set: function(e) {
                            d = !!e
                        }
                    })), Object.defineProperty(o, "startTime", n({}, l, {
                        get: function() {
                            return h
                        },
                        set: function(e) {
                            if ("number" != typeof e) throw new TypeError("Start time must be set to a number.");
                            h = e, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "endTime", n({}, l, {
                        get: function() {
                            return f
                        },
                        set: function(e) {
                            if ("number" != typeof e) throw new TypeError("End time must be set to a number.");
                            f = e, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "text", n({}, l, {
                        get: function() {
                            return c
                        },
                        set: function(e) {
                            c = "" + e, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "region", n({}, l, {
                        get: function() {
                            return g
                        },
                        set: function(e) {
                            g = e, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "vertical", n({}, l, {
                        get: function() {
                            return v
                        },
                        set: function(t) {
                            var i = function(t) {
                                return r(e, t)
                            }(t);
                            if (!1 === i) throw new SyntaxError("An invalid or illegal string was specified.");
                            v = i, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "snapToLines", n({}, l, {
                        get: function() {
                            return m
                        },
                        set: function(e) {
                            m = !!e, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "line", n({}, l, {
                        get: function() {
                            return p
                        },
                        set: function(e) {
                            if ("number" != typeof e && "auto" !== e) throw new SyntaxError("An invalid number or illegal string was specified.");
                            p = e, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "lineAlign", n({}, l, {
                        get: function() {
                            return y
                        },
                        set: function(e) {
                            var t = i(e);
                            if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
                            y = t, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "position", n({}, l, {
                        get: function() {
                            return E
                        },
                        set: function(e) {
                            if (e < 0 || e > 100) throw new Error("Position must be between 0 and 100.");
                            E = e, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "positionAlign", n({}, l, {
                        get: function() {
                            return T
                        },
                        set: function(e) {
                            var t = i(e);
                            if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
                            T = t, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "size", n({}, l, {
                        get: function() {
                            return S
                        },
                        set: function(e) {
                            if (e < 0 || e > 100) throw new Error("Size must be between 0 and 100.");
                            S = e, this.hasBeenReset = !0
                        }
                    })), Object.defineProperty(o, "align", n({}, l, {
                        get: function() {
                            return A
                        },
                        set: function(e) {
                            var t = i(e);
                            if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
                            A = t, this.hasBeenReset = !0
                        }
                    })), o.displayState = void 0
                }
                return a.prototype.getCueAsHTML = function() {
                    return self.WebVTT.convertCueToDOMTree(self, this.text)
                }, a
            }(),
            Ro = function() {
                function e() {}
                return e.prototype.decode = function(e, t) {
                    if (!e) return "";
                    if ("string" != typeof e) throw new Error("Error - expected string data.");
                    return decodeURIComponent(encodeURIComponent(e))
                }, e
            }();

        function Io(e) {
            function t(e, t, r, i) {
                return 3600 * (0 | e) + 60 * (0 | t) + (0 | r) + parseFloat(i || 0)
            }
            var r = e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);
            return r ? parseFloat(r[2]) > 59 ? t(r[2], r[3], 0, r[4]) : t(r[1], r[2], r[3], r[4]) : null
        }
        var ko = function() {
            function e() {
                this.values = Object.create(null)
            }
            var t = e.prototype;
            return t.set = function(e, t) {
                this.get(e) || "" === t || (this.values[e] = t)
            }, t.get = function(e, t, r) {
                return r ? this.has(e) ? this.values[e] : t[r] : this.has(e) ? this.values[e] : t
            }, t.has = function(e) {
                return e in this.values
            }, t.alt = function(e, t, r) {
                for (var i = 0; i < r.length; ++i)
                    if (t === r[i]) {
                        this.set(e, t);
                        break
                    }
            }, t.integer = function(e, t) {
                /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10))
            }, t.percent = function(e, t) {
                if (/^([\d]{1,3})(\.[\d]*)?%$/.test(t)) {
                    var r = parseFloat(t);
                    if (r >= 0 && r <= 100) return this.set(e, r), !0
                }
                return !1
            }, e
        }();

        function bo(e, t, r, i) {
            var n = i ? e.split(i) : [e];
            for (var a in n)
                if ("string" == typeof n[a]) {
                    var s = n[a].split(r);
                    2 === s.length && t(s[0], s[1])
                }
        }
        var Do = new Lo(0, 0, ""),
            _o = "middle" === Do.align ? "middle" : "center";

        function Po(e, t, r) {
            var i = e;

            function n() {
                var t = Io(e);
                if (null === t) throw new Error("Malformed timestamp: " + i);
                return e = e.replace(/^[^\sa-zA-Z-]+/, ""), t
            }

            function a() {
                e = e.replace(/^\s+/, "")
            }
            if (a(), t.startTime = n(), a(), "--\x3e" !== e.slice(0, 3)) throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): " + i);
            e = e.slice(3), a(), t.endTime = n(), a(),
                function(e, t) {
                    var i = new ko;
                    bo(e, (function(e, t) {
                        var n;
                        switch (e) {
                            case "region":
                                for (var a = r.length - 1; a >= 0; a--)
                                    if (r[a].id === t) {
                                        i.set(e, r[a].region);
                                        break
                                    }
                                break;
                            case "vertical":
                                i.alt(e, t, ["rl", "lr"]);
                                break;
                            case "line":
                                n = t.split(","), i.integer(e, n[0]), i.percent(e, n[0]) && i.set("snapToLines", !1), i.alt(e, n[0], ["auto"]), 2 === n.length && i.alt("lineAlign", n[1], ["start", _o, "end"]);
                                break;
                            case "position":
                                n = t.split(","), i.percent(e, n[0]), 2 === n.length && i.alt("positionAlign", n[1], ["start", _o, "end", "line-left", "line-right", "auto"]);
                                break;
                            case "size":
                                i.percent(e, t);
                                break;
                            case "align":
                                i.alt(e, t, ["start", _o, "end", "left", "right"])
                        }
                    }), /:/, /\s/), t.region = i.get("region", null), t.vertical = i.get("vertical", "");
                    var n = i.get("line", "auto");
                    "auto" === n && -1 === Do.line && (n = -1), t.line = n, t.lineAlign = i.get("lineAlign", "start"), t.snapToLines = i.get("snapToLines", !0), t.size = i.get("size", 100), t.align = i.get("align", _o);
                    var a = i.get("position", "auto");
                    "auto" === a && 50 === Do.position && (a = "start" === t.align || "left" === t.align ? 0 : "end" === t.align || "right" === t.align ? 100 : 50), t.position = a
                }(e, t)
        }

        function Co(e) {
            return e.replace(/<br(?: \/)?>/gi, "\n")
        }
        var wo = function() {
                function e() {
                    this.state = "INITIAL", this.buffer = "", this.decoder = new Ro, this.regionList = [], this.cue = null, this.oncue = void 0, this.onparsingerror = void 0, this.onflush = void 0
                }
                var t = e.prototype;
                return t.parse = function(e) {
                    var t = this;

                    function r() {
                        var e = t.buffer,
                            r = 0;
                        for (e = Co(e); r < e.length && "\r" !== e[r] && "\n" !== e[r];) ++r;
                        var i = e.slice(0, r);
                        return "\r" === e[r] && ++r, "\n" === e[r] && ++r, t.buffer = e.slice(r), i
                    }
                    e && (t.buffer += t.decoder.decode(e, {
                        stream: !0
                    }));
                    try {
                        var i = "";
                        if ("INITIAL" === t.state) {
                            if (!/\r\n|\n/.test(t.buffer)) return this;
                            var n = (i = r()).match(/^(ï»¿)?WEBVTT([ \t].*)?$/);
                            if (null == n || !n[0]) throw new Error("Malformed WebVTT signature.");
                            t.state = "HEADER"
                        }
                        for (var a = !1; t.buffer;) {
                            if (!/\r\n|\n/.test(t.buffer)) return this;
                            switch (a ? a = !1 : i = r(), t.state) {
                                case "HEADER":
                                    /:/.test(i) ? bo(i, (function(e, t) {}), /:/) : i || (t.state = "ID");
                                    continue;
                                case "NOTE":
                                    i || (t.state = "ID");
                                    continue;
                                case "ID":
                                    if (/^NOTE($|[ \t])/.test(i)) {
                                        t.state = "NOTE";
                                        break
                                    }
                                    if (!i) continue;
                                    if (t.cue = new Lo(0, 0, ""), t.state = "CUE", -1 === i.indexOf("--\x3e")) {
                                        t.cue.id = i;
                                        continue
                                    }
                                case "CUE":
                                    if (!t.cue) {
                                        t.state = "BADCUE";
                                        continue
                                    }
                                    try {
                                        Po(i, t.cue, t.regionList)
                                    } catch (e) {
                                        t.cue = null, t.state = "BADCUE";
                                        continue
                                    }
                                    t.state = "CUETEXT";
                                    continue;
                                case "CUETEXT":
                                    var s = -1 !== i.indexOf("--\x3e");
                                    if (!i || s && (a = !0)) {
                                        t.oncue && t.cue && t.oncue(t.cue), t.cue = null, t.state = "ID";
                                        continue
                                    }
                                    if (null === t.cue) continue;
                                    t.cue.text && (t.cue.text += "\n"), t.cue.text += i;
                                    continue;
                                case "BADCUE":
                                    i || (t.state = "ID")
                            }
                        }
                    } catch (e) {
                        "CUETEXT" === t.state && t.cue && t.oncue && t.oncue(t.cue), t.cue = null, t.state = "INITIAL" === t.state ? "BADWEBVTT" : "BADCUE"
                    }
                    return this
                }, t.flush = function() {
                    var e = this;
                    try {
                        if ((e.cue || "HEADER" === e.state) && (e.buffer += "\n\n", e.parse()), "INITIAL" === e.state || "BADWEBVTT" === e.state) throw new Error("Malformed WebVTT signature.")
                    } catch (t) {
                        e.onparsingerror && e.onparsingerror(t)
                    }
                    return e.onflush && e.onflush(), this
                }, e
            }(),
            Oo = /\r\n|\n\r|\n|\r/g,
            xo = function(e, t, r) {
                return void 0 === r && (r = 0), e.slice(r, r + t.length) === t
            };

        function Mo(e, t, r) {
            return xs(e.toString()) + xs(t.toString()) + xs(r)
        }

        function Fo(e, t, r, i, n, a, s) {
            var o, l, u, d = new wo,
                h = q(new Uint8Array(e)).trim().replace(Oo, "\n").split("\n"),
                f = [],
                c = t ? (o = t.baseTime, void 0 === (l = t.timescale) && (l = 1), Mn(o, xn, 1 / l)) : 0,
                g = "00:00.000",
                v = 0,
                m = 0,
                p = !0;
            d.oncue = function(e) {
                var a = r[i],
                    s = r.ccOffset,
                    o = (v - c) / 9e4;
                if (null != a && a.new && (void 0 !== m ? s = r.ccOffset = a.start : function(e, t, r) {
                        var i = e[t],
                            n = e[i.prevCC];
                        if (!n || !n.new && i.new) return e.ccOffset = e.presentationOffset = i.start, void(i.new = !1);
                        for (; null != (a = n) && a.new;) {
                            var a;
                            e.ccOffset += i.start - n.start, i.new = !1, n = e[(i = n).prevCC]
                        }
                        e.presentationOffset = r
                    }(r, i, o)), o) {
                    if (!t) return void(u = new Error("Missing initPTS for VTT MPEGTS"));
                    s = o - r.presentationOffset
                }
                var l = e.endTime - e.startTime,
                    d = Kn(9e4 * (e.startTime + s - m), 9e4 * n) / 9e4;
                e.startTime = Math.max(d, 0), e.endTime = Math.max(d + l, 0);
                var h = e.text.trim();
                e.text = decodeURIComponent(encodeURIComponent(h)), e.id || (e.id = Mo(e.startTime, e.endTime, h)), e.endTime > 0 && f.push(e)
            }, d.onparsingerror = function(e) {
                u = e
            }, d.onflush = function() {
                u ? s(u) : a(f)
            }, h.forEach((function(e) {
                if (p) {
                    if (xo(e, "X-TIMESTAMP-MAP=")) {
                        p = !1, e.slice(16).split(",").forEach((function(e) {
                            xo(e, "LOCAL:") ? g = e.slice(6) : xo(e, "MPEGTS:") && (v = parseInt(e.slice(7)))
                        }));
                        try {
                            m = function(e) {
                                var t = parseInt(e.slice(-3)),
                                    r = parseInt(e.slice(-6, -4)),
                                    i = parseInt(e.slice(-9, -7)),
                                    n = e.length > 9 ? parseInt(e.substring(0, e.indexOf(":"))) : 0;
                                if (!(A(t) && A(r) && A(i) && A(n))) throw Error("Malformed X-TIMESTAMP-MAP: Local:" + e);
                                return t += 1e3 * r, (t += 6e4 * i) + 36e5 * n
                            }(g) / 1e3
                        } catch (e) {
                            u = e
                        }
                        return
                    }
                    "" === e && (p = !1)
                }
                d.parse(e + "\n")
            })), d.flush()
        }
        var No = "stpp.ttml.im1t",
            Uo = /^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,
            Bo = /^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,
            Go = {
                left: "start",
                center: "center",
                right: "end",
                start: "start",
                end: "end"
            };

        function Ko(e, t, r, i) {
            var n = ce(new Uint8Array(e), ["mdat"]);
            if (0 !== n.length) {
                var s, o, l, u, d = n.map((function(e) {
                        return q(e)
                    })),
                    h = (s = t.baseTime, o = 1, void 0 === (l = t.timescale) && (l = 1), void 0 === u && (u = !1), Mn(s, o, 1 / l, u));
                try {
                    d.forEach((function(e) {
                        return r(function(e, t) {
                            var r = (new DOMParser).parseFromString(e, "text/xml"),
                                i = r.getElementsByTagName("tt")[0];
                            if (!i) throw new Error("Invalid ttml");
                            var n = {
                                    frameRate: 30,
                                    subFrameRate: 1,
                                    frameRateMultiplier: 0,
                                    tickRate: 0
                                },
                                s = Object.keys(n).reduce((function(e, t) {
                                    return e[t] = i.getAttribute("ttp:" + t) || n[t], e
                                }), {}),
                                o = "preserve" !== i.getAttribute("xml:space"),
                                l = Ho(Vo(i, "styling", "style")),
                                u = Ho(Vo(i, "layout", "region")),
                                d = Vo(i, "body", "[begin]");
                            return [].map.call(d, (function(e) {
                                var r = Yo(e, o);
                                if (!r || !e.hasAttribute("begin")) return null;
                                var i = qo(e.getAttribute("begin"), s),
                                    n = qo(e.getAttribute("dur"), s),
                                    d = qo(e.getAttribute("end"), s);
                                if (null === i) throw jo(e);
                                if (null === d) {
                                    if (null === n) throw jo(e);
                                    d = i + n
                                }
                                var h = new Lo(i - t, d - t, r);
                                h.id = Mo(h.startTime, h.endTime, h.text);
                                var f = function(e, t, r) {
                                        var i = "http://www.w3.org/ns/ttml#styling",
                                            n = null,
                                            a = ["displayAlign", "textAlign", "color", "backgroundColor", "fontSize", "fontFamily"],
                                            s = null != e && e.hasAttribute("style") ? e.getAttribute("style") : null;
                                        return s && r.hasOwnProperty(s) && (n = r[s]), a.reduce((function(r, a) {
                                            var s = Wo(t, i, a) || Wo(e, i, a) || Wo(n, i, a);
                                            return s && (r[a] = s), r
                                        }), {})
                                    }(u[e.getAttribute("region")], l[e.getAttribute("style")], l),
                                    c = f.textAlign;
                                if (c) {
                                    var g = Go[c];
                                    g && (h.lineAlign = g), h.align = c
                                }
                                return a(h, f), h
                            })).filter((function(e) {
                                return null !== e
                            }))
                        }(e, h))
                    }))
                } catch (e) {
                    i(e)
                }
            } else i(new Error("Could not parse IMSC1 mdat"))
        }

        function Vo(e, t, r) {
            var i = e.getElementsByTagName(t)[0];
            return i ? [].slice.call(i.querySelectorAll(r)) : []
        }

        function Ho(e) {
            return e.reduce((function(e, t) {
                var r = t.getAttribute("xml:id");
                return r && (e[r] = t), e
            }), {})
        }

        function Yo(e, t) {
            return [].slice.call(e.childNodes).reduce((function(e, r, i) {
                var n;
                return "br" === r.nodeName && i ? e + "\n" : null != (n = r.childNodes) && n.length ? Yo(r, t) : t ? e + r.textContent.trim().replace(/\s+/g, " ") : e + r.textContent
            }), "")
        }

        function Wo(e, t, r) {
            return e && e.hasAttributeNS(t, r) ? e.getAttributeNS(t, r) : null
        }

        function jo(e) {
            return new Error("Could not parse ttml timestamp " + e)
        }

        function qo(e, t) {
            if (!e) return null;
            var r = Io(e);
            return null === r && (Uo.test(e) ? r = function(e, t) {
                var r = Uo.exec(e),
                    i = (0 | r[4]) + (0 | r[5]) / t.subFrameRate;
                return 3600 * (0 | r[1]) + 60 * (0 | r[2]) + (0 | r[3]) + i / t.frameRate
            }(e, t) : Bo.test(e) && (r = function(e, t) {
                var r = Bo.exec(e),
                    i = Number(r[1]);
                switch (r[2]) {
                    case "h":
                        return 3600 * i;
                    case "m":
                        return 60 * i;
                    case "ms":
                        return 1e3 * i;
                    case "f":
                        return i / t.frameRate;
                    case "t":
                        return i / t.tickRate
                }
                return i
            }(e, t))), r
        }
        var Xo = function() {
                function e(e, t) {
                    this.timelineController = void 0, this.cueRanges = [], this.trackName = void 0, this.startTime = null, this.endTime = null, this.screen = null, this.timelineController = e, this.trackName = t
                }
                var t = e.prototype;
                return t.dispatchCue = function() {
                    null !== this.startTime && (this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges), this.startTime = null)
                }, t.newCue = function(e, t, r) {
                    (null === this.startTime || this.startTime > e) && (this.startTime = e), this.endTime = t, this.screen = r, this.timelineController.createCaptionsTrack(this.trackName)
                }, t.reset = function() {
                    this.cueRanges = [], this.startTime = null
                }, e
            }(),
            Qo = function() {
                function e(e) {
                    this.hls = void 0, this.media = null, this.config = void 0, this.enabled = !0, this.Cues = void 0, this.textTracks = [], this.tracks = [], this.initPTS = [], this.unparsedVttFrags = [], this.captionsTracks = {}, this.nonNativeCaptionsTracks = {}, this.cea608Parser1 = void 0, this.cea608Parser2 = void 0, this.lastCc = -1, this.lastSn = -1, this.lastPartIndex = -1, this.prevCC = -1, this.vttCCs = {
                        ccOffset: 0,
                        presentationOffset: 0,
                        0: {
                            start: 0,
                            prevCC: -1,
                            new: !0
                        }
                    }, this.captionsProperties = void 0, this.hls = e, this.config = e.config, this.Cues = e.config.cueHandler, this.captionsProperties = {
                        textTrack1: {
                            label: this.config.captionsTextTrack1Label,
                            languageCode: this.config.captionsTextTrack1LanguageCode
                        },
                        textTrack2: {
                            label: this.config.captionsTextTrack2Label,
                            languageCode: this.config.captionsTextTrack2LanguageCode
                        },
                        textTrack3: {
                            label: this.config.captionsTextTrack3Label,
                            languageCode: this.config.captionsTextTrack3LanguageCode
                        },
                        textTrack4: {
                            label: this.config.captionsTextTrack4Label,
                            languageCode: this.config.captionsTextTrack4LanguageCode
                        }
                    }, e.on(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(b.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.on(b.FRAG_LOADING, this.onFragLoading, this), e.on(b.FRAG_LOADED, this.onFragLoaded, this), e.on(b.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this), e.on(b.FRAG_DECRYPTED, this.onFragDecrypted, this), e.on(b.INIT_PTS_FOUND, this.onInitPtsFound, this), e.on(b.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this), e.on(b.BUFFER_FLUSHING, this.onBufferFlushing, this)
                }
                var t = e.prototype;
                return t.destroy = function() {
                    var e = this.hls;
                    e.off(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(b.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.off(b.FRAG_LOADING, this.onFragLoading, this), e.off(b.FRAG_LOADED, this.onFragLoaded, this), e.off(b.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this), e.off(b.FRAG_DECRYPTED, this.onFragDecrypted, this), e.off(b.INIT_PTS_FOUND, this.onInitPtsFound, this), e.off(b.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this), e.off(b.BUFFER_FLUSHING, this.onBufferFlushing, this), this.hls = this.config = this.media = null, this.cea608Parser1 = this.cea608Parser2 = void 0
                }, t.initCea608Parsers = function() {
                    var e = new Xo(this, "textTrack1"),
                        t = new Xo(this, "textTrack2"),
                        r = new Xo(this, "textTrack3"),
                        i = new Xo(this, "textTrack4");
                    this.cea608Parser1 = new So(1, e, t), this.cea608Parser2 = new So(3, r, i)
                }, t.addCues = function(e, t, r, i, n) {
                    for (var a, s, o, l, u = !1, d = n.length; d--;) {
                        var h = n[d],
                            f = (a = h[0], s = h[1], o = t, l = r, Math.min(s, l) - Math.max(a, o));
                        if (f >= 0 && (h[0] = Math.min(h[0], t), h[1] = Math.max(h[1], r), u = !0, f / (r - t) > .5)) return
                    }
                    if (u || n.push([t, r]), this.config.renderTextTracksNatively) {
                        var c = this.captionsTracks[e];
                        this.Cues.newCue(c, t, r, i)
                    } else {
                        var g = this.Cues.newCue(null, t, r, i);
                        this.hls.trigger(b.CUES_PARSED, {
                            type: "captions",
                            cues: g,
                            track: e
                        })
                    }
                }, t.onInitPtsFound = function(e, t) {
                    var r = this,
                        i = t.frag,
                        n = t.id,
                        a = t.initPTS,
                        s = t.timescale,
                        o = t.trackId,
                        l = this.unparsedVttFrags;
                    n === w && (this.initPTS[i.cc] = {
                        baseTime: a,
                        timescale: s,
                        trackId: o
                    }), l.length && (this.unparsedVttFrags = [], l.forEach((function(e) {
                        r.initPTS[e.frag.cc] ? r.onFragLoaded(b.FRAG_LOADED, e) : r.hls.trigger(b.SUBTITLE_FRAG_PROCESSED, {
                            success: !1,
                            frag: e.frag,
                            error: new Error("Subtitle discontinuity domain does not match main")
                        })
                    })))
                }, t.getExistingTrack = function(e, t) {
                    var r = this.media;
                    if (r)
                        for (var i = 0; i < r.textTracks.length; i++) {
                            var n = r.textTracks[i];
                            if ($o(n, {
                                    name: e,
                                    lang: t,
                                    characteristics: "transcribes-spoken-dialog,describes-music-and-sound"
                                })) return n
                        }
                    return null
                }, t.createCaptionsTrack = function(e) {
                    this.config.renderTextTracksNatively ? this.createNativeTrack(e) : this.createNonNativeTrack(e)
                }, t.createNativeTrack = function(e) {
                    if (!this.captionsTracks[e]) {
                        var t = this.captionsProperties,
                            r = this.captionsTracks,
                            i = this.media,
                            n = t[e],
                            a = n.label,
                            s = n.languageCode,
                            o = this.getExistingTrack(a, s);
                        if (o) r[e] = o, eo(r[e]), Zs(r[e], i);
                        else {
                            var l = this.createTextTrack("captions", a, s);
                            l && (l[e] = !0, r[e] = l)
                        }
                    }
                }, t.createNonNativeTrack = function(e) {
                    if (!this.nonNativeCaptionsTracks[e]) {
                        var t = this.captionsProperties[e];
                        if (t) {
                            var r = {
                                _id: e,
                                label: t.label,
                                kind: "captions",
                                default: !!t.media && !!t.media.default,
                                closedCaptions: t.media
                            };
                            this.nonNativeCaptionsTracks[e] = r, this.hls.trigger(b.NON_NATIVE_TEXT_TRACKS_FOUND, {
                                tracks: [r]
                            })
                        }
                    }
                }, t.createTextTrack = function(e, t, r) {
                    var i = this.media;
                    if (i) return i.addTextTrack(e, t, r)
                }, t.onMediaAttaching = function(e, t) {
                    this.media = t.media, t.mediaSource || this._cleanTracks()
                }, t.onMediaDetaching = function(e, t) {
                    var r = !!t.transferMedia;
                    if (this.media = null, !r) {
                        var i = this.captionsTracks;
                        Object.keys(i).forEach((function(e) {
                            eo(i[e]), delete i[e]
                        })), this.nonNativeCaptionsTracks = {}
                    }
                }, t.onManifestLoading = function() {
                    this.lastCc = -1, this.lastSn = -1, this.lastPartIndex = -1, this.prevCC = -1, this.vttCCs = {
                        ccOffset: 0,
                        presentationOffset: 0,
                        0: {
                            start: 0,
                            prevCC: -1,
                            new: !0
                        }
                    }, this._cleanTracks(), this.tracks = [], this.captionsTracks = {}, this.nonNativeCaptionsTracks = {}, this.textTracks = [], this.unparsedVttFrags = [], this.initPTS = [], this.cea608Parser1 && this.cea608Parser2 && (this.cea608Parser1.reset(), this.cea608Parser2.reset())
                }, t._cleanTracks = function() {
                    var e = this.media;
                    if (e) {
                        var t = e.textTracks;
                        if (t)
                            for (var r = 0; r < t.length; r++) eo(t[r])
                    }
                }, t.onSubtitleTracksUpdated = function(e, t) {
                    var r = this,
                        i = t.subtitleTracks || [],
                        n = i.some((function(e) {
                            return e.textCodec === No
                        }));
                    if (this.config.enableWebVTT || n && this.config.enableIMSC1) {
                        if (ha(this.tracks, i)) return void(this.tracks = i);
                        if (this.textTracks = [], this.tracks = i, this.config.renderTextTracksNatively) {
                            var a = this.media,
                                s = a ? ro(a.textTracks) : null;
                            if (this.tracks.forEach((function(e, t) {
                                    var i;
                                    if (s) {
                                        for (var n = null, a = 0; a < s.length; a++)
                                            if (s[a] && $o(s[a], e)) {
                                                n = s[a], s[a] = null;
                                                break
                                            }
                                        n && (i = n)
                                    }
                                    if (i) eo(i);
                                    else {
                                        var o = zo(e);
                                        (i = r.createTextTrack(o, e.name, e.lang)) && (i.mode = "disabled")
                                    }
                                    i && r.textTracks.push(i)
                                })), null != s && s.length) {
                                var o = s.filter((function(e) {
                                    return null !== e
                                })).map((function(e) {
                                    return e.label
                                }));
                                o.length && this.hls.logger.warn("Media element contains unused subtitle tracks: " + o.join(", ") + ". Replace media element for each source to clear TextTracks and captions menu.")
                            }
                        } else if (this.tracks.length) {
                            var l = this.tracks.map((function(e) {
                                return {
                                    label: e.name,
                                    kind: e.type.toLowerCase(),
                                    default: e.default,
                                    subtitleTrack: e
                                }
                            }));
                            this.hls.trigger(b.NON_NATIVE_TEXT_TRACKS_FOUND, {
                                tracks: l
                            })
                        }
                    }
                }, t.onManifestLoaded = function(e, t) {
                    var r = this;
                    this.config.enableCEA708Captions && t.captions && t.captions.forEach((function(e) {
                        var t = /(?:CC|SERVICE)([1-4])/.exec(e.instreamId);
                        if (t) {
                            var i = "textTrack" + t[1],
                                n = r.captionsProperties[i];
                            n && (n.label = e.name, e.lang && (n.languageCode = e.lang), n.media = e)
                        }
                    }))
                }, t.closedCaptionsForLevel = function(e) {
                    var t = this.hls.levels[e.level];
                    return null == t ? void 0 : t.attrs["CLOSED-CAPTIONS"]
                }, t.onFragLoading = function(e, t) {
                    if (this.enabled && t.frag.type === w) {
                        var r, i, n = this.cea608Parser1,
                            a = this.cea608Parser2,
                            s = this.lastSn,
                            o = t.frag,
                            l = o.cc,
                            u = o.sn,
                            d = null != (r = null == (i = t.part) ? void 0 : i.index) ? r : -1;
                        n && a && (u !== s + 1 || u === s && d !== this.lastPartIndex + 1 || l !== this.lastCc) && (n.reset(), a.reset()), this.lastCc = l, this.lastSn = u, this.lastPartIndex = d
                    }
                }, t.onFragLoaded = function(e, t) {
                    var r = t.frag,
                        i = t.payload;
                    if (r.type === x)
                        if (i.byteLength) {
                            var n = r.decryptdata,
                                a = "stats" in t;
                            if (null == n || !n.encrypted || a) {
                                var s = this.tracks[r.level],
                                    o = this.vttCCs;
                                o[r.cc] || (o[r.cc] = {
                                    start: r.start,
                                    prevCC: this.prevCC,
                                    new: !0
                                }, this.prevCC = r.cc), s && s.textCodec === No ? this._parseIMSC1(r, i) : this._parseVTTs(t)
                            }
                        } else this.hls.trigger(b.SUBTITLE_FRAG_PROCESSED, {
                            success: !1,
                            frag: r,
                            error: new Error("Empty subtitle payload")
                        })
                }, t._parseIMSC1 = function(e, t) {
                    var r = this,
                        i = this.hls;
                    Ko(t, this.initPTS[e.cc], (function(t) {
                        r._appendCues(t, e.level), i.trigger(b.SUBTITLE_FRAG_PROCESSED, {
                            success: !0,
                            frag: e
                        })
                    }), (function(t) {
                        i.logger.log("Failed to parse IMSC1: " + t), i.trigger(b.SUBTITLE_FRAG_PROCESSED, {
                            success: !1,
                            frag: e,
                            error: t
                        })
                    }))
                }, t._parseVTTs = function(e) {
                    var t, r = this,
                        i = e.frag,
                        n = e.payload,
                        a = this.initPTS,
                        s = this.unparsedVttFrags,
                        o = a.length - 1;
                    if (a[i.cc] || -1 !== o) {
                        var l = this.hls;
                        Fo(null != (t = i.initSegment) && t.data ? Ae(i.initSegment.data, new Uint8Array(n)).buffer : n, this.initPTS[i.cc], this.vttCCs, i.cc, i.start, (function(e) {
                            r._appendCues(e, i.level), l.trigger(b.SUBTITLE_FRAG_PROCESSED, {
                                success: !0,
                                frag: i
                            })
                        }), (function(t) {
                            var a = "Missing initPTS for VTT MPEGTS" === t.message;
                            a ? s.push(e) : r._fallbackToIMSC1(i, n), l.logger.log("Failed to parse VTT cue: " + t), a && o > i.cc || l.trigger(b.SUBTITLE_FRAG_PROCESSED, {
                                success: !1,
                                frag: i,
                                error: t
                            })
                        }))
                    } else s.push(e)
                }, t._fallbackToIMSC1 = function(e, t) {
                    var r = this,
                        i = this.tracks[e.level];
                    i.textCodec || Ko(t, this.initPTS[e.cc], (function() {
                        i.textCodec = No, r._parseIMSC1(e, t)
                    }), (function() {
                        i.textCodec = "wvtt"
                    }))
                }, t._appendCues = function(e, t) {
                    var r = this.hls;
                    if (this.config.renderTextTracksNatively) {
                        var i = this.textTracks[t];
                        if (!i || "disabled" === i.mode) return;
                        e.forEach((function(e) {
                            return Js(i, e)
                        }))
                    } else {
                        var n = this.tracks[t];
                        if (!n) return;
                        var a = n.default ? "default" : "subtitles" + t;
                        r.trigger(b.CUES_PARSED, {
                            type: "subtitles",
                            cues: e,
                            track: a
                        })
                    }
                }, t.onFragDecrypted = function(e, t) {
                    t.frag.type === x && this.onFragLoaded(b.FRAG_LOADED, t)
                }, t.onSubtitleTracksCleared = function() {
                    this.tracks = [], this.captionsTracks = {}
                }, t.onFragParsingUserdata = function(e, t) {
                    if (this.enabled && this.config.enableCEA708Captions) {
                        var r = t.frag,
                            i = t.samples;
                        if (r.type !== w || "NONE" !== this.closedCaptionsForLevel(r))
                            for (var n = 0; n < i.length; n++) {
                                var a = i[n].bytes;
                                if (a) {
                                    this.cea608Parser1 || this.initCea608Parsers();
                                    var s = this.extractCea608Data(a);
                                    this.cea608Parser1.addData(i[n].pts, s[0]), this.cea608Parser2.addData(i[n].pts, s[1])
                                }
                            }
                    }
                }, t.onBufferFlushing = function(e, t) {
                    var r = t.startOffset,
                        i = t.endOffset,
                        n = t.endOffsetSubtitles,
                        a = t.type,
                        s = this.media;
                    if (s && !(s.currentTime < i)) {
                        if (!a || "video" === a) {
                            var o = this.captionsTracks;
                            Object.keys(o).forEach((function(e) {
                                return to(o[e], r, i)
                            }))
                        }
                        if (this.config.renderTextTracksNatively && 0 === r && void 0 !== n) {
                            var l = this.textTracks;
                            Object.keys(l).forEach((function(e) {
                                return to(l[e], r, n)
                            }))
                        }
                    }
                }, t.extractCea608Data = function(e) {
                    for (var t = [
                            [],
                            []
                        ], r = 31 & e[0], i = 2, n = 0; n < r; n++) {
                        var a = e[i++],
                            s = 127 & e[i++],
                            o = 127 & e[i++];
                        if ((0 !== s || 0 !== o) && 0 != (4 & a)) {
                            var l = 3 & a;
                            0 !== l && 1 !== l || (t[l].push(s), t[l].push(o))
                        }
                    }
                    return t
                }, e
            }();

        function zo(e) {
            return e.characteristics && /transcribes-spoken-dialog/gi.test(e.characteristics) && /describes-music-and-sound/gi.test(e.characteristics) ? "captions" : "subtitles"
        }

        function $o(e, t) {
            return !!e && e.kind === zo(t) && ca(t, e)
        }
        var Zo = /\s/,
            Jo = {
                newCue: function(e, t, r, i) {
                    for (var n, a, s, o, l, u = [], d = self.VTTCue || self.TextTrackCue, h = 0; h < i.rows.length; h++)
                        if (s = !0, o = 0, l = "", !(n = i.rows[h]).isEmpty()) {
                            for (var f, c = 0; c < n.chars.length; c++) Zo.test(n.chars[c].uchar) && s ? o++ : (l += n.chars[c].uchar, s = !1);
                            n.cueStartTime = t, t === r && (r += 1e-4), o >= 16 ? o-- : o++;
                            var g = Co(l.trim()),
                                v = Mo(t, r, g);
                            null != e && null != (f = e.cues) && f.getCueById(v) || ((a = new d(t, r, g)).id = v, a.line = h + 1, a.align = "left", a.position = 10 + Math.min(80, 10 * Math.floor(8 * o / 32)), u.push(a))
                        }
                    return e && u.length && (u.sort((function(e, t) {
                        return "auto" === e.line || "auto" === t.line ? 0 : e.line > 8 && t.line > 8 ? t.line - e.line : e.line - t.line
                    })), u.forEach((function(t) {
                        return Js(e, t)
                    }))), u
                }
            },
            el = /(\d+)-(\d+)\/(\d+)/,
            tl = function() {
                function e(e) {
                    this.fetchSetup = void 0, this.requestTimeout = void 0, this.request = null, this.response = null, this.controller = void 0, this.context = null, this.config = null, this.callbacks = null, this.stats = void 0, this.loader = null, this.fetchSetup = e.fetchSetup || rl, this.controller = new self.AbortController, this.stats = new z
                }
                var t = e.prototype;
                return t.destroy = function() {
                    this.loader = this.callbacks = this.context = this.config = this.request = null, this.abortInternal(), this.response = null, this.fetchSetup = this.controller = this.stats = null
                }, t.abortInternal = function() {
                    this.controller && !this.stats.loading.end && (this.stats.aborted = !0, this.controller.abort())
                }, t.abort = function() {
                    var e;
                    this.abortInternal(), null != (e = this.callbacks) && e.onAbort && this.callbacks.onAbort(this.stats, this.context, this.response)
                }, t.load = function(e, t, r) {
                    var i = this,
                        n = this.stats;
                    if (n.loading.start) throw new Error("Loader can only be used once.");
                    n.loading.start = self.performance.now();
                    var s = function(e, t) {
                            var r = {
                                method: "GET",
                                mode: "cors",
                                credentials: "same-origin",
                                signal: t,
                                headers: new self.Headers(a({}, e.headers))
                            };
                            return e.rangeEnd && r.headers.set("Range", "bytes=" + e.rangeStart + "-" + String(e.rangeEnd - 1)), r
                        }(e, this.controller.signal),
                        o = "arraybuffer" === e.responseType,
                        l = o ? "byteLength" : "length",
                        u = t.loadPolicy,
                        d = u.maxTimeToFirstByteMs,
                        h = u.maxLoadTimeMs;
                    this.context = e, this.config = t, this.callbacks = r, this.request = this.fetchSetup(e, s), self.clearTimeout(this.requestTimeout), t.timeout = d && A(d) ? d : h, this.requestTimeout = self.setTimeout((function() {
                        i.callbacks && (i.abortInternal(), i.callbacks.onTimeout(n, e, i.response))
                    }), t.timeout), ($n(this.request) ? this.request.then(self.fetch) : self.fetch(this.request)).then((function(r) {
                        var a;
                        i.response = i.loader = r;
                        var s = Math.max(self.performance.now(), n.loading.start);
                        if (self.clearTimeout(i.requestTimeout), t.timeout = h, i.requestTimeout = self.setTimeout((function() {
                                i.callbacks && (i.abortInternal(), i.callbacks.onTimeout(n, e, i.response))
                            }), h - (s - n.loading.start)), !r.ok) {
                            var l = r.status,
                                u = r.statusText;
                            throw new il(u || "fetch, bad network response", l, r)
                        }
                        n.loading.first = s, n.total = function(e) {
                            var t = e.get("Content-Range");
                            if (t) {
                                var r = function(e) {
                                    var t = el.exec(e);
                                    if (t) return parseInt(t[2]) - parseInt(t[1]) + 1
                                }(t);
                                if (A(r)) return r
                            }
                            var i = e.get("Content-Length");
                            if (i) return parseInt(i)
                        }(r.headers) || n.total;
                        var d = null == (a = i.callbacks) ? void 0 : a.onProgress;
                        return d && A(t.highWaterMark) ? i.loadProgressively(r, n, e, t.highWaterMark, d) : o ? r.arrayBuffer() : "json" === e.responseType ? r.json() : r.text()
                    })).then((function(r) {
                        var a, s, o = i.response;
                        if (!o) throw new Error("loader destroyed");
                        self.clearTimeout(i.requestTimeout), n.loading.end = Math.max(self.performance.now(), n.loading.first);
                        var u = r[l];
                        u && (n.loaded = n.total = u);
                        var d = {
                                url: o.url,
                                data: r,
                                code: o.status
                            },
                            h = null == (a = i.callbacks) ? void 0 : a.onProgress;
                        h && !A(t.highWaterMark) && h(n, e, r, o), null == (s = i.callbacks) || s.onSuccess(d, n, e, o)
                    })).catch((function(t) {
                        var r;
                        if (self.clearTimeout(i.requestTimeout), !n.aborted) {
                            var a = t && t.code || 0,
                                s = t ? t.message : null;
                            null == (r = i.callbacks) || r.onError({
                                code: a,
                                text: s
                            }, e, t ? t.details : null, n)
                        }
                    }))
                }, t.getCacheAge = function() {
                    var e = null;
                    if (this.response) {
                        var t = this.response.headers.get("age");
                        e = t ? parseFloat(t) : null
                    }
                    return e
                }, t.getResponseHeader = function(e) {
                    return this.response ? this.response.headers.get(e) : null
                }, t.loadProgressively = function(e, t, r, i, n) {
                    void 0 === i && (i = 0);
                    var a = new Ii,
                        s = e.body.getReader(),
                        o = function() {
                            return s.read().then((function(s) {
                                if (s.done) return a.dataLength && n(t, r, a.flush().buffer, e), Promise.resolve(new ArrayBuffer(0));
                                var l = s.value,
                                    u = l.length;
                                return t.loaded += u, u < i || a.dataLength ? (a.push(l), a.dataLength >= i && n(t, r, a.flush().buffer, e)) : n(t, r, l.buffer, e), o()
                            })).catch((function() {
                                return Promise.reject()
                            }))
                        };
                    return o()
                }, e
            }();

        function rl(e, t) {
            return new self.Request(e.url, t)
        }
        var il = function(e) {
                function t(t, r, i) {
                    var n;
                    return (n = e.call(this, t) || this).code = void 0, n.details = void 0, n.code = r, n.details = i, n
                }
                return o(t, e), t
            }(c(Error)),
            nl = /^age:\s*[\d.]+\s*$/im,
            al = function() {
                function e(e) {
                    this.xhrSetup = void 0, this.requestTimeout = void 0, this.retryTimeout = void 0, this.retryDelay = void 0, this.config = null, this.callbacks = null, this.context = null, this.loader = null, this.stats = void 0, this.xhrSetup = e && e.xhrSetup || null, this.stats = new z, this.retryDelay = 0
                }
                var t = e.prototype;
                return t.destroy = function() {
                    this.callbacks = null, this.abortInternal(), this.loader = null, this.config = null, this.context = null, this.xhrSetup = null
                }, t.abortInternal = function() {
                    var e = this.loader;
                    self.clearTimeout(this.requestTimeout), self.clearTimeout(this.retryTimeout), e && (e.onreadystatechange = null, e.onprogress = null, 4 !== e.readyState && (this.stats.aborted = !0, e.abort()))
                }, t.abort = function() {
                    var e;
                    this.abortInternal(), null != (e = this.callbacks) && e.onAbort && this.callbacks.onAbort(this.stats, this.context, this.loader)
                }, t.load = function(e, t, r) {
                    if (this.stats.loading.start) throw new Error("Loader can only be used once.");
                    this.stats.loading.start = self.performance.now(), this.context = e, this.config = t, this.callbacks = r, this.loadInternal()
                }, t.loadInternal = function() {
                    var e = this,
                        t = this.config,
                        r = this.context;
                    if (t && r) {
                        var i = this.loader = new self.XMLHttpRequest,
                            n = this.stats;
                        n.loading.first = 0, n.loaded = 0, n.aborted = !1;
                        var a = this.xhrSetup;
                        a ? Promise.resolve().then((function() {
                            if (e.loader === i && !e.stats.aborted) return a(i, r.url)
                        })).catch((function(t) {
                            if (e.loader === i && !e.stats.aborted) return i.open("GET", r.url, !0), a(i, r.url)
                        })).then((function() {
                            e.loader !== i || e.stats.aborted || e.openAndSendXhr(i, r, t)
                        })).catch((function(t) {
                            var a;
                            null == (a = e.callbacks) || a.onError({
                                code: i.status,
                                text: t.message
                            }, r, i, n)
                        })) : this.openAndSendXhr(i, r, t)
                    }
                }, t.openAndSendXhr = function(e, t, r) {
                    e.readyState || e.open("GET", t.url, !0);
                    var i = t.headers,
                        n = r.loadPolicy,
                        a = n.maxTimeToFirstByteMs,
                        s = n.maxLoadTimeMs;
                    if (i)
                        for (var o in i) e.setRequestHeader(o, i[o]);
                    t.rangeEnd && e.setRequestHeader("Range", "bytes=" + t.rangeStart + "-" + (t.rangeEnd - 1)), e.onreadystatechange = this.readystatechange.bind(this), e.onprogress = this.loadprogress.bind(this), e.responseType = t.responseType, self.clearTimeout(this.requestTimeout), r.timeout = a && A(a) ? a : s, this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), r.timeout), e.send()
                }, t.readystatechange = function() {
                    var e = this.context,
                        t = this.loader,
                        r = this.stats;
                    if (e && t) {
                        var i = t.readyState,
                            n = this.config;
                        if (!r.aborted && i >= 2 && (0 === r.loading.first && (r.loading.first = Math.max(self.performance.now(), r.loading.start), n.timeout !== n.loadPolicy.maxLoadTimeMs && (self.clearTimeout(this.requestTimeout), n.timeout = n.loadPolicy.maxLoadTimeMs, this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), n.loadPolicy.maxLoadTimeMs - (r.loading.first - r.loading.start)))), 4 === i)) {
                            self.clearTimeout(this.requestTimeout), t.onreadystatechange = null, t.onprogress = null;
                            var a = t.status,
                                s = "text" === t.responseType ? t.responseText : null;
                            if (a >= 200 && a < 300) {
                                var o = null != s ? s : t.response;
                                if (null != o) {
                                    var l, u;
                                    r.loading.end = Math.max(self.performance.now(), r.loading.first);
                                    var d = "arraybuffer" === t.responseType ? o.byteLength : o.length;
                                    r.loaded = r.total = d, r.bwEstimate = 8e3 * r.total / (r.loading.end - r.loading.first);
                                    var h = null == (l = this.callbacks) ? void 0 : l.onProgress;
                                    h && h(r, e, o, t);
                                    var f = {
                                        url: t.responseURL,
                                        data: o,
                                        code: a
                                    };
                                    return void(null == (u = this.callbacks) || u.onSuccess(f, r, e, t))
                                }
                            }
                            var c, g = n.loadPolicy.errorRetry;
                            kt(g, r.retry, !1, {
                                url: e.url,
                                data: void 0,
                                code: a
                            }) ? this.retry(g) : (Y.error(a + " while loading " + e.url), null == (c = this.callbacks) || c.onError({
                                code: a,
                                text: t.statusText
                            }, e, t, r))
                        }
                    }
                }, t.loadtimeout = function() {
                    if (this.config) {
                        var e = this.config.loadPolicy.timeoutRetry;
                        if (kt(e, this.stats.retry, !0)) this.retry(e);
                        else {
                            var t;
                            Y.warn("timeout while loading " + (null == (t = this.context) ? void 0 : t.url));
                            var r = this.callbacks;
                            r && (this.abortInternal(), r.onTimeout(this.stats, this.context, this.loader))
                        }
                    }
                }, t.retry = function(e) {
                    var t = this.context,
                        r = this.stats;
                    this.retryDelay = Rt(e, r.retry), r.retry++, Y.warn((status ? "HTTP Status " + status : "Timeout") + " while loading " + (null == t ? void 0 : t.url) + ", retrying " + r.retry + "/" + e.maxNumRetry + " in " + this.retryDelay + "ms"), this.abortInternal(), this.loader = null, self.clearTimeout(this.retryTimeout), this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay)
                }, t.loadprogress = function(e) {
                    var t = this.stats;
                    t.loaded = e.loaded, e.lengthComputable && (t.total = e.total)
                }, t.getCacheAge = function() {
                    var e = null;
                    if (this.loader && nl.test(this.loader.getAllResponseHeaders())) {
                        var t = this.loader.getResponseHeader("age");
                        e = t ? parseFloat(t) : null
                    }
                    return e
                }, t.getResponseHeader = function(e) {
                    return this.loader && new RegExp("^" + e + ":\\s*[\\d.]+\\s*$", "im").test(this.loader.getAllResponseHeaders()) ? this.loader.getResponseHeader(e) : null
                }, e
            }(),
            sl = d(d({
                autoStartLoad: !0,
                startPosition: -1,
                defaultAudioCodec: void 0,
                debug: !1,
                capLevelOnFPSDrop: !1,
                capLevelToPlayerSize: !1,
                ignoreDevicePixelRatio: !1,
                maxDevicePixelRatio: Number.POSITIVE_INFINITY,
                preferManagedMediaSource: !0,
                initialLiveManifestSize: 1,
                maxBufferLength: 30,
                backBufferLength: 1 / 0,
                frontBufferFlushThreshold: 1 / 0,
                startOnSegmentBoundary: !1,
                maxBufferSize: 6e7,
                maxFragLookUpTolerance: .25,
                maxBufferHole: .1,
                detectStallWithCurrentTimeMs: 1250,
                highBufferWatchdogPeriod: 2,
                nudgeOffset: .1,
                nudgeMaxRetry: 3,
                nudgeOnVideoHole: !0,
                liveSyncMode: "edge",
                liveSyncDurationCount: 3,
                liveSyncOnStallIncrease: 1,
                liveMaxLatencyDurationCount: 1 / 0,
                liveSyncDuration: void 0,
                liveMaxLatencyDuration: void 0,
                maxLiveSyncPlaybackRate: 1,
                liveDurationInfinity: !1,
                liveBackBufferLength: null,
                maxMaxBufferLength: 600,
                enableWorker: !0,
                workerPath: null,
                enableSoftwareAES: !0,
                startLevel: void 0,
                startFragPrefetch: !1,
                fpsDroppedMonitoringPeriod: 5e3,
                fpsDroppedMonitoringThreshold: .2,
                appendErrorMaxRetry: 3,
                ignorePlaylistParsingErrors: !1,
                loader: al,
                fLoader: void 0,
                pLoader: void 0,
                xhrSetup: void 0,
                licenseXhrSetup: void 0,
                licenseResponseCallback: void 0,
                abrController: mt,
                bufferController: Ea,
                capLevelController: Aa,
                errorController: Ft,
                fpsController: Os,
                stretchShortVideoTrack: !1,
                maxAudioFramesDrift: 1,
                forceKeyFrameOnDiscontinuity: !0,
                abrEwmaFastLive: 3,
                abrEwmaSlowLive: 9,
                abrEwmaFastVoD: 3,
                abrEwmaSlowVoD: 9,
                abrEwmaDefaultEstimate: 5e5,
                abrEwmaDefaultEstimateMax: 5e6,
                abrBandWidthFactor: .95,
                abrBandWidthUpFactor: .7,
                abrMaxWithRealBitrate: !1,
                maxStarvationDelay: 4,
                maxLoadingDelay: 4,
                minAutoBitrate: 0,
                emeEnabled: !1,
                widevineLicenseUrl: void 0,
                drmSystems: {},
                drmSystemOptions: {},
                requestMediaKeySystemAccessFunc: Mr,
                requireKeySystemAccessOnStart: !1,
                testBandwidth: !0,
                progressive: !1,
                lowLatencyMode: !0,
                cmcd: void 0,
                enableDateRangeMetadataCues: !0,
                enableEmsgMetadataCues: !0,
                enableEmsgKLVMetadata: !1,
                enableID3MetadataCues: !0,
                enableInterstitialPlayback: !0,
                interstitialAppendInPlace: !0,
                interstitialLiveLookAhead: 10,
                useMediaCapabilities: !0,
                preserveManualLevelOnError: !1,
                certLoadPolicy: {
                    default: {
                        maxTimeToFirstByteMs: 8e3,
                        maxLoadTimeMs: 2e4,
                        timeoutRetry: null,
                        errorRetry: null
                    }
                },
                keyLoadPolicy: {
                    default: {
                        maxTimeToFirstByteMs: 8e3,
                        maxLoadTimeMs: 2e4,
                        timeoutRetry: {
                            maxNumRetry: 1,
                            retryDelayMs: 1e3,
                            maxRetryDelayMs: 2e4,
                            backoff: "linear"
                        },
                        errorRetry: {
                            maxNumRetry: 8,
                            retryDelayMs: 1e3,
                            maxRetryDelayMs: 2e4,
                            backoff: "linear"
                        }
                    }
                },
                manifestLoadPolicy: {
                    default: {
                        maxTimeToFirstByteMs: 1 / 0,
                        maxLoadTimeMs: 2e4,
                        timeoutRetry: {
                            maxNumRetry: 2,
                            retryDelayMs: 0,
                            maxRetryDelayMs: 0
                        },
                        errorRetry: {
                            maxNumRetry: 1,
                            retryDelayMs: 1e3,
                            maxRetryDelayMs: 8e3
                        }
                    }
                },
                playlistLoadPolicy: {
                    default: {
                        maxTimeToFirstByteMs: 1e4,
                        maxLoadTimeMs: 2e4,
                        timeoutRetry: {
                            maxNumRetry: 2,
                            retryDelayMs: 0,
                            maxRetryDelayMs: 0
                        },
                        errorRetry: {
                            maxNumRetry: 2,
                            retryDelayMs: 1e3,
                            maxRetryDelayMs: 8e3
                        }
                    }
                },
                fragLoadPolicy: {
                    default: {
                        maxTimeToFirstByteMs: 1e4,
                        maxLoadTimeMs: 12e4,
                        timeoutRetry: {
                            maxNumRetry: 4,
                            retryDelayMs: 0,
                            maxRetryDelayMs: 0
                        },
                        errorRetry: {
                            maxNumRetry: 6,
                            retryDelayMs: 1e3,
                            maxRetryDelayMs: 8e3
                        }
                    }
                },
                steeringManifestLoadPolicy: {
                    default: {
                        maxTimeToFirstByteMs: 1e4,
                        maxLoadTimeMs: 2e4,
                        timeoutRetry: {
                            maxNumRetry: 2,
                            retryDelayMs: 0,
                            maxRetryDelayMs: 0
                        },
                        errorRetry: {
                            maxNumRetry: 1,
                            retryDelayMs: 1e3,
                            maxRetryDelayMs: 8e3
                        }
                    }
                },
                interstitialAssetListLoadPolicy: {
                    default: {
                        maxTimeToFirstByteMs: 1e4,
                        maxLoadTimeMs: 3e4,
                        timeoutRetry: {
                            maxNumRetry: 0,
                            retryDelayMs: 0,
                            maxRetryDelayMs: 0
                        },
                        errorRetry: {
                            maxNumRetry: 0,
                            retryDelayMs: 1e3,
                            maxRetryDelayMs: 8e3
                        }
                    }
                },
                manifestLoadingTimeOut: 1e4,
                manifestLoadingMaxRetry: 1,
                manifestLoadingRetryDelay: 1e3,
                manifestLoadingMaxRetryTimeout: 64e3,
                levelLoadingTimeOut: 1e4,
                levelLoadingMaxRetry: 4,
                levelLoadingRetryDelay: 1e3,
                levelLoadingMaxRetryTimeout: 64e3,
                fragLoadingTimeOut: 2e4,
                fragLoadingMaxRetry: 6,
                fragLoadingRetryDelay: 1e3,
                fragLoadingMaxRetryTimeout: 64e3
            }, {
                cueHandler: Jo,
                enableWebVTT: !0,
                enableIMSC1: !0,
                enableCEA708Captions: !0,
                captionsTextTrack1Label: "English",
                captionsTextTrack1LanguageCode: "en",
                captionsTextTrack2Label: "Spanish",
                captionsTextTrack2LanguageCode: "es",
                captionsTextTrack3Label: "Unknown CC",
                captionsTextTrack3LanguageCode: "",
                captionsTextTrack4Label: "Unknown CC",
                captionsTextTrack4LanguageCode: "",
                renderTextTracksNatively: !0
            }), {}, {
                subtitleStreamController: zs,
                subtitleTrackController: io,
                timelineController: Qo,
                audioStreamController: ua,
                audioTrackController: ga,
                emeController: Ps,
                cmcdController: ks,
                contentSteeringController: bs,
                interstitialsController: Qs
            });

        function ol(e) {
            return e && "object" == typeof e ? Array.isArray(e) ? e.map(ol) : Object.keys(e).reduce((function(t, r) {
                return t[r] = ol(e[r]), t
            }), {}) : e
        }

        function ll(e, t) {
            var r = e.loader;
            r !== tl && r !== al ? (t.log("[config]: Custom loader detected, cannot enable progressive streaming"), e.progressive = !1) : function() {
                if (self.fetch && self.AbortController && self.ReadableStream && self.Request) try {
                    return new self.ReadableStream({}), !0
                } catch (e) {}
                return !1
            }() && (e.loader = tl, e.progressive = !0, e.enableSoftwareAES = !0, t.log("[config]: Progressive streaming enabled, using FetchLoader"))
        }
        var ul = function(e) {
            function t(t, r) {
                var i;
                return (i = e.call(this, "gap-controller", t.logger) || this).hls = void 0, i.fragmentTracker = void 0, i.media = null, i.mediaSource = void 0, i.nudgeRetry = 0, i.stallReported = !1, i.stalled = null, i.moved = !1, i.seeking = !1, i.buffered = {}, i.lastCurrentTime = 0, i.ended = 0, i.waiting = 0, i.onMediaPlaying = function() {
                    i.ended = 0, i.waiting = 0
                }, i.onMediaWaiting = function() {
                    var e;
                    null != (e = i.media) && e.seeking || (i.waiting = self.performance.now(), i.tick())
                }, i.onMediaEnded = function() {
                    var e;
                    i.hls && (i.ended = (null == (e = i.media) ? void 0 : e.currentTime) || 1, i.hls.trigger(b.MEDIA_ENDED, {
                        stalled: !1
                    }))
                }, i.hls = t, i.fragmentTracker = r, i.registerListeners(), i
            }
            o(t, e);
            var r = t.prototype;
            return r.registerListeners = function() {
                var e = this.hls;
                e && (e.on(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(b.BUFFER_APPENDED, this.onBufferAppended, this))
            }, r.unregisterListeners = function() {
                var e = this.hls;
                e && (e.off(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(b.BUFFER_APPENDED, this.onBufferAppended, this))
            }, r.destroy = function() {
                e.prototype.destroy.call(this), this.unregisterListeners(), this.media = this.hls = this.fragmentTracker = null, this.mediaSource = void 0
            }, r.onMediaAttached = function(e, t) {
                this.setInterval(100), this.mediaSource = t.mediaSource;
                var r = this.media = t.media;
                Ei(r, "playing", this.onMediaPlaying), Ei(r, "waiting", this.onMediaWaiting), Ei(r, "ended", this.onMediaEnded)
            }, r.onMediaDetaching = function(e, t) {
                this.clearInterval();
                var r = this.media;
                r && (Ti(r, "playing", this.onMediaPlaying), Ti(r, "waiting", this.onMediaWaiting), Ti(r, "ended", this.onMediaEnded), this.media = null), this.mediaSource = void 0
            }, r.onBufferAppended = function(e, t) {
                this.buffered = t.timeRanges
            }, r.tick = function() {
                var e;
                if (null != (e = this.media) && e.readyState && this.hasBuffered) {
                    var t = this.media.currentTime;
                    this.poll(t, this.lastCurrentTime), this.lastCurrentTime = t
                }
            }, r.poll = function(e, t) {
                var r, i, n = null == (r = this.hls) ? void 0 : r.config;
                if (n) {
                    var a = this.media;
                    if (a) {
                        var s = a.seeking,
                            o = this.seeking && !s,
                            l = !this.seeking && s,
                            u = a.paused && !s || a.ended || 0 === a.playbackRate;
                        if (this.seeking = s, e !== t) return t && (this.ended = 0), this.moved = !0, s || (this.nudgeRetry = 0, n.nudgeOnVideoHole && !u && e > t && this.nudgeOnVideoHole(e, t)), void(0 === this.waiting && this.stallResolved(e));
                        if (l || o) o && this.stallResolved(e);
                        else {
                            if (u) return this.nudgeRetry = 0, this.stallResolved(e), void(!this.ended && a.ended && this.hls && (this.ended = e || 1, this.hls.trigger(b.MEDIA_ENDED, {
                                stalled: !1
                            })));
                            if (sr.getBuffered(a).length) {
                                var d = sr.bufferInfo(a, e, 0),
                                    h = d.nextStart || 0,
                                    f = this.fragmentTracker;
                                if (s && f && this.hls) {
                                    var c = dl(this.hls.inFlightFragments, e),
                                        g = d.len > 2,
                                        v = !h || c || h - e > 2 && !f.getPartialFragment(e);
                                    if (g || v) return;
                                    this.moved = !1
                                }
                                var m = null == (i = this.hls) ? void 0 : i.latestLevelDetails;
                                if (!this.moved && null !== this.stalled && f) {
                                    if (!(d.len > 0 || h)) return;
                                    var p = Math.max(h, d.start || 0) - e,
                                        y = null != m && m.live ? 2 * m.targetduration : 2,
                                        E = fl(e, f);
                                    if (p > 0 && (p <= y || E)) return void(a.paused || this._trySkipBufferHole(E))
                                }
                                var T = n.detectStallWithCurrentTimeMs,
                                    S = self.performance.now(),
                                    A = this.waiting,
                                    L = this.stalled;
                                if (null === L) {
                                    if (!(A > 0 && S - A < T)) return void(this.stalled = S);
                                    L = this.stalled = A
                                }
                                var R = S - L;
                                if (!s && (R >= T || A) && this.hls) {
                                    var I;
                                    if ("ended" === (null == (I = this.mediaSource) ? void 0 : I.readyState) && (null == m || !m.live) && Math.abs(e - ((null == m ? void 0 : m.edge) || 0)) < 1) {
                                        if (this.ended) return;
                                        return this.ended = e || 1, void this.hls.trigger(b.MEDIA_ENDED, {
                                            stalled: !0
                                        })
                                    }
                                    if (this._reportStall(d), !this.media || !this.hls) return
                                }
                                var k = sr.bufferInfo(a, e, n.maxBufferHole);
                                this._tryFixBufferStall(k, R, e)
                            } else this.nudgeRetry = 0
                        }
                    }
                }
            }, r.stallResolved = function(e) {
                var t = this.stalled;
                if (t && this.hls && (this.stalled = null, this.stallReported)) {
                    var r = self.performance.now() - t;
                    this.log("playback not stuck anymore @" + e + ", after " + Math.round(r) + "ms"), this.stallReported = !1, this.waiting = 0, this.hls.trigger(b.STALL_RESOLVED, {})
                }
            }, r.nudgeOnVideoHole = function(e, t) {
                var r, i = this.buffered.video;
                if (this.hls && this.media && this.fragmentTracker && null != (r = this.buffered.audio) && r.length && i && i.length > 1 && e > i.end(0)) {
                    var n = sr.bufferedInfo(sr.timeRangesToArray(this.buffered.audio), e, 0);
                    if (n.len > 1 && t >= n.start) {
                        var a = sr.timeRangesToArray(i),
                            s = sr.bufferedInfo(a, t, 0).bufferedIndex;
                        if (s > -1 && s < a.length - 1) {
                            var o = sr.bufferedInfo(a, e, 0).bufferedIndex,
                                l = a[s].end,
                                u = a[s + 1].start;
                            if ((-1 === o || o > s) && u - l < 1 && e - l < 2) {
                                var d = new Error("nudging playhead to flush pipeline after video hole. currentTime: " + e + " hole: " + l + " -> " + u + " buffered index: " + o);
                                this.warn(d.message), this.media.currentTime += 1e-6;
                                var h = fl(e, this.fragmentTracker);
                                h && "fragment" in h ? h = h.fragment : h || (h = void 0);
                                var f = sr.bufferInfo(this.media, e, 0);
                                this.hls.trigger(b.ERROR, {
                                    type: I.MEDIA_ERROR,
                                    details: k.BUFFER_SEEK_OVER_HOLE,
                                    fatal: !1,
                                    error: d,
                                    reason: d.message,
                                    frag: h,
                                    buffer: f.len,
                                    bufferInfo: f
                                })
                            }
                        }
                    }
                }
            }, r._tryFixBufferStall = function(e, t, r) {
                var i, n, a = this.fragmentTracker,
                    s = this.media,
                    o = null == (i = this.hls) ? void 0 : i.config;
                if (s && a && o) {
                    var l = null == (n = this.hls) ? void 0 : n.latestLevelDetails,
                        u = fl(r, a);
                    if ((u || null != l && l.live && r < l.fragmentStart) && (this._trySkipBufferHole(u) || !this.media)) return;
                    var d = e.buffered,
                        h = this.adjacentTraversal(e, r);
                    (d && d.length > 1 && e.len > o.maxBufferHole || e.nextStart && (e.nextStart - r < o.maxBufferHole || h)) && (t > 1e3 * o.highBufferWatchdogPeriod || this.waiting) && (this.warn("Trying to nudge playhead over buffer-hole"), this._tryNudgeBuffer(e))
                }
            }, r.adjacentTraversal = function(e, t) {
                var r = this.fragmentTracker,
                    i = e.nextStart;
                if (r && i) {
                    var n = r.getFragAtPos(t, w),
                        a = r.getFragAtPos(i, w);
                    if (n && a) return a.sn - n.sn < 2
                }
                return !1
            }, r._reportStall = function(e) {
                var t = this.hls,
                    r = this.media,
                    i = this.stallReported,
                    n = this.stalled;
                if (!i && null !== n && r && t) {
                    this.stallReported = !0;
                    var a = new Error("Playback stalling at @" + r.currentTime + " due to low buffer (" + ot(e) + ")");
                    this.warn(a.message), t.trigger(b.ERROR, {
                        type: I.MEDIA_ERROR,
                        details: k.BUFFER_STALLED_ERROR,
                        fatal: !1,
                        error: a,
                        buffer: e.len,
                        bufferInfo: e,
                        stalled: {
                            start: n
                        }
                    })
                }
            }, r._trySkipBufferHole = function(e) {
                var t, r = this.fragmentTracker,
                    i = this.media,
                    n = null == (t = this.hls) ? void 0 : t.config;
                if (!i || !r || !n) return 0;
                var a = i.currentTime,
                    s = sr.bufferInfo(i, a, 0),
                    o = a < s.start ? s.start : s.nextStart;
                if (o && this.hls) {
                    var l = s.len <= n.maxBufferHole,
                        u = s.len > 0 && s.len < 1 && i.readyState < 3,
                        d = o - a;
                    if (d > 0 && (l || u)) {
                        if (d > n.maxBufferHole) {
                            var h = !1;
                            if (0 === a) {
                                var f = r.getAppendedFrag(0, w);
                                f && o < f.end && (h = !0)
                            }
                            if (!h && e) {
                                var c;
                                if (null == (c = this.hls.loadLevelObj) || !c.details) return 0;
                                if (dl(this.hls.inFlightFragments, o)) return 0;
                                for (var g = !1, v = e.end; v < o;) {
                                    var m = fl(v, r);
                                    if (!m) {
                                        g = !0;
                                        break
                                    }
                                    v += m.duration
                                }
                                if (g) return 0
                            }
                        }
                        var p = Math.max(o + .05, a + .1);
                        if (this.warn("skipping hole, adjusting currentTime from " + a + " to " + p), this.moved = !0, i.currentTime = p, null == e || !e.gap) {
                            var y = new Error("fragment loaded with buffer holes, seeking from " + a + " to " + p),
                                E = {
                                    type: I.MEDIA_ERROR,
                                    details: k.BUFFER_SEEK_OVER_HOLE,
                                    fatal: !1,
                                    error: y,
                                    reason: y.message,
                                    buffer: s.len,
                                    bufferInfo: s
                                };
                            e && ("fragment" in e ? E.part = e : E.frag = e), this.hls.trigger(b.ERROR, E)
                        }
                        return p
                    }
                }
                return 0
            }, r._tryNudgeBuffer = function(e) {
                var t = this.hls,
                    r = this.media,
                    i = this.nudgeRetry,
                    n = null == t ? void 0 : t.config;
                if (!r || !n) return 0;
                var a = r.currentTime;
                if (this.nudgeRetry++, i < n.nudgeMaxRetry) {
                    var s = a + (i + 1) * n.nudgeOffset,
                        o = new Error("Nudging 'currentTime' from " + a + " to " + s);
                    this.warn(o.message), r.currentTime = s, t.trigger(b.ERROR, {
                        type: I.MEDIA_ERROR,
                        details: k.BUFFER_NUDGE_ON_STALL,
                        error: o,
                        fatal: !1,
                        buffer: e.len,
                        bufferInfo: e
                    })
                } else {
                    var l = new Error("Playhead still not moving while enough data buffered @" + a + " after " + n.nudgeMaxRetry + " nudges");
                    this.error(l.message), t.trigger(b.ERROR, {
                        type: I.MEDIA_ERROR,
                        details: k.BUFFER_STALLED_ERROR,
                        error: l,
                        fatal: !0,
                        buffer: e.len,
                        bufferInfo: e
                    })
                }
            }, i(t, [{
                key: "hasBuffered",
                get: function() {
                    return Object.keys(this.buffered).length > 0
                }
            }])
        }(ir);

        function dl(e, t) {
            var r = hl(e.main);
            if (r && r.start <= t) return r;
            var i = hl(e.audio);
            return i && i.start <= t ? i : null
        }

        function hl(e) {
            if (!e) return null;
            switch (e.state) {
                case Ai.IDLE:
                case Ai.STOPPED:
                case Ai.ENDED:
                case Ai.ERROR:
                    return null
            }
            return e.frag
        }

        function fl(e, t) {
            return t.getAppendedFrag(e, w) || t.getPartialFragment(e)
        }

        function cl() {
            if ("undefined" != typeof self) return self.VTTCue || self.TextTrackCue
        }

        function gl(e, t, r, i, n) {
            var a = new e(t, r, "");
            try {
                a.value = i, n && (a.type = n)
            } catch (s) {
                a = new e(t, r, ot(n ? d({
                    type: n
                }, i) : i))
            }
            return a
        }
        var vl = function() {
                var e = cl();
                try {
                    e && new e(0, Number.POSITIVE_INFINITY, "")
                } catch (e) {
                    return Number.MAX_VALUE
                }
                return Number.POSITIVE_INFINITY
            }(),
            ml = function() {
                function e(e) {
                    var t = this;
                    this.hls = void 0, this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {}, this.removeCues = !0, this.assetCue = void 0, this.onEventCueEnter = function() {
                        t.hls && t.hls.trigger(b.EVENT_CUE_ENTER, {})
                    }, this.hls = e, this._registerListeners()
                }
                var t = e.prototype;
                return t.destroy = function() {
                    this._unregisterListeners(), this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {}, this.hls = this.onEventCueEnter = null
                }, t._registerListeners = function() {
                    var e = this.hls;
                    e && (e.on(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this), e.on(b.BUFFER_FLUSHING, this.onBufferFlushing, this), e.on(b.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(b.LEVEL_PTS_UPDATED, this.onLevelPtsUpdated, this))
                }, t._unregisterListeners = function() {
                    var e = this.hls;
                    e && (e.off(b.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this), e.off(b.BUFFER_FLUSHING, this.onBufferFlushing, this), e.off(b.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(b.LEVEL_PTS_UPDATED, this.onLevelPtsUpdated, this))
                }, t.onMediaAttaching = function(e, t) {
                    var r;
                    this.media = t.media, !1 === (null == (r = t.overrides) ? void 0 : r.cueRemoval) && (this.removeCues = !1)
                }, t.onMediaAttached = function() {
                    var e, t = null == (e = this.hls) ? void 0 : e.latestLevelDetails;
                    t && this.updateDateRangeCues(t)
                }, t.onMediaDetaching = function(e, t) {
                    this.media = null, t.transferMedia || (this.id3Track && (this.removeCues && eo(this.id3Track, this.onEventCueEnter), this.id3Track = null), this.dateRangeCuesAppended = {})
                }, t.onManifestLoading = function() {
                    this.dateRangeCuesAppended = {}
                }, t.createTrack = function(e) {
                    var t = this.getID3Track(e.textTracks);
                    return t.mode = "hidden", t
                }, t.getID3Track = function(e) {
                    if (this.media) {
                        for (var t = 0; t < e.length; t++) {
                            var r = e[t];
                            if ("metadata" === r.kind && "id3" === r.label) return Zs(r, this.media), r
                        }
                        return this.media.addTextTrack("metadata", "id3")
                    }
                }, t.onFragParsingMetadata = function(e, t) {
                    if (this.media && this.hls) {
                        var r = this.hls.config,
                            i = r.enableEmsgMetadataCues,
                            n = r.enableID3MetadataCues;
                        if (i || n) {
                            var a = t.samples;
                            this.id3Track || (this.id3Track = this.createTrack(this.media));
                            var s = cl();
                            if (s)
                                for (var o = 0; o < a.length; o++) {
                                    var l = a[o].type;
                                    if ((l !== Qi.emsg || i) && n) {
                                        var u = Wi(a[o].data),
                                            d = a[o].pts,
                                            h = d + a[o].duration;
                                        h > vl && (h = vl), h - d <= 0 && (h = d + .25);
                                        for (var f = 0; f < u.length; f++) {
                                            var c = u[f];
                                            if (!ji(c)) {
                                                this.updateId3CueEnds(d, l);
                                                var g = gl(s, d, h, c, l);
                                                g && this.id3Track.addCue(g)
                                            }
                                        }
                                    }
                                }
                        }
                    }
                }, t.updateId3CueEnds = function(e, t) {
                    var r, i = null == (r = this.id3Track) ? void 0 : r.cues;
                    if (i)
                        for (var n = i.length; n--;) {
                            var a = i[n];
                            a.type === t && a.startTime < e && a.endTime === vl && (a.endTime = e)
                        }
                }, t.onBufferFlushing = function(e, t) {
                    var r = t.startOffset,
                        i = t.endOffset,
                        n = t.type,
                        a = this.id3Track,
                        s = this.hls;
                    if (s) {
                        var o = s.config,
                            l = o.enableEmsgMetadataCues,
                            u = o.enableID3MetadataCues;
                        a && (l || u) && to(a, r, i, "audio" === n ? function(e) {
                            return e.type === Qi.audioId3 && u
                        } : "video" === n ? function(e) {
                            return e.type === Qi.emsg && l
                        } : function(e) {
                            return e.type === Qi.audioId3 && u || e.type === Qi.emsg && l
                        })
                    }
                }, t.onLevelUpdated = function(e, t) {
                    var r = t.details;
                    this.updateDateRangeCues(r, !0)
                }, t.onLevelPtsUpdated = function(e, t) {
                    Math.abs(t.drift) > .01 && this.updateDateRangeCues(t.details)
                }, t.updateDateRangeCues = function(e, t) {
                    var r = this;
                    if (this.hls && this.media) {
                        var i = this.hls.config,
                            n = i.assetPlayerId,
                            a = i.timelineOffset,
                            s = i.enableDateRangeMetadataCues,
                            o = i.interstitialsController;
                        if (s) {
                            var l = cl();
                            if (n && a && !o) {
                                var u = e.fragmentStart,
                                    d = e.fragmentEnd,
                                    h = this.assetCue;
                                h ? (h.startTime = u, h.endTime = d) : l && (h = this.assetCue = gl(l, u, d, {
                                    assetPlayerId: this.hls.config.assetPlayerId
                                }, "hlsjs.interstitial.asset")) && (h.id = n, this.id3Track || (this.id3Track = this.createTrack(this.media)), this.id3Track.addCue(h), h.addEventListener("enter", this.onEventCueEnter))
                            }
                            if (e.hasProgramDateTime) {
                                var f, c = this.id3Track,
                                    g = e.dateRanges,
                                    v = Object.keys(g),
                                    m = this.dateRangeCuesAppended;
                                if (c && t)
                                    if (null != (f = c.cues) && f.length)
                                        for (var p = Object.keys(m).filter((function(e) {
                                                return !v.includes(e)
                                            })), y = function() {
                                                var e, t = p[E],
                                                    i = null == (e = m[t]) ? void 0 : e.cues;
                                                delete m[t], i && Object.keys(i).forEach((function(e) {
                                                    var t = i[e];
                                                    if (t) {
                                                        t.removeEventListener("enter", r.onEventCueEnter);
                                                        try {
                                                            c.removeCue(t)
                                                        } catch (e) {}
                                                    }
                                                }))
                                            }, E = p.length; E--;) y();
                                    else m = this.dateRangeCuesAppended = {};
                                var T = e.fragments[e.fragments.length - 1];
                                if (0 !== v.length && A(null == T ? void 0 : T.programDateTime)) {
                                    this.id3Track || (this.id3Track = this.createTrack(this.media));
                                    for (var S = function() {
                                            var e = v[L],
                                                t = g[e],
                                                i = t.startTime,
                                                n = m[e],
                                                a = (null == n ? void 0 : n.cues) || {},
                                                s = (null == n ? void 0 : n.durationKnown) || !1,
                                                u = vl,
                                                d = t.duration;
                                            if (t.endDate && null !== d) u = i + d, s = !0;
                                            else if (t.endOnNext && !s) {
                                                var h = v.reduce((function(e, r) {
                                                    if (r !== t.id) {
                                                        var i = g[r];
                                                        if (i.class === t.class && i.startDate > t.startDate && (!e || t.startDate < e.startDate)) return i
                                                    }
                                                    return e
                                                }), null);
                                                h && (u = h.startTime, s = !0)
                                            }
                                            for (var f, c = Object.keys(t.attr), p = 0; p < c.length; p++) {
                                                var y = c[p];
                                                if ("ID" !== (f = y) && "CLASS" !== f && "CUE" !== f && "START-DATE" !== f && "DURATION" !== f && "END-DATE" !== f && "END-ON-NEXT" !== f) {
                                                    var E = a[y];
                                                    if (E) !s || null != n && n.durationKnown ? Math.abs(E.startTime - i) > .01 && (E.startTime = i, E.endTime = u) : E.endTime = u;
                                                    else if (l) {
                                                        var T = t.attr[y];
                                                        vr(y) && (T = Q(T));
                                                        var S = gl(l, i, u, {
                                                            key: y,
                                                            data: T
                                                        }, Qi.dateRange);
                                                        S && (S.id = e, r.id3Track.addCue(S), a[y] = S, o && ("X-ASSET-LIST" !== y && "X-ASSET-URL" !== y || S.addEventListener("enter", r.onEventCueEnter)))
                                                    }
                                                }
                                            }
                                            m[e] = {
                                                cues: a,
                                                dateRange: t,
                                                durationKnown: s
                                            }
                                        }, L = 0; L < v.length; L++) S()
                                }
                            }
                        }
                    }
                }, e
            }(),
            pl = function() {
                function e(e) {
                    var t = this;
                    this.hls = void 0, this.config = void 0, this.media = null, this.currentTime = 0, this.stallCount = 0, this._latency = null, this._targetLatencyUpdated = !1, this.onTimeupdate = function() {
                        var e = t.media,
                            r = t.levelDetails;
                        if (e && r) {
                            t.currentTime = e.currentTime;
                            var i = t.computeLatency();
                            if (null !== i) {
                                t._latency = i;
                                var n = t.config,
                                    a = n.lowLatencyMode,
                                    s = n.maxLiveSyncPlaybackRate;
                                if (a && 1 !== s && r.live) {
                                    var o = t.targetLatency;
                                    if (null !== o) {
                                        var l = i - o;
                                        if (l < Math.min(t.maxLatency, o + r.targetduration) && l > .05 && t.forwardBufferLength > 1) {
                                            var u = Math.min(2, Math.max(1, s)),
                                                d = Math.round(2 / (1 + Math.exp(-.75 * l - t.edgeStalled)) * 20) / 20,
                                                h = Math.min(u, Math.max(1, d));
                                            t.changeMediaPlaybackRate(e, h)
                                        } else 1 !== e.playbackRate && 0 !== e.playbackRate && t.changeMediaPlaybackRate(e, 1)
                                    }
                                }
                            }
                        }
                    }, this.hls = e, this.config = e.config, this.registerListeners()
                }
                var t = e.prototype;
                return t.destroy = function() {
                    this.unregisterListeners(), this.onMediaDetaching(), this.hls = null
                }, t.registerListeners = function() {
                    var e = this.hls;
                    e && (e.on(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(b.ERROR, this.onError, this))
                }, t.unregisterListeners = function() {
                    var e = this.hls;
                    e && (e.off(b.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(b.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(b.ERROR, this.onError, this))
                }, t.onMediaAttached = function(e, t) {
                    this.media = t.media, this.media.addEventListener("timeupdate", this.onTimeupdate)
                }, t.onMediaDetaching = function() {
                    this.media && (this.media.removeEventListener("timeupdate", this.onTimeupdate), this.media = null)
                }, t.onManifestLoading = function() {
                    this._latency = null, this.stallCount = 0
                }, t.onLevelUpdated = function(e, t) {
                    var r = t.details;
                    r.advanced && this.onTimeupdate(), !r.live && this.media && this.media.removeEventListener("timeupdate", this.onTimeupdate)
                }, t.onError = function(e, t) {
                    var r;
                    t.details === k.BUFFER_STALLED_ERROR && (this.stallCount++, this.hls && null != (r = this.levelDetails) && r.live && this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))
                }, t.changeMediaPlaybackRate = function(e, t) {
                    var r, i;
                    e.playbackRate !== t && (null == (r = this.hls) || r.logger.debug("[latency-controller]: latency=" + this.latency.toFixed(3) + ", targetLatency=" + (null == (i = this.targetLatency) ? void 0 : i.toFixed(3)) + ", forwardBufferLength=" + this.forwardBufferLength.toFixed(3) + ": adjusting playback rate from " + e.playbackRate + " to " + t), e.playbackRate = t)
                }, t.estimateLiveEdge = function() {
                    var e = this.levelDetails;
                    return null === e ? null : e.edge + e.age
                }, t.computeLatency = function() {
                    var e = this.estimateLiveEdge();
                    return null === e ? null : e - this.currentTime
                }, i(e, [{
                    key: "levelDetails",
                    get: function() {
                        var e;
                        return (null == (e = this.hls) ? void 0 : e.latestLevelDetails) || null
                    }
                }, {
                    key: "latency",
                    get: function() {
                        return this._latency || 0
                    }
                }, {
                    key: "maxLatency",
                    get: function() {
                        var e = this.config;
                        if (void 0 !== e.liveMaxLatencyDuration) return e.liveMaxLatencyDuration;
                        var t = this.levelDetails;
                        return t ? e.liveMaxLatencyDurationCount * t.targetduration : 0
                    }
                }, {
                    key: "targetLatency",
                    get: function() {
                        var e = this.levelDetails;
                        if (null === e || null === this.hls) return null;
                        var t = e.holdBack,
                            r = e.partHoldBack,
                            i = e.targetduration,
                            n = this.config,
                            a = n.liveSyncDuration,
                            s = n.liveSyncDurationCount,
                            o = n.lowLatencyMode,
                            l = this.hls.userConfig,
                            u = o && r || t;
                        (this._targetLatencyUpdated || l.liveSyncDuration || l.liveSyncDurationCount || 0 === u) && (u = void 0 !== a ? a : s * i);
                        var d = i;
                        return u + Math.min(this.stallCount * this.config.liveSyncOnStallIncrease, d)
                    },
                    set: function(e) {
                        this.stallCount = 0, this.config.liveSyncDuration = e, this._targetLatencyUpdated = !0
                    }
                }, {
                    key: "liveSyncPosition",
                    get: function() {
                        var e = this.estimateLiveEdge(),
                            t = this.targetLatency;
                        if (null === e || null === t) return null;
                        var r = this.levelDetails;
                        if (null === r) return null;
                        var i = r.edge,
                            n = e - t - this.edgeStalled,
                            a = i - r.totalduration,
                            s = i - (this.config.lowLatencyMode && r.partTarget || r.targetduration);
                        return Math.min(Math.max(a, n), s)
                    }
                }, {
                    key: "drift",
                    get: function() {
                        var e = this.levelDetails;
                        return null === e ? 1 : e.drift
                    }
                }, {
                    key: "edgeStalled",
                    get: function() {
                        var e = this.levelDetails;
                        if (null === e) return 0;
                        var t = 3 * (this.config.lowLatencyMode && e.partTarget || e.targetduration);
                        return Math.max(e.age - t, 0)
                    }
                }, {
                    key: "forwardBufferLength",
                    get: function() {
                        var e = this.media,
                            t = this.levelDetails;
                        if (!e || !t) return 0;
                        var r = e.buffered.length;
                        return (r ? e.buffered.end(r - 1) : t.edge) - this.currentTime
                    }
                }])
            }(),
            yl = function(e) {
                function t(t, r) {
                    var i;
                    return (i = e.call(this, t, "level-controller") || this)._levels = [], i._firstLevel = -1, i._maxAutoLevel = -1, i._startLevel = void 0, i.currentLevel = null, i.currentLevelIndex = -1, i.manualLevelIndex = -1, i.steering = void 0, i.onParsedComplete = void 0, i.steering = r, i._registerListeners(), i
                }
                o(t, e);
                var r = t.prototype;
                return r._registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(b.LEVEL_LOADED, this.onLevelLoaded, this), e.on(b.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(b.FRAG_BUFFERED, this.onFragBuffered, this), e.on(b.ERROR, this.onError, this)
                }, r._unregisterListeners = function() {
                    var e = this.hls;
                    e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(b.LEVEL_LOADED, this.onLevelLoaded, this), e.off(b.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(b.FRAG_BUFFERED, this.onFragBuffered, this), e.off(b.ERROR, this.onError, this)
                }, r.destroy = function() {
                    this._unregisterListeners(), this.steering = null, this.resetLevels(), e.prototype.destroy.call(this)
                }, r.stopLoad = function() {
                    this._levels.forEach((function(e) {
                        e.loadError = 0, e.fragmentError = 0
                    })), e.prototype.stopLoad.call(this)
                }, r.resetLevels = function() {
                    this._startLevel = void 0, this.manualLevelIndex = -1, this.currentLevelIndex = -1, this.currentLevel = null, this._levels = [], this._maxAutoLevel = -1
                }, r.onManifestLoading = function(e, t) {
                    this.resetLevels()
                }, r.onManifestLoaded = function(e, t) {
                    var r = this,
                        i = this.hls.config.preferManagedMediaSource,
                        n = [],
                        a = {},
                        s = {},
                        o = !1,
                        l = !1,
                        u = !1;
                    t.levels.forEach((function(e) {
                        var t = e.attrs,
                            d = e.audioCodec,
                            h = e.videoCodec;
                        d && (e.audioCodec = d = Be(d, i) || void 0), h && (h = e.videoCodec = function(e) {
                            for (var t = e.split(","), r = 0; r < t.length; r++) {
                                var i = t[r].split(".");
                                i.length > 2 && "avc1" === i[0] && (t[r] = "avc1." + parseInt(i[1]).toString(16) + ("000" + parseInt(i[2]).toString(16)).slice(-4))
                            }
                            return t.join(",")
                        }(h));
                        var f = e.width,
                            c = e.height,
                            g = e.unknownCodecs,
                            v = g ? g.length : 0;
                        if (g)
                            for (var m = v; m--;) {
                                var p = g[m];
                                r.isAudioSupported(p) ? (e.audioCodec = d = d ? d + "," + p : p, v--, Pe.audio[d.substring(0, 4)] = 2) : r.isVideoSupported(p) && (e.videoCodec = h = h ? h + "," + p : p, v--, Pe.video[h.substring(0, 4)] = 2)
                            }
                        if (o || (o = !(!f || !c)), l || (l = !!h), u || (u = !!d), v || d && !r.isAudioSupported(d) || h && !r.isVideoSupported(h)) r.log('Some or all CODECS not supported "' + t.CODECS + '"');
                        else {
                            var y = t.CODECS,
                                E = t["FRAME-RATE"],
                                T = t["HDCP-LEVEL"],
                                S = t["PATHWAY-ID"],
                                A = t.RESOLUTION,
                                L = t["VIDEO-RANGE"],
                                R = (S || ".") + "-" + e.bitrate + "-" + A + "-" + E + "-" + y + "-" + L + "-" + T;
                            if (a[R])
                                if (a[R].uri === e.url || e.attrs["PATHWAY-ID"]) a[R].addGroupId("audio", t.AUDIO), a[R].addGroupId("text", t.SUBTITLES);
                                else {
                                    var I = s[R] += 1;
                                    e.attrs["PATHWAY-ID"] = new Array(I + 1).join(".");
                                    var k = r.createLevel(e);
                                    a[R] = k, n.push(k)
                                }
                            else {
                                var b = r.createLevel(e);
                                a[R] = b, s[R] = 1, n.push(b)
                            }
                        }
                    })), this.filterAndSortMediaOptions(n, t, o, l, u)
                }, r.createLevel = function(e) {
                    var t = new nt(e),
                        r = e.supplemental;
                    if (null != r && r.videoCodec && !this.isVideoSupported(r.videoCodec)) {
                        var i = new Error('SUPPLEMENTAL-CODECS not supported "' + r.videoCodec + '"');
                        this.log(i.message), t.supportedResult = qe(i, [])
                    }
                    return t
                }, r.isAudioSupported = function(e) {
                    return we(e, "audio", this.hls.config.preferManagedMediaSource)
                }, r.isVideoSupported = function(e) {
                    return we(e, "video", this.hls.config.preferManagedMediaSource)
                }, r.filterAndSortMediaOptions = function(e, t, r, i, n) {
                    var a = this,
                        s = [],
                        o = [],
                        l = e;
                    if ((r || i) && n && (l = l.filter((function(e) {
                            var t, r = e.videoCodec,
                                i = e.videoRange,
                                n = e.width,
                                a = e.height;
                            return (!!r || !(!n || !a)) && !!(t = i) && Ze.indexOf(t) > -1
                        }))), 0 !== l.length) {
                        t.audioTracks && El(s = t.audioTracks.filter((function(e) {
                            return !e.audioCodec || a.isAudioSupported(e.audioCodec)
                        }))), t.subtitles && El(o = t.subtitles);
                        var u = l.slice(0);
                        l.sort((function(e, t) {
                            if (e.attrs["HDCP-LEVEL"] !== t.attrs["HDCP-LEVEL"]) return (e.attrs["HDCP-LEVEL"] || "") > (t.attrs["HDCP-LEVEL"] || "") ? 1 : -1;
                            if (r && e.height !== t.height) return e.height - t.height;
                            if (e.frameRate !== t.frameRate) return e.frameRate - t.frameRate;
                            if (e.videoRange !== t.videoRange) return Ze.indexOf(e.videoRange) - Ze.indexOf(t.videoRange);
                            if (e.videoCodec !== t.videoCodec) {
                                var i = Me(e.videoCodec),
                                    n = Me(t.videoCodec);
                                if (i !== n) return n - i
                            }
                            if (e.uri === t.uri && e.codecSet !== t.codecSet) {
                                var a = Fe(e.codecSet),
                                    s = Fe(t.codecSet);
                                if (a !== s) return s - a
                            }
                            return e.averageBitrate !== t.averageBitrate ? e.averageBitrate - t.averageBitrate : 0
                        }));
                        var d = u[0];
                        if (this.steering && (l = this.steering.filterParsedLevels(l)).length !== u.length)
                            for (var h = 0; h < u.length; h++)
                                if (u[h].pathwayId === l[0].pathwayId) {
                                    d = u[h];
                                    break
                                }
                        this._levels = l;
                        for (var f = 0; f < l.length; f++)
                            if (l[f] === d) {
                                var c;
                                this._firstLevel = f;
                                var g = d.bitrate,
                                    v = this.hls.bandwidthEstimate;
                                if (this.log("manifest loaded, " + l.length + " level(s) found, first bitrate: " + g), void 0 === (null == (c = this.hls.userConfig) ? void 0 : c.abrEwmaDefaultEstimate)) {
                                    var m = Math.min(g, this.hls.config.abrEwmaDefaultEstimateMax);
                                    m > v && v === this.hls.abrEwmaDefaultEstimate && (this.hls.bandwidthEstimate = m)
                                }
                                break
                            }
                        var p = n && !i,
                            y = this.hls.config,
                            E = !(!y.audioStreamController || !y.audioTrackController),
                            T = {
                                levels: l,
                                audioTracks: s,
                                subtitleTracks: o,
                                sessionData: t.sessionData,
                                sessionKeys: t.sessionKeys,
                                firstLevel: this._firstLevel,
                                stats: t.stats,
                                audio: n,
                                video: i,
                                altAudio: E && !p && s.some((function(e) {
                                    return !!e.url
                                }))
                            };
                        this.hls.trigger(b.MANIFEST_PARSED, T)
                    } else Promise.resolve().then((function() {
                        if (a.hls) {
                            var e = "no level with compatible codecs found in manifest",
                                r = e;
                            t.levels.length && (r = "one or more CODECS in variant not supported: " + ot(t.levels.map((function(e) {
                                return e.attrs.CODECS
                            })).filter((function(e, t, r) {
                                return r.indexOf(e) === t
                            }))), a.warn(r), e += " (" + r + ")");
                            var i = new Error(e);
                            a.hls.trigger(b.ERROR, {
                                type: I.MEDIA_ERROR,
                                details: k.MANIFEST_INCOMPATIBLE_CODECS_ERROR,
                                fatal: !0,
                                url: t.url,
                                error: i,
                                reason: r
                            })
                        }
                    }))
                }, r.onError = function(e, t) {
                    !t.fatal && t.context && t.context.type === _ && t.context.level === this.level && this.checkRetry(t)
                }, r.onFragBuffered = function(e, t) {
                    var r = t.frag;
                    if (void 0 !== r && r.type === w) {
                        var i = r.elementaryStreams;
                        if (!Object.keys(i).some((function(e) {
                                return !!i[e]
                            }))) return;
                        var n = this._levels[r.level];
                        null != n && n.loadError && (this.log("Resetting level error count of " + n.loadError + " on frag buffered"), n.loadError = 0)
                    }
                }, r.onLevelLoaded = function(e, t) {
                    var r, i, n = t.level,
                        a = t.details,
                        s = t.levelInfo;
                    if (!s) return this.warn("Invalid level index " + n), void(null != (i = t.deliveryDirectives) && i.skip && (a.deltaUpdateFailed = !0));
                    if (s === this.currentLevel || t.withoutMultiVariant) {
                        0 === s.fragmentError && (s.loadError = 0);
                        var o = s.details;
                        o === t.details && o.advanced && (o = void 0), this.playlistLoaded(n, t, o)
                    } else null != (r = t.deliveryDirectives) && r.skip && (a.deltaUpdateFailed = !0)
                }, r.loadPlaylist = function(t) {
                    e.prototype.loadPlaylist.call(this), this.shouldLoadPlaylist(this.currentLevel) && this.scheduleLoading(this.currentLevel, t)
                }, r.loadingPlaylist = function(t, r) {
                    e.prototype.loadingPlaylist.call(this, t, r);
                    var i = this.getUrlWithDirectives(t.uri, r),
                        n = this.currentLevelIndex,
                        a = t.attrs["PATHWAY-ID"],
                        s = t.details,
                        o = null == s ? void 0 : s.age;
                    this.log("Loading level index " + n + (void 0 !== (null == r ? void 0 : r.msn) ? " at sn " + r.msn + " part " + r.part : "") + (a ? " Pathway " + a : "") + (o && s.live ? " age " + o.toFixed(1) + (s.type && " " + s.type || "") : "") + " " + i), this.hls.trigger(b.LEVEL_LOADING, {
                        url: i,
                        level: n,
                        levelInfo: t,
                        pathwayId: t.attrs["PATHWAY-ID"],
                        id: 0,
                        deliveryDirectives: r || null
                    })
                }, r.removeLevel = function(e) {
                    var t, r = this;
                    if (1 !== this._levels.length) {
                        var i = this._levels.filter((function(t, i) {
                            return i !== e || (r.steering && r.steering.removeLevel(t), t === r.currentLevel && (r.currentLevel = null, r.currentLevelIndex = -1, t.details && t.details.fragments.forEach((function(e) {
                                return e.level = -1
                            }))), !1)
                        }));
                        hi(i), this._levels = i, this.currentLevelIndex > -1 && null != (t = this.currentLevel) && t.details && (this.currentLevelIndex = this.currentLevel.details.fragments[0].level), this.manualLevelIndex > -1 && (this.manualLevelIndex = this.currentLevelIndex);
                        var n = i.length - 1;
                        this._firstLevel = Math.min(this._firstLevel, n), this._startLevel && (this._startLevel = Math.min(this._startLevel, n)), this.hls.trigger(b.LEVELS_UPDATED, {
                            levels: i
                        })
                    }
                }, r.onLevelsUpdated = function(e, t) {
                    var r = t.levels;
                    this._levels = r
                }, r.checkMaxAutoUpdated = function() {
                    var e = this.hls,
                        t = e.autoLevelCapping,
                        r = e.maxAutoLevel,
                        i = e.maxHdcpLevel;
                    this._maxAutoLevel !== r && (this._maxAutoLevel = r, this.hls.trigger(b.MAX_AUTO_LEVEL_UPDATED, {
                        autoLevelCapping: t,
                        levels: this.levels,
                        maxAutoLevel: r,
                        minAutoLevel: this.hls.minAutoLevel,
                        maxHdcpLevel: i
                    }))
                }, i(t, [{
                    key: "levels",
                    get: function() {
                        return 0 === this._levels.length ? null : this._levels
                    }
                }, {
                    key: "loadLevelObj",
                    get: function() {
                        return this.currentLevel
                    }
                }, {
                    key: "level",
                    get: function() {
                        return this.currentLevelIndex
                    },
                    set: function(e) {
                        var t = this._levels;
                        if (0 !== t.length) {
                            if (e < 0 || e >= t.length) {
                                var r = new Error("invalid level idx"),
                                    i = e < 0;
                                if (this.hls.trigger(b.ERROR, {
                                        type: I.OTHER_ERROR,
                                        details: k.LEVEL_SWITCH_ERROR,
                                        level: e,
                                        fatal: i,
                                        error: r,
                                        reason: r.message
                                    }), i) return;
                                e = Math.min(e, t.length - 1)
                            }
                            var n = this.currentLevelIndex,
                                a = this.currentLevel,
                                s = a ? a.attrs["PATHWAY-ID"] : void 0,
                                o = t[e],
                                l = o.attrs["PATHWAY-ID"];
                            if (this.currentLevelIndex = e, this.currentLevel = o, n !== e || !a || s !== l) {
                                this.log("Switching to level " + e + " (" + (o.height ? o.height + "p " : "") + (o.videoRange ? o.videoRange + " " : "") + (o.codecSet ? o.codecSet + " " : "") + "@" + o.bitrate + ")" + (l ? " with Pathway " + l : "") + " from level " + n + (s ? " with Pathway " + s : ""));
                                var u = {
                                    level: e,
                                    attrs: o.attrs,
                                    details: o.details,
                                    bitrate: o.bitrate,
                                    averageBitrate: o.averageBitrate,
                                    maxBitrate: o.maxBitrate,
                                    realBitrate: o.realBitrate,
                                    width: o.width,
                                    height: o.height,
                                    codecSet: o.codecSet,
                                    audioCodec: o.audioCodec,
                                    videoCodec: o.videoCodec,
                                    audioGroups: o.audioGroups,
                                    subtitleGroups: o.subtitleGroups,
                                    loaded: o.loaded,
                                    loadError: o.loadError,
                                    fragmentError: o.fragmentError,
                                    name: o.name,
                                    id: o.id,
                                    uri: o.uri,
                                    url: o.url,
                                    urlId: 0,
                                    audioGroupIds: o.audioGroupIds,
                                    textGroupIds: o.textGroupIds
                                };
                                this.hls.trigger(b.LEVEL_SWITCHING, u);
                                var d = o.details;
                                if (!d || d.live) {
                                    var h = this.switchParams(o.uri, null == a ? void 0 : a.details, d);
                                    this.loadPlaylist(h)
                                }
                            }
                        }
                    }
                }, {
                    key: "manualLevel",
                    get: function() {
                        return this.manualLevelIndex
                    },
                    set: function(e) {
                        this.manualLevelIndex = e, void 0 === this._startLevel && (this._startLevel = e), -1 !== e && (this.level = e)
                    }
                }, {
                    key: "firstLevel",
                    get: function() {
                        return this._firstLevel
                    },
                    set: function(e) {
                        this._firstLevel = e
                    }
                }, {
                    key: "startLevel",
                    get: function() {
                        if (void 0 === this._startLevel) {
                            var e = this.hls.config.startLevel;
                            return void 0 !== e ? e : this.hls.firstAutoLevel
                        }
                        return this._startLevel
                    },
                    set: function(e) {
                        this._startLevel = e
                    }
                }, {
                    key: "pathways",
                    get: function() {
                        return this.steering ? this.steering.pathways() : []
                    }
                }, {
                    key: "pathwayPriority",
                    get: function() {
                        return this.steering ? this.steering.pathwayPriority : null
                    },
                    set: function(e) {
                        if (this.steering) {
                            var t = this.steering.pathways(),
                                r = e.filter((function(e) {
                                    return -1 !== t.indexOf(e)
                                }));
                            if (e.length < 1) return void this.warn("pathwayPriority " + e + " should contain at least one pathway from list: " + t);
                            this.steering.pathwayPriority = r
                        }
                    }
                }, {
                    key: "nextLoadLevel",
                    get: function() {
                        return -1 !== this.manualLevelIndex ? this.manualLevelIndex : this.hls.nextAutoLevel
                    },
                    set: function(e) {
                        this.level = e, -1 === this.manualLevelIndex && (this.hls.nextAutoLevel = e)
                    }
                }])
            }(da);

        function El(e) {
            var t = {};
            e.forEach((function(e) {
                var r = e.groupId || "";
                e.id = t[r] = t[r] || 0, t[r]++
            }))
        }

        function Tl() {
            return self.SourceBuffer || self.WebKitSourceBuffer
        }

        function Sl() {
            if (!W()) return !1;
            var e = Tl();
            return !e || e.prototype && "function" == typeof e.prototype.appendBuffer && "function" == typeof e.prototype.remove
        }
        var Al = function(e) {
                function t(t, r, i) {
                    var n;
                    return (n = e.call(this, t, r, i, "stream-controller", w) || this).audioCodecSwap = !1, n.level = -1, n._forceStartLoad = !1, n._hasEnoughToStart = !1, n.altAudio = 0, n.audioOnly = !1, n.fragPlaying = null, n.fragLastKbps = 0, n.couldBacktrack = !1, n.backtrackFragment = null, n.audioCodecSwitch = !1, n.videoBuffer = null, n.onMediaPlaying = function() {
                        n.tick()
                    }, n.onMediaSeeked = function() {
                        var e = n.media,
                            t = e ? e.currentTime : null;
                        if (null !== t && A(t) && (n.log("Media seeked to " + t.toFixed(3)), n.getBufferedFrag(t))) {
                            var r = n.getFwdBufferInfoAtPos(e, t, w, 0);
                            null !== r && 0 !== r.len ? n.tick() : n.warn("Main forward buffer length at " + t + ' on "seeked" event ' + (r ? r.len : "empty") + ")")
                        }
                    }, n.registerListeners(), n
                }
                o(t, e);
                var r = t.prototype;
                return r.registerListeners = function() {
                    e.prototype.registerListeners.call(this);
                    var t = this.hls;
                    t.on(b.MANIFEST_PARSED, this.onManifestParsed, this), t.on(b.LEVEL_LOADING, this.onLevelLoading, this), t.on(b.LEVEL_LOADED, this.onLevelLoaded, this), t.on(b.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this), t.on(b.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), t.on(b.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), t.on(b.BUFFER_CREATED, this.onBufferCreated, this), t.on(b.BUFFER_FLUSHED, this.onBufferFlushed, this), t.on(b.LEVELS_UPDATED, this.onLevelsUpdated, this), t.on(b.FRAG_BUFFERED, this.onFragBuffered, this)
                }, r.unregisterListeners = function() {
                    e.prototype.unregisterListeners.call(this);
                    var t = this.hls;
                    t.off(b.MANIFEST_PARSED, this.onManifestParsed, this), t.off(b.LEVEL_LOADED, this.onLevelLoaded, this), t.off(b.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this), t.off(b.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), t.off(b.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), t.off(b.BUFFER_CREATED, this.onBufferCreated, this), t.off(b.BUFFER_FLUSHED, this.onBufferFlushed, this), t.off(b.LEVELS_UPDATED, this.onLevelsUpdated, this), t.off(b.FRAG_BUFFERED, this.onFragBuffered, this)
                }, r.onHandlerDestroying = function() {
                    this.onMediaPlaying = this.onMediaSeeked = null, this.unregisterListeners(), e.prototype.onHandlerDestroying.call(this)
                }, r.startLoad = function(e, t) {
                    if (this.levels) {
                        var r = this.lastCurrentTime,
                            i = this.hls;
                        if (this.stopLoad(), this.setInterval(100), this.level = -1, !this.startFragRequested) {
                            var n = i.startLevel; - 1 === n && (i.config.testBandwidth && this.levels.length > 1 ? (n = 0, this.bitrateTest = !0) : n = i.firstAutoLevel), i.nextLoadLevel = n, this.level = i.loadLevel, this._hasEnoughToStart = !!t
                        }
                        r > 0 && -1 === e && !t && (this.log("Override startPosition with lastCurrentTime @" + r.toFixed(3)), e = r), this.state = Ai.IDLE, this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick()
                    } else this._forceStartLoad = !0, this.state = Ai.STOPPED
                }, r.stopLoad = function() {
                    this._forceStartLoad = !1, e.prototype.stopLoad.call(this)
                }, r.doTick = function() {
                    switch (this.state) {
                        case Ai.WAITING_LEVEL:
                            var e = this.levels,
                                t = this.level,
                                r = null == e ? void 0 : e[t],
                                i = null == r ? void 0 : r.details;
                            if (i && (!i.live || this.levelLastLoaded === r && !this.waitForLive(r))) {
                                if (this.waitForCdnTuneIn(i)) break;
                                this.state = Ai.IDLE;
                                break
                            }
                            if (this.hls.nextLoadLevel !== this.level) {
                                this.state = Ai.IDLE;
                                break
                            }
                            break;
                        case Ai.FRAG_LOADING_WAITING_RETRY:
                            this.checkRetryDate()
                    }
                    this.state === Ai.IDLE && this.doTickIdle(), this.onTickEnd()
                }, r.onTickEnd = function() {
                    var t;
                    e.prototype.onTickEnd.call(this), null != (t = this.media) && t.readyState && !1 === this.media.seeking && (this.lastCurrentTime = this.media.currentTime), this.checkFragmentChanged()
                }, r.doTickIdle = function() {
                    var e = this.hls,
                        t = this.levelLastLoaded,
                        r = this.levels,
                        i = this.media;
                    if (null !== t && (i || this.primaryPrefetch || !this.startFragRequested && e.config.startFragPrefetch) && (!this.altAudio || !this.audioOnly)) {
                        var n = this.buffering ? e.nextLoadLevel : e.loadLevel;
                        if (null != r && r[n]) {
                            var a = r[n],
                                s = this.getMainFwdBufferInfo();
                            if (null !== s) {
                                var o = this.getLevelDetails();
                                if (o && this._streamEnded(s, o)) {
                                    var l = {};
                                    return 2 === this.altAudio && (l.type = "video"), this.hls.trigger(b.BUFFER_EOS, l), void(this.state = Ai.ENDED)
                                }
                                if (this.buffering) {
                                    e.loadLevel !== n && -1 === e.manualLevel && this.log("Adapting to level " + n + " from level " + this.level), this.level = e.nextLoadLevel = n;
                                    var u = a.details;
                                    if (!u || this.state === Ai.WAITING_LEVEL || this.waitForLive(a)) return this.level = n, this.state = Ai.WAITING_LEVEL, void(this.startFragRequested = !1);
                                    var d = s.len,
                                        h = this.getMaxBufferLength(a.maxBitrate);
                                    if (!(d >= h)) {
                                        this.backtrackFragment && this.backtrackFragment.start > s.end && (this.backtrackFragment = null);
                                        var f = this.backtrackFragment ? this.backtrackFragment.start : s.end,
                                            c = this.getNextFragment(f, u);
                                        if (this.couldBacktrack && !this.fragPrevious && c && te(c) && this.fragmentTracker.getState(c) !== Kt) {
                                            var g, v = (null != (g = this.backtrackFragment) ? g : c).sn - u.startSN,
                                                m = u.fragments[v - 1];
                                            m && c.cc === m.cc && (c = m, this.fragmentTracker.removeFragment(m))
                                        } else this.backtrackFragment && s.len && (this.backtrackFragment = null);
                                        if (c && this.isLoopLoading(c, f)) {
                                            if (!c.gap) {
                                                var p = this.audioOnly && !this.altAudio ? $ : Z,
                                                    y = (p === Z ? this.videoBuffer : this.mediaBuffer) || this.media;
                                                y && this.afterBufferFlushed(y, p, w)
                                            }
                                            c = this.getNextFragmentLoopLoading(c, u, s, w, h)
                                        }
                                        c && (!c.initSegment || c.initSegment.data || this.bitrateTest || (c = c.initSegment), this.loadFragment(c, a, f))
                                    }
                                }
                            }
                        }
                    }
                }, r.loadFragment = function(t, r, i) {
                    var n = this.fragmentTracker.getState(t);
                    n === Ut || n === Gt ? te(t) ? this.bitrateTest ? (this.log("Fragment " + t.sn + " of level " + t.level + " is being downloaded to test bitrate and will not be buffered"), this._loadBitrateTestFrag(t, r)) : e.prototype.loadFragment.call(this, t, r, i) : this._loadInitSegment(t, r) : this.clearTrackerIfNeeded(t)
                }, r.getBufferedFrag = function(e) {
                    return this.fragmentTracker.getBufferedFrag(e, w)
                }, r.followingBufferedFrag = function(e) {
                    return e ? this.getBufferedFrag(e.end + .5) : null
                }, r.immediateLevelSwitch = function() {
                    this.abortCurrentFrag(), this.flushMainBuffer(0, Number.POSITIVE_INFINITY)
                }, r.nextLevelSwitch = function() {
                    var e = this.levels,
                        t = this.media;
                    if (null != t && t.readyState) {
                        var r, i = this.getAppendedFrag(t.currentTime);
                        i && i.start > 1 && this.flushMainBuffer(0, i.start - 1);
                        var n = this.getLevelDetails();
                        if (null != n && n.live) {
                            var a = this.getMainFwdBufferInfo();
                            if (!a || a.len < 2 * n.targetduration) return
                        }
                        if (!t.paused && e) {
                            var s = e[this.hls.nextLoadLevel],
                                o = this.fragLastKbps;
                            r = o && this.fragCurrent ? this.fragCurrent.duration * s.maxBitrate / (1e3 * o) + 1 : 0
                        } else r = 0;
                        var l = this.getBufferedFrag(t.currentTime + r);
                        if (l) {
                            var u = this.followingBufferedFrag(l);
                            if (u) {
                                this.abortCurrentFrag();
                                var d = u.maxStartPTS ? u.maxStartPTS : u.start,
                                    h = u.duration,
                                    f = Math.max(l.end, d + Math.min(Math.max(h - this.config.maxFragLookUpTolerance, h * (this.couldBacktrack ? .5 : .125)), h * (this.couldBacktrack ? .75 : .25)));
                                this.flushMainBuffer(f, Number.POSITIVE_INFINITY)
                            }
                        }
                    }
                }, r.abortCurrentFrag = function() {
                    var e = this.fragCurrent;
                    switch (this.fragCurrent = null, this.backtrackFragment = null, e && (e.abortRequests(), this.fragmentTracker.removeFragment(e)), this.state) {
                        case Ai.KEY_LOADING:
                        case Ai.FRAG_LOADING:
                        case Ai.FRAG_LOADING_WAITING_RETRY:
                        case Ai.PARSING:
                        case Ai.PARSED:
                            this.state = Ai.IDLE
                    }
                    this.nextLoadPosition = this.getLoadPosition()
                }, r.flushMainBuffer = function(t, r) {
                    e.prototype.flushMainBuffer.call(this, t, r, 2 === this.altAudio ? "video" : null)
                }, r.onMediaAttached = function(t, r) {
                    e.prototype.onMediaAttached.call(this, t, r);
                    var i = r.media;
                    Ei(i, "playing", this.onMediaPlaying), Ei(i, "seeked", this.onMediaSeeked)
                }, r.onMediaDetaching = function(t, r) {
                    var i = this.media;
                    i && (Ti(i, "playing", this.onMediaPlaying), Ti(i, "seeked", this.onMediaSeeked)), this.videoBuffer = null, this.fragPlaying = null, e.prototype.onMediaDetaching.call(this, t, r), r.transferMedia || (this._hasEnoughToStart = !1)
                }, r.onManifestLoading = function() {
                    e.prototype.onManifestLoading.call(this), this.log("Trigger BUFFER_RESET"), this.hls.trigger(b.BUFFER_RESET, void 0), this.couldBacktrack = !1, this.fragLastKbps = 0, this.fragPlaying = this.backtrackFragment = null, this.altAudio = 0, this.audioOnly = !1
                }, r.onManifestParsed = function(e, t) {
                    for (var r, i, n = !1, a = !1, s = 0; s < t.levels.length; s++) {
                        var o = t.levels[s].audioCodec;
                        o && (n = n || -1 !== o.indexOf("mp4a.40.2"), a = a || -1 !== o.indexOf("mp4a.40.5"))
                    }
                    this.audioCodecSwitch = n && a && !("function" == typeof(null == (i = Tl()) || null == (r = i.prototype) ? void 0 : r.changeType)), this.audioCodecSwitch && this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"), this.levels = t.levels, this.startFragRequested = !1
                }, r.onLevelLoading = function(e, t) {
                    if (this.levels && this.state === Ai.IDLE) {
                        var r = t.levelInfo;
                        (!r.details || r.details.live && (this.levelLastLoaded !== r || r.details.expired) || this.waitForCdnTuneIn(r.details)) && (this.state = Ai.WAITING_LEVEL)
                    }
                }, r.onLevelLoaded = function(e, t) {
                    var r, i = this.levels,
                        n = this.startFragRequested,
                        a = t.level,
                        s = t.details,
                        o = s.totalduration;
                    if (i) {
                        this.log("Level " + a + " loaded [" + s.startSN + "," + s.endSN + "]" + (s.lastPartSn ? "[part-" + s.lastPartSn + "-" + s.lastPartIndex + "]" : "") + ", cc [" + s.startCC + ", " + s.endCC + "] duration:" + o);
                        var l = t.levelInfo,
                            u = this.fragCurrent;
                        !u || this.state !== Ai.FRAG_LOADING && this.state !== Ai.FRAG_LOADING_WAITING_RETRY || u.level !== t.level && u.loader && this.abortCurrentFrag();
                        var d = 0;
                        if (s.live || null != (r = l.details) && r.live) {
                            var h;
                            if (this.checkLiveUpdate(s), s.deltaUpdateFailed) return;
                            d = this.alignPlaylists(s, l.details, null == (h = this.levelLastLoaded) ? void 0 : h.details)
                        }
                        if (l.details = s, this.levelLastLoaded = l, n || this.setStartPosition(s, d), this.hls.trigger(b.LEVEL_UPDATED, {
                                details: s,
                                level: a
                            }), this.state === Ai.WAITING_LEVEL) {
                            if (this.waitForCdnTuneIn(s)) return;
                            this.state = Ai.IDLE
                        }
                        n && s.live && this.synchronizeToLiveEdge(s), this.tick()
                    } else this.warn("Levels were reset while loading level " + a)
                }, r.synchronizeToLiveEdge = function(e) {
                    var t = this.config,
                        r = this.media;
                    if (r) {
                        var i = this.hls.liveSyncPosition,
                            n = this.getLoadPosition(),
                            a = e.fragmentStart,
                            s = e.edge,
                            o = n >= a - t.maxFragLookUpTolerance && n <= s;
                        if (null !== i && r.duration > i && (n < i || !o)) {
                            var l = void 0 !== t.liveMaxLatencyDuration ? t.liveMaxLatencyDuration : t.liveMaxLatencyDurationCount * e.targetduration;
                            if ((!o && r.readyState < 4 || n < s - l) && (this._hasEnoughToStart || (this.nextLoadPosition = i), r.readyState))
                                if (this.warn("Playback: " + n.toFixed(3) + " is located too far from the end of live sliding playlist: " + s + ", reset currentTime to : " + i.toFixed(3)), "buffered" === this.config.liveSyncMode) {
                                    var u, d = sr.bufferInfo(r, i, 0);
                                    if (null == (u = d.buffered) || !u.length) return void(r.currentTime = i);
                                    if (d.start <= n) return void(r.currentTime = i);
                                    var h = sr.bufferedInfo(d.buffered, n, 0).nextStart;
                                    h && (r.currentTime = h)
                                } else r.currentTime = i
                        }
                    }
                }, r._handleFragmentLoadProgress = function(e) {
                    var t, r = e.frag,
                        i = e.part,
                        n = e.payload,
                        a = this.levels;
                    if (a) {
                        var s = a[r.level];
                        if (s) {
                            var o = s.details;
                            if (!o) return this.warn("Dropping fragment " + r.sn + " of level " + r.level + " after level details were reset"), void this.fragmentTracker.removeFragment(r);
                            var l = s.videoCodec,
                                u = o.PTSKnown || !o.live,
                                d = null == (t = r.initSegment) ? void 0 : t.data,
                                h = this._getAudioCodec(s),
                                f = this.transmuxer = this.transmuxer || new la(this.hls, w, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this)),
                                c = i ? i.index : -1,
                                g = -1 !== c,
                                v = new nr(r.level, r.sn, r.stats.chunkCount, n.byteLength, c, g),
                                m = this.initPTS[r.cc];
                            f.push(n, d, h, l, r, i, o.totalduration, u, v, m)
                        } else this.warn("Level " + r.level + " not found on progress")
                    } else this.warn("Levels were reset while fragment load was in progress. Fragment " + r.sn + " of level " + r.level + " will not be buffered")
                }, r.onAudioTrackSwitching = function(e, t) {
                    var r = this,
                        i = this.hls,
                        n = 2 === this.altAudio;
                    if (vt(t.url, i)) this.altAudio = 1;
                    else {
                        if (this.mediaBuffer !== this.media) {
                            this.log("Switching on main audio, use media.buffered to schedule main fragment loading"), this.mediaBuffer = this.media;
                            var a = this.fragCurrent;
                            a && (this.log("Switching to main audio track, cancel main fragment load"), a.abortRequests(), this.fragmentTracker.removeFragment(a)), this.resetTransmuxer(), this.resetLoadingState()
                        } else this.audioOnly && this.resetTransmuxer();
                        if (n) return this.fragmentTracker.removeAllFragments(), i.once(b.BUFFER_FLUSHED, (function() {
                            r.hls && r.hls.trigger(b.AUDIO_TRACK_SWITCHED, t)
                        })), void i.trigger(b.BUFFER_FLUSHING, {
                            startOffset: 0,
                            endOffset: Number.POSITIVE_INFINITY,
                            type: null
                        });
                        i.trigger(b.AUDIO_TRACK_SWITCHED, t)
                    }
                }, r.onAudioTrackSwitched = function(e, t) {
                    var r = vt(t.url, this.hls);
                    if (r) {
                        var i = this.videoBuffer;
                        i && this.mediaBuffer !== i && (this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"), this.mediaBuffer = i)
                    }
                    this.altAudio = r ? 2 : 0, this.tick()
                }, r.onBufferCreated = function(e, t) {
                    var r, i, n = t.tracks,
                        a = !1;
                    for (var s in n) {
                        var o = n[s];
                        if ("main" === o.id) {
                            if (i = s, r = o, "video" === s) {
                                var l = n[s];
                                l && (this.videoBuffer = l.buffer)
                            }
                        } else a = !0
                    }
                    a && r ? (this.log("Alternate track found, use " + i + ".buffered to schedule main fragment loading"), this.mediaBuffer = r.buffer) : this.mediaBuffer = this.media
                }, r.onFragBuffered = function(e, t) {
                    var r = t.frag,
                        i = t.part,
                        n = r.type === w;
                    if (n) {
                        if (this.fragContextChanged(r)) return this.warn("Fragment " + r.sn + (i ? " p: " + i.index : "") + " of level " + r.level + " finished buffering, but was aborted. state: " + this.state), void(this.state === Ai.PARSED && (this.state = Ai.IDLE));
                        var a = i ? i.stats : r.stats;
                        this.fragLastKbps = Math.round(8 * a.total / (a.buffering.end - a.loading.first)), te(r) && (this.fragPrevious = r), this.fragBufferedComplete(r, i)
                    }
                    var s = this.media;
                    s && (!this._hasEnoughToStart && sr.getBuffered(s).length && (this._hasEnoughToStart = !0, this.seekToStartPos()), n && this.tick())
                }, r.onError = function(e, t) {
                    var r;
                    if (t.fatal) this.state = Ai.ERROR;
                    else switch (t.details) {
                        case k.FRAG_GAP:
                        case k.FRAG_PARSING_ERROR:
                        case k.FRAG_DECRYPT_ERROR:
                        case k.FRAG_LOAD_ERROR:
                        case k.FRAG_LOAD_TIMEOUT:
                        case k.KEY_LOAD_ERROR:
                        case k.KEY_LOAD_TIMEOUT:
                            this.onFragmentOrKeyLoadError(w, t);
                            break;
                        case k.LEVEL_LOAD_ERROR:
                        case k.LEVEL_LOAD_TIMEOUT:
                        case k.LEVEL_PARSING_ERROR:
                            t.levelRetry || this.state !== Ai.WAITING_LEVEL || (null == (r = t.context) ? void 0 : r.type) !== _ || (this.state = Ai.IDLE);
                            break;
                        case k.BUFFER_ADD_CODEC_ERROR:
                        case k.BUFFER_APPEND_ERROR:
                            if ("main" !== t.parent) return;
                            this.reduceLengthAndFlushBuffer(t) && this.resetLoadingState();
                            break;
                        case k.BUFFER_FULL_ERROR:
                            if ("main" !== t.parent) return;
                            this.reduceLengthAndFlushBuffer(t) && (!this.config.interstitialsController && this.config.assetPlayerId ? this._hasEnoughToStart = !0 : this.flushMainBuffer(0, Number.POSITIVE_INFINITY));
                            break;
                        case k.INTERNAL_EXCEPTION:
                            this.recoverWorkerError(t)
                    }
                }, r.onFragLoadEmergencyAborted = function() {
                    this.state = Ai.IDLE, this._hasEnoughToStart || (this.startFragRequested = !1, this.nextLoadPosition = this.lastCurrentTime), this.tickImmediate()
                }, r.onBufferFlushed = function(e, t) {
                    var r = t.type;
                    if (r !== $ || !this.altAudio) {
                        var i = (r === Z ? this.videoBuffer : this.mediaBuffer) || this.media;
                        i && (this.afterBufferFlushed(i, r, w), this.tick())
                    }
                }, r.onLevelsUpdated = function(e, t) {
                    this.level > -1 && this.fragCurrent && (this.level = this.fragCurrent.level, -1 === this.level && this.resetWhenMissingContext(this.fragCurrent)), this.levels = t.levels
                }, r.swapAudioCodec = function() {
                    this.audioCodecSwap = !this.audioCodecSwap
                }, r.seekToStartPos = function() {
                    var e = this.media;
                    if (e) {
                        var t = e.currentTime,
                            r = this.startPosition;
                        if (r >= 0 && t < r) {
                            if (e.seeking) return void this.log("could not seek to " + r + ", already seeking at " + t);
                            var i = this.timelineOffset;
                            i && r && (r += i);
                            var n = this.getLevelDetails(),
                                a = sr.getBuffered(e),
                                s = a.length ? a.start(0) : 0,
                                o = s - r,
                                l = Math.max(this.config.maxBufferHole, this.config.maxFragLookUpTolerance);
                            (this.config.startOnSegmentBoundary || o > 0 && (o < l || this.loadingParts && o < 2 * ((null == n ? void 0 : n.partTarget) || 0))) && (this.log("adjusting start position by " + o + " to match buffer start"), r += o, this.startPosition = r), t < r && (this.log("seek to target start position " + r + " from current time " + t + " buffer start " + s), e.currentTime = r)
                        }
                    }
                }, r._getAudioCodec = function(e) {
                    var t = this.config.defaultAudioCodec || e.audioCodec;
                    return this.audioCodecSwap && t && (this.log("Swapping audio codec"), t = -1 !== t.indexOf("mp4a.40.5") ? "mp4a.40.2" : "mp4a.40.5"), t
                }, r._loadBitrateTestFrag = function(e, t) {
                    var r = this;
                    e.bitrateTest = !0, this._doFragLoad(e, t).then((function(e) {
                        var i = r.hls,
                            n = null == e ? void 0 : e.frag;
                        if (n && !r.fragContextChanged(n)) {
                            t.fragmentError = 0, r.state = Ai.IDLE, r.startFragRequested = !1, r.bitrateTest = !1;
                            var a = n.stats;
                            a.parsing.start = a.parsing.end = a.buffering.start = a.buffering.end = self.performance.now(), i.trigger(b.FRAG_LOADED, e), n.bitrateTest = !1
                        }
                    })).catch((function(t) {
                        r.state !== Ai.STOPPED && r.state !== Ai.ERROR && (r.warn(t), r.resetFragmentLoading(e))
                    }))
                }, r._handleTransmuxComplete = function(e) {
                    var t = this.playlistType,
                        r = this.hls,
                        i = e.remuxResult,
                        n = e.chunkMeta,
                        a = this.getCurrentContext(n);
                    if (a) {
                        var s = a.frag,
                            o = a.part,
                            l = a.level,
                            u = i.video,
                            d = i.text,
                            h = i.id3,
                            f = i.initSegment,
                            c = l.details,
                            g = this.altAudio ? void 0 : i.audio;
                        if (this.fragContextChanged(s)) this.fragmentTracker.removeFragment(s);
                        else {
                            if (this.state = Ai.PARSING, f) {
                                var v = f.tracks;
                                if (v) {
                                    var m = s.initSegment || s;
                                    if (this.unhandledEncryptionError(f, s)) return;
                                    this._bufferInitSegment(l, v, m, n), r.trigger(b.FRAG_PARSING_INIT_SEGMENT, {
                                        frag: m,
                                        id: t,
                                        tracks: v
                                    })
                                }
                                var p = f.initPTS,
                                    y = f.timescale,
                                    E = this.initPTS[s.cc];
                                if (A(p) && (!E || E.baseTime !== p || E.timescale !== y)) {
                                    var T = f.trackId;
                                    this.initPTS[s.cc] = {
                                        baseTime: p,
                                        timescale: y,
                                        trackId: T
                                    }, r.trigger(b.INIT_PTS_FOUND, {
                                        frag: s,
                                        id: t,
                                        initPTS: p,
                                        timescale: y,
                                        trackId: T
                                    })
                                }
                            }
                            if (u && c) {
                                g && "audiovideo" === u.type && this.logMuxedErr(s);
                                var S = c.fragments[s.sn - 1 - c.startSN],
                                    L = s.sn === c.startSN,
                                    R = !S || s.cc > S.cc;
                                if (!1 !== i.independent) {
                                    var I = u.startPTS,
                                        k = u.endPTS,
                                        D = u.startDTS,
                                        _ = u.endDTS;
                                    if (o) o.elementaryStreams[u.type] = {
                                        startPTS: I,
                                        endPTS: k,
                                        startDTS: D,
                                        endDTS: _
                                    };
                                    else if (u.firstKeyFrame && u.independent && 1 === n.id && !R && (this.couldBacktrack = !0), u.dropped && u.independent) {
                                        var P = this.getMainFwdBufferInfo(),
                                            C = (P ? P.end : this.getLoadPosition()) + this.config.maxBufferHole,
                                            w = u.firstKeyFramePTS ? u.firstKeyFramePTS : I;
                                        if (!L && C < w - this.config.maxBufferHole && !R) return void this.backtrack(s);
                                        R && (s.gap = !0), s.setElementaryStreamInfo(u.type, s.start, k, s.start, _, !0)
                                    } else L && I - (c.appliedTimelineOffset || 0) > 2 && (s.gap = !0);
                                    s.setElementaryStreamInfo(u.type, I, k, D, _), this.backtrackFragment && (this.backtrackFragment = s), this.bufferFragmentData(u, s, o, n, L || R)
                                } else {
                                    if (!L && !R) return void this.backtrack(s);
                                    s.gap = !0
                                }
                            }
                            if (g) {
                                var O = g.startPTS,
                                    x = g.endPTS,
                                    M = g.startDTS,
                                    F = g.endDTS;
                                o && (o.elementaryStreams[$] = {
                                    startPTS: O,
                                    endPTS: x,
                                    startDTS: M,
                                    endDTS: F
                                }), s.setElementaryStreamInfo($, O, x, M, F), this.bufferFragmentData(g, s, o, n)
                            }
                            if (c && null != h && h.samples.length) {
                                var N = {
                                    id: t,
                                    frag: s,
                                    details: c,
                                    samples: h.samples
                                };
                                r.trigger(b.FRAG_PARSING_METADATA, N)
                            }
                            if (c && d) {
                                var U = {
                                    id: t,
                                    frag: s,
                                    details: c,
                                    samples: d.samples
                                };
                                r.trigger(b.FRAG_PARSING_USERDATA, U)
                            }
                        }
                    } else this.resetWhenMissingContext(n)
                }, r.logMuxedErr = function(e) {
                    this.warn((te(e) ? "Media" : "Init") + " segment with muxed audiovideo where only video expected: " + e.url)
                }, r._bufferInitSegment = function(e, t, r, i) {
                    var n = this;
                    if (this.state === Ai.PARSING) {
                        this.audioOnly = !!t.audio && !t.video, this.altAudio && !this.audioOnly && (delete t.audio, t.audiovideo && this.logMuxedErr(r));
                        var a = t.audio,
                            s = t.video,
                            o = t.audiovideo;
                        if (a) {
                            var l = e.audioCodec,
                                u = Ge(a.codec, l);
                            "mp4a" === u && (u = "mp4a.40.5");
                            var d = navigator.userAgent.toLowerCase();
                            if (this.audioCodecSwitch) {
                                u && (u = -1 !== u.indexOf("mp4a.40.5") ? "mp4a.40.2" : "mp4a.40.5");
                                var h = a.metadata;
                                h && "channelCount" in h && 1 !== (h.channelCount || 1) && -1 === d.indexOf("firefox") && (u = "mp4a.40.5")
                            }
                            u && -1 !== u.indexOf("mp4a.40.5") && -1 !== d.indexOf("android") && "audio/mpeg" !== a.container && (u = "mp4a.40.2", this.log("Android: force audio codec to " + u)), l && l !== u && this.log('Swapping manifest audio codec "' + l + '" for "' + u + '"'), a.levelCodec = u, a.id = w, this.log("Init audio buffer, container:" + a.container + ", codecs[selected/level/parsed]=[" + (u || "") + "/" + (l || "") + "/" + a.codec + "]"), delete t.audiovideo
                        }
                        if (s) {
                            s.levelCodec = e.videoCodec, s.id = w;
                            var f = s.codec;
                            if (4 === (null == f ? void 0 : f.length)) switch (f) {
                                case "hvc1":
                                case "hev1":
                                    s.codec = "hvc1.1.6.L120.90";
                                    break;
                                case "av01":
                                    s.codec = "av01.0.04M.08";
                                    break;
                                case "avc1":
                                    s.codec = "avc1.42e01e"
                            }
                            this.log("Init video buffer, container:" + s.container + ", codecs[level/parsed]=[" + (e.videoCodec || "") + "/" + f + "]" + (s.codec !== f ? " parsed-corrected=" + s.codec : "") + (s.supplemental ? " supplemental=" + s.supplemental : "")), delete t.audiovideo
                        }
                        o && (this.log("Init audiovideo buffer, container:" + o.container + ", codecs[level/parsed]=[" + e.codecs + "/" + o.codec + "]"), delete t.video, delete t.audio);
                        var c = Object.keys(t);
                        if (c.length) {
                            if (this.hls.trigger(b.BUFFER_CODECS, t), !this.hls) return;
                            c.forEach((function(e) {
                                var a = t[e].initSegment;
                                null != a && a.byteLength && n.hls.trigger(b.BUFFER_APPENDING, {
                                    type: e,
                                    data: a,
                                    frag: r,
                                    part: null,
                                    chunkMeta: i,
                                    parent: r.type
                                })
                            }))
                        }
                        this.tickImmediate()
                    }
                }, r.getMainFwdBufferInfo = function() {
                    var e = this.mediaBuffer && 2 === this.altAudio ? this.mediaBuffer : this.media;
                    return this.getFwdBufferInfo(e, w)
                }, r.backtrack = function(e) {
                    this.couldBacktrack = !0, this.backtrackFragment = e, this.resetTransmuxer(), this.flushBufferGap(e), this.fragmentTracker.removeFragment(e), this.fragPrevious = null, this.nextLoadPosition = e.start, this.state = Ai.IDLE
                }, r.checkFragmentChanged = function() {
                    var e = this.media,
                        t = null;
                    if (e && e.readyState > 1 && !1 === e.seeking) {
                        var r = e.currentTime;
                        if (sr.isBuffered(e, r) ? t = this.getAppendedFrag(r) : sr.isBuffered(e, r + .1) && (t = this.getAppendedFrag(r + .1)), t) {
                            this.backtrackFragment = null;
                            var i = this.fragPlaying,
                                n = t.level;
                            i && t.sn === i.sn && i.level === n || (this.fragPlaying = t, this.hls.trigger(b.FRAG_CHANGED, {
                                frag: t
                            }), i && i.level === n || this.hls.trigger(b.LEVEL_SWITCHED, {
                                level: n
                            }))
                        }
                    }
                }, i(t, [{
                    key: "hasEnoughToStart",
                    get: function() {
                        return this._hasEnoughToStart
                    }
                }, {
                    key: "maxBufferLength",
                    get: function() {
                        var e = this.levels,
                            t = this.level,
                            r = null == e ? void 0 : e[t];
                        return r ? this.getMaxBufferLength(r.maxBitrate) : this.config.maxBufferLength
                    }
                }, {
                    key: "nextLevel",
                    get: function() {
                        var e = this.nextBufferedFrag;
                        return e ? e.level : -1
                    }
                }, {
                    key: "currentFrag",
                    get: function() {
                        var e;
                        if (this.fragPlaying) return this.fragPlaying;
                        var t = (null == (e = this.media) ? void 0 : e.currentTime) || this.lastCurrentTime;
                        return A(t) ? this.getAppendedFrag(t) : null
                    }
                }, {
                    key: "currentProgramDateTime",
                    get: function() {
                        var e, t = (null == (e = this.media) ? void 0 : e.currentTime) || this.lastCurrentTime;
                        if (A(t)) {
                            var r = this.getLevelDetails(),
                                i = this.currentFrag || (r ? yt(null, r.fragments, t) : null);
                            if (i) {
                                var n = i.programDateTime;
                                if (null !== n) {
                                    var a = n + 1e3 * (t - i.start);
                                    return new Date(a)
                                }
                            }
                        }
                        return null
                    }
                }, {
                    key: "currentLevel",
                    get: function() {
                        var e = this.currentFrag;
                        return e ? e.level : -1
                    }
                }, {
                    key: "nextBufferedFrag",
                    get: function() {
                        var e = this.currentFrag;
                        return e ? this.followingBufferedFrag(e) : null
                    }
                }, {
                    key: "forceStartLoad",
                    get: function() {
                        return this._forceStartLoad
                    }
                }])
            }(Li),
            Ll = function(e) {
                function t(t, r) {
                    var i;
                    return (i = e.call(this, "key-loader", r) || this).config = void 0, i.keyIdToKeyInfo = {}, i.emeController = null, i.config = t, i
                }
                o(t, e);
                var r = t.prototype;
                return r.abort = function(e) {
                    for (var t in this.keyIdToKeyInfo) {
                        var r = this.keyIdToKeyInfo[t].loader;
                        if (r) {
                            var i;
                            if (e && e !== (null == (i = r.context) ? void 0 : i.frag.type)) return;
                            r.abort()
                        }
                    }
                }, r.detach = function() {
                    for (var e in this.keyIdToKeyInfo) {
                        var t = this.keyIdToKeyInfo[e];
                        (t.mediaKeySessionContext || t.decryptdata.isCommonEncryption) && delete this.keyIdToKeyInfo[e]
                    }
                }, r.destroy = function() {
                    for (var e in this.detach(), this.keyIdToKeyInfo) {
                        var t = this.keyIdToKeyInfo[e].loader;
                        t && t.destroy()
                    }
                    this.keyIdToKeyInfo = {}
                }, r.createKeyLoadError = function(e, t, r, i, n) {
                    return void 0 === t && (t = k.KEY_LOAD_ERROR), new rr({
                        type: I.NETWORK_ERROR,
                        details: t,
                        fatal: !1,
                        frag: e,
                        response: n,
                        error: r,
                        networkDetails: i
                    })
                }, r.loadClear = function(e, t, r) {
                    var i = this;
                    if (this.emeController && this.config.emeEnabled && !this.emeController.getSelectedKeySystemFormats().length) {
                        if (t.length)
                            for (var n, a = function() {
                                    var n = t[s];
                                    if (e.cc <= n.cc && (!te(e) || !te(n) || e.sn < n.sn) || !r && s == o - 1) return {
                                        v: i.emeController.selectKeySystemFormat(n).then((function(e) {
                                            if (i.emeController) {
                                                n.setKeyFormat(e);
                                                var t = Cr(e);
                                                return t ? i.emeController.getKeySystemAccess([t]) : void 0
                                            }
                                        }))
                                    }
                                }, s = 0, o = t.length; s < o; s++)
                                if (n = a()) return n.v;
                        if (this.config.requireKeySystemAccessOnStart) {
                            var l = Or(this.config);
                            if (l.length) return this.emeController.getKeySystemAccess(l)
                        }
                    }
                    return null
                }, r.load = function(e) {
                    var t = this;
                    return !e.decryptdata && e.encrypted && this.emeController && this.config.emeEnabled ? this.emeController.selectKeySystemFormat(e).then((function(r) {
                        return t.loadInternal(e, r)
                    })) : this.loadInternal(e)
                }, r.loadInternal = function(e, t) {
                    var r, i;
                    t && e.setKeyFormat(t);
                    var n = e.decryptdata;
                    if (!n) {
                        var a = new Error(t ? "Expected frag.decryptdata to be defined after setting format " + t : "Missing decryption data on fragment in onKeyLoading");
                        return Promise.reject(this.createKeyLoadError(e, k.KEY_LOAD_ERROR, a))
                    }
                    var s = n.uri;
                    if (!s) return Promise.reject(this.createKeyLoadError(e, k.KEY_LOAD_ERROR, new Error('Invalid key URI: "' + s + '"')));
                    var o, l = Rl(n),
                        u = this.keyIdToKeyInfo[l];
                    if (null != (r = u) && r.decryptdata.key) return n.key = u.decryptdata.key, Promise.resolve({
                        frag: e,
                        keyInfo: u
                    });
                    if (null != (i = u) && i.keyLoadPromise) switch (null == (o = u.mediaKeySessionContext) ? void 0 : o.keyStatus) {
                        case "usable":
                        case "usable-in-future":
                            return u.keyLoadPromise.then((function(t) {
                                var r = t.keyInfo;
                                return n.key = r.decryptdata.key, {
                                    frag: e,
                                    keyInfo: r
                                }
                            }))
                    }
                    switch (this.log("Loading key " + X(n.keyId || []) + " from " + e.type + " " + e.level), u = this.keyIdToKeyInfo[l] = {
                        decryptdata: n,
                        keyLoadPromise: null,
                        loader: null,
                        mediaKeySessionContext: null
                    }, n.method) {
                        case "SAMPLE-AES":
                        case "SAMPLE-AES-CENC":
                        case "SAMPLE-AES-CTR":
                            return "identity" === n.keyFormat ? this.loadKeyHTTP(u, e) : this.loadKeyEME(u, e);
                        case "AES-128":
                        case "AES-256":
                        case "AES-256-CTR":
                            return this.loadKeyHTTP(u, e);
                        default:
                            return Promise.reject(this.createKeyLoadError(e, k.KEY_LOAD_ERROR, new Error('Key supplied with unsupported METHOD: "' + n.method + '"')))
                    }
                }, r.loadKeyEME = function(e, t) {
                    var r = {
                        frag: t,
                        keyInfo: e
                    };
                    if (this.emeController && this.config.emeEnabled) {
                        var i = this.emeController.loadKey(r);
                        return (e.keyLoadPromise = i.then((function(t) {
                            return e.mediaKeySessionContext = t, r
                        }))).catch((function(r) {
                            throw e.keyLoadPromise = null, r.data && (r.data.frag = t), r
                        }))
                    }
                    return Promise.resolve(r)
                }, r.loadKeyHTTP = function(e, t) {
                    var r = this,
                        i = this.config,
                        n = new(0, i.loader)(i);
                    return t.keyLoader = e.loader = n, e.keyLoadPromise = new Promise((function(a, s) {
                        var o = {
                                keyInfo: e,
                                frag: t,
                                responseType: "arraybuffer",
                                url: e.decryptdata.uri
                            },
                            l = i.keyLoadPolicy.default,
                            u = {
                                loadPolicy: l,
                                timeout: l.maxLoadTimeMs,
                                maxRetry: 0,
                                retryDelay: 0,
                                maxRetryDelay: 0
                            },
                            h = {
                                onSuccess: function(e, t, i, n) {
                                    var o = i.frag,
                                        l = i.keyInfo,
                                        u = i.url,
                                        d = Rl(l.decryptdata) || u;
                                    if (!o.decryptdata || l !== r.keyIdToKeyInfo[d]) return s(r.createKeyLoadError(o, k.KEY_LOAD_ERROR, new Error("after key load, decryptdata unset or changed"), n));
                                    l.decryptdata.key = o.decryptdata.key = new Uint8Array(e.data), o.keyLoader = null, l.loader = null, a({
                                        frag: o,
                                        keyInfo: l
                                    })
                                },
                                onError: function(e, i, n, a) {
                                    r.resetLoader(i), s(r.createKeyLoadError(t, k.KEY_LOAD_ERROR, new Error("HTTP Error " + e.code + " loading key " + e.text), n, d({
                                        url: o.url,
                                        data: void 0
                                    }, e)))
                                },
                                onTimeout: function(e, i, n) {
                                    r.resetLoader(i), s(r.createKeyLoadError(t, k.KEY_LOAD_TIMEOUT, new Error("key loading timed out"), n))
                                },
                                onAbort: function(e, i, n) {
                                    r.resetLoader(i), s(r.createKeyLoadError(t, k.INTERNAL_ABORTED, new Error("key loading aborted"), n))
                                }
                            };
                        n.load(o, u, h)
                    }))
                }, r.resetLoader = function(e) {
                    var t = e.frag,
                        r = e.keyInfo,
                        i = e.url,
                        n = r.loader;
                    t.keyLoader === n && (t.keyLoader = null, r.loader = null);
                    var a = Rl(r.decryptdata) || i;
                    delete this.keyIdToKeyInfo[a], n && n.destroy()
                }, t
            }(N);

        function Rl(e) {
            var t = e.keyId;
            return t ? X(t) : e.uri
        }

        function Il(e) {
            switch (e.type) {
                case P:
                    return O;
                case C:
                    return x;
                default:
                    return w
            }
        }

        function kl(e, t) {
            var r = e.url;
            return void 0 !== r && 0 !== r.indexOf("data:") || (r = t.url), r
        }
        var bl = function() {
                function e(e) {
                    this.hls = void 0, this.loaders = Object.create(null), this.variableList = null, this.onManifestLoaded = this.checkAutostartLoad, this.hls = e, this.registerListeners()
                }
                var t = e.prototype;
                return t.startLoad = function(e) {}, t.stopLoad = function() {
                    this.destroyInternalLoaders()
                }, t.registerListeners = function() {
                    var e = this.hls;
                    e.on(b.MANIFEST_LOADING, this.onManifestLoading, this), e.on(b.LEVEL_LOADING, this.onLevelLoading, this), e.on(b.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this), e.on(b.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this), e.on(b.LEVELS_UPDATED, this.onLevelsUpdated, this)
                }, t.unregisterListeners = function() {
                    var e = this.hls;
                    e.off(b.MANIFEST_LOADING, this.onManifestLoading, this), e.off(b.LEVEL_LOADING, this.onLevelLoading, this), e.off(b.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this), e.off(b.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this), e.off(b.LEVELS_UPDATED, this.onLevelsUpdated, this)
                }, t.createInternalLoader = function(e) {
                    var t = this.hls.config,
                        r = t.pLoader,
                        i = t.loader,
                        n = new(r || i)(t);
                    return this.loaders[e.type] = n, n
                }, t.getInternalLoader = function(e) {
                    return this.loaders[e.type]
                }, t.resetInternalLoader = function(e) {
                    this.loaders[e] && delete this.loaders[e]
                }, t.destroyInternalLoaders = function() {
                    for (var e in this.loaders) {
                        var t = this.loaders[e];
                        t && t.destroy(), this.resetInternalLoader(e)
                    }
                }, t.destroy = function() {
                    this.variableList = null, this.unregisterListeners(), this.destroyInternalLoaders()
                }, t.onManifestLoading = function(e, t) {
                    var r = t.url;
                    this.variableList = null, this.load({
                        id: null,
                        level: 0,
                        responseType: "text",
                        type: D,
                        url: r,
                        deliveryDirectives: null,
                        levelOrTrack: null
                    })
                }, t.onLevelLoading = function(e, t) {
                    var r = t.id,
                        i = t.level,
                        n = t.pathwayId,
                        a = t.url,
                        s = t.deliveryDirectives,
                        o = t.levelInfo;
                    this.load({
                        id: r,
                        level: i,
                        pathwayId: n,
                        responseType: "text",
                        type: _,
                        url: a,
                        deliveryDirectives: s,
                        levelOrTrack: o
                    })
                }, t.onAudioTrackLoading = function(e, t) {
                    var r = t.id,
                        i = t.groupId,
                        n = t.url,
                        a = t.deliveryDirectives,
                        s = t.track;
                    this.load({
                        id: r,
                        groupId: i,
                        level: null,
                        responseType: "text",
                        type: P,
                        url: n,
                        deliveryDirectives: a,
                        levelOrTrack: s
                    })
                }, t.onSubtitleTrackLoading = function(e, t) {
                    var r = t.id,
                        i = t.groupId,
                        n = t.url,
                        a = t.deliveryDirectives,
                        s = t.track;
                    this.load({
                        id: r,
                        groupId: i,
                        level: null,
                        responseType: "text",
                        type: C,
                        url: n,
                        deliveryDirectives: a,
                        levelOrTrack: s
                    })
                }, t.onLevelsUpdated = function(e, t) {
                    var r = this.loaders[_];
                    if (r) {
                        var i = r.context;
                        i && !t.levels.some((function(e) {
                            return e === i.levelOrTrack
                        })) && (r.abort(), delete this.loaders[_])
                    }
                }, t.load = function(e) {
                    var t, r, i, n = this,
                        s = this.hls.config,
                        o = this.getInternalLoader(e);
                    if (o) {
                        var l = this.hls.logger,
                            u = o.context;
                        if (u && u.levelOrTrack === e.levelOrTrack && (u.url === e.url || u.deliveryDirectives && !e.deliveryDirectives)) return void(u.url === e.url ? l.log("[playlist-loader]: ignore " + e.url + " ongoing request") : l.log("[playlist-loader]: ignore " + e.url + " in favor of " + u.url));
                        l.log("[playlist-loader]: aborting previous loader for type: " + e.type), o.abort()
                    }
                    if (r = e.type === D ? s.manifestLoadPolicy.default : a({}, s.playlistLoadPolicy.default, {
                            timeoutRetry: null,
                            errorRetry: null
                        }), o = this.createInternalLoader(e), A(null == (t = e.deliveryDirectives) ? void 0 : t.part) && (e.type === _ && null !== e.level ? i = this.hls.levels[e.level].details : e.type === P && null !== e.id ? i = this.hls.audioTracks[e.id].details : e.type === C && null !== e.id && (i = this.hls.subtitleTracks[e.id].details), i)) {
                        var d = i.partTarget,
                            h = i.targetduration;
                        if (d && h) {
                            var f = 1e3 * Math.max(3 * d, .8 * h);
                            r = a({}, r, {
                                maxTimeToFirstByteMs: Math.min(f, r.maxTimeToFirstByteMs),
                                maxLoadTimeMs: Math.min(f, r.maxTimeToFirstByteMs)
                            })
                        }
                    }
                    var c = r.errorRetry || r.timeoutRetry || {},
                        g = {
                            loadPolicy: r,
                            timeout: r.maxLoadTimeMs,
                            maxRetry: c.maxNumRetry || 0,
                            retryDelay: c.retryDelayMs || 0,
                            maxRetryDelay: c.maxRetryDelayMs || 0
                        },
                        v = {
                            onSuccess: function(e, t, r, i) {
                                var a = n.getInternalLoader(r);
                                n.resetInternalLoader(r.type);
                                var s = e.data;
                                0 === s.indexOf("#EXTM3U") ? (t.parsing.start = performance.now(), Hr.isMediaPlaylist(s) || r.type !== D ? n.handleTrackOrLevelPlaylist(e, t, r, i || null, a) : n.handleMasterPlaylist(e, t, r, i)) : n.handleManifestParsingError(e, r, new Error("no EXTM3U delimiter"), i || null, t)
                            },
                            onError: function(e, t, r, i) {
                                n.handleNetworkError(t, r, !1, e, i)
                            },
                            onTimeout: function(e, t, r) {
                                n.handleNetworkError(t, r, !0, void 0, e)
                            }
                        };
                    o.load(e, g, v)
                }, t.checkAutostartLoad = function() {
                    if (this.hls) {
                        var e = this.hls,
                            t = e.config,
                            r = t.autoStartLoad,
                            i = t.startPosition,
                            n = e.forceStartLoad;
                        (r || n) && (this.hls.logger.log((r ? "auto" : "force") + " startLoad with configured startPosition " + i), this.hls.startLoad(i))
                    }
                }, t.handleMasterPlaylist = function(e, t, r, i) {
                    var n = this.hls,
                        a = e.data,
                        s = kl(e, r),
                        o = Hr.parseMasterPlaylist(a, s);
                    if (o.playlistParsingError) this.handleManifestParsingError(e, r, o.playlistParsingError, i, t);
                    else {
                        var l = o.contentSteering,
                            u = o.levels,
                            d = o.sessionData,
                            h = o.sessionKeys,
                            f = o.startTimeOffset,
                            c = o.variableList;
                        this.variableList = c;
                        var g = Hr.parseMasterPlaylistMedia(a, s, o),
                            v = g.AUDIO,
                            m = void 0 === v ? [] : v,
                            p = g.SUBTITLES,
                            y = g["CLOSED-CAPTIONS"];
                        m.length && (m.some((function(e) {
                            return !e.url
                        })) || !u[0].audioCodec || u[0].attrs.AUDIO || (this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"), m.unshift({
                            type: "main",
                            name: "main",
                            groupId: "main",
                            default: !1,
                            autoselect: !1,
                            forced: !1,
                            id: -1,
                            attrs: new gr({}),
                            bitrate: 0,
                            url: ""
                        }))), n.trigger(b.MANIFEST_LOADED, {
                            levels: u,
                            audioTracks: m,
                            subtitles: p,
                            captions: y,
                            contentSteering: l,
                            url: s,
                            stats: t,
                            networkDetails: i,
                            sessionData: d,
                            sessionKeys: h,
                            startTimeOffset: f,
                            variableList: c
                        })
                    }
                }, t.handleTrackOrLevelPlaylist = function(e, t, r, i, n) {
                    var a = this.hls,
                        s = r.id,
                        o = r.level,
                        l = r.type,
                        u = kl(e, r),
                        d = A(o) ? o : A(s) ? s : 0,
                        h = Il(r),
                        f = Hr.parseLevelPlaylist(e.data, u, d, h, 0, this.variableList);
                    if (l === D) {
                        var c = {
                            attrs: new gr({}),
                            bitrate: 0,
                            details: f,
                            name: "",
                            url: u
                        };
                        f.requestScheduled = t.loading.start + oi(f, 0), a.trigger(b.MANIFEST_LOADED, {
                            levels: [c],
                            audioTracks: [],
                            url: u,
                            stats: t,
                            networkDetails: i,
                            sessionData: null,
                            sessionKeys: null,
                            contentSteering: null,
                            startTimeOffset: null,
                            variableList: null
                        })
                    }
                    t.parsing.end = performance.now(), r.levelDetails = f, this.handlePlaylistLoaded(f, e, t, r, i, n)
                }, t.handleManifestParsingError = function(e, t, r, i, n) {
                    this.hls.trigger(b.ERROR, {
                        type: I.NETWORK_ERROR,
                        details: k.MANIFEST_PARSING_ERROR,
                        fatal: t.type === D,
                        url: e.url,
                        err: r,
                        error: r,
                        reason: r.message,
                        response: e,
                        context: t,
                        networkDetails: i,
                        stats: n
                    })
                }, t.handleNetworkError = function(e, t, r, i, n) {
                    void 0 === r && (r = !1);
                    var a = "A network " + (r ? "timeout" : "error" + (i ? " (status " + i.code + ")" : "")) + " occurred while loading " + e.type;
                    e.type === _ ? a += ": " + e.level + " id: " + e.id : e.type !== P && e.type !== C || (a += " id: " + e.id + ' group-id: "' + e.groupId + '"');
                    var s = new Error(a);
                    this.hls.logger.warn("[playlist-loader]: " + a);
                    var o = k.UNKNOWN,
                        l = !1,
                        u = this.getInternalLoader(e);
                    switch (e.type) {
                        case D:
                            o = r ? k.MANIFEST_LOAD_TIMEOUT : k.MANIFEST_LOAD_ERROR, l = !0;
                            break;
                        case _:
                            o = r ? k.LEVEL_LOAD_TIMEOUT : k.LEVEL_LOAD_ERROR, l = !1;
                            break;
                        case P:
                            o = r ? k.AUDIO_TRACK_LOAD_TIMEOUT : k.AUDIO_TRACK_LOAD_ERROR, l = !1;
                            break;
                        case C:
                            o = r ? k.SUBTITLE_TRACK_LOAD_TIMEOUT : k.SUBTITLE_LOAD_ERROR, l = !1
                    }
                    u && this.resetInternalLoader(e.type);
                    var h = {
                        type: I.NETWORK_ERROR,
                        details: o,
                        fatal: l,
                        url: e.url,
                        loader: u,
                        context: e,
                        error: s,
                        networkDetails: t,
                        stats: n
                    };
                    if (i) {
                        var f = (null == t ? void 0 : t.url) || e.url;
                        h.response = d({
                            url: f,
                            data: void 0
                        }, i)
                    }
                    this.hls.trigger(b.ERROR, h)
                }, t.handlePlaylistLoaded = function(e, t, r, i, n, a) {
                    var s = this.hls,
                        o = i.type,
                        l = i.level,
                        u = i.id,
                        d = i.groupId,
                        h = i.deliveryDirectives,
                        f = kl(t, i),
                        c = Il(i),
                        g = "number" == typeof i.level && c === w ? l : void 0;
                    if (e.fragments.length) {
                        e.targetduration || (e.playlistParsingError = new Error("Missing Target Duration"));
                        var v = e.playlistParsingError;
                        if (v) {
                            if (this.hls.logger.warn(v + " " + e.url), !s.config.ignorePlaylistParsingErrors) return void s.trigger(b.ERROR, {
                                type: I.NETWORK_ERROR,
                                details: k.LEVEL_PARSING_ERROR,
                                fatal: !1,
                                url: f,
                                error: v,
                                reason: v.message,
                                response: t,
                                context: i,
                                level: g,
                                parent: c,
                                networkDetails: n,
                                stats: r
                            });
                            e.playlistParsingError = null
                        }
                        switch (e.live && a && (a.getCacheAge && (e.ageHeader = a.getCacheAge() || 0), a.getCacheAge && !isNaN(e.ageHeader) || (e.ageHeader = 0)), o) {
                            case D:
                            case _:
                                s.trigger(b.LEVEL_LOADED, {
                                    details: e,
                                    levelInfo: i.levelOrTrack || s.levels[0],
                                    level: g || 0,
                                    id: u || 0,
                                    stats: r,
                                    networkDetails: n,
                                    deliveryDirectives: h,
                                    withoutMultiVariant: o === D
                                });
                                break;
                            case P:
                                s.trigger(b.AUDIO_TRACK_LOADED, {
                                    details: e,
                                    track: i.levelOrTrack,
                                    id: u || 0,
                                    groupId: d || "",
                                    stats: r,
                                    networkDetails: n,
                                    deliveryDirectives: h
                                });
                                break;
                            case C:
                                s.trigger(b.SUBTITLE_TRACK_LOADED, {
                                    details: e,
                                    track: i.levelOrTrack,
                                    id: u || 0,
                                    groupId: d || "",
                                    stats: r,
                                    networkDetails: n,
                                    deliveryDirectives: h
                                })
                        }
                    } else {
                        var m = e.playlistParsingError = new Error("No Segments found in Playlist");
                        s.trigger(b.ERROR, {
                            type: I.NETWORK_ERROR,
                            details: k.LEVEL_EMPTY_ERROR,
                            fatal: !1,
                            url: f,
                            error: m,
                            reason: m.message,
                            response: t,
                            context: i,
                            level: g,
                            parent: c,
                            networkDetails: n,
                            stats: r
                        })
                    }
                }, e
            }(),
            Dl = function() {
                function e(t) {
                    void 0 === t && (t = {}), this.config = void 0, this.userConfig = void 0, this.logger = void 0, this.coreComponents = void 0, this.networkControllers = void 0, this._emitter = new E, this._autoLevelCapping = -1, this._maxHdcpLevel = null, this.abrController = void 0, this.bufferController = void 0, this.capLevelController = void 0, this.latencyController = void 0, this.levelController = void 0, this.streamController = void 0, this.audioStreamController = void 0, this.subtititleStreamController = void 0, this.audioTrackController = void 0, this.subtitleTrackController = void 0, this.interstitialsController = void 0, this.gapController = void 0, this.emeController = void 0, this.cmcdController = void 0, this._media = null, this._url = null, this._sessionId = void 0, this.triggeringException = void 0, this.started = !1;
                    var r = this.logger = H(t.debug || !1, "Hls instance", t.assetPlayerId),
                        i = this.config = function(e, t, r) {
                            if ((t.liveSyncDurationCount || t.liveMaxLatencyDurationCount) && (t.liveSyncDuration || t.liveMaxLatencyDuration)) throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");
                            if (void 0 !== t.liveMaxLatencyDurationCount && (void 0 === t.liveSyncDurationCount || t.liveMaxLatencyDurationCount <= t.liveSyncDurationCount)) throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');
                            if (void 0 !== t.liveMaxLatencyDuration && (void 0 === t.liveSyncDuration || t.liveMaxLatencyDuration <= t.liveSyncDuration)) throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');
                            var i = ol(e),
                                n = ["TimeOut", "MaxRetry", "RetryDelay", "MaxRetryTimeout"];
                            return ["manifest", "level", "frag"].forEach((function(e) {
                                var a = ("level" === e ? "playlist" : e) + "LoadPolicy",
                                    s = void 0 === t[a],
                                    o = [];
                                n.forEach((function(r) {
                                    var n = e + "Loading" + r,
                                        l = t[n];
                                    if (void 0 !== l && s) {
                                        o.push(n);
                                        var u = i[a].default;
                                        switch (t[a] = {
                                            default: u
                                        }, r) {
                                            case "TimeOut":
                                                u.maxLoadTimeMs = l, u.maxTimeToFirstByteMs = l;
                                                break;
                                            case "MaxRetry":
                                                u.errorRetry.maxNumRetry = l, u.timeoutRetry.maxNumRetry = l;
                                                break;
                                            case "RetryDelay":
                                                u.errorRetry.retryDelayMs = l, u.timeoutRetry.retryDelayMs = l;
                                                break;
                                            case "MaxRetryTimeout":
                                                u.errorRetry.maxRetryDelayMs = l, u.timeoutRetry.maxRetryDelayMs = l
                                        }
                                    }
                                })), o.length && r.warn('hls.js config: "' + o.join('", "') + '" setting(s) are deprecated, use "' + a + '": ' + ot(t[a]))
                            })), d(d({}, i), t)
                        }(e.DefaultConfig, t, r);
                    this.userConfig = t, i.progressive && ll(i, r);
                    var n = i.abrController,
                        a = i.bufferController,
                        s = i.capLevelController,
                        o = i.errorController,
                        l = i.fpsController,
                        u = new o(this),
                        h = this.abrController = new n(this),
                        f = new Vt(this),
                        c = i.interstitialsController,
                        g = c ? this.interstitialsController = new c(this, e) : null,
                        v = this.bufferController = new a(this, f),
                        m = this.capLevelController = new s(this),
                        p = new l(this),
                        y = new bl(this),
                        T = i.contentSteeringController,
                        S = T ? new T(this) : null,
                        A = this.levelController = new yl(this, S),
                        L = new ml(this),
                        R = new Ll(this.config, this.logger),
                        I = this.streamController = new Al(this, f, R),
                        k = this.gapController = new ul(this, f);
                    m.setStreamController(I), p.setStreamController(I);
                    var D = [y, A, I];
                    g && D.splice(1, 0, g), S && D.splice(1, 0, S), this.networkControllers = D;
                    var _ = [h, v, k, m, p, L, f];
                    this.audioTrackController = this.createController(i.audioTrackController, D);
                    var P = i.audioStreamController;
                    P && D.push(this.audioStreamController = new P(this, f, R)), this.subtitleTrackController = this.createController(i.subtitleTrackController, D);
                    var C = i.subtitleStreamController;
                    C && D.push(this.subtititleStreamController = new C(this, f, R)), this.createController(i.timelineController, _), R.emeController = this.emeController = this.createController(i.emeController, _), this.cmcdController = this.createController(i.cmcdController, _), this.latencyController = this.createController(pl, _), this.coreComponents = _, D.push(u);
                    var w = u.onErrorOut;
                    "function" == typeof w && this.on(b.ERROR, w, u), this.on(b.MANIFEST_LOADED, y.onManifestLoaded, y)
                }
                e.isMSESupported = function() {
                    return Sl()
                }, e.isSupported = function() {
                    return function() {
                        if (!Sl()) return !1;
                        var e = W();
                        return "function" == typeof(null == e ? void 0 : e.isTypeSupported) && (["avc1.42E01E,mp4a.40.2", "av01.0.01M.08", "vp09.00.50.08"].some((function(t) {
                            return e.isTypeSupported(xe(t, "video"))
                        })) || ["mp4a.40.2", "fLaC"].some((function(t) {
                            return e.isTypeSupported(xe(t, "audio"))
                        })))
                    }()
                }, e.getMediaSource = function() {
                    return W()
                };
                var t = e.prototype;
                return t.createController = function(e, t) {
                    if (e) {
                        var r = new e(this);
                        return t && t.push(r), r
                    }
                    return null
                }, t.on = function(e, t, r) {
                    void 0 === r && (r = this), this._emitter.on(e, t, r)
                }, t.once = function(e, t, r) {
                    void 0 === r && (r = this), this._emitter.once(e, t, r)
                }, t.removeAllListeners = function(e) {
                    this._emitter.removeAllListeners(e)
                }, t.off = function(e, t, r, i) {
                    void 0 === r && (r = this), this._emitter.off(e, t, r, i)
                }, t.listeners = function(e) {
                    return this._emitter.listeners(e)
                }, t.emit = function(e, t, r) {
                    return this._emitter.emit(e, t, r)
                }, t.trigger = function(e, t) {
                    if (this.config.debug) return this.emit(e, e, t);
                    try {
                        return this.emit(e, e, t)
                    } catch (t) {
                        if (this.logger.error("An internal error happened while handling event " + e + '. Error message: "' + t.message + '". Here is a stacktrace:', t), !this.triggeringException) {
                            this.triggeringException = !0;
                            var r = e === b.ERROR;
                            this.trigger(b.ERROR, {
                                type: I.OTHER_ERROR,
                                details: k.INTERNAL_EXCEPTION,
                                fatal: r,
                                event: e,
                                error: t
                            }), this.triggeringException = !1
                        }
                    }
                    return !1
                }, t.listenerCount = function(e) {
                    return this._emitter.listenerCount(e)
                }, t.destroy = function() {
                    this.logger.log("destroy"), this.trigger(b.DESTROYING, void 0), this.detachMedia(), this.removeAllListeners(), this._autoLevelCapping = -1, this._url = null, this.networkControllers.forEach((function(e) {
                        return e.destroy()
                    })), this.networkControllers.length = 0, this.coreComponents.forEach((function(e) {
                        return e.destroy()
                    })), this.coreComponents.length = 0;
                    var e = this.config;
                    e.xhrSetup = e.fetchSetup = void 0, this.userConfig = null
                }, t.attachMedia = function(e) {
                    if (!e || "media" in e && !e.media) {
                        var t = new Error("attachMedia failed: invalid argument (" + e + ")");
                        this.trigger(b.ERROR, {
                            type: I.OTHER_ERROR,
                            details: k.ATTACH_MEDIA_ERROR,
                            fatal: !0,
                            error: t
                        })
                    } else {
                        this.logger.log("attachMedia"), this._media && (this.logger.warn("media must be detached before attaching"), this.detachMedia());
                        var r = "media" in e,
                            i = r ? e.media : e,
                            n = r ? e : {
                                media: i
                            };
                        this._media = i, this.trigger(b.MEDIA_ATTACHING, n)
                    }
                }, t.detachMedia = function() {
                    this.logger.log("detachMedia"), this.trigger(b.MEDIA_DETACHING, {}), this._media = null
                }, t.transferMedia = function() {
                    this._media = null;
                    var e = this.bufferController.transferMedia();
                    return this.trigger(b.MEDIA_DETACHING, {
                        transferMedia: e
                    }), e
                }, t.loadSource = function(e) {
                    this.stopLoad();
                    var t = this.media,
                        r = this._url,
                        i = this._url = S.buildAbsoluteURL(self.location.href, e, {
                            alwaysNormalize: !0
                        });
                    this._autoLevelCapping = -1, this._maxHdcpLevel = null, this.logger.log("loadSource:" + i), t && r && (r !== i || this.bufferController.hasSourceTypes()) && (this.detachMedia(), this.attachMedia(t)), this.trigger(b.MANIFEST_LOADING, {
                        url: e
                    })
                }, t.startLoad = function(e, t) {
                    void 0 === e && (e = -1), this.logger.log("startLoad(" + e + (t ? ", <skip seek to start>" : "") + ")"), this.started = !0, this.resumeBuffering();
                    for (var r = 0; r < this.networkControllers.length && (this.networkControllers[r].startLoad(e, t), this.started && this.networkControllers); r++);
                }, t.stopLoad = function() {
                    this.logger.log("stopLoad"), this.started = !1;
                    for (var e = 0; e < this.networkControllers.length && (this.networkControllers[e].stopLoad(), !this.started && this.networkControllers); e++);
                }, t.resumeBuffering = function() {
                    this.bufferingEnabled || (this.logger.log("resume buffering"), this.networkControllers.forEach((function(e) {
                        e.resumeBuffering && e.resumeBuffering()
                    })))
                }, t.pauseBuffering = function() {
                    this.bufferingEnabled && (this.logger.log("pause buffering"), this.networkControllers.forEach((function(e) {
                        e.pauseBuffering && e.pauseBuffering()
                    })))
                }, t.swapAudioCodec = function() {
                    this.logger.log("swapAudioCodec"), this.streamController.swapAudioCodec()
                }, t.recoverMediaError = function() {
                    this.logger.log("recoverMediaError");
                    var e = this._media,
                        t = null == e ? void 0 : e.currentTime;
                    this.detachMedia(), e && (this.attachMedia(e), t && this.startLoad(t))
                }, t.removeLevel = function(e) {
                    this.levelController.removeLevel(e)
                }, t.setAudioOption = function(e) {
                    var t;
                    return (null == (t = this.audioTrackController) ? void 0 : t.setAudioOption(e)) || null
                }, t.setSubtitleOption = function(e) {
                    var t;
                    return (null == (t = this.subtitleTrackController) ? void 0 : t.setSubtitleOption(e)) || null
                }, t.getMediaDecodingInfo = function(e, t) {
                    return void 0 === t && (t = this.allAudioTracks), Xe(e, ut(t), navigator.mediaCapabilities)
                }, i(e, [{
                    key: "url",
                    get: function() {
                        return this._url
                    }
                }, {
                    key: "hasEnoughToStart",
                    get: function() {
                        return this.streamController.hasEnoughToStart
                    }
                }, {
                    key: "startPosition",
                    get: function() {
                        return this.streamController.startPositionValue
                    }
                }, {
                    key: "loadingEnabled",
                    get: function() {
                        return this.started
                    }
                }, {
                    key: "bufferingEnabled",
                    get: function() {
                        return this.streamController.bufferingEnabled
                    }
                }, {
                    key: "inFlightFragments",
                    get: function() {
                        var e, t = ((e = {})[w] = this.streamController.inFlightFrag, e);
                        return this.audioStreamController && (t[O] = this.audioStreamController.inFlightFrag), this.subtititleStreamController && (t[x] = this.subtititleStreamController.inFlightFrag), t
                    }
                }, {
                    key: "sessionId",
                    get: function() {
                        var e = this._sessionId;
                        return e || (e = this._sessionId = function() {
                            try {
                                return crypto.randomUUID()
                            } catch (i) {
                                try {
                                    var e = URL.createObjectURL(new Blob),
                                        t = e.toString();
                                    return URL.revokeObjectURL(e), t.slice(t.lastIndexOf("/") + 1)
                                } catch (e) {
                                    var r = (new Date).getTime();
                                    return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(e) {
                                        var t = (r + 16 * Math.random()) % 16 | 0;
                                        return r = Math.floor(r / 16), ("x" == e ? t : 3 & t | 8).toString(16)
                                    }))
                                }
                            }
                        }()), e
                    }
                }, {
                    key: "levels",
                    get: function() {
                        var e = this.levelController.levels;
                        return e || []
                    }
                }, {
                    key: "latestLevelDetails",
                    get: function() {
                        return this.streamController.getLevelDetails() || null
                    }
                }, {
                    key: "loadLevelObj",
                    get: function() {
                        return this.levelController.loadLevelObj
                    }
                }, {
                    key: "currentLevel",
                    get: function() {
                        return this.streamController.currentLevel
                    },
                    set: function(e) {
                        this.logger.log("set currentLevel:" + e), this.levelController.manualLevel = e, this.streamController.immediateLevelSwitch()
                    }
                }, {
                    key: "nextLevel",
                    get: function() {
                        return this.streamController.nextLevel
                    },
                    set: function(e) {
                        this.logger.log("set nextLevel:" + e), this.levelController.manualLevel = e, this.streamController.nextLevelSwitch()
                    }
                }, {
                    key: "loadLevel",
                    get: function() {
                        return this.levelController.level
                    },
                    set: function(e) {
                        this.logger.log("set loadLevel:" + e), this.levelController.manualLevel = e
                    }
                }, {
                    key: "nextLoadLevel",
                    get: function() {
                        return this.levelController.nextLoadLevel
                    },
                    set: function(e) {
                        this.levelController.nextLoadLevel = e
                    }
                }, {
                    key: "firstLevel",
                    get: function() {
                        return Math.max(this.levelController.firstLevel, this.minAutoLevel)
                    },
                    set: function(e) {
                        this.logger.log("set firstLevel:" + e), this.levelController.firstLevel = e
                    }
                }, {
                    key: "startLevel",
                    get: function() {
                        var e = this.levelController.startLevel;
                        return -1 === e && this.abrController.forcedAutoLevel > -1 ? this.abrController.forcedAutoLevel : e
                    },
                    set: function(e) {
                        this.logger.log("set startLevel:" + e), -1 !== e && (e = Math.max(e, this.minAutoLevel)), this.levelController.startLevel = e
                    }
                }, {
                    key: "capLevelToPlayerSize",
                    get: function() {
                        return this.config.capLevelToPlayerSize
                    },
                    set: function(e) {
                        var t = !!e;
                        t !== this.config.capLevelToPlayerSize && (t ? this.capLevelController.startCapping() : (this.capLevelController.stopCapping(), this.autoLevelCapping = -1, this.streamController.nextLevelSwitch()), this.config.capLevelToPlayerSize = t)
                    }
                }, {
                    key: "autoLevelCapping",
                    get: function() {
                        return this._autoLevelCapping
                    },
                    set: function(e) {
                        this._autoLevelCapping !== e && (this.logger.log("set autoLevelCapping:" + e), this._autoLevelCapping = e, this.levelController.checkMaxAutoUpdated())
                    }
                }, {
                    key: "bandwidthEstimate",
                    get: function() {
                        var e = this.abrController.bwEstimator;
                        return e ? e.getEstimate() : NaN
                    },
                    set: function(e) {
                        this.abrController.resetEstimator(e)
                    }
                }, {
                    key: "abrEwmaDefaultEstimate",
                    get: function() {
                        var e = this.abrController.bwEstimator;
                        return e ? e.defaultEstimate : NaN
                    }
                }, {
                    key: "ttfbEstimate",
                    get: function() {
                        var e = this.abrController.bwEstimator;
                        return e ? e.getEstimateTTFB() : NaN
                    }
                }, {
                    key: "maxHdcpLevel",
                    get: function() {
                        return this._maxHdcpLevel
                    },
                    set: function(e) {
                        (function(e) {
                            return $e.indexOf(e) > -1
                        })(e) && this._maxHdcpLevel !== e && (this._maxHdcpLevel = e, this.levelController.checkMaxAutoUpdated())
                    }
                }, {
                    key: "autoLevelEnabled",
                    get: function() {
                        return -1 === this.levelController.manualLevel
                    }
                }, {
                    key: "manualLevel",
                    get: function() {
                        return this.levelController.manualLevel
                    }
                }, {
                    key: "minAutoLevel",
                    get: function() {
                        var e = this.levels,
                            t = this.config.minAutoBitrate;
                        if (!e) return 0;
                        for (var r = e.length, i = 0; i < r; i++)
                            if (e[i].maxBitrate >= t) return i;
                        return 0
                    }
                }, {
                    key: "maxAutoLevel",
                    get: function() {
                        var e, t = this.levels,
                            r = this.autoLevelCapping,
                            i = this.maxHdcpLevel;
                        if (e = -1 === r && null != t && t.length ? t.length - 1 : r, i)
                            for (var n = e; n--;) {
                                var a = t[n].attrs["HDCP-LEVEL"];
                                if (a && a <= i) return n
                            }
                        return e
                    }
                }, {
                    key: "firstAutoLevel",
                    get: function() {
                        return this.abrController.firstAutoLevel
                    }
                }, {
                    key: "nextAutoLevel",
                    get: function() {
                        return this.abrController.nextAutoLevel
                    },
                    set: function(e) {
                        this.abrController.nextAutoLevel = e
                    }
                }, {
                    key: "playingDate",
                    get: function() {
                        return this.streamController.currentProgramDateTime
                    }
                }, {
                    key: "mainForwardBufferInfo",
                    get: function() {
                        return this.streamController.getMainFwdBufferInfo()
                    }
                }, {
                    key: "maxBufferLength",
                    get: function() {
                        return this.streamController.maxBufferLength
                    }
                }, {
                    key: "allAudioTracks",
                    get: function() {
                        var e = this.audioTrackController;
                        return e ? e.allAudioTracks : []
                    }
                }, {
                    key: "audioTracks",
                    get: function() {
                        var e = this.audioTrackController;
                        return e ? e.audioTracks : []
                    }
                }, {
                    key: "audioTrack",
                    get: function() {
                        var e = this.audioTrackController;
                        return e ? e.audioTrack : -1
                    },
                    set: function(e) {
                        var t = this.audioTrackController;
                        t && (t.audioTrack = e)
                    }
                }, {
                    key: "allSubtitleTracks",
                    get: function() {
                        var e = this.subtitleTrackController;
                        return e ? e.allSubtitleTracks : []
                    }
                }, {
                    key: "subtitleTracks",
                    get: function() {
                        var e = this.subtitleTrackController;
                        return e ? e.subtitleTracks : []
                    }
                }, {
                    key: "subtitleTrack",
                    get: function() {
                        var e = this.subtitleTrackController;
                        return e ? e.subtitleTrack : -1
                    },
                    set: function(e) {
                        var t = this.subtitleTrackController;
                        t && (t.subtitleTrack = e)
                    }
                }, {
                    key: "media",
                    get: function() {
                        return this._media
                    }
                }, {
                    key: "subtitleDisplay",
                    get: function() {
                        var e = this.subtitleTrackController;
                        return !!e && e.subtitleDisplay
                    },
                    set: function(e) {
                        var t = this.subtitleTrackController;
                        t && (t.subtitleDisplay = e)
                    }
                }, {
                    key: "lowLatencyMode",
                    get: function() {
                        return this.config.lowLatencyMode
                    },
                    set: function(e) {
                        this.config.lowLatencyMode = e
                    }
                }, {
                    key: "liveSyncPosition",
                    get: function() {
                        return this.latencyController.liveSyncPosition
                    }
                }, {
                    key: "latency",
                    get: function() {
                        return this.latencyController.latency
                    }
                }, {
                    key: "maxLatency",
                    get: function() {
                        return this.latencyController.maxLatency
                    }
                }, {
                    key: "targetLatency",
                    get: function() {
                        return this.latencyController.targetLatency
                    },
                    set: function(e) {
                        this.latencyController.targetLatency = e
                    }
                }, {
                    key: "drift",
                    get: function() {
                        return this.latencyController.drift
                    }
                }, {
                    key: "forceStartLoad",
                    get: function() {
                        return this.streamController.forceStartLoad
                    }
                }, {
                    key: "pathways",
                    get: function() {
                        return this.levelController.pathways
                    }
                }, {
                    key: "pathwayPriority",
                    get: function() {
                        return this.levelController.pathwayPriority
                    },
                    set: function(e) {
                        this.levelController.pathwayPriority = e
                    }
                }, {
                    key: "bufferedToEnd",
                    get: function() {
                        var e;
                        return !(null == (e = this.bufferController) || !e.bufferedToEnd)
                    }
                }, {
                    key: "interstitialsManager",
                    get: function() {
                        var e;
                        return (null == (e = this.interstitialsController) ? void 0 : e.interstitialsManager) || null
                    }
                }], [{
                    key: "version",
                    get: function() {
                        return aa
                    }
                }, {
                    key: "Events",
                    get: function() {
                        return b
                    }
                }, {
                    key: "MetadataSchema",
                    get: function() {
                        return Qi
                    }
                }, {
                    key: "ErrorTypes",
                    get: function() {
                        return I
                    }
                }, {
                    key: "ErrorDetails",
                    get: function() {
                        return k
                    }
                }, {
                    key: "DefaultConfig",
                    get: function() {
                        return e.defaultConfig ? e.defaultConfig : sl
                    },
                    set: function(t) {
                        e.defaultConfig = t
                    }
                }])
            }();
        return Dl.defaultConfig = void 0, Dl
    }, "object" == typeof exports && "undefined" != typeof module ? module.exports = i() : "function" == typeof define && define.amd ? define(i) : (r = "undefined" != typeof globalThis ? globalThis : r || self).Hls = i()
}(!1);