textmode.js 0.2.1-beta.3 → 0.2.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/textmode.esm.js +1107 -1069
- package/dist/textmode.esm.min.js +1356 -1318
- package/dist/textmode.umd.js +7 -7
- package/dist/textmode.umd.min.js +7 -7
- package/dist/types/rendering/webgl/Shader.d.ts +17 -1
- package/dist/types/textmode/mixins/AnimationMixin.d.ts +2 -0
- package/package.json +1 -1
package/dist/textmode.umd.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
var rt=Object.defineProperty;var Et=(
|
|
1
|
+
var rt=Object.defineProperty;var Et=(f,w,x)=>w in f?rt(f,w,{enumerable:!0,configurable:!0,writable:!0,value:x}):f[w]=x;var g=(f,w,x)=>Et(f,typeof w!="symbol"?w+"":w,x);var A,e;A=this,e=function(f){class w extends Error{constructor(t,s={}){super(w.A(t,s)),this.name="TextmodeError"}static A(t,s){return`${t}${s&&Object.keys(s).length>0?`
|
|
2
2
|
|
|
3
3
|
📋 Context:`+Object.entries(s).map(([i,B])=>`
|
|
4
4
|
- ${i}: ${w.C(B)}`).join(""):""}
|
|
5
5
|
|
|
6
6
|
${"↓".repeat(24)}
|
|
7
|
-
`}static C(t){if(t===null)return"null";if(t===void 0)return"undefined";if(typeof t=="string")return`"${t}"`;if(typeof t=="number"||typeof t=="boolean")return t+"";if(Array.isArray(t))return t.length===0?"[]":t.length<=5?`[${t.map(s=>w.C(s)).join(", ")}]`:`[${t.slice(0,3).map(s=>w.C(s)).join(", ")}, ... +${t.length-3} more]`;if(typeof t=="object"){const s=Object.keys(t);return s.length===0?"{}":s.length<=3?`{ ${s.map(i=>`${i}: ${w.C(t[i])}`).join(", ")} }`:`{ ${s.slice(0,2).map(i=>`${i}: ${w.C(t[i])}`).join(", ")}, ... +${s.length-2} more }`}return t+""}}var R=(n=>(n[n.SILENT=0]="SILENT",n[n.WARNING=1]="WARNING",n[n.ERROR=2]="ERROR",n[n.THROW=3]="THROW",n))(R||{});const M=class M{constructor(){o(this,"P",{globalLevel:3})}static u(){return M.D||(M.D=new M),M.D}I(t,s){const i="%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.",B="color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;";switch(this.P.globalLevel){case 0:return!1;case 1:return console.group(i,B),console.warn(w.A(t,s)),console.groupEnd(),!1;case 2:return console.group(i,B),console.error(w.A(t,s)),console.groupEnd(),!1;default:throw new w(t,s)}}_(t,s,i){return!!t||(this.I(s,i),!1)}v(t){this.P.globalLevel=t}};o(M,"D",null);let k=M;const G=k.u(),K=new WeakMap;function S(n,t){K.set(n,t)}function L(n){return K.get(n)}class ${constructor(){o(this,"$",1);o(this,"G",0);o(this,"M",0);o(this,"Y",0);o(this,"F",[0,0,0]);o(this,"R",[1,1,1,1]);o(this,"S",[0,0,0,1]);o(this,"O",!1);o(this,"L",!1);o(this,"U",!1);o(this,"W",[0,0]);o(this,"H",[0,0,0,1]);o(this,"K",[])}J(){this.K.push({V:this.$,Z:this.G,N:this.M,X:this.Y,W:[...this.W],O:this.O,L:this.L,U:this.U,AA:[...this.F],tA:[...this.R],eA:[...this.S]})}sA(){const t=this.K.pop();t?(this.$=t.V,this.G=t.Z,this.M=t.N,this.Y=t.X,this.W=t.W,this.O=t.O,this.L=t.L,this.U=t.U,this.F=t.AA,this.R=t.tA,this.S=t.eA):console.warn("pop() called without matching push()")}iA(){this.K=[],this.G=0,this.M=0,this.Y=0}BA(t){t.lineWeight=this.$,t.rotationX=this.G,t.rotationY=this.M,t.rotationZ=this.Y,t.character[0]=this.F[0],t.character[1]=this.F[1],t.character[2]=this.F[2],t.charColor[0]=this.R[0],t.charColor[1]=this.R[1],t.charColor[2]=this.R[2],t.charColor[3]=this.R[3],t.bgColor[0]=this.S[0],t.bgColor[1]=this.S[1],t.bgColor[2]=this.S[2],t.bgColor[3]=this.S[3],t.flipHorizontally=this.O,t.flipVertically=this.L,t.invert=this.U,t.charRotation[0]=this.W[0],t.charRotation[1]=this.W[1]}get lineWeight(){return this.$}get canvasBackgroundColor(){return this.H}QA(t){this.$=Math.abs(t)}EA(t){this.G=t}rA(t){this.M=t}nA(t){this.Y=t}gA(t){this.F=t}oA(t,s,i,B=255){this.R=[t/255,s/255,i/255,B/255]}aA(t,s,i,B=255){this.S=[t/255,s/255,i/255,B/255]}hA(t){this.O=t}cA(t){this.L=t}CA(t){this.U=t}lA(t){const s=255*t/360,i=Math.floor(s)/255,B=Math.round(s-Math.floor(s));this.W=[i,B]}DA(t,s,i,B){this.H=[t/255,s/255,i/255,B/255]}}class U{constructor(t,s,i=s,B=1,r={},E=null,Q=!1){o(this,"PA");o(this,"uA");o(this,"P");o(this,"IA",null);o(this,"wA");o(this,"fA");o(this,"dA",[]);o(this,"_A");o(this,"pA",null);o(this,"mA",[]);o(this,"vA",null);o(this,"yA",!1);o(this,"bA",null);this.PA=s,this.uA=i,this.P={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...r},this.wA=t,this._A=Math.min(Math.max(1,B),8),this.vA=E,this.yA=!!Q,this.bA=this.yA?new $:null;const g=t.getParameter(t.MAX_DRAW_BUFFERS),a=t.getParameter(t.MAX_COLOR_ATTACHMENTS);this._A=Math.min(this._A,g,a),this.fA=t.createFramebuffer(),this.$A(),this.GA(),this.mA=Array(this._A).fill(null)}$A(){const t=this.wA,s=this.P.filter==="linear"?t.LINEAR:t.NEAREST,i=this.P.wrap==="repeat"?t.REPEAT:t.CLAMP_TO_EDGE,B=this.P.type==="float"?t.FLOAT:t.UNSIGNED_BYTE;for(let r=0;r<this._A;r++){const E=t.createTexture();t.bindTexture(t.TEXTURE_2D,E),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,i),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.PA,this.uA,0,t.RGBA,B,null),this.dA.push(E)}t.bindTexture(t.TEXTURE_2D,null)}GA(){const t=this.wA;if(t.bindFramebuffer(t.FRAMEBUFFER,this.fA),this._A===1)t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.dA[0],0);else{const i=[];for(let B=0;B<this._A;B++){const r=t.COLOR_ATTACHMENT0+B;t.framebufferTexture2D(t.FRAMEBUFFER,r,t.TEXTURE_2D,this.dA[B],0),i.push(r)}t.drawBuffers(i)}const s=t.checkFramebufferStatus(t.FRAMEBUFFER);s!==t.FRAMEBUFFER_COMPLETE&&console.error("GLFramebuffer is not complete:",s),t.bindFramebuffer(t.FRAMEBUFFER,null)}MA(t){const s=this.wA;s.bindTexture(s.TEXTURE_2D,this.dA[0]),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,t),s.bindTexture(s.TEXTURE_2D,null)}resize(t,s){this.PA=t,this.uA=s,this.IA=null,this.mA=Array(this._A).fill(null);const i=this.wA,B=this.P.type==="float"?i.FLOAT:i.UNSIGNED_BYTE;for(const r of this.dA)i.bindTexture(i.TEXTURE_2D,r),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,this.PA,this.uA,0,i.RGBA,B,null);i.bindTexture(i.TEXTURE_2D,null)}xA(t){const s=this.wA,i=this.mA[t];if(i)return i;const B=this.PA,r=this.uA,E=new Uint8Array(B*r*4),Q=s.getParameter(s.READ_FRAMEBUFFER_BINDING);s.bindFramebuffer(s.READ_FRAMEBUFFER,this.fA),s.readBuffer(s.COLOR_ATTACHMENT0+t),s.readPixels(0,0,B,r,s.RGBA,s.UNSIGNED_BYTE,E),s.bindFramebuffer(s.READ_FRAMEBUFFER,Q);const g=4*B,a=new Uint8Array(E.length);for(let c=0;c<r;c++){const h=(r-1-c)*g,l=c*g;a.set(E.subarray(h,h+g),l)}return this.mA[t]=a,a}begin(){var s,i,B,r;const t=this.wA;if(this.vA){const E=((i=(s=this.vA).YA)==null?void 0:i.call(s))??null;E&&this.vA.FA(E),this.yA&&this.bA&&((r=(B=this.vA).RA)==null||r.call(B,this.bA))}this.pA={framebuffer:t.getParameter(t.FRAMEBUFFER_BINDING),viewport:t.getParameter(t.VIEWPORT)},t.bindFramebuffer(t.FRAMEBUFFER,this.fA),this.mA=Array(this._A).fill(null);for(let E=0;E<this._A;E++)t.clearBufferfv(t.COLOR,E,new Float32Array([0,0,0,0]));t.viewport(0,0,this.PA,this.uA),S(t,[0,0,this.PA,this.uA])}end(){var s,i,B,r;if(!this.pA)return;const t=this.wA;if(this.vA){const E=((i=(s=this.vA).YA)==null?void 0:i.call(s))??null;E&&this.vA.FA(E)}t.bindFramebuffer(t.FRAMEBUFFER,this.pA.framebuffer),t.viewport(...this.pA.viewport),S(t,this.pA.viewport),this.pA=null,this.vA&&this.yA&&this.bA&&((r=(B=this.vA).SA)==null||r.call(B))}kA(){const t=this.wA;t.deleteFramebuffer(this.fA);for(const s of this.dA)t.deleteTexture(s)}get width(){return this.PA}get height(){return this.uA}get textures(){return[...this.dA]}}function V(n){return typeof n=="string"?n:n.sourceCode}class Y{constructor(t,s,i){o(this,"wA");o(this,"zA");o(this,"OA",new Map);o(this,"LA",0);this.wA=t,this.zA=this.TA(V(s),V(i)),this.UA()}UA(){const t=this.wA.getProgramParameter(this.zA,this.wA.ACTIVE_UNIFORMS);for(let s=0;s<t;s++){const i=this.wA.getActiveUniform(this.zA,s);if(i){const B=this.wA.getUniformLocation(this.zA,i.name);B&&this.OA.set(i.name,B)}}}TA(t,s){const i=this.WA(this.wA.VERTEX_SHADER,t),B=this.WA(this.wA.FRAGMENT_SHADER,s),r=this.wA.createProgram();if(this.wA.attachShader(r,i),this.wA.attachShader(r,B),this.wA.linkProgram(r),!this.wA.getProgramParameter(r,this.wA.LINK_STATUS)){const E=this.wA.getProgramInfoLog(r);throw Error("Shader program link error: "+E)}return this.wA.deleteShader(i),this.wA.deleteShader(B),r}WA(t,s){const i=this.wA.createShader(t);if(this.wA.shaderSource(i,s),this.wA.compileShader(i),!this.wA.getShaderParameter(i,this.wA.COMPILE_STATUS)){const B=this.wA.getShaderInfoLog(i);throw this.wA.deleteShader(i),Error("Shader compilation error: "+B)}return i}HA(){this.wA.useProgram(this.zA),this.KA()}KA(){this.LA=0}JA(t){for(const[s,i]of Object.entries(t))this.VA(s,i)}ZA(t){return this.OA.has(t)}VA(t,s){var B;const i=this.OA.get(t);if(i)if(typeof s=="number")this.wA.uniform1f(i,s);else if(typeof s=="boolean")this.wA.uniform1i(i,s?1:0);else if(Array.isArray(s))if(Array.isArray(s[0])){const r=s,E=((B=r[0])==null?void 0:B.length)||0,Q=r.flat();switch(E){case 2:this.wA.uniform2fv(i,Q);break;case 3:this.wA.uniform3fv(i,Q);break;case 4:this.wA.uniform4fv(i,Q);break;default:return void console.warn(`Unsupported vector array length for '${t}': ${E}`)}}else switch(s.length){case 2:this.wA.uniform2f(i,s[0],s[1]);break;case 3:this.wA.uniform3f(i,s[0],s[1],s[2]);break;case 4:this.wA.uniform4f(i,s[0],s[1],s[2],s[3]);break;default:return}else if(s instanceof WebGLTexture){const r=this.NA();this.wA.uniform1i(i,r),this.wA.activeTexture(this.wA.TEXTURE0+r),this.wA.bindTexture(this.wA.TEXTURE_2D,s)}else if(s instanceof U){const r=this.NA();this.wA.uniform1i(i,r),this.wA.activeTexture(this.wA.TEXTURE0+r),this.wA.bindTexture(this.wA.TEXTURE_2D,s.textures[0])}else console.warn(`Unsupported uniform type for '${t}':`,typeof s)}NA(){return this.LA++}get XA(){return this.zA}kA(){this.wA.deleteProgram(this.zA)}}const H=`#version 300 es
|
|
8
|
-
in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float k;uniform vec2 t;out vec2 v_uv;out vec3 v_character;out vec4 v_primaryColor;out vec4 v_secondaryColor;out vec2 v_rotation;out vec3 v_transform;mat3 A(float B){float C=sin(B),D=cos(B);return mat3(1,0,0,0,D,-C,0,C,D);}mat3 E(float B){float C=sin(B),D=cos(B);return mat3(D,0,C,0,1,0,-C,0,D);}mat3 F(float B){float C=sin(B),D=cos(B);return mat3(D,-C,0,C,D,0,0,0,1);}vec2 G(float t,vec2 H,vec2 I,vec2 J,vec2 K){float L=1.-t,M=L*L,N=t*t;return M*L*H+3.*M*t*I+3.*L*N*J+N*t*K;}vec2 O(float t,vec2 H,vec2 I,vec2 J,vec2 K){float L=1.-t,M=L*L,N=t*t;return-3.*M*H+3.*M*I-6.*L*t*I+6.*L*t*J-3.*N*J+3.*N*K;}void main(){v_uv=a_texCoord;v_character=a_instanceCharacter;v_primaryColor=a_instancePrimaryColor;v_secondaryColor=a_instanceSecondaryColor;v_rotation=a_instanceRotation;v_transform=a_instanceTransform;vec2 P;bool Q=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool R=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(Q){float t=a_position.x;vec2 S=G(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 T=O(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float U=length(T);T=U>0.?T/U:vec2(1,0);P=S+vec2(-T.y,T.x)*a_position.y*a_instanceSize.y;}else if(R){float C=a_instanceArcAngles.x,V=a_instanceArcAngles.y;C=mod(C,6.28318530718);if(C<0.)C+=6.28318530718;V=mod(V,6.28318530718);if(V<0.)V+=6.28318530718;float W=C-V;if(W<=0.)W+=6.28318530718;float X=C-a_position.x*W;vec2 Y=vec2(cos(X),sin(X))*a_position.y;P=Y*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{P=a_position*a_instanceSize+a_instancePosition;}vec2 Z=(P/t)*2.-1.;Z.y=-Z.y;if(length(a_instanceGlobalRotation)>0.){vec3 a=vec3(Z-a_instanceRotationCenter,0);a.x*=k;if(a_instanceGlobalRotation.x!=0.)a=A(-a_instanceGlobalRotation.x)*a;if(a_instanceGlobalRotation.y!=0.)a=E(-a_instanceGlobalRotation.y)*a;if(a_instanceGlobalRotation.z!=0.)a=F(-a_instanceGlobalRotation.z)*a;a.x/=k;Z=a.xy+a_instanceRotationCenter;}gl_Position=vec4(Z,0,1);}`;class BA{constructor(t){
|
|
9
|
-
precision highp float;in vec2 v_uv;uniform sampler2D l;uniform sampler2D m;uniform sampler2D n;uniform sampler2D o;uniform sampler2D p;uniform vec2 q;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){vec2 A=vec2(v_uv.x,1.-v_uv.y);vec2 B=A*q;vec2 C=(floor(B)+0.5f)/q;vec4 D=texture(l,C);vec4 E=texture(m,C);if(E.a==0.){discard;}vec4 F=texture(n,C);vec4 G=texture(o,C);vec4 H=texture(p,C);o_character=D;o_primaryColor=E;o_secondaryColor=F;o_rotation=G;o_transform=H;}`))}YA(){return this.
|
|
10
|
-
precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.,1.);o_transform=vec4(v_transform,1.);}`))}tt(){return this.qA("ascii-conversion",()=>new Y(this.wA,"attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.,1.);}","precision mediump float;uniform sampler2D a;uniform vec2 b;uniform sampler2D d;uniform sampler2D e;uniform sampler2D f;uniform sampler2D c;uniform sampler2D g;uniform vec2 h;uniform vec2 i;uniform vec2 j;mat2 A(float B){float C=sin(B);float c=cos(B);return mat2(c,-C,C,c);}void main(){vec2 D=(gl_FragCoord.xy-j)/i;vec2 E=D*h;vec2 F=floor(E);vec2 G=(F+0.5)/h;vec4 H=texture2D(d,G);vec4 I=texture2D(e,G);vec4 J=texture2D(f,G);bool K=J.r>0.5;bool L=J.g>0.5;bool M=J.b>0.5;vec4 N=texture2D(c,G);int O=int(N.r*255.+0.5)+int(N.g*255.+0.5)*256;int P=int(mod(float(O),b.x));int Q=O/int(b.x);float R=(b.y-1.)-float(Q);vec2 S=vec2(float(P),R)/b;vec4 T=texture2D(g,G);float U=T.r*255.+T.g;float V=-(U*360./255.)*0.017453292;vec2 W=fract(E)-0.5;if(L)W.x=-W.x;if(M)W.y=-W.y;W=A(V)*W+0.5;vec2 X=1./b;vec2 Y=S+W*X;vec2 Z=S+X;if(any(lessThan(Y,S))||any(greaterThan(Y,Z))){gl_FragColor=K?H:I;return;}vec4 a=texture2D(a,Y);if(K)a.rgb=1.-a.rgb;gl_FragColor=mix(I,H,a);}"))}et(t){return new Y(this.wA,H,t)}st(t,s){return new Y(this.wA,t,s)}kA(){for(const t of this.jA.values())t.kA();this.jA.clear()}}var P=(n=>(n.RECTANGLE="rectangle",n.LINE="line",n.ELLIPSE="ellipse",n.ARC="arc",n.TRIANGLE="triangle",n.BEZIER_CURVE="bezier_curve",n.CUSTOM="custom",n))(P||{});class rA{constructor(t){o(this,"wA");o(this,"it",new Map);this.wA=t}Bt(t,s,i,B){const r=this.wA;let E=this.it.get(t);E||(E=new Map,this.it.set(t,E));let Q=E.get(s)||null;if(!Q){Q=r.createVertexArray(),E.set(s,Q),r.bindVertexArray(Q),r.bindBuffer(r.ARRAY_BUFFER,B);const g=r.getAttribLocation(t,"a_position");g!==-1&&(r.enableVertexAttribArray(g),r.vertexAttribPointer(g,i.Et.Qt.size,r.FLOAT,!1,i.rt,i.Et.Qt.offset),r.vertexAttribDivisor(g,0));const a=r.getAttribLocation(t,"a_texCoord");a!==-1&&(r.enableVertexAttribArray(a),r.vertexAttribPointer(a,i.Et.nt.size,r.FLOAT,!1,i.rt,i.Et.nt.offset),r.vertexAttribDivisor(a,0))}r.bindVertexArray(Q)}gt(){this.wA.bindVertexArray(null)}kA(){const t=this.wA;for(const[,s]of this.it)for(const[,i]of s)i&&t.deleteVertexArray(i);this.it.clear()}}class EA{constructor(t,s){o(this,"ot");o(this,"wA");o(this,"vA");o(this,"ht",null);o(this,"ct",null);this.wA=t,this.ot=new rA(t),this.vA=s}Ct(t,s,i){const{shader:B}=t,r=L(this.wA)||this.wA.getParameter(this.wA.VIEWPORT);B.JA({k:r[2]/r[3],t:[r[2],r[3]]});const E=a=>{if(!a||!a.lt())return;const c=a.unitGeometry,h=a.unitBuffer;try{this.ot.Bt(B.XA,a.type+"",c,h),a.batch.Dt(B),a.batch.Pt(c.ut,c.It)}finally{a.batch.wt(B),this.ot.gt(),a.ft()}};let Q=null,g=null;for(const a of s){if(a.type===P.CUSTOM){g&&(E(g),Q=null,g=null),this.dt(t,a.params,a.state,i.get(P.RECTANGLE));continue}Q!==null&&a.type!==Q&&(E(g),Q=null,g=null);let c=g;c&&a.type===Q||(c=i.get(a.type)||null,g=c,Q=a.type),c&&c._t(a.params,a.state)}E(g)}dt(t,s,i,B){const{x:r,y:E,width:Q,height:g,shader:a,uniforms:c}=s;if(a===this.vt())return this.yt(B,a,c,Math.floor(r),Math.floor(E),Math.max(1,Math.floor(Q)),Math.max(1,Math.floor(g)),i),void t.shader.HA();const h=this.bt(Math.max(1,Math.floor(Q)),Math.max(1,Math.floor(g)));h.begin(),this.yt(B,a,c,0,0,h.width,h.height,{}),h.end();const l=this.vt(),C={l:h.textures[0],m:h.textures[1],n:h.textures[2],o:h.textures[3],p:h.textures[4],q:[h.width,h.height]};this.yt(B,l,C,Math.floor(r),Math.floor(E),Math.max(1,Math.floor(Q)),Math.max(1,Math.floor(g)),i),t.shader.HA()}yt(t,s,i,B,r,E,Q,g){s.HA(),s.JA(i);const a=this.wA.getParameter(this.wA.VIEWPORT);if(s.JA({k:a[2]/a[3],t:[a[2],a[3]]}),t.ft(),t._t({x:B,y:r,width:E,height:Q},g),t.lt()){const c=t.unitGeometry,h=t.unitBuffer;try{this.ot.Bt(s.XA,t.type+"",c,h),t.batch.Dt(s),t.batch.Pt(c.ut,c.It)}finally{t.batch.wt(s),this.ot.gt(),t.ft()}}}vt(){return this.vA.At()}bt(t,s){return this.ht&&this.ct&&this.ct.w===t&&this.ct.h===s||(this.ht&&this.ht.kA(),this.ht=new U(this.wA,t,s,5),this.ct={w:t,h:s}),this.ht}}class QA{constructor(){o(this,"$t",[]);o(this,"Gt",1);o(this,"Mt",0)}xt(t){if(this.Mt>=this.$t.length){const i={id:this.Gt++,type:t,params:{},state:{V:1,Z:0,N:0,X:0,character:[0,0,0],charColor:[1,1,1,1],bgColor:[0,0,0,1],flipHorizontally:!1,flipVertically:!1,invert:!1,charRotation:[0,0]}};this.$t.push(i)}const s=this.$t[this.Mt];switch(s.id=this.Gt++,s.type=t,t){case P.RECTANGLE:case P.ELLIPSE:s.params&&"width"in s.params||(s.params={x:0,y:0,width:0,height:0});break;case P.CUSTOM:s.params&&"shader"in s.params||(s.params={x:0,y:0,width:0,height:0,shader:void 0,uniforms:{}});break;case P.ARC:s.params&&"start"in s.params||(s.params={x:0,y:0,width:0,height:0,start:0,stop:0});break;case P.LINE:s.params&&"x2"in s.params||(s.params={x1:0,y1:0,x2:0,y2:0,thickness:void 0});break;case P.TRIANGLE:s.params&&"x3"in s.params||(s.params={x1:0,y1:0,x2:0,y2:0,x3:0,y3:0});break;case P.BEZIER_CURVE:s.params&&"cp2y"in s.params||(s.params={x1:0,y1:0,cp1x:0,cp1y:0,cp2x:0,cp2y:0,x2:0,y2:0,thickness:void 0});break;default:s.params||(s.params={})}return this.Mt++,s}Yt(t,s,i,B,r){const E=this.xt(P.RECTANGLE);return E.params.x=t,E.params.y=s,E.params.width=i,E.params.height=B,r.BA(E.state),E.id}Ft(t,s,i,B,r,E,Q){const g=this.xt(P.CUSTOM);return g.params.x=t,g.params.y=s,g.params.width=i,g.params.height=B,g.params.shader=r,g.params.uniforms=E,Q.BA(g.state),g.id}Rt(t,s,i,B,r,E){const Q=this.xt(P.LINE);return Q.params.x1=t,Q.params.y1=s,Q.params.x2=i,Q.params.y2=B,Q.params.thickness=r,E.BA(Q.state),Q.id}St(t,s,i,B,r){const E=this.xt(P.ELLIPSE);return E.params.x=t,E.params.y=s,E.params.width=i,E.params.height=B,r.BA(E.state),E.id}kt(t,s,i,B,r,E,Q){const g=this.xt(P.ARC);return g.params.x=t,g.params.y=s,g.params.width=i,g.params.height=B,g.params.start=r,g.params.stop=E,Q.BA(g.state),g.id}zt(t,s,i,B,r,E,Q){const g=this.xt(P.TRIANGLE);return g.params.x1=t,g.params.y1=s,g.params.x2=i,g.params.y2=B,g.params.x3=r,g.params.y3=E,Q.BA(g.state),g.id}Ot(t,s,i,B,r,E,Q,g,a,c){const h=this.xt(P.BEZIER_CURVE);return h.params.x1=t,h.params.y1=s,h.params.cp1x=i,h.params.cp1y=B,h.params.cp2x=r,h.params.cp2y=E,h.params.x2=Q,h.params.y2=g,h.params.thickness=a,c.BA(h.state),h.id}get length(){return this.Mt}get isEmpty(){return this.Mt===0}Lt(){this.Mt=0}[Symbol.iterator](){let t=0;const s=this.Mt,i=this.$t;return{next:()=>t<s?{value:i[t++],done:!1}:{value:void 0,done:!0}}}}const b=class b{static Tt(t,s,i=0){var E,Q,g,a,c,h,l,C,D,u;const B=s||new Float32Array(b.FLOATS_PER_INSTANCE);let r=i;return B[r++]=t.position[0],B[r++]=t.position[1],B[r++]=t.size[0],B[r++]=t.size[1],B[r++]=t.AA[0],B[r++]=t.AA[1],B[r++]=t.AA[2],B[r++]=t.primaryColor[0],B[r++]=t.primaryColor[1],B[r++]=t.primaryColor[2],B[r++]=t.primaryColor[3],B[r++]=t.secondaryColor[0],B[r++]=t.secondaryColor[1],B[r++]=t.secondaryColor[2],B[r++]=t.secondaryColor[3],B[r++]=t.rotation[0],B[r++]=t.rotation[1],B[r++]=t.transform[0],B[r++]=t.transform[1],B[r++]=t.transform[2],B[r++]=t.globalRotationX,B[r++]=t.globalRotationY,B[r++]=t.globalRotationZ,B[r++]=t.rotationCenter[0],B[r++]=t.rotationCenter[1],B[r++]=((E=t.arcAngles)==null?void 0:E[0])||0,B[r++]=((Q=t.arcAngles)==null?void 0:Q[1])||0,B[r++]=((g=t.bezierControlPoint1)==null?void 0:g[0])||0,B[r++]=((a=t.bezierControlPoint1)==null?void 0:a[1])||0,B[r++]=((c=t.bezierControlPoint2)==null?void 0:c[0])||0,B[r++]=((h=t.bezierControlPoint2)==null?void 0:h[1])||0,B[r++]=((l=t.bezierStartPoint)==null?void 0:l[0])||0,B[r++]=((C=t.bezierStartPoint)==null?void 0:C[1])||0,B[r++]=((D=t.bezierEndPoint)==null?void 0:D[0])||0,B[r++]=((u=t.bezierEndPoint)==null?void 0:u[1])||0,B}static Ut(t){const s=t.length*b.FLOATS_PER_INSTANCE,i=new Float32Array(s);for(let B=0;B<t.length;B++){const r=B*b.FLOATS_PER_INSTANCE;b.Tt(t[B],i,r)}return i}};o(b,"BYTES_PER_INSTANCE",140),o(b,"FLOATS_PER_INSTANCE",35);let T=b;const f=class f{};o(f,"STRIDE",T.BYTES_PER_INSTANCE),o(f,"ATTRIBUTES",{a_instancePosition:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:0,divisor:1},a_instanceSize:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:8,divisor:1},a_instanceCharacter:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:16,divisor:1},a_instancePrimaryColor:{location:-1,size:4,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:28,divisor:1},a_instanceSecondaryColor:{location:-1,size:4,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:44,divisor:1},a_instanceRotation:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:60,divisor:1},a_instanceTransform:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:68,divisor:1},a_instanceGlobalRotation:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:80,divisor:1},a_instanceRotationCenter:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:92,divisor:1},a_instanceArcAngles:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:100,divisor:1},a_instanceBezierCP1:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:108,divisor:1},a_instanceBezierCP2:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:116,divisor:1},a_instanceBezierStart:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:124,divisor:1},a_instanceBezierEnd:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:132,divisor:1}});let O=f;class nA{constructor(t,s=1e3,i=1.5){o(this,"wA");o(this,"Wt",[]);o(this,"Ht");o(this,"Kt");o(this,"Jt",null);o(this,"Vt",!0);o(this,"Zt",0);o(this,"Nt",new Map);o(this,"Xt",null);this.wA=t,this.Ht=s,this.Kt=i,this.jt()}_t(t){const s=this.Wt.length;return this.Wt.push(t),this.Vt=!0,s}get count(){return this.Wt.length}get isEmpty(){return this.Wt.length===0}clear(){this.Wt.length=0,this.Vt=!0}qt(t){if(t<=this.Ht)return;const s=Math.ceil(t*this.Kt);this.Ht=s,this.jt()}jt(){const t=this.wA;this.Jt&&t.deleteBuffer(this.Jt),this.Jt=t.createBuffer();const s=this.Ht*T.BYTES_PER_INSTANCE;t.bindBuffer(t.ARRAY_BUFFER,this.Jt),t.bufferData(t.ARRAY_BUFFER,s,t.DYNAMIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),this.Vt=!0,this.Zt=0}Ae(){if(!this.Vt||this.Wt.length===0)return;const t=this.wA,s=this.Wt.length;this.qt(s),(!this.Xt||this.Xt.length<s*T.FLOATS_PER_INSTANCE)&&(this.Xt=new Float32Array(s*T.FLOATS_PER_INSTANCE));const i=T.Ut(this.Wt);t.bindBuffer(t.ARRAY_BUFFER,this.Jt),s<=this.Zt?t.bufferSubData(t.ARRAY_BUFFER,0,i):t.bufferData(t.ARRAY_BUFFER,i,t.DYNAMIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),this.Vt=!1,this.Zt=s}te(t){let s=this.Nt.get(t);if(!s){s=new Map;const i=this.wA;for(const B in O.ATTRIBUTES){const r=i.getAttribLocation(t,B);r!==-1&&s.set(B,r)}this.Nt.set(t,s)}return s}Dt(t){if(!this.Jt||this.Wt.length===0)return;const s=this.wA,i=t.XA;this.Ae();const B=this.te(i);s.bindBuffer(s.ARRAY_BUFFER,this.Jt);for(const[r,E]of B){const Q=O.ATTRIBUTES[r];Q&&(s.enableVertexAttribArray(E),s.vertexAttribPointer(E,Q.size,Q.type,Q.normalized,Q.stride,Q.offset),s.vertexAttribDivisor(E,Q.divisor))}}wt(t){const s=this.wA,i=this.te(t.XA);for(const[,B]of i)s.disableVertexAttribArray(B),s.vertexAttribDivisor(B,0)}Pt(t,s){this.Wt.length!==0&&this.wA.drawArraysInstanced(t,0,s,this.Wt.length)}kA(){const t=this.wA;this.Jt&&(t.deleteBuffer(this.Jt),this.Jt=null),this.Wt.length=0,this.Nt.clear(),this.Xt=null}}class F{constructor(t,s,i,B){o(this,"wA");o(this,"ee");o(this,"se");o(this,"ie");o(this,"Be",null);this.wA=t,this.ee=s,this.se=i,this.ie=B;const r=this.wA.createBuffer();if(!r)throw Error("Failed to create unit geometry buffer");this.wA.bindBuffer(this.wA.ARRAY_BUFFER,r),this.wA.bufferData(this.wA.ARRAY_BUFFER,this.ie.Qe,this.wA.STATIC_DRAW),this.wA.bindBuffer(this.wA.ARRAY_BUFFER,null),this.Be=r}get type(){return this.se}get unitGeometry(){return this.ie}get unitBuffer(){return this.Be}get batch(){return this.ee}ft(){this.ee.clear()}lt(){return!this.ee.isEmpty}kA(){this.ee.kA(),this.Be&&(this.wA.deleteBuffer(this.Be),this.Be=null)}Ee(t,s,i,B,r){const E=this.re(t,s,i,B,r.rotationX||0,r.rotationY||0,r.rotationZ||0);return{position:[t,s],size:[i,B],AA:r.character||[0,0,0],primaryColor:r.charColor||[1,1,1,1],secondaryColor:r.bgColor||[0,0,0,1],rotation:r.charRotation||[0,0],transform:[r.invert?1:0,r.flipHorizontally?1:0,r.flipVertically?1:0],globalRotationX:E.radiansX,globalRotationY:E.radiansY,globalRotationZ:E.radiansZ,rotationCenter:[E.centerX,E.centerY]}}ne(t,s){const i=L(this.wA)||[0,0,this.wA.canvas.width,this.wA.canvas.height];return{nx:t/i[2]*2-1,ny:1-s/i[3]*2}}ge(t,s,i){const B=this.ne(s,i);t.rotationCenter=[B.nx,B.ny]}re(t,s,i,B,r,E,Q){const g=L(this.wA)||[0,0,this.wA.canvas.width,this.wA.canvas.height],a=g[2],c=g[3];return{centerX:(t+i/2)/a*2-1,centerY:1-(s+B/2)/c*2,radiansX:-r*Math.PI/180,radiansY:-E*Math.PI/180,radiansZ:-Q*Math.PI/180,aspectRatio:a/c}}}const oA={Qe:new Float32Array([0,0,0,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0,1,0,1,1,1,1]),It:6,ut:WebGL2RenderingContext.TRIANGLES,rt:16,Et:{Qt:{size:2,offset:0},nt:{size:2,offset:8}}};class gA extends F{constructor(t,s){super(t,s,P.RECTANGLE,oA)}_t(t,s){const i=this.Ee(t.x,t.y,t.width,t.height,s);return this.ee._t(i)}}const aA={Qe:new Float32Array([0,-.5,0,0,1,-.5,1,0,0,.5,0,1,0,.5,0,1,1,-.5,1,0,1,.5,1,1]),It:6,ut:WebGL2RenderingContext.TRIANGLES,rt:16,Et:{Qt:{size:2,offset:0},nt:{size:2,offset:8}}};class hA extends F{constructor(t,s){super(t,s,P.LINE,aA)}_t(t,s){const i=t.x2-t.x1,B=t.y2-t.y1,r=Math.hypot(i,B),E=Math.atan2(B,i),Q=t.thickness||s.lineWeight||1,g=t.x1+i/2,a=t.y1+B/2,c=g-r/2,h=a,l={character:s.character,charColor:s.charColor,bgColor:s.bgColor,charRotation:s.charRotation,flipHorizontally:s.flipHorizontally,flipVertically:s.flipVertically,invert:s.invert,rotationX:s.rotationX||0,rotationY:s.rotationY||0,rotationZ:(s.rotationZ||0)+180*E/Math.PI,lineWeight:Q},C=this.Ee(c,h,r,Q,l);return this.ge(C,g,a),this.ee._t(C)}}const cA={Qe:function(n=32){const t=[],s=2*Math.PI/n;for(let i=0;i<n;i++){const B=i*s,r=(i+1)%n*s,E=Math.cos(B),Q=Math.sin(B),g=.5*(E+1),a=.5*(Q+1),c=Math.cos(r),h=Math.sin(r),l=.5*(c+1),C=.5*(h+1);t.push(0,0,.5,.5,E,Q,g,a,c,h,l,C)}return new Float32Array(t)}(32),It:96,ut:WebGL2RenderingContext.TRIANGLES,rt:16,Et:{Qt:{size:2,offset:0},nt:{size:2,offset:8}}};class lA extends F{constructor(t,s){super(t,s,P.ELLIPSE,cA)}_t(t,s){const i=this.Ee(t.x,t.y,t.width,t.height,s);return this.ge(i,t.x,t.y),this.ee._t(i)}}let CA={Qe:function(n){const t=[];for(let s=0;s<n;s++){const i=s/n,B=(s+1)/n;t.push(i,0,i,0,i,1,i,1,B,1,B,1)}return new Float32Array(t)}(32),It:96,ut:WebGL2RenderingContext.TRIANGLES,rt:16,Et:{Qt:{size:2,offset:0},nt:{size:2,offset:8}}};class DA extends F{constructor(t,s){super(t,s,P.ARC,CA)}_t(t,s){const i=t.x-t.width/2,B=t.y-t.height/2,r=t.start*Math.PI/180,E=t.stop*Math.PI/180,Q=this.Ee(i,B,t.width,t.height,s);return this.ge(Q,t.x,t.y),Q.arcAngles=[r,E],this.ee._t(Q)}}const PA={Qe:new Float32Array([0,0,0,0,1,0,1,0,.5,1,.5,1]),It:3,ut:WebGL2RenderingContext.TRIANGLES,rt:16,Et:{Qt:{size:2,offset:0},nt:{size:2,offset:8}}};class uA extends F{constructor(t,s){super(t,s,P.TRIANGLE,PA)}_t(t,s){const i=Math.min(t.x1,t.x2,t.x3),B=Math.max(t.x1,t.x2,t.x3),r=Math.min(t.y1,t.y2,t.y3),E=B-i,Q=Math.max(t.y1,t.y2,t.y3)-r,g=this.Ee(i,r,E,Q,s),a=i+.5*E,c=r+Q*(1/3);return this.ge(g,a,c),this.ee._t(g)}}function X(n,t,s,i,B){const r=1-n,E=r*r,Q=n*n;return E*r*t+3*E*n*s+3*r*Q*i+Q*n*B}const wA={Qe:function(n=16){const t=[];for(let s=0;s<n;s++){const i=s/n,B=(s+1)/n;t.push(i,-.5,i,0),t.push(B,-.5,B,0),t.push(i,.5,i,1),t.push(i,.5,i,1),t.push(B,-.5,B,0),t.push(B,.5,B,1)}return new Float32Array(t)}(16),It:96,ut:WebGL2RenderingContext.TRIANGLES,rt:16,Et:{Qt:{size:2,offset:0},nt:{size:2,offset:8}}};class IA extends F{constructor(t,s){super(t,s,P.BEZIER_CURVE,wA)}_t(t,s){const i=s.lineWeight||1,B=X(.5,t.x1,t.cp1x,t.cp2x,t.x2),r=X(.5,t.y1,t.cp1y,t.cp2y,t.y2),E={character:s.character,charColor:s.charColor,bgColor:s.bgColor,charRotation:s.charRotation,flipHorizontally:s.flipHorizontally,flipVertically:s.flipVertically,invert:s.invert,rotationX:s.rotationX||0,rotationY:s.rotationY||0,rotationZ:s.rotationZ||0,lineWeight:i},Q=this.Ee(0,0,1,i,E);return this.ge(Q,B,r),Q.bezierStartPoint=[t.x1,t.y1],Q.bezierControlPoint1=[t.cp1x,t.cp1y],Q.bezierControlPoint2=[t.cp2x,t.cp2y],Q.bezierEndPoint=[t.x2,t.y2],this.ee._t(Q)}}class fA{constructor(t){o(this,"wA");o(this,"oe",null);o(this,"ae");o(this,"he",null);o(this,"ce",{});o(this,"Ce",null);o(this,"le",new Map);o(this,"De");o(this,"Pe");o(this,"ue");o(this,"K",[]);this.wA=t,this.ae=new BA(t),this.ue=new $,this.De=new EA(t,this),this.Pe=new QA,this.Ce=t.createBuffer(),S(this.wA,[0,0,this.wA.canvas.width,this.wA.canvas.height])}Ie(t){let s=this.le.get(t);if(s)return s;const i=new nA(this.wA);return s=(0,{[P.RECTANGLE]:()=>new gA(this.wA,i),[P.LINE]:()=>new hA(this.wA,i),[P.ELLIPSE]:()=>new lA(this.wA,i),[P.ARC]:()=>new DA(this.wA,i),[P.TRIANGLE]:()=>new uA(this.wA,i),[P.BEZIER_CURVE]:()=>new IA(this.wA,i)}[t])(),this.le.set(t,s),s}we(t){this.oe!==t&&(this.oe=t,t.HA())}fe(t,s){return this.ae.st(t,s)}At(){return this.ae.At()}YA(){return this.ae.YA()}tt(){return this.ae.tt()}de(t){this.he=t,t&&(this.ce={})}VA(t,s){this.ce[t]=s}_e(t){Object.assign(this.ce,t)}et(t){return this.ae.et(t)}pe(t,s,i,B,r){const E=this.At(),Q={l:t.textures[0],m:t.textures[1],n:t.textures[2],o:t.textures[3],p:t.textures[4],q:[t.width,t.height]};this.Pe.Ft(s,i,B,r,E,Q,this.ue)}me(t,s,i,B){var u;const r=this.wA,E=r.canvas.width,Q=r.canvas.height,g=t/E*2-1,a=(t+i)/E*2-1,c=1-s/Q*2,h=1-(s+B)/Q*2,l=new Float32Array([g,h,a,h,g,c,a,h,a,c,g,c]);r.bindBuffer(r.ARRAY_BUFFER,this.Ce),r.bufferData(r.ARRAY_BUFFER,l,r.DYNAMIC_DRAW);const C=((u=this.oe)==null?void 0:u.XA)||r.getParameter(r.CURRENT_PROGRAM),D=C?r.getAttribLocation(C,"a_position"):-1;D!==-1&&(r.enableVertexAttribArray(D),r.vertexAttribPointer(D,2,r.FLOAT,!1,8,0)),r.drawArrays(r.TRIANGLES,0,6),D!==-1&&r.disableVertexAttribArray(D)}ve(t,s,i,B){this.he?(this.Pe.Ft(t,s,i,B,this.he,{...this.ce},this.ue),this.he=null,this.ce={}):this.Pe.Yt(t,s,i,B,this.ue)}ye(t,s,i,B){this.Pe.Rt(t,s,i,B,this.ue.lineWeight,this.ue)}be(t,s,i,B){this.Pe.St(t,s,i,B,this.ue)}$e(t,s,i,B,r,E){this.Pe.zt(t,s,i,B,r,E,this.ue)}Ge(t,s,i,B,r,E,Q,g){const a=this.ue.lineWeight;this.Pe.Ot(t,s,i,B,r,E,Q,g,a,this.ue)}Me(t,s,i=1,B={}){return new U(this.wA,t,s,i,B,this,!0)}xe(t,s,i,B,r,E){this.Pe.kt(t,s,i,B,r,E,this.ue)}Ye(t,s=t,i=t,B=255){this.state.DA(t,s,i,B),this.Lt(t/255,s/255,i/255,B/255)}Lt(t=0,s=0,i=0,B=0){this.wA.clearColor(t,s,i,B),this.wA.clear(this.wA.COLOR_BUFFER_BIT)}Fe(){this.wA.viewport(0,0,this.wA.canvas.width,this.wA.canvas.height),S(this.wA,[0,0,this.wA.canvas.width,this.wA.canvas.height])}get context(){return this.wA}get state(){return this.ue}RA(t){this.K.push(this.ue),this.ue=t}SA(){const t=this.K.pop();t&&(this.ue=t)}FA(t){const s=t,i=L(this.wA)??this.wA.getParameter(this.wA.VIEWPORT),B={shader:s,gl:this.wA,viewport:i};this.we(s);const r=new Set;for(const E of this.Pe)E.type===P.CUSTOM?r.add(P.RECTANGLE):r.add(E.type);for(const E of r)E!==P.CUSTOM&&this.Ie(E);this.De.Ct(B,this.Pe,this.le),this.Pe.Lt()}kA(){this.wA.deleteBuffer(this.Ce),this.Pe.Lt();for(const t of this.le.values())t.kA();this.ae.kA()}}const d={readShort:(n,t)=>(d.t.uint16[0]=n[t]<<8|n[t+1],d.t.int16[0]),readUshort:(n,t)=>n[t]<<8|n[t+1],readUshorts(n,t,s){const i=[];for(let B=0;B<s;B++)i.push(d.readUshort(n,t+2*B));return i},readUint(n,t){const s=d.t.uint8;return s[3]=n[t],s[2]=n[t+1],s[1]=n[t+2],s[0]=n[t+3],d.t.uint32[0]},readASCII(n,t,s){let i="";for(let B=0;B<s;B++)i+=String.fromCharCode(n[t+B]);return i},t:(()=>{const n=new ArrayBuffer(8);return{uint8:new Uint8Array(n),int16:new Int16Array(n),uint16:new Uint16Array(n),uint32:new Uint32Array(n)}})()},dA={parseTab(n,t,s){const i={tables:[],ids:{},off:t};n=new Uint8Array(n.buffer,t,s),t=0;const B=d,r=B.readUshort,E=r(n,t+=2);t+=2;const Q=[];for(let g=0;g<E;g++){const a=r(n,t),c=r(n,t+=2);t+=2;const h=B.readUint(n,t);t+=4;const l=`p${a}e${c}`;let C=Q.indexOf(h);if(C===-1){let D;C=i.tables.length,Q.push(h);const u=r(n,h);D=u===4?this.parse4(n,h):u===12?this.parse12(n,h):{format:u},i.tables.push(D)}i.ids[l]=C}return i},parse4(n,t){const s=d,i=s.readUshort,B=s.readUshorts,r=t,E=i(n,t+=2);t+=2;const Q=i(n,t+=2)>>>1,g={format:4,searchRange:i(n,t+=2),entrySelector:0,rangeShift:0,endCount:[],startCount:[],idDelta:[],idRangeOffset:[],glyphIdArray:[]};t+=2,g.entrySelector=i(n,t),t+=2,g.rangeShift=i(n,t),t+=2,g.endCount=B(n,t,Q),t+=2*Q,t+=2,g.startCount=B(n,t,Q),t+=2*Q;for(let a=0;a<Q;a++)g.idDelta.push(s.readShort(n,t)),t+=2;return g.idRangeOffset=B(n,t,Q),t+=2*Q,g.glyphIdArray=B(n,t,r+E-t>>1),g},parse12(n,t){const s=d.readUint;s(n,t+=4),s(n,t+=4);const i=s(n,t+=4);t+=4;const B=new Uint32Array(3*i);for(let r=0;r<3*i;r+=3)B[r]=s(n,t+(r<<2)),B[r+1]=s(n,t+(r<<2)+4),B[r+2]=s(n,t+(r<<2)+8);return{format:12,groups:B}}},pA={parseTab(n,t,s){const i=d;t+=18;const B=i.readUshort(n,t);t+=2,t+=16;const r=i.readShort(n,t);t+=2;const E=i.readShort(n,t);t+=2;const Q=i.readShort(n,t);t+=2;const g=i.readShort(n,t);return t+=2,t+=6,{unitsPerEm:B,xMin:r,yMin:E,xMax:Q,yMax:g,indexToLocFormat:i.readShort(n,t)}}},mA={parseTab(n,t,s){const i=d;t+=4;const B=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],r={};for(let E=0;E<B.length;E++){const Q=B[E],g=Q==="advanceWidthMax"||Q==="numberOfHMetrics"?i.readUshort:i.readShort;r[Q]=g(n,t+2*E)}return r}},yA={parseTab(n,t,s,i){const B=d,r=[],E=[],Q=i.maxp.numGlyphs,g=i.hhea.numberOfHMetrics;let a=0,c=0,h=0;for(;h<g;)a=B.readUshort(n,t+(h<<2)),c=B.readShort(n,t+(h<<2)+2),r.push(a),E.push(c),h++;for(;h<Q;)r.push(a),E.push(c),h++;return{aWidth:r,lsBearing:E}}},Z={cmap:dA,head:pA,hhea:mA,maxp:{parseTab(n,t,s){const i=d;return i.readUint(n,t),t+=4,{numGlyphs:i.readUshort(n,t)}}},hmtx:yA,loca:{parseTab(n,t,s,i){const B=d,r=[],E=i.head.indexToLocFormat,Q=i.maxp.numGlyphs+1;if(E===0)for(let g=0;g<Q;g++)r.push(B.readUshort(n,t+(g<<1))<<1);else if(E===1)for(let g=0;g<Q;g++)r.push(B.readUint(n,t+(g<<2)));return r}},glyf:{parseTab(n,t,s,i){const B=[],r=i.maxp.numGlyphs;for(let E=0;E<r;E++)B.push(null);return B},Re(n,t){const s=d,i=n.Se,B=n.loca;if(B[t]===B[t+1])return null;const r=v.findTable(i,"glyf",n.ke);if(!r)return null;let E=r[0]+B[t];const Q={};if(Q.noc=s.readShort(i,E),E+=2,Q.xMin=s.readShort(i,E),E+=2,Q.yMin=s.readShort(i,E),E+=2,Q.xMax=s.readShort(i,E),E+=2,Q.yMax=s.readShort(i,E),E+=2,Q.xMin>=Q.xMax||Q.yMin>=Q.yMax)return null;if(Q.noc>0){Q.endPts=[];for(let l=0;l<Q.noc;l++)Q.endPts.push(s.readUshort(i,E)),E+=2;const g=s.readUshort(i,E);if(E+=2,i.length-E<g)return null;E+=g;const a=Q.endPts[Q.noc-1]+1;Q.flags=[];for(let l=0;l<a;l++){const C=i[E];if(E++,Q.flags.push(C),8&C){const D=i[E];E++;for(let u=0;u<D;u++)Q.flags.push(C),l++}}Q.xs=[];for(let l=0;l<a;l++){const C=Q.flags[l],D=!!(16&C);2&C?(Q.xs.push(D?i[E]:-i[E]),E++):D?Q.xs.push(0):(Q.xs.push(s.readShort(i,E)),E+=2)}Q.ys=[];for(let l=0;l<a;l++){const C=Q.flags[l],D=!!(32&C);4&C?(Q.ys.push(D?i[E]:-i[E]),E++):D?Q.ys.push(0):(Q.ys.push(s.readShort(i,E)),E+=2)}let c=0,h=0;for(let l=0;l<a;l++)c+=Q.xs[l],h+=Q.ys[l],Q.xs[l]=c,Q.ys[l]=h}else Q.parts=[],Q.endPts=[],Q.flags=[],Q.xs=[],Q.ys=[];return Q}}},v={parse:n=>[((t,s,i,B)=>{const r=Z,E={Se:t,ze:s,ke:i};for(const Q in r){const g=Q,a=v.findTable(t,g,i);if(a){const[c,h]=a;let l=B[c];l==null&&(l=r[g].parseTab(t,c,h,E),B[c]=l),E[g]=l}}return E})(new Uint8Array(n),0,0,{})],findTable(n,t,s){const i=d,B=i.readUshort(n,s+4);let r=s+12;for(let E=0;E<B;E++){const Q=i.readASCII(n,r,4);i.readUint(n,r+4);const g=i.readUint(n,r+8),a=i.readUint(n,r+12);if(Q===t)return[g,a];r+=16}return null},T:Z,B:d};class W{constructor(){o(this,"Oe",new Map);o(this,"Le",new Map)}Te(t,s){const i=`${this.Ue(t)}_${s}`;if(this.Oe.has(i))return this.Oe.get(i);const B=t.cmap;if(!B||!B.tables)return this.Oe.set(i,0),0;let r=0;for(const E of B.tables)if(E.format===4?r=this.We(s,E):E.format===12&&(r=this.He(s,E)),r>0)break;return this.Oe.set(i,r),r}Ke(t,s){const i=s.codePointAt(0);return i===void 0?0:this.Te(t,i)}Je(t,s){const i=t.hmtx;return i&&i.aWidth&&i.aWidth.length!==0?s<i.aWidth.length?i.aWidth[s]:i.aWidth[i.aWidth.length-1]:0}Ve(t,s){const i=s/t.head.unitsPerEm,B=t.hhea.ascender*i,r=t.hhea.descender*i,E=t.hhea.lineGap*i;return{ascender:B,descender:r,lineGap:E,lineHeight:B-r+E,unitsPerEm:t.head.unitsPerEm,scale:i}}Ze(){this.Oe.clear(),this.Le.clear()}Ue(t){return`${t.ke}_${t.Se.length}`}We(t,s){const i=s.endCount.length;let B=-1;for(let r=0;r<i;r++)if(t<=s.endCount[r]){B=r;break}if(B===-1||t<s.startCount[B])return 0;if(s.idRangeOffset[B]===0)return t+s.idDelta[B]&65535;{const r=s.idRangeOffset[B]/2+(t-s.startCount[B])-(i-B);if(r>=0&&r<s.glyphIdArray.length){const E=s.glyphIdArray[r];return E===0?0:E+s.idDelta[B]&65535}}return 0}He(t,s){const i=s.groups.length/3;for(let B=0;B<i;B++){const r=s.groups[3*B],E=s.groups[3*B+1],Q=s.groups[3*B+2];if(t>=r&&t<=E)return Q+(t-r)}return 0}}class vA{constructor(t){o(this,"Ne");this.Ne=t}Xe(t){var i;const s=[];return(i=t.cmap)!=null&&i.tables?(t.cmap.tables.forEach(B=>{if(B.format===4){const r=this.je(B);s.push(...r)}else if(B.format===12){const r=this.qe(B);s.push(...r)}}),[...new Set(s)]):[]}As(t,s){return this.Ne.Ke(t,s)>0}ts(t,s){for(const i of s)if(!this.As(t,i))return!1;return!0}es(t,s){return s.filter(i=>this.As(t,i))}ss(t){return t.filter(s=>this.Bs(s))}je(t){const s=[];if(!(t.startCount&&t.endCount&&t.idRangeOffset&&t.idDelta))return s;for(let i=0;i<t.startCount.length;i++){const B=t.startCount[i],r=t.endCount[i];if(B!==65535||r!==65535){for(let E=B;E<=r;E++)if(this.Qs(t,E,i)>0)try{const Q=String.fromCodePoint(E);s.push(Q)}catch{}}}return s}qe(t){const s=[];if(!t.groups)return s;for(let i=0;i<t.groups.length;i+=3){const B=t.groups[i],r=t.groups[i+1],E=t.groups[i+2];for(let Q=B;Q<=r;Q++)if(E+(Q-B)>0)try{const g=String.fromCodePoint(Q);s.push(g)}catch{}}return s}Qs(t,s,i){if(t.idRangeOffset[i]===0)return s+t.idDelta[i]&65535;{const B=t.idRangeOffset[i]/2+(s-t.startCount[i])-(t.startCount.length-i);if(B>=0&&t.glyphIdArray&&B<t.glyphIdArray.length){const r=t.glyphIdArray[B];if(r!==0)return r+t.idDelta[i]&65535}}return 0}Bs(t){const s=t.codePointAt(0)||0;return!(s>=0&&s<=31&&s!==9&&s!==10&&s!==13||s>=127&&s<=159)}}class xA{constructor(){o(this,"Es");const t=new W;this.Es=new vA(t)}extractCharacters(t){return this.Es.Xe(t)}filterProblematicCharacters(t){return this.Es.ss(t)}characterExists(t,s){return this.Es.As(t,s)}allCharactersExist(t,s){return this.Es.ts(t,s)}}class bA{constructor(t){o(this,"rs");o(this,"ns");o(this,"vA");o(this,"gs");this.vA=t,this.gs=new W,this.rs=document.createElement("canvas"),this.ns=this.rs.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(t,s,i,B){const r=t.length,E=Math.ceil(Math.sqrt(r)),Q=Math.ceil(r/E),g=s.width*E,a=s.height*Q,c=typeof B=="object"?B:null;this.hs(g,a),this.cs(t,s,E,i,c);const h=this.vA.Me(g,a,1,{filter:"nearest"});return h.MA(this.rs),{framebuffer:h,columns:E,rows:Q}}hs(t,s){this.rs.width=t,this.rs.height=s,this.rs.style.width=t+"px",this.rs.style.height=t+"px",this.ns.imageSmoothingEnabled=!1,this.rs.style.imageRendering="pixelated",this.ns.fillStyle="black",this.ns.fillRect(0,0,t,s),this.ns.textBaseline="top",this.ns.textAlign="left",this.ns.fillStyle="white"}cs(t,s,i,B,r){const E=B/r.head.unitsPerEm;for(let Q=0;Q<t.length;Q++){const g=Q%i,a=Math.floor(Q/i),c=t[Q].character,h=this.Cs(r,c);if(!h)continue;const l=c.codePointAt(0)||0,C=this.gs.Te(r,l),D=this.ls(r,C)*E,u=g*s.width,m=a*s.height,p=u+.5*s.width,y=m+.5*s.height,x=Math.round(p-.5*s.width),_=Math.round(y-.5*B),it=x+.5*(s.width-D),Bt=_+r.hhea.ascender*E;this.Ds(h,it,Bt,E)}}Cs(t,s){const i=s.codePointAt(0)||0,B=this.gs.Te(t,i);if(B===0)return null;if(t.glyf&&t.glyf[B]!==null)return t.glyf[B];if(v&&v.T&&v.T.glyf){const r=v.T.glyf.Re(t,B);return t.glyf&&r&&(t.glyf[B]=r),r}return null}ls(t,s){const i=t.hmtx;return i&&i.aWidth?s<i.aWidth.length?i.aWidth[s]:i.aWidth[i.aWidth.length-1]:0}Ds(t,s,i,B){if(!t||!t.xs||t.noc===0)return;const{xs:r,ys:E,endPts:Q,flags:g}=t;if(!(r&&E&&Q&&g))return;this.ns.beginPath();let a=0;for(let c=0;c<Q.length;c++){const h=Q[c];if(!(h<a)){if(h>=a){const l=s+r[a]*B,C=i-E[a]*B;this.ns.moveTo(l,C);let D=a+1;for(;D<=h;)if(1&g[D]){const u=s+r[D]*B,m=i-E[D]*B;this.ns.lineTo(u,m),D++}else{const u=s+r[D]*B,m=i-E[D]*B;let p=D+1>h?a:D+1;if(1&g[p]){const y=s+r[p]*B,x=i-E[p]*B;this.ns.quadraticCurveTo(u,m,y,x),D=p+1}else{const y=(u+(s+r[p]*B))/2,x=(m+(i-E[p]*B))/2;this.ns.quadraticCurveTo(u,m,y,x),D=p}}this.ns.closePath()}a=h+1}}this.ns.fill()}}class RA{constructor(){o(this,"Ne");this.Ne=new W}calculateMaxGlyphDimensions(t,s,i){let B=0;const r=this.Ne.Ve(i,s),E=r.lineHeight;for(const Q of t){const g=this.Ne.Ke(i,Q);if(g===0)continue;const a=this.Ne.Je(i,g)*r.scale;B=Math.max(B,a)}return{width:Math.ceil(B),height:Math.ceil(E)}}getCharacterAdvanceWidth(t,s,i){const B=this.Ne.Ve(i,s),r=this.Ne.Ke(i,t);return this.Ne.Je(i,r)*B.scale}getFontMetrics(t,s){return this.Ne.Ve(s,t)}Ze(){this.Ne.Ze()}}class TA{constructor(){o(this,"gs");this.gs=new W}createCharacterObjects(t,s){return t.map((i,B)=>{const r=i.codePointAt(0)||0,E=this.Ps(B);let Q=0;if(s.hmtx&&s.hmtx.aWidth){const g=this.gs.Te(s,r);g>0&&s.hmtx.aWidth[g]!==void 0&&(Q=s.hmtx.aWidth[g])}return{character:i,unicode:r,color:E,advanceWidth:Q}})}Ps(t){return[t%256/255,Math.floor(t/256)%256/255,Math.floor(t/65536)%256/255]}us(t,s){if(!G._(typeof t=="string","Character must be a string.",{method:"getCharacterColor",providedValue:t}))return[0,0,0];const i=s.find(B=>B.character===t);return i?i.color:[0,0,0]}Is(t,s){return G._(typeof t=="string"&&t.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:t})?Array.from(t).map(i=>this.us(i,s)||[0,0,0]):[[0,0,0]]}}class j{constructor(t,s=16){o(this,"ws");o(this,"fs",[]);o(this,"ds");o(this,"_s",16);o(this,"ps",0);o(this,"vs",0);o(this,"bs",{width:0,height:0});o(this,"$s");o(this,"Gs");o(this,"Ms");o(this,"Ys");o(this,"Fs");this._s=s,this.Gs=new xA,this.Ms=new bA(t),this.Ys=new RA,this.Fs=new TA}async Rs(t){let s;if(t){const i=await fetch(t);if(!i.ok)throw new w(`Failed to load font file: ${i.status} ${i.statusText}`);s=await i.arrayBuffer()}else s=await(await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAA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AIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
|
|
11
|
-
`)).arrayBuffer();await this.Ss(s),this.ws=v.parse(s)[0],await this.ks()}zs(t){if(t===void 0)return this._s;this._s=t,this.bs=this.Ys.calculateMaxGlyphDimensions(this.fs.map(i=>i.character),this._s,this.ws);const s=this.Ms.createTextureAtlas(this.fs,this.bs,this._s,this.ws);this.ds=s.framebuffer,this.ps=s.columns,this.vs=s.rows}async Os(t){try{const s=await fetch(t);if(!s.ok)throw new w(`Failed to load font file: ${s.status} ${s.statusText}`);const i=await s.arrayBuffer();await this.Ss(i);const B=v.parse(i);if(!B||B.length===0)throw Error("Failed to parse font file");this.ws=B[0],await this.ks()}catch(s){throw new w("Failed to load font: "+(s instanceof Error?s.message:"Unknown error"),s)}}async Ss(t){const s=Date.now();this.$s=new FontFace("CustomFont_"+s,t),await this.$s.load(),document.fonts.add(this.$s)}async ks(){const t=this.Gs.extractCharacters(this.ws),s=this.Gs.filterProblematicCharacters(t);this.fs=this.Fs.createCharacterObjects(s,this.ws),this.bs=this.Ys.calculateMaxGlyphDimensions(s,this._s,this.ws);const i=this.Ms.createTextureAtlas(this.fs,this.bs,this._s,this.ws);this.ds=i.framebuffer,this.ps=i.columns,this.vs=i.rows}us(t){return this.Fs.us(t,this.fs)}Is(t){return this.Fs.Is(t,this.fs)}kA(){this.ds.kA(),document.fonts.delete(this.$s)}get fontFramebuffer(){return this.ds}get characters(){return this.fs}get textureColumns(){return this.ps}get textureRows(){return this.vs}get maxGlyphDimensions(){return this.bs}get fontSize(){return this._s}get font(){return this.ws}}class q{constructor(t,s,i){o(this,"Ls");o(this,"Ts");o(this,"PA");o(this,"uA");o(this,"Us");o(this,"Ws");o(this,"Hs");o(this,"Ks");o(this,"Js");this.Hs=t,this.Ks=s,this.Js=i,this.iA()}iA(){this.Ls=Math.floor(this.Hs.width/this.Ks),this.Ts=Math.floor(this.Hs.height/this.Js),this.PA=this.Ls*this.Ks,this.uA=this.Ts*this.Js,this.Us=Math.floor((this.Hs.width-this.PA)/2),this.Ws=Math.floor((this.Hs.height-this.uA)/2)}Vs(t,s){this.Ks=t,this.Js=s,this.iA()}get cellWidth(){return this.Ks}get cellHeight(){return this.Js}get cols(){return this.Ls}get rows(){return this.Ts}get width(){return this.PA}get height(){return this.uA}get offsetX(){return this.Us}get offsetY(){return this.Ws}}class AA{constructor(t={}){o(this,"Hs");o(this,"Zs");o(this,"Ns");t.canvas?(this.Hs=t.canvas,this.Ns=!1):(this.Hs=this.Xs(t.width,t.height),this.Ns=!0),this.Hs.style.imageRendering="pixelated"}Xs(t,s){const i=document.createElement("canvas");return i.className="textmodeCanvas",i.style.imageRendering="pixelated",i.width=t||800,i.height=s||600,document.body.appendChild(i),i}js(t,s){this.Hs.width=t??this.Hs.width,this.Hs.height=s??this.Hs.height}qs(){const t=this.Hs.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"});if(!t)throw new w("`textmode.js` requires WebGL2 support.");return t}kA(){this.Zs&&this.Zs.disconnect();const t=this.Hs.getContext("webgl")||this.Hs.getContext("webgl2");if(t){const s=t.getExtension("WEBGL_lose_context");s&&s.loseContext()}this.Ns&&this.Hs.parentNode&&this.Hs.parentNode.removeChild(this.Hs)}get canvas(){return this.Hs}get width(){return this.Hs.width}get height(){return this.Hs.height}}class MA{constructor(t=60){o(this,"Ai");o(this,"ti");o(this,"ei",null);o(this,"si",0);o(this,"ii",!0);o(this,"Bi",0);o(this,"Qi",0);o(this,"Ei",[]);o(this,"ri",10);o(this,"ni",0);this.Ai=t,this.ti=1e3/t}start(t){if(!this.ii)return;this.si=performance.now();const s=i=>{if(!this.ii)return void(this.ei=null);const B=i-this.si;B>=this.ti&&(t(),this.si=i-B%this.ti),this.ii&&(this.ei=requestAnimationFrame(s))};this.ei=requestAnimationFrame(s)}stop(){this.ei&&(cancelAnimationFrame(this.ei),this.ei=null)}pause(){this.ii&&(this.ii=!1,this.stop())}resume(t){this.ii||(this.ii=!0,this.start(t))}frameRate(t,s){if(t===void 0)return this.Bi;this.Ai=t,this.ti=1e3/t,this.ii&&s&&(this.stop(),this.start(s))}measureFrameRate(){const t=performance.now();if(this.Qi>0){const s=t-this.Qi;this.Ei.push(s),this.Ei.length>this.ri&&this.Ei.shift();const i=this.Ei.reduce((B,r)=>B+r,0)/this.Ei.length;this.Bi=1e3/i}this.Qi=t}get isLooping(){return this.ii}get frameRateLimit(){return this.Ai}get currentFrameRate(){return this.Bi}get frameCount(){return this.ni}set frameCount(t){this.ni=t}incrementFrame(){this.ni++}resetFrameCount(){this.ni=0}}class FA{constructor(){o(this,"gi",new Map);o(this,"oi",null);o(this,"ai",null);o(this,"hi");o(this,"ci");o(this,"Ci",!1);o(this,"li");o(this,"Di");o(this,"Pi",{ArrowUp:"UP_ARROW",ArrowDown:"DOWN_ARROW",ArrowLeft:"LEFT_ARROW",ArrowRight:"RIGHT_ARROW",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",Enter:"ENTER",Return:"RETURN",Tab:"TAB",Escape:"ESCAPE",Backspace:"BACKSPACE",Delete:"DELETE",Insert:"INSERT",Home:"HOME",End:"END",PageUp:"PAGE_UP",PageDown:"PAGE_DOWN",Shift:"SHIFT",Control:"CONTROL",Alt:"ALT",Meta:"META"," ":"SPACE"})}ui(){this.Ci||(this.hi=t=>{this.Ii(t)},this.ci=t=>{this.wi(t)},window.addEventListener("keydown",this.hi,{passive:!1}),window.addEventListener("keyup",this.ci,{passive:!1}),this.Ci=!0)}fi(){this.Ci&&(window.removeEventListener("keydown",this.hi),window.removeEventListener("keyup",this.ci),this.Ci=!1,this.gi.clear(),this.oi=null,this.ai=null)}di(t){this.li=t}_i(t){this.Di=t}pi(t){const s=this.mi(t),i=this.gi.get(t)||this.gi.get(s);return(i==null?void 0:i.isPressed)||!1}yi(){return this.oi}bi(){return this.ai}$i(){const t=[];for(const[s,i]of this.gi)i.isPressed&&t.push(s);return t}Gi(){return{ctrl:this.pi("Control"),shift:this.pi("Shift"),alt:this.pi("Alt"),meta:this.pi("Meta")}}Mi(){this.gi.clear(),this.oi=null,this.ai=null}Ii(t){const s=t.key,i=Date.now();this.gi.has(s)||this.gi.set(s,{isPressed:!1,lastPressTime:0,lastReleaseTime:0});const B=this.gi.get(s);if(!B.isPressed&&(B.isPressed=!0,B.lastPressTime=i,this.oi=s,this.li)){const r={key:s,keyCode:t.keyCode,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,isPressed:!0,originalEvent:t};this.li(r)}}wi(t){const s=t.key,i=Date.now();this.gi.has(s)||this.gi.set(s,{isPressed:!1,lastPressTime:0,lastReleaseTime:0});const B=this.gi.get(s);if(B.isPressed=!1,B.lastReleaseTime=i,this.ai=s,this.Di){const r={key:s,keyCode:t.keyCode,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,isPressed:!1,originalEvent:t};this.Di(r)}}mi(t){return this.Pi[t]||t.toLowerCase()}}class GA{constructor(t){o(this,"Hs");o(this,"xi");o(this,"Yi",{x:-1,y:-1});o(this,"Fi",{x:-1,y:-1});o(this,"Ri",null);o(this,"Si");o(this,"ki");o(this,"zi");o(this,"Oi");o(this,"Li");o(this,"Ti");o(this,"Ci",!1);o(this,"Ui");o(this,"Wi");o(this,"Hi");o(this,"Ki");o(this,"Ji");this.Hs=t}Rs(t){this.xi=t,this.Vi()}ui(){if(this.Ci)return;const t=this.Hs.canvas;this.Si=s=>{this.Zi(s),this.Ni(s)},this.ki=()=>{this.Fi={...this.Yi},this.Yi.x=-1,this.Yi.y=-1,this.Ri=null},this.zi=s=>{this.Zi(s),this.Xi(s)},this.Oi=s=>{this.Zi(s),this.ji(s)},this.Li=s=>{this.Zi(s),this.qi(s)},this.Ti=s=>{this.Zi(s),this.AB(s)},t.addEventListener("mousemove",this.Si,{passive:!0}),t.addEventListener("mouseleave",this.ki,{passive:!0}),t.addEventListener("mousedown",this.zi,{passive:!0}),t.addEventListener("mouseup",this.Oi,{passive:!0}),t.addEventListener("click",this.Li,{passive:!0}),t.addEventListener("wheel",this.Ti,{passive:!1}),this.Ci=!0}fi(){if(!this.Ci)return;const t=this.Hs.canvas;t.removeEventListener("mousemove",this.Si),t.removeEventListener("mouseleave",this.ki),t.removeEventListener("mousedown",this.zi),t.removeEventListener("mouseup",this.Oi),t.removeEventListener("click",this.Li),t.removeEventListener("wheel",this.Ti),this.Ci=!1}Vi(){if(this.Ci)try{if(this.Ri){const t=new MouseEvent("mousemove",{clientX:this.Ri.x,clientY:this.Ri.y,bubbles:!1,cancelable:!1});this.Zi(t)}else this.Yi.x!==-1&&this.Yi.y!==-1&&(this.Yi.x>=this.xi.cols||this.Yi.y>=this.xi.rows)&&(this.Yi.x=-1,this.Yi.y=-1)}catch{this.Yi.x=-1,this.Yi.y=-1}}tB(t){this.Ui=t}di(t){this.Wi=t}_i(t){this.Hi=t}eB(t){this.Ki=t}sB(t){this.Ji=t}iB(){return{x:this.Yi.x,y:this.Yi.y}}Ni(t){if(this.Ki){const s={position:{...this.Yi},previousPosition:{...this.Fi},originalEvent:t};this.Ki(s)}}Xi(t){if(this.Wi){const s={position:{...this.Yi},previousPosition:{...this.Fi},button:t.button,originalEvent:t};this.Wi(s)}}ji(t){if(this.Hi){const s={position:{...this.Yi},previousPosition:{...this.Fi},button:t.button,originalEvent:t};this.Hi(s)}}qi(t){if(this.Ui){const s={position:{...this.Yi},previousPosition:{...this.Fi},button:t.button,originalEvent:t};this.Ui(s)}}AB(t){if(this.Ji){const s={position:{...this.Yi},previousPosition:{...this.Fi},delta:{x:t.deltaX,y:t.deltaY},originalEvent:t};this.Ji(s)}}Zi(t){const s=this.Hs.canvas;this.Fi={...this.Yi},this.Ri={x:t.clientX,y:t.clientY};const i=s.getBoundingClientRect(),B=t.clientX-i.left,r=t.clientY-i.top,E=s.width/i.width,Q=r*(s.height/i.height),g=B*E-this.xi.offsetX,a=Q-this.xi.offsetY,c=Math.floor(g/this.xi.cellWidth),h=Math.floor(a/this.xi.cellHeight);c>=0&&c<this.xi.cols&&h>=0&&h<this.xi.rows?(this.Yi.x=c,this.Yi.y=h):(this.Yi.x=-1,this.Yi.y=-1)}}const YA=n=>class extends n{rotate(t=0,s=0,i=0){this.vA.state.EA(t),this.vA.state.rA(s),this.vA.state.nA(i)}rotateX(t){this.vA.state.EA(t)}rotateY(t){this.vA.state.rA(t)}rotateZ(t){this.vA.state.nA(t)}push(){this.vA.state.J()}pop(){this.vA.state.sA()}rect(t,s,i=1,B=1){this.vA.ve(t,s,i,B)}point(t,s){this.vA.ve(t,s,1,1)}line(t,s,i,B){this.vA.ye(t,s,i,B)}lineWeight(t){this.vA.state.QA(t)}background(t,s=t,i=t,B=255){this.vA.Ye(t,s,i,B)}char(t){this.vA.state.gA(this.ws.us(t))}charColor(t,s,i){this.vA.state.oA(t,s,i)}cellColor(t,s,i){this.vA.state.aA(t,s,i)}flipX(t){this.vA.state.hA(t)}flipY(t){this.vA.state.cA(t)}charRotation(t){this.vA.state.lA(t)}invert(t){this.vA.state.CA(t)}clear(){this.vA.Ye(0,0,0,0)}ellipse(t,s,i,B){this.vA.be(t,s,i/2,B/2)}triangle(t,s,i,B,r,E){this.vA.$e(t,s,i,B,r,E)}bezierCurve(t,s,i,B,r,E,Q,g){this.vA.Ge(t,s,i,B,r,E,Q,g)}arc(t,s,i,B,r,E){this.vA.xe(t,s,i,B,r,E)}shader(t){this.vA.de(t)}setUniform(t,s){this.vA.VA(t,s)}setUniforms(t){this.vA._e(t)}createFilterShader(t){return this.vA.et(t)}createFramebuffer(t){return this.vA.Me(t.width,t.height,5,{filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte"})}image(t,s,i,B,r){this.vA.pe(t,s,i,B??t.width,r??t.height)}};class N{BB(t){const s=t.xA(0),i=t.xA(1),B=t.xA(2),r=t.xA(3);return{characterPixels:s,primaryColorPixels:i,secondaryColorPixels:B,transformPixels:t.xA(4),rotationPixels:r}}QB(t,s){return t[s]+(t[s+1]<<8)}EB(t,s){return{r:t[s],g:t[s+1],b:t[s+2],a:t[s+3]}}}class J{rB(t,s){return new Blob([t],{type:s})}nB(t,s,i){try{const B=this.rB(t,i),r=URL.createObjectURL(B),E=document.createElement("a");E.href=r,E.download=s,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(r)}catch(B){throw console.error("Failed to download file:",B),Error("File download failed: "+(B instanceof Error?B.message:"Unknown error"))}}gB(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}oB(){const t=new Date;return{date:t.toISOString().split("T")[0],time:t.toTimeString().split(" ")[0].replace(/:/g,"-")}}aB(t){return t.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}hB(){return"textmode-export-"+this.gB()}}class _A extends N{cB(t,s,i){const B=t[i]===255,r=t[i+1]===255,E=t[i+2]===255,Q=s[i],g=s[i+1];return{isInverted:B,flipHorizontal:r,flipVertical:E,rotation:Math.round(360*(Q+g/255)/255*100)/100}}CB(t,s,i){return{x:t,y:s,cellX:t*i.cellWidth,cellY:s*i.cellHeight}}lB(t,s){const i=[];let B=0;for(let r=0;r<s.rows;r++)for(let E=0;E<s.cols;E++){const Q=4*B,g=this.QB(t.characterPixels,Q);let a=this.EB(t.primaryColorPixels,Q),c=this.EB(t.secondaryColorPixels,Q);const h=this.cB(t.transformPixels,t.rotationPixels,Q);if(h.isInverted){const C=a;a=c,c=C}const l=this.CB(E,r,s);i.push({charIndex:g,primaryColor:a,secondaryColor:c,transform:h,position:l}),B++}return i}}class SA{DB(t,s){const i=t.cmap;for(const B of i.tables)if(B.format===4){const r=B;for(let E=0;E<r.startCount.length;E++)if(s>=r.startCount[E]&&s<=r.endCount[E]){if(r.idRangeOffset[E]===0)return s+r.idDelta[E]&65535;{const Q=r.idRangeOffset[E]/2+(s-r.startCount[E])-(r.startCount.length-E);if(Q>=0&&Q<r.glyphIdArray.length){const g=r.glyphIdArray[Q];if(g!==0)return g+r.idDelta[E]&65535}}}}else if(B.format===12){const r=B;for(let E=0;E<r.groups.length;E+=3){const Q=r.groups[E],g=r.groups[E+1],a=r.groups[E+2];if(s>=Q&&s<=g)return a+(s-Q)}}return 0}PB(t,s,i,B,r){const E=r/t.head.unitsPerEm;return{getBoundingBox:()=>({x1:i+s.xMin*E,y1:B+-s.yMax*E,x2:i+s.xMax*E,y2:B+-s.yMin*E}),toSVG:()=>this.uB(s,i,B,E)}}uB(t,s,i,B){if(!t||!t.xs)return"";const{xs:r,ys:E,endPts:Q,flags:g}=t;if(!(r&&E&&Q&&g))return"";let a="",c=0;for(let h=0;h<Q.length;h++){const l=Q[h];if(!(l<c)){if(l>=c){const C=s+r[c]*B,D=i-E[c]*B;a+=`M${C.toFixed(2)},${D.toFixed(2)}`;let u=c+1;for(;u<=l;)if(1&g[u]){const m=s+r[u]*B,p=i-E[u]*B;a+=`L${m.toFixed(2)},${p.toFixed(2)}`,u++}else{const m=s+r[u]*B,p=i-E[u]*B;let y=u+1>l?c:u+1;if(1&g[y]){const x=s+r[y]*B,_=i-E[y]*B;a+=`Q${m.toFixed(2)},${p.toFixed(2)} ${x.toFixed(2)},${_.toFixed(2)}`,u=y+1}else{const x=(m+(s+r[y]*B))/2,_=(p+(i-E[y]*B))/2;a+=`Q${m.toFixed(2)},${p.toFixed(2)} ${x.toFixed(2)},${_.toFixed(2)}`,u=y}}a+="Z"}c=l+1}}return a}IB(t,s,i,B,r){const E=t.codePointAt(0)||0,Q=this.DB(s,E);let g=null;return s.glyf&&s.glyf[Q]!==null?g=s.glyf[Q]:(g=v.T.glyf.Re(s,Q),s.glyf[Q]=g),this.PB(s,g,i,B,r)}wB(t,s,i,B,r,E,Q,g){const a=i+(r-g*(Q/s.head.unitsPerEm))/2,c=B+(E+.7*Q)/2;return this.IB(t,s,a,c,Q).toSVG()||null}}class LA{constructor(){o(this,"fB");this.fB=new SA}dB(t){const{width:s,height:i}=t;return`<?xml version="1.0" encoding="UTF-8"?><svg width="${s}" height="${i}" viewBox="0 0 ${s} ${i}" xmlns="http://www.w3.org/2000/svg"><title>textmode.js sketch</title>`}_B(){return"</g></svg>"}pB(t,s){if(!s.includeBackgroundRectangles)return"";const[i,B,r,E]=s.backgroundColor;return`<rect width="${t.width}" height="${t.height}" fill="rgba(${i},${B},${r},${E/255})"/>`}mB(t,s){const{transform:i,position:B}=t;if(!i.flipHorizontal&&!i.flipVertical&&!i.rotation)return"";const r=B.cellX+s.cellWidth/2,E=B.cellY+s.cellHeight/2,Q=[];if(i.flipHorizontal||i.flipVertical){const g=i.flipHorizontal?-1:1,a=i.flipVertical?-1:1;Q.push(`translate(${r} ${E})scale(${g} ${a})translate(${-r} ${-E})`)}return i.rotation&&Q.push(`rotate(${i.rotation} ${r} ${E})`),` transform="${Q.join(" ")}"`}vB(t,s,i){if(!i.includeBackgroundRectangles||t.secondaryColor.a===0)return"";const{position:B}=t,{r,g:E,b:Q,a:g}=t.secondaryColor,a=`rgba(${r},${E},${Q},${g/255})`;return i.drawMode==="stroke"?`<rect x="${B.cellX}" y="${B.cellY}" width="${s.cellWidth}" height="${s.cellHeight}" stroke="${a}" fill="none" stroke-width="${i.strokeWidth}"/>`:`<rect x="${B.cellX}" y="${B.cellY}" width="${s.cellWidth}" height="${s.cellHeight}" fill="${a}"/>`}IB(t,s,i,B){const r=i.characters[t.charIndex];if(!r)return"";const E=this.fB.wB(r.character,i.font,t.position.cellX,t.position.cellY,s.cellWidth,s.cellHeight,i.fontSize,r.advanceWidth);if(!E)return"";const{r:Q,g,b:a,a:c}=t.primaryColor,h=`rgba(${Q},${g},${a},${c/255})`;return B.drawMode==="stroke"?`<path d="${E}" stroke="${h}" stroke-width="${B.strokeWidth}" fill="none"/>`:`<path d="${E}" fill="${h}"/>`}yB(t,s,i,B){const r=[],E=this.vB(t,s,B);E&&r.push(E);const Q=this.IB(t,s,i,B);if(Q){const g=this.mB(t,s);r.push(g?`<g${g}>${Q}</g>`:Q)}return r.join("")}bB(t,s,i,B){const r=[this.dB(s),this.pB(s,B),'<g id="ascii-cells">'];for(const E of t)r.push(this.yB(E,s,i,B));return r.push(this._B()),r.join("")}$B(t){return t.replace(/<path[^>]*d=""[^>]*\/>/g,"").replace(/\s+/g," ").replace(/> </g,"><")}}class UA extends J{GB(t){return this.rB(t,"image/svg+xml;charset=utf-8")}MB(t,s){this.nB(t,this.aB(s)+".svg","image/svg+xml;charset=utf-8")}xB(t,s){this.MB(t,s||this.hB())}}class tA{constructor(){o(this,"YB");o(this,"FB");o(this,"RB");this.YB=new _A,this.FB=new LA,this.RB=new UA}SB(t){return{includeBackgroundRectangles:t.includeBackgroundRectangles??!0,drawMode:t.drawMode??"fill",strokeWidth:t.strokeWidth??1,backgroundColor:t.backgroundColor??[0,0,0,0],filename:t.filename||this.RB.hB()}}kB(t,s={}){const i=this.YB.lB(this.YB.BB(t.pipeline),t.grid),B=this.FB.bB(i,t.grid,t.font,this.SB(s));return this.FB.$B(B)}xB(t,s={}){this.RB.xB(this.kB(t,s),s.filename)}}class OA extends N{zB(t,s,i,B=" "){var Q;const r=[];let E=0;for(let g=0;g<s.rows;g++){const a=[];for(let c=0;c<s.cols;c++){const h=4*E,l=this.QB(t.characterPixels,h),C=((Q=i.characters[l])==null?void 0:Q.character)||B;a.push(C),E++}r.push(a)}return r}}class WA{OB(t,s){const i=[];for(const r of t){let E=r.join("");s.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),i.push(E)}const B=s.lineEnding==="crlf"?`\r
|
|
7
|
+
`}static C(t){if(t===null)return"null";if(t===void 0)return"undefined";if(typeof t=="string")return`"${t}"`;if(typeof t=="number"||typeof t=="boolean")return t+"";if(Array.isArray(t))return t.length===0?"[]":t.length<=5?`[${t.map(s=>w.C(s)).join(", ")}]`:`[${t.slice(0,3).map(s=>w.C(s)).join(", ")}, ... +${t.length-3} more]`;if(typeof t=="object"){const s=Object.keys(t);return s.length===0?"{}":s.length<=3?`{ ${s.map(i=>`${i}: ${w.C(t[i])}`).join(", ")} }`:`{ ${s.slice(0,2).map(i=>`${i}: ${w.C(t[i])}`).join(", ")}, ... +${s.length-2} more }`}return t+""}}var x=(n=>(n[n.SILENT=0]="SILENT",n[n.WARNING=1]="WARNING",n[n.ERROR=2]="ERROR",n[n.THROW=3]="THROW",n))(x||{});const M=class M{constructor(){g(this,"P",{globalLevel:3})}static u(){return M.D||(M.D=new M),M.D}I(t,s){const i="%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.",B="color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;";switch(this.P.globalLevel){case 0:return!1;case 1:return console.group(i,B),console.warn(w.A(t,s)),console.groupEnd(),!1;case 2:return console.group(i,B),console.error(w.A(t,s)),console.groupEnd(),!1;default:throw new w(t,s)}}_(t,s,i){return!!t||(this.I(s,i),!1)}v(t){this.P.globalLevel=t}};g(M,"D",null);let N=M;const G=N.u(),H=new WeakMap;function L(n,t){H.set(n,t)}function Y(n){return H.get(n)}class K{constructor(){g(this,"$",1);g(this,"G",0);g(this,"M",0);g(this,"Y",0);g(this,"F",[0,0,0]);g(this,"R",[1,1,1,1]);g(this,"S",[0,0,0,1]);g(this,"O",!1);g(this,"L",!1);g(this,"U",!1);g(this,"W",[0,0]);g(this,"H",[0,0,0,1]);g(this,"K",[])}J(){this.K.push({V:this.$,Z:this.G,N:this.M,X:this.Y,W:[...this.W],O:this.O,L:this.L,U:this.U,AA:[...this.F],tA:[...this.R],eA:[...this.S]})}sA(){const t=this.K.pop();t?(this.$=t.V,this.G=t.Z,this.M=t.N,this.Y=t.X,this.W=t.W,this.O=t.O,this.L=t.L,this.U=t.U,this.F=t.AA,this.R=t.tA,this.S=t.eA):console.warn("pop() called without matching push()")}iA(){this.K=[],this.G=0,this.M=0,this.Y=0}BA(t){t.lineWeight=this.$,t.rotationX=this.G,t.rotationY=this.M,t.rotationZ=this.Y,t.character[0]=this.F[0],t.character[1]=this.F[1],t.character[2]=this.F[2],t.charColor[0]=this.R[0],t.charColor[1]=this.R[1],t.charColor[2]=this.R[2],t.charColor[3]=this.R[3],t.bgColor[0]=this.S[0],t.bgColor[1]=this.S[1],t.bgColor[2]=this.S[2],t.bgColor[3]=this.S[3],t.flipHorizontally=this.O,t.flipVertically=this.L,t.invert=this.U,t.charRotation[0]=this.W[0],t.charRotation[1]=this.W[1]}get lineWeight(){return this.$}get canvasBackgroundColor(){return this.H}QA(t){this.$=Math.abs(t)}EA(t){this.G=t}rA(t){this.M=t}nA(t){this.Y=t}oA(t){this.F=t}gA(t,s,i,B=255){this.R=[t/255,s/255,i/255,B/255]}aA(t,s,i,B=255){this.S=[t/255,s/255,i/255,B/255]}hA(t){this.O=t}cA(t){this.L=t}lA(t){this.U=t}CA(t){const s=255*t/360,i=Math.floor(s)/255,B=Math.round(s-Math.floor(s));this.W=[i,B]}DA(t,s,i,B){this.H=[t/255,s/255,i/255,B/255]}}class O{constructor(t,s,i=s,B=1,r={},E=null,Q=!1){g(this,"PA");g(this,"uA");g(this,"P");g(this,"IA",null);g(this,"wA");g(this,"fA");g(this,"dA",[]);g(this,"pA");g(this,"_A",null);g(this,"mA",[]);g(this,"vA",null);g(this,"yA",!1);g(this,"bA",null);this.PA=s,this.uA=i,this.P={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...r},this.wA=t,this.pA=Math.min(Math.max(1,B),8),this.vA=E,this.yA=!!Q,this.bA=this.yA?new K:null;const o=t.getParameter(t.MAX_DRAW_BUFFERS),a=t.getParameter(t.MAX_COLOR_ATTACHMENTS);this.pA=Math.min(this.pA,o,a),this.fA=t.createFramebuffer(),this.$A(),this.GA(),this.mA=Array(this.pA).fill(null)}$A(){const t=this.wA,s=this.P.filter==="linear"?t.LINEAR:t.NEAREST,i=this.P.wrap==="repeat"?t.REPEAT:t.CLAMP_TO_EDGE,B=this.P.type==="float"?t.FLOAT:t.UNSIGNED_BYTE;for(let r=0;r<this.pA;r++){const E=t.createTexture();t.bindTexture(t.TEXTURE_2D,E),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,i),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.PA,this.uA,0,t.RGBA,B,null),this.dA.push(E)}t.bindTexture(t.TEXTURE_2D,null)}GA(){const t=this.wA;if(t.bindFramebuffer(t.FRAMEBUFFER,this.fA),this.pA===1)t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.dA[0],0);else{const i=[];for(let B=0;B<this.pA;B++){const r=t.COLOR_ATTACHMENT0+B;t.framebufferTexture2D(t.FRAMEBUFFER,r,t.TEXTURE_2D,this.dA[B],0),i.push(r)}t.drawBuffers(i)}const s=t.checkFramebufferStatus(t.FRAMEBUFFER);s!==t.FRAMEBUFFER_COMPLETE&&console.error("GLFramebuffer is not complete:",s),t.bindFramebuffer(t.FRAMEBUFFER,null)}xA(t){const s=this.wA;s.bindTexture(s.TEXTURE_2D,this.dA[0]),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,t),s.bindTexture(s.TEXTURE_2D,null)}resize(t,s){this.PA=t,this.uA=s,this.IA=null,this.mA=Array(this.pA).fill(null);const i=this.wA,B=this.P.type==="float"?i.FLOAT:i.UNSIGNED_BYTE;for(const r of this.dA)i.bindTexture(i.TEXTURE_2D,r),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,this.PA,this.uA,0,i.RGBA,B,null);i.bindTexture(i.TEXTURE_2D,null)}MA(t){const s=this.wA,i=this.mA[t];if(i)return i;const B=this.PA,r=this.uA,E=new Uint8Array(B*r*4),Q=s.getParameter(s.READ_FRAMEBUFFER_BINDING);s.bindFramebuffer(s.READ_FRAMEBUFFER,this.fA),s.readBuffer(s.COLOR_ATTACHMENT0+t),s.readPixels(0,0,B,r,s.RGBA,s.UNSIGNED_BYTE,E),s.bindFramebuffer(s.READ_FRAMEBUFFER,Q);const o=4*B,a=new Uint8Array(E.length);for(let h=0;h<r;h++){const c=(r-1-h)*o,l=h*o;a.set(E.subarray(c,c+o),l)}return this.mA[t]=a,a}begin(){var s,i,B,r;const t=this.wA;if(this.vA){const E=((i=(s=this.vA).YA)==null?void 0:i.call(s))??null;E&&this.vA.FA(E),this.yA&&this.bA&&((r=(B=this.vA).RA)==null||r.call(B,this.bA))}this._A={framebuffer:t.getParameter(t.FRAMEBUFFER_BINDING),viewport:t.getParameter(t.VIEWPORT)},t.bindFramebuffer(t.FRAMEBUFFER,this.fA),this.mA=Array(this.pA).fill(null);for(let E=0;E<this.pA;E++)t.clearBufferfv(t.COLOR,E,new Float32Array([0,0,0,0]));t.viewport(0,0,this.PA,this.uA),L(t,[0,0,this.PA,this.uA])}end(){var s,i,B,r;if(!this._A)return;const t=this.wA;if(this.vA){const E=((i=(s=this.vA).YA)==null?void 0:i.call(s))??null;E&&this.vA.FA(E)}t.bindFramebuffer(t.FRAMEBUFFER,this._A.framebuffer),t.viewport(...this._A.viewport),L(t,this._A.viewport),this._A=null,this.vA&&this.yA&&this.bA&&((r=(B=this.vA).SA)==null||r.call(B))}kA(){const t=this.wA;t.deleteFramebuffer(this.fA);for(const s of this.dA)t.deleteTexture(s)}get width(){return this.PA}get height(){return this.uA}get textures(){return[...this.dA]}}function X(n){return typeof n=="string"?n:n.sourceCode}class S{constructor(t,s,i){g(this,"wA");g(this,"zA");g(this,"OA",new Map);g(this,"LA",new Map);g(this,"TA",0);this.wA=t,this.zA=this.UA(X(s),X(i)),this.WA()}WA(){const t=this.wA.getProgramParameter(this.zA,this.wA.ACTIVE_UNIFORMS);for(let s=0;s<t;s++){const i=this.wA.getActiveUniform(this.zA,s);if(i){const B=this.wA.getUniformLocation(this.zA,i.name);if(B&&(this.OA.set(i.name,B),this.LA.set(i.name,{type:i.type,size:i.size}),i.size>1)){const r=i.name.replace(/\[.*\]$/,"");this.OA.has(r)||(this.OA.set(r,B),this.LA.set(r,{type:i.type,size:i.size}))}}}}UA(t,s){const i=this.HA(this.wA.VERTEX_SHADER,t),B=this.HA(this.wA.FRAGMENT_SHADER,s),r=this.wA.createProgram();if(this.wA.attachShader(r,i),this.wA.attachShader(r,B),this.wA.linkProgram(r),!this.wA.getProgramParameter(r,this.wA.LINK_STATUS)){const E=this.wA.getProgramInfoLog(r);throw Error("Shader program link error: "+E)}return this.wA.deleteShader(i),this.wA.deleteShader(B),r}HA(t,s){const i=this.wA.createShader(t);if(this.wA.shaderSource(i,s),this.wA.compileShader(i),!this.wA.getShaderParameter(i,this.wA.COMPILE_STATUS)){const B=this.wA.getShaderInfoLog(i);throw this.wA.deleteShader(i),Error("Shader compilation error: "+B)}return i}KA(){this.wA.useProgram(this.zA),this.JA()}JA(){this.TA=0}VA(t){for(const[s,i]of Object.entries(t))this.ZA(s,i)}NA(t){return this.OA.has(t)}XA(t){return this.LA.get(t)||null}jA(){const t=[];for(const[s,i]of this.LA.entries())t.push({name:s,...i});return t}ZA(t,s){var o;const i=this.OA.get(t);if(!i)return;const B=this.LA.get(t);if(!B)return void console.warn(`No type information found for uniform '${t}'`);const{type:r,size:E}=B,Q=this.wA;if(typeof s=="number")switch(r){case Q.INT:case Q.BOOL:Q.uniform1i(i,s);break;case Q.FLOAT:Q.uniform1f(i,s);break;default:console.warn(`Unexpected uniform type for scalar '${t}': ${r}`),Q.uniform1f(i,s)}else if(typeof s=="boolean")Q.uniform1i(i,s?1:0);else if(Array.isArray(s))if(Array.isArray(s[0])){const a=s,h=((o=a[0])==null?void 0:o.length)||0,c=a.flat();switch(r){case Q.FLOAT_VEC2:h===2?Q.uniform2fv(i,c):console.warn(`Vector length mismatch for '${t}': expected 2, got ${h}`);break;case Q.FLOAT_VEC3:h===3?Q.uniform3fv(i,c):console.warn(`Vector length mismatch for '${t}': expected 3, got ${h}`);break;case Q.FLOAT_VEC4:h===4?Q.uniform4fv(i,c):console.warn(`Vector length mismatch for '${t}': expected 4, got ${h}`);break;default:console.warn(`Unsupported uniform type for vector array '${t}': ${r}`)}}else switch(r){case Q.FLOAT_VEC2:s.length===2?Q.uniform2f(i,s[0],s[1]):console.warn(`Vector length mismatch for '${t}': expected 2, got ${s.length}`);break;case Q.FLOAT_VEC3:s.length===3?Q.uniform3f(i,s[0],s[1],s[2]):console.warn(`Vector length mismatch for '${t}': expected 3, got ${s.length}`);break;case Q.FLOAT_VEC4:s.length===4?Q.uniform4f(i,s[0],s[1],s[2],s[3]):console.warn(`Vector length mismatch for '${t}': expected 4, got ${s.length}`);break;case Q.INT:E>1?Q.uniform1iv(i,s):console.warn(`Array provided for scalar uniform '${t}'`);break;case Q.FLOAT:E>1?Q.uniform1fv(i,s):console.warn(`Array provided for scalar uniform '${t}'`);break;default:console.warn(`Unsupported uniform type for array '${t}': ${r}`)}else if(s instanceof WebGLTexture){const a=this.qA();Q.uniform1i(i,a),Q.activeTexture(Q.TEXTURE0+a),Q.bindTexture(Q.TEXTURE_2D,s)}else if(s instanceof O){const a=this.qA();Q.uniform1i(i,a),Q.activeTexture(Q.TEXTURE0+a),Q.bindTexture(Q.TEXTURE_2D,s.textures[0])}else console.warn(`Unsupported uniform type for '${t}':`,typeof s)}qA(){return this.TA++}get At(){return this.zA}kA(){this.wA.deleteProgram(this.zA)}}const W=`#version 300 es
|
|
8
|
+
in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float k;uniform vec2 t;out vec2 v_uv;out vec3 v_character;out vec4 v_primaryColor;out vec4 v_secondaryColor;out vec2 v_rotation;out vec3 v_transform;mat3 A(float B){float C=sin(B),D=cos(B);return mat3(1,0,0,0,D,-C,0,C,D);}mat3 E(float B){float C=sin(B),D=cos(B);return mat3(D,0,C,0,1,0,-C,0,D);}mat3 F(float B){float C=sin(B),D=cos(B);return mat3(D,-C,0,C,D,0,0,0,1);}vec2 G(float t,vec2 H,vec2 I,vec2 J,vec2 K){float L=1.-t,M=L*L,N=t*t;return M*L*H+3.*M*t*I+3.*L*N*J+N*t*K;}vec2 O(float t,vec2 H,vec2 I,vec2 J,vec2 K){float L=1.-t,M=L*L,N=t*t;return-3.*M*H+3.*M*I-6.*L*t*I+6.*L*t*J-3.*N*J+3.*N*K;}void main(){v_uv=a_texCoord;v_character=a_instanceCharacter;v_primaryColor=a_instancePrimaryColor;v_secondaryColor=a_instanceSecondaryColor;v_rotation=a_instanceRotation;v_transform=a_instanceTransform;vec2 P;bool Q=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool R=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(Q){float t=a_position.x;vec2 S=G(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 T=O(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float U=length(T);T=U>0.?T/U:vec2(1,0);P=S+vec2(-T.y,T.x)*a_position.y*a_instanceSize.y;}else if(R){float C=a_instanceArcAngles.x,V=a_instanceArcAngles.y;C=mod(C,6.28318530718);if(C<0.)C+=6.28318530718;V=mod(V,6.28318530718);if(V<0.)V+=6.28318530718;float W=C-V;if(W<=0.)W+=6.28318530718;float X=C-a_position.x*W;vec2 Y=vec2(cos(X),sin(X))*a_position.y;P=Y*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{P=a_position*a_instanceSize+a_instancePosition;}vec2 Z=(P/t)*2.-1.;Z.y=-Z.y;if(length(a_instanceGlobalRotation)>0.){vec3 a=vec3(Z-a_instanceRotationCenter,0);a.x*=k;if(a_instanceGlobalRotation.x!=0.)a=A(-a_instanceGlobalRotation.x)*a;if(a_instanceGlobalRotation.y!=0.)a=E(-a_instanceGlobalRotation.y)*a;if(a_instanceGlobalRotation.z!=0.)a=F(-a_instanceGlobalRotation.z)*a;a.x/=k;Z=a.xy+a_instanceRotationCenter;}gl_Position=vec4(Z,0,1);}`;class BA{constructor(t){g(this,"tt",new Map);g(this,"wA");this.wA=t}et(t,s){if(!this.tt.has(t)){const i=s();this.tt.set(t,i)}return this.tt.get(t)}st(){return this.et("mrt-copy",()=>new S(this.wA,W,`#version 300 es
|
|
9
|
+
precision highp float;in vec2 v_uv;uniform sampler2D l;uniform sampler2D m;uniform sampler2D n;uniform sampler2D o;uniform sampler2D p;uniform vec2 q;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){vec2 A=vec2(v_uv.x,1.-v_uv.y);vec2 B=A*q;vec2 C=(floor(B)+0.5f)/q;vec4 D=texture(l,C);vec4 E=texture(m,C);if(E.a==0.){discard;}vec4 F=texture(n,C);vec4 G=texture(o,C);vec4 H=texture(p,C);o_character=D;o_primaryColor=E;o_secondaryColor=F;o_rotation=G;o_transform=H;}`))}YA(){return this.et("mrt-draw",()=>new S(this.wA,W,`#version 300 es
|
|
10
|
+
precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.,1.);o_transform=vec4(v_transform,1.);}`))}it(){return this.et("ascii-conversion",()=>new S(this.wA,"attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.,1.);}","precision mediump float;uniform sampler2D a;uniform vec2 b;uniform sampler2D d;uniform sampler2D e;uniform sampler2D f;uniform sampler2D c;uniform sampler2D g;uniform vec2 h;uniform vec2 i;uniform vec2 j;mat2 A(float B){float C=sin(B);float c=cos(B);return mat2(c,-C,C,c);}void main(){vec2 D=(gl_FragCoord.xy-j)/i;vec2 E=D*h;vec2 F=floor(E);vec2 G=(F+0.5)/h;vec4 H=texture2D(d,G);vec4 I=texture2D(e,G);vec4 J=texture2D(f,G);bool K=J.r>0.5;bool L=J.g>0.5;bool M=J.b>0.5;vec4 N=texture2D(c,G);int O=int(N.r*255.+0.5)+int(N.g*255.+0.5)*256;int P=int(mod(float(O),b.x));int Q=O/int(b.x);float R=(b.y-1.)-float(Q);vec2 S=vec2(float(P),R)/b;vec4 T=texture2D(g,G);float U=T.r*255.+T.g;float V=-(U*360./255.)*0.017453292;vec2 W=fract(E)-0.5;if(L)W.x=-W.x;if(M)W.y=-W.y;W=A(V)*W+0.5;vec2 X=1./b;vec2 Y=S+W*X;vec2 Z=S+X;if(any(lessThan(Y,S))||any(greaterThan(Y,Z))){gl_FragColor=K?H:I;return;}vec4 a=texture2D(a,Y);if(K)a.rgb=1.-a.rgb;gl_FragColor=mix(I,H,a);}"))}Bt(t){return new S(this.wA,W,t)}Qt(t,s){return new S(this.wA,t,s)}kA(){for(const t of this.tt.values())t.kA();this.tt.clear()}}var P=(n=>(n.RECTANGLE="rectangle",n.LINE="line",n.ELLIPSE="ellipse",n.ARC="arc",n.TRIANGLE="triangle",n.BEZIER_CURVE="bezier_curve",n.CUSTOM="custom",n))(P||{});class rA{constructor(t){g(this,"wA");g(this,"Et",new Map);this.wA=t}rt(t,s,i,B){const r=this.wA;let E=this.Et.get(t);E||(E=new Map,this.Et.set(t,E));let Q=E.get(s)||null;if(!Q){Q=r.createVertexArray(),E.set(s,Q),r.bindVertexArray(Q),r.bindBuffer(r.ARRAY_BUFFER,B);const o=r.getAttribLocation(t,"a_position");o!==-1&&(r.enableVertexAttribArray(o),r.vertexAttribPointer(o,i.ot.nt.size,r.FLOAT,!1,i.gt,i.ot.nt.offset),r.vertexAttribDivisor(o,0));const a=r.getAttribLocation(t,"a_texCoord");a!==-1&&(r.enableVertexAttribArray(a),r.vertexAttribPointer(a,i.ot.ht.size,r.FLOAT,!1,i.gt,i.ot.ht.offset),r.vertexAttribDivisor(a,0))}r.bindVertexArray(Q)}ct(){this.wA.bindVertexArray(null)}kA(){const t=this.wA;for(const[,s]of this.Et)for(const[,i]of s)i&&t.deleteVertexArray(i);this.Et.clear()}}class EA{constructor(t,s){g(this,"lt");g(this,"wA");g(this,"vA");g(this,"Ct",null);g(this,"Dt",null);this.wA=t,this.lt=new rA(t),this.vA=s}Pt(t,s,i){const{shader:B}=t,r=Y(this.wA)||this.wA.getParameter(this.wA.VIEWPORT);B.VA({k:r[2]/r[3],t:[r[2],r[3]]});const E=a=>{if(!a||!a.ut())return;const h=a.unitGeometry,c=a.unitBuffer;try{this.lt.rt(B.At,a.type+"",h,c),a.batch.It(B),a.batch.wt(h.ft,h.dt)}finally{a.batch._t(B),this.lt.ct(),a.vt()}};let Q=null,o=null;for(const a of s){if(a.type===P.CUSTOM){o&&(E(o),Q=null,o=null),this.yt(t,a.params,a.state,i.get(P.RECTANGLE));continue}Q!==null&&a.type!==Q&&(E(o),Q=null,o=null);let h=o;h&&a.type===Q||(h=i.get(a.type)||null,o=h,Q=a.type),h&&h.bt(a.params,a.state)}E(o)}yt(t,s,i,B){const{x:r,y:E,width:Q,height:o,shader:a,uniforms:h}=s;if(a===this.$t())return this.Gt(B,a,h,Math.floor(r),Math.floor(E),Math.max(1,Math.floor(Q)),Math.max(1,Math.floor(o)),i),void t.shader.KA();const c=this.xt(Math.max(1,Math.floor(Q)),Math.max(1,Math.floor(o)));c.begin(),this.Gt(B,a,h,0,0,c.width,c.height,{}),c.end();const l=this.$t(),C={l:c.textures[0],m:c.textures[1],n:c.textures[2],o:c.textures[3],p:c.textures[4],q:[c.width,c.height]};this.Gt(B,l,C,Math.floor(r),Math.floor(E),Math.max(1,Math.floor(Q)),Math.max(1,Math.floor(o)),i),t.shader.KA()}Gt(t,s,i,B,r,E,Q,o){s.KA(),s.VA(i);const a=this.wA.getParameter(this.wA.VIEWPORT);if(s.VA({k:a[2]/a[3],t:[a[2],a[3]]}),t.vt(),t.bt({x:B,y:r,width:E,height:Q},o),t.ut()){const h=t.unitGeometry,c=t.unitBuffer;try{this.lt.rt(s.At,t.type+"",h,c),t.batch.It(s),t.batch.wt(h.ft,h.dt)}finally{t.batch._t(s),this.lt.ct(),t.vt()}}}$t(){return this.vA.st()}xt(t,s){return this.Ct&&this.Dt&&this.Dt.w===t&&this.Dt.h===s||(this.Ct&&this.Ct.kA(),this.Ct=new O(this.wA,t,s,5),this.Dt={w:t,h:s}),this.Ct}}class QA{constructor(){g(this,"Mt",[]);g(this,"Yt",1);g(this,"Ft",0)}Rt(t){if(this.Ft>=this.Mt.length){const i={id:this.Yt++,type:t,params:{},state:{V:1,Z:0,N:0,X:0,character:[0,0,0],charColor:[1,1,1,1],bgColor:[0,0,0,1],flipHorizontally:!1,flipVertically:!1,invert:!1,charRotation:[0,0]}};this.Mt.push(i)}const s=this.Mt[this.Ft];switch(s.id=this.Yt++,s.type=t,t){case P.RECTANGLE:case P.ELLIPSE:s.params&&"width"in s.params||(s.params={x:0,y:0,width:0,height:0});break;case P.CUSTOM:s.params&&"shader"in s.params||(s.params={x:0,y:0,width:0,height:0,shader:void 0,uniforms:{}});break;case P.ARC:s.params&&"start"in s.params||(s.params={x:0,y:0,width:0,height:0,start:0,stop:0});break;case P.LINE:s.params&&"x2"in s.params||(s.params={x1:0,y1:0,x2:0,y2:0,thickness:void 0});break;case P.TRIANGLE:s.params&&"x3"in s.params||(s.params={x1:0,y1:0,x2:0,y2:0,x3:0,y3:0});break;case P.BEZIER_CURVE:s.params&&"cp2y"in s.params||(s.params={x1:0,y1:0,cp1x:0,cp1y:0,cp2x:0,cp2y:0,x2:0,y2:0,thickness:void 0});break;default:s.params||(s.params={})}return this.Ft++,s}St(t,s,i,B,r){const E=this.Rt(P.RECTANGLE);return E.params.x=t,E.params.y=s,E.params.width=i,E.params.height=B,r.BA(E.state),E.id}kt(t,s,i,B,r,E,Q){const o=this.Rt(P.CUSTOM);return o.params.x=t,o.params.y=s,o.params.width=i,o.params.height=B,o.params.shader=r,o.params.uniforms=E,Q.BA(o.state),o.id}zt(t,s,i,B,r,E){const Q=this.Rt(P.LINE);return Q.params.x1=t,Q.params.y1=s,Q.params.x2=i,Q.params.y2=B,Q.params.thickness=r,E.BA(Q.state),Q.id}Ot(t,s,i,B,r){const E=this.Rt(P.ELLIPSE);return E.params.x=t,E.params.y=s,E.params.width=i,E.params.height=B,r.BA(E.state),E.id}Lt(t,s,i,B,r,E,Q){const o=this.Rt(P.ARC);return o.params.x=t,o.params.y=s,o.params.width=i,o.params.height=B,o.params.start=r,o.params.stop=E,Q.BA(o.state),o.id}Tt(t,s,i,B,r,E,Q){const o=this.Rt(P.TRIANGLE);return o.params.x1=t,o.params.y1=s,o.params.x2=i,o.params.y2=B,o.params.x3=r,o.params.y3=E,Q.BA(o.state),o.id}Ut(t,s,i,B,r,E,Q,o,a,h){const c=this.Rt(P.BEZIER_CURVE);return c.params.x1=t,c.params.y1=s,c.params.cp1x=i,c.params.cp1y=B,c.params.cp2x=r,c.params.cp2y=E,c.params.x2=Q,c.params.y2=o,c.params.thickness=a,h.BA(c.state),c.id}get length(){return this.Ft}get isEmpty(){return this.Ft===0}Wt(){this.Ft=0}[Symbol.iterator](){let t=0;const s=this.Ft,i=this.Mt;return{next:()=>t<s?{value:i[t++],done:!1}:{value:void 0,done:!0}}}}const b=class b{static Ht(t,s,i=0){var E,Q,o,a,h,c,l,C,D,u;const B=s||new Float32Array(b.FLOATS_PER_INSTANCE);let r=i;return B[r++]=t.position[0],B[r++]=t.position[1],B[r++]=t.size[0],B[r++]=t.size[1],B[r++]=t.AA[0],B[r++]=t.AA[1],B[r++]=t.AA[2],B[r++]=t.primaryColor[0],B[r++]=t.primaryColor[1],B[r++]=t.primaryColor[2],B[r++]=t.primaryColor[3],B[r++]=t.secondaryColor[0],B[r++]=t.secondaryColor[1],B[r++]=t.secondaryColor[2],B[r++]=t.secondaryColor[3],B[r++]=t.rotation[0],B[r++]=t.rotation[1],B[r++]=t.transform[0],B[r++]=t.transform[1],B[r++]=t.transform[2],B[r++]=t.globalRotationX,B[r++]=t.globalRotationY,B[r++]=t.globalRotationZ,B[r++]=t.rotationCenter[0],B[r++]=t.rotationCenter[1],B[r++]=((E=t.arcAngles)==null?void 0:E[0])||0,B[r++]=((Q=t.arcAngles)==null?void 0:Q[1])||0,B[r++]=((o=t.bezierControlPoint1)==null?void 0:o[0])||0,B[r++]=((a=t.bezierControlPoint1)==null?void 0:a[1])||0,B[r++]=((h=t.bezierControlPoint2)==null?void 0:h[0])||0,B[r++]=((c=t.bezierControlPoint2)==null?void 0:c[1])||0,B[r++]=((l=t.bezierStartPoint)==null?void 0:l[0])||0,B[r++]=((C=t.bezierStartPoint)==null?void 0:C[1])||0,B[r++]=((D=t.bezierEndPoint)==null?void 0:D[0])||0,B[r++]=((u=t.bezierEndPoint)==null?void 0:u[1])||0,B}static Kt(t){const s=t.length*b.FLOATS_PER_INSTANCE,i=new Float32Array(s);for(let B=0;B<t.length;B++){const r=B*b.FLOATS_PER_INSTANCE;b.Ht(t[B],i,r)}return i}};g(b,"BYTES_PER_INSTANCE",140),g(b,"FLOATS_PER_INSTANCE",35);let T=b;const I=class I{};g(I,"STRIDE",T.BYTES_PER_INSTANCE),g(I,"ATTRIBUTES",{a_instancePosition:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:0,divisor:1},a_instanceSize:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:8,divisor:1},a_instanceCharacter:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:16,divisor:1},a_instancePrimaryColor:{location:-1,size:4,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:28,divisor:1},a_instanceSecondaryColor:{location:-1,size:4,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:44,divisor:1},a_instanceRotation:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:60,divisor:1},a_instanceTransform:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:68,divisor:1},a_instanceGlobalRotation:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:80,divisor:1},a_instanceRotationCenter:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:92,divisor:1},a_instanceArcAngles:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:100,divisor:1},a_instanceBezierCP1:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:108,divisor:1},a_instanceBezierCP2:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:116,divisor:1},a_instanceBezierStart:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:124,divisor:1},a_instanceBezierEnd:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:I.STRIDE,offset:132,divisor:1}});let U=I;class nA{constructor(t,s=1e3,i=1.5){g(this,"wA");g(this,"Jt",[]);g(this,"Vt");g(this,"Zt");g(this,"Nt",null);g(this,"Xt",!0);g(this,"jt",0);g(this,"qt",new Map);g(this,"Ae",null);this.wA=t,this.Vt=s,this.Zt=i,this.te()}bt(t){const s=this.Jt.length;return this.Jt.push(t),this.Xt=!0,s}get count(){return this.Jt.length}get isEmpty(){return this.Jt.length===0}clear(){this.Jt.length=0,this.Xt=!0}ee(t){if(t<=this.Vt)return;const s=Math.ceil(t*this.Zt);this.Vt=s,this.te()}te(){const t=this.wA;this.Nt&&t.deleteBuffer(this.Nt),this.Nt=t.createBuffer();const s=this.Vt*T.BYTES_PER_INSTANCE;t.bindBuffer(t.ARRAY_BUFFER,this.Nt),t.bufferData(t.ARRAY_BUFFER,s,t.DYNAMIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),this.Xt=!0,this.jt=0}se(){if(!this.Xt||this.Jt.length===0)return;const t=this.wA,s=this.Jt.length;this.ee(s),(!this.Ae||this.Ae.length<s*T.FLOATS_PER_INSTANCE)&&(this.Ae=new Float32Array(s*T.FLOATS_PER_INSTANCE));const i=T.Kt(this.Jt);t.bindBuffer(t.ARRAY_BUFFER,this.Nt),s<=this.jt?t.bufferSubData(t.ARRAY_BUFFER,0,i):t.bufferData(t.ARRAY_BUFFER,i,t.DYNAMIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),this.Xt=!1,this.jt=s}ie(t){let s=this.qt.get(t);if(!s){s=new Map;const i=this.wA;for(const B in U.ATTRIBUTES){const r=i.getAttribLocation(t,B);r!==-1&&s.set(B,r)}this.qt.set(t,s)}return s}It(t){if(!this.Nt||this.Jt.length===0)return;const s=this.wA,i=t.At;this.se();const B=this.ie(i);s.bindBuffer(s.ARRAY_BUFFER,this.Nt);for(const[r,E]of B){const Q=U.ATTRIBUTES[r];Q&&(s.enableVertexAttribArray(E),s.vertexAttribPointer(E,Q.size,Q.type,Q.normalized,Q.stride,Q.offset),s.vertexAttribDivisor(E,Q.divisor))}}_t(t){const s=this.wA,i=this.ie(t.At);for(const[,B]of i)s.disableVertexAttribArray(B),s.vertexAttribDivisor(B,0)}wt(t,s){this.Jt.length!==0&&this.wA.drawArraysInstanced(t,0,s,this.Jt.length)}kA(){const t=this.wA;this.Nt&&(t.deleteBuffer(this.Nt),this.Nt=null),this.Jt.length=0,this.qt.clear(),this.Ae=null}}class F{constructor(t,s,i,B){g(this,"wA");g(this,"Be");g(this,"Qe");g(this,"Ee");g(this,"re",null);this.wA=t,this.Be=s,this.Qe=i,this.Ee=B;const r=this.wA.createBuffer();if(!r)throw Error("Failed to create unit geometry buffer");this.wA.bindBuffer(this.wA.ARRAY_BUFFER,r),this.wA.bufferData(this.wA.ARRAY_BUFFER,this.Ee.ne,this.wA.STATIC_DRAW),this.wA.bindBuffer(this.wA.ARRAY_BUFFER,null),this.re=r}get type(){return this.Qe}get unitGeometry(){return this.Ee}get unitBuffer(){return this.re}get batch(){return this.Be}vt(){this.Be.clear()}ut(){return!this.Be.isEmpty}kA(){this.Be.kA(),this.re&&(this.wA.deleteBuffer(this.re),this.re=null)}oe(t,s,i,B,r){const E=this.ge(t,s,i,B,r.rotationX||0,r.rotationY||0,r.rotationZ||0);return{position:[t,s],size:[i,B],AA:r.character||[0,0,0],primaryColor:r.charColor||[1,1,1,1],secondaryColor:r.bgColor||[0,0,0,1],rotation:r.charRotation||[0,0],transform:[r.invert?1:0,r.flipHorizontally?1:0,r.flipVertically?1:0],globalRotationX:E.radiansX,globalRotationY:E.radiansY,globalRotationZ:E.radiansZ,rotationCenter:[E.centerX,E.centerY]}}ae(t,s){const i=Y(this.wA)||[0,0,this.wA.canvas.width,this.wA.canvas.height];return{nx:t/i[2]*2-1,ny:1-s/i[3]*2}}he(t,s,i){const B=this.ae(s,i);t.rotationCenter=[B.nx,B.ny]}ge(t,s,i,B,r,E,Q){const o=Y(this.wA)||[0,0,this.wA.canvas.width,this.wA.canvas.height],a=o[2],h=o[3];return{centerX:(t+i/2)/a*2-1,centerY:1-(s+B/2)/h*2,radiansX:-r*Math.PI/180,radiansY:-E*Math.PI/180,radiansZ:-Q*Math.PI/180,aspectRatio:a/h}}}const oA={ne:new Float32Array([0,0,0,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0,1,0,1,1,1,1]),dt:6,ft:WebGL2RenderingContext.TRIANGLES,gt:16,ot:{nt:{size:2,offset:0},ht:{size:2,offset:8}}};class gA extends F{constructor(t,s){super(t,s,P.RECTANGLE,oA)}bt(t,s){const i=this.oe(t.x,t.y,t.width,t.height,s);return this.Be.bt(i)}}const aA={ne:new Float32Array([0,-.5,0,0,1,-.5,1,0,0,.5,0,1,0,.5,0,1,1,-.5,1,0,1,.5,1,1]),dt:6,ft:WebGL2RenderingContext.TRIANGLES,gt:16,ot:{nt:{size:2,offset:0},ht:{size:2,offset:8}}};class hA extends F{constructor(t,s){super(t,s,P.LINE,aA)}bt(t,s){const i=t.x2-t.x1,B=t.y2-t.y1,r=Math.hypot(i,B),E=Math.atan2(B,i),Q=t.thickness||s.lineWeight||1,o=t.x1+i/2,a=t.y1+B/2,h=o-r/2,c=a,l={character:s.character,charColor:s.charColor,bgColor:s.bgColor,charRotation:s.charRotation,flipHorizontally:s.flipHorizontally,flipVertically:s.flipVertically,invert:s.invert,rotationX:s.rotationX||0,rotationY:s.rotationY||0,rotationZ:(s.rotationZ||0)+180*E/Math.PI,lineWeight:Q},C=this.oe(h,c,r,Q,l);return this.he(C,o,a),this.Be.bt(C)}}const cA={ne:function(n=32){const t=[],s=2*Math.PI/n;for(let i=0;i<n;i++){const B=i*s,r=(i+1)%n*s,E=Math.cos(B),Q=Math.sin(B),o=.5*(E+1),a=.5*(Q+1),h=Math.cos(r),c=Math.sin(r),l=.5*(h+1),C=.5*(c+1);t.push(0,0,.5,.5,E,Q,o,a,h,c,l,C)}return new Float32Array(t)}(32),dt:96,ft:WebGL2RenderingContext.TRIANGLES,gt:16,ot:{nt:{size:2,offset:0},ht:{size:2,offset:8}}};class lA extends F{constructor(t,s){super(t,s,P.ELLIPSE,cA)}bt(t,s){const i=this.oe(t.x,t.y,t.width,t.height,s);return this.he(i,t.x,t.y),this.Be.bt(i)}}let CA={ne:function(n){const t=[];for(let s=0;s<n;s++){const i=s/n,B=(s+1)/n;t.push(i,0,i,0,i,1,i,1,B,1,B,1)}return new Float32Array(t)}(32),dt:96,ft:WebGL2RenderingContext.TRIANGLES,gt:16,ot:{nt:{size:2,offset:0},ht:{size:2,offset:8}}};class DA extends F{constructor(t,s){super(t,s,P.ARC,CA)}bt(t,s){const i=t.x-t.width/2,B=t.y-t.height/2,r=t.start*Math.PI/180,E=t.stop*Math.PI/180,Q=this.oe(i,B,t.width,t.height,s);return this.he(Q,t.x,t.y),Q.arcAngles=[r,E],this.Be.bt(Q)}}const PA={ne:new Float32Array([0,0,0,0,1,0,1,0,.5,1,.5,1]),dt:3,ft:WebGL2RenderingContext.TRIANGLES,gt:16,ot:{nt:{size:2,offset:0},ht:{size:2,offset:8}}};class uA extends F{constructor(t,s){super(t,s,P.TRIANGLE,PA)}bt(t,s){const i=Math.min(t.x1,t.x2,t.x3),B=Math.max(t.x1,t.x2,t.x3),r=Math.min(t.y1,t.y2,t.y3),E=B-i,Q=Math.max(t.y1,t.y2,t.y3)-r,o=this.oe(i,r,E,Q,s),a=i+.5*E,h=r+Q*(1/3);return this.he(o,a,h),this.Be.bt(o)}}function J(n,t,s,i,B){const r=1-n,E=r*r,Q=n*n;return E*r*t+3*E*n*s+3*r*Q*i+Q*n*B}const wA={ne:function(n=16){const t=[];for(let s=0;s<n;s++){const i=s/n,B=(s+1)/n;t.push(i,-.5,i,0),t.push(B,-.5,B,0),t.push(i,.5,i,1),t.push(i,.5,i,1),t.push(B,-.5,B,0),t.push(B,.5,B,1)}return new Float32Array(t)}(16),dt:96,ft:WebGL2RenderingContext.TRIANGLES,gt:16,ot:{nt:{size:2,offset:0},ht:{size:2,offset:8}}};class fA extends F{constructor(t,s){super(t,s,P.BEZIER_CURVE,wA)}bt(t,s){const i=s.lineWeight||1,B=J(.5,t.x1,t.cp1x,t.cp2x,t.x2),r=J(.5,t.y1,t.cp1y,t.cp2y,t.y2),E={character:s.character,charColor:s.charColor,bgColor:s.bgColor,charRotation:s.charRotation,flipHorizontally:s.flipHorizontally,flipVertically:s.flipVertically,invert:s.invert,rotationX:s.rotationX||0,rotationY:s.rotationY||0,rotationZ:s.rotationZ||0,lineWeight:i},Q=this.oe(0,0,1,i,E);return this.he(Q,B,r),Q.bezierStartPoint=[t.x1,t.y1],Q.bezierControlPoint1=[t.cp1x,t.cp1y],Q.bezierControlPoint2=[t.cp2x,t.cp2y],Q.bezierEndPoint=[t.x2,t.y2],this.Be.bt(Q)}}class IA{constructor(t){g(this,"wA");g(this,"ce",null);g(this,"le");g(this,"Ce",null);g(this,"De",{});g(this,"Pe",null);g(this,"ue",new Map);g(this,"Ie");g(this,"we");g(this,"fe");g(this,"K",[]);this.wA=t,this.le=new BA(t),this.fe=new K,this.Ie=new EA(t,this),this.we=new QA,this.Pe=t.createBuffer(),L(this.wA,[0,0,this.wA.canvas.width,this.wA.canvas.height])}de(t){let s=this.ue.get(t);if(s)return s;const i=new nA(this.wA);return s=(0,{[P.RECTANGLE]:()=>new gA(this.wA,i),[P.LINE]:()=>new hA(this.wA,i),[P.ELLIPSE]:()=>new lA(this.wA,i),[P.ARC]:()=>new DA(this.wA,i),[P.TRIANGLE]:()=>new uA(this.wA,i),[P.BEZIER_CURVE]:()=>new fA(this.wA,i)}[t])(),this.ue.set(t,s),s}pe(t){this.ce!==t&&(this.ce=t,t.KA())}_e(t,s){return this.le.Qt(t,s)}st(){return this.le.st()}YA(){return this.le.YA()}it(){return this.le.it()}me(t){this.Ce=t,t&&(this.De={})}ZA(t,s){this.De[t]=s}ve(t){Object.assign(this.De,t)}Bt(t){return this.le.Bt(t)}ye(t,s,i,B,r){const E=this.st(),Q={l:t.textures[0],m:t.textures[1],n:t.textures[2],o:t.textures[3],p:t.textures[4],q:[t.width,t.height]};this.we.kt(s,i,B,r,E,Q,this.fe)}be(t,s,i,B){var u;const r=this.wA,E=r.canvas.width,Q=r.canvas.height,o=t/E*2-1,a=(t+i)/E*2-1,h=1-s/Q*2,c=1-(s+B)/Q*2,l=new Float32Array([o,c,a,c,o,h,a,c,a,h,o,h]);r.bindBuffer(r.ARRAY_BUFFER,this.Pe),r.bufferData(r.ARRAY_BUFFER,l,r.DYNAMIC_DRAW);const C=((u=this.ce)==null?void 0:u.At)||r.getParameter(r.CURRENT_PROGRAM),D=C?r.getAttribLocation(C,"a_position"):-1;D!==-1&&(r.enableVertexAttribArray(D),r.vertexAttribPointer(D,2,r.FLOAT,!1,8,0)),r.drawArrays(r.TRIANGLES,0,6),D!==-1&&r.disableVertexAttribArray(D)}$e(t,s,i,B){this.Ce?(this.we.kt(t,s,i,B,this.Ce,{...this.De},this.fe),this.Ce=null,this.De={}):this.we.St(t,s,i,B,this.fe)}Ge(t,s,i,B){this.we.zt(t,s,i,B,this.fe.lineWeight,this.fe)}xe(t,s,i,B){this.we.Ot(t,s,i,B,this.fe)}Me(t,s,i,B,r,E){this.we.Tt(t,s,i,B,r,E,this.fe)}Ye(t,s,i,B,r,E,Q,o){const a=this.fe.lineWeight;this.we.Ut(t,s,i,B,r,E,Q,o,a,this.fe)}Fe(t,s,i=1,B={}){return new O(this.wA,t,s,i,B,this,!0)}Re(t,s,i,B,r,E){this.we.Lt(t,s,i,B,r,E,this.fe)}Se(t,s=t,i=t,B=255){this.state.DA(t,s,i,B),this.Wt(t/255,s/255,i/255,B/255)}Wt(t=0,s=0,i=0,B=0){this.wA.clearColor(t,s,i,B),this.wA.clear(this.wA.COLOR_BUFFER_BIT)}ke(){this.wA.viewport(0,0,this.wA.canvas.width,this.wA.canvas.height),L(this.wA,[0,0,this.wA.canvas.width,this.wA.canvas.height])}get context(){return this.wA}get state(){return this.fe}RA(t){this.K.push(this.fe),this.fe=t}SA(){const t=this.K.pop();t&&(this.fe=t)}FA(t){const s=t,i=Y(this.wA)??this.wA.getParameter(this.wA.VIEWPORT),B={shader:s,gl:this.wA,viewport:i};this.pe(s);const r=new Set;for(const E of this.we)E.type===P.CUSTOM?r.add(P.RECTANGLE):r.add(E.type);for(const E of r)E!==P.CUSTOM&&this.de(E);this.Ie.Pt(B,this.we,this.ue),this.we.Wt()}kA(){this.wA.deleteBuffer(this.Pe),this.we.Wt();for(const t of this.ue.values())t.kA();this.le.kA()}}const d={readShort:(n,t)=>(d.t.uint16[0]=n[t]<<8|n[t+1],d.t.int16[0]),readUshort:(n,t)=>n[t]<<8|n[t+1],readUshorts(n,t,s){const i=[];for(let B=0;B<s;B++)i.push(d.readUshort(n,t+2*B));return i},readUint(n,t){const s=d.t.uint8;return s[3]=n[t],s[2]=n[t+1],s[1]=n[t+2],s[0]=n[t+3],d.t.uint32[0]},readASCII(n,t,s){let i="";for(let B=0;B<s;B++)i+=String.fromCharCode(n[t+B]);return i},t:(()=>{const n=new ArrayBuffer(8);return{uint8:new Uint8Array(n),int16:new Int16Array(n),uint16:new Uint16Array(n),uint32:new Uint32Array(n)}})()},dA={parseTab(n,t,s){const i={tables:[],ids:{},off:t};n=new Uint8Array(n.buffer,t,s),t=0;const B=d,r=B.readUshort,E=r(n,t+=2);t+=2;const Q=[];for(let o=0;o<E;o++){const a=r(n,t),h=r(n,t+=2);t+=2;const c=B.readUint(n,t);t+=4;const l=`p${a}e${h}`;let C=Q.indexOf(c);if(C===-1){let D;C=i.tables.length,Q.push(c);const u=r(n,c);D=u===4?this.parse4(n,c):u===12?this.parse12(n,c):{format:u},i.tables.push(D)}i.ids[l]=C}return i},parse4(n,t){const s=d,i=s.readUshort,B=s.readUshorts,r=t,E=i(n,t+=2);t+=2;const Q=i(n,t+=2)>>>1,o={format:4,searchRange:i(n,t+=2),entrySelector:0,rangeShift:0,endCount:[],startCount:[],idDelta:[],idRangeOffset:[],glyphIdArray:[]};t+=2,o.entrySelector=i(n,t),t+=2,o.rangeShift=i(n,t),t+=2,o.endCount=B(n,t,Q),t+=2*Q,t+=2,o.startCount=B(n,t,Q),t+=2*Q;for(let a=0;a<Q;a++)o.idDelta.push(s.readShort(n,t)),t+=2;return o.idRangeOffset=B(n,t,Q),t+=2*Q,o.glyphIdArray=B(n,t,r+E-t>>1),o},parse12(n,t){const s=d.readUint;s(n,t+=4),s(n,t+=4);const i=s(n,t+=4);t+=4;const B=new Uint32Array(3*i);for(let r=0;r<3*i;r+=3)B[r]=s(n,t+(r<<2)),B[r+1]=s(n,t+(r<<2)+4),B[r+2]=s(n,t+(r<<2)+8);return{format:12,groups:B}}},pA={parseTab(n,t,s){const i=d;t+=18;const B=i.readUshort(n,t);t+=2,t+=16;const r=i.readShort(n,t);t+=2;const E=i.readShort(n,t);t+=2;const Q=i.readShort(n,t);t+=2;const o=i.readShort(n,t);return t+=2,t+=6,{unitsPerEm:B,xMin:r,yMin:E,xMax:Q,yMax:o,indexToLocFormat:i.readShort(n,t)}}},mA={parseTab(n,t,s){const i=d;t+=4;const B=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],r={};for(let E=0;E<B.length;E++){const Q=B[E],o=Q==="advanceWidthMax"||Q==="numberOfHMetrics"?i.readUshort:i.readShort;r[Q]=o(n,t+2*E)}return r}},yA={parseTab(n,t,s,i){const B=d,r=[],E=[],Q=i.maxp.numGlyphs,o=i.hhea.numberOfHMetrics;let a=0,h=0,c=0;for(;c<o;)a=B.readUshort(n,t+(c<<2)),h=B.readShort(n,t+(c<<2)+2),r.push(a),E.push(h),c++;for(;c<Q;)r.push(a),E.push(h),c++;return{aWidth:r,lsBearing:E}}},Z={cmap:dA,head:pA,hhea:mA,maxp:{parseTab(n,t,s){const i=d;return i.readUint(n,t),t+=4,{numGlyphs:i.readUshort(n,t)}}},hmtx:yA,loca:{parseTab(n,t,s,i){const B=d,r=[],E=i.head.indexToLocFormat,Q=i.maxp.numGlyphs+1;if(E===0)for(let o=0;o<Q;o++)r.push(B.readUshort(n,t+(o<<1))<<1);else if(E===1)for(let o=0;o<Q;o++)r.push(B.readUint(n,t+(o<<2)));return r}},glyf:{parseTab(n,t,s,i){const B=[],r=i.maxp.numGlyphs;for(let E=0;E<r;E++)B.push(null);return B},ze(n,t){const s=d,i=n.Oe,B=n.loca;if(B[t]===B[t+1])return null;const r=v.findTable(i,"glyf",n.Le);if(!r)return null;let E=r[0]+B[t];const Q={};if(Q.noc=s.readShort(i,E),E+=2,Q.xMin=s.readShort(i,E),E+=2,Q.yMin=s.readShort(i,E),E+=2,Q.xMax=s.readShort(i,E),E+=2,Q.yMax=s.readShort(i,E),E+=2,Q.xMin>=Q.xMax||Q.yMin>=Q.yMax)return null;if(Q.noc>0){Q.endPts=[];for(let l=0;l<Q.noc;l++)Q.endPts.push(s.readUshort(i,E)),E+=2;const o=s.readUshort(i,E);if(E+=2,i.length-E<o)return null;E+=o;const a=Q.endPts[Q.noc-1]+1;Q.flags=[];for(let l=0;l<a;l++){const C=i[E];if(E++,Q.flags.push(C),8&C){const D=i[E];E++;for(let u=0;u<D;u++)Q.flags.push(C),l++}}Q.xs=[];for(let l=0;l<a;l++){const C=Q.flags[l],D=!!(16&C);2&C?(Q.xs.push(D?i[E]:-i[E]),E++):D?Q.xs.push(0):(Q.xs.push(s.readShort(i,E)),E+=2)}Q.ys=[];for(let l=0;l<a;l++){const C=Q.flags[l],D=!!(32&C);4&C?(Q.ys.push(D?i[E]:-i[E]),E++):D?Q.ys.push(0):(Q.ys.push(s.readShort(i,E)),E+=2)}let h=0,c=0;for(let l=0;l<a;l++)h+=Q.xs[l],c+=Q.ys[l],Q.xs[l]=h,Q.ys[l]=c}else Q.parts=[],Q.endPts=[],Q.flags=[],Q.xs=[],Q.ys=[];return Q}}},v={parse:n=>[((t,s,i,B)=>{const r=Z,E={Oe:t,Te:s,Le:i};for(const Q in r){const o=Q,a=v.findTable(t,o,i);if(a){const[h,c]=a;let l=B[h];l==null&&(l=r[o].parseTab(t,h,c,E),B[h]=l),E[o]=l}}return E})(new Uint8Array(n),0,0,{})],findTable(n,t,s){const i=d,B=i.readUshort(n,s+4);let r=s+12;for(let E=0;E<B;E++){const Q=i.readASCII(n,r,4);i.readUint(n,r+4);const o=i.readUint(n,r+8),a=i.readUint(n,r+12);if(Q===t)return[o,a];r+=16}return null},T:Z,B:d};class z{constructor(){g(this,"Ue",new Map);g(this,"We",new Map)}He(t,s){const i=`${this.Ke(t)}_${s}`;if(this.Ue.has(i))return this.Ue.get(i);const B=t.cmap;if(!B||!B.tables)return this.Ue.set(i,0),0;let r=0;for(const E of B.tables)if(E.format===4?r=this.Je(s,E):E.format===12&&(r=this.Ve(s,E)),r>0)break;return this.Ue.set(i,r),r}Ze(t,s){const i=s.codePointAt(0);return i===void 0?0:this.He(t,i)}Ne(t,s){const i=t.hmtx;return i&&i.aWidth&&i.aWidth.length!==0?s<i.aWidth.length?i.aWidth[s]:i.aWidth[i.aWidth.length-1]:0}Xe(t,s){const i=s/t.head.unitsPerEm,B=t.hhea.ascender*i,r=t.hhea.descender*i,E=t.hhea.lineGap*i;return{ascender:B,descender:r,lineGap:E,lineHeight:B-r+E,unitsPerEm:t.head.unitsPerEm,scale:i}}je(){this.Ue.clear(),this.We.clear()}Ke(t){return`${t.Le}_${t.Oe.length}`}Je(t,s){const i=s.endCount.length;let B=-1;for(let r=0;r<i;r++)if(t<=s.endCount[r]){B=r;break}if(B===-1||t<s.startCount[B])return 0;if(s.idRangeOffset[B]===0)return t+s.idDelta[B]&65535;{const r=s.idRangeOffset[B]/2+(t-s.startCount[B])-(i-B);if(r>=0&&r<s.glyphIdArray.length){const E=s.glyphIdArray[r];return E===0?0:E+s.idDelta[B]&65535}}return 0}Ve(t,s){const i=s.groups.length/3;for(let B=0;B<i;B++){const r=s.groups[3*B],E=s.groups[3*B+1],Q=s.groups[3*B+2];if(t>=r&&t<=E)return Q+(t-r)}return 0}}class vA{constructor(t){g(this,"qe");this.qe=t}As(t){var i;const s=[];return(i=t.cmap)!=null&&i.tables?(t.cmap.tables.forEach(B=>{if(B.format===4){const r=this.ts(B);s.push(...r)}else if(B.format===12){const r=this.es(B);s.push(...r)}}),[...new Set(s)]):[]}ss(t,s){return this.qe.Ze(t,s)>0}Bs(t,s){for(const i of s)if(!this.ss(t,i))return!1;return!0}Qs(t,s){return s.filter(i=>this.ss(t,i))}Es(t){return t.filter(s=>this.rs(s))}ts(t){const s=[];if(!(t.startCount&&t.endCount&&t.idRangeOffset&&t.idDelta))return s;for(let i=0;i<t.startCount.length;i++){const B=t.startCount[i],r=t.endCount[i];if(B!==65535||r!==65535){for(let E=B;E<=r;E++)if(this.ns(t,E,i)>0)try{const Q=String.fromCodePoint(E);s.push(Q)}catch{}}}return s}es(t){const s=[];if(!t.groups)return s;for(let i=0;i<t.groups.length;i+=3){const B=t.groups[i],r=t.groups[i+1],E=t.groups[i+2];for(let Q=B;Q<=r;Q++)if(E+(Q-B)>0)try{const o=String.fromCodePoint(Q);s.push(o)}catch{}}return s}ns(t,s,i){if(t.idRangeOffset[i]===0)return s+t.idDelta[i]&65535;{const B=t.idRangeOffset[i]/2+(s-t.startCount[i])-(t.startCount.length-i);if(B>=0&&t.glyphIdArray&&B<t.glyphIdArray.length){const r=t.glyphIdArray[B];if(r!==0)return r+t.idDelta[i]&65535}}return 0}rs(t){const s=t.codePointAt(0)||0;return!(s>=0&&s<=31&&s!==9&&s!==10&&s!==13||s>=127&&s<=159)}}class RA{constructor(){g(this,"gs");const t=new z;this.gs=new vA(t)}extractCharacters(t){return this.gs.As(t)}filterProblematicCharacters(t){return this.gs.Es(t)}characterExists(t,s){return this.gs.ss(t,s)}allCharactersExist(t,s){return this.gs.Bs(t,s)}}class bA{constructor(t){g(this,"hs");g(this,"cs");g(this,"vA");g(this,"ls");this.vA=t,this.ls=new z,this.hs=document.createElement("canvas"),this.cs=this.hs.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(t,s,i,B){const r=t.length,E=Math.ceil(Math.sqrt(r)),Q=Math.ceil(r/E),o=s.width*E,a=s.height*Q,h=typeof B=="object"?B:null;this.Cs(o,a),this.Ds(t,s,E,i,h);const c=this.vA.Fe(o,a,1,{filter:"nearest"});return c.xA(this.hs),{framebuffer:c,columns:E,rows:Q}}Cs(t,s){this.hs.width=t,this.hs.height=s,this.hs.style.width=t+"px",this.hs.style.height=t+"px",this.cs.imageSmoothingEnabled=!1,this.hs.style.imageRendering="pixelated",this.cs.fillStyle="black",this.cs.fillRect(0,0,t,s),this.cs.textBaseline="top",this.cs.textAlign="left",this.cs.fillStyle="white"}Ds(t,s,i,B,r){const E=B/r.head.unitsPerEm;for(let Q=0;Q<t.length;Q++){const o=Q%i,a=Math.floor(Q/i),h=t[Q].character,c=this.Ps(r,h);if(!c)continue;const l=h.codePointAt(0)||0,C=this.ls.He(r,l),D=this.us(r,C)*E,u=o*s.width,m=a*s.height,p=u+.5*s.width,y=m+.5*s.height,R=Math.round(p-.5*s.width),_=Math.round(y-.5*B),it=R+.5*(s.width-D),Bt=_+r.hhea.ascender*E;this.Is(c,it,Bt,E)}}Ps(t,s){const i=s.codePointAt(0)||0,B=this.ls.He(t,i);if(B===0)return null;if(t.glyf&&t.glyf[B]!==null)return t.glyf[B];if(v&&v.T&&v.T.glyf){const r=v.T.glyf.ze(t,B);return t.glyf&&r&&(t.glyf[B]=r),r}return null}us(t,s){const i=t.hmtx;return i&&i.aWidth?s<i.aWidth.length?i.aWidth[s]:i.aWidth[i.aWidth.length-1]:0}Is(t,s,i,B){if(!t||!t.xs||t.noc===0)return;const{xs:r,ys:E,endPts:Q,flags:o}=t;if(!(r&&E&&Q&&o))return;this.cs.beginPath();let a=0;for(let h=0;h<Q.length;h++){const c=Q[h];if(!(c<a)){if(c>=a){const l=s+r[a]*B,C=i-E[a]*B;this.cs.moveTo(l,C);let D=a+1;for(;D<=c;)if(1&o[D]){const u=s+r[D]*B,m=i-E[D]*B;this.cs.lineTo(u,m),D++}else{const u=s+r[D]*B,m=i-E[D]*B;let p=D+1>c?a:D+1;if(1&o[p]){const y=s+r[p]*B,R=i-E[p]*B;this.cs.quadraticCurveTo(u,m,y,R),D=p+1}else{const y=(u+(s+r[p]*B))/2,R=(m+(i-E[p]*B))/2;this.cs.quadraticCurveTo(u,m,y,R),D=p}}this.cs.closePath()}a=c+1}}this.cs.fill()}}class xA{constructor(){g(this,"qe");this.qe=new z}calculateMaxGlyphDimensions(t,s,i){let B=0;const r=this.qe.Xe(i,s),E=r.lineHeight;for(const Q of t){const o=this.qe.Ze(i,Q);if(o===0)continue;const a=this.qe.Ne(i,o)*r.scale;B=Math.max(B,a)}return{width:Math.ceil(B),height:Math.ceil(E)}}getCharacterAdvanceWidth(t,s,i){const B=this.qe.Xe(i,s),r=this.qe.Ze(i,t);return this.qe.Ne(i,r)*B.scale}getFontMetrics(t,s){return this.qe.Xe(s,t)}je(){this.qe.je()}}class TA{constructor(){g(this,"ls");this.ls=new z}createCharacterObjects(t,s){return t.map((i,B)=>{const r=i.codePointAt(0)||0,E=this.ws(B);let Q=0;if(s.hmtx&&s.hmtx.aWidth){const o=this.ls.He(s,r);o>0&&s.hmtx.aWidth[o]!==void 0&&(Q=s.hmtx.aWidth[o])}return{character:i,unicode:r,color:E,advanceWidth:Q}})}ws(t){return[t%256/255,Math.floor(t/256)%256/255,Math.floor(t/65536)%256/255]}fs(t,s){if(!G._(typeof t=="string","Character must be a string.",{method:"getCharacterColor",providedValue:t}))return[0,0,0];const i=s.find(B=>B.character===t);return i?i.color:[0,0,0]}ds(t,s){return G._(typeof t=="string"&&t.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:t})?Array.from(t).map(i=>this.fs(i,s)||[0,0,0]):[[0,0,0]]}}class j{constructor(t,s=16){g(this,"ps");g(this,"_s",[]);g(this,"vs");g(this,"bs",16);g(this,"$s",0);g(this,"Gs",0);g(this,"Ms",{width:0,height:0});g(this,"Ys");g(this,"Fs");g(this,"Rs");g(this,"Ss");g(this,"ks");this.bs=s,this.Fs=new RA,this.Rs=new bA(t),this.Ss=new xA,this.ks=new TA}async zs(t){let s;if(t){const i=await fetch(t);if(!i.ok)throw new w(`Failed to load font file: ${i.status} ${i.statusText}`);s=await i.arrayBuffer()}else s=await(await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAA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AIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
|
|
11
|
+
`)).arrayBuffer();await this.Os(s),this.ps=v.parse(s)[0],await this.Ls()}Ts(t){if(t===void 0)return this.bs;this.bs=t,this.Ms=this.Ss.calculateMaxGlyphDimensions(this._s.map(i=>i.character),this.bs,this.ps);const s=this.Rs.createTextureAtlas(this._s,this.Ms,this.bs,this.ps);this.vs=s.framebuffer,this.$s=s.columns,this.Gs=s.rows}async Us(t){try{const s=await fetch(t);if(!s.ok)throw new w(`Failed to load font file: ${s.status} ${s.statusText}`);const i=await s.arrayBuffer();await this.Os(i);const B=v.parse(i);if(!B||B.length===0)throw Error("Failed to parse font file");this.ps=B[0],await this.Ls()}catch(s){throw new w("Failed to load font: "+(s instanceof Error?s.message:"Unknown error"),s)}}async Os(t){const s=Date.now();this.Ys=new FontFace("CustomFont_"+s,t),await this.Ys.load(),document.fonts.add(this.Ys)}async Ls(){const t=this.Fs.extractCharacters(this.ps),s=this.Fs.filterProblematicCharacters(t);this._s=this.ks.createCharacterObjects(s,this.ps),this.Ms=this.Ss.calculateMaxGlyphDimensions(s,this.bs,this.ps);const i=this.Rs.createTextureAtlas(this._s,this.Ms,this.bs,this.ps);this.vs=i.framebuffer,this.$s=i.columns,this.Gs=i.rows}fs(t){return this.ks.fs(t,this._s)}ds(t){return this.ks.ds(t,this._s)}kA(){this.vs.kA(),document.fonts.delete(this.Ys)}get fontFramebuffer(){return this.vs}get characters(){return this._s}get textureColumns(){return this.$s}get textureRows(){return this.Gs}get maxGlyphDimensions(){return this.Ms}get fontSize(){return this.bs}get font(){return this.ps}}class q{constructor(t,s,i){g(this,"Ws");g(this,"Hs");g(this,"PA");g(this,"uA");g(this,"Ks");g(this,"Js");g(this,"Vs");g(this,"Zs");g(this,"Ns");this.Vs=t,this.Zs=s,this.Ns=i,this.iA()}iA(){this.Ws=Math.floor(this.Vs.width/this.Zs),this.Hs=Math.floor(this.Vs.height/this.Ns),this.PA=this.Ws*this.Zs,this.uA=this.Hs*this.Ns,this.Ks=Math.floor((this.Vs.width-this.PA)/2),this.Js=Math.floor((this.Vs.height-this.uA)/2)}Xs(t,s){this.Zs=t,this.Ns=s,this.iA()}get cellWidth(){return this.Zs}get cellHeight(){return this.Ns}get cols(){return this.Ws}get rows(){return this.Hs}get width(){return this.PA}get height(){return this.uA}get offsetX(){return this.Ks}get offsetY(){return this.Js}}class AA{constructor(t={}){g(this,"Vs");g(this,"js");g(this,"qs");t.canvas?(this.Vs=t.canvas,this.qs=!1):(this.Vs=this.Ai(t.width,t.height),this.qs=!0),this.Vs.style.imageRendering="pixelated"}Ai(t,s){const i=document.createElement("canvas");return i.className="textmodeCanvas",i.style.imageRendering="pixelated",i.width=t||800,i.height=s||600,document.body.appendChild(i),i}ti(t,s){this.Vs.width=t??this.Vs.width,this.Vs.height=s??this.Vs.height}ei(){const t=this.Vs.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"});if(!t)throw new w("`textmode.js` requires WebGL2 support.");return t}kA(){this.js&&this.js.disconnect();const t=this.Vs.getContext("webgl")||this.Vs.getContext("webgl2");if(t){const s=t.getExtension("WEBGL_lose_context");s&&s.loseContext()}this.qs&&this.Vs.parentNode&&this.Vs.parentNode.removeChild(this.Vs)}get canvas(){return this.Vs}get width(){return this.Vs.width}get height(){return this.Vs.height}}class MA{constructor(t=60){g(this,"si");g(this,"ii");g(this,"Bi",null);g(this,"Qi",0);g(this,"Ei",!0);g(this,"ri",0);g(this,"ni",0);g(this,"oi",[]);g(this,"gi",10);g(this,"ai",0);this.si=t,this.ii=1e3/t}start(t){if(!this.Ei)return;this.Qi=performance.now();const s=i=>{if(!this.Ei)return void(this.Bi=null);const B=i-this.Qi;B>=this.ii&&(t(),this.Qi=i-B%this.ii),this.Ei&&(this.Bi=requestAnimationFrame(s))};this.Bi=requestAnimationFrame(s)}stop(){this.Bi&&(cancelAnimationFrame(this.Bi),this.Bi=null)}pause(){this.Ei&&(this.Ei=!1,this.stop())}resume(t){this.Ei||(this.Ei=!0,this.start(t))}frameRate(t,s){if(t===void 0)return this.ri;this.si=t,this.ii=1e3/t,this.Ei&&s&&(this.stop(),this.start(s))}measureFrameRate(){const t=performance.now();if(this.ni>0){const s=t-this.ni;this.oi.push(s),this.oi.length>this.gi&&this.oi.shift();const i=this.oi.reduce((B,r)=>B+r,0)/this.oi.length;this.ri=1e3/i}this.ni=t}get isLooping(){return this.Ei}get frameRateLimit(){return this.si}get currentFrameRate(){return this.ri}get frameCount(){return this.ai}set frameCount(t){this.ai=t}incrementFrame(){this.ai++}resetFrameCount(){this.ai=0}}class FA{constructor(){g(this,"hi",new Map);g(this,"ci",null);g(this,"li",null);g(this,"Ci");g(this,"Di");g(this,"Pi",!1);g(this,"ui");g(this,"Ii");g(this,"wi",{ArrowUp:"UP_ARROW",ArrowDown:"DOWN_ARROW",ArrowLeft:"LEFT_ARROW",ArrowRight:"RIGHT_ARROW",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",Enter:"ENTER",Return:"RETURN",Tab:"TAB",Escape:"ESCAPE",Backspace:"BACKSPACE",Delete:"DELETE",Insert:"INSERT",Home:"HOME",End:"END",PageUp:"PAGE_UP",PageDown:"PAGE_DOWN",Shift:"SHIFT",Control:"CONTROL",Alt:"ALT",Meta:"META"," ":"SPACE"})}fi(){this.Pi||(this.Ci=t=>{this.di(t)},this.Di=t=>{this.pi(t)},window.addEventListener("keydown",this.Ci,{passive:!1}),window.addEventListener("keyup",this.Di,{passive:!1}),this.Pi=!0)}_i(){this.Pi&&(window.removeEventListener("keydown",this.Ci),window.removeEventListener("keyup",this.Di),this.Pi=!1,this.hi.clear(),this.ci=null,this.li=null)}mi(t){this.ui=t}yi(t){this.Ii=t}bi(t){const s=this.$i(t),i=this.hi.get(t)||this.hi.get(s);return(i==null?void 0:i.isPressed)||!1}Gi(){return this.ci}xi(){return this.li}Mi(){const t=[];for(const[s,i]of this.hi)i.isPressed&&t.push(s);return t}Yi(){return{ctrl:this.bi("Control"),shift:this.bi("Shift"),alt:this.bi("Alt"),meta:this.bi("Meta")}}Fi(){this.hi.clear(),this.ci=null,this.li=null}di(t){const s=t.key,i=Date.now();this.hi.has(s)||this.hi.set(s,{isPressed:!1,lastPressTime:0,lastReleaseTime:0});const B=this.hi.get(s);if(!B.isPressed&&(B.isPressed=!0,B.lastPressTime=i,this.ci=s,this.ui)){const r={key:s,keyCode:t.keyCode,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,isPressed:!0,originalEvent:t};this.ui(r)}}pi(t){const s=t.key,i=Date.now();this.hi.has(s)||this.hi.set(s,{isPressed:!1,lastPressTime:0,lastReleaseTime:0});const B=this.hi.get(s);if(B.isPressed=!1,B.lastReleaseTime=i,this.li=s,this.Ii){const r={key:s,keyCode:t.keyCode,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,isPressed:!1,originalEvent:t};this.Ii(r)}}$i(t){return this.wi[t]||t.toLowerCase()}}class GA{constructor(t){g(this,"Vs");g(this,"Ri");g(this,"Si",{x:-1,y:-1});g(this,"ki",{x:-1,y:-1});g(this,"zi",null);g(this,"Oi");g(this,"Li");g(this,"Ti");g(this,"Ui");g(this,"Wi");g(this,"Hi");g(this,"Pi",!1);g(this,"Ki");g(this,"Ji");g(this,"Vi");g(this,"Zi");g(this,"Ni");this.Vs=t}zs(t){this.Ri=t,this.Xi()}fi(){if(this.Pi)return;const t=this.Vs.canvas;this.Oi=s=>{this.ji(s),this.qi(s)},this.Li=()=>{this.ki={...this.Si},this.Si.x=-1,this.Si.y=-1,this.zi=null},this.Ti=s=>{this.ji(s),this.AB(s)},this.Ui=s=>{this.ji(s),this.tB(s)},this.Wi=s=>{this.ji(s),this.eB(s)},this.Hi=s=>{this.ji(s),this.sB(s)},t.addEventListener("mousemove",this.Oi,{passive:!0}),t.addEventListener("mouseleave",this.Li,{passive:!0}),t.addEventListener("mousedown",this.Ti,{passive:!0}),t.addEventListener("mouseup",this.Ui,{passive:!0}),t.addEventListener("click",this.Wi,{passive:!0}),t.addEventListener("wheel",this.Hi,{passive:!1}),this.Pi=!0}_i(){if(!this.Pi)return;const t=this.Vs.canvas;t.removeEventListener("mousemove",this.Oi),t.removeEventListener("mouseleave",this.Li),t.removeEventListener("mousedown",this.Ti),t.removeEventListener("mouseup",this.Ui),t.removeEventListener("click",this.Wi),t.removeEventListener("wheel",this.Hi),this.Pi=!1}Xi(){if(this.Pi)try{if(this.zi){const t=new MouseEvent("mousemove",{clientX:this.zi.x,clientY:this.zi.y,bubbles:!1,cancelable:!1});this.ji(t)}else this.Si.x!==-1&&this.Si.y!==-1&&(this.Si.x>=this.Ri.cols||this.Si.y>=this.Ri.rows)&&(this.Si.x=-1,this.Si.y=-1)}catch{this.Si.x=-1,this.Si.y=-1}}iB(t){this.Ki=t}mi(t){this.Ji=t}yi(t){this.Vi=t}BB(t){this.Zi=t}QB(t){this.Ni=t}EB(){return{x:this.Si.x,y:this.Si.y}}qi(t){if(this.Zi){const s={position:{...this.Si},previousPosition:{...this.ki},originalEvent:t};this.Zi(s)}}AB(t){if(this.Ji){const s={position:{...this.Si},previousPosition:{...this.ki},button:t.button,originalEvent:t};this.Ji(s)}}tB(t){if(this.Vi){const s={position:{...this.Si},previousPosition:{...this.ki},button:t.button,originalEvent:t};this.Vi(s)}}eB(t){if(this.Ki){const s={position:{...this.Si},previousPosition:{...this.ki},button:t.button,originalEvent:t};this.Ki(s)}}sB(t){if(this.Ni){const s={position:{...this.Si},previousPosition:{...this.ki},delta:{x:t.deltaX,y:t.deltaY},originalEvent:t};this.Ni(s)}}ji(t){const s=this.Vs.canvas;this.ki={...this.Si},this.zi={x:t.clientX,y:t.clientY};const i=s.getBoundingClientRect(),B=t.clientX-i.left,r=t.clientY-i.top,E=s.width/i.width,Q=r*(s.height/i.height),o=B*E-this.Ri.offsetX,a=Q-this.Ri.offsetY,h=Math.floor(o/this.Ri.cellWidth),c=Math.floor(a/this.Ri.cellHeight);h>=0&&h<this.Ri.cols&&c>=0&&c<this.Ri.rows?(this.Si.x=h,this.Si.y=c):(this.Si.x=-1,this.Si.y=-1)}}const SA=n=>class extends n{rotate(t=0,s=0,i=0){this.vA.state.EA(t),this.vA.state.rA(s),this.vA.state.nA(i)}rotateX(t){this.vA.state.EA(t)}rotateY(t){this.vA.state.rA(t)}rotateZ(t){this.vA.state.nA(t)}push(){this.vA.state.J()}pop(){this.vA.state.sA()}rect(t,s,i=1,B=1){this.vA.$e(t,s,i,B)}point(t,s){this.vA.$e(t,s,1,1)}line(t,s,i,B){this.vA.Ge(t,s,i,B)}lineWeight(t){this.vA.state.QA(t)}background(t,s=t,i=t,B=255){this.vA.Se(t,s,i,B)}char(t){this.vA.state.oA(this.ps.fs(t))}charColor(t,s,i){this.vA.state.gA(t,s,i)}cellColor(t,s,i){this.vA.state.aA(t,s,i)}flipX(t){this.vA.state.hA(t)}flipY(t){this.vA.state.cA(t)}charRotation(t){this.vA.state.CA(t)}invert(t){this.vA.state.lA(t)}clear(){this.vA.Se(0,0,0,0)}ellipse(t,s,i,B){this.vA.xe(t,s,i/2,B/2)}triangle(t,s,i,B,r,E){this.vA.Me(t,s,i,B,r,E)}bezierCurve(t,s,i,B,r,E,Q,o){this.vA.Ye(t,s,i,B,r,E,Q,o)}arc(t,s,i,B,r,E){this.vA.Re(t,s,i,B,r,E)}shader(t){this.vA.me(t)}setUniform(t,s){this.vA.ZA(t,s)}setUniforms(t){this.vA.ve(t)}createFilterShader(t){return this.vA.Bt(t)}createFramebuffer(t){return this.vA.Fe(t.width,t.height,5,{filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte"})}image(t,s,i,B,r){this.vA.ye(t,s,i,B??t.width,r??t.height)}};class V{rB(t){const s=t.MA(0),i=t.MA(1),B=t.MA(2),r=t.MA(3);return{characterPixels:s,primaryColorPixels:i,secondaryColorPixels:B,transformPixels:t.MA(4),rotationPixels:r}}nB(t,s){return t[s]+(t[s+1]<<8)}oB(t,s){return{r:t[s],g:t[s+1],b:t[s+2],a:t[s+3]}}}class ${gB(t,s){return new Blob([t],{type:s})}aB(t,s,i){try{const B=this.gB(t,i),r=URL.createObjectURL(B),E=document.createElement("a");E.href=r,E.download=s,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(r)}catch(B){throw console.error("Failed to download file:",B),Error("File download failed: "+(B instanceof Error?B.message:"Unknown error"))}}hB(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}cB(){const t=new Date;return{date:t.toISOString().split("T")[0],time:t.toTimeString().split(" ")[0].replace(/:/g,"-")}}lB(t){return t.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}CB(){return"textmode-export-"+this.hB()}}class _A extends V{DB(t,s,i){const B=t[i]===255,r=t[i+1]===255,E=t[i+2]===255,Q=s[i],o=s[i+1];return{isInverted:B,flipHorizontal:r,flipVertical:E,rotation:Math.round(360*(Q+o/255)/255*100)/100}}PB(t,s,i){return{x:t,y:s,cellX:t*i.cellWidth,cellY:s*i.cellHeight}}uB(t,s){const i=[];let B=0;for(let r=0;r<s.rows;r++)for(let E=0;E<s.cols;E++){const Q=4*B,o=this.nB(t.characterPixels,Q);let a=this.oB(t.primaryColorPixels,Q),h=this.oB(t.secondaryColorPixels,Q);const c=this.DB(t.transformPixels,t.rotationPixels,Q);if(c.isInverted){const C=a;a=h,h=C}const l=this.PB(E,r,s);i.push({charIndex:o,primaryColor:a,secondaryColor:h,transform:c,position:l}),B++}return i}}class LA{IB(t,s){const i=t.cmap;for(const B of i.tables)if(B.format===4){const r=B;for(let E=0;E<r.startCount.length;E++)if(s>=r.startCount[E]&&s<=r.endCount[E]){if(r.idRangeOffset[E]===0)return s+r.idDelta[E]&65535;{const Q=r.idRangeOffset[E]/2+(s-r.startCount[E])-(r.startCount.length-E);if(Q>=0&&Q<r.glyphIdArray.length){const o=r.glyphIdArray[Q];if(o!==0)return o+r.idDelta[E]&65535}}}}else if(B.format===12){const r=B;for(let E=0;E<r.groups.length;E+=3){const Q=r.groups[E],o=r.groups[E+1],a=r.groups[E+2];if(s>=Q&&s<=o)return a+(s-Q)}}return 0}wB(t,s,i,B,r){const E=r/t.head.unitsPerEm;return{getBoundingBox:()=>({x1:i+s.xMin*E,y1:B+-s.yMax*E,x2:i+s.xMax*E,y2:B+-s.yMin*E}),toSVG:()=>this.fB(s,i,B,E)}}fB(t,s,i,B){if(!t||!t.xs)return"";const{xs:r,ys:E,endPts:Q,flags:o}=t;if(!(r&&E&&Q&&o))return"";let a="",h=0;for(let c=0;c<Q.length;c++){const l=Q[c];if(!(l<h)){if(l>=h){const C=s+r[h]*B,D=i-E[h]*B;a+=`M${C.toFixed(2)},${D.toFixed(2)}`;let u=h+1;for(;u<=l;)if(1&o[u]){const m=s+r[u]*B,p=i-E[u]*B;a+=`L${m.toFixed(2)},${p.toFixed(2)}`,u++}else{const m=s+r[u]*B,p=i-E[u]*B;let y=u+1>l?h:u+1;if(1&o[y]){const R=s+r[y]*B,_=i-E[y]*B;a+=`Q${m.toFixed(2)},${p.toFixed(2)} ${R.toFixed(2)},${_.toFixed(2)}`,u=y+1}else{const R=(m+(s+r[y]*B))/2,_=(p+(i-E[y]*B))/2;a+=`Q${m.toFixed(2)},${p.toFixed(2)} ${R.toFixed(2)},${_.toFixed(2)}`,u=y}}a+="Z"}h=l+1}}return a}dB(t,s,i,B,r){const E=t.codePointAt(0)||0,Q=this.IB(s,E);let o=null;return s.glyf&&s.glyf[Q]!==null?o=s.glyf[Q]:(o=v.T.glyf.ze(s,Q),s.glyf[Q]=o),this.wB(s,o,i,B,r)}pB(t,s,i,B,r,E,Q,o){const a=i+(r-o*(Q/s.head.unitsPerEm))/2,h=B+(E+.7*Q)/2;return this.dB(t,s,a,h,Q).toSVG()||null}}class YA{constructor(){g(this,"_B");this._B=new LA}mB(t){const{width:s,height:i}=t;return`<?xml version="1.0" encoding="UTF-8"?><svg width="${s}" height="${i}" viewBox="0 0 ${s} ${i}" xmlns="http://www.w3.org/2000/svg"><title>textmode.js sketch</title>`}vB(){return"</g></svg>"}yB(t,s){if(!s.includeBackgroundRectangles)return"";const[i,B,r,E]=s.backgroundColor;return`<rect width="${t.width}" height="${t.height}" fill="rgba(${i},${B},${r},${E/255})"/>`}bB(t,s){const{transform:i,position:B}=t;if(!i.flipHorizontal&&!i.flipVertical&&!i.rotation)return"";const r=B.cellX+s.cellWidth/2,E=B.cellY+s.cellHeight/2,Q=[];if(i.flipHorizontal||i.flipVertical){const o=i.flipHorizontal?-1:1,a=i.flipVertical?-1:1;Q.push(`translate(${r} ${E})scale(${o} ${a})translate(${-r} ${-E})`)}return i.rotation&&Q.push(`rotate(${i.rotation} ${r} ${E})`),` transform="${Q.join(" ")}"`}$B(t,s,i){if(!i.includeBackgroundRectangles||t.secondaryColor.a===0)return"";const{position:B}=t,{r,g:E,b:Q,a:o}=t.secondaryColor,a=`rgba(${r},${E},${Q},${o/255})`;return i.drawMode==="stroke"?`<rect x="${B.cellX}" y="${B.cellY}" width="${s.cellWidth}" height="${s.cellHeight}" stroke="${a}" fill="none" stroke-width="${i.strokeWidth}"/>`:`<rect x="${B.cellX}" y="${B.cellY}" width="${s.cellWidth}" height="${s.cellHeight}" fill="${a}"/>`}dB(t,s,i,B){const r=i.characters[t.charIndex];if(!r)return"";const E=this._B.pB(r.character,i.font,t.position.cellX,t.position.cellY,s.cellWidth,s.cellHeight,i.fontSize,r.advanceWidth);if(!E)return"";const{r:Q,g:o,b:a,a:h}=t.primaryColor,c=`rgba(${Q},${o},${a},${h/255})`;return B.drawMode==="stroke"?`<path d="${E}" stroke="${c}" stroke-width="${B.strokeWidth}" fill="none"/>`:`<path d="${E}" fill="${c}"/>`}GB(t,s,i,B){const r=[],E=this.$B(t,s,B);E&&r.push(E);const Q=this.dB(t,s,i,B);if(Q){const o=this.bB(t,s);r.push(o?`<g${o}>${Q}</g>`:Q)}return r.join("")}xB(t,s,i,B){const r=[this.mB(s),this.yB(s,B),'<g id="ascii-cells">'];for(const E of t)r.push(this.GB(E,s,i,B));return r.push(this.vB()),r.join("")}MB(t){return t.replace(/<path[^>]*d=""[^>]*\/>/g,"").replace(/\s+/g," ").replace(/> </g,"><")}}class OA extends ${YB(t){return this.gB(t,"image/svg+xml;charset=utf-8")}FB(t,s){this.aB(t,this.lB(s)+".svg","image/svg+xml;charset=utf-8")}RB(t,s){this.FB(t,s||this.CB())}}class tA{constructor(){g(this,"SB");g(this,"kB");g(this,"zB");this.SB=new _A,this.kB=new YA,this.zB=new OA}OB(t){return{includeBackgroundRectangles:t.includeBackgroundRectangles??!0,drawMode:t.drawMode??"fill",strokeWidth:t.strokeWidth??1,backgroundColor:t.backgroundColor??[0,0,0,0],filename:t.filename||this.zB.CB()}}LB(t,s={}){const i=this.SB.uB(this.SB.rB(t.pipeline),t.grid),B=this.kB.xB(i,t.grid,t.font,this.OB(s));return this.kB.MB(B)}RB(t,s={}){this.zB.RB(this.LB(t,s),s.filename)}}class UA extends V{TB(t,s,i,B=" "){var Q;const r=[];let E=0;for(let o=0;o<s.rows;o++){const a=[];for(let h=0;h<s.cols;h++){const c=4*E,l=this.nB(t.characterPixels,c),C=((Q=i.characters[l])==null?void 0:Q.character)||B;a.push(C),E++}r.push(a)}return r}}class zA{UB(t,s){const i=[];for(const r of t){let E=r.join("");s.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),i.push(E)}const B=s.lineEnding==="crlf"?`\r
|
|
12
12
|
`:`
|
|
13
|
-
`;return i.join(B)}}class
|
|
13
|
+
`;return i.join(B)}}class kA extends ${WB(t,s){const i=this.HB(s);this.aB(t,i,"text/plain;charset=utf-8")}HB(t){let s=this.lB(t);return s===".txt"||s.length<=4?this.CB():s}}class eA{constructor(){g(this,"SB");g(this,"kB");g(this,"zB");this.SB=new UA,this.kB=new zA,this.zB=new kA}OB(t){return{preserveTrailingSpaces:t.preserveTrailingSpaces??!1,lineEnding:t.lineEnding??"lf",emptyCharacter:t.emptyCharacter??" ",filename:t.filename||this.zB.CB()}}KB(t,s={}){const i=this.OB(s),B=this.SB.TB(this.SB.rB(t.pipeline),t.grid,t.font,i.emptyCharacter);return this.kB.UB(B,i)}WB(t,s={}){this.zB.WB(this.KB(t,s),s.filename)}}class NA extends V{JB(t,s=1,i="transparent"){const B=t.canvas;if(s===1&&i==="transparent")return B;const r=document.createElement("canvas"),E=r.getContext("2d"),Q=Math.round(B.width*s),o=Math.round(B.height*s);return r.width=Q,r.height=o,i!=="transparent"&&(E.fillStyle=i,E.fillRect(0,0,Q,o)),E.imageSmoothingEnabled=!1,E.drawImage(B,0,0,B.width,B.height,0,0,Q,o),r}}class WA{VB(t,s){const i=this.ZB(s.format);return s.format==="png"?t.toDataURL(i):t.toDataURL(i,s.quality)}async NB(t,s){return new Promise((i,B)=>{const r=this.ZB(s.format),E=Q=>{Q?i(Q):B(Error(`Failed to generate ${s.format.toUpperCase()} blob`))};s.format==="png"?t.toBlob(E,r):t.toBlob(E,r,s.quality)})}ZB(t){switch(t){case"png":return"image/png";case"jpg":return"image/jpeg";case"webp":return"image/webp";default:throw Error("Unsupported image format: "+t)}}}const VA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},sA={png:".png",jpg:".jpg",webp:".webp"};class $A extends ${XB(t,s,i){this.jB(t,this.lB(s)+sA[i])}jB(t,s){const i=URL.createObjectURL(t);try{const B=document.createElement("a");B.href=i,B.download=s,B.style.display="none",B.rel="noopener",document.body.appendChild(B),B.click(),document.body.removeChild(B)}finally{URL.revokeObjectURL(i)}}qB(t){return t in VA&&t in sA}}class HA{constructor(){g(this,"SB");g(this,"kB");g(this,"zB");this.SB=new NA,this.kB=new WA,this.zB=new $A}OB(t){return{format:t.format??"png",quality:t.quality??1,scale:t.scale??1,backgroundColor:t.backgroundColor??"transparent",filename:t.filename||this.zB.CB()}}AQ(t){if(!this.zB.qB(t.format))throw Error(`Saving '${t.format}' files is not supported`);if(t.quality<0||t.quality>1)throw Error("Image quality must be between 0.0 and 1.0");if(t.scale<=0)throw Error("Scale factor must be greater than 0");t.format==="jpg"&&t.backgroundColor==="transparent"&&(t.backgroundColor="black")}async NB(t,s){if(s.scale===1&&s.backgroundColor==="transparent")return await this.kB.NB(t.canvas,s);const i=this.SB.JB(t,s.scale,s.backgroundColor);return await this.kB.NB(i,s)}async XB(t,s={}){const i=this.OB(s);this.AQ(i);const B=await this.NB(t,i);this.zB.XB(B,i.filename,i.format)}}const KA=n=>class extends n{tQ(){this.vA.FA(this.eQ)}toString(t={}){return this.tQ(),new eA().KB({pipeline:this.sQ,grid:this.Ri,font:this.ps},t)}saveStrings(t={}){this.tQ(),new eA().WB({pipeline:this.sQ,grid:this.Ri,font:this.ps},t)}toSVG(t={}){return this.tQ(),new tA().LB({pipeline:this.sQ,grid:this.Ri,font:this.ps},t)}saveSVG(t={}){this.tQ(),new tA().RB({pipeline:this.sQ,grid:this.Ri,font:this.ps},t)}async saveCanvas(t={}){await new HA().XB(this.Vs,t)}},XA=n=>class extends n{async loadFont(t){return this.ps.Us(t).then(()=>{const s=this.ps.maxGlyphDimensions;this.Ri.Xs(s.width,s.height),this.sQ.resize(this.Ri.cols,this.Ri.rows),this.vA.ke(),this.iQ.Xi()})}fontSize(t){if(!G._(typeof t=="number"&&t>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:t})||this.ps.fontSize===t)return;this.ps.Ts(t);const s=this.ps.maxGlyphDimensions;this.Ri.Xs(s.width,s.height),this.sQ.resize(this.Ri.cols,this.Ri.rows),this.vA.ke(),this.iQ.Xi()}glyphColor(t){return this.ps.fs(t)}glyphColors(t){return this.ps.ds(t)}},JA=n=>class extends n{get frameCount(){return this.BQ.frameCount}set frameCount(t){this.BQ.frameCount=t}frameRate(t){return t===void 0?this.BQ.currentFrameRate:this.BQ.frameRate(t,()=>this.QQ())}noLoop(){this.BQ.pause()}loop(){this.BQ.resume(()=>this.QQ())}redraw(t=1){if(G._(typeof t=="number"&&t>0&&Number.isInteger(t),"Redraw count must be a positive integer.",{method:"redraw",providedValue:t}))for(let s=0;s<t;s++)this.QQ()}isLooping(){return this.BQ.isLooping}},ZA=n=>class extends n{constructor(...t){super(...t)}mouseClicked(t){this.iQ.iB(t)}mousePressed(t){this.iQ.mi(t)}mouseReleased(t){this.iQ.yi(t)}mouseMoved(t){this.iQ.BB(t)}mouseScrolled(t){this.iQ.QB(t)}get mouse(){return this.iQ.EB()}},jA=n=>class extends n{constructor(...t){super(...t)}keyPressed(t){this.EQ.mi(t)}keyReleased(t){this.EQ.yi(t)}isKeyPressed(t){return this.EQ.bi(t)}get lastKeyPressed(){return this.EQ.Gi()}get lastKeyReleased(){return this.EQ.xi()}get pressedKeys(){return this.EQ.Mi()}get modifierState(){return this.EQ.Yi()}};class qA{constructor(){g(this,"vA");g(this,"ps");g(this,"Vs");g(this,"Ri");g(this,"BQ");g(this,"iQ");g(this,"EQ");g(this,"eQ");g(this,"sQ");g(this,"rQ")}QQ(){}}class iA extends function(s,...i){return i.reduce((B,r)=>r(B),s)}(qA,SA,KA,XA,JA,ZA,jA){constructor(s={}){super();g(this,"nQ",!1);g(this,"oQ",()=>{});g(this,"gQ",()=>{});g(this,"aQ",()=>{});g(this,"hQ");this.Vs=new AA(s),this.vA=new IA(this.Vs.ei()),this.ps=new j(this.vA,s.fontSize??16),this.BQ=new MA(s.frameRate??60),this.iQ=new GA(this.Vs),this.EQ=new FA,this.eQ=this.vA.YA(),this.rQ=this.vA.it(),this.cQ(s)}async cQ(s){await this.ps.zs(s.fontSource);const i=this.ps.maxGlyphDimensions;this.Ri=new q(this.Vs.canvas,i.width,i.height),this.iQ.zs(this.Ri),this.sQ=this.vA.Fe(this.Ri.cols,this.Ri.rows,5),this.lQ(),this.oQ(),this.BQ.start(()=>this.QQ())}lQ(){this.hQ=()=>{this.aQ()},window.addEventListener("resize",this.hQ),this.iQ.fi(),this.EQ.fi(),window.addEventListener("blur",()=>{this.EQ.Fi()})}QQ(){if(this.BQ.measureFrameRate(),this.BQ.incrementFrame(),this.nQ)return;this.sQ.begin(),this.vA.pe(this.eQ),this.gQ(),this.vA.FA(this.eQ),this.sQ.end();const s=this.vA.state.canvasBackgroundColor;this.vA.Wt(s[0],s[1],s[2],s[3]),this.vA.pe(this.rQ),this.rQ.VA({a:this.ps.fontFramebuffer,b:[this.ps.textureColumns,this.ps.textureRows],c:this.sQ.textures[0],d:this.sQ.textures[1],e:this.sQ.textures[2],f:this.sQ.textures[4],g:this.sQ.textures[3],h:[this.Ri.cols,this.Ri.rows],i:[this.Ri.width,this.Ri.height],j:[this.Ri.offsetX,this.Ri.offsetY],k:this.Ri.width/this.Ri.height}),this.vA.be(this.Ri.offsetX,this.Ri.offsetY,this.Ri.width,this.Ri.height)}setup(s){this.oQ=s}draw(s){this.gQ=s}windowResized(s){this.aQ=s}resizeCanvas(s,i){this.Vs.ti(s,i),this.Ri.iA(),this.sQ.resize(this.Ri.cols,this.Ri.rows),this.vA.ke(),this.iQ.Xi(),this.QQ()}destroy(){this.nQ||(this.BQ.stop(),window.removeEventListener("resize",this.hQ),this.iQ._i(),this.EQ._i(),this.ps.kA(),this.vA.kA(),this.nQ=!0)}get grid(){return this.Ri}get font(){return this.ps}get width(){return this.Vs.width}get height(){return this.Vs.height}get canvas(){return this.Vs.canvas}get isDisposed(){return this.nQ}get drawFramebuffer(){return this.sQ}}class k{constructor(){}static create(t={}){return new iA(t)}static setErrorLevel(t){G.v(t)}static get version(){return"0.2.1-beta.4"}}const At=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),tt=k.create,et=k.setErrorLevel,st=k.version;f.TextmodeCanvas=AA,f.TextmodeErrorLevel=x,f.TextmodeFont=j,f.TextmodeFramebuffer=O,f.TextmodeGrid=q,f.Textmodifier=iA,f.create=tt,f.export=At,f.setErrorLevel=et,f.textmode=k,f.version=st,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})},typeof exports=="object"&&typeof module<"u"?e(exports):typeof define=="function"&&define.amd?define(["exports"],e):e((A=typeof globalThis<"u"?globalThis:A||self).textmode={});
|