quake2ts 0.0.276 → 0.0.277

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.
@@ -1,4 +1,4 @@
1
- "use strict";var Quake2Client=(()=>{var $a=Object.defineProperty;var u1=Object.getOwnPropertyDescriptor;var d1=Object.getOwnPropertyNames;var l1=Object.prototype.hasOwnProperty;var Xa=(e,t)=>{for(var n in t)$a(e,n,{get:t[n],enumerable:!0})},m1=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of d1(t))!l1.call(e,r)&&r!==n&&$a(e,r,{get:()=>t[r],enumerable:!(i=u1(t,r))||i.enumerable});return e};var f1=e=>m1($a({},"__esModule",{value:!0}),e);var Zz={};Xa(Zz,{ClientConfigStrings:()=>Hn,ClientPrediction:()=>Pr,InputAction:()=>Wa,InputBindings:()=>tn,InputCommandBuffer:()=>Va,InputController:()=>Vn,ViewEffects:()=>Cr,createClient:()=>jz,createDefaultBindings:()=>s1,interpolatePredictionState:()=>vn,normalizeCommand:()=>ji,normalizeInputCode:()=>fu});var se=1e-6,Ge=typeof Float32Array<"u"?Float32Array:Array,Ya=Math.random;function qi(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Jz=Math.PI/180,Qz=180/Math.PI;var oe={};Xa(oe,{add:()=>J1,adjoint:()=>S1,clone:()=>_1,copy:()=>g1,create:()=>h1,decompose:()=>D1,determinant:()=>A1,equals:()=>n_,exactEquals:()=>t_,frob:()=>q1,fromQuat:()=>G1,fromQuat2:()=>C1,fromRotation:()=>L1,fromRotationTranslation:()=>pu,fromRotationTranslationScale:()=>U1,fromRotationTranslationScaleOrigin:()=>B1,fromScaling:()=>z1,fromTranslation:()=>R1,fromValues:()=>v1,fromXRotation:()=>N1,fromYRotation:()=>O1,fromZRotation:()=>I1,frustum:()=>H1,getRotation:()=>F1,getScaling:()=>yu,getTranslation:()=>P1,identity:()=>gu,invert:()=>w1,lookAt:()=>Y1,mul:()=>i_,multiply:()=>vu,multiplyScalar:()=>Q1,multiplyScalarAndAdd:()=>e_,ortho:()=>$1,orthoNO:()=>Su,orthoZO:()=>X1,perspective:()=>W1,perspectiveFromFieldOfView:()=>K1,perspectiveNO:()=>wu,perspectiveZO:()=>V1,rotate:()=>E1,rotateX:()=>b1,rotateY:()=>T1,rotateZ:()=>M1,scale:()=>x1,set:()=>p1,str:()=>Z1,sub:()=>r_,subtract:()=>Au,targetTo:()=>j1,translate:()=>k1,transpose:()=>y1});function h1(){var e=new Ge(16);return Ge!=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 _1(e){var t=new Ge(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 g1(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 v1(e,t,n,i,r,a,s,o,u,c,d,f,m,_,g,A){var v=new Ge(16);return v[0]=e,v[1]=t,v[2]=n,v[3]=i,v[4]=r,v[5]=a,v[6]=s,v[7]=o,v[8]=u,v[9]=c,v[10]=d,v[11]=f,v[12]=m,v[13]=_,v[14]=g,v[15]=A,v}function p1(e,t,n,i,r,a,s,o,u,c,d,f,m,_,g,A,v){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=u,e[8]=c,e[9]=d,e[10]=f,e[11]=m,e[12]=_,e[13]=g,e[14]=A,e[15]=v,e}function gu(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 y1(e,t){if(e===t){var n=t[1],i=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]=n,e[6]=t[9],e[7]=t[13],e[8]=i,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 w1(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],d=t[8],f=t[9],m=t[10],_=t[11],g=t[12],A=t[13],v=t[14],S=t[15],b=n*o-i*s,x=n*u-r*s,p=n*c-a*s,w=i*u-r*o,T=i*c-a*o,E=r*c-a*u,z=d*A-f*g,O=d*v-m*g,R=d*S-_*g,y=f*v-m*A,L=f*S-_*A,P=m*S-_*v,X=b*P-x*L+p*y+w*R-T*O+E*z;return X?(X=1/X,e[0]=(o*P-u*L+c*y)*X,e[1]=(r*L-i*P-a*y)*X,e[2]=(A*E-v*T+S*w)*X,e[3]=(m*T-f*E-_*w)*X,e[4]=(u*R-s*P-c*O)*X,e[5]=(n*P-r*R+a*O)*X,e[6]=(v*p-g*E-S*x)*X,e[7]=(d*E-m*p+_*x)*X,e[8]=(s*L-o*R+c*z)*X,e[9]=(i*R-n*L-a*z)*X,e[10]=(g*T-A*p+S*b)*X,e[11]=(f*p-d*T-_*b)*X,e[12]=(o*O-s*y-u*z)*X,e[13]=(n*y-i*O+r*z)*X,e[14]=(A*x-g*w-v*b)*X,e[15]=(d*w-f*x+m*b)*X,e):null}function S1(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],d=t[8],f=t[9],m=t[10],_=t[11],g=t[12],A=t[13],v=t[14],S=t[15],b=n*o-i*s,x=n*u-r*s,p=n*c-a*s,w=i*u-r*o,T=i*c-a*o,E=r*c-a*u,z=d*A-f*g,O=d*v-m*g,R=d*S-_*g,y=f*v-m*A,L=f*S-_*A,P=m*S-_*v;return e[0]=o*P-u*L+c*y,e[1]=r*L-i*P-a*y,e[2]=A*E-v*T+S*w,e[3]=m*T-f*E-_*w,e[4]=u*R-s*P-c*O,e[5]=n*P-r*R+a*O,e[6]=v*p-g*E-S*x,e[7]=d*E-m*p+_*x,e[8]=s*L-o*R+c*z,e[9]=i*R-n*L-a*z,e[10]=g*T-A*p+S*b,e[11]=f*p-d*T-_*b,e[12]=o*O-s*y-u*z,e[13]=n*y-i*O+r*z,e[14]=A*x-g*w-v*b,e[15]=d*w-f*x+m*b,e}function A1(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],u=e[7],c=e[8],d=e[9],f=e[10],m=e[11],_=e[12],g=e[13],A=e[14],v=e[15],S=t*s-n*a,b=t*o-i*a,x=n*o-i*s,p=c*g-d*_,w=c*A-f*_,T=d*A-f*g,E=t*T-n*w+i*p,z=a*T-s*w+o*p,O=c*x-d*b+f*S,R=_*x-g*b+A*S;return u*E-r*z+v*O-m*R}function vu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],u=t[5],c=t[6],d=t[7],f=t[8],m=t[9],_=t[10],g=t[11],A=t[12],v=t[13],S=t[14],b=t[15],x=n[0],p=n[1],w=n[2],T=n[3];return e[0]=x*i+p*o+w*f+T*A,e[1]=x*r+p*u+w*m+T*v,e[2]=x*a+p*c+w*_+T*S,e[3]=x*s+p*d+w*g+T*b,x=n[4],p=n[5],w=n[6],T=n[7],e[4]=x*i+p*o+w*f+T*A,e[5]=x*r+p*u+w*m+T*v,e[6]=x*a+p*c+w*_+T*S,e[7]=x*s+p*d+w*g+T*b,x=n[8],p=n[9],w=n[10],T=n[11],e[8]=x*i+p*o+w*f+T*A,e[9]=x*r+p*u+w*m+T*v,e[10]=x*a+p*c+w*_+T*S,e[11]=x*s+p*d+w*g+T*b,x=n[12],p=n[13],w=n[14],T=n[15],e[12]=x*i+p*o+w*f+T*A,e[13]=x*r+p*u+w*m+T*v,e[14]=x*a+p*c+w*_+T*S,e[15]=x*s+p*d+w*g+T*b,e}function k1(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,u,c,d,f,m,_,g,A,v,S;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],u=t[2],c=t[3],d=t[4],f=t[5],m=t[6],_=t[7],g=t[8],A=t[9],v=t[10],S=t[11],e[0]=s,e[1]=o,e[2]=u,e[3]=c,e[4]=d,e[5]=f,e[6]=m,e[7]=_,e[8]=g,e[9]=A,e[10]=v,e[11]=S,e[12]=s*i+d*r+g*a+t[12],e[13]=o*i+f*r+A*a+t[13],e[14]=u*i+m*r+v*a+t[14],e[15]=c*i+_*r+S*a+t[15]),e}function x1(e,t,n){var i=n[0],r=n[1],a=n[2];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]*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 E1(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),u,c,d,f,m,_,g,A,v,S,b,x,p,w,T,E,z,O,R,y,L,P,X,le;return o<se?null:(o=1/o,r*=o,a*=o,s*=o,u=Math.sin(n),c=Math.cos(n),d=1-c,f=t[0],m=t[1],_=t[2],g=t[3],A=t[4],v=t[5],S=t[6],b=t[7],x=t[8],p=t[9],w=t[10],T=t[11],E=r*r*d+c,z=a*r*d+s*u,O=s*r*d-a*u,R=r*a*d-s*u,y=a*a*d+c,L=s*a*d+r*u,P=r*s*d+a*u,X=a*s*d-r*u,le=s*s*d+c,e[0]=f*E+A*z+x*O,e[1]=m*E+v*z+p*O,e[2]=_*E+S*z+w*O,e[3]=g*E+b*z+T*O,e[4]=f*R+A*y+x*L,e[5]=m*R+v*y+p*L,e[6]=_*R+S*y+w*L,e[7]=g*R+b*y+T*L,e[8]=f*P+A*X+x*le,e[9]=m*P+v*X+p*le,e[10]=_*P+S*X+w*le,e[11]=g*P+b*X+T*le,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function b1(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],u=t[7],c=t[8],d=t[9],f=t[10],m=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+c*i,e[5]=s*r+d*i,e[6]=o*r+f*i,e[7]=u*r+m*i,e[8]=c*r-a*i,e[9]=d*r-s*i,e[10]=f*r-o*i,e[11]=m*r-u*i,e}function T1(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[8],d=t[9],f=t[10],m=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-c*i,e[1]=s*r-d*i,e[2]=o*r-f*i,e[3]=u*r-m*i,e[8]=a*i+c*r,e[9]=s*i+d*r,e[10]=o*i+f*r,e[11]=u*i+m*r,e}function M1(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[4],d=t[5],f=t[6],m=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+c*i,e[1]=s*r+d*i,e[2]=o*r+f*i,e[3]=u*r+m*i,e[4]=c*r-a*i,e[5]=d*r-s*i,e[6]=f*r-o*i,e[7]=m*r-u*i,e}function R1(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 z1(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 L1(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,u,c;return s<se?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),u=Math.cos(t),c=1-u,e[0]=i*i*c+u,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+u,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function N1(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function O1(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function I1(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,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 pu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,u=r+r,c=a+a,d=i*o,f=i*u,m=i*c,_=r*u,g=r*c,A=a*c,v=s*o,S=s*u,b=s*c;return e[0]=1-(_+A),e[1]=f+b,e[2]=m-S,e[3]=0,e[4]=f-b,e[5]=1-(d+A),e[6]=g+v,e[7]=0,e[8]=m+S,e[9]=g-v,e[10]=1-(d+_),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function C1(e,t){var n=new Ge(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],u=t[5],c=t[6],d=t[7],f=i*i+r*r+a*a+s*s;return f>0?(n[0]=(o*s+d*i+u*a-c*r)*2/f,n[1]=(u*s+d*r+c*i-o*a)*2/f,n[2]=(c*s+d*a+o*r-u*i)*2/f):(n[0]=(o*s+d*i+u*a-c*r)*2,n[1]=(u*s+d*r+c*i-o*a)*2,n[2]=(c*s+d*a+o*r-u*i)*2),pu(e,t,n),e}function P1(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function yu(e,t){var n=t[0],i=t[1],r=t[2],a=t[4],s=t[5],o=t[6],u=t[8],c=t[9],d=t[10];return e[0]=Math.sqrt(n*n+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(u*u+c*c+d*d),e}function F1(e,t){var n=new Ge(3);yu(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,u=t[2]*a,c=t[4]*i,d=t[5]*r,f=t[6]*a,m=t[8]*i,_=t[9]*r,g=t[10]*a,A=s+d+g,v=0;return A>0?(v=Math.sqrt(A+1)*2,e[3]=.25*v,e[0]=(f-_)/v,e[1]=(m-u)/v,e[2]=(o-c)/v):s>d&&s>g?(v=Math.sqrt(1+s-d-g)*2,e[3]=(f-_)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(m+u)/v):d>g?(v=Math.sqrt(1+d-s-g)*2,e[3]=(m-u)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(f+_)/v):(v=Math.sqrt(1+g-s-d)*2,e[3]=(o-c)/v,e[0]=(m+u)/v,e[1]=(f+_)/v,e[2]=.25*v),e}function D1(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],u=i[5],c=i[6],d=i[8],f=i[9],m=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+u*u+c*c),n[2]=Math.sqrt(d*d+f*f+m*m);var _=1/n[0],g=1/n[1],A=1/n[2],v=r*_,S=a*g,b=s*A,x=o*_,p=u*g,w=c*A,T=d*_,E=f*g,z=m*A,O=v+p+z,R=0;return O>0?(R=Math.sqrt(O+1)*2,e[3]=.25*R,e[0]=(w-E)/R,e[1]=(T-b)/R,e[2]=(S-x)/R):v>p&&v>z?(R=Math.sqrt(1+v-p-z)*2,e[3]=(w-E)/R,e[0]=.25*R,e[1]=(S+x)/R,e[2]=(T+b)/R):p>z?(R=Math.sqrt(1+p-v-z)*2,e[3]=(T-b)/R,e[0]=(S+x)/R,e[1]=.25*R,e[2]=(w+E)/R):(R=Math.sqrt(1+z-v-p)*2,e[3]=(S-x)/R,e[0]=(T+b)/R,e[1]=(w+E)/R,e[2]=.25*R),e}function U1(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],u=r+r,c=a+a,d=s+s,f=r*u,m=r*c,_=r*d,g=a*c,A=a*d,v=s*d,S=o*u,b=o*c,x=o*d,p=i[0],w=i[1],T=i[2];return e[0]=(1-(g+v))*p,e[1]=(m+x)*p,e[2]=(_-b)*p,e[3]=0,e[4]=(m-x)*w,e[5]=(1-(f+v))*w,e[6]=(A+S)*w,e[7]=0,e[8]=(_+b)*T,e[9]=(A-S)*T,e[10]=(1-(f+g))*T,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function B1(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],u=t[3],c=a+a,d=s+s,f=o+o,m=a*c,_=a*d,g=a*f,A=s*d,v=s*f,S=o*f,b=u*c,x=u*d,p=u*f,w=i[0],T=i[1],E=i[2],z=r[0],O=r[1],R=r[2],y=(1-(A+S))*w,L=(_+p)*w,P=(g-x)*w,X=(_-p)*T,le=(1-(m+S))*T,ge=(v+b)*T,Ae=(g+x)*E,Ke=(v-b)*E,wt=(1-(m+A))*E;return e[0]=y,e[1]=L,e[2]=P,e[3]=0,e[4]=X,e[5]=le,e[6]=ge,e[7]=0,e[8]=Ae,e[9]=Ke,e[10]=wt,e[11]=0,e[12]=n[0]+z-(y*z+X*O+Ae*R),e[13]=n[1]+O-(L*z+le*O+Ke*R),e[14]=n[2]+R-(P*z+ge*O+wt*R),e[15]=1,e}function G1(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,u=r+r,c=n*s,d=i*s,f=i*o,m=r*s,_=r*o,g=r*u,A=a*s,v=a*o,S=a*u;return e[0]=1-f-g,e[1]=d+S,e[2]=m-v,e[3]=0,e[4]=d-S,e[5]=1-c-g,e[6]=_+A,e[7]=0,e[8]=m+v,e[9]=_-A,e[10]=1-c-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function H1(e,t,n,i,r,a,s){var o=1/(n-t),u=1/(r-i),c=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*u,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(r+i)*u,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function wu(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,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/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var W1=wu;function V1(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,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/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function K1(e,t,n,i){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),u=2/(s+o),c=2/(r+a);return e[0]=u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*u*.5),e[9]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function Su(e,t,n,i,r,a,s){var o=1/(t-n),u=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*u,e[14]=(s+a)*c,e[15]=1,e}var $1=Su;function X1(e,t,n,i,r,a,s){var o=1/(t-n),u=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*u,e[14]=a*c,e[15]=1,e}function Y1(e,t,n,i){var r,a,s,o,u,c,d,f,m,_,g=t[0],A=t[1],v=t[2],S=i[0],b=i[1],x=i[2],p=n[0],w=n[1],T=n[2];return Math.abs(g-p)<se&&Math.abs(A-w)<se&&Math.abs(v-T)<se?gu(e):(d=g-p,f=A-w,m=v-T,_=1/Math.sqrt(d*d+f*f+m*m),d*=_,f*=_,m*=_,r=b*m-x*f,a=x*d-S*m,s=S*f-b*d,_=Math.sqrt(r*r+a*a+s*s),_?(_=1/_,r*=_,a*=_,s*=_):(r=0,a=0,s=0),o=f*s-m*a,u=m*r-d*s,c=d*a-f*r,_=Math.sqrt(o*o+u*u+c*c),_?(_=1/_,o*=_,u*=_,c*=_):(o=0,u=0,c=0),e[0]=r,e[1]=o,e[2]=d,e[3]=0,e[4]=a,e[5]=u,e[6]=f,e[7]=0,e[8]=s,e[9]=c,e[10]=m,e[11]=0,e[12]=-(r*g+a*A+s*v),e[13]=-(o*g+u*A+c*v),e[14]=-(d*g+f*A+m*v),e[15]=1,e)}function j1(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],u=i[1],c=i[2],d=r-n[0],f=a-n[1],m=s-n[2],_=d*d+f*f+m*m;_>0&&(_=1/Math.sqrt(_),d*=_,f*=_,m*=_);var g=u*m-c*f,A=c*d-o*m,v=o*f-u*d;return _=g*g+A*A+v*v,_>0&&(_=1/Math.sqrt(_),g*=_,A*=_,v*=_),e[0]=g,e[1]=A,e[2]=v,e[3]=0,e[4]=f*v-m*A,e[5]=m*g-d*v,e[6]=d*A-f*g,e[7]=0,e[8]=d,e[9]=f,e[10]=m,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function Z1(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 q1(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 J1(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function Au(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function Q1(e,t,n){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]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function e_(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function t_(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 n_(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],u=e[6],c=e[7],d=e[8],f=e[9],m=e[10],_=e[11],g=e[12],A=e[13],v=e[14],S=e[15],b=t[0],x=t[1],p=t[2],w=t[3],T=t[4],E=t[5],z=t[6],O=t[7],R=t[8],y=t[9],L=t[10],P=t[11],X=t[12],le=t[13],ge=t[14],Ae=t[15];return Math.abs(n-b)<=se*Math.max(1,Math.abs(n),Math.abs(b))&&Math.abs(i-x)<=se*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(r-p)<=se*Math.max(1,Math.abs(r),Math.abs(p))&&Math.abs(a-w)<=se*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(s-T)<=se*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(o-E)<=se*Math.max(1,Math.abs(o),Math.abs(E))&&Math.abs(u-z)<=se*Math.max(1,Math.abs(u),Math.abs(z))&&Math.abs(c-O)<=se*Math.max(1,Math.abs(c),Math.abs(O))&&Math.abs(d-R)<=se*Math.max(1,Math.abs(d),Math.abs(R))&&Math.abs(f-y)<=se*Math.max(1,Math.abs(f),Math.abs(y))&&Math.abs(m-L)<=se*Math.max(1,Math.abs(m),Math.abs(L))&&Math.abs(_-P)<=se*Math.max(1,Math.abs(_),Math.abs(P))&&Math.abs(g-X)<=se*Math.max(1,Math.abs(g),Math.abs(X))&&Math.abs(A-le)<=se*Math.max(1,Math.abs(A),Math.abs(le))&&Math.abs(v-ge)<=se*Math.max(1,Math.abs(v),Math.abs(ge))&&Math.abs(S-Ae)<=se*Math.max(1,Math.abs(S),Math.abs(Ae))}var i_=vu,r_=Au;var ue={};Xa(ue,{add:()=>u_,angle:()=>N_,bezier:()=>x_,ceil:()=>d_,clone:()=>a_,copy:()=>o_,create:()=>ku,cross:()=>w_,dist:()=>B_,distance:()=>Mu,div:()=>U_,divide:()=>Tu,dot:()=>ja,equals:()=>P_,exactEquals:()=>C_,floor:()=>l_,forEach:()=>V_,fromValues:()=>s_,hermite:()=>k_,inverse:()=>p_,len:()=>H_,length:()=>xu,lerp:()=>S_,max:()=>f_,min:()=>m_,mul:()=>D_,multiply:()=>bu,negate:()=>v_,normalize:()=>y_,random:()=>E_,rotateX:()=>R_,rotateY:()=>z_,rotateZ:()=>L_,round:()=>h_,scale:()=>__,scaleAndAdd:()=>g_,set:()=>c_,slerp:()=>A_,sqrDist:()=>G_,sqrLen:()=>W_,squaredDistance:()=>Ru,squaredLength:()=>zu,str:()=>I_,sub:()=>F_,subtract:()=>Eu,transformMat3:()=>T_,transformMat4:()=>b_,transformQuat:()=>M_,zero:()=>O_});function ku(){var e=new Ge(3);return Ge!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function a_(e){var t=new Ge(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function xu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function s_(e,t,n){var i=new Ge(3);return i[0]=e,i[1]=t,i[2]=n,i}function o_(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function c_(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function u_(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Eu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function bu(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Tu(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function d_(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function l_(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function m_(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function f_(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function h_(e,t){return e[0]=qi(t[0]),e[1]=qi(t[1]),e[2]=qi(t[2]),e}function __(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function g_(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function Mu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function Ru(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function zu(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function v_(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function p_(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function y_(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+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 ja(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function w_(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function S_(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function A_(e,t,n,i){var r=Math.acos(Math.min(Math.max(ja(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function k_(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*d,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*d,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*d,e}function x_(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,d=3*a*o,f=3*u*s,m=u*a;return e[0]=t[0]*c+n[0]*d+i[0]*f+r[0]*m,e[1]=t[1]*c+n[1]*d+i[1]*f+r[1]*m,e[2]=t[2]*c+n[2]*d+i[2]*f+r[2]*m,e}function E_(e,t){t=t===void 0?1:t;var n=Ya()*2*Math.PI,i=Ya()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function b_(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function T_(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function M_(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],d=r*c-a*u,f=a*o-i*c,m=i*u-r*o;return d=d+d,f=f+f,m=m+m,e[0]=o+s*d+r*m-a*f,e[1]=u+s*f+a*d-i*m,e[2]=c+s*m+i*f-r*d,e}function R_(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function z_(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function L_(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function N_(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&ja(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function O_(e){return e[0]=0,e[1]=0,e[2]=0,e}function I_(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function C_(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function P_(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=se*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=se*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=se*Math.max(1,Math.abs(r),Math.abs(o))}var F_=Eu,D_=bu,U_=Tu,B_=Mu,G_=Ru,H_=xu,W_=zu,V_=(function(){var e=ku();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;o+=n)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 K_=Object.defineProperty,yd=(e,t)=>{for(var n in t)K_(e,n,{get:t[n],enumerable:!0})};var tL=Math.PI/180;var $_=Math.PI/180,nL=180/Math.PI,Kn=$_,X_=[[-.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 it=1,bt=2;var ks=8,xs=16,Y_=32;var j_=16384;var hr=65536,wd=1<<17,Z_=1<<18,q_=1<<19,J_=1<<20,Q_=1<<21,eg=1<<22,tg=1<<23,iL=1<<24,_r=1<<25,ng=1<<26,rL=1<<27,aL=1<<28,sL=1<<29,gr=1<<30,oL=1<<31;var cL=1<<25,uL=1<<28,dL=1<<29,lL=1<<30,mL=1<<31,fL=it|bt,hL=it|hr|bt|_r|gr,_L=it|hr|bt,gL=it|wd|bt|_r|gr,vL=Y_|ks|xs,pL=it|xs|ks,ig=it|_r|gr|bt|ng,yL=Z_|q_|J_|Q_|eg|tg,wL=it|ks|xs|_r|gr,SL=it|hr|bt,AL=it|bt,kL=it|hr|bt|wd,xL=ig|j_,EL=Number.MAX_SAFE_INTEGER-1;var Sd=256,rg=256,ag=8192,sg=2048,og=512,cg=256,ug=Sd*2,dg=256,Za=32;var Ad=(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.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.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+ag]="Sounds",e[e.Images=e.Sounds+sg]="Images",e[e.Lights=e.Images+og]="Lights",e[e.ShadowLights=e.Lights+rg]="ShadowLights",e[e.Items=e.ShadowLights+dg]="Items",e[e.PlayerSkins=e.Items+cg]="PlayerSkins",e[e.General=e.PlayerSkins+Sd]="General",e[e.WheelWeapons=e.General+ug]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Za]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Za]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Za]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Ad||{}),bL=Ad.MaxConfigStrings;var lg={};yd(lg,{addReplayFrame:()=>_g,createReplaySession:()=>hg,deserializeReplay:()=>fg,serializeReplay:()=>mg});function mg(e){return JSON.stringify(e,null,2)}function fg(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 hg(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function _g(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var j=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(j||{}),F=(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))(F||{}),gg=12,vg=9,TL=Math.ceil(gg*vg/16),pg=23,yg=2,ML=Math.ceil(pg*yg/16),wg={};yd(wg,{U_ANGLE1:()=>Tg,U_ANGLE2:()=>Mg,U_ANGLE3:()=>Rg,U_EFFECTS:()=>Ng,U_EVENT:()=>Cg,U_FRAME:()=>zg,U_MODEL:()=>Ag,U_MODEL2:()=>Fg,U_MODEL3:()=>Dg,U_MODEL4:()=>Ug,U_MOREBITS:()=>Pg,U_NUMBER:()=>Sg,U_ORIGIN1:()=>xg,U_ORIGIN2:()=>Eg,U_ORIGIN3:()=>bg,U_REMOVE:()=>Bg,U_RENDERFX:()=>Og,U_SKIN:()=>Lg,U_SOLID:()=>Ig,U_SOUND:()=>kg});var Sg=1,Ag=2,kg=4,xg=8,Eg=16,bg=32,Tg=64,Mg=128,Rg=256,zg=512,Lg=1024,Ng=2048,Og=4096,Ig=8192,Cg=16384,Pg=32768,Fg=1,Dg=2,Ug=4,Bg=32768,ms=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}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<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 n=X_[t];e.x=n[0],e.y=n[1],e.z=n[2]}},kd=(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))(kd||{}),RL=Object.keys(kd).length/2;function Gg(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var zL=Gg();var LL=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var Hg=19,NL=8+Hg*8;var fs=4,qa=7*fs,OL=[{index:0,size:3,type:5126,stride:qa,offset:0},{index:1,size:2,type:5126,stride:qa,offset:3*fs},{index:2,size:2,type:5126,stride:qa,offset:5*fs}];var xd=32;var IL=`#version 300 es
1
+ "use strict";var Quake2Client=(()=>{var $a=Object.defineProperty;var d1=Object.getOwnPropertyDescriptor;var l1=Object.getOwnPropertyNames;var m1=Object.prototype.hasOwnProperty;var Xa=(e,t)=>{for(var n in t)$a(e,n,{get:t[n],enumerable:!0})},f1=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of l1(t))!m1.call(e,r)&&r!==n&&$a(e,r,{get:()=>t[r],enumerable:!(i=d1(t,r))||i.enumerable});return e};var h1=e=>f1($a({},"__esModule",{value:!0}),e);var qz={};Xa(qz,{ClientConfigStrings:()=>Hn,ClientPrediction:()=>Fr,InputAction:()=>Wa,InputBindings:()=>tn,InputCommandBuffer:()=>Va,InputController:()=>Vn,ViewEffects:()=>Pr,createClient:()=>Zz,createDefaultBindings:()=>o1,interpolatePredictionState:()=>vn,normalizeCommand:()=>Zi,normalizeInputCode:()=>fu});var se=1e-6,Ge=typeof Float32Array<"u"?Float32Array:Array,Ya=Math.random;function Ji(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Qz=Math.PI/180,eL=180/Math.PI;var oe={};Xa(oe,{add:()=>Q1,adjoint:()=>A1,clone:()=>g1,copy:()=>v1,create:()=>_1,decompose:()=>U1,determinant:()=>k1,equals:()=>i_,exactEquals:()=>n_,frob:()=>J1,fromQuat:()=>H1,fromQuat2:()=>P1,fromRotation:()=>N1,fromRotationTranslation:()=>pu,fromRotationTranslationScale:()=>B1,fromRotationTranslationScaleOrigin:()=>G1,fromScaling:()=>L1,fromTranslation:()=>z1,fromValues:()=>p1,fromXRotation:()=>O1,fromYRotation:()=>I1,fromZRotation:()=>C1,frustum:()=>W1,getRotation:()=>D1,getScaling:()=>yu,getTranslation:()=>F1,identity:()=>gu,invert:()=>S1,lookAt:()=>j1,mul:()=>r_,multiply:()=>vu,multiplyScalar:()=>e_,multiplyScalarAndAdd:()=>t_,ortho:()=>X1,orthoNO:()=>Su,orthoZO:()=>Y1,perspective:()=>V1,perspectiveFromFieldOfView:()=>$1,perspectiveNO:()=>wu,perspectiveZO:()=>K1,rotate:()=>b1,rotateX:()=>T1,rotateY:()=>M1,rotateZ:()=>R1,scale:()=>E1,set:()=>y1,str:()=>q1,sub:()=>a_,subtract:()=>Au,targetTo:()=>Z1,translate:()=>x1,transpose:()=>w1});function _1(){var e=new Ge(16);return Ge!=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 g1(e){var t=new Ge(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 v1(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 p1(e,t,n,i,r,a,s,o,u,c,d,f,m,_,g,A){var v=new Ge(16);return v[0]=e,v[1]=t,v[2]=n,v[3]=i,v[4]=r,v[5]=a,v[6]=s,v[7]=o,v[8]=u,v[9]=c,v[10]=d,v[11]=f,v[12]=m,v[13]=_,v[14]=g,v[15]=A,v}function y1(e,t,n,i,r,a,s,o,u,c,d,f,m,_,g,A,v){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=u,e[8]=c,e[9]=d,e[10]=f,e[11]=m,e[12]=_,e[13]=g,e[14]=A,e[15]=v,e}function gu(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 w1(e,t){if(e===t){var n=t[1],i=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]=n,e[6]=t[9],e[7]=t[13],e[8]=i,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 S1(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],d=t[8],f=t[9],m=t[10],_=t[11],g=t[12],A=t[13],v=t[14],S=t[15],b=n*o-i*s,x=n*u-r*s,p=n*c-a*s,w=i*u-r*o,T=i*c-a*o,E=r*c-a*u,z=d*A-f*g,O=d*v-m*g,R=d*S-_*g,y=f*v-m*A,L=f*S-_*A,P=m*S-_*v,X=b*P-x*L+p*y+w*R-T*O+E*z;return X?(X=1/X,e[0]=(o*P-u*L+c*y)*X,e[1]=(r*L-i*P-a*y)*X,e[2]=(A*E-v*T+S*w)*X,e[3]=(m*T-f*E-_*w)*X,e[4]=(u*R-s*P-c*O)*X,e[5]=(n*P-r*R+a*O)*X,e[6]=(v*p-g*E-S*x)*X,e[7]=(d*E-m*p+_*x)*X,e[8]=(s*L-o*R+c*z)*X,e[9]=(i*R-n*L-a*z)*X,e[10]=(g*T-A*p+S*b)*X,e[11]=(f*p-d*T-_*b)*X,e[12]=(o*O-s*y-u*z)*X,e[13]=(n*y-i*O+r*z)*X,e[14]=(A*x-g*w-v*b)*X,e[15]=(d*w-f*x+m*b)*X,e):null}function A1(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],d=t[8],f=t[9],m=t[10],_=t[11],g=t[12],A=t[13],v=t[14],S=t[15],b=n*o-i*s,x=n*u-r*s,p=n*c-a*s,w=i*u-r*o,T=i*c-a*o,E=r*c-a*u,z=d*A-f*g,O=d*v-m*g,R=d*S-_*g,y=f*v-m*A,L=f*S-_*A,P=m*S-_*v;return e[0]=o*P-u*L+c*y,e[1]=r*L-i*P-a*y,e[2]=A*E-v*T+S*w,e[3]=m*T-f*E-_*w,e[4]=u*R-s*P-c*O,e[5]=n*P-r*R+a*O,e[6]=v*p-g*E-S*x,e[7]=d*E-m*p+_*x,e[8]=s*L-o*R+c*z,e[9]=i*R-n*L-a*z,e[10]=g*T-A*p+S*b,e[11]=f*p-d*T-_*b,e[12]=o*O-s*y-u*z,e[13]=n*y-i*O+r*z,e[14]=A*x-g*w-v*b,e[15]=d*w-f*x+m*b,e}function k1(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],u=e[7],c=e[8],d=e[9],f=e[10],m=e[11],_=e[12],g=e[13],A=e[14],v=e[15],S=t*s-n*a,b=t*o-i*a,x=n*o-i*s,p=c*g-d*_,w=c*A-f*_,T=d*A-f*g,E=t*T-n*w+i*p,z=a*T-s*w+o*p,O=c*x-d*b+f*S,R=_*x-g*b+A*S;return u*E-r*z+v*O-m*R}function vu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],u=t[5],c=t[6],d=t[7],f=t[8],m=t[9],_=t[10],g=t[11],A=t[12],v=t[13],S=t[14],b=t[15],x=n[0],p=n[1],w=n[2],T=n[3];return e[0]=x*i+p*o+w*f+T*A,e[1]=x*r+p*u+w*m+T*v,e[2]=x*a+p*c+w*_+T*S,e[3]=x*s+p*d+w*g+T*b,x=n[4],p=n[5],w=n[6],T=n[7],e[4]=x*i+p*o+w*f+T*A,e[5]=x*r+p*u+w*m+T*v,e[6]=x*a+p*c+w*_+T*S,e[7]=x*s+p*d+w*g+T*b,x=n[8],p=n[9],w=n[10],T=n[11],e[8]=x*i+p*o+w*f+T*A,e[9]=x*r+p*u+w*m+T*v,e[10]=x*a+p*c+w*_+T*S,e[11]=x*s+p*d+w*g+T*b,x=n[12],p=n[13],w=n[14],T=n[15],e[12]=x*i+p*o+w*f+T*A,e[13]=x*r+p*u+w*m+T*v,e[14]=x*a+p*c+w*_+T*S,e[15]=x*s+p*d+w*g+T*b,e}function x1(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,u,c,d,f,m,_,g,A,v,S;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],u=t[2],c=t[3],d=t[4],f=t[5],m=t[6],_=t[7],g=t[8],A=t[9],v=t[10],S=t[11],e[0]=s,e[1]=o,e[2]=u,e[3]=c,e[4]=d,e[5]=f,e[6]=m,e[7]=_,e[8]=g,e[9]=A,e[10]=v,e[11]=S,e[12]=s*i+d*r+g*a+t[12],e[13]=o*i+f*r+A*a+t[13],e[14]=u*i+m*r+v*a+t[14],e[15]=c*i+_*r+S*a+t[15]),e}function E1(e,t,n){var i=n[0],r=n[1],a=n[2];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]*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 b1(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),u,c,d,f,m,_,g,A,v,S,b,x,p,w,T,E,z,O,R,y,L,P,X,le;return o<se?null:(o=1/o,r*=o,a*=o,s*=o,u=Math.sin(n),c=Math.cos(n),d=1-c,f=t[0],m=t[1],_=t[2],g=t[3],A=t[4],v=t[5],S=t[6],b=t[7],x=t[8],p=t[9],w=t[10],T=t[11],E=r*r*d+c,z=a*r*d+s*u,O=s*r*d-a*u,R=r*a*d-s*u,y=a*a*d+c,L=s*a*d+r*u,P=r*s*d+a*u,X=a*s*d-r*u,le=s*s*d+c,e[0]=f*E+A*z+x*O,e[1]=m*E+v*z+p*O,e[2]=_*E+S*z+w*O,e[3]=g*E+b*z+T*O,e[4]=f*R+A*y+x*L,e[5]=m*R+v*y+p*L,e[6]=_*R+S*y+w*L,e[7]=g*R+b*y+T*L,e[8]=f*P+A*X+x*le,e[9]=m*P+v*X+p*le,e[10]=_*P+S*X+w*le,e[11]=g*P+b*X+T*le,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function T1(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],u=t[7],c=t[8],d=t[9],f=t[10],m=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+c*i,e[5]=s*r+d*i,e[6]=o*r+f*i,e[7]=u*r+m*i,e[8]=c*r-a*i,e[9]=d*r-s*i,e[10]=f*r-o*i,e[11]=m*r-u*i,e}function M1(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[8],d=t[9],f=t[10],m=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-c*i,e[1]=s*r-d*i,e[2]=o*r-f*i,e[3]=u*r-m*i,e[8]=a*i+c*r,e[9]=s*i+d*r,e[10]=o*i+f*r,e[11]=u*i+m*r,e}function R1(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[4],d=t[5],f=t[6],m=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+c*i,e[1]=s*r+d*i,e[2]=o*r+f*i,e[3]=u*r+m*i,e[4]=c*r-a*i,e[5]=d*r-s*i,e[6]=f*r-o*i,e[7]=m*r-u*i,e}function z1(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 L1(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 N1(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,u,c;return s<se?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),u=Math.cos(t),c=1-u,e[0]=i*i*c+u,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+u,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function O1(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function I1(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function C1(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,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 pu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,u=r+r,c=a+a,d=i*o,f=i*u,m=i*c,_=r*u,g=r*c,A=a*c,v=s*o,S=s*u,b=s*c;return e[0]=1-(_+A),e[1]=f+b,e[2]=m-S,e[3]=0,e[4]=f-b,e[5]=1-(d+A),e[6]=g+v,e[7]=0,e[8]=m+S,e[9]=g-v,e[10]=1-(d+_),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function P1(e,t){var n=new Ge(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],u=t[5],c=t[6],d=t[7],f=i*i+r*r+a*a+s*s;return f>0?(n[0]=(o*s+d*i+u*a-c*r)*2/f,n[1]=(u*s+d*r+c*i-o*a)*2/f,n[2]=(c*s+d*a+o*r-u*i)*2/f):(n[0]=(o*s+d*i+u*a-c*r)*2,n[1]=(u*s+d*r+c*i-o*a)*2,n[2]=(c*s+d*a+o*r-u*i)*2),pu(e,t,n),e}function F1(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function yu(e,t){var n=t[0],i=t[1],r=t[2],a=t[4],s=t[5],o=t[6],u=t[8],c=t[9],d=t[10];return e[0]=Math.sqrt(n*n+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(u*u+c*c+d*d),e}function D1(e,t){var n=new Ge(3);yu(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,u=t[2]*a,c=t[4]*i,d=t[5]*r,f=t[6]*a,m=t[8]*i,_=t[9]*r,g=t[10]*a,A=s+d+g,v=0;return A>0?(v=Math.sqrt(A+1)*2,e[3]=.25*v,e[0]=(f-_)/v,e[1]=(m-u)/v,e[2]=(o-c)/v):s>d&&s>g?(v=Math.sqrt(1+s-d-g)*2,e[3]=(f-_)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(m+u)/v):d>g?(v=Math.sqrt(1+d-s-g)*2,e[3]=(m-u)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(f+_)/v):(v=Math.sqrt(1+g-s-d)*2,e[3]=(o-c)/v,e[0]=(m+u)/v,e[1]=(f+_)/v,e[2]=.25*v),e}function U1(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],u=i[5],c=i[6],d=i[8],f=i[9],m=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+u*u+c*c),n[2]=Math.sqrt(d*d+f*f+m*m);var _=1/n[0],g=1/n[1],A=1/n[2],v=r*_,S=a*g,b=s*A,x=o*_,p=u*g,w=c*A,T=d*_,E=f*g,z=m*A,O=v+p+z,R=0;return O>0?(R=Math.sqrt(O+1)*2,e[3]=.25*R,e[0]=(w-E)/R,e[1]=(T-b)/R,e[2]=(S-x)/R):v>p&&v>z?(R=Math.sqrt(1+v-p-z)*2,e[3]=(w-E)/R,e[0]=.25*R,e[1]=(S+x)/R,e[2]=(T+b)/R):p>z?(R=Math.sqrt(1+p-v-z)*2,e[3]=(T-b)/R,e[0]=(S+x)/R,e[1]=.25*R,e[2]=(w+E)/R):(R=Math.sqrt(1+z-v-p)*2,e[3]=(S-x)/R,e[0]=(T+b)/R,e[1]=(w+E)/R,e[2]=.25*R),e}function B1(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],u=r+r,c=a+a,d=s+s,f=r*u,m=r*c,_=r*d,g=a*c,A=a*d,v=s*d,S=o*u,b=o*c,x=o*d,p=i[0],w=i[1],T=i[2];return e[0]=(1-(g+v))*p,e[1]=(m+x)*p,e[2]=(_-b)*p,e[3]=0,e[4]=(m-x)*w,e[5]=(1-(f+v))*w,e[6]=(A+S)*w,e[7]=0,e[8]=(_+b)*T,e[9]=(A-S)*T,e[10]=(1-(f+g))*T,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function G1(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],u=t[3],c=a+a,d=s+s,f=o+o,m=a*c,_=a*d,g=a*f,A=s*d,v=s*f,S=o*f,b=u*c,x=u*d,p=u*f,w=i[0],T=i[1],E=i[2],z=r[0],O=r[1],R=r[2],y=(1-(A+S))*w,L=(_+p)*w,P=(g-x)*w,X=(_-p)*T,le=(1-(m+S))*T,ge=(v+b)*T,Ae=(g+x)*E,Ke=(v-b)*E,wt=(1-(m+A))*E;return e[0]=y,e[1]=L,e[2]=P,e[3]=0,e[4]=X,e[5]=le,e[6]=ge,e[7]=0,e[8]=Ae,e[9]=Ke,e[10]=wt,e[11]=0,e[12]=n[0]+z-(y*z+X*O+Ae*R),e[13]=n[1]+O-(L*z+le*O+Ke*R),e[14]=n[2]+R-(P*z+ge*O+wt*R),e[15]=1,e}function H1(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,u=r+r,c=n*s,d=i*s,f=i*o,m=r*s,_=r*o,g=r*u,A=a*s,v=a*o,S=a*u;return e[0]=1-f-g,e[1]=d+S,e[2]=m-v,e[3]=0,e[4]=d-S,e[5]=1-c-g,e[6]=_+A,e[7]=0,e[8]=m+v,e[9]=_-A,e[10]=1-c-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function W1(e,t,n,i,r,a,s){var o=1/(n-t),u=1/(r-i),c=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*u,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(r+i)*u,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function wu(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,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/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var V1=wu;function K1(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,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/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function $1(e,t,n,i){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),u=2/(s+o),c=2/(r+a);return e[0]=u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*u*.5),e[9]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function Su(e,t,n,i,r,a,s){var o=1/(t-n),u=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*u,e[14]=(s+a)*c,e[15]=1,e}var X1=Su;function Y1(e,t,n,i,r,a,s){var o=1/(t-n),u=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*u,e[14]=a*c,e[15]=1,e}function j1(e,t,n,i){var r,a,s,o,u,c,d,f,m,_,g=t[0],A=t[1],v=t[2],S=i[0],b=i[1],x=i[2],p=n[0],w=n[1],T=n[2];return Math.abs(g-p)<se&&Math.abs(A-w)<se&&Math.abs(v-T)<se?gu(e):(d=g-p,f=A-w,m=v-T,_=1/Math.sqrt(d*d+f*f+m*m),d*=_,f*=_,m*=_,r=b*m-x*f,a=x*d-S*m,s=S*f-b*d,_=Math.sqrt(r*r+a*a+s*s),_?(_=1/_,r*=_,a*=_,s*=_):(r=0,a=0,s=0),o=f*s-m*a,u=m*r-d*s,c=d*a-f*r,_=Math.sqrt(o*o+u*u+c*c),_?(_=1/_,o*=_,u*=_,c*=_):(o=0,u=0,c=0),e[0]=r,e[1]=o,e[2]=d,e[3]=0,e[4]=a,e[5]=u,e[6]=f,e[7]=0,e[8]=s,e[9]=c,e[10]=m,e[11]=0,e[12]=-(r*g+a*A+s*v),e[13]=-(o*g+u*A+c*v),e[14]=-(d*g+f*A+m*v),e[15]=1,e)}function Z1(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],u=i[1],c=i[2],d=r-n[0],f=a-n[1],m=s-n[2],_=d*d+f*f+m*m;_>0&&(_=1/Math.sqrt(_),d*=_,f*=_,m*=_);var g=u*m-c*f,A=c*d-o*m,v=o*f-u*d;return _=g*g+A*A+v*v,_>0&&(_=1/Math.sqrt(_),g*=_,A*=_,v*=_),e[0]=g,e[1]=A,e[2]=v,e[3]=0,e[4]=f*v-m*A,e[5]=m*g-d*v,e[6]=d*A-f*g,e[7]=0,e[8]=d,e[9]=f,e[10]=m,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function q1(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 J1(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 Q1(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function Au(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function e_(e,t,n){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]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function t_(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function n_(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 i_(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],u=e[6],c=e[7],d=e[8],f=e[9],m=e[10],_=e[11],g=e[12],A=e[13],v=e[14],S=e[15],b=t[0],x=t[1],p=t[2],w=t[3],T=t[4],E=t[5],z=t[6],O=t[7],R=t[8],y=t[9],L=t[10],P=t[11],X=t[12],le=t[13],ge=t[14],Ae=t[15];return Math.abs(n-b)<=se*Math.max(1,Math.abs(n),Math.abs(b))&&Math.abs(i-x)<=se*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(r-p)<=se*Math.max(1,Math.abs(r),Math.abs(p))&&Math.abs(a-w)<=se*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(s-T)<=se*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(o-E)<=se*Math.max(1,Math.abs(o),Math.abs(E))&&Math.abs(u-z)<=se*Math.max(1,Math.abs(u),Math.abs(z))&&Math.abs(c-O)<=se*Math.max(1,Math.abs(c),Math.abs(O))&&Math.abs(d-R)<=se*Math.max(1,Math.abs(d),Math.abs(R))&&Math.abs(f-y)<=se*Math.max(1,Math.abs(f),Math.abs(y))&&Math.abs(m-L)<=se*Math.max(1,Math.abs(m),Math.abs(L))&&Math.abs(_-P)<=se*Math.max(1,Math.abs(_),Math.abs(P))&&Math.abs(g-X)<=se*Math.max(1,Math.abs(g),Math.abs(X))&&Math.abs(A-le)<=se*Math.max(1,Math.abs(A),Math.abs(le))&&Math.abs(v-ge)<=se*Math.max(1,Math.abs(v),Math.abs(ge))&&Math.abs(S-Ae)<=se*Math.max(1,Math.abs(S),Math.abs(Ae))}var r_=vu,a_=Au;var ue={};Xa(ue,{add:()=>d_,angle:()=>O_,bezier:()=>E_,ceil:()=>l_,clone:()=>s_,copy:()=>c_,create:()=>ku,cross:()=>S_,dist:()=>G_,distance:()=>Mu,div:()=>B_,divide:()=>Tu,dot:()=>ja,equals:()=>F_,exactEquals:()=>P_,floor:()=>m_,forEach:()=>K_,fromValues:()=>o_,hermite:()=>x_,inverse:()=>y_,len:()=>W_,length:()=>xu,lerp:()=>A_,max:()=>h_,min:()=>f_,mul:()=>U_,multiply:()=>bu,negate:()=>p_,normalize:()=>w_,random:()=>b_,rotateX:()=>z_,rotateY:()=>L_,rotateZ:()=>N_,round:()=>__,scale:()=>g_,scaleAndAdd:()=>v_,set:()=>u_,slerp:()=>k_,sqrDist:()=>H_,sqrLen:()=>V_,squaredDistance:()=>Ru,squaredLength:()=>zu,str:()=>C_,sub:()=>D_,subtract:()=>Eu,transformMat3:()=>M_,transformMat4:()=>T_,transformQuat:()=>R_,zero:()=>I_});function ku(){var e=new Ge(3);return Ge!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function s_(e){var t=new Ge(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function xu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function o_(e,t,n){var i=new Ge(3);return i[0]=e,i[1]=t,i[2]=n,i}function c_(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function u_(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function d_(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Eu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function bu(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Tu(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function l_(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function m_(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function f_(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function h_(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function __(e,t){return e[0]=Ji(t[0]),e[1]=Ji(t[1]),e[2]=Ji(t[2]),e}function g_(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function v_(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function Mu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function Ru(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function zu(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function p_(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function y_(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function w_(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+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 ja(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function S_(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function A_(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function k_(e,t,n,i){var r=Math.acos(Math.min(Math.max(ja(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function x_(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*d,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*d,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*d,e}function E_(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,d=3*a*o,f=3*u*s,m=u*a;return e[0]=t[0]*c+n[0]*d+i[0]*f+r[0]*m,e[1]=t[1]*c+n[1]*d+i[1]*f+r[1]*m,e[2]=t[2]*c+n[2]*d+i[2]*f+r[2]*m,e}function b_(e,t){t=t===void 0?1:t;var n=Ya()*2*Math.PI,i=Ya()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function T_(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function M_(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function R_(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],d=r*c-a*u,f=a*o-i*c,m=i*u-r*o;return d=d+d,f=f+f,m=m+m,e[0]=o+s*d+r*m-a*f,e[1]=u+s*f+a*d-i*m,e[2]=c+s*m+i*f-r*d,e}function z_(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function L_(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function N_(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function O_(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&ja(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function I_(e){return e[0]=0,e[1]=0,e[2]=0,e}function C_(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function P_(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function F_(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=se*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=se*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=se*Math.max(1,Math.abs(r),Math.abs(o))}var D_=Eu,U_=bu,B_=Tu,G_=Mu,H_=Ru,W_=xu,V_=zu,K_=(function(){var e=ku();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;o+=n)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 $_=Object.defineProperty,yd=(e,t)=>{for(var n in t)$_(e,n,{get:t[n],enumerable:!0})};var nL=Math.PI/180;var X_=Math.PI/180,iL=180/Math.PI,Kn=X_,Y_=[[-.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 it=1,bt=2;var ks=8,xs=16,j_=32;var Z_=16384;var _r=65536,wd=1<<17,q_=1<<18,J_=1<<19,Q_=1<<20,eg=1<<21,tg=1<<22,ng=1<<23,rL=1<<24,gr=1<<25,ig=1<<26,aL=1<<27,sL=1<<28,oL=1<<29,vr=1<<30,cL=1<<31;var uL=1<<25,dL=1<<28,lL=1<<29,mL=1<<30,fL=1<<31,hL=it|bt,_L=it|_r|bt|gr|vr,gL=it|_r|bt,vL=it|wd|bt|gr|vr,pL=j_|ks|xs,yL=it|xs|ks,rg=it|gr|vr|bt|ig,wL=q_|J_|Q_|eg|tg|ng,SL=it|ks|xs|gr|vr,AL=it|_r|bt,kL=it|bt,xL=it|_r|bt|wd,EL=rg|Z_,bL=Number.MAX_SAFE_INTEGER-1;var Sd=256,ag=256,sg=8192,og=2048,cg=512,ug=256,dg=Sd*2,lg=256,Za=32;var Ad=(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.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.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+sg]="Sounds",e[e.Images=e.Sounds+og]="Images",e[e.Lights=e.Images+cg]="Lights",e[e.ShadowLights=e.Lights+ag]="ShadowLights",e[e.Items=e.ShadowLights+lg]="Items",e[e.PlayerSkins=e.Items+ug]="PlayerSkins",e[e.General=e.PlayerSkins+Sd]="General",e[e.WheelWeapons=e.General+dg]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Za]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Za]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Za]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Ad||{}),TL=Ad.MaxConfigStrings;var mg={};yd(mg,{addReplayFrame:()=>gg,createReplaySession:()=>_g,deserializeReplay:()=>hg,serializeReplay:()=>fg});function fg(e){return JSON.stringify(e,null,2)}function hg(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 _g(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function gg(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var j=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(j||{}),F=(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))(F||{}),vg=12,pg=9,ML=Math.ceil(vg*pg/16),yg=23,wg=2,RL=Math.ceil(yg*wg/16),Sg={};yd(Sg,{U_ANGLE1:()=>Mg,U_ANGLE2:()=>Rg,U_ANGLE3:()=>zg,U_EFFECTS:()=>Og,U_EVENT:()=>Pg,U_FRAME:()=>Lg,U_MODEL:()=>kg,U_MODEL2:()=>Dg,U_MODEL3:()=>Ug,U_MODEL4:()=>Bg,U_MOREBITS:()=>Fg,U_NUMBER:()=>Ag,U_ORIGIN1:()=>Eg,U_ORIGIN2:()=>bg,U_ORIGIN3:()=>Tg,U_REMOVE:()=>Gg,U_RENDERFX:()=>Ig,U_SKIN:()=>Ng,U_SOLID:()=>Cg,U_SOUND:()=>xg});var Ag=1,kg=2,xg=4,Eg=8,bg=16,Tg=32,Mg=64,Rg=128,zg=256,Lg=512,Ng=1024,Og=2048,Ig=4096,Cg=8192,Pg=16384,Fg=32768,Dg=1,Ug=2,Bg=4,Gg=32768,ms=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}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<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 n=Y_[t];e.x=n[0],e.y=n[1],e.z=n[2]}},kd=(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))(kd||{}),zL=Object.keys(kd).length/2;function Hg(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var LL=Hg();var NL=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var Wg=19,OL=8+Wg*8;var fs=4,qa=7*fs,IL=[{index:0,size:3,type:5126,stride:qa,offset:0},{index:1,size:2,type:5126,stride:qa,offset:3*fs},{index:2,size:2,type:5126,stride:qa,offset:5*fs}];var xd=32;var CL=`#version 300 es
2
2
  precision highp float;
3
3
 
4
4
  struct DLight {
@@ -114,7 +114,7 @@ void main() {
114
114
  }
115
115
 
116
116
  o_color = finalColor;
117
- }`;var CL=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1]);var PL=`#version 300 es
117
+ }`;var PL=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1]);var FL=`#version 300 es
118
118
  precision highp float;
119
119
 
120
120
  layout(location = 0) in vec3 a_position;
@@ -166,15 +166,15 @@ void main() {
166
166
  v_texCoord = a_texCoord;
167
167
  v_position = worldPos.xyz;
168
168
  gl_Position = u_modelViewProjection * vec4(a_position, 1.0);
169
- }`;var Ed=class{constructor(){this._position=ue.create(),this._angles=ue.create(),this._bobAngles=ue.create(),this._bobOffset=ue.create(),this._kickAngles=ue.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=oe.create(),this._projectionMatrix=oe.create(),this._viewProjectionMatrix=oe.create(),this._dirty=!0}get position(){return this._position}set position(e){ue.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){ue.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){ue.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){ue.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){ue.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}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=oe.create();return oe.perspective(t,e*Kn,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;oe.perspective(this._projectionMatrix,this._fov*Kn,this._aspect,this._near,this._far);let e=oe.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*Kn,a=n*Kn,s=i*Kn,o=oe.create();oe.identity(o),oe.rotateZ(o,o,-a),oe.rotateY(o,o,-r),oe.rotateX(o,o,-s);let u=oe.create();oe.multiply(u,e,o);let c=ue.add(ue.create(),this._position,this._bobOffset),d=ue.negate(ue.create(),c),f=ue.create();ue.transformMat4(f,d,o);let m=ue.fromValues(f[1]||0,f[2]||0,f[0]||0);oe.copy(this._viewMatrix,u),this._viewMatrix[12]=m[0],this._viewMatrix[13]=m[1],this._viewMatrix[14]=m[2],oe.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var Wg=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}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(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new ms(t)}}reset(){this.offset=0}getOffset(){return this.offset}},Vg=4,Lu=0,Nu=1,Kg=2;function dn(e){let t=e.length;for(;--t>=0;)e[t]=0}var $g=0,bd=1,Xg=2,Yg=3,jg=258,Es=29,si=256,Jn=si+1+Es,on=30,bs=19,Td=2*Jn+1,Ut=15,Ja=16,Zg=7,Ts=256,Md=16,Rd=17,zd=18,hs=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]),ir=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]),qg=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Ld=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Jg=512,mt=new Array((Jn+2)*2);dn(mt);var jn=new Array(on*2);dn(jn);var Qn=new Array(Jg);dn(Qn);var ei=new Array(jg-Yg+1);dn(ei);var Ms=new Array(Es);dn(Ms);var rr=new Array(on);dn(rr);function Qa(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var Nd,Od,Id;function es(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var Cd=e=>e<256?Qn[e]:Qn[256+(e>>>7)],ti=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ne=(e,t,n)=>{e.bi_valid>Ja-n?(e.bi_buf|=t<<e.bi_valid&65535,ti(e,e.bi_buf),e.bi_buf=t>>Ja-e.bi_valid,e.bi_valid+=n-Ja):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},et=(e,t,n)=>{Ne(e,n[t*2],n[t*2+1])},Pd=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},Qg=e=>{e.bi_valid===16?(ti(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)},ev=(e,t)=>{let n=t.dyn_tree,i=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,u=t.stat_desc.max_length,c,d,f,m,_,g,A=0;for(m=0;m<=Ut;m++)e.bl_count[m]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<Td;c++)d=e.heap[c],m=n[n[d*2+1]*2+1]+1,m>u&&(m=u,A++),n[d*2+1]=m,!(d>i)&&(e.bl_count[m]++,_=0,d>=o&&(_=s[d-o]),g=n[d*2],e.opt_len+=g*(m+_),a&&(e.static_len+=g*(r[d*2+1]+_)));if(A!==0){do{for(m=u-1;e.bl_count[m]===0;)m--;e.bl_count[m]--,e.bl_count[m+1]+=2,e.bl_count[u]--,A-=2}while(A>0);for(m=u;m!==0;m--)for(d=e.bl_count[m];d!==0;)f=e.heap[--c],!(f>i)&&(n[f*2+1]!==m&&(e.opt_len+=(m-n[f*2+1])*n[f*2],n[f*2+1]=m),d--)}},Fd=(e,t,n)=>{let i=new Array(Ut+1),r=0,a,s;for(a=1;a<=Ut;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=Pd(i[o]++,o))}},tv=()=>{let e,t,n,i,r,a=new Array(Ut+1);for(n=0,i=0;i<Es-1;i++)for(Ms[i]=n,e=0;e<1<<hs[i];e++)ei[n++]=i;for(ei[n-1]=i,r=0,i=0;i<16;i++)for(rr[i]=r,e=0;e<1<<ir[i];e++)Qn[r++]=i;for(r>>=7;i<on;i++)for(rr[i]=r<<7,e=0;e<1<<ir[i]-7;e++)Qn[256+r++]=i;for(t=0;t<=Ut;t++)a[t]=0;for(e=0;e<=143;)mt[e*2+1]=8,e++,a[8]++;for(;e<=255;)mt[e*2+1]=9,e++,a[9]++;for(;e<=279;)mt[e*2+1]=7,e++,a[7]++;for(;e<=287;)mt[e*2+1]=8,e++,a[8]++;for(Fd(mt,Jn+1,a),e=0;e<on;e++)jn[e*2+1]=5,jn[e*2]=Pd(e,5);Nd=new Qa(mt,hs,si+1,Jn,Ut),Od=new Qa(jn,ir,0,on,Ut),Id=new Qa(new Array(0),qg,0,bs,Zg)},Dd=e=>{let t;for(t=0;t<Jn;t++)e.dyn_ltree[t*2]=0;for(t=0;t<on;t++)e.dyn_dtree[t*2]=0;for(t=0;t<bs;t++)e.bl_tree[t*2]=0;e.dyn_ltree[Ts*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Ud=e=>{e.bi_valid>8?ti(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Ou=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},ts=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&Ou(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!Ou(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},Iu=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?et(e,r,t):(s=ei[r],et(e,s+si+1,t),o=hs[s],o!==0&&(r-=Ms[s],Ne(e,r,o)),i--,s=Cd(i),et(e,s,n),o=ir[s],o!==0&&(i-=rr[s],Ne(e,i,o)));while(a<e.sym_next);et(e,Ts,t)},_s=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,u=-1,c;for(e.heap_len=0,e.heap_max=Td,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=u=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=u<2?++u:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=u,s=e.heap_len>>1;s>=1;s--)ts(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],ts(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,ts(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],ev(e,t),Fd(n,u,e.bl_count)},Cu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[Md*2]++):o<=10?e.bl_tree[Rd*2]++:e.bl_tree[zd*2]++,o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4))},Pu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)){if(o<c)do et(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(et(e,a,e.bl_tree),o--),et(e,Md,e.bl_tree),Ne(e,o-3,2)):o<=10?(et(e,Rd,e.bl_tree),Ne(e,o-3,3)):(et(e,zd,e.bl_tree),Ne(e,o-11,7));o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4)}},nv=e=>{let t;for(Cu(e,e.dyn_ltree,e.l_desc.max_code),Cu(e,e.dyn_dtree,e.d_desc.max_code),_s(e,e.bl_desc),t=bs-1;t>=3&&e.bl_tree[Ld[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},iv=(e,t,n,i)=>{let r;for(Ne(e,t-257,5),Ne(e,n-1,5),Ne(e,i-4,4),r=0;r<i;r++)Ne(e,e.bl_tree[Ld[r]*2+1],3);Pu(e,e.dyn_ltree,t-1),Pu(e,e.dyn_dtree,n-1)},rv=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return Lu;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return Nu;for(n=32;n<si;n++)if(e.dyn_ltree[n*2]!==0)return Nu;return Lu},Fu=!1,av=e=>{Fu||(tv(),Fu=!0),e.l_desc=new es(e.dyn_ltree,Nd),e.d_desc=new es(e.dyn_dtree,Od),e.bl_desc=new es(e.bl_tree,Id),e.bi_buf=0,e.bi_valid=0,Dd(e)},Bd=(e,t,n,i)=>{Ne(e,($g<<1)+(i?1:0),3),Ud(e),ti(e,n),ti(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},sv=e=>{Ne(e,bd<<1,3),et(e,Ts,mt),Qg(e)},ov=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===Kg&&(e.strm.data_type=rv(e)),_s(e,e.l_desc),_s(e,e.d_desc),s=nv(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?Bd(e,t,n,i):e.strategy===Vg||a===r?(Ne(e,(bd<<1)+(i?1:0),3),Iu(e,mt,jn)):(Ne(e,(Xg<<1)+(i?1:0),3),iv(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),Iu(e,e.dyn_ltree,e.dyn_dtree)),Dd(e),i&&Ud(e)},cv=(e,t,n)=>(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++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(ei[n]+si+1)*2]++,e.dyn_dtree[Cd(t)*2]++),e.sym_next===e.sym_end),uv=av,dv=Bd,lv=ov,mv=cv,fv=sv,hv={_tr_init:uv,_tr_stored_block:dv,_tr_flush_block:lv,_tr_tally:mv,_tr_align:fv},_v=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},ni=_v,gv=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},vv=new Uint32Array(gv()),pv=(e,t,n,i)=>{let r=vv,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},ke=pv,Ht={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"},Kt={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:yv,_tr_stored_block:gs,_tr_flush_block:wv,_tr_tally:kt,_tr_align:Sv}=hv,{Z_NO_FLUSH:xt,Z_PARTIAL_FLUSH:Av,Z_FULL_FLUSH:kv,Z_FINISH:He,Z_BLOCK:Du,Z_OK:be,Z_STREAM_END:Uu,Z_STREAM_ERROR:tt,Z_DATA_ERROR:xv,Z_BUF_ERROR:ns,Z_DEFAULT_COMPRESSION:Ev,Z_FILTERED:bv,Z_HUFFMAN_ONLY:Ji,Z_RLE:Tv,Z_FIXED:Mv,Z_DEFAULT_STRATEGY:Rv,Z_UNKNOWN:zv,Z_DEFLATED:vr}=Kt,Lv=9,Nv=15,Ov=8,Iv=29,Cv=256,vs=Cv+1+Iv,Pv=30,Fv=19,Dv=2*vs+1,Uv=15,q=3,At=258,nt=At+q+1,Bv=32,cn=42,Rs=57,ps=69,ys=73,ws=91,Ss=103,Bt=113,Xn=666,Re=1,ln=2,Wt=3,mn=4,Gv=3,Gt=(e,t)=>(e.msg=Ht[t],t),Bu=e=>e*2-(e>4?9:0),St=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Hv=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},Wv=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,Et=Wv,Ce=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Pe=(e,t)=>{wv(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ce(e.strm)},Q=(e,t)=>{e.pending_buf[e.pending++]=t},$n=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},As=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=ni(e.adler,t,r,n):e.state.wrap===2&&(e.adler=ke(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},Gd=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-nt?e.strstart-(e.w_size-nt):0,c=e.window,d=e.w_mask,f=e.prev,m=e.strstart+At,_=c[i+s-1],g=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==g||c[r+s-1]!==_||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&i<m);if(a=At-(m-i),i=m-At,a>s){if(e.match_start=t,s=a,a>=o)break;_=c[i+s-1],g=c[i+s]}}while((t=f[t&d])>u&&--n!==0);return s<=e.lookahead?s:e.lookahead},un=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-nt)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Hv(e),i+=t),e.strm.avail_in===0)break;if(n=As(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=q)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=Et(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=Et(e,e.ins_h,e.window[r+q-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<q)););}while(e.lookahead<nt&&e.strm.avail_in!==0)},Hd=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==He||t===xt||i!==r+e.strm.avail_in)))break;s=t===He&&i===r+e.strm.avail_in?1:0,gs(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Ce(e.strm),r&&(r>i&&(r=i),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,i-=r),i&&(As(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}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?mn:t!==xt&&t!==He&&e.strm.avail_in===0&&e.strstart===e.block_start?ln:(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&&(As(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,n=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=n||(r||t===He)&&t!==xt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===He&&e.strm.avail_in===0&&i===r?1:0,gs(e,e.block_start,i,s),e.block_start+=i,Ce(e.strm)),s?Wt:Re)},is=(e,t)=>{let n,i;for(;;){if(e.lookahead<nt){if(un(e),e.lookahead<nt&&t===xt)return Re;if(e.lookahead===0)break}if(n=0,e.lookahead>=q&&(e.ins_h=Et(e,e.ins_h,e.window[e.strstart+q-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-nt&&(e.match_length=Gd(e,n)),e.match_length>=q)if(i=kt(e,e.strstart-e.match_start,e.match_length-q),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=q){e.match_length--;do e.strstart++,e.ins_h=Et(e,e.ins_h,e.window[e.strstart+q-1]),n=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=Et(e,e.ins_h,e.window[e.strstart+1]);else i=kt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Pe(e,!1),e.strm.avail_out===0))return Re}return e.insert=e.strstart<q-1?e.strstart:q-1,t===He?(Pe(e,!0),e.strm.avail_out===0?Wt:mn):e.sym_next&&(Pe(e,!1),e.strm.avail_out===0)?Re:ln},rn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<nt){if(un(e),e.lookahead<nt&&t===xt)return Re;if(e.lookahead===0)break}if(n=0,e.lookahead>=q&&(e.ins_h=Et(e,e.ins_h,e.window[e.strstart+q-1]),n=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=q-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-nt&&(e.match_length=Gd(e,n),e.match_length<=5&&(e.strategy===bv||e.match_length===q&&e.strstart-e.match_start>4096)&&(e.match_length=q-1)),e.prev_length>=q&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-q,i=kt(e,e.strstart-1-e.prev_match,e.prev_length-q),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=Et(e,e.ins_h,e.window[e.strstart+q-1]),n=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=q-1,e.strstart++,i&&(Pe(e,!1),e.strm.avail_out===0))return Re}else if(e.match_available){if(i=kt(e,0,e.window[e.strstart-1]),i&&Pe(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Re}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=kt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<q-1?e.strstart:q-1,t===He?(Pe(e,!0),e.strm.avail_out===0?Wt:mn):e.sym_next&&(Pe(e,!1),e.strm.avail_out===0)?Re:ln},Vv=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=At){if(un(e),e.lookahead<=At&&t===xt)return Re;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=q&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+At;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=At-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=q?(n=kt(e,1,e.match_length-q),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=kt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Pe(e,!1),e.strm.avail_out===0))return Re}return e.insert=0,t===He?(Pe(e,!0),e.strm.avail_out===0?Wt:mn):e.sym_next&&(Pe(e,!1),e.strm.avail_out===0)?Re:ln},Kv=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(un(e),e.lookahead===0)){if(t===xt)return Re;break}if(e.match_length=0,n=kt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Pe(e,!1),e.strm.avail_out===0))return Re}return e.insert=0,t===He?(Pe(e,!0),e.strm.avail_out===0?Wt:mn):e.sym_next&&(Pe(e,!1),e.strm.avail_out===0)?Re:ln};function Qe(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var Yn=[new Qe(0,0,0,0,Hd),new Qe(4,4,8,4,is),new Qe(4,5,16,8,is),new Qe(4,6,32,32,is),new Qe(4,4,16,16,rn),new Qe(8,16,32,32,rn),new Qe(8,16,128,128,rn),new Qe(8,32,128,256,rn),new Qe(32,128,258,1024,rn),new Qe(32,258,258,4096,rn)],$v=e=>{e.window_size=2*e.w_size,St(e.head),e.max_lazy_match=Yn[e.level].max_lazy,e.good_match=Yn[e.level].good_length,e.nice_match=Yn[e.level].nice_length,e.max_chain_length=Yn[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=q-1,e.match_available=0,e.ins_h=0};function Xv(){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=vr,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(Dv*2),this.dyn_dtree=new Uint16Array((2*Pv+1)*2),this.bl_tree=new Uint16Array((2*Fv+1)*2),St(this.dyn_ltree),St(this.dyn_dtree),St(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Uv+1),this.heap=new Uint16Array(2*vs+1),St(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*vs+1),St(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 oi=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==cn&&t.status!==Rs&&t.status!==ps&&t.status!==ys&&t.status!==ws&&t.status!==Ss&&t.status!==Bt&&t.status!==Xn?1:0},Wd=e=>{if(oi(e))return Gt(e,tt);e.total_in=e.total_out=0,e.data_type=zv;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Rs:t.wrap?cn:Bt,e.adler=t.wrap===2?0:1,t.last_flush=-2,yv(t),be},Vd=e=>{let t=Wd(e);return t===be&&$v(e.state),t},Yv=(e,t)=>oi(e)||e.state.wrap!==2?tt:(e.state.gzhead=t,be),Kd=(e,t,n,i,r,a)=>{if(!e)return tt;let s=1;if(t===Ev&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>Lv||n!==vr||i<8||i>15||t<0||t>9||a<0||a>Mv||i===8&&s!==1)return Gt(e,tt);i===8&&(i=9);let o=new Xv;return e.state=o,o.strm=e,o.status=cn,o.wrap=s,o.gzhead=null,o.w_bits=i,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+q-1)/q),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=n,Vd(e)},jv=(e,t)=>Kd(e,t,vr,Nv,Ov,Rv),Zv=(e,t)=>{if(oi(e)||t>Du||t<0)return e?Gt(e,tt):tt;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Xn&&t!==He)return Gt(e,e.avail_out===0?ns:tt);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Ce(e),e.avail_out===0)return n.last_flush=-1,be}else if(e.avail_in===0&&Bu(t)<=Bu(i)&&t!==He)return Gt(e,ns);if(n.status===Xn&&e.avail_in!==0)return Gt(e,ns);if(n.status===cn&&n.wrap===0&&(n.status=Bt),n.status===cn){let r=vr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Ji||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=Bv),r+=31-r%31,$n(n,r),n.strstart!==0&&($n(n,e.adler>>>16),$n(n,e.adler&65535)),e.adler=1,n.status=Bt,Ce(e),n.pending!==0)return n.last_flush=-1,be}if(n.status===Rs){if(e.adler=0,Q(n,31),Q(n,139),Q(n,8),n.gzhead)Q(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Q(n,n.gzhead.time&255),Q(n,n.gzhead.time>>8&255),Q(n,n.gzhead.time>>16&255),Q(n,n.gzhead.time>>24&255),Q(n,n.level===9?2:n.strategy>=Ji||n.level<2?4:0),Q(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Q(n,n.gzhead.extra.length&255),Q(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=ke(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=ps;else if(Q(n,0),Q(n,0),Q(n,0),Q(n,0),Q(n,0),Q(n,n.level===9?2:n.strategy>=Ji||n.level<2?4:0),Q(n,Gv),n.status=Bt,Ce(e),n.pending!==0)return n.last_flush=-1,be}if(n.status===ps){if(n.gzhead.extra){let r=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,Ce(e),n.pending!==0)return n.last_flush=-1,be;r=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=ys}if(n.status===ys){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),Ce(e),n.pending!==0)return n.last_flush=-1,be;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,Q(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=ws}if(n.status===ws){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),Ce(e),n.pending!==0)return n.last_flush=-1,be;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,Q(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r))}n.status=Ss}if(n.status===Ss){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ce(e),n.pending!==0))return n.last_flush=-1,be;Q(n,e.adler&255),Q(n,e.adler>>8&255),e.adler=0}if(n.status=Bt,Ce(e),n.pending!==0)return n.last_flush=-1,be}if(e.avail_in!==0||n.lookahead!==0||t!==xt&&n.status!==Xn){let r=n.level===0?Hd(n,t):n.strategy===Ji?Kv(n,t):n.strategy===Tv?Vv(n,t):Yn[n.level].func(n,t);if((r===Wt||r===mn)&&(n.status=Xn),r===Re||r===Wt)return e.avail_out===0&&(n.last_flush=-1),be;if(r===ln&&(t===Av?Sv(n):t!==Du&&(gs(n,0,0,!1),t===kv&&(St(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Ce(e),e.avail_out===0))return n.last_flush=-1,be}return t!==He?be:n.wrap<=0?Uu:(n.wrap===2?(Q(n,e.adler&255),Q(n,e.adler>>8&255),Q(n,e.adler>>16&255),Q(n,e.adler>>24&255),Q(n,e.total_in&255),Q(n,e.total_in>>8&255),Q(n,e.total_in>>16&255),Q(n,e.total_in>>24&255)):($n(n,e.adler>>>16),$n(n,e.adler&65535)),Ce(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?be:Uu)},qv=e=>{if(oi(e))return tt;let t=e.state.status;return e.state=null,t===Bt?Gt(e,xv):be},Jv=(e,t)=>{let n=t.length;if(oi(e))return tt;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==cn||i.lookahead)return tt;if(r===1&&(e.adler=ni(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(St(i.head),i.strstart=0,i.block_start=0,i.insert=0);let u=new Uint8Array(i.w_size);u.set(t.subarray(n-i.w_size,n),0),t=u,n=i.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,un(i);i.lookahead>=q;){let u=i.strstart,c=i.lookahead-(q-1);do i.ins_h=Et(i,i.ins_h,i.window[u+q-1]),i.prev[u&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=u,u++;while(--c);i.strstart=u,i.lookahead=q-1,un(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=q-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,be},Qv=jv,ep=Kd,tp=Vd,np=Wd,ip=Yv,rp=Zv,ap=qv,sp=Jv,op="pako deflate (from Nodeca project)",Zn={deflateInit:Qv,deflateInit2:ep,deflateReset:tp,deflateResetKeep:np,deflateSetHeader:ip,deflate:rp,deflateEnd:ap,deflateSetDictionary:sp,deflateInfo:op},cp=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),up=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let i in n)cp(n,i)&&(e[i]=n[i])}}return e},dp=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},pr={assign:up,flattenChunks:dp},$d=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{$d=!1}var ii=new Uint8Array(256);for(let e=0;e<256;e++)ii[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ii[254]=ii[254]=1;var lp=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},mp=(e,t)=>{if(t<65534&&e.subarray&&$d)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},fp=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=ii[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&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 mp(a,r)},hp=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+ii[e[n]]>t?n:t},ri={string2buf:lp,buf2string:fp,utf8border:hp};function _p(){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 Xd=_p,Yd=Object.prototype.toString,{Z_NO_FLUSH:gp,Z_SYNC_FLUSH:vp,Z_FULL_FLUSH:pp,Z_FINISH:yp,Z_OK:ar,Z_STREAM_END:wp,Z_DEFAULT_COMPRESSION:Sp,Z_DEFAULT_STRATEGY:Ap,Z_DEFLATED:kp}=Kt;function ci(e){this.options=pr.assign({level:Sp,method:kp,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ap},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 Xd,this.strm.avail_out=0;let n=Zn.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==ar)throw new Error(Ht[n]);if(t.header&&Zn.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=ri.string2buf(t.dictionary):Yd.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=Zn.deflateSetDictionary(this.strm,i),n!==ar)throw new Error(Ht[n]);this._dict_set=!0}}ci.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?yp:gp,typeof e=="string"?n.input=ri.string2buf(e):Yd.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a===vp||a===pp)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=Zn.deflate(n,a),r===wp)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=Zn.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===ar;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};ci.prototype.onData=function(e){this.chunks.push(e)};ci.prototype.onEnd=function(e){e===ar&&(this.result=pr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function zs(e,t){let n=new ci(t);if(n.push(e,!0),n.err)throw n.msg||Ht[n.err];return n.result}function xp(e,t){return t=t||{},t.raw=!0,zs(e,t)}function Ep(e,t){return t=t||{},t.gzip=!0,zs(e,t)}var bp=ci,Tp=zs,Mp=xp,Rp=Ep,zp=Kt,Lp={Deflate:bp,deflate:Tp,deflateRaw:Mp,gzip:Rp,constants:zp},Qi=16209,Np=16191,Op=function(t,n){let i,r,a,s,o,u,c,d,f,m,_,g,A,v,S,b,x,p,w,T,E,z,O,R,y=t.state;i=t.next_in,O=t.input,r=i+(t.avail_in-5),a=t.next_out,R=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),u=y.dmax,c=y.wsize,d=y.whave,f=y.wnext,m=y.window,_=y.hold,g=y.bits,A=y.lencode,v=y.distcode,S=(1<<y.lenbits)-1,b=(1<<y.distbits)-1;e:do{g<15&&(_+=O[i++]<<g,g+=8,_+=O[i++]<<g,g+=8),x=A[_&S];t:for(;;){if(p=x>>>24,_>>>=p,g-=p,p=x>>>16&255,p===0)R[a++]=x&65535;else if(p&16){w=x&65535,p&=15,p&&(g<p&&(_+=O[i++]<<g,g+=8),w+=_&(1<<p)-1,_>>>=p,g-=p),g<15&&(_+=O[i++]<<g,g+=8,_+=O[i++]<<g,g+=8),x=v[_&b];n:for(;;){if(p=x>>>24,_>>>=p,g-=p,p=x>>>16&255,p&16){if(T=x&65535,p&=15,g<p&&(_+=O[i++]<<g,g+=8,g<p&&(_+=O[i++]<<g,g+=8)),T+=_&(1<<p)-1,T>u){t.msg="invalid distance too far back",y.mode=Qi;break e}if(_>>>=p,g-=p,p=a-s,T>p){if(p=T-p,p>d&&y.sane){t.msg="invalid distance too far back",y.mode=Qi;break e}if(E=0,z=m,f===0){if(E+=c-p,p<w){w-=p;do R[a++]=m[E++];while(--p);E=a-T,z=R}}else if(f<p){if(E+=c+f-p,p-=f,p<w){w-=p;do R[a++]=m[E++];while(--p);if(E=0,f<w){p=f,w-=p;do R[a++]=m[E++];while(--p);E=a-T,z=R}}}else if(E+=f-p,p<w){w-=p;do R[a++]=m[E++];while(--p);E=a-T,z=R}for(;w>2;)R[a++]=z[E++],R[a++]=z[E++],R[a++]=z[E++],w-=3;w&&(R[a++]=z[E++],w>1&&(R[a++]=z[E++]))}else{E=a-T;do R[a++]=R[E++],R[a++]=R[E++],R[a++]=R[E++],w-=3;while(w>2);w&&(R[a++]=R[E++],w>1&&(R[a++]=R[E++]))}}else if((p&64)===0){x=v[(x&65535)+(_&(1<<p)-1)];continue n}else{t.msg="invalid distance code",y.mode=Qi;break e}break}}else if((p&64)===0){x=A[(x&65535)+(_&(1<<p)-1)];continue t}else if(p&32){y.mode=Np;break e}else{t.msg="invalid literal/length code",y.mode=Qi;break e}break}}while(i<r&&a<o);w=g>>3,i-=w,g-=w<<3,_&=(1<<g)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),y.hold=_,y.bits=g},an=15,Gu=852,Hu=592,Wu=0,rs=1,Vu=2,Ip=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]),Cp=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]),Pp=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]),Fp=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]),Dp=(e,t,n,i,r,a,s,o)=>{let u=o.bits,c=0,d=0,f=0,m=0,_=0,g=0,A=0,v=0,S=0,b=0,x,p,w,T,E,z=null,O,R=new Uint16Array(an+1),y=new Uint16Array(an+1),L=null,P,X,le;for(c=0;c<=an;c++)R[c]=0;for(d=0;d<i;d++)R[t[n+d]]++;for(_=u,m=an;m>=1&&R[m]===0;m--);if(_>m&&(_=m),m===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(f=1;f<m&&R[f]===0;f++);for(_<f&&(_=f),v=1,c=1;c<=an;c++)if(v<<=1,v-=R[c],v<0)return-1;if(v>0&&(e===Wu||m!==1))return-1;for(y[1]=0,c=1;c<an;c++)y[c+1]=y[c]+R[c];for(d=0;d<i;d++)t[n+d]!==0&&(s[y[t[n+d]]++]=d);if(e===Wu?(z=L=s,O=20):e===rs?(z=Ip,L=Cp,O=257):(z=Pp,L=Fp,O=0),b=0,d=0,c=f,E=a,g=_,A=0,w=-1,S=1<<_,T=S-1,e===rs&&S>Gu||e===Vu&&S>Hu)return 1;for(;;){P=c-A,s[d]+1<O?(X=0,le=s[d]):s[d]>=O?(X=L[s[d]-O],le=z[s[d]-O]):(X=96,le=0),x=1<<c-A,p=1<<g,f=p;do p-=x,r[E+(b>>A)+p]=P<<24|X<<16|le|0;while(p!==0);for(x=1<<c-1;b&x;)x>>=1;if(x!==0?(b&=x-1,b+=x):b=0,d++,--R[c]===0){if(c===m)break;c=t[n+s[d]]}if(c>_&&(b&T)!==w){for(A===0&&(A=_),E+=f,g=c-A,v=1<<g;g+A<m&&(v-=R[g+A],!(v<=0));)g++,v<<=1;if(S+=1<<g,e===rs&&S>Gu||e===Vu&&S>Hu)return 1;w=b&T,r[w]=_<<24|g<<16|E-a|0}}return b!==0&&(r[E+b]=c-A<<24|64<<16|0),o.bits=_,0},qn=Dp,Up=0,jd=1,Zd=2,{Z_FINISH:Ku,Z_BLOCK:Bp,Z_TREES:er,Z_OK:Vt,Z_STREAM_END:Gp,Z_NEED_DICT:Hp,Z_STREAM_ERROR:We,Z_DATA_ERROR:qd,Z_MEM_ERROR:Jd,Z_BUF_ERROR:Wp,Z_DEFLATED:$u}=Kt,yr=16180,Xu=16181,Yu=16182,ju=16183,Zu=16184,qu=16185,Ju=16186,Qu=16187,ed=16188,td=16189,sr=16190,lt=16191,as=16192,nd=16193,ss=16194,id=16195,rd=16196,ad=16197,sd=16198,tr=16199,nr=16200,od=16201,cd=16202,ud=16203,dd=16204,ld=16205,os=16206,md=16207,fd=16208,de=16209,Qd=16210,el=16211,Vp=852,Kp=592,$p=15,Xp=$p,hd=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function Yp(){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 $t=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<yr||t.mode>el?1:0},tl=e=>{if($t(e))return We;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=yr,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(Vp),t.distcode=t.distdyn=new Int32Array(Kp),t.sane=1,t.back=-1,Vt},nl=e=>{if($t(e))return We;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,tl(e)},il=(e,t)=>{let n;if($t(e))return We;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?We:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,nl(e))},rl=(e,t)=>{if(!e)return We;let n=new Yp;e.state=n,n.strm=e,n.window=null,n.mode=yr;let i=il(e,t);return i!==Vt&&(e.state=null),i},jp=e=>rl(e,Xp),_d=!0,cs,us,Zp=e=>{if(_d){cs=new Int32Array(512),us=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(qn(jd,e.lens,0,288,cs,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;qn(Zd,e.lens,0,32,us,0,e.work,{bits:5}),_d=!1}e.lencode=cs,e.lenbits=9,e.distcode=us,e.distbits=5},al=(e,t,n,i)=>{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)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},qp=(e,t)=>{let n,i,r,a,s,o,u,c,d,f,m,_,g,A,v=0,S,b,x,p,w,T,E,z,O=new Uint8Array(4),R,y,L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if($t(e)||!e.output||!e.input&&e.avail_in!==0)return We;n=e.state,n.mode===lt&&(n.mode=as),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,d=n.bits,f=o,m=u,z=Vt;e:for(;;)switch(n.mode){case yr:if(n.wrap===0){n.mode=as;break}for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,O[0]=c&255,O[1]=c>>>8&255,n.check=ke(n.check,O,2,0),c=0,d=0,n.mode=Xu;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=de;break}if((c&15)!==$u){e.msg="unknown compression method",n.mode=de;break}if(c>>>=4,d-=4,E=(c&15)+8,n.wbits===0&&(n.wbits=E),E>15||E>n.wbits){e.msg="invalid window size",n.mode=de;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?td:lt,c=0,d=0;break;case Xu:for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.flags=c,(n.flags&255)!==$u){e.msg="unknown compression method",n.mode=de;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=de;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=ke(n.check,O,2,0)),c=0,d=0,n.mode=Yu;case Yu:for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,O[2]=c>>>16&255,O[3]=c>>>24&255,n.check=ke(n.check,O,4,0)),c=0,d=0,n.mode=ju;case ju:for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=ke(n.check,O,2,0)),c=0,d=0,n.mode=Zu;case Zu:if(n.flags&1024){for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=ke(n.check,O,2,0)),c=0,d=0}else n.head&&(n.head.extra=null);n.mode=qu;case qu:if(n.flags&1024&&(_=n.length,_>o&&(_=o),_&&(n.head&&(E=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+_),E)),n.flags&512&&n.wrap&4&&(n.check=ke(n.check,i,_,a)),o-=_,a+=_,n.length-=_),n.length))break e;n.length=0,n.mode=Ju;case Ju:if(n.flags&2048){if(o===0)break e;_=0;do E=i[a+_++],n.head&&E&&n.length<65536&&(n.head.name+=String.fromCharCode(E));while(E&&_<o);if(n.flags&512&&n.wrap&4&&(n.check=ke(n.check,i,_,a)),o-=_,a+=_,E)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Qu;case Qu:if(n.flags&4096){if(o===0)break e;_=0;do E=i[a+_++],n.head&&E&&n.length<65536&&(n.head.comment+=String.fromCharCode(E));while(E&&_<o);if(n.flags&512&&n.wrap&4&&(n.check=ke(n.check,i,_,a)),o-=_,a+=_,E)break e}else n.head&&(n.head.comment=null);n.mode=ed;case ed:if(n.flags&512){for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=de;break}c=0,d=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=lt;break;case td:for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}e.adler=n.check=hd(c),c=0,d=0,n.mode=sr;case sr:if(n.havedict===0)return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,Hp;e.adler=n.check=1,n.mode=lt;case lt:if(t===Bp||t===er)break e;case as:if(n.last){c>>>=d&7,d-=d&7,n.mode=os;break}for(;d<3;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}switch(n.last=c&1,c>>>=1,d-=1,c&3){case 0:n.mode=nd;break;case 1:if(Zp(n),n.mode=tr,t===er){c>>>=2,d-=2;break e}break;case 2:n.mode=rd;break;case 3:e.msg="invalid block type",n.mode=de}c>>>=2,d-=2;break;case nd:for(c>>>=d&7,d-=d&7;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=de;break}if(n.length=c&65535,c=0,d=0,n.mode=ss,t===er)break e;case ss:n.mode=id;case id:if(_=n.length,_){if(_>o&&(_=o),_>u&&(_=u),_===0)break e;r.set(i.subarray(a,a+_),s),o-=_,a+=_,u-=_,s+=_,n.length-=_;break}n.mode=lt;break;case rd:for(;d<14;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.nlen=(c&31)+257,c>>>=5,d-=5,n.ndist=(c&31)+1,c>>>=5,d-=5,n.ncode=(c&15)+4,c>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=de;break}n.have=0,n.mode=ad;case ad:for(;n.have<n.ncode;){for(;d<3;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.lens[L[n.have++]]=c&7,c>>>=3,d-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,R={bits:n.lenbits},z=qn(Up,n.lens,0,19,n.lencode,0,n.work,R),n.lenbits=R.bits,z){e.msg="invalid code lengths set",n.mode=de;break}n.have=0,n.mode=sd;case sd:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],S=v>>>24,b=v>>>16&255,x=v&65535,!(S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(x<16)c>>>=S,d-=S,n.lens[n.have++]=x;else{if(x===16){for(y=S+2;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(c>>>=S,d-=S,n.have===0){e.msg="invalid bit length repeat",n.mode=de;break}E=n.lens[n.have-1],_=3+(c&3),c>>>=2,d-=2}else if(x===17){for(y=S+3;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=S,d-=S,E=0,_=3+(c&7),c>>>=3,d-=3}else{for(y=S+7;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=S,d-=S,E=0,_=11+(c&127),c>>>=7,d-=7}if(n.have+_>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=de;break}for(;_--;)n.lens[n.have++]=E}}if(n.mode===de)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=de;break}if(n.lenbits=9,R={bits:n.lenbits},z=qn(jd,n.lens,0,n.nlen,n.lencode,0,n.work,R),n.lenbits=R.bits,z){e.msg="invalid literal/lengths set",n.mode=de;break}if(n.distbits=6,n.distcode=n.distdyn,R={bits:n.distbits},z=qn(Zd,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,R),n.distbits=R.bits,z){e.msg="invalid distances set",n.mode=de;break}if(n.mode=tr,t===er)break e;case tr:n.mode=nr;case nr:if(o>=6&&u>=258){e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,Op(e,m),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,d=n.bits,n.mode===lt&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],S=v>>>24,b=v>>>16&255,x=v&65535,!(S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(b&&(b&240)===0){for(p=S,w=b,T=x;v=n.lencode[T+((c&(1<<p+w)-1)>>p)],S=v>>>24,b=v>>>16&255,x=v&65535,!(p+S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=p,d-=p,n.back+=p}if(c>>>=S,d-=S,n.back+=S,n.length=x,b===0){n.mode=ld;break}if(b&32){n.back=-1,n.mode=lt;break}if(b&64){e.msg="invalid literal/length code",n.mode=de;break}n.extra=b&15,n.mode=od;case od:if(n.extra){for(y=n.extra;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=cd;case cd:for(;v=n.distcode[c&(1<<n.distbits)-1],S=v>>>24,b=v>>>16&255,x=v&65535,!(S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if((b&240)===0){for(p=S,w=b,T=x;v=n.distcode[T+((c&(1<<p+w)-1)>>p)],S=v>>>24,b=v>>>16&255,x=v&65535,!(p+S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=p,d-=p,n.back+=p}if(c>>>=S,d-=S,n.back+=S,b&64){e.msg="invalid distance code",n.mode=de;break}n.offset=x,n.extra=b&15,n.mode=ud;case ud:if(n.extra){for(y=n.extra;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=de;break}n.mode=dd;case dd:if(u===0)break e;if(_=m-u,n.offset>_){if(_=n.offset-_,_>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=de;break}_>n.wnext?(_-=n.wnext,g=n.wsize-_):g=n.wnext-_,_>n.length&&(_=n.length),A=n.window}else A=r,g=s-n.offset,_=n.length;_>u&&(_=u),u-=_,n.length-=_;do r[s++]=A[g++];while(--_);n.length===0&&(n.mode=nr);break;case ld:if(u===0)break e;r[s++]=n.length,u--,n.mode=nr;break;case os:if(n.wrap){for(;d<32;){if(o===0)break e;o--,c|=i[a++]<<d,d+=8}if(m-=u,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?ke(n.check,r,m,s-m):ni(n.check,r,m,s-m)),m=u,n.wrap&4&&(n.flags?c:hd(c))!==n.check){e.msg="incorrect data check",n.mode=de;break}c=0,d=0}n.mode=md;case md:if(n.wrap&&n.flags){for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=de;break}c=0,d=0}n.mode=fd;case fd:z=Gp;break e;case de:z=qd;break e;case Qd:return Jd;case el:default:return We}return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,(n.wsize||m!==e.avail_out&&n.mode<de&&(n.mode<os||t!==Ku))&&al(e,e.output,e.next_out,m-e.avail_out),f-=e.avail_in,m-=e.avail_out,e.total_in+=f,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?ke(n.check,r,m,e.next_out-m):ni(n.check,r,m,e.next_out-m)),e.data_type=n.bits+(n.last?64:0)+(n.mode===lt?128:0)+(n.mode===tr||n.mode===ss?256:0),(f===0&&m===0||t===Ku)&&z===Vt&&(z=Wp),z},Jp=e=>{if($t(e))return We;let t=e.state;return t.window&&(t.window=null),e.state=null,Vt},Qp=(e,t)=>{if($t(e))return We;let n=e.state;return(n.wrap&2)===0?We:(n.head=t,t.done=!1,Vt)},ey=(e,t)=>{let n=t.length,i,r,a;return $t(e)||(i=e.state,i.wrap!==0&&i.mode!==sr)?We:i.mode===sr&&(r=1,r=ni(r,t,n,0),r!==i.check)?qd:(a=al(e,t,n,n),a?(i.mode=Qd,Jd):(i.havedict=1,Vt))},ty=nl,ny=il,iy=tl,ry=jp,ay=rl,sy=qp,oy=Jp,cy=Qp,uy=ey,dy="pako inflate (from Nodeca project)",ft={inflateReset:ty,inflateReset2:ny,inflateResetKeep:iy,inflateInit:ry,inflateInit2:ay,inflate:sy,inflateEnd:oy,inflateGetHeader:cy,inflateSetDictionary:uy,inflateInfo:dy};function ly(){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 my=ly,sl=Object.prototype.toString,{Z_NO_FLUSH:fy,Z_FINISH:hy,Z_OK:ai,Z_STREAM_END:ds,Z_NEED_DICT:ls,Z_STREAM_ERROR:_y,Z_DATA_ERROR:gd,Z_MEM_ERROR:gy}=Kt;function ui(e){this.options=pr.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 Xd,this.strm.avail_out=0;let n=ft.inflateInit2(this.strm,t.windowBits);if(n!==ai)throw new Error(Ht[n]);if(this.header=new my,ft.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=ri.string2buf(t.dictionary):sl.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=ft.inflateSetDictionary(this.strm,t.dictionary),n!==ai)))throw new Error(Ht[n])}ui.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?hy:fy,sl.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),a=ft.inflate(n,s),a===ls&&r&&(a=ft.inflateSetDictionary(n,r),a===ai?a=ft.inflate(n,s):a===gd&&(a=ls));n.avail_in>0&&a===ds&&n.state.wrap>0&&e[n.next_in]!==0;)ft.inflateReset(n),a=ft.inflate(n,s);switch(a){case _y:case gd:case ls:case gy:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===ds))if(this.options.to==="string"){let u=ri.utf8border(n.output,n.next_out),c=n.next_out-u,d=ri.buf2string(n.output,u);n.next_out=c,n.avail_out=i-c,c&&n.output.set(n.output.subarray(u,u+c),0),this.onData(d)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===ai&&o===0)){if(a===ds)return a=ft.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};ui.prototype.onData=function(e){this.chunks.push(e)};ui.prototype.onEnd=function(e){e===ai&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=pr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Ls(e,t){let n=new ui(t);if(n.push(e),n.err)throw n.msg||Ht[n.err];return n.result}function vy(e,t){return t=t||{},t.raw=!0,Ls(e,t)}var py=ui,yy=Ls,wy=vy,Sy=Ls,Ay=Kt,ky={Inflate:py,inflate:yy,inflateRaw:wy,ungzip:Sy,constants:Ay},{Deflate:xy,deflate:Ey,deflateRaw:by,gzip:Ty}=Lp,{Inflate:My,inflate:Ry,inflateRaw:zy,ungzip:Ly}=ky,Ny=xy,Oy=Ey,Iy=by,Cy=Ty,Py=My,Fy=Ry,Dy=zy,Uy=Ly,By=Kt,vd={Deflate:Ny,deflate:Oy,deflateRaw:Iy,gzip:Cy,Inflate:Py,inflate:Fy,inflateRaw:Dy,ungzip:Uy,constants:By},or=2023,Ns=1,Os=2,Is=4,Cs=8,Ps=16,Fs=32,ol=64,Gy=128,Hy=256,Ds=512,Us=1024,Bs=2048,cr=4096,Gs=8192,ur=16384,Wy=32768,dr=65536,Hs=1<<17,lr=1<<18,mr=1<<19,Ws=1<<20,Vs=1<<21,Ks=1<<22,Vy=1<<23,$s=1<<24,fr=1<<25,Xs=1<<26,Ys=1<<27,js=1<<28,Zs=1<<29,qs=1<<30,Ky=-2147483648,Js=1,Qs=2,eo=4,$y=1,Xy=2,Yy=128,sn=()=>({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}),pd=()=>({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}),to=class cl{constructor(t,n){this.protocolVersion=0,this.isDemo=$y,this.stream=t,this.handler=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}translateCommand(t){return this.protocolVersion===0&&(t===7||t===12)?j.serverdata:this.protocolVersion===or?t:this.protocolVersion===34||this.protocolVersion===25?t<=j.frame?t:j.bad:(this.protocolVersion===0,t)}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case j.bad:return;case j.nop:break;case j.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case j.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case j.print:this.parsePrint();break;case j.serverdata:this.parseServerData();break;case j.configstring:this.parseConfigString();break;case j.spawnbaseline:this.parseSpawnBaseline();break;case j.centerprint:this.parseCenterPrint();break;case j.download:this.parseDownload();break;case j.frame:this.parseFrame();break;case j.packetentities:this.parsePacketEntities(!1);break;case j.deltapacketentities:this.parsePacketEntities(!0);break;case j.playerinfo:this.parsePlayerState();break;case j.stufftext:this.parseStuffText();break;case j.layout:this.parseLayout();break;case j.inventory:this.parseInventory();break;case j.sound:this.parseSound();break;case j.muzzleflash:this.parseMuzzleFlash();break;case j.muzzleflash2:this.parseMuzzleFlash2();break;case j.temp_entity:this.parseTempEntity();break;case j.splitclient:this.parseSplitClient();break;case j.configblast:this.parseConfigBlast();break;case j.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case j.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case j.damage:this.parseDamage();break;case j.locprint:this.parseLocPrint();break;case j.fog:this.parseFog();break;case j.waitingforplayers:this.parseWaitingForPlayers();break;case j.bot_chat:this.parseBotChat();break;case j.poi:this.parsePoi();break;case j.help_path:this.parseHelpPath();break;case j.muzzleflash3:this.parseMuzzleFlash3();break;case j.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}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===or){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let u=0;u<o;u++)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,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=vd.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new ms(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: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=vd.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new ms(r.buffer),s=new cl(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let u={x:0,y:0,z:0};this.stream.readPos(u),o=u}this.handler&&this.handler.onSound(t,n,i,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let i=this.stream.readByte();t|=i<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,u=(r&64)!==0,c=(r&128)!==0;n.push({damage:s,health:o,armor:u,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,u,c;switch(t){case F.EXPLOSION1:case F.EXPLOSION2:case F.ROCKET_EXPLOSION:case F.GRENADE_EXPLOSION:case F.ROCKET_EXPLOSION_WATER:case F.GRENADE_EXPLOSION_WATER:case F.BFG_EXPLOSION:case F.BFG_BIGEXPLOSION:case F.BOSSTPORT:case F.PLASMA_EXPLOSION:case F.PLAIN_EXPLOSION:case F.CHAINFIST_SMOKE:case F.TRACKER_EXPLOSION:case F.TELEPORT_EFFECT:case F.DBALL_GOAL:case F.NUKEBLAST:case F.WIDOWSPLASH:case F.EXPLOSION1_BIG:case F.EXPLOSION1_NP:this.stream.readPos(n);break;case F.GUNSHOT:case F.BLOOD:case F.BLASTER:case F.SHOTGUN:case F.SPARKS:case F.BULLET_SPARKS:case F.SCREEN_SPARKS:case F.SHIELD_SPARKS:case F.BLASTER2:case F.FLECHETTE:case F.MOREBLOOD:case F.ELECTRIC_SPARKS:case F.HEATBEAM_SPARKS:case F.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case F.SPLASH:case F.LASER_SPARKS:case F.WELDING_SPARKS:case F.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case F.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case F.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case F.RAILTRAIL:case F.BUBBLETRAIL:case F.BFG_LASER:case F.DEBUGTRAIL:case F.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case F.PARASITE_ATTACK:case F.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case F.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case F.LIGHTNING:u=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case F.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case F.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case F.STEAM:let d=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),d!==-1&&this.stream.readLong();break;case F.WIDOWBEAMOUT:this.stream.readShort();case F.HEATBEAM:case F.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,u,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=sn();this.parseDelta(sn(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==j.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState();if(this.isDemo===Yy){let u=this.stream.readByte();for(let c=0;c<u;c++)this.stream.readByte()}this.isDemo===Xy&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=pd(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&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)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&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()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:pd(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=sn();this.parseDelta(sn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&Gy&&(t|=this.stream.readByte()<<8),t&Wy&&(t|=this.stream.readByte()<<16),t&Vy&&(t|=this.stream.readByte()<<24);let n=0;t&Ky&&(n=this.stream.readByte());let i;return t&Hy?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=i,n.bits=r,n.bitsHigh=a,r&Bs&&(n.modelindex=this.stream.readByte()),r&Ws&&(n.modelindex2=this.stream.readByte()),r&Vs&&(n.modelindex3=this.stream.readByte()),r&Ks&&(n.modelindex4=this.stream.readByte()),r&Ps&&(n.frame=this.stream.readByte()),r&Hs&&(n.frame=this.stream.readShort()),r&dr&&r&fr?n.skinnum=this.stream.readLong():r&dr?n.skinnum=this.stream.readByte():r&fr&&(n.skinnum=this.stream.readShort()),r&ur&&r&mr?n.effects=this.stream.readLong():r&ur?n.effects=this.stream.readByte():r&mr&&(n.effects=this.stream.readShort()),r&cr&&r&lr?n.renderfx=this.stream.readLong():r&cr?n.renderfx=this.stream.readByte():r&lr&&(n.renderfx=this.stream.readShort()),r&Ns&&(n.origin.x=this.stream.readCoord()),r&Os&&(n.origin.y=this.stream.readCoord()),r&Ds&&(n.origin.z=this.stream.readCoord()),r&Us&&(n.angles.x=this.stream.readAngle()),r&Is&&(n.angles.y=this.stream.readAngle()),r&Cs&&(n.angles.z=this.stream.readAngle()),r&$s&&this.stream.readPos(n.old_origin),r&Xs&&(n.sound=this.stream.readByte()),r&Fs?n.event=this.stream.readByte():n.event=0,r&Ys&&(n.solid=this.stream.readShort()),r&Gs&&(n.alpha=this.stream.readByte()/255),r&js&&(n.scale=this.stream.readFloat()),r&Zs&&(n.instanceBits=this.stream.readLong()),r&qs&&(n.loopVolume=this.stream.readByte()/255),a&Js&&(n.loopAttenuation=this.stream.readByte()/255),a&Qs&&(n.owner=this.stream.readShort()),a&eo&&(n.oldFrame=this.stream.readShort())}},no=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(no||{}),ul=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new Wg(e),this.state=0,this.accumulatedTime=0,this.currentProtocolVersion=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0}setFrameDuration(e){this.frameDuration=e}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}let n=new to(t.data,this.handler);n.setProtocolVersion(this.currentProtocolVersion),n.parseMessage(),this.currentProtocolVersion=n.getProtocolVersion(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var jy=Object.defineProperty,dl=(e,t)=>{for(var n in t)jy(e,n,{get:t[n],enumerable:!0})},Tt={x:0,y:0,z:0};var WL=Math.PI/180;function wr(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Ar(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function li(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Zy(e){return li(e,e)}function kr(e){return Math.sqrt(Zy(e))}function ll(e){let t=kr(e);return t===0?e:Ar(e,1/t)}var ml=0,fl=1,hl=2,qy=Math.PI/180,VL=180/Math.PI;function io(e,t){switch(t){case ml:return e.x;case fl:return e.y;case hl:default:return e.z}}function ro(e){return e*qy}function hn(e){let t=e%360;return t<0?360+t:t}function xr(e){let t=ro(io(e,fl)),n=ro(io(e,ml)),i=ro(io(e,hl)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),d={x:o*a,y:o*r,z:-s},f={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},m={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:d,right:f,up:m}}var fn=[[-.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 rt=1,Mt=2;var oo=8,co=16,Jy=32;var Qy=16384;var Er=65536,_l=1<<17,ew=1<<18,tw=1<<19,nw=1<<20,iw=1<<21,rw=1<<22,aw=1<<23,KL=1<<24,br=1<<25,sw=1<<26,$L=1<<27,XL=1<<28,YL=1<<29,Tr=1<<30,jL=1<<31;var ZL=1<<25,qL=1<<28,JL=1<<29,QL=1<<30,eN=1<<31;var tN=rt|Mt,nN=rt|Er|Mt|br|Tr,iN=rt|Er|Mt,rN=rt|_l|Mt|br|Tr,aN=Jy|oo|co,sN=rt|co|oo,ow=rt|br|Tr|Mt|sw,oN=ew|tw|nw|iw|rw|aw,cN=rt|oo|co|br|Tr,uN=rt|Er|Mt,dN=rt|Mt,lN=rt|Er|Mt|_l,mN=ow|Qy;var fN=Number.MAX_SAFE_INTEGER-1;var mi=(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))(mi||{});var gl=256;var cw=256,fi=8192,hi=2048,_i=512,uw=256,dw=gl*2,lw=256,ao=32;var _e=(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.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.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+fi]="Sounds",e[e.Images=e.Sounds+hi]="Images",e[e.Lights=e.Images+_i]="Lights",e[e.ShadowLights=e.Lights+cw]="ShadowLights",e[e.Items=e.ShadowLights+lw]="Items",e[e.PlayerSkins=e.Items+uw]="PlayerSkins",e[e.General=e.PlayerSkins+gl]="General",e[e.WheelWeapons=e.General+dw]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ao]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ao]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ao]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(_e||{}),hN=_e.MaxConfigStrings;var mw={};dl(mw,{addReplayFrame:()=>gw,createReplaySession:()=>_w,deserializeReplay:()=>hw,serializeReplay:()=>fw});function fw(e){return JSON.stringify(e,null,2)}function hw(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 _w(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function gw(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var gi=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(gi||{});var ht=(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))(ht||{});function _n(e,t){return(e&t)!==0}var Mr=(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))(Mr||{}),at=(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.Any=128]="Any",e))(at||{});function vw(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,d=kr(t);if(d<1)return{x:0,y:0,z:t.z};let f=0;if(i&&!r||a){let g=d<u?u:d;f+=g*o*n}s>0&&!a&&(f+=d*c*s*n);let m=d-f;if(m<0&&(m=0),m===d)return t;let _=m/d;return Ar(t,_)}function pw(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=li(t,n),o=i-s;if(o<=0)return t;let u=r*a*i;return u>o&&(u=o),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function yw(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=kr(a);if(s>r){let o=r/s;a=Ar(a,o),s=r}return{wishdir:s===0?a:ll(a),wishspeed:s}}function ww(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=wr(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=wr(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=wr(a,{x:0,y:0,z:-60}):a=wr(a,{x:0,y:0,z:10});let s=kr(a);if(s>r){let o=r/s;a=Ar(a,o),s=r}return s*=.5,{wishdir:s===0?a:ll(a),wishspeed:s}}function Sw(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Aw(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function uo(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=Sw(n,i),r={...r,x:Aw(r.x)});let a=xr(r);return{viewangles:r,...a}}var vl=200,pl=200,yl=200,wl=140,Sl=150,Al=3;function kw(e){let t=hn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function kl(e,t){return{x:kw(e.x+t.x),y:hn(e.y+t.y),z:hn(e.z+t.z)}}function xl(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var Xt=(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))(Xt||{});var El=64;var bl=0,Tl=1,Ml=2,Rl=3,zl=4,Ll=5,Nl=6,Ol=7,Il=8;var Cl=11,Pl=12,Fl=13;function xw(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,u=s>>>8&255;return(o&255)<<8|u}else return s&65535}function Dl(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(xw(e,t,a)&o)>>>s}var vi=(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))(vi||{}),ze=(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))(ze||{}),Ul=12,Bl=9,_N=Math.ceil(Ul*Bl/16),Gl=23,Hl=2,gN=Math.ceil(Gl*Hl/16),Ew={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 Wl(e,t){return t<0||t>=Ul?0:Dl(e,34,t,Bl)}function Rr(e,t){let n;return typeof t=="number"?n=t:n=Ew[t],n===void 0||n<0||n>=Gl?0:Dl(e,41,n,Hl)}function Vl(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 bw={};dl(bw,{U_ANGLE1:()=>Ow,U_ANGLE2:()=>Iw,U_ANGLE3:()=>Cw,U_EFFECTS:()=>Dw,U_EVENT:()=>Gw,U_FRAME:()=>Pw,U_MODEL:()=>Mw,U_MODEL2:()=>Ww,U_MODEL3:()=>Vw,U_MODEL4:()=>Kw,U_MOREBITS:()=>Hw,U_NUMBER:()=>Tw,U_ORIGIN1:()=>zw,U_ORIGIN2:()=>Lw,U_ORIGIN3:()=>Nw,U_REMOVE:()=>$w,U_RENDERFX:()=>Uw,U_SKIN:()=>Fw,U_SOLID:()=>Bw,U_SOUND:()=>Rw});var Tw=1,Mw=2,Rw=4,zw=8,Lw=16,Nw=32,Ow=64,Iw=128,Cw=256,Pw=512,Fw=1024,Dw=2048,Uw=4096,Bw=8192,Gw=16384,Hw=32768,Ww=1,Vw=2,Kw=4,$w=32768,di=.025,so=33554432,Sr={None:0,Feet:1,Waist:2,Under:3},Xw=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},Yw=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&so))return{...e,waterLevel:Sr.None};let s=Sr.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&so){s=Sr.Waist;let c=e.origin.z+22;n.z=c,t(n)&so&&(s=Sr.Under)}return{...e,waterLevel:s}},lo=(e,t,n,i)=>{let r={...e};r=Xw(r,n),r=Yw(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,d=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:f,right:m}=xr(d),_=vw({velocity:s,frametime:di,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=u>=2?ww({forward:f,right:m,cmd:t,maxSpeed:320}):yw({forward:f,right:m,cmd:t,maxSpeed:320}),A=pw({velocity:_,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||u>=2?10:1,frametime:di}),v=n(a,{x:a.x+A.x*di,y:a.y+A.y*di,z:a.z+A.z*di});return{...r,origin:v.endpos,velocity:A}},Kl=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}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<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 n=fn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},$l=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),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,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}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 n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));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,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<fn.length;i++){let r=fn[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},pi=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),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,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 n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));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,n){let i=0,r=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*fn[s][0]+t*fn[s][1]+n*fn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}};var Xl=(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))(Xl||{}),vN=Object.keys(Xl).length/2;var zr=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Yl={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 jw=Object.defineProperty,Zw=(e,t)=>{for(var n in t)jw(e,n,{get:t[n],enumerable:!0})},Nr=null,Lr=[1,1,1,1],jl=["ch1","ch2","ch3"],mo=[null,null,null],qw=e=>{for(let t=0;t<jl.length;t++){let n=jl[t];try{mo[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{mo[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
170
- `)}}}Nr=mo[0]},Jw=(e,t,n)=>{if(Nr){let i=e.Draw_GetPicSize(Nr),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,Nr,{x:Lr[0],y:Lr[1],z:Lr[2]},Lr[3])}},tm=new Map,Qw=["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"],eS=e=>{for(let t of Qw)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);tm.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
171
- `)}},tS=new Map,nS=["d_left","d_right","d_up","d_down"],iS=e=>{for(let t of nS)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);tS.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
172
- `)}},rS=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},Zl=3e3,ql=5e3,Jl=4,aS=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Zl}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:ql}),this.notifyMessages.length>Jl&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Zl}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:ql}),this.notifyMessages.length>Jl&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,n){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let i=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(i,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let n=10;for(let i of this.notifyMessages)e.SCR_DrawFontString(10,n,i.text),n+=10}},sS=3e3,oS=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:sS}}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)}},cS=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},uS=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=tm.get(t.pickupIcon);if(r){let a=e.Draw_GetPicSize(r),s=n-a.width-10,o=i-a.height-10;e.SCR_DrawPic(s,o,r)}},fo=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let u=0;u<o.length;u++){let c=parseInt(o[u]),d=r[c];d&&(s?e.SCR_DrawColorPic(t+u*a,n,d,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+u*a,n,d))}},dS=(e,t,n,i,r,a)=>{let s=t.stats[ze.STAT_HEALTH]||0,o=t.stats[ze.STAT_ARMOR]||0,u=t.stats[ze.STAT_AMMO]||0,c=t.stats[ze.STAT_ARMOR_ICON]||0,d;if(s<=25&&(d=[1,0,0,1]),n.length>0&&(fo(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,d),fo(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),fo(e,a.AMMO_X,a.AMMO_Y,u,n,i)),c>0){let f=e.get_configstring(_e.Images+c);if(f){let m=e.Draw_RegisterPic(f);m&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,m)}}if(t.pickupIcon){let f=e.Draw_RegisterPic(t.pickupIcon);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}else{let f=t.stats[ze.STAT_SELECTED_ICON]||0;if(f>0){let m=e.get_configstring(_e.Images+f);if(m){let _=e.Draw_RegisterPic(m);_&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,_)}}}},ho=640,gn=480,lS=(e,t)=>{let n=e/ho,i=t/gn,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(gn-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(gn-450)*r,AMMO_X:e-(ho-540)*r,AMMO_Y:t-(gn-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(gn-450)*r,POWERUP_X:e-(ho-610)*r,POWERUP_Y:t-(gn-450)*r,scale:r}},ye=null,po=[],nm=0,yo=new aS,im=new oS;function mS(e){ye=e}function fS(){if(ye){po.length=0;for(let e=0;e<10;e++)try{let t=ye.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);po.push(t),e===0&&(nm=ye.Draw_GetPicSize(t).width)}catch{ye.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
173
- `)}qw(ye),eS(ye),iS(ye)}}function hS(e,t,n,i,r,a,s){if(!ye){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=ye.CL_ClientTime(),u=lS(n.width,n.height);if(cS(ye,s,n.width,n.height),dS(ye,s,po,nm,o,u),uS(ye,s,n.width,n.height),rS(ye,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
174
- `),d=n.height/2-c.length*10;for(let f of c)ye.SCR_DrawCenterString(d,f),d+=16}yo.drawCenterPrint(ye,o,u),yo.drawNotifications(ye,o),im.drawSubtitles(ye,o),Jw(ye,n.width,n.height)}function Ir(){return yo}function _S(){return im}function gS(e,t,n){t>=_e.Models&&t<_e.Models+fi?e.RegisterModel(n):t>=_e.Sounds&&t<_e.Sounds+hi?e.RegisterSound(n):t>=_e.Images&&t<_e.Images+_i&&e.Draw_RegisterPic(n)}var _o=1e-6,Or=typeof Float32Array<"u"?Float32Array:Array,Ql=Math.random;function go(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var vS={};Zw(vS,{add:()=>AS,angle:()=>KS,bezier:()=>FS,ceil:()=>kS,clone:()=>pS,copy:()=>wS,create:()=>rm,cross:()=>OS,dist:()=>QS,distance:()=>um,div:()=>JS,divide:()=>cm,dot:()=>wo,equals:()=>jS,exactEquals:()=>YS,floor:()=>xS,forEach:()=>iA,fromValues:()=>yS,hermite:()=>PS,inverse:()=>LS,len:()=>tA,length:()=>am,lerp:()=>IS,max:()=>bS,min:()=>ES,mul:()=>qS,multiply:()=>om,negate:()=>zS,normalize:()=>NS,random:()=>DS,rotateX:()=>HS,rotateY:()=>WS,rotateZ:()=>VS,round:()=>TS,scale:()=>MS,scaleAndAdd:()=>RS,set:()=>SS,slerp:()=>CS,sqrDist:()=>eA,sqrLen:()=>nA,squaredDistance:()=>dm,squaredLength:()=>lm,str:()=>XS,sub:()=>ZS,subtract:()=>sm,transformMat3:()=>BS,transformMat4:()=>US,transformQuat:()=>GS,zero:()=>$S});function rm(){var e=new Or(3);return Or!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function pS(e){var t=new Or(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function am(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function yS(e,t,n){var i=new Or(3);return i[0]=e,i[1]=t,i[2]=n,i}function wS(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function SS(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function AS(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function sm(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function om(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function cm(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function kS(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function xS(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function ES(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function bS(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function TS(e,t){return e[0]=go(t[0]),e[1]=go(t[1]),e[2]=go(t[2]),e}function MS(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function RS(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function um(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function dm(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function lm(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function zS(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function LS(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function NS(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+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 wo(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function OS(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function IS(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function CS(e,t,n,i){var r=Math.acos(Math.min(Math.max(wo(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function PS(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*d,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*d,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*d,e}function FS(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,d=3*a*o,f=3*u*s,m=u*a;return e[0]=t[0]*c+n[0]*d+i[0]*f+r[0]*m,e[1]=t[1]*c+n[1]*d+i[1]*f+r[1]*m,e[2]=t[2]*c+n[2]*d+i[2]*f+r[2]*m,e}function DS(e,t){t=t===void 0?1:t;var n=Ql()*2*Math.PI,i=Ql()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function US(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function BS(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function GS(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],d=r*c-a*u,f=a*o-i*c,m=i*u-r*o;return d=d+d,f=f+f,m=m+m,e[0]=o+s*d+r*m-a*f,e[1]=u+s*f+a*d-i*m,e[2]=c+s*m+i*f-r*d,e}function HS(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function WS(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function VS(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function KS(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&wo(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function $S(e){return e[0]=0,e[1]=0,e[2]=0,e}function XS(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function YS(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function jS(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=_o*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=_o*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=_o*Math.max(1,Math.abs(r),Math.abs(o))}var ZS=sm,qS=om,JS=cm,QS=um,eA=dm,tA=am,nA=lm,iA=(function(){var e=rm();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;o+=n)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 rA={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function aA(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function sA(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function oA(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=sA(t,i,r),s=e+a,u=_n(n,ht.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(u),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(u*Math.PI))}}var Cr=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...rA,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=xr(uo({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Tt}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=_n(e.pmFlags,ht.OnGround),s=oA(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=li(e.velocity,n)*this.settings.runPitch,u=li(e.velocity,i),c=u<0?-1:1,f=Math.abs(u)*this.settings.runRoll;f>2&&(f=2),f*=c;let m=this.bobFracSin*this.settings.bobPitch*r,_=this.bobFracSin*this.settings.bobRoll*r;_n(e.pmFlags,ht.Ducked)&&a&&(m*=6,_*=6),o+=Math.min(m,this.settings.maxBobAngle),_=Math.min(_,this.settings.maxBobAngle),this.bobCycle&1&&(_=-_),f+=_;let g=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),A=0,v=0,S=0,b=0,x=0;if(this.kick&&this.kick.remainingMs>0){let E=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));A+=E*this.kick.pitch,v+=E*this.kick.roll,this.kick.origin&&(S+=E*this.kick.origin.x,b+=E*this.kick.origin.y,x+=E*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let p={x:o+A,y:0,z:f+v},w={x:S,y:b,z:g+x},T={angles:p,offset:aA(w),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=T,T}},cA={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},uA=800,st={x:0,y:0,z:0};function Yt(){return{origin:st,velocity:st,viewAngles:st,onGround:!1,pmFlags:ht.OnGround,pmType:Mr.Normal,waterLevel:gi.None,gravity:uA,deltaAngles:st,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:st,kick_origin:st,gunoffset:st,gunangles:st,gunindex:0,pm_time:0,pm_type:Mr.Normal,pm_flags:ht.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function em(e){return e?{...Yt(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:st,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Yt()}function Oe(e,t,n){return e+(t-e)*n}function vo(e,t,n){let i=hn(t-e);return i>180&&(i-=360),hn(e+i*n)}function vn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Oe(e.origin.x,t.origin.x,i),y:Oe(e.origin.y,t.origin.y,i),z:Oe(e.origin.z,t.origin.z,i)},velocity:{x:Oe(e.velocity.x,t.velocity.x,i),y:Oe(e.velocity.y,t.velocity.y,i),z:Oe(e.velocity.z,t.velocity.z,i)},viewAngles:{x:vo(e.viewAngles.x,t.viewAngles.x,i),y:vo(e.viewAngles.y,t.viewAngles.y,i),z:vo(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Oe(e.damageAlpha,t.damageAlpha,i),blend:[Oe(e.blend[0],t.blend[0],i),Oe(e.blend[1],t.blend[1],i),Oe(e.blend[2],t.blend[2],i),Oe(e.blend[3],t.blend[3],i)],health:Oe(e.health||0,t.health||0,i),armor:Oe(e.armor||0,t.armor||0,i),ammo:Oe(e.ammo||0,t.ammo||0,i)}}function dA(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons},s=lo(e,a,i,r),{viewangles:o}=uo({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??st});return{...s,viewAngles:o}}var Pr=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:Yt()},this.commands=[],this.predicted=Yt(),this.settings={...cA,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??Yt()}setAuthoritative(e){let t=em(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=em(this.baseFrame.state);for(let t of this.commands)e=dA(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},we=null;function lA(){if(!we){console.error("CGame Init: cgame imports not set");return}we.Com_Print(`===== CGame Initialization =====
175
- `),mS(we),we.Com_Print(`CGame initialized
176
- `)}function mA(){we&&we.Com_Print(`CGame shutdown
177
- `),we=null}function fA(e,t,n,i,r,a,s){hS(e,t,n,i,r,a,s)}function hA(){fS()}function _A(e){return 0}function gA(e){return e.stats[ze.STAT_ACTIVE_WHEEL_WEAPON]??0}function vA(e){let t=[],n=e.stats[ze.STAT_WEAPONS_OWNED_1]||0,i=e.stats[ze.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<zr.length;a++)r&1<<a&&t.push(a);return t}function pA(e,t){if(t<0||t>=zr.length)return 0;let n=zr[t],i=Yl[n];return i===null?-1:Wl(e.stats,i)}function yA(e){let t=0,n=Object.values(vi);for(let i of n)Rr(e.stats,i)>0&&t++;return t}function wA(e){return e.stats[ze.STAT_HIT_MARKER]??0}function SA(e){let t=e;if(!t||!t.s||!t.cmd||!we)return;let n=(a,s,o,u)=>{let c={x:0,y:0,z:0};return we.PM_Trace(a,s,o||c,u||c)},i=a=>{let s={x:0,y:0,z:0};return we.PM_Trace(a,a,s,s).contents||0},r=lo(t.s,t.cmd,n,i);t.s.origin=r.origin,t.s.velocity=r.velocity,t.s.onGround=r.onGround,t.s.waterLevel=r.waterLevel}function AA(e,t){we&&gS(we,e,t)}function kA(e,t,n){if(!we)return;Ir().setCenterPrint(e,we.CL_ClientTime())}function xA(e,t,n){if(!we)return;Ir().addNotification(t,n,we.CL_ClientTime())}function EA(e){Ir().clearNotifications()}function bA(e){Ir().clearCenterPrint()}function TA(e,t){if(!we)return;_S().addSubtitle(e,we.CL_ClientTime())}function MA(e){return{x:0,y:0,z:0}}function RA(e){return null}function mm(e){return we=e,{Init:lA,Shutdown:mA,DrawHUD:fA,TouchPics:hA,LayoutFlags:_A,GetActiveWeaponWheelWeapon:gA,GetOwnedWeaponWheelWeapons:vA,GetWeaponWheelAmmoCount:pA,GetPowerupWheelCount:yA,GetHitMarkerDamage:wA,Pmove:SA,ParseConfigString:AA,ParseCenterPrint:kA,NotifyMessage:xA,ShowSubtitle:TA,ClearNotify:EA,ClearCenterprint:bA,GetMonsterFlashOffset:MA,GetExtension:RA}}function fm(e,t){let n=new Map,i=new Set,r=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let u=e.host.cvars.get(a);return u||e.host.cvars.register({name:a,defaultValue:s,flags:o})},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||i.has(a)||(i.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let u=o,c=n.get(u);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,u,c)=>{let d=o,f=n.get(d);f&&r()?.drawPic(a,s,f,[u.x,u.y,u.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let u=t.getKeyBinding(o);r()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,u)=>e.engine.trace(a,s,o,u)}}var pn=null,Rt=0;var yi=!0,wi=["ch1","ch2","ch3"],yn=[null,null,null],hm=async(e,t)=>{for(let n=0;n<wi.length;n++){let i=wi[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);yn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");yn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}pn=yn[0]};var _m=()=>{if(yi?(Rt++,Rt>=wi.length&&(yi=!1,Rt=0)):(yi=!0,Rt=0),yi){if(pn=yn[Rt],!pn){let e=!1;for(let t=0;t<wi.length;t++){let n=(Rt+t)%wi.length;if(yn[n]){Rt=n,pn=yn[n],e=!0;break}}e||(pn=null)}}else pn=null;return yi?Rt:-1};var zA=Object.defineProperty,Rm=(e,t)=>{for(var n in t)zA(e,n,{get:t[n],enumerable:!0})},$={x:0,y:0,z:0};var zN=Math.PI/180;function xi(e){return{x:e.x,y:e.y,z:e.z}}function W(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function C(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function B(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function zm(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function LA(e){return zm(e,e)}function qe(e){return Math.sqrt(LA(e))}function D(e){let t=qe(e);return t===0?e:B(e,1/t)}function NA(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function OA(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}var Go=0,Ho=1,Lm=2,IA=Math.PI/180,CA=180/Math.PI;function Ai(e,t){switch(t){case Go:return e.x;case Ho:return e.y;case Lm:default:return e.z}}function Fr(e){return e*IA}function To(e){return e*CA}function Mo(e){let t=e%360;return t<0?360+t:t}function te(e){let t=Fr(Ai(e,Ho)),n=Fr(Ai(e,Go)),i=Fr(Ai(e,Lm)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),d={x:o*a,y:o*r,z:-s},f={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},m={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:d,right:f,up:m}}function zi(e){let t=Ai(e,Go),n=Ai(e,Ho);if(t===0)return n===0?0:n>0?90:270;let i=To(Math.atan2(n,t));return i<0?i+360:i}function Rn(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=To(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=To(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}var ot=624,PA=397,FA=2567483615,DA=2147483648,UA=2147483647,So=4294967296,BA=class{constructor(e=5489){this.state=new Uint32Array(ot),this.index=ot,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<ot;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=ot}nextUint32(){this.index>=ot&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<ot;e++){let t=this.state[e]&DA|this.state[(e+1)%ot]&UA,n=this.state[(e+PA)%ot]^t>>>1;(t&1)!==0&&(n^=FA),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==ot)throw new Error(`Expected ${ot} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Nm=class{constructor(e={}){this.mt=new BA(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/So}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,i=So-So%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}};function $r(e){return new Nm(e)}var Ie=1,Ct=2;var Wo=8,Vo=16,GA=32;var HA=16384;var Xr=65536,Om=1<<17,WA=1<<18,VA=1<<19,KA=1<<20,$A=1<<21,XA=1<<22,YA=1<<23,LN=1<<24,Zt=1<<25,Yr=1<<26,NN=1<<27,ON=1<<28,IN=1<<29,zn=1<<30,CN=1<<31;var PN=1<<25,FN=1<<28,DN=1<<29,UN=1<<30,BN=1<<31,jA=Ie|Ct,GN=Ie|Xr|Ct|Zt|zn,HN=Ie|Xr|Ct,Ur=Ie|Om|Ct|Zt|zn,ZA=GA|Wo|Vo,WN=Ie|Vo|Wo,Nt=Ie|Zt|zn|Ct|Yr,VN=WA|VA|KA|$A|XA|YA,KN=Ie|Wo|Vo|Zt|zn,$N=Ie|Xr|Ct,XN=Ie|Ct,YN=Ie|Xr|Ct|Om,jN=Nt|HA,ZN=Number.MAX_SAFE_INTEGER-1;var Im=256,qA=256,JA=8192,QA=2048,ek=512,tk=256,nk=Im*2,ik=256,Ao=32,Cm=(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.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.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+JA]="Sounds",e[e.Images=e.Sounds+QA]="Images",e[e.Lights=e.Images+ek]="Lights",e[e.ShadowLights=e.Lights+qA]="ShadowLights",e[e.Items=e.ShadowLights+ik]="Items",e[e.PlayerSkins=e.Items+tk]="PlayerSkins",e[e.General=e.PlayerSkins+Im]="General",e[e.WheelWeapons=e.General+nk]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ao]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ao]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ao]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Cm||{}),qN=Cm.MaxConfigStrings,rk={};Rm(rk,{addReplayFrame:()=>ck,createReplaySession:()=>ok,deserializeReplay:()=>sk,serializeReplay:()=>ak});function ak(e){return JSON.stringify(e,null,2)}function sk(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 ok(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function ck(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Te=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(Te||{}),Me=(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))(Me||{});var re=(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))(re||{});var uk=12,dk=9,JN=Math.ceil(uk*dk/16),lk=23,mk=2,QN=Math.ceil(lk*mk/16);var fk={};Rm(fk,{U_ANGLE1:()=>wk,U_ANGLE2:()=>Sk,U_ANGLE3:()=>Ak,U_EFFECTS:()=>Ek,U_EVENT:()=>Mk,U_FRAME:()=>kk,U_MODEL:()=>_k,U_MODEL2:()=>zk,U_MODEL3:()=>Lk,U_MODEL4:()=>Nk,U_MOREBITS:()=>Rk,U_NUMBER:()=>hk,U_ORIGIN1:()=>vk,U_ORIGIN2:()=>pk,U_ORIGIN3:()=>yk,U_REMOVE:()=>Ok,U_RENDERFX:()=>bk,U_SKIN:()=>xk,U_SOLID:()=>Tk,U_SOUND:()=>gk});var hk=1,_k=2,gk=4,vk=8,pk=16,yk=32,wk=64,Sk=128,Ak=256,kk=512,xk=1024,Ek=2048,bk=4096,Tk=8192,Mk=16384,Rk=32768,zk=1,Lk=2,Nk=4,Ok=32768;var Z=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="grenades",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e.Trap="trap",e))(Z||{}),Y=(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))(Y||{}),eO=Object.keys(Y).length/2,ce=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(ce||{});var tO={[ce.Shells]:{id:ce.Shells,ammoType:Y.Shells,quantity:10,weaponAmmo:!1},[ce.Bullets]:{id:ce.Bullets,ammoType:Y.Bullets,quantity:50,weaponAmmo:!1},[ce.Rockets]:{id:ce.Rockets,ammoType:Y.Rockets,quantity:5,weaponAmmo:!1},[ce.Grenades]:{id:ce.Grenades,ammoType:Y.Grenades,quantity:5,weaponAmmo:!0},[ce.Cells]:{id:ce.Cells,ammoType:Y.Cells,quantity:50,weaponAmmo:!1},[ce.Slugs]:{id:ce.Slugs,ammoType:Y.Slugs,quantity:10,weaponAmmo:!1},[ce.MagSlugs]:{id:ce.MagSlugs,ammoType:Y.MagSlugs,quantity:10,weaponAmmo:!1},[ce.Flechettes]:{id:ce.Flechettes,ammoType:Y.Flechettes,quantity:50,weaponAmmo:!1},[ce.Disruptor]:{id:ce.Disruptor,ammoType:Y.Disruptor,quantity:15,weaponAmmo:!1},[ce.Tesla]:{id:ce.Tesla,ammoType:Y.Tesla,quantity:5,weaponAmmo:!1},[ce.Trap]:{id:ce.Trap,ammoType:Y.Trap,quantity:5,weaponAmmo:!1},[ce.Prox]:{id:ce.Prox,ammoType:Y.Prox,quantity:5,weaponAmmo:!1}};function Ot(e,t){return(e&t)!==0}var Ln=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(Ln||{}),Ik={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}};function Ck(e,t,n){if(e<=0||Ot(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Ik[n.armorType],r=Ot(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function Pk(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(Ot(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=te(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},u=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&u>0){let v={x:o.x/u,y:o.y/u,z:o.z/u};if(v.x*s.x+v.y*s.y+v.z*s.z<=.3)return{saved:0,remainingCells:r.cellCount}}let c=a.ctfMode??!1,d=r.type==="screen"||c?1:2,f=r.type==="screen"?e/3:2*e/3;f=Math.max(1,f);let m=r.cellCount*d;Ot(t,4)&&(m=Math.max(1,Math.floor(m/2))),m>f&&(m=Math.floor(f));let _=m/d;Ot(t,4)&&(_*=2),_=Math.max(1,Math.floor(_));let g=Math.max(d,_),A=Math.max(0,r.cellCount-g);return{saved:m,remainingCells:A}}var Se=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(Se||{});var Fk={...$};var nO=Object.freeze({aiflags:0,last_sighting:Fk,trail_time:0,pausetime:0});var Ko=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"last_move_time",type:"float",save:!0},{name:"damage_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],Dk=20,Uk=440,Bk=940,ko=32,Gk=1<<24,Br=1;function gm(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function Pt(e,t){let n=gm(e),i=gm(t),r=OA(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function Hk(e){return e<=Dk?"melee":e<=Uk?"near":e<=Bk?"mid":"far"}function Ei(e,t){let{forward:n}=te(e.angles),i=D(C(t.origin,e.origin)),r=zm(i,n);return(e.spawnflags&Br)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function qt(e,t,n,i){if((t.flags&Gk)!==0)return!1;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}function Wk(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=zi(n)}function Pm(e){e.angles.y=Mo(e.ideal_yaw)}function Vk(e,t,n){e.enemy&&(e.goalentity=e.enemy,Wk(e,e.enemy),Pm(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function Kk(e,t,n,i){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){Vk(e,t,n);return}let a=i?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function $k(e,t,n,i){let r=Pt(e,t),a=Hk(r);return a==="far"||t.light_level<=5||!qt(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||Ei(e,t):a==="mid"?Ei(e,t):!0}function Xk(e,t,n,i,r){if((e.spawnflags&Br)!==0){if(!qt(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=C(t.origin,e.origin);return qe(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=zi(a),Pm(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function Yk(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Br)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&Br)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function jk(e){return(e.flags&ko)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&ko)!==0:!!(e.enemy&&(e.enemy.flags&ko)!==0)}function $o(e,t,n,i,r={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=Yk(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(jk(a))return!1;if(s){if(!Xk(e,a,t,r,i))return!1}else{if(!$k(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return Kk(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function Fm(e,t){if(t===0)return{x:0,y:0,z:0};let n=Fr(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function jr(e,t,n){let i=Fm(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function Nn(e,t){let n=Mo(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=Mo(n+a)}function h(e,t){jr(e,e.angles.y,t)}function Zr(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=zi(n)}function M(e,t,n){$o(e,n.targetAwareness,n,n.trace)||Nn(e,t)}function N(e,t,n,i){if(!$o(e,i.targetAwareness,i,i.trace)&&(Zr(e,e.goalentity),Nn(e,n),t!==0&&jr(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&Pt(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function ee(e,t,n){t!==0&&jr(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&Nn(e,n)}function ie(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}$o(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&Zr(e,e.enemy??e.goalentity),Nn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Dm(e,e.angles.y,t,i)}function Zk(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&Zr(e,t),Nn(e,i),n!==0&&jr(e,e.angles.y,n)}function ae(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&Zr(e,e.enemy),Nn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Dm(e,e.angles.y,t,i)}function qk(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},i=t.trace(e.origin,e.mins,e.maxs,n,e,Ur);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&ZA?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function Jk(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Ur).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Ur).fraction<1))return!0;return!1}function Dm(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=Fm(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,Ur).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!Jk(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&qk(e,i),!0)}var Qk=Ko.filter(e=>e.save||e.type==="callback"),iO=new Map(Qk.map(e=>[e.name,e]));function ex(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function tx(e,t,n,i,r){if(Ot(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=D(n),c=B(o,(t===e?1600:500)*i/s);return e.velocity=W(e.velocity,c),c}function nx(e,t,n,i,r){let a=i,s=0,o=0,u,c;if(e.powerArmor){let d=Pk(i,r,t,n,e.powerArmor);s=d.saved,u=d.remainingCells,a-=s}if(e.regularArmor){let d=Ck(a,r,e.regularArmor);o=d.saved,c=d.remainingArmor,a-=o}return[Math.max(0,a),s,o,u,c]}function vm(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function he(e,t,n,i,r,a,s,o,u,c,d,f){if(!e.takedamage)return null;let m=ex(n,d),_=s*m,g=o*m;if(!Ot(u,32)&&((e.flags??0)&1)!==0&&_>0)return{take:0,psave:0,asave:_,knocked:{x:0,y:0,z:0},killed:!1};let v=tx(e,n,i,g,u),[S,b,x,p,w]=nx(e,r,a,_,u);e.monsterinfo&&e.monsterinfo.freeze_time>d&&_>0&&(S=e.health+100,b=0,x=0),e.powerArmor&&p!==void 0&&(e.powerArmor.cellCount=p),e.regularArmor&&(e.regularArmor.armorCount=w??e.regularArmor.armorCount);let T=S;T>0&&(e.health-=T,f&&!Ot(u,1024)&&(e.classname==="player"||e.monsterinfo)&&f(r,1,Te.temp_entity,Me.BLOOD,r,a));let E=e.health<=0;return E?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,T,r,c):T>0&&e.pain&&e.pain(e,n,o,T,c),{take:T,psave:b,asave:x,knocked:v,killed:E,remainingCells:p,remainingArmor:w}}function Xo(e,t,n,i,r,a,s,o,u,c={},d){let f=[],m=vm(t),_=c.canDamage??(()=>!0);for(let g of e){if(g===r||!g.takedamage||!_(g,t))continue;let A=g.mins&&g.maxs?NA(m,W(g.origin,g.mins),W(g.origin,g.maxs)):vm(g),v=C(m,A),S=qe(v);if(a>0&&S>a)continue;let b=i-.5*S;if(b<=0)continue;let x=g===n?b*.5:b,p=D(C(g.origin,m)),w=he(g,t,n,p,A,p,x,x,s|1,o,u,d);f.push({target:g,result:w,appliedDamage:x})}return f}function ix(e,t,n,i,r,a,s,o=0){let u=e.spawn();u.classname="rocket",u.movetype=8,u.solid=2,u.owner=t,u.origin={...n},u.velocity={x:i.x*s,y:i.y*s,z:i.z*s},u.mins={x:-4,y:-4,z:-4},u.maxs={x:4,y:4,z:4},u.touch=(c,d,f,m)=>{if(d===c.owner)return;d&&d.takedamage&&he(d,c,c.owner,c.velocity,c.origin,f?f.normal:$,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let _=e.findByRadius(c.origin,120);Xo(_,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,Te.temp_entity,Me.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(u)}function Um(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let u=c=>{let d=e.findByRadius(c.origin,120);Xo(d,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,Te.temp_entity,Me.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,d,f,m)=>{if(d!==c.owner){if(d&&d.takedamage){u(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{u(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function Yo(e,t,n,i,r,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(u,c,d,f)=>{if(c!==u.owner){if(c&&c.takedamage)he(c,u,u.owner,u.velocity,u.origin,d?d.normal:$,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(d){let m=Me.BLASTER;s===58&&(m=Me.BLUEHYPERBLASTER),e.multicast(u.origin,1,Te.temp_entity,m,u.origin,d.normal)}e.free(u)}},e.finalizeSpawn(o),o}function rx(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,u,c,d)=>{if(u!==o.owner){if(u&&u.takedamage){he(u,o,o.owner,o.velocity,o.origin,c?c.normal:$,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,Te.temp_entity,Me.WELDING_SPARKS,o.origin,$,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,Te.temp_entity,Me.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,Te.temp_entity,Me.WELDING_SPARKS,o.origin,$,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function ax(e,t,n,i,r,a){Yo(e,t,n,i,r,a,58)}function sx(e,t,n,i){let r={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=D(C(a,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},u=16,c=[],d=[],f={...r};try{for(let _=0;_<u;_++){let g=e.trace(f,null,null,o,t,Ie|Zt|zn|Yr);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&he(g.ent,t,t.owner,s,g.endpos,$,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;c.push(g.ent),d.push(g.ent.solid),g.ent.solid=0,f={...g.endpos}}let m=e.trace(r,null,null,o,t,Ie);e.multicast(t.origin,2,Te.temp_entity,Me.BFG_LASER,r,m.endpos)}finally{for(let m=0;m<c.length;m++)c[m].solid=d[m]}}function ox(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,jA).fraction<1||sx(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function cx(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=C(e.origin,r),s=qe(a),o=e.dmg_radius||100,u=(e.radius_dmg||200)*(1-Math.sqrt(s/o));u>0&&he(i,e,e.owner,e.velocity,r,$,Math.floor(u),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function ux(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(u,c,d,f)=>{if(c===u.owner)return;c&&c.takedamage&&he(c,u,u.owner,u.velocity,u.origin,d?d.normal:$,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let m=e.findByRadius(u.origin,100);Xo(m,u,u.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,Te.temp_entity,Me.BFG_BIGEXPLOSION,u.origin),u.solid=0,u.touch=void 0,u.velocity=$,u.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),u.frame=0,u.enemy=c,u.think=(_,g)=>cx(_,g),e.scheduleThink(u,e.timeSeconds+.1)},o.think=(u,c)=>ox(u,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}var rO=1/40;function dx(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var lx=1;function mx(e,t){if(!e.client)return;let n=dx(e.client.weaponStates,Z.Chaingun);!(e.client.buttons&lx)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var aO={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:Z.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:Z.Shotgun,ammoType:Y.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:Z.SuperShotgun,ammoType:Y.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:Z.Machinegun,ammoType:Y.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:mx},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:Z.Chaingun,ammoType:Y.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:Z.HandGrenade,ammoType:Y.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:Z.GrenadeLauncher,ammoType:Y.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:Z.RocketLauncher,ammoType:Y.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:Z.HyperBlaster,ammoType:Y.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:Z.Railgun,ammoType:Y.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:Z.BFG10K,ammoType:Y.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:Z.IonRipper,ammoType:Y.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:Z.Phalanx,ammoType:Y.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:Z.PlasmaBeam,ammoType:Y.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:Z.EtfRifle,ammoType:Y.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:Z.ProxLauncher,ammoType:Y.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};function fx(e,t){let n=e.monsterinfo.current_move;if(!n||((e.frame<n.firstframe||e.frame>n.lastframe)&&(e.monsterinfo.aiflags&=-129,e.frame=n.firstframe),(e.monsterinfo.aiflags&128)!==0))return;let i=e.frame-n.firstframe,r=n.frames[i];r.ai&&r.ai(e,r.dist,t),r.think&&r.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function hx(e,t){fx(e,t),e.nextthink=t.timeSeconds+.1}var Ve=$r();function _x(e,t,n){let i=e.spawn();i.classname="gib",i.origin={x:t.x+(Ve.frandom()-.5)*20,y:t.y+(Ve.frandom()-.5)*20,z:t.z+(Ve.frandom()-.5)*20},i.velocity={x:(Ve.frandom()-.5)*300,y:(Ve.frandom()-.5)*300,z:200+Ve.frandom()*100},i.movetype=9,i.solid=0,i.clipmask=1,i.avelocity={x:Ve.crandom()*600,y:Ve.crandom()*600,z:Ve.crandom()*600};let r=["models/objects/gibs/bone/tris.md2","models/objects/gibs/meat/tris.md2","models/objects/gibs/sm_meat/tris.md2"],a=r[Math.floor(Ve.frandom()*r.length)];i.modelindex=e.modelIndex(a),i.mins={x:-2,y:-2,z:-2},i.maxs={x:2,y:2,z:2},i.think=s=>{e.free(s)},e.scheduleThink(i,e.timeSeconds+10+Ve.frandom()*10),e.finalizeSpawn(i)}function Bm(e,t,n){let i=4+Math.floor(Ve.frandom()*4);for(let r=0;r<i;r++)_x(e,t,n)}var qr=.1,ki=80;var Gm=$r();function gx(){return Gm.frandom()}function Hm(e,t){return Math.floor(Gm.frandom()*(t-e+1)+e)}function xn(e,t,n){M(e,qr,n)}function $e(e,t,n){N(e,t,qr,n)}function wn(e,t,n){ie(e,t,qr,n)}function fe(e,t,n){ae(e,t,qr,n)}function K(e,t,n){h(e,t)}var bi={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function Ze(e,t){t.sound(e,2,bi.footstep,1,1,0)}function Gr(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function vx(e,t){}var jo,Wm,px,Vm,yx,wx,Sx,Ax,kx,Km,xx;function Ex(e,t){Gr(e,jo)}function bx(e,t){e.monsterinfo.aiflags&1||e.enemy||gx()>.15||(Gr(e,Wm),t.sound(e,1,bi.idle,1,2,0))}var Tx=[{ai:xn,dist:0,think:bx},{ai:xn,dist:0},{ai:xn,dist:0},{ai:xn,dist:0},{ai:xn,dist:0}];jo={firstframe:0,lastframe:4,frames:Tx,endfunc:null};var Mx=Array.from({length:20},()=>({ai:xn,dist:0}));Wm={firstframe:5,lastframe:24,frames:Mx,endfunc:Ex};var Rx=[{ai:$e,dist:9.1},{ai:$e,dist:6.3},{ai:$e,dist:4.9},{ai:$e,dist:6.7,think:Ze},{ai:$e,dist:6},{ai:$e,dist:8.2},{ai:$e,dist:7.2},{ai:$e,dist:6.1},{ai:$e,dist:4.9},{ai:$e,dist:4.7,think:Ze},{ai:$e,dist:4.7}];px={firstframe:25,lastframe:35,frames:Rx,endfunc:null};var zx=[{ai:wn,dist:21},{ai:wn,dist:11,think:Ze},{ai:wn,dist:21},{ai:wn,dist:25,think:vx},{ai:wn,dist:18,think:Ze},{ai:wn,dist:19}];Vm={firstframe:36,lastframe:41,frames:zx,endfunc:null};function Li(e,t){e.monsterinfo.aiflags&1?Gr(e,jo):Gr(e,Vm)}function $m(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=te(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},u={x:a.x+s.x*ki,y:a.y+s.y*ki,z:a.z+s.z*ki},c=r.trace(a,null,null,u,e,536870913);return!c.ent||!c.ent.takedamage?!1:(he(c.ent,e,e,s,c.endpos,c.plane?.normal||$,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function Lx(e,t){$m(e,{x:ki,y:0,z:-24},Hm(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function Xm(e,t){t.sound(e,1,bi.punch,1,1,0)}var Nx=[{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0,think:Xm},{ai:fe,dist:0,think:Lx},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0}];yx={firstframe:67,lastframe:74,frames:Nx,endfunc:Li};function Ox(e,t){$m(e,{x:ki,y:0,z:-4},Hm(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var Ix=[{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0,think:Ze},{ai:fe,dist:0},{ai:fe,dist:0,think:Xm},{ai:fe,dist:0},{ai:fe,dist:0,think:Ox},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0}];wx={firstframe:75,lastframe:86,frames:Ix,endfunc:Li};function Cx(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);for(let o of s){if(o===e||!o.takedamage)continue;let u=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-u/i);if(c<=0)continue;let d=Math.max(1,n*c*c),f=r*c*c,m=D(C(o.origin,e.origin));he(o,e,t,m,o.origin,m,d,f,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Zo(e,t){t.sound(e,1,bi.thud,1,1,0),t.sound(e,2,bi.explod,.75,1,0);let{forward:n,right:i}=te(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,Te.temp_entity,Me.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},Cx(e,e,8,165,300,t)}function Px(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Zo(e,r))}function qo(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Fx(e,t){if(!e.enemy)return;let n=C(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=D({x:n.x,y:n.y,z:0}),s=Rn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(u,c,d,f)=>{Px(u,c,d,f,t),u.groundentity&&(u.frame=104,Zo(u,t),u.touch=void 0)},qo(e,t)}function Dx(e,t){if(qo(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Zo(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Ux=[{ai:fe,dist:0},{ai:fe,dist:0},{ai:K,dist:0,think:Fx},{ai:K,dist:0,think:qo},{ai:K,dist:0,think:Dx},{ai:K,dist:0,think:Ze},{ai:K,dist:0},{ai:K,dist:0,think:Ze},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Ze}];Sx={firstframe:87,lastframe:109,frames:Ux,endfunc:Li};var Bx=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];Ax={firstframe:149,lastframe:152,frames:Bx,endfunc:Li};var Gx=Array.from({length:20},(e,t)=>({ai:K,dist:0,think:t%5===4?Ze:void 0}));kx={firstframe:153,lastframe:172,frames:Gx,endfunc:Li};function Ym(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=Km.lastframe,e.nextthink=-1,e.deadflag=2}var Hx=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Ze},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];Km={firstframe:173,lastframe:185,frames:Hx,endfunc:Ym};var Wx=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Ze},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];xx={firstframe:186,lastframe:193,frames:Wx,endfunc:Ym};function pm(){return 2*Math.random()-1}function Hr(e,t,n,i,r,a,s,o,u,c=0){let d=n;if(a>0||s>0){let _=Rn(n),{right:g,up:A}=te(_),v=pm()*a,S=pm()*s;d={x:n.x+g.x*v+A.x*S,y:n.y+g.y*v+A.y*S,z:n.z+g.z*v+A.z*S},d=D(d)}let f=W(t,B(d,8192)),m=u.trace(t,f,$,$,e,Nt);!m.ent||m.fraction===1||he(m.ent,e,e,d,m.endpos,m.plane?.normal||$,i,r,18,c,u.timeSeconds)}var It=Hr;function Vx(e,t,n,i,r,a,s,o,u,c,d=2){for(let f=0;f<o;f++)It(e,t,n,i,r,a,s,u,c,d)}function dt(e,t,n,i,r,a,s,o,u=1){Yo(o,e,t,n,i,r,u)}function Kx(e,t,n,i,r,a,s,o){ax(o,e,t,n,i,r)}function $x(e,t,n,i,r,a,s,o){rx(o,e,t,n,i,r)}function Xx(e,t,n,i,r,a,s){Um(s,e,t,n,i,r)}function Ni(e,t,n,i,r,a,s){ix(s,e,t,n,i,120,r)}function jm(e,t,n,i,r,a,s,o,u){ux(u,e,t,n,i,r,s)}function Zm(e,t,n,i,r,a,s){let o=W(t,B(n,8192)),u=s.trace(t,o,$,$,e,Nt);s.multicast(t,2,Te.temp_entity,Me.RAILTRAIL,t,u.endpos),u.ent&&u.ent.takedamage&&he(u.ent,e,e,n,u.endpos,$,i,r,6,11,s.timeSeconds)}function Oi(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=te(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,u=W(s,B(a,o)),c=r.trace(s,u,$,$,e,Nt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let d=D(C(c.endpos,s));return he(c.ent,e,e,d,c.endpos,c.plane?.normal||$,n,i,0,0,r.timeSeconds),!0}return!1}function Yx(e,t,n,i,r,a,s,o){Ni(e,t,n,i,r,a,o)}function ym(e,t){let n={...e.origin},i=W(n,B(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let u=0;u<a;u++){let c=t.trace(r,i,$,$,e,Ie|Zt|zn|Yr);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&he(c.ent,e,e.owner,e.movedir,c.endpos,$,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,Te.temp_entity,Me.LASER_SPARKS,10,c.endpos,c.plane?.normal||$,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,r={...c.endpos};continue}break}}finally{for(let u=0;u<s.length;u++)s[u].solid=o[u]}t.linkentity(e)}function jx(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Ro(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?jx(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),ym(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),ym(a,r)}var Jo=.1,Zx={x:0,y:30,z:-15},qx={x:0,y:15,z:0},Jx={x:0,y:-15,z:0},Qx={x:0,y:-30,z:-15},e2={x:30,y:20,z:0},t2={x:30,y:-20,z:0};function n2(e,t,n){M(e,Jo,n)}function i2(e,t,n){N(e,t,Jo,n)}function Jr(e,t,n){ae(e,t,Jo,n)}function Qo(e,t,n){h(e,t)}var ec,qm,Jm,r2,Qm,ef,a2,s2,o2,tf;function c2(e){e.monsterinfo.current_move=ec}function u2(e){e.monsterinfo.current_move=qm}function Ii(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Jm:e.monsterinfo.current_move=ec}function nf(e){e.monsterinfo.current_move=Qm}function d2(e){e.enemy&&Ei(e,e.enemy)&&Math.random()<=.7?nf(e):e.monsterinfo.current_move=ef}function zo(e,t){let{forward:n,right:i,up:r}=te(e.angles),a={...e.origin},s=B(n,t.x),o=B(i,t.y),u=B(r,t.z);return W(W(W(a,s),o),u)}function l2(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=zo(e,e2),i=D(C(e.enemy.origin,n));It(e,n,i,6,4,.1,.05,0,t,4);let r=zo(e,t2),a=D(C(e.enemy.origin,r));It(e,r,a,6,4,.1,.05,0,t,4)}function m2(e,t){if(!e.enemy)return;let n=[Zx,qx,Jx,Qx],i=n[Math.floor(Math.random()*n.length)],r=zo(e,i),a=D(C(e.enemy.origin,r));Ni(e,r,a,50,500,0,t)}function f2(e){e.monsterinfo.nextframe=tf.lastframe,e.nextthink=-1}var rf=Array.from({length:20},()=>({ai:i2,dist:10}));qm={firstframe:0,lastframe:19,frames:rf,endfunc:u2};Jm={firstframe:0,lastframe:19,frames:rf,endfunc:Ii};var h2=Array.from({length:21},()=>({ai:n2,dist:0}));ec={firstframe:29,lastframe:49,frames:h2,endfunc:c2};var _2=Array.from({length:9},(e,t)=>({ai:Jr,dist:2,think:t===8?nf:null}));r2={firstframe:50,lastframe:58,frames:_2,endfunc:null};var g2=Array.from({length:6},()=>({ai:Jr,dist:2,think:l2}));Qm={firstframe:59,lastframe:64,frames:g2,endfunc:d2};var v2=Array.from({length:4},()=>({ai:Jr,dist:2}));ef={firstframe:65,lastframe:68,frames:v2,endfunc:Ii};var p2=Array.from({length:21},(e,t)=>({ai:Jr,dist:2,think:t===12?m2:null}));a2={firstframe:69,lastframe:89,frames:p2,endfunc:Ii};var y2=Array.from({length:18},()=>({ai:Qo,dist:0}));s2={firstframe:90,lastframe:107,frames:y2,endfunc:Ii};var w2=Array.from({length:4},()=>({ai:Qo,dist:0}));o2={firstframe:108,lastframe:111,frames:w2,endfunc:Ii};var S2=Array.from({length:49},()=>({ai:Qo,dist:0}));tf={firstframe:112,lastframe:160,frames:S2,endfunc:f2};var Qr=.1,tc=80,ea=Math.random;function af(e,t,n){M(e,Qr,n)}function Xe(e,t,n){N(e,t,Qr,n)}function Ye(e,t,n){ie(e,t,Qr,n)}function I(e,t,n){ae(e,t,Qr,n)}function H(e,t,n){h(e,t)}var nc,A2,k2,sf,of,x2,E2,b2,T2,M2,R2,z2,L2,N2;function cf(e){e.monsterinfo.current_move=nc}function Ft(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=nc:e.monsterinfo.current_move=sf}function O2(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function I2(e,t){let n={x:tc,y:e.maxs.x,z:8};Oi(e,n,15+Math.floor(ea()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function C2(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function P2(e,t){let n={x:tc,y:e.mins.x,z:8};Oi(e,n,15+Math.floor(ea()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function uf(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function df(e,t){Oi(e,{x:tc,y:0,z:8},10+Math.floor(ea()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function lf(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=of)}function wm(e,t){if(!e.enemy)return;let n=te(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,$,$,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,Te.temp_entity,Me.PARASITE_ATTACK,e,i,r);let s=C(i,r);he(e.enemy,e,e,s,e.enemy.origin,$,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=te(e.angles).forward;e.enemy.velocity=B(o,-1200)}var Sm=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],Am=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function F2(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=te(n.angles),s=n.frame-0;(s<0||s>=Sm.length)&&(s=0);let o=Sm[s],u=W(n.origin,B(r,o.x));u=W(u,B(i,o.y)),u=W(u,B(a,o.z));let c=D(C(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function D2(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=te(n.angles),s=n.frame-0;(s<0||s>=Am.length)&&(s=0);let o=Am[s],u=W(n.origin,B(r,o.x));u=W(u,B(i,o.y)),u=W(u,B(a,o.z));let c=D(C(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function ct(e,t){Ro(e,1,!1,F2,t),Ro(e,1,!0,D2,t)}function U2(e){ea()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function B2(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function G2(e){}function H2(e){e.monsterinfo.aiflags&=-17}var W2=Array.from({length:30},()=>({ai:af,dist:0}));nc={firstframe:162,lastframe:191,frames:W2,endfunc:cf};var V2=Array.from({length:30},()=>({ai:af,dist:0}));A2={firstframe:192,lastframe:221,frames:V2,endfunc:cf};var K2=[{ai:Xe,dist:7},{ai:Xe,dist:2},{ai:Xe,dist:3},{ai:Xe,dist:3},{ai:Xe,dist:1},{ai:Xe,dist:0},{ai:Xe,dist:0},{ai:Xe,dist:9},{ai:Xe,dist:-4},{ai:Xe,dist:-1},{ai:Xe,dist:2}];k2={firstframe:0,lastframe:10,frames:K2,endfunc:null};var $2=[{ai:Ye,dist:9},{ai:Ye,dist:2},{ai:Ye,dist:3},{ai:Ye,dist:3},{ai:Ye,dist:1},{ai:Ye,dist:0},{ai:Ye,dist:0},{ai:Ye,dist:10},{ai:Ye,dist:-4},{ai:Ye,dist:-1},{ai:Ye,dist:2}];sf={firstframe:0,lastframe:10,frames:$2,endfunc:null};var X2=[{ai:I,dist:8},{ai:I,dist:3},{ai:I,dist:5},{ai:I,dist:0},{ai:I,dist:-3,think:O2},{ai:I,dist:0},{ai:I,dist:-5},{ai:I,dist:-7,think:I2},{ai:I,dist:0},{ai:I,dist:6,think:C2},{ai:I,dist:1},{ai:I,dist:2,think:P2},{ai:I,dist:-3},{ai:I,dist:6},{ai:I,dist:-1},{ai:I,dist:-3},{ai:I,dist:2},{ai:I,dist:-11}];of={firstframe:53,lastframe:70,frames:X2,endfunc:Ft};var Y2=[{ai:I,dist:5},{ai:I,dist:-4},{ai:I,dist:-4},{ai:I,dist:-3},{ai:I,dist:0,think:uf},{ai:I,dist:0},{ai:I,dist:13,think:df},{ai:I,dist:0},{ai:I,dist:2},{ai:I,dist:0},{ai:I,dist:-9,think:lf},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:3},{ai:I,dist:2},{ai:I,dist:-3},{ai:I,dist:-6}];x2={firstframe:71,lastframe:87,frames:Y2,endfunc:Ft};var j2=[{ai:I,dist:5},{ai:I,dist:-4},{ai:I,dist:-4},{ai:I,dist:-3},{ai:I,dist:0,think:uf},{ai:I,dist:0,think:wm},{ai:I,dist:13},{ai:I,dist:0,think:df},{ai:I,dist:2},{ai:I,dist:0,think:wm},{ai:I,dist:-9,think:lf},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:3},{ai:I,dist:2},{ai:I,dist:-3},{ai:I,dist:-6}];E2={firstframe:71,lastframe:87,frames:j2,endfunc:Ft};var Z2=[{ai:I,dist:9,think:ct},{ai:I,dist:2,think:ct},{ai:I,dist:3,think:ct},{ai:I,dist:3,think:ct},{ai:I,dist:1,think:ct},{ai:I,dist:0,think:ct},{ai:I,dist:0,think:ct},{ai:I,dist:10,think:ct},{ai:I,dist:-4,think:ct},{ai:I,dist:-1,think:ct},{ai:I,dist:2,think:U2}];b2={firstframe:0,lastframe:10,frames:Z2,endfunc:Ft};var q2=[{ai:H,dist:-6},{ai:H,dist:-2},{ai:H,dist:-6},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:2},{ai:H,dist:0},{ai:H,dist:2},{ai:H,dist:1},{ai:H,dist:7},{ai:H,dist:0},{ai:H,dist:3},{ai:H,dist:-1}];T2={firstframe:88,lastframe:108,frames:q2,endfunc:Ft};var J2=[{ai:H,dist:-2},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:3},{ai:H,dist:1},{ai:H,dist:-2}];M2={firstframe:109,lastframe:116,frames:J2,endfunc:Ft};var Q2=[{ai:H,dist:-2},{ai:H,dist:2},{ai:H,dist:1},{ai:H,dist:3},{ai:H,dist:0},{ai:H,dist:-4}];R2={firstframe:117,lastframe:122,frames:Q2,endfunc:Ft};var eE=Array.from({length:18},()=>({ai:H,dist:0}));z2={firstframe:123,lastframe:140,frames:eE,endfunc:mf};var tE=[{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:9},{ai:H,dist:0}];L2={firstframe:141,lastframe:145,frames:tE,endfunc:mf};var nE=[{ai:H,dist:0},{ai:H,dist:-2,think:B2},{ai:H,dist:17,think:G2},{ai:H,dist:-3},{ai:H,dist:-1,think:H2},{ai:H,dist:-5},{ai:H,dist:-6},{ai:H,dist:-6}];N2={firstframe:146,lastframe:153,frames:nE,endfunc:Ft};function mf(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var ta=.1,iE=80,On=Math.random;function ff(e,t,n){M(e,ta,n)}function rE(e,t,n){N(e,t,ta,n)}function aE(e,t,n){ie(e,t,ta,n)}function V(e,t,n){ae(e,t,ta,n)}function In(e,t,n){h(e,t)}var ic,hf,_f,sE,rc,Lo,oE,ac,gf,cE,uE,dE,lE,mE,fE,vf;function pf(e){e.monsterinfo.current_move=ic}function hE(e){e.monsterinfo.current_move=hf}function Jt(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=ic;return}e.monsterinfo.current_move=_f}function _E(e){e.monsterinfo.aiflags&4||e.enemy||On()<=.3&&(e.monsterinfo.current_move=vf)}function gE(e,t){On()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function vE(e,t){let n={x:iE,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),Oi(e,n,10+Math.floor(On()*6),100,t)}function pE(e,t){let{forward:n,right:i}=te(e.angles),r={x:0,y:20,z:40},a=W(e.origin,B(n,r.x)),s=B(i,r.y),o=W(a,s),u={...o,z:o.z+r.z},c=e.skin>1?500:650,d=!!e.monsterinfo.blindfire,f=$;if(d&&e.monsterinfo.blind_fire_target)f=e.monsterinfo.blind_fire_target;else if(e.enemy)f=e.enemy.origin;else return;let m=C(f,u);!d&&e.enemy&&(On()<.33||u.z<e.enemy.absmin.z?m={...m,z:m.z+e.enemy.viewheight}:m={...m,z:e.enemy.absmin.z+1-u.z});let _=D(m);e.skin>1?Yx(e,u,_,50,c,0,.075,t):Ni(e,u,_,50,c,0,t)}function yE(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=C(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=Rn(n).y}}function wE(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function SE(e){e.monsterinfo.current_move=rc}function AE(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Lo;return}if(e.enemy&&e.enemy.health>0&&On()<=.6){e.monsterinfo.current_move=rc;return}e.monsterinfo.current_move=Lo}function kE(e){if(e.enemy&&e.enemy.health>0&&On()<=.9){e.monsterinfo.current_move=ac;return}e.monsterinfo.current_move=gf}function xE(e){e.monsterinfo.current_move=ac}var EE=Array.from({length:30},(e,t)=>({ai:ff,dist:0,think:t===8?(n,i)=>gE(n,i):null}));vf={firstframe:201,lastframe:230,frames:EE,endfunc:pf};var bE=Array.from({length:30},(e,t)=>({ai:ff,dist:0,think:t===29?_E:null}));ic={firstframe:101,lastframe:130,frames:bE,endfunc:pf};var TE=Array.from({length:10},()=>({ai:rE,dist:6}));hf={firstframe:171,lastframe:180,frames:TE,endfunc:hE};var ME=Array.from({length:10},()=>({ai:aE,dist:12}));_f={firstframe:171,lastframe:180,frames:ME,endfunc:Jt};var RE=Array.from({length:5},()=>({ai:In,dist:0}));cE={firstframe:90,lastframe:94,frames:RE,endfunc:Jt};var zE=Array.from({length:5},()=>({ai:In,dist:0}));uE={firstframe:95,lastframe:99,frames:zE,endfunc:Jt};var LE=Array.from({length:21},()=>({ai:In,dist:0}));dE={firstframe:100,lastframe:120,frames:LE,endfunc:Jt};var NE=Array.from({length:12},()=>({ai:In,dist:0}));lE={firstframe:48,lastframe:59,frames:NE,endfunc:yf};var OE=Array.from({length:23},()=>({ai:In,dist:0}));mE={firstframe:60,lastframe:82,frames:OE,endfunc:yf};function yf(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var IE=[{ai:V,dist:0,think:yE},{ai:V,dist:0},{ai:V,dist:0},{ai:V,dist:4},{ai:V,dist:0},{ai:V,dist:-3},{ai:V,dist:3},{ai:V,dist:5},{ai:V,dist:7},{ai:V,dist:0},{ai:V,dist:0},{ai:V,dist:0},{ai:V,dist:0,think:SE}];sE={firstframe:0,lastframe:12,frames:IE,endfunc:null};var CE=[{ai:V,dist:19,think:pE},{ai:V,dist:-6},{ai:V,dist:-5},{ai:V,dist:-2},{ai:V,dist:-7},{ai:V,dist:0},{ai:V,dist:1},{ai:V,dist:10,think:wE},{ai:V,dist:4},{ai:V,dist:5},{ai:V,dist:6},{ai:V,dist:6},{ai:V,dist:4},{ai:V,dist:3,think:AE}];rc={firstframe:13,lastframe:26,frames:CE,endfunc:null};var PE=[{ai:V,dist:-3},{ai:V,dist:0},{ai:V,dist:-6},{ai:V,dist:-4},{ai:V,dist:-2}];Lo={firstframe:27,lastframe:31,frames:PE,endfunc:Jt};var FE=[{ai:V,dist:1},{ai:V,dist:8},{ai:V,dist:3}];oE={firstframe:32,lastframe:34,frames:FE,endfunc:xE};var DE=[{ai:V,dist:1},{ai:V,dist:7,think:vE},{ai:V,dist:-7},{ai:V,dist:1},{ai:V,dist:-1},{ai:V,dist:1},{ai:V,dist:0},{ai:V,dist:1},{ai:V,dist:-2,think:kE}];ac={firstframe:35,lastframe:43,frames:DE,endfunc:null};var UE=[{ai:V,dist:-6},{ai:V,dist:-1},{ai:V,dist:-6},{ai:V,dist:0}];gf={firstframe:44,lastframe:47,frames:UE,endfunc:Jt};var BE=Array.from({length:7},()=>({ai:In,dist:0}));fE={firstframe:83,lastframe:89,frames:BE,endfunc:Jt};var na=.1,GE=80,HE=24;function WE(e,t,n){M(e,na,n)}function VE(e,t,n){N(e,t,na,n)}function wf(e,t,n){ie(e,t,na,n)}function ve(e,t,n){ae(e,t,na,n)}function sc(e,t,n){h(e,t)}var KE,$E,Sf,Af,XE,YE,jE,ZE;function qE(e){e.monsterinfo.current_move=Af}function oc(e){e.monsterinfo.current_move=Sf}function km(e,t){Oi(e,{x:GE,y:0,z:0},5,0,t)}function JE(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var QE=[{ai:WE,dist:0}];KE={firstframe:41,lastframe:41,frames:QE,endfunc:null};var e5=Array.from({length:24},()=>({ai:wf,dist:HE}));Af={firstframe:70,lastframe:93,frames:e5,endfunc:null};var t5=Array.from({length:6},()=>({ai:wf,dist:8}));Sf={firstframe:65,lastframe:70,frames:t5,endfunc:qE};var n5=Array.from({length:24},()=>({ai:VE,dist:4}));$E={firstframe:41,lastframe:64,frames:n5,endfunc:null};var i5=Array.from({length:5},()=>({ai:sc,dist:0}));YE={firstframe:99,lastframe:103,frames:i5,endfunc:oc};var r5=Array.from({length:5},()=>({ai:sc,dist:0}));jE={firstframe:94,lastframe:98,frames:r5,endfunc:oc};var a5=[{ai:ve,dist:0,think:JE},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0,think:km},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0,think:km},{ai:ve,dist:0}];XE={firstframe:0,lastframe:19,frames:a5,endfunc:oc};function s5(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var o5=Array.from({length:56},()=>({ai:sc,dist:0}));ZE={firstframe:104,lastframe:159,frames:o5,endfunc:s5};var ia=.1;function c5(e,t,n){M(e,ia,n)}function u5(e,t,n){N(e,t,ia,n)}function d5(e,t,n){ie(e,t,ia,n)}function l5(e,t,n){ae(e,t,ia,n)}function kf(e,t,n){h(e,t)}var cc,xf,Ef,m5,f5,bf;function h5(e){e.monsterinfo.current_move=cc}function _5(e){e.monsterinfo.current_move=xf}function uc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ef:e.monsterinfo.current_move=cc}function g5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,5,1e3,0,0,t,1)}function v5(e){e.monsterinfo.nextframe=bf.lastframe,e.nextthink=-1}var p5=Array.from({length:46},()=>({ai:c5,dist:0}));cc={firstframe:0,lastframe:45,frames:p5,endfunc:h5};var y5=Array.from({length:46},()=>({ai:u5,dist:5}));xf={firstframe:0,lastframe:45,frames:y5,endfunc:_5};var w5=Array.from({length:46},()=>({ai:d5,dist:10}));Ef={firstframe:0,lastframe:45,frames:w5,endfunc:uc};var S5=Array.from({length:20},(e,t)=>({ai:l5,dist:0,think:t===10?g5:null}));m5={firstframe:46,lastframe:65,frames:S5,endfunc:uc};var A5=Array.from({length:6},()=>({ai:kf,dist:0}));f5={firstframe:66,lastframe:71,frames:A5,endfunc:uc};var k5=Array.from({length:10},()=>({ai:kf,dist:0}));bf={firstframe:84,lastframe:93,frames:k5,endfunc:v5};var ra=.1;function x5(e,t,n){M(e,ra,n)}function E5(e,t,n){N(e,t,ra,n)}function b5(e,t,n){ie(e,t,ra,n)}function T5(e,t,n){ae(e,t,ra,n)}function Tf(e,t,n){h(e,t)}var dc,Mf,Rf,M5,R5,zf;function z5(e){e.monsterinfo.current_move=dc}function L5(e){e.monsterinfo.current_move=Mf}function lc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Rf:e.monsterinfo.current_move=dc}function N5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,5,1e3,0,0,t,1)}function O5(e,t){if(!e.enemy)return;let n=5+Math.random()*5;Pt(e,e.enemy)<=80&&Ei(e,e.enemy)&&he(e.enemy,e,e,D(C(e.enemy.origin,e.origin)),e.enemy.origin,$,n,5,2,0,t.timeSeconds)}function I5(e){e.monsterinfo.nextframe=zf.lastframe,e.nextthink=-1}var C5=Array.from({length:46},()=>({ai:x5,dist:0}));dc={firstframe:0,lastframe:45,frames:C5,endfunc:z5};var P5=Array.from({length:46},()=>({ai:E5,dist:5}));Mf={firstframe:0,lastframe:45,frames:P5,endfunc:L5};var F5=Array.from({length:46},()=>({ai:b5,dist:10}));Rf={firstframe:0,lastframe:45,frames:F5,endfunc:lc};var D5=Array.from({length:20},(e,t)=>({ai:T5,dist:0,think:t===10?N5:t===12?O5:null}));M5={firstframe:46,lastframe:65,frames:D5,endfunc:lc};var U5=Array.from({length:6},()=>({ai:Tf,dist:0}));R5={firstframe:66,lastframe:71,frames:U5,endfunc:lc};var B5=Array.from({length:10},()=>({ai:Tf,dist:0}));zf={firstframe:84,lastframe:93,frames:B5,endfunc:I5};var aa=.1;function G5(e,t,n){M(e,aa,n)}function H5(e,t,n){N(e,t,aa,n)}function W5(e,t,n){ie(e,t,aa,n)}function Lf(e,t,n){ae(e,t,aa,n)}function Nf(e,t,n){h(e,t)}var mc,Of,If,V5,K5,$5,Cf;function X5(e){e.monsterinfo.current_move=mc}function Y5(e){e.monsterinfo.current_move=Of}function sa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=If:e.monsterinfo.current_move=mc}function j5(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function Z5(e,t){if(!e.enemy||!Ei(e,e.enemy))return;let n=Pt(e,e.enemy);if(j5(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=D(C(e.enemy.origin,i));he(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function q5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=D(C(e.enemy.origin,n));Zm(e,n,i,50,100,0,t)}function J5(e){e.monsterinfo.nextframe=Cf.lastframe,e.nextthink=-1}var Q5=Array.from({length:30},()=>({ai:G5,dist:0}));mc={firstframe:0,lastframe:29,frames:Q5,endfunc:X5};var eb=Array.from({length:40},()=>({ai:H5,dist:3}));Of={firstframe:30,lastframe:69,frames:eb,endfunc:Y5};var tb=Array.from({length:20},()=>({ai:W5,dist:12}));If={firstframe:70,lastframe:89,frames:tb,endfunc:sa};var nb=Array.from({length:10},(e,t)=>({ai:Lf,dist:0,think:t===5?Z5:null}));V5={firstframe:90,lastframe:99,frames:nb,endfunc:sa};var ib=Array.from({length:12},(e,t)=>({ai:Lf,dist:0,think:t===6?q5:null}));K5={firstframe:100,lastframe:111,frames:ib,endfunc:sa};var rb=Array.from({length:6},()=>({ai:Nf,dist:0}));$5={firstframe:112,lastframe:117,frames:rb,endfunc:sa};var ab=Array.from({length:12},()=>({ai:Nf,dist:0}));Cf={firstframe:118,lastframe:129,frames:ab,endfunc:J5};var oa=.1;function Pf(e,t,n){M(e,oa,n)}function sb(e,t,n){N(e,t,oa,n)}function Ff(e,t,n){ie(e,t,oa,n)}function ca(e,t,n){ae(e,t,oa,n)}function pe(e,t,n){h(e,t)}var fc,Df,ob,Uf,cb,ub,db,hc,Bf,lb,mb,fb,Gf,hb,Hf;function _b(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function gb(e){e.monsterinfo.current_move=fc}function vb(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=Df)}function Qt(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=fc:e.monsterinfo.current_move=Uf}function pb(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function yb(e,t){e.monsterinfo.current_move=hc}function wb(e,t){if(e.enemy&&e.enemy.health>0&&qt(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=hc;return}e.monsterinfo.current_move=Bf}function Sb(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=D(C(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),It(e,n,i,r,a,300,500,0,t,5)}function Wf(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Um(t,e,n,i,r,a)}function Ab(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&Wf(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function kb(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function xb(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function Eb(e,t){if(!e.enemy)return;let n=C(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=D({x:n.x,y:n.y,z:0}),s=Rn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function bb(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function Tb(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=Hf)}var Mb=Array.from({length:30},(e,t)=>({ai:Pf,dist:0,think:t===29?vb:null}));fc={firstframe:0,lastframe:29,frames:Mb,endfunc:null};var Rb=Array.from({length:40},(e,t)=>({ai:Pf,dist:0,think:t===7?_b:null}));Df={firstframe:30,lastframe:69,frames:Rb,endfunc:gb};var zb=[0,3,4,5,7,2,6,4,2,7,5,7,4],Lb=zb.map(e=>({ai:sb,dist:e}));ob={firstframe:76,lastframe:88,frames:Lb,endfunc:null};var Nb=[26,9,9,9,15,10,13,6],Ob=Nb.map((e,t)=>({ai:Ff,dist:e,think:t%4===0?Tb:null}));Uf={firstframe:94,lastframe:101,frames:Ob,endfunc:null};var Ib=[32,15,10,18,8,20],Cb=Ib.map(e=>({ai:Ff,dist:e}));cb={firstframe:102,lastframe:107,frames:Cb,endfunc:null};var Pb=Array.from({length:21},(e,t)=>({ai:ca,dist:0,think:[4,7,10,13].includes(t)?Wf:null}));db={firstframe:108,lastframe:128,frames:Pb,endfunc:Qt};var Fb=Array.from({length:7},(e,t)=>({ai:ca,dist:0,think:t===0?pb:null}));ub={firstframe:137,lastframe:143,frames:Fb,endfunc:yb};var Db=Array.from({length:8},()=>({ai:ca,dist:0,think:Sb}));hc={firstframe:144,lastframe:151,frames:Db,endfunc:wb};var Ub=Array.from({length:7},()=>({ai:ca,dist:0}));Bf={firstframe:152,lastframe:158,frames:Ub,endfunc:Qt};var Bb=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],Gb=Bb.map(e=>({ai:pe,dist:e}));lb={firstframe:159,lastframe:176,frames:Gb,endfunc:Qt};var Hb=[-2,11,6,2,-1,-7,-2,-7],Wb=Hb.map(e=>({ai:pe,dist:e}));mb={firstframe:177,lastframe:184,frames:Wb,endfunc:Qt};var Vb=[-3,1,1,0,1],Kb=Vb.map(e=>({ai:pe,dist:e}));fb={firstframe:185,lastframe:189,frames:Kb,endfunc:Qt};var $b=[0,0,0,-7,-3,-5,8,6,0,0,0],Xb=$b.map(e=>({ai:pe,dist:e}));function Yb(e){e.monsterinfo.nextframe=Gf.lastframe,e.nextthink=-1,e.solid=0}Gf={firstframe:190,lastframe:200,frames:Xb,endfunc:Yb};var jb=[{ai:pe,dist:1,think:Ab},{ai:pe,dist:1},{ai:pe,dist:1,think:kb},{ai:pe,dist:0},{ai:pe,dist:-1},{ai:pe,dist:-1},{ai:pe,dist:0,think:xb},{ai:pe,dist:-1}];hb={firstframe:201,lastframe:208,frames:jb,endfunc:Qt};var Zb=[{ai:pe,dist:0,think:Eb},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:bb},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];Hf={firstframe:209,lastframe:216,frames:Zb,endfunc:Qt};var ua=.1;function qb(e,t,n){M(e,ua,n)}function Jb(e,t,n){N(e,t,ua,n)}function Qb(e,t,n){ie(e,t,ua,n)}function e3(e,t,n){ae(e,t,ua,n)}function Vf(e,t,n){h(e,t)}var _c,Kf,$f,t3,n3,Xf;function i3(e){e.monsterinfo.current_move=_c}function r3(e){e.monsterinfo.current_move=Kf}function gc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=$f:e.monsterinfo.current_move=_c}function a3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,5,1e3,0,0,t,1)}function s3(e){e.monsterinfo.nextframe=Xf.lastframe,e.nextthink=-1}var o3=Array.from({length:46},()=>({ai:qb,dist:0}));_c={firstframe:0,lastframe:45,frames:o3,endfunc:i3};var c3=Array.from({length:46},()=>({ai:Jb,dist:5}));Kf={firstframe:0,lastframe:45,frames:c3,endfunc:r3};var u3=Array.from({length:46},()=>({ai:Qb,dist:10}));$f={firstframe:0,lastframe:45,frames:u3,endfunc:gc};var d3=Array.from({length:20},(e,t)=>({ai:e3,dist:0,think:t===10?a3:null}));t3={firstframe:46,lastframe:65,frames:d3,endfunc:gc};var l3=Array.from({length:6},()=>({ai:Vf,dist:0}));n3={firstframe:66,lastframe:71,frames:l3,endfunc:gc};var m3=Array.from({length:10},()=>({ai:Vf,dist:0}));Xf={firstframe:84,lastframe:93,frames:m3,endfunc:s3};var da=.1;function f3(e,t,n){M(e,da,n)}function h3(e,t,n){N(e,t,da,n)}function _3(e,t,n){ie(e,t,da,n)}function g3(e,t,n){ae(e,t,da,n)}function Yf(e,t,n){h(e,t)}var vc,jf,Zf,v3,p3,qf;function y3(e){e.monsterinfo.current_move=vc}function w3(e){e.monsterinfo.current_move=jf}function pc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Zf:e.monsterinfo.current_move=vc}function S3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,5,1e3,0,0,t,1)}function A3(e){e.monsterinfo.nextframe=qf.lastframe,e.nextthink=-1}var k3=Array.from({length:46},()=>({ai:f3,dist:0}));vc={firstframe:0,lastframe:45,frames:k3,endfunc:y3};var x3=Array.from({length:46},()=>({ai:h3,dist:5}));jf={firstframe:0,lastframe:45,frames:x3,endfunc:w3};var E3=Array.from({length:46},()=>({ai:_3,dist:10}));Zf={firstframe:0,lastframe:45,frames:E3,endfunc:pc};var b3=Array.from({length:20},(e,t)=>({ai:g3,dist:0,think:t===10?S3:null}));v3={firstframe:46,lastframe:65,frames:b3,endfunc:pc};var T3=Array.from({length:6},()=>({ai:Yf,dist:0}));p3={firstframe:66,lastframe:71,frames:T3,endfunc:pc};var M3=Array.from({length:10},()=>({ai:Yf,dist:0}));qf={firstframe:84,lastframe:93,frames:M3,endfunc:A3};var la=.1;function R3(e,t,n){M(e,la,n)}function z3(e,t,n){N(e,t,la,n)}function L3(e,t,n){ie(e,t,la,n)}function N3(e,t,n){ae(e,t,la,n)}function yc(e,t,n){h(e,t)}var wc,Jf,Qf,O3,I3,eh,C3;function P3(e){e.monsterinfo.current_move=wc}function F3(e){e.monsterinfo.current_move=Jf}function ma(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Qf:e.monsterinfo.current_move=wc}function D3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=D(C(i,n));It(e,n,r,5,2,.05,.05,0,t,4)}var U3=Array.from({length:22},()=>({ai:R3,dist:0}));wc={firstframe:0,lastframe:21,frames:U3,endfunc:P3};var B3=Array.from({length:15},()=>({ai:z3,dist:4}));Jf={firstframe:22,lastframe:36,frames:B3,endfunc:F3};var G3=Array.from({length:8},()=>({ai:L3,dist:12}));Qf={firstframe:37,lastframe:44,frames:G3,endfunc:ma};var H3=Array.from({length:15},(e,t)=>({ai:N3,dist:0,think:t>=5&&t<=7?D3:null}));O3={firstframe:45,lastframe:59,frames:H3,endfunc:ma};var W3=Array.from({length:10},()=>({ai:yc,dist:0}));I3={firstframe:60,lastframe:69,frames:W3,endfunc:ma};var V3=Array.from({length:20},()=>({ai:yc,dist:0}));function K3(e){e.monsterinfo.nextframe=eh.lastframe,e.nextthink=-1}eh={firstframe:70,lastframe:89,frames:V3,endfunc:K3};var $3=Array.from({length:5},()=>({ai:yc,dist:0}));C3={firstframe:90,lastframe:94,frames:$3,endfunc:ma};var Ci=.1,X3={x:30,y:28,z:24},Y3={x:26,y:16,z:24},j3={x:26,y:-14,z:24};function Z3(e,t,n){M(e,Ci,n)}function q3(e,t,n){N(e,t,Ci,n)}function J3(e,t,n){ie(e,t,Ci,n)}function th(e,t,n){ae(e,t,Ci,n)}function Cn(e,t,n){h(e,t)}var Sc,nh,ih,rh,Ac,ah,sh,oh,ch,kc,No;function uh(e){e.monsterinfo.current_move=Sc}function dh(e){e.monsterinfo.current_move=nh}function pt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ih:e.monsterinfo.current_move=Sc}function Q3(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=rh:t<=.6?e.monsterinfo.current_move=Ac:e.monsterinfo.current_move=ah}function xc(e,t){let{forward:n,right:i,up:r}=te(e.angles),a={...e.origin},s=B(n,t.x),o=B(i,t.y),u=B(r,t.z);return W(W(W(a,s),o),u)}function e6(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=xc(e,X3),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=D(C(i,n));jm(e,n,r,50,300,100,300,0,t)}function t6(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=xc(e,j3),i=D(C(e.pos1,n));Zm(e,n,i,50,100,0,t)}function n6(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function i6(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=xc(e,Y3),i=(e.monsterinfo.nextframe||0)-Ac.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=C(s,n),c={...Rn(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=te(c).forward}else{let{forward:s}=te(e.angles);a=s}dt(e,n,a,15,1e3,0,0,t,1)}function r6(e,t,n,i,r){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(i<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,i<=40?(r.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=sh):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=oh):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=ch)))}function a6(e,t){++e.frame>=365&&(e.frame=346),e.nextthink=t.timeSeconds+.1,e.angles.x>0&&(e.angles={...e.angles,x:Math.max(0,e.angles.x-15)})}function s6(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=a6,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=te(e.angles),r=B(i,120),a=B(n,-120);e.velocity=W(W(e.velocity,r),a),e.origin=W(e.origin,B(n,-10)),e.angles={...e.angles,x:90},e.avelocity=$,t.linkentity(e)}function o6(e,t){let n=t.spawn();n.classname="makron_torso",n.origin={...e.origin},n.angles={...e.angles},n.origin.z+=e.maxs.z-15,s6(n,t)}function c6(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),o6(e,t),e.monsterinfo.current_move=kc,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function u6(e){e.monsterinfo.nextframe=kc.lastframe,e.nextthink=-1}var d6=Array.from({length:60},()=>({ai:Z3,dist:0}));Sc={firstframe:0,lastframe:59,frames:d6,endfunc:uh};var l6=Array.from({length:10},()=>({ai:q3,dist:8}));nh={firstframe:60,lastframe:69,frames:l6,endfunc:dh};var m6=Array.from({length:10},()=>({ai:J3,dist:8}));ih={firstframe:60,lastframe:69,frames:m6,endfunc:pt};var f6=Array.from({length:8},(e,t)=>({ai:th,dist:0,think:t===3?e6:null}));rh={firstframe:70,lastframe:77,frames:f6,endfunc:pt};var h6=Array.from({length:26},(e,t)=>({ai:Cn,dist:0,think:t>=4&&t<=20?i6:null}));Ac={firstframe:78,lastframe:103,frames:h6,endfunc:pt};var _6=Array.from({length:16},(e,t)=>({ai:th,dist:0,think:t===7?n6:t===8?t6:null}));ah={firstframe:104,lastframe:119,frames:_6,endfunc:pt};var g6=Array.from({length:4},()=>({ai:Cn,dist:0}));sh={firstframe:120,lastframe:123,frames:g6,endfunc:pt};var v6=Array.from({length:4},()=>({ai:Cn,dist:0}));oh={firstframe:124,lastframe:127,frames:v6,endfunc:pt};var p6=Array.from({length:27},()=>({ai:Cn,dist:0}));ch={firstframe:128,lastframe:154,frames:p6,endfunc:pt};var y6=Array.from({length:95},()=>({ai:Cn,dist:0}));kc={firstframe:155,lastframe:249,frames:y6,endfunc:u6};var w6=Array.from({length:13},()=>({ai:Cn,dist:0}));No={firstframe:250,lastframe:262,frames:w6,endfunc:pt};function S6(e,t){e.classname="monster_makron",e.model="models/monsters/boss3/rider/tris.md2",e.mins={x:-30,y:-30,z:0},e.maxs={x:30,y:30,z:90},e.movetype=5,e.solid=2,e.health=3e3,e.max_health=3e3,e.mass=500,e.takedamage=!0,e.viewheight=90,e.pain=(n,i,r,a)=>r6(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){Bm(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,c6(n,t.entities)},e.monsterinfo.stand=uh,e.monsterinfo.walk=dh,e.monsterinfo.run=pt,e.monsterinfo.attack=Q3,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=No},e.think=hx,e.monsterinfo.current_move=No,e.nextthink=e.timestamp+Ci}var fa=.1,A6={x:40,y:-20,z:20},k6={x:40,y:20,z:20},x6={x:30,y:0,z:40};function E6(e,t,n){M(e,fa,n)}function b6(e,t,n){N(e,t,fa,n)}function T6(e,t,n){ie(e,t,fa,n)}function Ec(e,t,n){ae(e,t,fa,n)}function Pi(e,t,n){h(e,t)}var bc,lh,mh,Tc,Oo,M6,R6,z6,L6,fh;function N6(e){e.monsterinfo.current_move=bc}function O6(e){e.monsterinfo.current_move=lh}function Pn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mh:e.monsterinfo.current_move=bc}function I6(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&qt(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=Tc:e.monsterinfo.current_move=Oo}function Io(e,t){let{forward:n,right:i,up:r}=te(e.angles),a={...e.origin},s=B(n,t.x),o=B(i,t.y),u=B(r,t.z);return W(W(W(a,s),o),u)}function C6(e,t){if(!e.enemy)return;let n=Io(e,k6),i=D(C(e.enemy.origin,n));Hr(e,n,i,6,4,.05,.05,0,t,4);let r=Io(e,A6),a=D(C(e.enemy.origin,r));Hr(e,r,a,6,4,.05,.05,0,t,4)}function P6(e,t){if(!e.enemy)return;let n=Io(e,x6),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=D(C(i,n));jm(e,n,r,50,300,100,200,0,t)}function F6(e){e.monsterinfo.nextframe=fh.lastframe,e.nextthink=-1}function D6(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,S6(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=C(n.enemy.origin,n.origin);n.angles={...n.angles,y:zi(r)};let a=D(r),s=B(a,400);n.velocity={x:s.x,y:s.y,z:200},n.groundentity=null,n.monsterinfo.sight&&n.monsterinfo.sight(n,n.enemy)}}var U6=Array.from({length:51},()=>({ai:E6,dist:0}));bc={firstframe:0,lastframe:50,frames:U6,endfunc:N6};var B6=Array.from({length:14},()=>({ai:b6,dist:10}));lh={firstframe:51,lastframe:64,frames:B6,endfunc:O6};var G6=Array.from({length:14},()=>({ai:T6,dist:10}));mh={firstframe:51,lastframe:64,frames:G6,endfunc:Pn};var H6=Array.from({length:8},()=>({ai:Ec,dist:0})),W6={firstframe:65,lastframe:72,frames:H6,endfunc:null},V6=Array.from({length:6},()=>({ai:Ec,dist:0,think:C6}));Tc={firstframe:73,lastframe:78,frames:V6,endfunc:I6};W6.endfunc=e=>{e.monsterinfo.current_move=Tc};var K6=Array.from({length:4},()=>({ai:Pi,dist:0}));Oo={firstframe:79,lastframe:82,frames:K6,endfunc:Pn};var $6=Array.from({length:13},(e,t)=>({ai:Ec,dist:0,think:t===6?P6:null}));M6={firstframe:83,lastframe:95,frames:$6,endfunc:Pn};var X6=Array.from({length:3},()=>({ai:Pi,dist:0}));R6={firstframe:96,lastframe:98,frames:X6,endfunc:Pn};var Y6=Array.from({length:3},()=>({ai:Pi,dist:0}));z6={firstframe:99,lastframe:101,frames:Y6,endfunc:Pn};var j6=Array.from({length:25},()=>({ai:Pi,dist:0}));L6={firstframe:102,lastframe:126,frames:j6,endfunc:Pn};var Z6=Array.from({length:50},(e,t)=>({ai:Pi,dist:0,think:t===49?((n,i)=>{}):t===48?D6:null}));fh={firstframe:127,lastframe:176,frames:Z6,endfunc:F6};var Mc=.1,ha=4,hh=8,_a=16,q6=32,Rc=64,J6=0,Q6=39,eT=40,tT=58,nT=59,_h=64,iT=93,rT=95,zc=99,gh=159,vh=160,ph=172,yh=173,wh=198,aT=199,sT=209,oT=210,cT=226,Lc=227,Nc=235,Sh=236,Wr=244,uT=245,dT=251,lT=252,mT=266,fT=267,hT=281,Ah,kh,xh,Eh,bh,Fi,Th,Mh,Rh,zh,_T,gT,Lh,Nh,vT,pT,Oc,Oh,yT="insane/insane11.wav",wT="insane/insane5.wav",ST="insane/insane7.wav",xm=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function Co(e,t){t.sound(e,2,yT,1,1,0)}function AT(e,t){(e.spawnflags&Rc)===0&&t.sound(e,2,wT,1,1,0)}function Ic(e,t){e.spawnflags&Rc||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,ST,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function Dt(e,t){if(!(e.spawnflags&Rc)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=xm[Math.floor(Math.random()*xm.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function Ue(e,t){}function Ih(e,t){e.spawnflags&q6||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=xh:e.monsterinfo.current_move=bh)}function kT(e,t){e.spawnflags&ha&&e.spawnflags&_a||Math.random()<.5&&(e.monsterinfo.current_move=Eh)}function Cc(e,t){e.monsterinfo.current_move=Fi}function Ch(e,t){Math.random()<.8?e.monsterinfo.current_move=Oc:e.monsterinfo.current_move=Oh}function Pc(e,t){e.spawnflags&hh?(e.monsterinfo.current_move=Oc,e.monsterinfo.aiflags|=1):e.spawnflags&ha&&e.spawnflags&_a?e.monsterinfo.current_move=Fi:Math.random()<.5?e.monsterinfo.current_move=Ah:e.monsterinfo.current_move=kh}function Fc(e,t){if(e.spawnflags&_a&&e.frame===Wr){e.monsterinfo.current_move=Fi;return}e.spawnflags&ha?e.monsterinfo.current_move=Lh:Math.random()<=.5?e.monsterinfo.current_move=Th:e.monsterinfo.current_move=Rh}function Di(e,t){if(e.spawnflags&_a&&e.frame===Wr){e.monsterinfo.current_move=Fi;return}let n=e.frame;e.spawnflags&ha||n>=Sh&&n<=Wr||n>=Lc&&n<=Nc||n>=zc&&n<=gh?e.monsterinfo.current_move=Nh:Math.random()<=.5?e.monsterinfo.current_move=Mh:e.monsterinfo.current_move=zh}function Ph(e,t){e.spawnflags&hh?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function l(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,Mc,a)},dist:t}}var xT=[l(M),l(M),l(M),l(M),l(M),l(M,0,Ih)];Ah={firstframe:nT,lastframe:_h,frames:xT,endfunc:Pc};var ET=[l(M,0,AT),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M,0,Ih)];kh={firstframe:_h,lastframe:iT,frames:ET,endfunc:Pc};var bT=[l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,0,Ic),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,2.7),l(h,4.1),l(h,6),l(h,7.6),l(h,3.6),l(h),l(h),l(h,0,Co),l(h),l(h),l(h),l(h),l(h),l(h,0,Co),l(h),l(h),l(h),l(h),l(h),l(h)];xh={firstframe:J6,lastframe:Q6,frames:bT,endfunc:Cc};var TT=[l(h,-.7),l(h,-1.2),l(h,-1.5),l(h,-4.5),l(h,-3.5),l(h,-.2),l(h),l(h,-1.3),l(h,-3),l(h,-2),l(h),l(h),l(h),l(h,-3.3),l(h,-1.6),l(h,-.3),l(h),l(h),l(h)];Eh={firstframe:eT,lastframe:tT,frames:TT,endfunc:Pc};var MT=[l(h,.2),l(h,11.5),l(h,5.1),l(h,7.1),l(h)];bh={firstframe:rT,lastframe:zc,frames:MT,endfunc:Cc};var RT=[l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,-1.7),l(h,-1.6),l(h),l(h),l(h),l(h,0,Co),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,0,Ic),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,.5),l(h),l(h,-.2,Dt),l(h),l(h,.2),l(h,.4),l(h,.6),l(h,.8),l(h,.7),l(h,0,kT)];Fi={firstframe:zc,lastframe:gh,frames:RT,endfunc:Cc};var Po=[l(N,0,Dt),l(N,2.5),l(N,3.5),l(N,1.7),l(N,2.3),l(N,2.4),l(N,2.2,Ue),l(N,4.2),l(N,5.6),l(N,3.3),l(N,2.4),l(N,.9),l(N,0,Ue)];Th={firstframe:vh,lastframe:ph,frames:Po,endfunc:Fc};Mh={firstframe:vh,lastframe:ph,frames:Po.map(e=>({ai:(t,n,i)=>{e.ai===Po[0].ai&&Dt(t,i),ie(t,n,Mc,i)},dist:e.dist})),endfunc:Di};var Fo=[l(N,0,Dt),l(N,3.4),l(N,3.6),l(N,2.9),l(N,2.2),l(N,2.6,Ue),l(N),l(N,.7),l(N,4.8),l(N,5.3),l(N,1.1),l(N,2,Ue),l(N,.5),l(N),l(N),l(N,4.9),l(N,6.7),l(N,3.8),l(N,2,Ue),l(N,.2),l(N),l(N,3.4),l(N,6.4),l(N,5),l(N,1.8,Ue),l(N)];Rh={firstframe:yh,lastframe:wh,frames:Fo,endfunc:Fc};zh={firstframe:yh,lastframe:wh,frames:Fo.map(e=>({ai:(t,n,i)=>{e.ai===Fo[0].ai&&Dt(t,i),ie(t,n,Mc,i)},dist:e.dist})),endfunc:Di};var zT=[l(h),l(h),l(h),l(h),l(h,0,Ue),l(h),l(h),l(h),l(h),l(h),l(h,0,Ue)];_T={firstframe:aT,lastframe:sT,frames:zT,endfunc:Di};var LT=[l(h),l(h),l(h),l(h),l(h,0,Ue),l(h),l(h),l(h),l(h),l(h),l(h,0,Ue),l(h),l(h,0,Ue),l(h),l(h),l(h),l(h)];gT={firstframe:oT,lastframe:cT,frames:LT,endfunc:Ph};var Fh=[l(N,0,Dt),l(N,1.5),l(N,2.1),l(N,3.6),l(N,2,Ue),l(N,.9),l(N,3),l(N,3.4),l(N,2.4,Ue)];Lh={firstframe:Lc,lastframe:Nc,frames:Fh,endfunc:Fc};Nh={firstframe:Lc,lastframe:Nc,frames:Fh,endfunc:Di};var NT=[l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h)];vT={firstframe:Sh,lastframe:Wr,frames:NT,endfunc:Di};var OT=[l(h),l(h),l(h),l(h),l(h,0,Dt),l(h),l(h)];pT={firstframe:uT,lastframe:dT,frames:OT,endfunc:Ph};var IT=[l(h,0,Ic),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h)];Oc={firstframe:lT,lastframe:mT,frames:IT,endfunc:Ch};var CT=[l(h,0,Dt),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h)];Oh={firstframe:fT,lastframe:hT,frames:CT,endfunc:Ch};var PT=.1,FT=0;var Do=0,Dh=39,DT=40,UT=47,BT=48,GT=53,HT=54,WT=56,VT=57,KT=59,$T=60,XT=62,YT=63,jT=76,ZT=77,qT=93,JT=94,QT=100,eM=101,tM=113,nM=114,iM=117,Uh,Bh,Gh,rM,aM,sM,oM,cM,uM,dM,lM;function k(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,PT,a)},dist:t}}function Em(e,t){e.monsterinfo.current_move=Uh,t.timeSeconds<1&&(e.frame=Do+Math.floor(Math.random()*(Dh-Do+1)))}function mM(e,t){e.monsterinfo.current_move=Bh}function Fn(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?mM(e,t):Em(e,t);return}if(e.monsterinfo.aiflags&1){Em(e,t);return}e.monsterinfo.current_move=Gh}function fM(e,t){let n={x:0,y:0,z:0},r=te(e.angles).forward,a=xi(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=C(e.enemy.origin,B(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=xi(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=C(o,a),s=D(s)}else s=r;It(e,a,s,3,4,0,0,FT,t)}function Hh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.svflags|=1,e.nextthink=-1,t.linkentity(e)}function hM(e,t){fM(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var _M=[k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M)];Uh={firstframe:Do,lastframe:Dh,frames:_M,endfunc:null};var gM=[k(N),k(N,6),k(N,10),k(N,3),k(N,2),k(N,7),k(N,10),k(N,1)];Bh={firstframe:DT,lastframe:UT,frames:gM,endfunc:null};var vM=[k(ie,4),k(ie,15),k(ie,15),k(ie,8),k(ie,20),k(ie,15)];Gh={firstframe:BT,lastframe:GT,frames:vM,endfunc:null};var pM=[k(h,-5),k(h,4),k(h,1)];rM={firstframe:HT,lastframe:WT,frames:pM,endfunc:Fn};var yM=[k(h,-4),k(h,4),k(h)];aM={firstframe:VT,lastframe:KT,frames:yM,endfunc:Fn};var wM=[k(h,-1),k(h,1),k(h,0)];sM={firstframe:$T,lastframe:XT,frames:wM,endfunc:Fn};var SM=[k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee)];oM={firstframe:YT,lastframe:jT,frames:SM,endfunc:Fn};var AM=[k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee)];cM={firstframe:ZT,lastframe:qT,frames:AM,endfunc:Fn};var kM=[k(h),k(h),k(h,-13),k(h,14),k(h,3),k(h,-2),k(h,1)];uM={firstframe:JT,lastframe:QT,frames:kM,endfunc:Hh};var xM=[k(h),k(h,7),k(h,-6),k(h,-5),k(h,1),k(h),k(h,-1),k(h,-2),k(h,-1),k(h,-9),k(h,-13),k(h,-13),k(h)];dM={firstframe:eM,lastframe:tM,frames:xM,endfunc:Hh};var EM=[k(ae,-2,hM),k(ae,-2),k(ae,3),k(ae,2)];lM={firstframe:nM,lastframe:iM,frames:EM,endfunc:Fn};var Ti=.1;function bM(e,t,n){if(e.classname==="monster_medic"&&$h(e,n)){e.monsterinfo.current_move=Ui;return}M(e,Ti,n)}function TM(e,t,n){N(e,t,Ti,n)}function MM(e,t,n){e.classname==="monster_medic"&&$h(e,n)?e.monsterinfo.current_move=Ui:ie(e,t,Ti,n)}function ut(e,t,n){ae(e,t,Ti,n)}function Dc(e,t,n){h(e,t)}var Uc,Wh,Ui,RM,Vh,zM,LM,Kh;function NM(e){e.monsterinfo.current_move=Uc}function OM(e){e.monsterinfo.current_move=Wh}function Bi(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&Pt(e,e.enemy)<80){e.monsterinfo.current_move=Vh;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ui:e.monsterinfo.current_move=Uc}function IM(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,2,1e3,0,0,t,10)}function Lt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(Pt(e,e.enemy)>400){e.monsterinfo.current_move=Ui;return}let i=te(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},u=W(e.origin,W(B(r,o.x),W(B(a,o.y),B(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,Te.temp_entity,{te:Me.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:u,end:c})}function CM(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Lt(e,t)}function PM(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(Pt(e,n)>400){e.enemy=null;return}if(!i)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function $h(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,u,c,d)=>{let f=t.trace(a,s,o,u,c,d);return{fraction:f.fraction,ent:f.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!qt(e,a,r))return;let s=Pt(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function FM(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=te(e.angles),s=B(a.forward,64),o=W(e.origin,s),u={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},u,e,Ie|Zt|Yr);if(c.fraction<1||c.startsolid||c.allsolid)return;let d=t.spawn();d.origin=u,d.angles={...e.angles},r(d,{entities:t,keyValues:{classname:i},warn:()=>{},free:m=>t.free(m)}),d.enemy=e.enemy,t.multicast(u,1,Te.muzzleflash,{entId:d.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function DM(e){e.monsterinfo.nextframe=Kh.lastframe,e.nextthink=-1}var UM=Array.from({length:30},()=>({ai:bM,dist:0}));Uc={firstframe:0,lastframe:29,frames:UM,endfunc:NM};var BM=Array.from({length:40},()=>({ai:TM,dist:3}));Wh={firstframe:30,lastframe:69,frames:BM,endfunc:OM};var GM=Array.from({length:20},()=>({ai:MM,dist:12}));Ui={firstframe:70,lastframe:89,frames:GM,endfunc:Bi};var HM=Array.from({length:16},(e,t)=>({ai:ut,dist:0,think:t>=4&&t<=13?IM:null}));RM={firstframe:90,lastframe:105,frames:HM,endfunc:Bi};var WM=[{ai:ut,dist:0,think:CM},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:PM}];Vh={firstframe:106,lastframe:114,frames:WM,endfunc:Bi};var VM=Array.from({length:6},()=>({ai:Dc,dist:0}));LM={firstframe:116,lastframe:121,frames:VM,endfunc:Bi};var KM=Array.from({length:23},(e,t)=>({ai:Dc,dist:0,think:t===11?FM:null}));zM={firstframe:122,lastframe:144,frames:KM,endfunc:Bi};var $M=Array.from({length:30},()=>({ai:Dc,dist:0}));Kh={firstframe:161,lastframe:190,frames:$M,endfunc:DM};var Gi=.1;function U(e,t,n){M(e,Gi,n)}function Fe(e,t,n){N(e,t,Gi,n)}function Sn(e,t,n){ie(e,t,Gi,n)}function zt(e,t,n){ae(e,t,Gi,n)}function ne(e,t,n){h(e,t)}function xo(e,t,n){Zk(e,null,t,Gi)}var Xh,Yh,Vr,XM,YM,jM,ZM,jh,Zh;function qM(e){e.monsterinfo.current_move=Yh}function JM(e){e.monsterinfo.current_move=Xh}function Dn(e){e.monsterinfo.current_move=Vr}function qh(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=C(e.enemy.origin,e.origin);if(qe(i)>100)return;let a=D(i);he(e.enemy,e,e,a,e.enemy.origin,$,t,0,0,0,n.timeSeconds)}function QM(e,t){qh(e,30,t)}function bm(e,t){qh(e,30,t)}function En(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Vr),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Vr)}function e8(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),he(t,e,e,D(e.velocity),e.origin,$,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function t8(e,t){let n=te(e.angles).forward;e.movetype=7,e.touch=e8,e.velocity=W(B(n,300),{x:0,y:0,z:300}),e.velocity=W(B(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function n8(e){e.monsterinfo.nextframe=jh.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var i8=[{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0}];Xh={firstframe:0,lastframe:50,frames:i8,endfunc:JM};var r8=[{ai:Fe,dist:3},{ai:Fe,dist:1},{ai:Fe,dist:5},{ai:Fe,dist:10},{ai:Fe,dist:13},{ai:Fe,dist:12},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:5},{ai:Fe,dist:6},{ai:Fe,dist:16},{ai:Fe,dist:15},{ai:Fe,dist:6}];Yh={firstframe:51,lastframe:63,frames:r8,endfunc:qM};var a8=[{ai:Sn,dist:20},{ai:Sn,dist:15},{ai:Sn,dist:35},{ai:Sn,dist:20},{ai:Sn,dist:10},{ai:Sn,dist:20}];Vr={firstframe:64,lastframe:69,frames:a8,endfunc:Dn};var s8=[{ai:zt,dist:0},{ai:zt,dist:0},{ai:zt,dist:0,think:bm},{ai:zt,dist:0},{ai:zt,dist:0,think:QM},{ai:zt,dist:0},{ai:zt,dist:0,think:bm},{ai:zt,dist:0}];XM={firstframe:70,lastframe:77,frames:s8,endfunc:Dn};var o8=[{ai:xo,dist:0},{ai:xo,dist:0},{ai:xo,dist:0,think:t8},{ai:ne,dist:0,think:En},{ai:ne,dist:0,think:En},{ai:ne,dist:0,think:En},{ai:ne,dist:0,think:En},{ai:ne,dist:0,think:En}];Zh={firstframe:93,lastframe:100,frames:o8,endfunc:Dn};Zh.frames[3].ai=(e,t,n)=>{En(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var c8=[{ai:ne,dist:4},{ai:ne,dist:-3},{ai:ne,dist:-8},{ai:ne,dist:2},{ai:ne,dist:5}];YM={firstframe:78,lastframe:82,frames:c8,endfunc:Dn};var u8=[{ai:ne,dist:-24},{ai:ne,dist:11},{ai:ne,dist:5},{ai:ne,dist:-2}];jM={firstframe:83,lastframe:86,frames:u8,endfunc:Dn};var d8=[{ai:ne,dist:11},{ai:ne,dist:0},{ai:ne,dist:-2},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];ZM={firstframe:87,lastframe:92,frames:d8,endfunc:Dn};var l8=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];jh={firstframe:101,lastframe:109,frames:l8,endfunc:n8};var ga=.1,m8=()=>Math.random();function J(e,t,n){M(e,ga,n)}function _t(e,t,n){N(e,t,ga,n)}function gt(e,t,n){ie(e,t,ga,n)}function xe(e,t,n){ae(e,t,ga,n)}function Ee(e,t,n){h(e,t)}var Bc,Jh,Qh,f8,h8,e0,t0,_8,g8,Gc,n0;function v8(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function p8(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function An(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Uo(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function y8(e){e.monsterinfo.current_move=Gc}function w8(e){m8()<=.8?e.monsterinfo.current_move=Gc:e.monsterinfo.current_move=n0}function i0(e){e.monsterinfo.current_move=Bc}function Hc(e){e.monsterinfo.current_move=Jh}function r0(e){e.monsterinfo.current_move=t0}function a0(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Bc:e.monsterinfo.current_move=Qh}function Eo(e,t){let n=C(t,e);if(qe(n)>256)return!1;let a=Rn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function je(e,t){if(!e.enemy)return;let n=te(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=W(e.origin,W(B(i,s.x),W(B(r,s.y),B(a,s.z)))),u=xi(e.enemy.origin);if(!Eo(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Eo(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.mins.z+8},!Eo(o,u)))||t.trace(o,u,$,$,e,Nt).ent!==e.enemy)return;let d=2,f=e.frame;f===41?(d=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(f===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),d=2),t.multicast(e.origin,0,Te.temp_entity,{te:Me.PARASITE_ATTACK,entId:e.index,start:o,end:u});let m=D(C(o,u));he(e.enemy,e,e,m,e.enemy.origin,$,d,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=d,e.health>e.max_health&&(e.health=e.max_health))}function S8(e){e.monsterinfo.nextframe=e0.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var A8=[{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0,think:An}];Bc={firstframe:83,lastframe:99,frames:A8,endfunc:i0};var k8=[{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0}];g8={firstframe:100,lastframe:103,frames:k8,endfunc:y8};var x8=[{ai:J,dist:0,think:Uo},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:Uo},{ai:J,dist:0},{ai:J,dist:0}];Gc={firstframe:104,lastframe:109,frames:x8,endfunc:w8};var E8=[{ai:J,dist:0,think:Uo},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0}];n0={firstframe:110,lastframe:117,frames:E8,endfunc:i0};var b8=[{ai:gt,dist:0},{ai:gt,dist:30}];t0={firstframe:68,lastframe:69,frames:b8,endfunc:a0};var T8=[{ai:gt,dist:30},{ai:gt,dist:30},{ai:gt,dist:22},{ai:gt,dist:19},{ai:gt,dist:24},{ai:gt,dist:28},{ai:gt,dist:25}];Qh={firstframe:70,lastframe:76,frames:T8,endfunc:a0};var M8=[{ai:_t,dist:0},{ai:_t,dist:30,think:Hc}];_8={firstframe:68,lastframe:69,frames:M8,endfunc:Hc};var R8=[{ai:_t,dist:30},{ai:_t,dist:30},{ai:_t,dist:22},{ai:_t,dist:19},{ai:_t,dist:24},{ai:_t,dist:28},{ai:_t,dist:25}];Jh={firstframe:70,lastframe:76,frames:R8,endfunc:Hc};var z8=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:6},{ai:Ee,dist:16},{ai:Ee,dist:-6},{ai:Ee,dist:-7},{ai:Ee,dist:0}];h8={firstframe:57,lastframe:67,frames:z8,endfunc:r0};var L8=[{ai:xe,dist:0,think:v8},{ai:xe,dist:0},{ai:xe,dist:15,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:-2,think:je},{ai:xe,dist:-2,think:je},{ai:xe,dist:-3,think:je},{ai:xe,dist:-2,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:-1,think:je},{ai:xe,dist:0,think:p8},{ai:xe,dist:-2},{ai:xe,dist:-2},{ai:xe,dist:-3},{ai:xe,dist:0}];f8={firstframe:39,lastframe:56,frames:L8,endfunc:r0};var N8=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0}];e0={firstframe:32,lastframe:38,frames:N8,endfunc:S8};var va=.1;var O8=2,I8=4;function C8(e,t,n){M(e,va,n)}function P8(e,t,n){N(e,t,va,n)}function F8(e,t,n){ie(e,t,va,n)}function s0(e,t,n){ae(e,t,va,n)}function o0(e,t,n){h(e,t)}var Wc,c0,u0,D8,U8,B8,d0;function G8(e){e.monsterinfo.current_move=Wc}function H8(e){e.monsterinfo.current_move=c0}function pa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=u0:e.monsterinfo.current_move=Wc}function Hi(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function Wi(e,t){if(!e.enemy){let{forward:i}=te(e.angles);return i}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return D(C(n,t))}function W8(e,t){if(!e.enemy)return;let n=Hi(e),i=Wi(e,n);dt(e,n,i,5,600,0,0,t,1)}function V8(e,t){if(!e.enemy)return;let n=Hi(e),i=Wi(e,n),r=2,a=4,s=20,o=.15,u=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),Vx(e,n,i,r,a,o,u,s,0,t,3)}function K8(e,t){if(!e.enemy)return;let n=Hi(e),i=Wi(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),It(e,n,i,r,a,s,o,0,t,4)}function $8(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=te(n.angles),s={...n.origin};s=W(s,B(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let u=D(C(o,s));e.origin=s,e.movedir=u,t.linkentity(e)}function X8(e,t){if(!e.enemy)return;let n=Hi(e),i=Wi(e,n);$x(e,n,i,5,600,0,0,t)}function Y8(e,t){if(!e.enemy)return;let n=Hi(e),i=Wi(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),Kx(e,n,i,r,a,0,0,t)}function j8(e,t){e.enemy&&Ro(e,1,!1,$8,t)}function Z8(e,t){e.count<2?X8(e,t):e.count<4?Y8(e,t):j8(e,t)}function l0(e,t){if(e.style===1){Z8(e,t);return}e.spawnflags&O8?V8(e,t):e.spawnflags&I8?K8(e,t):W8(e,t)}var q8=Array.from({length:30},()=>({ai:C8,dist:0}));Wc={firstframe:0,lastframe:29,frames:q8,endfunc:G8};var J8=Array.from({length:40},()=>({ai:P8,dist:2}));c0={firstframe:30,lastframe:69,frames:J8,endfunc:H8};var Q8=Array.from({length:20},()=>({ai:F8,dist:10}));u0={firstframe:70,lastframe:89,frames:Q8,endfunc:pa};var eR=Array.from({length:10},(e,t)=>({ai:s0,dist:0,think:t===5?l0:null}));D8={firstframe:90,lastframe:99,frames:eR,endfunc:pa};var tR=Array.from({length:10},(e,t)=>({ai:s0,dist:0,think:t>=4&&t<=8?l0:null}));U8={firstframe:90,lastframe:99,frames:tR,endfunc:pa};var nR=Array.from({length:6},()=>({ai:o0,dist:0}));B8={firstframe:100,lastframe:105,frames:nR,endfunc:pa};var iR=Array.from({length:10},()=>({ai:o0,dist:0}));function rR(e){e.monsterinfo.nextframe=d0.lastframe,e.nextthink=-1}d0={firstframe:106,lastframe:115,frames:iR,endfunc:rR};var m0=.1,aR={x:30,y:30,z:40},sR={x:30,y:-30,z:40},oR={x:20,y:0,z:70};function cR(e,t,n){M(e,m0,n)}function uR(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Kc:e.monsterinfo.current_move=ya}function Vc(e,t,n){ae(e,t,m0,n)}function Vi(e,t,n){h(e,t)}var ya,Kc,dR,lR,f0,h0,mR,fR,hR,_0;function _R(e){e.monsterinfo.current_move=ya}function en(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Kc:e.monsterinfo.current_move=ya}function $c(e,t){let{forward:n,right:i,up:r}=te(e.angles),a={...e.origin},s=B(n,t.x),o=B(i,t.y),u=B(r,t.z);return W(W(W(a,s),o),u)}function gR(e,t){if(!e.enemy)return;let n=$c(e,sR),i=D(C(e.enemy.origin,n));Ni(e,n,i,50,650,0,t)}function vR(e,t){if(!e.enemy)return;let n=$c(e,oR),i=D(C(e.enemy.origin,n));Xx(e,n,i,50,600,0,t)}function pR(e,t){if(!e.enemy)return;let n=$c(e,aR),i=D(C(e.enemy.origin,n));Hr(e,n,i,6,4,.05,.05,0,t,4)}function yR(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&qt(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=f0:e.monsterinfo.current_move=h0}function wR(e){e.monsterinfo.nextframe=_0.lastframe,e.nextthink=-1}var SR=Array.from({length:60},()=>({ai:cR,dist:0}));ya={firstframe:0,lastframe:59,frames:SR,endfunc:_R};var AR=Array.from({length:18},()=>({ai:uR,dist:12}));Kc={firstframe:60,lastframe:77,frames:AR,endfunc:en};var kR=Array.from({length:4},()=>({ai:Vi,dist:0}));hR={firstframe:78,lastframe:81,frames:kR,endfunc:en};var xR=Array.from({length:4},()=>({ai:Vi,dist:0}));fR={firstframe:82,lastframe:85,frames:xR,endfunc:en};var ER=Array.from({length:4},()=>({ai:Vi,dist:0}));mR={firstframe:86,lastframe:89,frames:ER,endfunc:en};var bR=Array.from({length:24},()=>({ai:Vi,dist:0}));_0={firstframe:90,lastframe:113,frames:bR,endfunc:wR};var TR=Array.from({length:6},(e,t)=>({ai:Vc,dist:0,think:t===0||t===3?vR:null}));lR={firstframe:114,lastframe:119,frames:TR,endfunc:en};var MR=Array.from({length:27},(e,t)=>({ai:Vc,dist:0,think:t===7||t===10||t===13?gR:null}));dR={firstframe:120,lastframe:146,frames:MR,endfunc:en};var RR=Array.from({length:6},()=>({ai:Vc,dist:0,think:pR}));f0={firstframe:147,lastframe:152,frames:RR,endfunc:yR};var zR=Array.from({length:14},()=>({ai:Vi,dist:0}));h0={firstframe:153,lastframe:166,frames:zR,endfunc:en};var Xc=.1;function g0(e,t,n,i,r){let a=r.trace(t,n,$,$,e,Nt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return D(C(n,t));let s=W(n,B(i,-20)),o=r.trace(t,s,$,$,e,Nt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return D(C(s,t));let u=W(n,B(i,20)),c=r.trace(t,u,$,$,e,Nt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?D(C(u,t)):null}function v0(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=C(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=zi(n)}}function LR(e,t,n){M(e,Xc,n)}function NR(e,t,n){N(e,t,Xc,n)}function OR(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=jc:e.monsterinfo.current_move=wa}function Yc(e,t,n){ae(e,t,Xc,n)}function p0(e,t,n){h(e,t)}var wa,y0,jc,IR,CR,PR,FR,w0;function DR(e){e.monsterinfo.current_move=wa}function UR(e){e.monsterinfo.current_move=y0}function Ki(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=jc:e.monsterinfo.current_move=wa}function BR(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:u}=te(o),c=e.monsterinfo.blind_fire_target,d=g0(e,n,c,u,t);if(!d)return;i=d}else i=D(C(e.enemy.origin,n));dt(e,n,i,30,1e3,0,0,t,1)}function GR(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=D(C(e.enemy.origin,n));It(e,n,i,20,2,.05,.05,0,t,4)}function HR(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:u}=te(o),c=e.monsterinfo.blind_fire_target,d=g0(e,n,c,u,t);if(!d)return;i=d}else i=D(C(e.enemy.origin,n));Ni(e,n,i,50,650,0,t)}function WR(e){e.monsterinfo.nextframe=w0.lastframe,e.nextthink=-1}function VR(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),Ki(e)}var KR=Array.from({length:30},()=>({ai:LR,dist:0}));wa={firstframe:0,lastframe:29,frames:KR,endfunc:DR};var $R=Array.from({length:16},()=>({ai:NR,dist:5}));y0={firstframe:30,lastframe:45,frames:$R,endfunc:UR};var XR=Array.from({length:16},()=>({ai:OR,dist:10}));jc={firstframe:46,lastframe:61,frames:XR,endfunc:Ki};var YR=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=v0:t>5&&t<12&&(n=BR),{ai:Yc,dist:0,think:n}});IR={firstframe:62,lastframe:77,frames:YR,endfunc:Ki};var jR=Array.from({length:20},(e,t)=>({ai:Yc,dist:0,think:t%2===0&&t>5?GR:null}));CR={firstframe:78,lastframe:97,frames:jR,endfunc:Ki};var ZR=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=v0:(t===8||t===12||t===16)&&(n=HR),{ai:Yc,dist:0,think:n}});PR={firstframe:98,lastframe:115,frames:ZR,endfunc:VR};var qR=Array.from({length:6},()=>({ai:p0,dist:0}));FR={firstframe:116,lastframe:121,frames:qR,endfunc:Ki};var JR=Array.from({length:16},()=>({ai:p0,dist:0}));w0={firstframe:122,lastframe:137,frames:JR,endfunc:WR};var Zc=.1;function QR(e,t,n){M(e,Zc,n)}function qc(e,t,n){ie(e,t,Zc,n)}function e4(e,t,n){ae(e,t,Zc,n)}var Jc,S0,t4,n4,A0;function i4(e){e.monsterinfo.current_move=Jc}function Qc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=S0:e.monsterinfo.current_move=Jc}function r4(e,t){if(!e.enemy)return;let n=te(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=D(C(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),dt(e,i,r,2,1e3,1,0,t)}var a4=Array.from({length:1},()=>({ai:QR,dist:0}));Jc={firstframe:0,lastframe:0,frames:a4,endfunc:i4};var s4=Array.from({length:1},()=>({ai:qc,dist:0}));S0={firstframe:0,lastframe:0,frames:s4,endfunc:Qc};var o4=Array.from({length:8},(e,t)=>({ai:e4,dist:0,think:t===4?r4:void 0}));t4={firstframe:1,lastframe:8,frames:o4,endfunc:Qc};var c4=Array.from({length:2},()=>({ai:qc,dist:0}));n4={firstframe:9,lastframe:10,frames:c4,endfunc:Qc};var u4=Array.from({length:4},()=>({ai:qc,dist:0}));function d4(e){e.monsterinfo.nextframe=A0.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}A0={firstframe:11,lastframe:14,frames:u4,endfunc:d4};var Sa=.1;var Mi=()=>Math.random(),Aa=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function Un(e,t,n){M(e,Sa,n)}function kn(e,t,n){N(e,t,Sa,n)}function De(e,t,n){ie(e,t,Sa,n)}function G(e,t,n){ae(e,t,Sa,n)}function Le(e,t,n){h(e,t)}var eu,k0,x0,ka,tu,l4,E0,m4,b0,T0,M0,R0,z0,f4,h4,_4,g4,v4,p4,y4,w4,S4,A4,xa=2,L0=80,k4=100;var x4=8;var nu=32;function Bn(e,t){!(e.spawnflags&nu)&&e.waterlevel>=xa&&F4(e)}function E4(e){e.waterlevel>=xa?(e.flags|=2,e.monsterinfo.current_move=k0):e.monsterinfo.current_move!==tu&&(e.monsterinfo.current_move=eu)}function N0(e){e.flags|=2,e.monsterinfo.current_move=x0}function Ea(e,t){if(!e.enemy)return;let n=Aa(5,10),i=100,r=C(e.enemy.origin,e.origin);qe(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),he(e.enemy,e,e,D(r),e.enemy.origin,$,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function iu(e,t){if(!e.enemy)return;let n=Aa(5,10),i=100,r=C(e.enemy.origin,e.origin);qe(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),he(e.enemy,e,e,D(r),e.enemy.origin,$,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function ru(e,t){if(!e.enemy)return;let n=5,i=L0,r=C(e.enemy.origin,e.origin);qe(r)<=i&&he(e.enemy,e,e,D(r),e.enemy.origin,$,n,0,0,0,t.timeSeconds)}function b4(e){e.monsterinfo.current_move=tu}function O0(e){Mi()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function I0(e,t){let n=Aa(0,2),i=["gek/gk_step1.wav","gek/gk_step2.wav","gek/gk_step3.wav"];t.engine.sound?.(e,0,i[n],1,1,0)}function C0(e,t){if(e.spawnflags&x4){let n=Mi();n<.33?t.engine.sound?.(e,0,"gek/gek_low.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"gek/gek_mid.wav",1,1,0):t.engine.sound?.(e,0,"gek/gek_high.wav",1,1,0)}else t.engine.sound?.(e,0,"gek/gk_idle1.wav",1,1,0);e.health+=Aa(10,20),e.health>e.max_health&&(e.health=e.max_health),e.health<e.max_health/4?e.skin=2:e.health<e.max_health/2?e.skin=1:e.skin=0}function yt(e){!(e.spawnflags&nu)&&e.waterlevel>=xa?e.monsterinfo.current_move=ka:e.monsterinfo.current_move=T0}function T4(e){!(e.spawnflags&nu)&&e.waterlevel>=xa?e.monsterinfo.current_move=ka:e.monsterinfo.current_move=b0}function P0(e){if(!e.enemy||e.enemy.health<=0)return;qe(C(e.enemy.origin,e.origin))<=L0&&(e.frame===114?e.monsterinfo.current_move=R0:e.frame===123&&(e.monsterinfo.current_move=M0))}function M4(e,t,n,i,r,a){let s=Yo(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function R4(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=te(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=W(e.origin,W(B(i,s.x),W(B(r,s.y),B(a,s.z))));o.z+=2;let u=xi(e.enemy.origin);u.z+=e.enemy.viewheight||0;let c=D(C(u,o));M4(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function z4(e){if(Mi()>.8&&e.health<e.max_health){e.monsterinfo.current_move=E0;return}if(e.enemy&&e.enemy.health>0){let t=qe(C(e.enemy.origin,e.origin));Mi()>.7&&t<=k4&&(e.monsterinfo.current_move=z0)}}function L4(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function N4(e,t){let i=te(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=W(B(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=L4}function O4(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=$;return}}function jt(e){e.groundentity&&(e.velocity=$)}function I4(e,t){}function ba(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function F0(e,t){Bm(t,e.origin,20),e.deadflag=2}function C4(e,t){Mi()>.9&&F0(e,t)}function P4(e){e.maxs.z=0}function F4(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=ka,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var D0=Array(38).fill({ai:Un,dist:0});D0[38]={ai:Un,dist:0,think:Bn};eu={firstframe:0,lastframe:38,frames:D0,endfunc:null};var D4=Array(32).fill({ai:Un,dist:14});k0={firstframe:39,lastframe:70,frames:D4,endfunc:null};var U4=Array(32).fill({ai:De,dist:14});x0={firstframe:39,lastframe:70,frames:U4,endfunc:N0};var Ta=Array(32).fill({ai:De,dist:14});Ta[8]={ai:De,dist:18,think:Ea};Ta[14]={ai:De,dist:24,think:iu};Ta[20]={ai:De,dist:22,think:ru};ka={firstframe:39,lastframe:70,frames:Ta,endfunc:N0};var au=Array(32).fill({ai:Un,dist:0});au[0]={ai:Un,dist:0,think:C0};au[31]={ai:Un,dist:0,think:O0};l4={firstframe:71,lastframe:102,frames:au,endfunc:E4};var Ma=Array(32).fill({ai:Le,dist:0});Ma[0]={ai:Le,dist:0,think:C0};Ma[31]={ai:Le,dist:0,think:O0};E0={firstframe:71,lastframe:102,frames:Ma,endfunc:e=>Y4(e,eu)};tu={firstframe:71,lastframe:102,frames:Ma,endfunc:b4};var B4=[{ai:kn,dist:3.8,think:Bn},{ai:kn,dist:19.6},{ai:kn,dist:25.5},{ai:kn,dist:34.6,think:I0},{ai:kn,dist:27.3},{ai:kn,dist:28.4}];m4={firstframe:103,lastframe:108,frames:B4,endfunc:null};var G4=[{ai:De,dist:3.8,think:Bn},{ai:De,dist:19.6},{ai:De,dist:25.5},{ai:De,dist:34.6,think:I0},{ai:De,dist:27.3},{ai:De,dist:28.4}];b0={firstframe:103,lastframe:108,frames:G4,endfunc:null};var H4=[{ai:De,dist:.2},{ai:De,dist:19.7}];T0={firstframe:0,lastframe:1,frames:H4,endfunc:T4};var W4=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:R4},{ai:G,dist:0,think:z4}];z0={firstframe:133,lastframe:139,frames:W4,endfunc:yt};var V4=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:Ea},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:P0}];M0={firstframe:109,lastframe:117,frames:V4,endfunc:yt};var K4=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:Ea},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:iu},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:P0}];R0={firstframe:118,lastframe:126,frames:K4,endfunc:yt};var U0=[{ai:G,dist:0},{ai:G,dist:-.3},{ai:G,dist:-1.1},{ai:G,dist:-.2},{ai:G,dist:6.7,think:N4},{ai:G,dist:6.4},{ai:G,dist:.1},{ai:G,dist:28.3},{ai:G,dist:24.1},{ai:G,dist:31.7},{ai:G,dist:35.9,think:O4},{ai:G,dist:12.3,think:jt},{ai:G,dist:20.1,think:jt},{ai:G,dist:-1,think:jt},{ai:G,dist:2.5,think:jt},{ai:G,dist:.5,think:jt},{ai:G,dist:1.8,think:jt},{ai:G,dist:1.2,think:jt},{ai:G,dist:-.4,think:Bn}];f4={firstframe:140,lastframe:158,frames:U0,endfunc:yt};h4={firstframe:140,lastframe:158,frames:U0,endfunc:yt};var Gn=Array(21).fill({ai:G,dist:16});Gn[0]={ai:G,dist:16,think:I4};Gn[4]={ai:G,dist:16,think:ru};Gn[9]={ai:G,dist:16,think:ru};Gn[13]={ai:G,dist:16,think:Ea};Gn[18]={ai:G,dist:16,think:iu};_4={firstframe:159,lastframe:179,frames:Gn,endfunc:yt};var $4=Array(6).fill({ai:Le,dist:0});g4={firstframe:180,lastframe:185,frames:$4,endfunc:yt};var B0=Array(11).fill({ai:Le,dist:0});B0[10]={ai:Le,dist:0,think:Bn};v4={firstframe:186,lastframe:196,frames:B0,endfunc:yt};var G0=Array(13).fill({ai:Le,dist:0});G0[12]={ai:Le,dist:0,think:Bn};p4={firstframe:197,lastframe:209,frames:G0,endfunc:yt};var H0=Array(10).fill({ai:Le,dist:0});H0[5]={ai:Le,dist:-7,think:P4};y4={firstframe:210,lastframe:219,frames:H0,endfunc:ba};var W0=Array(7).fill({ai:Le,dist:0});W0[5]={ai:Le,dist:-7,think:C4};w4={firstframe:220,lastframe:226,frames:W0,endfunc:ba};var V0=Array(35).fill({ai:Le,dist:0});V0[34]={ai:Le,dist:0,think:F0};S4={firstframe:227,lastframe:261,frames:V0,endfunc:ba};var X4=Array(45).fill({ai:Le,dist:0});A4={firstframe:262,lastframe:306,frames:X4,endfunc:ba};function Y4(e,t){e.monsterinfo.current_move=t}var su=.1,j4=()=>Math.random(),Tm=()=>Math.random();function Z4(e,t,n){N(e,t,su,n)}function q4(e,t,n){ie(e,t,su,n)}function Ra(e,t,n){ae(e,t,su,n)}function Je(e,t,n){h(e,t)}var Ri,J4,ou,K0,$0,Q4,ez,tz,nz,iz,rz,az,sz=1;function oz(e,t){let i=t.findByRadius(e.origin,1024),r=null;for(let a of i)if(a!==e&&a.monsterinfo&&!(a.monsterinfo.aiflags&256)&&!(a.health>0)&&!(a.nextthink&&a.think===t.free)&&!(a.health<=-40)&&qt(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function cz(e,t){if(e.enemy)return;let n=oz(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,$i(e),void 0):j4()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function uz(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=ou;return}let n=te(e.angles),i=W(e.origin,W(B(n.forward,0),W(B(n.right,0),B(n.up,0)))),r=xi(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=D(C(r,i));dt(e,i,a,15,1e3,sz,0,t)}function dz(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=Ri,e.monsterinfo.aiflags&=-8193;return}e.enemy.health<e.enemy.max_health?(e.enemy.health+=5,e.enemy.health>e.enemy.max_health&&(e.enemy.health=e.enemy.max_health)):(e.enemy.deadflag===2&&(e.enemy.deadflag=0,e.enemy.solid=2,e.enemy.takedamage=!0,e.enemy.health=e.enemy.max_health,e.enemy.monsterinfo.aiflags&=-129),e.monsterinfo.current_move=Ri,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function lz(e,t){if(Tm()>.8){let n=Tm();n<.33?t.engine.sound?.(e,0,"misc/welder1.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"misc/welder2.wav",1,1,0):t.engine.sound?.(e,0,"misc/welder3.wav",1,1,0)}}function $i(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Ri:e.monsterinfo.current_move=ou}function mz(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=$0:e.monsterinfo.current_move=K0}function cu(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=Ri)}var X0=Array(19).fill({ai:Je,dist:0});X0[18]={ai:Je,dist:0,think:cz};Ri={firstframe:58,lastframe:76,frames:X0,endfunc:null};var fz=[{ai:Z4,dist:5}];J4={firstframe:0,lastframe:0,frames:fz,endfunc:null};var hz=[{ai:q4,dist:10}];ou={firstframe:0,lastframe:0,frames:hz,endfunc:null};var Y0=Array(31).fill({ai:Ra,dist:0});Y0[20]={ai:Ra,dist:0,think:uz};K0={firstframe:121,lastframe:151,frames:Y0,endfunc:$i};var _z=Array(6).fill({ai:Ra,dist:0,think:dz});$0={firstframe:115,lastframe:120,frames:_z,endfunc:null};var j0=Array(10).fill({ai:Je,dist:0});j0[9]={ai:Je,dist:0,think:cu};Q4={firstframe:77,lastframe:86,frames:j0,endfunc:null};var Z0=Array(7).fill({ai:Je,dist:0,think:lz});Z0[6]={ai:Je,dist:0,think:cu};ez={firstframe:87,lastframe:93,frames:Z0,endfunc:null};var q0=Array(7).fill({ai:Je,dist:-2});q0[6]={ai:Je,dist:-2,think:cu};tz={firstframe:94,lastframe:100,frames:q0,endfunc:null};var gz=[{ai:Ra,dist:0}];nz={firstframe:0,lastframe:0,frames:gz,endfunc:mz};var vz=[{ai:Je,dist:-1}];iz={firstframe:0,lastframe:0,frames:vz,endfunc:$i};var pz=Array(8).fill({ai:Je,dist:0});rz={firstframe:107,lastframe:114,frames:pz,endfunc:$i};var yz=Array(6).fill({ai:Je,dist:0});az={firstframe:101,lastframe:106,frames:yz,endfunc:$i};var sO=new Map(Ko.map(e=>[e.name,e]));var wz=2166136261,Sz=16777619;function J0(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,Sz)>>>0;return n>>>0}function bn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return J0(e,r)}function Bo(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return J0(e,n)}var bo=2,Az=1;function Be(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function me(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function Tn(e,t,n){return e===void 0?n:me(e,t)}function Kr(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Dr(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)me(n,`${t} element`);return e}function kz(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Be(e,"level");return{frameNumber:Tn(t.frameNumber,"level.frameNumber",0),timeSeconds:Tn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Tn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Tn(t.deltaSeconds,"level.deltaSeconds",0)}}function xz(e){if(e===void 0)return new Nm().getState();let t=Be(e,"rng"),n=Be(t.mt,"rng.mt"),i=Dr(n.state,"rng.mt.state");return{mt:{index:me(n.index,"rng.mt.index"),state:i}}}function Ez(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=Be(t,`thinks[${n}]`);return{time:me(i.time,`thinks[${n}].time`),entityIndex:me(i.entityIndex,`thinks[${n}].entityIndex`)}})}function bz(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Be(e,"awareness"),n=(i,r)=>i===null?null:me(i,r);return{frameNumber:me(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:me(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:me(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:me(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function Tz(e){if(e===void 0)return{};let t=Be(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=Be(r,i),s={};for(let[o,u]of Object.entries(a))s[o]=me(u,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[me(a,`${i}[0]`),me(s,`${i}[1]`),me(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function Mz(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Be(t,`entities[${n}]`);return{index:me(i.index,`entities[${n}].index`),fields:Tz(i.fields)}})}function Rz(e){let t=Be(e,"pool");return{capacity:me(t.capacity,"pool.capacity"),activeOrder:Dr(t.activeOrder,"pool.activeOrder"),freeList:Dr(t.freeList,"pool.freeList"),pendingFree:Dr(t.pendingFree,"pool.pendingFree")}}function zz(e){let t=Be(e,"entities");return{timeSeconds:me(t.timeSeconds,"entities.timeSeconds"),pool:Rz(t.pool),entities:Mz(t.entities),thinks:Ez(t.thinks),awareness:bz(t.awareness),crossLevelFlags:Tn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:Tn(t.crossUnitFlags,"entities.crossUnitFlags",0)}}function Lz(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=Be(t,`cvars[${n}]`);return{name:Kr(i.name,`cvars[${n}].name`),value:Kr(i.value,`cvars[${n}].value`),flags:me(i.flags,`cvars[${n}].flags`)}})}function Nz(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Kr(t,`configstrings[${n}]`))}function Oz(e){return e===void 0?{}:Be(e,"gameState")}function vt(e,t){if(t==null)return e;if(typeof t=="number")return bn(e,t);if(typeof t=="string")return Bo(e,t);if(typeof t=="boolean")return bn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=vt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=Bo(n,r),n=vt(n,t[r]);return n}return e}function Iz(e){let t=wz;return t=bn(t,e.version),t=bn(t,e.timestamp),t=Bo(t,e.map),t=bn(t,e.difficulty),t=bn(t,e.playtimeSeconds),t=vt(t,e.gameState),t=vt(t,e.level),t=vt(t,e.rng),t=vt(t,e.entities),t=vt(t,e.cvars),t=vt(t,e.configstrings),e.player&&(t=vt(t,e.player)),t>>>0}function Q0(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=Be(i,"save"),a=r.version??bo,s=me(a,"version");if(s<Az)throw new Error(`Unsupported save version ${s}`);if(s>bo&&!n)throw new Error(`Save version ${s} is newer than supported ${bo}`);let o={version:s,timestamp:me(r.timestamp,"timestamp"),map:Kr(r.map,"map"),difficulty:me(r.difficulty,"difficulty"),playtimeSeconds:me(r.playtimeSeconds,"playtimeSeconds"),gameState:Oz(r.gameState),level:kz(r.level),rng:xz(r.rng),entities:zz(r.entities),cvars:Lz(r.cvars),configstrings:Nz(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?me(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let u=Iz(o);if(u!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${u}`)}return o}var oO=new Set(Ko.filter(e=>e.save).map(e=>e.name));var Mm=globalThis.TextEncoder;function Mn(e){return Q0({...e},{allowNewerVersion:!0})}function Cz(e){return Mm?new Mm().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var Pz=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:Mn(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:Mn(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:Mn(e.save)}))}},Fz=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:Mn(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:Mn(t.save)}))}},uu=class Si{constructor(t={}){let{dbName:n=Si.DEFAULT_DB_NAME,storeName:i=Si.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new Fz(r,n,i):this.adapter=new Pz}async save(t,n,i={}){let r=Mn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:Cz(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return Q0(i.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save(Si.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Si.QUICK_SLOT,t)}};uu.DEFAULT_DB_NAME="quake2ts-saves";uu.DEFAULT_STORE="saves";uu.QUICK_SLOT="quicksave";var cO=$r();var uO=$r();var dO=[{id:re.QuadDamage,priority:1},{id:re.Invulnerability,priority:2},{id:re.EnviroSuit,priority:3},{id:re.Rebreather,priority:4},{id:re.Silencer,priority:5}];var Dz=new Map,Uz=["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"],e1=async(e,t)=>{for(let n of Uz)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);Dz.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Bz=new Map,Gz=["d_left","d_right","d_up","d_down"],t1=async(e,t)=>{for(let n of Gz)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);Bz.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var du=[],Hz=0,n1=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);du.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}du.length>0&&(Hz=du[0].width),await hm(e,t),await e1(e,t),await t1(e,t)};var lu=[{type:"null"},{type:"armor",id:Ln.BODY},{type:"armor",id:Ln.COMBAT},{type:"armor",id:Ln.JACKET},{type:"armor",id:Ln.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:Z.Grapple},{type:"weapon",id:Z.Blaster},{type:"weapon",id:Z.ChainFist},{type:"weapon",id:Z.Shotgun},{type:"weapon",id:Z.SuperShotgun},{type:"weapon",id:Z.Machinegun},{type:"weapon",id:Z.EtfRifle},{type:"weapon",id:Z.Chaingun},{type:"ammo",id:Y.Grenades},{type:"ammo",id:Y.Trap},{type:"ammo",id:Y.Tesla},{type:"weapon",id:Z.GrenadeLauncher},{type:"weapon",id:Z.ProxLauncher},{type:"weapon",id:Z.RocketLauncher},{type:"weapon",id:Z.HyperBlaster},{type:"weapon",id:Z.IonRipper},{type:"weapon",id:Z.PlasmaBeam},{type:"weapon",id:Z.Railgun},{type:"weapon",id:Z.Phalanx},{type:"weapon",id:Z.BFG10K},{type:"weapon",id:Z.Disruptor},{type:"ammo",id:Y.Shells},{type:"ammo",id:Y.Bullets},{type:"ammo",id:Y.Cells},{type:"ammo",id:Y.Rockets},{type:"ammo",id:Y.Slugs},{type:"ammo",id:Y.MagSlugs},{type:"ammo",id:Y.Flechettes},{type:"ammo",id:Y.Prox},{type:"ammo",id:Y.Nuke},{type:"ammo",id:Y.Rounds},{type:"powerup",id:re.QuadDamage},{type:"powerup",id:re.QuadFire},{type:"powerup",id:re.Invulnerability},{type:"powerup",id:re.Invisibility},{type:"powerup",id:re.Silencer},{type:"powerup",id:re.Rebreather},{type:"powerup",id:re.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:re.Bandolier},{type:"powerup",id:re.AmmoPack},{type:"powerup",id:re.IRGoggles},{type:"powerup",id:re.DoubleDamage},{type:"powerup",id:re.SphereVengeance},{type:"powerup",id:re.SphereHunter},{type:"powerup",id:re.SphereDefender},{type:"powerup",id:re.Doppelganger},{type:"powerup",id:re.TagToken},{type:"key",id:Se.DataCD},{type:"key",id:Se.PowerCube},{type:"key",id:Se.ExplosiveCharges},{type:"key",id:Se.Yellow},{type:"key",id:Se.PowerCore},{type:"key",id:Se.Pyramid},{type:"key",id:Se.DataSpinner},{type:"key",id:Se.Pass},{type:"key",id:Se.Blue},{type:"key",id:Se.Red},{type:"key",id:Se.Green},{type:"key",id:Se.CommanderHead},{type:"key",id:Se.Airstrike},{type:"key",id:Se.NukeContainer},{type:"key",id:Se.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:Se.RedFlag},{type:"key",id:Se.BlueFlag},{type:"powerup",id:re.TechResistance},{type:"powerup",id:re.TechStrength},{type:"powerup",id:re.TechHaste},{type:"powerup",id:re.TechRegeneration},{type:"powerup",id:re.Flashlight},{type:"powerup",id:re.Compass}];var Wz=32768,za=class{constructor(t,n){this.configstrings=new Array(Wz).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s,o,u){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&ol){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=sn();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&Bs&&(t.modelindex=n.modelindex),i&Ws&&(t.modelindex2=n.modelindex2),i&Vs&&(t.modelindex3=n.modelindex3),i&Ks&&(t.modelindex4=n.modelindex4),i&Ps&&(t.frame=n.frame),i&Hs&&(t.frame=n.frame),(i&dr||i&fr)&&(t.skinnum=n.skinnum),(i&ur||i&mr)&&(t.effects=n.effects),(i&cr||i&lr)&&(t.renderfx=n.renderfx),i&Ns&&(t.origin.x=n.origin.x),i&Os&&(t.origin.y=n.origin.y),i&Ds&&(t.origin.z=n.origin.z),i&Us&&(t.angles.x=n.angles.x),i&Is&&(t.angles.y=n.angles.y),i&Cs&&(t.angles.z=n.angles.z),i&$s&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&Xs&&(t.sound=n.sound),i&Fs&&(t.event=n.event),i&Ys&&(t.solid=n.solid),i&Gs&&(t.alpha=n.alpha),i&js&&(t.scale=n.scale),i&Zs&&(t.instanceBits=n.instanceBits),i&qs&&(t.loopVolume=n.loopVolume),r&Js&&(t.loopAttenuation=n.loopAttenuation),r&Qs&&(t.owner=n.owner),r&eo&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,i,r,a,s,o){if(!this.imports?.engine.audio)return;let u=i??1,c=r??1,d=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,u,c,d):o&&this.imports.engine.audio.positioned_sound(o,n,u,c)}onTempEntity(t,n,i,r,a,s,o,u,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let r=0,a=0,s=0,o=Tt,c=Rr(this.stats,vi.QuadDamage)?4:1;switch(n){case Ml:r=-2,o={x:-2,y:0,z:0};break;case Cl:r=-4,o={x:-4,y:0,z:0};break;case Tl:r=-1,a=Math.random()-.5;break;case Rl:case zl:case Ll:r=-.5,a=Math.random()-.5;break;case Nl:r=-3,o={x:-3,y:0,z:0};break;case Ol:case Il:r=-2,o={x:-2,y:0,z:0};break;case Pl:r=-5,o={x:-2,y:0,z:0};break;case Fl:case bl:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,i){}convertFrameToPredictionState(t){let n=t.playerState,i={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let u=0;u<this.inventory.length;u++){let c=this.inventory[u];if(c<=0)continue;if(u>=lu.length)break;let d=lu[u];switch(d.type){case"weapon":i.ownedWeapons.add(d.id);break;case"ammo":i.ammo.counts[d.id]||(i.ammo.counts[d.id]=0),i.ammo.counts[d.id]=c;break;case"armor":i.armor={armorType:d.id,armorCount:c};break;case"powerup":i.powerups.set(d.id,c);break;case"key":i.keys.add(d.id);break;case"health":break;case"item":i.items.add(d.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:gi.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:Tt,kick_origin:Tt,gunoffset:Tt,gunangles:Tt,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return Yt();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return vn(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Hn=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=_e.Models&&t<_e.Models+fi){let i=t-_e.Models;this.models[i]=n}else if(t>=_e.Sounds&&t<_e.Sounds+hi){let i=t-_e.Sounds;this.sounds[i]=n}else if(t>=_e.Images&&t<_e.Images+_i){let i=t-_e.Images;this.images[i]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var La=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var Na=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${i1(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${i1(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function i1(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var Oa=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let i=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var Xi=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var Ia=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var Ca=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var Pa=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function r1(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,u=r.items.length*o+40,c=s-u/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((d,f)=>{let m=c+40+f*o,_=d.label;if(d.type==="input"&&d.getValue){if(_+=`: ${d.getValue()}`,f===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(_+="_")}}else d.type==="toggle"&&d.getValue&&(_+=`: ${d.getValue()}`);if(f===t.selectedIndex){let S=_.replace(/\^[0-9]/g,"").length*8,b=(n-S)/2;e.drawString(b-16,m,"\r")}e.drawCenterString(m,_)})}var Yi=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&mi.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var Fa=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(i){console.warn("Failed to write to localStorage",i)}}};var Da=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let u=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*u,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(u*100);t.drawCenterString(o+a+10,`${c}%`)}};var Ua=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var Ba=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};function Wn(e,t,n){return e+(t-e)*n}function mu(e,t,n){return Wn(e,t,n)}function a1(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o=new Map(t.map(u=>[u.number,u]));for(let u of e){let c=o.get(u.number)??u,d=i.getModelName(u.modelIndex);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let m={x:Wn(c.origin.x,u.origin.x,n),y:Wn(c.origin.y,u.origin.y,n),z:Wn(c.origin.z,u.origin.z,n)},_={x:mu(c.angles.x,u.angles.x,n),y:mu(c.angles.y,u.angles.y,n),z:mu(c.angles.z,u.angles.z,n)},g=u.frame,A=c.frame,v=c.scale!==void 0?c.scale:1,S=u.scale!==void 0?u.scale:1,b=Wn(v,S,n),x=O=>O===void 0||O===0?255:O,p=x(c.alpha),w=x(u.alpha),E=Wn(p,w,n)/255,z=oe.create();oe.translate(z,z,[m.x,m.y,m.z]),oe.rotateZ(z,z,_.z*Math.PI/180),oe.rotateY(z,z,_.y*Math.PI/180),oe.rotateX(z,z,_.x*Math.PI/180),oe.scale(z,z,[b,b,b]),f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:A,frame1:g,lerp:n},transform:z,skin:u.skinNum>0?i.getImageName(u.skinNum):void 0,alpha:E}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:A,frame1:g,lerp:n},transform:z,alpha:E})}return a}var Ga=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var Ha=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.driver=new Ga,this.options=t,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1;try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>El&&this.commandHistory.shift();let i=new $l;i.writeLong(0),i.writeLong(0),i.writeByte(Xt.move),i.writeByte(0),i.writeLong(this.latestServerFrame),Vl(i,n),this.driver.send(i.getData())}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let s=new ArrayBuffer(t.byteLength);new Uint8Array(s).set(t),n=s}let i=new Kl(n),r=i.readLong(),a=i.readLong();this.parser=new to(i,this),this.parser.parseMessage()}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new pi;t.writeByte(Xt.stringcmd),t.writeString("getchallenge"),this.driver.send(t.getData())}sendConnect(t){let n=new pi;n.writeByte(Xt.stringcmd);let i=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${or} ${t} ${i}`),this.driver.send(n.getData())}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new pi;o.writeByte(Xt.stringcmd),o.writeString("new"),this.driver.send(o.getData()),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new pi;t.writeByte(Xt.stringcmd),t.writeString("begin"),this.driver.send(t.getData()),this.state=5}onFrame(t){t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame)}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,u,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var Vz=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],tn=class{constructor(t=Vz){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function s1(){return new tn}function fu(e){return e}function ji(e){return e.trim().toLowerCase()}var Kz=250,hu=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},Wa=(S=>(S.Forward="+forward",S.Back="+back",S.MoveLeft="+moveleft",S.MoveRight="+moveright",S.MoveUp="+moveup",S.MoveDown="+movedown",S.Jump="+jump",S.Crouch="+crouch",S.Attack="+attack",S.Use="+use",S.Holster="+holster",S.TurnLeft="+left",S.TurnRight="+right",S.LookUp="+lookup",S.LookDown="+lookdown",S.SpeedModifier="+speed",S.Zoom="+zoom",S))(Wa||{}),$z={"+attack":at.Attack,"+use":at.Use,"+holster":at.Holster,"+jump":at.Jump,"+crouch":at.Crouch},Xz=new Map(Object.values(Wa).map(e=>[ji(e),e]));function Yz(e){return Xz.get(ji(e))}function Zi(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Vn=class{constructor(t={},n=new tn){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??vl,this.sideSpeed=t.sideSpeed??pl,this.upSpeed=t.upSpeed??yl,this.yawSpeed=t.yawSpeed??wl,this.pitchSpeed=t.pitchSpeed??Sl,this.sensitivity=t.sensitivity??Al,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=Zi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=Zi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=Zi()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=Zi()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=Zi(),i){this.pollGamepads(n),this.applyTouchState(n);let r=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),u=this.sample("+lookup",t,n),d={x:(this.sample("+lookdown",t,n).fraction-u.fraction)*a,y:(o.fraction-s.fraction)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let y=this.gamepadLook.y*(this.invertGamepadY?-1:1);d={x:d.x+y*a*this.gamepadLookScale,y:d.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let y=this.touchLook.y*(this.invertMouseY?-1:1);d={x:d.x+y*a,y:d.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let y=this.sampleMouseDelta(),L=xl(y,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});d={x:d.x+L.x,y:d.y+L.y,z:0}}let f=kl(this.viewAngles,d);this.viewAngles=f;let m=this.sample("+forward",t,n),_=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),A=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),S=this.sample("+movedown",t,n),b=this.sample("+speed",t,n),x=this.sample("+jump",t,n),p=this.sample("+crouch",t,n),w=this.runByDefault?b.active?.5:1:b.active?1:.5,T=this.forwardSpeed*(m.fraction-_.fraction)*w,E=this.sideSpeed*(A.fraction-g.fraction)*w,z=this.upSpeed*(v.fraction-S.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(T+=this.forwardSpeed*this.gamepadMove.y*w,E+=this.sideSpeed*this.gamepadMove.x*w),(this.touchMove.x!==0||this.touchMove.y!==0)&&(T+=this.forwardSpeed*this.touchMove.y*w,E+=this.sideSpeed*this.touchMove.x*w),this.jumpAddsUpMove&&x.fraction>0&&(z+=this.upSpeed*x.fraction),this.crouchAddsDownMove&&p.fraction>0&&(z-=this.upSpeed*p.fraction),T=this.clampMove(T,this.forwardSpeed),E=this.clampMove(E,this.sideSpeed),z=this.clampMove(z,this.upSpeed);let O=this.collectButtonBits(t,n),R=Math.min(Math.max(Math.round(t),1),Kz);return(this.anyPressed||O!==at.None)&&(O|=at.Any),this.anyPressed=!1,{msec:R,buttons:O,angles:{...this.viewAngles},forwardmove:T,sidemove:E,upmove:z,serverFrame:i}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=r.buttons??[];for(let u=0;u<o.length;u++){let c=o[u];if(!c)continue;let d=c.pressed||c.value>this.gamepadDeadZone,f=this.gamepadButtonCode(a,u);d&&i.add(f);let m=this.gamepadButtons.get(f)??!1;d!==m&&(this.applyCommand(this.bindings.getBinding(f),d,f,t),this.gamepadButtons.set(f,d))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=Yz(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let i=at.None;for(let[r,a]of Object.entries($z)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new hu,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,i){return this.lookupButton(t).sample(n,i)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var Va=class{constructor(t,n=new Vn(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var Ka={x:0,y:0,z:0};function jz(e){let t=y=>{let L={x:0,y:0,z:0};return e.engine.trace(y,y,L,L).contents||0},n=new Pr(e.engine.trace,t),i=new Cr,r=new ul,a=new za(e);a.setView(i);let s=new Oa,o=new Da,u=new Ua,c=new Ba,d=new Yi(new Fa),f,m,_=new Hn,g,A=!1,S=fm(e,{get tickRate(){return 10},get frameTimeMs(){return g?.timeMs??0},get serverFrame(){return a.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return _},getClientName:y=>`Player ${y}`,getKeyBinding:y=>`[${y}]`,get inAutoDemo(){return A}}),b=mm(S),x=new Ha({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return z}}),p=new Pa(s,x);a.setCallbacks({onCenterPrint:y=>b.ParseCenterPrint(y,0,!1),onPrint:(y,L)=>b.NotifyMessage(0,L,!1),onConfigString:(y,L)=>{_.set(y,L),b.ParseConfigString(y,L)},onServerData:(y,L)=>{L&&L>0?r.setFrameDuration(1e3/L):r.setFrameDuration(100)}}),r.setHandler(a);let w,T,E,z=90,O=!1;if(e.host){m=new Xi(s,e.host),f=new Ca(s,m,e.host);let y=new Map;if(e.host.cvars){for(let L of e.host.cvars.list())y.set(L.name,{value:L.string,setValue:P=>e.host.cvars.setValue(L.name,P)});d.loadCvars(y)}}if(e.host?.commands&&(e.host.commands.register("playdemo",y=>{if(y.length<1){console.log("usage: playdemo <filename>");return}let L=y[0];console.log(`playdemo: ${L}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let y=_m();console.log(`Crosshair changed to index ${y}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{O=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{O=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{s.isActive()?s.closeAll():f&&s.pushMenu(f.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",y=>{if(y.length<1){console.log("usage: connect <address>");return}let L=y[0];console.log(`Connecting to ${L}...`),x.connect(L).catch(P=>{console.error("Failed to connect:",P),u.show("Connection Failed",P instanceof Error?P.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{x.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:mi.Archive,onChange:L=>{let P=L.number;isNaN(P)||(z=Math.max(1,Math.min(179,P)))},description:"Field of view"});let y=e.host.cvars.get("fov");if(y){let L=y.number;isNaN(L)||(z=Math.max(1,Math.min(179,L)))}}return{loadingScreen:o,errorDialog:u,init(y){this.Init(y)},Init(y){g=y,y?.state&&n.setAuthoritative(y),b.Init(),e.engine.assets&&e.engine.renderer&&(o.start(100,"Loading assets..."),n1(e.engine.renderer,e.engine.assets).then(()=>{o.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(s.isActive()||document.body.requestPointerLock?.())})},predict(y){return s.isActive(),x.isConnected()&&x.sendCommand(y),n.enqueueCommand(y)},handleInput(y,L){if(!s.isActive())return!1;if(!L)return!0;let P=y.toLowerCase();return P==="arrowup"||P==="w"?s.handleInput("up"):P==="arrowdown"||P==="s"?s.handleInput("down"):P==="arrowleft"||P==="a"?s.handleInput("left"):P==="arrowright"||P==="d"?s.handleInput("right"):P==="enter"||P===" "?s.handleInput("select"):P==="escape"?s.getState().activeMenu?.parent?s.handleInput("back"):!1:y.length===1?s.handleInput("char",y):y==="Backspace"?s.handleInput("left"):!0},toggleMenu(){if(s.isActive()){if(s.closeAll(),e.host?.cvars){let y=e.host.cvars.list().map(L=>({name:L.name,value:L.string,flags:L.flags}));d.saveCvars(y)}}else f&&s.pushMenu(f.createPauseMenu())},createMainMenu(y,L,P,X,le){let ge=new Na(s,L,P,X,le),Ae=m;if(!Ae){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");Ae=new Xi(s,e.host)}let Ke=e.engine.assets,wt={findByExtension:nn=>Ke?Ke.listFiles(nn):[]},o1=new Ia(s,wt,nn=>{console.log(`Starting map: ${nn}`),e.host?.commands.execute(`map ${nn}`)}),c1=new La(s,ge,{...y,optionsFactory:Ae,mapsFactory:o1,multiplayerFactory:p,onSetDifficulty:nn=>{e.host?.cvars&&e.host.cvars.setValue("skill",nn.toString())}});return{menuSystem:s,factory:c1}},render(y){let L=r.getState(),P=[];L===no.Playing?w=a.getPredictionState():(y.latest?.state&&(n.setAuthoritative(y.latest),g=y.latest),y.previous?.state&&y.latest?.state?(w=vn(y.previous.state,y.latest.state,y.alpha),y.latest.state.packetEntities&&y.previous.state.packetEntities&&(P=a1(y.latest.state.packetEntities,y.previous.state.packetEntities,y.alpha,_,e))):w=y.latest?.state??y.previous?.state??n.getPredictedState());let X=y.latest&&y.previous?Math.max(0,y.latest.timeMs-y.previous.timeMs):0;T=i.sample(w,X);let le={};if(w){let{origin:ge,viewAngles:Ae}=w;E=new Ed,E.position=ue.fromValues(ge.x,ge.y,ge.z);let Ke=T?.offset??{x:0,y:0,z:0};ue.add(E.position,E.position,[Ke.x,Ke.y,Ke.z]);let wt=T?.angles??{x:0,y:0,z:0};E.angles=ue.fromValues(Ae.x+wt.x,Ae.y+wt.y,Ae.z+wt.z),E.fov=O?40:z,E.aspect=4/3,e.engine.renderer&&(E.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&E){let ge;if(e.engine.assets){let Ae=_.getModelName(1);if(Ae){let Ke=e.engine.assets.getMap(Ae)}}e.engine.renderer.renderFrame({camera:E,world:ge,dlights:[]},P)}if(e.engine.renderer&&w&&w.client){let ge=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},Ae=y.latest?.timeMs??0;this.DrawHUD(ge,Ae)}return le},DrawHUD(y,L){if(!e.engine.renderer)return;let P=e.engine.renderer,X=P.width,le=P.height;if(w&&w.client){let ge={origin:w.origin,velocity:w.velocity,viewAngles:w.viewAngles,onGround:_n(w.pmFlags,ht.OnGround),waterLevel:w.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:w.damageAlpha??0,damageIndicators:w.damageIndicators??[],blend:w.blend??[0,0,0,0],pickupIcon:w.pickupIcon,centerPrint:void 0,notify:void 0,stats:w.stats?[...w.stats]:new Array(32).fill(0),kick_angles:Ka,kick_origin:Ka,gunoffset:Ka,gunangles:Ka,gunindex:0,pm_type:w.pm_type??0,pm_time:w.pm_time??0,pm_flags:w.pmFlags,gun_frame:w.gun_frame??0,rdflags:w.rdflags??0,fov:w.fov??90};ge.stats[ze.STAT_HEALTH]=w.health??0,ge.stats[ze.STAT_AMMO]=w.ammo??0,ge.stats[ze.STAT_ARMOR]=w.armor??0,P.begin2D(),b.DrawHUD(0,null,{x:0,y:0,width:X,height:le},{x:0,y:0,width:X,height:le},1,0,ge),P.end2D()}s.isActive()&&r1(e.engine.renderer,s.getState(),e.engine.renderer.width,e.engine.renderer.height),w&&w.client&&c.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,w.client),u.render(e.engine.renderer),o.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(b.Shutdown(),g=void 0,w=void 0,e.host?.cvars){let y=e.host.cvars.list().map(L=>({name:L.name,value:L.string,flags:L.flags}));d.saveCvars(y)}},get prediction(){return n},get lastRendered(){return w},get view(){return i},get lastView(){return T},get camera(){return E},demoPlayback:r,ParseCenterPrint(y){b.ParseCenterPrint(y,0,!1)},ParseNotify(y){b.NotifyMessage(0,y,!1)},showSubtitle(y,L){b.ShowSubtitle(y,L)},ParseConfigString(y,L){_.set(y,L),b.ParseConfigString(y,L)},demoHandler:a,multiplayer:x,configStrings:_}}return f1(Zz);})();
169
+ }`;var Ed=class{constructor(){this._position=ue.create(),this._angles=ue.create(),this._bobAngles=ue.create(),this._bobOffset=ue.create(),this._kickAngles=ue.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=oe.create(),this._projectionMatrix=oe.create(),this._viewProjectionMatrix=oe.create(),this._dirty=!0}get position(){return this._position}set position(e){ue.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){ue.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){ue.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){ue.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){ue.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}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=oe.create();return oe.perspective(t,e*Kn,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;oe.perspective(this._projectionMatrix,this._fov*Kn,this._aspect,this._near,this._far);let e=oe.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*Kn,a=n*Kn,s=i*Kn,o=oe.create();oe.identity(o),oe.rotateZ(o,o,-a),oe.rotateY(o,o,-r),oe.rotateX(o,o,-s);let u=oe.create();oe.multiply(u,e,o);let c=ue.add(ue.create(),this._position,this._bobOffset),d=ue.negate(ue.create(),c),f=ue.create();ue.transformMat4(f,d,o);let m=ue.fromValues(f[1]||0,f[2]||0,f[0]||0);oe.copy(this._viewMatrix,u),this._viewMatrix[12]=m[0],this._viewMatrix[13]=m[1],this._viewMatrix[14]=m[2],oe.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var Vg=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}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(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new ms(t)}}reset(){this.offset=0}getOffset(){return this.offset}},Kg=4,Lu=0,Nu=1,$g=2;function dn(e){let t=e.length;for(;--t>=0;)e[t]=0}var Xg=0,bd=1,Yg=2,jg=3,Zg=258,Es=29,si=256,Jn=si+1+Es,on=30,bs=19,Td=2*Jn+1,Ut=15,Ja=16,qg=7,Ts=256,Md=16,Rd=17,zd=18,hs=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]),rr=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]),Jg=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Ld=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Qg=512,mt=new Array((Jn+2)*2);dn(mt);var jn=new Array(on*2);dn(jn);var Qn=new Array(Qg);dn(Qn);var ei=new Array(Zg-jg+1);dn(ei);var Ms=new Array(Es);dn(Ms);var ar=new Array(on);dn(ar);function Qa(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var Nd,Od,Id;function es(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var Cd=e=>e<256?Qn[e]:Qn[256+(e>>>7)],ti=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ne=(e,t,n)=>{e.bi_valid>Ja-n?(e.bi_buf|=t<<e.bi_valid&65535,ti(e,e.bi_buf),e.bi_buf=t>>Ja-e.bi_valid,e.bi_valid+=n-Ja):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},et=(e,t,n)=>{Ne(e,n[t*2],n[t*2+1])},Pd=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},ev=e=>{e.bi_valid===16?(ti(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)},tv=(e,t)=>{let n=t.dyn_tree,i=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,u=t.stat_desc.max_length,c,d,f,m,_,g,A=0;for(m=0;m<=Ut;m++)e.bl_count[m]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<Td;c++)d=e.heap[c],m=n[n[d*2+1]*2+1]+1,m>u&&(m=u,A++),n[d*2+1]=m,!(d>i)&&(e.bl_count[m]++,_=0,d>=o&&(_=s[d-o]),g=n[d*2],e.opt_len+=g*(m+_),a&&(e.static_len+=g*(r[d*2+1]+_)));if(A!==0){do{for(m=u-1;e.bl_count[m]===0;)m--;e.bl_count[m]--,e.bl_count[m+1]+=2,e.bl_count[u]--,A-=2}while(A>0);for(m=u;m!==0;m--)for(d=e.bl_count[m];d!==0;)f=e.heap[--c],!(f>i)&&(n[f*2+1]!==m&&(e.opt_len+=(m-n[f*2+1])*n[f*2],n[f*2+1]=m),d--)}},Fd=(e,t,n)=>{let i=new Array(Ut+1),r=0,a,s;for(a=1;a<=Ut;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=Pd(i[o]++,o))}},nv=()=>{let e,t,n,i,r,a=new Array(Ut+1);for(n=0,i=0;i<Es-1;i++)for(Ms[i]=n,e=0;e<1<<hs[i];e++)ei[n++]=i;for(ei[n-1]=i,r=0,i=0;i<16;i++)for(ar[i]=r,e=0;e<1<<rr[i];e++)Qn[r++]=i;for(r>>=7;i<on;i++)for(ar[i]=r<<7,e=0;e<1<<rr[i]-7;e++)Qn[256+r++]=i;for(t=0;t<=Ut;t++)a[t]=0;for(e=0;e<=143;)mt[e*2+1]=8,e++,a[8]++;for(;e<=255;)mt[e*2+1]=9,e++,a[9]++;for(;e<=279;)mt[e*2+1]=7,e++,a[7]++;for(;e<=287;)mt[e*2+1]=8,e++,a[8]++;for(Fd(mt,Jn+1,a),e=0;e<on;e++)jn[e*2+1]=5,jn[e*2]=Pd(e,5);Nd=new Qa(mt,hs,si+1,Jn,Ut),Od=new Qa(jn,rr,0,on,Ut),Id=new Qa(new Array(0),Jg,0,bs,qg)},Dd=e=>{let t;for(t=0;t<Jn;t++)e.dyn_ltree[t*2]=0;for(t=0;t<on;t++)e.dyn_dtree[t*2]=0;for(t=0;t<bs;t++)e.bl_tree[t*2]=0;e.dyn_ltree[Ts*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Ud=e=>{e.bi_valid>8?ti(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Ou=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},ts=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&Ou(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!Ou(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},Iu=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?et(e,r,t):(s=ei[r],et(e,s+si+1,t),o=hs[s],o!==0&&(r-=Ms[s],Ne(e,r,o)),i--,s=Cd(i),et(e,s,n),o=rr[s],o!==0&&(i-=ar[s],Ne(e,i,o)));while(a<e.sym_next);et(e,Ts,t)},_s=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,u=-1,c;for(e.heap_len=0,e.heap_max=Td,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=u=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=u<2?++u:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=u,s=e.heap_len>>1;s>=1;s--)ts(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],ts(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,ts(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],tv(e,t),Fd(n,u,e.bl_count)},Cu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[Md*2]++):o<=10?e.bl_tree[Rd*2]++:e.bl_tree[zd*2]++,o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4))},Pu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)){if(o<c)do et(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(et(e,a,e.bl_tree),o--),et(e,Md,e.bl_tree),Ne(e,o-3,2)):o<=10?(et(e,Rd,e.bl_tree),Ne(e,o-3,3)):(et(e,zd,e.bl_tree),Ne(e,o-11,7));o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4)}},iv=e=>{let t;for(Cu(e,e.dyn_ltree,e.l_desc.max_code),Cu(e,e.dyn_dtree,e.d_desc.max_code),_s(e,e.bl_desc),t=bs-1;t>=3&&e.bl_tree[Ld[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},rv=(e,t,n,i)=>{let r;for(Ne(e,t-257,5),Ne(e,n-1,5),Ne(e,i-4,4),r=0;r<i;r++)Ne(e,e.bl_tree[Ld[r]*2+1],3);Pu(e,e.dyn_ltree,t-1),Pu(e,e.dyn_dtree,n-1)},av=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return Lu;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return Nu;for(n=32;n<si;n++)if(e.dyn_ltree[n*2]!==0)return Nu;return Lu},Fu=!1,sv=e=>{Fu||(nv(),Fu=!0),e.l_desc=new es(e.dyn_ltree,Nd),e.d_desc=new es(e.dyn_dtree,Od),e.bl_desc=new es(e.bl_tree,Id),e.bi_buf=0,e.bi_valid=0,Dd(e)},Bd=(e,t,n,i)=>{Ne(e,(Xg<<1)+(i?1:0),3),Ud(e),ti(e,n),ti(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},ov=e=>{Ne(e,bd<<1,3),et(e,Ts,mt),ev(e)},cv=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===$g&&(e.strm.data_type=av(e)),_s(e,e.l_desc),_s(e,e.d_desc),s=iv(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?Bd(e,t,n,i):e.strategy===Kg||a===r?(Ne(e,(bd<<1)+(i?1:0),3),Iu(e,mt,jn)):(Ne(e,(Yg<<1)+(i?1:0),3),rv(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),Iu(e,e.dyn_ltree,e.dyn_dtree)),Dd(e),i&&Ud(e)},uv=(e,t,n)=>(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++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(ei[n]+si+1)*2]++,e.dyn_dtree[Cd(t)*2]++),e.sym_next===e.sym_end),dv=sv,lv=Bd,mv=cv,fv=uv,hv=ov,_v={_tr_init:dv,_tr_stored_block:lv,_tr_flush_block:mv,_tr_tally:fv,_tr_align:hv},gv=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},ni=gv,vv=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},pv=new Uint32Array(vv()),yv=(e,t,n,i)=>{let r=pv,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},ke=yv,Ht={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"},Kt={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:wv,_tr_stored_block:gs,_tr_flush_block:Sv,_tr_tally:kt,_tr_align:Av}=_v,{Z_NO_FLUSH:xt,Z_PARTIAL_FLUSH:kv,Z_FULL_FLUSH:xv,Z_FINISH:He,Z_BLOCK:Du,Z_OK:be,Z_STREAM_END:Uu,Z_STREAM_ERROR:tt,Z_DATA_ERROR:Ev,Z_BUF_ERROR:ns,Z_DEFAULT_COMPRESSION:bv,Z_FILTERED:Tv,Z_HUFFMAN_ONLY:Qi,Z_RLE:Mv,Z_FIXED:Rv,Z_DEFAULT_STRATEGY:zv,Z_UNKNOWN:Lv,Z_DEFLATED:pr}=Kt,Nv=9,Ov=15,Iv=8,Cv=29,Pv=256,vs=Pv+1+Cv,Fv=30,Dv=19,Uv=2*vs+1,Bv=15,q=3,At=258,nt=At+q+1,Gv=32,cn=42,Rs=57,ps=69,ys=73,ws=91,Ss=103,Bt=113,Xn=666,Re=1,ln=2,Wt=3,mn=4,Hv=3,Gt=(e,t)=>(e.msg=Ht[t],t),Bu=e=>e*2-(e>4?9:0),St=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Wv=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},Vv=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,Et=Vv,Ce=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Pe=(e,t)=>{Sv(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ce(e.strm)},Q=(e,t)=>{e.pending_buf[e.pending++]=t},$n=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},As=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=ni(e.adler,t,r,n):e.state.wrap===2&&(e.adler=ke(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},Gd=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-nt?e.strstart-(e.w_size-nt):0,c=e.window,d=e.w_mask,f=e.prev,m=e.strstart+At,_=c[i+s-1],g=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==g||c[r+s-1]!==_||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&i<m);if(a=At-(m-i),i=m-At,a>s){if(e.match_start=t,s=a,a>=o)break;_=c[i+s-1],g=c[i+s]}}while((t=f[t&d])>u&&--n!==0);return s<=e.lookahead?s:e.lookahead},un=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-nt)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Wv(e),i+=t),e.strm.avail_in===0)break;if(n=As(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=q)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=Et(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=Et(e,e.ins_h,e.window[r+q-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<q)););}while(e.lookahead<nt&&e.strm.avail_in!==0)},Hd=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==He||t===xt||i!==r+e.strm.avail_in)))break;s=t===He&&i===r+e.strm.avail_in?1:0,gs(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Ce(e.strm),r&&(r>i&&(r=i),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,i-=r),i&&(As(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}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?mn:t!==xt&&t!==He&&e.strm.avail_in===0&&e.strstart===e.block_start?ln:(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&&(As(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,n=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=n||(r||t===He)&&t!==xt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===He&&e.strm.avail_in===0&&i===r?1:0,gs(e,e.block_start,i,s),e.block_start+=i,Ce(e.strm)),s?Wt:Re)},is=(e,t)=>{let n,i;for(;;){if(e.lookahead<nt){if(un(e),e.lookahead<nt&&t===xt)return Re;if(e.lookahead===0)break}if(n=0,e.lookahead>=q&&(e.ins_h=Et(e,e.ins_h,e.window[e.strstart+q-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-nt&&(e.match_length=Gd(e,n)),e.match_length>=q)if(i=kt(e,e.strstart-e.match_start,e.match_length-q),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=q){e.match_length--;do e.strstart++,e.ins_h=Et(e,e.ins_h,e.window[e.strstart+q-1]),n=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=Et(e,e.ins_h,e.window[e.strstart+1]);else i=kt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Pe(e,!1),e.strm.avail_out===0))return Re}return e.insert=e.strstart<q-1?e.strstart:q-1,t===He?(Pe(e,!0),e.strm.avail_out===0?Wt:mn):e.sym_next&&(Pe(e,!1),e.strm.avail_out===0)?Re:ln},rn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<nt){if(un(e),e.lookahead<nt&&t===xt)return Re;if(e.lookahead===0)break}if(n=0,e.lookahead>=q&&(e.ins_h=Et(e,e.ins_h,e.window[e.strstart+q-1]),n=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=q-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-nt&&(e.match_length=Gd(e,n),e.match_length<=5&&(e.strategy===Tv||e.match_length===q&&e.strstart-e.match_start>4096)&&(e.match_length=q-1)),e.prev_length>=q&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-q,i=kt(e,e.strstart-1-e.prev_match,e.prev_length-q),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=Et(e,e.ins_h,e.window[e.strstart+q-1]),n=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=q-1,e.strstart++,i&&(Pe(e,!1),e.strm.avail_out===0))return Re}else if(e.match_available){if(i=kt(e,0,e.window[e.strstart-1]),i&&Pe(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Re}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=kt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<q-1?e.strstart:q-1,t===He?(Pe(e,!0),e.strm.avail_out===0?Wt:mn):e.sym_next&&(Pe(e,!1),e.strm.avail_out===0)?Re:ln},Kv=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=At){if(un(e),e.lookahead<=At&&t===xt)return Re;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=q&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+At;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=At-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=q?(n=kt(e,1,e.match_length-q),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=kt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Pe(e,!1),e.strm.avail_out===0))return Re}return e.insert=0,t===He?(Pe(e,!0),e.strm.avail_out===0?Wt:mn):e.sym_next&&(Pe(e,!1),e.strm.avail_out===0)?Re:ln},$v=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(un(e),e.lookahead===0)){if(t===xt)return Re;break}if(e.match_length=0,n=kt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Pe(e,!1),e.strm.avail_out===0))return Re}return e.insert=0,t===He?(Pe(e,!0),e.strm.avail_out===0?Wt:mn):e.sym_next&&(Pe(e,!1),e.strm.avail_out===0)?Re:ln};function Qe(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var Yn=[new Qe(0,0,0,0,Hd),new Qe(4,4,8,4,is),new Qe(4,5,16,8,is),new Qe(4,6,32,32,is),new Qe(4,4,16,16,rn),new Qe(8,16,32,32,rn),new Qe(8,16,128,128,rn),new Qe(8,32,128,256,rn),new Qe(32,128,258,1024,rn),new Qe(32,258,258,4096,rn)],Xv=e=>{e.window_size=2*e.w_size,St(e.head),e.max_lazy_match=Yn[e.level].max_lazy,e.good_match=Yn[e.level].good_length,e.nice_match=Yn[e.level].nice_length,e.max_chain_length=Yn[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=q-1,e.match_available=0,e.ins_h=0};function Yv(){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=pr,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(Uv*2),this.dyn_dtree=new Uint16Array((2*Fv+1)*2),this.bl_tree=new Uint16Array((2*Dv+1)*2),St(this.dyn_ltree),St(this.dyn_dtree),St(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Bv+1),this.heap=new Uint16Array(2*vs+1),St(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*vs+1),St(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 oi=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==cn&&t.status!==Rs&&t.status!==ps&&t.status!==ys&&t.status!==ws&&t.status!==Ss&&t.status!==Bt&&t.status!==Xn?1:0},Wd=e=>{if(oi(e))return Gt(e,tt);e.total_in=e.total_out=0,e.data_type=Lv;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Rs:t.wrap?cn:Bt,e.adler=t.wrap===2?0:1,t.last_flush=-2,wv(t),be},Vd=e=>{let t=Wd(e);return t===be&&Xv(e.state),t},jv=(e,t)=>oi(e)||e.state.wrap!==2?tt:(e.state.gzhead=t,be),Kd=(e,t,n,i,r,a)=>{if(!e)return tt;let s=1;if(t===bv&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>Nv||n!==pr||i<8||i>15||t<0||t>9||a<0||a>Rv||i===8&&s!==1)return Gt(e,tt);i===8&&(i=9);let o=new Yv;return e.state=o,o.strm=e,o.status=cn,o.wrap=s,o.gzhead=null,o.w_bits=i,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+q-1)/q),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=n,Vd(e)},Zv=(e,t)=>Kd(e,t,pr,Ov,Iv,zv),qv=(e,t)=>{if(oi(e)||t>Du||t<0)return e?Gt(e,tt):tt;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Xn&&t!==He)return Gt(e,e.avail_out===0?ns:tt);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Ce(e),e.avail_out===0)return n.last_flush=-1,be}else if(e.avail_in===0&&Bu(t)<=Bu(i)&&t!==He)return Gt(e,ns);if(n.status===Xn&&e.avail_in!==0)return Gt(e,ns);if(n.status===cn&&n.wrap===0&&(n.status=Bt),n.status===cn){let r=pr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Qi||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=Gv),r+=31-r%31,$n(n,r),n.strstart!==0&&($n(n,e.adler>>>16),$n(n,e.adler&65535)),e.adler=1,n.status=Bt,Ce(e),n.pending!==0)return n.last_flush=-1,be}if(n.status===Rs){if(e.adler=0,Q(n,31),Q(n,139),Q(n,8),n.gzhead)Q(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Q(n,n.gzhead.time&255),Q(n,n.gzhead.time>>8&255),Q(n,n.gzhead.time>>16&255),Q(n,n.gzhead.time>>24&255),Q(n,n.level===9?2:n.strategy>=Qi||n.level<2?4:0),Q(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Q(n,n.gzhead.extra.length&255),Q(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=ke(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=ps;else if(Q(n,0),Q(n,0),Q(n,0),Q(n,0),Q(n,0),Q(n,n.level===9?2:n.strategy>=Qi||n.level<2?4:0),Q(n,Hv),n.status=Bt,Ce(e),n.pending!==0)return n.last_flush=-1,be}if(n.status===ps){if(n.gzhead.extra){let r=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,Ce(e),n.pending!==0)return n.last_flush=-1,be;r=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=ys}if(n.status===ys){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),Ce(e),n.pending!==0)return n.last_flush=-1,be;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,Q(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=ws}if(n.status===ws){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r)),Ce(e),n.pending!==0)return n.last_flush=-1,be;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,Q(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=ke(e.adler,n.pending_buf,n.pending-r,r))}n.status=Ss}if(n.status===Ss){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ce(e),n.pending!==0))return n.last_flush=-1,be;Q(n,e.adler&255),Q(n,e.adler>>8&255),e.adler=0}if(n.status=Bt,Ce(e),n.pending!==0)return n.last_flush=-1,be}if(e.avail_in!==0||n.lookahead!==0||t!==xt&&n.status!==Xn){let r=n.level===0?Hd(n,t):n.strategy===Qi?$v(n,t):n.strategy===Mv?Kv(n,t):Yn[n.level].func(n,t);if((r===Wt||r===mn)&&(n.status=Xn),r===Re||r===Wt)return e.avail_out===0&&(n.last_flush=-1),be;if(r===ln&&(t===kv?Av(n):t!==Du&&(gs(n,0,0,!1),t===xv&&(St(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Ce(e),e.avail_out===0))return n.last_flush=-1,be}return t!==He?be:n.wrap<=0?Uu:(n.wrap===2?(Q(n,e.adler&255),Q(n,e.adler>>8&255),Q(n,e.adler>>16&255),Q(n,e.adler>>24&255),Q(n,e.total_in&255),Q(n,e.total_in>>8&255),Q(n,e.total_in>>16&255),Q(n,e.total_in>>24&255)):($n(n,e.adler>>>16),$n(n,e.adler&65535)),Ce(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?be:Uu)},Jv=e=>{if(oi(e))return tt;let t=e.state.status;return e.state=null,t===Bt?Gt(e,Ev):be},Qv=(e,t)=>{let n=t.length;if(oi(e))return tt;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==cn||i.lookahead)return tt;if(r===1&&(e.adler=ni(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(St(i.head),i.strstart=0,i.block_start=0,i.insert=0);let u=new Uint8Array(i.w_size);u.set(t.subarray(n-i.w_size,n),0),t=u,n=i.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,un(i);i.lookahead>=q;){let u=i.strstart,c=i.lookahead-(q-1);do i.ins_h=Et(i,i.ins_h,i.window[u+q-1]),i.prev[u&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=u,u++;while(--c);i.strstart=u,i.lookahead=q-1,un(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=q-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,be},ep=Zv,tp=Kd,np=Vd,ip=Wd,rp=jv,ap=qv,sp=Jv,op=Qv,cp="pako deflate (from Nodeca project)",Zn={deflateInit:ep,deflateInit2:tp,deflateReset:np,deflateResetKeep:ip,deflateSetHeader:rp,deflate:ap,deflateEnd:sp,deflateSetDictionary:op,deflateInfo:cp},up=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),dp=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let i in n)up(n,i)&&(e[i]=n[i])}}return e},lp=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},yr={assign:dp,flattenChunks:lp},$d=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{$d=!1}var ii=new Uint8Array(256);for(let e=0;e<256;e++)ii[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ii[254]=ii[254]=1;var mp=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},fp=(e,t)=>{if(t<65534&&e.subarray&&$d)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},hp=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=ii[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&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 fp(a,r)},_p=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+ii[e[n]]>t?n:t},ri={string2buf:mp,buf2string:hp,utf8border:_p};function gp(){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 Xd=gp,Yd=Object.prototype.toString,{Z_NO_FLUSH:vp,Z_SYNC_FLUSH:pp,Z_FULL_FLUSH:yp,Z_FINISH:wp,Z_OK:sr,Z_STREAM_END:Sp,Z_DEFAULT_COMPRESSION:Ap,Z_DEFAULT_STRATEGY:kp,Z_DEFLATED:xp}=Kt;function ci(e){this.options=yr.assign({level:Ap,method:xp,chunkSize:16384,windowBits:15,memLevel:8,strategy:kp},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 Xd,this.strm.avail_out=0;let n=Zn.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==sr)throw new Error(Ht[n]);if(t.header&&Zn.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=ri.string2buf(t.dictionary):Yd.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=Zn.deflateSetDictionary(this.strm,i),n!==sr)throw new Error(Ht[n]);this._dict_set=!0}}ci.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?wp:vp,typeof e=="string"?n.input=ri.string2buf(e):Yd.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a===pp||a===yp)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=Zn.deflate(n,a),r===Sp)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=Zn.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===sr;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};ci.prototype.onData=function(e){this.chunks.push(e)};ci.prototype.onEnd=function(e){e===sr&&(this.result=yr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function zs(e,t){let n=new ci(t);if(n.push(e,!0),n.err)throw n.msg||Ht[n.err];return n.result}function Ep(e,t){return t=t||{},t.raw=!0,zs(e,t)}function bp(e,t){return t=t||{},t.gzip=!0,zs(e,t)}var Tp=ci,Mp=zs,Rp=Ep,zp=bp,Lp=Kt,Np={Deflate:Tp,deflate:Mp,deflateRaw:Rp,gzip:zp,constants:Lp},er=16209,Op=16191,Ip=function(t,n){let i,r,a,s,o,u,c,d,f,m,_,g,A,v,S,b,x,p,w,T,E,z,O,R,y=t.state;i=t.next_in,O=t.input,r=i+(t.avail_in-5),a=t.next_out,R=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),u=y.dmax,c=y.wsize,d=y.whave,f=y.wnext,m=y.window,_=y.hold,g=y.bits,A=y.lencode,v=y.distcode,S=(1<<y.lenbits)-1,b=(1<<y.distbits)-1;e:do{g<15&&(_+=O[i++]<<g,g+=8,_+=O[i++]<<g,g+=8),x=A[_&S];t:for(;;){if(p=x>>>24,_>>>=p,g-=p,p=x>>>16&255,p===0)R[a++]=x&65535;else if(p&16){w=x&65535,p&=15,p&&(g<p&&(_+=O[i++]<<g,g+=8),w+=_&(1<<p)-1,_>>>=p,g-=p),g<15&&(_+=O[i++]<<g,g+=8,_+=O[i++]<<g,g+=8),x=v[_&b];n:for(;;){if(p=x>>>24,_>>>=p,g-=p,p=x>>>16&255,p&16){if(T=x&65535,p&=15,g<p&&(_+=O[i++]<<g,g+=8,g<p&&(_+=O[i++]<<g,g+=8)),T+=_&(1<<p)-1,T>u){t.msg="invalid distance too far back",y.mode=er;break e}if(_>>>=p,g-=p,p=a-s,T>p){if(p=T-p,p>d&&y.sane){t.msg="invalid distance too far back",y.mode=er;break e}if(E=0,z=m,f===0){if(E+=c-p,p<w){w-=p;do R[a++]=m[E++];while(--p);E=a-T,z=R}}else if(f<p){if(E+=c+f-p,p-=f,p<w){w-=p;do R[a++]=m[E++];while(--p);if(E=0,f<w){p=f,w-=p;do R[a++]=m[E++];while(--p);E=a-T,z=R}}}else if(E+=f-p,p<w){w-=p;do R[a++]=m[E++];while(--p);E=a-T,z=R}for(;w>2;)R[a++]=z[E++],R[a++]=z[E++],R[a++]=z[E++],w-=3;w&&(R[a++]=z[E++],w>1&&(R[a++]=z[E++]))}else{E=a-T;do R[a++]=R[E++],R[a++]=R[E++],R[a++]=R[E++],w-=3;while(w>2);w&&(R[a++]=R[E++],w>1&&(R[a++]=R[E++]))}}else if((p&64)===0){x=v[(x&65535)+(_&(1<<p)-1)];continue n}else{t.msg="invalid distance code",y.mode=er;break e}break}}else if((p&64)===0){x=A[(x&65535)+(_&(1<<p)-1)];continue t}else if(p&32){y.mode=Op;break e}else{t.msg="invalid literal/length code",y.mode=er;break e}break}}while(i<r&&a<o);w=g>>3,i-=w,g-=w<<3,_&=(1<<g)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),y.hold=_,y.bits=g},an=15,Gu=852,Hu=592,Wu=0,rs=1,Vu=2,Cp=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]),Pp=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]),Fp=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]),Dp=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]),Up=(e,t,n,i,r,a,s,o)=>{let u=o.bits,c=0,d=0,f=0,m=0,_=0,g=0,A=0,v=0,S=0,b=0,x,p,w,T,E,z=null,O,R=new Uint16Array(an+1),y=new Uint16Array(an+1),L=null,P,X,le;for(c=0;c<=an;c++)R[c]=0;for(d=0;d<i;d++)R[t[n+d]]++;for(_=u,m=an;m>=1&&R[m]===0;m--);if(_>m&&(_=m),m===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(f=1;f<m&&R[f]===0;f++);for(_<f&&(_=f),v=1,c=1;c<=an;c++)if(v<<=1,v-=R[c],v<0)return-1;if(v>0&&(e===Wu||m!==1))return-1;for(y[1]=0,c=1;c<an;c++)y[c+1]=y[c]+R[c];for(d=0;d<i;d++)t[n+d]!==0&&(s[y[t[n+d]]++]=d);if(e===Wu?(z=L=s,O=20):e===rs?(z=Cp,L=Pp,O=257):(z=Fp,L=Dp,O=0),b=0,d=0,c=f,E=a,g=_,A=0,w=-1,S=1<<_,T=S-1,e===rs&&S>Gu||e===Vu&&S>Hu)return 1;for(;;){P=c-A,s[d]+1<O?(X=0,le=s[d]):s[d]>=O?(X=L[s[d]-O],le=z[s[d]-O]):(X=96,le=0),x=1<<c-A,p=1<<g,f=p;do p-=x,r[E+(b>>A)+p]=P<<24|X<<16|le|0;while(p!==0);for(x=1<<c-1;b&x;)x>>=1;if(x!==0?(b&=x-1,b+=x):b=0,d++,--R[c]===0){if(c===m)break;c=t[n+s[d]]}if(c>_&&(b&T)!==w){for(A===0&&(A=_),E+=f,g=c-A,v=1<<g;g+A<m&&(v-=R[g+A],!(v<=0));)g++,v<<=1;if(S+=1<<g,e===rs&&S>Gu||e===Vu&&S>Hu)return 1;w=b&T,r[w]=_<<24|g<<16|E-a|0}}return b!==0&&(r[E+b]=c-A<<24|64<<16|0),o.bits=_,0},qn=Up,Bp=0,jd=1,Zd=2,{Z_FINISH:Ku,Z_BLOCK:Gp,Z_TREES:tr,Z_OK:Vt,Z_STREAM_END:Hp,Z_NEED_DICT:Wp,Z_STREAM_ERROR:We,Z_DATA_ERROR:qd,Z_MEM_ERROR:Jd,Z_BUF_ERROR:Vp,Z_DEFLATED:$u}=Kt,wr=16180,Xu=16181,Yu=16182,ju=16183,Zu=16184,qu=16185,Ju=16186,Qu=16187,ed=16188,td=16189,or=16190,lt=16191,as=16192,nd=16193,ss=16194,id=16195,rd=16196,ad=16197,sd=16198,nr=16199,ir=16200,od=16201,cd=16202,ud=16203,dd=16204,ld=16205,os=16206,md=16207,fd=16208,de=16209,Qd=16210,el=16211,Kp=852,$p=592,Xp=15,Yp=Xp,hd=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function jp(){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 $t=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<wr||t.mode>el?1:0},tl=e=>{if($t(e))return We;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=wr,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(Kp),t.distcode=t.distdyn=new Int32Array($p),t.sane=1,t.back=-1,Vt},nl=e=>{if($t(e))return We;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,tl(e)},il=(e,t)=>{let n;if($t(e))return We;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?We:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,nl(e))},rl=(e,t)=>{if(!e)return We;let n=new jp;e.state=n,n.strm=e,n.window=null,n.mode=wr;let i=il(e,t);return i!==Vt&&(e.state=null),i},Zp=e=>rl(e,Yp),_d=!0,cs,us,qp=e=>{if(_d){cs=new Int32Array(512),us=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(qn(jd,e.lens,0,288,cs,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;qn(Zd,e.lens,0,32,us,0,e.work,{bits:5}),_d=!1}e.lencode=cs,e.lenbits=9,e.distcode=us,e.distbits=5},al=(e,t,n,i)=>{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)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},Jp=(e,t)=>{let n,i,r,a,s,o,u,c,d,f,m,_,g,A,v=0,S,b,x,p,w,T,E,z,O=new Uint8Array(4),R,y,L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if($t(e)||!e.output||!e.input&&e.avail_in!==0)return We;n=e.state,n.mode===lt&&(n.mode=as),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,d=n.bits,f=o,m=u,z=Vt;e:for(;;)switch(n.mode){case wr:if(n.wrap===0){n.mode=as;break}for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,O[0]=c&255,O[1]=c>>>8&255,n.check=ke(n.check,O,2,0),c=0,d=0,n.mode=Xu;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=de;break}if((c&15)!==$u){e.msg="unknown compression method",n.mode=de;break}if(c>>>=4,d-=4,E=(c&15)+8,n.wbits===0&&(n.wbits=E),E>15||E>n.wbits){e.msg="invalid window size",n.mode=de;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?td:lt,c=0,d=0;break;case Xu:for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.flags=c,(n.flags&255)!==$u){e.msg="unknown compression method",n.mode=de;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=de;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=ke(n.check,O,2,0)),c=0,d=0,n.mode=Yu;case Yu:for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,O[2]=c>>>16&255,O[3]=c>>>24&255,n.check=ke(n.check,O,4,0)),c=0,d=0,n.mode=ju;case ju:for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=ke(n.check,O,2,0)),c=0,d=0,n.mode=Zu;case Zu:if(n.flags&1024){for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=ke(n.check,O,2,0)),c=0,d=0}else n.head&&(n.head.extra=null);n.mode=qu;case qu:if(n.flags&1024&&(_=n.length,_>o&&(_=o),_&&(n.head&&(E=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+_),E)),n.flags&512&&n.wrap&4&&(n.check=ke(n.check,i,_,a)),o-=_,a+=_,n.length-=_),n.length))break e;n.length=0,n.mode=Ju;case Ju:if(n.flags&2048){if(o===0)break e;_=0;do E=i[a+_++],n.head&&E&&n.length<65536&&(n.head.name+=String.fromCharCode(E));while(E&&_<o);if(n.flags&512&&n.wrap&4&&(n.check=ke(n.check,i,_,a)),o-=_,a+=_,E)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Qu;case Qu:if(n.flags&4096){if(o===0)break e;_=0;do E=i[a+_++],n.head&&E&&n.length<65536&&(n.head.comment+=String.fromCharCode(E));while(E&&_<o);if(n.flags&512&&n.wrap&4&&(n.check=ke(n.check,i,_,a)),o-=_,a+=_,E)break e}else n.head&&(n.head.comment=null);n.mode=ed;case ed:if(n.flags&512){for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=de;break}c=0,d=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=lt;break;case td:for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}e.adler=n.check=hd(c),c=0,d=0,n.mode=or;case or:if(n.havedict===0)return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,Wp;e.adler=n.check=1,n.mode=lt;case lt:if(t===Gp||t===tr)break e;case as:if(n.last){c>>>=d&7,d-=d&7,n.mode=os;break}for(;d<3;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}switch(n.last=c&1,c>>>=1,d-=1,c&3){case 0:n.mode=nd;break;case 1:if(qp(n),n.mode=nr,t===tr){c>>>=2,d-=2;break e}break;case 2:n.mode=rd;break;case 3:e.msg="invalid block type",n.mode=de}c>>>=2,d-=2;break;case nd:for(c>>>=d&7,d-=d&7;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=de;break}if(n.length=c&65535,c=0,d=0,n.mode=ss,t===tr)break e;case ss:n.mode=id;case id:if(_=n.length,_){if(_>o&&(_=o),_>u&&(_=u),_===0)break e;r.set(i.subarray(a,a+_),s),o-=_,a+=_,u-=_,s+=_,n.length-=_;break}n.mode=lt;break;case rd:for(;d<14;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.nlen=(c&31)+257,c>>>=5,d-=5,n.ndist=(c&31)+1,c>>>=5,d-=5,n.ncode=(c&15)+4,c>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=de;break}n.have=0,n.mode=ad;case ad:for(;n.have<n.ncode;){for(;d<3;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.lens[L[n.have++]]=c&7,c>>>=3,d-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,R={bits:n.lenbits},z=qn(Bp,n.lens,0,19,n.lencode,0,n.work,R),n.lenbits=R.bits,z){e.msg="invalid code lengths set",n.mode=de;break}n.have=0,n.mode=sd;case sd:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],S=v>>>24,b=v>>>16&255,x=v&65535,!(S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(x<16)c>>>=S,d-=S,n.lens[n.have++]=x;else{if(x===16){for(y=S+2;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(c>>>=S,d-=S,n.have===0){e.msg="invalid bit length repeat",n.mode=de;break}E=n.lens[n.have-1],_=3+(c&3),c>>>=2,d-=2}else if(x===17){for(y=S+3;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=S,d-=S,E=0,_=3+(c&7),c>>>=3,d-=3}else{for(y=S+7;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=S,d-=S,E=0,_=11+(c&127),c>>>=7,d-=7}if(n.have+_>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=de;break}for(;_--;)n.lens[n.have++]=E}}if(n.mode===de)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=de;break}if(n.lenbits=9,R={bits:n.lenbits},z=qn(jd,n.lens,0,n.nlen,n.lencode,0,n.work,R),n.lenbits=R.bits,z){e.msg="invalid literal/lengths set",n.mode=de;break}if(n.distbits=6,n.distcode=n.distdyn,R={bits:n.distbits},z=qn(Zd,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,R),n.distbits=R.bits,z){e.msg="invalid distances set",n.mode=de;break}if(n.mode=nr,t===tr)break e;case nr:n.mode=ir;case ir:if(o>=6&&u>=258){e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,Ip(e,m),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,d=n.bits,n.mode===lt&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],S=v>>>24,b=v>>>16&255,x=v&65535,!(S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(b&&(b&240)===0){for(p=S,w=b,T=x;v=n.lencode[T+((c&(1<<p+w)-1)>>p)],S=v>>>24,b=v>>>16&255,x=v&65535,!(p+S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=p,d-=p,n.back+=p}if(c>>>=S,d-=S,n.back+=S,n.length=x,b===0){n.mode=ld;break}if(b&32){n.back=-1,n.mode=lt;break}if(b&64){e.msg="invalid literal/length code",n.mode=de;break}n.extra=b&15,n.mode=od;case od:if(n.extra){for(y=n.extra;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=cd;case cd:for(;v=n.distcode[c&(1<<n.distbits)-1],S=v>>>24,b=v>>>16&255,x=v&65535,!(S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if((b&240)===0){for(p=S,w=b,T=x;v=n.distcode[T+((c&(1<<p+w)-1)>>p)],S=v>>>24,b=v>>>16&255,x=v&65535,!(p+S<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=p,d-=p,n.back+=p}if(c>>>=S,d-=S,n.back+=S,b&64){e.msg="invalid distance code",n.mode=de;break}n.offset=x,n.extra=b&15,n.mode=ud;case ud:if(n.extra){for(y=n.extra;d<y;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=de;break}n.mode=dd;case dd:if(u===0)break e;if(_=m-u,n.offset>_){if(_=n.offset-_,_>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=de;break}_>n.wnext?(_-=n.wnext,g=n.wsize-_):g=n.wnext-_,_>n.length&&(_=n.length),A=n.window}else A=r,g=s-n.offset,_=n.length;_>u&&(_=u),u-=_,n.length-=_;do r[s++]=A[g++];while(--_);n.length===0&&(n.mode=ir);break;case ld:if(u===0)break e;r[s++]=n.length,u--,n.mode=ir;break;case os:if(n.wrap){for(;d<32;){if(o===0)break e;o--,c|=i[a++]<<d,d+=8}if(m-=u,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?ke(n.check,r,m,s-m):ni(n.check,r,m,s-m)),m=u,n.wrap&4&&(n.flags?c:hd(c))!==n.check){e.msg="incorrect data check",n.mode=de;break}c=0,d=0}n.mode=md;case md:if(n.wrap&&n.flags){for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=de;break}c=0,d=0}n.mode=fd;case fd:z=Hp;break e;case de:z=qd;break e;case Qd:return Jd;case el:default:return We}return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,(n.wsize||m!==e.avail_out&&n.mode<de&&(n.mode<os||t!==Ku))&&al(e,e.output,e.next_out,m-e.avail_out),f-=e.avail_in,m-=e.avail_out,e.total_in+=f,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?ke(n.check,r,m,e.next_out-m):ni(n.check,r,m,e.next_out-m)),e.data_type=n.bits+(n.last?64:0)+(n.mode===lt?128:0)+(n.mode===nr||n.mode===ss?256:0),(f===0&&m===0||t===Ku)&&z===Vt&&(z=Vp),z},Qp=e=>{if($t(e))return We;let t=e.state;return t.window&&(t.window=null),e.state=null,Vt},ey=(e,t)=>{if($t(e))return We;let n=e.state;return(n.wrap&2)===0?We:(n.head=t,t.done=!1,Vt)},ty=(e,t)=>{let n=t.length,i,r,a;return $t(e)||(i=e.state,i.wrap!==0&&i.mode!==or)?We:i.mode===or&&(r=1,r=ni(r,t,n,0),r!==i.check)?qd:(a=al(e,t,n,n),a?(i.mode=Qd,Jd):(i.havedict=1,Vt))},ny=nl,iy=il,ry=tl,ay=Zp,sy=rl,oy=Jp,cy=Qp,uy=ey,dy=ty,ly="pako inflate (from Nodeca project)",ft={inflateReset:ny,inflateReset2:iy,inflateResetKeep:ry,inflateInit:ay,inflateInit2:sy,inflate:oy,inflateEnd:cy,inflateGetHeader:uy,inflateSetDictionary:dy,inflateInfo:ly};function my(){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 fy=my,sl=Object.prototype.toString,{Z_NO_FLUSH:hy,Z_FINISH:_y,Z_OK:ai,Z_STREAM_END:ds,Z_NEED_DICT:ls,Z_STREAM_ERROR:gy,Z_DATA_ERROR:gd,Z_MEM_ERROR:vy}=Kt;function ui(e){this.options=yr.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 Xd,this.strm.avail_out=0;let n=ft.inflateInit2(this.strm,t.windowBits);if(n!==ai)throw new Error(Ht[n]);if(this.header=new fy,ft.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=ri.string2buf(t.dictionary):sl.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=ft.inflateSetDictionary(this.strm,t.dictionary),n!==ai)))throw new Error(Ht[n])}ui.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?_y:hy,sl.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),a=ft.inflate(n,s),a===ls&&r&&(a=ft.inflateSetDictionary(n,r),a===ai?a=ft.inflate(n,s):a===gd&&(a=ls));n.avail_in>0&&a===ds&&n.state.wrap>0&&e[n.next_in]!==0;)ft.inflateReset(n),a=ft.inflate(n,s);switch(a){case gy:case gd:case ls:case vy:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===ds))if(this.options.to==="string"){let u=ri.utf8border(n.output,n.next_out),c=n.next_out-u,d=ri.buf2string(n.output,u);n.next_out=c,n.avail_out=i-c,c&&n.output.set(n.output.subarray(u,u+c),0),this.onData(d)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===ai&&o===0)){if(a===ds)return a=ft.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};ui.prototype.onData=function(e){this.chunks.push(e)};ui.prototype.onEnd=function(e){e===ai&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=yr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Ls(e,t){let n=new ui(t);if(n.push(e),n.err)throw n.msg||Ht[n.err];return n.result}function py(e,t){return t=t||{},t.raw=!0,Ls(e,t)}var yy=ui,wy=Ls,Sy=py,Ay=Ls,ky=Kt,xy={Inflate:yy,inflate:wy,inflateRaw:Sy,ungzip:Ay,constants:ky},{Deflate:Ey,deflate:by,deflateRaw:Ty,gzip:My}=Np,{Inflate:Ry,inflate:zy,inflateRaw:Ly,ungzip:Ny}=xy,Oy=Ey,Iy=by,Cy=Ty,Py=My,Fy=Ry,Dy=zy,Uy=Ly,By=Ny,Gy=Kt,vd={Deflate:Oy,deflate:Iy,deflateRaw:Cy,gzip:Py,Inflate:Fy,inflate:Dy,inflateRaw:Uy,ungzip:By,constants:Gy},cr=2023,Ns=1,Os=2,Is=4,Cs=8,Ps=16,Fs=32,ol=64,Hy=128,Wy=256,Ds=512,Us=1024,Bs=2048,ur=4096,Gs=8192,dr=16384,Vy=32768,lr=65536,Hs=1<<17,mr=1<<18,fr=1<<19,Ws=1<<20,Vs=1<<21,Ks=1<<22,Ky=1<<23,$s=1<<24,hr=1<<25,Xs=1<<26,Ys=1<<27,js=1<<28,Zs=1<<29,qs=1<<30,$y=-2147483648,Js=1,Qs=2,eo=4,Xy=1,Yy=2,jy=128,sn=()=>({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}),pd=()=>({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}),to=class cl{constructor(t,n){this.protocolVersion=0,this.isDemo=Xy,this.stream=t,this.handler=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}translateCommand(t){return this.protocolVersion===0&&(t===7||t===12)?j.serverdata:this.protocolVersion===cr?t:this.protocolVersion===34||this.protocolVersion===25?t<=j.frame?t:j.bad:(this.protocolVersion===0,t)}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case j.bad:return;case j.nop:break;case j.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case j.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case j.print:this.parsePrint();break;case j.serverdata:this.parseServerData();break;case j.configstring:this.parseConfigString();break;case j.spawnbaseline:this.parseSpawnBaseline();break;case j.centerprint:this.parseCenterPrint();break;case j.download:this.parseDownload();break;case j.frame:this.parseFrame();break;case j.packetentities:this.parsePacketEntities(!1);break;case j.deltapacketentities:this.parsePacketEntities(!0);break;case j.playerinfo:this.parsePlayerState();break;case j.stufftext:this.parseStuffText();break;case j.layout:this.parseLayout();break;case j.inventory:this.parseInventory();break;case j.sound:this.parseSound();break;case j.muzzleflash:this.parseMuzzleFlash();break;case j.muzzleflash2:this.parseMuzzleFlash2();break;case j.temp_entity:this.parseTempEntity();break;case j.splitclient:this.parseSplitClient();break;case j.configblast:this.parseConfigBlast();break;case j.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case j.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case j.damage:this.parseDamage();break;case j.locprint:this.parseLocPrint();break;case j.fog:this.parseFog();break;case j.waitingforplayers:this.parseWaitingForPlayers();break;case j.bot_chat:this.parseBotChat();break;case j.poi:this.parsePoi();break;case j.help_path:this.parseHelpPath();break;case j.muzzleflash3:this.parseMuzzleFlash3();break;case j.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}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===cr){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let u=0;u<o;u++)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,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=vd.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new ms(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: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=vd.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new ms(r.buffer),s=new cl(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let u={x:0,y:0,z:0};this.stream.readPos(u),o=u}this.handler&&this.handler.onSound(t,n,i,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let i=this.stream.readByte();t|=i<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,u=(r&64)!==0,c=(r&128)!==0;n.push({damage:s,health:o,armor:u,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,u,c;switch(t){case F.EXPLOSION1:case F.EXPLOSION2:case F.ROCKET_EXPLOSION:case F.GRENADE_EXPLOSION:case F.ROCKET_EXPLOSION_WATER:case F.GRENADE_EXPLOSION_WATER:case F.BFG_EXPLOSION:case F.BFG_BIGEXPLOSION:case F.BOSSTPORT:case F.PLASMA_EXPLOSION:case F.PLAIN_EXPLOSION:case F.CHAINFIST_SMOKE:case F.TRACKER_EXPLOSION:case F.TELEPORT_EFFECT:case F.DBALL_GOAL:case F.NUKEBLAST:case F.WIDOWSPLASH:case F.EXPLOSION1_BIG:case F.EXPLOSION1_NP:this.stream.readPos(n);break;case F.GUNSHOT:case F.BLOOD:case F.BLASTER:case F.SHOTGUN:case F.SPARKS:case F.BULLET_SPARKS:case F.SCREEN_SPARKS:case F.SHIELD_SPARKS:case F.BLASTER2:case F.FLECHETTE:case F.MOREBLOOD:case F.ELECTRIC_SPARKS:case F.HEATBEAM_SPARKS:case F.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case F.SPLASH:case F.LASER_SPARKS:case F.WELDING_SPARKS:case F.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case F.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case F.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case F.RAILTRAIL:case F.BUBBLETRAIL:case F.BFG_LASER:case F.DEBUGTRAIL:case F.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case F.PARASITE_ATTACK:case F.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case F.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case F.LIGHTNING:u=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case F.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case F.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case F.STEAM:let d=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),d!==-1&&this.stream.readLong();break;case F.WIDOWBEAMOUT:this.stream.readShort();case F.HEATBEAM:case F.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,u,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=sn();this.parseDelta(sn(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==j.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState();if(this.isDemo===jy){let u=this.stream.readByte();for(let c=0;c<u;c++)this.stream.readByte()}this.isDemo===Yy&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=pd(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&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)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&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()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:pd(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=sn();this.parseDelta(sn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&Hy&&(t|=this.stream.readByte()<<8),t&Vy&&(t|=this.stream.readByte()<<16),t&Ky&&(t|=this.stream.readByte()<<24);let n=0;t&$y&&(n=this.stream.readByte());let i;return t&Wy?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=i,n.bits=r,n.bitsHigh=a,r&Bs&&(n.modelindex=this.stream.readByte()),r&Ws&&(n.modelindex2=this.stream.readByte()),r&Vs&&(n.modelindex3=this.stream.readByte()),r&Ks&&(n.modelindex4=this.stream.readByte()),r&Ps&&(n.frame=this.stream.readByte()),r&Hs&&(n.frame=this.stream.readShort()),r&lr&&r&hr?n.skinnum=this.stream.readLong():r&lr?n.skinnum=this.stream.readByte():r&hr&&(n.skinnum=this.stream.readShort()),r&dr&&r&fr?n.effects=this.stream.readLong():r&dr?n.effects=this.stream.readByte():r&fr&&(n.effects=this.stream.readShort()),r&ur&&r&mr?n.renderfx=this.stream.readLong():r&ur?n.renderfx=this.stream.readByte():r&mr&&(n.renderfx=this.stream.readShort()),r&Ns&&(n.origin.x=this.stream.readCoord()),r&Os&&(n.origin.y=this.stream.readCoord()),r&Ds&&(n.origin.z=this.stream.readCoord()),r&Us&&(n.angles.x=this.stream.readAngle()),r&Is&&(n.angles.y=this.stream.readAngle()),r&Cs&&(n.angles.z=this.stream.readAngle()),r&$s&&this.stream.readPos(n.old_origin),r&Xs&&(n.sound=this.stream.readByte()),r&Fs?n.event=this.stream.readByte():n.event=0,r&Ys&&(n.solid=this.stream.readShort()),r&Gs&&(n.alpha=this.stream.readByte()/255),r&js&&(n.scale=this.stream.readFloat()),r&Zs&&(n.instanceBits=this.stream.readLong()),r&qs&&(n.loopVolume=this.stream.readByte()/255),a&Js&&(n.loopAttenuation=this.stream.readByte()/255),a&Qs&&(n.owner=this.stream.readShort()),a&eo&&(n.oldFrame=this.stream.readShort())}},no=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(no||{}),ul=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new Vg(e),this.state=0,this.accumulatedTime=0,this.currentProtocolVersion=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0}setFrameDuration(e){this.frameDuration=e}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}let n=new to(t.data,this.handler);n.setProtocolVersion(this.currentProtocolVersion),n.parseMessage(),this.currentProtocolVersion=n.getProtocolVersion(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var Zy=Object.defineProperty,dl=(e,t)=>{for(var n in t)Zy(e,n,{get:t[n],enumerable:!0})},Tt={x:0,y:0,z:0};var VL=Math.PI/180;function Sr(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function kr(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function li(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function qy(e){return li(e,e)}function xr(e){return Math.sqrt(qy(e))}function ll(e){let t=xr(e);return t===0?e:kr(e,1/t)}var ml=0,fl=1,hl=2,Jy=Math.PI/180,KL=180/Math.PI;function io(e,t){switch(t){case ml:return e.x;case fl:return e.y;case hl:default:return e.z}}function ro(e){return e*Jy}function hn(e){let t=e%360;return t<0?360+t:t}function Er(e){let t=ro(io(e,fl)),n=ro(io(e,ml)),i=ro(io(e,hl)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),d={x:o*a,y:o*r,z:-s},f={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},m={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:d,right:f,up:m}}var fn=[[-.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 rt=1,Mt=2;var oo=8,co=16,Qy=32;var ew=16384;var br=65536,_l=1<<17,tw=1<<18,nw=1<<19,iw=1<<20,rw=1<<21,aw=1<<22,sw=1<<23,$L=1<<24,Tr=1<<25,ow=1<<26,XL=1<<27,YL=1<<28,jL=1<<29,Mr=1<<30,ZL=1<<31;var qL=1<<25,JL=1<<28,QL=1<<29,eN=1<<30,tN=1<<31;var nN=rt|Mt,iN=rt|br|Mt|Tr|Mr,rN=rt|br|Mt,aN=rt|_l|Mt|Tr|Mr,sN=Qy|oo|co,oN=rt|co|oo,cw=rt|Tr|Mr|Mt|ow,cN=tw|nw|iw|rw|aw|sw,uN=rt|oo|co|Tr|Mr,dN=rt|br|Mt,lN=rt|Mt,mN=rt|br|Mt|_l,fN=cw|ew;var hN=Number.MAX_SAFE_INTEGER-1;var mi=(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))(mi||{});var gl=256;var uw=256,fi=8192,hi=2048,_i=512,dw=256,lw=gl*2,mw=256,ao=32;var _e=(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.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.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+fi]="Sounds",e[e.Images=e.Sounds+hi]="Images",e[e.Lights=e.Images+_i]="Lights",e[e.ShadowLights=e.Lights+uw]="ShadowLights",e[e.Items=e.ShadowLights+mw]="Items",e[e.PlayerSkins=e.Items+dw]="PlayerSkins",e[e.General=e.PlayerSkins+gl]="General",e[e.WheelWeapons=e.General+lw]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ao]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ao]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ao]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(_e||{}),_N=_e.MaxConfigStrings;var fw={};dl(fw,{addReplayFrame:()=>vw,createReplaySession:()=>gw,deserializeReplay:()=>_w,serializeReplay:()=>hw});function hw(e){return JSON.stringify(e,null,2)}function _w(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 gw(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function vw(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var gi=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(gi||{});var ht=(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))(ht||{});function _n(e,t){return(e&t)!==0}var Rr=(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))(Rr||{}),at=(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.Any=128]="Any",e))(at||{});function pw(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,d=xr(t);if(d<1)return{x:0,y:0,z:t.z};let f=0;if(i&&!r||a){let g=d<u?u:d;f+=g*o*n}s>0&&!a&&(f+=d*c*s*n);let m=d-f;if(m<0&&(m=0),m===d)return t;let _=m/d;return kr(t,_)}function yw(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=li(t,n),o=i-s;if(o<=0)return t;let u=r*a*i;return u>o&&(u=o),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function ww(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=xr(a);if(s>r){let o=r/s;a=kr(a,o),s=r}return{wishdir:s===0?a:ll(a),wishspeed:s}}function Sw(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=Sr(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Sr(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=Sr(a,{x:0,y:0,z:-60}):a=Sr(a,{x:0,y:0,z:10});let s=xr(a);if(s>r){let o=r/s;a=kr(a,o),s=r}return s*=.5,{wishdir:s===0?a:ll(a),wishspeed:s}}function Aw(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function kw(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function uo(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=Aw(n,i),r={...r,x:kw(r.x)});let a=Er(r);return{viewangles:r,...a}}var vl=200,pl=200,yl=200,wl=140,Sl=150,Al=3;function xw(e){let t=hn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function kl(e,t){return{x:xw(e.x+t.x),y:hn(e.y+t.y),z:hn(e.z+t.z)}}function xl(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var Xt=(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))(Xt||{});var El=64;var bl=0,Tl=1,Ml=2,Rl=3,zl=4,Ll=5,Nl=6,Ol=7,Il=8;var Cl=11,Pl=12,Fl=13;function Ew(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,u=s>>>8&255;return(o&255)<<8|u}else return s&65535}function Dl(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(Ew(e,t,a)&o)>>>s}var vi=(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))(vi||{}),ze=(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))(ze||{}),Ul=12,Bl=9,gN=Math.ceil(Ul*Bl/16),Gl=23,Hl=2,vN=Math.ceil(Gl*Hl/16),bw={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 Wl(e,t){return t<0||t>=Ul?0:Dl(e,34,t,Bl)}function zr(e,t){let n;return typeof t=="number"?n=t:n=bw[t],n===void 0||n<0||n>=Gl?0:Dl(e,41,n,Hl)}function Vl(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 Tw={};dl(Tw,{U_ANGLE1:()=>Iw,U_ANGLE2:()=>Cw,U_ANGLE3:()=>Pw,U_EFFECTS:()=>Uw,U_EVENT:()=>Hw,U_FRAME:()=>Fw,U_MODEL:()=>Rw,U_MODEL2:()=>Vw,U_MODEL3:()=>Kw,U_MODEL4:()=>$w,U_MOREBITS:()=>Ww,U_NUMBER:()=>Mw,U_ORIGIN1:()=>Lw,U_ORIGIN2:()=>Nw,U_ORIGIN3:()=>Ow,U_REMOVE:()=>Xw,U_RENDERFX:()=>Bw,U_SKIN:()=>Dw,U_SOLID:()=>Gw,U_SOUND:()=>zw});var Mw=1,Rw=2,zw=4,Lw=8,Nw=16,Ow=32,Iw=64,Cw=128,Pw=256,Fw=512,Dw=1024,Uw=2048,Bw=4096,Gw=8192,Hw=16384,Ww=32768,Vw=1,Kw=2,$w=4,Xw=32768,di=.025,so=33554432,Ar={None:0,Feet:1,Waist:2,Under:3},Yw=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},jw=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&so))return{...e,waterLevel:Ar.None};let s=Ar.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&so){s=Ar.Waist;let c=e.origin.z+22;n.z=c,t(n)&so&&(s=Ar.Under)}return{...e,waterLevel:s}},lo=(e,t,n,i)=>{let r={...e};r=Yw(r,n),r=jw(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,d=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:f,right:m}=Er(d),_=pw({velocity:s,frametime:di,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=u>=2?Sw({forward:f,right:m,cmd:t,maxSpeed:320}):ww({forward:f,right:m,cmd:t,maxSpeed:320}),A=yw({velocity:_,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||u>=2?10:1,frametime:di}),v=n(a,{x:a.x+A.x*di,y:a.y+A.y*di,z:a.z+A.z*di});return{...r,origin:v.endpos,velocity:A}},Kl=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}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<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 n=fn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},$l=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),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,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}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 n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));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,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<fn.length;i++){let r=fn[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},pi=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),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,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 n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));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,n){let i=0,r=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*fn[s][0]+t*fn[s][1]+n*fn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}};var Xl=(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))(Xl||{}),pN=Object.keys(Xl).length/2;var Lr=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Yl={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 Zw=Object.defineProperty,qw=(e,t)=>{for(var n in t)Zw(e,n,{get:t[n],enumerable:!0})},Or=null,Nr=[1,1,1,1],jl=["ch1","ch2","ch3"],mo=[null,null,null],Jw=e=>{for(let t=0;t<jl.length;t++){let n=jl[t];try{mo[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{mo[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
170
+ `)}}}Or=mo[0]},Qw=(e,t,n)=>{if(Or){let i=e.Draw_GetPicSize(Or),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,Or,{x:Nr[0],y:Nr[1],z:Nr[2]},Nr[3])}},tm=new Map,eS=["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"],tS=e=>{for(let t of eS)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);tm.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
171
+ `)}},nS=new Map,iS=["d_left","d_right","d_up","d_down"],rS=e=>{for(let t of iS)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);nS.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
172
+ `)}},aS=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},Zl=3e3,ql=5e3,Jl=4,sS=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Zl}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:ql}),this.notifyMessages.length>Jl&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Zl}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:ql}),this.notifyMessages.length>Jl&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,n){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let i=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(i,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let n=10;for(let i of this.notifyMessages)e.SCR_DrawFontString(10,n,i.text),n+=10}},oS=3e3,cS=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:oS}}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)}},uS=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},dS=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=tm.get(t.pickupIcon);if(r){let a=e.Draw_GetPicSize(r),s=n-a.width-10,o=i-a.height-10;e.SCR_DrawPic(s,o,r)}},fo=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let u=0;u<o.length;u++){let c=parseInt(o[u]),d=r[c];d&&(s?e.SCR_DrawColorPic(t+u*a,n,d,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+u*a,n,d))}},lS=(e,t,n,i,r,a)=>{let s=t.stats[ze.STAT_HEALTH]||0,o=t.stats[ze.STAT_ARMOR]||0,u=t.stats[ze.STAT_AMMO]||0,c=t.stats[ze.STAT_ARMOR_ICON]||0,d;if(s<=25&&(d=[1,0,0,1]),n.length>0&&(fo(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,d),fo(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),fo(e,a.AMMO_X,a.AMMO_Y,u,n,i)),c>0){let f=e.get_configstring(_e.Images+c);if(f){let m=e.Draw_RegisterPic(f);m&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,m)}}if(t.pickupIcon){let f=e.Draw_RegisterPic(t.pickupIcon);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}else{let f=t.stats[ze.STAT_SELECTED_ICON]||0;if(f>0){let m=e.get_configstring(_e.Images+f);if(m){let _=e.Draw_RegisterPic(m);_&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,_)}}}},ho=640,gn=480,mS=(e,t)=>{let n=e/ho,i=t/gn,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(gn-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(gn-450)*r,AMMO_X:e-(ho-540)*r,AMMO_Y:t-(gn-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(gn-450)*r,POWERUP_X:e-(ho-610)*r,POWERUP_Y:t-(gn-450)*r,scale:r}},ye=null,po=[],nm=0,yo=new sS,im=new cS;function fS(e){ye=e}function hS(){if(ye){po.length=0;for(let e=0;e<10;e++)try{let t=ye.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);po.push(t),e===0&&(nm=ye.Draw_GetPicSize(t).width)}catch{ye.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
173
+ `)}Jw(ye),tS(ye),rS(ye)}}function _S(e,t,n,i,r,a,s){if(!ye){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=ye.CL_ClientTime(),u=mS(n.width,n.height);if(uS(ye,s,n.width,n.height),lS(ye,s,po,nm,o,u),dS(ye,s,n.width,n.height),aS(ye,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
174
+ `),d=n.height/2-c.length*10;for(let f of c)ye.SCR_DrawCenterString(d,f),d+=16}yo.drawCenterPrint(ye,o,u),yo.drawNotifications(ye,o),im.drawSubtitles(ye,o),Qw(ye,n.width,n.height)}function Cr(){return yo}function gS(){return im}function vS(e,t,n){t>=_e.Models&&t<_e.Models+fi?e.RegisterModel(n):t>=_e.Sounds&&t<_e.Sounds+hi?e.RegisterSound(n):t>=_e.Images&&t<_e.Images+_i&&e.Draw_RegisterPic(n)}var _o=1e-6,Ir=typeof Float32Array<"u"?Float32Array:Array,Ql=Math.random;function go(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var pS={};qw(pS,{add:()=>kS,angle:()=>$S,bezier:()=>DS,ceil:()=>xS,clone:()=>yS,copy:()=>SS,create:()=>rm,cross:()=>IS,dist:()=>eA,distance:()=>um,div:()=>QS,divide:()=>cm,dot:()=>wo,equals:()=>ZS,exactEquals:()=>jS,floor:()=>ES,forEach:()=>rA,fromValues:()=>wS,hermite:()=>FS,inverse:()=>NS,len:()=>nA,length:()=>am,lerp:()=>CS,max:()=>TS,min:()=>bS,mul:()=>JS,multiply:()=>om,negate:()=>LS,normalize:()=>OS,random:()=>US,rotateX:()=>WS,rotateY:()=>VS,rotateZ:()=>KS,round:()=>MS,scale:()=>RS,scaleAndAdd:()=>zS,set:()=>AS,slerp:()=>PS,sqrDist:()=>tA,sqrLen:()=>iA,squaredDistance:()=>dm,squaredLength:()=>lm,str:()=>YS,sub:()=>qS,subtract:()=>sm,transformMat3:()=>GS,transformMat4:()=>BS,transformQuat:()=>HS,zero:()=>XS});function rm(){var e=new Ir(3);return Ir!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function yS(e){var t=new Ir(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function am(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function wS(e,t,n){var i=new Ir(3);return i[0]=e,i[1]=t,i[2]=n,i}function SS(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function AS(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function kS(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function sm(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function om(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function cm(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function xS(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function ES(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function bS(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function TS(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function MS(e,t){return e[0]=go(t[0]),e[1]=go(t[1]),e[2]=go(t[2]),e}function RS(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function zS(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function um(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function dm(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function lm(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function LS(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function NS(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function OS(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+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 wo(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function IS(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function CS(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function PS(e,t,n,i){var r=Math.acos(Math.min(Math.max(wo(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function FS(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*d,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*d,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*d,e}function DS(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,d=3*a*o,f=3*u*s,m=u*a;return e[0]=t[0]*c+n[0]*d+i[0]*f+r[0]*m,e[1]=t[1]*c+n[1]*d+i[1]*f+r[1]*m,e[2]=t[2]*c+n[2]*d+i[2]*f+r[2]*m,e}function US(e,t){t=t===void 0?1:t;var n=Ql()*2*Math.PI,i=Ql()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function BS(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function GS(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function HS(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],d=r*c-a*u,f=a*o-i*c,m=i*u-r*o;return d=d+d,f=f+f,m=m+m,e[0]=o+s*d+r*m-a*f,e[1]=u+s*f+a*d-i*m,e[2]=c+s*m+i*f-r*d,e}function WS(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function VS(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function KS(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function $S(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&wo(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function XS(e){return e[0]=0,e[1]=0,e[2]=0,e}function YS(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function jS(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function ZS(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=_o*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=_o*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=_o*Math.max(1,Math.abs(r),Math.abs(o))}var qS=sm,JS=om,QS=cm,eA=um,tA=dm,nA=am,iA=lm,rA=(function(){var e=rm();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;o+=n)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 aA={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function sA(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function oA(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function cA(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=oA(t,i,r),s=e+a,u=_n(n,ht.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(u),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(u*Math.PI))}}var Pr=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...aA,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=Er(uo({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Tt}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=_n(e.pmFlags,ht.OnGround),s=cA(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=li(e.velocity,n)*this.settings.runPitch,u=li(e.velocity,i),c=u<0?-1:1,f=Math.abs(u)*this.settings.runRoll;f>2&&(f=2),f*=c;let m=this.bobFracSin*this.settings.bobPitch*r,_=this.bobFracSin*this.settings.bobRoll*r;_n(e.pmFlags,ht.Ducked)&&a&&(m*=6,_*=6),o+=Math.min(m,this.settings.maxBobAngle),_=Math.min(_,this.settings.maxBobAngle),this.bobCycle&1&&(_=-_),f+=_;let g=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),A=0,v=0,S=0,b=0,x=0;if(this.kick&&this.kick.remainingMs>0){let E=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));A+=E*this.kick.pitch,v+=E*this.kick.roll,this.kick.origin&&(S+=E*this.kick.origin.x,b+=E*this.kick.origin.y,x+=E*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let p={x:o+A,y:0,z:f+v},w={x:S,y:b,z:g+x},T={angles:p,offset:sA(w),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=T,T}},uA={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},dA=800,st={x:0,y:0,z:0};function Yt(){return{origin:st,velocity:st,viewAngles:st,onGround:!1,pmFlags:ht.OnGround,pmType:Rr.Normal,waterLevel:gi.None,gravity:dA,deltaAngles:st,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:st,kick_origin:st,gunoffset:st,gunangles:st,gunindex:0,pm_time:0,pm_type:Rr.Normal,pm_flags:ht.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function em(e){return e?{...Yt(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:st,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Yt()}function Oe(e,t,n){return e+(t-e)*n}function vo(e,t,n){let i=hn(t-e);return i>180&&(i-=360),hn(e+i*n)}function vn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Oe(e.origin.x,t.origin.x,i),y:Oe(e.origin.y,t.origin.y,i),z:Oe(e.origin.z,t.origin.z,i)},velocity:{x:Oe(e.velocity.x,t.velocity.x,i),y:Oe(e.velocity.y,t.velocity.y,i),z:Oe(e.velocity.z,t.velocity.z,i)},viewAngles:{x:vo(e.viewAngles.x,t.viewAngles.x,i),y:vo(e.viewAngles.y,t.viewAngles.y,i),z:vo(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Oe(e.damageAlpha,t.damageAlpha,i),blend:[Oe(e.blend[0],t.blend[0],i),Oe(e.blend[1],t.blend[1],i),Oe(e.blend[2],t.blend[2],i),Oe(e.blend[3],t.blend[3],i)],health:Oe(e.health||0,t.health||0,i),armor:Oe(e.armor||0,t.armor||0,i),ammo:Oe(e.ammo||0,t.ammo||0,i)}}function lA(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons},s=lo(e,a,i,r),{viewangles:o}=uo({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??st});return{...s,viewAngles:o}}var Fr=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:Yt()},this.commands=[],this.predicted=Yt(),this.settings={...uA,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??Yt()}setAuthoritative(e){let t=em(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=em(this.baseFrame.state);for(let t of this.commands)e=lA(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},we=null;function mA(){if(!we){console.error("CGame Init: cgame imports not set");return}we.Com_Print(`===== CGame Initialization =====
175
+ `),fS(we),we.Com_Print(`CGame initialized
176
+ `)}function fA(){we&&we.Com_Print(`CGame shutdown
177
+ `),we=null}function hA(e,t,n,i,r,a,s){_S(e,t,n,i,r,a,s)}function _A(){hS()}function gA(e){return 0}function vA(e){return e.stats[ze.STAT_ACTIVE_WHEEL_WEAPON]??0}function pA(e){let t=[],n=e.stats[ze.STAT_WEAPONS_OWNED_1]||0,i=e.stats[ze.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<Lr.length;a++)r&1<<a&&t.push(a);return t}function yA(e,t){if(t<0||t>=Lr.length)return 0;let n=Lr[t],i=Yl[n];return i===null?-1:Wl(e.stats,i)}function wA(e){let t=0,n=Object.values(vi);for(let i of n)zr(e.stats,i)>0&&t++;return t}function SA(e){return e.stats[ze.STAT_HIT_MARKER]??0}function AA(e){let t=e;if(!t||!t.s||!t.cmd||!we)return;let n=(a,s,o,u)=>{let c={x:0,y:0,z:0};return we.PM_Trace(a,s,o||c,u||c)},i=a=>{let s={x:0,y:0,z:0};return we.PM_Trace(a,a,s,s).contents||0},r=lo(t.s,t.cmd,n,i);t.s.origin=r.origin,t.s.velocity=r.velocity,t.s.onGround=r.onGround,t.s.waterLevel=r.waterLevel}function kA(e,t){we&&vS(we,e,t)}function xA(e,t,n){if(!we)return;Cr().setCenterPrint(e,we.CL_ClientTime())}function EA(e,t,n){if(!we)return;Cr().addNotification(t,n,we.CL_ClientTime())}function bA(e){Cr().clearNotifications()}function TA(e){Cr().clearCenterPrint()}function MA(e,t){if(!we)return;gS().addSubtitle(e,we.CL_ClientTime())}function RA(e){return{x:0,y:0,z:0}}function zA(e){return null}function mm(e){return we=e,{Init:mA,Shutdown:fA,DrawHUD:hA,TouchPics:_A,LayoutFlags:gA,GetActiveWeaponWheelWeapon:vA,GetOwnedWeaponWheelWeapons:pA,GetWeaponWheelAmmoCount:yA,GetPowerupWheelCount:wA,GetHitMarkerDamage:SA,Pmove:AA,ParseConfigString:kA,ParseCenterPrint:xA,NotifyMessage:EA,ShowSubtitle:MA,ClearNotify:bA,ClearCenterprint:TA,GetMonsterFlashOffset:RA,GetExtension:zA}}function fm(e,t){let n=new Map,i=new Set,r=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let u=e.host.cvars.get(a);return u||e.host.cvars.register({name:a,defaultValue:s,flags:o})},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||i.has(a)||(i.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let u=o,c=n.get(u);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,u,c)=>{let d=o,f=n.get(d);f&&r()?.drawPic(a,s,f,[u.x,u.y,u.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let u=t.getKeyBinding(o);r()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,u)=>e.engine.trace(a,s,o,u)}}var pn=null,Rt=0;var yi=!0,wi=["ch1","ch2","ch3"],yn=[null,null,null],hm=async(e,t)=>{for(let n=0;n<wi.length;n++){let i=wi[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);yn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");yn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}pn=yn[0]};var _m=()=>{if(yi?(Rt++,Rt>=wi.length&&(yi=!1,Rt=0)):(yi=!0,Rt=0),yi){if(pn=yn[Rt],!pn){let e=!1;for(let t=0;t<wi.length;t++){let n=(Rt+t)%wi.length;if(yn[n]){Rt=n,pn=yn[n],e=!0;break}}e||(pn=null)}}else pn=null;return yi?Rt:-1};var LA=Object.defineProperty,zm=(e,t)=>{for(var n in t)LA(e,n,{get:t[n],enumerable:!0})},$={x:0,y:0,z:0};var LN=Math.PI/180;function xi(e){return{x:e.x,y:e.y,z:e.z}}function W(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function C(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function B(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Lm(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function NA(e){return Lm(e,e)}function qe(e){return Math.sqrt(NA(e))}function D(e){let t=qe(e);return t===0?e:B(e,1/t)}function OA(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function IA(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}var Go=0,Ho=1,Nm=2,CA=Math.PI/180,PA=180/Math.PI;function Ai(e,t){switch(t){case Go:return e.x;case Ho:return e.y;case Nm:default:return e.z}}function Dr(e){return e*CA}function To(e){return e*PA}function Mo(e){let t=e%360;return t<0?360+t:t}function te(e){let t=Dr(Ai(e,Ho)),n=Dr(Ai(e,Go)),i=Dr(Ai(e,Nm)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),d={x:o*a,y:o*r,z:-s},f={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},m={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:d,right:f,up:m}}function zi(e){let t=Ai(e,Go),n=Ai(e,Ho);if(t===0)return n===0?0:n>0?90:270;let i=To(Math.atan2(n,t));return i<0?i+360:i}function Rn(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=To(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=To(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}var ot=624,FA=397,DA=2567483615,UA=2147483648,BA=2147483647,So=4294967296,GA=class{constructor(e=5489){this.state=new Uint32Array(ot),this.index=ot,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<ot;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=ot}nextUint32(){this.index>=ot&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<ot;e++){let t=this.state[e]&UA|this.state[(e+1)%ot]&BA,n=this.state[(e+FA)%ot]^t>>>1;(t&1)!==0&&(n^=DA),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==ot)throw new Error(`Expected ${ot} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Om=class{constructor(e={}){this.mt=new GA(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/So}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,i=So-So%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}};function Li(e){return new Om(e)}var Ie=1,Ct=2;var Wo=8,Vo=16,HA=32;var WA=16384;var Xr=65536,Im=1<<17,VA=1<<18,KA=1<<19,$A=1<<20,XA=1<<21,YA=1<<22,jA=1<<23,NN=1<<24,Zt=1<<25,Yr=1<<26,ON=1<<27,IN=1<<28,CN=1<<29,zn=1<<30,PN=1<<31;var FN=1<<25,DN=1<<28,UN=1<<29,BN=1<<30,GN=1<<31,ZA=Ie|Ct,HN=Ie|Xr|Ct|Zt|zn,WN=Ie|Xr|Ct,Br=Ie|Im|Ct|Zt|zn,qA=HA|Wo|Vo,VN=Ie|Vo|Wo,Nt=Ie|Zt|zn|Ct|Yr,KN=VA|KA|$A|XA|YA|jA,$N=Ie|Wo|Vo|Zt|zn,XN=Ie|Xr|Ct,YN=Ie|Ct,jN=Ie|Xr|Ct|Im,ZN=Nt|WA,qN=Number.MAX_SAFE_INTEGER-1;var Cm=256,JA=256,QA=8192,ek=2048,tk=512,nk=256,ik=Cm*2,rk=256,Ao=32,Pm=(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.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.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+QA]="Sounds",e[e.Images=e.Sounds+ek]="Images",e[e.Lights=e.Images+tk]="Lights",e[e.ShadowLights=e.Lights+JA]="ShadowLights",e[e.Items=e.ShadowLights+rk]="Items",e[e.PlayerSkins=e.Items+nk]="PlayerSkins",e[e.General=e.PlayerSkins+Cm]="General",e[e.WheelWeapons=e.General+ik]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ao]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ao]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ao]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Pm||{}),JN=Pm.MaxConfigStrings,ak={};zm(ak,{addReplayFrame:()=>uk,createReplaySession:()=>ck,deserializeReplay:()=>ok,serializeReplay:()=>sk});function sk(e){return JSON.stringify(e,null,2)}function ok(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 ck(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function uk(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Te=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(Te||{}),Me=(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))(Me||{});var re=(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))(re||{});var dk=12,lk=9,QN=Math.ceil(dk*lk/16),mk=23,fk=2,eO=Math.ceil(mk*fk/16);var hk={};zm(hk,{U_ANGLE1:()=>Sk,U_ANGLE2:()=>Ak,U_ANGLE3:()=>kk,U_EFFECTS:()=>bk,U_EVENT:()=>Rk,U_FRAME:()=>xk,U_MODEL:()=>gk,U_MODEL2:()=>Lk,U_MODEL3:()=>Nk,U_MODEL4:()=>Ok,U_MOREBITS:()=>zk,U_NUMBER:()=>_k,U_ORIGIN1:()=>pk,U_ORIGIN2:()=>yk,U_ORIGIN3:()=>wk,U_REMOVE:()=>Ik,U_RENDERFX:()=>Tk,U_SKIN:()=>Ek,U_SOLID:()=>Mk,U_SOUND:()=>vk});var _k=1,gk=2,vk=4,pk=8,yk=16,wk=32,Sk=64,Ak=128,kk=256,xk=512,Ek=1024,bk=2048,Tk=4096,Mk=8192,Rk=16384,zk=32768,Lk=1,Nk=2,Ok=4,Ik=32768;var Z=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="grenades",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e.Trap="trap",e))(Z||{}),Y=(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))(Y||{}),tO=Object.keys(Y).length/2,ce=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(ce||{});var nO={[ce.Shells]:{id:ce.Shells,ammoType:Y.Shells,quantity:10,weaponAmmo:!1},[ce.Bullets]:{id:ce.Bullets,ammoType:Y.Bullets,quantity:50,weaponAmmo:!1},[ce.Rockets]:{id:ce.Rockets,ammoType:Y.Rockets,quantity:5,weaponAmmo:!1},[ce.Grenades]:{id:ce.Grenades,ammoType:Y.Grenades,quantity:5,weaponAmmo:!0},[ce.Cells]:{id:ce.Cells,ammoType:Y.Cells,quantity:50,weaponAmmo:!1},[ce.Slugs]:{id:ce.Slugs,ammoType:Y.Slugs,quantity:10,weaponAmmo:!1},[ce.MagSlugs]:{id:ce.MagSlugs,ammoType:Y.MagSlugs,quantity:10,weaponAmmo:!1},[ce.Flechettes]:{id:ce.Flechettes,ammoType:Y.Flechettes,quantity:50,weaponAmmo:!1},[ce.Disruptor]:{id:ce.Disruptor,ammoType:Y.Disruptor,quantity:15,weaponAmmo:!1},[ce.Tesla]:{id:ce.Tesla,ammoType:Y.Tesla,quantity:5,weaponAmmo:!1},[ce.Trap]:{id:ce.Trap,ammoType:Y.Trap,quantity:5,weaponAmmo:!1},[ce.Prox]:{id:ce.Prox,ammoType:Y.Prox,quantity:5,weaponAmmo:!1}};function Ot(e,t){return(e&t)!==0}var Ln=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(Ln||{}),Ck={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}};function Pk(e,t,n){if(e<=0||Ot(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Ck[n.armorType],r=Ot(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function Fk(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(Ot(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=te(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},u=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&u>0){let v={x:o.x/u,y:o.y/u,z:o.z/u};if(v.x*s.x+v.y*s.y+v.z*s.z<=.3)return{saved:0,remainingCells:r.cellCount}}let c=a.ctfMode??!1,d=r.type==="screen"||c?1:2,f=r.type==="screen"?e/3:2*e/3;f=Math.max(1,f);let m=r.cellCount*d;Ot(t,4)&&(m=Math.max(1,Math.floor(m/2))),m>f&&(m=Math.floor(f));let _=m/d;Ot(t,4)&&(_*=2),_=Math.max(1,Math.floor(_));let g=Math.max(d,_),A=Math.max(0,r.cellCount-g);return{saved:m,remainingCells:A}}var Se=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(Se||{});var Dk={...$};var iO=Object.freeze({aiflags:0,last_sighting:Dk,trail_time:0,pausetime:0});var Ko=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"last_move_time",type:"float",save:!0},{name:"damage_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],Uk=20,Bk=440,Gk=940,ko=32,Hk=1<<24,Gr=1;function gm(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function Pt(e,t){let n=gm(e),i=gm(t),r=IA(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function Wk(e){return e<=Uk?"melee":e<=Bk?"near":e<=Gk?"mid":"far"}function Ei(e,t){let{forward:n}=te(e.angles),i=D(C(t.origin,e.origin)),r=Lm(i,n);return(e.spawnflags&Gr)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function qt(e,t,n,i){if((t.flags&Hk)!==0)return!1;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}function Vk(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=zi(n)}function Fm(e){e.angles.y=Mo(e.ideal_yaw)}function Kk(e,t,n){e.enemy&&(e.goalentity=e.enemy,Vk(e,e.enemy),Fm(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function $k(e,t,n,i){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){Kk(e,t,n);return}let a=i?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function Xk(e,t,n,i){let r=Pt(e,t),a=Wk(r);return a==="far"||t.light_level<=5||!qt(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||Ei(e,t):a==="mid"?Ei(e,t):!0}function Yk(e,t,n,i,r){if((e.spawnflags&Gr)!==0){if(!qt(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=C(t.origin,e.origin);return qe(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=zi(a),Fm(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function jk(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Gr)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&Gr)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function Zk(e){return(e.flags&ko)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&ko)!==0:!!(e.enemy&&(e.enemy.flags&ko)!==0)}function $o(e,t,n,i,r={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=jk(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(Zk(a))return!1;if(s){if(!Yk(e,a,t,r,i))return!1}else{if(!Xk(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return $k(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function Dm(e,t){if(t===0)return{x:0,y:0,z:0};let n=Dr(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function jr(e,t,n){let i=Dm(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function Nn(e,t){let n=Mo(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=Mo(n+a)}function h(e,t){jr(e,e.angles.y,t)}function Zr(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=zi(n)}function M(e,t,n){$o(e,n.targetAwareness,n,n.trace)||Nn(e,t)}function N(e,t,n,i){if(!$o(e,i.targetAwareness,i,i.trace)&&(Zr(e,e.goalentity),Nn(e,n),t!==0&&jr(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&Pt(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function ee(e,t,n){t!==0&&jr(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&Nn(e,n)}function ie(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}$o(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&Zr(e,e.enemy??e.goalentity),Nn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Um(e,e.angles.y,t,i)}function qk(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&Zr(e,t),Nn(e,i),n!==0&&jr(e,e.angles.y,n)}function ae(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&Zr(e,e.enemy),Nn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Um(e,e.angles.y,t,i)}function Jk(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},i=t.trace(e.origin,e.mins,e.maxs,n,e,Br);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&qA?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function Qk(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Br).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Br).fraction<1))return!0;return!1}function Um(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=Dm(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,Br).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!Qk(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&Jk(e,i),!0)}var ex=Ko.filter(e=>e.save||e.type==="callback"),rO=new Map(ex.map(e=>[e.name,e]));function tx(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function nx(e,t,n,i,r){if(Ot(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=D(n),c=B(o,(t===e?1600:500)*i/s);return e.velocity=W(e.velocity,c),c}function ix(e,t,n,i,r){let a=i,s=0,o=0,u,c;if(e.powerArmor){let d=Fk(i,r,t,n,e.powerArmor);s=d.saved,u=d.remainingCells,a-=s}if(e.regularArmor){let d=Pk(a,r,e.regularArmor);o=d.saved,c=d.remainingArmor,a-=o}return[Math.max(0,a),s,o,u,c]}function vm(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function he(e,t,n,i,r,a,s,o,u,c,d,f){if(!e.takedamage)return null;let m=tx(n,d),_=s*m,g=o*m;if(!Ot(u,32)&&((e.flags??0)&1)!==0&&_>0)return{take:0,psave:0,asave:_,knocked:{x:0,y:0,z:0},killed:!1};let v=nx(e,n,i,g,u),[S,b,x,p,w]=ix(e,r,a,_,u);e.monsterinfo&&e.monsterinfo.freeze_time>d&&_>0&&(S=e.health+100,b=0,x=0),e.powerArmor&&p!==void 0&&(e.powerArmor.cellCount=p),e.regularArmor&&(e.regularArmor.armorCount=w??e.regularArmor.armorCount);let T=S;T>0&&(e.health-=T,f&&!Ot(u,1024)&&(e.classname==="player"||e.monsterinfo)&&f(r,1,Te.temp_entity,Me.BLOOD,r,a));let E=e.health<=0;return E?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,T,r,c):T>0&&e.pain&&e.pain(e,n,o,T,c),{take:T,psave:b,asave:x,knocked:v,killed:E,remainingCells:p,remainingArmor:w}}function Xo(e,t,n,i,r,a,s,o,u,c={},d){let f=[],m=vm(t),_=c.canDamage??(()=>!0);for(let g of e){if(g===r||!g.takedamage||!_(g,t))continue;let A=g.mins&&g.maxs?OA(m,W(g.origin,g.mins),W(g.origin,g.maxs)):vm(g),v=C(m,A),S=qe(v);if(a>0&&S>a)continue;let b=i-.5*S;if(b<=0)continue;let x=g===n?b*.5:b,p=D(C(g.origin,m)),w=he(g,t,n,p,A,p,x,x,s|1,o,u,d);f.push({target:g,result:w,appliedDamage:x})}return f}var aO=Li();function rx(e,t,n,i,r,a,s,o=0){let u=e.spawn();u.classname="rocket",u.movetype=8,u.solid=2,u.owner=t,u.origin={...n},u.velocity={x:i.x*s,y:i.y*s,z:i.z*s},u.mins={x:-4,y:-4,z:-4},u.maxs={x:4,y:4,z:4},u.touch=(c,d,f,m)=>{if(d===c.owner)return;d&&d.takedamage&&he(d,c,c.owner,c.velocity,c.origin,f?f.normal:$,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let _=e.findByRadius(c.origin,120);Xo(_,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,Te.temp_entity,Me.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(u)}function Bm(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let u=c=>{let d=e.findByRadius(c.origin,120);Xo(d,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,Te.temp_entity,Me.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,d,f,m)=>{if(d!==c.owner){if(d&&d.takedamage){u(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{u(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function Yo(e,t,n,i,r,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(u,c,d,f)=>{if(c!==u.owner){if(c&&c.takedamage)he(c,u,u.owner,u.velocity,u.origin,d?d.normal:$,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(d){let m=Me.BLASTER;s===58&&(m=Me.BLUEHYPERBLASTER),e.multicast(u.origin,1,Te.temp_entity,m,u.origin,d.normal)}e.free(u)}},e.finalizeSpawn(o),o}function ax(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,u,c,d)=>{if(u!==o.owner){if(u&&u.takedamage){he(u,o,o.owner,o.velocity,o.origin,c?c.normal:$,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,Te.temp_entity,Me.WELDING_SPARKS,o.origin,$,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,Te.temp_entity,Me.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,Te.temp_entity,Me.WELDING_SPARKS,o.origin,$,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function sx(e,t,n,i,r,a){Yo(e,t,n,i,r,a,58)}function ox(e,t,n,i){let r={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=D(C(a,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},u=16,c=[],d=[],f={...r};try{for(let _=0;_<u;_++){let g=e.trace(f,null,null,o,t,Ie|Zt|zn|Yr);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&he(g.ent,t,t.owner,s,g.endpos,$,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;c.push(g.ent),d.push(g.ent.solid),g.ent.solid=0,f={...g.endpos}}let m=e.trace(r,null,null,o,t,Ie);e.multicast(t.origin,2,Te.temp_entity,Me.BFG_LASER,r,m.endpos)}finally{for(let m=0;m<c.length;m++)c[m].solid=d[m]}}function cx(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,ZA).fraction<1||ox(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function ux(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=C(e.origin,r),s=qe(a),o=e.dmg_radius||100,u=(e.radius_dmg||200)*(1-Math.sqrt(s/o));u>0&&he(i,e,e.owner,e.velocity,r,$,Math.floor(u),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function dx(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(u,c,d,f)=>{if(c===u.owner)return;c&&c.takedamage&&he(c,u,u.owner,u.velocity,u.origin,d?d.normal:$,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let m=e.findByRadius(u.origin,100);Xo(m,u,u.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,Te.temp_entity,Me.BFG_BIGEXPLOSION,u.origin),u.solid=0,u.touch=void 0,u.velocity=$,u.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),u.frame=0,u.enemy=c,u.think=(_,g)=>ux(_,g),e.scheduleThink(u,e.timeSeconds+.1)},o.think=(u,c)=>cx(u,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}var sO=1/40;function lx(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var mx=1;function fx(e,t){if(!e.client)return;let n=lx(e.client.weaponStates,Z.Chaingun);!(e.client.buttons&mx)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var oO={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:Z.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:Z.Shotgun,ammoType:Y.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:Z.SuperShotgun,ammoType:Y.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:Z.Machinegun,ammoType:Y.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:fx},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:Z.Chaingun,ammoType:Y.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:Z.HandGrenade,ammoType:Y.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:Z.GrenadeLauncher,ammoType:Y.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:Z.RocketLauncher,ammoType:Y.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:Z.HyperBlaster,ammoType:Y.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:Z.Railgun,ammoType:Y.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:Z.BFG10K,ammoType:Y.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:Z.IonRipper,ammoType:Y.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:Z.Phalanx,ammoType:Y.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:Z.PlasmaBeam,ammoType:Y.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:Z.EtfRifle,ammoType:Y.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:Z.ProxLauncher,ammoType:Y.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};var Ve=Li(),hx=1;function pm(e,t,n,i,r){let a=e.spawn();a.classname="gib",a.origin={x:t.x+(Ve.frandom()-.5)*20,y:t.y+(Ve.frandom()-.5)*20,z:t.z+(Ve.frandom()-.5)*20},a.velocity={x:(Ve.frandom()-.5)*300,y:(Ve.frandom()-.5)*300,z:200+Ve.frandom()*100},a.movetype=9,a.solid=0,a.clipmask=1,a.avelocity={x:Ve.crandom()*600,y:Ve.crandom()*600,z:Ve.crandom()*600};let s=["models/objects/gibs/bone/tris.md2","models/objects/gibs/meat/tris.md2","models/objects/gibs/sm_meat/tris.md2"],o=i||s[Math.floor(Ve.frandom()*s.length)];return a.modelindex=e.modelIndex(o),a.mins={x:-2,y:-2,z:-2},a.maxs={x:2,y:2,z:2},r&&r&hx,a.think=u=>{e.free(u)},e.scheduleThink(a,e.timeSeconds+10+Ve.frandom()*10),e.finalizeSpawn(a),a}function Gm(e,t,n){if(typeof n=="number"){let i=n,r=4+Math.floor(Ve.frandom()*4);for(let a=0;a<r;a++)pm(e,t,i)}else{let i=n;for(let r of i)for(let a=0;a<r.count;a++)pm(e,t,0,r.model,r.flags)}}function _x(e,t){let n=e.monsterinfo.current_move;if(!n||((e.frame<n.firstframe||e.frame>n.lastframe)&&(e.monsterinfo.aiflags&=-129,e.frame=n.firstframe),(e.monsterinfo.aiflags&128)!==0))return;let i=e.frame-n.firstframe,r=n.frames[i];r.ai&&r.ai(e,r.dist,t),r.think&&r.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function gx(e,t){_x(e,t),e.nextthink=t.timeSeconds+.1}var qr=.1,ki=80;var Hm=Li();function vx(){return Hm.frandom()}function Wm(e,t){return Math.floor(Hm.frandom()*(t-e+1)+e)}function xn(e,t,n){M(e,qr,n)}function $e(e,t,n){N(e,t,qr,n)}function wn(e,t,n){ie(e,t,qr,n)}function fe(e,t,n){ae(e,t,qr,n)}function K(e,t,n){h(e,t)}var bi={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function Ze(e,t){t.sound(e,2,bi.footstep,1,1,0)}function Hr(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function px(e,t){}var jo,Vm,yx,Km,wx,Sx,Ax,kx,xx,$m,Ex;function bx(e,t){Hr(e,jo)}function Tx(e,t){e.monsterinfo.aiflags&1||e.enemy||vx()>.15||(Hr(e,Vm),t.sound(e,1,bi.idle,1,2,0))}var Mx=[{ai:xn,dist:0,think:Tx},{ai:xn,dist:0},{ai:xn,dist:0},{ai:xn,dist:0},{ai:xn,dist:0}];jo={firstframe:0,lastframe:4,frames:Mx,endfunc:null};var Rx=Array.from({length:20},()=>({ai:xn,dist:0}));Vm={firstframe:5,lastframe:24,frames:Rx,endfunc:bx};var zx=[{ai:$e,dist:9.1},{ai:$e,dist:6.3},{ai:$e,dist:4.9},{ai:$e,dist:6.7,think:Ze},{ai:$e,dist:6},{ai:$e,dist:8.2},{ai:$e,dist:7.2},{ai:$e,dist:6.1},{ai:$e,dist:4.9},{ai:$e,dist:4.7,think:Ze},{ai:$e,dist:4.7}];yx={firstframe:25,lastframe:35,frames:zx,endfunc:null};var Lx=[{ai:wn,dist:21},{ai:wn,dist:11,think:Ze},{ai:wn,dist:21},{ai:wn,dist:25,think:px},{ai:wn,dist:18,think:Ze},{ai:wn,dist:19}];Km={firstframe:36,lastframe:41,frames:Lx,endfunc:null};function Ni(e,t){e.monsterinfo.aiflags&1?Hr(e,jo):Hr(e,Km)}function Xm(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=te(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},u={x:a.x+s.x*ki,y:a.y+s.y*ki,z:a.z+s.z*ki},c=r.trace(a,null,null,u,e,536870913);return!c.ent||!c.ent.takedamage?!1:(he(c.ent,e,e,s,c.endpos,c.plane?.normal||$,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function Nx(e,t){Xm(e,{x:ki,y:0,z:-24},Wm(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function Ym(e,t){t.sound(e,1,bi.punch,1,1,0)}var Ox=[{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0,think:Ym},{ai:fe,dist:0,think:Nx},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0}];wx={firstframe:67,lastframe:74,frames:Ox,endfunc:Ni};function Ix(e,t){Xm(e,{x:ki,y:0,z:-4},Wm(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var Cx=[{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0,think:Ze},{ai:fe,dist:0},{ai:fe,dist:0,think:Ym},{ai:fe,dist:0},{ai:fe,dist:0,think:Ix},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0}];Sx={firstframe:75,lastframe:86,frames:Cx,endfunc:Ni};function Px(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);for(let o of s){if(o===e||!o.takedamage)continue;let u=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-u/i);if(c<=0)continue;let d=Math.max(1,n*c*c),f=r*c*c,m=D(C(o.origin,e.origin));he(o,e,t,m,o.origin,m,d,f,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Zo(e,t){t.sound(e,1,bi.thud,1,1,0),t.sound(e,2,bi.explod,.75,1,0);let{forward:n,right:i}=te(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,Te.temp_entity,Me.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},Px(e,e,8,165,300,t)}function Fx(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Zo(e,r))}function qo(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Dx(e,t){if(!e.enemy)return;let n=C(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=D({x:n.x,y:n.y,z:0}),s=Rn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(u,c,d,f)=>{Fx(u,c,d,f,t),u.groundentity&&(u.frame=104,Zo(u,t),u.touch=void 0)},qo(e,t)}function Ux(e,t){if(qo(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Zo(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Bx=[{ai:fe,dist:0},{ai:fe,dist:0},{ai:K,dist:0,think:Dx},{ai:K,dist:0,think:qo},{ai:K,dist:0,think:Ux},{ai:K,dist:0,think:Ze},{ai:K,dist:0},{ai:K,dist:0,think:Ze},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Ze}];Ax={firstframe:87,lastframe:109,frames:Bx,endfunc:Ni};var Gx=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];kx={firstframe:149,lastframe:152,frames:Gx,endfunc:Ni};var Hx=Array.from({length:20},(e,t)=>({ai:K,dist:0,think:t%5===4?Ze:void 0}));xx={firstframe:153,lastframe:172,frames:Hx,endfunc:Ni};function jm(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=$m.lastframe,e.nextthink=-1,e.deadflag=2}var Wx=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Ze},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];$m={firstframe:173,lastframe:185,frames:Wx,endfunc:jm};var Vx=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Ze},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];Ex={firstframe:186,lastframe:193,frames:Vx,endfunc:jm};function ym(){return 2*Math.random()-1}function Wr(e,t,n,i,r,a,s,o,u,c=0){let d=n;if(a>0||s>0){let _=Rn(n),{right:g,up:A}=te(_),v=ym()*a,S=ym()*s;d={x:n.x+g.x*v+A.x*S,y:n.y+g.y*v+A.y*S,z:n.z+g.z*v+A.z*S},d=D(d)}let f=W(t,B(d,8192)),m=u.trace(t,f,$,$,e,Nt);!m.ent||m.fraction===1||he(m.ent,e,e,d,m.endpos,m.plane?.normal||$,i,r,18,c,u.timeSeconds)}var It=Wr;function Kx(e,t,n,i,r,a,s,o,u,c,d=2){for(let f=0;f<o;f++)It(e,t,n,i,r,a,s,u,c,d)}function dt(e,t,n,i,r,a,s,o,u=1){Yo(o,e,t,n,i,r,u)}function $x(e,t,n,i,r,a,s,o){sx(o,e,t,n,i,r)}function Xx(e,t,n,i,r,a,s,o){ax(o,e,t,n,i,r)}function Yx(e,t,n,i,r,a,s){Bm(s,e,t,n,i,r)}function Oi(e,t,n,i,r,a,s){rx(s,e,t,n,i,120,r)}function Zm(e,t,n,i,r,a,s,o,u){dx(u,e,t,n,i,r,s)}function qm(e,t,n,i,r,a,s){let o=W(t,B(n,8192)),u=s.trace(t,o,$,$,e,Nt);s.multicast(t,2,Te.temp_entity,Me.RAILTRAIL,t,u.endpos),u.ent&&u.ent.takedamage&&he(u.ent,e,e,n,u.endpos,$,i,r,6,11,s.timeSeconds)}function Ii(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=te(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,u=W(s,B(a,o)),c=r.trace(s,u,$,$,e,Nt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let d=D(C(c.endpos,s));return he(c.ent,e,e,d,c.endpos,c.plane?.normal||$,n,i,0,0,r.timeSeconds),!0}return!1}function jx(e,t,n,i,r,a,s,o){Oi(e,t,n,i,r,a,o)}function wm(e,t){let n={...e.origin},i=W(n,B(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let u=0;u<a;u++){let c=t.trace(r,i,$,$,e,Ie|Zt|zn|Yr);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&he(c.ent,e,e.owner,e.movedir,c.endpos,$,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,Te.temp_entity,Me.LASER_SPARKS,10,c.endpos,c.plane?.normal||$,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,r={...c.endpos};continue}break}}finally{for(let u=0;u<s.length;u++)s[u].solid=o[u]}t.linkentity(e)}function Zx(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Ro(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?Zx(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),wm(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),wm(a,r)}var Jo=.1,qx={x:0,y:30,z:-15},Jx={x:0,y:15,z:0},Qx={x:0,y:-15,z:0},e2={x:0,y:-30,z:-15},t2={x:30,y:20,z:0},n2={x:30,y:-20,z:0};function i2(e,t,n){M(e,Jo,n)}function r2(e,t,n){N(e,t,Jo,n)}function Jr(e,t,n){ae(e,t,Jo,n)}function Qo(e,t,n){h(e,t)}var ec,Jm,Qm,a2,ef,tf,s2,o2,c2,nf;function u2(e){e.monsterinfo.current_move=ec}function d2(e){e.monsterinfo.current_move=Jm}function Ci(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Qm:e.monsterinfo.current_move=ec}function rf(e){e.monsterinfo.current_move=ef}function l2(e){e.enemy&&Ei(e,e.enemy)&&Math.random()<=.7?rf(e):e.monsterinfo.current_move=tf}function zo(e,t){let{forward:n,right:i,up:r}=te(e.angles),a={...e.origin},s=B(n,t.x),o=B(i,t.y),u=B(r,t.z);return W(W(W(a,s),o),u)}function m2(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=zo(e,t2),i=D(C(e.enemy.origin,n));It(e,n,i,6,4,.1,.05,0,t,4);let r=zo(e,n2),a=D(C(e.enemy.origin,r));It(e,r,a,6,4,.1,.05,0,t,4)}function f2(e,t){if(!e.enemy)return;let n=[qx,Jx,Qx,e2],i=n[Math.floor(Math.random()*n.length)],r=zo(e,i),a=D(C(e.enemy.origin,r));Oi(e,r,a,50,500,0,t)}function h2(e){e.monsterinfo.nextframe=nf.lastframe,e.nextthink=-1}var af=Array.from({length:20},()=>({ai:r2,dist:10}));Jm={firstframe:0,lastframe:19,frames:af,endfunc:d2};Qm={firstframe:0,lastframe:19,frames:af,endfunc:Ci};var _2=Array.from({length:21},()=>({ai:i2,dist:0}));ec={firstframe:29,lastframe:49,frames:_2,endfunc:u2};var g2=Array.from({length:9},(e,t)=>({ai:Jr,dist:2,think:t===8?rf:null}));a2={firstframe:50,lastframe:58,frames:g2,endfunc:null};var v2=Array.from({length:6},()=>({ai:Jr,dist:2,think:m2}));ef={firstframe:59,lastframe:64,frames:v2,endfunc:l2};var p2=Array.from({length:4},()=>({ai:Jr,dist:2}));tf={firstframe:65,lastframe:68,frames:p2,endfunc:Ci};var y2=Array.from({length:21},(e,t)=>({ai:Jr,dist:2,think:t===12?f2:null}));s2={firstframe:69,lastframe:89,frames:y2,endfunc:Ci};var w2=Array.from({length:18},()=>({ai:Qo,dist:0}));o2={firstframe:90,lastframe:107,frames:w2,endfunc:Ci};var S2=Array.from({length:4},()=>({ai:Qo,dist:0}));c2={firstframe:108,lastframe:111,frames:S2,endfunc:Ci};var A2=Array.from({length:49},()=>({ai:Qo,dist:0}));nf={firstframe:112,lastframe:160,frames:A2,endfunc:h2};var Qr=.1,tc=80,ea=Math.random;function sf(e,t,n){M(e,Qr,n)}function Xe(e,t,n){N(e,t,Qr,n)}function Ye(e,t,n){ie(e,t,Qr,n)}function I(e,t,n){ae(e,t,Qr,n)}function H(e,t,n){h(e,t)}var nc,k2,x2,of,cf,E2,b2,T2,M2,R2,z2,L2,N2,O2;function uf(e){e.monsterinfo.current_move=nc}function Ft(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=nc:e.monsterinfo.current_move=of}function I2(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function C2(e,t){let n={x:tc,y:e.maxs.x,z:8};Ii(e,n,15+Math.floor(ea()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function P2(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function F2(e,t){let n={x:tc,y:e.mins.x,z:8};Ii(e,n,15+Math.floor(ea()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function df(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function lf(e,t){Ii(e,{x:tc,y:0,z:8},10+Math.floor(ea()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function mf(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=cf)}function Sm(e,t){if(!e.enemy)return;let n=te(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,$,$,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,Te.temp_entity,Me.PARASITE_ATTACK,e,i,r);let s=C(i,r);he(e.enemy,e,e,s,e.enemy.origin,$,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=te(e.angles).forward;e.enemy.velocity=B(o,-1200)}var Am=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],km=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function D2(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=te(n.angles),s=n.frame-0;(s<0||s>=Am.length)&&(s=0);let o=Am[s],u=W(n.origin,B(r,o.x));u=W(u,B(i,o.y)),u=W(u,B(a,o.z));let c=D(C(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function U2(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=te(n.angles),s=n.frame-0;(s<0||s>=km.length)&&(s=0);let o=km[s],u=W(n.origin,B(r,o.x));u=W(u,B(i,o.y)),u=W(u,B(a,o.z));let c=D(C(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function ct(e,t){Ro(e,1,!1,D2,t),Ro(e,1,!0,U2,t)}function B2(e){ea()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function G2(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function H2(e){}function W2(e){e.monsterinfo.aiflags&=-17}var V2=Array.from({length:30},()=>({ai:sf,dist:0}));nc={firstframe:162,lastframe:191,frames:V2,endfunc:uf};var K2=Array.from({length:30},()=>({ai:sf,dist:0}));k2={firstframe:192,lastframe:221,frames:K2,endfunc:uf};var $2=[{ai:Xe,dist:7},{ai:Xe,dist:2},{ai:Xe,dist:3},{ai:Xe,dist:3},{ai:Xe,dist:1},{ai:Xe,dist:0},{ai:Xe,dist:0},{ai:Xe,dist:9},{ai:Xe,dist:-4},{ai:Xe,dist:-1},{ai:Xe,dist:2}];x2={firstframe:0,lastframe:10,frames:$2,endfunc:null};var X2=[{ai:Ye,dist:9},{ai:Ye,dist:2},{ai:Ye,dist:3},{ai:Ye,dist:3},{ai:Ye,dist:1},{ai:Ye,dist:0},{ai:Ye,dist:0},{ai:Ye,dist:10},{ai:Ye,dist:-4},{ai:Ye,dist:-1},{ai:Ye,dist:2}];of={firstframe:0,lastframe:10,frames:X2,endfunc:null};var Y2=[{ai:I,dist:8},{ai:I,dist:3},{ai:I,dist:5},{ai:I,dist:0},{ai:I,dist:-3,think:I2},{ai:I,dist:0},{ai:I,dist:-5},{ai:I,dist:-7,think:C2},{ai:I,dist:0},{ai:I,dist:6,think:P2},{ai:I,dist:1},{ai:I,dist:2,think:F2},{ai:I,dist:-3},{ai:I,dist:6},{ai:I,dist:-1},{ai:I,dist:-3},{ai:I,dist:2},{ai:I,dist:-11}];cf={firstframe:53,lastframe:70,frames:Y2,endfunc:Ft};var j2=[{ai:I,dist:5},{ai:I,dist:-4},{ai:I,dist:-4},{ai:I,dist:-3},{ai:I,dist:0,think:df},{ai:I,dist:0},{ai:I,dist:13,think:lf},{ai:I,dist:0},{ai:I,dist:2},{ai:I,dist:0},{ai:I,dist:-9,think:mf},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:3},{ai:I,dist:2},{ai:I,dist:-3},{ai:I,dist:-6}];E2={firstframe:71,lastframe:87,frames:j2,endfunc:Ft};var Z2=[{ai:I,dist:5},{ai:I,dist:-4},{ai:I,dist:-4},{ai:I,dist:-3},{ai:I,dist:0,think:df},{ai:I,dist:0,think:Sm},{ai:I,dist:13},{ai:I,dist:0,think:lf},{ai:I,dist:2},{ai:I,dist:0,think:Sm},{ai:I,dist:-9,think:mf},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:3},{ai:I,dist:2},{ai:I,dist:-3},{ai:I,dist:-6}];b2={firstframe:71,lastframe:87,frames:Z2,endfunc:Ft};var q2=[{ai:I,dist:9,think:ct},{ai:I,dist:2,think:ct},{ai:I,dist:3,think:ct},{ai:I,dist:3,think:ct},{ai:I,dist:1,think:ct},{ai:I,dist:0,think:ct},{ai:I,dist:0,think:ct},{ai:I,dist:10,think:ct},{ai:I,dist:-4,think:ct},{ai:I,dist:-1,think:ct},{ai:I,dist:2,think:B2}];T2={firstframe:0,lastframe:10,frames:q2,endfunc:Ft};var J2=[{ai:H,dist:-6},{ai:H,dist:-2},{ai:H,dist:-6},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:2},{ai:H,dist:0},{ai:H,dist:2},{ai:H,dist:1},{ai:H,dist:7},{ai:H,dist:0},{ai:H,dist:3},{ai:H,dist:-1}];M2={firstframe:88,lastframe:108,frames:J2,endfunc:Ft};var Q2=[{ai:H,dist:-2},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:3},{ai:H,dist:1},{ai:H,dist:-2}];R2={firstframe:109,lastframe:116,frames:Q2,endfunc:Ft};var eE=[{ai:H,dist:-2},{ai:H,dist:2},{ai:H,dist:1},{ai:H,dist:3},{ai:H,dist:0},{ai:H,dist:-4}];z2={firstframe:117,lastframe:122,frames:eE,endfunc:Ft};var tE=Array.from({length:18},()=>({ai:H,dist:0}));L2={firstframe:123,lastframe:140,frames:tE,endfunc:ff};var nE=[{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:9},{ai:H,dist:0}];N2={firstframe:141,lastframe:145,frames:nE,endfunc:ff};var iE=[{ai:H,dist:0},{ai:H,dist:-2,think:G2},{ai:H,dist:17,think:H2},{ai:H,dist:-3},{ai:H,dist:-1,think:W2},{ai:H,dist:-5},{ai:H,dist:-6},{ai:H,dist:-6}];O2={firstframe:146,lastframe:153,frames:iE,endfunc:Ft};function ff(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var ta=.1,rE=80,On=Math.random;function hf(e,t,n){M(e,ta,n)}function aE(e,t,n){N(e,t,ta,n)}function sE(e,t,n){ie(e,t,ta,n)}function V(e,t,n){ae(e,t,ta,n)}function In(e,t,n){h(e,t)}var ic,_f,gf,oE,rc,Lo,cE,ac,vf,uE,dE,lE,mE,fE,hE,pf;function yf(e){e.monsterinfo.current_move=ic}function _E(e){e.monsterinfo.current_move=_f}function Jt(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=ic;return}e.monsterinfo.current_move=gf}function gE(e){e.monsterinfo.aiflags&4||e.enemy||On()<=.3&&(e.monsterinfo.current_move=pf)}function vE(e,t){On()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function pE(e,t){let n={x:rE,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),Ii(e,n,10+Math.floor(On()*6),100,t)}function yE(e,t){let{forward:n,right:i}=te(e.angles),r={x:0,y:20,z:40},a=W(e.origin,B(n,r.x)),s=B(i,r.y),o=W(a,s),u={...o,z:o.z+r.z},c=e.skin>1?500:650,d=!!e.monsterinfo.blindfire,f=$;if(d&&e.monsterinfo.blind_fire_target)f=e.monsterinfo.blind_fire_target;else if(e.enemy)f=e.enemy.origin;else return;let m=C(f,u);!d&&e.enemy&&(On()<.33||u.z<e.enemy.absmin.z?m={...m,z:m.z+e.enemy.viewheight}:m={...m,z:e.enemy.absmin.z+1-u.z});let _=D(m);e.skin>1?jx(e,u,_,50,c,0,.075,t):Oi(e,u,_,50,c,0,t)}function wE(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=C(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=Rn(n).y}}function SE(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function AE(e){e.monsterinfo.current_move=rc}function kE(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Lo;return}if(e.enemy&&e.enemy.health>0&&On()<=.6){e.monsterinfo.current_move=rc;return}e.monsterinfo.current_move=Lo}function xE(e){if(e.enemy&&e.enemy.health>0&&On()<=.9){e.monsterinfo.current_move=ac;return}e.monsterinfo.current_move=vf}function EE(e){e.monsterinfo.current_move=ac}var bE=Array.from({length:30},(e,t)=>({ai:hf,dist:0,think:t===8?(n,i)=>vE(n,i):null}));pf={firstframe:201,lastframe:230,frames:bE,endfunc:yf};var TE=Array.from({length:30},(e,t)=>({ai:hf,dist:0,think:t===29?gE:null}));ic={firstframe:101,lastframe:130,frames:TE,endfunc:yf};var ME=Array.from({length:10},()=>({ai:aE,dist:6}));_f={firstframe:171,lastframe:180,frames:ME,endfunc:_E};var RE=Array.from({length:10},()=>({ai:sE,dist:12}));gf={firstframe:171,lastframe:180,frames:RE,endfunc:Jt};var zE=Array.from({length:5},()=>({ai:In,dist:0}));uE={firstframe:90,lastframe:94,frames:zE,endfunc:Jt};var LE=Array.from({length:5},()=>({ai:In,dist:0}));dE={firstframe:95,lastframe:99,frames:LE,endfunc:Jt};var NE=Array.from({length:21},()=>({ai:In,dist:0}));lE={firstframe:100,lastframe:120,frames:NE,endfunc:Jt};var OE=Array.from({length:12},()=>({ai:In,dist:0}));mE={firstframe:48,lastframe:59,frames:OE,endfunc:wf};var IE=Array.from({length:23},()=>({ai:In,dist:0}));fE={firstframe:60,lastframe:82,frames:IE,endfunc:wf};function wf(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var CE=[{ai:V,dist:0,think:wE},{ai:V,dist:0},{ai:V,dist:0},{ai:V,dist:4},{ai:V,dist:0},{ai:V,dist:-3},{ai:V,dist:3},{ai:V,dist:5},{ai:V,dist:7},{ai:V,dist:0},{ai:V,dist:0},{ai:V,dist:0},{ai:V,dist:0,think:AE}];oE={firstframe:0,lastframe:12,frames:CE,endfunc:null};var PE=[{ai:V,dist:19,think:yE},{ai:V,dist:-6},{ai:V,dist:-5},{ai:V,dist:-2},{ai:V,dist:-7},{ai:V,dist:0},{ai:V,dist:1},{ai:V,dist:10,think:SE},{ai:V,dist:4},{ai:V,dist:5},{ai:V,dist:6},{ai:V,dist:6},{ai:V,dist:4},{ai:V,dist:3,think:kE}];rc={firstframe:13,lastframe:26,frames:PE,endfunc:null};var FE=[{ai:V,dist:-3},{ai:V,dist:0},{ai:V,dist:-6},{ai:V,dist:-4},{ai:V,dist:-2}];Lo={firstframe:27,lastframe:31,frames:FE,endfunc:Jt};var DE=[{ai:V,dist:1},{ai:V,dist:8},{ai:V,dist:3}];cE={firstframe:32,lastframe:34,frames:DE,endfunc:EE};var UE=[{ai:V,dist:1},{ai:V,dist:7,think:pE},{ai:V,dist:-7},{ai:V,dist:1},{ai:V,dist:-1},{ai:V,dist:1},{ai:V,dist:0},{ai:V,dist:1},{ai:V,dist:-2,think:xE}];ac={firstframe:35,lastframe:43,frames:UE,endfunc:null};var BE=[{ai:V,dist:-6},{ai:V,dist:-1},{ai:V,dist:-6},{ai:V,dist:0}];vf={firstframe:44,lastframe:47,frames:BE,endfunc:Jt};var GE=Array.from({length:7},()=>({ai:In,dist:0}));hE={firstframe:83,lastframe:89,frames:GE,endfunc:Jt};var na=.1,HE=80,WE=24;function VE(e,t,n){M(e,na,n)}function KE(e,t,n){N(e,t,na,n)}function Sf(e,t,n){ie(e,t,na,n)}function ve(e,t,n){ae(e,t,na,n)}function sc(e,t,n){h(e,t)}var $E,XE,Af,kf,YE,jE,ZE,qE;function JE(e){e.monsterinfo.current_move=kf}function oc(e){e.monsterinfo.current_move=Af}function xm(e,t){Ii(e,{x:HE,y:0,z:0},5,0,t)}function QE(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var e5=[{ai:VE,dist:0}];$E={firstframe:41,lastframe:41,frames:e5,endfunc:null};var t5=Array.from({length:24},()=>({ai:Sf,dist:WE}));kf={firstframe:70,lastframe:93,frames:t5,endfunc:null};var n5=Array.from({length:6},()=>({ai:Sf,dist:8}));Af={firstframe:65,lastframe:70,frames:n5,endfunc:JE};var i5=Array.from({length:24},()=>({ai:KE,dist:4}));XE={firstframe:41,lastframe:64,frames:i5,endfunc:null};var r5=Array.from({length:5},()=>({ai:sc,dist:0}));jE={firstframe:99,lastframe:103,frames:r5,endfunc:oc};var a5=Array.from({length:5},()=>({ai:sc,dist:0}));ZE={firstframe:94,lastframe:98,frames:a5,endfunc:oc};var s5=[{ai:ve,dist:0,think:QE},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0,think:xm},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0,think:xm},{ai:ve,dist:0}];YE={firstframe:0,lastframe:19,frames:s5,endfunc:oc};function o5(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var c5=Array.from({length:56},()=>({ai:sc,dist:0}));qE={firstframe:104,lastframe:159,frames:c5,endfunc:o5};var ia=.1;function u5(e,t,n){M(e,ia,n)}function d5(e,t,n){N(e,t,ia,n)}function l5(e,t,n){ie(e,t,ia,n)}function m5(e,t,n){ae(e,t,ia,n)}function xf(e,t,n){h(e,t)}var cc,Ef,bf,f5,h5,Tf;function _5(e){e.monsterinfo.current_move=cc}function g5(e){e.monsterinfo.current_move=Ef}function uc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=bf:e.monsterinfo.current_move=cc}function v5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,5,1e3,0,0,t,1)}function p5(e){e.monsterinfo.nextframe=Tf.lastframe,e.nextthink=-1}var y5=Array.from({length:46},()=>({ai:u5,dist:0}));cc={firstframe:0,lastframe:45,frames:y5,endfunc:_5};var w5=Array.from({length:46},()=>({ai:d5,dist:5}));Ef={firstframe:0,lastframe:45,frames:w5,endfunc:g5};var S5=Array.from({length:46},()=>({ai:l5,dist:10}));bf={firstframe:0,lastframe:45,frames:S5,endfunc:uc};var A5=Array.from({length:20},(e,t)=>({ai:m5,dist:0,think:t===10?v5:null}));f5={firstframe:46,lastframe:65,frames:A5,endfunc:uc};var k5=Array.from({length:6},()=>({ai:xf,dist:0}));h5={firstframe:66,lastframe:71,frames:k5,endfunc:uc};var x5=Array.from({length:10},()=>({ai:xf,dist:0}));Tf={firstframe:84,lastframe:93,frames:x5,endfunc:p5};var ra=.1;function E5(e,t,n){M(e,ra,n)}function b5(e,t,n){N(e,t,ra,n)}function T5(e,t,n){ie(e,t,ra,n)}function M5(e,t,n){ae(e,t,ra,n)}function Mf(e,t,n){h(e,t)}var dc,Rf,zf,R5,z5,Lf;function L5(e){e.monsterinfo.current_move=dc}function N5(e){e.monsterinfo.current_move=Rf}function lc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=zf:e.monsterinfo.current_move=dc}function O5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,5,1e3,0,0,t,1)}function I5(e,t){if(!e.enemy)return;let n=5+Math.random()*5;Pt(e,e.enemy)<=80&&Ei(e,e.enemy)&&he(e.enemy,e,e,D(C(e.enemy.origin,e.origin)),e.enemy.origin,$,n,5,2,0,t.timeSeconds)}function C5(e){e.monsterinfo.nextframe=Lf.lastframe,e.nextthink=-1}var P5=Array.from({length:46},()=>({ai:E5,dist:0}));dc={firstframe:0,lastframe:45,frames:P5,endfunc:L5};var F5=Array.from({length:46},()=>({ai:b5,dist:5}));Rf={firstframe:0,lastframe:45,frames:F5,endfunc:N5};var D5=Array.from({length:46},()=>({ai:T5,dist:10}));zf={firstframe:0,lastframe:45,frames:D5,endfunc:lc};var U5=Array.from({length:20},(e,t)=>({ai:M5,dist:0,think:t===10?O5:t===12?I5:null}));R5={firstframe:46,lastframe:65,frames:U5,endfunc:lc};var B5=Array.from({length:6},()=>({ai:Mf,dist:0}));z5={firstframe:66,lastframe:71,frames:B5,endfunc:lc};var G5=Array.from({length:10},()=>({ai:Mf,dist:0}));Lf={firstframe:84,lastframe:93,frames:G5,endfunc:C5};var aa=.1;function H5(e,t,n){M(e,aa,n)}function W5(e,t,n){N(e,t,aa,n)}function V5(e,t,n){ie(e,t,aa,n)}function Nf(e,t,n){ae(e,t,aa,n)}function Of(e,t,n){h(e,t)}var mc,If,Cf,K5,$5,X5,Pf;function Y5(e){e.monsterinfo.current_move=mc}function j5(e){e.monsterinfo.current_move=If}function sa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Cf:e.monsterinfo.current_move=mc}function Z5(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function q5(e,t){if(!e.enemy||!Ei(e,e.enemy))return;let n=Pt(e,e.enemy);if(Z5(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=D(C(e.enemy.origin,i));he(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function J5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=D(C(e.enemy.origin,n));qm(e,n,i,50,100,0,t)}function Q5(e){e.monsterinfo.nextframe=Pf.lastframe,e.nextthink=-1}var eb=Array.from({length:30},()=>({ai:H5,dist:0}));mc={firstframe:0,lastframe:29,frames:eb,endfunc:Y5};var tb=Array.from({length:40},()=>({ai:W5,dist:3}));If={firstframe:30,lastframe:69,frames:tb,endfunc:j5};var nb=Array.from({length:20},()=>({ai:V5,dist:12}));Cf={firstframe:70,lastframe:89,frames:nb,endfunc:sa};var ib=Array.from({length:10},(e,t)=>({ai:Nf,dist:0,think:t===5?q5:null}));K5={firstframe:90,lastframe:99,frames:ib,endfunc:sa};var rb=Array.from({length:12},(e,t)=>({ai:Nf,dist:0,think:t===6?J5:null}));$5={firstframe:100,lastframe:111,frames:rb,endfunc:sa};var ab=Array.from({length:6},()=>({ai:Of,dist:0}));X5={firstframe:112,lastframe:117,frames:ab,endfunc:sa};var sb=Array.from({length:12},()=>({ai:Of,dist:0}));Pf={firstframe:118,lastframe:129,frames:sb,endfunc:Q5};var oa=.1;function Ff(e,t,n){M(e,oa,n)}function ob(e,t,n){N(e,t,oa,n)}function Df(e,t,n){ie(e,t,oa,n)}function ca(e,t,n){ae(e,t,oa,n)}function pe(e,t,n){h(e,t)}var fc,Uf,cb,Bf,ub,db,lb,hc,Gf,mb,fb,hb,Hf,_b,Wf;function gb(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function vb(e){e.monsterinfo.current_move=fc}function pb(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=Uf)}function Qt(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=fc:e.monsterinfo.current_move=Bf}function yb(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function wb(e,t){e.monsterinfo.current_move=hc}function Sb(e,t){if(e.enemy&&e.enemy.health>0&&qt(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=hc;return}e.monsterinfo.current_move=Gf}function Ab(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=D(C(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),It(e,n,i,r,a,300,500,0,t,5)}function Vf(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Bm(t,e,n,i,r,a)}function kb(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&Vf(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function xb(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function Eb(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function bb(e,t){if(!e.enemy)return;let n=C(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=D({x:n.x,y:n.y,z:0}),s=Rn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function Tb(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function Mb(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=Wf)}var Rb=Array.from({length:30},(e,t)=>({ai:Ff,dist:0,think:t===29?pb:null}));fc={firstframe:0,lastframe:29,frames:Rb,endfunc:null};var zb=Array.from({length:40},(e,t)=>({ai:Ff,dist:0,think:t===7?gb:null}));Uf={firstframe:30,lastframe:69,frames:zb,endfunc:vb};var Lb=[0,3,4,5,7,2,6,4,2,7,5,7,4],Nb=Lb.map(e=>({ai:ob,dist:e}));cb={firstframe:76,lastframe:88,frames:Nb,endfunc:null};var Ob=[26,9,9,9,15,10,13,6],Ib=Ob.map((e,t)=>({ai:Df,dist:e,think:t%4===0?Mb:null}));Bf={firstframe:94,lastframe:101,frames:Ib,endfunc:null};var Cb=[32,15,10,18,8,20],Pb=Cb.map(e=>({ai:Df,dist:e}));ub={firstframe:102,lastframe:107,frames:Pb,endfunc:null};var Fb=Array.from({length:21},(e,t)=>({ai:ca,dist:0,think:[4,7,10,13].includes(t)?Vf:null}));lb={firstframe:108,lastframe:128,frames:Fb,endfunc:Qt};var Db=Array.from({length:7},(e,t)=>({ai:ca,dist:0,think:t===0?yb:null}));db={firstframe:137,lastframe:143,frames:Db,endfunc:wb};var Ub=Array.from({length:8},()=>({ai:ca,dist:0,think:Ab}));hc={firstframe:144,lastframe:151,frames:Ub,endfunc:Sb};var Bb=Array.from({length:7},()=>({ai:ca,dist:0}));Gf={firstframe:152,lastframe:158,frames:Bb,endfunc:Qt};var Gb=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],Hb=Gb.map(e=>({ai:pe,dist:e}));mb={firstframe:159,lastframe:176,frames:Hb,endfunc:Qt};var Wb=[-2,11,6,2,-1,-7,-2,-7],Vb=Wb.map(e=>({ai:pe,dist:e}));fb={firstframe:177,lastframe:184,frames:Vb,endfunc:Qt};var Kb=[-3,1,1,0,1],$b=Kb.map(e=>({ai:pe,dist:e}));hb={firstframe:185,lastframe:189,frames:$b,endfunc:Qt};var Xb=[0,0,0,-7,-3,-5,8,6,0,0,0],Yb=Xb.map(e=>({ai:pe,dist:e}));function jb(e){e.monsterinfo.nextframe=Hf.lastframe,e.nextthink=-1,e.solid=0}Hf={firstframe:190,lastframe:200,frames:Yb,endfunc:jb};var Zb=[{ai:pe,dist:1,think:kb},{ai:pe,dist:1},{ai:pe,dist:1,think:xb},{ai:pe,dist:0},{ai:pe,dist:-1},{ai:pe,dist:-1},{ai:pe,dist:0,think:Eb},{ai:pe,dist:-1}];_b={firstframe:201,lastframe:208,frames:Zb,endfunc:Qt};var qb=[{ai:pe,dist:0,think:bb},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:Tb},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];Wf={firstframe:209,lastframe:216,frames:qb,endfunc:Qt};var ua=.1;function Jb(e,t,n){M(e,ua,n)}function Qb(e,t,n){N(e,t,ua,n)}function e3(e,t,n){ie(e,t,ua,n)}function t3(e,t,n){ae(e,t,ua,n)}function Kf(e,t,n){h(e,t)}var _c,$f,Xf,n3,i3,Yf;function r3(e){e.monsterinfo.current_move=_c}function a3(e){e.monsterinfo.current_move=$f}function gc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Xf:e.monsterinfo.current_move=_c}function s3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,5,1e3,0,0,t,1)}function o3(e){e.monsterinfo.nextframe=Yf.lastframe,e.nextthink=-1}var c3=Array.from({length:46},()=>({ai:Jb,dist:0}));_c={firstframe:0,lastframe:45,frames:c3,endfunc:r3};var u3=Array.from({length:46},()=>({ai:Qb,dist:5}));$f={firstframe:0,lastframe:45,frames:u3,endfunc:a3};var d3=Array.from({length:46},()=>({ai:e3,dist:10}));Xf={firstframe:0,lastframe:45,frames:d3,endfunc:gc};var l3=Array.from({length:20},(e,t)=>({ai:t3,dist:0,think:t===10?s3:null}));n3={firstframe:46,lastframe:65,frames:l3,endfunc:gc};var m3=Array.from({length:6},()=>({ai:Kf,dist:0}));i3={firstframe:66,lastframe:71,frames:m3,endfunc:gc};var f3=Array.from({length:10},()=>({ai:Kf,dist:0}));Yf={firstframe:84,lastframe:93,frames:f3,endfunc:o3};var da=.1;function h3(e,t,n){M(e,da,n)}function _3(e,t,n){N(e,t,da,n)}function g3(e,t,n){ie(e,t,da,n)}function v3(e,t,n){ae(e,t,da,n)}function jf(e,t,n){h(e,t)}var vc,Zf,qf,p3,y3,Jf;function w3(e){e.monsterinfo.current_move=vc}function S3(e){e.monsterinfo.current_move=Zf}function pc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=qf:e.monsterinfo.current_move=vc}function A3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,5,1e3,0,0,t,1)}function k3(e){e.monsterinfo.nextframe=Jf.lastframe,e.nextthink=-1}var x3=Array.from({length:46},()=>({ai:h3,dist:0}));vc={firstframe:0,lastframe:45,frames:x3,endfunc:w3};var E3=Array.from({length:46},()=>({ai:_3,dist:5}));Zf={firstframe:0,lastframe:45,frames:E3,endfunc:S3};var b3=Array.from({length:46},()=>({ai:g3,dist:10}));qf={firstframe:0,lastframe:45,frames:b3,endfunc:pc};var T3=Array.from({length:20},(e,t)=>({ai:v3,dist:0,think:t===10?A3:null}));p3={firstframe:46,lastframe:65,frames:T3,endfunc:pc};var M3=Array.from({length:6},()=>({ai:jf,dist:0}));y3={firstframe:66,lastframe:71,frames:M3,endfunc:pc};var R3=Array.from({length:10},()=>({ai:jf,dist:0}));Jf={firstframe:84,lastframe:93,frames:R3,endfunc:k3};var la=.1;function z3(e,t,n){M(e,la,n)}function L3(e,t,n){N(e,t,la,n)}function N3(e,t,n){ie(e,t,la,n)}function O3(e,t,n){ae(e,t,la,n)}function yc(e,t,n){h(e,t)}var wc,Qf,eh,I3,C3,th,P3;function F3(e){e.monsterinfo.current_move=wc}function D3(e){e.monsterinfo.current_move=Qf}function ma(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=eh:e.monsterinfo.current_move=wc}function U3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=D(C(i,n));It(e,n,r,5,2,.05,.05,0,t,4)}var B3=Array.from({length:22},()=>({ai:z3,dist:0}));wc={firstframe:0,lastframe:21,frames:B3,endfunc:F3};var G3=Array.from({length:15},()=>({ai:L3,dist:4}));Qf={firstframe:22,lastframe:36,frames:G3,endfunc:D3};var H3=Array.from({length:8},()=>({ai:N3,dist:12}));eh={firstframe:37,lastframe:44,frames:H3,endfunc:ma};var W3=Array.from({length:15},(e,t)=>({ai:O3,dist:0,think:t>=5&&t<=7?U3:null}));I3={firstframe:45,lastframe:59,frames:W3,endfunc:ma};var V3=Array.from({length:10},()=>({ai:yc,dist:0}));C3={firstframe:60,lastframe:69,frames:V3,endfunc:ma};var K3=Array.from({length:20},()=>({ai:yc,dist:0}));function $3(e){e.monsterinfo.nextframe=th.lastframe,e.nextthink=-1}th={firstframe:70,lastframe:89,frames:K3,endfunc:$3};var X3=Array.from({length:5},()=>({ai:yc,dist:0}));P3={firstframe:90,lastframe:94,frames:X3,endfunc:ma};var Pi=.1,Y3={x:30,y:28,z:24},j3={x:26,y:16,z:24},Z3={x:26,y:-14,z:24};function q3(e,t,n){M(e,Pi,n)}function J3(e,t,n){N(e,t,Pi,n)}function Q3(e,t,n){ie(e,t,Pi,n)}function nh(e,t,n){ae(e,t,Pi,n)}function Cn(e,t,n){h(e,t)}var Sc,ih,rh,ah,Ac,sh,oh,ch,uh,kc,No;function dh(e){e.monsterinfo.current_move=Sc}function lh(e){e.monsterinfo.current_move=ih}function pt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=rh:e.monsterinfo.current_move=Sc}function e6(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=ah:t<=.6?e.monsterinfo.current_move=Ac:e.monsterinfo.current_move=sh}function xc(e,t){let{forward:n,right:i,up:r}=te(e.angles),a={...e.origin},s=B(n,t.x),o=B(i,t.y),u=B(r,t.z);return W(W(W(a,s),o),u)}function t6(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=xc(e,Y3),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=D(C(i,n));Zm(e,n,r,50,300,100,300,0,t)}function n6(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=xc(e,Z3),i=D(C(e.pos1,n));qm(e,n,i,50,100,0,t)}function i6(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function r6(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=xc(e,j3),i=(e.monsterinfo.nextframe||0)-Ac.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=C(s,n),c={...Rn(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=te(c).forward}else{let{forward:s}=te(e.angles);a=s}dt(e,n,a,15,1e3,0,0,t,1)}function a6(e,t,n,i,r){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(i<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,i<=40?(r.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=oh):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=ch):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=uh)))}function s6(e,t){++e.frame>=365&&(e.frame=346),e.nextthink=t.timeSeconds+.1,e.angles.x>0&&(e.angles={...e.angles,x:Math.max(0,e.angles.x-15)})}function o6(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=s6,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=te(e.angles),r=B(i,120),a=B(n,-120);e.velocity=W(W(e.velocity,r),a),e.origin=W(e.origin,B(n,-10)),e.angles={...e.angles,x:90},e.avelocity=$,t.linkentity(e)}function c6(e,t){let n=t.spawn();n.classname="makron_torso",n.origin={...e.origin},n.angles={...e.angles},n.origin.z+=e.maxs.z-15,o6(n,t)}function u6(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),c6(e,t),e.monsterinfo.current_move=kc,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function d6(e){e.monsterinfo.nextframe=kc.lastframe,e.nextthink=-1}var l6=Array.from({length:60},()=>({ai:q3,dist:0}));Sc={firstframe:0,lastframe:59,frames:l6,endfunc:dh};var m6=Array.from({length:10},()=>({ai:J3,dist:8}));ih={firstframe:60,lastframe:69,frames:m6,endfunc:lh};var f6=Array.from({length:10},()=>({ai:Q3,dist:8}));rh={firstframe:60,lastframe:69,frames:f6,endfunc:pt};var h6=Array.from({length:8},(e,t)=>({ai:nh,dist:0,think:t===3?t6:null}));ah={firstframe:70,lastframe:77,frames:h6,endfunc:pt};var _6=Array.from({length:26},(e,t)=>({ai:Cn,dist:0,think:t>=4&&t<=20?r6:null}));Ac={firstframe:78,lastframe:103,frames:_6,endfunc:pt};var g6=Array.from({length:16},(e,t)=>({ai:nh,dist:0,think:t===7?i6:t===8?n6:null}));sh={firstframe:104,lastframe:119,frames:g6,endfunc:pt};var v6=Array.from({length:4},()=>({ai:Cn,dist:0}));oh={firstframe:120,lastframe:123,frames:v6,endfunc:pt};var p6=Array.from({length:4},()=>({ai:Cn,dist:0}));ch={firstframe:124,lastframe:127,frames:p6,endfunc:pt};var y6=Array.from({length:27},()=>({ai:Cn,dist:0}));uh={firstframe:128,lastframe:154,frames:y6,endfunc:pt};var w6=Array.from({length:95},()=>({ai:Cn,dist:0}));kc={firstframe:155,lastframe:249,frames:w6,endfunc:d6};var S6=Array.from({length:13},()=>({ai:Cn,dist:0}));No={firstframe:250,lastframe:262,frames:S6,endfunc:pt};function A6(e,t){e.classname="monster_makron",e.model="models/monsters/boss3/rider/tris.md2",e.mins={x:-30,y:-30,z:0},e.maxs={x:30,y:30,z:90},e.movetype=5,e.solid=2,e.health=3e3,e.max_health=3e3,e.mass=500,e.takedamage=!0,e.viewheight=90,e.pain=(n,i,r,a)=>a6(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){Gm(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,u6(n,t.entities)},e.monsterinfo.stand=dh,e.monsterinfo.walk=lh,e.monsterinfo.run=pt,e.monsterinfo.attack=e6,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=No},e.think=gx,e.monsterinfo.current_move=No,e.nextthink=e.timestamp+Pi}var fa=.1,k6={x:40,y:-20,z:20},x6={x:40,y:20,z:20},E6={x:30,y:0,z:40};function b6(e,t,n){M(e,fa,n)}function T6(e,t,n){N(e,t,fa,n)}function M6(e,t,n){ie(e,t,fa,n)}function Ec(e,t,n){ae(e,t,fa,n)}function Fi(e,t,n){h(e,t)}var bc,mh,fh,Tc,Oo,R6,z6,L6,N6,hh;function O6(e){e.monsterinfo.current_move=bc}function I6(e){e.monsterinfo.current_move=mh}function Pn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=fh:e.monsterinfo.current_move=bc}function C6(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&qt(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=Tc:e.monsterinfo.current_move=Oo}function Io(e,t){let{forward:n,right:i,up:r}=te(e.angles),a={...e.origin},s=B(n,t.x),o=B(i,t.y),u=B(r,t.z);return W(W(W(a,s),o),u)}function P6(e,t){if(!e.enemy)return;let n=Io(e,x6),i=D(C(e.enemy.origin,n));Wr(e,n,i,6,4,.05,.05,0,t,4);let r=Io(e,k6),a=D(C(e.enemy.origin,r));Wr(e,r,a,6,4,.05,.05,0,t,4)}function F6(e,t){if(!e.enemy)return;let n=Io(e,E6),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=D(C(i,n));Zm(e,n,r,50,300,100,200,0,t)}function D6(e){e.monsterinfo.nextframe=hh.lastframe,e.nextthink=-1}function U6(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,A6(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=C(n.enemy.origin,n.origin);n.angles={...n.angles,y:zi(r)};let a=D(r),s=B(a,400);n.velocity={x:s.x,y:s.y,z:200},n.groundentity=null,n.monsterinfo.sight&&n.monsterinfo.sight(n,n.enemy)}}var B6=Array.from({length:51},()=>({ai:b6,dist:0}));bc={firstframe:0,lastframe:50,frames:B6,endfunc:O6};var G6=Array.from({length:14},()=>({ai:T6,dist:10}));mh={firstframe:51,lastframe:64,frames:G6,endfunc:I6};var H6=Array.from({length:14},()=>({ai:M6,dist:10}));fh={firstframe:51,lastframe:64,frames:H6,endfunc:Pn};var W6=Array.from({length:8},()=>({ai:Ec,dist:0})),V6={firstframe:65,lastframe:72,frames:W6,endfunc:null},K6=Array.from({length:6},()=>({ai:Ec,dist:0,think:P6}));Tc={firstframe:73,lastframe:78,frames:K6,endfunc:C6};V6.endfunc=e=>{e.monsterinfo.current_move=Tc};var $6=Array.from({length:4},()=>({ai:Fi,dist:0}));Oo={firstframe:79,lastframe:82,frames:$6,endfunc:Pn};var X6=Array.from({length:13},(e,t)=>({ai:Ec,dist:0,think:t===6?F6:null}));R6={firstframe:83,lastframe:95,frames:X6,endfunc:Pn};var Y6=Array.from({length:3},()=>({ai:Fi,dist:0}));z6={firstframe:96,lastframe:98,frames:Y6,endfunc:Pn};var j6=Array.from({length:3},()=>({ai:Fi,dist:0}));L6={firstframe:99,lastframe:101,frames:j6,endfunc:Pn};var Z6=Array.from({length:25},()=>({ai:Fi,dist:0}));N6={firstframe:102,lastframe:126,frames:Z6,endfunc:Pn};var q6=Array.from({length:50},(e,t)=>({ai:Fi,dist:0,think:t===49?((n,i)=>{}):t===48?U6:null}));hh={firstframe:127,lastframe:176,frames:q6,endfunc:D6};var Mc=.1,ha=4,_h=8,_a=16,J6=32,Rc=64,Q6=0,eT=39,tT=40,nT=58,iT=59,gh=64,rT=93,aT=95,zc=99,vh=159,ph=160,yh=172,wh=173,Sh=198,sT=199,oT=209,cT=210,uT=226,Lc=227,Nc=235,Ah=236,Vr=244,dT=245,lT=251,mT=252,fT=266,hT=267,_T=281,kh,xh,Eh,bh,Th,Di,Mh,Rh,zh,Lh,gT,vT,Nh,Oh,pT,yT,Oc,Ih,wT="insane/insane11.wav",ST="insane/insane5.wav",AT="insane/insane7.wav",Em=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function Co(e,t){t.sound(e,2,wT,1,1,0)}function kT(e,t){(e.spawnflags&Rc)===0&&t.sound(e,2,ST,1,1,0)}function Ic(e,t){e.spawnflags&Rc||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,AT,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function Dt(e,t){if(!(e.spawnflags&Rc)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=Em[Math.floor(Math.random()*Em.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function Ue(e,t){}function Ch(e,t){e.spawnflags&J6||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=Eh:e.monsterinfo.current_move=Th)}function xT(e,t){e.spawnflags&ha&&e.spawnflags&_a||Math.random()<.5&&(e.monsterinfo.current_move=bh)}function Cc(e,t){e.monsterinfo.current_move=Di}function Ph(e,t){Math.random()<.8?e.monsterinfo.current_move=Oc:e.monsterinfo.current_move=Ih}function Pc(e,t){e.spawnflags&_h?(e.monsterinfo.current_move=Oc,e.monsterinfo.aiflags|=1):e.spawnflags&ha&&e.spawnflags&_a?e.monsterinfo.current_move=Di:Math.random()<.5?e.monsterinfo.current_move=kh:e.monsterinfo.current_move=xh}function Fc(e,t){if(e.spawnflags&_a&&e.frame===Vr){e.monsterinfo.current_move=Di;return}e.spawnflags&ha?e.monsterinfo.current_move=Nh:Math.random()<=.5?e.monsterinfo.current_move=Mh:e.monsterinfo.current_move=zh}function Ui(e,t){if(e.spawnflags&_a&&e.frame===Vr){e.monsterinfo.current_move=Di;return}let n=e.frame;e.spawnflags&ha||n>=Ah&&n<=Vr||n>=Lc&&n<=Nc||n>=zc&&n<=vh?e.monsterinfo.current_move=Oh:Math.random()<=.5?e.monsterinfo.current_move=Rh:e.monsterinfo.current_move=Lh}function Fh(e,t){e.spawnflags&_h?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function l(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,Mc,a)},dist:t}}var ET=[l(M),l(M),l(M),l(M),l(M),l(M,0,Ch)];kh={firstframe:iT,lastframe:gh,frames:ET,endfunc:Pc};var bT=[l(M,0,kT),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M),l(M,0,Ch)];xh={firstframe:gh,lastframe:rT,frames:bT,endfunc:Pc};var TT=[l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,0,Ic),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,2.7),l(h,4.1),l(h,6),l(h,7.6),l(h,3.6),l(h),l(h),l(h,0,Co),l(h),l(h),l(h),l(h),l(h),l(h,0,Co),l(h),l(h),l(h),l(h),l(h),l(h)];Eh={firstframe:Q6,lastframe:eT,frames:TT,endfunc:Cc};var MT=[l(h,-.7),l(h,-1.2),l(h,-1.5),l(h,-4.5),l(h,-3.5),l(h,-.2),l(h),l(h,-1.3),l(h,-3),l(h,-2),l(h),l(h),l(h),l(h,-3.3),l(h,-1.6),l(h,-.3),l(h),l(h),l(h)];bh={firstframe:tT,lastframe:nT,frames:MT,endfunc:Pc};var RT=[l(h,.2),l(h,11.5),l(h,5.1),l(h,7.1),l(h)];Th={firstframe:aT,lastframe:zc,frames:RT,endfunc:Cc};var zT=[l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,-1.7),l(h,-1.6),l(h),l(h),l(h),l(h,0,Co),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,0,Ic),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h,.5),l(h),l(h,-.2,Dt),l(h),l(h,.2),l(h,.4),l(h,.6),l(h,.8),l(h,.7),l(h,0,xT)];Di={firstframe:zc,lastframe:vh,frames:zT,endfunc:Cc};var Po=[l(N,0,Dt),l(N,2.5),l(N,3.5),l(N,1.7),l(N,2.3),l(N,2.4),l(N,2.2,Ue),l(N,4.2),l(N,5.6),l(N,3.3),l(N,2.4),l(N,.9),l(N,0,Ue)];Mh={firstframe:ph,lastframe:yh,frames:Po,endfunc:Fc};Rh={firstframe:ph,lastframe:yh,frames:Po.map(e=>({ai:(t,n,i)=>{e.ai===Po[0].ai&&Dt(t,i),ie(t,n,Mc,i)},dist:e.dist})),endfunc:Ui};var Fo=[l(N,0,Dt),l(N,3.4),l(N,3.6),l(N,2.9),l(N,2.2),l(N,2.6,Ue),l(N),l(N,.7),l(N,4.8),l(N,5.3),l(N,1.1),l(N,2,Ue),l(N,.5),l(N),l(N),l(N,4.9),l(N,6.7),l(N,3.8),l(N,2,Ue),l(N,.2),l(N),l(N,3.4),l(N,6.4),l(N,5),l(N,1.8,Ue),l(N)];zh={firstframe:wh,lastframe:Sh,frames:Fo,endfunc:Fc};Lh={firstframe:wh,lastframe:Sh,frames:Fo.map(e=>({ai:(t,n,i)=>{e.ai===Fo[0].ai&&Dt(t,i),ie(t,n,Mc,i)},dist:e.dist})),endfunc:Ui};var LT=[l(h),l(h),l(h),l(h),l(h,0,Ue),l(h),l(h),l(h),l(h),l(h),l(h,0,Ue)];gT={firstframe:sT,lastframe:oT,frames:LT,endfunc:Ui};var NT=[l(h),l(h),l(h),l(h),l(h,0,Ue),l(h),l(h),l(h),l(h),l(h),l(h,0,Ue),l(h),l(h,0,Ue),l(h),l(h),l(h),l(h)];vT={firstframe:cT,lastframe:uT,frames:NT,endfunc:Fh};var Dh=[l(N,0,Dt),l(N,1.5),l(N,2.1),l(N,3.6),l(N,2,Ue),l(N,.9),l(N,3),l(N,3.4),l(N,2.4,Ue)];Nh={firstframe:Lc,lastframe:Nc,frames:Dh,endfunc:Fc};Oh={firstframe:Lc,lastframe:Nc,frames:Dh,endfunc:Ui};var OT=[l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h)];pT={firstframe:Ah,lastframe:Vr,frames:OT,endfunc:Ui};var IT=[l(h),l(h),l(h),l(h),l(h,0,Dt),l(h),l(h)];yT={firstframe:dT,lastframe:lT,frames:IT,endfunc:Fh};var CT=[l(h,0,Ic),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h)];Oc={firstframe:mT,lastframe:fT,frames:CT,endfunc:Ph};var PT=[l(h,0,Dt),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h),l(h)];Ih={firstframe:hT,lastframe:_T,frames:PT,endfunc:Ph};var FT=.1,DT=0;var Do=0,Uh=39,UT=40,BT=47,GT=48,HT=53,WT=54,VT=56,KT=57,$T=59,XT=60,YT=62,jT=63,ZT=76,qT=77,JT=93,QT=94,eM=100,tM=101,nM=113,iM=114,rM=117,Bh,Gh,Hh,aM,sM,oM,cM,uM,dM,lM,mM;function k(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,FT,a)},dist:t}}function bm(e,t){e.monsterinfo.current_move=Bh,t.timeSeconds<1&&(e.frame=Do+Math.floor(Math.random()*(Uh-Do+1)))}function fM(e,t){e.monsterinfo.current_move=Gh}function Fn(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?fM(e,t):bm(e,t);return}if(e.monsterinfo.aiflags&1){bm(e,t);return}e.monsterinfo.current_move=Hh}function hM(e,t){let n={x:0,y:0,z:0},r=te(e.angles).forward,a=xi(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=C(e.enemy.origin,B(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=xi(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=C(o,a),s=D(s)}else s=r;It(e,a,s,3,4,0,0,DT,t)}function Wh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.svflags|=1,e.nextthink=-1,t.linkentity(e)}function _M(e,t){hM(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var gM=[k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M)];Bh={firstframe:Do,lastframe:Uh,frames:gM,endfunc:null};var vM=[k(N),k(N,6),k(N,10),k(N,3),k(N,2),k(N,7),k(N,10),k(N,1)];Gh={firstframe:UT,lastframe:BT,frames:vM,endfunc:null};var pM=[k(ie,4),k(ie,15),k(ie,15),k(ie,8),k(ie,20),k(ie,15)];Hh={firstframe:GT,lastframe:HT,frames:pM,endfunc:null};var yM=[k(h,-5),k(h,4),k(h,1)];aM={firstframe:WT,lastframe:VT,frames:yM,endfunc:Fn};var wM=[k(h,-4),k(h,4),k(h)];sM={firstframe:KT,lastframe:$T,frames:wM,endfunc:Fn};var SM=[k(h,-1),k(h,1),k(h,0)];oM={firstframe:XT,lastframe:YT,frames:SM,endfunc:Fn};var AM=[k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee)];cM={firstframe:jT,lastframe:ZT,frames:AM,endfunc:Fn};var kM=[k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee),k(ee)];uM={firstframe:qT,lastframe:JT,frames:kM,endfunc:Fn};var xM=[k(h),k(h),k(h,-13),k(h,14),k(h,3),k(h,-2),k(h,1)];dM={firstframe:QT,lastframe:eM,frames:xM,endfunc:Wh};var EM=[k(h),k(h,7),k(h,-6),k(h,-5),k(h,1),k(h),k(h,-1),k(h,-2),k(h,-1),k(h,-9),k(h,-13),k(h,-13),k(h)];lM={firstframe:tM,lastframe:nM,frames:EM,endfunc:Wh};var bM=[k(ae,-2,_M),k(ae,-2),k(ae,3),k(ae,2)];mM={firstframe:iM,lastframe:rM,frames:bM,endfunc:Fn};var Ti=.1;function TM(e,t,n){if(e.classname==="monster_medic"&&Xh(e,n)){e.monsterinfo.current_move=Bi;return}M(e,Ti,n)}function MM(e,t,n){N(e,t,Ti,n)}function RM(e,t,n){e.classname==="monster_medic"&&Xh(e,n)?e.monsterinfo.current_move=Bi:ie(e,t,Ti,n)}function ut(e,t,n){ae(e,t,Ti,n)}function Dc(e,t,n){h(e,t)}var Uc,Vh,Bi,zM,Kh,LM,NM,$h;function OM(e){e.monsterinfo.current_move=Uc}function IM(e){e.monsterinfo.current_move=Vh}function Gi(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&Pt(e,e.enemy)<80){e.monsterinfo.current_move=Kh;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Bi:e.monsterinfo.current_move=Uc}function CM(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(C(e.enemy.origin,n));dt(e,n,i,2,1e3,0,0,t,10)}function Lt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(Pt(e,e.enemy)>400){e.monsterinfo.current_move=Bi;return}let i=te(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},u=W(e.origin,W(B(r,o.x),W(B(a,o.y),B(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,Te.temp_entity,{te:Me.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:u,end:c})}function PM(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Lt(e,t)}function FM(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(Pt(e,n)>400){e.enemy=null;return}if(!i)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function Xh(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,u,c,d)=>{let f=t.trace(a,s,o,u,c,d);return{fraction:f.fraction,ent:f.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!qt(e,a,r))return;let s=Pt(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function DM(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=te(e.angles),s=B(a.forward,64),o=W(e.origin,s),u={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},u,e,Ie|Zt|Yr);if(c.fraction<1||c.startsolid||c.allsolid)return;let d=t.spawn();d.origin=u,d.angles={...e.angles},r(d,{entities:t,keyValues:{classname:i},warn:()=>{},free:m=>t.free(m)}),d.enemy=e.enemy,t.multicast(u,1,Te.muzzleflash,{entId:d.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function UM(e){e.monsterinfo.nextframe=$h.lastframe,e.nextthink=-1}var BM=Array.from({length:30},()=>({ai:TM,dist:0}));Uc={firstframe:0,lastframe:29,frames:BM,endfunc:OM};var GM=Array.from({length:40},()=>({ai:MM,dist:3}));Vh={firstframe:30,lastframe:69,frames:GM,endfunc:IM};var HM=Array.from({length:20},()=>({ai:RM,dist:12}));Bi={firstframe:70,lastframe:89,frames:HM,endfunc:Gi};var WM=Array.from({length:16},(e,t)=>({ai:ut,dist:0,think:t>=4&&t<=13?CM:null}));zM={firstframe:90,lastframe:105,frames:WM,endfunc:Gi};var VM=[{ai:ut,dist:0,think:PM},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:Lt},{ai:ut,dist:0,think:FM}];Kh={firstframe:106,lastframe:114,frames:VM,endfunc:Gi};var KM=Array.from({length:6},()=>({ai:Dc,dist:0}));NM={firstframe:116,lastframe:121,frames:KM,endfunc:Gi};var $M=Array.from({length:23},(e,t)=>({ai:Dc,dist:0,think:t===11?DM:null}));LM={firstframe:122,lastframe:144,frames:$M,endfunc:Gi};var XM=Array.from({length:30},()=>({ai:Dc,dist:0}));$h={firstframe:161,lastframe:190,frames:XM,endfunc:UM};var Hi=.1;function U(e,t,n){M(e,Hi,n)}function Fe(e,t,n){N(e,t,Hi,n)}function Sn(e,t,n){ie(e,t,Hi,n)}function zt(e,t,n){ae(e,t,Hi,n)}function ne(e,t,n){h(e,t)}function xo(e,t,n){qk(e,null,t,Hi)}var Yh,jh,Kr,YM,jM,ZM,qM,Zh,qh;function JM(e){e.monsterinfo.current_move=jh}function QM(e){e.monsterinfo.current_move=Yh}function Dn(e){e.monsterinfo.current_move=Kr}function Jh(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=C(e.enemy.origin,e.origin);if(qe(i)>100)return;let a=D(i);he(e.enemy,e,e,a,e.enemy.origin,$,t,0,0,0,n.timeSeconds)}function e8(e,t){Jh(e,30,t)}function Tm(e,t){Jh(e,30,t)}function En(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Kr),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Kr)}function t8(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),he(t,e,e,D(e.velocity),e.origin,$,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function n8(e,t){let n=te(e.angles).forward;e.movetype=7,e.touch=t8,e.velocity=W(B(n,300),{x:0,y:0,z:300}),e.velocity=W(B(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function i8(e){e.monsterinfo.nextframe=Zh.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var r8=[{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0}];Yh={firstframe:0,lastframe:50,frames:r8,endfunc:QM};var a8=[{ai:Fe,dist:3},{ai:Fe,dist:1},{ai:Fe,dist:5},{ai:Fe,dist:10},{ai:Fe,dist:13},{ai:Fe,dist:12},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:5},{ai:Fe,dist:6},{ai:Fe,dist:16},{ai:Fe,dist:15},{ai:Fe,dist:6}];jh={firstframe:51,lastframe:63,frames:a8,endfunc:JM};var s8=[{ai:Sn,dist:20},{ai:Sn,dist:15},{ai:Sn,dist:35},{ai:Sn,dist:20},{ai:Sn,dist:10},{ai:Sn,dist:20}];Kr={firstframe:64,lastframe:69,frames:s8,endfunc:Dn};var o8=[{ai:zt,dist:0},{ai:zt,dist:0},{ai:zt,dist:0,think:Tm},{ai:zt,dist:0},{ai:zt,dist:0,think:e8},{ai:zt,dist:0},{ai:zt,dist:0,think:Tm},{ai:zt,dist:0}];YM={firstframe:70,lastframe:77,frames:o8,endfunc:Dn};var c8=[{ai:xo,dist:0},{ai:xo,dist:0},{ai:xo,dist:0,think:n8},{ai:ne,dist:0,think:En},{ai:ne,dist:0,think:En},{ai:ne,dist:0,think:En},{ai:ne,dist:0,think:En},{ai:ne,dist:0,think:En}];qh={firstframe:93,lastframe:100,frames:c8,endfunc:Dn};qh.frames[3].ai=(e,t,n)=>{En(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var u8=[{ai:ne,dist:4},{ai:ne,dist:-3},{ai:ne,dist:-8},{ai:ne,dist:2},{ai:ne,dist:5}];jM={firstframe:78,lastframe:82,frames:u8,endfunc:Dn};var d8=[{ai:ne,dist:-24},{ai:ne,dist:11},{ai:ne,dist:5},{ai:ne,dist:-2}];ZM={firstframe:83,lastframe:86,frames:d8,endfunc:Dn};var l8=[{ai:ne,dist:11},{ai:ne,dist:0},{ai:ne,dist:-2},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];qM={firstframe:87,lastframe:92,frames:l8,endfunc:Dn};var m8=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];Zh={firstframe:101,lastframe:109,frames:m8,endfunc:i8};var ga=.1,f8=()=>Math.random();function J(e,t,n){M(e,ga,n)}function _t(e,t,n){N(e,t,ga,n)}function gt(e,t,n){ie(e,t,ga,n)}function xe(e,t,n){ae(e,t,ga,n)}function Ee(e,t,n){h(e,t)}var Bc,Qh,e0,h8,_8,t0,n0,g8,v8,Gc,i0;function p8(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function y8(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function An(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Uo(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function w8(e){e.monsterinfo.current_move=Gc}function S8(e){f8()<=.8?e.monsterinfo.current_move=Gc:e.monsterinfo.current_move=i0}function r0(e){e.monsterinfo.current_move=Bc}function Hc(e){e.monsterinfo.current_move=Qh}function a0(e){e.monsterinfo.current_move=n0}function s0(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Bc:e.monsterinfo.current_move=e0}function Eo(e,t){let n=C(t,e);if(qe(n)>256)return!1;let a=Rn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function je(e,t){if(!e.enemy)return;let n=te(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=W(e.origin,W(B(i,s.x),W(B(r,s.y),B(a,s.z)))),u=xi(e.enemy.origin);if(!Eo(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Eo(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.mins.z+8},!Eo(o,u)))||t.trace(o,u,$,$,e,Nt).ent!==e.enemy)return;let d=2,f=e.frame;f===41?(d=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(f===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),d=2),t.multicast(e.origin,0,Te.temp_entity,{te:Me.PARASITE_ATTACK,entId:e.index,start:o,end:u});let m=D(C(o,u));he(e.enemy,e,e,m,e.enemy.origin,$,d,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=d,e.health>e.max_health&&(e.health=e.max_health))}function A8(e){e.monsterinfo.nextframe=t0.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var k8=[{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:An},{ai:J,dist:0},{ai:J,dist:0,think:An}];Bc={firstframe:83,lastframe:99,frames:k8,endfunc:r0};var x8=[{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0}];v8={firstframe:100,lastframe:103,frames:x8,endfunc:w8};var E8=[{ai:J,dist:0,think:Uo},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:Uo},{ai:J,dist:0},{ai:J,dist:0}];Gc={firstframe:104,lastframe:109,frames:E8,endfunc:S8};var b8=[{ai:J,dist:0,think:Uo},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0}];i0={firstframe:110,lastframe:117,frames:b8,endfunc:r0};var T8=[{ai:gt,dist:0},{ai:gt,dist:30}];n0={firstframe:68,lastframe:69,frames:T8,endfunc:s0};var M8=[{ai:gt,dist:30},{ai:gt,dist:30},{ai:gt,dist:22},{ai:gt,dist:19},{ai:gt,dist:24},{ai:gt,dist:28},{ai:gt,dist:25}];e0={firstframe:70,lastframe:76,frames:M8,endfunc:s0};var R8=[{ai:_t,dist:0},{ai:_t,dist:30,think:Hc}];g8={firstframe:68,lastframe:69,frames:R8,endfunc:Hc};var z8=[{ai:_t,dist:30},{ai:_t,dist:30},{ai:_t,dist:22},{ai:_t,dist:19},{ai:_t,dist:24},{ai:_t,dist:28},{ai:_t,dist:25}];Qh={firstframe:70,lastframe:76,frames:z8,endfunc:Hc};var L8=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:6},{ai:Ee,dist:16},{ai:Ee,dist:-6},{ai:Ee,dist:-7},{ai:Ee,dist:0}];_8={firstframe:57,lastframe:67,frames:L8,endfunc:a0};var N8=[{ai:xe,dist:0,think:p8},{ai:xe,dist:0},{ai:xe,dist:15,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:-2,think:je},{ai:xe,dist:-2,think:je},{ai:xe,dist:-3,think:je},{ai:xe,dist:-2,think:je},{ai:xe,dist:0,think:je},{ai:xe,dist:-1,think:je},{ai:xe,dist:0,think:y8},{ai:xe,dist:-2},{ai:xe,dist:-2},{ai:xe,dist:-3},{ai:xe,dist:0}];h8={firstframe:39,lastframe:56,frames:N8,endfunc:a0};var O8=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0}];t0={firstframe:32,lastframe:38,frames:O8,endfunc:A8};var va=.1;var I8=2,C8=4;function P8(e,t,n){M(e,va,n)}function F8(e,t,n){N(e,t,va,n)}function D8(e,t,n){ie(e,t,va,n)}function o0(e,t,n){ae(e,t,va,n)}function c0(e,t,n){h(e,t)}var Wc,u0,d0,U8,B8,G8,l0;function H8(e){e.monsterinfo.current_move=Wc}function W8(e){e.monsterinfo.current_move=u0}function pa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=d0:e.monsterinfo.current_move=Wc}function Wi(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function Vi(e,t){if(!e.enemy){let{forward:i}=te(e.angles);return i}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return D(C(n,t))}function V8(e,t){if(!e.enemy)return;let n=Wi(e),i=Vi(e,n);dt(e,n,i,5,600,0,0,t,1)}function K8(e,t){if(!e.enemy)return;let n=Wi(e),i=Vi(e,n),r=2,a=4,s=20,o=.15,u=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),Kx(e,n,i,r,a,o,u,s,0,t,3)}function $8(e,t){if(!e.enemy)return;let n=Wi(e),i=Vi(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),It(e,n,i,r,a,s,o,0,t,4)}function X8(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=te(n.angles),s={...n.origin};s=W(s,B(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let u=D(C(o,s));e.origin=s,e.movedir=u,t.linkentity(e)}function Y8(e,t){if(!e.enemy)return;let n=Wi(e),i=Vi(e,n);Xx(e,n,i,5,600,0,0,t)}function j8(e,t){if(!e.enemy)return;let n=Wi(e),i=Vi(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),$x(e,n,i,r,a,0,0,t)}function Z8(e,t){e.enemy&&Ro(e,1,!1,X8,t)}function q8(e,t){e.count<2?Y8(e,t):e.count<4?j8(e,t):Z8(e,t)}function m0(e,t){if(e.style===1){q8(e,t);return}e.spawnflags&I8?K8(e,t):e.spawnflags&C8?$8(e,t):V8(e,t)}var J8=Array.from({length:30},()=>({ai:P8,dist:0}));Wc={firstframe:0,lastframe:29,frames:J8,endfunc:H8};var Q8=Array.from({length:40},()=>({ai:F8,dist:2}));u0={firstframe:30,lastframe:69,frames:Q8,endfunc:W8};var eR=Array.from({length:20},()=>({ai:D8,dist:10}));d0={firstframe:70,lastframe:89,frames:eR,endfunc:pa};var tR=Array.from({length:10},(e,t)=>({ai:o0,dist:0,think:t===5?m0:null}));U8={firstframe:90,lastframe:99,frames:tR,endfunc:pa};var nR=Array.from({length:10},(e,t)=>({ai:o0,dist:0,think:t>=4&&t<=8?m0:null}));B8={firstframe:90,lastframe:99,frames:nR,endfunc:pa};var iR=Array.from({length:6},()=>({ai:c0,dist:0}));G8={firstframe:100,lastframe:105,frames:iR,endfunc:pa};var rR=Array.from({length:10},()=>({ai:c0,dist:0}));function aR(e){e.monsterinfo.nextframe=l0.lastframe,e.nextthink=-1}l0={firstframe:106,lastframe:115,frames:rR,endfunc:aR};var f0=.1,sR={x:30,y:30,z:40},oR={x:30,y:-30,z:40},cR={x:20,y:0,z:70};function uR(e,t,n){M(e,f0,n)}function dR(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Kc:e.monsterinfo.current_move=ya}function Vc(e,t,n){ae(e,t,f0,n)}function Ki(e,t,n){h(e,t)}var ya,Kc,lR,mR,h0,_0,fR,hR,_R,g0;function gR(e){e.monsterinfo.current_move=ya}function en(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Kc:e.monsterinfo.current_move=ya}function $c(e,t){let{forward:n,right:i,up:r}=te(e.angles),a={...e.origin},s=B(n,t.x),o=B(i,t.y),u=B(r,t.z);return W(W(W(a,s),o),u)}function vR(e,t){if(!e.enemy)return;let n=$c(e,oR),i=D(C(e.enemy.origin,n));Oi(e,n,i,50,650,0,t)}function pR(e,t){if(!e.enemy)return;let n=$c(e,cR),i=D(C(e.enemy.origin,n));Yx(e,n,i,50,600,0,t)}function yR(e,t){if(!e.enemy)return;let n=$c(e,sR),i=D(C(e.enemy.origin,n));Wr(e,n,i,6,4,.05,.05,0,t,4)}function wR(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&qt(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=h0:e.monsterinfo.current_move=_0}function SR(e){e.monsterinfo.nextframe=g0.lastframe,e.nextthink=-1}var AR=Array.from({length:60},()=>({ai:uR,dist:0}));ya={firstframe:0,lastframe:59,frames:AR,endfunc:gR};var kR=Array.from({length:18},()=>({ai:dR,dist:12}));Kc={firstframe:60,lastframe:77,frames:kR,endfunc:en};var xR=Array.from({length:4},()=>({ai:Ki,dist:0}));_R={firstframe:78,lastframe:81,frames:xR,endfunc:en};var ER=Array.from({length:4},()=>({ai:Ki,dist:0}));hR={firstframe:82,lastframe:85,frames:ER,endfunc:en};var bR=Array.from({length:4},()=>({ai:Ki,dist:0}));fR={firstframe:86,lastframe:89,frames:bR,endfunc:en};var TR=Array.from({length:24},()=>({ai:Ki,dist:0}));g0={firstframe:90,lastframe:113,frames:TR,endfunc:SR};var MR=Array.from({length:6},(e,t)=>({ai:Vc,dist:0,think:t===0||t===3?pR:null}));mR={firstframe:114,lastframe:119,frames:MR,endfunc:en};var RR=Array.from({length:27},(e,t)=>({ai:Vc,dist:0,think:t===7||t===10||t===13?vR:null}));lR={firstframe:120,lastframe:146,frames:RR,endfunc:en};var zR=Array.from({length:6},()=>({ai:Vc,dist:0,think:yR}));h0={firstframe:147,lastframe:152,frames:zR,endfunc:wR};var LR=Array.from({length:14},()=>({ai:Ki,dist:0}));_0={firstframe:153,lastframe:166,frames:LR,endfunc:en};var Xc=.1;function v0(e,t,n,i,r){let a=r.trace(t,n,$,$,e,Nt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return D(C(n,t));let s=W(n,B(i,-20)),o=r.trace(t,s,$,$,e,Nt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return D(C(s,t));let u=W(n,B(i,20)),c=r.trace(t,u,$,$,e,Nt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?D(C(u,t)):null}function p0(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=C(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=zi(n)}}function NR(e,t,n){M(e,Xc,n)}function OR(e,t,n){N(e,t,Xc,n)}function IR(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=jc:e.monsterinfo.current_move=wa}function Yc(e,t,n){ae(e,t,Xc,n)}function y0(e,t,n){h(e,t)}var wa,w0,jc,CR,PR,FR,DR,S0;function UR(e){e.monsterinfo.current_move=wa}function BR(e){e.monsterinfo.current_move=w0}function $i(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=jc:e.monsterinfo.current_move=wa}function GR(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:u}=te(o),c=e.monsterinfo.blind_fire_target,d=v0(e,n,c,u,t);if(!d)return;i=d}else i=D(C(e.enemy.origin,n));dt(e,n,i,30,1e3,0,0,t,1)}function HR(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=D(C(e.enemy.origin,n));It(e,n,i,20,2,.05,.05,0,t,4)}function WR(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:u}=te(o),c=e.monsterinfo.blind_fire_target,d=v0(e,n,c,u,t);if(!d)return;i=d}else i=D(C(e.enemy.origin,n));Oi(e,n,i,50,650,0,t)}function VR(e){e.monsterinfo.nextframe=S0.lastframe,e.nextthink=-1}function KR(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),$i(e)}var $R=Array.from({length:30},()=>({ai:NR,dist:0}));wa={firstframe:0,lastframe:29,frames:$R,endfunc:UR};var XR=Array.from({length:16},()=>({ai:OR,dist:5}));w0={firstframe:30,lastframe:45,frames:XR,endfunc:BR};var YR=Array.from({length:16},()=>({ai:IR,dist:10}));jc={firstframe:46,lastframe:61,frames:YR,endfunc:$i};var jR=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=p0:t>5&&t<12&&(n=GR),{ai:Yc,dist:0,think:n}});CR={firstframe:62,lastframe:77,frames:jR,endfunc:$i};var ZR=Array.from({length:20},(e,t)=>({ai:Yc,dist:0,think:t%2===0&&t>5?HR:null}));PR={firstframe:78,lastframe:97,frames:ZR,endfunc:$i};var qR=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=p0:(t===8||t===12||t===16)&&(n=WR),{ai:Yc,dist:0,think:n}});FR={firstframe:98,lastframe:115,frames:qR,endfunc:KR};var JR=Array.from({length:6},()=>({ai:y0,dist:0}));DR={firstframe:116,lastframe:121,frames:JR,endfunc:$i};var QR=Array.from({length:16},()=>({ai:y0,dist:0}));S0={firstframe:122,lastframe:137,frames:QR,endfunc:VR};var Zc=.1;function e4(e,t,n){M(e,Zc,n)}function qc(e,t,n){ie(e,t,Zc,n)}function t4(e,t,n){ae(e,t,Zc,n)}var Jc,A0,n4,i4,k0;function r4(e){e.monsterinfo.current_move=Jc}function Qc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=A0:e.monsterinfo.current_move=Jc}function a4(e,t){if(!e.enemy)return;let n=te(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=D(C(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),dt(e,i,r,2,1e3,1,0,t)}var s4=Array.from({length:1},()=>({ai:e4,dist:0}));Jc={firstframe:0,lastframe:0,frames:s4,endfunc:r4};var o4=Array.from({length:1},()=>({ai:qc,dist:0}));A0={firstframe:0,lastframe:0,frames:o4,endfunc:Qc};var c4=Array.from({length:8},(e,t)=>({ai:t4,dist:0,think:t===4?a4:void 0}));n4={firstframe:1,lastframe:8,frames:c4,endfunc:Qc};var u4=Array.from({length:2},()=>({ai:qc,dist:0}));i4={firstframe:9,lastframe:10,frames:u4,endfunc:Qc};var d4=Array.from({length:4},()=>({ai:qc,dist:0}));function l4(e){e.monsterinfo.nextframe=k0.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}k0={firstframe:11,lastframe:14,frames:d4,endfunc:l4};var Sa=.1;var Mi=()=>Math.random(),Aa=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function Un(e,t,n){M(e,Sa,n)}function kn(e,t,n){N(e,t,Sa,n)}function De(e,t,n){ie(e,t,Sa,n)}function G(e,t,n){ae(e,t,Sa,n)}function Le(e,t,n){h(e,t)}var eu,x0,E0,ka,tu,m4,b0,f4,T0,M0,R0,z0,L0,h4,_4,g4,v4,p4,y4,w4,S4,A4,k4,xa=2,N0=80,x4=100;var E4=8;var nu=32;function Bn(e,t){!(e.spawnflags&nu)&&e.waterlevel>=xa&&D4(e)}function b4(e){e.waterlevel>=xa?(e.flags|=2,e.monsterinfo.current_move=x0):e.monsterinfo.current_move!==tu&&(e.monsterinfo.current_move=eu)}function O0(e){e.flags|=2,e.monsterinfo.current_move=E0}function Ea(e,t){if(!e.enemy)return;let n=Aa(5,10),i=100,r=C(e.enemy.origin,e.origin);qe(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),he(e.enemy,e,e,D(r),e.enemy.origin,$,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function iu(e,t){if(!e.enemy)return;let n=Aa(5,10),i=100,r=C(e.enemy.origin,e.origin);qe(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),he(e.enemy,e,e,D(r),e.enemy.origin,$,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function ru(e,t){if(!e.enemy)return;let n=5,i=N0,r=C(e.enemy.origin,e.origin);qe(r)<=i&&he(e.enemy,e,e,D(r),e.enemy.origin,$,n,0,0,0,t.timeSeconds)}function T4(e){e.monsterinfo.current_move=tu}function I0(e){Mi()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function C0(e,t){let n=Aa(0,2),i=["gek/gk_step1.wav","gek/gk_step2.wav","gek/gk_step3.wav"];t.engine.sound?.(e,0,i[n],1,1,0)}function P0(e,t){if(e.spawnflags&E4){let n=Mi();n<.33?t.engine.sound?.(e,0,"gek/gek_low.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"gek/gek_mid.wav",1,1,0):t.engine.sound?.(e,0,"gek/gek_high.wav",1,1,0)}else t.engine.sound?.(e,0,"gek/gk_idle1.wav",1,1,0);e.health+=Aa(10,20),e.health>e.max_health&&(e.health=e.max_health),e.health<e.max_health/4?e.skin=2:e.health<e.max_health/2?e.skin=1:e.skin=0}function yt(e){!(e.spawnflags&nu)&&e.waterlevel>=xa?e.monsterinfo.current_move=ka:e.monsterinfo.current_move=M0}function M4(e){!(e.spawnflags&nu)&&e.waterlevel>=xa?e.monsterinfo.current_move=ka:e.monsterinfo.current_move=T0}function F0(e){if(!e.enemy||e.enemy.health<=0)return;qe(C(e.enemy.origin,e.origin))<=N0&&(e.frame===114?e.monsterinfo.current_move=z0:e.frame===123&&(e.monsterinfo.current_move=R0))}function R4(e,t,n,i,r,a){let s=Yo(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function z4(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=te(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=W(e.origin,W(B(i,s.x),W(B(r,s.y),B(a,s.z))));o.z+=2;let u=xi(e.enemy.origin);u.z+=e.enemy.viewheight||0;let c=D(C(u,o));R4(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function L4(e){if(Mi()>.8&&e.health<e.max_health){e.monsterinfo.current_move=b0;return}if(e.enemy&&e.enemy.health>0){let t=qe(C(e.enemy.origin,e.origin));Mi()>.7&&t<=x4&&(e.monsterinfo.current_move=L0)}}function N4(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function O4(e,t){let i=te(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=W(B(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=N4}function I4(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=$;return}}function jt(e){e.groundentity&&(e.velocity=$)}function C4(e,t){}function ba(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function D0(e,t){Gm(t,e.origin,20),e.deadflag=2}function P4(e,t){Mi()>.9&&D0(e,t)}function F4(e){e.maxs.z=0}function D4(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=ka,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var U0=Array(38).fill({ai:Un,dist:0});U0[38]={ai:Un,dist:0,think:Bn};eu={firstframe:0,lastframe:38,frames:U0,endfunc:null};var U4=Array(32).fill({ai:Un,dist:14});x0={firstframe:39,lastframe:70,frames:U4,endfunc:null};var B4=Array(32).fill({ai:De,dist:14});E0={firstframe:39,lastframe:70,frames:B4,endfunc:O0};var Ta=Array(32).fill({ai:De,dist:14});Ta[8]={ai:De,dist:18,think:Ea};Ta[14]={ai:De,dist:24,think:iu};Ta[20]={ai:De,dist:22,think:ru};ka={firstframe:39,lastframe:70,frames:Ta,endfunc:O0};var au=Array(32).fill({ai:Un,dist:0});au[0]={ai:Un,dist:0,think:P0};au[31]={ai:Un,dist:0,think:I0};m4={firstframe:71,lastframe:102,frames:au,endfunc:b4};var Ma=Array(32).fill({ai:Le,dist:0});Ma[0]={ai:Le,dist:0,think:P0};Ma[31]={ai:Le,dist:0,think:I0};b0={firstframe:71,lastframe:102,frames:Ma,endfunc:e=>j4(e,eu)};tu={firstframe:71,lastframe:102,frames:Ma,endfunc:T4};var G4=[{ai:kn,dist:3.8,think:Bn},{ai:kn,dist:19.6},{ai:kn,dist:25.5},{ai:kn,dist:34.6,think:C0},{ai:kn,dist:27.3},{ai:kn,dist:28.4}];f4={firstframe:103,lastframe:108,frames:G4,endfunc:null};var H4=[{ai:De,dist:3.8,think:Bn},{ai:De,dist:19.6},{ai:De,dist:25.5},{ai:De,dist:34.6,think:C0},{ai:De,dist:27.3},{ai:De,dist:28.4}];T0={firstframe:103,lastframe:108,frames:H4,endfunc:null};var W4=[{ai:De,dist:.2},{ai:De,dist:19.7}];M0={firstframe:0,lastframe:1,frames:W4,endfunc:M4};var V4=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:z4},{ai:G,dist:0,think:L4}];L0={firstframe:133,lastframe:139,frames:V4,endfunc:yt};var K4=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:Ea},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:F0}];R0={firstframe:109,lastframe:117,frames:K4,endfunc:yt};var $4=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:Ea},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:iu},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:F0}];z0={firstframe:118,lastframe:126,frames:$4,endfunc:yt};var B0=[{ai:G,dist:0},{ai:G,dist:-.3},{ai:G,dist:-1.1},{ai:G,dist:-.2},{ai:G,dist:6.7,think:O4},{ai:G,dist:6.4},{ai:G,dist:.1},{ai:G,dist:28.3},{ai:G,dist:24.1},{ai:G,dist:31.7},{ai:G,dist:35.9,think:I4},{ai:G,dist:12.3,think:jt},{ai:G,dist:20.1,think:jt},{ai:G,dist:-1,think:jt},{ai:G,dist:2.5,think:jt},{ai:G,dist:.5,think:jt},{ai:G,dist:1.8,think:jt},{ai:G,dist:1.2,think:jt},{ai:G,dist:-.4,think:Bn}];h4={firstframe:140,lastframe:158,frames:B0,endfunc:yt};_4={firstframe:140,lastframe:158,frames:B0,endfunc:yt};var Gn=Array(21).fill({ai:G,dist:16});Gn[0]={ai:G,dist:16,think:C4};Gn[4]={ai:G,dist:16,think:ru};Gn[9]={ai:G,dist:16,think:ru};Gn[13]={ai:G,dist:16,think:Ea};Gn[18]={ai:G,dist:16,think:iu};g4={firstframe:159,lastframe:179,frames:Gn,endfunc:yt};var X4=Array(6).fill({ai:Le,dist:0});v4={firstframe:180,lastframe:185,frames:X4,endfunc:yt};var G0=Array(11).fill({ai:Le,dist:0});G0[10]={ai:Le,dist:0,think:Bn};p4={firstframe:186,lastframe:196,frames:G0,endfunc:yt};var H0=Array(13).fill({ai:Le,dist:0});H0[12]={ai:Le,dist:0,think:Bn};y4={firstframe:197,lastframe:209,frames:H0,endfunc:yt};var W0=Array(10).fill({ai:Le,dist:0});W0[5]={ai:Le,dist:-7,think:F4};w4={firstframe:210,lastframe:219,frames:W0,endfunc:ba};var V0=Array(7).fill({ai:Le,dist:0});V0[5]={ai:Le,dist:-7,think:P4};S4={firstframe:220,lastframe:226,frames:V0,endfunc:ba};var K0=Array(35).fill({ai:Le,dist:0});K0[34]={ai:Le,dist:0,think:D0};A4={firstframe:227,lastframe:261,frames:K0,endfunc:ba};var Y4=Array(45).fill({ai:Le,dist:0});k4={firstframe:262,lastframe:306,frames:Y4,endfunc:ba};function j4(e,t){e.monsterinfo.current_move=t}var su=.1,Z4=()=>Math.random(),Mm=()=>Math.random();function q4(e,t,n){N(e,t,su,n)}function J4(e,t,n){ie(e,t,su,n)}function Ra(e,t,n){ae(e,t,su,n)}function Je(e,t,n){h(e,t)}var Ri,Q4,ou,$0,X0,ez,tz,nz,iz,rz,az,sz,oz=1;function cz(e,t){let i=t.findByRadius(e.origin,1024),r=null;for(let a of i)if(a!==e&&a.monsterinfo&&!(a.monsterinfo.aiflags&256)&&!(a.health>0)&&!(a.nextthink&&a.think===t.free)&&!(a.health<=-40)&&qt(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function uz(e,t){if(e.enemy)return;let n=cz(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,Xi(e),void 0):Z4()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function dz(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=ou;return}let n=te(e.angles),i=W(e.origin,W(B(n.forward,0),W(B(n.right,0),B(n.up,0)))),r=xi(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=D(C(r,i));dt(e,i,a,15,1e3,oz,0,t)}function lz(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=Ri,e.monsterinfo.aiflags&=-8193;return}e.enemy.health<e.enemy.max_health?(e.enemy.health+=5,e.enemy.health>e.enemy.max_health&&(e.enemy.health=e.enemy.max_health)):(e.enemy.deadflag===2&&(e.enemy.deadflag=0,e.enemy.solid=2,e.enemy.takedamage=!0,e.enemy.health=e.enemy.max_health,e.enemy.monsterinfo.aiflags&=-129),e.monsterinfo.current_move=Ri,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function mz(e,t){if(Mm()>.8){let n=Mm();n<.33?t.engine.sound?.(e,0,"misc/welder1.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"misc/welder2.wav",1,1,0):t.engine.sound?.(e,0,"misc/welder3.wav",1,1,0)}}function Xi(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Ri:e.monsterinfo.current_move=ou}function fz(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=X0:e.monsterinfo.current_move=$0}function cu(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=Ri)}var Y0=Array(19).fill({ai:Je,dist:0});Y0[18]={ai:Je,dist:0,think:uz};Ri={firstframe:58,lastframe:76,frames:Y0,endfunc:null};var hz=[{ai:q4,dist:5}];Q4={firstframe:0,lastframe:0,frames:hz,endfunc:null};var _z=[{ai:J4,dist:10}];ou={firstframe:0,lastframe:0,frames:_z,endfunc:null};var j0=Array(31).fill({ai:Ra,dist:0});j0[20]={ai:Ra,dist:0,think:dz};$0={firstframe:121,lastframe:151,frames:j0,endfunc:Xi};var gz=Array(6).fill({ai:Ra,dist:0,think:lz});X0={firstframe:115,lastframe:120,frames:gz,endfunc:null};var Z0=Array(10).fill({ai:Je,dist:0});Z0[9]={ai:Je,dist:0,think:cu};ez={firstframe:77,lastframe:86,frames:Z0,endfunc:null};var q0=Array(7).fill({ai:Je,dist:0,think:mz});q0[6]={ai:Je,dist:0,think:cu};tz={firstframe:87,lastframe:93,frames:q0,endfunc:null};var J0=Array(7).fill({ai:Je,dist:-2});J0[6]={ai:Je,dist:-2,think:cu};nz={firstframe:94,lastframe:100,frames:J0,endfunc:null};var vz=[{ai:Ra,dist:0}];iz={firstframe:0,lastframe:0,frames:vz,endfunc:fz};var pz=[{ai:Je,dist:-1}];rz={firstframe:0,lastframe:0,frames:pz,endfunc:Xi};var yz=Array(8).fill({ai:Je,dist:0});az={firstframe:107,lastframe:114,frames:yz,endfunc:Xi};var wz=Array(6).fill({ai:Je,dist:0});sz={firstframe:101,lastframe:106,frames:wz,endfunc:Xi};var cO=new Map(Ko.map(e=>[e.name,e]));var Sz=2166136261,Az=16777619;function Q0(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,Az)>>>0;return n>>>0}function bn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return Q0(e,r)}function Bo(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return Q0(e,n)}var bo=2,kz=1;function Be(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function me(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function Tn(e,t,n){return e===void 0?n:me(e,t)}function $r(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Ur(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)me(n,`${t} element`);return e}function xz(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Be(e,"level");return{frameNumber:Tn(t.frameNumber,"level.frameNumber",0),timeSeconds:Tn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Tn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Tn(t.deltaSeconds,"level.deltaSeconds",0)}}function Ez(e){if(e===void 0)return new Om().getState();let t=Be(e,"rng"),n=Be(t.mt,"rng.mt"),i=Ur(n.state,"rng.mt.state");return{mt:{index:me(n.index,"rng.mt.index"),state:i}}}function bz(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=Be(t,`thinks[${n}]`);return{time:me(i.time,`thinks[${n}].time`),entityIndex:me(i.entityIndex,`thinks[${n}].entityIndex`)}})}function Tz(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Be(e,"awareness"),n=(i,r)=>i===null?null:me(i,r);return{frameNumber:me(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:me(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:me(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:me(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function Mz(e){if(e===void 0)return{};let t=Be(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=Be(r,i),s={};for(let[o,u]of Object.entries(a))s[o]=me(u,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[me(a,`${i}[0]`),me(s,`${i}[1]`),me(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function Rz(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Be(t,`entities[${n}]`);return{index:me(i.index,`entities[${n}].index`),fields:Mz(i.fields)}})}function zz(e){let t=Be(e,"pool");return{capacity:me(t.capacity,"pool.capacity"),activeOrder:Ur(t.activeOrder,"pool.activeOrder"),freeList:Ur(t.freeList,"pool.freeList"),pendingFree:Ur(t.pendingFree,"pool.pendingFree")}}function Lz(e){let t=Be(e,"entities");return{timeSeconds:me(t.timeSeconds,"entities.timeSeconds"),pool:zz(t.pool),entities:Rz(t.entities),thinks:bz(t.thinks),awareness:Tz(t.awareness),crossLevelFlags:Tn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:Tn(t.crossUnitFlags,"entities.crossUnitFlags",0)}}function Nz(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=Be(t,`cvars[${n}]`);return{name:$r(i.name,`cvars[${n}].name`),value:$r(i.value,`cvars[${n}].value`),flags:me(i.flags,`cvars[${n}].flags`)}})}function Oz(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>$r(t,`configstrings[${n}]`))}function Iz(e){return e===void 0?{}:Be(e,"gameState")}function vt(e,t){if(t==null)return e;if(typeof t=="number")return bn(e,t);if(typeof t=="string")return Bo(e,t);if(typeof t=="boolean")return bn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=vt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=Bo(n,r),n=vt(n,t[r]);return n}return e}function Cz(e){let t=Sz;return t=bn(t,e.version),t=bn(t,e.timestamp),t=Bo(t,e.map),t=bn(t,e.difficulty),t=bn(t,e.playtimeSeconds),t=vt(t,e.gameState),t=vt(t,e.level),t=vt(t,e.rng),t=vt(t,e.entities),t=vt(t,e.cvars),t=vt(t,e.configstrings),e.player&&(t=vt(t,e.player)),t>>>0}function e1(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=Be(i,"save"),a=r.version??bo,s=me(a,"version");if(s<kz)throw new Error(`Unsupported save version ${s}`);if(s>bo&&!n)throw new Error(`Save version ${s} is newer than supported ${bo}`);let o={version:s,timestamp:me(r.timestamp,"timestamp"),map:$r(r.map,"map"),difficulty:me(r.difficulty,"difficulty"),playtimeSeconds:me(r.playtimeSeconds,"playtimeSeconds"),gameState:Iz(r.gameState),level:xz(r.level),rng:Ez(r.rng),entities:Lz(r.entities),cvars:Nz(r.cvars),configstrings:Oz(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?me(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let u=Cz(o);if(u!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${u}`)}return o}var uO=new Set(Ko.filter(e=>e.save).map(e=>e.name));var Rm=globalThis.TextEncoder;function Mn(e){return e1({...e},{allowNewerVersion:!0})}function Pz(e){return Rm?new Rm().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var Fz=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:Mn(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:Mn(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:Mn(e.save)}))}},Dz=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:Mn(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:Mn(t.save)}))}},uu=class Si{constructor(t={}){let{dbName:n=Si.DEFAULT_DB_NAME,storeName:i=Si.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new Dz(r,n,i):this.adapter=new Fz}async save(t,n,i={}){let r=Mn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:Pz(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return e1(i.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save(Si.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Si.QUICK_SLOT,t)}};uu.DEFAULT_DB_NAME="quake2ts-saves";uu.DEFAULT_STORE="saves";uu.QUICK_SLOT="quicksave";var dO=Li();var lO=Li();var mO=[{id:re.QuadDamage,priority:1},{id:re.Invulnerability,priority:2},{id:re.EnviroSuit,priority:3},{id:re.Rebreather,priority:4},{id:re.Silencer,priority:5}];var Uz=new Map,Bz=["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"],t1=async(e,t)=>{for(let n of Bz)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);Uz.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Gz=new Map,Hz=["d_left","d_right","d_up","d_down"],n1=async(e,t)=>{for(let n of Hz)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);Gz.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var du=[],Wz=0,i1=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);du.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}du.length>0&&(Wz=du[0].width),await hm(e,t),await t1(e,t),await n1(e,t)};var lu=[{type:"null"},{type:"armor",id:Ln.BODY},{type:"armor",id:Ln.COMBAT},{type:"armor",id:Ln.JACKET},{type:"armor",id:Ln.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:Z.Grapple},{type:"weapon",id:Z.Blaster},{type:"weapon",id:Z.ChainFist},{type:"weapon",id:Z.Shotgun},{type:"weapon",id:Z.SuperShotgun},{type:"weapon",id:Z.Machinegun},{type:"weapon",id:Z.EtfRifle},{type:"weapon",id:Z.Chaingun},{type:"ammo",id:Y.Grenades},{type:"ammo",id:Y.Trap},{type:"ammo",id:Y.Tesla},{type:"weapon",id:Z.GrenadeLauncher},{type:"weapon",id:Z.ProxLauncher},{type:"weapon",id:Z.RocketLauncher},{type:"weapon",id:Z.HyperBlaster},{type:"weapon",id:Z.IonRipper},{type:"weapon",id:Z.PlasmaBeam},{type:"weapon",id:Z.Railgun},{type:"weapon",id:Z.Phalanx},{type:"weapon",id:Z.BFG10K},{type:"weapon",id:Z.Disruptor},{type:"ammo",id:Y.Shells},{type:"ammo",id:Y.Bullets},{type:"ammo",id:Y.Cells},{type:"ammo",id:Y.Rockets},{type:"ammo",id:Y.Slugs},{type:"ammo",id:Y.MagSlugs},{type:"ammo",id:Y.Flechettes},{type:"ammo",id:Y.Prox},{type:"ammo",id:Y.Nuke},{type:"ammo",id:Y.Rounds},{type:"powerup",id:re.QuadDamage},{type:"powerup",id:re.QuadFire},{type:"powerup",id:re.Invulnerability},{type:"powerup",id:re.Invisibility},{type:"powerup",id:re.Silencer},{type:"powerup",id:re.Rebreather},{type:"powerup",id:re.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:re.Bandolier},{type:"powerup",id:re.AmmoPack},{type:"powerup",id:re.IRGoggles},{type:"powerup",id:re.DoubleDamage},{type:"powerup",id:re.SphereVengeance},{type:"powerup",id:re.SphereHunter},{type:"powerup",id:re.SphereDefender},{type:"powerup",id:re.Doppelganger},{type:"powerup",id:re.TagToken},{type:"key",id:Se.DataCD},{type:"key",id:Se.PowerCube},{type:"key",id:Se.ExplosiveCharges},{type:"key",id:Se.Yellow},{type:"key",id:Se.PowerCore},{type:"key",id:Se.Pyramid},{type:"key",id:Se.DataSpinner},{type:"key",id:Se.Pass},{type:"key",id:Se.Blue},{type:"key",id:Se.Red},{type:"key",id:Se.Green},{type:"key",id:Se.CommanderHead},{type:"key",id:Se.Airstrike},{type:"key",id:Se.NukeContainer},{type:"key",id:Se.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:Se.RedFlag},{type:"key",id:Se.BlueFlag},{type:"powerup",id:re.TechResistance},{type:"powerup",id:re.TechStrength},{type:"powerup",id:re.TechHaste},{type:"powerup",id:re.TechRegeneration},{type:"powerup",id:re.Flashlight},{type:"powerup",id:re.Compass}];var Vz=32768,za=class{constructor(t,n){this.configstrings=new Array(Vz).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s,o,u){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&ol){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=sn();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&Bs&&(t.modelindex=n.modelindex),i&Ws&&(t.modelindex2=n.modelindex2),i&Vs&&(t.modelindex3=n.modelindex3),i&Ks&&(t.modelindex4=n.modelindex4),i&Ps&&(t.frame=n.frame),i&Hs&&(t.frame=n.frame),(i&lr||i&hr)&&(t.skinnum=n.skinnum),(i&dr||i&fr)&&(t.effects=n.effects),(i&ur||i&mr)&&(t.renderfx=n.renderfx),i&Ns&&(t.origin.x=n.origin.x),i&Os&&(t.origin.y=n.origin.y),i&Ds&&(t.origin.z=n.origin.z),i&Us&&(t.angles.x=n.angles.x),i&Is&&(t.angles.y=n.angles.y),i&Cs&&(t.angles.z=n.angles.z),i&$s&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&Xs&&(t.sound=n.sound),i&Fs&&(t.event=n.event),i&Ys&&(t.solid=n.solid),i&Gs&&(t.alpha=n.alpha),i&js&&(t.scale=n.scale),i&Zs&&(t.instanceBits=n.instanceBits),i&qs&&(t.loopVolume=n.loopVolume),r&Js&&(t.loopAttenuation=n.loopAttenuation),r&Qs&&(t.owner=n.owner),r&eo&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,i,r,a,s,o){if(!this.imports?.engine.audio)return;let u=i??1,c=r??1,d=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,u,c,d):o&&this.imports.engine.audio.positioned_sound(o,n,u,c)}onTempEntity(t,n,i,r,a,s,o,u,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let r=0,a=0,s=0,o=Tt,c=zr(this.stats,vi.QuadDamage)?4:1;switch(n){case Ml:r=-2,o={x:-2,y:0,z:0};break;case Cl:r=-4,o={x:-4,y:0,z:0};break;case Tl:r=-1,a=Math.random()-.5;break;case Rl:case zl:case Ll:r=-.5,a=Math.random()-.5;break;case Nl:r=-3,o={x:-3,y:0,z:0};break;case Ol:case Il:r=-2,o={x:-2,y:0,z:0};break;case Pl:r=-5,o={x:-2,y:0,z:0};break;case Fl:case bl:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,i){}convertFrameToPredictionState(t){let n=t.playerState,i={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let u=0;u<this.inventory.length;u++){let c=this.inventory[u];if(c<=0)continue;if(u>=lu.length)break;let d=lu[u];switch(d.type){case"weapon":i.ownedWeapons.add(d.id);break;case"ammo":i.ammo.counts[d.id]||(i.ammo.counts[d.id]=0),i.ammo.counts[d.id]=c;break;case"armor":i.armor={armorType:d.id,armorCount:c};break;case"powerup":i.powerups.set(d.id,c);break;case"key":i.keys.add(d.id);break;case"health":break;case"item":i.items.add(d.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:gi.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:Tt,kick_origin:Tt,gunoffset:Tt,gunangles:Tt,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return Yt();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return vn(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Hn=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=_e.Models&&t<_e.Models+fi){let i=t-_e.Models;this.models[i]=n}else if(t>=_e.Sounds&&t<_e.Sounds+hi){let i=t-_e.Sounds;this.sounds[i]=n}else if(t>=_e.Images&&t<_e.Images+_i){let i=t-_e.Images;this.images[i]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var La=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var Na=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${r1(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${r1(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function r1(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var Oa=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let i=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var Yi=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var Ia=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var Ca=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var Pa=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function a1(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,u=r.items.length*o+40,c=s-u/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((d,f)=>{let m=c+40+f*o,_=d.label;if(d.type==="input"&&d.getValue){if(_+=`: ${d.getValue()}`,f===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(_+="_")}}else d.type==="toggle"&&d.getValue&&(_+=`: ${d.getValue()}`);if(f===t.selectedIndex){let S=_.replace(/\^[0-9]/g,"").length*8,b=(n-S)/2;e.drawString(b-16,m,"\r")}e.drawCenterString(m,_)})}var ji=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&mi.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var Fa=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(i){console.warn("Failed to write to localStorage",i)}}};var Da=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let u=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*u,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(u*100);t.drawCenterString(o+a+10,`${c}%`)}};var Ua=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var Ba=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};function Wn(e,t,n){return e+(t-e)*n}function mu(e,t,n){return Wn(e,t,n)}function s1(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o=new Map(t.map(u=>[u.number,u]));for(let u of e){let c=o.get(u.number)??u,d=i.getModelName(u.modelIndex);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let m={x:Wn(c.origin.x,u.origin.x,n),y:Wn(c.origin.y,u.origin.y,n),z:Wn(c.origin.z,u.origin.z,n)},_={x:mu(c.angles.x,u.angles.x,n),y:mu(c.angles.y,u.angles.y,n),z:mu(c.angles.z,u.angles.z,n)},g=u.frame,A=c.frame,v=c.scale!==void 0?c.scale:1,S=u.scale!==void 0?u.scale:1,b=Wn(v,S,n),x=O=>O===void 0||O===0?255:O,p=x(c.alpha),w=x(u.alpha),E=Wn(p,w,n)/255,z=oe.create();oe.translate(z,z,[m.x,m.y,m.z]),oe.rotateZ(z,z,_.z*Math.PI/180),oe.rotateY(z,z,_.y*Math.PI/180),oe.rotateX(z,z,_.x*Math.PI/180),oe.scale(z,z,[b,b,b]),f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:A,frame1:g,lerp:n},transform:z,skin:u.skinNum>0?i.getImageName(u.skinNum):void 0,alpha:E}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:A,frame1:g,lerp:n},transform:z,alpha:E})}return a}var Ga=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var Ha=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.driver=new Ga,this.options=t,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1;try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>El&&this.commandHistory.shift();let i=new $l;i.writeLong(0),i.writeLong(0),i.writeByte(Xt.move),i.writeByte(0),i.writeLong(this.latestServerFrame),Vl(i,n),this.driver.send(i.getData())}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let s=new ArrayBuffer(t.byteLength);new Uint8Array(s).set(t),n=s}let i=new Kl(n),r=i.readLong(),a=i.readLong();this.parser=new to(i,this),this.parser.parseMessage()}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new pi;t.writeByte(Xt.stringcmd),t.writeString("getchallenge"),this.driver.send(t.getData())}sendConnect(t){let n=new pi;n.writeByte(Xt.stringcmd);let i=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${cr} ${t} ${i}`),this.driver.send(n.getData())}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new pi;o.writeByte(Xt.stringcmd),o.writeString("new"),this.driver.send(o.getData()),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new pi;t.writeByte(Xt.stringcmd),t.writeString("begin"),this.driver.send(t.getData()),this.state=5}onFrame(t){t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame)}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,u,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var Kz=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],tn=class{constructor(t=Kz){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function o1(){return new tn}function fu(e){return e}function Zi(e){return e.trim().toLowerCase()}var $z=250,hu=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},Wa=(S=>(S.Forward="+forward",S.Back="+back",S.MoveLeft="+moveleft",S.MoveRight="+moveright",S.MoveUp="+moveup",S.MoveDown="+movedown",S.Jump="+jump",S.Crouch="+crouch",S.Attack="+attack",S.Use="+use",S.Holster="+holster",S.TurnLeft="+left",S.TurnRight="+right",S.LookUp="+lookup",S.LookDown="+lookdown",S.SpeedModifier="+speed",S.Zoom="+zoom",S))(Wa||{}),Xz={"+attack":at.Attack,"+use":at.Use,"+holster":at.Holster,"+jump":at.Jump,"+crouch":at.Crouch},Yz=new Map(Object.values(Wa).map(e=>[Zi(e),e]));function jz(e){return Yz.get(Zi(e))}function qi(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Vn=class{constructor(t={},n=new tn){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??vl,this.sideSpeed=t.sideSpeed??pl,this.upSpeed=t.upSpeed??yl,this.yawSpeed=t.yawSpeed??wl,this.pitchSpeed=t.pitchSpeed??Sl,this.sensitivity=t.sensitivity??Al,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=qi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=qi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=qi()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=qi()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=qi(),i){this.pollGamepads(n),this.applyTouchState(n);let r=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),u=this.sample("+lookup",t,n),d={x:(this.sample("+lookdown",t,n).fraction-u.fraction)*a,y:(o.fraction-s.fraction)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let y=this.gamepadLook.y*(this.invertGamepadY?-1:1);d={x:d.x+y*a*this.gamepadLookScale,y:d.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let y=this.touchLook.y*(this.invertMouseY?-1:1);d={x:d.x+y*a,y:d.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let y=this.sampleMouseDelta(),L=xl(y,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});d={x:d.x+L.x,y:d.y+L.y,z:0}}let f=kl(this.viewAngles,d);this.viewAngles=f;let m=this.sample("+forward",t,n),_=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),A=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),S=this.sample("+movedown",t,n),b=this.sample("+speed",t,n),x=this.sample("+jump",t,n),p=this.sample("+crouch",t,n),w=this.runByDefault?b.active?.5:1:b.active?1:.5,T=this.forwardSpeed*(m.fraction-_.fraction)*w,E=this.sideSpeed*(A.fraction-g.fraction)*w,z=this.upSpeed*(v.fraction-S.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(T+=this.forwardSpeed*this.gamepadMove.y*w,E+=this.sideSpeed*this.gamepadMove.x*w),(this.touchMove.x!==0||this.touchMove.y!==0)&&(T+=this.forwardSpeed*this.touchMove.y*w,E+=this.sideSpeed*this.touchMove.x*w),this.jumpAddsUpMove&&x.fraction>0&&(z+=this.upSpeed*x.fraction),this.crouchAddsDownMove&&p.fraction>0&&(z-=this.upSpeed*p.fraction),T=this.clampMove(T,this.forwardSpeed),E=this.clampMove(E,this.sideSpeed),z=this.clampMove(z,this.upSpeed);let O=this.collectButtonBits(t,n),R=Math.min(Math.max(Math.round(t),1),$z);return(this.anyPressed||O!==at.None)&&(O|=at.Any),this.anyPressed=!1,{msec:R,buttons:O,angles:{...this.viewAngles},forwardmove:T,sidemove:E,upmove:z,serverFrame:i}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=r.buttons??[];for(let u=0;u<o.length;u++){let c=o[u];if(!c)continue;let d=c.pressed||c.value>this.gamepadDeadZone,f=this.gamepadButtonCode(a,u);d&&i.add(f);let m=this.gamepadButtons.get(f)??!1;d!==m&&(this.applyCommand(this.bindings.getBinding(f),d,f,t),this.gamepadButtons.set(f,d))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=jz(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let i=at.None;for(let[r,a]of Object.entries(Xz)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new hu,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,i){return this.lookupButton(t).sample(n,i)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var Va=class{constructor(t,n=new Vn(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var Ka={x:0,y:0,z:0};function Zz(e){let t=y=>{let L={x:0,y:0,z:0};return e.engine.trace(y,y,L,L).contents||0},n=new Fr(e.engine.trace,t),i=new Pr,r=new ul,a=new za(e);a.setView(i);let s=new Oa,o=new Da,u=new Ua,c=new Ba,d=new ji(new Fa),f,m,_=new Hn,g,A=!1,S=fm(e,{get tickRate(){return 10},get frameTimeMs(){return g?.timeMs??0},get serverFrame(){return a.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return _},getClientName:y=>`Player ${y}`,getKeyBinding:y=>`[${y}]`,get inAutoDemo(){return A}}),b=mm(S),x=new Ha({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return z}}),p=new Pa(s,x);a.setCallbacks({onCenterPrint:y=>b.ParseCenterPrint(y,0,!1),onPrint:(y,L)=>b.NotifyMessage(0,L,!1),onConfigString:(y,L)=>{_.set(y,L),b.ParseConfigString(y,L)},onServerData:(y,L)=>{L&&L>0?r.setFrameDuration(1e3/L):r.setFrameDuration(100)}}),r.setHandler(a);let w,T,E,z=90,O=!1;if(e.host){m=new Yi(s,e.host),f=new Ca(s,m,e.host);let y=new Map;if(e.host.cvars){for(let L of e.host.cvars.list())y.set(L.name,{value:L.string,setValue:P=>e.host.cvars.setValue(L.name,P)});d.loadCvars(y)}}if(e.host?.commands&&(e.host.commands.register("playdemo",y=>{if(y.length<1){console.log("usage: playdemo <filename>");return}let L=y[0];console.log(`playdemo: ${L}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let y=_m();console.log(`Crosshair changed to index ${y}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{O=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{O=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{s.isActive()?s.closeAll():f&&s.pushMenu(f.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",y=>{if(y.length<1){console.log("usage: connect <address>");return}let L=y[0];console.log(`Connecting to ${L}...`),x.connect(L).catch(P=>{console.error("Failed to connect:",P),u.show("Connection Failed",P instanceof Error?P.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{x.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:mi.Archive,onChange:L=>{let P=L.number;isNaN(P)||(z=Math.max(1,Math.min(179,P)))},description:"Field of view"});let y=e.host.cvars.get("fov");if(y){let L=y.number;isNaN(L)||(z=Math.max(1,Math.min(179,L)))}}return{loadingScreen:o,errorDialog:u,init(y){this.Init(y)},Init(y){g=y,y?.state&&n.setAuthoritative(y),b.Init(),e.engine.assets&&e.engine.renderer&&(o.start(100,"Loading assets..."),i1(e.engine.renderer,e.engine.assets).then(()=>{o.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(s.isActive()||document.body.requestPointerLock?.())})},predict(y){return s.isActive(),x.isConnected()&&x.sendCommand(y),n.enqueueCommand(y)},handleInput(y,L){if(!s.isActive())return!1;if(!L)return!0;let P=y.toLowerCase();return P==="arrowup"||P==="w"?s.handleInput("up"):P==="arrowdown"||P==="s"?s.handleInput("down"):P==="arrowleft"||P==="a"?s.handleInput("left"):P==="arrowright"||P==="d"?s.handleInput("right"):P==="enter"||P===" "?s.handleInput("select"):P==="escape"?s.getState().activeMenu?.parent?s.handleInput("back"):!1:y.length===1?s.handleInput("char",y):y==="Backspace"?s.handleInput("left"):!0},toggleMenu(){if(s.isActive()){if(s.closeAll(),e.host?.cvars){let y=e.host.cvars.list().map(L=>({name:L.name,value:L.string,flags:L.flags}));d.saveCvars(y)}}else f&&s.pushMenu(f.createPauseMenu())},createMainMenu(y,L,P,X,le){let ge=new Na(s,L,P,X,le),Ae=m;if(!Ae){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");Ae=new Yi(s,e.host)}let Ke=e.engine.assets,wt={findByExtension:nn=>Ke?Ke.listFiles(nn):[]},c1=new Ia(s,wt,nn=>{console.log(`Starting map: ${nn}`),e.host?.commands.execute(`map ${nn}`)}),u1=new La(s,ge,{...y,optionsFactory:Ae,mapsFactory:c1,multiplayerFactory:p,onSetDifficulty:nn=>{e.host?.cvars&&e.host.cvars.setValue("skill",nn.toString())}});return{menuSystem:s,factory:u1}},render(y){let L=r.getState(),P=[];L===no.Playing?w=a.getPredictionState():(y.latest?.state&&(n.setAuthoritative(y.latest),g=y.latest),y.previous?.state&&y.latest?.state?(w=vn(y.previous.state,y.latest.state,y.alpha),y.latest.state.packetEntities&&y.previous.state.packetEntities&&(P=s1(y.latest.state.packetEntities,y.previous.state.packetEntities,y.alpha,_,e))):w=y.latest?.state??y.previous?.state??n.getPredictedState());let X=y.latest&&y.previous?Math.max(0,y.latest.timeMs-y.previous.timeMs):0;T=i.sample(w,X);let le={};if(w){let{origin:ge,viewAngles:Ae}=w;E=new Ed,E.position=ue.fromValues(ge.x,ge.y,ge.z);let Ke=T?.offset??{x:0,y:0,z:0};ue.add(E.position,E.position,[Ke.x,Ke.y,Ke.z]);let wt=T?.angles??{x:0,y:0,z:0};E.angles=ue.fromValues(Ae.x+wt.x,Ae.y+wt.y,Ae.z+wt.z),E.fov=O?40:z,E.aspect=4/3,e.engine.renderer&&(E.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&E){let ge;if(e.engine.assets){let Ae=_.getModelName(1);if(Ae){let Ke=e.engine.assets.getMap(Ae)}}e.engine.renderer.renderFrame({camera:E,world:ge,dlights:[]},P)}if(e.engine.renderer&&w&&w.client){let ge=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},Ae=y.latest?.timeMs??0;this.DrawHUD(ge,Ae)}return le},DrawHUD(y,L){if(!e.engine.renderer)return;let P=e.engine.renderer,X=P.width,le=P.height;if(w&&w.client){let ge={origin:w.origin,velocity:w.velocity,viewAngles:w.viewAngles,onGround:_n(w.pmFlags,ht.OnGround),waterLevel:w.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:w.damageAlpha??0,damageIndicators:w.damageIndicators??[],blend:w.blend??[0,0,0,0],pickupIcon:w.pickupIcon,centerPrint:void 0,notify:void 0,stats:w.stats?[...w.stats]:new Array(32).fill(0),kick_angles:Ka,kick_origin:Ka,gunoffset:Ka,gunangles:Ka,gunindex:0,pm_type:w.pm_type??0,pm_time:w.pm_time??0,pm_flags:w.pmFlags,gun_frame:w.gun_frame??0,rdflags:w.rdflags??0,fov:w.fov??90};ge.stats[ze.STAT_HEALTH]=w.health??0,ge.stats[ze.STAT_AMMO]=w.ammo??0,ge.stats[ze.STAT_ARMOR]=w.armor??0,P.begin2D(),b.DrawHUD(0,null,{x:0,y:0,width:X,height:le},{x:0,y:0,width:X,height:le},1,0,ge),P.end2D()}s.isActive()&&a1(e.engine.renderer,s.getState(),e.engine.renderer.width,e.engine.renderer.height),w&&w.client&&c.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,w.client),u.render(e.engine.renderer),o.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(b.Shutdown(),g=void 0,w=void 0,e.host?.cvars){let y=e.host.cvars.list().map(L=>({name:L.name,value:L.string,flags:L.flags}));d.saveCvars(y)}},get prediction(){return n},get lastRendered(){return w},get view(){return i},get lastView(){return T},get camera(){return E},demoPlayback:r,ParseCenterPrint(y){b.ParseCenterPrint(y,0,!1)},ParseNotify(y){b.NotifyMessage(0,y,!1)},showSubtitle(y,L){b.ShowSubtitle(y,L)},ParseConfigString(y,L){_.set(y,L),b.ParseConfigString(y,L)},demoHandler:a,multiplayer:x,configStrings:_}}return h1(qz);})();
178
178
  /*! Bundled license information:
179
179
 
180
180
  pako/dist/pako.esm.mjs: