mpg123-decoder
Version:
Web Assembly streaming MPEG Layer I/II/III decoder
168 lines • 78.9 kB
JavaScript
/* Copyright 2021-2025 Ethan Halsall. This file is part of wasm-audio-decoders. https://github.com/eshaz/wasm-audio-decoders */
var i,t;i=this,t=function(i,t){const H=(i,t=4294967295,H=79764919)=>{const e=new Int32Array(256);let r,s,h,n=t;for(r=0;r<256;r++){for(h=r<<24,s=8;s>0;--s)h=2147483648&h?h<<1^H:h<<1;e[r]=h}for(r=0;r<i.length;r++)n=n<<8^e[255&(n>>24^i[r])];return n},e=(i,t=H)=>{const e=i=>new Uint8Array(i.length/2).map((t,H)=>parseInt(i.substring(2*H,2*(H+1)),16)),r=i=>e(i)[0],s=new Map;[,8364,,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,,381,,,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,,382,376].forEach((i,t)=>s.set(i,t));const h=new Uint8Array(i.length);let n,o,M,c=!1,a=0,I=42,l=i.length>13&&"dynEncode"===i.substring(0,9),d=0;l&&(d=11,o=r(i.substring(9,d)),o<=1&&(d+=2,I=r(i.substring(11,d))),1===o&&(d+=8,M=(i=>new DataView(e(i).buffer).getInt32(0,!0))(i.substring(13,d))));const m=256-I;for(let H=d;H<i.length;H++)if(n=i.charCodeAt(H),61!==n||c){if(92===n&&H<i.length-5&&l){const t=i.charCodeAt(H+1);117!==t&&85!==t||(n=parseInt(i.substring(H+2,H+6),16),H+=5)}if(n>255){const i=s.get(n);i&&(n=i+127)}c&&(c=!1,n-=64),h[a++]=n<I&&n>0?n+m:n-I}else c=!0;const f=h.subarray(0,a);if(l&&1===o){const i=t(f);if(i!==M){const t="Decode failed crc32 validation";throw console.error("`simple-yenc`\n",t+"\n","Expected: "+M+"; Got: "+i+"\n","Visit https://github.com/eshaz/simple-yenc for more information"),Error(t)}}return f};function r(){const i=Uint8Array,t=Float32Array;r.H||Object.defineProperties(r,{H:{value:new WeakMap},o:{value(i,t){r.H.set(i,Promise.resolve(t))}},M:{value(i,t){let H=r.H.get(i);return H||(t?H=WebAssembly.compile(e(t)):(t=i.I,H=r.J(t).then(i=>WebAssembly.compile(i))),r.H.set(i,H)),H}},u:{value(i,H){let e=new t(H),r=0,s=0;for(;r<i.length;)e.set(i[r],s),s+=i[r++].length;return e}},R:{value:(i,t,H,e,r)=>({V:i,channelData:t,samplesDecoded:H,sampleRate:e,bitDepth:r})},L:{value(i,t,H,e,s,h){let n,o,M=[];for(n=0;n<H;n++){const i=[];for(o=0;o<t.length;)i.push(t[o++][n]||[]);M.push(r.u(i,e))}return r.R(i,M,e,s,h)}},J:{value(t){return t=e(t),new Promise(H=>{const e=String.raw`dynEncode012804c7886d()((()>+*§§)§,§§§§)§+§§§)§+.-()(*)-+)(.7*§)i¸¸,3§(i¸¸,3/G+.¡*(,(,3+)2å:-),§H(P*DI*H(P*@I++hH)H*r,hH(H(P*<J,i)^*<H,H(P*4U((I-H(H*i0J,^*DH+H-H*I+H,I*4)33H(H*H)^*DH(H+H)^*@H+i§H)i§3æ*).§K(iHI/+§H,iHn,§H+i(H+i(rCJ0I,H*I-+hH,,hH(H-V)(i)J.H.W)(i)c)(H,i)I,H-i*I-4)33i(I.*hH(V)(H+n5(H(i*I-i(I,i)I.+hH,i*J+iHn,hi(I-i*I,+hH,H/H-c)(H,iFn,hi(I,+hH,H0n5-H*V)(J(,hH/H(i)J(H(V)(J(i)c)(H)H(i)H,c)(3H*i*I*H,i)I,4(3(-H(H,W)(H-I-H,i*I,4)3(3(3H,H-I1H+I,H.i)H1V)(J.i(v5(33H.-H(H,i(c)(H,i*I,4)333)-§i*I*+§H*iHn,hi73H,H(i)8(H+J+H)P*(H*V)(J-r,§H)P*,H.i)H+H,i)V)(-H*i*I*H+i)I+H-H.I.H,H-i)I,4)333Ã+)-§iø7i(^*(iü7I,*h+hH+iDn,h*hilI+i)I,+hH+,hH+iô7H,c)(i)H+i´8W)(H,I,H+i*I+4)-+hH(H)8*J-i(p5.*h*h*hH-i')u,hH(P*(J+,hH(P*0J,H(P*,n50H+H,H-b((3H(P*0i)I.4)3H-i¨*n5*H-iÅ*s,hi73H-i)J+V)&+I,H(H+V)æ,8(I.H(H*8*J-i(p51H-i)J+i¸7V)(H(H+iø7V)(8(J/H(P*0J+s,hi73H+H,H.J,I.H(P*(m5(H.H(P*,s5.+hH,m5*H(P*(J.H+H.H+H/U((b((H(H(P*0i)J+^*0H,i)I,4(3(3H(H.^*03H-i¨*o5)33i(73(3(3-H,H+i)c)(H,i*I,H+i)I+4)33i)I-3H-3!2)0§K(i2J,L(H,H(^*(H,H*^*4H,i(^*0H,i(^*DH,j(_*<H,H)P*(^*,H,H+P*(^*8*h*h+hH,i)8(I3i§I**h*h*h*h*h*h*hH,i*8(6+(),03H,j(_*@i*I-H,P*<J.i,J(H,P*8J/s50H,H.i+J0^*<i¦I*H.H,P*4J1J.U(*H.U((J2i')o5/H.U()I.H,H(^*<H0H1U((H.i0J.i§i0i')o5/H/H.H2J*H(J.q50H,P*0J/H*I-H,P*(J0,hH,P*,H-q,hi)I-423+hH*m5+H/H0H(H1U((b((H/i)I/H(i)I(H*i)I*4(3(3H,H.^*<H,H-^*04*3iØ1U((5+i(I(i¨7i1^*(i$6iè1^*(i°7iè6^*(i¬7iÈ6^*(+hH(iÈ*n,hiÈ*I(+hH(i¨,n,hi¨,I(+hH(iØ,n,hiØ,I(+hH(iè,o,hH,i-H(i0c)(H(i*I(4)33iè1i1H,i-iÈ*8)Bi(I(+hH(ido,hH,i-H(i-c)(H(i*I(4)33iÈ6iè6H,i-iF8)BiØ1i)b((41-H,i-H(i/c)(H(i*I(4)3(3(-H,i-H(i1c)(H(i*I(4)3(3(-H,i-H(i0c)(H(i*I(4)3(3(3H,H/^*0H,H(^*<3i(I*4*3H,H,i¸)^*TH,H,iø-^*PH,H,iX^*LH,H,i(^*HH,i-8(I(H,i-8(I-i¥I*H,i,8(I.H(iErH-iEr5)H(i©*I1H-i)I0i(i;H.i,J(i(H(i(rCJ(J*H*i;sCI*i¨1I-H(I/+hH/,hH,i-H-V)(i)H,i+8(c)(H/i)I/H-i*I-H*i)I*4)-H(i)i¨1I/+hH(H*o,hH,i-H/V)(i)i(c)(H/i*I/H(i)I(4)33i¤I*H,iø-H,i¸)H,i-i;8)5+H0H1I2i(I-+hH-H2p,hH,H,iP8*J*i(p5-H*i7u,hH,i-H-i)H*c)(H-i)I-4*3i(I/i+I.i+I(*h*h*hH*i86*(*)3H-m,hi£I*403H-i)H,W)-I/i*I(4)3i3I.i/I(3H2H,H(8(H.J(H-J.p,hi¢I*4.3H,i-H-i)I*+hH(,hH*H/c)(H*i*I*H(i)I(4)-H.I-4+3(3(33H,W)1m,hiI*4,3H,iø-H,i¸)H,i-H18)J(,hi¡I*H(i(p5,H1H,V)ú-H,V)ø-o5,3H,i(H,iXH,i-H1i)H08)J(,hi I*H(i(p5,H0H,V)H,V)o5,3H,H,iPH,iH8+I*4+3(3(3H,i$6i¬78+I*3H*H3m5(3i)I-H*i(r5)3H)H,P*0^*(H+H,P*<^*(H*I-3H,i2L(H-33Á)+(i¨03b+(,(-(.(/(0(1(2(3(5(7(9(;(?(C(G(K(S([(c(k({(((«(Ë(ë((*)(iø03O)()()()(*(*(*(*(+(+(+(+(,(,(,(,(-(-(-(-(i¨13M8(9(:(((0(/(1(.(2(-(3(,(4(+(5(*(6()(7(T7*S7US0U `;r.M(r,e).then(i=>WebAssembly.instantiate(i,{})).then(({exports:e})=>{const r=new Map(Object.entries(e)),s=r.get("puff"),h=r.get("memory").buffer,n=new i(h),o=new DataView(h);let M=r.get("__heap_base");const c=t.length,a=M;M+=4,o.setInt32(a,c,!0);const I=M;M+=c,n.set(t,I);const l=M;M+=4,o.setInt32(l,n.byteLength-M,!0),s(M,l,I,a),H(n.slice(M,M+o.getInt32(l,!0)))})})}}}),Object.defineProperty(this,"I",{enumerable:!0,get:()=>this.W}),this.$=(i,t,H)=>{let e=[],r=0;for(;r<t;)e.push(i.slice(r*H,r++*H+H));return e},this.P=(i,t,H=!0)=>{const e=this.W.B(t.BYTES_PER_ELEMENT*i);return H&&this.A.add(e),{D:e,O:i,v:new t(this.W.T,e,i)}},this.free=()=>{this.A.forEach(i=>{this.W.free(i)}),this.A.clear()},this.F=i=>{const t=[],H=new Uint8Array(this.W.T);for(let e=H[i];0!==e;e=H[++i])t.push(e);return String.fromCharCode.apply(null,t)},this._=(i,t,H,e,r,s)=>{i.push({message:t,frameLength:H,frameNumber:e,inputBytes:r,outputSamples:s})},this.instantiate=(i,t)=>(t&&r.o(i,t),this.W=new i(r).instantiate(),this.A=new Set,this.W.ready.then(()=>this))}class s extends((()=>globalThis.Worker||t)()){constructor(i,t,H,e){r.H||new r;let s=r.H.get(H);if(!s){let i,t="text/javascript",h=`'use strict';(${""+((i,t,H)=>{let e,r,s=new Promise(i=>{r=i});self.onmessage=({data:{id:h,command:n,data:o}})=>{let M,c=s,a={id:h};"init"===n?(Object.defineProperties(i,{X:{value:t},Y:{value:H},module:{value:o.module},U:{value:!0}}),e=new i(o.options),r()):"free"===n?e.free():"ready"===n?c=c.then(()=>e.ready):"reset"===n?c=c.then(()=>e.reset()):(Object.assign(a,e[n](Array.isArray(o)?o.map(i=>new Uint8Array(i)):new Uint8Array(o))),M=a.channelData?a.channelData.map(i=>i.buffer):[]),c.then(()=>self.postMessage(a,M))}})})(${H}, ${r}, ${e})`;try{i=void 0!==process.versions.node}catch{}s=i?`data:${t};base64,${Buffer.from(h).toString("base64")}`:URL.createObjectURL(new Blob([h],{type:t})),r.H.set(H,s)}super(s,{name:t}),this.N=Number.MIN_SAFE_INTEGER,this.S=new Map,this.onmessage=({data:i})=>{const{id:t,...H}=i;this.S.get(t)(H),this.S.delete(t)},new e(r).M().then(t=>{this.G("init",{module:t,options:i})})}async G(i,t){return new Promise(H=>{this.postMessage({command:i,id:this.N,data:t}),this.S.set(this.N++,H)})}get ready(){return this.G("ready")}async free(){await this.G("free").finally(()=>{this.terminate()})}async reset(){await this.G("reset")}}const h=(i,t)=>{Object.defineProperty(i,"name",{value:t})};function n(i){var t,H,e,r=i=>console.log(i),s=i=>console.error(i);function h(){}function o(i){throw i}function M(){o("missing function: INT123_compat_close")}M.C=!0;for(var c={},a=[null,[],[]],I=new TextDecoder,l=(i,t)=>{var H=a[i];0===t||10===t?((1===i?r:s)(((i,t=0,H=NaN)=>{for(var e=t+H,r=t;i[r]&&!(r>=e);)++r;return I.decode(i.buffer?i.subarray(t,r):new Uint8Array(i.slice(t,r)))})(H)),H.length=0):H.push(t)},d=new Uint8Array(123),m=25;m>=0;--m)d[48+m]=52+m,d[65+m]=m,d[97+m]=26+m;d[43]=62,d[47]=63;var f,J,u,w,g,R,y,b={j:M,c:()=>o(""),b(){},d(i,t){if(c[i]&&(clearTimeout(c[i].id),delete c[i]),!t)return 0;var H=setTimeout(()=>{delete c[i],y(i,performance.now())},t);return c[i]={id:H,K:t},0},e:i=>(t.length,!1),g:i=>52,h:(i,t,H,e)=>52,i:(i,t,H,e)=>70,f(i,e,r,s){for(var h=0,n=0;n<r;n++){var o=H[e>>2],M=H[e+4>>2];e+=8;for(var c=0;c<M;c++)l(i,t[o+c]);h+=M}return H[s>>2]=h,0},a(i){throw`exit(${i})`}};n.I||Object.defineProperty(n,"I",{get:()=>String.raw`dynEncode01dd21c54d17j¢>¡-é!Dt 9&W U§®}»/6|ºì,ÜÐ*ÝÙÂ:C#ÈEÅõkµÄqÁ¹BCdq$GPPxÚý¾ýB{jð=M¸ìOÑ-Ia,¢áÅ Ó®µôEù= *f®Ø"þèÒ ËøÓÉÄà󫤡ù|þ«ôñ«´ÁÜú¤«ìe«p±§W6(¶¢ÏÑIZ»¥'T28òÞ6<±*h²ëHñ'q©ññ+9LÏ8n'!ò©åP.Þot__¹§ü 0J]ío Zï óÚºM´õjÈ¿n)å½ðN\]óÐÖ]±<¿_>»5Ûÿ-'2[HÕo×m}&xÎÿú&ôì¯ /ý§iÂÐÈRB÷¸M°G÷;;T8kB7ïQûzL´¨ÛÍD9$EnA¶¸ûÃv4òCû㨾YcÐ>t2çZéÂ{¬½«KØB6cvpR=}vªã4ÀP¿Ø»ä4ûwѽ®üªä~Ô±CÇJÓª±.NÉ\*±8jècª= |_VÃK×ã2)§}¼
gb/!ôÀV~:0-ÈÀu²Ì/@LO*ÃL1?çRM ljÀw
K<î ¼G$ý¿¸É´g¢ô°rTªS¨Ð²éfªm½y
|~¦À?Ä;Ä¡gmjê'IhÅüO0b¢¹1ÜÎhj÷ÓÚ:rþ^KÓYٺʹ«IÚ
Ú©»WõªÁÞ\vvw+Ô^¤hÄ|´Dl*6¹2ÌðPF¼)\HQcQu%Ê,Jd¾7«Ô=Mº®nø½ÞÈö6×Á?ì EôQÞ¡éRÝ¡W*muú®¨ ñsÊWÂÌ5Î= v[x¨}\¦Æã£Q>wÀBÁ×(~;Þcí¹«
µËMµ;×ý¢¬²ùä#ÎöúëÆê<|Z,ªq1ldõtpNnÑL³k?Ü=M ¡Eõ¢ñVYÏ þH_Bî)/¦'aP= Ôæ|vWh ÎKQºP¬l¾ß®mñ9ÊA¥»-BN*´.bÎ)SÚ!AY?b=}Ù/ii·J9+cRòô
ΤíÐäsÊsùH43í~¢±_r¦Îrýâ~d8c¨ÇMéBaJ-geÔz
õPðð¿ç§d'´1; {ÑÄÐßëvïuøOªf2ð¿áâ9ú¢)=M2Î=Mí}YíUbia½øy9Ø'{Rud Éß$Ïi=Ma±n·ìæ(®¤ûÑz9k+íB©ÀòÑ¿ÕÇ*®ò[.¤íûF~¾
~PËX¤7ãÚTEN=}¡?½E«Â(c#§ åq4gQzx÷±[
hë¡eYÌ9] ÀGû¯¦õ0DÖmC=MF³XpȾXéÔÏRØïwµð¨ÉrH~ô8Âêx鯫g+oQXÌËïvòpØ=M)/"T'48!QòѾré½òR=MPx®5Ë»ó= à?k$?Vª= ¸Iæ§gY;ÈQ®q¹¼"t¹§; ÛKÖ= VtéjÃ(ÖaM9Ú3°ËTÃ3ë=M¼ÉâÐ8V¥«Ðë¬|òX3¯ÐâIËzb}h&~ÏÙħdÃMBL¢W= vÁÇ&ÏNÉ 1²_èÆðÔ£.%3¹ùÞ^9]i^5ß{¢3{2¡Î;pmþænû?Uï:Zs0£ o7âëü2µhý9f×I]>bd ÃY6Ù$ªâ8L=M/´ôÔ~XMºM:@ÚçW?× ÁóË]Ð\ÜæÑF¥7. EXU? ÝxزËï˪ÐÈó¸3y!Q¸*H¼ð¨·cèâÉ´ 8bÛW<Ó6§ÈgòñÌ& ä;;ÌÄ9 ׳þ(\,zþj}zS6}µlkñ4þpêñ?0¹´zõíoÜL¹n¿ÜäÕL×[MZ>ÁKæµIØ¥pÀù¦Ï ¼ºòÏ«ð¯öþÞ$-
nm;hÄzEL´9¼Ìû ŵºÎ¥½Â©»~>µzt[¼É NèUÈfØÔn£Ç]e?¬ogM¸»ïM.}:ßñÄð㥽á<$Kݾ×^ý¹¤ÐMètÌZ þÏcX= mÉqâ%ãa°d×
ZÌA*¼L|àýw,ØnÑ&+"]ìÂÏ(/Ñÿ
ü£#bÊî´[?Ñ'¼ É>L¶yÏwÔBTNÚÔ]÷V»v7 Ã_^çwhshÊ= N´¯ØõxJ Ø½ÊØi
Æ?èÇ"X¥¾ð§Z<0îA¶õXXËÒûÞÆ[=}õ
Ç5ÙUùLìÿÙ¦*LáôöÚ·éXö@,ØF¨JY¹(õßOû~÷LÒkjU @]%«Ì= .ý ½8¶ÉØúlqü5ðWÿë@ÌOöS¥¦q
D¸DX$Ðý-D¥®Ç0ëjÌ4F)%¥µ/kçjE1ξȷÒr÷ë½CÔ-h&ðÅ:?¿;A?elB¢ë' õãwZwüI÷Ã&çêh<xYñÒÿЩ=}
>Á¸L°8u¥÷S'º(ND½ú2YYü÷4AYÓ»Y¥©ß°½xuæJS½c´pbiucb©Ç^¤cÙ#¥û~X9éÓnI/óøæ!OcÇLëSqg¬7®úkê¬ù~ã+¶MEö£i>Ýh 4h6ª(¢¿+ûÒùYÉù³B<\ùèÜB
O¢wUo³up £x/¢ñaʶnÿv>^èÃ2Oüª®o[ù?PN%ÿ¥úýü0¦M§HÍ)¡ÈÊ>ueÞêJ<øRÐLº]ÆÝàãcï¢
ô_äéË*v;ªñ±Ú"é[= [^.]OÀ%·° 5lÁr6;À3<IÄLÄôÔÓö yùÐzßH·U´= ]| @Cã̬¤IåÀPÔZ²w²§dã*.42ÔQTR4ªÁ×WÔÓNâ&«À®(jâø(´r0Iíc_µ,ªñsÈ["Æ. ?Bj7#êTÚKÎ8ÜT7HUØ,Û o= ªs®=}Y¿<<uXJHÕrü×£Öô9ÍAáªÃD¿Pq÷ÒwÕ03]ò5 Ø´Ôê²ü^pkÈÚÆjðôâñêzwÜè»sÿ|xX¿Ëµ÷ëÁ¬L´Î¤wàÇä4x½(3:0ÂËU¤ûê÷{öáÀH®<QÙx¾ÇôèBÌÔ4´#mÞÕÛ¤ òch¨d¬\¹æ)õªC>Ó*ed]§níö¸?lJóC^fwÅí¡§~ä<T@¸§ZTû[grÖptòÅîñO¼|WØ©æ=M
,,ïx?^À7ÔúYPó@ì 75«JFhÜèMáTWeÆò=}3e¤xÇeú1Y«ùѽ'$ÑuüDû±tJfþvHV ´ëê=}À¡~Ñ´kíå|W#¬ÊÙ¾=}ùß<Pà
V±
a
æA¡¯}ä#w×A¶´SxûëívÉàSXãë)êq9S9¼~ê'lÖPÂ2ʱoàý¡±o
ù ÂMç.ôÞ1os¯N°ò¼1£¢8Õu:+doOȰiÖê9LTüh®=}Êà22>¢ÿøIáê (xU_>÷À¾½Ïéٹ²é´ÄòJ4Nºo20ÎUkgNì%Ô&GSyf*õàÓäÍ´rò#6Të½Ê= k½Oñt5
ê;mÓÝ[¯g'N'v]dC²R+*f¸ôw1´¶sµÿÉGnËGnâ·9DMÓ˶X@{¿'iÛ]T®ÐÕP+f= ë
´¨nu»Àôï½ü(¦&ý[|çAbiD¬ÏÓSP¼5ù]×1Ì-Ω94ÓKÞÔ¡E0Uy2O,Ó/!sÛË4J#ï®Äd;´Ä·ÿsg=}]ØÊ¨èl'³x>×¾~^øë¿¬H¯¥gÁ' ù±"hRSR5Í-ý°{.<l~Lí¢ý7ôgÊCâNùü
±ñy
y¥_¿SXtRðNK{2î8RwãÕ9h¹=}ç5û½½o´kºÑECì¹jÜ Ã¼S eNô-¯³^dgR b²ÈÁuE×<®mù)xK6ó¬ ¼ÊÕÖô;hSÃü\ÖÕd|ÐÏiM ¼Â\5Ím|Ñcâ<Ü= Hx}d½IZ¤x,©Ù,M»Î¿öôù7È |껦qðð¬.e»ËM%Pè:ÓÔ@Ïùûð ÎWååߢîôIýQ<|ê ³SJþÝÛLõf¤ # ÓûúlT¥ÕöÎ0,£,
, ÄüÌ+É!1üAÝû×¥
nî>â å÷%{iæýʬ ö²YP¤3ïÞ»hå·xµ'¿Å*)Ru´Î¼æ>ïQYõb/c2þßgY²?2pÎ1T¤0GEºTìAñº=}©Ò¢qý*æ!ÈÇýà^#XT¢ÊY<,SØ3]¶z_nPȳÕ= ÏG!V³µvx
~3IìüàS7ªC¿ÉQs¶Cò§0ô¶;kw*4Ñÿ,$ʶöòJEDи
¶À%A¤èSüChò:ͱ:¥$AÄ´I<"DfáÂ6=}êy÷Ϩh\ÖgûãJv2)½&=}Wj:ÅÅÝ÷x;þ©ÅÞïuM6ç2õ¨n6ËHãläþè©9þ©Å[þ©èHóG¿g{êvæPËÌlÅ·Ô(ìªÚ±à¤dM_¬àMoÇ^"K¬äáW}¼ÚóøJC>H+ŰMN^v>gÔ,x¸(G}ÇË,v´(HSv«jX>l c»4Pê,=MêùaIºúÍaO
²É§w
̯¤ ö<¢I^Âô±Yº¦m[cùÄvFõ7àzÐÞÒ±êqö¨cXgætŨøù0JáVí@ÿ0K(uc.Õ2ÑUsé¯kô·ÎÒ¥©À|¢Eý¬
v?>D±Oã®C×]tdzw¢Qk\SAÐuäã:¤ñ«NC±)ÍFÕ|¶ùJ:²½Á²#môàÆdô³AÇ '¯,4=}åJnóncoý§oÿWz¸6>kx[Õ³ä'KØG-¥©u¥ÖjjÇd<ýѱÇó,ßILMOG ¥Ð^ñ¢[Ê5.y¯fQ¿µ~
ó¤s³*çè¹ 6 GOïù¦xpÈ5Ci¬à±¢Í=}H2?Õ¶CTö{
#C°%'E%¨óbGµÞ©fuGF ò
,´É §kÀÝaáõ%!m¤'p/í2âgí·]ã%¨BçôzÁÂ÷Éq%j]µÖUÅÍÁ!(k7%å·Q wçü¬ú@gÃÈ
V*ÖIý¶ª6®oózE; ÒBæøéa|x0$ÐÈ
V:ÖQý.tÃ%!±ïªÈak{5svrñ;E{K§0Yfwdðªø^á:wà®ï±ï% ÷¿öÊ5ßÿá_íÖ®þùcfªCžiI½ÎßNßHgè·ú#³ZXrè´XJÜPe"aÅÓ¨çg®y(¾¤EÍÕÜdñüü¸?ÑÀ°_ýKqè¾£Mn£oH%8hôζx*Åñl::§2Î/OÎ<ßYÌ) ;Õ?ù÷ð¥¿r9T/Û!Òm4Jý^
I è½ïÏ]2Ì=}òhD0&'9oñ'gâ«r~eb= ô]Gök\ÅPVîòç+¤5í?°í?êT9îÿý¾qYM¾ÿmrh*(5òBå¬!z1pF]èUßjYw=Mw)ð+w-þ*%&ðm*ö²3ÂéÏ¢¢¸©^vâŵ?2§ôµ ×¼â2Ü2CL¥mTþÈ Àj©
çÄo¿>E-müíÎmF¼]Räà K·çÉ0à¿b÷çÎwªÏ'Æ©°¦äʸ%½á:¸E(Í7Ù¹ yåû§Ï
æqÀæ1½åæX-¬Ó-nÔ^×NZÐmö±£ ¤ìÇÀE-Ï#õãÒìêéÇÞì2ãR¢ HãØñÿµ®ö¯X#;RV=Mµq àOÞØfàôJwM¡ ´ÜÎ5ç+êqdÑ^Ó-UGíS8&- £Y =}(£ÛÒQz¤²g<ñÔs Õs,õ±ªñÌ×[~+É= î âfÛNÚEyдERrHÄV$q²seYFÊÒkqÍÙ·ÚÓå©dJ
oanÉkªoÑ=M÷$IIñDOl(ÐW?°+ÊÁ1ª?Ƚ*øTEtÆoÞãû5@¸¹ ¤î//b[»Â$9Ì+¦j ¬Y*Eo"·^Elor~ßµÉv+TN?Å&æÊp¬FRiaRëhçY²y©ä¦9öëRdò+Tú!³Õ>
£hPÞ¼ÿëý×?pèý%êoEá^i \á
²Ê^lël=
ûygöjUÂÔ(1¯I°Ì1Èð*.ÉLPJ¼
7/M§,ú)â+裪á¾CLû^#Êù±¼rNÂ?ÑÚú@ÙºñEçº&¼àîKZ¾þ2aìjSzL ®¬)ó~ñdlB¯æÕÎÍ ¤]¤å>= ôS@¯j$½£QÉCYàÑuÝxÓKü¼¡ÔÉâÓ?^f[]m´@JÕ¡ÀÅg?:hÉìÊ#}"ßÃX.8<¹s]FÈ()×[ZI2-}LA0òÏÔöMæY3/q-ãþþúGareOR/&{X\?[òzÎÍÕéÌH°ã}Â:ûä«8æ= S°wîEjj»fLa,¤ý»R0õÈj÷a0ÖæXÍØ^epÿÏ?Gºåï#Zòl41bïA÷me§z d¤+ 8|ük½
¤ÀÝïÕ5ùe<kX´ìMÑë©
<$àrÑú ËP<âmNʹÒIí²ë7«_¹ýpvß÷c9JÐö?ÎÕ¯à%J¶Ç'ò)²ª¯+ÀÛêTUÄQÄ/^ùKQx(c½(ó¤X r¨NoïyW
:Rj1©= ¶©Isg0ï¢þm òÎ= gA¨0#Xµzù¾¶r6ÆC½KtÀûrAøÖw&4®¿ ôùüZú±|Àoy&â.V\KÃWÃ±Õ }×Vܰ Çé¶/¯zzªèÚÏmo´weRý»rÉX½íM2vDI#xÑ.ÓwÒjü?x@´oÅQ©bòMÄb¼Rä·Ä¿ìAQA,%p"Yô= þÓ¶+ý©cÁí·óN3NµK¯ibmg^ Çï,Wüy1ôís[ÌÂ4µZ;>@gÜdÓ=}8·¦TÍIøz½Ù)vñòiú;¹°#)kü.ÕËâWï¬òF·<ÊNHg7Y|µÜK¬/Jüð3QIÔ«¨f$rjÁ#ü·ªR%@ÆÓù¥P%ZrÂ+jã²¾TfW«.]º$oõÓ:ÝþãÕ]l ýÀ0£ ü°öϲÑå ¨ìyìíée0Q^¶Åÿ^Fùg5¿íB¤ »ö
U²ÏBàY%´¦Î>¸Å4d|(7©kµm³Í@Yô÷u*" &jr ®xṡ>2Å~£ªwu¯sç¾v2@3@Ñ?þÇ7M±²ÿlsÊ9»^¾Õm2À'#R¥UJU÷Ù;/È]cÔPÚC\>*¦/¾Ã= 6rÇj´è8hÌead
MYyè¿]øÜhWÙ~Ó=M÷+ÞwGñÙ¡ £ê,¥ÝË|îâïuñvæ=MY{æ<øþLÍkÌ%"®uû24@Ï6#ݳ.¶j¼*zg·(«Ú;Ô»Âoôw±Ì¨6ÀMɯcÇÍ®õ}ñÒGðu}ߥöÛWD1ê@dEáÞe#ÁuMJf5\ýE=MAL6ðóRç¤sI gK4P¡ pº¨ñr#+'ñö8ýXJRh|É=}_õ
/Å\Á/³Iã=M¹N8÷æp«~ýÉB-jVáaíÔßÔ8/ê¡Å¥B<Öÿ¼ÕÜǯ=ME*ówófsYrûk¹Ñl7²HÛL$ÐòÐlùIwi¦7½ºÚbÔ;ÊÜÌÞÌ\Û§£êP[ûö(ÁøÃÙBJèÇ<IJÌÕIð\i×?¨Â¡HdSèήfÝü²¥~Ì~¬8Ô¿E:IQj4¾§piz½êi=}·Îft=}3+Fdb@wñ¡ÚÑ,Þº4ºZß·Q°¿·O¸JºOò/pÉ3¨¹sz×2f¦Y¶Ó´
ùó¦ºÔd}gÁá/ðDQEÂêä8|¾x¬£|{Djb»yª)DþDKt
ɹ¾H×3Ì~f§xæÑ¼*q*ñïP%xR3ð¥h;µÔ_,ò«Ö'FÄÚäYuÐ{$~Ä3Û¶ôT¯ VÜ-âòaÙ7føB$¦·/Ô-S:²v½ÄÛØ»ZÇsrÑAعhåßtA>i½#߸ªlÞ°æ*,¯F³p¯= aÍ3(ÿå-¹f¡&bÊkz¡Ë
æÿÀÿm¡z!>êÆf¯ÖP,p!6þfpõu̸عØK2¶ïAöF²ÄT|ZÓ¶Ä\ÌZôzHq¬ê"tBMA#UØ0eßjÁ½öOØ>%l Ná)ÖÏ=Mâ+$k }ÍÜÚr[í¹ ä²ë/ß
ÔPOþ³äàÑkñÆãËgòOî7Dú)LOÖ3FeÐDÖ!#Q¹5a,öÖ ßt>ä9)^ Ãì¥×Q¦Re!îb¹Ñ¶ãEnÈ;ñÄ¥Ì7DcàåpëÃâÚÞn>æøtK-©"W^fÇG©3Ö~ÉÄsÚ"«¬^?«Rgm¨ÿìݽ.®NþâE!Á.EMù&B$* Ð2Ô@Þ3л,ðDùaB±QxeLÅ3gIQF 3Ó¹ÔîÌQ½<ìW|ÕE®ì¸hlf%ö>bñs:ÚK¯¸ÎsD×å§óMÔ#ÿóØKO$=MRÃíor:+!óòâHH!«ÊÖÞvo|sè®§ é¿íñ~~«*wâxÞt¨¥{và}åÝÑR4_Hpà¶Pq§>µL,Ĩ=}ãökRVS´DòëwvÈ2cÒÉ3á±Qî1pG"= }²²%Q¡A äмÁàN?ë
ïR"k~qè먼îj©p)tç0Ø¡þðdvìRC.²ulê;P(ÒZI&ªPþ8rÓðHr(gq*'ë¶õ)r Ö+ØQ
Ø&¬sºkÉÔÖ»hÆjéý!¯ µ.øgÖ+¯><Fë^ñÂLÏ>6{SÄRÆ*[
ÝM³?¶i9_AìÐù©"¡?_3(æ(A:Ò á(-ý°,ý©õ þbÝWª.¦C°íbuUgQ-Nèûè<l!A¸mþC=MGì]Áü[¸¬eÕê;Ýà@vñpáéݯ uÚRÉûjôt^Æ ¬rT|NtiÈPqûxÓ!ºQ= в»1eFÎÀ9TÎSÆtÎÞÔïöë?öê=}c¨¡ü|+¯bç/ÞGÝ¡ä«çwZØñTlËøi¶X\>òÆÞCØ«ÛOêV¤ä¨ûër6Ò\¿/B×ÃN«Ö°Ð×{èþKlÓk![øûK|ÊXt:;YÄTþFî(ß½ª +¼RSD«¹Vúîú!÷¡Ôû¡3w]Ø{%q,§Ì Nv7¹Do¿HX·§¥vã°Ø§«Of0ìwƯÔ2DâOvôOÎ3VgtÔ4SÞ7{©ÙCSc¨ÌlOf#>B +©ªí??åM.íhâ=M-Y+9Ë= 3%«Õ°RµOö= Òã_rÖŪS¹Ø¤
Ò¨,¡Àle?¬à-ªö½ßíyPåHÑý¿T}· È~²?éùu»)£"_F
SVËó³"· \úEúÂ8÷Fln3_AÍí¨Õ¯nÐiÄÐ<òͫפÈÅt¨Ùç|tkM̼áõà
GöÞ9"ÄØSWJ·ÒUæTñ;ë0ÔrpXk£êg7H¥wipy¼à8*a5=}ÙÀê6DoUVýQö0cÔFaüP¾Åã5hDå£Ýà}âìÓ
ýõoñø¬º ÂøôræË*ziɨóÑ^<FÌä=}íRƨ
wN©¯Õ»>NÄIÛ¡öqD=MU³5ÓAàÌWc wóÒ¦FÅ¢¬N±HhLôÚèrÁäpÎÆï|¯V¨{*2KÍÊ¡ìGrÕI
rÕSµ5´½® }rëý|"kß,Ãê1ÖZµ§V³à|rÀRk\ÚÄ1k\¹óZ[4É÷wÎB̦<LJz#2Ë~z¾ü¼°årmÜÕt[½_?M©~°÷Ê3!9ÙµîglâÖñÙÉåV¥ûøäÐë= ^Ô/dxk0±:ÿ·6|Áöæ¹ïY«%«j¬V»9mÐIÄ0«|P{=MÄÆS«¤D°R˰oX|3·%"