quake2ts 0.0.591 → 0.0.593
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +1 -1
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +31 -31
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +31 -31
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/net/clientConnection.d.ts +78 -0
- package/packages/client/dist/types/net/clientConnection.d.ts.map +1 -0
- package/packages/engine/dist/browser/index.global.js +9 -9
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +42 -33
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +41 -33
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/assets/vfs.d.ts +2 -2
- package/packages/engine/dist/types/assets/vfs.d.ts.map +1 -1
- package/packages/engine/dist/types/index.d.ts +1 -0
- package/packages/engine/dist/types/index.d.ts.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/tools/dist/browser/index.global.js.map +1 -1
- package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
|
@@ -200,7 +200,7 @@ void main() {
|
|
|
200
200
|
v_texCoord = a_texCoord;
|
|
201
201
|
v_position = worldPos.xyz;
|
|
202
202
|
gl_Position = u_modelViewProjection * vec4(a_position, 1.0);
|
|
203
|
-
}`;var We=1e-6,Oi=typeof Float32Array<"u"?Float32Array:Array,K0=Math.random;function xm(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var xre=Math.PI/180,Mre=180/Math.PI,ot={};Pg(ot,{add:()=>Cx,adjoint:()=>nx,clone:()=>j3,copy:()=>J3,create:()=>Z3,decompose:()=>yx,determinant:()=>rx,equals:()=>Dx,exactEquals:()=>Fx,frob:()=>Ix,fromQuat:()=>Ax,fromQuat2:()=>vx,fromRotation:()=>fx,fromRotationTranslation:()=>$g,fromRotationTranslationScale:()=>Sx,fromRotationTranslationScaleOrigin:()=>kx,fromScaling:()=>ux,fromTranslation:()=>dx,fromValues:()=>Q3,fromXRotation:()=>hx,fromYRotation:()=>gx,fromZRotation:()=>_x,frustum:()=>bx,getRotation:()=>wx,getScaling:()=>Xg,getTranslation:()=>px,identity:()=>Wg,invert:()=>ix,lookAt:()=>Lx,mul:()=>Bx,multiply:()=>Kg,multiplyScalar:()=>Ox,multiplyScalarAndAdd:()=>Px,ortho:()=>Tx,orthoNO:()=>Yg,orthoZO:()=>Rx,perspective:()=>Ex,perspectiveFromFieldOfView:()=>Mx,perspectiveNO:()=>qg,perspectiveZO:()=>xx,rotate:()=>ox,rotateX:()=>cx,rotateY:()=>lx,rotateZ:()=>mx,scale:()=>sx,set:()=>ex,str:()=>Nx,sub:()=>Ux,subtract:()=>Zg,targetTo:()=>zx,translate:()=>ax,transpose:()=>tx});function Z3(){var e=new Oi(16);return Oi!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function j3(e){var t=new Oi(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function J3(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Q3(e,t,i,n,r,a,s,o,c,l,m,d,u,f,h,_){var g=new Oi(16);return g[0]=e,g[1]=t,g[2]=i,g[3]=n,g[4]=r,g[5]=a,g[6]=s,g[7]=o,g[8]=c,g[9]=l,g[10]=m,g[11]=d,g[12]=u,g[13]=f,g[14]=h,g[15]=_,g}function ex(e,t,i,n,r,a,s,o,c,l,m,d,u,f,h,_,g){return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=c,e[8]=l,e[9]=m,e[10]=d,e[11]=u,e[12]=f,e[13]=h,e[14]=_,e[15]=g,e}function Wg(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function tx(e,t){if(e===t){var i=t[1],n=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=i,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function ix(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],m=t[8],d=t[9],u=t[10],f=t[11],h=t[12],_=t[13],g=t[14],v=t[15],A=i*o-n*s,k=i*c-r*s,y=i*l-a*s,b=n*c-r*o,S=n*l-a*o,x=r*l-a*c,R=m*_-d*h,z=m*g-u*h,E=m*v-f*h,D=d*g-u*_,$=d*v-f*_,j=u*v-f*g,q=A*j-k*$+y*D+b*E-S*z+x*R;return q?(q=1/q,e[0]=(o*j-c*$+l*D)*q,e[1]=(r*$-n*j-a*D)*q,e[2]=(_*x-g*S+v*b)*q,e[3]=(u*S-d*x-f*b)*q,e[4]=(c*E-s*j-l*z)*q,e[5]=(i*j-r*E+a*z)*q,e[6]=(g*y-h*x-v*k)*q,e[7]=(m*x-u*y+f*k)*q,e[8]=(s*$-o*E+l*R)*q,e[9]=(n*E-i*$-a*R)*q,e[10]=(h*S-_*y+v*A)*q,e[11]=(d*y-m*S-f*A)*q,e[12]=(o*z-s*D-c*R)*q,e[13]=(i*D-n*z+r*R)*q,e[14]=(_*k-h*b-g*A)*q,e[15]=(m*b-d*k+u*A)*q,e):null}function nx(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],m=t[8],d=t[9],u=t[10],f=t[11],h=t[12],_=t[13],g=t[14],v=t[15],A=i*o-n*s,k=i*c-r*s,y=i*l-a*s,b=n*c-r*o,S=n*l-a*o,x=r*l-a*c,R=m*_-d*h,z=m*g-u*h,E=m*v-f*h,D=d*g-u*_,$=d*v-f*_,j=u*v-f*g;return e[0]=o*j-c*$+l*D,e[1]=r*$-n*j-a*D,e[2]=_*x-g*S+v*b,e[3]=u*S-d*x-f*b,e[4]=c*E-s*j-l*z,e[5]=i*j-r*E+a*z,e[6]=g*y-h*x-v*k,e[7]=m*x-u*y+f*k,e[8]=s*$-o*E+l*R,e[9]=n*E-i*$-a*R,e[10]=h*S-_*y+v*A,e[11]=d*y-m*S-f*A,e[12]=o*z-s*D-c*R,e[13]=i*D-n*z+r*R,e[14]=_*k-h*b-g*A,e[15]=m*b-d*k+u*A,e}function rx(e){var t=e[0],i=e[1],n=e[2],r=e[3],a=e[4],s=e[5],o=e[6],c=e[7],l=e[8],m=e[9],d=e[10],u=e[11],f=e[12],h=e[13],_=e[14],g=e[15],v=t*s-i*a,A=t*o-n*a,k=i*o-n*s,y=l*h-m*f,b=l*_-d*f,S=m*_-d*h,x=t*S-i*b+n*y,R=a*S-s*b+o*y,z=l*k-m*A+d*v,E=f*k-h*A+_*v;return c*x-r*R+g*z-u*E}function Kg(e,t,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],c=t[5],l=t[6],m=t[7],d=t[8],u=t[9],f=t[10],h=t[11],_=t[12],g=t[13],v=t[14],A=t[15],k=i[0],y=i[1],b=i[2],S=i[3];return e[0]=k*n+y*o+b*d+S*_,e[1]=k*r+y*c+b*u+S*g,e[2]=k*a+y*l+b*f+S*v,e[3]=k*s+y*m+b*h+S*A,k=i[4],y=i[5],b=i[6],S=i[7],e[4]=k*n+y*o+b*d+S*_,e[5]=k*r+y*c+b*u+S*g,e[6]=k*a+y*l+b*f+S*v,e[7]=k*s+y*m+b*h+S*A,k=i[8],y=i[9],b=i[10],S=i[11],e[8]=k*n+y*o+b*d+S*_,e[9]=k*r+y*c+b*u+S*g,e[10]=k*a+y*l+b*f+S*v,e[11]=k*s+y*m+b*h+S*A,k=i[12],y=i[13],b=i[14],S=i[15],e[12]=k*n+y*o+b*d+S*_,e[13]=k*r+y*c+b*u+S*g,e[14]=k*a+y*l+b*f+S*v,e[15]=k*s+y*m+b*h+S*A,e}function ax(e,t,i){var n=i[0],r=i[1],a=i[2],s,o,c,l,m,d,u,f,h,_,g,v;return t===e?(e[12]=t[0]*n+t[4]*r+t[8]*a+t[12],e[13]=t[1]*n+t[5]*r+t[9]*a+t[13],e[14]=t[2]*n+t[6]*r+t[10]*a+t[14],e[15]=t[3]*n+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],c=t[2],l=t[3],m=t[4],d=t[5],u=t[6],f=t[7],h=t[8],_=t[9],g=t[10],v=t[11],e[0]=s,e[1]=o,e[2]=c,e[3]=l,e[4]=m,e[5]=d,e[6]=u,e[7]=f,e[8]=h,e[9]=_,e[10]=g,e[11]=v,e[12]=s*n+m*r+h*a+t[12],e[13]=o*n+d*r+_*a+t[13],e[14]=c*n+u*r+g*a+t[14],e[15]=l*n+f*r+v*a+t[15]),e}function sx(e,t,i){var n=i[0],r=i[1],a=i[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function ox(e,t,i,n){var r=n[0],a=n[1],s=n[2],o=Math.sqrt(r*r+a*a+s*s),c,l,m,d,u,f,h,_,g,v,A,k,y,b,S,x,R,z,E,D,$,j,q,be;return o<We?null:(o=1/o,r*=o,a*=o,s*=o,c=Math.sin(i),l=Math.cos(i),m=1-l,d=t[0],u=t[1],f=t[2],h=t[3],_=t[4],g=t[5],v=t[6],A=t[7],k=t[8],y=t[9],b=t[10],S=t[11],x=r*r*m+l,R=a*r*m+s*c,z=s*r*m-a*c,E=r*a*m-s*c,D=a*a*m+l,$=s*a*m+r*c,j=r*s*m+a*c,q=a*s*m-r*c,be=s*s*m+l,e[0]=d*x+_*R+k*z,e[1]=u*x+g*R+y*z,e[2]=f*x+v*R+b*z,e[3]=h*x+A*R+S*z,e[4]=d*E+_*D+k*$,e[5]=u*E+g*D+y*$,e[6]=f*E+v*D+b*$,e[7]=h*E+A*D+S*$,e[8]=d*j+_*q+k*be,e[9]=u*j+g*q+y*be,e[10]=f*j+v*q+b*be,e[11]=h*j+A*q+S*be,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function cx(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[4],s=t[5],o=t[6],c=t[7],l=t[8],m=t[9],d=t[10],u=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+l*n,e[5]=s*r+m*n,e[6]=o*r+d*n,e[7]=c*r+u*n,e[8]=l*r-a*n,e[9]=m*r-s*n,e[10]=d*r-o*n,e[11]=u*r-c*n,e}function lx(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[0],s=t[1],o=t[2],c=t[3],l=t[8],m=t[9],d=t[10],u=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-l*n,e[1]=s*r-m*n,e[2]=o*r-d*n,e[3]=c*r-u*n,e[8]=a*n+l*r,e[9]=s*n+m*r,e[10]=o*n+d*r,e[11]=c*n+u*r,e}function mx(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[0],s=t[1],o=t[2],c=t[3],l=t[4],m=t[5],d=t[6],u=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+l*n,e[1]=s*r+m*n,e[2]=o*r+d*n,e[3]=c*r+u*n,e[4]=l*r-a*n,e[5]=m*r-s*n,e[6]=d*r-o*n,e[7]=u*r-c*n,e}function dx(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function ux(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function fx(e,t,i){var n=i[0],r=i[1],a=i[2],s=Math.sqrt(n*n+r*r+a*a),o,c,l;return s<We?null:(s=1/s,n*=s,r*=s,a*=s,o=Math.sin(t),c=Math.cos(t),l=1-c,e[0]=n*n*l+c,e[1]=r*n*l+a*o,e[2]=a*n*l-r*o,e[3]=0,e[4]=n*r*l-a*o,e[5]=r*r*l+c,e[6]=a*r*l+n*o,e[7]=0,e[8]=n*a*l+r*o,e[9]=r*a*l-n*o,e[10]=a*a*l+c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function hx(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=i,e[7]=0,e[8]=0,e[9]=-i,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function gx(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-i,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=i,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function _x(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=i,e[2]=0,e[3]=0,e[4]=-i,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function $g(e,t,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=n+n,c=r+r,l=a+a,m=n*o,d=n*c,u=n*l,f=r*c,h=r*l,_=a*l,g=s*o,v=s*c,A=s*l;return e[0]=1-(f+_),e[1]=d+A,e[2]=u-v,e[3]=0,e[4]=d-A,e[5]=1-(m+_),e[6]=h+g,e[7]=0,e[8]=u+v,e[9]=h-g,e[10]=1-(m+f),e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function vx(e,t){var i=new Oi(3),n=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],c=t[5],l=t[6],m=t[7],d=n*n+r*r+a*a+s*s;return d>0?(i[0]=(o*s+m*n+c*a-l*r)*2/d,i[1]=(c*s+m*r+l*n-o*a)*2/d,i[2]=(l*s+m*a+o*r-c*n)*2/d):(i[0]=(o*s+m*n+c*a-l*r)*2,i[1]=(c*s+m*r+l*n-o*a)*2,i[2]=(l*s+m*a+o*r-c*n)*2),$g(e,t,i),e}function px(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Xg(e,t){var i=t[0],n=t[1],r=t[2],a=t[4],s=t[5],o=t[6],c=t[8],l=t[9],m=t[10];return e[0]=Math.sqrt(i*i+n*n+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(c*c+l*l+m*m),e}function wx(e,t){var i=new Oi(3);Xg(i,t);var n=1/i[0],r=1/i[1],a=1/i[2],s=t[0]*n,o=t[1]*r,c=t[2]*a,l=t[4]*n,m=t[5]*r,d=t[6]*a,u=t[8]*n,f=t[9]*r,h=t[10]*a,_=s+m+h,g=0;return _>0?(g=Math.sqrt(_+1)*2,e[3]=.25*g,e[0]=(d-f)/g,e[1]=(u-c)/g,e[2]=(o-l)/g):s>m&&s>h?(g=Math.sqrt(1+s-m-h)*2,e[3]=(d-f)/g,e[0]=.25*g,e[1]=(o+l)/g,e[2]=(u+c)/g):m>h?(g=Math.sqrt(1+m-s-h)*2,e[3]=(u-c)/g,e[0]=(o+l)/g,e[1]=.25*g,e[2]=(d+f)/g):(g=Math.sqrt(1+h-s-m)*2,e[3]=(o-l)/g,e[0]=(u+c)/g,e[1]=(d+f)/g,e[2]=.25*g),e}function yx(e,t,i,n){t[0]=n[12],t[1]=n[13],t[2]=n[14];var r=n[0],a=n[1],s=n[2],o=n[4],c=n[5],l=n[6],m=n[8],d=n[9],u=n[10];i[0]=Math.sqrt(r*r+a*a+s*s),i[1]=Math.sqrt(o*o+c*c+l*l),i[2]=Math.sqrt(m*m+d*d+u*u);var f=1/i[0],h=1/i[1],_=1/i[2],g=r*f,v=a*h,A=s*_,k=o*f,y=c*h,b=l*_,S=m*f,x=d*h,R=u*_,z=g+y+R,E=0;return z>0?(E=Math.sqrt(z+1)*2,e[3]=.25*E,e[0]=(b-x)/E,e[1]=(S-A)/E,e[2]=(v-k)/E):g>y&&g>R?(E=Math.sqrt(1+g-y-R)*2,e[3]=(b-x)/E,e[0]=.25*E,e[1]=(v+k)/E,e[2]=(S+A)/E):y>R?(E=Math.sqrt(1+y-g-R)*2,e[3]=(S-A)/E,e[0]=(v+k)/E,e[1]=.25*E,e[2]=(b+x)/E):(E=Math.sqrt(1+R-g-y)*2,e[3]=(v-k)/E,e[0]=(S+A)/E,e[1]=(b+x)/E,e[2]=.25*E),e}function Sx(e,t,i,n){var r=t[0],a=t[1],s=t[2],o=t[3],c=r+r,l=a+a,m=s+s,d=r*c,u=r*l,f=r*m,h=a*l,_=a*m,g=s*m,v=o*c,A=o*l,k=o*m,y=n[0],b=n[1],S=n[2];return e[0]=(1-(h+g))*y,e[1]=(u+k)*y,e[2]=(f-A)*y,e[3]=0,e[4]=(u-k)*b,e[5]=(1-(d+g))*b,e[6]=(_+v)*b,e[7]=0,e[8]=(f+A)*S,e[9]=(_-v)*S,e[10]=(1-(d+h))*S,e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function kx(e,t,i,n,r){var a=t[0],s=t[1],o=t[2],c=t[3],l=a+a,m=s+s,d=o+o,u=a*l,f=a*m,h=a*d,_=s*m,g=s*d,v=o*d,A=c*l,k=c*m,y=c*d,b=n[0],S=n[1],x=n[2],R=r[0],z=r[1],E=r[2],D=(1-(_+v))*b,$=(f+y)*b,j=(h-k)*b,q=(f-y)*S,be=(1-(u+v))*S,M=(g+A)*S,N=(h+k)*x,G=(g-A)*x,he=(1-(u+_))*x;return e[0]=D,e[1]=$,e[2]=j,e[3]=0,e[4]=q,e[5]=be,e[6]=M,e[7]=0,e[8]=N,e[9]=G,e[10]=he,e[11]=0,e[12]=i[0]+R-(D*R+q*z+N*E),e[13]=i[1]+z-($*R+be*z+G*E),e[14]=i[2]+E-(j*R+M*z+he*E),e[15]=1,e}function Ax(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=i+i,o=n+n,c=r+r,l=i*s,m=n*s,d=n*o,u=r*s,f=r*o,h=r*c,_=a*s,g=a*o,v=a*c;return e[0]=1-d-h,e[1]=m+v,e[2]=u-g,e[3]=0,e[4]=m-v,e[5]=1-l-h,e[6]=f+_,e[7]=0,e[8]=u+g,e[9]=f-_,e[10]=1-l-d,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function bx(e,t,i,n,r,a,s){var o=1/(i-t),c=1/(r-n),l=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*c,e[6]=0,e[7]=0,e[8]=(i+t)*o,e[9]=(r+n)*c,e[10]=(s+a)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*l,e[15]=0,e}function qg(e,t,i,n,r){var a=1/Math.tan(t/2);if(e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(n-r);e[10]=(r+n)*s,e[14]=2*r*n*s}else e[10]=-1,e[14]=-2*n;return e}var Ex=qg;function xx(e,t,i,n,r){var a=1/Math.tan(t/2);if(e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(n-r);e[10]=r*s,e[14]=r*n*s}else e[10]=-1,e[14]=-n;return e}function Mx(e,t,i,n){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),c=2/(s+o),l=2/(r+a);return e[0]=c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=l,e[6]=0,e[7]=0,e[8]=-((s-o)*c*.5),e[9]=(r-a)*l*.5,e[10]=n/(i-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*i/(i-n),e[15]=0,e}function Yg(e,t,i,n,r,a,s){var o=1/(t-i),c=1/(n-r),l=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+i)*o,e[13]=(r+n)*c,e[14]=(s+a)*l,e[15]=1,e}var Tx=Yg;function Rx(e,t,i,n,r,a,s){var o=1/(t-i),c=1/(n-r),l=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=l,e[11]=0,e[12]=(t+i)*o,e[13]=(r+n)*c,e[14]=a*l,e[15]=1,e}function Lx(e,t,i,n){var r,a,s,o,c,l,m,d,u,f,h=t[0],_=t[1],g=t[2],v=n[0],A=n[1],k=n[2],y=i[0],b=i[1],S=i[2];return Math.abs(h-y)<We&&Math.abs(_-b)<We&&Math.abs(g-S)<We?Wg(e):(m=h-y,d=_-b,u=g-S,f=1/Math.sqrt(m*m+d*d+u*u),m*=f,d*=f,u*=f,r=A*u-k*d,a=k*m-v*u,s=v*d-A*m,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=d*s-u*a,c=u*r-m*s,l=m*a-d*r,f=Math.sqrt(o*o+c*c+l*l),f?(f=1/f,o*=f,c*=f,l*=f):(o=0,c=0,l=0),e[0]=r,e[1]=o,e[2]=m,e[3]=0,e[4]=a,e[5]=c,e[6]=d,e[7]=0,e[8]=s,e[9]=l,e[10]=u,e[11]=0,e[12]=-(r*h+a*_+s*g),e[13]=-(o*h+c*_+l*g),e[14]=-(m*h+d*_+u*g),e[15]=1,e)}function zx(e,t,i,n){var r=t[0],a=t[1],s=t[2],o=n[0],c=n[1],l=n[2],m=r-i[0],d=a-i[1],u=s-i[2],f=m*m+d*d+u*u;f>0&&(f=1/Math.sqrt(f),m*=f,d*=f,u*=f);var h=c*u-l*d,_=l*m-o*u,g=o*d-c*m;return f=h*h+_*_+g*g,f>0&&(f=1/Math.sqrt(f),h*=f,_*=f,g*=f),e[0]=h,e[1]=_,e[2]=g,e[3]=0,e[4]=d*g-u*_,e[5]=u*h-m*g,e[6]=m*_-d*h,e[7]=0,e[8]=m,e[9]=d,e[10]=u,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function Nx(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function Ix(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Cx(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e[4]=t[4]+i[4],e[5]=t[5]+i[5],e[6]=t[6]+i[6],e[7]=t[7]+i[7],e[8]=t[8]+i[8],e[9]=t[9]+i[9],e[10]=t[10]+i[10],e[11]=t[11]+i[11],e[12]=t[12]+i[12],e[13]=t[13]+i[13],e[14]=t[14]+i[14],e[15]=t[15]+i[15],e}function Zg(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e[3]=t[3]-i[3],e[4]=t[4]-i[4],e[5]=t[5]-i[5],e[6]=t[6]-i[6],e[7]=t[7]-i[7],e[8]=t[8]-i[8],e[9]=t[9]-i[9],e[10]=t[10]-i[10],e[11]=t[11]-i[11],e[12]=t[12]-i[12],e[13]=t[13]-i[13],e[14]=t[14]-i[14],e[15]=t[15]-i[15],e}function Ox(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12]*i,e[13]=t[13]*i,e[14]=t[14]*i,e[15]=t[15]*i,e}function Px(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e[3]=t[3]+i[3]*n,e[4]=t[4]+i[4]*n,e[5]=t[5]+i[5]*n,e[6]=t[6]+i[6]*n,e[7]=t[7]+i[7]*n,e[8]=t[8]+i[8]*n,e[9]=t[9]+i[9]*n,e[10]=t[10]+i[10]*n,e[11]=t[11]+i[11]*n,e[12]=t[12]+i[12]*n,e[13]=t[13]+i[13]*n,e[14]=t[14]+i[14]*n,e[15]=t[15]+i[15]*n,e}function Fx(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Dx(e,t){var i=e[0],n=e[1],r=e[2],a=e[3],s=e[4],o=e[5],c=e[6],l=e[7],m=e[8],d=e[9],u=e[10],f=e[11],h=e[12],_=e[13],g=e[14],v=e[15],A=t[0],k=t[1],y=t[2],b=t[3],S=t[4],x=t[5],R=t[6],z=t[7],E=t[8],D=t[9],$=t[10],j=t[11],q=t[12],be=t[13],M=t[14],N=t[15];return Math.abs(i-A)<=We*Math.max(1,Math.abs(i),Math.abs(A))&&Math.abs(n-k)<=We*Math.max(1,Math.abs(n),Math.abs(k))&&Math.abs(r-y)<=We*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(a-b)<=We*Math.max(1,Math.abs(a),Math.abs(b))&&Math.abs(s-S)<=We*Math.max(1,Math.abs(s),Math.abs(S))&&Math.abs(o-x)<=We*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(c-R)<=We*Math.max(1,Math.abs(c),Math.abs(R))&&Math.abs(l-z)<=We*Math.max(1,Math.abs(l),Math.abs(z))&&Math.abs(m-E)<=We*Math.max(1,Math.abs(m),Math.abs(E))&&Math.abs(d-D)<=We*Math.max(1,Math.abs(d),Math.abs(D))&&Math.abs(u-$)<=We*Math.max(1,Math.abs(u),Math.abs($))&&Math.abs(f-j)<=We*Math.max(1,Math.abs(f),Math.abs(j))&&Math.abs(h-q)<=We*Math.max(1,Math.abs(h),Math.abs(q))&&Math.abs(_-be)<=We*Math.max(1,Math.abs(_),Math.abs(be))&&Math.abs(g-M)<=We*Math.max(1,Math.abs(g),Math.abs(M))&&Math.abs(v-N)<=We*Math.max(1,Math.abs(v),Math.abs(N))}var Bx=Kg,Ux=Zg,ge={};Pg(ge,{add:()=>Kx,angle:()=>hM,bezier:()=>sM,ceil:()=>$x,clone:()=>Gx,copy:()=>Vx,create:()=>jg,cross:()=>iM,dist:()=>kM,distance:()=>i1,div:()=>SM,divide:()=>t1,dot:()=>cd,equals:()=>pM,exactEquals:()=>vM,floor:()=>Xx,forEach:()=>xM,fromValues:()=>Hx,hermite:()=>aM,inverse:()=>eM,len:()=>bM,length:()=>Jg,lerp:()=>nM,max:()=>Yx,min:()=>qx,mul:()=>yM,multiply:()=>e1,negate:()=>Qx,normalize:()=>tM,random:()=>oM,rotateX:()=>dM,rotateY:()=>uM,rotateZ:()=>fM,round:()=>Zx,scale:()=>jx,scaleAndAdd:()=>Jx,set:()=>Wx,slerp:()=>rM,sqrDist:()=>AM,sqrLen:()=>EM,squaredDistance:()=>n1,squaredLength:()=>r1,str:()=>_M,sub:()=>wM,subtract:()=>Qg,transformMat3:()=>lM,transformMat4:()=>cM,transformQuat:()=>mM,zero:()=>gM});function jg(){var e=new Oi(3);return Oi!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Gx(e){var t=new Oi(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Jg(e){var t=e[0],i=e[1],n=e[2];return Math.sqrt(t*t+i*i+n*n)}function Hx(e,t,i){var n=new Oi(3);return n[0]=e,n[1]=t,n[2]=i,n}function Vx(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Wx(e,t,i,n){return e[0]=t,e[1]=i,e[2]=n,e}function Kx(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e}function Qg(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e}function e1(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e}function t1(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e[2]=t[2]/i[2],e}function $x(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Xx(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function qx(e,t,i){return e[0]=Math.min(t[0],i[0]),e[1]=Math.min(t[1],i[1]),e[2]=Math.min(t[2],i[2]),e}function Yx(e,t,i){return e[0]=Math.max(t[0],i[0]),e[1]=Math.max(t[1],i[1]),e[2]=Math.max(t[2],i[2]),e}function Zx(e,t){return e[0]=xm(t[0]),e[1]=xm(t[1]),e[2]=xm(t[2]),e}function jx(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function Jx(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e}function i1(e,t){var i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(i*i+n*n+r*r)}function n1(e,t){var i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return i*i+n*n+r*r}function r1(e){var t=e[0],i=e[1],n=e[2];return t*t+i*i+n*n}function Qx(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function eM(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function tM(e,t){var i=t[0],n=t[1],r=t[2],a=i*i+n*n+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function cd(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function iM(e,t,i){var n=t[0],r=t[1],a=t[2],s=i[0],o=i[1],c=i[2];return e[0]=r*c-a*o,e[1]=a*s-n*c,e[2]=n*o-r*s,e}function nM(e,t,i,n){var r=t[0],a=t[1],s=t[2];return e[0]=r+n*(i[0]-r),e[1]=a+n*(i[1]-a),e[2]=s+n*(i[2]-s),e}function rM(e,t,i,n){var r=Math.acos(Math.min(Math.max(cd(t,i),-1),1)),a=Math.sin(r),s=Math.sin((1-n)*r)/a,o=Math.sin(n*r)/a;return e[0]=s*t[0]+o*i[0],e[1]=s*t[1]+o*i[1],e[2]=s*t[2]+o*i[2],e}function aM(e,t,i,n,r,a){var s=a*a,o=s*(2*a-3)+1,c=s*(a-2)+a,l=s*(a-1),m=s*(3-2*a);return e[0]=t[0]*o+i[0]*c+n[0]*l+r[0]*m,e[1]=t[1]*o+i[1]*c+n[1]*l+r[1]*m,e[2]=t[2]*o+i[2]*c+n[2]*l+r[2]*m,e}function sM(e,t,i,n,r,a){var s=1-a,o=s*s,c=a*a,l=o*s,m=3*a*o,d=3*c*s,u=c*a;return e[0]=t[0]*l+i[0]*m+n[0]*d+r[0]*u,e[1]=t[1]*l+i[1]*m+n[1]*d+r[1]*u,e[2]=t[2]*l+i[2]*m+n[2]*d+r[2]*u,e}function oM(e,t){t=t===void 0?1:t;var i=K0()*2*Math.PI,n=K0()*2-1,r=Math.sqrt(1-n*n)*t;return e[0]=Math.cos(i)*r,e[1]=Math.sin(i)*r,e[2]=n*t,e}function cM(e,t,i){var n=t[0],r=t[1],a=t[2],s=i[3]*n+i[7]*r+i[11]*a+i[15];return s=s||1,e[0]=(i[0]*n+i[4]*r+i[8]*a+i[12])/s,e[1]=(i[1]*n+i[5]*r+i[9]*a+i[13])/s,e[2]=(i[2]*n+i[6]*r+i[10]*a+i[14])/s,e}function lM(e,t,i){var n=t[0],r=t[1],a=t[2];return e[0]=n*i[0]+r*i[3]+a*i[6],e[1]=n*i[1]+r*i[4]+a*i[7],e[2]=n*i[2]+r*i[5]+a*i[8],e}function mM(e,t,i){var n=i[0],r=i[1],a=i[2],s=i[3],o=t[0],c=t[1],l=t[2],m=r*l-a*c,d=a*o-n*l,u=n*c-r*o;return m=m+m,d=d+d,u=u+u,e[0]=o+s*m+r*u-a*d,e[1]=c+s*d+a*m-n*u,e[2]=l+s*u+n*d-r*m,e}function dM(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[0],a[1]=r[1]*Math.cos(n)-r[2]*Math.sin(n),a[2]=r[1]*Math.sin(n)+r[2]*Math.cos(n),e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function uM(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[2]*Math.sin(n)+r[0]*Math.cos(n),a[1]=r[1],a[2]=r[2]*Math.cos(n)-r[0]*Math.sin(n),e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function fM(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[0]*Math.cos(n)-r[1]*Math.sin(n),a[1]=r[0]*Math.sin(n)+r[1]*Math.cos(n),a[2]=r[2],e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function hM(e,t){var i=e[0],n=e[1],r=e[2],a=t[0],s=t[1],o=t[2],c=Math.sqrt((i*i+n*n+r*r)*(a*a+s*s+o*o)),l=c&&cd(e,t)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function gM(e){return e[0]=0,e[1]=0,e[2]=0,e}function _M(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function vM(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function pM(e,t){var i=e[0],n=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(i-a)<=We*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(n-s)<=We*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(r-o)<=We*Math.max(1,Math.abs(r),Math.abs(o))}var wM=Qg,yM=e1,SM=t1,kM=i1,AM=n1,bM=Jg,EM=r1,xM=(function(){var e=jg();return function(t,i,n,r,a,s){var o,c;for(i||(i=3),n||(n=0),r?c=Math.min(r*i+n,t.length):c=t.length,o=n;o<c;o+=i)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})(),a1=class{constructor(){this._position=ge.create(),this._angles=ge.create(),this._bobAngles=ge.create(),this._bobOffset=ge.create(),this._kickAngles=ge.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=ot.create(),this._projectionMatrix=ot.create(),this._viewProjectionMatrix=ot.create(),this._dirty=!0}get position(){return this._position}set position(e){ge.equals(this._position,e)||(ge.copy(this._position,e),this._dirty=!0,this.triggerMoveEvent())}get angles(){return this._angles}set angles(e){ge.equals(this._angles,e)||(ge.copy(this._angles,e),this._dirty=!0,this.triggerMoveEvent())}get bobAngles(){return this._bobAngles}set bobAngles(e){ge.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){ge.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){ge.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}setPosition(e,t,i){let n=ge.fromValues(e,t,i);ge.equals(this._position,n)||(ge.copy(this._position,n),this._dirty=!0,this.triggerMoveEvent())}setRotation(e,t,i){let n=ge.fromValues(e,t,i);ge.equals(this._angles,n)||(ge.copy(this._angles,n),this._dirty=!0,this.triggerMoveEvent())}setFov(e){this.fov=e}setAspectRatio(e){this.aspect=e}lookAt(e){let t=ge.create();if(ge.subtract(t,e,this._position),ge.length(t)<.001)return;let n=Math.atan2(t[1],t[0])*W0,r=Math.hypot(t[0],t[1]),a=-Math.atan2(t[2],r)*W0;this.setRotation(a,n,0)}triggerMoveEvent(){this.onCameraMove&&this.onCameraMove({position:ge.clone(this._position),angles:ge.clone(this._angles)})}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=ot.create();return ot.perspective(t,e*$a,this._aspect,this._near,this._far),t}screenToWorldRay(e,t){let i=e*2-1,n=1-t*2,r=ge.fromValues(i,n,-1),a=ge.fromValues(i,n,1),s=ot.create();ot.invert(s,this.viewProjectionMatrix);let o=ge.create(),c=ge.create();ge.transformMat4(o,r,s),ge.transformMat4(c,a,s);let l=ge.create();return ge.subtract(l,c,o),ge.normalize(l,l),{origin:ge.clone(this._position),direction:l}}updateMatrices(){if(!this._dirty)return;ot.perspective(this._projectionMatrix,this._fov*$a,this._aspect,this._near,this._far);let e=ot.fromValues(0,0,-1,0,-1,0,0,0,0,1,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],i=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],n=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*$a,a=i*$a,s=n*$a,o=ot.create();ot.identity(o),ot.rotateZ(o,o,-a),ot.rotateY(o,o,-r),ot.rotateX(o,o,-s);let c=ot.create();ot.multiply(c,e,o);let l=ge.add(ge.create(),this._position,this._bobOffset),m=ge.negate(ge.create(),l),d=ge.create();ge.transformMat4(d,m,o);let u=ge.fromValues(d[1]?-d[1]:0,d[2]||0,d[0]?-d[0]:0);ot.copy(this._viewMatrix,c),this._viewMatrix[12]=u[0],this._viewMatrix[13]=u[1],this._viewMatrix[14]=u[2],ot.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};function s1(e){let{system:t,origin:i,normal:n={x:0,y:0,z:1}}=e;for(let r=0;r<12;r+=1){let a=200+t.rng.frandom()*180,s=t.rng.frandom()*.35;t.spawn({position:i,velocity:{x:n.x*a+(t.rng.frandom()-.5)*80,y:n.y*a+(t.rng.frandom()-.5)*80,z:Math.max(n.z*a,120)+s*80},color:[1,.8,.4,1],size:2.5,lifetime:.45+t.rng.frandom()*.1,gravity:600,damping:2,bounce:.45,blendMode:"additive",fade:!0})}for(let r=0;r<8;r+=1)t.spawn({position:i,velocity:{x:(t.rng.frandom()-.5)*40,y:(t.rng.frandom()-.5)*40,z:80+t.rng.frandom()*40},color:[.45,.45,.45,.75],size:6,lifetime:.6,gravity:200,damping:4,bounce:.15,blendMode:"alpha",fade:!0})}function o1(e){let{system:t,origin:i}=e;for(let n=0;n<40;n+=1){let r=t.rng.frandom()*Math.PI*2,a=Math.acos(2*t.rng.frandom()-1),s=220+t.rng.frandom()*260,o={x:Math.sin(a)*Math.cos(r),y:Math.sin(a)*Math.sin(r),z:Math.cos(a)};t.spawn({position:i,velocity:{x:o.x*s,y:o.y*s,z:o.z*s},color:[1,.6,.2,1],size:5,lifetime:.9,gravity:700,damping:1,bounce:.35,blendMode:"additive",fade:!0})}for(let n=0;n<16;n+=1)t.spawn({position:i,velocity:{x:(t.rng.frandom()-.5)*30,y:(t.rng.frandom()-.5)*30,z:120+t.rng.frandom()*120},color:[.25,.25,.25,.9],size:12,lifetime:1.2,gravity:300,damping:3,blendMode:"alpha",fade:!0})}function c1(e){let{system:t,origin:i,direction:n={x:0,y:0,z:1}}=e;for(let r=0;r<24;r+=1){let a=120+t.rng.frandom()*180;t.spawn({position:i,velocity:{x:n.x*a+(t.rng.frandom()-.5)*70,y:n.y*a+(t.rng.frandom()-.5)*70,z:n.z*a+t.rng.frandom()*80},color:[.6,0,0,.95],size:3,lifetime:.8,gravity:900,damping:1,bounce:.2,blendMode:"alpha",fade:!0})}}function l1(e){let{system:t,origin:i,direction:n={x:1,y:0,z:0}}=e;for(let r=0;r<10;r+=1){let a=350+t.rng.frandom()*100;t.spawn({position:i,velocity:{x:n.x*a+(t.rng.frandom()-.5)*30,y:n.y*a+(t.rng.frandom()-.5)*30,z:n.z*a+(t.rng.frandom()-.5)*30},color:[1,.8,.3,1],size:3,lifetime:.25,gravity:200,damping:1,blendMode:"additive",fade:!0})}}function m1(e){let{system:t,origin:i,normal:n={x:0,y:0,z:1}}=e;for(let r=0;r<30;r+=1){let a=100+t.rng.frandom()*150;t.spawn({position:i,velocity:{x:n.x*a+(t.rng.frandom()-.5)*80,y:n.y*a+(t.rng.frandom()-.5)*80,z:100+t.rng.frandom()*120},color:[.5,.6,.8,.5],size:3,lifetime:.5+t.rng.frandom()*.3,gravity:800,damping:1.5,blendMode:"alpha",fade:!0})}}function d1(e){let{system:t,origin:i}=e;for(let n=0;n<8;n+=1)t.spawn({position:{x:i.x+(t.rng.frandom()-.5)*10,y:i.y+(t.rng.frandom()-.5)*10,z:i.z+(t.rng.frandom()-.5)*10},velocity:{x:(t.rng.frandom()-.5)*20,y:(t.rng.frandom()-.5)*20,z:40+t.rng.frandom()*20},color:[.8,.8,.8,.3],size:5+t.rng.frandom()*4,lifetime:1.5+t.rng.frandom()*.5,gravity:-50,damping:.5,blendMode:"alpha",fade:!0})}function u1(e){let{system:t,start:i,end:n}=e,r=n.x-i.x,a=n.y-i.y,s=n.z-i.z,o=Math.sqrt(r*r+a*a+s*s);if(o<1)return;let c={x:r/o,y:a/o,z:s/o},l=8;for(let m=0;m<o;m+=l){let d=i.x+c.x*m,u=i.y+c.y*m,f=i.z+c.z*m;t.spawn({position:{x:d,y:u,z:f},velocity:{x:0,y:0,z:0},color:[.4,.4,1,.8],size:2,lifetime:.6,blendMode:"additive",fade:!0});let h=3,_=m*.5;t.spawn({position:{x:d+(t.rng.frandom()-.5)*6,y:u+(t.rng.frandom()-.5)*6,z:f+(t.rng.frandom()-.5)*6},velocity:{x:(t.rng.frandom()-.5)*10,y:(t.rng.frandom()-.5)*10,z:(t.rng.frandom()-.5)*10},color:[.1,.1,.8,.6],size:3,lifetime:.8+t.rng.frandom()*.2,blendMode:"additive",fade:!0})}}function ld(e){let{system:t,origin:i,normal:n={x:0,y:0,z:1},count:r=12,color:a=[1,.9,.2,1]}=e;for(let s=0;s<r;s++){let o=100+t.rng.frandom()*200,c=.5;t.spawn({position:i,velocity:{x:n.x*o+(t.rng.frandom()-.5)*100*c,y:n.y*o+(t.rng.frandom()-.5)*100*c,z:n.z*o+(t.rng.frandom()-.5)*100*c},color:a,size:1.5,lifetime:.3+t.rng.frandom()*.2,gravity:800,bounce:.5,damping:1,blendMode:"additive",fade:!0})}}function md(e){let{system:t,origin:i,normal:n={x:0,y:0,z:1},color:r=[1,.8,0,1]}=e;t.spawn({position:i,velocity:{x:0,y:0,z:0},color:r,size:8,lifetime:.2,blendMode:"additive",fade:!0});for(let a=0;a<8;a++){let s=150+t.rng.frandom()*150;t.spawn({position:i,velocity:{x:n.x*s+(t.rng.frandom()-.5)*120,y:n.y*s+(t.rng.frandom()-.5)*120,z:n.z*s+(t.rng.frandom()-.5)*120},color:r,size:2,lifetime:.4+t.rng.frandom()*.2,gravity:400,blendMode:"additive",fade:!0})}}function f1(e){let{system:t,origin:i}=e;t.spawn({position:i,velocity:{x:0,y:0,z:0},color:[.2,1,.2,1],size:30,lifetime:.5,blendMode:"additive",fade:!0});for(let n=0;n<60;n++){let r=t.rng.frandom()*Math.PI*2,a=Math.acos(2*t.rng.frandom()-1),s=300+t.rng.frandom()*400,o={x:Math.sin(a)*Math.cos(r),y:Math.sin(a)*Math.sin(r),z:Math.cos(a)};t.spawn({position:i,velocity:{x:o.x*s,y:o.y*s,z:o.z*s},color:[.2,1,.2,.8],size:4,lifetime:1,gravity:100,damping:1,blendMode:"additive",fade:!0})}}var h1=class{constructor(e){this.messageOffsets=[],this.currentBlock=null,this.buffer=e,this.view=new DataView(e),this.offset=0,this.scan()}scan(){let e=0;for(this.messageOffsets=[];e+4<=this.buffer.byteLength;){let t=this.view.getInt32(e,!0);if(t===-1)break;if(t<0||t>2097152){console.warn(`DemoReader: Invalid block length ${t} at offset ${e} during scan`);break}if(e+4+t>this.buffer.byteLength){console.warn(`DemoReader: Incomplete block at offset ${e} during scan`);break}this.messageOffsets.push(e),e+=4+t}}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(e===-1||e<0||this.offset+4+e>this.buffer.byteLength)return null;this.offset+=4;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new xo(t)}}nextBlock(){let e=this.readNextBlock();return e?(this.currentBlock=e,!0):(this.currentBlock=null,!1)}getBlock(){if(!this.currentBlock)throw new Error("No current block. Call nextBlock() first.");return this.currentBlock}readAllBlocksToBuffer(){let e=0,t=this.offset,i=[],n=this.offset;for(;n+4<=this.buffer.byteLength;){let o=this.view.getInt32(n,!0);if(o===-1||o<0||n+4+o>this.buffer.byteLength)break;i.push({offset:n+4,length:o}),e+=o,n+=4+o}let r=new Uint8Array(e),a=0,s=new Uint8Array(this.buffer);for(let o of i)r.set(s.subarray(o.offset,o.offset+o.length),a),a+=o.length;return this.offset=n,r.buffer}reset(){this.offset=0,this.currentBlock=null}seekToMessage(e){return e<0||e>=this.messageOffsets.length?!1:(this.offset=this.messageOffsets[e],this.currentBlock=null,!0)}getMessageCount(){return this.messageOffsets.length}getOffset(){return this.offset}getProgress(){let e=this.offset,t=this.buffer.byteLength;return{current:e,total:t,percent:t>0?e/t*100:0}}},MM=4,$0=0,X0=1,TM=2;function Nr(e){let t=e.length;for(;--t>=0;)e[t]=0}var RM=0,g1=1,LM=2,zM=3,NM=258,dd=29,cs=256,es=cs+1+dd,Tr=30,ud=19,_1=2*es+1,Yn=15,Mm=16,IM=7,fd=256,v1=16,p1=17,w1=18,Vm=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Mo=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),CM=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),y1=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),OM=512,en=new Array((es+2)*2);Nr(en);var Za=new Array(Tr*2);Nr(Za);var ts=new Array(OM);Nr(ts);var is=new Array(NM-zM+1);Nr(is);var hd=new Array(dd);Nr(hd);var To=new Array(Tr);Nr(To);function Tm(e,t,i,n,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=r,this.has_stree=e&&e.length}var S1,k1,A1;function Rm(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var b1=e=>e<256?ts[e]:ts[256+(e>>>7)],ns=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ft=(e,t,i)=>{e.bi_valid>Mm-i?(e.bi_buf|=t<<e.bi_valid&65535,ns(e,e.bi_buf),e.bi_buf=t>>Mm-e.bi_valid,e.bi_valid+=i-Mm):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},Ni=(e,t,i)=>{Ft(e,i[t*2],i[t*2+1])},E1=(e,t)=>{let i=0;do i|=e&1,e>>>=1,i<<=1;while(--t>0);return i>>>1},PM=e=>{e.bi_valid===16?(ns(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},FM=(e,t)=>{let i=t.dyn_tree,n=t.max_code,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,c=t.stat_desc.max_length,l,m,d,u,f,h,_=0;for(u=0;u<=Yn;u++)e.bl_count[u]=0;for(i[e.heap[e.heap_max]*2+1]=0,l=e.heap_max+1;l<_1;l++)m=e.heap[l],u=i[i[m*2+1]*2+1]+1,u>c&&(u=c,_++),i[m*2+1]=u,!(m>n)&&(e.bl_count[u]++,f=0,m>=o&&(f=s[m-o]),h=i[m*2],e.opt_len+=h*(u+f),a&&(e.static_len+=h*(r[m*2+1]+f)));if(_!==0){do{for(u=c-1;e.bl_count[u]===0;)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[c]--,_-=2}while(_>0);for(u=c;u!==0;u--)for(m=e.bl_count[u];m!==0;)d=e.heap[--l],!(d>n)&&(i[d*2+1]!==u&&(e.opt_len+=(u-i[d*2+1])*i[d*2],i[d*2+1]=u),m--)}},x1=(e,t,i)=>{let n=new Array(Yn+1),r=0,a,s;for(a=1;a<=Yn;a++)r=r+i[a-1]<<1,n[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=E1(n[o]++,o))}},DM=()=>{let e,t,i,n,r,a=new Array(Yn+1);for(i=0,n=0;n<dd-1;n++)for(hd[n]=i,e=0;e<1<<Vm[n];e++)is[i++]=n;for(is[i-1]=n,r=0,n=0;n<16;n++)for(To[n]=r,e=0;e<1<<Mo[n];e++)ts[r++]=n;for(r>>=7;n<Tr;n++)for(To[n]=r<<7,e=0;e<1<<Mo[n]-7;e++)ts[256+r++]=n;for(t=0;t<=Yn;t++)a[t]=0;for(e=0;e<=143;)en[e*2+1]=8,e++,a[8]++;for(;e<=255;)en[e*2+1]=9,e++,a[9]++;for(;e<=279;)en[e*2+1]=7,e++,a[7]++;for(;e<=287;)en[e*2+1]=8,e++,a[8]++;for(x1(en,es+1,a),e=0;e<Tr;e++)Za[e*2+1]=5,Za[e*2]=E1(e,5);S1=new Tm(en,Vm,cs+1,es,Yn),k1=new Tm(Za,Mo,0,Tr,Yn),A1=new Tm(new Array(0),CM,0,ud,IM)},M1=e=>{let t;for(t=0;t<es;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Tr;t++)e.dyn_dtree[t*2]=0;for(t=0;t<ud;t++)e.bl_tree[t*2]=0;e.dyn_ltree[fd*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},T1=e=>{e.bi_valid>8?ns(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},q0=(e,t,i,n)=>{let r=t*2,a=i*2;return e[r]<e[a]||e[r]===e[a]&&n[t]<=n[i]},Lm=(e,t,i)=>{let n=e.heap[i],r=i<<1;for(;r<=e.heap_len&&(r<e.heap_len&&q0(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!q0(t,n,e.heap[r],e.depth));)e.heap[i]=e.heap[r],i=r,r<<=1;e.heap[i]=n},Y0=(e,t,i)=>{let n,r,a=0,s,o;if(e.sym_next!==0)do n=e.pending_buf[e.sym_buf+a++]&255,n+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],n===0?Ni(e,r,t):(s=is[r],Ni(e,s+cs+1,t),o=Vm[s],o!==0&&(r-=hd[s],Ft(e,r,o)),n--,s=b1(n),Ni(e,s,i),o=Mo[s],o!==0&&(n-=To[s],Ft(e,n,o)));while(a<e.sym_next);Ni(e,fd,t)},Wm=(e,t)=>{let i=t.dyn_tree,n=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,c=-1,l;for(e.heap_len=0,e.heap_max=_1,s=0;s<a;s++)i[s*2]!==0?(e.heap[++e.heap_len]=c=s,e.depth[s]=0):i[s*2+1]=0;for(;e.heap_len<2;)l=e.heap[++e.heap_len]=c<2?++c:0,i[l*2]=1,e.depth[l]=0,e.opt_len--,r&&(e.static_len-=n[l*2+1]);for(t.max_code=c,s=e.heap_len>>1;s>=1;s--)Lm(e,i,s);l=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Lm(e,i,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,i[l*2]=i[s*2]+i[o*2],e.depth[l]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,i[s*2+1]=i[o*2+1]=l,e.heap[1]=l++,Lm(e,i,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],FM(e,t),x1(i,c,e.bl_count)},Z0=(e,t,i)=>{let n,r=-1,a,s=t[1],o=0,c=7,l=4;for(s===0&&(c=138,l=3),t[(i+1)*2+1]=65535,n=0;n<=i;n++)a=s,s=t[(n+1)*2+1],!(++o<c&&a===s)&&(o<l?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[v1*2]++):o<=10?e.bl_tree[p1*2]++:e.bl_tree[w1*2]++,o=0,r=a,s===0?(c=138,l=3):a===s?(c=6,l=3):(c=7,l=4))},j0=(e,t,i)=>{let n,r=-1,a,s=t[1],o=0,c=7,l=4;for(s===0&&(c=138,l=3),n=0;n<=i;n++)if(a=s,s=t[(n+1)*2+1],!(++o<c&&a===s)){if(o<l)do Ni(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(Ni(e,a,e.bl_tree),o--),Ni(e,v1,e.bl_tree),Ft(e,o-3,2)):o<=10?(Ni(e,p1,e.bl_tree),Ft(e,o-3,3)):(Ni(e,w1,e.bl_tree),Ft(e,o-11,7));o=0,r=a,s===0?(c=138,l=3):a===s?(c=6,l=3):(c=7,l=4)}},BM=e=>{let t;for(Z0(e,e.dyn_ltree,e.l_desc.max_code),Z0(e,e.dyn_dtree,e.d_desc.max_code),Wm(e,e.bl_desc),t=ud-1;t>=3&&e.bl_tree[y1[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},UM=(e,t,i,n)=>{let r;for(Ft(e,t-257,5),Ft(e,i-1,5),Ft(e,n-4,4),r=0;r<n;r++)Ft(e,e.bl_tree[y1[r]*2+1],3);j0(e,e.dyn_ltree,t-1),j0(e,e.dyn_dtree,i-1)},GM=e=>{let t=4093624447,i;for(i=0;i<=31;i++,t>>>=1)if(t&1&&e.dyn_ltree[i*2]!==0)return $0;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return X0;for(i=32;i<cs;i++)if(e.dyn_ltree[i*2]!==0)return X0;return $0},J0=!1,HM=e=>{J0||(DM(),J0=!0),e.l_desc=new Rm(e.dyn_ltree,S1),e.d_desc=new Rm(e.dyn_dtree,k1),e.bl_desc=new Rm(e.bl_tree,A1),e.bi_buf=0,e.bi_valid=0,M1(e)},R1=(e,t,i,n)=>{Ft(e,(RM<<1)+(n?1:0),3),T1(e),ns(e,i),ns(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i},VM=e=>{Ft(e,g1<<1,3),Ni(e,fd,en),PM(e)},WM=(e,t,i,n)=>{let r,a,s=0;e.level>0?(e.strm.data_type===TM&&(e.strm.data_type=GM(e)),Wm(e,e.l_desc),Wm(e,e.d_desc),s=BM(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=i+5,i+4<=r&&t!==-1?R1(e,t,i,n):e.strategy===MM||a===r?(Ft(e,(g1<<1)+(n?1:0),3),Y0(e,en,Za)):(Ft(e,(LM<<1)+(n?1:0),3),UM(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),Y0(e,e.dyn_ltree,e.dyn_dtree)),M1(e),n&&T1(e)},KM=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,t===0?e.dyn_ltree[i*2]++:(e.matches++,t--,e.dyn_ltree[(is[i]+cs+1)*2]++,e.dyn_dtree[b1(t)*2]++),e.sym_next===e.sym_end),$M=HM,XM=R1,qM=WM,YM=KM,ZM=VM,jM={_tr_init:$M,_tr_stored_block:XM,_tr_flush_block:qM,_tr_tally:YM,_tr_align:ZM},JM=(e,t,i,n)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;i!==0;){s=i>2e3?2e3:i,i-=s;do r=r+t[n++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},rs=JM,QM=()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[i]=e}return t},eT=new Uint32Array(QM()),tT=(e,t,i,n)=>{let r=eT,a=n+i;e^=-1;for(let s=n;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},_t=tT,Jn={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},tr={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:iT,_tr_stored_block:Km,_tr_flush_block:nT,_tr_tally:Sn,_tr_align:rT}=jM,{Z_NO_FLUSH:kn,Z_PARTIAL_FLUSH:aT,Z_FULL_FLUSH:sT,Z_FINISH:ai,Z_BLOCK:Q0,Z_OK:wt,Z_STREAM_END:eg,Z_STREAM_ERROR:Ii,Z_DATA_ERROR:oT,Z_BUF_ERROR:zm,Z_DEFAULT_COMPRESSION:cT,Z_FILTERED:lT,Z_HUFFMAN_ONLY:So,Z_RLE:mT,Z_FIXED:dT,Z_DEFAULT_STRATEGY:uT,Z_UNKNOWN:fT,Z_DEFLATED:Co}=tr,hT=9,gT=15,_T=8,vT=29,pT=256,$m=pT+1+vT,wT=30,yT=19,ST=2*$m+1,kT=15,xe=3,yn=258,Ci=yn+xe+1,AT=32,Lr=42,gd=57,Xm=69,qm=73,Ym=91,Zm=103,Zn=113,qa=666,Rt=1,Ir=2,Qn=3,Cr=4,bT=3,jn=(e,t)=>(e.msg=Jn[t],t),tg=e=>e*2-(e>4?9:0),wn=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ET=e=>{let t,i,n,r=e.w_size;t=e.hash_size,n=t;do i=e.head[--n],e.head[n]=i>=r?i-r:0;while(--t);t=r,n=t;do i=e.prev[--n],e.prev[n]=i>=r?i-r:0;while(--t)},xT=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask,An=xT,Kt=e=>{let t=e.state,i=t.pending;i>e.avail_out&&(i=e.avail_out),i!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,t.pending===0&&(t.pending_out=0))},$t=(e,t)=>{nT(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Kt(e.strm)},ze=(e,t)=>{e.pending_buf[e.pending++]=t},Xa=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},jm=(e,t,i,n)=>{let r=e.avail_in;return r>n&&(r=n),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),e.state.wrap===1?e.adler=rs(e.adler,t,r,i):e.state.wrap===2&&(e.adler=_t(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},L1=(e,t)=>{let i=e.max_chain_length,n=e.strstart,r,a,s=e.prev_length,o=e.nice_match,c=e.strstart>e.w_size-Ci?e.strstart-(e.w_size-Ci):0,l=e.window,m=e.w_mask,d=e.prev,u=e.strstart+yn,f=l[n+s-1],h=l[n+s];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(l[r+s]!==h||l[r+s-1]!==f||l[r]!==l[n]||l[++r]!==l[n+1])){n+=2,r++;do;while(l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&n<u);if(a=yn-(u-n),n=u-yn,a>s){if(e.match_start=t,s=a,a>=o)break;f=l[n+s-1],h=l[n+s]}}while((t=d[t&m])>c&&--i!==0);return s<=e.lookahead?s:e.lookahead},zr=e=>{let t=e.w_size,i,n,r;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ci)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ET(e),n+=t),e.strm.avail_in===0)break;if(i=jm(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=xe)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=An(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=An(e,e.ins_h,e.window[r+xe-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<xe)););}while(e.lookahead<Ci&&e.strm.avail_in!==0)},z1=(e,t)=>{let i=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n,r,a,s=0,o=e.strm.avail_in;do{if(n=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,n>r+e.strm.avail_in&&(n=r+e.strm.avail_in),n>a&&(n=a),n<i&&(n===0&&t!==ai||t===kn||n!==r+e.strm.avail_in)))break;s=t===ai&&n===r+e.strm.avail_in?1:0,Km(e,0,0,s),e.pending_buf[e.pending-4]=n,e.pending_buf[e.pending-3]=n>>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Kt(e.strm),r&&(r>n&&(r=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,n-=r),n&&(jm(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?Cr:t!==kn&&t!==ai&&e.strm.avail_in===0&&e.strstart===e.block_start?Ir:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(jm(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,i=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=i||(r||t===ai)&&t!==kn&&e.strm.avail_in===0&&r<=a)&&(n=r>a?a:r,s=t===ai&&e.strm.avail_in===0&&n===r?1:0,Km(e,e.block_start,n,s),e.block_start+=n,Kt(e.strm)),s?Qn:Rt)},Nm=(e,t)=>{let i,n;for(;;){if(e.lookahead<Ci){if(zr(e),e.lookahead<Ci&&t===kn)return Rt;if(e.lookahead===0)break}if(i=0,e.lookahead>=xe&&(e.ins_h=An(e,e.ins_h,e.window[e.strstart+xe-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),i!==0&&e.strstart-i<=e.w_size-Ci&&(e.match_length=L1(e,i)),e.match_length>=xe)if(n=Sn(e,e.strstart-e.match_start,e.match_length-xe),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=xe){e.match_length--;do e.strstart++,e.ins_h=An(e,e.ins_h,e.window[e.strstart+xe-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=An(e,e.ins_h,e.window[e.strstart+1]);else n=Sn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&($t(e,!1),e.strm.avail_out===0))return Rt}return e.insert=e.strstart<xe-1?e.strstart:xe-1,t===ai?($t(e,!0),e.strm.avail_out===0?Qn:Cr):e.sym_next&&($t(e,!1),e.strm.avail_out===0)?Rt:Ir},br=(e,t)=>{let i,n,r;for(;;){if(e.lookahead<Ci){if(zr(e),e.lookahead<Ci&&t===kn)return Rt;if(e.lookahead===0)break}if(i=0,e.lookahead>=xe&&(e.ins_h=An(e,e.ins_h,e.window[e.strstart+xe-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=xe-1,i!==0&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-Ci&&(e.match_length=L1(e,i),e.match_length<=5&&(e.strategy===lT||e.match_length===xe&&e.strstart-e.match_start>4096)&&(e.match_length=xe-1)),e.prev_length>=xe&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-xe,n=Sn(e,e.strstart-1-e.prev_match,e.prev_length-xe),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=An(e,e.ins_h,e.window[e.strstart+xe-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=xe-1,e.strstart++,n&&($t(e,!1),e.strm.avail_out===0))return Rt}else if(e.match_available){if(n=Sn(e,0,e.window[e.strstart-1]),n&&$t(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Rt}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=Sn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<xe-1?e.strstart:xe-1,t===ai?($t(e,!0),e.strm.avail_out===0?Qn:Cr):e.sym_next&&($t(e,!1),e.strm.avail_out===0)?Rt:Ir},MT=(e,t)=>{let i,n,r,a,s=e.window;for(;;){if(e.lookahead<=yn){if(zr(e),e.lookahead<=yn&&t===kn)return Rt;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=xe&&e.strstart>0&&(r=e.strstart-1,n=s[r],n===s[++r]&&n===s[++r]&&n===s[++r])){a=e.strstart+yn;do;while(n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&r<a);e.match_length=yn-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=xe?(i=Sn(e,1,e.match_length-xe),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=Sn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&($t(e,!1),e.strm.avail_out===0))return Rt}return e.insert=0,t===ai?($t(e,!0),e.strm.avail_out===0?Qn:Cr):e.sym_next&&($t(e,!1),e.strm.avail_out===0)?Rt:Ir},TT=(e,t)=>{let i;for(;;){if(e.lookahead===0&&(zr(e),e.lookahead===0)){if(t===kn)return Rt;break}if(e.match_length=0,i=Sn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&($t(e,!1),e.strm.avail_out===0))return Rt}return e.insert=0,t===ai?($t(e,!0),e.strm.avail_out===0?Qn:Cr):e.sym_next&&($t(e,!1),e.strm.avail_out===0)?Rt:Ir};function zi(e,t,i,n,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=r}var Ya=[new zi(0,0,0,0,z1),new zi(4,4,8,4,Nm),new zi(4,5,16,8,Nm),new zi(4,6,32,32,Nm),new zi(4,4,16,16,br),new zi(8,16,32,32,br),new zi(8,16,128,128,br),new zi(8,32,128,256,br),new zi(32,128,258,1024,br),new zi(32,258,258,4096,br)],RT=e=>{e.window_size=2*e.w_size,wn(e.head),e.max_lazy_match=Ya[e.level].max_lazy,e.good_match=Ya[e.level].good_length,e.nice_match=Ya[e.level].nice_length,e.max_chain_length=Ya[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=xe-1,e.match_available=0,e.ins_h=0};function LT(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Co,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(ST*2),this.dyn_dtree=new Uint16Array((2*wT+1)*2),this.bl_tree=new Uint16Array((2*yT+1)*2),wn(this.dyn_ltree),wn(this.dyn_dtree),wn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(kT+1),this.heap=new Uint16Array(2*$m+1),wn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*$m+1),wn(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var ls=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Lr&&t.status!==gd&&t.status!==Xm&&t.status!==qm&&t.status!==Ym&&t.status!==Zm&&t.status!==Zn&&t.status!==qa?1:0},N1=e=>{if(ls(e))return jn(e,Ii);e.total_in=e.total_out=0,e.data_type=fT;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?gd:t.wrap?Lr:Zn,e.adler=t.wrap===2?0:1,t.last_flush=-2,iT(t),wt},I1=e=>{let t=N1(e);return t===wt&&RT(e.state),t},zT=(e,t)=>ls(e)||e.state.wrap!==2?Ii:(e.state.gzhead=t,wt),C1=(e,t,i,n,r,a)=>{if(!e)return Ii;let s=1;if(t===cT&&(t=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),r<1||r>hT||i!==Co||n<8||n>15||t<0||t>9||a<0||a>dT||n===8&&s!==1)return jn(e,Ii);n===8&&(n=9);let o=new LT;return e.state=o,o.strm=e,o.status=Lr,o.wrap=s,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+xe-1)/xe),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=i,I1(e)},NT=(e,t)=>C1(e,t,Co,gT,_T,uT),IT=(e,t)=>{if(ls(e)||t>Q0||t<0)return e?jn(e,Ii):Ii;let i=e.state;if(!e.output||e.avail_in!==0&&!e.input||i.status===qa&&t!==ai)return jn(e,e.avail_out===0?zm:Ii);let n=i.last_flush;if(i.last_flush=t,i.pending!==0){if(Kt(e),e.avail_out===0)return i.last_flush=-1,wt}else if(e.avail_in===0&&tg(t)<=tg(n)&&t!==ai)return jn(e,zm);if(i.status===qa&&e.avail_in!==0)return jn(e,zm);if(i.status===Lr&&i.wrap===0&&(i.status=Zn),i.status===Lr){let r=Co+(i.w_bits-8<<4)<<8,a=-1;if(i.strategy>=So||i.level<2?a=0:i.level<6?a=1:i.level===6?a=2:a=3,r|=a<<6,i.strstart!==0&&(r|=AT),r+=31-r%31,Xa(i,r),i.strstart!==0&&(Xa(i,e.adler>>>16),Xa(i,e.adler&65535)),e.adler=1,i.status=Zn,Kt(e),i.pending!==0)return i.last_flush=-1,wt}if(i.status===gd){if(e.adler=0,ze(i,31),ze(i,139),ze(i,8),i.gzhead)ze(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),ze(i,i.gzhead.time&255),ze(i,i.gzhead.time>>8&255),ze(i,i.gzhead.time>>16&255),ze(i,i.gzhead.time>>24&255),ze(i,i.level===9?2:i.strategy>=So||i.level<2?4:0),ze(i,i.gzhead.os&255),i.gzhead.extra&&i.gzhead.extra.length&&(ze(i,i.gzhead.extra.length&255),ze(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=_t(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Xm;else if(ze(i,0),ze(i,0),ze(i,0),ze(i,0),ze(i,0),ze(i,i.level===9?2:i.strategy>=So||i.level<2?4:0),ze(i,bT),i.status=Zn,Kt(e),i.pending!==0)return i.last_flush=-1,wt}if(i.status===Xm){if(i.gzhead.extra){let r=i.pending,a=(i.gzhead.extra.length&65535)-i.gzindex;for(;i.pending+a>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex+=o,Kt(e),i.pending!==0)return i.last_flush=-1,wt;r=0,a-=o}let s=new Uint8Array(i.gzhead.extra);i.pending_buf.set(s.subarray(i.gzindex,i.gzindex+a),i.pending),i.pending+=a,i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex=0}i.status=qm}if(i.status===qm){if(i.gzhead.name){let r=i.pending,a;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),Kt(e),i.pending!==0)return i.last_flush=-1,wt;r=0}i.gzindex<i.gzhead.name.length?a=i.gzhead.name.charCodeAt(i.gzindex++)&255:a=0,ze(i,a)}while(a!==0);i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex=0}i.status=Ym}if(i.status===Ym){if(i.gzhead.comment){let r=i.pending,a;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),Kt(e),i.pending!==0)return i.last_flush=-1,wt;r=0}i.gzindex<i.gzhead.comment.length?a=i.gzhead.comment.charCodeAt(i.gzindex++)&255:a=0,ze(i,a)}while(a!==0);i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r))}i.status=Zm}if(i.status===Zm){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Kt(e),i.pending!==0))return i.last_flush=-1,wt;ze(i,e.adler&255),ze(i,e.adler>>8&255),e.adler=0}if(i.status=Zn,Kt(e),i.pending!==0)return i.last_flush=-1,wt}if(e.avail_in!==0||i.lookahead!==0||t!==kn&&i.status!==qa){let r=i.level===0?z1(i,t):i.strategy===So?TT(i,t):i.strategy===mT?MT(i,t):Ya[i.level].func(i,t);if((r===Qn||r===Cr)&&(i.status=qa),r===Rt||r===Qn)return e.avail_out===0&&(i.last_flush=-1),wt;if(r===Ir&&(t===aT?rT(i):t!==Q0&&(Km(i,0,0,!1),t===sT&&(wn(i.head),i.lookahead===0&&(i.strstart=0,i.block_start=0,i.insert=0))),Kt(e),e.avail_out===0))return i.last_flush=-1,wt}return t!==ai?wt:i.wrap<=0?eg:(i.wrap===2?(ze(i,e.adler&255),ze(i,e.adler>>8&255),ze(i,e.adler>>16&255),ze(i,e.adler>>24&255),ze(i,e.total_in&255),ze(i,e.total_in>>8&255),ze(i,e.total_in>>16&255),ze(i,e.total_in>>24&255)):(Xa(i,e.adler>>>16),Xa(i,e.adler&65535)),Kt(e),i.wrap>0&&(i.wrap=-i.wrap),i.pending!==0?wt:eg)},CT=e=>{if(ls(e))return Ii;let t=e.state.status;return e.state=null,t===Zn?jn(e,oT):wt},OT=(e,t)=>{let i=t.length;if(ls(e))return Ii;let n=e.state,r=n.wrap;if(r===2||r===1&&n.status!==Lr||n.lookahead)return Ii;if(r===1&&(e.adler=rs(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){r===0&&(wn(n.head),n.strstart=0,n.block_start=0,n.insert=0);let c=new Uint8Array(n.w_size);c.set(t.subarray(i-n.w_size,i),0),t=c,i=n.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,zr(n);n.lookahead>=xe;){let c=n.strstart,l=n.lookahead-(xe-1);do n.ins_h=An(n,n.ins_h,n.window[c+xe-1]),n.prev[c&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=c,c++;while(--l);n.strstart=c,n.lookahead=xe-1,zr(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=xe-1,n.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,n.wrap=r,wt},PT=NT,FT=C1,DT=I1,BT=N1,UT=zT,GT=IT,HT=CT,VT=OT,WT="pako deflate (from Nodeca project)",ja={deflateInit:PT,deflateInit2:FT,deflateReset:DT,deflateResetKeep:BT,deflateSetHeader:UT,deflate:GT,deflateEnd:HT,deflateSetDictionary:VT,deflateInfo:WT},KT=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),$T=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let i=t.shift();if(i){if(typeof i!="object")throw new TypeError(i+"must be non-object");for(let n in i)KT(i,n)&&(e[n]=i[n])}}return e},XT=e=>{let t=0;for(let n=0,r=e.length;n<r;n++)t+=e[n].length;let i=new Uint8Array(t);for(let n=0,r=0,a=e.length;n<a;n++){let s=e[n];i.set(s,r),r+=s.length}return i},Oo={assign:$T,flattenChunks:XT},O1=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{O1=!1}var as=new Uint8Array(256);for(let e=0;e<256;e++)as[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;as[254]=as[254]=1;var qT=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,i,n,r,a,s=e.length,o=0;for(r=0;r<s;r++)i=e.charCodeAt(r),(i&64512)===55296&&r+1<s&&(n=e.charCodeAt(r+1),(n&64512)===56320&&(i=65536+(i-55296<<10)+(n-56320),r++)),o+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)i=e.charCodeAt(r),(i&64512)===55296&&r+1<s&&(n=e.charCodeAt(r+1),(n&64512)===56320&&(i=65536+(i-55296<<10)+(n-56320),r++)),i<128?t[a++]=i:i<2048?(t[a++]=192|i>>>6,t[a++]=128|i&63):i<65536?(t[a++]=224|i>>>12,t[a++]=128|i>>>6&63,t[a++]=128|i&63):(t[a++]=240|i>>>18,t[a++]=128|i>>>12&63,t[a++]=128|i>>>6&63,t[a++]=128|i&63);return t},YT=(e,t)=>{if(t<65534&&e.subarray&&O1)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let n=0;n<t;n++)i+=String.fromCharCode(e[n]);return i},ZT=(e,t)=>{let i=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let n,r,a=new Array(i*2);for(r=0,n=0;n<i;){let s=e[n++];if(s<128){a[r++]=s;continue}let o=as[s];if(o>4){a[r++]=65533,n+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&n<i;)s=s<<6|e[n++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return YT(a,r)},jT=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let i=t-1;for(;i>=0&&(e[i]&192)===128;)i--;return i<0||i===0?t:i+as[e[i]]>t?i:t},ss={string2buf:qT,buf2string:ZT,utf8border:jT};function JT(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var P1=JT,F1=Object.prototype.toString,{Z_NO_FLUSH:QT,Z_SYNC_FLUSH:e6,Z_FULL_FLUSH:t6,Z_FINISH:i6,Z_OK:Ro,Z_STREAM_END:n6,Z_DEFAULT_COMPRESSION:r6,Z_DEFAULT_STRATEGY:a6,Z_DEFLATED:s6}=tr;function ms(e){this.options=Oo.assign({level:r6,method:s6,chunkSize:16384,windowBits:15,memLevel:8,strategy:a6},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new P1,this.strm.avail_out=0;let i=ja.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==Ro)throw new Error(Jn[i]);if(t.header&&ja.deflateSetHeader(this.strm,t.header),t.dictionary){let n;if(typeof t.dictionary=="string"?n=ss.string2buf(t.dictionary):F1.call(t.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(t.dictionary):n=t.dictionary,i=ja.deflateSetDictionary(this.strm,n),i!==Ro)throw new Error(Jn[i]);this._dict_set=!0}}ms.prototype.push=function(e,t){let i=this.strm,n=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?i6:QT,typeof e=="string"?i.input=ss.string2buf(e):F1.call(e)==="[object ArrayBuffer]"?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){if(i.avail_out===0&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(a===e6||a===t6)&&i.avail_out<=6){this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;continue}if(r=ja.deflate(i,a),r===n6)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=ja.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Ro;if(i.avail_out===0){this.onData(i.output);continue}if(a>0&&i.next_out>0){this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;continue}if(i.avail_in===0)break}return!0};ms.prototype.onData=function(e){this.chunks.push(e)};ms.prototype.onEnd=function(e){e===Ro&&(this.result=Oo.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function _d(e,t){let i=new ms(t);if(i.push(e,!0),i.err)throw i.msg||Jn[i.err];return i.result}function o6(e,t){return t=t||{},t.raw=!0,_d(e,t)}function c6(e,t){return t=t||{},t.gzip=!0,_d(e,t)}var l6=ms,m6=_d,d6=o6,u6=c6,f6=tr,h6={Deflate:l6,deflate:m6,deflateRaw:d6,gzip:u6,constants:f6},ko=16209,g6=16191,_6=function(t,i){let n,r,a,s,o,c,l,m,d,u,f,h,_,g,v,A,k,y,b,S,x,R,z,E,D=t.state;n=t.next_in,z=t.input,r=n+(t.avail_in-5),a=t.next_out,E=t.output,s=a-(i-t.avail_out),o=a+(t.avail_out-257),c=D.dmax,l=D.wsize,m=D.whave,d=D.wnext,u=D.window,f=D.hold,h=D.bits,_=D.lencode,g=D.distcode,v=(1<<D.lenbits)-1,A=(1<<D.distbits)-1;e:do{h<15&&(f+=z[n++]<<h,h+=8,f+=z[n++]<<h,h+=8),k=_[f&v];t:for(;;){if(y=k>>>24,f>>>=y,h-=y,y=k>>>16&255,y===0)E[a++]=k&65535;else if(y&16){b=k&65535,y&=15,y&&(h<y&&(f+=z[n++]<<h,h+=8),b+=f&(1<<y)-1,f>>>=y,h-=y),h<15&&(f+=z[n++]<<h,h+=8,f+=z[n++]<<h,h+=8),k=g[f&A];i:for(;;){if(y=k>>>24,f>>>=y,h-=y,y=k>>>16&255,y&16){if(S=k&65535,y&=15,h<y&&(f+=z[n++]<<h,h+=8,h<y&&(f+=z[n++]<<h,h+=8)),S+=f&(1<<y)-1,S>c){t.msg="invalid distance too far back",D.mode=ko;break e}if(f>>>=y,h-=y,y=a-s,S>y){if(y=S-y,y>m&&D.sane){t.msg="invalid distance too far back",D.mode=ko;break e}if(x=0,R=u,d===0){if(x+=l-y,y<b){b-=y;do E[a++]=u[x++];while(--y);x=a-S,R=E}}else if(d<y){if(x+=l+d-y,y-=d,y<b){b-=y;do E[a++]=u[x++];while(--y);if(x=0,d<b){y=d,b-=y;do E[a++]=u[x++];while(--y);x=a-S,R=E}}}else if(x+=d-y,y<b){b-=y;do E[a++]=u[x++];while(--y);x=a-S,R=E}for(;b>2;)E[a++]=R[x++],E[a++]=R[x++],E[a++]=R[x++],b-=3;b&&(E[a++]=R[x++],b>1&&(E[a++]=R[x++]))}else{x=a-S;do E[a++]=E[x++],E[a++]=E[x++],E[a++]=E[x++],b-=3;while(b>2);b&&(E[a++]=E[x++],b>1&&(E[a++]=E[x++]))}}else if((y&64)===0){k=g[(k&65535)+(f&(1<<y)-1)];continue i}else{t.msg="invalid distance code",D.mode=ko;break e}break}}else if((y&64)===0){k=_[(k&65535)+(f&(1<<y)-1)];continue t}else if(y&32){D.mode=g6;break e}else{t.msg="invalid literal/length code",D.mode=ko;break e}break}}while(n<r&&a<o);b=h>>3,n-=b,h-=b<<3,f&=(1<<h)-1,t.next_in=n,t.next_out=a,t.avail_in=n<r?5+(r-n):5-(n-r),t.avail_out=a<o?257+(o-a):257-(a-o),D.hold=f,D.bits=h},Er=15,ig=852,ng=592,rg=0,Im=1,ag=2,v6=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),p6=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),w6=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),y6=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),S6=(e,t,i,n,r,a,s,o)=>{let c=o.bits,l=0,m=0,d=0,u=0,f=0,h=0,_=0,g=0,v=0,A=0,k,y,b,S,x,R=null,z,E=new Uint16Array(Er+1),D=new Uint16Array(Er+1),$=null,j,q,be;for(l=0;l<=Er;l++)E[l]=0;for(m=0;m<n;m++)E[t[i+m]]++;for(f=c,u=Er;u>=1&&E[u]===0;u--);if(f>u&&(f=u),u===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(d=1;d<u&&E[d]===0;d++);for(f<d&&(f=d),g=1,l=1;l<=Er;l++)if(g<<=1,g-=E[l],g<0)return-1;if(g>0&&(e===rg||u!==1))return-1;for(D[1]=0,l=1;l<Er;l++)D[l+1]=D[l]+E[l];for(m=0;m<n;m++)t[i+m]!==0&&(s[D[t[i+m]]++]=m);if(e===rg?(R=$=s,z=20):e===Im?(R=v6,$=p6,z=257):(R=w6,$=y6,z=0),A=0,m=0,l=d,x=a,h=f,_=0,b=-1,v=1<<f,S=v-1,e===Im&&v>ig||e===ag&&v>ng)return 1;for(;;){j=l-_,s[m]+1<z?(q=0,be=s[m]):s[m]>=z?(q=$[s[m]-z],be=R[s[m]-z]):(q=96,be=0),k=1<<l-_,y=1<<h,d=y;do y-=k,r[x+(A>>_)+y]=j<<24|q<<16|be|0;while(y!==0);for(k=1<<l-1;A&k;)k>>=1;if(k!==0?(A&=k-1,A+=k):A=0,m++,--E[l]===0){if(l===u)break;l=t[i+s[m]]}if(l>f&&(A&S)!==b){for(_===0&&(_=f),x+=d,h=l-_,g=1<<h;h+_<u&&(g-=E[h+_],!(g<=0));)h++,g<<=1;if(v+=1<<h,e===Im&&v>ig||e===ag&&v>ng)return 1;b=A&S,r[b]=f<<24|h<<16|x-a|0}}return A!==0&&(r[x+A]=l-_<<24|64<<16|0),o.bits=f,0},Ja=S6,k6=0,D1=1,B1=2,{Z_FINISH:sg,Z_BLOCK:A6,Z_TREES:Ao,Z_OK:er,Z_STREAM_END:b6,Z_NEED_DICT:E6,Z_STREAM_ERROR:si,Z_DATA_ERROR:U1,Z_MEM_ERROR:G1,Z_BUF_ERROR:x6,Z_DEFLATED:og}=tr,Po=16180,cg=16181,lg=16182,mg=16183,dg=16184,ug=16185,fg=16186,hg=16187,gg=16188,_g=16189,Lo=16190,Qi=16191,Cm=16192,vg=16193,Om=16194,pg=16195,wg=16196,yg=16197,Sg=16198,bo=16199,Eo=16200,kg=16201,Ag=16202,bg=16203,Eg=16204,xg=16205,Pm=16206,Mg=16207,Tg=16208,Ve=16209,H1=16210,V1=16211,M6=852,T6=592,R6=15,L6=R6,Rg=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function z6(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var ir=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Po||t.mode>V1?1:0},W1=e=>{if(ir(e))return si;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=Po,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(M6),t.distcode=t.distdyn=new Int32Array(T6),t.sane=1,t.back=-1,er},K1=e=>{if(ir(e))return si;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,W1(e)},$1=(e,t)=>{let i;if(ir(e))return si;let n=e.state;return t<0?(i=0,t=-t):(i=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?si:(n.window!==null&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,K1(e))},X1=(e,t)=>{if(!e)return si;let i=new z6;e.state=i,i.strm=e,i.window=null,i.mode=Po;let n=$1(e,t);return n!==er&&(e.state=null),n},N6=e=>X1(e,L6),Lg=!0,Fm,Dm,I6=e=>{if(Lg){Fm=new Int32Array(512),Dm=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Ja(D1,e.lens,0,288,Fm,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ja(B1,e.lens,0,32,Dm,0,e.work,{bits:5}),Lg=!1}e.lencode=Fm,e.lenbits=9,e.distcode=Dm,e.distbits=5},q1=(e,t,i,n)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),n>=a.wsize?(a.window.set(t.subarray(i-a.wsize,i),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>n&&(r=n),a.window.set(t.subarray(i-n,i-n+r),a.wnext),n-=r,n?(a.window.set(t.subarray(i-n,i),0),a.wnext=n,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},C6=(e,t)=>{let i,n,r,a,s,o,c,l,m,d,u,f,h,_,g=0,v,A,k,y,b,S,x,R,z=new Uint8Array(4),E,D,$=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(ir(e)||!e.output||!e.input&&e.avail_in!==0)return si;i=e.state,i.mode===Qi&&(i.mode=Cm),s=e.next_out,r=e.output,c=e.avail_out,a=e.next_in,n=e.input,o=e.avail_in,l=i.hold,m=i.bits,d=o,u=c,R=er;e:for(;;)switch(i.mode){case Po:if(i.wrap===0){i.mode=Cm;break}for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.wrap&2&&l===35615){i.wbits===0&&(i.wbits=15),i.check=0,z[0]=l&255,z[1]=l>>>8&255,i.check=_t(i.check,z,2,0),l=0,m=0,i.mode=cg;break}if(i.head&&(i.head.done=!1),!(i.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg="incorrect header check",i.mode=Ve;break}if((l&15)!==og){e.msg="unknown compression method",i.mode=Ve;break}if(l>>>=4,m-=4,x=(l&15)+8,i.wbits===0&&(i.wbits=x),x>15||x>i.wbits){e.msg="invalid window size",i.mode=Ve;break}i.dmax=1<<i.wbits,i.flags=0,e.adler=i.check=1,i.mode=l&512?_g:Qi,l=0,m=0;break;case cg:for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.flags=l,(i.flags&255)!==og){e.msg="unknown compression method",i.mode=Ve;break}if(i.flags&57344){e.msg="unknown header flags set",i.mode=Ve;break}i.head&&(i.head.text=l>>8&1),i.flags&512&&i.wrap&4&&(z[0]=l&255,z[1]=l>>>8&255,i.check=_t(i.check,z,2,0)),l=0,m=0,i.mode=lg;case lg:for(;m<32;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.head&&(i.head.time=l),i.flags&512&&i.wrap&4&&(z[0]=l&255,z[1]=l>>>8&255,z[2]=l>>>16&255,z[3]=l>>>24&255,i.check=_t(i.check,z,4,0)),l=0,m=0,i.mode=mg;case mg:for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.head&&(i.head.xflags=l&255,i.head.os=l>>8),i.flags&512&&i.wrap&4&&(z[0]=l&255,z[1]=l>>>8&255,i.check=_t(i.check,z,2,0)),l=0,m=0,i.mode=dg;case dg:if(i.flags&1024){for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.length=l,i.head&&(i.head.extra_len=l),i.flags&512&&i.wrap&4&&(z[0]=l&255,z[1]=l>>>8&255,i.check=_t(i.check,z,2,0)),l=0,m=0}else i.head&&(i.head.extra=null);i.mode=ug;case ug:if(i.flags&1024&&(f=i.length,f>o&&(f=o),f&&(i.head&&(x=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(n.subarray(a,a+f),x)),i.flags&512&&i.wrap&4&&(i.check=_t(i.check,n,f,a)),o-=f,a+=f,i.length-=f),i.length))break e;i.length=0,i.mode=fg;case fg:if(i.flags&2048){if(o===0)break e;f=0;do x=n[a+f++],i.head&&x&&i.length<65536&&(i.head.name+=String.fromCharCode(x));while(x&&f<o);if(i.flags&512&&i.wrap&4&&(i.check=_t(i.check,n,f,a)),o-=f,a+=f,x)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=hg;case hg:if(i.flags&4096){if(o===0)break e;f=0;do x=n[a+f++],i.head&&x&&i.length<65536&&(i.head.comment+=String.fromCharCode(x));while(x&&f<o);if(i.flags&512&&i.wrap&4&&(i.check=_t(i.check,n,f,a)),o-=f,a+=f,x)break e}else i.head&&(i.head.comment=null);i.mode=gg;case gg:if(i.flags&512){for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.wrap&4&&l!==(i.check&65535)){e.msg="header crc mismatch",i.mode=Ve;break}l=0,m=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Qi;break;case _g:for(;m<32;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}e.adler=i.check=Rg(l),l=0,m=0,i.mode=Lo;case Lo:if(i.havedict===0)return e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,i.hold=l,i.bits=m,E6;e.adler=i.check=1,i.mode=Qi;case Qi:if(t===A6||t===Ao)break e;case Cm:if(i.last){l>>>=m&7,m-=m&7,i.mode=Pm;break}for(;m<3;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}switch(i.last=l&1,l>>>=1,m-=1,l&3){case 0:i.mode=vg;break;case 1:if(I6(i),i.mode=bo,t===Ao){l>>>=2,m-=2;break e}break;case 2:i.mode=wg;break;case 3:e.msg="invalid block type",i.mode=Ve}l>>>=2,m-=2;break;case vg:for(l>>>=m&7,m-=m&7;m<32;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if((l&65535)!==(l>>>16^65535)){e.msg="invalid stored block lengths",i.mode=Ve;break}if(i.length=l&65535,l=0,m=0,i.mode=Om,t===Ao)break e;case Om:i.mode=pg;case pg:if(f=i.length,f){if(f>o&&(f=o),f>c&&(f=c),f===0)break e;r.set(n.subarray(a,a+f),s),o-=f,a+=f,c-=f,s+=f,i.length-=f;break}i.mode=Qi;break;case wg:for(;m<14;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.nlen=(l&31)+257,l>>>=5,m-=5,i.ndist=(l&31)+1,l>>>=5,m-=5,i.ncode=(l&15)+4,l>>>=4,m-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Ve;break}i.have=0,i.mode=yg;case yg:for(;i.have<i.ncode;){for(;m<3;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.lens[$[i.have++]]=l&7,l>>>=3,m-=3}for(;i.have<19;)i.lens[$[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,E={bits:i.lenbits},R=Ja(k6,i.lens,0,19,i.lencode,0,i.work,E),i.lenbits=E.bits,R){e.msg="invalid code lengths set",i.mode=Ve;break}i.have=0,i.mode=Sg;case Sg:for(;i.have<i.nlen+i.ndist;){for(;g=i.lencode[l&(1<<i.lenbits)-1],v=g>>>24,A=g>>>16&255,k=g&65535,!(v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(k<16)l>>>=v,m-=v,i.lens[i.have++]=k;else{if(k===16){for(D=v+2;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(l>>>=v,m-=v,i.have===0){e.msg="invalid bit length repeat",i.mode=Ve;break}x=i.lens[i.have-1],f=3+(l&3),l>>>=2,m-=2}else if(k===17){for(D=v+3;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}l>>>=v,m-=v,x=0,f=3+(l&7),l>>>=3,m-=3}else{for(D=v+7;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}l>>>=v,m-=v,x=0,f=11+(l&127),l>>>=7,m-=7}if(i.have+f>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Ve;break}for(;f--;)i.lens[i.have++]=x}}if(i.mode===Ve)break;if(i.lens[256]===0){e.msg="invalid code -- missing end-of-block",i.mode=Ve;break}if(i.lenbits=9,E={bits:i.lenbits},R=Ja(D1,i.lens,0,i.nlen,i.lencode,0,i.work,E),i.lenbits=E.bits,R){e.msg="invalid literal/lengths set",i.mode=Ve;break}if(i.distbits=6,i.distcode=i.distdyn,E={bits:i.distbits},R=Ja(B1,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,E),i.distbits=E.bits,R){e.msg="invalid distances set",i.mode=Ve;break}if(i.mode=bo,t===Ao)break e;case bo:i.mode=Eo;case Eo:if(o>=6&&c>=258){e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,i.hold=l,i.bits=m,_6(e,u),s=e.next_out,r=e.output,c=e.avail_out,a=e.next_in,n=e.input,o=e.avail_in,l=i.hold,m=i.bits,i.mode===Qi&&(i.back=-1);break}for(i.back=0;g=i.lencode[l&(1<<i.lenbits)-1],v=g>>>24,A=g>>>16&255,k=g&65535,!(v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(A&&(A&240)===0){for(y=v,b=A,S=k;g=i.lencode[S+((l&(1<<y+b)-1)>>y)],v=g>>>24,A=g>>>16&255,k=g&65535,!(y+v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}l>>>=y,m-=y,i.back+=y}if(l>>>=v,m-=v,i.back+=v,i.length=k,A===0){i.mode=xg;break}if(A&32){i.back=-1,i.mode=Qi;break}if(A&64){e.msg="invalid literal/length code",i.mode=Ve;break}i.extra=A&15,i.mode=kg;case kg:if(i.extra){for(D=i.extra;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.length+=l&(1<<i.extra)-1,l>>>=i.extra,m-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=Ag;case Ag:for(;g=i.distcode[l&(1<<i.distbits)-1],v=g>>>24,A=g>>>16&255,k=g&65535,!(v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if((A&240)===0){for(y=v,b=A,S=k;g=i.distcode[S+((l&(1<<y+b)-1)>>y)],v=g>>>24,A=g>>>16&255,k=g&65535,!(y+v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}l>>>=y,m-=y,i.back+=y}if(l>>>=v,m-=v,i.back+=v,A&64){e.msg="invalid distance code",i.mode=Ve;break}i.offset=k,i.extra=A&15,i.mode=bg;case bg:if(i.extra){for(D=i.extra;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.offset+=l&(1<<i.extra)-1,l>>>=i.extra,m-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Ve;break}i.mode=Eg;case Eg:if(c===0)break e;if(f=u-c,i.offset>f){if(f=i.offset-f,f>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Ve;break}f>i.wnext?(f-=i.wnext,h=i.wsize-f):h=i.wnext-f,f>i.length&&(f=i.length),_=i.window}else _=r,h=s-i.offset,f=i.length;f>c&&(f=c),c-=f,i.length-=f;do r[s++]=_[h++];while(--f);i.length===0&&(i.mode=Eo);break;case xg:if(c===0)break e;r[s++]=i.length,c--,i.mode=Eo;break;case Pm:if(i.wrap){for(;m<32;){if(o===0)break e;o--,l|=n[a++]<<m,m+=8}if(u-=c,e.total_out+=u,i.total+=u,i.wrap&4&&u&&(e.adler=i.check=i.flags?_t(i.check,r,u,s-u):rs(i.check,r,u,s-u)),u=c,i.wrap&4&&(i.flags?l:Rg(l))!==i.check){e.msg="incorrect data check",i.mode=Ve;break}l=0,m=0}i.mode=Mg;case Mg:if(i.wrap&&i.flags){for(;m<32;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.wrap&4&&l!==(i.total&4294967295)){e.msg="incorrect length check",i.mode=Ve;break}l=0,m=0}i.mode=Tg;case Tg:R=b6;break e;case Ve:R=U1;break e;case H1:return G1;case V1:default:return si}return e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,i.hold=l,i.bits=m,(i.wsize||u!==e.avail_out&&i.mode<Ve&&(i.mode<Pm||t!==sg))&&q1(e,e.output,e.next_out,u-e.avail_out),d-=e.avail_in,u-=e.avail_out,e.total_in+=d,e.total_out+=u,i.total+=u,i.wrap&4&&u&&(e.adler=i.check=i.flags?_t(i.check,r,u,e.next_out-u):rs(i.check,r,u,e.next_out-u)),e.data_type=i.bits+(i.last?64:0)+(i.mode===Qi?128:0)+(i.mode===bo||i.mode===Om?256:0),(d===0&&u===0||t===sg)&&R===er&&(R=x6),R},O6=e=>{if(ir(e))return si;let t=e.state;return t.window&&(t.window=null),e.state=null,er},P6=(e,t)=>{if(ir(e))return si;let i=e.state;return(i.wrap&2)===0?si:(i.head=t,t.done=!1,er)},F6=(e,t)=>{let i=t.length,n,r,a;return ir(e)||(n=e.state,n.wrap!==0&&n.mode!==Lo)?si:n.mode===Lo&&(r=1,r=rs(r,t,i,0),r!==n.check)?U1:(a=q1(e,t,i,i),a?(n.mode=H1,G1):(n.havedict=1,er))},D6=K1,B6=$1,U6=W1,G6=N6,H6=X1,V6=C6,W6=O6,K6=P6,$6=F6,X6="pako inflate (from Nodeca project)",tn={inflateReset:D6,inflateReset2:B6,inflateResetKeep:U6,inflateInit:G6,inflateInit2:H6,inflate:V6,inflateEnd:W6,inflateGetHeader:K6,inflateSetDictionary:$6,inflateInfo:X6};function q6(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var Y6=q6,Y1=Object.prototype.toString,{Z_NO_FLUSH:Z6,Z_FINISH:j6,Z_OK:os,Z_STREAM_END:Bm,Z_NEED_DICT:Um,Z_STREAM_ERROR:J6,Z_DATA_ERROR:zg,Z_MEM_ERROR:Q6}=tr;function ds(e){this.options=Oo.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new P1,this.strm.avail_out=0;let i=tn.inflateInit2(this.strm,t.windowBits);if(i!==os)throw new Error(Jn[i]);if(this.header=new Y6,tn.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=ss.string2buf(t.dictionary):Y1.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=tn.inflateSetDictionary(this.strm,t.dictionary),i!==os)))throw new Error(Jn[i])}ds.prototype.push=function(e,t){let i=this.strm,n=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?j6:Z6,Y1.call(e)==="[object ArrayBuffer]"?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(i.avail_out===0&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),a=tn.inflate(i,s),a===Um&&r&&(a=tn.inflateSetDictionary(i,r),a===os?a=tn.inflate(i,s):a===zg&&(a=Um));i.avail_in>0&&a===Bm&&i.state.wrap>0&&e[i.next_in]!==0;)tn.inflateReset(i),a=tn.inflate(i,s);switch(a){case J6:case zg:case Um:case Q6:return this.onEnd(a),this.ended=!0,!1}if(o=i.avail_out,i.next_out&&(i.avail_out===0||a===Bm))if(this.options.to==="string"){let c=ss.utf8border(i.output,i.next_out),l=i.next_out-c,m=ss.buf2string(i.output,c);i.next_out=l,i.avail_out=n-l,l&&i.output.set(i.output.subarray(c,c+l),0),this.onData(m)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(!(a===os&&o===0)){if(a===Bm)return a=tn.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(i.avail_in===0)break}}return!0};ds.prototype.onData=function(e){this.chunks.push(e)};ds.prototype.onEnd=function(e){e===os&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Oo.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function vd(e,t){let i=new ds(t);if(i.push(e),i.err)throw i.msg||Jn[i.err];return i.result}function e8(e,t){return t=t||{},t.raw=!0,vd(e,t)}var t8=ds,i8=vd,n8=e8,r8=vd,a8=tr,s8={Inflate:t8,inflate:i8,inflateRaw:n8,ungzip:r8,constants:a8},{Deflate:o8,deflate:c8,deflateRaw:l8,gzip:m8}=h6,{Inflate:d8,inflate:u8,inflateRaw:f8,ungzip:h8}=s8,g8=o8,_8=c8,v8=l8,p8=m8,w8=d8,y8=u8,S8=f8,k8=h8,A8=tr,Ng={Deflate:g8,deflate:_8,deflateRaw:v8,gzip:p8,Inflate:w8,inflate:y8,inflateRaw:S8,ungzip:k8,constants:A8},pd=class Jm{constructor(t=Jm.INITIAL_SIZE){this.buffer=new Uint8Array(t),this.readOffset=0,this.writeOffset=0}append(t){let i=t instanceof Uint8Array?t:new Uint8Array(t),n=this.writeOffset+i.length;n>this.buffer.length&&this.grow(n),this.buffer.set(i,this.writeOffset),this.writeOffset+=i.length}hasBytes(t){return this.writeOffset-this.readOffset>=t}available(){return this.writeOffset-this.readOffset}readByte(){if(!this.hasBytes(1))throw new Error("Buffer underflow");return this.buffer[this.readOffset++]}readShort(){if(!this.hasBytes(2))throw new Error("Buffer underflow");let t=this.buffer[this.readOffset]|this.buffer[this.readOffset+1]<<8;return this.readOffset+=2,t>32767?t-65536:t}readLong(){if(!this.hasBytes(4))throw new Error("Buffer underflow");let t=this.buffer[this.readOffset]|this.buffer[this.readOffset+1]<<8|this.buffer[this.readOffset+2]<<16|this.buffer[this.readOffset+3]<<24;return this.readOffset+=4,t}readFloat(){if(!this.hasBytes(4))throw new Error("Buffer underflow");let i=new DataView(this.buffer.buffer,this.buffer.byteOffset+this.readOffset,4).getFloat32(0,!0);return this.readOffset+=4,i}readString(){let t=Math.min(Jm.MAX_STRING_LENGTH,this.writeOffset-this.readOffset),i=0;for(;i<t&&this.buffer[this.readOffset+i]!==0;)i++;if(i>=t)throw this.writeOffset-this.readOffset<=t?new Error("Buffer underflow"):new Error("String exceeds max length");let n=this.buffer.slice(this.readOffset,this.readOffset+i);return this.readOffset+=i+1,new TextDecoder("latin1").decode(n)}peekBytes(t){if(!this.hasBytes(t))throw new Error("Buffer underflow");return this.buffer.slice(this.readOffset,this.readOffset+t)}readBytes(t){if(!this.hasBytes(t))throw new Error("Buffer underflow");let i=this.buffer.slice(this.readOffset,this.readOffset+t);return this.readOffset+=t,i}readData(t){return this.readBytes(t)}getReadPosition(){return this.readOffset}getWritePosition(){return this.writeOffset}setReadPosition(t){if(t<0||t>this.writeOffset)throw new Error("Invalid read position");this.readOffset=t}grow(t){let i=t?Math.max(t,this.buffer.length*2):this.buffer.length*2,n=new Uint8Array(i);n.set(this.buffer),this.buffer=n}compact(){if(this.readOffset===0)return;let t=this.writeOffset-this.readOffset;if(t===0){this.readOffset=0,this.writeOffset=0;return}this.buffer.copyWithin(0,this.readOffset,this.writeOffset),this.readOffset=0,this.writeOffset=t}getCapacity(){return this.buffer.length}reset(){this.readOffset=0,this.writeOffset=0}};pd.INITIAL_SIZE=64*1024;pd.MAX_STRING_LENGTH=2048;var b8=pd,xr=2023,Z1=1,j1=2,J1=4,Q1=8,e_=16,t_=32,wd=64,Ig=128,E8=256,i_=512,n_=1024,r_=2048,Qm=4096,a_=8192,ed=16384,x8=32768,td=65536,s_=1<<17,id=1<<18,nd=1<<19,o_=1<<20,c_=1<<21,l_=1<<22,M8=1<<23,m_=1<<24,rd=1<<25,d_=1<<26,u_=1<<27,f_=1<<28,h_=1<<29,g_=1<<30,T8=-2147483648,__=1,v_=2,p_=4,R8=1,L8=2,z8=128,Mr=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),Cg=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0,watertype:0}),N8=class extends b8{constructor(e){super(0),this.stream=e}readByte(){return this.stream.readByte()}readShort(){return this.stream.readShort()}readLong(){return this.stream.readLong()}readFloat(){return this.stream.readFloat()}readString(){return this.stream.readString()}readData(e){return this.stream.readData(e)}hasBytes(e){return this.stream.hasMore()}available(){return this.stream.getRemaining()}getReadPosition(){return this.stream.getPosition()}peekBytes(e){throw new Error("peekBytes not implemented for BinaryStreamAdapter")}},Og={0:U.bad,1:U.nop,2:U.disconnect,3:U.reconnect,4:U.download,5:U.frame,6:U.inventory,7:U.layout,8:U.muzzleflash,9:U.sound,10:U.print,11:U.stufftext,12:U.serverdata,13:U.configstring,14:U.spawnbaseline,15:U.centerprint,16:U.download,17:U.playerinfo,18:U.packetentities,19:U.deltapacketentities,23:U.temp_entity,22:U.muzzleflash2},Fo=class w_{constructor(t,i,n=!1){this.protocolVersion=0,this.isDemo=R8,this.strictMode=!1,this.errorCount=0,t instanceof xo?this.stream=new N8(t):this.stream=t,this.handler=i,this.strictMode=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}getErrorCount(){return this.errorCount}translateCommand(t){if(this.protocolVersion===0)return t===7||t===12?U.serverdata:t;if(this.protocolVersion===xr)return t;if(this.protocolVersion===25||this.protocolVersion===26){if(t===0)return U.bad;let i=t+5;return i>=U.nop&&i<=U.frame?i:U.bad}return this.protocolVersion===34?Og[t]!==void 0?Og[t]:U.bad:t}parseMessage(){for(;this.stream.hasBytes(1);){let t=this.stream.getReadPosition(),i=-1;try{if(i=this.stream.readByte(),i===-1)break;let n=i;switch(i=this.translateCommand(i),i){case U.bad:return;case U.nop:break;case U.disconnect:this.handler?.onDisconnect&&this.handler.onDisconnect();break;case U.reconnect:this.handler?.onReconnect&&this.handler.onReconnect();break;case U.print:this.parsePrint();break;case U.serverdata:this.parseServerData();break;case U.configstring:this.parseConfigString();break;case U.spawnbaseline:this.parseSpawnBaseline();break;case U.centerprint:this.parseCenterPrint();break;case U.download:this.parseDownload();break;case U.frame:this.parseFrame();break;case U.packetentities:this.parsePacketEntities(!1);break;case U.deltapacketentities:this.parsePacketEntities(!0);break;case U.playerinfo:this.parsePlayerState();break;case U.stufftext:this.parseStuffText();break;case U.layout:this.parseLayout();break;case U.inventory:this.parseInventory();break;case U.sound:this.parseSound();break;case U.muzzleflash:this.parseMuzzleFlash();break;case U.muzzleflash2:this.parseMuzzleFlash2();break;case U.temp_entity:this.parseTempEntity();break;case U.splitclient:this.parseSplitClient();break;case U.configblast:this.parseConfigBlast();break;case U.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case U.level_restart:this.handler?.onLevelRestart&&this.handler.onLevelRestart();break;case U.damage:this.parseDamage();break;case U.locprint:this.parseLocPrint();break;case U.fog:this.parseFog();break;case U.waitingforplayers:this.parseWaitingForPlayers();break;case U.bot_chat:this.parseBotChat();break;case U.poi:this.parsePoi();break;case U.help_path:this.parseHelpPath();break;case U.muzzleflash3:this.parseMuzzleFlash3();break;case U.achievement:this.parseAchievement();break;default:let r=`Unknown server command: ${n} (translated: ${i}) at offset ${t}`;if(this.strictMode)throw new Error(r);console.warn(r),this.errorCount++;return}}catch(n){let r=n.message;if(r==="Buffer underflow"||r.includes("StreamingBuffer")){try{this.stream.setReadPosition(t)}catch(s){console.error("Failed to rollback stream position",s)}return}let a=`offset ${t}, cmd ${i}, protocol ${this.protocolVersion}`;if(console.warn(`Error parsing command ${i} (${a}): ${r}`),this.errorCount++,this.strictMode)throw n;return}}}readAngle16(){return this.stream.readShort()*(360/65536)}readCoord(){return this.stream.readShort()*.125}readAngle(){return this.stream.readByte()*(360/256)}readPos(t){t.x=this.stream.readShort()*.125,t.y=this.stream.readShort()*.125,t.z=this.stream.readShort()*.125}readDir(t){let i=this.stream.readByte();if(i>=Qa.length)t.x=0,t.y=0,t.z=0;else{let n=Qa[i];t.x=n[0],t.y=n[1],t.z=n[2]}}parsePrint(){let t=this.stream.readByte(),i=this.stream.readString();this.handler&&this.handler.onPrint(t,i)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===xr){let t=this.stream.readLong(),i=this.stream.readByte();this.isDemo=i;let n=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let c=0;c<o;c++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler&&this.handler.onServerData(this.protocolVersion,t,0,r,a,s,n,i)}else{let t=this.stream.readLong(),i=this.stream.readByte();this.isDemo=i;let n=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler&&this.handler.onServerData(this.protocolVersion,t,i,n,r,a)}}parseConfigString(){let t=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onConfigString(t,i)}parseSplitClient(){let t=this.stream.readByte();this.handler?.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),i=this.stream.readShort(),n=this.stream.readData(t);try{let r=Ng.inflate(n),a=new xo(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast error",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),i=this.stream.readShort(),n=this.stream.readData(t);try{let r=Ng.inflate(n),a=new xo(r.buffer),s=new w_(a,this.handler,this.strictMode);for(s.setProtocolVersion(this.protocolVersion);a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast error",r)}}parseLocPrint(){let t=this.stream.readByte(),i=this.stream.readString(),n=this.stream.readByte(),r=[];for(let a=0;a<n;a++)r.push(this.stream.readString());this.handler?.onLocPrint&&this.handler.onLocPrint(t,i,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler?.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),i=this.stream.readShort(),n=this.stream.readString();this.handler?.onBotChat&&this.handler.onBotChat(n)}parsePoi(){let t=this.stream.readShort(),i=this.stream.readShort(),n={x:0,y:0,z:0};this.readPos(n);let r=this.stream.readShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler?.onPoi&&this.handler.onPoi(s,n)}parseHelpPath(){let t=this.stream.readByte(),i={x:0,y:0,z:0};this.readPos(i);let n={x:0,y:0,z:0};this.readDir(n),this.handler?.onHelpPath&&this.handler.onHelpPath(i)}parseAchievement(){let t=this.stream.readString();this.handler?.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),i=this.stream.readByte(),n;t>0&&(n=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,i,n)}parseInventory(){let i=new Array(256);for(let n=0;n<256;n++)i[n]=this.stream.readShort();this.handler&&this.handler.onInventory(i)}parseSound(){let t=this.stream.readByte(),i=this.stream.readByte(),n,r,a,s,o;if(t&1&&(n=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let c={x:0,y:0,z:0};this.readPos(c),o=c}this.handler&&this.handler.onSound(t,i,n,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),i=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,i)}parseMuzzleFlash2(){let t=this.stream.readShort(),i=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,i)}parseMuzzleFlash3(){let t=this.stream.readShort(),i=this.stream.readShort();this.handler?.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,i)}parseFog(){let t=this.stream.readByte();if(t&128){let n=this.stream.readByte();t|=n<<8}let i={};t&1&&(i.density=this.stream.readFloat(),i.skyfactor=this.stream.readByte()),t&2&&(i.red=this.stream.readByte()),t&4&&(i.green=this.stream.readByte()),t&8&&(i.blue=this.stream.readByte()),t&16&&(i.time=this.stream.readShort()),t&32&&(i.hf_falloff=this.stream.readFloat()),t&64&&(i.hf_density=this.stream.readFloat()),t&256&&(i.hf_start_r=this.stream.readByte()),t&512&&(i.hf_start_g=this.stream.readByte()),t&1024&&(i.hf_start_b=this.stream.readByte()),t&2048&&(i.hf_start_dist=this.stream.readLong()),t&4096&&(i.hf_end_r=this.stream.readByte()),t&8192&&(i.hf_end_g=this.stream.readByte()),t&16384&&(i.hf_end_b=this.stream.readByte()),t&32768&&(i.hf_end_dist=this.stream.readLong()),this.handler?.onFog&&this.handler.onFog(i)}parseDamage(){let t=this.stream.readByte(),i=[];for(let n=0;n<t;n++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.readDir(a);let s=r&31,o=(r&32)!==0,c=(r&64)!==0,l=(r&128)!==0;i.push({damage:s,health:o,armor:c,power:l,dir:a})}this.handler?.onDamage&&this.handler.onDamage(i)}parseTempEntity(){let t=this.stream.readByte(),i={x:0,y:0,z:0},n={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,c,l;switch(t){case ie.EXPLOSION1:case ie.EXPLOSION2:case ie.ROCKET_EXPLOSION:case ie.GRENADE_EXPLOSION:case ie.ROCKET_EXPLOSION_WATER:case ie.GRENADE_EXPLOSION_WATER:case ie.BFG_EXPLOSION:case ie.BFG_BIGEXPLOSION:case ie.BOSSTPORT:case ie.PLASMA_EXPLOSION:case ie.PLAIN_EXPLOSION:case ie.CHAINFIST_SMOKE:case ie.TRACKER_EXPLOSION:case ie.TELEPORT_EFFECT:case ie.DBALL_GOAL:case ie.NUKEBLAST:case ie.WIDOWSPLASH:case ie.EXPLOSION1_BIG:case ie.EXPLOSION1_NP:this.readPos(i);break;case ie.GUNSHOT:case ie.BLOOD:case ie.BLASTER:case ie.SHOTGUN:case ie.SPARKS:case ie.BULLET_SPARKS:case ie.SCREEN_SPARKS:case ie.SHIELD_SPARKS:case ie.BLASTER2:case ie.FLECHETTE:case ie.MOREBLOOD:case ie.ELECTRIC_SPARKS:case ie.HEATBEAM_SPARKS:case ie.HEATBEAM_STEAM:this.readPos(i),this.readDir(r);break;case ie.SPLASH:case ie.LASER_SPARKS:case ie.WELDING_SPARKS:case ie.TUNNEL_SPARKS:a=this.stream.readByte(),this.readPos(i),this.readDir(r),s=this.stream.readByte();break;case ie.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.readPos(i),this.readPos(n)):(this.readPos(i),this.readDir(r));break;case ie.GREENBLOOD:this.protocolVersion>=32?(this.readPos(i),this.readDir(r)):(this.readPos(i),this.readPos(n));break;case ie.RAILTRAIL:case ie.BUBBLETRAIL:case ie.BFG_LASER:case ie.DEBUGTRAIL:case ie.BUBBLETRAIL2:this.readPos(i),this.readPos(n);break;case ie.PARASITE_ATTACK:case ie.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.readPos(i),this.readPos(n);break;case ie.GRAPPLE_CABLE:o=this.stream.readShort(),this.readPos(i),this.readPos(n),this.readPos(r);break;case ie.LIGHTNING:c=this.stream.readShort(),l=this.stream.readShort(),this.readPos(i),this.readPos(n);break;case ie.FLASHLIGHT:this.readPos(i),o=this.stream.readShort();break;case ie.FORCEWALL:this.readPos(i),this.readPos(n),s=this.stream.readByte();break;case ie.STEAM:let m=this.stream.readShort();a=this.stream.readByte(),this.readPos(i),this.readDir(r),s=this.stream.readByte(),this.stream.readShort(),m!==-1&&this.stream.readLong();break;case ie.WIDOWBEAMOUT:this.stream.readShort();case ie.HEATBEAM:case ie.MONSTER_HEATBEAM:o=this.stream.readShort(),this.readPos(i),this.readPos(n),this.readDir(r);break}this.handler&&this.handler.onTempEntity(t,i,n,r,a,s,o,c,l)}parseSpawnBaseline(){let t=this.parseEntityBits(),i=Mr();this.parseDelta(Mr(),i,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(i)}parseFrame(){let t=this.stream.readLong(),i=this.stream.readLong(),n=0;this.protocolVersion!==26&&this.protocolVersion!==25&&(n=this.stream.readByte());let r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==U.playerinfo){if(this.strictMode)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s}`);return}let o=this.parsePlayerState(),c=this.stream.readByte();if(c=this.translateCommand(c),c!==U.packetentities&&c!==U.deltapacketentities){if(this.strictMode)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${c}`);return}let l=this.collectPacketEntities();if(this.isDemo===z8){let m=this.stream.readByte();for(let d=0;d<m;d++)this.stream.readByte()}this.isDemo===L8&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:i,surpressCount:n,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!0,entities:l}})}parsePlayerState(){let t=Cg(),i=this.stream.readShort();i&1&&(t.pm_type=this.stream.readByte()),i&2&&(t.origin.x=this.readCoord(),t.origin.y=this.readCoord(),t.origin.z=this.readCoord()),i&4&&(t.velocity.x=this.readCoord(),t.velocity.y=this.readCoord(),t.velocity.z=this.readCoord()),i&8&&(t.pm_time=this.stream.readByte()),i&16&&(t.pm_flags=this.stream.readByte()),i&32&&(t.gravity=this.stream.readShort()),i&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),i&128&&(t.viewoffset.x=(this.stream.readByte()<<24>>24)*.25,t.viewoffset.y=(this.stream.readByte()<<24>>24)*.25,t.viewoffset.z=(this.stream.readByte()<<24>>24)*.25),i&256&&(t.viewangles.x=this.readAngle16(),t.viewangles.y=this.readAngle16(),t.viewangles.z=this.readAngle16()),i&512&&(t.kick_angles.x=(this.stream.readByte()<<24>>24)*.25,t.kick_angles.y=(this.stream.readByte()<<24>>24)*.25,t.kick_angles.z=(this.stream.readByte()<<24>>24)*.25),i&4096&&(t.gun_index=this.stream.readByte()),i&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=(this.stream.readByte()<<24>>24)*.25,t.gun_offset.y=(this.stream.readByte()<<24>>24)*.25,t.gun_offset.z=(this.stream.readByte()<<24>>24)*.25,t.gun_angles.x=(this.stream.readByte()<<24>>24)*.25,t.gun_angles.y=(this.stream.readByte()<<24>>24)*.25,t.gun_angles.z=(this.stream.readByte()<<24>>24)*.25),i&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),i&2048&&(t.fov=this.stream.readByte()),i&16384&&(t.rdflags=this.stream.readByte()),i&32768&&(t.watertype=this.stream.readByte());let n=this.stream.readLong();for(let r=0;r<32;r++)n&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let i=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:Cg(),packetEntities:{delta:t,entities:i}})}collectPacketEntities(){let t=[];for(;;){let i=this.parseEntityBits();if(i.bits&wd){if(i.number===0)break;continue}let n=Mr(),r=i.number===0&&!(i.bits&Ig);if((i.number!==0||r)&&this.parseDelta(Mr(),n,i.number,i.bits,i.bitsHigh),i.number===0)break;t.push(n)}return t}parseEntityBits(){let t=this.stream.readByte();t&Ig&&(t|=this.stream.readByte()<<8),t&x8&&(t|=this.stream.readByte()<<16),t&M8&&(t|=this.stream.readByte()<<24);let i=0;this.protocolVersion===xr&&t&T8&&(i=this.stream.readByte());let n;return t&E8?n=this.stream.readShort():n=this.stream.readByte(),{number:n,bits:t,bitsHigh:i}}parseDelta(t,i,n,r,a=0){i.number=t.number,i.modelindex=t.modelindex,i.modelindex2=t.modelindex2,i.modelindex3=t.modelindex3,i.modelindex4=t.modelindex4,i.frame=t.frame,i.skinnum=t.skinnum,i.effects=t.effects,i.renderfx=t.renderfx,i.origin.x=t.origin.x,i.origin.y=t.origin.y,i.origin.z=t.origin.z,i.old_origin.x=t.origin.x,i.old_origin.y=t.origin.y,i.old_origin.z=t.origin.z,i.angles.x=t.angles.x,i.angles.y=t.angles.y,i.angles.z=t.angles.z,i.sound=t.sound,i.event=t.event,i.solid=t.solid,i.alpha=t.alpha,i.scale=t.scale,i.instanceBits=t.instanceBits,i.loopVolume=t.loopVolume,i.loopAttenuation=t.loopAttenuation,i.owner=t.owner,i.oldFrame=t.oldFrame,i.number=n,i.bits=r,i.bitsHigh=a,r&r_&&(i.modelindex=this.stream.readByte()),r&o_&&(i.modelindex2=this.stream.readByte()),r&c_&&(i.modelindex3=this.stream.readByte()),r&l_&&(i.modelindex4=this.stream.readByte()),r&e_&&(i.frame=this.stream.readByte()),r&s_&&(i.frame=this.stream.readShort()),r&td&&r&rd?i.skinnum=this.stream.readLong():r&td?i.skinnum=this.stream.readByte():r&rd&&(i.skinnum=this.stream.readShort()),r&ed&&r&nd?i.effects=this.stream.readLong():r&ed?i.effects=this.stream.readByte():r&nd&&(i.effects=this.stream.readShort()),r&Qm&&r&id?i.renderfx=this.stream.readLong():r&Qm?i.renderfx=this.stream.readByte():r&id&&(i.renderfx=this.stream.readShort()),r&Z1&&(i.origin.x=this.readCoord()),r&j1&&(i.origin.y=this.readCoord()),r&i_&&(i.origin.z=this.readCoord()),r&n_&&(i.angles.x=this.readAngle()),r&J1&&(i.angles.y=this.readAngle()),r&Q1&&(i.angles.z=this.readAngle()),r&m_&&this.readPos(i.old_origin),r&d_&&(i.sound=this.stream.readByte()),r&t_?i.event=this.stream.readByte():i.event=0,r&u_&&(i.solid=this.stream.readShort()),this.protocolVersion===xr&&(r&a_&&(i.alpha=this.stream.readByte()/255),r&f_&&(i.scale=this.stream.readFloat()),r&h_&&(i.instanceBits=this.stream.readLong()),r&g_&&(i.loopVolume=this.stream.readByte()/255),a&__&&(i.loopAttenuation=this.stream.readByte()/255),a&v_&&(i.owner=this.stream.readShort()),a&p_&&(i.oldFrame=this.stream.readShort()))}};var I8=class{constructor(e){this.events=[],this.summary={totalKills:0,totalDeaths:0,damageDealt:0,damageReceived:0,weaponUsage:new Map},this.header=null,this.configStrings=new Map,this.serverInfo={},this.statistics=null,this.playerStats=new Map,this.weaponStats=new Map,this.activeEntities=new Set,this.buffer=e}analyze(){let e=new h1(this.buffer),t=-1,i=0,n=.1,r=0,a={onServerData:(s,o,c,l,m,d,u,f)=>{r=s,this.header={protocolVersion:s,gameDir:l,levelName:d,playerNum:m,serverCount:o,spawnCount:o,tickRate:u,demoType:f},u&&u>0&&(n=1/u)},onConfigString:(s,o)=>{this.configStrings.set(s,o),s===0&&this.parseServerInfo(o)},onSpawnBaseline:s=>{},onFrame:s=>{let o=new Set;if(s.packetEntities&&s.packetEntities.entities)for(let c of s.packetEntities.entities)o.add(c.number),this.activeEntities.has(c.number)||this.recordEvent({type:"spawn",frame:t,time:i,entityId:c.number,position:{x:c.origin.x,y:c.origin.y,z:c.origin.z},description:`Entity ${c.number} spawned`});this.activeEntities=o,s.playerState&&this.header},onPrint:(s,o)=>{let c=o.replace(/\n/g," ").trim();c.includes("died")||c.includes("killed")||c.includes("suicide")?(this.summary.totalDeaths++,this.recordEvent({type:"death",frame:t,time:i,description:c})):c.startsWith("You got the ")?this.recordEvent({type:"pickup",frame:t,time:i,description:c}):(s===3||s===2)&&this.recordEvent({type:"chat",frame:t,time:i,description:c,data:{level:s}})},onCenterPrint:s=>{this.recordEvent({type:"objective",frame:t,time:i,description:s.trim()})},onStuffText:()=>{},onSound:()=>{},onTempEntity:()=>{},onLayout:()=>{},onInventory:()=>{},onMuzzleFlash:(s,o)=>{this.handleWeaponFire(s,o,t,i)},onMuzzleFlash2:(s,o)=>{this.handleWeaponFire(s,o,t,i)},onMuzzleFlash3:(s,o)=>{this.handleWeaponFire(s,o,t,i)},onDisconnect:()=>{},onReconnect:()=>{},onDownload:()=>{},onDamage:s=>{for(let o of s)if(this.recordEvent({type:"damage_received",frame:t,time:i,value:o.damage,position:o.dir,description:`Took ${o.damage} damage`}),this.summary.damageReceived+=o.damage,this.header){let c=this.getOrCreatePlayerStats(this.header.playerNum);c.damageReceived+=o.damage}}};for(;e.hasMore();){let s=e.readNextBlock();if(!s)break;t++,i=t*n;let o=new Fo(s.data,a);o.setProtocolVersion(r),o.parseMessage(),r=o.getProtocolVersion()}return this.statistics={duration:i,frameCount:t+1,averageFps:(t+1)/(i||1),mapName:this.header?.levelName||"unknown",playerCount:1},{events:this.events,summary:this.summary,header:this.header,configStrings:this.configStrings,serverInfo:this.serverInfo,statistics:this.statistics,playerStats:this.playerStats,weaponStats:this.weaponStats}}handleWeaponFire(e,t,i,n){this.recordEvent({type:"weapon_fire",frame:i,time:n,entityId:e,value:t,description:`Weapon ${t} fired by ${e}`});let r=this.summary.weaponUsage.get(t)||0;this.summary.weaponUsage.set(t,r+1);let a=this.getOrCreateWeaponStat(e,t);a.shotsFired++}recordEvent(e){this.events.push(e)}parseServerInfo(e){let t=e.split("\\");for(let i=1;i<t.length;i+=2)i+1<t.length&&(this.serverInfo[t[i]]=t[i+1])}getOrCreatePlayerStats(e){let t=this.playerStats.get(e);return t||(t={kills:0,deaths:0,damageDealt:0,damageReceived:0,suicides:0},this.playerStats.set(e,t)),t}getOrCreateWeaponStat(e,t){let i=this.weaponStats.get(e);i||(i=[],this.weaponStats.set(e,i));let n=i.find(r=>r.weaponId===t);return n||(n={weaponId:t,shotsFired:0,hits:0,kills:0},i.push(n)),n}};var us=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(us||{}),C8=()=>({onServerData:()=>{},onConfigString:()=>{},onSpawnBaseline:()=>{},onFrame:()=>{},onCenterPrint:()=>{},onStuffText:()=>{},onPrint:()=>{},onSound:()=>{},onTempEntity:()=>{},onLayout:()=>{},onInventory:()=>{},onMuzzleFlash:()=>{},onMuzzleFlash2:()=>{},onDisconnect:()=>{},onReconnect:()=>{},onDownload:()=>{}}),y_=class{constructor(){this.reader=null,this.buffer=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.lastFrameData=null,this.accumulatedTime=0,this.frameDuration=100,this.snapshotInterval=100,this.snapshots=new Map,this.cachedEvents=null,this.cachedSummary=null,this.cachedHeader=null,this.cachedConfigStrings=null,this.cachedServerInfo=null,this.cachedStatistics=null,this.cachedPlayerStats=null,this.cachedWeaponStats=null,this.tracker=null,this.cameraMode=0,this.thirdPersonDistance=80,this.thirdPersonOffset={x:0,y:0,z:0}}setHandler(e){this.handler=e}setCallbacks(e){this.callbacks=e}loadDemo(e){this.buffer=e,this.reader=new h1(e),this.transitionState(0),this.accumulatedTime=0,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.snapshots.clear(),this.lastFrameData=null,this.cachedEvents=null,this.cachedSummary=null,this.cachedHeader=null,this.cachedConfigStrings=null,this.cachedServerInfo=null,this.cachedStatistics=null,this.cachedPlayerStats=null,this.cachedWeaponStats=null}play(){this.reader&&this.state!==1&&this.transitionState(1)}pause(){this.state===1&&this.transitionState(2)}stop(){this.transitionState(0),this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.lastFrameData=null}transitionState(e){this.state!==e&&(this.state=e,this.callbacks?.onPlaybackStateChange&&this.callbacks.onPlaybackStateChange(e))}setFrameDuration(e){this.frameDuration=e}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}getPlaybackSpeed(){return this.playbackSpeed}getInterpolationFactor(){return this.frameDuration<=0?0:Math.max(0,Math.min(1,this.accumulatedTime/this.frameDuration))}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.processNextFrame())return;this.accumulatedTime-=this.frameDuration,this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime())}}stepForward(){this.reader&&(this.processNextFrame(),this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime()))}stepBackward(){this.reader&&this.currentFrameIndex>0&&this.seek(this.currentFrameIndex-1)}seekToTime(e){let t=this.timeToFrame(e);this.seek(t)}seekToFrame(e){this.seek(e)}frameToTime(e){return e*this.frameDuration/1e3}timeToFrame(e){return Math.floor(e*1e3/this.frameDuration)}playFrom(e){if(e.type==="frame")this.seek(e.frame);else if(e.type==="time")this.seekToTime(e.seconds);else throw new Error(`Invalid offset type: ${e.type}`);this.play()}playRange(e,t){let i=e.type==="frame"?e.frame:this.timeToFrame(e.seconds),n=t.type==="frame"?t.frame:this.timeToFrame(t.seconds),r=this.getTotalFrames(),a=Math.max(0,r-1);if(i<0)throw new Error(`Invalid start offset: ${i}`);if(n<i)throw new Error(`End offset (${n}) cannot be before start offset (${i})`);this.playFrom(e);let s=this.callbacks?.onFrameUpdate,o={...this.callbacks,onFrameUpdate:c=>{s&&s(c),this.currentFrameIndex>=n&&(this.pause(),this.callbacks===o&&this.setCallbacks({...this.callbacks,onFrameUpdate:s}),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete())}};this.setCallbacks(o)}seek(e){if(!this.reader)return;let t=this.getTotalFrames();if(t>0&&e>=t&&(e=t-1),e<0&&(e=0),e===this.currentFrameIndex+1){this.processNextFrame(),this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete();return}if(e===this.currentFrameIndex){this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete();return}let i=-1,n=null;if(e>this.currentFrameIndex&&this.currentFrameIndex!==-1&&(i=this.currentFrameIndex),this.callbacks?.onRestoreSnapshot)for(let[r,a]of this.snapshots)r<=e&&r>i&&(i=r,n=a);for(i===-1&&this.currentFrameIndex>e?(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0):i===-1&&(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0),n&&this.callbacks?.onRestoreSnapshot&&(this.callbacks.onRestoreSnapshot(n),this.reader.seekToMessage(i+1)?this.currentFrameIndex=i:(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0));this.currentFrameIndex<e&&(this.callbacks?.onCaptureSnapshot&&(this.currentFrameIndex+1)%this.snapshotInterval,!!this.processNextFrame()););this.accumulatedTime=0,this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete(),this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime())}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.transitionState(3),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),!1;let e=this.reader.readNextBlock();if(!e)return this.transitionState(3),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),!1;this.currentFrameIndex++,this.tracker&&(this.tracker.setCurrentFrame(this.currentFrameIndex),this.tracker.setCurrentTime(this.getCurrentTime()));try{let t={...this.handler||C8(),onFrame:n=>{this.lastFrameData=n,this.handler?.onFrame&&this.handler.onFrame(n),this.callbacks?.onFrameUpdate&&this.callbacks.onFrameUpdate(n)}},i=new Fo(e.data,t);if(i.setProtocolVersion(this.currentProtocolVersion),i.parseMessage(),this.currentProtocolVersion=i.getProtocolVersion(),this.callbacks?.onCaptureSnapshot&&this.currentFrameIndex%this.snapshotInterval===0&&this.currentFrameIndex>0){let n=this.callbacks.onCaptureSnapshot(this.currentFrameIndex);n&&this.snapshots.set(this.currentFrameIndex,n)}}catch(t){return console.error("Error processing demo frame",t),this.callbacks?.onPlaybackError&&this.callbacks.onPlaybackError(t instanceof Error?t:new Error(String(t))),!1}return!0}getState(){return this.state}getCurrentTime(){return this.currentFrameIndex<0?this.accumulatedTime:this.currentFrameIndex*this.frameDuration+this.accumulatedTime}getFrameCount(){return this.reader?this.reader.getMessageCount():0}getTotalFrames(){return this.getFrameCount()}getCurrentFrame(){return this.currentFrameIndex<0?0:this.currentFrameIndex}getDuration(){return this.getFrameCount()*this.frameDuration/1e3}getTotalBytes(){return this.reader?this.reader.getProgress().total:0}getProcessedBytes(){return this.reader?this.reader.getOffset():0}getFrameData(e){if(e===this.currentFrameIndex&&this.lastFrameData)return this.lastFrameData;let t=this.state;return this.pause(),this.seek(e),t===1&&this.play(),this.lastFrameData}getFramePlayerState(e){if(e===this.currentFrameIndex&&this.handler?.getPlayerState){let i=this.handler.getPlayerState();if(i)return i}let t=this.getFrameData(e);return t?t.playerState:null}getFrameEntities(e){if(e===this.currentFrameIndex&&this.handler?.getEntities){let t=this.handler.getEntities();if(t)return Array.from(t.values())}if(this.seek(e),this.handler?.getEntities){let t=this.handler.getEntities();return t?Array.from(t.values()):[]}return[]}compareFrames(e,t){let i=this.getFramePlayerState(e),n=this.getFrameEntities(e),r=new Map;n.forEach(l=>r.set(l.number,l));let a=this.getFramePlayerState(t),s=this.getFrameEntities(t),o=new Map;s.forEach(l=>o.set(l.number,l));let c={frameA:e,frameB:t,playerStateDiff:{origin:null,viewangles:null,health:null,ammo:null},entityDiffs:{added:[],removed:[],moved:[]}};i&&a&&((i.origin.x!==a.origin.x||i.origin.y!==a.origin.y||i.origin.z!==a.origin.z)&&(c.playerStateDiff.origin={x:a.origin.x-i.origin.x,y:a.origin.y-i.origin.y,z:a.origin.z-i.origin.z}),i.stats[1]!==a.stats[1]&&(c.playerStateDiff.health=a.stats[1]-i.stats[1]),i.stats[2]!==a.stats[2]&&(c.playerStateDiff.ammo=a.stats[2]-i.stats[2]));for(let[l,m]of o){let d=r.get(l);d?(d.origin.x!==m.origin.x||d.origin.y!==m.origin.y||d.origin.z!==m.origin.z)&&c.entityDiffs.moved.push({id:l,delta:{x:m.origin.x-d.origin.x,y:m.origin.y-d.origin.y,z:m.origin.z-d.origin.z}}):c.entityDiffs.added.push(l)}for(let[l,m]of r)o.has(l)||c.entityDiffs.removed.push(l);return c}getEntityTrajectory(e,t,i){let n=[],r=this.getCurrentFrame();for(this.seek(t);this.getCurrentFrame()<=i&&this.state!==3;){let a=null;if(e===-1){let s=this.getFramePlayerState(this.getCurrentFrame());s&&(a={...s.origin})}else if(this.handler?.getEntities){let s=this.handler.getEntities().get(e);s&&(a={...s.origin})}if(a&&n.push(a),this.getCurrentFrame()===i)break;this.stepForward()}return this.seek(r),n}getEvents(){return this.ensureAnalysis(),this.cachedEvents||[]}getDemoEvents(){return this.getEvents()}filterEvents(e,t){return this.getDemoEvents().filter(n=>!(n.type!==e||t!==void 0&&n.entityId!==t))}getEventSummary(){return this.ensureAnalysis(),this.cachedSummary||{totalKills:0,totalDeaths:0,damageDealt:0,damageReceived:0,weaponUsage:new Map}}getMetadata(){let e=this.getDemoHeader();if(!e)return null;let t=this.getDemoServerInfo(),i="Unknown";return this.cachedConfigStrings,{mapName:e.levelName,playerName:i,serverName:t.hostname,demoVersion:e.protocolVersion,tickRate:e.tickRate||10}}getDemoHeader(){return this.ensureAnalysis(),this.cachedHeader}getDemoConfigStrings(){return this.ensureAnalysis(),this.cachedConfigStrings||new Map}getDemoServerInfo(){return this.ensureAnalysis(),this.cachedServerInfo||{}}getDemoStatistics(){return this.ensureAnalysis(),this.cachedStatistics}getPlayerStatistics(e){return this.ensureAnalysis(),this.cachedPlayerStats?.get(e)||null}getWeaponStatistics(e){return this.ensureAnalysis(),this.cachedWeaponStats?.get(e)||null}ensureAnalysis(){if(!this.cachedEvents&&this.buffer){let t=new I8(this.buffer).analyze();this.cachedEvents=t.events,this.cachedSummary=t.summary,this.cachedHeader=t.header,this.cachedConfigStrings=t.configStrings,this.cachedServerInfo=t.serverInfo,this.cachedStatistics=t.statistics,this.cachedPlayerStats=t.playerStats,this.cachedWeaponStats=t.weaponStats}}setCameraMode(e){this.cameraMode=e}getCameraMode(){return this.cameraMode}setThirdPersonDistance(e){this.thirdPersonDistance=e}setThirdPersonOffset(e){this.thirdPersonOffset=e}async playWithTracking(e,t={}){if(this.tracker=e,e.startTracking(),t.fastForward)try{this.state===0&&this.reader,this.transitionState(1);let i=100,n=async()=>{if(this.state!==1)throw new Error("Playback stopped unexpectedly during fast forward");let r=0;for(;r<i;){if(!this.processNextFrame()){let a=e.stopTracking();return this.tracker=null,this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),a}r++}return await new Promise(a=>setTimeout(a,0)),n()};return await n()}catch(i){throw e.stopTracking(),this.tracker=null,i}else return new Promise((i,n)=>{let r=this.callbacks?.onPlaybackComplete,a=this.callbacks?.onPlaybackError,s=()=>{this.setCallbacks({...this.callbacks,onPlaybackComplete:r,onPlaybackError:a}),this.tracker=null};this.setCallbacks({...this.callbacks,onPlaybackComplete:()=>{let o=e.stopTracking();r&&r(),s(),i(o)},onPlaybackError:o=>{e.stopTracking(),a&&a(o),s(),n(o)}}),this.play()})}async playRangeWithTracking(e,t,i,n={}){this.tracker=i,i.startTracking();let r=e.type==="frame"?e.frame:this.timeToFrame(e.seconds),a=t.type==="frame"?t.frame:this.timeToFrame(t.seconds);if(n.fastForward)try{this.playFrom(e),this.transitionState(1);let s=100,o=async()=>{if(this.state!==1)throw new Error("Playback stopped unexpectedly during fast forward");let c=0;for(;c<s;){if(this.currentFrameIndex>=a||!this.processNextFrame()){let l=i.stopTracking();return this.tracker=null,this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),l}c++}return await new Promise(l=>setTimeout(l,0)),o()};return await o()}catch(s){throw i.stopTracking(),this.tracker=null,s}else return new Promise((s,o)=>{let c=this.callbacks?.onPlaybackComplete,l=this.callbacks?.onPlaybackError,m=()=>{this.setCallbacks({...this.callbacks,onPlaybackComplete:c,onPlaybackError:l}),this.tracker=null};this.setCallbacks({...this.callbacks,onPlaybackComplete:()=>{let d=i.stopTracking();c&&c(),m(),s(d)},onPlaybackError:d=>{i.stopTracking(),l&&l(d),m(),o(d)}}),this.playRange(e,t)})}},S_=class{constructor(){this.isRecording=!1,this.startTime=0,this.frameCount=0,this.filename=null,this.lastMessageSize=-1,this.messageBuffer=new Ug(1024*1024)}startRecording(e,t=0){this.isRecording||(this.isRecording=!0,this.filename=e,this.startTime=t,this.frameCount=0,this.messageBuffer.reset(),console.log(`DemoRecorder: Started recording to ${e}`))}recordMessage(e){if(this.isRecording){this.messageBuffer.writeLong(e.byteLength);for(let t=0;t<e.length;t++)this.messageBuffer.writeByte(e[t]);this.frameCount++}}stopRecording(){return this.isRecording?(this.isRecording=!1,this.messageBuffer.writeLong(-1),console.log(`DemoRecorder: Stopped recording. Frames: ${this.frameCount}, Size: ${this.messageBuffer.getOffset()} bytes`),this.messageBuffer.getData()):null}getIsRecording(){return this.isRecording}},k_=class{static validate(e,t){if(t&&!t.toLowerCase().endsWith(".dm2"))return{valid:!1,error:"Invalid file extension (expected .dm2)"};if(e.byteLength<5)return{valid:!1,error:"File too small to be a valid demo"};let i=new DataView(e),n=i.getInt32(0,!0);if(n<=0||n>e.byteLength-4)return{valid:!1,error:`Invalid first block length: ${n}`};let r=i.getUint8(4);if(r!==U.serverdata)return{valid:!1,error:`First command is not svc_serverdata (expected ${U.serverdata}, got ${r})`};let a=-1;return n>=5&&(a=i.getInt32(5,!0)),{valid:!0,version:a}}},Tre={[U.bad]:0,[U.nop]:1,[U.disconnect]:2,[U.reconnect]:3,[U.download]:16,[U.frame]:5,[U.inventory]:6,[U.layout]:7,[U.muzzleflash]:8,[U.sound]:9,[U.print]:10,[U.stufftext]:11,[U.serverdata]:12,[U.configstring]:13,[U.spawnbaseline]:14,[U.centerprint]:15,[U.playerinfo]:17,[U.packetentities]:18,[U.deltapacketentities]:19,[U.temp_entity]:23,[U.muzzleflash2]:22};function A_(e,t){let i=t.bits,n=t.bitsHigh;e.number=t.number,i&r_&&(e.modelindex=t.modelindex),i&o_&&(e.modelindex2=t.modelindex2),i&c_&&(e.modelindex3=t.modelindex3),i&l_&&(e.modelindex4=t.modelindex4),i&e_&&(e.frame=t.frame),i&s_&&(e.frame=t.frame),(i&td||i&rd)&&(e.skinnum=t.skinnum),(i&ed||i&nd)&&(e.effects=t.effects),(i&Qm||i&id)&&(e.renderfx=t.renderfx),i&Z1&&(e.origin.x=t.origin.x),i&j1&&(e.origin.y=t.origin.y),i&i_&&(e.origin.z=t.origin.z),i&n_&&(e.angles.x=t.angles.x),i&J1&&(e.angles.y=t.angles.y),i&Q1&&(e.angles.z=t.angles.z),i&m_&&(e.old_origin.x=t.old_origin.x,e.old_origin.y=t.old_origin.y,e.old_origin.z=t.old_origin.z),i&d_&&(e.sound=t.sound),i&t_&&(e.event=t.event),i&u_&&(e.solid=t.solid),i&a_&&(e.alpha=t.alpha),i&f_&&(e.scale=t.scale),i&h_&&(e.instanceBits=t.instanceBits),i&g_&&(e.loopVolume=t.loopVolume),n&__&&(e.loopAttenuation=t.loopAttenuation),n&v_&&(e.owner=t.owner),n&p_&&(e.oldFrame=t.oldFrame)}var O8=Object.defineProperty,P8=(e,t)=>{for(var i in t)O8(e,i,{get:t[i],enumerable:!0})},xn={x:0,y:0,z:0};var $re=Math.PI/180;function Do(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function E_(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function Fr(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function nn(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function F8(e){return nn(e,e)}function rr(e){return Math.sqrt(F8(e))}function x_(e){let t=rr(e);return t===0?e:Fr(e,1/t)}var M_=0,T_=1,R_=2,D8=Math.PI/180,B8=180/Math.PI;function yd(e,t){switch(t){case M_:return e.x;case T_:return e.y;case R_:default:return e.z}}function Sd(e){return e*D8}function b_(e){return e*B8}function Pr(e){let t=e%360;return t<0?360+t:t}function oi(e){let t=Sd(yd(e,T_)),i=Sd(yd(e,M_)),n=Sd(yd(e,R_)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(i),o=Math.cos(i),c=Math.sin(n),l=Math.cos(n),m={x:o*a,y:o*r,z:-s},d={x:-c*s*a-l*-r,y:-c*s*r-l*a,z:-c*o},u={x:l*s*a-c*-r,y:l*s*r-c*a,z:l*o};return{forward:m,right:d,up:u}}function L_(e){let t=e.x,i=e.y,n=e.z;if(i===0&&t===0)return{x:n>0?-90:-270,y:0,z:0};let r;t?r=b_(Math.atan2(i,t)):i>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+i*i),s=b_(Math.atan2(n,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}var Or=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Fi=1,Mn=2;var ar=8,sr=16,bd=32;var U8=16384;var Uo=65536,z_=1<<17,G8=1<<18,H8=1<<19,V8=1<<20,W8=1<<21,K8=1<<22,$8=1<<23,Xre=1<<24,Go=1<<25,X8=1<<26,qre=1<<27,Yre=1<<28,Zre=1<<29,Ho=1<<30,jre=1<<31;var Jre=1<<25,Qre=1<<28,eae=1<<29,tae=1<<30,iae=1<<31;var nae=Fi|Mn,rae=Fi|Uo|Mn|Go|Ho,aae=Fi|Uo|Mn,sae=Fi|z_|Mn|Go|Ho,kd=bd|ar|sr,oae=Fi|sr|ar,q8=Fi|Go|Ho|Mn|X8,cae=G8|H8|V8|W8|K8|$8,lae=Fi|ar|sr|Go|Ho,mae=Fi|Uo|Mn,dae=Fi|Mn,uae=Fi|Uo|Mn|z_,fae=q8|U8;var hae=Number.MAX_SAFE_INTEGER-1;var ci=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(ci||{});var Tn=256;var Y8=256,hs=8192,gs=2048,_s=512,Z8=256,j8=Tn*2,J8=256,Ad=32;var Se=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.Story=54]="Story",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+hs]="Sounds",e[e.Images=e.Sounds+gs]="Images",e[e.Lights=e.Images+_s]="Lights",e[e.ShadowLights=e.Lights+Y8]="ShadowLights",e[e.Items=e.ShadowLights+J8]="Items",e[e.Players=e.Items+Z8]="Players",e[e.PlayerSkins=e.Players]="PlayerSkins",e[e.General=e.Players+Tn]="General",e[e.WheelWeapons=e.General+j8]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ad]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ad]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ad]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Se||{}),gae=Se.MaxConfigStrings;var _ae=Se.Sounds,vae=Se.Images,pae=Se.Lights,wae=Se.Items,yae=Se.Players,Sae=Se.General,Q8={};P8(Q8,{addReplayFrame:()=>n4,createReplaySession:()=>i4,deserializeReplay:()=>t4,serializeReplay:()=>e4});function e4(e){return JSON.stringify(e,null,2)}function t4(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function i4(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function n4(e,t,i,n){e.frames.push({serverFrame:i,cmd:t,timestamp:Date.now()-n})}var vs=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(vs||{});var rn=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(rn||{});function Dr(e,t){return(e&t)!==0}var Vo=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(Vo||{}),Di=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Attack2=32]="Attack2",e[e.Any=128]="Any",e))(Di||{});function r4(e){let{velocity:t,frametime:i,onGround:n,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:c,pmWaterFriction:l}=e,m=rr(t);if(m<1)return{x:0,y:0,z:t.z};let d=0;if(n&&!r||a){let h=m<c?c:m;d+=h*o*i}s>0&&!a&&(d+=m*l*s*i);let u=m-d;if(u<0&&(u=0),u===m)return t;let f=u/m;return Fr(t,f)}function a4(e){let{velocity:t,wishdir:i,wishspeed:n,accel:r,frametime:a}=e,s=nn(t,i),o=n-s;if(o<=0)return t;let c=r*a*n;return c>o&&(c=o),{x:t.x+i.x*c,y:t.y+i.y*c,z:t.z+i.z*c}}function s4(e){let{forward:t,right:i,cmd:n,maxSpeed:r}=e,a={x:t.x*n.forwardmove+i.x*n.sidemove,y:t.y*n.forwardmove+i.y*n.sidemove,z:0},s=rr(a);if(s>r){let o=r/s;a=Fr(a,o),s=r}return{wishdir:s===0?a:x_(a),wishspeed:s}}function o4(e){let{forward:t,right:i,cmd:n,maxSpeed:r}=e,a={x:t.x*n.forwardmove+i.x*n.sidemove,y:t.y*n.forwardmove+i.y*n.sidemove,z:t.z*n.forwardmove+i.z*n.sidemove};n.upmove>10?a=Do(a,{x:0,y:0,z:n.upmove}):n.upmove<-10?a=Do(a,{x:0,y:0,z:n.upmove}):Math.abs(n.forwardmove)<10&&Math.abs(n.sidemove)<10?a=Do(a,{x:0,y:0,z:-60}):a=Do(a,{x:0,y:0,z:10});let s=rr(a);if(s>r){let o=r/s;a=Fr(a,o),s=r}return s*=.5,{wishdir:s===0?a:x_(a),wishspeed:s}}function c4(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function l4(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Ed(e){let{pmFlags:t,cmdAngles:i,deltaAngles:n}=e,r;(t&32)!==0?r={x:0,y:i.y+n.y,z:0}:(r=c4(i,n),r={...r,x:l4(r.x)});let a=oi(r);return{viewangles:r,...a}}var N_=200,I_=200,C_=200,O_=140,P_=150,F_=3;function m4(e){let t=Pr(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function D_(e,t){return{x:m4(e.x+t.x),y:Pr(e.y+t.y),z:Pr(e.z+t.z)}}function B_(e,t){let i=t.sensitivityX??t.sensitivity,n=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*n,y:e.deltaX*i,z:0}}var or=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(or||{}),Xe=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(Xe||{});var U_=64;var Br=0,Ur=1,Gr=2,Hr=3,Vr=4,Wr=5,Kr=6,$r=7,Xr=8;var qr=11,Yr=12,Zr=13,G_=16,Wo=17,H_=18;var V_=30;var W_=33;function d4(e,t,i){let n=Math.floor(i/2),r=i%2!==0,a=t+n,s=e[a]||0;if(r){let o=e[a+1]||0,c=s>>>8&255;return(o&255)<<8|c}else return s&65535}function K_(e,t,i,n){let r=n*i,a=Math.floor(r/8),s=r%8,o=(1<<n)-1<<s;return(d4(e,t,a)&o)>>>s}var ps=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(ps||{}),yt=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(yt||{}),$_=12,X_=9,kae=Math.ceil($_*X_/16),q_=23,Y_=2,Aae=Math.ceil(q_*Y_/16),u4={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function Z_(e,t){return t<0||t>=$_?0:K_(e,34,t,X_)}function Ko(e,t){let i;return typeof t=="number"?i=t:i=u4[t],i===void 0||i<0||i>=q_?0:K_(e,41,i,Y_)}function j_(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var Xt=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e[e.Flashlight=2097152]="Flashlight",e))(Xt||{}),f4=[0,145,227,114,7,150,228,117,14,159,237,124,9,152,234,123,28,141,255,110,27,138,248,105,18,131,241,96,21,132,246,103,56,169,219,74,63,174,220,77,54,167,213,68,49,160,210,67,36,181,199,86,35,178,192,81,42,187,201,88,45,188,206,95,112,225,147,2,119,230,148,5,126,239,157,12,121,232,154,11,108,253,143,30,107,250,136,25,98,243,129,16,101,244,134,23,72,217,171,58,79,222,172,61,70,215,165,52,65,208,162,51,84,197,183,38,83,194,176,33,90,203,185,40,93,204,190,47,224,113,3,146,231,118,4,149,238,127,13,156,233,120,10,155,252,109,31,142,251,106,24,137,242,99,17,128,245,100,22,135,216,73,59,170,223,78,60,173,214,71,53,164,209,64,50,163,196,85,39,182,195,82,32,177,202,91,41,184,205,92,46,191,144,1,115,226,151,6,116,229,158,15,125,236,153,8,122,235,140,29,111,254,139,26,104,249,130,19,97,240,133,20,102,247,168,57,75,218,175,62,76,221,166,55,69,212,161,48,66,211,180,37,86,199,179,34,80,193,186,43,89,200,189,44,94,207];function J_(e){let t=0;for(let i=0;i<e.length;i++)t=f4[(t^e[i])&255];return t}var qt=(e=>(e[e.Rotate=4]="Rotate",e[e.Gib=8]="Gib",e[e.RotateScript=16]="RotateScript",e[e.Blaster=32]="Blaster",e[e.Rocket=64]="Rocket",e[e.Grenade=128]="Grenade",e[e.HyperBlaster=256]="HyperBlaster",e[e.Bfg=512]="Bfg",e[e.ColorShell=1024]="ColorShell",e[e.Powerscreen=2048]="Powerscreen",e[e.Anim01=4096]="Anim01",e[e.Anim23=8192]="Anim23",e[e.AnimAll=16384]="AnimAll",e[e.AnimAllFast=32768]="AnimAllFast",e[e.Quad=65536]="Quad",e[e.Pent=131072]="Pent",e[e.Explosion=262144]="Explosion",e[e.Teleport=524288]="Teleport",e[e.Flag1=1048576]="Flag1",e[e.Flag2=2097152]="Flag2",e[e.Boomerang=4194304]="Boomerang",e[e.Greengibs=8388608]="Greengibs",e[e.Bluehyperblaster=16777216]="Bluehyperblaster",e[e.Spinning=33554432]="Spinning",e[e.Plasma=67108864]="Plasma",e[e.Trap=134217728]="Trap",e[e.Tracker=268435456]="Tracker",e[e.Double=536870912]="Double",e[e.Sphinx=1073741824]="Sphinx",e[e.TagTrail=2147483648]="TagTrail",e))(qt||{});var bae=1<<17,Eae=1<<18,xae=1<<19,Mae=1<<20,Tae=1<<21,Rae=1<<22,Lae=1<<23,zae=1<<24,Nae=1<<25,Iae=1<<26,Cae=1<<27,Oae=1<<28,Pae=1<<29,Fae=1<<30;var fs=.025,Bo={None:0,Feet:1,Waist:2,Under:3},h4=(e,t)=>{let i={...e.origin};i.z-=.25;let n=t(e.origin,i);return{...e,onGround:n.fraction<1}},g4=(e,t)=>{let i={...e.origin},{mins:n,maxs:r}=e;i.z=e.origin.z+n.z+1;let a=t(i);if(!(a&kd))return{...e,waterLevel:Bo.None,watertype:0};let s=Bo.Feet,o=a,c=e.origin.z+(n.z+r.z)*.5;i.z=c;let l=t(i);if(l&kd){s=Bo.Waist,o=l;let m=e.origin.z+22;i.z=m;let d=t(i);d&kd&&(s=Bo.Under,o=d)}return{...e,waterLevel:s,watertype:o}},xd=(e,t,i,n)=>{let r={...e};r=h4(r,i),r=g4(r,n);let{origin:a,velocity:s,onGround:o,waterLevel:c,viewAngles:l}=r,m=c>=2?l:{x:l.x>180?(l.x-360)/3:l.x/3,y:l.y,z:l.z},{forward:d,right:u}=oi(m),f=r4({velocity:s,frametime:fs,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:c,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),h=c>=2?o4({forward:d,right:u,cmd:t,maxSpeed:320}):s4({forward:d,right:u,cmd:t,maxSpeed:320}),_=a4({velocity:f,wishdir:h.wishdir,wishspeed:h.wishspeed,accel:o||c>=2?10:1,frametime:fs}),g=i(a,{x:a.x+_.x*fs,y:a.y+_.y*fs,z:a.z+_.z*fs});return{...r,origin:g.endpos,velocity:_}},Q_=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}getReadPosition(){return this.offset}getLength(){return this.length}getRemaining(){return this.length-this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}setReadPosition(e){this.seek(e)}hasMore(){return this.offset<this.length}hasBytes(e){return this.offset+e<=this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let i=Or[t];e.x=i[0],e.y=i[1],e.z=i[2]}},Md=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),i=new Uint8Array(t);i.set(this.buffer),this.buffer=i,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeBytes(e){this.ensureSpace(e.byteLength),this.buffer.set(e,this.offset),this.offset+=e.byteLength}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let i=0;i<t;i++)this.view.setUint8(this.offset+i,e.charCodeAt(i));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,i=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let n=0;n<Or.length;n++){let r=Or[n],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,i=n)}this.writeByte(i)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},ws=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),i=new Uint8Array(t);i.set(this.buffer),this.buffer=i,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let i=0;i<e.length;i++)this.view.setUint8(this.offset+i,e.charCodeAt(i));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,i){let n=0,r=-999999,a=Math.sqrt(e*e+t*t+i*i);if(a>0){e/=a,t/=a,i/=a;for(let s=0;s<162;s++){let o=e*Or[s][0]+t*Or[s][1]+i*Or[s][2];o>r&&(r=o,n=s)}}this.writeByte(n)}},nr=class Et{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Md(Et.MAX_RELIABLE_BUFFER);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,i=null){this.qport=t,this.remoteAddress=i,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let i=0,n=!1,r=0;this.reliableLength>0&&(this.reliableLength>Et.FRAGMENT_SIZE?(n=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),i=this.reliableLength-this.fragmentSendOffset,i>Et.FRAGMENT_SIZE&&(i=Et.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=i):i=this.reliableLength);let a=Et.PACKET_HEADER,s=i>0?2+(n?8:0):0,o=t?t.length:0;a+s+i+o>Et.MAX_MSGLEN&&(o=Et.MAX_MSGLEN-a-s-i,o<0&&(o=0));let c=new ArrayBuffer(a+s+i+o),l=new DataView(c),m=new Uint8Array(c),d=this.outgoingSequence;i>0&&(d|=2147483648,(this.outgoingReliableSequence&1)!==0&&(d|=1073741824)),l.setUint32(0,d,!0);let u=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(u|=2147483648),l.setUint32(4,u,!0),l.setUint16(8,this.qport,!0);let f=a;if(i>0){let h=i;n&&(h|=32768),l.setUint16(f,h,!0),f+=2,n&&(l.setUint32(f,r,!0),f+=4,l.setUint32(f,this.reliableLength,!0),f+=4);let g=this.reliableMessage.getBuffer().subarray(r,r+i);m.set(g,f),f+=i}if(t&&o>0){let h=t.slice(0,o);m.set(h,f)}return m}process(t){if(t.length<Et.PACKET_HEADER)return null;this.lastReceived=Date.now();let i=new DataView(t.buffer,t.byteOffset,t.byteLength),n=i.getUint32(0,!0),r=i.getUint32(4,!0),a=i.getUint16(8,!0);if(this.qport!==a)return null;let s=n&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,c=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let h=c?1:0,_=this.outgoingReliableSequence&1;h!==_&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let l=(n&2147483648)!==0,m=(n&1073741824)!==0?1:0,d=Et.PACKET_HEADER,u=null;if(l){if(d+2>t.byteLength)return null;let h=i.getUint16(d,!0);d+=2;let _=(h&32768)!==0;h&=32767;let g=this.incomingReliableSequence&1;if(m===g)if(_){if(d+8>t.byteLength)return null;let v=i.getUint32(d,!0);d+=4;let A=i.getUint32(d,!0);if(d+=4,A>Et.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${A} > ${Et.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==A)&&(this.fragmentBuffer=new Uint8Array(A),this.fragmentLength=A,this.fragmentReceived=0),d+h>t.byteLength)return null;let k=t.subarray(d,d+h);v===this.fragmentReceived&&v+h<=A&&(this.fragmentBuffer.set(k,v),this.fragmentReceived+=h,this.fragmentReceived>=A&&(u=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,d+h>t.byteLength)return null;u=t.slice(d,d+h)}d+=h}let f=t.slice(d);if(u&&u.length>0){let h=u.length+f.length,_=new Uint8Array(h);return _.set(u,0),_.set(f,u.length),_}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Et.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Et.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Et.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let i=t.length+1;if(this.reliableLength+i>Et.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=i}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,i=3e4){return t-this.lastReceived>i}};nr.MAX_MSGLEN=1400;nr.FRAGMENT_SIZE=1024;nr.PACKET_HEADER=10;nr.HEADER_OVERHEAD=nr.PACKET_HEADER+2;nr.MAX_RELIABLE_BUFFER=262144;var ev=nr;var tv=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(tv||{}),Dae=Object.keys(tv).length/2;var $o=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],iv={blaster:null,shotgun:1,supershotgun:1,machinegun:0,chaingun:0,grenades:3,grenadelauncher:3,rocketlauncher:2,hyperblaster:4,railgun:5,bfg10k:4,grapple:null,chainfist:null,etf_rifle:8,prox_launcher:11,ionripper:4,plasmabeam:4,phalanx:6,disruptor:10,trap:7};var De=1e-6,li=typeof Float32Array<"u"?Float32Array:Array,Td=Math.random;function Xo(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Vae=Math.PI/180,Wae=180/Math.PI;var an={};Am(an,{add:()=>eR,adjoint:()=>A4,clone:()=>v4,copy:()=>p4,create:()=>_4,decompose:()=>U4,determinant:()=>b4,equals:()=>rR,exactEquals:()=>nR,frob:()=>Q4,fromQuat:()=>V4,fromQuat2:()=>F4,fromRotation:()=>I4,fromRotationTranslation:()=>sv,fromRotationTranslationScale:()=>G4,fromRotationTranslationScaleOrigin:()=>H4,fromScaling:()=>N4,fromTranslation:()=>z4,fromValues:()=>w4,fromXRotation:()=>C4,fromYRotation:()=>O4,fromZRotation:()=>P4,frustum:()=>W4,getRotation:()=>B4,getScaling:()=>ov,getTranslation:()=>D4,identity:()=>rv,invert:()=>k4,lookAt:()=>Z4,mul:()=>aR,multiply:()=>av,multiplyScalar:()=>tR,multiplyScalarAndAdd:()=>iR,ortho:()=>q4,orthoNO:()=>lv,orthoZO:()=>Y4,perspective:()=>K4,perspectiveFromFieldOfView:()=>X4,perspectiveNO:()=>cv,perspectiveZO:()=>$4,rotate:()=>M4,rotateX:()=>T4,rotateY:()=>R4,rotateZ:()=>L4,scale:()=>x4,set:()=>y4,str:()=>J4,sub:()=>sR,subtract:()=>mv,targetTo:()=>j4,translate:()=>E4,transpose:()=>S4});function _4(){var e=new li(16);return li!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function v4(e){var t=new li(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function p4(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function w4(e,t,i,n,r,a,s,o,c,l,m,d,u,f,h,_){var g=new li(16);return g[0]=e,g[1]=t,g[2]=i,g[3]=n,g[4]=r,g[5]=a,g[6]=s,g[7]=o,g[8]=c,g[9]=l,g[10]=m,g[11]=d,g[12]=u,g[13]=f,g[14]=h,g[15]=_,g}function y4(e,t,i,n,r,a,s,o,c,l,m,d,u,f,h,_,g){return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=c,e[8]=l,e[9]=m,e[10]=d,e[11]=u,e[12]=f,e[13]=h,e[14]=_,e[15]=g,e}function rv(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function S4(e,t){if(e===t){var i=t[1],n=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=i,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function k4(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],m=t[8],d=t[9],u=t[10],f=t[11],h=t[12],_=t[13],g=t[14],v=t[15],A=i*o-n*s,k=i*c-r*s,y=i*l-a*s,b=n*c-r*o,S=n*l-a*o,x=r*l-a*c,R=m*_-d*h,z=m*g-u*h,E=m*v-f*h,D=d*g-u*_,$=d*v-f*_,j=u*v-f*g,q=A*j-k*$+y*D+b*E-S*z+x*R;return q?(q=1/q,e[0]=(o*j-c*$+l*D)*q,e[1]=(r*$-n*j-a*D)*q,e[2]=(_*x-g*S+v*b)*q,e[3]=(u*S-d*x-f*b)*q,e[4]=(c*E-s*j-l*z)*q,e[5]=(i*j-r*E+a*z)*q,e[6]=(g*y-h*x-v*k)*q,e[7]=(m*x-u*y+f*k)*q,e[8]=(s*$-o*E+l*R)*q,e[9]=(n*E-i*$-a*R)*q,e[10]=(h*S-_*y+v*A)*q,e[11]=(d*y-m*S-f*A)*q,e[12]=(o*z-s*D-c*R)*q,e[13]=(i*D-n*z+r*R)*q,e[14]=(_*k-h*b-g*A)*q,e[15]=(m*b-d*k+u*A)*q,e):null}function A4(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],m=t[8],d=t[9],u=t[10],f=t[11],h=t[12],_=t[13],g=t[14],v=t[15],A=i*o-n*s,k=i*c-r*s,y=i*l-a*s,b=n*c-r*o,S=n*l-a*o,x=r*l-a*c,R=m*_-d*h,z=m*g-u*h,E=m*v-f*h,D=d*g-u*_,$=d*v-f*_,j=u*v-f*g;return e[0]=o*j-c*$+l*D,e[1]=r*$-n*j-a*D,e[2]=_*x-g*S+v*b,e[3]=u*S-d*x-f*b,e[4]=c*E-s*j-l*z,e[5]=i*j-r*E+a*z,e[6]=g*y-h*x-v*k,e[7]=m*x-u*y+f*k,e[8]=s*$-o*E+l*R,e[9]=n*E-i*$-a*R,e[10]=h*S-_*y+v*A,e[11]=d*y-m*S-f*A,e[12]=o*z-s*D-c*R,e[13]=i*D-n*z+r*R,e[14]=_*k-h*b-g*A,e[15]=m*b-d*k+u*A,e}function b4(e){var t=e[0],i=e[1],n=e[2],r=e[3],a=e[4],s=e[5],o=e[6],c=e[7],l=e[8],m=e[9],d=e[10],u=e[11],f=e[12],h=e[13],_=e[14],g=e[15],v=t*s-i*a,A=t*o-n*a,k=i*o-n*s,y=l*h-m*f,b=l*_-d*f,S=m*_-d*h,x=t*S-i*b+n*y,R=a*S-s*b+o*y,z=l*k-m*A+d*v,E=f*k-h*A+_*v;return c*x-r*R+g*z-u*E}function av(e,t,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],c=t[5],l=t[6],m=t[7],d=t[8],u=t[9],f=t[10],h=t[11],_=t[12],g=t[13],v=t[14],A=t[15],k=i[0],y=i[1],b=i[2],S=i[3];return e[0]=k*n+y*o+b*d+S*_,e[1]=k*r+y*c+b*u+S*g,e[2]=k*a+y*l+b*f+S*v,e[3]=k*s+y*m+b*h+S*A,k=i[4],y=i[5],b=i[6],S=i[7],e[4]=k*n+y*o+b*d+S*_,e[5]=k*r+y*c+b*u+S*g,e[6]=k*a+y*l+b*f+S*v,e[7]=k*s+y*m+b*h+S*A,k=i[8],y=i[9],b=i[10],S=i[11],e[8]=k*n+y*o+b*d+S*_,e[9]=k*r+y*c+b*u+S*g,e[10]=k*a+y*l+b*f+S*v,e[11]=k*s+y*m+b*h+S*A,k=i[12],y=i[13],b=i[14],S=i[15],e[12]=k*n+y*o+b*d+S*_,e[13]=k*r+y*c+b*u+S*g,e[14]=k*a+y*l+b*f+S*v,e[15]=k*s+y*m+b*h+S*A,e}function E4(e,t,i){var n=i[0],r=i[1],a=i[2],s,o,c,l,m,d,u,f,h,_,g,v;return t===e?(e[12]=t[0]*n+t[4]*r+t[8]*a+t[12],e[13]=t[1]*n+t[5]*r+t[9]*a+t[13],e[14]=t[2]*n+t[6]*r+t[10]*a+t[14],e[15]=t[3]*n+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],c=t[2],l=t[3],m=t[4],d=t[5],u=t[6],f=t[7],h=t[8],_=t[9],g=t[10],v=t[11],e[0]=s,e[1]=o,e[2]=c,e[3]=l,e[4]=m,e[5]=d,e[6]=u,e[7]=f,e[8]=h,e[9]=_,e[10]=g,e[11]=v,e[12]=s*n+m*r+h*a+t[12],e[13]=o*n+d*r+_*a+t[13],e[14]=c*n+u*r+g*a+t[14],e[15]=l*n+f*r+v*a+t[15]),e}function x4(e,t,i){var n=i[0],r=i[1],a=i[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function M4(e,t,i,n){var r=n[0],a=n[1],s=n[2],o=Math.sqrt(r*r+a*a+s*s),c,l,m,d,u,f,h,_,g,v,A,k,y,b,S,x,R,z,E,D,$,j,q,be;return o<De?null:(o=1/o,r*=o,a*=o,s*=o,c=Math.sin(i),l=Math.cos(i),m=1-l,d=t[0],u=t[1],f=t[2],h=t[3],_=t[4],g=t[5],v=t[6],A=t[7],k=t[8],y=t[9],b=t[10],S=t[11],x=r*r*m+l,R=a*r*m+s*c,z=s*r*m-a*c,E=r*a*m-s*c,D=a*a*m+l,$=s*a*m+r*c,j=r*s*m+a*c,q=a*s*m-r*c,be=s*s*m+l,e[0]=d*x+_*R+k*z,e[1]=u*x+g*R+y*z,e[2]=f*x+v*R+b*z,e[3]=h*x+A*R+S*z,e[4]=d*E+_*D+k*$,e[5]=u*E+g*D+y*$,e[6]=f*E+v*D+b*$,e[7]=h*E+A*D+S*$,e[8]=d*j+_*q+k*be,e[9]=u*j+g*q+y*be,e[10]=f*j+v*q+b*be,e[11]=h*j+A*q+S*be,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function T4(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[4],s=t[5],o=t[6],c=t[7],l=t[8],m=t[9],d=t[10],u=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+l*n,e[5]=s*r+m*n,e[6]=o*r+d*n,e[7]=c*r+u*n,e[8]=l*r-a*n,e[9]=m*r-s*n,e[10]=d*r-o*n,e[11]=u*r-c*n,e}function R4(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[0],s=t[1],o=t[2],c=t[3],l=t[8],m=t[9],d=t[10],u=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-l*n,e[1]=s*r-m*n,e[2]=o*r-d*n,e[3]=c*r-u*n,e[8]=a*n+l*r,e[9]=s*n+m*r,e[10]=o*n+d*r,e[11]=c*n+u*r,e}function L4(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[0],s=t[1],o=t[2],c=t[3],l=t[4],m=t[5],d=t[6],u=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+l*n,e[1]=s*r+m*n,e[2]=o*r+d*n,e[3]=c*r+u*n,e[4]=l*r-a*n,e[5]=m*r-s*n,e[6]=d*r-o*n,e[7]=u*r-c*n,e}function z4(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function N4(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function I4(e,t,i){var n=i[0],r=i[1],a=i[2],s=Math.sqrt(n*n+r*r+a*a),o,c,l;return s<De?null:(s=1/s,n*=s,r*=s,a*=s,o=Math.sin(t),c=Math.cos(t),l=1-c,e[0]=n*n*l+c,e[1]=r*n*l+a*o,e[2]=a*n*l-r*o,e[3]=0,e[4]=n*r*l-a*o,e[5]=r*r*l+c,e[6]=a*r*l+n*o,e[7]=0,e[8]=n*a*l+r*o,e[9]=r*a*l-n*o,e[10]=a*a*l+c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function C4(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=i,e[7]=0,e[8]=0,e[9]=-i,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function O4(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-i,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=i,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function P4(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=i,e[2]=0,e[3]=0,e[4]=-i,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function sv(e,t,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=n+n,c=r+r,l=a+a,m=n*o,d=n*c,u=n*l,f=r*c,h=r*l,_=a*l,g=s*o,v=s*c,A=s*l;return e[0]=1-(f+_),e[1]=d+A,e[2]=u-v,e[3]=0,e[4]=d-A,e[5]=1-(m+_),e[6]=h+g,e[7]=0,e[8]=u+v,e[9]=h-g,e[10]=1-(m+f),e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function F4(e,t){var i=new li(3),n=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],c=t[5],l=t[6],m=t[7],d=n*n+r*r+a*a+s*s;return d>0?(i[0]=(o*s+m*n+c*a-l*r)*2/d,i[1]=(c*s+m*r+l*n-o*a)*2/d,i[2]=(l*s+m*a+o*r-c*n)*2/d):(i[0]=(o*s+m*n+c*a-l*r)*2,i[1]=(c*s+m*r+l*n-o*a)*2,i[2]=(l*s+m*a+o*r-c*n)*2),sv(e,t,i),e}function D4(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function ov(e,t){var i=t[0],n=t[1],r=t[2],a=t[4],s=t[5],o=t[6],c=t[8],l=t[9],m=t[10];return e[0]=Math.sqrt(i*i+n*n+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(c*c+l*l+m*m),e}function B4(e,t){var i=new li(3);ov(i,t);var n=1/i[0],r=1/i[1],a=1/i[2],s=t[0]*n,o=t[1]*r,c=t[2]*a,l=t[4]*n,m=t[5]*r,d=t[6]*a,u=t[8]*n,f=t[9]*r,h=t[10]*a,_=s+m+h,g=0;return _>0?(g=Math.sqrt(_+1)*2,e[3]=.25*g,e[0]=(d-f)/g,e[1]=(u-c)/g,e[2]=(o-l)/g):s>m&&s>h?(g=Math.sqrt(1+s-m-h)*2,e[3]=(d-f)/g,e[0]=.25*g,e[1]=(o+l)/g,e[2]=(u+c)/g):m>h?(g=Math.sqrt(1+m-s-h)*2,e[3]=(u-c)/g,e[0]=(o+l)/g,e[1]=.25*g,e[2]=(d+f)/g):(g=Math.sqrt(1+h-s-m)*2,e[3]=(o-l)/g,e[0]=(u+c)/g,e[1]=(d+f)/g,e[2]=.25*g),e}function U4(e,t,i,n){t[0]=n[12],t[1]=n[13],t[2]=n[14];var r=n[0],a=n[1],s=n[2],o=n[4],c=n[5],l=n[6],m=n[8],d=n[9],u=n[10];i[0]=Math.sqrt(r*r+a*a+s*s),i[1]=Math.sqrt(o*o+c*c+l*l),i[2]=Math.sqrt(m*m+d*d+u*u);var f=1/i[0],h=1/i[1],_=1/i[2],g=r*f,v=a*h,A=s*_,k=o*f,y=c*h,b=l*_,S=m*f,x=d*h,R=u*_,z=g+y+R,E=0;return z>0?(E=Math.sqrt(z+1)*2,e[3]=.25*E,e[0]=(b-x)/E,e[1]=(S-A)/E,e[2]=(v-k)/E):g>y&&g>R?(E=Math.sqrt(1+g-y-R)*2,e[3]=(b-x)/E,e[0]=.25*E,e[1]=(v+k)/E,e[2]=(S+A)/E):y>R?(E=Math.sqrt(1+y-g-R)*2,e[3]=(S-A)/E,e[0]=(v+k)/E,e[1]=.25*E,e[2]=(b+x)/E):(E=Math.sqrt(1+R-g-y)*2,e[3]=(v-k)/E,e[0]=(S+A)/E,e[1]=(b+x)/E,e[2]=.25*E),e}function G4(e,t,i,n){var r=t[0],a=t[1],s=t[2],o=t[3],c=r+r,l=a+a,m=s+s,d=r*c,u=r*l,f=r*m,h=a*l,_=a*m,g=s*m,v=o*c,A=o*l,k=o*m,y=n[0],b=n[1],S=n[2];return e[0]=(1-(h+g))*y,e[1]=(u+k)*y,e[2]=(f-A)*y,e[3]=0,e[4]=(u-k)*b,e[5]=(1-(d+g))*b,e[6]=(_+v)*b,e[7]=0,e[8]=(f+A)*S,e[9]=(_-v)*S,e[10]=(1-(d+h))*S,e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function H4(e,t,i,n,r){var a=t[0],s=t[1],o=t[2],c=t[3],l=a+a,m=s+s,d=o+o,u=a*l,f=a*m,h=a*d,_=s*m,g=s*d,v=o*d,A=c*l,k=c*m,y=c*d,b=n[0],S=n[1],x=n[2],R=r[0],z=r[1],E=r[2],D=(1-(_+v))*b,$=(f+y)*b,j=(h-k)*b,q=(f-y)*S,be=(1-(u+v))*S,M=(g+A)*S,N=(h+k)*x,G=(g-A)*x,he=(1-(u+_))*x;return e[0]=D,e[1]=$,e[2]=j,e[3]=0,e[4]=q,e[5]=be,e[6]=M,e[7]=0,e[8]=N,e[9]=G,e[10]=he,e[11]=0,e[12]=i[0]+R-(D*R+q*z+N*E),e[13]=i[1]+z-($*R+be*z+G*E),e[14]=i[2]+E-(j*R+M*z+he*E),e[15]=1,e}function V4(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=i+i,o=n+n,c=r+r,l=i*s,m=n*s,d=n*o,u=r*s,f=r*o,h=r*c,_=a*s,g=a*o,v=a*c;return e[0]=1-d-h,e[1]=m+v,e[2]=u-g,e[3]=0,e[4]=m-v,e[5]=1-l-h,e[6]=f+_,e[7]=0,e[8]=u+g,e[9]=f-_,e[10]=1-l-d,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function W4(e,t,i,n,r,a,s){var o=1/(i-t),c=1/(r-n),l=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*c,e[6]=0,e[7]=0,e[8]=(i+t)*o,e[9]=(r+n)*c,e[10]=(s+a)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*l,e[15]=0,e}function cv(e,t,i,n,r){var a=1/Math.tan(t/2);if(e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(n-r);e[10]=(r+n)*s,e[14]=2*r*n*s}else e[10]=-1,e[14]=-2*n;return e}var K4=cv;function $4(e,t,i,n,r){var a=1/Math.tan(t/2);if(e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(n-r);e[10]=r*s,e[14]=r*n*s}else e[10]=-1,e[14]=-n;return e}function X4(e,t,i,n){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),c=2/(s+o),l=2/(r+a);return e[0]=c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=l,e[6]=0,e[7]=0,e[8]=-((s-o)*c*.5),e[9]=(r-a)*l*.5,e[10]=n/(i-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*i/(i-n),e[15]=0,e}function lv(e,t,i,n,r,a,s){var o=1/(t-i),c=1/(n-r),l=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+i)*o,e[13]=(r+n)*c,e[14]=(s+a)*l,e[15]=1,e}var q4=lv;function Y4(e,t,i,n,r,a,s){var o=1/(t-i),c=1/(n-r),l=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=l,e[11]=0,e[12]=(t+i)*o,e[13]=(r+n)*c,e[14]=a*l,e[15]=1,e}function Z4(e,t,i,n){var r,a,s,o,c,l,m,d,u,f,h=t[0],_=t[1],g=t[2],v=n[0],A=n[1],k=n[2],y=i[0],b=i[1],S=i[2];return Math.abs(h-y)<De&&Math.abs(_-b)<De&&Math.abs(g-S)<De?rv(e):(m=h-y,d=_-b,u=g-S,f=1/Math.sqrt(m*m+d*d+u*u),m*=f,d*=f,u*=f,r=A*u-k*d,a=k*m-v*u,s=v*d-A*m,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=d*s-u*a,c=u*r-m*s,l=m*a-d*r,f=Math.sqrt(o*o+c*c+l*l),f?(f=1/f,o*=f,c*=f,l*=f):(o=0,c=0,l=0),e[0]=r,e[1]=o,e[2]=m,e[3]=0,e[4]=a,e[5]=c,e[6]=d,e[7]=0,e[8]=s,e[9]=l,e[10]=u,e[11]=0,e[12]=-(r*h+a*_+s*g),e[13]=-(o*h+c*_+l*g),e[14]=-(m*h+d*_+u*g),e[15]=1,e)}function j4(e,t,i,n){var r=t[0],a=t[1],s=t[2],o=n[0],c=n[1],l=n[2],m=r-i[0],d=a-i[1],u=s-i[2],f=m*m+d*d+u*u;f>0&&(f=1/Math.sqrt(f),m*=f,d*=f,u*=f);var h=c*u-l*d,_=l*m-o*u,g=o*d-c*m;return f=h*h+_*_+g*g,f>0&&(f=1/Math.sqrt(f),h*=f,_*=f,g*=f),e[0]=h,e[1]=_,e[2]=g,e[3]=0,e[4]=d*g-u*_,e[5]=u*h-m*g,e[6]=m*_-d*h,e[7]=0,e[8]=m,e[9]=d,e[10]=u,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function J4(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function Q4(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function eR(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e[4]=t[4]+i[4],e[5]=t[5]+i[5],e[6]=t[6]+i[6],e[7]=t[7]+i[7],e[8]=t[8]+i[8],e[9]=t[9]+i[9],e[10]=t[10]+i[10],e[11]=t[11]+i[11],e[12]=t[12]+i[12],e[13]=t[13]+i[13],e[14]=t[14]+i[14],e[15]=t[15]+i[15],e}function mv(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e[3]=t[3]-i[3],e[4]=t[4]-i[4],e[5]=t[5]-i[5],e[6]=t[6]-i[6],e[7]=t[7]-i[7],e[8]=t[8]-i[8],e[9]=t[9]-i[9],e[10]=t[10]-i[10],e[11]=t[11]-i[11],e[12]=t[12]-i[12],e[13]=t[13]-i[13],e[14]=t[14]-i[14],e[15]=t[15]-i[15],e}function tR(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12]*i,e[13]=t[13]*i,e[14]=t[14]*i,e[15]=t[15]*i,e}function iR(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e[3]=t[3]+i[3]*n,e[4]=t[4]+i[4]*n,e[5]=t[5]+i[5]*n,e[6]=t[6]+i[6]*n,e[7]=t[7]+i[7]*n,e[8]=t[8]+i[8]*n,e[9]=t[9]+i[9]*n,e[10]=t[10]+i[10]*n,e[11]=t[11]+i[11]*n,e[12]=t[12]+i[12]*n,e[13]=t[13]+i[13]*n,e[14]=t[14]+i[14]*n,e[15]=t[15]+i[15]*n,e}function nR(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function rR(e,t){var i=e[0],n=e[1],r=e[2],a=e[3],s=e[4],o=e[5],c=e[6],l=e[7],m=e[8],d=e[9],u=e[10],f=e[11],h=e[12],_=e[13],g=e[14],v=e[15],A=t[0],k=t[1],y=t[2],b=t[3],S=t[4],x=t[5],R=t[6],z=t[7],E=t[8],D=t[9],$=t[10],j=t[11],q=t[12],be=t[13],M=t[14],N=t[15];return Math.abs(i-A)<=De*Math.max(1,Math.abs(i),Math.abs(A))&&Math.abs(n-k)<=De*Math.max(1,Math.abs(n),Math.abs(k))&&Math.abs(r-y)<=De*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(a-b)<=De*Math.max(1,Math.abs(a),Math.abs(b))&&Math.abs(s-S)<=De*Math.max(1,Math.abs(s),Math.abs(S))&&Math.abs(o-x)<=De*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(c-R)<=De*Math.max(1,Math.abs(c),Math.abs(R))&&Math.abs(l-z)<=De*Math.max(1,Math.abs(l),Math.abs(z))&&Math.abs(m-E)<=De*Math.max(1,Math.abs(m),Math.abs(E))&&Math.abs(d-D)<=De*Math.max(1,Math.abs(d),Math.abs(D))&&Math.abs(u-$)<=De*Math.max(1,Math.abs(u),Math.abs($))&&Math.abs(f-j)<=De*Math.max(1,Math.abs(f),Math.abs(j))&&Math.abs(h-q)<=De*Math.max(1,Math.abs(h),Math.abs(q))&&Math.abs(_-be)<=De*Math.max(1,Math.abs(_),Math.abs(be))&&Math.abs(g-M)<=De*Math.max(1,Math.abs(g),Math.abs(M))&&Math.abs(v-N)<=De*Math.max(1,Math.abs(v),Math.abs(N))}var aR=av,sR=mv;var Yt={};Am(Yt,{add:()=>dR,angle:()=>CR,bezier:()=>xR,ceil:()=>uR,clone:()=>oR,copy:()=>lR,create:()=>dv,cross:()=>kR,dist:()=>HR,distance:()=>_v,div:()=>GR,divide:()=>gv,dot:()=>Rd,equals:()=>DR,exactEquals:()=>FR,floor:()=>fR,forEach:()=>$R,fromValues:()=>cR,hermite:()=>ER,inverse:()=>yR,len:()=>WR,length:()=>uv,lerp:()=>AR,max:()=>gR,min:()=>hR,mul:()=>UR,multiply:()=>hv,negate:()=>wR,normalize:()=>SR,random:()=>MR,rotateX:()=>zR,rotateY:()=>NR,rotateZ:()=>IR,round:()=>_R,scale:()=>vR,scaleAndAdd:()=>pR,set:()=>mR,slerp:()=>bR,sqrDist:()=>VR,sqrLen:()=>KR,squaredDistance:()=>vv,squaredLength:()=>pv,str:()=>PR,sub:()=>BR,subtract:()=>fv,transformMat3:()=>RR,transformMat4:()=>TR,transformQuat:()=>LR,zero:()=>OR});function dv(){var e=new li(3);return li!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function oR(e){var t=new li(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function uv(e){var t=e[0],i=e[1],n=e[2];return Math.sqrt(t*t+i*i+n*n)}function cR(e,t,i){var n=new li(3);return n[0]=e,n[1]=t,n[2]=i,n}function lR(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function mR(e,t,i,n){return e[0]=t,e[1]=i,e[2]=n,e}function dR(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e}function fv(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e}function hv(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e}function gv(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e[2]=t[2]/i[2],e}function uR(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function fR(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function hR(e,t,i){return e[0]=Math.min(t[0],i[0]),e[1]=Math.min(t[1],i[1]),e[2]=Math.min(t[2],i[2]),e}function gR(e,t,i){return e[0]=Math.max(t[0],i[0]),e[1]=Math.max(t[1],i[1]),e[2]=Math.max(t[2],i[2]),e}function _R(e,t){return e[0]=Xo(t[0]),e[1]=Xo(t[1]),e[2]=Xo(t[2]),e}function vR(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function pR(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e}function _v(e,t){var i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(i*i+n*n+r*r)}function vv(e,t){var i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return i*i+n*n+r*r}function pv(e){var t=e[0],i=e[1],n=e[2];return t*t+i*i+n*n}function wR(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function yR(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function SR(e,t){var i=t[0],n=t[1],r=t[2],a=i*i+n*n+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Rd(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function kR(e,t,i){var n=t[0],r=t[1],a=t[2],s=i[0],o=i[1],c=i[2];return e[0]=r*c-a*o,e[1]=a*s-n*c,e[2]=n*o-r*s,e}function AR(e,t,i,n){var r=t[0],a=t[1],s=t[2];return e[0]=r+n*(i[0]-r),e[1]=a+n*(i[1]-a),e[2]=s+n*(i[2]-s),e}function bR(e,t,i,n){var r=Math.acos(Math.min(Math.max(Rd(t,i),-1),1)),a=Math.sin(r),s=Math.sin((1-n)*r)/a,o=Math.sin(n*r)/a;return e[0]=s*t[0]+o*i[0],e[1]=s*t[1]+o*i[1],e[2]=s*t[2]+o*i[2],e}function ER(e,t,i,n,r,a){var s=a*a,o=s*(2*a-3)+1,c=s*(a-2)+a,l=s*(a-1),m=s*(3-2*a);return e[0]=t[0]*o+i[0]*c+n[0]*l+r[0]*m,e[1]=t[1]*o+i[1]*c+n[1]*l+r[1]*m,e[2]=t[2]*o+i[2]*c+n[2]*l+r[2]*m,e}function xR(e,t,i,n,r,a){var s=1-a,o=s*s,c=a*a,l=o*s,m=3*a*o,d=3*c*s,u=c*a;return e[0]=t[0]*l+i[0]*m+n[0]*d+r[0]*u,e[1]=t[1]*l+i[1]*m+n[1]*d+r[1]*u,e[2]=t[2]*l+i[2]*m+n[2]*d+r[2]*u,e}function MR(e,t){t=t===void 0?1:t;var i=Td()*2*Math.PI,n=Td()*2-1,r=Math.sqrt(1-n*n)*t;return e[0]=Math.cos(i)*r,e[1]=Math.sin(i)*r,e[2]=n*t,e}function TR(e,t,i){var n=t[0],r=t[1],a=t[2],s=i[3]*n+i[7]*r+i[11]*a+i[15];return s=s||1,e[0]=(i[0]*n+i[4]*r+i[8]*a+i[12])/s,e[1]=(i[1]*n+i[5]*r+i[9]*a+i[13])/s,e[2]=(i[2]*n+i[6]*r+i[10]*a+i[14])/s,e}function RR(e,t,i){var n=t[0],r=t[1],a=t[2];return e[0]=n*i[0]+r*i[3]+a*i[6],e[1]=n*i[1]+r*i[4]+a*i[7],e[2]=n*i[2]+r*i[5]+a*i[8],e}function LR(e,t,i){var n=i[0],r=i[1],a=i[2],s=i[3],o=t[0],c=t[1],l=t[2],m=r*l-a*c,d=a*o-n*l,u=n*c-r*o;return m=m+m,d=d+d,u=u+u,e[0]=o+s*m+r*u-a*d,e[1]=c+s*d+a*m-n*u,e[2]=l+s*u+n*d-r*m,e}function zR(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[0],a[1]=r[1]*Math.cos(n)-r[2]*Math.sin(n),a[2]=r[1]*Math.sin(n)+r[2]*Math.cos(n),e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function NR(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[2]*Math.sin(n)+r[0]*Math.cos(n),a[1]=r[1],a[2]=r[2]*Math.cos(n)-r[0]*Math.sin(n),e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function IR(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[0]*Math.cos(n)-r[1]*Math.sin(n),a[1]=r[0]*Math.sin(n)+r[1]*Math.cos(n),a[2]=r[2],e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function CR(e,t){var i=e[0],n=e[1],r=e[2],a=t[0],s=t[1],o=t[2],c=Math.sqrt((i*i+n*n+r*r)*(a*a+s*s+o*o)),l=c&&Rd(e,t)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function OR(e){return e[0]=0,e[1]=0,e[2]=0,e}function PR(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function FR(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function DR(e,t){var i=e[0],n=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(i-a)<=De*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(n-s)<=De*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(r-o)<=De*Math.max(1,Math.abs(r),Math.abs(o))}var BR=fv,UR=hv,GR=gv,HR=_v,VR=vv,WR=uv,KR=pv,$R=(function(){var e=dv();return function(t,i,n,r,a,s){var o,c;for(i||(i=3),n||(n=0),r?c=Math.min(r*i+n,t.length):c=t.length,o=n;o<c;o+=i)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var XR=Object.defineProperty,qR=(e,t)=>{for(var i in t)XR(e,i,{get:t[i],enumerable:!0})},Yo=null,qo=[1,1,1,1],wv=["ch1","ch2","ch3"],Ld=[null,null,null],YR=e=>{for(let t=0;t<wv.length;t++){let i=wv[t];try{Ld[t]=e.Draw_RegisterPic(`pics/${i}.pcx`)}catch{if(t===0)try{Ld[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
203
|
+
}`;var We=1e-6,Oi=typeof Float32Array<"u"?Float32Array:Array,K0=Math.random;function xm(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var xre=Math.PI/180,Mre=180/Math.PI,ot={};Pg(ot,{add:()=>Cx,adjoint:()=>nx,clone:()=>j3,copy:()=>J3,create:()=>Z3,decompose:()=>yx,determinant:()=>rx,equals:()=>Dx,exactEquals:()=>Fx,frob:()=>Ix,fromQuat:()=>Ax,fromQuat2:()=>vx,fromRotation:()=>fx,fromRotationTranslation:()=>$g,fromRotationTranslationScale:()=>Sx,fromRotationTranslationScaleOrigin:()=>kx,fromScaling:()=>ux,fromTranslation:()=>dx,fromValues:()=>Q3,fromXRotation:()=>hx,fromYRotation:()=>gx,fromZRotation:()=>_x,frustum:()=>bx,getRotation:()=>wx,getScaling:()=>Xg,getTranslation:()=>px,identity:()=>Wg,invert:()=>ix,lookAt:()=>Lx,mul:()=>Bx,multiply:()=>Kg,multiplyScalar:()=>Ox,multiplyScalarAndAdd:()=>Px,ortho:()=>Tx,orthoNO:()=>Yg,orthoZO:()=>Rx,perspective:()=>Ex,perspectiveFromFieldOfView:()=>Mx,perspectiveNO:()=>qg,perspectiveZO:()=>xx,rotate:()=>ox,rotateX:()=>cx,rotateY:()=>lx,rotateZ:()=>mx,scale:()=>sx,set:()=>ex,str:()=>Nx,sub:()=>Ux,subtract:()=>Zg,targetTo:()=>zx,translate:()=>ax,transpose:()=>tx});function Z3(){var e=new Oi(16);return Oi!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function j3(e){var t=new Oi(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function J3(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Q3(e,t,i,n,r,a,s,o,c,l,m,d,u,f,h,_){var g=new Oi(16);return g[0]=e,g[1]=t,g[2]=i,g[3]=n,g[4]=r,g[5]=a,g[6]=s,g[7]=o,g[8]=c,g[9]=l,g[10]=m,g[11]=d,g[12]=u,g[13]=f,g[14]=h,g[15]=_,g}function ex(e,t,i,n,r,a,s,o,c,l,m,d,u,f,h,_,g){return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=c,e[8]=l,e[9]=m,e[10]=d,e[11]=u,e[12]=f,e[13]=h,e[14]=_,e[15]=g,e}function Wg(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function tx(e,t){if(e===t){var i=t[1],n=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=i,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function ix(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],m=t[8],d=t[9],u=t[10],f=t[11],h=t[12],_=t[13],g=t[14],v=t[15],A=i*o-n*s,k=i*c-r*s,y=i*l-a*s,b=n*c-r*o,S=n*l-a*o,x=r*l-a*c,R=m*_-d*h,z=m*g-u*h,E=m*v-f*h,D=d*g-u*_,$=d*v-f*_,j=u*v-f*g,q=A*j-k*$+y*D+b*E-S*z+x*R;return q?(q=1/q,e[0]=(o*j-c*$+l*D)*q,e[1]=(r*$-n*j-a*D)*q,e[2]=(_*x-g*S+v*b)*q,e[3]=(u*S-d*x-f*b)*q,e[4]=(c*E-s*j-l*z)*q,e[5]=(i*j-r*E+a*z)*q,e[6]=(g*y-h*x-v*k)*q,e[7]=(m*x-u*y+f*k)*q,e[8]=(s*$-o*E+l*R)*q,e[9]=(n*E-i*$-a*R)*q,e[10]=(h*S-_*y+v*A)*q,e[11]=(d*y-m*S-f*A)*q,e[12]=(o*z-s*D-c*R)*q,e[13]=(i*D-n*z+r*R)*q,e[14]=(_*k-h*b-g*A)*q,e[15]=(m*b-d*k+u*A)*q,e):null}function nx(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],m=t[8],d=t[9],u=t[10],f=t[11],h=t[12],_=t[13],g=t[14],v=t[15],A=i*o-n*s,k=i*c-r*s,y=i*l-a*s,b=n*c-r*o,S=n*l-a*o,x=r*l-a*c,R=m*_-d*h,z=m*g-u*h,E=m*v-f*h,D=d*g-u*_,$=d*v-f*_,j=u*v-f*g;return e[0]=o*j-c*$+l*D,e[1]=r*$-n*j-a*D,e[2]=_*x-g*S+v*b,e[3]=u*S-d*x-f*b,e[4]=c*E-s*j-l*z,e[5]=i*j-r*E+a*z,e[6]=g*y-h*x-v*k,e[7]=m*x-u*y+f*k,e[8]=s*$-o*E+l*R,e[9]=n*E-i*$-a*R,e[10]=h*S-_*y+v*A,e[11]=d*y-m*S-f*A,e[12]=o*z-s*D-c*R,e[13]=i*D-n*z+r*R,e[14]=_*k-h*b-g*A,e[15]=m*b-d*k+u*A,e}function rx(e){var t=e[0],i=e[1],n=e[2],r=e[3],a=e[4],s=e[5],o=e[6],c=e[7],l=e[8],m=e[9],d=e[10],u=e[11],f=e[12],h=e[13],_=e[14],g=e[15],v=t*s-i*a,A=t*o-n*a,k=i*o-n*s,y=l*h-m*f,b=l*_-d*f,S=m*_-d*h,x=t*S-i*b+n*y,R=a*S-s*b+o*y,z=l*k-m*A+d*v,E=f*k-h*A+_*v;return c*x-r*R+g*z-u*E}function Kg(e,t,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],c=t[5],l=t[6],m=t[7],d=t[8],u=t[9],f=t[10],h=t[11],_=t[12],g=t[13],v=t[14],A=t[15],k=i[0],y=i[1],b=i[2],S=i[3];return e[0]=k*n+y*o+b*d+S*_,e[1]=k*r+y*c+b*u+S*g,e[2]=k*a+y*l+b*f+S*v,e[3]=k*s+y*m+b*h+S*A,k=i[4],y=i[5],b=i[6],S=i[7],e[4]=k*n+y*o+b*d+S*_,e[5]=k*r+y*c+b*u+S*g,e[6]=k*a+y*l+b*f+S*v,e[7]=k*s+y*m+b*h+S*A,k=i[8],y=i[9],b=i[10],S=i[11],e[8]=k*n+y*o+b*d+S*_,e[9]=k*r+y*c+b*u+S*g,e[10]=k*a+y*l+b*f+S*v,e[11]=k*s+y*m+b*h+S*A,k=i[12],y=i[13],b=i[14],S=i[15],e[12]=k*n+y*o+b*d+S*_,e[13]=k*r+y*c+b*u+S*g,e[14]=k*a+y*l+b*f+S*v,e[15]=k*s+y*m+b*h+S*A,e}function ax(e,t,i){var n=i[0],r=i[1],a=i[2],s,o,c,l,m,d,u,f,h,_,g,v;return t===e?(e[12]=t[0]*n+t[4]*r+t[8]*a+t[12],e[13]=t[1]*n+t[5]*r+t[9]*a+t[13],e[14]=t[2]*n+t[6]*r+t[10]*a+t[14],e[15]=t[3]*n+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],c=t[2],l=t[3],m=t[4],d=t[5],u=t[6],f=t[7],h=t[8],_=t[9],g=t[10],v=t[11],e[0]=s,e[1]=o,e[2]=c,e[3]=l,e[4]=m,e[5]=d,e[6]=u,e[7]=f,e[8]=h,e[9]=_,e[10]=g,e[11]=v,e[12]=s*n+m*r+h*a+t[12],e[13]=o*n+d*r+_*a+t[13],e[14]=c*n+u*r+g*a+t[14],e[15]=l*n+f*r+v*a+t[15]),e}function sx(e,t,i){var n=i[0],r=i[1],a=i[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function ox(e,t,i,n){var r=n[0],a=n[1],s=n[2],o=Math.sqrt(r*r+a*a+s*s),c,l,m,d,u,f,h,_,g,v,A,k,y,b,S,x,R,z,E,D,$,j,q,be;return o<We?null:(o=1/o,r*=o,a*=o,s*=o,c=Math.sin(i),l=Math.cos(i),m=1-l,d=t[0],u=t[1],f=t[2],h=t[3],_=t[4],g=t[5],v=t[6],A=t[7],k=t[8],y=t[9],b=t[10],S=t[11],x=r*r*m+l,R=a*r*m+s*c,z=s*r*m-a*c,E=r*a*m-s*c,D=a*a*m+l,$=s*a*m+r*c,j=r*s*m+a*c,q=a*s*m-r*c,be=s*s*m+l,e[0]=d*x+_*R+k*z,e[1]=u*x+g*R+y*z,e[2]=f*x+v*R+b*z,e[3]=h*x+A*R+S*z,e[4]=d*E+_*D+k*$,e[5]=u*E+g*D+y*$,e[6]=f*E+v*D+b*$,e[7]=h*E+A*D+S*$,e[8]=d*j+_*q+k*be,e[9]=u*j+g*q+y*be,e[10]=f*j+v*q+b*be,e[11]=h*j+A*q+S*be,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function cx(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[4],s=t[5],o=t[6],c=t[7],l=t[8],m=t[9],d=t[10],u=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+l*n,e[5]=s*r+m*n,e[6]=o*r+d*n,e[7]=c*r+u*n,e[8]=l*r-a*n,e[9]=m*r-s*n,e[10]=d*r-o*n,e[11]=u*r-c*n,e}function lx(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[0],s=t[1],o=t[2],c=t[3],l=t[8],m=t[9],d=t[10],u=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-l*n,e[1]=s*r-m*n,e[2]=o*r-d*n,e[3]=c*r-u*n,e[8]=a*n+l*r,e[9]=s*n+m*r,e[10]=o*n+d*r,e[11]=c*n+u*r,e}function mx(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[0],s=t[1],o=t[2],c=t[3],l=t[4],m=t[5],d=t[6],u=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+l*n,e[1]=s*r+m*n,e[2]=o*r+d*n,e[3]=c*r+u*n,e[4]=l*r-a*n,e[5]=m*r-s*n,e[6]=d*r-o*n,e[7]=u*r-c*n,e}function dx(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function ux(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function fx(e,t,i){var n=i[0],r=i[1],a=i[2],s=Math.sqrt(n*n+r*r+a*a),o,c,l;return s<We?null:(s=1/s,n*=s,r*=s,a*=s,o=Math.sin(t),c=Math.cos(t),l=1-c,e[0]=n*n*l+c,e[1]=r*n*l+a*o,e[2]=a*n*l-r*o,e[3]=0,e[4]=n*r*l-a*o,e[5]=r*r*l+c,e[6]=a*r*l+n*o,e[7]=0,e[8]=n*a*l+r*o,e[9]=r*a*l-n*o,e[10]=a*a*l+c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function hx(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=i,e[7]=0,e[8]=0,e[9]=-i,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function gx(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-i,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=i,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function _x(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=i,e[2]=0,e[3]=0,e[4]=-i,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function $g(e,t,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=n+n,c=r+r,l=a+a,m=n*o,d=n*c,u=n*l,f=r*c,h=r*l,_=a*l,g=s*o,v=s*c,A=s*l;return e[0]=1-(f+_),e[1]=d+A,e[2]=u-v,e[3]=0,e[4]=d-A,e[5]=1-(m+_),e[6]=h+g,e[7]=0,e[8]=u+v,e[9]=h-g,e[10]=1-(m+f),e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function vx(e,t){var i=new Oi(3),n=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],c=t[5],l=t[6],m=t[7],d=n*n+r*r+a*a+s*s;return d>0?(i[0]=(o*s+m*n+c*a-l*r)*2/d,i[1]=(c*s+m*r+l*n-o*a)*2/d,i[2]=(l*s+m*a+o*r-c*n)*2/d):(i[0]=(o*s+m*n+c*a-l*r)*2,i[1]=(c*s+m*r+l*n-o*a)*2,i[2]=(l*s+m*a+o*r-c*n)*2),$g(e,t,i),e}function px(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Xg(e,t){var i=t[0],n=t[1],r=t[2],a=t[4],s=t[5],o=t[6],c=t[8],l=t[9],m=t[10];return e[0]=Math.sqrt(i*i+n*n+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(c*c+l*l+m*m),e}function wx(e,t){var i=new Oi(3);Xg(i,t);var n=1/i[0],r=1/i[1],a=1/i[2],s=t[0]*n,o=t[1]*r,c=t[2]*a,l=t[4]*n,m=t[5]*r,d=t[6]*a,u=t[8]*n,f=t[9]*r,h=t[10]*a,_=s+m+h,g=0;return _>0?(g=Math.sqrt(_+1)*2,e[3]=.25*g,e[0]=(d-f)/g,e[1]=(u-c)/g,e[2]=(o-l)/g):s>m&&s>h?(g=Math.sqrt(1+s-m-h)*2,e[3]=(d-f)/g,e[0]=.25*g,e[1]=(o+l)/g,e[2]=(u+c)/g):m>h?(g=Math.sqrt(1+m-s-h)*2,e[3]=(u-c)/g,e[0]=(o+l)/g,e[1]=.25*g,e[2]=(d+f)/g):(g=Math.sqrt(1+h-s-m)*2,e[3]=(o-l)/g,e[0]=(u+c)/g,e[1]=(d+f)/g,e[2]=.25*g),e}function yx(e,t,i,n){t[0]=n[12],t[1]=n[13],t[2]=n[14];var r=n[0],a=n[1],s=n[2],o=n[4],c=n[5],l=n[6],m=n[8],d=n[9],u=n[10];i[0]=Math.sqrt(r*r+a*a+s*s),i[1]=Math.sqrt(o*o+c*c+l*l),i[2]=Math.sqrt(m*m+d*d+u*u);var f=1/i[0],h=1/i[1],_=1/i[2],g=r*f,v=a*h,A=s*_,k=o*f,y=c*h,b=l*_,S=m*f,x=d*h,R=u*_,z=g+y+R,E=0;return z>0?(E=Math.sqrt(z+1)*2,e[3]=.25*E,e[0]=(b-x)/E,e[1]=(S-A)/E,e[2]=(v-k)/E):g>y&&g>R?(E=Math.sqrt(1+g-y-R)*2,e[3]=(b-x)/E,e[0]=.25*E,e[1]=(v+k)/E,e[2]=(S+A)/E):y>R?(E=Math.sqrt(1+y-g-R)*2,e[3]=(S-A)/E,e[0]=(v+k)/E,e[1]=.25*E,e[2]=(b+x)/E):(E=Math.sqrt(1+R-g-y)*2,e[3]=(v-k)/E,e[0]=(S+A)/E,e[1]=(b+x)/E,e[2]=.25*E),e}function Sx(e,t,i,n){var r=t[0],a=t[1],s=t[2],o=t[3],c=r+r,l=a+a,m=s+s,d=r*c,u=r*l,f=r*m,h=a*l,_=a*m,g=s*m,v=o*c,A=o*l,k=o*m,y=n[0],b=n[1],S=n[2];return e[0]=(1-(h+g))*y,e[1]=(u+k)*y,e[2]=(f-A)*y,e[3]=0,e[4]=(u-k)*b,e[5]=(1-(d+g))*b,e[6]=(_+v)*b,e[7]=0,e[8]=(f+A)*S,e[9]=(_-v)*S,e[10]=(1-(d+h))*S,e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function kx(e,t,i,n,r){var a=t[0],s=t[1],o=t[2],c=t[3],l=a+a,m=s+s,d=o+o,u=a*l,f=a*m,h=a*d,_=s*m,g=s*d,v=o*d,A=c*l,k=c*m,y=c*d,b=n[0],S=n[1],x=n[2],R=r[0],z=r[1],E=r[2],D=(1-(_+v))*b,$=(f+y)*b,j=(h-k)*b,q=(f-y)*S,be=(1-(u+v))*S,M=(g+A)*S,N=(h+k)*x,G=(g-A)*x,he=(1-(u+_))*x;return e[0]=D,e[1]=$,e[2]=j,e[3]=0,e[4]=q,e[5]=be,e[6]=M,e[7]=0,e[8]=N,e[9]=G,e[10]=he,e[11]=0,e[12]=i[0]+R-(D*R+q*z+N*E),e[13]=i[1]+z-($*R+be*z+G*E),e[14]=i[2]+E-(j*R+M*z+he*E),e[15]=1,e}function Ax(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=i+i,o=n+n,c=r+r,l=i*s,m=n*s,d=n*o,u=r*s,f=r*o,h=r*c,_=a*s,g=a*o,v=a*c;return e[0]=1-d-h,e[1]=m+v,e[2]=u-g,e[3]=0,e[4]=m-v,e[5]=1-l-h,e[6]=f+_,e[7]=0,e[8]=u+g,e[9]=f-_,e[10]=1-l-d,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function bx(e,t,i,n,r,a,s){var o=1/(i-t),c=1/(r-n),l=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*c,e[6]=0,e[7]=0,e[8]=(i+t)*o,e[9]=(r+n)*c,e[10]=(s+a)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*l,e[15]=0,e}function qg(e,t,i,n,r){var a=1/Math.tan(t/2);if(e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(n-r);e[10]=(r+n)*s,e[14]=2*r*n*s}else e[10]=-1,e[14]=-2*n;return e}var Ex=qg;function xx(e,t,i,n,r){var a=1/Math.tan(t/2);if(e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(n-r);e[10]=r*s,e[14]=r*n*s}else e[10]=-1,e[14]=-n;return e}function Mx(e,t,i,n){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),c=2/(s+o),l=2/(r+a);return e[0]=c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=l,e[6]=0,e[7]=0,e[8]=-((s-o)*c*.5),e[9]=(r-a)*l*.5,e[10]=n/(i-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*i/(i-n),e[15]=0,e}function Yg(e,t,i,n,r,a,s){var o=1/(t-i),c=1/(n-r),l=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+i)*o,e[13]=(r+n)*c,e[14]=(s+a)*l,e[15]=1,e}var Tx=Yg;function Rx(e,t,i,n,r,a,s){var o=1/(t-i),c=1/(n-r),l=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=l,e[11]=0,e[12]=(t+i)*o,e[13]=(r+n)*c,e[14]=a*l,e[15]=1,e}function Lx(e,t,i,n){var r,a,s,o,c,l,m,d,u,f,h=t[0],_=t[1],g=t[2],v=n[0],A=n[1],k=n[2],y=i[0],b=i[1],S=i[2];return Math.abs(h-y)<We&&Math.abs(_-b)<We&&Math.abs(g-S)<We?Wg(e):(m=h-y,d=_-b,u=g-S,f=1/Math.sqrt(m*m+d*d+u*u),m*=f,d*=f,u*=f,r=A*u-k*d,a=k*m-v*u,s=v*d-A*m,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=d*s-u*a,c=u*r-m*s,l=m*a-d*r,f=Math.sqrt(o*o+c*c+l*l),f?(f=1/f,o*=f,c*=f,l*=f):(o=0,c=0,l=0),e[0]=r,e[1]=o,e[2]=m,e[3]=0,e[4]=a,e[5]=c,e[6]=d,e[7]=0,e[8]=s,e[9]=l,e[10]=u,e[11]=0,e[12]=-(r*h+a*_+s*g),e[13]=-(o*h+c*_+l*g),e[14]=-(m*h+d*_+u*g),e[15]=1,e)}function zx(e,t,i,n){var r=t[0],a=t[1],s=t[2],o=n[0],c=n[1],l=n[2],m=r-i[0],d=a-i[1],u=s-i[2],f=m*m+d*d+u*u;f>0&&(f=1/Math.sqrt(f),m*=f,d*=f,u*=f);var h=c*u-l*d,_=l*m-o*u,g=o*d-c*m;return f=h*h+_*_+g*g,f>0&&(f=1/Math.sqrt(f),h*=f,_*=f,g*=f),e[0]=h,e[1]=_,e[2]=g,e[3]=0,e[4]=d*g-u*_,e[5]=u*h-m*g,e[6]=m*_-d*h,e[7]=0,e[8]=m,e[9]=d,e[10]=u,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function Nx(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function Ix(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Cx(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e[4]=t[4]+i[4],e[5]=t[5]+i[5],e[6]=t[6]+i[6],e[7]=t[7]+i[7],e[8]=t[8]+i[8],e[9]=t[9]+i[9],e[10]=t[10]+i[10],e[11]=t[11]+i[11],e[12]=t[12]+i[12],e[13]=t[13]+i[13],e[14]=t[14]+i[14],e[15]=t[15]+i[15],e}function Zg(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e[3]=t[3]-i[3],e[4]=t[4]-i[4],e[5]=t[5]-i[5],e[6]=t[6]-i[6],e[7]=t[7]-i[7],e[8]=t[8]-i[8],e[9]=t[9]-i[9],e[10]=t[10]-i[10],e[11]=t[11]-i[11],e[12]=t[12]-i[12],e[13]=t[13]-i[13],e[14]=t[14]-i[14],e[15]=t[15]-i[15],e}function Ox(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12]*i,e[13]=t[13]*i,e[14]=t[14]*i,e[15]=t[15]*i,e}function Px(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e[3]=t[3]+i[3]*n,e[4]=t[4]+i[4]*n,e[5]=t[5]+i[5]*n,e[6]=t[6]+i[6]*n,e[7]=t[7]+i[7]*n,e[8]=t[8]+i[8]*n,e[9]=t[9]+i[9]*n,e[10]=t[10]+i[10]*n,e[11]=t[11]+i[11]*n,e[12]=t[12]+i[12]*n,e[13]=t[13]+i[13]*n,e[14]=t[14]+i[14]*n,e[15]=t[15]+i[15]*n,e}function Fx(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Dx(e,t){var i=e[0],n=e[1],r=e[2],a=e[3],s=e[4],o=e[5],c=e[6],l=e[7],m=e[8],d=e[9],u=e[10],f=e[11],h=e[12],_=e[13],g=e[14],v=e[15],A=t[0],k=t[1],y=t[2],b=t[3],S=t[4],x=t[5],R=t[6],z=t[7],E=t[8],D=t[9],$=t[10],j=t[11],q=t[12],be=t[13],M=t[14],N=t[15];return Math.abs(i-A)<=We*Math.max(1,Math.abs(i),Math.abs(A))&&Math.abs(n-k)<=We*Math.max(1,Math.abs(n),Math.abs(k))&&Math.abs(r-y)<=We*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(a-b)<=We*Math.max(1,Math.abs(a),Math.abs(b))&&Math.abs(s-S)<=We*Math.max(1,Math.abs(s),Math.abs(S))&&Math.abs(o-x)<=We*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(c-R)<=We*Math.max(1,Math.abs(c),Math.abs(R))&&Math.abs(l-z)<=We*Math.max(1,Math.abs(l),Math.abs(z))&&Math.abs(m-E)<=We*Math.max(1,Math.abs(m),Math.abs(E))&&Math.abs(d-D)<=We*Math.max(1,Math.abs(d),Math.abs(D))&&Math.abs(u-$)<=We*Math.max(1,Math.abs(u),Math.abs($))&&Math.abs(f-j)<=We*Math.max(1,Math.abs(f),Math.abs(j))&&Math.abs(h-q)<=We*Math.max(1,Math.abs(h),Math.abs(q))&&Math.abs(_-be)<=We*Math.max(1,Math.abs(_),Math.abs(be))&&Math.abs(g-M)<=We*Math.max(1,Math.abs(g),Math.abs(M))&&Math.abs(v-N)<=We*Math.max(1,Math.abs(v),Math.abs(N))}var Bx=Kg,Ux=Zg,ge={};Pg(ge,{add:()=>Kx,angle:()=>hM,bezier:()=>sM,ceil:()=>$x,clone:()=>Gx,copy:()=>Vx,create:()=>jg,cross:()=>iM,dist:()=>kM,distance:()=>i1,div:()=>SM,divide:()=>t1,dot:()=>cd,equals:()=>pM,exactEquals:()=>vM,floor:()=>Xx,forEach:()=>xM,fromValues:()=>Hx,hermite:()=>aM,inverse:()=>eM,len:()=>bM,length:()=>Jg,lerp:()=>nM,max:()=>Yx,min:()=>qx,mul:()=>yM,multiply:()=>e1,negate:()=>Qx,normalize:()=>tM,random:()=>oM,rotateX:()=>dM,rotateY:()=>uM,rotateZ:()=>fM,round:()=>Zx,scale:()=>jx,scaleAndAdd:()=>Jx,set:()=>Wx,slerp:()=>rM,sqrDist:()=>AM,sqrLen:()=>EM,squaredDistance:()=>n1,squaredLength:()=>r1,str:()=>_M,sub:()=>wM,subtract:()=>Qg,transformMat3:()=>lM,transformMat4:()=>cM,transformQuat:()=>mM,zero:()=>gM});function jg(){var e=new Oi(3);return Oi!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Gx(e){var t=new Oi(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Jg(e){var t=e[0],i=e[1],n=e[2];return Math.sqrt(t*t+i*i+n*n)}function Hx(e,t,i){var n=new Oi(3);return n[0]=e,n[1]=t,n[2]=i,n}function Vx(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Wx(e,t,i,n){return e[0]=t,e[1]=i,e[2]=n,e}function Kx(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e}function Qg(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e}function e1(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e}function t1(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e[2]=t[2]/i[2],e}function $x(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Xx(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function qx(e,t,i){return e[0]=Math.min(t[0],i[0]),e[1]=Math.min(t[1],i[1]),e[2]=Math.min(t[2],i[2]),e}function Yx(e,t,i){return e[0]=Math.max(t[0],i[0]),e[1]=Math.max(t[1],i[1]),e[2]=Math.max(t[2],i[2]),e}function Zx(e,t){return e[0]=xm(t[0]),e[1]=xm(t[1]),e[2]=xm(t[2]),e}function jx(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function Jx(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e}function i1(e,t){var i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(i*i+n*n+r*r)}function n1(e,t){var i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return i*i+n*n+r*r}function r1(e){var t=e[0],i=e[1],n=e[2];return t*t+i*i+n*n}function Qx(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function eM(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function tM(e,t){var i=t[0],n=t[1],r=t[2],a=i*i+n*n+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function cd(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function iM(e,t,i){var n=t[0],r=t[1],a=t[2],s=i[0],o=i[1],c=i[2];return e[0]=r*c-a*o,e[1]=a*s-n*c,e[2]=n*o-r*s,e}function nM(e,t,i,n){var r=t[0],a=t[1],s=t[2];return e[0]=r+n*(i[0]-r),e[1]=a+n*(i[1]-a),e[2]=s+n*(i[2]-s),e}function rM(e,t,i,n){var r=Math.acos(Math.min(Math.max(cd(t,i),-1),1)),a=Math.sin(r),s=Math.sin((1-n)*r)/a,o=Math.sin(n*r)/a;return e[0]=s*t[0]+o*i[0],e[1]=s*t[1]+o*i[1],e[2]=s*t[2]+o*i[2],e}function aM(e,t,i,n,r,a){var s=a*a,o=s*(2*a-3)+1,c=s*(a-2)+a,l=s*(a-1),m=s*(3-2*a);return e[0]=t[0]*o+i[0]*c+n[0]*l+r[0]*m,e[1]=t[1]*o+i[1]*c+n[1]*l+r[1]*m,e[2]=t[2]*o+i[2]*c+n[2]*l+r[2]*m,e}function sM(e,t,i,n,r,a){var s=1-a,o=s*s,c=a*a,l=o*s,m=3*a*o,d=3*c*s,u=c*a;return e[0]=t[0]*l+i[0]*m+n[0]*d+r[0]*u,e[1]=t[1]*l+i[1]*m+n[1]*d+r[1]*u,e[2]=t[2]*l+i[2]*m+n[2]*d+r[2]*u,e}function oM(e,t){t=t===void 0?1:t;var i=K0()*2*Math.PI,n=K0()*2-1,r=Math.sqrt(1-n*n)*t;return e[0]=Math.cos(i)*r,e[1]=Math.sin(i)*r,e[2]=n*t,e}function cM(e,t,i){var n=t[0],r=t[1],a=t[2],s=i[3]*n+i[7]*r+i[11]*a+i[15];return s=s||1,e[0]=(i[0]*n+i[4]*r+i[8]*a+i[12])/s,e[1]=(i[1]*n+i[5]*r+i[9]*a+i[13])/s,e[2]=(i[2]*n+i[6]*r+i[10]*a+i[14])/s,e}function lM(e,t,i){var n=t[0],r=t[1],a=t[2];return e[0]=n*i[0]+r*i[3]+a*i[6],e[1]=n*i[1]+r*i[4]+a*i[7],e[2]=n*i[2]+r*i[5]+a*i[8],e}function mM(e,t,i){var n=i[0],r=i[1],a=i[2],s=i[3],o=t[0],c=t[1],l=t[2],m=r*l-a*c,d=a*o-n*l,u=n*c-r*o;return m=m+m,d=d+d,u=u+u,e[0]=o+s*m+r*u-a*d,e[1]=c+s*d+a*m-n*u,e[2]=l+s*u+n*d-r*m,e}function dM(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[0],a[1]=r[1]*Math.cos(n)-r[2]*Math.sin(n),a[2]=r[1]*Math.sin(n)+r[2]*Math.cos(n),e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function uM(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[2]*Math.sin(n)+r[0]*Math.cos(n),a[1]=r[1],a[2]=r[2]*Math.cos(n)-r[0]*Math.sin(n),e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function fM(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[0]*Math.cos(n)-r[1]*Math.sin(n),a[1]=r[0]*Math.sin(n)+r[1]*Math.cos(n),a[2]=r[2],e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function hM(e,t){var i=e[0],n=e[1],r=e[2],a=t[0],s=t[1],o=t[2],c=Math.sqrt((i*i+n*n+r*r)*(a*a+s*s+o*o)),l=c&&cd(e,t)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function gM(e){return e[0]=0,e[1]=0,e[2]=0,e}function _M(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function vM(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function pM(e,t){var i=e[0],n=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(i-a)<=We*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(n-s)<=We*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(r-o)<=We*Math.max(1,Math.abs(r),Math.abs(o))}var wM=Qg,yM=e1,SM=t1,kM=i1,AM=n1,bM=Jg,EM=r1,xM=(function(){var e=jg();return function(t,i,n,r,a,s){var o,c;for(i||(i=3),n||(n=0),r?c=Math.min(r*i+n,t.length):c=t.length,o=n;o<c;o+=i)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})(),a1=class{constructor(){this._position=ge.create(),this._angles=ge.create(),this._bobAngles=ge.create(),this._bobOffset=ge.create(),this._kickAngles=ge.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=ot.create(),this._projectionMatrix=ot.create(),this._viewProjectionMatrix=ot.create(),this._dirty=!0}get position(){return this._position}set position(e){ge.equals(this._position,e)||(ge.copy(this._position,e),this._dirty=!0,this.triggerMoveEvent())}get angles(){return this._angles}set angles(e){ge.equals(this._angles,e)||(ge.copy(this._angles,e),this._dirty=!0,this.triggerMoveEvent())}get bobAngles(){return this._bobAngles}set bobAngles(e){ge.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){ge.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){ge.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}setPosition(e,t,i){let n=ge.fromValues(e,t,i);ge.equals(this._position,n)||(ge.copy(this._position,n),this._dirty=!0,this.triggerMoveEvent())}setRotation(e,t,i){let n=ge.fromValues(e,t,i);ge.equals(this._angles,n)||(ge.copy(this._angles,n),this._dirty=!0,this.triggerMoveEvent())}setFov(e){this.fov=e}setAspectRatio(e){this.aspect=e}lookAt(e){let t=ge.create();if(ge.subtract(t,e,this._position),ge.length(t)<.001)return;let n=Math.atan2(t[1],t[0])*W0,r=Math.hypot(t[0],t[1]),a=-Math.atan2(t[2],r)*W0;this.setRotation(a,n,0)}triggerMoveEvent(){this.onCameraMove&&this.onCameraMove({position:ge.clone(this._position),angles:ge.clone(this._angles)})}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=ot.create();return ot.perspective(t,e*$a,this._aspect,this._near,this._far),t}screenToWorldRay(e,t){let i=e*2-1,n=1-t*2,r=ge.fromValues(i,n,-1),a=ge.fromValues(i,n,1),s=ot.create();ot.invert(s,this.viewProjectionMatrix);let o=ge.create(),c=ge.create();ge.transformMat4(o,r,s),ge.transformMat4(c,a,s);let l=ge.create();return ge.subtract(l,c,o),ge.normalize(l,l),{origin:ge.clone(this._position),direction:l}}updateMatrices(){if(!this._dirty)return;ot.perspective(this._projectionMatrix,this._fov*$a,this._aspect,this._near,this._far);let e=ot.fromValues(0,0,-1,0,-1,0,0,0,0,1,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],i=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],n=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*$a,a=i*$a,s=n*$a,o=ot.create();ot.identity(o),ot.rotateZ(o,o,-a),ot.rotateY(o,o,-r),ot.rotateX(o,o,-s);let c=ot.create();ot.multiply(c,e,o);let l=ge.add(ge.create(),this._position,this._bobOffset),m=ge.negate(ge.create(),l),d=ge.create();ge.transformMat4(d,m,o);let u=ge.fromValues(d[1]?-d[1]:0,d[2]||0,d[0]?-d[0]:0);ot.copy(this._viewMatrix,c),this._viewMatrix[12]=u[0],this._viewMatrix[13]=u[1],this._viewMatrix[14]=u[2],ot.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};function s1(e){let{system:t,origin:i,normal:n={x:0,y:0,z:1}}=e;for(let r=0;r<12;r+=1){let a=200+t.rng.frandom()*180,s=t.rng.frandom()*.35;t.spawn({position:i,velocity:{x:n.x*a+(t.rng.frandom()-.5)*80,y:n.y*a+(t.rng.frandom()-.5)*80,z:Math.max(n.z*a,120)+s*80},color:[1,.8,.4,1],size:2.5,lifetime:.45+t.rng.frandom()*.1,gravity:600,damping:2,bounce:.45,blendMode:"additive",fade:!0})}for(let r=0;r<8;r+=1)t.spawn({position:i,velocity:{x:(t.rng.frandom()-.5)*40,y:(t.rng.frandom()-.5)*40,z:80+t.rng.frandom()*40},color:[.45,.45,.45,.75],size:6,lifetime:.6,gravity:200,damping:4,bounce:.15,blendMode:"alpha",fade:!0})}function o1(e){let{system:t,origin:i}=e;for(let n=0;n<40;n+=1){let r=t.rng.frandom()*Math.PI*2,a=Math.acos(2*t.rng.frandom()-1),s=220+t.rng.frandom()*260,o={x:Math.sin(a)*Math.cos(r),y:Math.sin(a)*Math.sin(r),z:Math.cos(a)};t.spawn({position:i,velocity:{x:o.x*s,y:o.y*s,z:o.z*s},color:[1,.6,.2,1],size:5,lifetime:.9,gravity:700,damping:1,bounce:.35,blendMode:"additive",fade:!0})}for(let n=0;n<16;n+=1)t.spawn({position:i,velocity:{x:(t.rng.frandom()-.5)*30,y:(t.rng.frandom()-.5)*30,z:120+t.rng.frandom()*120},color:[.25,.25,.25,.9],size:12,lifetime:1.2,gravity:300,damping:3,blendMode:"alpha",fade:!0})}function c1(e){let{system:t,origin:i,direction:n={x:0,y:0,z:1}}=e;for(let r=0;r<24;r+=1){let a=120+t.rng.frandom()*180;t.spawn({position:i,velocity:{x:n.x*a+(t.rng.frandom()-.5)*70,y:n.y*a+(t.rng.frandom()-.5)*70,z:n.z*a+t.rng.frandom()*80},color:[.6,0,0,.95],size:3,lifetime:.8,gravity:900,damping:1,bounce:.2,blendMode:"alpha",fade:!0})}}function l1(e){let{system:t,origin:i,direction:n={x:1,y:0,z:0}}=e;for(let r=0;r<10;r+=1){let a=350+t.rng.frandom()*100;t.spawn({position:i,velocity:{x:n.x*a+(t.rng.frandom()-.5)*30,y:n.y*a+(t.rng.frandom()-.5)*30,z:n.z*a+(t.rng.frandom()-.5)*30},color:[1,.8,.3,1],size:3,lifetime:.25,gravity:200,damping:1,blendMode:"additive",fade:!0})}}function m1(e){let{system:t,origin:i,normal:n={x:0,y:0,z:1}}=e;for(let r=0;r<30;r+=1){let a=100+t.rng.frandom()*150;t.spawn({position:i,velocity:{x:n.x*a+(t.rng.frandom()-.5)*80,y:n.y*a+(t.rng.frandom()-.5)*80,z:100+t.rng.frandom()*120},color:[.5,.6,.8,.5],size:3,lifetime:.5+t.rng.frandom()*.3,gravity:800,damping:1.5,blendMode:"alpha",fade:!0})}}function d1(e){let{system:t,origin:i}=e;for(let n=0;n<8;n+=1)t.spawn({position:{x:i.x+(t.rng.frandom()-.5)*10,y:i.y+(t.rng.frandom()-.5)*10,z:i.z+(t.rng.frandom()-.5)*10},velocity:{x:(t.rng.frandom()-.5)*20,y:(t.rng.frandom()-.5)*20,z:40+t.rng.frandom()*20},color:[.8,.8,.8,.3],size:5+t.rng.frandom()*4,lifetime:1.5+t.rng.frandom()*.5,gravity:-50,damping:.5,blendMode:"alpha",fade:!0})}function u1(e){let{system:t,start:i,end:n}=e,r=n.x-i.x,a=n.y-i.y,s=n.z-i.z,o=Math.sqrt(r*r+a*a+s*s);if(o<1)return;let c={x:r/o,y:a/o,z:s/o},l=8;for(let m=0;m<o;m+=l){let d=i.x+c.x*m,u=i.y+c.y*m,f=i.z+c.z*m;t.spawn({position:{x:d,y:u,z:f},velocity:{x:0,y:0,z:0},color:[.4,.4,1,.8],size:2,lifetime:.6,blendMode:"additive",fade:!0});let h=3,_=m*.5;t.spawn({position:{x:d+(t.rng.frandom()-.5)*6,y:u+(t.rng.frandom()-.5)*6,z:f+(t.rng.frandom()-.5)*6},velocity:{x:(t.rng.frandom()-.5)*10,y:(t.rng.frandom()-.5)*10,z:(t.rng.frandom()-.5)*10},color:[.1,.1,.8,.6],size:3,lifetime:.8+t.rng.frandom()*.2,blendMode:"additive",fade:!0})}}function ld(e){let{system:t,origin:i,normal:n={x:0,y:0,z:1},count:r=12,color:a=[1,.9,.2,1]}=e;for(let s=0;s<r;s++){let o=100+t.rng.frandom()*200,c=.5;t.spawn({position:i,velocity:{x:n.x*o+(t.rng.frandom()-.5)*100*c,y:n.y*o+(t.rng.frandom()-.5)*100*c,z:n.z*o+(t.rng.frandom()-.5)*100*c},color:a,size:1.5,lifetime:.3+t.rng.frandom()*.2,gravity:800,bounce:.5,damping:1,blendMode:"additive",fade:!0})}}function md(e){let{system:t,origin:i,normal:n={x:0,y:0,z:1},color:r=[1,.8,0,1]}=e;t.spawn({position:i,velocity:{x:0,y:0,z:0},color:r,size:8,lifetime:.2,blendMode:"additive",fade:!0});for(let a=0;a<8;a++){let s=150+t.rng.frandom()*150;t.spawn({position:i,velocity:{x:n.x*s+(t.rng.frandom()-.5)*120,y:n.y*s+(t.rng.frandom()-.5)*120,z:n.z*s+(t.rng.frandom()-.5)*120},color:r,size:2,lifetime:.4+t.rng.frandom()*.2,gravity:400,blendMode:"additive",fade:!0})}}function f1(e){let{system:t,origin:i}=e;t.spawn({position:i,velocity:{x:0,y:0,z:0},color:[.2,1,.2,1],size:30,lifetime:.5,blendMode:"additive",fade:!0});for(let n=0;n<60;n++){let r=t.rng.frandom()*Math.PI*2,a=Math.acos(2*t.rng.frandom()-1),s=300+t.rng.frandom()*400,o={x:Math.sin(a)*Math.cos(r),y:Math.sin(a)*Math.sin(r),z:Math.cos(a)};t.spawn({position:i,velocity:{x:o.x*s,y:o.y*s,z:o.z*s},color:[.2,1,.2,.8],size:4,lifetime:1,gravity:100,damping:1,blendMode:"additive",fade:!0})}}var h1=class{constructor(e){this.messageOffsets=[],this.currentBlock=null,this.buffer=e,this.view=new DataView(e),this.offset=0,this.scan()}scan(){let e=0;for(this.messageOffsets=[];e+4<=this.buffer.byteLength;){let t=this.view.getInt32(e,!0);if(t===-1)break;if(t<0||t>2097152){console.warn(`DemoReader: Invalid block length ${t} at offset ${e} during scan`);break}if(e+4+t>this.buffer.byteLength){console.warn(`DemoReader: Incomplete block at offset ${e} during scan`);break}this.messageOffsets.push(e),e+=4+t}}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(e===-1||e<0||this.offset+4+e>this.buffer.byteLength)return null;this.offset+=4;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new xo(t)}}nextBlock(){let e=this.readNextBlock();return e?(this.currentBlock=e,!0):(this.currentBlock=null,!1)}getBlock(){if(!this.currentBlock)throw new Error("No current block. Call nextBlock() first.");return this.currentBlock}readAllBlocksToBuffer(){let e=0,t=this.offset,i=[],n=this.offset;for(;n+4<=this.buffer.byteLength;){let o=this.view.getInt32(n,!0);if(o===-1||o<0||n+4+o>this.buffer.byteLength)break;i.push({offset:n+4,length:o}),e+=o,n+=4+o}let r=new Uint8Array(e),a=0,s=new Uint8Array(this.buffer);for(let o of i)r.set(s.subarray(o.offset,o.offset+o.length),a),a+=o.length;return this.offset=n,r.buffer}reset(){this.offset=0,this.currentBlock=null}seekToMessage(e){return e<0||e>=this.messageOffsets.length?!1:(this.offset=this.messageOffsets[e],this.currentBlock=null,!0)}getMessageCount(){return this.messageOffsets.length}getOffset(){return this.offset}getProgress(){let e=this.offset,t=this.buffer.byteLength;return{current:e,total:t,percent:t>0?e/t*100:0}}},MM=4,$0=0,X0=1,TM=2;function Nr(e){let t=e.length;for(;--t>=0;)e[t]=0}var RM=0,g1=1,LM=2,zM=3,NM=258,dd=29,cs=256,es=cs+1+dd,Tr=30,ud=19,_1=2*es+1,Yn=15,Mm=16,IM=7,fd=256,v1=16,p1=17,w1=18,Vm=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Mo=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),CM=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),y1=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),OM=512,en=new Array((es+2)*2);Nr(en);var Za=new Array(Tr*2);Nr(Za);var ts=new Array(OM);Nr(ts);var is=new Array(NM-zM+1);Nr(is);var hd=new Array(dd);Nr(hd);var To=new Array(Tr);Nr(To);function Tm(e,t,i,n,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=r,this.has_stree=e&&e.length}var S1,k1,A1;function Rm(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var b1=e=>e<256?ts[e]:ts[256+(e>>>7)],ns=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ft=(e,t,i)=>{e.bi_valid>Mm-i?(e.bi_buf|=t<<e.bi_valid&65535,ns(e,e.bi_buf),e.bi_buf=t>>Mm-e.bi_valid,e.bi_valid+=i-Mm):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},Ni=(e,t,i)=>{Ft(e,i[t*2],i[t*2+1])},E1=(e,t)=>{let i=0;do i|=e&1,e>>>=1,i<<=1;while(--t>0);return i>>>1},PM=e=>{e.bi_valid===16?(ns(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},FM=(e,t)=>{let i=t.dyn_tree,n=t.max_code,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,c=t.stat_desc.max_length,l,m,d,u,f,h,_=0;for(u=0;u<=Yn;u++)e.bl_count[u]=0;for(i[e.heap[e.heap_max]*2+1]=0,l=e.heap_max+1;l<_1;l++)m=e.heap[l],u=i[i[m*2+1]*2+1]+1,u>c&&(u=c,_++),i[m*2+1]=u,!(m>n)&&(e.bl_count[u]++,f=0,m>=o&&(f=s[m-o]),h=i[m*2],e.opt_len+=h*(u+f),a&&(e.static_len+=h*(r[m*2+1]+f)));if(_!==0){do{for(u=c-1;e.bl_count[u]===0;)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[c]--,_-=2}while(_>0);for(u=c;u!==0;u--)for(m=e.bl_count[u];m!==0;)d=e.heap[--l],!(d>n)&&(i[d*2+1]!==u&&(e.opt_len+=(u-i[d*2+1])*i[d*2],i[d*2+1]=u),m--)}},x1=(e,t,i)=>{let n=new Array(Yn+1),r=0,a,s;for(a=1;a<=Yn;a++)r=r+i[a-1]<<1,n[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=E1(n[o]++,o))}},DM=()=>{let e,t,i,n,r,a=new Array(Yn+1);for(i=0,n=0;n<dd-1;n++)for(hd[n]=i,e=0;e<1<<Vm[n];e++)is[i++]=n;for(is[i-1]=n,r=0,n=0;n<16;n++)for(To[n]=r,e=0;e<1<<Mo[n];e++)ts[r++]=n;for(r>>=7;n<Tr;n++)for(To[n]=r<<7,e=0;e<1<<Mo[n]-7;e++)ts[256+r++]=n;for(t=0;t<=Yn;t++)a[t]=0;for(e=0;e<=143;)en[e*2+1]=8,e++,a[8]++;for(;e<=255;)en[e*2+1]=9,e++,a[9]++;for(;e<=279;)en[e*2+1]=7,e++,a[7]++;for(;e<=287;)en[e*2+1]=8,e++,a[8]++;for(x1(en,es+1,a),e=0;e<Tr;e++)Za[e*2+1]=5,Za[e*2]=E1(e,5);S1=new Tm(en,Vm,cs+1,es,Yn),k1=new Tm(Za,Mo,0,Tr,Yn),A1=new Tm(new Array(0),CM,0,ud,IM)},M1=e=>{let t;for(t=0;t<es;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Tr;t++)e.dyn_dtree[t*2]=0;for(t=0;t<ud;t++)e.bl_tree[t*2]=0;e.dyn_ltree[fd*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},T1=e=>{e.bi_valid>8?ns(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},q0=(e,t,i,n)=>{let r=t*2,a=i*2;return e[r]<e[a]||e[r]===e[a]&&n[t]<=n[i]},Lm=(e,t,i)=>{let n=e.heap[i],r=i<<1;for(;r<=e.heap_len&&(r<e.heap_len&&q0(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!q0(t,n,e.heap[r],e.depth));)e.heap[i]=e.heap[r],i=r,r<<=1;e.heap[i]=n},Y0=(e,t,i)=>{let n,r,a=0,s,o;if(e.sym_next!==0)do n=e.pending_buf[e.sym_buf+a++]&255,n+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],n===0?Ni(e,r,t):(s=is[r],Ni(e,s+cs+1,t),o=Vm[s],o!==0&&(r-=hd[s],Ft(e,r,o)),n--,s=b1(n),Ni(e,s,i),o=Mo[s],o!==0&&(n-=To[s],Ft(e,n,o)));while(a<e.sym_next);Ni(e,fd,t)},Wm=(e,t)=>{let i=t.dyn_tree,n=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,c=-1,l;for(e.heap_len=0,e.heap_max=_1,s=0;s<a;s++)i[s*2]!==0?(e.heap[++e.heap_len]=c=s,e.depth[s]=0):i[s*2+1]=0;for(;e.heap_len<2;)l=e.heap[++e.heap_len]=c<2?++c:0,i[l*2]=1,e.depth[l]=0,e.opt_len--,r&&(e.static_len-=n[l*2+1]);for(t.max_code=c,s=e.heap_len>>1;s>=1;s--)Lm(e,i,s);l=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Lm(e,i,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,i[l*2]=i[s*2]+i[o*2],e.depth[l]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,i[s*2+1]=i[o*2+1]=l,e.heap[1]=l++,Lm(e,i,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],FM(e,t),x1(i,c,e.bl_count)},Z0=(e,t,i)=>{let n,r=-1,a,s=t[1],o=0,c=7,l=4;for(s===0&&(c=138,l=3),t[(i+1)*2+1]=65535,n=0;n<=i;n++)a=s,s=t[(n+1)*2+1],!(++o<c&&a===s)&&(o<l?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[v1*2]++):o<=10?e.bl_tree[p1*2]++:e.bl_tree[w1*2]++,o=0,r=a,s===0?(c=138,l=3):a===s?(c=6,l=3):(c=7,l=4))},j0=(e,t,i)=>{let n,r=-1,a,s=t[1],o=0,c=7,l=4;for(s===0&&(c=138,l=3),n=0;n<=i;n++)if(a=s,s=t[(n+1)*2+1],!(++o<c&&a===s)){if(o<l)do Ni(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(Ni(e,a,e.bl_tree),o--),Ni(e,v1,e.bl_tree),Ft(e,o-3,2)):o<=10?(Ni(e,p1,e.bl_tree),Ft(e,o-3,3)):(Ni(e,w1,e.bl_tree),Ft(e,o-11,7));o=0,r=a,s===0?(c=138,l=3):a===s?(c=6,l=3):(c=7,l=4)}},BM=e=>{let t;for(Z0(e,e.dyn_ltree,e.l_desc.max_code),Z0(e,e.dyn_dtree,e.d_desc.max_code),Wm(e,e.bl_desc),t=ud-1;t>=3&&e.bl_tree[y1[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},UM=(e,t,i,n)=>{let r;for(Ft(e,t-257,5),Ft(e,i-1,5),Ft(e,n-4,4),r=0;r<n;r++)Ft(e,e.bl_tree[y1[r]*2+1],3);j0(e,e.dyn_ltree,t-1),j0(e,e.dyn_dtree,i-1)},GM=e=>{let t=4093624447,i;for(i=0;i<=31;i++,t>>>=1)if(t&1&&e.dyn_ltree[i*2]!==0)return $0;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return X0;for(i=32;i<cs;i++)if(e.dyn_ltree[i*2]!==0)return X0;return $0},J0=!1,HM=e=>{J0||(DM(),J0=!0),e.l_desc=new Rm(e.dyn_ltree,S1),e.d_desc=new Rm(e.dyn_dtree,k1),e.bl_desc=new Rm(e.bl_tree,A1),e.bi_buf=0,e.bi_valid=0,M1(e)},R1=(e,t,i,n)=>{Ft(e,(RM<<1)+(n?1:0),3),T1(e),ns(e,i),ns(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i},VM=e=>{Ft(e,g1<<1,3),Ni(e,fd,en),PM(e)},WM=(e,t,i,n)=>{let r,a,s=0;e.level>0?(e.strm.data_type===TM&&(e.strm.data_type=GM(e)),Wm(e,e.l_desc),Wm(e,e.d_desc),s=BM(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=i+5,i+4<=r&&t!==-1?R1(e,t,i,n):e.strategy===MM||a===r?(Ft(e,(g1<<1)+(n?1:0),3),Y0(e,en,Za)):(Ft(e,(LM<<1)+(n?1:0),3),UM(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),Y0(e,e.dyn_ltree,e.dyn_dtree)),M1(e),n&&T1(e)},KM=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,t===0?e.dyn_ltree[i*2]++:(e.matches++,t--,e.dyn_ltree[(is[i]+cs+1)*2]++,e.dyn_dtree[b1(t)*2]++),e.sym_next===e.sym_end),$M=HM,XM=R1,qM=WM,YM=KM,ZM=VM,jM={_tr_init:$M,_tr_stored_block:XM,_tr_flush_block:qM,_tr_tally:YM,_tr_align:ZM},JM=(e,t,i,n)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;i!==0;){s=i>2e3?2e3:i,i-=s;do r=r+t[n++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},rs=JM,QM=()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[i]=e}return t},eT=new Uint32Array(QM()),tT=(e,t,i,n)=>{let r=eT,a=n+i;e^=-1;for(let s=n;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},_t=tT,Jn={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},tr={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:iT,_tr_stored_block:Km,_tr_flush_block:nT,_tr_tally:Sn,_tr_align:rT}=jM,{Z_NO_FLUSH:kn,Z_PARTIAL_FLUSH:aT,Z_FULL_FLUSH:sT,Z_FINISH:ai,Z_BLOCK:Q0,Z_OK:wt,Z_STREAM_END:eg,Z_STREAM_ERROR:Ii,Z_DATA_ERROR:oT,Z_BUF_ERROR:zm,Z_DEFAULT_COMPRESSION:cT,Z_FILTERED:lT,Z_HUFFMAN_ONLY:So,Z_RLE:mT,Z_FIXED:dT,Z_DEFAULT_STRATEGY:uT,Z_UNKNOWN:fT,Z_DEFLATED:Co}=tr,hT=9,gT=15,_T=8,vT=29,pT=256,$m=pT+1+vT,wT=30,yT=19,ST=2*$m+1,kT=15,xe=3,yn=258,Ci=yn+xe+1,AT=32,Lr=42,gd=57,Xm=69,qm=73,Ym=91,Zm=103,Zn=113,qa=666,Rt=1,Ir=2,Qn=3,Cr=4,bT=3,jn=(e,t)=>(e.msg=Jn[t],t),tg=e=>e*2-(e>4?9:0),wn=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ET=e=>{let t,i,n,r=e.w_size;t=e.hash_size,n=t;do i=e.head[--n],e.head[n]=i>=r?i-r:0;while(--t);t=r,n=t;do i=e.prev[--n],e.prev[n]=i>=r?i-r:0;while(--t)},xT=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask,An=xT,Kt=e=>{let t=e.state,i=t.pending;i>e.avail_out&&(i=e.avail_out),i!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,t.pending===0&&(t.pending_out=0))},$t=(e,t)=>{nT(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Kt(e.strm)},ze=(e,t)=>{e.pending_buf[e.pending++]=t},Xa=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},jm=(e,t,i,n)=>{let r=e.avail_in;return r>n&&(r=n),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),e.state.wrap===1?e.adler=rs(e.adler,t,r,i):e.state.wrap===2&&(e.adler=_t(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},L1=(e,t)=>{let i=e.max_chain_length,n=e.strstart,r,a,s=e.prev_length,o=e.nice_match,c=e.strstart>e.w_size-Ci?e.strstart-(e.w_size-Ci):0,l=e.window,m=e.w_mask,d=e.prev,u=e.strstart+yn,f=l[n+s-1],h=l[n+s];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(l[r+s]!==h||l[r+s-1]!==f||l[r]!==l[n]||l[++r]!==l[n+1])){n+=2,r++;do;while(l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&n<u);if(a=yn-(u-n),n=u-yn,a>s){if(e.match_start=t,s=a,a>=o)break;f=l[n+s-1],h=l[n+s]}}while((t=d[t&m])>c&&--i!==0);return s<=e.lookahead?s:e.lookahead},zr=e=>{let t=e.w_size,i,n,r;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ci)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ET(e),n+=t),e.strm.avail_in===0)break;if(i=jm(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=xe)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=An(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=An(e,e.ins_h,e.window[r+xe-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<xe)););}while(e.lookahead<Ci&&e.strm.avail_in!==0)},z1=(e,t)=>{let i=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n,r,a,s=0,o=e.strm.avail_in;do{if(n=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,n>r+e.strm.avail_in&&(n=r+e.strm.avail_in),n>a&&(n=a),n<i&&(n===0&&t!==ai||t===kn||n!==r+e.strm.avail_in)))break;s=t===ai&&n===r+e.strm.avail_in?1:0,Km(e,0,0,s),e.pending_buf[e.pending-4]=n,e.pending_buf[e.pending-3]=n>>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Kt(e.strm),r&&(r>n&&(r=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,n-=r),n&&(jm(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?Cr:t!==kn&&t!==ai&&e.strm.avail_in===0&&e.strstart===e.block_start?Ir:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(jm(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,i=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=i||(r||t===ai)&&t!==kn&&e.strm.avail_in===0&&r<=a)&&(n=r>a?a:r,s=t===ai&&e.strm.avail_in===0&&n===r?1:0,Km(e,e.block_start,n,s),e.block_start+=n,Kt(e.strm)),s?Qn:Rt)},Nm=(e,t)=>{let i,n;for(;;){if(e.lookahead<Ci){if(zr(e),e.lookahead<Ci&&t===kn)return Rt;if(e.lookahead===0)break}if(i=0,e.lookahead>=xe&&(e.ins_h=An(e,e.ins_h,e.window[e.strstart+xe-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),i!==0&&e.strstart-i<=e.w_size-Ci&&(e.match_length=L1(e,i)),e.match_length>=xe)if(n=Sn(e,e.strstart-e.match_start,e.match_length-xe),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=xe){e.match_length--;do e.strstart++,e.ins_h=An(e,e.ins_h,e.window[e.strstart+xe-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=An(e,e.ins_h,e.window[e.strstart+1]);else n=Sn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&($t(e,!1),e.strm.avail_out===0))return Rt}return e.insert=e.strstart<xe-1?e.strstart:xe-1,t===ai?($t(e,!0),e.strm.avail_out===0?Qn:Cr):e.sym_next&&($t(e,!1),e.strm.avail_out===0)?Rt:Ir},br=(e,t)=>{let i,n,r;for(;;){if(e.lookahead<Ci){if(zr(e),e.lookahead<Ci&&t===kn)return Rt;if(e.lookahead===0)break}if(i=0,e.lookahead>=xe&&(e.ins_h=An(e,e.ins_h,e.window[e.strstart+xe-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=xe-1,i!==0&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-Ci&&(e.match_length=L1(e,i),e.match_length<=5&&(e.strategy===lT||e.match_length===xe&&e.strstart-e.match_start>4096)&&(e.match_length=xe-1)),e.prev_length>=xe&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-xe,n=Sn(e,e.strstart-1-e.prev_match,e.prev_length-xe),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=An(e,e.ins_h,e.window[e.strstart+xe-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=xe-1,e.strstart++,n&&($t(e,!1),e.strm.avail_out===0))return Rt}else if(e.match_available){if(n=Sn(e,0,e.window[e.strstart-1]),n&&$t(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Rt}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=Sn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<xe-1?e.strstart:xe-1,t===ai?($t(e,!0),e.strm.avail_out===0?Qn:Cr):e.sym_next&&($t(e,!1),e.strm.avail_out===0)?Rt:Ir},MT=(e,t)=>{let i,n,r,a,s=e.window;for(;;){if(e.lookahead<=yn){if(zr(e),e.lookahead<=yn&&t===kn)return Rt;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=xe&&e.strstart>0&&(r=e.strstart-1,n=s[r],n===s[++r]&&n===s[++r]&&n===s[++r])){a=e.strstart+yn;do;while(n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&r<a);e.match_length=yn-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=xe?(i=Sn(e,1,e.match_length-xe),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=Sn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&($t(e,!1),e.strm.avail_out===0))return Rt}return e.insert=0,t===ai?($t(e,!0),e.strm.avail_out===0?Qn:Cr):e.sym_next&&($t(e,!1),e.strm.avail_out===0)?Rt:Ir},TT=(e,t)=>{let i;for(;;){if(e.lookahead===0&&(zr(e),e.lookahead===0)){if(t===kn)return Rt;break}if(e.match_length=0,i=Sn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&($t(e,!1),e.strm.avail_out===0))return Rt}return e.insert=0,t===ai?($t(e,!0),e.strm.avail_out===0?Qn:Cr):e.sym_next&&($t(e,!1),e.strm.avail_out===0)?Rt:Ir};function zi(e,t,i,n,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=r}var Ya=[new zi(0,0,0,0,z1),new zi(4,4,8,4,Nm),new zi(4,5,16,8,Nm),new zi(4,6,32,32,Nm),new zi(4,4,16,16,br),new zi(8,16,32,32,br),new zi(8,16,128,128,br),new zi(8,32,128,256,br),new zi(32,128,258,1024,br),new zi(32,258,258,4096,br)],RT=e=>{e.window_size=2*e.w_size,wn(e.head),e.max_lazy_match=Ya[e.level].max_lazy,e.good_match=Ya[e.level].good_length,e.nice_match=Ya[e.level].nice_length,e.max_chain_length=Ya[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=xe-1,e.match_available=0,e.ins_h=0};function LT(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Co,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(ST*2),this.dyn_dtree=new Uint16Array((2*wT+1)*2),this.bl_tree=new Uint16Array((2*yT+1)*2),wn(this.dyn_ltree),wn(this.dyn_dtree),wn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(kT+1),this.heap=new Uint16Array(2*$m+1),wn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*$m+1),wn(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var ls=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Lr&&t.status!==gd&&t.status!==Xm&&t.status!==qm&&t.status!==Ym&&t.status!==Zm&&t.status!==Zn&&t.status!==qa?1:0},N1=e=>{if(ls(e))return jn(e,Ii);e.total_in=e.total_out=0,e.data_type=fT;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?gd:t.wrap?Lr:Zn,e.adler=t.wrap===2?0:1,t.last_flush=-2,iT(t),wt},I1=e=>{let t=N1(e);return t===wt&&RT(e.state),t},zT=(e,t)=>ls(e)||e.state.wrap!==2?Ii:(e.state.gzhead=t,wt),C1=(e,t,i,n,r,a)=>{if(!e)return Ii;let s=1;if(t===cT&&(t=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),r<1||r>hT||i!==Co||n<8||n>15||t<0||t>9||a<0||a>dT||n===8&&s!==1)return jn(e,Ii);n===8&&(n=9);let o=new LT;return e.state=o,o.strm=e,o.status=Lr,o.wrap=s,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+xe-1)/xe),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=i,I1(e)},NT=(e,t)=>C1(e,t,Co,gT,_T,uT),IT=(e,t)=>{if(ls(e)||t>Q0||t<0)return e?jn(e,Ii):Ii;let i=e.state;if(!e.output||e.avail_in!==0&&!e.input||i.status===qa&&t!==ai)return jn(e,e.avail_out===0?zm:Ii);let n=i.last_flush;if(i.last_flush=t,i.pending!==0){if(Kt(e),e.avail_out===0)return i.last_flush=-1,wt}else if(e.avail_in===0&&tg(t)<=tg(n)&&t!==ai)return jn(e,zm);if(i.status===qa&&e.avail_in!==0)return jn(e,zm);if(i.status===Lr&&i.wrap===0&&(i.status=Zn),i.status===Lr){let r=Co+(i.w_bits-8<<4)<<8,a=-1;if(i.strategy>=So||i.level<2?a=0:i.level<6?a=1:i.level===6?a=2:a=3,r|=a<<6,i.strstart!==0&&(r|=AT),r+=31-r%31,Xa(i,r),i.strstart!==0&&(Xa(i,e.adler>>>16),Xa(i,e.adler&65535)),e.adler=1,i.status=Zn,Kt(e),i.pending!==0)return i.last_flush=-1,wt}if(i.status===gd){if(e.adler=0,ze(i,31),ze(i,139),ze(i,8),i.gzhead)ze(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),ze(i,i.gzhead.time&255),ze(i,i.gzhead.time>>8&255),ze(i,i.gzhead.time>>16&255),ze(i,i.gzhead.time>>24&255),ze(i,i.level===9?2:i.strategy>=So||i.level<2?4:0),ze(i,i.gzhead.os&255),i.gzhead.extra&&i.gzhead.extra.length&&(ze(i,i.gzhead.extra.length&255),ze(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=_t(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Xm;else if(ze(i,0),ze(i,0),ze(i,0),ze(i,0),ze(i,0),ze(i,i.level===9?2:i.strategy>=So||i.level<2?4:0),ze(i,bT),i.status=Zn,Kt(e),i.pending!==0)return i.last_flush=-1,wt}if(i.status===Xm){if(i.gzhead.extra){let r=i.pending,a=(i.gzhead.extra.length&65535)-i.gzindex;for(;i.pending+a>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex+=o,Kt(e),i.pending!==0)return i.last_flush=-1,wt;r=0,a-=o}let s=new Uint8Array(i.gzhead.extra);i.pending_buf.set(s.subarray(i.gzindex,i.gzindex+a),i.pending),i.pending+=a,i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex=0}i.status=qm}if(i.status===qm){if(i.gzhead.name){let r=i.pending,a;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),Kt(e),i.pending!==0)return i.last_flush=-1,wt;r=0}i.gzindex<i.gzhead.name.length?a=i.gzhead.name.charCodeAt(i.gzindex++)&255:a=0,ze(i,a)}while(a!==0);i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex=0}i.status=Ym}if(i.status===Ym){if(i.gzhead.comment){let r=i.pending,a;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r)),Kt(e),i.pending!==0)return i.last_flush=-1,wt;r=0}i.gzindex<i.gzhead.comment.length?a=i.gzhead.comment.charCodeAt(i.gzindex++)&255:a=0,ze(i,a)}while(a!==0);i.gzhead.hcrc&&i.pending>r&&(e.adler=_t(e.adler,i.pending_buf,i.pending-r,r))}i.status=Zm}if(i.status===Zm){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Kt(e),i.pending!==0))return i.last_flush=-1,wt;ze(i,e.adler&255),ze(i,e.adler>>8&255),e.adler=0}if(i.status=Zn,Kt(e),i.pending!==0)return i.last_flush=-1,wt}if(e.avail_in!==0||i.lookahead!==0||t!==kn&&i.status!==qa){let r=i.level===0?z1(i,t):i.strategy===So?TT(i,t):i.strategy===mT?MT(i,t):Ya[i.level].func(i,t);if((r===Qn||r===Cr)&&(i.status=qa),r===Rt||r===Qn)return e.avail_out===0&&(i.last_flush=-1),wt;if(r===Ir&&(t===aT?rT(i):t!==Q0&&(Km(i,0,0,!1),t===sT&&(wn(i.head),i.lookahead===0&&(i.strstart=0,i.block_start=0,i.insert=0))),Kt(e),e.avail_out===0))return i.last_flush=-1,wt}return t!==ai?wt:i.wrap<=0?eg:(i.wrap===2?(ze(i,e.adler&255),ze(i,e.adler>>8&255),ze(i,e.adler>>16&255),ze(i,e.adler>>24&255),ze(i,e.total_in&255),ze(i,e.total_in>>8&255),ze(i,e.total_in>>16&255),ze(i,e.total_in>>24&255)):(Xa(i,e.adler>>>16),Xa(i,e.adler&65535)),Kt(e),i.wrap>0&&(i.wrap=-i.wrap),i.pending!==0?wt:eg)},CT=e=>{if(ls(e))return Ii;let t=e.state.status;return e.state=null,t===Zn?jn(e,oT):wt},OT=(e,t)=>{let i=t.length;if(ls(e))return Ii;let n=e.state,r=n.wrap;if(r===2||r===1&&n.status!==Lr||n.lookahead)return Ii;if(r===1&&(e.adler=rs(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){r===0&&(wn(n.head),n.strstart=0,n.block_start=0,n.insert=0);let c=new Uint8Array(n.w_size);c.set(t.subarray(i-n.w_size,i),0),t=c,i=n.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,zr(n);n.lookahead>=xe;){let c=n.strstart,l=n.lookahead-(xe-1);do n.ins_h=An(n,n.ins_h,n.window[c+xe-1]),n.prev[c&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=c,c++;while(--l);n.strstart=c,n.lookahead=xe-1,zr(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=xe-1,n.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,n.wrap=r,wt},PT=NT,FT=C1,DT=I1,BT=N1,UT=zT,GT=IT,HT=CT,VT=OT,WT="pako deflate (from Nodeca project)",ja={deflateInit:PT,deflateInit2:FT,deflateReset:DT,deflateResetKeep:BT,deflateSetHeader:UT,deflate:GT,deflateEnd:HT,deflateSetDictionary:VT,deflateInfo:WT},KT=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),$T=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let i=t.shift();if(i){if(typeof i!="object")throw new TypeError(i+"must be non-object");for(let n in i)KT(i,n)&&(e[n]=i[n])}}return e},XT=e=>{let t=0;for(let n=0,r=e.length;n<r;n++)t+=e[n].length;let i=new Uint8Array(t);for(let n=0,r=0,a=e.length;n<a;n++){let s=e[n];i.set(s,r),r+=s.length}return i},Oo={assign:$T,flattenChunks:XT},O1=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{O1=!1}var as=new Uint8Array(256);for(let e=0;e<256;e++)as[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;as[254]=as[254]=1;var qT=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,i,n,r,a,s=e.length,o=0;for(r=0;r<s;r++)i=e.charCodeAt(r),(i&64512)===55296&&r+1<s&&(n=e.charCodeAt(r+1),(n&64512)===56320&&(i=65536+(i-55296<<10)+(n-56320),r++)),o+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)i=e.charCodeAt(r),(i&64512)===55296&&r+1<s&&(n=e.charCodeAt(r+1),(n&64512)===56320&&(i=65536+(i-55296<<10)+(n-56320),r++)),i<128?t[a++]=i:i<2048?(t[a++]=192|i>>>6,t[a++]=128|i&63):i<65536?(t[a++]=224|i>>>12,t[a++]=128|i>>>6&63,t[a++]=128|i&63):(t[a++]=240|i>>>18,t[a++]=128|i>>>12&63,t[a++]=128|i>>>6&63,t[a++]=128|i&63);return t},YT=(e,t)=>{if(t<65534&&e.subarray&&O1)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let n=0;n<t;n++)i+=String.fromCharCode(e[n]);return i},ZT=(e,t)=>{let i=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let n,r,a=new Array(i*2);for(r=0,n=0;n<i;){let s=e[n++];if(s<128){a[r++]=s;continue}let o=as[s];if(o>4){a[r++]=65533,n+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&n<i;)s=s<<6|e[n++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return YT(a,r)},jT=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let i=t-1;for(;i>=0&&(e[i]&192)===128;)i--;return i<0||i===0?t:i+as[e[i]]>t?i:t},ss={string2buf:qT,buf2string:ZT,utf8border:jT};function JT(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var P1=JT,F1=Object.prototype.toString,{Z_NO_FLUSH:QT,Z_SYNC_FLUSH:e6,Z_FULL_FLUSH:t6,Z_FINISH:i6,Z_OK:Ro,Z_STREAM_END:n6,Z_DEFAULT_COMPRESSION:r6,Z_DEFAULT_STRATEGY:a6,Z_DEFLATED:s6}=tr;function ms(e){this.options=Oo.assign({level:r6,method:s6,chunkSize:16384,windowBits:15,memLevel:8,strategy:a6},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new P1,this.strm.avail_out=0;let i=ja.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==Ro)throw new Error(Jn[i]);if(t.header&&ja.deflateSetHeader(this.strm,t.header),t.dictionary){let n;if(typeof t.dictionary=="string"?n=ss.string2buf(t.dictionary):F1.call(t.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(t.dictionary):n=t.dictionary,i=ja.deflateSetDictionary(this.strm,n),i!==Ro)throw new Error(Jn[i]);this._dict_set=!0}}ms.prototype.push=function(e,t){let i=this.strm,n=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?i6:QT,typeof e=="string"?i.input=ss.string2buf(e):F1.call(e)==="[object ArrayBuffer]"?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){if(i.avail_out===0&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(a===e6||a===t6)&&i.avail_out<=6){this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;continue}if(r=ja.deflate(i,a),r===n6)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=ja.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Ro;if(i.avail_out===0){this.onData(i.output);continue}if(a>0&&i.next_out>0){this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;continue}if(i.avail_in===0)break}return!0};ms.prototype.onData=function(e){this.chunks.push(e)};ms.prototype.onEnd=function(e){e===Ro&&(this.result=Oo.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function _d(e,t){let i=new ms(t);if(i.push(e,!0),i.err)throw i.msg||Jn[i.err];return i.result}function o6(e,t){return t=t||{},t.raw=!0,_d(e,t)}function c6(e,t){return t=t||{},t.gzip=!0,_d(e,t)}var l6=ms,m6=_d,d6=o6,u6=c6,f6=tr,h6={Deflate:l6,deflate:m6,deflateRaw:d6,gzip:u6,constants:f6},ko=16209,g6=16191,_6=function(t,i){let n,r,a,s,o,c,l,m,d,u,f,h,_,g,v,A,k,y,b,S,x,R,z,E,D=t.state;n=t.next_in,z=t.input,r=n+(t.avail_in-5),a=t.next_out,E=t.output,s=a-(i-t.avail_out),o=a+(t.avail_out-257),c=D.dmax,l=D.wsize,m=D.whave,d=D.wnext,u=D.window,f=D.hold,h=D.bits,_=D.lencode,g=D.distcode,v=(1<<D.lenbits)-1,A=(1<<D.distbits)-1;e:do{h<15&&(f+=z[n++]<<h,h+=8,f+=z[n++]<<h,h+=8),k=_[f&v];t:for(;;){if(y=k>>>24,f>>>=y,h-=y,y=k>>>16&255,y===0)E[a++]=k&65535;else if(y&16){b=k&65535,y&=15,y&&(h<y&&(f+=z[n++]<<h,h+=8),b+=f&(1<<y)-1,f>>>=y,h-=y),h<15&&(f+=z[n++]<<h,h+=8,f+=z[n++]<<h,h+=8),k=g[f&A];i:for(;;){if(y=k>>>24,f>>>=y,h-=y,y=k>>>16&255,y&16){if(S=k&65535,y&=15,h<y&&(f+=z[n++]<<h,h+=8,h<y&&(f+=z[n++]<<h,h+=8)),S+=f&(1<<y)-1,S>c){t.msg="invalid distance too far back",D.mode=ko;break e}if(f>>>=y,h-=y,y=a-s,S>y){if(y=S-y,y>m&&D.sane){t.msg="invalid distance too far back",D.mode=ko;break e}if(x=0,R=u,d===0){if(x+=l-y,y<b){b-=y;do E[a++]=u[x++];while(--y);x=a-S,R=E}}else if(d<y){if(x+=l+d-y,y-=d,y<b){b-=y;do E[a++]=u[x++];while(--y);if(x=0,d<b){y=d,b-=y;do E[a++]=u[x++];while(--y);x=a-S,R=E}}}else if(x+=d-y,y<b){b-=y;do E[a++]=u[x++];while(--y);x=a-S,R=E}for(;b>2;)E[a++]=R[x++],E[a++]=R[x++],E[a++]=R[x++],b-=3;b&&(E[a++]=R[x++],b>1&&(E[a++]=R[x++]))}else{x=a-S;do E[a++]=E[x++],E[a++]=E[x++],E[a++]=E[x++],b-=3;while(b>2);b&&(E[a++]=E[x++],b>1&&(E[a++]=E[x++]))}}else if((y&64)===0){k=g[(k&65535)+(f&(1<<y)-1)];continue i}else{t.msg="invalid distance code",D.mode=ko;break e}break}}else if((y&64)===0){k=_[(k&65535)+(f&(1<<y)-1)];continue t}else if(y&32){D.mode=g6;break e}else{t.msg="invalid literal/length code",D.mode=ko;break e}break}}while(n<r&&a<o);b=h>>3,n-=b,h-=b<<3,f&=(1<<h)-1,t.next_in=n,t.next_out=a,t.avail_in=n<r?5+(r-n):5-(n-r),t.avail_out=a<o?257+(o-a):257-(a-o),D.hold=f,D.bits=h},Er=15,ig=852,ng=592,rg=0,Im=1,ag=2,v6=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),p6=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),w6=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),y6=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),S6=(e,t,i,n,r,a,s,o)=>{let c=o.bits,l=0,m=0,d=0,u=0,f=0,h=0,_=0,g=0,v=0,A=0,k,y,b,S,x,R=null,z,E=new Uint16Array(Er+1),D=new Uint16Array(Er+1),$=null,j,q,be;for(l=0;l<=Er;l++)E[l]=0;for(m=0;m<n;m++)E[t[i+m]]++;for(f=c,u=Er;u>=1&&E[u]===0;u--);if(f>u&&(f=u),u===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(d=1;d<u&&E[d]===0;d++);for(f<d&&(f=d),g=1,l=1;l<=Er;l++)if(g<<=1,g-=E[l],g<0)return-1;if(g>0&&(e===rg||u!==1))return-1;for(D[1]=0,l=1;l<Er;l++)D[l+1]=D[l]+E[l];for(m=0;m<n;m++)t[i+m]!==0&&(s[D[t[i+m]]++]=m);if(e===rg?(R=$=s,z=20):e===Im?(R=v6,$=p6,z=257):(R=w6,$=y6,z=0),A=0,m=0,l=d,x=a,h=f,_=0,b=-1,v=1<<f,S=v-1,e===Im&&v>ig||e===ag&&v>ng)return 1;for(;;){j=l-_,s[m]+1<z?(q=0,be=s[m]):s[m]>=z?(q=$[s[m]-z],be=R[s[m]-z]):(q=96,be=0),k=1<<l-_,y=1<<h,d=y;do y-=k,r[x+(A>>_)+y]=j<<24|q<<16|be|0;while(y!==0);for(k=1<<l-1;A&k;)k>>=1;if(k!==0?(A&=k-1,A+=k):A=0,m++,--E[l]===0){if(l===u)break;l=t[i+s[m]]}if(l>f&&(A&S)!==b){for(_===0&&(_=f),x+=d,h=l-_,g=1<<h;h+_<u&&(g-=E[h+_],!(g<=0));)h++,g<<=1;if(v+=1<<h,e===Im&&v>ig||e===ag&&v>ng)return 1;b=A&S,r[b]=f<<24|h<<16|x-a|0}}return A!==0&&(r[x+A]=l-_<<24|64<<16|0),o.bits=f,0},Ja=S6,k6=0,D1=1,B1=2,{Z_FINISH:sg,Z_BLOCK:A6,Z_TREES:Ao,Z_OK:er,Z_STREAM_END:b6,Z_NEED_DICT:E6,Z_STREAM_ERROR:si,Z_DATA_ERROR:U1,Z_MEM_ERROR:G1,Z_BUF_ERROR:x6,Z_DEFLATED:og}=tr,Po=16180,cg=16181,lg=16182,mg=16183,dg=16184,ug=16185,fg=16186,hg=16187,gg=16188,_g=16189,Lo=16190,Qi=16191,Cm=16192,vg=16193,Om=16194,pg=16195,wg=16196,yg=16197,Sg=16198,bo=16199,Eo=16200,kg=16201,Ag=16202,bg=16203,Eg=16204,xg=16205,Pm=16206,Mg=16207,Tg=16208,Ve=16209,H1=16210,V1=16211,M6=852,T6=592,R6=15,L6=R6,Rg=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function z6(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var ir=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Po||t.mode>V1?1:0},W1=e=>{if(ir(e))return si;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=Po,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(M6),t.distcode=t.distdyn=new Int32Array(T6),t.sane=1,t.back=-1,er},K1=e=>{if(ir(e))return si;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,W1(e)},$1=(e,t)=>{let i;if(ir(e))return si;let n=e.state;return t<0?(i=0,t=-t):(i=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?si:(n.window!==null&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,K1(e))},X1=(e,t)=>{if(!e)return si;let i=new z6;e.state=i,i.strm=e,i.window=null,i.mode=Po;let n=$1(e,t);return n!==er&&(e.state=null),n},N6=e=>X1(e,L6),Lg=!0,Fm,Dm,I6=e=>{if(Lg){Fm=new Int32Array(512),Dm=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Ja(D1,e.lens,0,288,Fm,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ja(B1,e.lens,0,32,Dm,0,e.work,{bits:5}),Lg=!1}e.lencode=Fm,e.lenbits=9,e.distcode=Dm,e.distbits=5},q1=(e,t,i,n)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),n>=a.wsize?(a.window.set(t.subarray(i-a.wsize,i),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>n&&(r=n),a.window.set(t.subarray(i-n,i-n+r),a.wnext),n-=r,n?(a.window.set(t.subarray(i-n,i),0),a.wnext=n,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},C6=(e,t)=>{let i,n,r,a,s,o,c,l,m,d,u,f,h,_,g=0,v,A,k,y,b,S,x,R,z=new Uint8Array(4),E,D,$=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(ir(e)||!e.output||!e.input&&e.avail_in!==0)return si;i=e.state,i.mode===Qi&&(i.mode=Cm),s=e.next_out,r=e.output,c=e.avail_out,a=e.next_in,n=e.input,o=e.avail_in,l=i.hold,m=i.bits,d=o,u=c,R=er;e:for(;;)switch(i.mode){case Po:if(i.wrap===0){i.mode=Cm;break}for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.wrap&2&&l===35615){i.wbits===0&&(i.wbits=15),i.check=0,z[0]=l&255,z[1]=l>>>8&255,i.check=_t(i.check,z,2,0),l=0,m=0,i.mode=cg;break}if(i.head&&(i.head.done=!1),!(i.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg="incorrect header check",i.mode=Ve;break}if((l&15)!==og){e.msg="unknown compression method",i.mode=Ve;break}if(l>>>=4,m-=4,x=(l&15)+8,i.wbits===0&&(i.wbits=x),x>15||x>i.wbits){e.msg="invalid window size",i.mode=Ve;break}i.dmax=1<<i.wbits,i.flags=0,e.adler=i.check=1,i.mode=l&512?_g:Qi,l=0,m=0;break;case cg:for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.flags=l,(i.flags&255)!==og){e.msg="unknown compression method",i.mode=Ve;break}if(i.flags&57344){e.msg="unknown header flags set",i.mode=Ve;break}i.head&&(i.head.text=l>>8&1),i.flags&512&&i.wrap&4&&(z[0]=l&255,z[1]=l>>>8&255,i.check=_t(i.check,z,2,0)),l=0,m=0,i.mode=lg;case lg:for(;m<32;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.head&&(i.head.time=l),i.flags&512&&i.wrap&4&&(z[0]=l&255,z[1]=l>>>8&255,z[2]=l>>>16&255,z[3]=l>>>24&255,i.check=_t(i.check,z,4,0)),l=0,m=0,i.mode=mg;case mg:for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.head&&(i.head.xflags=l&255,i.head.os=l>>8),i.flags&512&&i.wrap&4&&(z[0]=l&255,z[1]=l>>>8&255,i.check=_t(i.check,z,2,0)),l=0,m=0,i.mode=dg;case dg:if(i.flags&1024){for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.length=l,i.head&&(i.head.extra_len=l),i.flags&512&&i.wrap&4&&(z[0]=l&255,z[1]=l>>>8&255,i.check=_t(i.check,z,2,0)),l=0,m=0}else i.head&&(i.head.extra=null);i.mode=ug;case ug:if(i.flags&1024&&(f=i.length,f>o&&(f=o),f&&(i.head&&(x=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(n.subarray(a,a+f),x)),i.flags&512&&i.wrap&4&&(i.check=_t(i.check,n,f,a)),o-=f,a+=f,i.length-=f),i.length))break e;i.length=0,i.mode=fg;case fg:if(i.flags&2048){if(o===0)break e;f=0;do x=n[a+f++],i.head&&x&&i.length<65536&&(i.head.name+=String.fromCharCode(x));while(x&&f<o);if(i.flags&512&&i.wrap&4&&(i.check=_t(i.check,n,f,a)),o-=f,a+=f,x)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=hg;case hg:if(i.flags&4096){if(o===0)break e;f=0;do x=n[a+f++],i.head&&x&&i.length<65536&&(i.head.comment+=String.fromCharCode(x));while(x&&f<o);if(i.flags&512&&i.wrap&4&&(i.check=_t(i.check,n,f,a)),o-=f,a+=f,x)break e}else i.head&&(i.head.comment=null);i.mode=gg;case gg:if(i.flags&512){for(;m<16;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.wrap&4&&l!==(i.check&65535)){e.msg="header crc mismatch",i.mode=Ve;break}l=0,m=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Qi;break;case _g:for(;m<32;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}e.adler=i.check=Rg(l),l=0,m=0,i.mode=Lo;case Lo:if(i.havedict===0)return e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,i.hold=l,i.bits=m,E6;e.adler=i.check=1,i.mode=Qi;case Qi:if(t===A6||t===Ao)break e;case Cm:if(i.last){l>>>=m&7,m-=m&7,i.mode=Pm;break}for(;m<3;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}switch(i.last=l&1,l>>>=1,m-=1,l&3){case 0:i.mode=vg;break;case 1:if(I6(i),i.mode=bo,t===Ao){l>>>=2,m-=2;break e}break;case 2:i.mode=wg;break;case 3:e.msg="invalid block type",i.mode=Ve}l>>>=2,m-=2;break;case vg:for(l>>>=m&7,m-=m&7;m<32;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if((l&65535)!==(l>>>16^65535)){e.msg="invalid stored block lengths",i.mode=Ve;break}if(i.length=l&65535,l=0,m=0,i.mode=Om,t===Ao)break e;case Om:i.mode=pg;case pg:if(f=i.length,f){if(f>o&&(f=o),f>c&&(f=c),f===0)break e;r.set(n.subarray(a,a+f),s),o-=f,a+=f,c-=f,s+=f,i.length-=f;break}i.mode=Qi;break;case wg:for(;m<14;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.nlen=(l&31)+257,l>>>=5,m-=5,i.ndist=(l&31)+1,l>>>=5,m-=5,i.ncode=(l&15)+4,l>>>=4,m-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Ve;break}i.have=0,i.mode=yg;case yg:for(;i.have<i.ncode;){for(;m<3;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.lens[$[i.have++]]=l&7,l>>>=3,m-=3}for(;i.have<19;)i.lens[$[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,E={bits:i.lenbits},R=Ja(k6,i.lens,0,19,i.lencode,0,i.work,E),i.lenbits=E.bits,R){e.msg="invalid code lengths set",i.mode=Ve;break}i.have=0,i.mode=Sg;case Sg:for(;i.have<i.nlen+i.ndist;){for(;g=i.lencode[l&(1<<i.lenbits)-1],v=g>>>24,A=g>>>16&255,k=g&65535,!(v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(k<16)l>>>=v,m-=v,i.lens[i.have++]=k;else{if(k===16){for(D=v+2;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(l>>>=v,m-=v,i.have===0){e.msg="invalid bit length repeat",i.mode=Ve;break}x=i.lens[i.have-1],f=3+(l&3),l>>>=2,m-=2}else if(k===17){for(D=v+3;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}l>>>=v,m-=v,x=0,f=3+(l&7),l>>>=3,m-=3}else{for(D=v+7;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}l>>>=v,m-=v,x=0,f=11+(l&127),l>>>=7,m-=7}if(i.have+f>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Ve;break}for(;f--;)i.lens[i.have++]=x}}if(i.mode===Ve)break;if(i.lens[256]===0){e.msg="invalid code -- missing end-of-block",i.mode=Ve;break}if(i.lenbits=9,E={bits:i.lenbits},R=Ja(D1,i.lens,0,i.nlen,i.lencode,0,i.work,E),i.lenbits=E.bits,R){e.msg="invalid literal/lengths set",i.mode=Ve;break}if(i.distbits=6,i.distcode=i.distdyn,E={bits:i.distbits},R=Ja(B1,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,E),i.distbits=E.bits,R){e.msg="invalid distances set",i.mode=Ve;break}if(i.mode=bo,t===Ao)break e;case bo:i.mode=Eo;case Eo:if(o>=6&&c>=258){e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,i.hold=l,i.bits=m,_6(e,u),s=e.next_out,r=e.output,c=e.avail_out,a=e.next_in,n=e.input,o=e.avail_in,l=i.hold,m=i.bits,i.mode===Qi&&(i.back=-1);break}for(i.back=0;g=i.lencode[l&(1<<i.lenbits)-1],v=g>>>24,A=g>>>16&255,k=g&65535,!(v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(A&&(A&240)===0){for(y=v,b=A,S=k;g=i.lencode[S+((l&(1<<y+b)-1)>>y)],v=g>>>24,A=g>>>16&255,k=g&65535,!(y+v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}l>>>=y,m-=y,i.back+=y}if(l>>>=v,m-=v,i.back+=v,i.length=k,A===0){i.mode=xg;break}if(A&32){i.back=-1,i.mode=Qi;break}if(A&64){e.msg="invalid literal/length code",i.mode=Ve;break}i.extra=A&15,i.mode=kg;case kg:if(i.extra){for(D=i.extra;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.length+=l&(1<<i.extra)-1,l>>>=i.extra,m-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=Ag;case Ag:for(;g=i.distcode[l&(1<<i.distbits)-1],v=g>>>24,A=g>>>16&255,k=g&65535,!(v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if((A&240)===0){for(y=v,b=A,S=k;g=i.distcode[S+((l&(1<<y+b)-1)>>y)],v=g>>>24,A=g>>>16&255,k=g&65535,!(y+v<=m);){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}l>>>=y,m-=y,i.back+=y}if(l>>>=v,m-=v,i.back+=v,A&64){e.msg="invalid distance code",i.mode=Ve;break}i.offset=k,i.extra=A&15,i.mode=bg;case bg:if(i.extra){for(D=i.extra;m<D;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}i.offset+=l&(1<<i.extra)-1,l>>>=i.extra,m-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Ve;break}i.mode=Eg;case Eg:if(c===0)break e;if(f=u-c,i.offset>f){if(f=i.offset-f,f>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Ve;break}f>i.wnext?(f-=i.wnext,h=i.wsize-f):h=i.wnext-f,f>i.length&&(f=i.length),_=i.window}else _=r,h=s-i.offset,f=i.length;f>c&&(f=c),c-=f,i.length-=f;do r[s++]=_[h++];while(--f);i.length===0&&(i.mode=Eo);break;case xg:if(c===0)break e;r[s++]=i.length,c--,i.mode=Eo;break;case Pm:if(i.wrap){for(;m<32;){if(o===0)break e;o--,l|=n[a++]<<m,m+=8}if(u-=c,e.total_out+=u,i.total+=u,i.wrap&4&&u&&(e.adler=i.check=i.flags?_t(i.check,r,u,s-u):rs(i.check,r,u,s-u)),u=c,i.wrap&4&&(i.flags?l:Rg(l))!==i.check){e.msg="incorrect data check",i.mode=Ve;break}l=0,m=0}i.mode=Mg;case Mg:if(i.wrap&&i.flags){for(;m<32;){if(o===0)break e;o--,l+=n[a++]<<m,m+=8}if(i.wrap&4&&l!==(i.total&4294967295)){e.msg="incorrect length check",i.mode=Ve;break}l=0,m=0}i.mode=Tg;case Tg:R=b6;break e;case Ve:R=U1;break e;case H1:return G1;case V1:default:return si}return e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,i.hold=l,i.bits=m,(i.wsize||u!==e.avail_out&&i.mode<Ve&&(i.mode<Pm||t!==sg))&&q1(e,e.output,e.next_out,u-e.avail_out),d-=e.avail_in,u-=e.avail_out,e.total_in+=d,e.total_out+=u,i.total+=u,i.wrap&4&&u&&(e.adler=i.check=i.flags?_t(i.check,r,u,e.next_out-u):rs(i.check,r,u,e.next_out-u)),e.data_type=i.bits+(i.last?64:0)+(i.mode===Qi?128:0)+(i.mode===bo||i.mode===Om?256:0),(d===0&&u===0||t===sg)&&R===er&&(R=x6),R},O6=e=>{if(ir(e))return si;let t=e.state;return t.window&&(t.window=null),e.state=null,er},P6=(e,t)=>{if(ir(e))return si;let i=e.state;return(i.wrap&2)===0?si:(i.head=t,t.done=!1,er)},F6=(e,t)=>{let i=t.length,n,r,a;return ir(e)||(n=e.state,n.wrap!==0&&n.mode!==Lo)?si:n.mode===Lo&&(r=1,r=rs(r,t,i,0),r!==n.check)?U1:(a=q1(e,t,i,i),a?(n.mode=H1,G1):(n.havedict=1,er))},D6=K1,B6=$1,U6=W1,G6=N6,H6=X1,V6=C6,W6=O6,K6=P6,$6=F6,X6="pako inflate (from Nodeca project)",tn={inflateReset:D6,inflateReset2:B6,inflateResetKeep:U6,inflateInit:G6,inflateInit2:H6,inflate:V6,inflateEnd:W6,inflateGetHeader:K6,inflateSetDictionary:$6,inflateInfo:X6};function q6(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var Y6=q6,Y1=Object.prototype.toString,{Z_NO_FLUSH:Z6,Z_FINISH:j6,Z_OK:os,Z_STREAM_END:Bm,Z_NEED_DICT:Um,Z_STREAM_ERROR:J6,Z_DATA_ERROR:zg,Z_MEM_ERROR:Q6}=tr;function ds(e){this.options=Oo.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new P1,this.strm.avail_out=0;let i=tn.inflateInit2(this.strm,t.windowBits);if(i!==os)throw new Error(Jn[i]);if(this.header=new Y6,tn.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=ss.string2buf(t.dictionary):Y1.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=tn.inflateSetDictionary(this.strm,t.dictionary),i!==os)))throw new Error(Jn[i])}ds.prototype.push=function(e,t){let i=this.strm,n=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?j6:Z6,Y1.call(e)==="[object ArrayBuffer]"?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(i.avail_out===0&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),a=tn.inflate(i,s),a===Um&&r&&(a=tn.inflateSetDictionary(i,r),a===os?a=tn.inflate(i,s):a===zg&&(a=Um));i.avail_in>0&&a===Bm&&i.state.wrap>0&&e[i.next_in]!==0;)tn.inflateReset(i),a=tn.inflate(i,s);switch(a){case J6:case zg:case Um:case Q6:return this.onEnd(a),this.ended=!0,!1}if(o=i.avail_out,i.next_out&&(i.avail_out===0||a===Bm))if(this.options.to==="string"){let c=ss.utf8border(i.output,i.next_out),l=i.next_out-c,m=ss.buf2string(i.output,c);i.next_out=l,i.avail_out=n-l,l&&i.output.set(i.output.subarray(c,c+l),0),this.onData(m)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(!(a===os&&o===0)){if(a===Bm)return a=tn.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(i.avail_in===0)break}}return!0};ds.prototype.onData=function(e){this.chunks.push(e)};ds.prototype.onEnd=function(e){e===os&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Oo.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function vd(e,t){let i=new ds(t);if(i.push(e),i.err)throw i.msg||Jn[i.err];return i.result}function e8(e,t){return t=t||{},t.raw=!0,vd(e,t)}var t8=ds,i8=vd,n8=e8,r8=vd,a8=tr,s8={Inflate:t8,inflate:i8,inflateRaw:n8,ungzip:r8,constants:a8},{Deflate:o8,deflate:c8,deflateRaw:l8,gzip:m8}=h6,{Inflate:d8,inflate:u8,inflateRaw:f8,ungzip:h8}=s8,g8=o8,_8=c8,v8=l8,p8=m8,w8=d8,y8=u8,S8=f8,k8=h8,A8=tr,Ng={Deflate:g8,deflate:_8,deflateRaw:v8,gzip:p8,Inflate:w8,inflate:y8,inflateRaw:S8,ungzip:k8,constants:A8},pd=class Jm{constructor(t=Jm.INITIAL_SIZE){this.buffer=new Uint8Array(t),this.readOffset=0,this.writeOffset=0}append(t){let i=t instanceof Uint8Array?t:new Uint8Array(t),n=this.writeOffset+i.length;n>this.buffer.length&&this.grow(n),this.buffer.set(i,this.writeOffset),this.writeOffset+=i.length}hasBytes(t){return this.writeOffset-this.readOffset>=t}available(){return this.writeOffset-this.readOffset}readByte(){if(!this.hasBytes(1))throw new Error("Buffer underflow");return this.buffer[this.readOffset++]}readShort(){if(!this.hasBytes(2))throw new Error("Buffer underflow");let t=this.buffer[this.readOffset]|this.buffer[this.readOffset+1]<<8;return this.readOffset+=2,t>32767?t-65536:t}readLong(){if(!this.hasBytes(4))throw new Error("Buffer underflow");let t=this.buffer[this.readOffset]|this.buffer[this.readOffset+1]<<8|this.buffer[this.readOffset+2]<<16|this.buffer[this.readOffset+3]<<24;return this.readOffset+=4,t}readFloat(){if(!this.hasBytes(4))throw new Error("Buffer underflow");let i=new DataView(this.buffer.buffer,this.buffer.byteOffset+this.readOffset,4).getFloat32(0,!0);return this.readOffset+=4,i}readString(){let t=Math.min(Jm.MAX_STRING_LENGTH,this.writeOffset-this.readOffset),i=0;for(;i<t&&this.buffer[this.readOffset+i]!==0;)i++;if(i>=t)throw this.writeOffset-this.readOffset<=t?new Error("Buffer underflow"):new Error("String exceeds max length");let n=this.buffer.slice(this.readOffset,this.readOffset+i);return this.readOffset+=i+1,new TextDecoder("latin1").decode(n)}peekBytes(t){if(!this.hasBytes(t))throw new Error("Buffer underflow");return this.buffer.slice(this.readOffset,this.readOffset+t)}readBytes(t){if(!this.hasBytes(t))throw new Error("Buffer underflow");let i=this.buffer.slice(this.readOffset,this.readOffset+t);return this.readOffset+=t,i}readData(t){return this.readBytes(t)}getReadPosition(){return this.readOffset}getWritePosition(){return this.writeOffset}setReadPosition(t){if(t<0||t>this.writeOffset)throw new Error("Invalid read position");this.readOffset=t}grow(t){let i=t?Math.max(t,this.buffer.length*2):this.buffer.length*2,n=new Uint8Array(i);n.set(this.buffer),this.buffer=n}compact(){if(this.readOffset===0)return;let t=this.writeOffset-this.readOffset;if(t===0){this.readOffset=0,this.writeOffset=0;return}this.buffer.copyWithin(0,this.readOffset,this.writeOffset),this.readOffset=0,this.writeOffset=t}getCapacity(){return this.buffer.length}reset(){this.readOffset=0,this.writeOffset=0}};pd.INITIAL_SIZE=64*1024;pd.MAX_STRING_LENGTH=2048;var b8=pd,xr=2023,Z1=1,j1=2,J1=4,Q1=8,e_=16,t_=32,wd=64,Ig=128,E8=256,i_=512,n_=1024,r_=2048,Qm=4096,a_=8192,ed=16384,x8=32768,td=65536,s_=1<<17,id=1<<18,nd=1<<19,o_=1<<20,c_=1<<21,l_=1<<22,M8=1<<23,m_=1<<24,rd=1<<25,d_=1<<26,u_=1<<27,f_=1<<28,h_=1<<29,g_=1<<30,T8=-2147483648,__=1,v_=2,p_=4,R8=1,L8=2,z8=128,Mr=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),Cg=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0,watertype:0}),N8=class extends b8{constructor(e){super(0),this.stream=e}readByte(){return this.stream.readByte()}readShort(){return this.stream.readShort()}readLong(){return this.stream.readLong()}readFloat(){return this.stream.readFloat()}readString(){return this.stream.readString()}readData(e){return this.stream.readData(e)}hasBytes(e){return this.stream.hasMore()}available(){return this.stream.getRemaining()}getReadPosition(){return this.stream.getPosition()}peekBytes(e){throw new Error("peekBytes not implemented for BinaryStreamAdapter")}},Og={0:U.bad,1:U.nop,2:U.disconnect,3:U.reconnect,4:U.download,5:U.frame,6:U.inventory,7:U.layout,8:U.muzzleflash,9:U.sound,10:U.print,11:U.stufftext,12:U.serverdata,13:U.configstring,14:U.spawnbaseline,15:U.centerprint,16:U.download,17:U.playerinfo,18:U.packetentities,19:U.deltapacketentities,23:U.temp_entity,22:U.muzzleflash2},Fo=class w_{constructor(t,i,n=!1){this.protocolVersion=0,this.isDemo=R8,this.strictMode=!1,this.errorCount=0,t instanceof xo?this.stream=new N8(t):this.stream=t,this.handler=i,this.strictMode=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}getErrorCount(){return this.errorCount}translateCommand(t){if(this.protocolVersion===0)return t===7||t===12?U.serverdata:t;if(this.protocolVersion===xr)return t;if(this.protocolVersion===25||this.protocolVersion===26){if(t===0)return U.bad;let i=t+5;return i>=U.nop&&i<=U.frame?i:U.bad}return this.protocolVersion===34?Og[t]!==void 0?Og[t]:U.bad:t}parseMessage(){for(;this.stream.hasBytes(1);){let t=this.stream.getReadPosition(),i=-1;try{if(i=this.stream.readByte(),i===-1)break;let n=i;switch(i=this.translateCommand(i),i){case U.bad:return;case U.nop:break;case U.disconnect:this.handler?.onDisconnect&&this.handler.onDisconnect();break;case U.reconnect:this.handler?.onReconnect&&this.handler.onReconnect();break;case U.print:this.parsePrint();break;case U.serverdata:this.parseServerData();break;case U.configstring:this.parseConfigString();break;case U.spawnbaseline:this.parseSpawnBaseline();break;case U.centerprint:this.parseCenterPrint();break;case U.download:this.parseDownload();break;case U.frame:this.parseFrame();break;case U.packetentities:this.parsePacketEntities(!1);break;case U.deltapacketentities:this.parsePacketEntities(!0);break;case U.playerinfo:this.parsePlayerState();break;case U.stufftext:this.parseStuffText();break;case U.layout:this.parseLayout();break;case U.inventory:this.parseInventory();break;case U.sound:this.parseSound();break;case U.muzzleflash:this.parseMuzzleFlash();break;case U.muzzleflash2:this.parseMuzzleFlash2();break;case U.temp_entity:this.parseTempEntity();break;case U.splitclient:this.parseSplitClient();break;case U.configblast:this.parseConfigBlast();break;case U.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case U.level_restart:this.handler?.onLevelRestart&&this.handler.onLevelRestart();break;case U.damage:this.parseDamage();break;case U.locprint:this.parseLocPrint();break;case U.fog:this.parseFog();break;case U.waitingforplayers:this.parseWaitingForPlayers();break;case U.bot_chat:this.parseBotChat();break;case U.poi:this.parsePoi();break;case U.help_path:this.parseHelpPath();break;case U.muzzleflash3:this.parseMuzzleFlash3();break;case U.achievement:this.parseAchievement();break;default:let r=`Unknown server command: ${n} (translated: ${i}) at offset ${t}`;if(this.strictMode)throw new Error(r);console.warn(r),this.errorCount++;return}}catch(n){let r=n.message;if(r==="Buffer underflow"||r.includes("StreamingBuffer")){try{this.stream.setReadPosition(t)}catch(s){console.error("Failed to rollback stream position",s)}return}let a=`offset ${t}, cmd ${i}, protocol ${this.protocolVersion}`;if(console.warn(`Error parsing command ${i} (${a}): ${r}`),this.errorCount++,this.strictMode)throw n;return}}}readAngle16(){return this.stream.readShort()*(360/65536)}readCoord(){return this.stream.readShort()*.125}readAngle(){return this.stream.readByte()*(360/256)}readPos(t){t.x=this.stream.readShort()*.125,t.y=this.stream.readShort()*.125,t.z=this.stream.readShort()*.125}readDir(t){let i=this.stream.readByte();if(i>=Qa.length)t.x=0,t.y=0,t.z=0;else{let n=Qa[i];t.x=n[0],t.y=n[1],t.z=n[2]}}parsePrint(){let t=this.stream.readByte(),i=this.stream.readString();this.handler&&this.handler.onPrint(t,i)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===xr){let t=this.stream.readLong(),i=this.stream.readByte();this.isDemo=i;let n=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let c=0;c<o;c++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler&&this.handler.onServerData(this.protocolVersion,t,0,r,a,s,n,i)}else{let t=this.stream.readLong(),i=this.stream.readByte();this.isDemo=i;let n=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler&&this.handler.onServerData(this.protocolVersion,t,i,n,r,a)}}parseConfigString(){let t=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onConfigString(t,i)}parseSplitClient(){let t=this.stream.readByte();this.handler?.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),i=this.stream.readShort(),n=this.stream.readData(t);try{let r=Ng.inflate(n),a=new xo(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast error",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),i=this.stream.readShort(),n=this.stream.readData(t);try{let r=Ng.inflate(n),a=new xo(r.buffer),s=new w_(a,this.handler,this.strictMode);for(s.setProtocolVersion(this.protocolVersion);a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast error",r)}}parseLocPrint(){let t=this.stream.readByte(),i=this.stream.readString(),n=this.stream.readByte(),r=[];for(let a=0;a<n;a++)r.push(this.stream.readString());this.handler?.onLocPrint&&this.handler.onLocPrint(t,i,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler?.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),i=this.stream.readShort(),n=this.stream.readString();this.handler?.onBotChat&&this.handler.onBotChat(n)}parsePoi(){let t=this.stream.readShort(),i=this.stream.readShort(),n={x:0,y:0,z:0};this.readPos(n);let r=this.stream.readShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler?.onPoi&&this.handler.onPoi(s,n)}parseHelpPath(){let t=this.stream.readByte(),i={x:0,y:0,z:0};this.readPos(i);let n={x:0,y:0,z:0};this.readDir(n),this.handler?.onHelpPath&&this.handler.onHelpPath(i)}parseAchievement(){let t=this.stream.readString();this.handler?.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),i=this.stream.readByte(),n;t>0&&(n=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,i,n)}parseInventory(){let i=new Array(256);for(let n=0;n<256;n++)i[n]=this.stream.readShort();this.handler&&this.handler.onInventory(i)}parseSound(){let t=this.stream.readByte(),i=this.stream.readByte(),n,r,a,s,o;if(t&1&&(n=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let c={x:0,y:0,z:0};this.readPos(c),o=c}this.handler&&this.handler.onSound(t,i,n,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),i=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,i)}parseMuzzleFlash2(){let t=this.stream.readShort(),i=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,i)}parseMuzzleFlash3(){let t=this.stream.readShort(),i=this.stream.readShort();this.handler?.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,i)}parseFog(){let t=this.stream.readByte();if(t&128){let n=this.stream.readByte();t|=n<<8}let i={};t&1&&(i.density=this.stream.readFloat(),i.skyfactor=this.stream.readByte()),t&2&&(i.red=this.stream.readByte()),t&4&&(i.green=this.stream.readByte()),t&8&&(i.blue=this.stream.readByte()),t&16&&(i.time=this.stream.readShort()),t&32&&(i.hf_falloff=this.stream.readFloat()),t&64&&(i.hf_density=this.stream.readFloat()),t&256&&(i.hf_start_r=this.stream.readByte()),t&512&&(i.hf_start_g=this.stream.readByte()),t&1024&&(i.hf_start_b=this.stream.readByte()),t&2048&&(i.hf_start_dist=this.stream.readLong()),t&4096&&(i.hf_end_r=this.stream.readByte()),t&8192&&(i.hf_end_g=this.stream.readByte()),t&16384&&(i.hf_end_b=this.stream.readByte()),t&32768&&(i.hf_end_dist=this.stream.readLong()),this.handler?.onFog&&this.handler.onFog(i)}parseDamage(){let t=this.stream.readByte(),i=[];for(let n=0;n<t;n++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.readDir(a);let s=r&31,o=(r&32)!==0,c=(r&64)!==0,l=(r&128)!==0;i.push({damage:s,health:o,armor:c,power:l,dir:a})}this.handler?.onDamage&&this.handler.onDamage(i)}parseTempEntity(){let t=this.stream.readByte(),i={x:0,y:0,z:0},n={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,c,l;switch(t){case ie.EXPLOSION1:case ie.EXPLOSION2:case ie.ROCKET_EXPLOSION:case ie.GRENADE_EXPLOSION:case ie.ROCKET_EXPLOSION_WATER:case ie.GRENADE_EXPLOSION_WATER:case ie.BFG_EXPLOSION:case ie.BFG_BIGEXPLOSION:case ie.BOSSTPORT:case ie.PLASMA_EXPLOSION:case ie.PLAIN_EXPLOSION:case ie.CHAINFIST_SMOKE:case ie.TRACKER_EXPLOSION:case ie.TELEPORT_EFFECT:case ie.DBALL_GOAL:case ie.NUKEBLAST:case ie.WIDOWSPLASH:case ie.EXPLOSION1_BIG:case ie.EXPLOSION1_NP:this.readPos(i);break;case ie.GUNSHOT:case ie.BLOOD:case ie.BLASTER:case ie.SHOTGUN:case ie.SPARKS:case ie.BULLET_SPARKS:case ie.SCREEN_SPARKS:case ie.SHIELD_SPARKS:case ie.BLASTER2:case ie.FLECHETTE:case ie.MOREBLOOD:case ie.ELECTRIC_SPARKS:case ie.HEATBEAM_SPARKS:case ie.HEATBEAM_STEAM:this.readPos(i),this.readDir(r);break;case ie.SPLASH:case ie.LASER_SPARKS:case ie.WELDING_SPARKS:case ie.TUNNEL_SPARKS:a=this.stream.readByte(),this.readPos(i),this.readDir(r),s=this.stream.readByte();break;case ie.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.readPos(i),this.readPos(n)):(this.readPos(i),this.readDir(r));break;case ie.GREENBLOOD:this.protocolVersion>=32?(this.readPos(i),this.readDir(r)):(this.readPos(i),this.readPos(n));break;case ie.RAILTRAIL:case ie.BUBBLETRAIL:case ie.BFG_LASER:case ie.DEBUGTRAIL:case ie.BUBBLETRAIL2:this.readPos(i),this.readPos(n);break;case ie.PARASITE_ATTACK:case ie.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.readPos(i),this.readPos(n);break;case ie.GRAPPLE_CABLE:o=this.stream.readShort(),this.readPos(i),this.readPos(n),this.readPos(r);break;case ie.LIGHTNING:c=this.stream.readShort(),l=this.stream.readShort(),this.readPos(i),this.readPos(n);break;case ie.FLASHLIGHT:this.readPos(i),o=this.stream.readShort();break;case ie.FORCEWALL:this.readPos(i),this.readPos(n),s=this.stream.readByte();break;case ie.STEAM:let m=this.stream.readShort();a=this.stream.readByte(),this.readPos(i),this.readDir(r),s=this.stream.readByte(),this.stream.readShort(),m!==-1&&this.stream.readLong();break;case ie.WIDOWBEAMOUT:this.stream.readShort();case ie.HEATBEAM:case ie.MONSTER_HEATBEAM:o=this.stream.readShort(),this.readPos(i),this.readPos(n),this.readDir(r);break}this.handler&&this.handler.onTempEntity(t,i,n,r,a,s,o,c,l)}parseSpawnBaseline(){let t=this.parseEntityBits(),i=Mr();this.parseDelta(Mr(),i,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(i)}parseFrame(){let t=this.stream.readLong(),i=this.stream.readLong(),n=0;this.protocolVersion!==26&&this.protocolVersion!==25&&(n=this.stream.readByte());let r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==U.playerinfo){if(this.strictMode)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s}`);return}let o=this.parsePlayerState(),c=this.stream.readByte();if(c=this.translateCommand(c),c!==U.packetentities&&c!==U.deltapacketentities){if(this.strictMode)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${c}`);return}let l=this.collectPacketEntities();if(this.isDemo===z8){let m=this.stream.readByte();for(let d=0;d<m;d++)this.stream.readByte()}this.isDemo===L8&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:i,surpressCount:n,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!0,entities:l}})}parsePlayerState(){let t=Cg(),i=this.stream.readShort();i&1&&(t.pm_type=this.stream.readByte()),i&2&&(t.origin.x=this.readCoord(),t.origin.y=this.readCoord(),t.origin.z=this.readCoord()),i&4&&(t.velocity.x=this.readCoord(),t.velocity.y=this.readCoord(),t.velocity.z=this.readCoord()),i&8&&(t.pm_time=this.stream.readByte()),i&16&&(t.pm_flags=this.stream.readByte()),i&32&&(t.gravity=this.stream.readShort()),i&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),i&128&&(t.viewoffset.x=(this.stream.readByte()<<24>>24)*.25,t.viewoffset.y=(this.stream.readByte()<<24>>24)*.25,t.viewoffset.z=(this.stream.readByte()<<24>>24)*.25),i&256&&(t.viewangles.x=this.readAngle16(),t.viewangles.y=this.readAngle16(),t.viewangles.z=this.readAngle16()),i&512&&(t.kick_angles.x=(this.stream.readByte()<<24>>24)*.25,t.kick_angles.y=(this.stream.readByte()<<24>>24)*.25,t.kick_angles.z=(this.stream.readByte()<<24>>24)*.25),i&4096&&(t.gun_index=this.stream.readByte()),i&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=(this.stream.readByte()<<24>>24)*.25,t.gun_offset.y=(this.stream.readByte()<<24>>24)*.25,t.gun_offset.z=(this.stream.readByte()<<24>>24)*.25,t.gun_angles.x=(this.stream.readByte()<<24>>24)*.25,t.gun_angles.y=(this.stream.readByte()<<24>>24)*.25,t.gun_angles.z=(this.stream.readByte()<<24>>24)*.25),i&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),i&2048&&(t.fov=this.stream.readByte()),i&16384&&(t.rdflags=this.stream.readByte()),i&32768&&(t.watertype=this.stream.readByte());let n=this.stream.readLong();for(let r=0;r<32;r++)n&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let i=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:Cg(),packetEntities:{delta:t,entities:i}})}collectPacketEntities(){let t=[];for(;;){let i=this.parseEntityBits();if(i.bits&wd){if(i.number===0)break;continue}let n=Mr(),r=i.number===0&&!(i.bits&Ig);if((i.number!==0||r)&&this.parseDelta(Mr(),n,i.number,i.bits,i.bitsHigh),i.number===0)break;t.push(n)}return t}parseEntityBits(){let t=this.stream.readByte();t&Ig&&(t|=this.stream.readByte()<<8),t&x8&&(t|=this.stream.readByte()<<16),t&M8&&(t|=this.stream.readByte()<<24);let i=0;this.protocolVersion===xr&&t&T8&&(i=this.stream.readByte());let n;return t&E8?n=this.stream.readShort():n=this.stream.readByte(),{number:n,bits:t,bitsHigh:i}}parseDelta(t,i,n,r,a=0){i.number=t.number,i.modelindex=t.modelindex,i.modelindex2=t.modelindex2,i.modelindex3=t.modelindex3,i.modelindex4=t.modelindex4,i.frame=t.frame,i.skinnum=t.skinnum,i.effects=t.effects,i.renderfx=t.renderfx,i.origin.x=t.origin.x,i.origin.y=t.origin.y,i.origin.z=t.origin.z,i.old_origin.x=t.origin.x,i.old_origin.y=t.origin.y,i.old_origin.z=t.origin.z,i.angles.x=t.angles.x,i.angles.y=t.angles.y,i.angles.z=t.angles.z,i.sound=t.sound,i.event=t.event,i.solid=t.solid,i.alpha=t.alpha,i.scale=t.scale,i.instanceBits=t.instanceBits,i.loopVolume=t.loopVolume,i.loopAttenuation=t.loopAttenuation,i.owner=t.owner,i.oldFrame=t.oldFrame,i.number=n,i.bits=r,i.bitsHigh=a,r&r_&&(i.modelindex=this.stream.readByte()),r&o_&&(i.modelindex2=this.stream.readByte()),r&c_&&(i.modelindex3=this.stream.readByte()),r&l_&&(i.modelindex4=this.stream.readByte()),r&e_&&(i.frame=this.stream.readByte()),r&s_&&(i.frame=this.stream.readShort()),r&td&&r&rd?i.skinnum=this.stream.readLong():r&td?i.skinnum=this.stream.readByte():r&rd&&(i.skinnum=this.stream.readShort()),r&ed&&r&nd?i.effects=this.stream.readLong():r&ed?i.effects=this.stream.readByte():r&nd&&(i.effects=this.stream.readShort()),r&Qm&&r&id?i.renderfx=this.stream.readLong():r&Qm?i.renderfx=this.stream.readByte():r&id&&(i.renderfx=this.stream.readShort()),r&Z1&&(i.origin.x=this.readCoord()),r&j1&&(i.origin.y=this.readCoord()),r&i_&&(i.origin.z=this.readCoord()),r&n_&&(i.angles.x=this.readAngle()),r&J1&&(i.angles.y=this.readAngle()),r&Q1&&(i.angles.z=this.readAngle()),r&m_&&this.readPos(i.old_origin),r&d_&&(i.sound=this.stream.readByte()),r&t_?i.event=this.stream.readByte():i.event=0,r&u_&&(i.solid=this.stream.readShort()),this.protocolVersion===xr&&(r&a_&&(i.alpha=this.stream.readByte()/255),r&f_&&(i.scale=this.stream.readFloat()),r&h_&&(i.instanceBits=this.stream.readLong()),r&g_&&(i.loopVolume=this.stream.readByte()/255),a&__&&(i.loopAttenuation=this.stream.readByte()/255),a&v_&&(i.owner=this.stream.readShort()),a&p_&&(i.oldFrame=this.stream.readShort()))}};var I8=class{constructor(e){this.events=[],this.summary={totalKills:0,totalDeaths:0,damageDealt:0,damageReceived:0,weaponUsage:new Map},this.header=null,this.configStrings=new Map,this.serverInfo={},this.statistics=null,this.playerStats=new Map,this.weaponStats=new Map,this.activeEntities=new Set,this.buffer=e}analyze(){let e=new h1(this.buffer),t=-1,i=0,n=.1,r=0,a={onServerData:(s,o,c,l,m,d,u,f)=>{r=s,this.header={protocolVersion:s,gameDir:l,levelName:d,playerNum:m,serverCount:o,spawnCount:o,tickRate:u,demoType:f},u&&u>0&&(n=1/u)},onConfigString:(s,o)=>{this.configStrings.set(s,o),s===0&&this.parseServerInfo(o)},onSpawnBaseline:s=>{},onFrame:s=>{let o=new Set;if(s.packetEntities&&s.packetEntities.entities)for(let c of s.packetEntities.entities)o.add(c.number),this.activeEntities.has(c.number)||this.recordEvent({type:"spawn",frame:t,time:i,entityId:c.number,position:{x:c.origin.x,y:c.origin.y,z:c.origin.z},description:`Entity ${c.number} spawned`});this.activeEntities=o,s.playerState&&this.header},onPrint:(s,o)=>{let c=o.replace(/\n/g," ").trim();c.includes("died")||c.includes("killed")||c.includes("suicide")?(this.summary.totalDeaths++,this.recordEvent({type:"death",frame:t,time:i,description:c})):c.startsWith("You got the ")?this.recordEvent({type:"pickup",frame:t,time:i,description:c}):(s===3||s===2)&&this.recordEvent({type:"chat",frame:t,time:i,description:c,data:{level:s}})},onCenterPrint:s=>{this.recordEvent({type:"objective",frame:t,time:i,description:s.trim()})},onStuffText:()=>{},onSound:()=>{},onTempEntity:()=>{},onLayout:()=>{},onInventory:()=>{},onMuzzleFlash:(s,o)=>{this.handleWeaponFire(s,o,t,i)},onMuzzleFlash2:(s,o)=>{this.handleWeaponFire(s,o,t,i)},onMuzzleFlash3:(s,o)=>{this.handleWeaponFire(s,o,t,i)},onDisconnect:()=>{},onReconnect:()=>{},onDownload:()=>{},onDamage:s=>{for(let o of s)if(this.recordEvent({type:"damage_received",frame:t,time:i,value:o.damage,position:o.dir,description:`Took ${o.damage} damage`}),this.summary.damageReceived+=o.damage,this.header){let c=this.getOrCreatePlayerStats(this.header.playerNum);c.damageReceived+=o.damage}}};for(;e.hasMore();){let s=e.readNextBlock();if(!s)break;t++,i=t*n;let o=new Fo(s.data,a);o.setProtocolVersion(r),o.parseMessage(),r=o.getProtocolVersion()}return this.statistics={duration:i,frameCount:t+1,averageFps:(t+1)/(i||1),mapName:this.header?.levelName||"unknown",playerCount:1},{events:this.events,summary:this.summary,header:this.header,configStrings:this.configStrings,serverInfo:this.serverInfo,statistics:this.statistics,playerStats:this.playerStats,weaponStats:this.weaponStats}}handleWeaponFire(e,t,i,n){this.recordEvent({type:"weapon_fire",frame:i,time:n,entityId:e,value:t,description:`Weapon ${t} fired by ${e}`});let r=this.summary.weaponUsage.get(t)||0;this.summary.weaponUsage.set(t,r+1);let a=this.getOrCreateWeaponStat(e,t);a.shotsFired++}recordEvent(e){this.events.push(e)}parseServerInfo(e){let t=e.split("\\");for(let i=1;i<t.length;i+=2)i+1<t.length&&(this.serverInfo[t[i]]=t[i+1])}getOrCreatePlayerStats(e){let t=this.playerStats.get(e);return t||(t={kills:0,deaths:0,damageDealt:0,damageReceived:0,suicides:0},this.playerStats.set(e,t)),t}getOrCreateWeaponStat(e,t){let i=this.weaponStats.get(e);i||(i=[],this.weaponStats.set(e,i));let n=i.find(r=>r.weaponId===t);return n||(n={weaponId:t,shotsFired:0,hits:0,kills:0},i.push(n)),n}};var us=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(us||{}),C8=()=>({onServerData:()=>{},onConfigString:()=>{},onSpawnBaseline:()=>{},onFrame:()=>{},onCenterPrint:()=>{},onStuffText:()=>{},onPrint:()=>{},onSound:()=>{},onTempEntity:()=>{},onLayout:()=>{},onInventory:()=>{},onMuzzleFlash:()=>{},onMuzzleFlash2:()=>{},onDisconnect:()=>{},onReconnect:()=>{},onDownload:()=>{}}),y_=class{constructor(){this.reader=null,this.buffer=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.lastFrameData=null,this.accumulatedTime=0,this.frameDuration=100,this.snapshotInterval=100,this.snapshots=new Map,this.cachedEvents=null,this.cachedSummary=null,this.cachedHeader=null,this.cachedConfigStrings=null,this.cachedServerInfo=null,this.cachedStatistics=null,this.cachedPlayerStats=null,this.cachedWeaponStats=null,this.tracker=null,this.cameraMode=0,this.thirdPersonDistance=80,this.thirdPersonOffset={x:0,y:0,z:0}}setHandler(e){this.handler=e}setCallbacks(e){this.callbacks=e}loadDemo(e){this.buffer=e,this.reader=new h1(e),this.transitionState(0),this.accumulatedTime=0,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.snapshots.clear(),this.lastFrameData=null,this.cachedEvents=null,this.cachedSummary=null,this.cachedHeader=null,this.cachedConfigStrings=null,this.cachedServerInfo=null,this.cachedStatistics=null,this.cachedPlayerStats=null,this.cachedWeaponStats=null}play(){this.reader&&this.state!==1&&this.transitionState(1)}pause(){this.state===1&&this.transitionState(2)}stop(){this.transitionState(0),this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.lastFrameData=null}transitionState(e){this.state!==e&&(this.state=e,this.callbacks?.onPlaybackStateChange&&this.callbacks.onPlaybackStateChange(e))}setFrameDuration(e){this.frameDuration=e}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}getPlaybackSpeed(){return this.playbackSpeed}getInterpolationFactor(){return this.frameDuration<=0?0:Math.max(0,Math.min(1,this.accumulatedTime/this.frameDuration))}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.processNextFrame())return;this.accumulatedTime-=this.frameDuration,this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime())}}stepForward(){this.reader&&(this.processNextFrame(),this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime()))}stepBackward(){this.reader&&this.currentFrameIndex>0&&this.seek(this.currentFrameIndex-1)}seekToTime(e){let t=this.timeToFrame(e);this.seek(t)}seekToFrame(e){this.seek(e)}frameToTime(e){return e*this.frameDuration/1e3}timeToFrame(e){return Math.floor(e*1e3/this.frameDuration)}playFrom(e){if(e.type==="frame")this.seek(e.frame);else if(e.type==="time")this.seekToTime(e.seconds);else throw new Error(`Invalid offset type: ${e.type}`);this.play()}playRange(e,t){let i=e.type==="frame"?e.frame:this.timeToFrame(e.seconds),n=t.type==="frame"?t.frame:this.timeToFrame(t.seconds),r=this.getTotalFrames(),a=Math.max(0,r-1);if(i<0)throw new Error(`Invalid start offset: ${i}`);if(n<i)throw new Error(`End offset (${n}) cannot be before start offset (${i})`);this.playFrom(e);let s=this.callbacks?.onFrameUpdate,o={...this.callbacks,onFrameUpdate:c=>{s&&s(c),this.currentFrameIndex>=n&&(this.pause(),this.callbacks===o&&this.setCallbacks({...this.callbacks,onFrameUpdate:s}),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete())}};this.setCallbacks(o)}seek(e){if(!this.reader)return;let t=this.getTotalFrames();if(t>0&&e>=t&&(e=t-1),e<0&&(e=0),e===this.currentFrameIndex+1){this.processNextFrame(),this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete();return}if(e===this.currentFrameIndex){this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete();return}let i=-1,n=null;if(e>this.currentFrameIndex&&this.currentFrameIndex!==-1&&(i=this.currentFrameIndex),this.callbacks?.onRestoreSnapshot)for(let[r,a]of this.snapshots)r<=e&&r>i&&(i=r,n=a);for(i===-1&&this.currentFrameIndex>e?(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0):i===-1&&(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0),n&&this.callbacks?.onRestoreSnapshot&&(this.callbacks.onRestoreSnapshot(n),this.reader.seekToMessage(i+1)?this.currentFrameIndex=i:(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0));this.currentFrameIndex<e&&(this.callbacks?.onCaptureSnapshot&&(this.currentFrameIndex+1)%this.snapshotInterval,!!this.processNextFrame()););this.accumulatedTime=0,this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete(),this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime())}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.transitionState(3),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),!1;let e=this.reader.readNextBlock();if(!e)return this.transitionState(3),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),!1;this.currentFrameIndex++,this.tracker&&(this.tracker.setCurrentFrame(this.currentFrameIndex),this.tracker.setCurrentTime(this.getCurrentTime()));try{let t={...this.handler||C8(),onFrame:n=>{this.lastFrameData=n,this.handler?.onFrame&&this.handler.onFrame(n),this.callbacks?.onFrameUpdate&&this.callbacks.onFrameUpdate(n)}},i=new Fo(e.data,t);if(i.setProtocolVersion(this.currentProtocolVersion),i.parseMessage(),this.currentProtocolVersion=i.getProtocolVersion(),this.callbacks?.onCaptureSnapshot&&this.currentFrameIndex%this.snapshotInterval===0&&this.currentFrameIndex>0){let n=this.callbacks.onCaptureSnapshot(this.currentFrameIndex);n&&this.snapshots.set(this.currentFrameIndex,n)}}catch(t){return console.error("Error processing demo frame",t),this.callbacks?.onPlaybackError&&this.callbacks.onPlaybackError(t instanceof Error?t:new Error(String(t))),!1}return!0}getState(){return this.state}getCurrentTime(){return this.currentFrameIndex<0?this.accumulatedTime:this.currentFrameIndex*this.frameDuration+this.accumulatedTime}getFrameCount(){return this.reader?this.reader.getMessageCount():0}getTotalFrames(){return this.getFrameCount()}getCurrentFrame(){return this.currentFrameIndex<0?0:this.currentFrameIndex}getDuration(){return this.getFrameCount()*this.frameDuration/1e3}getTotalBytes(){return this.reader?this.reader.getProgress().total:0}getProcessedBytes(){return this.reader?this.reader.getOffset():0}getFrameData(e){if(e===this.currentFrameIndex&&this.lastFrameData)return this.lastFrameData;let t=this.state;return this.pause(),this.seek(e),t===1&&this.play(),this.lastFrameData}getFramePlayerState(e){if(e===this.currentFrameIndex&&this.handler?.getPlayerState){let i=this.handler.getPlayerState();if(i)return i}let t=this.getFrameData(e);return t?t.playerState:null}getFrameEntities(e){if(e===this.currentFrameIndex&&this.handler?.getEntities){let t=this.handler.getEntities();if(t)return Array.from(t.values())}if(this.seek(e),this.handler?.getEntities){let t=this.handler.getEntities();return t?Array.from(t.values()):[]}return[]}compareFrames(e,t){let i=this.getFramePlayerState(e),n=this.getFrameEntities(e),r=new Map;n.forEach(l=>r.set(l.number,l));let a=this.getFramePlayerState(t),s=this.getFrameEntities(t),o=new Map;s.forEach(l=>o.set(l.number,l));let c={frameA:e,frameB:t,playerStateDiff:{origin:null,viewangles:null,health:null,ammo:null},entityDiffs:{added:[],removed:[],moved:[]}};i&&a&&((i.origin.x!==a.origin.x||i.origin.y!==a.origin.y||i.origin.z!==a.origin.z)&&(c.playerStateDiff.origin={x:a.origin.x-i.origin.x,y:a.origin.y-i.origin.y,z:a.origin.z-i.origin.z}),i.stats[1]!==a.stats[1]&&(c.playerStateDiff.health=a.stats[1]-i.stats[1]),i.stats[2]!==a.stats[2]&&(c.playerStateDiff.ammo=a.stats[2]-i.stats[2]));for(let[l,m]of o){let d=r.get(l);d?(d.origin.x!==m.origin.x||d.origin.y!==m.origin.y||d.origin.z!==m.origin.z)&&c.entityDiffs.moved.push({id:l,delta:{x:m.origin.x-d.origin.x,y:m.origin.y-d.origin.y,z:m.origin.z-d.origin.z}}):c.entityDiffs.added.push(l)}for(let[l,m]of r)o.has(l)||c.entityDiffs.removed.push(l);return c}getEntityTrajectory(e,t,i){let n=[],r=this.getCurrentFrame();for(this.seek(t);this.getCurrentFrame()<=i&&this.state!==3;){let a=null;if(e===-1){let s=this.getFramePlayerState(this.getCurrentFrame());s&&(a={...s.origin})}else if(this.handler?.getEntities){let s=this.handler.getEntities().get(e);s&&(a={...s.origin})}if(a&&n.push(a),this.getCurrentFrame()===i)break;this.stepForward()}return this.seek(r),n}getEvents(){return this.ensureAnalysis(),this.cachedEvents||[]}getDemoEvents(){return this.getEvents()}filterEvents(e,t){return this.getDemoEvents().filter(n=>!(n.type!==e||t!==void 0&&n.entityId!==t))}getEventSummary(){return this.ensureAnalysis(),this.cachedSummary||{totalKills:0,totalDeaths:0,damageDealt:0,damageReceived:0,weaponUsage:new Map}}getMetadata(){let e=this.getDemoHeader();if(!e)return null;let t=this.getDemoServerInfo(),i="Unknown";return this.cachedConfigStrings,{mapName:e.levelName,playerName:i,serverName:t.hostname,demoVersion:e.protocolVersion,tickRate:e.tickRate||10}}getDemoHeader(){return this.ensureAnalysis(),this.cachedHeader}getDemoConfigStrings(){return this.ensureAnalysis(),this.cachedConfigStrings||new Map}getDemoServerInfo(){return this.ensureAnalysis(),this.cachedServerInfo||{}}getDemoStatistics(){return this.ensureAnalysis(),this.cachedStatistics}getPlayerStatistics(e){return this.ensureAnalysis(),this.cachedPlayerStats?.get(e)||null}getWeaponStatistics(e){return this.ensureAnalysis(),this.cachedWeaponStats?.get(e)||null}ensureAnalysis(){if(!this.cachedEvents&&this.buffer){let t=new I8(this.buffer).analyze();this.cachedEvents=t.events,this.cachedSummary=t.summary,this.cachedHeader=t.header,this.cachedConfigStrings=t.configStrings,this.cachedServerInfo=t.serverInfo,this.cachedStatistics=t.statistics,this.cachedPlayerStats=t.playerStats,this.cachedWeaponStats=t.weaponStats}}setCameraMode(e){this.cameraMode=e}getCameraMode(){return this.cameraMode}setThirdPersonDistance(e){this.thirdPersonDistance=e}setThirdPersonOffset(e){this.thirdPersonOffset=e}async playWithTracking(e,t={}){if(this.tracker=e,e.startTracking(),t.fastForward)try{this.state===0&&this.reader,this.transitionState(1);let i=100,n=async()=>{if(this.state!==1)throw new Error("Playback stopped unexpectedly during fast forward");let r=0;for(;r<i;){if(!this.processNextFrame()){let a=e.stopTracking();return this.tracker=null,this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),a}r++}return await new Promise(a=>setTimeout(a,0)),n()};return await n()}catch(i){throw e.stopTracking(),this.tracker=null,i}else return new Promise((i,n)=>{let r=this.callbacks?.onPlaybackComplete,a=this.callbacks?.onPlaybackError,s=()=>{this.setCallbacks({...this.callbacks,onPlaybackComplete:r,onPlaybackError:a}),this.tracker=null};this.setCallbacks({...this.callbacks,onPlaybackComplete:()=>{let o=e.stopTracking();r&&r(),s(),i(o)},onPlaybackError:o=>{e.stopTracking(),a&&a(o),s(),n(o)}}),this.play()})}async playRangeWithTracking(e,t,i,n={}){this.tracker=i,i.startTracking();let r=e.type==="frame"?e.frame:this.timeToFrame(e.seconds),a=t.type==="frame"?t.frame:this.timeToFrame(t.seconds);if(n.fastForward)try{this.playFrom(e),this.transitionState(1);let s=100,o=async()=>{if(this.state!==1)throw new Error("Playback stopped unexpectedly during fast forward");let c=0;for(;c<s;){if(this.currentFrameIndex>=a||!this.processNextFrame()){let l=i.stopTracking();return this.tracker=null,this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),l}c++}return await new Promise(l=>setTimeout(l,0)),o()};return await o()}catch(s){throw i.stopTracking(),this.tracker=null,s}else return new Promise((s,o)=>{let c=this.callbacks?.onPlaybackComplete,l=this.callbacks?.onPlaybackError,m=()=>{this.setCallbacks({...this.callbacks,onPlaybackComplete:c,onPlaybackError:l}),this.tracker=null};this.setCallbacks({...this.callbacks,onPlaybackComplete:()=>{let d=i.stopTracking();c&&c(),m(),s(d)},onPlaybackError:d=>{i.stopTracking(),l&&l(d),m(),o(d)}}),this.playRange(e,t)})}},S_=class{constructor(){this.isRecording=!1,this.startTime=0,this.frameCount=0,this.filename=null,this.lastMessageSize=-1,this.messageBuffer=new Ug(1024*1024)}startRecording(e,t=0){this.isRecording||(this.isRecording=!0,this.filename=e,this.startTime=t,this.frameCount=0,this.messageBuffer.reset(),console.log(`DemoRecorder: Started recording to ${e}`))}recordMessage(e){if(this.isRecording){this.messageBuffer.writeLong(e.byteLength);for(let t=0;t<e.length;t++)this.messageBuffer.writeByte(e[t]);this.frameCount++}}stopRecording(){return this.isRecording?(this.isRecording=!1,this.messageBuffer.writeLong(-1),console.log(`DemoRecorder: Stopped recording. Frames: ${this.frameCount}, Size: ${this.messageBuffer.getOffset()} bytes`),this.messageBuffer.getData()):null}getIsRecording(){return this.isRecording}},Tre={[U.bad]:0,[U.nop]:1,[U.disconnect]:2,[U.reconnect]:3,[U.download]:16,[U.frame]:5,[U.inventory]:6,[U.layout]:7,[U.muzzleflash]:8,[U.sound]:9,[U.print]:10,[U.stufftext]:11,[U.serverdata]:12,[U.configstring]:13,[U.spawnbaseline]:14,[U.centerprint]:15,[U.playerinfo]:17,[U.packetentities]:18,[U.deltapacketentities]:19,[U.temp_entity]:23,[U.muzzleflash2]:22};var k_=class{static validate(e,t){if(t&&!t.toLowerCase().endsWith(".dm2"))return{valid:!1,error:"Invalid file extension (expected .dm2)"};if(e.byteLength<5)return{valid:!1,error:"File too small to be a valid demo"};let i=new DataView(e),n=i.getInt32(0,!0);if(n<=0||n>e.byteLength-4)return{valid:!1,error:`Invalid first block length: ${n}`};let r=i.getUint8(4);if(r!==U.serverdata)return{valid:!1,error:`First command is not svc_serverdata (expected ${U.serverdata}, got ${r})`};let a=-1;return n>=5&&(a=i.getInt32(5,!0)),{valid:!0,version:a}}};function A_(e,t){let i=t.bits,n=t.bitsHigh;e.number=t.number,i&r_&&(e.modelindex=t.modelindex),i&o_&&(e.modelindex2=t.modelindex2),i&c_&&(e.modelindex3=t.modelindex3),i&l_&&(e.modelindex4=t.modelindex4),i&e_&&(e.frame=t.frame),i&s_&&(e.frame=t.frame),(i&td||i&rd)&&(e.skinnum=t.skinnum),(i&ed||i&nd)&&(e.effects=t.effects),(i&Qm||i&id)&&(e.renderfx=t.renderfx),i&Z1&&(e.origin.x=t.origin.x),i&j1&&(e.origin.y=t.origin.y),i&i_&&(e.origin.z=t.origin.z),i&n_&&(e.angles.x=t.angles.x),i&J1&&(e.angles.y=t.angles.y),i&Q1&&(e.angles.z=t.angles.z),i&m_&&(e.old_origin.x=t.old_origin.x,e.old_origin.y=t.old_origin.y,e.old_origin.z=t.old_origin.z),i&d_&&(e.sound=t.sound),i&t_&&(e.event=t.event),i&u_&&(e.solid=t.solid),i&a_&&(e.alpha=t.alpha),i&f_&&(e.scale=t.scale),i&h_&&(e.instanceBits=t.instanceBits),i&g_&&(e.loopVolume=t.loopVolume),n&__&&(e.loopAttenuation=t.loopAttenuation),n&v_&&(e.owner=t.owner),n&p_&&(e.oldFrame=t.oldFrame)}var O8=Object.defineProperty,P8=(e,t)=>{for(var i in t)O8(e,i,{get:t[i],enumerable:!0})},xn={x:0,y:0,z:0};var $re=Math.PI/180;function Do(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function E_(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function Fr(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function nn(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function F8(e){return nn(e,e)}function rr(e){return Math.sqrt(F8(e))}function x_(e){let t=rr(e);return t===0?e:Fr(e,1/t)}var M_=0,T_=1,R_=2,D8=Math.PI/180,B8=180/Math.PI;function yd(e,t){switch(t){case M_:return e.x;case T_:return e.y;case R_:default:return e.z}}function Sd(e){return e*D8}function b_(e){return e*B8}function Pr(e){let t=e%360;return t<0?360+t:t}function oi(e){let t=Sd(yd(e,T_)),i=Sd(yd(e,M_)),n=Sd(yd(e,R_)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(i),o=Math.cos(i),c=Math.sin(n),l=Math.cos(n),m={x:o*a,y:o*r,z:-s},d={x:-c*s*a-l*-r,y:-c*s*r-l*a,z:-c*o},u={x:l*s*a-c*-r,y:l*s*r-c*a,z:l*o};return{forward:m,right:d,up:u}}function L_(e){let t=e.x,i=e.y,n=e.z;if(i===0&&t===0)return{x:n>0?-90:-270,y:0,z:0};let r;t?r=b_(Math.atan2(i,t)):i>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+i*i),s=b_(Math.atan2(n,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}var Or=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Fi=1,Mn=2;var ar=8,sr=16,bd=32;var U8=16384;var Uo=65536,z_=1<<17,G8=1<<18,H8=1<<19,V8=1<<20,W8=1<<21,K8=1<<22,$8=1<<23,Xre=1<<24,Go=1<<25,X8=1<<26,qre=1<<27,Yre=1<<28,Zre=1<<29,Ho=1<<30,jre=1<<31;var Jre=1<<25,Qre=1<<28,eae=1<<29,tae=1<<30,iae=1<<31;var nae=Fi|Mn,rae=Fi|Uo|Mn|Go|Ho,aae=Fi|Uo|Mn,sae=Fi|z_|Mn|Go|Ho,kd=bd|ar|sr,oae=Fi|sr|ar,q8=Fi|Go|Ho|Mn|X8,cae=G8|H8|V8|W8|K8|$8,lae=Fi|ar|sr|Go|Ho,mae=Fi|Uo|Mn,dae=Fi|Mn,uae=Fi|Uo|Mn|z_,fae=q8|U8;var hae=Number.MAX_SAFE_INTEGER-1;var ci=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(ci||{});var Tn=256;var Y8=256,hs=8192,gs=2048,_s=512,Z8=256,j8=Tn*2,J8=256,Ad=32;var Se=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.Story=54]="Story",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+hs]="Sounds",e[e.Images=e.Sounds+gs]="Images",e[e.Lights=e.Images+_s]="Lights",e[e.ShadowLights=e.Lights+Y8]="ShadowLights",e[e.Items=e.ShadowLights+J8]="Items",e[e.Players=e.Items+Z8]="Players",e[e.PlayerSkins=e.Players]="PlayerSkins",e[e.General=e.Players+Tn]="General",e[e.WheelWeapons=e.General+j8]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ad]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ad]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ad]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Se||{}),gae=Se.MaxConfigStrings;var _ae=Se.Sounds,vae=Se.Images,pae=Se.Lights,wae=Se.Items,yae=Se.Players,Sae=Se.General,Q8={};P8(Q8,{addReplayFrame:()=>n4,createReplaySession:()=>i4,deserializeReplay:()=>t4,serializeReplay:()=>e4});function e4(e){return JSON.stringify(e,null,2)}function t4(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function i4(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function n4(e,t,i,n){e.frames.push({serverFrame:i,cmd:t,timestamp:Date.now()-n})}var vs=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(vs||{});var rn=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(rn||{});function Dr(e,t){return(e&t)!==0}var Vo=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(Vo||{}),Di=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Attack2=32]="Attack2",e[e.Any=128]="Any",e))(Di||{});function r4(e){let{velocity:t,frametime:i,onGround:n,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:c,pmWaterFriction:l}=e,m=rr(t);if(m<1)return{x:0,y:0,z:t.z};let d=0;if(n&&!r||a){let h=m<c?c:m;d+=h*o*i}s>0&&!a&&(d+=m*l*s*i);let u=m-d;if(u<0&&(u=0),u===m)return t;let f=u/m;return Fr(t,f)}function a4(e){let{velocity:t,wishdir:i,wishspeed:n,accel:r,frametime:a}=e,s=nn(t,i),o=n-s;if(o<=0)return t;let c=r*a*n;return c>o&&(c=o),{x:t.x+i.x*c,y:t.y+i.y*c,z:t.z+i.z*c}}function s4(e){let{forward:t,right:i,cmd:n,maxSpeed:r}=e,a={x:t.x*n.forwardmove+i.x*n.sidemove,y:t.y*n.forwardmove+i.y*n.sidemove,z:0},s=rr(a);if(s>r){let o=r/s;a=Fr(a,o),s=r}return{wishdir:s===0?a:x_(a),wishspeed:s}}function o4(e){let{forward:t,right:i,cmd:n,maxSpeed:r}=e,a={x:t.x*n.forwardmove+i.x*n.sidemove,y:t.y*n.forwardmove+i.y*n.sidemove,z:t.z*n.forwardmove+i.z*n.sidemove};n.upmove>10?a=Do(a,{x:0,y:0,z:n.upmove}):n.upmove<-10?a=Do(a,{x:0,y:0,z:n.upmove}):Math.abs(n.forwardmove)<10&&Math.abs(n.sidemove)<10?a=Do(a,{x:0,y:0,z:-60}):a=Do(a,{x:0,y:0,z:10});let s=rr(a);if(s>r){let o=r/s;a=Fr(a,o),s=r}return s*=.5,{wishdir:s===0?a:x_(a),wishspeed:s}}function c4(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function l4(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Ed(e){let{pmFlags:t,cmdAngles:i,deltaAngles:n}=e,r;(t&32)!==0?r={x:0,y:i.y+n.y,z:0}:(r=c4(i,n),r={...r,x:l4(r.x)});let a=oi(r);return{viewangles:r,...a}}var N_=200,I_=200,C_=200,O_=140,P_=150,F_=3;function m4(e){let t=Pr(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function D_(e,t){return{x:m4(e.x+t.x),y:Pr(e.y+t.y),z:Pr(e.z+t.z)}}function B_(e,t){let i=t.sensitivityX??t.sensitivity,n=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*n,y:e.deltaX*i,z:0}}var or=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(or||{}),Xe=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(Xe||{});var U_=64;var Br=0,Ur=1,Gr=2,Hr=3,Vr=4,Wr=5,Kr=6,$r=7,Xr=8;var qr=11,Yr=12,Zr=13,G_=16,Wo=17,H_=18;var V_=30;var W_=33;function d4(e,t,i){let n=Math.floor(i/2),r=i%2!==0,a=t+n,s=e[a]||0;if(r){let o=e[a+1]||0,c=s>>>8&255;return(o&255)<<8|c}else return s&65535}function K_(e,t,i,n){let r=n*i,a=Math.floor(r/8),s=r%8,o=(1<<n)-1<<s;return(d4(e,t,a)&o)>>>s}var ps=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(ps||{}),yt=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(yt||{}),$_=12,X_=9,kae=Math.ceil($_*X_/16),q_=23,Y_=2,Aae=Math.ceil(q_*Y_/16),u4={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function Z_(e,t){return t<0||t>=$_?0:K_(e,34,t,X_)}function Ko(e,t){let i;return typeof t=="number"?i=t:i=u4[t],i===void 0||i<0||i>=q_?0:K_(e,41,i,Y_)}function j_(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var Xt=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e[e.Flashlight=2097152]="Flashlight",e))(Xt||{}),f4=[0,145,227,114,7,150,228,117,14,159,237,124,9,152,234,123,28,141,255,110,27,138,248,105,18,131,241,96,21,132,246,103,56,169,219,74,63,174,220,77,54,167,213,68,49,160,210,67,36,181,199,86,35,178,192,81,42,187,201,88,45,188,206,95,112,225,147,2,119,230,148,5,126,239,157,12,121,232,154,11,108,253,143,30,107,250,136,25,98,243,129,16,101,244,134,23,72,217,171,58,79,222,172,61,70,215,165,52,65,208,162,51,84,197,183,38,83,194,176,33,90,203,185,40,93,204,190,47,224,113,3,146,231,118,4,149,238,127,13,156,233,120,10,155,252,109,31,142,251,106,24,137,242,99,17,128,245,100,22,135,216,73,59,170,223,78,60,173,214,71,53,164,209,64,50,163,196,85,39,182,195,82,32,177,202,91,41,184,205,92,46,191,144,1,115,226,151,6,116,229,158,15,125,236,153,8,122,235,140,29,111,254,139,26,104,249,130,19,97,240,133,20,102,247,168,57,75,218,175,62,76,221,166,55,69,212,161,48,66,211,180,37,86,199,179,34,80,193,186,43,89,200,189,44,94,207];function J_(e){let t=0;for(let i=0;i<e.length;i++)t=f4[(t^e[i])&255];return t}var qt=(e=>(e[e.Rotate=4]="Rotate",e[e.Gib=8]="Gib",e[e.RotateScript=16]="RotateScript",e[e.Blaster=32]="Blaster",e[e.Rocket=64]="Rocket",e[e.Grenade=128]="Grenade",e[e.HyperBlaster=256]="HyperBlaster",e[e.Bfg=512]="Bfg",e[e.ColorShell=1024]="ColorShell",e[e.Powerscreen=2048]="Powerscreen",e[e.Anim01=4096]="Anim01",e[e.Anim23=8192]="Anim23",e[e.AnimAll=16384]="AnimAll",e[e.AnimAllFast=32768]="AnimAllFast",e[e.Quad=65536]="Quad",e[e.Pent=131072]="Pent",e[e.Explosion=262144]="Explosion",e[e.Teleport=524288]="Teleport",e[e.Flag1=1048576]="Flag1",e[e.Flag2=2097152]="Flag2",e[e.Boomerang=4194304]="Boomerang",e[e.Greengibs=8388608]="Greengibs",e[e.Bluehyperblaster=16777216]="Bluehyperblaster",e[e.Spinning=33554432]="Spinning",e[e.Plasma=67108864]="Plasma",e[e.Trap=134217728]="Trap",e[e.Tracker=268435456]="Tracker",e[e.Double=536870912]="Double",e[e.Sphinx=1073741824]="Sphinx",e[e.TagTrail=2147483648]="TagTrail",e))(qt||{});var bae=1<<17,Eae=1<<18,xae=1<<19,Mae=1<<20,Tae=1<<21,Rae=1<<22,Lae=1<<23,zae=1<<24,Nae=1<<25,Iae=1<<26,Cae=1<<27,Oae=1<<28,Pae=1<<29,Fae=1<<30;var fs=.025,Bo={None:0,Feet:1,Waist:2,Under:3},h4=(e,t)=>{let i={...e.origin};i.z-=.25;let n=t(e.origin,i);return{...e,onGround:n.fraction<1}},g4=(e,t)=>{let i={...e.origin},{mins:n,maxs:r}=e;i.z=e.origin.z+n.z+1;let a=t(i);if(!(a&kd))return{...e,waterLevel:Bo.None,watertype:0};let s=Bo.Feet,o=a,c=e.origin.z+(n.z+r.z)*.5;i.z=c;let l=t(i);if(l&kd){s=Bo.Waist,o=l;let m=e.origin.z+22;i.z=m;let d=t(i);d&kd&&(s=Bo.Under,o=d)}return{...e,waterLevel:s,watertype:o}},xd=(e,t,i,n)=>{let r={...e};r=h4(r,i),r=g4(r,n);let{origin:a,velocity:s,onGround:o,waterLevel:c,viewAngles:l}=r,m=c>=2?l:{x:l.x>180?(l.x-360)/3:l.x/3,y:l.y,z:l.z},{forward:d,right:u}=oi(m),f=r4({velocity:s,frametime:fs,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:c,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),h=c>=2?o4({forward:d,right:u,cmd:t,maxSpeed:320}):s4({forward:d,right:u,cmd:t,maxSpeed:320}),_=a4({velocity:f,wishdir:h.wishdir,wishspeed:h.wishspeed,accel:o||c>=2?10:1,frametime:fs}),g=i(a,{x:a.x+_.x*fs,y:a.y+_.y*fs,z:a.z+_.z*fs});return{...r,origin:g.endpos,velocity:_}},Q_=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}getReadPosition(){return this.offset}getLength(){return this.length}getRemaining(){return this.length-this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}setReadPosition(e){this.seek(e)}hasMore(){return this.offset<this.length}hasBytes(e){return this.offset+e<=this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let i=Or[t];e.x=i[0],e.y=i[1],e.z=i[2]}},Md=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),i=new Uint8Array(t);i.set(this.buffer),this.buffer=i,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeBytes(e){this.ensureSpace(e.byteLength),this.buffer.set(e,this.offset),this.offset+=e.byteLength}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let i=0;i<t;i++)this.view.setUint8(this.offset+i,e.charCodeAt(i));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,i=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let n=0;n<Or.length;n++){let r=Or[n],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,i=n)}this.writeByte(i)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},ws=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),i=new Uint8Array(t);i.set(this.buffer),this.buffer=i,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let i=0;i<e.length;i++)this.view.setUint8(this.offset+i,e.charCodeAt(i));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,i){let n=0,r=-999999,a=Math.sqrt(e*e+t*t+i*i);if(a>0){e/=a,t/=a,i/=a;for(let s=0;s<162;s++){let o=e*Or[s][0]+t*Or[s][1]+i*Or[s][2];o>r&&(r=o,n=s)}}this.writeByte(n)}},nr=class Et{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Md(Et.MAX_RELIABLE_BUFFER);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,i=null){this.qport=t,this.remoteAddress=i,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let i=0,n=!1,r=0;this.reliableLength>0&&(this.reliableLength>Et.FRAGMENT_SIZE?(n=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),i=this.reliableLength-this.fragmentSendOffset,i>Et.FRAGMENT_SIZE&&(i=Et.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=i):i=this.reliableLength);let a=Et.PACKET_HEADER,s=i>0?2+(n?8:0):0,o=t?t.length:0;a+s+i+o>Et.MAX_MSGLEN&&(o=Et.MAX_MSGLEN-a-s-i,o<0&&(o=0));let c=new ArrayBuffer(a+s+i+o),l=new DataView(c),m=new Uint8Array(c),d=this.outgoingSequence;i>0&&(d|=2147483648,(this.outgoingReliableSequence&1)!==0&&(d|=1073741824)),l.setUint32(0,d,!0);let u=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(u|=2147483648),l.setUint32(4,u,!0),l.setUint16(8,this.qport,!0);let f=a;if(i>0){let h=i;n&&(h|=32768),l.setUint16(f,h,!0),f+=2,n&&(l.setUint32(f,r,!0),f+=4,l.setUint32(f,this.reliableLength,!0),f+=4);let g=this.reliableMessage.getBuffer().subarray(r,r+i);m.set(g,f),f+=i}if(t&&o>0){let h=t.slice(0,o);m.set(h,f)}return m}process(t){if(t.length<Et.PACKET_HEADER)return null;this.lastReceived=Date.now();let i=new DataView(t.buffer,t.byteOffset,t.byteLength),n=i.getUint32(0,!0),r=i.getUint32(4,!0),a=i.getUint16(8,!0);if(this.qport!==a)return null;let s=n&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,c=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let h=c?1:0,_=this.outgoingReliableSequence&1;h!==_&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let l=(n&2147483648)!==0,m=(n&1073741824)!==0?1:0,d=Et.PACKET_HEADER,u=null;if(l){if(d+2>t.byteLength)return null;let h=i.getUint16(d,!0);d+=2;let _=(h&32768)!==0;h&=32767;let g=this.incomingReliableSequence&1;if(m===g)if(_){if(d+8>t.byteLength)return null;let v=i.getUint32(d,!0);d+=4;let A=i.getUint32(d,!0);if(d+=4,A>Et.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${A} > ${Et.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==A)&&(this.fragmentBuffer=new Uint8Array(A),this.fragmentLength=A,this.fragmentReceived=0),d+h>t.byteLength)return null;let k=t.subarray(d,d+h);v===this.fragmentReceived&&v+h<=A&&(this.fragmentBuffer.set(k,v),this.fragmentReceived+=h,this.fragmentReceived>=A&&(u=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,d+h>t.byteLength)return null;u=t.slice(d,d+h)}d+=h}let f=t.slice(d);if(u&&u.length>0){let h=u.length+f.length,_=new Uint8Array(h);return _.set(u,0),_.set(f,u.length),_}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Et.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Et.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Et.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let i=t.length+1;if(this.reliableLength+i>Et.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=i}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,i=3e4){return t-this.lastReceived>i}};nr.MAX_MSGLEN=1400;nr.FRAGMENT_SIZE=1024;nr.PACKET_HEADER=10;nr.HEADER_OVERHEAD=nr.PACKET_HEADER+2;nr.MAX_RELIABLE_BUFFER=262144;var ev=nr;var tv=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(tv||{}),Dae=Object.keys(tv).length/2;var $o=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],iv={blaster:null,shotgun:1,supershotgun:1,machinegun:0,chaingun:0,grenades:3,grenadelauncher:3,rocketlauncher:2,hyperblaster:4,railgun:5,bfg10k:4,grapple:null,chainfist:null,etf_rifle:8,prox_launcher:11,ionripper:4,plasmabeam:4,phalanx:6,disruptor:10,trap:7};var De=1e-6,li=typeof Float32Array<"u"?Float32Array:Array,Td=Math.random;function Xo(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Vae=Math.PI/180,Wae=180/Math.PI;var an={};Am(an,{add:()=>eR,adjoint:()=>A4,clone:()=>v4,copy:()=>p4,create:()=>_4,decompose:()=>U4,determinant:()=>b4,equals:()=>rR,exactEquals:()=>nR,frob:()=>Q4,fromQuat:()=>V4,fromQuat2:()=>F4,fromRotation:()=>I4,fromRotationTranslation:()=>sv,fromRotationTranslationScale:()=>G4,fromRotationTranslationScaleOrigin:()=>H4,fromScaling:()=>N4,fromTranslation:()=>z4,fromValues:()=>w4,fromXRotation:()=>C4,fromYRotation:()=>O4,fromZRotation:()=>P4,frustum:()=>W4,getRotation:()=>B4,getScaling:()=>ov,getTranslation:()=>D4,identity:()=>rv,invert:()=>k4,lookAt:()=>Z4,mul:()=>aR,multiply:()=>av,multiplyScalar:()=>tR,multiplyScalarAndAdd:()=>iR,ortho:()=>q4,orthoNO:()=>lv,orthoZO:()=>Y4,perspective:()=>K4,perspectiveFromFieldOfView:()=>X4,perspectiveNO:()=>cv,perspectiveZO:()=>$4,rotate:()=>M4,rotateX:()=>T4,rotateY:()=>R4,rotateZ:()=>L4,scale:()=>x4,set:()=>y4,str:()=>J4,sub:()=>sR,subtract:()=>mv,targetTo:()=>j4,translate:()=>E4,transpose:()=>S4});function _4(){var e=new li(16);return li!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function v4(e){var t=new li(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function p4(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function w4(e,t,i,n,r,a,s,o,c,l,m,d,u,f,h,_){var g=new li(16);return g[0]=e,g[1]=t,g[2]=i,g[3]=n,g[4]=r,g[5]=a,g[6]=s,g[7]=o,g[8]=c,g[9]=l,g[10]=m,g[11]=d,g[12]=u,g[13]=f,g[14]=h,g[15]=_,g}function y4(e,t,i,n,r,a,s,o,c,l,m,d,u,f,h,_,g){return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=c,e[8]=l,e[9]=m,e[10]=d,e[11]=u,e[12]=f,e[13]=h,e[14]=_,e[15]=g,e}function rv(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function S4(e,t){if(e===t){var i=t[1],n=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=i,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function k4(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],m=t[8],d=t[9],u=t[10],f=t[11],h=t[12],_=t[13],g=t[14],v=t[15],A=i*o-n*s,k=i*c-r*s,y=i*l-a*s,b=n*c-r*o,S=n*l-a*o,x=r*l-a*c,R=m*_-d*h,z=m*g-u*h,E=m*v-f*h,D=d*g-u*_,$=d*v-f*_,j=u*v-f*g,q=A*j-k*$+y*D+b*E-S*z+x*R;return q?(q=1/q,e[0]=(o*j-c*$+l*D)*q,e[1]=(r*$-n*j-a*D)*q,e[2]=(_*x-g*S+v*b)*q,e[3]=(u*S-d*x-f*b)*q,e[4]=(c*E-s*j-l*z)*q,e[5]=(i*j-r*E+a*z)*q,e[6]=(g*y-h*x-v*k)*q,e[7]=(m*x-u*y+f*k)*q,e[8]=(s*$-o*E+l*R)*q,e[9]=(n*E-i*$-a*R)*q,e[10]=(h*S-_*y+v*A)*q,e[11]=(d*y-m*S-f*A)*q,e[12]=(o*z-s*D-c*R)*q,e[13]=(i*D-n*z+r*R)*q,e[14]=(_*k-h*b-g*A)*q,e[15]=(m*b-d*k+u*A)*q,e):null}function A4(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],m=t[8],d=t[9],u=t[10],f=t[11],h=t[12],_=t[13],g=t[14],v=t[15],A=i*o-n*s,k=i*c-r*s,y=i*l-a*s,b=n*c-r*o,S=n*l-a*o,x=r*l-a*c,R=m*_-d*h,z=m*g-u*h,E=m*v-f*h,D=d*g-u*_,$=d*v-f*_,j=u*v-f*g;return e[0]=o*j-c*$+l*D,e[1]=r*$-n*j-a*D,e[2]=_*x-g*S+v*b,e[3]=u*S-d*x-f*b,e[4]=c*E-s*j-l*z,e[5]=i*j-r*E+a*z,e[6]=g*y-h*x-v*k,e[7]=m*x-u*y+f*k,e[8]=s*$-o*E+l*R,e[9]=n*E-i*$-a*R,e[10]=h*S-_*y+v*A,e[11]=d*y-m*S-f*A,e[12]=o*z-s*D-c*R,e[13]=i*D-n*z+r*R,e[14]=_*k-h*b-g*A,e[15]=m*b-d*k+u*A,e}function b4(e){var t=e[0],i=e[1],n=e[2],r=e[3],a=e[4],s=e[5],o=e[6],c=e[7],l=e[8],m=e[9],d=e[10],u=e[11],f=e[12],h=e[13],_=e[14],g=e[15],v=t*s-i*a,A=t*o-n*a,k=i*o-n*s,y=l*h-m*f,b=l*_-d*f,S=m*_-d*h,x=t*S-i*b+n*y,R=a*S-s*b+o*y,z=l*k-m*A+d*v,E=f*k-h*A+_*v;return c*x-r*R+g*z-u*E}function av(e,t,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],c=t[5],l=t[6],m=t[7],d=t[8],u=t[9],f=t[10],h=t[11],_=t[12],g=t[13],v=t[14],A=t[15],k=i[0],y=i[1],b=i[2],S=i[3];return e[0]=k*n+y*o+b*d+S*_,e[1]=k*r+y*c+b*u+S*g,e[2]=k*a+y*l+b*f+S*v,e[3]=k*s+y*m+b*h+S*A,k=i[4],y=i[5],b=i[6],S=i[7],e[4]=k*n+y*o+b*d+S*_,e[5]=k*r+y*c+b*u+S*g,e[6]=k*a+y*l+b*f+S*v,e[7]=k*s+y*m+b*h+S*A,k=i[8],y=i[9],b=i[10],S=i[11],e[8]=k*n+y*o+b*d+S*_,e[9]=k*r+y*c+b*u+S*g,e[10]=k*a+y*l+b*f+S*v,e[11]=k*s+y*m+b*h+S*A,k=i[12],y=i[13],b=i[14],S=i[15],e[12]=k*n+y*o+b*d+S*_,e[13]=k*r+y*c+b*u+S*g,e[14]=k*a+y*l+b*f+S*v,e[15]=k*s+y*m+b*h+S*A,e}function E4(e,t,i){var n=i[0],r=i[1],a=i[2],s,o,c,l,m,d,u,f,h,_,g,v;return t===e?(e[12]=t[0]*n+t[4]*r+t[8]*a+t[12],e[13]=t[1]*n+t[5]*r+t[9]*a+t[13],e[14]=t[2]*n+t[6]*r+t[10]*a+t[14],e[15]=t[3]*n+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],c=t[2],l=t[3],m=t[4],d=t[5],u=t[6],f=t[7],h=t[8],_=t[9],g=t[10],v=t[11],e[0]=s,e[1]=o,e[2]=c,e[3]=l,e[4]=m,e[5]=d,e[6]=u,e[7]=f,e[8]=h,e[9]=_,e[10]=g,e[11]=v,e[12]=s*n+m*r+h*a+t[12],e[13]=o*n+d*r+_*a+t[13],e[14]=c*n+u*r+g*a+t[14],e[15]=l*n+f*r+v*a+t[15]),e}function x4(e,t,i){var n=i[0],r=i[1],a=i[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function M4(e,t,i,n){var r=n[0],a=n[1],s=n[2],o=Math.sqrt(r*r+a*a+s*s),c,l,m,d,u,f,h,_,g,v,A,k,y,b,S,x,R,z,E,D,$,j,q,be;return o<De?null:(o=1/o,r*=o,a*=o,s*=o,c=Math.sin(i),l=Math.cos(i),m=1-l,d=t[0],u=t[1],f=t[2],h=t[3],_=t[4],g=t[5],v=t[6],A=t[7],k=t[8],y=t[9],b=t[10],S=t[11],x=r*r*m+l,R=a*r*m+s*c,z=s*r*m-a*c,E=r*a*m-s*c,D=a*a*m+l,$=s*a*m+r*c,j=r*s*m+a*c,q=a*s*m-r*c,be=s*s*m+l,e[0]=d*x+_*R+k*z,e[1]=u*x+g*R+y*z,e[2]=f*x+v*R+b*z,e[3]=h*x+A*R+S*z,e[4]=d*E+_*D+k*$,e[5]=u*E+g*D+y*$,e[6]=f*E+v*D+b*$,e[7]=h*E+A*D+S*$,e[8]=d*j+_*q+k*be,e[9]=u*j+g*q+y*be,e[10]=f*j+v*q+b*be,e[11]=h*j+A*q+S*be,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function T4(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[4],s=t[5],o=t[6],c=t[7],l=t[8],m=t[9],d=t[10],u=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+l*n,e[5]=s*r+m*n,e[6]=o*r+d*n,e[7]=c*r+u*n,e[8]=l*r-a*n,e[9]=m*r-s*n,e[10]=d*r-o*n,e[11]=u*r-c*n,e}function R4(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[0],s=t[1],o=t[2],c=t[3],l=t[8],m=t[9],d=t[10],u=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-l*n,e[1]=s*r-m*n,e[2]=o*r-d*n,e[3]=c*r-u*n,e[8]=a*n+l*r,e[9]=s*n+m*r,e[10]=o*n+d*r,e[11]=c*n+u*r,e}function L4(e,t,i){var n=Math.sin(i),r=Math.cos(i),a=t[0],s=t[1],o=t[2],c=t[3],l=t[4],m=t[5],d=t[6],u=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+l*n,e[1]=s*r+m*n,e[2]=o*r+d*n,e[3]=c*r+u*n,e[4]=l*r-a*n,e[5]=m*r-s*n,e[6]=d*r-o*n,e[7]=u*r-c*n,e}function z4(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function N4(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function I4(e,t,i){var n=i[0],r=i[1],a=i[2],s=Math.sqrt(n*n+r*r+a*a),o,c,l;return s<De?null:(s=1/s,n*=s,r*=s,a*=s,o=Math.sin(t),c=Math.cos(t),l=1-c,e[0]=n*n*l+c,e[1]=r*n*l+a*o,e[2]=a*n*l-r*o,e[3]=0,e[4]=n*r*l-a*o,e[5]=r*r*l+c,e[6]=a*r*l+n*o,e[7]=0,e[8]=n*a*l+r*o,e[9]=r*a*l-n*o,e[10]=a*a*l+c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function C4(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=i,e[7]=0,e[8]=0,e[9]=-i,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function O4(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-i,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=i,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function P4(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=i,e[2]=0,e[3]=0,e[4]=-i,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function sv(e,t,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=n+n,c=r+r,l=a+a,m=n*o,d=n*c,u=n*l,f=r*c,h=r*l,_=a*l,g=s*o,v=s*c,A=s*l;return e[0]=1-(f+_),e[1]=d+A,e[2]=u-v,e[3]=0,e[4]=d-A,e[5]=1-(m+_),e[6]=h+g,e[7]=0,e[8]=u+v,e[9]=h-g,e[10]=1-(m+f),e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function F4(e,t){var i=new li(3),n=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],c=t[5],l=t[6],m=t[7],d=n*n+r*r+a*a+s*s;return d>0?(i[0]=(o*s+m*n+c*a-l*r)*2/d,i[1]=(c*s+m*r+l*n-o*a)*2/d,i[2]=(l*s+m*a+o*r-c*n)*2/d):(i[0]=(o*s+m*n+c*a-l*r)*2,i[1]=(c*s+m*r+l*n-o*a)*2,i[2]=(l*s+m*a+o*r-c*n)*2),sv(e,t,i),e}function D4(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function ov(e,t){var i=t[0],n=t[1],r=t[2],a=t[4],s=t[5],o=t[6],c=t[8],l=t[9],m=t[10];return e[0]=Math.sqrt(i*i+n*n+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(c*c+l*l+m*m),e}function B4(e,t){var i=new li(3);ov(i,t);var n=1/i[0],r=1/i[1],a=1/i[2],s=t[0]*n,o=t[1]*r,c=t[2]*a,l=t[4]*n,m=t[5]*r,d=t[6]*a,u=t[8]*n,f=t[9]*r,h=t[10]*a,_=s+m+h,g=0;return _>0?(g=Math.sqrt(_+1)*2,e[3]=.25*g,e[0]=(d-f)/g,e[1]=(u-c)/g,e[2]=(o-l)/g):s>m&&s>h?(g=Math.sqrt(1+s-m-h)*2,e[3]=(d-f)/g,e[0]=.25*g,e[1]=(o+l)/g,e[2]=(u+c)/g):m>h?(g=Math.sqrt(1+m-s-h)*2,e[3]=(u-c)/g,e[0]=(o+l)/g,e[1]=.25*g,e[2]=(d+f)/g):(g=Math.sqrt(1+h-s-m)*2,e[3]=(o-l)/g,e[0]=(u+c)/g,e[1]=(d+f)/g,e[2]=.25*g),e}function U4(e,t,i,n){t[0]=n[12],t[1]=n[13],t[2]=n[14];var r=n[0],a=n[1],s=n[2],o=n[4],c=n[5],l=n[6],m=n[8],d=n[9],u=n[10];i[0]=Math.sqrt(r*r+a*a+s*s),i[1]=Math.sqrt(o*o+c*c+l*l),i[2]=Math.sqrt(m*m+d*d+u*u);var f=1/i[0],h=1/i[1],_=1/i[2],g=r*f,v=a*h,A=s*_,k=o*f,y=c*h,b=l*_,S=m*f,x=d*h,R=u*_,z=g+y+R,E=0;return z>0?(E=Math.sqrt(z+1)*2,e[3]=.25*E,e[0]=(b-x)/E,e[1]=(S-A)/E,e[2]=(v-k)/E):g>y&&g>R?(E=Math.sqrt(1+g-y-R)*2,e[3]=(b-x)/E,e[0]=.25*E,e[1]=(v+k)/E,e[2]=(S+A)/E):y>R?(E=Math.sqrt(1+y-g-R)*2,e[3]=(S-A)/E,e[0]=(v+k)/E,e[1]=.25*E,e[2]=(b+x)/E):(E=Math.sqrt(1+R-g-y)*2,e[3]=(v-k)/E,e[0]=(S+A)/E,e[1]=(b+x)/E,e[2]=.25*E),e}function G4(e,t,i,n){var r=t[0],a=t[1],s=t[2],o=t[3],c=r+r,l=a+a,m=s+s,d=r*c,u=r*l,f=r*m,h=a*l,_=a*m,g=s*m,v=o*c,A=o*l,k=o*m,y=n[0],b=n[1],S=n[2];return e[0]=(1-(h+g))*y,e[1]=(u+k)*y,e[2]=(f-A)*y,e[3]=0,e[4]=(u-k)*b,e[5]=(1-(d+g))*b,e[6]=(_+v)*b,e[7]=0,e[8]=(f+A)*S,e[9]=(_-v)*S,e[10]=(1-(d+h))*S,e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function H4(e,t,i,n,r){var a=t[0],s=t[1],o=t[2],c=t[3],l=a+a,m=s+s,d=o+o,u=a*l,f=a*m,h=a*d,_=s*m,g=s*d,v=o*d,A=c*l,k=c*m,y=c*d,b=n[0],S=n[1],x=n[2],R=r[0],z=r[1],E=r[2],D=(1-(_+v))*b,$=(f+y)*b,j=(h-k)*b,q=(f-y)*S,be=(1-(u+v))*S,M=(g+A)*S,N=(h+k)*x,G=(g-A)*x,he=(1-(u+_))*x;return e[0]=D,e[1]=$,e[2]=j,e[3]=0,e[4]=q,e[5]=be,e[6]=M,e[7]=0,e[8]=N,e[9]=G,e[10]=he,e[11]=0,e[12]=i[0]+R-(D*R+q*z+N*E),e[13]=i[1]+z-($*R+be*z+G*E),e[14]=i[2]+E-(j*R+M*z+he*E),e[15]=1,e}function V4(e,t){var i=t[0],n=t[1],r=t[2],a=t[3],s=i+i,o=n+n,c=r+r,l=i*s,m=n*s,d=n*o,u=r*s,f=r*o,h=r*c,_=a*s,g=a*o,v=a*c;return e[0]=1-d-h,e[1]=m+v,e[2]=u-g,e[3]=0,e[4]=m-v,e[5]=1-l-h,e[6]=f+_,e[7]=0,e[8]=u+g,e[9]=f-_,e[10]=1-l-d,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function W4(e,t,i,n,r,a,s){var o=1/(i-t),c=1/(r-n),l=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*c,e[6]=0,e[7]=0,e[8]=(i+t)*o,e[9]=(r+n)*c,e[10]=(s+a)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*l,e[15]=0,e}function cv(e,t,i,n,r){var a=1/Math.tan(t/2);if(e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(n-r);e[10]=(r+n)*s,e[14]=2*r*n*s}else e[10]=-1,e[14]=-2*n;return e}var K4=cv;function $4(e,t,i,n,r){var a=1/Math.tan(t/2);if(e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(n-r);e[10]=r*s,e[14]=r*n*s}else e[10]=-1,e[14]=-n;return e}function X4(e,t,i,n){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),c=2/(s+o),l=2/(r+a);return e[0]=c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=l,e[6]=0,e[7]=0,e[8]=-((s-o)*c*.5),e[9]=(r-a)*l*.5,e[10]=n/(i-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*i/(i-n),e[15]=0,e}function lv(e,t,i,n,r,a,s){var o=1/(t-i),c=1/(n-r),l=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+i)*o,e[13]=(r+n)*c,e[14]=(s+a)*l,e[15]=1,e}var q4=lv;function Y4(e,t,i,n,r,a,s){var o=1/(t-i),c=1/(n-r),l=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=l,e[11]=0,e[12]=(t+i)*o,e[13]=(r+n)*c,e[14]=a*l,e[15]=1,e}function Z4(e,t,i,n){var r,a,s,o,c,l,m,d,u,f,h=t[0],_=t[1],g=t[2],v=n[0],A=n[1],k=n[2],y=i[0],b=i[1],S=i[2];return Math.abs(h-y)<De&&Math.abs(_-b)<De&&Math.abs(g-S)<De?rv(e):(m=h-y,d=_-b,u=g-S,f=1/Math.sqrt(m*m+d*d+u*u),m*=f,d*=f,u*=f,r=A*u-k*d,a=k*m-v*u,s=v*d-A*m,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=d*s-u*a,c=u*r-m*s,l=m*a-d*r,f=Math.sqrt(o*o+c*c+l*l),f?(f=1/f,o*=f,c*=f,l*=f):(o=0,c=0,l=0),e[0]=r,e[1]=o,e[2]=m,e[3]=0,e[4]=a,e[5]=c,e[6]=d,e[7]=0,e[8]=s,e[9]=l,e[10]=u,e[11]=0,e[12]=-(r*h+a*_+s*g),e[13]=-(o*h+c*_+l*g),e[14]=-(m*h+d*_+u*g),e[15]=1,e)}function j4(e,t,i,n){var r=t[0],a=t[1],s=t[2],o=n[0],c=n[1],l=n[2],m=r-i[0],d=a-i[1],u=s-i[2],f=m*m+d*d+u*u;f>0&&(f=1/Math.sqrt(f),m*=f,d*=f,u*=f);var h=c*u-l*d,_=l*m-o*u,g=o*d-c*m;return f=h*h+_*_+g*g,f>0&&(f=1/Math.sqrt(f),h*=f,_*=f,g*=f),e[0]=h,e[1]=_,e[2]=g,e[3]=0,e[4]=d*g-u*_,e[5]=u*h-m*g,e[6]=m*_-d*h,e[7]=0,e[8]=m,e[9]=d,e[10]=u,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function J4(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function Q4(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function eR(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e[4]=t[4]+i[4],e[5]=t[5]+i[5],e[6]=t[6]+i[6],e[7]=t[7]+i[7],e[8]=t[8]+i[8],e[9]=t[9]+i[9],e[10]=t[10]+i[10],e[11]=t[11]+i[11],e[12]=t[12]+i[12],e[13]=t[13]+i[13],e[14]=t[14]+i[14],e[15]=t[15]+i[15],e}function mv(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e[3]=t[3]-i[3],e[4]=t[4]-i[4],e[5]=t[5]-i[5],e[6]=t[6]-i[6],e[7]=t[7]-i[7],e[8]=t[8]-i[8],e[9]=t[9]-i[9],e[10]=t[10]-i[10],e[11]=t[11]-i[11],e[12]=t[12]-i[12],e[13]=t[13]-i[13],e[14]=t[14]-i[14],e[15]=t[15]-i[15],e}function tR(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12]*i,e[13]=t[13]*i,e[14]=t[14]*i,e[15]=t[15]*i,e}function iR(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e[3]=t[3]+i[3]*n,e[4]=t[4]+i[4]*n,e[5]=t[5]+i[5]*n,e[6]=t[6]+i[6]*n,e[7]=t[7]+i[7]*n,e[8]=t[8]+i[8]*n,e[9]=t[9]+i[9]*n,e[10]=t[10]+i[10]*n,e[11]=t[11]+i[11]*n,e[12]=t[12]+i[12]*n,e[13]=t[13]+i[13]*n,e[14]=t[14]+i[14]*n,e[15]=t[15]+i[15]*n,e}function nR(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function rR(e,t){var i=e[0],n=e[1],r=e[2],a=e[3],s=e[4],o=e[5],c=e[6],l=e[7],m=e[8],d=e[9],u=e[10],f=e[11],h=e[12],_=e[13],g=e[14],v=e[15],A=t[0],k=t[1],y=t[2],b=t[3],S=t[4],x=t[5],R=t[6],z=t[7],E=t[8],D=t[9],$=t[10],j=t[11],q=t[12],be=t[13],M=t[14],N=t[15];return Math.abs(i-A)<=De*Math.max(1,Math.abs(i),Math.abs(A))&&Math.abs(n-k)<=De*Math.max(1,Math.abs(n),Math.abs(k))&&Math.abs(r-y)<=De*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(a-b)<=De*Math.max(1,Math.abs(a),Math.abs(b))&&Math.abs(s-S)<=De*Math.max(1,Math.abs(s),Math.abs(S))&&Math.abs(o-x)<=De*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(c-R)<=De*Math.max(1,Math.abs(c),Math.abs(R))&&Math.abs(l-z)<=De*Math.max(1,Math.abs(l),Math.abs(z))&&Math.abs(m-E)<=De*Math.max(1,Math.abs(m),Math.abs(E))&&Math.abs(d-D)<=De*Math.max(1,Math.abs(d),Math.abs(D))&&Math.abs(u-$)<=De*Math.max(1,Math.abs(u),Math.abs($))&&Math.abs(f-j)<=De*Math.max(1,Math.abs(f),Math.abs(j))&&Math.abs(h-q)<=De*Math.max(1,Math.abs(h),Math.abs(q))&&Math.abs(_-be)<=De*Math.max(1,Math.abs(_),Math.abs(be))&&Math.abs(g-M)<=De*Math.max(1,Math.abs(g),Math.abs(M))&&Math.abs(v-N)<=De*Math.max(1,Math.abs(v),Math.abs(N))}var aR=av,sR=mv;var Yt={};Am(Yt,{add:()=>dR,angle:()=>CR,bezier:()=>xR,ceil:()=>uR,clone:()=>oR,copy:()=>lR,create:()=>dv,cross:()=>kR,dist:()=>HR,distance:()=>_v,div:()=>GR,divide:()=>gv,dot:()=>Rd,equals:()=>DR,exactEquals:()=>FR,floor:()=>fR,forEach:()=>$R,fromValues:()=>cR,hermite:()=>ER,inverse:()=>yR,len:()=>WR,length:()=>uv,lerp:()=>AR,max:()=>gR,min:()=>hR,mul:()=>UR,multiply:()=>hv,negate:()=>wR,normalize:()=>SR,random:()=>MR,rotateX:()=>zR,rotateY:()=>NR,rotateZ:()=>IR,round:()=>_R,scale:()=>vR,scaleAndAdd:()=>pR,set:()=>mR,slerp:()=>bR,sqrDist:()=>VR,sqrLen:()=>KR,squaredDistance:()=>vv,squaredLength:()=>pv,str:()=>PR,sub:()=>BR,subtract:()=>fv,transformMat3:()=>RR,transformMat4:()=>TR,transformQuat:()=>LR,zero:()=>OR});function dv(){var e=new li(3);return li!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function oR(e){var t=new li(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function uv(e){var t=e[0],i=e[1],n=e[2];return Math.sqrt(t*t+i*i+n*n)}function cR(e,t,i){var n=new li(3);return n[0]=e,n[1]=t,n[2]=i,n}function lR(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function mR(e,t,i,n){return e[0]=t,e[1]=i,e[2]=n,e}function dR(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e}function fv(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e}function hv(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e}function gv(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e[2]=t[2]/i[2],e}function uR(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function fR(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function hR(e,t,i){return e[0]=Math.min(t[0],i[0]),e[1]=Math.min(t[1],i[1]),e[2]=Math.min(t[2],i[2]),e}function gR(e,t,i){return e[0]=Math.max(t[0],i[0]),e[1]=Math.max(t[1],i[1]),e[2]=Math.max(t[2],i[2]),e}function _R(e,t){return e[0]=Xo(t[0]),e[1]=Xo(t[1]),e[2]=Xo(t[2]),e}function vR(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function pR(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e}function _v(e,t){var i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(i*i+n*n+r*r)}function vv(e,t){var i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return i*i+n*n+r*r}function pv(e){var t=e[0],i=e[1],n=e[2];return t*t+i*i+n*n}function wR(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function yR(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function SR(e,t){var i=t[0],n=t[1],r=t[2],a=i*i+n*n+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Rd(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function kR(e,t,i){var n=t[0],r=t[1],a=t[2],s=i[0],o=i[1],c=i[2];return e[0]=r*c-a*o,e[1]=a*s-n*c,e[2]=n*o-r*s,e}function AR(e,t,i,n){var r=t[0],a=t[1],s=t[2];return e[0]=r+n*(i[0]-r),e[1]=a+n*(i[1]-a),e[2]=s+n*(i[2]-s),e}function bR(e,t,i,n){var r=Math.acos(Math.min(Math.max(Rd(t,i),-1),1)),a=Math.sin(r),s=Math.sin((1-n)*r)/a,o=Math.sin(n*r)/a;return e[0]=s*t[0]+o*i[0],e[1]=s*t[1]+o*i[1],e[2]=s*t[2]+o*i[2],e}function ER(e,t,i,n,r,a){var s=a*a,o=s*(2*a-3)+1,c=s*(a-2)+a,l=s*(a-1),m=s*(3-2*a);return e[0]=t[0]*o+i[0]*c+n[0]*l+r[0]*m,e[1]=t[1]*o+i[1]*c+n[1]*l+r[1]*m,e[2]=t[2]*o+i[2]*c+n[2]*l+r[2]*m,e}function xR(e,t,i,n,r,a){var s=1-a,o=s*s,c=a*a,l=o*s,m=3*a*o,d=3*c*s,u=c*a;return e[0]=t[0]*l+i[0]*m+n[0]*d+r[0]*u,e[1]=t[1]*l+i[1]*m+n[1]*d+r[1]*u,e[2]=t[2]*l+i[2]*m+n[2]*d+r[2]*u,e}function MR(e,t){t=t===void 0?1:t;var i=Td()*2*Math.PI,n=Td()*2-1,r=Math.sqrt(1-n*n)*t;return e[0]=Math.cos(i)*r,e[1]=Math.sin(i)*r,e[2]=n*t,e}function TR(e,t,i){var n=t[0],r=t[1],a=t[2],s=i[3]*n+i[7]*r+i[11]*a+i[15];return s=s||1,e[0]=(i[0]*n+i[4]*r+i[8]*a+i[12])/s,e[1]=(i[1]*n+i[5]*r+i[9]*a+i[13])/s,e[2]=(i[2]*n+i[6]*r+i[10]*a+i[14])/s,e}function RR(e,t,i){var n=t[0],r=t[1],a=t[2];return e[0]=n*i[0]+r*i[3]+a*i[6],e[1]=n*i[1]+r*i[4]+a*i[7],e[2]=n*i[2]+r*i[5]+a*i[8],e}function LR(e,t,i){var n=i[0],r=i[1],a=i[2],s=i[3],o=t[0],c=t[1],l=t[2],m=r*l-a*c,d=a*o-n*l,u=n*c-r*o;return m=m+m,d=d+d,u=u+u,e[0]=o+s*m+r*u-a*d,e[1]=c+s*d+a*m-n*u,e[2]=l+s*u+n*d-r*m,e}function zR(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[0],a[1]=r[1]*Math.cos(n)-r[2]*Math.sin(n),a[2]=r[1]*Math.sin(n)+r[2]*Math.cos(n),e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function NR(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[2]*Math.sin(n)+r[0]*Math.cos(n),a[1]=r[1],a[2]=r[2]*Math.cos(n)-r[0]*Math.sin(n),e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function IR(e,t,i,n){var r=[],a=[];return r[0]=t[0]-i[0],r[1]=t[1]-i[1],r[2]=t[2]-i[2],a[0]=r[0]*Math.cos(n)-r[1]*Math.sin(n),a[1]=r[0]*Math.sin(n)+r[1]*Math.cos(n),a[2]=r[2],e[0]=a[0]+i[0],e[1]=a[1]+i[1],e[2]=a[2]+i[2],e}function CR(e,t){var i=e[0],n=e[1],r=e[2],a=t[0],s=t[1],o=t[2],c=Math.sqrt((i*i+n*n+r*r)*(a*a+s*s+o*o)),l=c&&Rd(e,t)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function OR(e){return e[0]=0,e[1]=0,e[2]=0,e}function PR(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function FR(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function DR(e,t){var i=e[0],n=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(i-a)<=De*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(n-s)<=De*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(r-o)<=De*Math.max(1,Math.abs(r),Math.abs(o))}var BR=fv,UR=hv,GR=gv,HR=_v,VR=vv,WR=uv,KR=pv,$R=(function(){var e=dv();return function(t,i,n,r,a,s){var o,c;for(i||(i=3),n||(n=0),r?c=Math.min(r*i+n,t.length):c=t.length,o=n;o<c;o+=i)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var XR=Object.defineProperty,qR=(e,t)=>{for(var i in t)XR(e,i,{get:t[i],enumerable:!0})},Yo=null,qo=[1,1,1,1],wv=["ch1","ch2","ch3"],Ld=[null,null,null],YR=e=>{for(let t=0;t<wv.length;t++){let i=wv[t];try{Ld[t]=e.Draw_RegisterPic(`pics/${i}.pcx`)}catch{if(t===0)try{Ld[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
204
204
|
`)}}}Yo=Ld[0]},ZR=(e,t,i)=>{if(Yo){let n=e.Draw_GetPicSize(Yo),r=(t-n.width)/2,a=(i-n.height)/2;e.SCR_DrawColorPic(r,a,Yo,{x:qo[0],y:qo[1],z:qo[2]},qo[3])}},Ev=new Map,jR=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],JR=e=>{for(let t of jR)try{let i=e.Draw_RegisterPic(`pics/${t}.pcx`);Ev.set(t,i)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
205
205
|
`)}},xv=new Map,QR=["d_left","d_right","d_up","d_down"],eL=e=>{for(let t of QR)try{let i=e.Draw_RegisterPic(`pics/${t}.pcx`);xv.set(t,i)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
206
206
|
`)}},tL={x:1,y:1,z:1},iL=(e,t,i,n)=>{if((!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length===0)||!t.damageIndicators||t.damageIndicators.length===0)return;let r=i*.5,a=n*.5,{forward:s,right:o}=oi(t.viewAngles),c=Math.min(i,n)*.25;for(let l of t.damageIndicators){let m=nn(l.direction,o),d=nn(l.direction,s),u=Math.atan2(d,m)*(180/Math.PI),f="",h=0,_=0;u>=45&&u<135?(f="d_up",_=-c):u>=-45&&u<45?(f="d_right",h=c):u>=-135&&u<-45?(f="d_down",_=c):(f="d_left",h=-c);let g=xv.get(f);if(g){let v=e.Draw_GetPicSize(g),A=r+h-v.width*.5,k=a+_-v.height*.5,y=Math.max(0,Math.min(1,l.strength));e.SCR_DrawColorPic(A,k,g,tL,y)}}},yv=3e3,Sv=5e3,kv=4,nL=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:yv}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:Sv}),this.notifyMessages.length>kv&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:yv}}addNotification(e,t,i){this.notifyMessages.push({text:e,startTime:i,duration:Sv}),this.notifyMessages.length>kv&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,i){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let n=i.CENTER_PRINT_Y;e.SCR_DrawCenterString(n,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let i=10;for(let n of this.notifyMessages)e.SCR_DrawFontString(10,i,n.text),i+=e.SCR_FontLineHeight()}},rL=3e3,aL=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:rL}}drawSubtitles(e,t){if(!this.subtitle)return;if(t>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}e.SCR_DrawCenterString(200,this.subtitle.text)}},sL=(e,t,i,n)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},oL=(e,t,i,n)=>{if(!t.pickupIcon)return;let r=Ev.get(t.pickupIcon);if(r){let a=e.Draw_GetPicSize(r),s=i-a.width-10,o=n-a.height-10;e.SCR_DrawPic(s,o,r)}},zd=(e,t,i,n,r,a,s)=>{let o=Math.abs(n).toString();for(let c=0;c<o.length;c++){let l=parseInt(o[c]),m=r[l];m&&(s?e.SCR_DrawColorPic(t+c*a,i,m,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+c*a,i,m))}},cL=(e,t,i,n,r,a)=>{let s=t.stats[yt.STAT_HEALTH]||0,o=t.stats[yt.STAT_ARMOR]||0,c=t.stats[yt.STAT_AMMO]||0,l=t.stats[yt.STAT_ARMOR_ICON]||0,m;if(s<=25&&(m=[1,0,0,1]),i.length>0&&(zd(e,a.HEALTH_X,a.HEALTH_Y,s,i,n,m),zd(e,a.ARMOR_X,a.ARMOR_Y,o,i,n),zd(e,a.AMMO_X,a.AMMO_Y,c,i,n)),l>0){let d=e.get_configstring(Se.Images+l);if(d){let u=e.Draw_RegisterPic(d);u&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,u)}}if(t.pickupIcon){let d=e.Draw_RegisterPic(t.pickupIcon);d&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,d)}else{let d=t.stats[yt.STAT_SELECTED_ICON]||0;if(d>0){let u=e.get_configstring(Se.Images+d);if(u){let f=e.Draw_RegisterPic(u);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}}}},Nd=640,jr=480,lL=(e,t)=>{let i=e/Nd,n=t/jr,r=Math.min(i,n);return{HEALTH_X:100*r,HEALTH_Y:t-(jr-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(jr-450)*r,AMMO_X:e-(Nd-540)*r,AMMO_Y:t-(jr-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(jr-450)*r,POWERUP_X:e-(Nd-610)*r,POWERUP_Y:t-(jr-450)*r,scale:r}},ct=null,Fd=[],Mv=0,Dd=new nL,Tv=new aL;function mL(e){ct=e}function dL(){if(ct){Fd.length=0;for(let e=0;e<10;e++)try{let t=ct.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);Fd.push(t),e===0&&(Mv=ct.Draw_GetPicSize(t).width)}catch{ct.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
|