From dd2756a6cb002a45abe00c1efca2aac2d9688f9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=9D=9A=E6=9E=9C?= <753610399@qq.com> Date: Fri, 17 Jan 2020 16:14:30 +0800 Subject: [PATCH] =?UTF-8?q?demo=E6=B7=BB=E5=8A=A0=E9=9F=B3=E9=A2=91?= =?UTF-8?q?=E5=8F=AF=E8=A7=86=E5=8C=96=E7=9B=B8=E5=85=B3=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 45 ++- assets/npm-home/README.md | 16 +- assets/npm-home/hash-history.txt | 8 +- .../test.extensions.visualization.js | 372 ++++++++++++++++++ assets/use_histogram.png | Bin 14094 -> 0 bytes assets/use_wave.gif | Bin 0 -> 302679 bytes assets/use_wave.png | Bin 8263 -> 0 bytes ...0\201\345\210\206\345\217\221Runtime.html" | 1 + dist/extensions/wavesurfer.view.js | 2 +- src/extensions/wavesurfer.view.js | 6 +- 10 files changed, 435 insertions(+), 15 deletions(-) create mode 100644 assets/runtime-codes/test.extensions.visualization.js delete mode 100644 assets/use_histogram.png create mode 100644 assets/use_wave.gif delete mode 100644 assets/use_wave.png diff --git a/README.md b/README.md index a984a38..7b99354 100644 --- a/README.md +++ b/README.md @@ -238,6 +238,7 @@ $.ajax({ 6. [【教程】实时多路音频混音](https://xiangyuecn.github.io/Recorder/assets/工具-代码运行和静态分发Runtime.html?jsname=teach.realtime.mix_multiple) 7. [【教程】变速变调音频转换](https://xiangyuecn.github.io/Recorder/assets/工具-代码运行和静态分发Runtime.html?jsname=teach.sonic.transform) 8. [【Demo库】PCM采样率提升](https://xiangyuecn.github.io/Recorder/assets/工具-代码运行和静态分发Runtime.html?jsname=lib.samplerate.raise) +9. [【测试】音频可视化相关扩展测试](https://xiangyuecn.github.io/Recorder/assets/工具-代码运行和静态分发Runtime.html?jsname=test.extensions.visualization) @@ -563,6 +564,11 @@ Recorder({type:"aac"}) # :open_book:扩展 在`src/extensions`目录内为扩展支持库,这些扩展库默认都没有合并到生成代码中,需单独引用(`dist`或`src`中的)才能使用。 +【附】部分扩展使用效果图: + +![](https://gitee.com/xiangyuecn/Recorder/raw/master/assets/use_wave.gif) + + ## `WaveView`扩展 [waveview.js](https://github.com/xiangyuecn/Recorder/blob/master/src/extensions/waveview.js),4kb大小源码,录音时动态显示波形,具体样子参考演示地址页面。此扩展参考[MCVoiceWave](https://github.com/HaloMartin/MCVoiceWave)库编写的,具体代码在`https://github.com/HaloMartin/MCVoiceWave/blob/f6dc28975fbe0f7fc6cc4dbc2e61b0aa5574e9bc/MCVoiceWave/MCVoiceWaveView.m`中。 @@ -581,7 +587,6 @@ rec.open(function(){ }); ``` -![](https://gitee.com/xiangyuecn/Recorder/raw/master/assets/use_wave.png) [](?RefEnd) ### 【构造】wave=Recorder.WaveView(set) @@ -611,12 +616,48 @@ set={ 输入音频数据,更新波形显示,这个方法调用的越快,波形越流畅。pcmData `[Int16,...]` 一维数组,为当前的录音数据片段,其他参数和`onProcess`回调相同。 +## `WaveSurferView`扩展 +[wavesurfer.view.js](https://github.com/xiangyuecn/Recorder/blob/master/src/extensions/wavesurfer.view.js),7kb大小源码,音频可视化波形显示,具体样子参考演示地址页面。 + +此扩展的使用方式和`WaveView`扩展完全相同,请参考上面的`WaveView`来使用;本扩展的波形绘制直接简单的使用PCM的采样数值大小来进行线条的绘制,同一段音频绘制出的波形和Audition内显示的波形外观上几乎没有差异。 + +### 【构造】surfer=Recorder.WaveSurferView(set) +构造函数,`set`参数为配置对象,默认配置值如下: +``` javascript +set={ + elem:"css selector" //自动显示到dom,并以此dom大小为显示大小 + //或者配置显示大小,手动把frequencyObj.elem显示到别的地方 + ,width:0 //显示宽度 + ,height:0 //显示高度 + + //以上配置二选一 + + scale:2 //缩放系数,应为正整数,使用2(3? no!)倍宽高进行绘制,避免移动端绘制模糊 + + ,fps:50 //绘制帧率,不可过高,50-60fps运动性质动画明显会流畅舒适,实际显示帧率达不到这个值也并无太大影响 + + ,duration:2500 //当前视图窗口内最大绘制的波形的持续时间,此处决定了移动速率 + ,direction:1 //波形前进方向,取值:1由左往右,-1由右往左 + ,position:0 //绘制位置,取值-1到1,-1为最底下,0为中间,1为最顶上,小数为百分比 + + ,centerHeight:1 //中线基础粗细,如果为0不绘制中线,position=±1时应当设为0 + + //波形颜色配置:[位置,css颜色,...] 位置: 取值0.0-1.0之间 + ,linear:[0,"rgba(0,187,17,1)",0.7,"rgba(255,215,0,1)",1,"rgba(255,102,0,1)"] + ,lineColor:"" //中线css颜色,留空取波形第一个渐变颜色 +} +``` + +### 【方法】surfer.input(pcmData,powerLevel,sampleRate) +输入音频数据,更新波形显示。pcmData `[Int16,...]` 一维数组,为当前的录音数据片段,其他参数和`onProcess`回调相同。 + + + ## `FrequencyHistogramView`扩展 [frequency.histogram.view.js](https://github.com/xiangyuecn/Recorder/blob/master/src/extensions/frequency.histogram.view.js) + [lib.fft.js](https://github.com/xiangyuecn/Recorder/blob/master/src/extensions/lib.fft.js),12kb大小源码,音频可视化频率直方图显示,具体样子参考演示地址页面。此扩展核心算法参考Java开源库[jmp123](https://sourceforge.net/projects/jmp123/files/)的代码编写的,`jmp123`版本`0.3`;直方图特意优化主要显示0-10khz语音部分,其他高频显示区域较小,不适合用来展示音乐频谱。 此扩展的使用方式和`WaveView`扩展完全相同,请参考上面的`WaveView`来使用;请注意:必须同时引入`lib.fft.js`才能正常工作。 -![](https://gitee.com/xiangyuecn/Recorder/raw/master/assets/use_histogram.png) ### 【构造】histogram=Recorder.FrequencyHistogramView(set) 构造函数,`set`参数为配置对象,默认配置值如下: diff --git a/assets/npm-home/README.md b/assets/npm-home/README.md index 1ed83d7..0d4f060 100644 --- a/assets/npm-home/README.md +++ b/assets/npm-home/README.md @@ -40,19 +40,25 @@ npm install recorder-core ## WaveView的调用方式 -直接通过Recorder.WaveView调用即可,录音时动态显示波形,详细的使用请参考下面详细的README。 +引入`src/extensions/waveview.js`,再通过Recorder.WaveView调用即可,录音时动态显示波形,详细的使用请参考下面详细的README。 @@Ref README.WaveView.Codes@@ +【附】部分扩展使用效果图: -## FrequencyHistogramView的调用方式 -直接通过Recorder.FrequencyHistogramView调用即可,音频可视化频率直方图显示,详细的使用请参考下面详细的README。 +![](https://gitee.com/xiangyuecn/Recorder/raw/master/assets/use_wave.gif) + + +## WaveSurferView的调用方式 +引入`src/extensions/wavesurfer.view.js`,再通过Recorder.WaveSurferView调用即可,录音时动态显示波形,详细的使用请参考下面详细的README。 -![](https://gitee.com/xiangyuecn/Recorder/raw/master/assets/use_histogram.png) + +## FrequencyHistogramView的调用方式 +引入`src/extensions/frequency.histogram.view.js`+`lib.fft.js`,再通过Recorder.FrequencyHistogramView调用即可,音频可视化频率直方图显示,详细的使用请参考下面详细的README。 ## Sonic的调用方式 -直接通过Recorder.Sonic调用即可,音频变速变调转换,详细的使用请参考下面详细的README。 +引入`src/extensions/sonic.js`,再通过Recorder.Sonic调用即可,音频变速变调转换,详细的使用请参考下面详细的README。 ## RecordApp的调用方式 diff --git a/assets/npm-home/hash-history.txt b/assets/npm-home/hash-history.txt index 9d79c3c..45dad32 100644 --- a/assets/npm-home/hash-history.txt +++ b/assets/npm-home/hash-history.txt @@ -1,4 +1,8 @@ [ + { + "sha1": "d494fe71ad5175c130c56b1ce09d4953b0fc045a", + "time": "2020-1-17 16:12:00" + }, { "sha1": "d7949810ec706e70159f0e09860b6f627197a29d", "time": "2020-1-16 16:19:04" @@ -14,9 +18,5 @@ { "sha1": "bad5a11c405b2766887f5a68bab7c0ce6ea14013", "time": "2020-1-14 17:40:50" - }, - { - "sha1": "e3d0df0e66aa924cf04a56dafc858c40c6054bf6", - "time": "2020-1-14 03:12:04" } ] \ No newline at end of file diff --git a/assets/runtime-codes/test.extensions.visualization.js b/assets/runtime-codes/test.extensions.visualization.js new file mode 100644 index 0000000..92cd99f --- /dev/null +++ b/assets/runtime-codes/test.extensions.visualization.js @@ -0,0 +1,372 @@ +/****************** +《【测试】音频可视化相关扩展测试》 +作者:高坚果 +时间:2020-1-17 11:59:47 + +本测试将测试Recorder所有音频可视化相关的扩展。 +******************/ +var waveConfigs={ + WaveView:[ + {testTitle:"颜色" + ,linear1:[0,"#0b1",1,"#0b1"] + ,linear2:[0,"#0b1",1,"#0b1"] + ,linearBg:[0,"gold",1,"#0b1"]} + ] + ,WaveSurferView:[ + {testTitle:"底部显示+慢速" + ,position:-1 + ,duration:10000 + ,linear:[0,"#666",1,"#666"]} + ,{testTitle:"由右到左+快速" + ,direction:-1 + ,duration:1000 + ,linear:[0,"#f00",1,"#f00"]} + ] + ,FrequencyHistogramView:[ + {testTitle:"中部显示" + ,lineCount:70 + ,position:0 + ,minHeight:1 + ,stripeEnable:false + ,linear:[0,"#06c",1,"#06c"]} + ,{testTitle:"顶部显示+粗大" + ,lineCount:15 + ,position:1 + ,lineWidth:999 + ,stripeEnable:false + ,linear:[0,"#ab00ff",1,"#ab00ff"]} + ] +}; +var waveStore={}; +var visualizationInput=function(buffers,powerLevel,duration,sampleRate){ + var buffer=buffers[buffers.length-1]; + for(var k in waveStore){ + var o=waveStore[k]; + if(o&&o.wave){ + (function(o){ + setTimeout(function(){ + o.wave.input(buffer,powerLevel,sampleRate); + }); + })(o); + }; + }; +}; +var visualizationCreate=function(){ + if(waveStore.width==ctrlSet.width&&waveStore.height==ctrlSet.height){ + //配置无变化 + return; + }; + waveStore={width:ctrlSet.width,height:ctrlSet.height}; + var box=$(".visualizationBox").html(""); + + for(var k in Recorder){ + var o=Recorder[k]; + if(!(/view/i.test(k)&&o&&o.prototype&&o.prototype.input)){ + continue; + }; + box.append('
f0sp?ng{v?NWSpd(88 zBbdHVn|zA@w|e%e&PCZj+WJq~Lf$uDB^V%Xp?zcRHu!Au!cJuv*EU<9t$*uZ-sKW; z^=C_3wlq<-v2^LD*0{H23ooOu%W|fPPGw#!vJzdKqbCtBA@K0ng1@Pp+XGT~NCZk{ z0FBBc@jg8Y0ZM5`SLG<=0To%tiXYo|5W0jtd`f72jlk&wxvPWX+k(#lvIZZFYN9`Q zZ_sR-{d`PI5>Z|SpY&Mi9EUEx_bpG)M1l1?x1%Lt;;wxj-}so}-s@2xG>Mz!%EA_X zIE3m1+p6O(0FT-5(Tg43RXVAn7C);J*6c>UB6Li}0$vpQ81`@y^}bT}lELa9G$b=D zN{~d3y@e#wn-6cs6L#>F&&-NL9!g@wRBobRumHi8ZH?eEKbzYb>~lk8#7{g+UH2&~ zdMTNk%Efi_!YlTj%TCu7RTtUcF)#BqVE2%-m7iP2TUrt zqr>VLU3~=gSgYg(ls~8kDy#kCI3WR(zDf2(KwIuwEoxbZr0~37^(7-^ZzcyA=6)9| zP`0bt>!;xU@p*=&qTeSUTQM8UFkbbFocW_3LO2h3 t4G~Dte@YeIj{+bE?s%A$FCy-O_%Yl6^SO{Wow&Bwt}xa$*&uJ zkv#ia>Cu|}ao{4K)6D(_hMPT#Vin#*?hb|pmL-ZvqxUK{#9W5)gjG-Y;o4bHY;{z! zGK @PzWMyu=h(<6 z+rn0CTJyfd$(1i@!{2C{{&Z+5-wY7FM$+Qv4Re01tqmkRT;z4#QdP;6|5N}4%VNF% zY=Fmjin1ziBC@>yHU`oWQD!}4YA}0nE^hR~jt!S!^|GQo>vlYwf|G)v@{{)labYq# z8q58#UNjH)Gi$w%w$2xIHw8cF>VMaI`COsu@dKI*=SVeAMUUDox2ln*CEvl+G5rxW zYECzwjhW-cm007zI^XY~T_m{xWrE!AA>UrOiaJApu>B zm^ClF40eNcCiO1)(rCk{MD_9>UmUzC#ltjv?lEq^Q0SXH%8OwvZ7dndIckq6Ax2AX zj8V;HZeGGAkN)xpXx~5TDs=d=)n>T!sN7-XL}$p)qG-cu;q%HxKSiHAq{*boVquoC z;ID1AS)S_dGDYc*$0Y5f^QXTz040M?_}772Ry39Ikv6Qu_Y)bBC}-t(&V(sEC&d1x zu^~Xg(y6)XGBKxlcP!V`JDeLbI&G4Cw`9B(uSu%}kTibZ_hTvOE)+p>r49M{3nDY> z>`iTBAnY*-NfsG&h5zcW4v!kK{oBS0ea1qnp*x~7j3kKt16dVOYf-SfpbNo?qSjs= zd%4wOv>35l(cgBuqyt&ESr{2sm*uY53FkAGHzY86RRyF?(medWel5Vj;e9pN@r)jy zdV~1Ah=5CU(vL2YOP~U2=Uxh^toL4ML@5LYQyQT+le9%Z2?v`4dm;LJ)UCQ{T_6X| zSspSE?;AsM)YzRy;KMJL?(@EI^u(S_5WC6)$fz qa&3q6t<=Vw_jHR_ zf5%kjPg3pG*4#1=M~Yl5a!{cqkzWg2N(iJ&ngmqFyENF()r6bB=hsmU{Uax~v>%DN zBCQ|}`Lc#$T(W2bhMk=YlYB -bJWLLj&;{x+%9=|(}oV+w%dP8vLgGFv&_7*@ JT?u{MdkuL0{yIisiJ`>xADipi zur;c5mlwCxPMTXnb$0a&1(g+7j@ekk9NTSb6J(!SMH7CpZ@enIqH=JzxWM9g^`j8W zw BB(kqeER<73wkra-)d#KZ4wJ)AdvN^HVx01owtwn=0; zkr^m#1u0<7moZC6T^aMNHG822$JyyJ?)(nE48kDCNK-2UIKD3#T}pP3+>}mARR)dS zZhu@e;h7q^HX~(ySE1wnK>hNQ`yh!95=|I| ;7%qdmJ%+=cl?5YSoq;&@PtH{rDM hvDI271L{PQvN ;mM+(Ejjq4*Vd@+LVeL59#jim^gHF3}w5;v9HNWM9L<)kg2 zy*8Kpt0!<@`9f2r#{F93p>UH4Qg7H1$eM%nvbUinzb~ut7%g&7X5>)SjLz79BGy z70upNsu^6$r7gYF!%eK0b`OrfT04mBhpD<9#%}h8A8y@z`jck%MGznvqkYeT#1Md> z9|<;x${ZG@=pz@l3hIn(X^f}V;YXIFymwr<+f#izcWtiPdz&F2sL9i%|2g;}{AK+E zsqZvR$cFpEOBJywUou{dTmN5FfAD1l0_Gv=xW=Yod(9CIt|by-;*EWow-KQ2)KlFz z &(J1cp8581XyT!l&w_C&d!Vpwja27TKF=$#;hhx?22X#= z1;UIIa!JK6Yu7(BD-6o=gWITnd#4N@Q6w3FD@4*X-GIx?^Rly%C63h;v}Adr#9A^t zu{(Lpg753?a)m|bE$%n0Fbxn!@Lhy^Zb)!^Cc} 9+jso z@%9XbKmPt|RWs!>MAt^667XmzYvQtEb#a=F{JVy-$QR(x9s;NSW5SP+sU0?v?1lH4tae?=j{^nx3FB{T+egMl(0?Ex7y?4{rg87~Uvr5Xj zUa|D-vSglG@P`#1UPH7BgB}T=Eh^YMj4rAvk)&cnpq()3I&tNce(v5S(fKPYrkxjq ze?EW9286>~o|F#S=$I$8>PHG+EJ)O1-0XND^4vc~@1?E3^|KV?@?kp?RpmN5ho{%{m9k4J@@?xS^0Z#v z3>-S6#;z|s@_PtJpApS{e~Dx}g$)ne4XGEzM*AE#;P3?o%p2g0?x*c(y^FIgaXv7D zGV=1|AUbV|eqp=_RuA6PJC3dMV5 ekq2d6S#)1*Qedmq8odxN>=sBHSMW44* z0j !-G`&wdoJ*8v+s>L8C7k3Pt9KuO*}LEp+m5dQoAL6*ZZ)wtwU4d08w zHBM~a=xg4q!_ifgAzcbzy{LbiGJ}wG8nmPWc{)n1lxi!#@Ea|YI$?8Z2Rws-9az+x zJ==S?#Sm3aU$E%BG?Zk};bk___XT2B;ZAca*V2*LXTEpQK#&sl*ouGWsR7{<-zGv- z Dt4^Bz_B_g-Nbz zJlXiL$0H(F*33g3WH!aMJZ)>0B&9F-N!-tlPOm?ikwx>SsAMRKFtL>dGEa|hIG8F_ zOZWNBVa|TV+0V1-O9wZ;O?+PomU!~$8^hD rl^&=FfSG4O*Ew uI7f~QwB9T&w-cZHdbGFlHMWuX zXaSTyTYoNZa>i0_*LBb9=)JIWi>8Q%Wr5;3Sa?9GJ5BIF<%?ZcHf5E!L)KQU!QYj9 zW~WGkxtyB4KYzTyXwk-4y5ZFoHGq~?f^8Ou=q>wErQ$?fU7O*pv-Lh(Kc{60u K6#qXhRn!GjKt2~Sx#-zamp^hn+D?b-uhZ$WjvrDl~42B8-_Q=~Kp;nRe42aS# z9I+B{*)e<<%5c#v(3ajl$e>p4cGY~n#!nNgy$iW%-Wp{c;I5@U?ccus%T@E%v4xIW z9X{Q#3BYWCDj&dfWEnR-Oe?s+Ja# k(6%U)L1Feu=Vu^ #3?ByW`~W1T?{I q*`_S&1_%yzG&d1VS&n71ZEL{kZ)pE9Jb z=IDw!*mg09i?Y%H#fM-;_@ 9EbagF zeEVHP4T)2WAAm%wL;A0_=2h1>y0 lAPZeZra z58<|`k+{3 &LxRNlP-;!|^Q>h)^+@_~5T^2)#N^j6*(@3=BMp}?s-N`9^5}2tvQM0f7WQPh zxb{5$Z5E{bzJhx%VkoBOd@eL1;u2Y2sjfjrXk}3(d7fn^v)R>?DDJ(~G hQx3s4c% zrdX&!R0Pa8jx6wh3h-mX#8U&)7_;OWB%N}nC=AhJ`2GMn0xF79lbGkTZ`iy2o+y}j zoJ2YG#u*nsDw}^iIE_4GAC&)0_i6rWc^v;NzmR=rpjM(k$^GJQ|v2%1D_6(Y>$N zwhOKpoNcKmo}AkD7`);?cepFVu;=G$(C}u4=EnAEuZXb!7t=fM#b_{LGQfrvUC2%a zgvkC0f$*QhE;ta=ot3is9K`Up051}7g_jwqXG2^fh*G{5eZV#+4J3O>fW8_M6ECF# z)e_aL xzf1LO z*_4X(xj_CBr_!!v3h^_c*^6x^X7^`I2H6msb3y@vc@;IG@A;B#DyDuc?>UYiD{RW+ zzVKdYEO^i7MpNCKR#bb!q;K|UnFq2l;I1o0z|K|>66fbv$nj4Ug=BzeoAgn~8^(W$ zAiguE3j<+n2w;RJ5y+y#V?NX3CFBG`rP~f*cJ!Jrdmf)wzQz+ 3!YutKi}RS2n~-{MQ&>aqg?pv5l){7>fmfU7{|Klxh{QW5-N##wwSC=ltC z+4~W2x_EPQTcKULx64wUw0LD~{KbmSYSY6Km89abOmI0aja20W HM z-x>U}=Zlq#yG^@&(f(!FnB{wYtXBf#Rg>0L=}8B1O5`6ObHp}1Bw@LdBS| !=a2!>C(3{`BUxPdjkH2=75E`>W)wi-U8_F`ZKqL!1qH!R7e-|0bJW~6%B)x# z7DR&gAcM}v2#kKV2emOg;1dnl(nOSMl6=HV|LB+873r1%P2mxP5Aw3>BWx64=MAlM zfuhT$Q-|Wk7|E*-%2Nsylket^u=P%iu#LFLw!eI0~G5iuGQ*3q@n$;^sB0GnXjJ z$M=*OV)Y6X9V?FQP4CMRsn_QC?bN)z`e3!Ac##XO*!Cs)*ByJ6z%7WY02PSMzLxMC z3|jhaW)se-2qH0bb?%IGpqdM$-a_LFvI_y1@-3+24u^^UP=J*HtUGgX0OD1ht`=iw znLv$`qG|2 ie8#ta zb}c0=Q!+}##bcR4pGfTHLv#=c0b>BcTNI #s)Bq~6Q@gZ$b-4EOKr>6)M| zNNA|c(YpO=xv!sbS$k6XL+MLTw%ebijHi(72_DAWTGw+?$*TCR=uQxGX%uoIz}=i2 zZlAqHLy(K$B0ndIDN$GdHL-i^m3`FRf=M4-^`=jSHR_ubso-)UMd z=8q&-SKB^yqCDGNl&!CR+r!M-XGIo$_jUJ-kKAsgpGd_I_#ppX1%=d-fSv<1m0IB? zp-*Are1XISA2QHGBuV61(P*$F{v{`f8FB`3Ko`N~Yz`j#Pyt~@j1iPO52{gcmM8c| z=x%w`AGvokA>D2zGoQ`@v*70~nX$c!#qa|i%G~(}>`39OL`Y!=BVBgc46k1)*)wog z HZd2&&tUeTGzr` zza>nJ<;iedn|b6SkBC8G20u#WZd~~u9sL=R8-9zNMF}H&nF{xilZz1 4z$P?jAFob`8W)e2FNF!5};BZWs+w@iE2Xjf =EjuO9@W!f{hNKNGodrDjdck!=mDwu%5FTe zJf$Z*yLUIr(iY?lJ|e@!AuSNt>+ ~Emt3(*#5kdURzX!U3bz}t4@6iQ Q-LQ3fayJ^h z?(Wtj$}K0y-7x^=<|06tpB3>>0A-wuI zj6r2J6P(3_e@?|c<= WbZ6SLOsB8EV9hXdqD3` z3}Hdd%)XWPO{T)%lfnV7ihrxmMOb<7aSH!1mgl@Sf?wj3 V)#yGR%&|KNN-ib49 )4-|Z$TX;`*p?Ryu q}%3BJ+#X?&CQK$vY*L>$yq4d0SF|ZJnU}dVc$$icufLq*VA%>m?eOjEFbwe KSri>vex~F{n#@MLvUj6A(&FDK->#>?W`_c(%0kxug^)+`u z!A9fbu`l`jUF!>h0hHEbO7qNhM|(dzZXG(yPMt#v@AR^z|H)g}8&R?;7#khd3l3 z6eA-6vm5;5(Z(YA7RX>B$uO$L&qqA2gC@XtJ^ X!6S5A9jx7qNB-7 zw8${$b{kWs5fN5=$u?QPmjGE+G7l2GKx)r|*K5GHhBP6D74bsypoaDFPCWrV*HB#d z_eIxYL9RJi-|7Ha++c(Xe%xJi%LpuaOMwGtB+gafb*CJG q|0(T z(P70iLo}e@in(DY98tCtfozyAt9@0+JF1Uw-#Nciw7NtIZ&~sk+Rl}%cb)Bg($;zU ziNU9}>#TKC!o#@f7aC5}6CujorGxd;lnqjqaD~~T_|#t|nKuvU5AaZ6@ELUyc$ocv zdK*UJQ(3*;@dv0!SR9R~UiUgG!-$}CApU)T0jZ%o6QtWhg=@1fv$k;+obGb`T)FrX znZ-6YnZPt#TVGm1s9LbD`uc2BHjuLVR|CP~)nY}=Nw7+enMMh1lX=o7CdRoJh4of_ zTOa-bhe$F{M$L&m33h{GP&il4xhy eK7Z4W&joo4VDG>S4g*<)FyA^nrtoQ` z&R0-#N%(T6BvJp2Q?LP0#YNpXooJ8d>{BT`LsuMAgR7?oZCw&4m!+q6&Tj MKk!9 zeT48uOpLLJ1?2ZbpO|4jqFi2NsY@qh_74lLc3K=m3WU#I#IPm36@)+6Z!AL;)4U>$ z8wYKi JyLZZ9-JVS1U&YYS(hkqx$;2BWnMhg1=v`enwyq_`(+d zp=)Ld3iM;a=r6%Adl1L=uUb8X6WOpg@#P~Cj4PX>xMTqzBsu7E6$qiYg1w1yErA&t zbN>-M3}P&ZGAaPR1mlID6DvR&Lpwbu#6&KkT7OOvbe~Z0@cYxMCk^%YfW+F{FGZlO z<`7u8K>wz$A`Vxq%>|neS_22b!Hm hL=eQN6X6@2FDy`uIxs{2E9KmPw;t~c z0)N2o$MC=AFop$MeT{!d1BIy{fbu_12+>7x)Rp>r=l};p3NG0cfO^sP^gI2KQOa)l z@yVdt;SGY)tHjU4kQToYlBKUulKFxNe8~SgD{SEb@my&E3w~%5AjHOm;|NA12`OUC z1mI_8l>a1GN{q>#>BpNz#`NN0$3rWoh)bsdLUg#4p^t|97T^mBE~SS$ICWVYaA%DX z^zpw7IBuxCgd+qAlZbIE1omQCK`e+V2jjFj%s*7$K_&$ts~^m)l;LqDL*apys57sU zp2Mdg6Yx$9S%^Z6TmMsg)<;0db`1#i%v`f;f%G4m*R;!t_sw=c>~0T&v$H@Nj?` zRbv{x!2T%Ydf}@*0v8eo8oI+0fm4CpzoL~Di-*^GSOGI4^RILK@*A%id=??%0}Obr zeE@#%k@&0FjDgS 1wfj|*GIAPfAe zo-Km}((P4(kLTtjcZ;B;5IbooBfFdoCrQSRl`2ypa{7-OFZew {a+6u`=;EJnVOK&fX8|~i1$YZ<6)=}uqH&*G7V#WmNT3c!5Jxdb;luP9 z|6?{Q&K$B3# ?sVi%Pd4}&L}rGkgeU)IL_5UDK{2VI_)3Q zgLQ IH z!{4{Sj@x&KgQJ1s)Fbea5U$mZ1e}P{{QzYWkAZ`5MPM9o;)cW-My}FggFs&*5Fx-l z_|Xs!n6JRYevB8%_E`Z11!8kK0u=FrYHNZjZsS|Cgao?ewZP|xiy|_n#qu9GG#Sy` z7r|e_3*eit2~go=r^EK?z#N2gUu!^rax~xs9xdOg=1wR|weM4Kzbuf2zWrqHLE#ZP z_=LjVx&=}6@L^npFt+7@y%6zG8%_iTv!a+Nw8u&Y$YaH^r~;e6^5}kMJZr1Ws5yzo zBMJ|3jLYXhb~^m1{cow~GNDmFq^=l&E mJ2gCMg}1K=&6jG-h4N-E2HmEfivWxX>NqAD{A)!6#f`d zLrdSkK^vn9Z4Fyt@TXU-aIGY=!q~|P5w7LFVp#Qqz{{oOO!yG`_B!gpJxGn6w%<-{ ztPwsU@DStbK=GMk;@oxaqeF9H<5#0eu)aXX5DVQ|E8TniF4rrBQZ|YuUQ`D9(uT5- zz9pFj$1XXN=zf6tXk&EL3_CNE;OhxO5e5H=Rstygm-Lo z`70)-6CZ~51|K1$GfDe1iN{|%T&!XF9Mce5cRQu|F3XyW|0nrdrPVwm8T3N5&eNYI z1D*6bGc72293TD__A<`gNzg5+Xig6$R?vxLt_N=iY@gOMmUb@Dtj*Kh;~i5Qv_pT^ z6l$cfixH}>RUnhp3gM bsWM4U`p{FhZ=?)HKRsN6&0UT3 zX#0cWpMT_g%<}VdNQRElXSZQ7J%3_5yX;{496y3FQPJ7~v5%p)O{AlR7?DBs60FhC4LU!D z-}I?vCM9!W<_!cpYIKh-#@RN>-qY_-wRqN+`uA>OS&Vzr_ZLx&qQjR0I*HyWU}8m9 z=<9Cx((JZ6Q_CLxefYM| G$)exu?M)+J?z8NBc*lg#^Un{Avjo R@c(lIdRj)B#p>AS{}0Y#H^cw{ diff --git a/assets/use_wave.gif b/assets/use_wave.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdd5a9c2082fa2130fcd61e7cabecb25f9afd6f0 GIT binary patch literal 302679 zcmZ77byO5z+%WLjfL&mLrMpAAB?Xp78l}4gL?on?TskELDe)&NuqfRPOLs{tC=G%j zB@O%Xob#UZzUP^9=G?h=?)Ti8JKuli&U`c;s!Pk*i-GTh0sw&R0tyfUcO{NUPtEAD zijskvn2-nrbk`(sw*&vv4Rd>YJ3KsGN_KPC;Oy)SZehHIfTL ~EF WP72E~9e)GF_B;17Xm&9GKx`}k^v42R z?Tnej^Z=kAJxGtyzbi50lXPZ140nf-ORp wUyB*y~ z(vR(L=(|b(`Pya7=WgU!eaz8zN-PkID=jUYzU}M1>5tXNZEZE}HZ5#l9sj+EFR~`p1RFlevQ$O?OV7onRL$1&c=xd;~p8}yuAjRuZxFnwtnB%a^Ge;pKsLS zaOg1ghO4ROYnu;On9Z;A#|xpM7tzr%6%~~p$(OI^J^ri(yk5>}S-aIMzuMj@9N4@a z-6{WZaGPg+*xw)PA9FEwIQ6^lcK!PeXOGO_my7xN`L?|t++sX#Vj{->;@9a~w%uOM z#9zK%C5ZtIlcKBYr5AafJ54P&IBbXi_h_AQyP3Wl97?f!zjto#Rwimjw) @7c6>S=8>{bA zbEO{}`(o$@_owaju%+bf<(GM@je}P4F5dr^Uz_(_Hx^uJ4ygfmm#ZI}w{lZHy5A6a zu8+Yi|83F-^!?H=vwbd(7I3(qIr07JtXR(2m`i;iHaGsVpym25eG;m#6#DL)HC!7F zE4^*LPMlO-|2L2Q<<*bdio{&u+9ak9N3-8v_Q%G?Vz!FnE@SV4V*yMoaQrzPQybfl z!4wr
eeO?TRY_ocSY0rf&hz-I)nIkuaF&SUP~O9uqS1HK zK0AwpHJI@as7OL4`s!{pzG^z3^-%4X#}VW@2&~8iC>F%Phmg=RcAWkUEz_ftWAB`* zah>{VE%zcK4)g?1nHH55fvVEH-yHqS#KRg;KdxrdX{@yGR##F*4xok107EJtcLDSK z$ 3UyZ5)3BXx32I(@8&T@Au4; 0@{?em|iX0+x=(!!z({KC`4&{HBsc}$;`dOI!R^Dg1Q(cXIh21kB${f&L87C z)8d$ntwv{1cCQJj*U}BtU%fGFlfW1| sbA;6di6FPnxn3t-1gAbz>y>F zlbPd1oIy^8@9a|-b%Hn4ORwnnd-DxHS7pvSq<#@cW~PumoH1=I^eKFimqBGL#$D;Z zRhaFZo9Yq4HISe7S#;p{$4B<}Xx)8cvhP`g+Nl`b8=vC%c1r_7?{B%3c789+E+-3| zGcNtUWtyBo;#6R_et1DsHX^zEr)EN(f3J4h |9<0o=Cl2# zrw=ET6SwQ-roI{}Eh9)w`%p+|#7A`+_ ^(l5QGwi ztO&OjWu JFLU@algm`izE5F1wKrJ;4SWCjD1j _`C1= z0XfO)I+6)~@7O1k2s+8G`cjF9Bq|7{1k|P5pD*`|$sv#r6D>YUB=cCI2E_Jb6{z*Q z89&a9)6#=)?g3EGr>~f{ONJo21}gVx?OsFZZ*Ot%pLuiTJ4wW`$bG*F3%32j+2>L} z$$I)WW$RHMqK!0oMIXa6pr`*KW}1J 4AC6EI_qYo(SM$437Ajvtny+=7|+ z0`_!^I(^L(1W8*AdL#KIlP0@ &2?F&4z6LPWH^8 z%6{nSVX{w>BOM-r<^%FKtYPl9>_mh8DkM&6Baxh}Tno+ekKXuYMLBRYxIEMl6HC?p z B0o8iZ~p` 20IBDUub8J zKFVxf+z@ Zr^|6C>GtM<0e^?Ic{YpL6)ui)Z{VilDnxil?*K_DxBCI4Ms}W z=wc9TL|(`!`WWok(+CPd1E5E=S`-&6 11;9X8;bR-#`}me>?ZgQOvW}(7m|f+GwFFvraSxQ z34(fLML^$D2qkDc2m0=-@;!Qma1i9#BVa!`_*Nu@g)o}|I`1xFEUf>E1VIrdx_o4; zjY{-B%e>qoY_IM9pos}IODrgWD3${yW)&)49{) -$#PR_FoNqsHgL}dUbm8b)rqoC(JVo}&jfXEE4_TX6{d7k |ET(g7qslk{2B zn4q$+A2LQHRjGpg_pTZ=JdT1BMB4Q7i%S1)gyeN6so6k;@^orcwt@s6S88eS)>Syd z?6k0{5>IW~F7dDWberf~Jmxpcu?EF#EoOU~ZVLdMUpl)^?`7FDOYIeS|7j^c7n~u2 zEt(|uK7-!GGcQo82|0|0Pz>l*Owpc;;RFaZ(fdAZhEeoC&ikZ=l%b`GORrsN*cbnG zvp9J#;A~E-n>3Yq2-)E((#8 4fVf_OHw -|u1XnLZL@HNFSMDFD(Hx**JoN*}8x_}_ z@84iOQbTM5b>#u0yEczs4WIW$C|52!8P|M=@K&M-t@dn;TkNp+uo0{XIkG7sVZdXc zzJ6&r&Lijt*^jX(2C=kwnRoBT%HIphenh#p+}a^E=Rqu+qc9Ck$i$=NJ<{(tmK4X9 zWpR@GpNQT7V%y6E`d%IdUxKX38ssWQh`V2VDtQy0chU5T#7IfnL?;J5SflG`6z0)8 ze3E@l^#u1Ie8^NUGP7lI<7Z(f3t}?HnL!SZo<|9va$?uoB_B%PSn-u8H3D&Ry{-B8 zU#8=Ce0vI2q=aj|ig){QK`aWS*nl$X4RU_hB0=*U-on;*`y%sKEs3js%lFC97^>P3 zJg*eFMT)dIXY>z(9rfJ~+~}m@nk8W;s;lFs&7_OswgIFl^!XzaKkD9M(|`Cv$kYE! z#3(yyej+0`rT!j{1+^0v!$a8A^#i|Ud2bg>)x%zRoRqZuxAj0@c3k`b&C!AdSB>BQ zWBWI7X*ci;8zx_Aox1?F3!fDZLE~F^{ 5iv;fHPi@gp>5fB5F= zS49hs0r(g&g!4!CH%he+YkATknh&t@trt_dtFDv{M3c)gNfp``gEf9-P5?n` pQ?wgbsx0P2_FwAtZwW?*WO5Z&k?dfEtf=?I!)kPVF? zQ9g*XF(Ts$sA4m`SR=&6|M7w|-nxkgi6q`*5f`cX=cB1`Pgv**%)?~D<+j0O3kvs` zK)A5t>B3z{mo41^OED2oO{~XpR #VxOcU#DYLINqQ|<-?kCX;KO&p&Fq?9!-G8 k~0nRtfn2$cX>7?#kE)xzAs%$L 8k#Xto363|!6K5_b~}0! zAQ2OZxjuyyvZ9}!zg`|7N=4%L%{w<{Sh*nyOO|cP%z%nMKVdGSQZGA58eoTgG>D1# zG!RdJkepQ)n5G#)mk$~)atlB~;_~s|Jt3PldC2UY*mMqV<%wFFi*i9Fx#uGZMBriv z7RKA5V{j{HG&Ci^OCO2fZTx!1jAS{VI2lIp9ZTHmg=d-?BVnHY6gNO5i^3=RLiTYJ zS-|ad4o@i#fQ14uLNdatO0&c#AW(dG+Ihx**&u2!^C|#eyUA_98Dy0M#*^`Vi6vB+ zNT-`j&6XfXi4e=a1PNCr{t8HoUxw$TrjbsX$gx6R4#Jo<~4?Nc&&IUEb)U@U7kg zVg@9q6L_Y}(WZ8!iLcUA>2fa5Acaq~+0uXrG+rn=PKDrcwOxXn`g265jm~caqUDVA z?A)(SxnG}x-ohV0M5O>I82=MzF}UH&Wtihra_8UDZB5AC0%N*P{KJ^6K3<3u+VoA9 zi9w}R;quGmtk(o-Kp{Y~QJI}^k-hLRy%iuSMCI@urqkon0AGXuJ`I|eOymgN4=??a zi=qk9tS8)(K@$Fh?Z_CDs~Os%GgizKwX4$lzGU_DLJHB)LW6uU;Jtoo{>#C1(nAL) zG_=p0aL_zifbBmS5bU9dZ`rKdEsxDZJ7bdYoDX#`?9gy8th3PJJ4^<(0XB_ACZ8xb zU)(Lv$?l_0_(wT1!iOlQJ-8v2TBdU6r?MXEAvOE}nS6@eJmp+U*&zx70Ji(`L(duP z9stvorBrQ}u%xHpFrn2aq+BO}IcXL7rWR^X77BhY`axbavHoGeH@VhH-~Fqg$5&mi z9o>-=tye?3nS&VLA? ;?-%)Iw!_k z_Dh;9CU2-X!%gsGpwMS6!OR4qLJOfUe1aIQuh~NiWo|+xvO+b4f>mF?O7*HYH #rdbb`L@n{3&%McHg%*?ex<_vW(2?`1zP z%a-ZOR|Cn`t0ZYU+1GN*+u5iZ*{BJR89iz^cGr-c4&?+NnV{Zu6yNxFa?8(i85EBB z EWcecsH^l2|%G zMmMs;SaBq4_p$otij-#BJ&xmQ2eKM-F!+8D=M9BGP@1ICO0C5w?q*Q!i{l!t7BMwB z-8~S^0f_!s6!Z_o_=cV89S4 x_u2>#oMqPksmBL^;ucU)9B6?*F tc@x8w0J!PwM5uD2|jFibACiK-*rt $Ro*j)nc)XG{26Oz7qkG9LV mk2o-ZAC9617n1Ep5E}J+Jb7Q5@6G+2u_b|=mfQ_So zKbgen5Am8(=8PmHi93>yQ!IyZknC{qL#uS}pML!#F;Q`Gr*DI7k@Dh;q9F+8euUt7 zFw);$^w%0Tw)6qjVe_LuDxXS+L_ZDqr9CjD7?*^I?ubEk_{ZR&hCSArzZ`rt;zL4@ zhV&nc)&3aGcfTL#$l`BB)%i#8YH|EpNp$>JIfJ5sw`cMskWZtMsJs%7VoyejpGjC* ze6V#SbEPW7O7aq+JQ|Ed;Fu)X_wLuO4U-~7@RwLUr$!}pq%wS@UZvj;PNzQ|X 5ORD=KZ% P6FYBa z7)BZXg|o37&ls*MAy{Ri9?8@kH|EsHykApl2PtbaL3Z6Menl#u5H`6pK}a}cXI19^ zbq-JdnCep+ht-VvR1e>vXHAm6JwC?LP7JpG8GbW5WpE@bX9=kmpRVg3YKT;6evBOW zQ90cu)9x-|nFz{3h^9skwJlM#BSc{*9Efl8WN6`frUgbOs*Lx{eDagS?v#v?a_SjU zl&OOhSW@T5-&!LE{==2d04iO>&%vWNtYe>rCcD2+M~=NuSNfh#lM0z1uNkam7i|>) zH5z {y-RoBF?_Y72!MGXUdZaW%Q$I3CL*@=*)UFDV0(v@TR#l@Qi7|Bo>D;NxE z&>CBxT3IKqMiEa7ud%6;t140VfRbA{7>ri9ndVRA`5o7&Y0--lUMi$MoOnX(+}2|P zqu*4=1{H;>=y42OnSvsg?-#Jj1CND7Ov*PPlLOqG+?r|IeyhqN8H!@-ToOi9lF%Q2 zM^ubMMCKiYw?;aiRQ(b?7^(X+?krb9Ao?KWiiy>W^t5`W^NO{xjVeiD$ Q=Dx-qI0Kes@_&vt{X`8*-+tR+=z3=UN&m}Y#Z}*m&_xlqxS8et;$M#~N zU*9)>DXHBLbklwFeSb&cZwlex|J?rm3Dr+(#+;S^oii#Kuhs VS?&l#hOXI$Cl# z((;CIrXJ?vF87%`4zCp`Ig!U~6^D0Ax`$)O^4^5dv}3WbV~M}Vk|}@XKZ2nj!8#qs z;^PPE!vBt#DfNYsdbTH8;}nSim%zB7kSB#|D$-FAscLY_OM3D^39zX+h1vry3kNcX zAOfW`2*}*R_E@3wRR4{U*WY&po)rFJ$VgJ)CF#G%9TdSV9HA^{g;5k;`2Ydi1;jr5 zRmw@wuTw+ZDWnss#&;$TIt1Haz{0^9ikFyQWGksf9u*Xcq#Un>k@%?)qDcro%ehDz zD3BGI9tXx#(odI0+90o4(m gEPPm7_&v{vR*ZiUWyrlxd31VeKU_! zMDnEGED0kQNy!%~C~e2dDsb#PcsG#F+i=uX9`1SucRp7Ex?9LU{eXj{`JCI{-jE{c z0R*Sn#IjNp-u(it`H2;kI5IMPX-&gbwIn(Ma@PFGHH}m@CJO;gv5%k(c_82FDK>vN zll{q9fw_3WU_xyI72_&LqHa931f0<#W7z;usmgP7qTI%QOp19>C|l)VTnb1#Z+xF& z)dTEoKS@kPacM^=*?s!=efGJs48#X8;7uDEN~0EddC0!~&W6Yn2F3@>{vz&2Ll`7= z4DvLE6+!1BBXBhR7aMY-7}uudLTyu-#6{WfC%Ti6pn)bLyNBA %MRH?NLLQCRzSvVZ `YMui2yg6YbGHCM=G7a6#s|F(DOei9_)+fyQB z0S|Ll8;LD9%sW9?VZ?JUz6eEXmLBw^%l Pk-d(#!|l>Vx#TJFVeGNA__P zIx?N~iqiuTRO-R!Z^#%w^h_#IQtY^XmOnlbFHIP6>k^ UmPV|0J dejt;FWpzfbpI@JvKh+M&v~aB|^ItIRMD )#6zXkrGv-0k^>;Jt=M*r!lkw zV!o_Y;YIedc&_XLHhBDu0~pOsIL4M5@s|*cX1$D~b$pA0ra8_9=CdQSHc~la6^uSb z5U%RoHkL9H;tQ=TfeAh>E4?#gPkqNvvRYo9yZw2U>qTn!DlW>>DPkhL#=jgWZ#lhu zR@qG* g7()VLU|KCprt`9is;DfdXy&uu_ z6sE!6eGCDMdv7+G2YwN7^_O{ciO(@|b;$h*{)?5O3Gp#}c0Xi+^Nl7|irHUHu*u7; zw)(*r&)S^VW; z{R!UQ$bEGX9d>0qbW?XNF`{;MvCNfgK+C1d;&0(F$JZ{sRxN!>>qPtTc4D2{Q0obw zj9x(mAkH_C eGJg-KYO4 ZLw_?OaBo4fK@lL*e*IEG&&>wbCTe1_ADgF=a2yRr#AFL{=zZy&b@1I>b z>)-hC-~vaM-%)SUt`AAkfL)>| TGf{ZrN3d$k#Z6GReCD9hnLE9zL2algjbfCpiWQRZC=1il5KLH$beC+JuxrdK~ z@WHv$My{C~4BVIBnsR4biws2B284e!2`?S=Nny!IfKyk-_24+qaIa*&m#Y+G2rdzN zWP(95JMtrCBrk#rZcNMfHVDj@*=T-`Ui>nXNS;$N>eD@l+R3D%jGIuGDtt=)1^Z`8 zJYEAfEwyy9DU1NLkWG+7c|QJ8!$B=u(}{tS9-&bIxvGGcnjwJ}fcDB@h3Ij?3IEfY z377ub{wiBl@e}hd_xh<`;a*^IdOH=ZA(-j3uVFfu9iD_N;UR03kw*s+qip=vAQ> zKH6e-*snJ8IoC5;OId~=l}K*`;hi2U1sMK2i0p6O<=eqW@2%gWHQ_uP8d zVlg ;G9e+#?|6s$z?ovvq9G!?)pz8f;+7@0@1< zl*^_6Y5v#xPr%c=qeYlqg0ln4))l(@E^WEFP=fJrj)7a%?rV?KXHd~-m~qfA`>*+| ze5sX@qFr_s?$Jc>&Bq_45tMkpD7vZf_Z^>`uY?<9_t4OZn$|1Zk%pajOA>g?S+=fL zDbHtOc;Ez@=(V`TMm~6qcdVn8<7*_2RoU^TEH%8;nu2|%U%x)pck;@C&V_D}?$zIm z>0wJDvz(!*8E Ch3~-@k0ZYKIjVNN<*QW=&$}PPxd>epe2>h`Y3hDlPW0^c1(!Ede zpx3eOG~^4@k=K;}nk~s%qo@69wrB8`oZ|jh&!5M}Vb|-&zKcMC&A$?tkX>tB;C#Q$ zX$>Z1?|E3z;@0iI=PbC8zahAwWmv~5*JQ}y>#*SUd$t!tQXv7+xZrIK+sk{Nq5sOl zLjJheUj5h#J!`{-9K_mQuiXo~7!3 *ZEue;VK;kWVb@!>xE~+T zaC}twk2e6tJeqJ`5pvA~TSkM-uy~B&P}dR?S^&lw2W3R#0|1B-KzPO7zQaC dyx!v{K{NG#Gwi9Lgn zzO{@txRcHZOOym>JxM2AygQ5K7EtDwQ0A6^Gebe9%V=^az+i>tL#QBVJCQnFT+^tC zI4lk?Lz#ZP6GYn;Zl^+!1QoSXp;7G)m+s=|K~dOY@dr@&c_?Zll?YZ9aRHRLKqROX zt$czK=Y-*EP=ItN8?+M)MGGbYx|~XSC*640UAlSQ(gG;Zbr-*m+PiI)h aaU@T)7=uSSPn{6Q6qJlsBUURr@26{7H6j^ zCrZ}6JDgSt`BDx4kD4_jT>3;wf>F%{(F-3y0i{@BMkOXAwE$?mc`Hi#1PjklX6D3F zK(UBYHHSr%e=zoO5}L5ISJ+8~B`FrF*`rt5OYN@YG@=~+pvOKKOPGhkNw;Eyb-Ixc zlz5>4^SNsD1Ep6I8VphDc#FLPe|pGEQQp%ihDDT8D;8eb6;S#xC9YquwbK t6$^}Rk(je-w6y;d%m z9@5e2GBg^5^Ykm}Xwo 7QR|C@mYL3A zL~%b SVCmN{gUJt39JHZsZ}pl}0&2`}uW`u9H@afKshHmQ@1Owg{*% z0@}-fOrG{^a9p#*uso+u$%vLt)JSOXU?g(n?SsL{Mh%JlQCw-1mWh)RxL}AmZ @@Oh~@P|qf(TM0k(0mr@sJ&cMT=MqPzb oN{_cd)nX+kT?DWbM&0JB4{?lY&Q@ca zwYppggCuuN-Upq|zC#2~>K0MsYy$m+AqINWBjkR4$x*sY_cdD9wWL+m$X Z>J?S*C8RF> zHhEx(Dl^jGE7vX~^vj!=itBB>HZsyRHnui4d2VbPVr=$$CbqGUI0|sVf*vPLo0KX$ zLqUf `lgCf|w4VCTKHk%^ZtHu_ zW#XvTlHvpqqR|%50iV%6z9=BK2TP5NejIJ2o1u}^Gw|G6(MvGSyeFDk6YzSE<{0Qv zLCjw}qW#LcLiXmuxaK1Ov+x d5*de-578;R?%pn;12eRx7ykA&_dZ<5jT zCmmeR2Z%CEQ{SRP_W%Go!Xjvv(_@I3HjaF<0QE8#u`)@+izmTG+wjb$aLtjm%?~on zy;#Dx6PN@sb<-O})7qi+u`_9c-@U9AKfPD_yf^q{LN?M)SD54C+OrnH2rpzSl;(v?%l4fI*;T#N=N6) z{f2B_&Iv~?Jn}WMH&(3iGlyY~ P(yf=O&gC9wBMiiF6<0{*E&IAZ+dPS zlo<*Dan;C-x`nAd)AYjevgdQWMrOFLz3>^oj$uKq(V3ZolcmPDKZ1-+BM*Lri&zUz zPk&xBM*vn&26|@qtY6-A(x3N?6fSM{&guzvq{~lo^#aperk`}@{=HSM;+h-LwK-w1 z@p?OVtZTb~hdQ0HJ>xPvzgaSq7 r3J+< z`^}Zy@914xYAZ9J_FI@;`gQ(Zg@w~%`o4Ki0r0Bs7k84`BHqeA)yl7#1;Rc%vVw>B zFRcu*fG1Ta@%4P2r3Ha+EIzG0147lE2lamRCtVMSaCYH{c zyROBQZ4>p zzv;G(*Sa=~jwz-37){=fxLyaGU^3`*&tVL@CfsgM*b^=`F$1=-PB@9`;gZ3hj}W3B zC-Aj_VI2w3_ ura}#L@6PO;>mtMk_PB zzQumB6?^NNM)EW==66o!?}&EvYrXBH&FwtN?f0|4{}Xb3XW|-P^!pt(!C<;}Cbx1H z{_juBZfHrjPocl_Nwz )-Hi+Q(d ze x2)c+DRUR|AGmewS=)d34eG=pB$I_Eokht{>-~4?g?5_zwtHq>lS19zC_Ekb z4_sjKy9x1!lJQTjkb9Sc`&Se9acB35P1k;ZOox#EumWmC!EJQRee86*ck}mn%=5&U zKLhPtHTdqe^@G#@x#7C^_eTBq=JDN<{=;t*@)*o~HuU*Vt&sfP`)slQ?u^Oa7|HXM zde=DAe%M2|rLnzSUysUUkDs^C(?a)lHn(^Cw%3d9!_7S5=h3qWUg$hz(I0sbx_^1Q z|2y;f&Ft^v`u#tlUo7AU7HITYJ0VmWh(JZK6uZ}XJU?`P{_DS|M}2N5q3}P+4*(i3 zu hTvGkP5*aAQb_*;;23DL%7Bv z1*sPq><2U$dWhvjkkM@~T7$w3^9)uk+!qD=pQRU|#&PoNvtR2Y@M|vqwbzM%xFozFf zeIGP *XBB6WuFw!qsQYlo^NvGX*h{-Je-9jpN6{Y{0GD8i^M%Fx zV0>`AVP`1VQ^AUJ9y|Z4 2nTwo73CDTq!y|>82h2~~L*pj>|7ESdjIs+Xn(GLY@_Xxf z@c{FRp&^px{8WPF6taBrHsI9<(xAwfFW+x9#5Ej!wt>{y2Gz4j7kEB<9e{l10t)mD zY_1408wfH>Mc*V|dbqrLn-z$~U3S2(!d?BUVTaj@*B@A}`e>?Z!j6?_2vmfh4klj> z*n>u0!qbJ}ZNGvlu>Y(&6gn`0Wi-K^Qa9Lfp9pER7w*D@G;nS%u#YCFz>)8B>?JPi zTQJ*la0)WSnkIhq?4}U|pT-5v+`FC %4v!GU%I;CqT~ z1DK=1{*J%&w__dfqYv@N!l4_sHyiq)5&>cBrWfW0&~27r&6HOqrmrIH@E^I}^uyo) z7)H)nysgn0MM%Sqm_VY@apd=G(9(wvYBBUuFaB&Fatx%htI0ZTr{ZZ*d#e{2$%uW7 z$|h%QEq!{-Jr>PHAgk)N41fWJaKalpUsr=qnu&b(ha`R*Vze=`&)x3xz9|7}AI%IU zP0yAp;gJiz1O`oG6nyv=WhPeClBn0zM+Q!Xezpe6G>6Q;DAddmKO+}%$7Qc~mmAi- zc)OGBx;9|&;gLzJpXlb0vACrTpSifxSW3!Rpr)xq@01^DjmMq^rZ1h>)7O1^K qNTTJ)HZ(E1$^^AH_30ZmN%l3W>Um-+ym8JXrNP-5|;5 zdY&96S1!zq*?4)l5yTx9x)kbvJ>L7M=s%e~^C$K$)E0JvwX-(IqiUvV&!o>;qfk9k zY|%__`=?&jRP}?oG71{Vv^XnKma$Bs0~5lw#pifH*T30GVzz1nHZMXkQ|r*ljkvW( zH9YLBDam_Ea3Jc>M`NX@Y4=SuVPr-5Zs2(}j2r{!ikW!Ii5tSOAx=&0)8r4(8%a z^ z?RCyzb#!b`;aWzFoR0? ZY+-Xh|#N%#GiUkd({e$sPxoLL4_p?MKmC-|(y zV1!kFm~}vgB~uU}@h*)Zti55B091%{!4t}mGBBdE?)=Rpy>MBVM#pc&o3;ywvm-PB z)yYVM$^L^N?=#dc)!_Jou*!<_-hRa}A3~|6b!(ZrZx3nOe1EF0y`TEU@Y}(ADe#H> z3r7!6r&E+RK?Xp1U(`n0{l#N#nN5zvKgZv6_4i(F1wn`}x6!dSiz4re+aE5)QhYr! z52BozTo+q|zS?BwrN#T(cJ-gvekY3yIiO0buR7JwVS9ZzC^g=CsJm9sdcxY7f2}D3 zJa1KQW)wr5&o(Pq8@z25oEQ=*kw3WXqAAM1I*dj9fc*=@P1N3;K~fcOPtR<_{<(K` zOqZ2&h@1mtJ7 (1)yH$MH)$uO^ zP`2_-4)Wf0%`yy;tw=B?!X|S4h;G_AhH%V_QGu~vTp~JeJbRqv?E!rn$uWd8=^zCE z89SwlrXpo-WrC6FN9O9{Sk{E~Xcl-lICcUBd$ArPdCg8M_Xyv<(vbEZ)Dhs%==`)S zl#mnofoZQ%28cp|2;oXo*Yo|TQ?gV5SpbG#^cO|vr^QUKQiFhpLevE*iBaLKDy&Kx zZq-Sl*PoSp3}X!UCt}`67jjZMJXA@5zI_wNp@-YdZht^cl2Yrw%B+|(pb{#U+O}TE z5<;hAxBn=sYjJ}!J|0ZD{U~DeWc?o3wiZO8hP6N-Qd-?%q;(`MvY{YPu;ZfB>QWTK z0~E Y =Sa z=3~kJHHCO(t}5CVGr1;pwfVhbiY@wMnRfMD6R77D5#WV=>IQn$AA9c?qXK{Ms%Z)N zoW&Ct*X#9aN^}K%KkzTjs%JG%&7jEwTNV~xWVZYe?0aUryY$QLtU cc9Xaa*=?XD HkOnAp|w)JD1V4I8w8XFZwOe@4O^VP z$ZE2BB9dZ0VtHGg<01kPgxHOmc! 4 z{`(sEs0~d4pnhHLH?&{ud4|InmoK=_JBe@qhVx%T?;S`1%;kUMRIFAniq3lk+kqro zt2M@7js0}{o-b*lRtU&mb?Vx@2$`~*IK9mnwq-6J#mfgIg#lu>(Br&cj9an|GUEZa zJ|E5=Y@=A3C%yF||AX26mhzOHdhg*=tZ2Q1mw!23mi({eS=+WIDVnXzBhD?jjo!H; zhOd3!uL738=OG-ZvM6-cG}X56-y!$&xcsc`xb1H!PHy>_`3y_Zeh{PhV3i`}W%5bh zuh%f_8b_E -)~)y%CiJc{IEJHycYt}`4Bi=^7AMsAOs}A z5;Q*?N>$r&vqteIDCfBStQ{wR5Gj1ULeX*Fr>Jn0UU9u4-f=M&rf~9E_+|(n`ak*% z^gsGc00zhcJm6CR1K@x=Z3b##ymMwa2zclGMx%=%W|016KYdK?#(gXUyp8itm< b05Qy>uvGyO~XzTuCDIRs6{L#I!^n}Z(rf= zERf0ROyl)H+l|VIY4$Mv)#dNQ?OU9w$;K3&Z`=hgz`y_dC2o8Bj(OejvOCMQb-tCI zom0H|RRGIqJo)6#Y2EVN`!Y&@2ZlDcZ}0rpovCUVr@s?m7z_rNoi%$$wdUq7e Wg-aknf6BCoOR(N&NKk%pd&VKzmT_x|hhkK}br^j&lA2yqCed|fMdWt*g)zsX4 zhrLE#+%&G;;%KSwKv>Ck?bg5VE+2nRP150{rS4SOo%DJz{AhjdrhC7CcE6dfQ@pP6 z+SkwT4yE1cv6&TL+-lGr-s+g3+wQs@JQ%?_Kl!?P`}Su7SC4ev)|a83uj_w4-@&qK zw%f+&Q}Smc^;ws9vdyHI>+QTVZgAj^dEM!>`q?YZ0d?Ho;Kp{+`aw(e_ pz=w%*yME(f#7pjPQA%%e{BF`S?2w7cl?Ic BCR|>`U3G znZoQ#YOIjWyQPM;)V!{ptp1z#E4R2}%xv84v%49d&v^6l;z{F`>-5v$Z#VB6t`eqi z3JS08$d^vl)%jt|^>$Hw-8IJdY;47UV$l?rLt3%;y#A+G^uYD%>^ G8cw{r|Q7Z)%omhmJ)u{6A_Y02f{D`~Rt#*q?#w zC&1e~YIeO{y*Zrof2o;%q@-MKoJeO ToKFgt{x!r2SBu z6xXK&ChhuC^Vg4cfx|));x0 jo$0kbb81>2=tP_t jx)71~PzARI(#mY*L%Nh<=OxV*^h)Y@Nw z{)(pEF-j*G29b67OenzsU*|Xj2g8{{>G!Y&B`0OM#+P$ULS+)s1|ZOKwj By=SB6>-SOs9fTK*^H#&7dSJH;sr%`+D^O2z zf)()Y@$MzE4QAVUENQ%;0(&Y_W$6Kkh(v<%jh>Z(ks?SlC2-?6B~s{{hn*neFHg&J z;jM#~v>L7Sln6S6k_z>N7$-ns?sZ>{)B;)^ Cr2Z7!n%o^cUJRL=a`?P7(^q{aJo5#V&13HeeVU-pQv_-t6WoNOcgw zTKDbi?szky(=%bz*|%Y#&q)r6f)DSt4NtY4u%8G}>P~i|jNR`mQ~UV7-!KVwc#9vp zc*HFjL7hs3ZE}B?h>Ao2l}|kJ^UMu@xHS(l08CCe>>~mTK>6=tkg1V6op}M7I#rS_ zF_w}ME^uMbYUI(hv2EZ;+>@xj4C*KE)NvzmewkiP!n?LgY~63e83^J(aHttAIjB~K z)_lt?DW`(74^-;5d-Wce_8g+cv^{HxMdGOjfbag|Q2= bvi;0&V|II&_&g#I2$7Bu?iywt`ieOYSgBU7(2!B$=OtPuaqY>_ZnDEO=+eZA z b+;0KUO6c#>h@L|}r|y*DKk)tcCgQwGp%B$LGIrP&fldtx^ }gUyPjjz$!yiK1^ApQ^W4u zo1v*PS}cxQz@E4wH98M(hKF3T{fX`~OAugsS#XbDqQt$aitRf9s8BXP1QAW>hPo~{ zASM94a6|N+p%`p<`pg4?Mqd{DmAT&>u(q0G8P!n`t<&W!dD;jOONt%`_F*muxRPus z8)@XcFnP~FH*?WLU4LXGe13#mGN3XRSzF8@W7g>_;>C+-WCh!1$8Gy(@>>i#&@Om= zesF=(59E$Y2_A_SV`jy{9dZh}k7c?j)t5_Meiz03mmRL`0)X^K1QGHRWU7Q-Q9lmw zl_-7}yfflK((l}3^QH%}2BwCq0wdWx?;mOFEaN{lgD?@ZDRb5~>9YGCzhhu092BwB z`|qbvIPAi#>V<~JQX5J`7>gBIHPlz&i6U(}?_;#BRD4_QL}2nYf}g&ci#sVFraeH! zI+Xtb(saNIH%R5xnarn)`X&tJRe^!iJ|hsd!au-Y_`4>;*<9JkIv;+qBQQ>PVvnFN z08kt3o%4Op>9j$}a9U@I4DfbF(u2`bR+GvInrSYuwnZn^OA{lDLkTdsUp&mK|FNvc ztl6;-0RmiADuQ!=>*bT*iR3oI b?F}e%@BT|@=8D9RAut9?S~hpnE@jU _tms5TaY7>{D>KjDNv5z z1`!WjW=a1(C1zw!jx`-|NF13Hl`#{1_28h1xc>YD)r)dO3^u&d4-L5vjC}2>v(BCs z)hQ)f?U1@?%_Vm+$WkPnvEulV*YaY>Y^*x7VPr!n=wjH8q$ayxXH)Fm#fYn3P43*t zrew Zbm4+5dGRTspkUd1%l7#G}v6F4ISVE1IBt+Sl8fD)aWZ#DD zq|st$zUTe J+^&D&`elATx4GSB&N;99^YM7@^pcayUr8G+>0jIF%jhZ3SMFZA z9J13-;ixFkHCi^!+WB5^xuVdrd)cCHXP`8>qR7=~#b#`0u)62Jqh`B1LsX8+(paO_ z8;5s?+b&mrNbg>CQQaM(C0CZeG5YC#ZFh9Ir?RrD`=@8f?iih;s=C!^%_nPjeDQKs z?NIlcf8Fi`Be|-6!RS};*zV+3Pt~W*?qC1)e#Kc$#aw1Y9Nwd2uT+2G>tV#G?oER! z)lJgLsggI-XGSl7KoHjMB;BhYyQI_DS~W3i92Yt}!u0gvt0nokOI!08DQMztF8q|N z%5A^nhUk8s<0Nt_6LY@W_fcc%pB%|;w2(j>`?FBQt83@l5i}*(p+~bfq%)D1_^`NV zhVUZw`=Tb$Guv3?s^q&nqAqtoJd5J+e|vR**yuv@NNV2KqgPXY!f~o;tsJDIR_LFf zE4PgD7sy#uIL!Z>m=XF0hpN`ZPq-KfO^Wb8RIfH@ga+j7Uy52iA=SaiNfEUx7*vvE z`@5n)KbkLqaK^+Zfb{j9ieW(4J-)Lu6w;b3)lT0S06s&bw^!83Q|~_gEK1q?-oQW( zU)evJ`TqXEW;U|m;ww(ys=?Lkze5n!tiUMWCFWyxI@>wrZMNXgA66m(V5sWBDi{>D zo2S0}YbxmXV+`pen`o>gNs9{)JK@X4&3-0iG#~^G0+YJ9&qT~LAD6JnabGXfyMs;$ za+t+@Fp>gaTL@eGjhNB}dWW3;ZaO^>1 G22@(N& zVw{_bUr7M`kuGqC5sYHOVB|Iv0v>pg?o^KggitW$@EZtxJV1Z~VF-{6i=?8Tfx+1X zj%Q??64^ JroD9V1AE(>A%p-GU|t>;{J;tgCLg@F$mSMjRm~0~ELw0G!$ia|=w4lfkor zDc(O4phMIlzxW56T)s+Tc(KImKHwiL@SK2$S+l_L%HChmY@&$(73M+4|84^~NAS-| z1#eP;t6)keHt@apVHjv}L;w%~5FG8W=VV+w4W3Cs36OCB1qEv-UxoXBvx*UE3%kdZ z0Y$OE6;cvq6MVn`J+Q!;(ujZQP7_Zbz#GG+tR6_^KGCUp^076nKlTZ)Sn`YtJ~$B1 zN_+aL7iN7DYfU=gLBLo8fI0nXI030dL fRUpG_yl4u zj)ZwpU +wm^91e&_E1z8(IApu1<*y7)Hv`;*1!uhs+EXIYy2>A<~KzTYCwZ z4Z;+i jOW$|Wk z5u>lWt8*hp(qM<1^F<8PP!*c9|IonYg5F9Q(-A$JUvESEh_} zE Y<;mK{rN*eK*0r8pD@yO|Tip)a+0((Ax za4qFwrb9Gh{UHoY_$UKb1SZHKVYMoVh78}&Sl|VL{cFMdmbk=@Kz`c8*EagaB7t!* z(d-^RU=$lHSDo~0+41+YtYx?4MP@-VAu#4@YdFpZG-!*w#E5Kq`d-T_N;e}4Q5I#i z6$Kc>O;n=I1Ea00qfJtsuJZ$qG9TLbiu()0rsF=iFFw8#m}GG%7RkW)@goB=Vnc>w zAMnS?8pOp6hX+*0B~?Gz$8bQfBv6_vV?sLNO+put1jk66ST4L9z-{FsVeokW*5j@1 zunkniZIuY85NGM(%mulU%QeY4LCL4$VwADKK!9O**8PDG_vux&6MogFpg+X`m!zx! zyR7iDm#Q`fl5ccIyc2ZYvOGlCm8+==Y1j;DY`tHr8wz&}bvaXKZBy4f9Nak+Di-*} z+&ZK*Ehq~E Z%0UjQBbE& zY+&S@z{9CdNkjE12@QRM)R3XzmE|YLLW0T<1w2f5+PVFCPu{J+_S399s7O=~T?lv* z+tBFZKNSeLD+iFy_`>!QX(2M#RL{zHG&cGBO;!6T_xeSp1zk*k?dbaDL@yv!7Z?=V z$l~FrznNqZz-^@b^^V(D#2%ME=r`dPzPfTl_Sji@w)Z`Q_tY1BxyB=4bi`#Lywh-# z>iB09TVHO+W@VVKPUw@%^$xe$TCN-ux@p)le;OnNa4RXhk;Ym$b6fR}h23;R@{50- z&G$LB>2$%X@qB9Qb!L5Q!gwpFM>RMDUQGYGV&Nmb355Wl5+5;%f>s!{_4ZyHpT5wc zQNYZ&9pT-c(ba4?Zl@0-tjEgkEViFv16+wH9k3&g70>5})Gy^fw5U*)?J1({eEB@^ zz6c2e5w)RCIrVLK1G{b<13S9f_*8sv_BxpvcdPAzUlTo>L!E ^FUfbUx_H|k?UsgBt95<3qYSt*+5r$@Mn_C~ zATJQw5n|Wt&x0G;ug_$6mb*6gWCtwOH=9(oSL}fcqOAhrw2mx^%-FW&1ki-fkJQ!G z21B nqw0FQ0EPpN@U4c~wFf2VAAx+S&c3dT76 z9E>=BsP(*w20K8!-?f@u0xKQl% ipIpqDTyB_LotRwPpJWJ6{Z^a$Yd5uV9~%9c+G&{Do0vM-p8`ba@C$UL zJsllJ$3CaCe4_L4@qFy2U-gG^U6|(KK!F#&$oWr)ZisNvrbP~>D=5=0I@6M2utOpa zr^RNJEm)6C&Tu){3zW<_3_6 )9~AW9vU88-J)NOlw*> z$Mv!qPO?>ry4xBf1`o|5?)(@>51iK(oCZ*~lXLb^KR_6ND`CFXi}OVqFh}~Vpety0 z5ak%gmjy0l8M~jRqBfL4zY>pMz4Hn#b3b$*;7Vav*A~DQwwN9^1`~8QnY1$zS&Z}) zJGM3>Qeu~6yp-gH%S&50Oa_vZ=jO9-rz$L+cy5;#w)C!L(Uc=3%;OfH1FHC7xx^DC zU4qY5SQ_ Cv`T)CCI1}l z`S~VhZjJ-M(dE)ip3YCY{F+9iA26^-IL4Q`K7?G~NM0g?>ts>3w`oBWQftX2Ye4A| zsto?aa~;Lc;0f2pI<9iGEHp?t-#)s|{h7hbe0-vDeVy6+t7bRmC>`d$_FX&XceL^^ z_9J+$WOorx;4~ek^?8+f0h~!*I2Q3o@&x$f0yt^^gOKcUe#-ea`QL5wqQ-kJyDPVJ zPvDbFSYipF({=DMgC!t&l|6iIy%Ov78M~wK>*)2t&1m;zdr*lJAiiELT-)3lv%7Wu zH$wf6_h+mo@Ix#GZ}S=52;L6)ym{aW-e-cRz7-!REI#-JdrU3wm y ze)l8uSLKPtnk!o^pLW|~;9Dv1TmaZkf%kKQ0Fpz}s&ur`{R=>Gh||>5hy&n;*)pj& zNO1zEJ!gmiD{7{lENRU}jX@$zxD2gnTH)c`+#aR;kHtxuXE4DT7eBnbMA3-mkh1x{ z*c;8RCFQ(T`a`LpGtIt w&q1kcMhPM@Y z{FRd!{}}XdZEkGn7gZs=PUXI;rTl U{mvz>&~WPadl7FX@Z3_AWI>nWnD3wNj}KEnX2^-vPRA&y zY7{ N~Bd*>0k9TP3L%WnJ;l!d6?{(UR*WK(gfe%kwKgx%?sYB2%YX zO1N=vAU;9M-P!BB>$?hnQ{4}KvpLs;{_$E}k9}=U2`Kk#%KP_B%8gZPwAg1r{5Bol zs{K~@_W12T14E679W|=u113t8?)BoT#YFf^?68E=BX1Rf6rK$}b>*6ZT=9f^qX9RQ zRXO76;rqukh+osB^k%{&?D=0FZ}ZAz1B@>KfRnopdOnr@^PO6f+QzmkrMW`cF4R0n zo(1_xhnjcpviA-T@I=SKiAnbDF_^4Ie>vw?Qim42^zx^6K*{lCLLJAWSD#{TBpZ5< z@mTHXQ-p3cRPK7Fq)H-qKbbUg#-w{6dUi{lWmDqi$CWrGkG*4F;}I3xa)Ng| 2I-q{5@+TcYNGM8J#j8c8WN!gsHatjWQTO69 e6 zAEEY2fd(P}R>6_Q9Y`drTlSrs4=-=*LBa_6Bcz0oJTfaQAcA~tu_^xbEM$(&U-zq* ztA>XT3c3ZM!pky|0|+Jm?*4&1aeirkbAZ2fcn9*kfYIou!w18EAR_$H(y$Mqq}A)) z$cY5VA0e!SsBxj@z$JZWd+*QRo&C-q2att9=GfBG!sI*DvRW0@F36OXfd~@vyX@IF z5H&)2SWf!|nda;7`_ J45IRu_I)K%)!Cf&ZFCZnjnh|h}s^g*kk_r6CE85 zu_L6JX)`(9>;24H9>^AJYil1*Cd4%FLoQafke}|nwY$AoJ-E$WYlB=5>V_O?K7cF| zQbh HEx)81BzUD}Io g38He!n z$Dr)Z=aWm5=1ptOacMiuUV{-vOKbYpz<}(?%ss; JRmj&bZAc@P&*oE+s`3B$rZdb7J x%EKJ{>`BhaJ zz3KjX_f7TQ_R5<@M&0`IL2bd_$m4_g#l)eNg22LE2si((W<%V$`lso`txe|G(|q4; z>zci-e+LkQzA4;o8na}+Auw}5+PD?Oh0MPD%~PILllP!HPe>kJTE&B__sU1@YI|j# z^~ltv?LPUq3%MsGp3QTQ{!B2d0=Jkwu>xK_{EZ4lE}O3Pdj=nOA%E n;MBjL&- LykT(;#Vcnds| zSNm(sVgF{aST1W9Zg$x%MkKB~SA6neuN04nM#Q4y7bn3CN~>>QS)4@j4_?XVfIiVU zTH-0rj29~_nF(jPAoJEKj-f3prTxxKmMm%Y2~L%N?{<=WV$w=9KVx$1hKt%ihoFvU z#`J)x``dHr;n@XA=+T_RWG}&R_!s|V4+24E%*Hd-_$xf_Xf2Ul@)T%rdb#N&nN3MX zbLn->7MhP8^s8_aiv~5CaIezbm)}Y=a+eE3Df)7vBwOZpP1d7WWMeVBf$@b0VJ8|F zSU|{^cRETW$8Z&3d4y9s&m6Xg CR{86VWkTLAE@`^EX z2>7GlBnP;bX$YtT&sZw{B7RR05?3uq+<%!90Dr6kV?)zBz&uX4hUz1GEc4WJ94lE@ zVSARGu4X*kD@FfVH6wDWq x0LbTZF}{jWz9pP@hk@l zsCk^L%HxDQQP0w_@M&JQvN|{E1duKK5cNSMy(c0AVOUeDg|=3bK(BBRCoP%UfQK zjtAIpoYr@kTD=13h{X(oTQ6e=0XcpLP%&KC-_Q%ryhhT2($p#f#w9-NFpNr6CFhHv z8|Km^UQuzZd}3m*MWxaq4gRl<92N_TAfb^z@pY6Zw#m0FGL5Cd|Lh2i2q^uAVT~CG zY$)a)ZgFrPWE>ay%>b74sh^k*(iM5;lIQk)x>);w(r|pDzj67vK~ySxC{cs!JAnSH zIgL^ y)ix+-uZC0gZ4Y~szwv;1iILl`mnXuJfUFgvdpe )2Lz=A+ zj7D=Bj|gthw`?r^dgfguA D8Y!~#0YDfQ-1a`l(-|QIrwDa#hiM_}HV=(+haHBNN zsOSb?=WxrpjWTjlk(0E+NQceFhm7tb7v;{8p5Tp-6!u~_U4zlSXB*`OM#b)youh-b z8x^HV#U8E(W24N`jmqloV$XoivB{l{Dk^)4SFFMKjNoQ 3{Qi<;y zgNbFE&D!Da691~siM8O(Iy(FNz*d9F-_JJd7meNr4|Ps%)NVE~lHP|d7) }3c@yXa`utwu1pG)mfVn&sNo7ycf`t<)V9dluhY z35HjY#<3f}A5}L^-{AxZ-WZ-Y83oU1Q3+KEX6E1kRwtv(KUF_FoF^B1u16sye& @o6Jl6vA-+m {p8V?+;e>se}} zt@E!!6(+AsPr+l<2L!6fTGVk;&ZKp3Ty5pUJst67Q68chF$MW{lfLp~%;VMRV^QB4 z?_BY|Xp-&2egoYko9s}OMpHYMB&k<1YR`Av1rW+@_0u@%6D_{vcac62E^-k$%SN*N zCiop$Q(=Fpcmd!C2IMSGzv50X6IMYWqmcSwOC!%&=4Vn6lIxZ zDqL |Eor76v0?7=p@+uX`CQxNU_irP} z6Tsbt@QH2*_nBj2{ga+?$aA!CcPS~FsBsw@*#`^P0|s(L+vqUkEd$?Ngdos-I1T}~ zD2?R%N{&r6rbWb30MzfmdSW^CVI=tcH&=C()Hw=Dn$>yT9EiSj=JE;Pn0)~vHDW;E zIM3a@?1AQZc#rZ)^Ey@Lw*M~`^ebpsauxu@A8fUuOgAI;Mt@u)^fCWk=>~Z<6ShHb zSr#HAq?BT#CP=JYQ+1ph!d>L!DN_d&V5HuLHFg{&1fapQ((&`@z+F*%Jp*x^j>S2^ zX{L7t`fkP#nR4a|3j%QDFuc|QZb5>71(AXTHh{?Kbkg~2t2sLcxJ2>G+yH}0?`Sq6 z1TY>uI-bb&fP4AwGA5n?$>;3w%?HX( cU sT6&Q z68ahh&Vnd@I`TFN232uhazM){-{%1V7h1w4hXgGeqS6hxOh;-_0)~|nUK5a0DlEh4 z2 NBx;Q@3cVf@s^t z=o4VfO{*AJ6*f|J%uOae#!DvlDlyjnW~`jR6V0 SnGGW-F1?t?w$b4eJW9wfc9B=LKb z(kLWz8vGoCL{swRwi4nk5Qb49CWLv=;Au3tFg@HA K=2+c|XS$hNW1c6+gsNAEsxF#s1| QZhV4DiKJP`k*B>I<(lb$x#-B6K%F{Y@Xk&AT3@I4-Lf=T1uz z9=clBc!i^%<1O=S=lsx67i<;M$<^QOjlV~gzdtU(M>k+}C=E>sKvM(Wr1_JWe89<9 z2p=kX6^aKAipUc0Dpz@LwP@|MXzg#@g$1}FVgXc@#hu!myAS=?Ekm#AzOgg+R;hkI zf7Wj#HgZ7P=hGoTD!@k;1IQ2gT*Uw_F+6Sg9=Xd9Y2V3~^FnCcx#L&JC!1$(@ybRw zietg@N80nsSOFD%p%V1%%%iu x 8xKYcNhl`tGNVB6nxY%;7-173T z VUe+=J2YnbLA$QX4VeZ WP>aa zWXat&a5uW?dnDOje{9@oT}^`as(@mR0WIl~yY@z%sGn zV8yUWtc|m*A=9HtMYKVI-WI!e#g7eXP5xlz@I}^uiZ82|-K!rl5Kbu9syC?U$ z=|Vj-=X++MMu*Uz#q6Ht`kvMCp0&LmhS0a)=fC~6{k9SMZ7ciRPW`vN@oxuv-vD76 zT#bgbqoME9usJlA1{&K0jbon%3iooU_43&D9=hMlpVKSY&?_|2E3)4!D%@9K4wJO& zJ1UG2zi*`s15mU+h5bI+;yxAL{wQWe->C+R6FL1T2ZVCB#X0tVw)K96?tZl#i!-9% zkFx_KAi{9s`{nLFJ)`g1_bqgjzMoj+GCuy@RBgc7d_eR503rOlYWINI@j-U6!E5*J z ~a$ny#LIozIhRzBPx!9cvX15uq4^5+n3B|(- z6JTP_cjudIkM6L2cCcAQ*r(V50C^-?ZP@7^8|6ORSg8%GDDo4Jox#uVg$*Omi$TaP zkKQ?(PZ-N5jF$VgQ0HK^4P*6pSlJv|>xIWfK=XLx@p$5U?lQ-P__5E<{X*-brAB=k z=EHeX@Gw$d6y4^_#2CvzE+^*d1o1W7OflO}iVYii!nJFhGB?iBIH|1KukOrZDLNGn z9BSXU?sj0$YOLij5%PtKRputu#OUVAcuOz3C1F%db7I9#NV61}2p(l)z*q)qT(#*z zyjVdI?A$)9$N{S(FbIHXNfETLg$?t5WE5$b>+&?` LCcwWK5l7uy|pE8`BE!Bn}Q `v6?C=K!u ^c9=LMTFO zPSbP2{rOxt^N^9U-U2#xe)&E$e@3`ZSbAc=^hwy7EzCCM)1sz`o2wxvmNKVdKZnR& zBwtv5f}Kivx}?~+{Ip^TuCa(&pWivN0QbiFQ9wU%nHRsL^Ljbi{D<^&u{Qsy^Qe_a zQY-NEne97s2ontdhf<#Km5a)}{GQgVo~soKJVvyiMub(QBX-6U`%AQE=wO*!ac$Of zN>mZPb^-pv3;f0LYo25E@zb9_57yQ_!O4T4?25m3!&Vh1Ejknm>o|aJjvwDde!l7f zzkd=zyuZ4kV7;ZlBjJS!ApSzb7yu0`GKF>Z1V5Creh_6fVobDMwrsO!AYnhpCK&*O zfn|C#8j_cn%-5UCSkHZCjTfEaPg&o6{#!g8mtg!i0kmo>nUu@_2^eG4Cl~X=TJkym z{p1zb`Han=u4%5XCxICLb=1DX44XGA|9jkVw3TKV5Jvs&UAqula`) l4E66Po#l%X60=%*9>) zr|Y?WXb?@ELf@c)X@O3I>^F3VNiZ7l)-#hh8y^+vo}KkpNtAi 1K&3;eYnuE}}os!hDzLFGyDwnk9IpxtXqN_(q4n0(EjG2NUZonmqJcYMoP zUEk&|wT~H{YBMiWIz59D9p`>5Oie-CoO&KQQT09z$KjBfR2>NqE+;q%&29Tj{u@n# zgGiHU^3vi^{p%%#;j@irhfAc!v7$`P0D#9l8zd=ROf`AJ+Nn3!Vy4h!9F;J$%g_~# z tg_c2hY`>Q0SAO!Y@a|`RG8uqz} z{(MDfb@Db;5{`V!CcIeB`9ZFACMNvE?%zLGhyxL(9m*3PSG$-=^w}GEu7dYnz~(PI zq;Ev|iod4J?_+wgYUd^pz*%wdG(6sy_`~d! MBjU=8}_R0y@Aup zMyJ_%!?7UX03sjq4!&}T%;7aZW#e2q@bS@8KTCHAB0DwYdMmjsPiO0K+)OzxJ8pei zoAT&JCyZzWmeg<91^$>b?vFiCp+mgAXz?=SSI)oOkU#qf5{Z+azi5BfJkT+w_2rOQ z$nL}@o3Nbczei!5{(1=EQ#5Kx7`x}vbd157?b$u9G(A?FO`5~?G&?la8CM?YU6_7a zC&=}A$k8Ct fp%ErD4?>r+hm1Q?kvZcFoth_XwjpuARkT& zMrRqoRbg+-{?mDR)?EXrMv-MaVKy>jc`wEWq08$Pqu+%~!m|P2GdtHv)NKo>^YWy- zqgNxWN)_3mg?;JWb@HyP=>O!l3lO*c{$JeoKXQKuL9K$=1_{XBESnBjw(LW^1tkHa zKh6n!5`q}+zhZrfH@@G4VtxHJ`;f9d>pxi7oQKd2THv;{bkNq;HZb}haf1?q3pLEy zet|zL2c5SLEFs5%7Q~HgLu|+7=WA_-w5}2&Hi*n1ajXCNH6Ui2DJ$)qv6EW2DEU n5~B(cRNNEhEy(*o(Z8Cw5=|%L#n2x7J|9_ z`M2`T8d1YOJfEeimaD3Mq~dRP`T6^|Ef z2}Mg4^Z!O6bc0L{V#I*qK>w#ZLmm4C(@9WxP_XgT>Pi;mjL-(Q*W*5w13QE92T+`_ zuV^QqesCjaVq~@8=kG>H>!3{H&fl@elkpifdr*on$#XjcqWk%v{XTx?Yy9_V-_u{^ zt1@;WhU;GMgP;ux>p`Ga`Qspc=z7IWQr?eeuKE8lwfteb{sGz9)i)n+ZC A}yD9;GdTj+pWLGU&;e0y$WztDLzZ6?d5a?kzc)FLEnYc