From 97cb7be3137337686099b22395fe34ec88780eb9 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Wed, 6 May 2026 22:40:45 +0200 Subject: [PATCH] feat(audio): "Bereit"-Sound (Ding-Dong) wenn Mikro nach Wake-Word offen ist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kurzer akustischer Hinweis (Airplane Ding-Dong, 20KB MP3) bei audioService.startRecording-Erfolg im Wake-Word-Pfad — User weiss exakt ab wann er reden darf, statt das Toast nur zu sehen. Quelldatei: android/sounds/Airplane-ding-dong.mp2 → ffmpeg-konvertiert zu MP3 64kbps, abgelegt in android/app/src/main/res/raw/ damit Android sie als Resource laden kann. Toggle in App-Settings → Wake-Word, default aktiv. Bei Aktivierung spielt direkt eine Vorschau ab damit man weiss wie's klingt. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../app/src/main/res/raw/wake_ready_sound.mp3 | Bin 0 -> 20638 bytes android/sounds/Airplane-ding-dong.mp2 | Bin 0 -> 47648 bytes android/src/screens/ChatScreen.tsx | 5 +- android/src/screens/SettingsScreen.tsx | 32 ++++++++ android/src/services/wakeReadySound.ts | 71 ++++++++++++++++++ 5 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 android/android/app/src/main/res/raw/wake_ready_sound.mp3 create mode 100644 android/sounds/Airplane-ding-dong.mp2 create mode 100644 android/src/services/wakeReadySound.ts diff --git a/android/android/app/src/main/res/raw/wake_ready_sound.mp3 b/android/android/app/src/main/res/raw/wake_ready_sound.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..916d73c0d6ae976e873023144ba515eaf64e4d42 GIT binary patch literal 20638 zcmZsibx<5pv$tn=kp-6E4#8c5yDS>q9TME#JuC!=V8Me+@C0`P1Pu}_1Sb&ONeB>h zKk~l!R(*fmsjZzkGgWg=J*Ve)db)d*uD z-2b`y-#_H7=Kt6FzYh%^Tp z)Bn3i-r`yVIA;Lh@OTCa0N6AD0DAnDJ~kf@`4IqsVh#|R!vR1MTQ~Zik9G;XD5NnI z8+x~HM+L`-00`y5BQKah6Oq%TQrrD|s-@c#91)-6^uC(A#~u3p@IJIf?dKkO>_?97 z|LEu8zx_z{KK2vQPg7r*h09@Nz7pb{T_ zW$A^<4})=SL7lxUf8F6K$gwf2*L@uF!H5ZYTPG(6!kxq$-uQ@LML=t~$BjXPCG0?! zK8gToC6sWr!hu|+MoT(O0~i?71=cj<-qESF2mx!N^r-FXP zPk-fzUBQA3^uACvT@xu$jlvQRi~NMz7dxdoY*nksmuP`XR!lCcXi+!ub^tf#NzeAV zrFRZ1Stiz&YVSE+=6$M7rI2<0en+w~5{VST1>1gQM&2`z6Hu8y&OaEI7zT(g0ljcs zP&5$c&Oy;i)N{H|0K*j#i4ps)kGT^;3_!n)&qB0g0u>9QA}G$$MAtdr{Rn?vvY=(SrM$EcB+MEi9huN&l zIGh(mn&PE}@>!DzMgdA5G~b!%deYW+1cd-cy(1Wd2qN1A#23UAYJ}qn=W*Mz7s!Fl zIvrbKr=MjePws=IcFsW-%Y4b7ZLJ2pvSpcs6+MNNAxdVgMuCc$;NNvWTsaoYinua0 zOWI#-eISb0zn6)0eksV=@x84{^v?Ku7uBYQiID}LWPJ4K-uLj@c)yxwJ{Yl=3(4CA zX@m!n-xv;jGUPoeCw$lfUbGM%Aa8rE?*X)E<;Q|-xDIMc^t9To=hjzA90pUar5*VLPoQKQ;T+CNBl(>$w8HmMdG zv$ZpH%NRB(+ZxkZmA6^_heWiJDpi7QDiq}zD)BJ0i)pn4ljD?Jw3OI0hzP{%4EY^2 zE38MQHRaN!H5t@+aqB7@a4X72!beQ&@%WUBWZ7jRbL3*H%=+=;)?_;6^oxg)x#GDcm#8d^_z z!CWkDTr@&f;xj&rxGjo?ayo3;6*N9js*^iyvU_RBUS#UiSLHfLX0E3y5DNT9Hj9FMp7vu(aPCY_QKCT*;Ge+ z-_+cY-C%E50AR85)O%s{2#$d>(6wVUhIiW0$OeRP_DSk4_nrs_hsdJg+*UGYww!UM zft#A%y$VB6np8c8>}>U2_Sk)@XTcJMpW14?C=PcHs=DPw(}Xew*>LxF8HcUm3u6>tExL&LVy9T&{PYZ4P~W{F@jE_(UAVwWmv;PX<1q$lzF zgUeacr0p{}JDVn#AnX-fI`CFjjGnTChpavpu5!ROgL_<<1h>E8}R657ZVxQs(54PHo`|#dW zq(ktZE?uePmNOV3x}|e24Q`Dk9L-geho_K`m4tf?&Vun$qec<406UCs;vM&)C+Rjz*0uTeK_v!0sXEM#AR4SIro<`iVXb3NS=VpZm`XN|@f@pe#(8#I*L(OGJtnCK?uaCF3udF7u^FDPaphYR&KFvC z*o{byd#T<0pkKPm2P)otcvo|tL^#-&^Nt|y@0*w=8ICIE+iA2~PLp;e_31FQnRF8$ z=i%Gb?i_zV6b1EZ$*pgi13oyQ!+!ODurCl0eo38M2^mqra7PUaG!bkbh}sFai~TKH zrFdrDx1~EeYOKplFsJ0AoO}g9&h~NM#2c!ElL)=li!o|m&@SW=?tSt)jjIoUR}e`& z6&(4|r8$t_&BsY-xMl9HJhQd&=eL|j_b-vvX)Tt)?YrQ4{3qpH=|2PoCow_~x20@j zUVaG*D7fLS7kc-r>FvSV{_Q0KHP0-xITxJk9m^e2xk5Hc3Be5cji%b< z{H~P;>j}jZa_eZRdT;wiU*zdSK~s~Wh(XnoB|sFQanczG31e4lt9WZ9;~DrC(ko+y zRhSs3gpQHgJQQti=W)yxLmDQ=GG&F-O(!~N*xwsfQSo&v)5TV(-tw*l>zZJ79HJ5P zWJKuXMNRVeG{m2j*?8A6nqV)IWBPu6X4U;^ybyya>-N45U?Z#?Ocws8{iQS-<&5ma zfKR7HoBzuIg-(Yb%k(a=7bPGx?e_2w_7wmzkr|( zka4Dk^XIeXnDxuT#OxVZaUTocBzxgH?GRIRzHK1_T&2y9Z#{@_5?ooE|CjOEN}|XH zt7fmPKy`O0XL-Okke}aefGa>t@ibc;twlM)l{LRcNN$~m40Z9fYs+(r+{X9goPrBQ z7URuLNZUM>Kg~jHRW8!{1_|zu_HE|cu|T}!UJX{{{rSCf5QHXNEqpHr+%7_!IBNUzcRvYasVQkx>bQM<-OQKm z)qQPQ>m1hW91`vT`di(Yr!j@=I&s=!3IMEH6k{Ck*p!9W(>b>X{nfnhlc8kL7G9It zPHq6z%A4|t@|8>8QJ5Sj|-@5>k0&*x8qgNGNE?IwnXCZP?~B9ZrYyLa7Z z`OiI_ZzB}0e#5Es-kqKz0D^%t@9Mg{zF+;c)NOxqr1G)d;3sKD(**L+au@s0Tk6{K z7)2~Yj2_YNU)2(^1!@9>er8QGnpF7rIAB6lcwFKWb_@^|$PMPpAOkd6RE+&ybunka zo=p)FT#CY0vZ35k{fmZEkp8#6?prd~5G&i4(7U=7YGudU&Jck}iobMj=h;&}iaoJj z>^>tk+CNr!YH_pSw+4PonCd6_Q)mh|<3!}o zvuvB`Eyo-hvv=MVi^_jk1^&VQ13<(CwQrqyE5yUuG%WVyu{r-~_Q?8=NC)vdZWIhl zv!Kfb&{WPAEg4HTnQo-^s5Z-dSbYGlh-SyMkp$bvcUj3A8k$yuI5AtxhbjbCa)m3j z1J-XI#9dgyt(-oqUyAt{v18jSR!ZM4q>PCzvAqy1ad5Q`x7loK=L~7R?BK2c`RvVg zNEg8I`}^r-Avo6%y_UbmO0riV!t-!F0fL|MwC$-JKhV+>Cm6N=q?v`StwR3#K-#Tz zIQX~8!HX&nK-bPq;L|#)40Cl91IQ^e>|=TqKAqt~hztD!70S`L1&gLrdYa_Y&u6SiQSq=F86mb|rx_n8Dzw;=z{m!bCVKMO%G!ojQmq2DLgnrHAR^cq3+$ZCUhn+3Kun4*c}k2%79-o2wCBX{l4q2|1(;)s$1q;eLs9F%c0s;JN*v@ zwPn2kzL8kE5L`~k|38|IfXFLo-)hKo2v}ljNFY?On;$LP`BAeoSnkde`P(Ym5*SlG zpNH8}fk<8KJ@^(#82~x~_*?LqDmGN6O74q$$1M49Tf+%ly_eoLq9}eFmX3JCE5{-` ztlLg_j*0P=BJaT=o5(R>_JeWdl^5>5R?%HwUE%^^gyYJiyDOHNA-n*HCzW`}I~Zcv z7*8e6svRk*5d=sO{bd^5Ps9jE1I@TuHed$6O;IGvb@^=E@4AmJ7^v_e~jd+(wweY}TJj@>q?(RA^uJ9ivB|{6>N;d6N zGM+J@r#7uOA^%|CA|MX3GeHiNiu@%V)Dq!J*ql_dC)`fj*b4-+8v~Z=uUX6xS zVjfI7Qc4EagjpGL7VC#k)9D)c2sUx6(z+QQPKL@DJ=1Dkajsl8wXY&K*2+aOsBhmi z3=;;v4Bf&7B&4UG*oW`dza_azpIB174GdPH2V>$LyVXO z6&HLq|KpQ*QtVW>O0ohk6A@E>@Em~p^Ry}STO?Dy$)Ulvy`vStV5i};G=&NbV!4lg zPtmnP_@%Qhl=;wEU~2IhN^IM;ZhG-&pcgh|(BXt95vLI5=)^;ZDHDpZdbXoj{iD;3 zvdJ+~F$Ahqs3xZRczyN6+)tUlc6HDHc`w)f?bow_XT$b1))NE+QEWvB4BB^JoSeaJ zXLqPasb%H2lgrzMzo>~0FfmLFu95c9?ucJAL|H)1uM=`8$$!m&` zu+XHq2Aa6#YSb;>Yi`h8bFPfXy=h>ONwZx>K8$n4H3_Zt`!M@qQwJeO`E{1x3FKXz z{2gxiX^>5@xo>z}_3H1t-OuL?%~}@dXGWq^AS&7YvcCXS`ESg{hdEO{#eDkS8D1i0 zAqaduayWMH-AR{DxAH3*Y50vkiy%2?E~C}V!8=QUF2l^XK@$u(hP>r3uLWm}mcT%y zstF$Tq{$8fFYIeNl%%P>tWO4KVxwp<5avNl7E^N768t}2m*)XgM0$T@-lIW%Pn>d- zX^cgxCr`0NeA}C{q{b_qxB8uKi*UJ7z&qpLs^NHI6t4UTG^Jj681KXPXgDy_K<`bm zEZ54F)ya?`S_l1pRK#?^#!^De`8(-ylAiM2r)L-w(f|j4d8-l)YMx@Uz+!53PGOl1 z135O(UO?W5ymhyJKtL>|wSp*Rgn7dpad=c2v0q?6!k%PVj;aX8D}@D)!9Og0maY-i zpO#I%<;TQgqt7iQ1Cxxb5u58AZoCY=#-KEcIUYMy&4~`?6K`rEDr1^|ciK7};m0YO zd;F%Ld+eT<`N$SoJ*DR4I@xxGK>50V(%cK6fod8eXrBW?XJjE)Yf0$bC1-r_5`9xc zvLu}}<$*l2AKgj5R;O-*TE}kzy*Rhl?|Y!1QVYY<6|FKS4aJruThK%gdBwOVU{&I7 zPG|QRuy0Px21Yn-)CW}=p$V+i)e5*7UIcN8JfmOLC)dnn6cj?)CS#9xA z-8&iitKnl4*k(?7w)XS7l9>@q*DN54esNU(+yD;=>8f5s{-UR%Rql5Aszv zLF))|pJimv3dGV}Vz{o?V^M~-1Jeur^%LPfy)5x3KSfW#B}uJ{IV&;nZE1TdCl~%$ zeJxAe~lSB?Z z6E7`H%_#&N{LDB%t)qm|#^uX18Jkspmt=rGgKsozn$yg%u5z5QRw^)KB?po)#S<*i zo(fUbK5>}&F6>Xf%egfC06+h`$o_7szS!f}8_~>c(tw%w7n8qKLS#ftwVM|fvcfUn zTM`M9d^%8YX?j-=NEH%AAyrao@MZGI-`H=b@WNxXpL!YDn55;uo@?~-X0%=rU$sF; z3QGMMum1=87y;3L^eiZ(NBF`jkz`TW*lO4+N5|0h1=RP#gk2~Ivc`{|BkNEPGHue# zX|KXCoH?u`Mz1799H_sSB>Oo3CE*4JREUrSqrZ5#noK@x?3Kh|NqOXM_^6f_+9>s1 zhLwTh+nRwG8=d!a^L#v9FM=3?m8i!F^e<;e4po@eiV_$mw{e6Jja)yDWlu0t$BO(| zUIY$CD1O`8c3A!Vol>!i#F67ghg9M>HKe?gJD?M3#^|Yu|0=nVSGd-jCB6)>!27zR zU;Kp;<@3_q{F^3c!VhL7iR%%qD%N;E4t>!-ZroHL&Cj{RRXN@s=}E-|XR*cEXvQN= zVz-3&T& zA4y;{|0fB*5d^}r)3=5)S$wptwR||-uxo7TBM)dr395Zpia4w@tT3Wr_;vNudFH67 zd$S%*I4*&N>@15FMA z5q7f6%yyoy#!s~&Zw{bgwD-6?Lcy=#&wSS+L<6;R)C-EM*g~~M4Ef=D<&;QdJ7#$v*3-N&PnM^Zj3Q1TD?Yu(|#el-elL^ur6 zTVhW;vA>=2C+JKIiclxh^2$)}8IjUJv3yXF^w5BE)^moF)1l7={nR%ixtI*Q{ByoQ zt?SaMHy|@aMl7?gzvDDlR$dqohQawgHsUN+WTe6PMN6+8#9lh?Wrg&FABko$>fE8+ zF$?&gmF^-S__CTo3Y3ams5#Ue^p!9H?B~Z>?t2FWcHL1JluctHmzRh!lnl(V8w8#< zbH&_D8-5!yQ=jfnV}-9=r*#HBuAP=wAB?%2f|;rMiroHM=0pM+rK!Fd?AFs#!!N~l zd-a`-)!5`?&v9xEXz=R|ty4`ZHi>E6q3AqvmQy86U^M8i4shMU7l;}p<9gb(+{h!@ zDL~z4UNoDxY15ct`+PLE)gsF-MutAVTw>^Zi?{zzb_um?FTg6+O|YdGx26Xwx6adW z!^shMso@!yCk z#Xrz7{u?F8xMMll;&iSckGQw2038tX`-h1aTpG1TJ)K+S4^<{J!aP~NaeQA|n>Aw~ zQRN@(#{iMkBkV_)Ot3Ei$%xQ{nfJ>d*$=bqJ+bSuOW1t+8RV%I7*aySQLrW6f~ zL=ST0YKOvw1_)!ElPJ6gXB6^sjG2LRo|4~xxJ(L7`A}^mxpmtoMkpJvAdL^+$v6wnF)Mp+nO|&KWFg8)$L-> zf0A$q5U@YO7LyTX4l_c+#t5*+H>HkwV1<>a%)xyO<8H!2)VEh`Rqp|!9g5>p06emy z$nep7sBc2^$nANGZxYH-i*fcaHlvAzuQ6Y?cIR6_*U#nCcYt6DwjFIfo)Cde?c$GF z%-d`lS*woP@(bQ;fyO(lIHm0(h%}jA3m?Q^T7A)|Gy8WnZ+LQp{xd3iQFb=YqiE;3s4N8( zDnfhO5m+m;i*GSxEOaS&_0u^~n5CpM9P7pExSJ^XiSe~t^+zELHEa|9o)76|sX?qL z%P!_NiP4z?A6qvVtR}2?Pxp#NjbEb>COfaXehkWa3eeG(tRet(3!j(Th4;gu$w)a} z{#hHPO0Ogf8Ctfpi-$G4KfjCtSp z(v~`nJ0O~(><6!2$}2hG*zOn2d{ZSBm){Pf#npMQrNjN_$=SN(Iso9FrE0ja$=dWy z_vTD~d8J1m;$)Ctl|^Hi69`}}VLGVMQR{(7H9zwd&!fHfT59^!VtVDkFw|8AEm&56 zb!Cl%CZcntoiY@c?W-J%ez-4rQ9K=G>WmJAn%58K`QcRXw3vdk4^%WcP-u;D=PP2b zBiS+|06Ram);a)Bi*Lj8y&71`O75d}skt5*FiRYks_D02pth+9F~}R&UM%N zp=r|ZPe|zP-D4uLh-VaDyD#&dfPbIWNE5FRi=1mJDdQOrFED=cBa{?i`rX@`VWhpx zR=M#?PM(!!r)oDtPwpNbft@L915lu32NW0njJbjpCQ#Gp0M8=|ge^{se{}CXfxj*m zf^%4iqW|JEtJbsEg@ZBjU-U1Y$sE3sYx9( z*1dbS=0$9(<~05vsCn=SY@39(N}d3=`DS2YDk7^S1t^z*+l$8Dl+RNFmk)npbAs1y zVk^HT5u>Nj@5!A+S**c{Eq0ON=}pYE&z_nBCCVKkQW;p>(E?q%m?v_-j25Ud#ylA0 zUx!)D1YH^_n3k}fZ1YjpZmgB-4TKyfxIETJaASn|`T5)`;XWqCfj(0v7&n-qcM1fc}os9nrMqNuo(lZ&-&P3CD$J%#t?F5cxQ8~7K{0BHMymrI|200D5bcO6iJ8R z({hLTPg&y;nZ0~6R#y}U&cV`4J3y54*<|*)}eyE&PN*r^3HcPQOk;8XqOiRsTcc>2eJ(#?UT#^OwHAMwc&V8M)h2RL9$(r$J8tHEE%*J|NVp)L)J`IrCd4&e8G{z#N3D)858?Rg<@2bFJ! z1pUEdBA7q$jl}I4+Gjjl%v3c2?6-vd^(DWf#{otNUe3XZ?~AGr;uo16n1~!JWyK78 z<`Vft&xF#>+J!RDyhsJzc*sRS`W4JI%zxWO0*Q?v2tD3-7iDzo~+eT%FxZ`-G znCY}7jfJ39mme-yy@0tb4CpZe@&Ai(#kxv z#u^eyLfEBak4eZG^VugAUBBWe+n{d(pO=yU7({trLG!J?naQceuU&T!fF^u&?RWsp zF)~tsqM15MQAzZ1FBX3DVm$7W8`le|Yt}I~*(RigcoH4|4 z{8~o4`3KLt*$MqTsYZr64!7Thf7s2_yx(;cw)R2lDgJu8%VbQic>C4!f(+#Y0d1G=_}$F1&wj8fQo ztUC+?JoXm^mIkDw*+oX_!(K}Z3+uYfZPrZzH*w;nM|qfU(Po1Fcz-ar@65T*TOMT3 zY1!@|XpLdvjbfP~pL;{t9}_>80VACnY{F7|iOI&wNhdP@(68pAEHU_|uND|?cuVsn zDx+~|8(=#zoXh;K+V@U#i>8l0Pu#l%U!7ZM)~LN?XNc`>%s2TdG1j^BRSH6idqz`y`u0P!Ni%rl48e3vF7bN{)%VnI38}aT($AxlZh$WiK zNvRdYfzgWcP#&Uj_;jLEGc9 zijcpj)@#Cx{k>78X$=KR9Dk;ach$a5hC{hod{9N_OOyY>{tZAf9|I~i6pnnwOVr}@ zk+7{}jUx|K`-SNJ#~5qG+eyB8EM#+-3wurn9I&=a@?CZ(>;(XP$XkfX1*!EAsZ#s` zP}GZXYO1$NriP5M;IpY}AYS7sQNEwzWl4Ph{-xs^Xp&#(1W<^bRk=AG39pQQ8bGOO z>w1nM0ttIEyi}d80k4x+IwwCQ>Y2T|pdZ(p*94UO3j~(~$+>BOuVcL_<}`F+S%ysk z(ijMtSQ1?KH6^h>iE61Pb}Y5d)H#N+)Y|1(9r>;Tyv=gIFa`-O6I(UiNfARni`7kC}4~)Pt_f;Nh!kj?;pa`jVxL$XvTdeJ_= zC#S(j!BRo-`KTqn80u!l#g8w)@~nL-i_ruW?Ok4Vo?+$GDSxercdkGwv6fPBH69;& zQ>Y)!+A2A25@71;3XkQH5mT+f^%QDvzo*DR`*eI6o5uJvxS|-k@#Isgc5H^M_0`6a zT(vwsH!IGcvRHu|LaTG+r_VRzD-g(sPPh9%fUtp6Y1)>id%Q0^;i)P+7g#lvIxfun zv3zmA-;v?zq2Xc0?GaPhwpTqUm5Q5x902t<-v1A5EwS0hxa`vN;(esJf*&?8r*>TG zve$}M+4Z~5v}GPqh&p4>_(4$z9Gl2x498-xqmkL@D zoU(%a@`-w?vF|_D_K4+wkCGCvPrixj`U{C^zAep}ClAr3zwR=BI;dk>aW zx6sE|XLqncOi0fUbF3VGi!J7*HW($%ERCT*3%cCy+>Oyk-z6&JfHur$#w${;of(O* zb3Qf~O!4wM)hC=jPw{{6_qX?Q+;mxT|Bca4deOI&1Z3IoQqGkQ%Sao32^Iw!;DJ$M zPQ}bV0H{e!c_L`^KK-q}5pye!b%?(sVX%tj?)=O2S4rFZ-ww#$(;`6GYf{Uhy_yRR zM~dEEKzPGzh?|sFuQ?{aP8&9_1XsL{E%-m_^$P$(B&HK&OQ|dja@3G;!+^CzR358z z_LebNx-wu}dUWxeHEeyqTrGy?+jY674u?Y6(W&$DM}!&z+{qYlt_tvSpvY;rg)#OHeXnCP;sCWh?=#Q|H7EM=nx3cm z_sw~{LYGCj8y?Q^YOdX=YwMxEIiO&lN)ED*M1^Hl58ExgzHxJw-iEfqU>rME)4u4&>_MCexysXMpH91dO z@+|o~52b((iV*aZpP2`x(wrv-Vyc-2c#CKDLI8m5nXB;d}gFhfL5vH+Fn3V zE3RfgvZu2WwZ2)mEb2a|?X7XXMI8@TWws+fR?F@3*c$cmQROo|qIP${F~F^L*&GtC z!n=?{TaE_|Cg24#Be|-z9kQ8@6MJHeN)^pukadl!{0Tqc~>;py1Eq;6`{c;gzeJNx|lW=IE=r1O3YWbuwa4H$ zTDzsR1vlNjvA3liXGx>DOT5S@zp+9@xB(l?qspq@-;hM z^1FGMSVc;M4VVOZ7(%q@QnlAj@p1+;+8l5+2)by|1Q&9qJlCn`?*pl*_Hra4N}Kv+ zyyBcUTQ)5hm7S`!h!STTlSFDsC4N+|yyI5XQSdeP=B_s^Wqp$jE@?e#?(pdR+ntq| zu4wb%U-Fw{Ytb&FCZEHROYod40YHbok(ha0y=!$iM@n?(1I=w!MI6Y}1^+17Na77j zyOnA8Y%8n9!N(g%WH|V%0q_Nr;y*2YbjcJYwQrp$M@3}Vs3l%oz-&k~j!WHGrcm~} z-e%=~QtcW8z_Mbe-Sa?xt;A!EHt|9s9~Rq7BIt^zMI}`3bCELxWmu}09;aGpI}&e5f-JGrwcP!$;|)EtF?cALG6pTCY~PwQgbgf9Q^hGZ*qvTThzRGtob zN!23621j$uJ6&6b6KJ(q$>y9jH7Q~6>tRagTW-)e7AY{v%(z^(AJQc?p*&Ov-M!RX z&73W+aR-d-;;+`$Vf=VV9nmq&m$pB#)5LfPh2zoXO~m}-`4<8~D;!Xc-W{yKBO_7r zE7nm%h2y1+keRJ7oTN&g2y&)FOgtRjr4Pdj%FO*uCFQp((y#2!ezs1^8p3i748Hu~ z907I74$Yg{6AV+0$IL@WXRBoF0vo#{-;J9(h<#~N!=-|r_{4l$^5%i*cy~K<72j7} zY1B0IzmZ!;;H`*0saw161*E+C4GNt1>r@cqmcfY&R z?4RJ6$6hgk;|aTq1gMMoU2<;s{*KmaNi8)ht%=PrF~QCvL++@2Pf>StGcM6C_ zR(APjp6h$7QO4MOh$jb!owzmt%HnX+WRdW(f}X*}Jr^t%H9$ ze2a#lqDB*m8FK5+ZeVgM|M_r7r^`=5M6{y&griqgBY<*0g(dYx+)7Jk+!f(MLWaw! z_zxf1!IFs=qg!LneBRs13tOJF=nwub5A&`Qe!vmUn!1jQu4p(LkHBg#ZY@z3-~BQP zOeSOeSgWraN_pOUXd-!QC&CJ?MbFFW`F0hgd6ON=cjylX40N4BTQosoUuM3bffr>6 zW~U%CK1_<(bSxl*|C?V}_(P%MdtIX)AgB!O9ws2yk3oA06Q1^0I) zFj>1ktr`*vTC_i^S>+kf-FNQh9o1EB*rvlVHnACZ2^h_wt1vjRC0kW*pP9?M$yGeN z@^~pAd%y4AQ>(X5V{?)$ODH2gsNA(K?w;8 zX3zfb8YJR9Ru}bhM+^eDZi3*R9l(p!O)Hr8vQi{XkipkAJ*L1r=F_ zEFB^+U&o>q&+t~#xMLY}vk=^%5TW6tzF}|_65p_#toh)FV)g#biK4pkMZkdYd$Y)wkrW?{!}KY#8F%{hto@A*ju6KoYlVI@}^D@^0yy0!SF>RDPs77p|EfBFa#~lXyj>;pgV_ z>w_X~Rffdn4iJc2*N%60t)P~SfjslykNYvM?*ygkH$Mx7O8yI%ouenu0C}hT- ztVXYipA!;>!DahIhJ16HHbNWlItE%zZVeLid{kh|<<&4-0n<}%%S)Ug{EW63 z(#i~<4{2Q+=VL00V}(;T_5S+WRZJ@xe?%8h6s*>6T>#KqJ=lXm2+Iep2!}rNFb=r2 z?BdrRt?)SQG(v8cgWUO?KMXvTGyHFC??><4fsnw0s~-RvCOE=;SpFFgE|kN|B94S! zfpxxHvUrSh&vB}Qmx)#$#lY<)8e?h>awT3Zg)!qdSoQ0K4=5faEv83Cgd?SSSoDBe zA>M$}iN12%i6@i{xMUK1`Y{E0iut^>O>k5XqitV1+u6x&Go9{?O6RL%gyLlhAviiI zHN{G4rpb8uDeG6QY#I;=o=Ip=FKP;%eXj>DlO;U}5BEEy)s{6+xj8qxkR|IzP!YB9 z;>2O|quJ&&J%!cQf0FPQ0TC4Yk0kI}-r#W4zlH&)(vQBZ`E2xFuuy_`({$pK#IG@=r>Zb)F9%+-CLjq-Yi;kNdypGeQbZp+}dGK%aMLE638!Igj?xp+I^Gc#Wdb#c(r|3|jWjJ_)Jh_kc zsoY{5LJ7K(oKrTFMdr8ct3NJ+n>4n8xH&kDsRz8Ixv!8R?K>ib=ht{-i4XNPET!Gc z8oL`dw%^?XdwPUuPuCjHKKNBSOfGlMw9u+010HGtwddR@t<)o{PTTWW+Br4$ftGUl z1Kte|b%K9~>jeZp&A~Z4kFEkF766g9jGoXI029~97qFr^NN)IrsD#2|MKovfxy@K; zI|j`U=`f%CTeuDp;C_LbTP2E7fqz=+MuK%WuX4;iK{K7Q7u=i3K^aCLddkHGefYbb zg73llQR6Q~l>$khNSNVVQheNCdciDF>cR6+7N~klf^CP)q1d^1$4$U!Te93c`(>j& zKq@zOY|P=WG03*}O7nT0eHQg$Xz@HL3m51e(t+=|VN^{ZKtX&zcsI{t(-<+X3=4yUD;4pio6`gp0d*!12o6v+@t|g>8dpz+E7G#w>y-G zl0~1u*i3l)X!?FO&;xcdeW0BgTnPO>LDRQNLT}yj&d?5J#-ZS|aCt7w(S4Md4@~9j zS^bU*LI14u0RcW2o4%#s-s7abp%!QLz*?VII?i&lUy8IB|6TV@Z#2VIge+s@YaB?o zYVe)C+IeCTLq;i}m(IRu48VS+Ral*)UolEs6{E~#9J%+6*!Rk3{bW+V2OA}ehd#g3 zo2Uaj1tuYpQ&_3EBB}!jZgbom3yAv?)`%gjL$#qDRj^)3iN`d#X0)?uWeNY!l8H@< zmcU5aJCkb#iPsICZkT=EAIT0^Nw-MG*(=yn@@r#x!leVVr@tbXHMD_APQ1`70643m zeObbU;^h<#SN}q?7P@UyV(sV6w9$RA7tO%Oxh}y3sdlr})M(=DnE05#N~L~F#=vtZ7xP&;`l(a+RO1Ha0t?&NsrS=Z&y0f$W<%ME zi21AWl^fKNmD!pgL%W`y3;;vgc+q2QWV@6;3dK}(gHW9uQulR<(lnK*qv0^lPUvNn zvEghvc66Qicbi)NXN|(`QId{JgqolUdwMi664>2OuIKxM2G7f*_l`_a-3u44?NZ{B zvEKO=bTU*xkic_iCGdsBqC=o9C!jHmiYvg^yV$! z37$O0W!)d6SK!S@a7q+Q{Pc@RZu)dA#Jv2!Lbor3<-sIr&f6v> zSdC0+mQ4w!f!alV%9l3d(j!W4r)j3`LZDI1&LvqoSA4XdJx7`$LSn-h#?vSUqaOi% z?&!H)0tnEzAsywS6VeSt14D7XXnp!Sj_%o+zr|#DxVQ7qRp<2e0LYl!ryEvd7#mg@bszUG=fKjlY^^S2;qiW@@aI$Cob1 z-&bxm5Dv@xt83Ec{8w%nii2SM(W!DNZ<4sqwu((n!hiiurb z>(%4;mS~CTbdCi%eLUO)X7gREyjF?Dpq=~pSr@O}8! z3I7M~7=iyqVCvE0M%Z3go^sH;UTEel@u=b}}eMG}HN*PI$+%9=a9PE^<9Z zMbw&Lp|`$YWDqVe8HOxu+%AFamPE8h!Xi$2QTH_?fxe7 z1~A;TdVXkvKtSKb;(OLQD6B&6kHl+Fvz8j(6ZpvymBykoLeYqEsPhVIj8|4yFir8R z%}0uKhMnAk%JSz|3`7{dkq0q9dr*rrTW3Poez@ofgXL7lZw()_`@wTtyEv=4+Bm3> z1!(4vfe!o(-l@(!*NvPp5eXiWbx>0?qi`*)~z!Iq_IMFUCZ)o$?7mENf1sbhnK zyL88Q$&k2!(1#@&GB7^5Vg0~4F-Vda?b(F`oALBu!bvZV*GprW*V=Ffm+Q;8gAZ*& z0pelX5g6`r?R8c9=RY^ibDQN%HGheP6){xm@wOA$A+P-n09%`^ABG435ft2kw$@~M zAErQs3N&J)#exxfk!V>j1TGDdkT0wOn8^h4fe{>5fq{kcV*4&O1{<`}@E)0feKCxo zZbJYAYpLmA&k4jR8#`?gGQP9@XtrSI7=espo6XloUe|3IzHnhCt#@E4&g20w2(U^1 zS7P#}aD6fI8s~XC_7%ri1+pi{t}u&vbpGFt2~Byms(>N0EVuj$gH&ZgQ1#-& z$$=U#)+vaWw`#08G-ci8+nlRKSRIwCnxC&XJGA86n)NkXRS)spygwsOv}OD4$5R82 ztvCF0W?@*-Ek%t_t90MD70j4k(4WuL@NJ$+g|XFP#;EALM-NsrEcw4MStv+v#RBHe z&hCF#7=T^7gp`ksLUYvpf$g{x8j76zCDy2NcFebbt8!*R4@x5>yPDUK?ib7-_1cz@w@bvD&*hsBLPE?3oQ(E3CUNJ0?HW{&D5toF#WVj7%5I zn3r6&kA1@H7i|S;<>mF?8yFZ4C3`$syDiaaE5pi`{zV?5BBGKOUR%~a>(d;|r;n+Bn&nts2fJgsz-SI$>w4&;2W*!-=^xd+uPYJb8v z9AT8ayp3_mnp3YNS^fE6S*+TrXwfstc-Q0;Ze=k{of?wkNwBGR$VIKYP|v%jj~pxQIc+?pG=dvd^URA2Tp> zl^eP1 zWM>_o+?lAAUzDv|CG<^gzk|(B{m_yTicX=CV1vTX^o>i?#E3 zB_*!BJ`n$Z|F876&+}XEi`evC&)mA^!*6^*y#(MBx4JRO9dW_+5AW{{L2al1mbBnDJ_A31eG01B;#=%eRg{`qeK| ze%)_aw2_bD1K<1oFW556!WGWivo=R8_{4Sotlw9I7PB|Eq%R-U5l90C!Yc+NKZP^E z><}g2@Nzwmwm8R@X5%*-PCZC&NSh$Qz%sSwYj>{R(*F+_8V*nOWLMvx$~+-G_RNco z$9>qi*6rr3mHz*kfpNaiJ)c&Ctb5!q)-TS_cja2+bMv*v%F;yR?=kA3zW&VCw-p-y zJY>B7|NpDRG-;tumPrch-t_#K5f+^nHgoS6tH${kt^{uh+NC7_{HxlFnTw8J6A4RD zI6Ue9|MTZqIIl7aTnMt3W?=MXFld;r6!rG^`lGCeq^I_O|8B`+t#jbrvmlPi&U5P@ z1+;fE-Tz<3-Vo?$E#RZ9`!i5LWc|T_5Y|PJK90Vw#-OuZLeT(d-O;y3!H2*=(3JKN zXOLVATu{a?(`vY8hHrvbgW47b1{O3e*ts}uz^)vtC>6~3|Jwk#tWa>Z%$bUt4ktty zR!Xuk3A1(t8$WsQmd;?op)5)!%gK_>aek>RBc)@G%2zZ*$2cX-SYQ*Ig444)$Fn|xN!5U}Cf<(9# zWY67xpyBnv`T=+V57-`{RlsFS3<}T#c#w_6$|l7gJO}+?H5*xQ)E)+G2P7c}5mxqS pxQ&JzC}E7IgTb8+ux4IVL3nvhNjZvYBv#(2Jy?T_Epm=cz(v6p3#kC4S0)%2gg0xs5Kmx%jRB#A{k^ljM6qi6kvEa1D zio08jYfIg`_euA&pLaj+ALj#{G0qwpYenW*YbE*3Yu@)Y@A=oSQaUv?H7Fbog@QmJ z9Cg(Me}nGtjfM2jR^RjE^#A3tAO1gE_i5C|m+sU5yyL__(BS{~4oO}8{rIrgLjIq| z;eWTK?f!l*^q;m){DXftroO!92V4B#=Kuf6fB%gC-~L&q{^sg08gjO9INSg#36fG% z1C@fMGX6sxZGYkI6*{_SbU%dd57yV`AMgFRdw=0^OW$kd9}il8+-myKbM3=}*2&k` zUcL$bfxW+dyM6IZ$dB&(r;j>UPeXq^=w3Y4_<_B)AJ8^?8uEku$2}U4FQ4B3_2bL$ z1MS7#rBxbL(W_4UFGf9nW7*?(TZ8NeTc80R^>52xG?YIzP~W_H^NmVXd_?%0%IJk2 zTEiCdy)PSI{?9po{h%>_?15ZgU;lvgcltvS`}=?TMvkU6^n?94?LPhQ)oC|DgLq+Z zwX?HxZ)J&k%}Mz0egXUT`}!?kUPf*FbDzHtw4Oo6w$ko(yrscEnyUG`TkN%b_6`!WleUig(YhP03%$%fP5sLG@>$}qp7U=G zuW?38P&H|{I;d$k(D2@b)=)Trxbhkyw9xV-i`N`z%m_A8RAx|Q)R?*zoA&3KD<7|k zoLPGR@w{xYP~L(5IYx;T7$-Z-t5O3C(?BiPX*U)d5^9iv)77a--VX5tMx*79MH+~F+6bRj^36Ke(Tc-Hw=^tNUFeP(&otY=6=x5NO>FC0KBbN*ZsTqcQK|zM< zviRhGfxGbg>0cA7lH#~H&pT_-fzZk;hmT-;Gwnf*3MZ+s{fQ3sMy!9Clkdz5m0GA+ z=2ScLz2&J>OQ+MvPP3DlFMW#UfBMw9X#2eGv+ubO&4pFRc|F$mj&0ynYwE@To}>UL zm6M^;)$6QMv3b!y?Ujomux{V^6EE38Q=M8j+t1I!lyT2hh#Qr>>7E_MZ9Xefo<6#5 z4b9iA+EU~Je8I*wcxC@POVeOy!a)#Pp~knKTLaTREOdI#y)hAhj!dXtA>RF*WqFNK zpR0bir;OQ{AE(`2+xe_be})g6MM$>J&Gzwo{Z$oHZHIW0Nm?JcI@{ zsH;w*MJDTbqgP+`I`uj`mOAQC6RQD2G%WX?zPjA{li};P@YnNPw6 zQdy~h(O2sA_KZGpEMxr6CtN!l1T@c_B|5)s51sE0Ph8P9G`?C(O?Nr9PA#JAm}OkZ zdzZN_E5cE`u*^fU^#jf&k1EY`{63BBe_(v1z%53A(52co7^cNq1#RF^Uw@aqr3#>RKT6JIsjd!d!P69-yZ$`d7&H z=V_)6LOzo_7caz3WdR+^RZUq|T47jSO_L?x*FRRDSx!f!COi**AH)sTx(W6^!#rs+ z!Cej#5#xlR|_29k}XmQif3HGyyW3Y2jREj%*S4UA7xl1)g9mjTH53WXs3 z;!6BmtU}ly#mlo3wufdA3`yfbjURpFyj&2Tw+iB*0tBBj&B?p#eFs}QIuikN`~Zk% z^T2rj&B}aOsXv@0BmN!TQ3J!yyWXuZshl~`%u1_Hov&v@Nwhb3ZbD-#P|CCU*HbV0 z(O>2nNvOwdX?=dsrnXvY#moPzVkXz>h88X^McN1R1B@baYzkB z@A(3}3y0`U;f^q^ALqIw-NGp=46-jt^SBmRfkDKEaxQ=WEK7GcwDw0$e=)nz!tQgA z%kg8eeYejfOTBH7LP-kh3!8blO@Q4UFZ6xV<-Lq7KO8NX@Fhq}^&hSJZsgv=%+Fj7 z7sF^J#$5Y2i6XRVD)C7N2__n!@#?t*;P|hniC|eNC*n z%5g1$BM&n)r-!wR=5zuMw36+6-LM@7CSQ`lqQ36~q`tbnZ@!}GwFNLEUFu)PBecjb zypg4{S(l79zH)C(-WLIfWozrc^}cjXq!P>c_Oq!O5o-(rQmU2t7(je<^BNv@z(kGn zN`#zT`S7b3H0xGaWVeLlyMjFgkzN31x28_@R-CzhriBhl*mtGyq0BDV08GP&a>-T%KUBbvzWL$m4*3swmA=*R)NTd8NpkH&YlzE~tGYebt`C znw5*ZZSK1dWSTlu(X$Rq11Fl@eMuOJ7q`}IX@4^^M36^nV!efDxuc45o*9dZxKX;y zK7C0ozrjE#U%3+o1>gTqPDAf^~ z2srz5BBvZ;fm{uDrf6o!DJMVsG>`Dra@TSaweMQ^**_WTym#(7aJ?--xJzsX2~4`K z@UXUcsw|m=emePXB18$JY3(_A*?zLJNFY7Hbj?;vC~O)9BPx!12nI7)NxK7wIUlkF z^=4Uc(vLxSlqRGv=_>#gl#Ax-2YV1HU|}A++bdbAow4`oF6+#&{Su<@AdVHu@X6&SWleTM*Qc7RuqMGxVJQi`;iosXK<(K`dQIiioHxLhMuS z9+cj#p(PgeEXTd8caw)?uanI+<7)@*S47t?N(Nhq=~rV@@<@4JO9g{vhNNi?+>1mP zCC_A?RMX6**atv+xSpwN2K<4a3Wn z&LF27Jf#xNN!U@#tV;|Dw$4{5Edg~;hll%U_(BGc5gKef((a&qgz36(-!65^HQ~-{ zz<&1jefgJf4Mq4l&gF42A)Op}GU#^8p{NmFpD|<0%(Ki42{YeTt<(Y$x@EeImnjpr zOeMWByxloP*@Odkw1KT5K1J17GS-S4`pZLoL|Pg*{3BZ#6OdP#4EsrhYLs4-QI8`u zH*B!QCT)K5w)faF#ZeH4V^sSc>Os6AOG2B6n&DOZ!t<%J9h^Zy4O^Z4SL_|Cjnp>0CMd@;IS#>y z*TUF7t`uf{C`gvyF=VK0A=1w6)Q{QY;zlFb`E0vnJhZT7GY-b^&^* zR<4Fw-w9QYGeImo8TqmnJ?0U2{{F!n$_0k)744I7Q3SFWXF>rcurwI~VXVC!UlOTL zqG18wLsSQ-mHuVO!*cnxjAC~6^JY3A39tYX`-{&e(FY&_WWyM;#_n?1?^q3%S@v2j z_)Qtu>@CxMdRQClob@&}k!|a6UetGmsw~E}C(Z**9DTSB#`3>zUItc(ujV~78K*Oz z`Ug1)+NerPT-9*YmH(4Iu#n_PwWK2wNuePzk=dP~L({iCqOV*L23VR8B+)+U^lyAt zdc>o_glbZ~v>sje;|ZV8B5LwnQM;{?t>Lq6w8I?Yg)p2ejwh{4RJoPI51_BIm5_D$ zV)gY|9_07ltD}N0&a0}eP9z{Rf0{}PM6LvYG=V!oDr@aPu5Vge>#jwaJ%~$cpH?{> zk+`nw=MKvFBc*QYsmWk1#6(e3a28QK%8ZZ^;Wkt-I>T(}XfT&KklPJj4O7-VO{hZ& zCoYfNv2|cU6plCNBDB#VEm&cF6_1uSYi_Ovd-ECLY~%!2@p@s^>UQ~Gkf+hx5LV_m zCH13FH*|_-o{q?O%?>h5QGnaDf~#B1WU*#0-XmHCG?6HmJKfUp$xuO!f%A;I`QRc; z4GC+gzM1%av~X(4t$A*?kV4e_30p1+cpLdtB|XAO)aAnw;S7?x#yDkCkx#BQZ|Rt^ z=q%*G9UR-?9Y*lpT8~nMKPtbqznDteo(>jlkN&QKB}|or@g`UqwX4H&9pkhppR%fcyn0?VSWw?jz`+J6O%GG24DH zrX!R9kD766(@53gZ(vGMJ=oWrg>(CKRdUIGa3r}v8(}*^_QL5hhh((LEp40fhib#x ztAsd7)QlU`?Mh*@eaVcoH)d)e4ks$r`4Ebklb4PZZa}R8;%_$oo)I*+BX+T$9J8GD z7Hk@R2!joK-N3flg6)pI)yyXxMg#&i*$lhLH{;{!v_I2n-}sFjDMCW^_o%9-u7+-& z`5)wHT88N$l`21f5%W!o0Ny7?R+gq55{U@Xia%-OxN%jXcU1SS?U75HbQpv2$S1w6 z=aP7Z9MhoUcuy28AH)6^VEa z%&fI+z7bR|Q>qm^(g%6rys&@uMx8z78B~F7b8qe7v=gn3&obGzljhdHu-V^kE+Zo4 zl0H|fxvQir^+FT1Bzi(R>Hh+SBZbzk2%d7hTi8av+ZcLMY@kf)y!?*30%=Orkk7cX zVg}XDW`r%Urze6LldL6Yr@>7Jjc}utB=4J+aA7&meDkyGGnF9Qsv^~9qrYf_Q_3@02d_9CH}IHQ#*kCoaz+{uE04%G$OuH;mJ zZQC(XWdlnQ=9fFs9%xejZ84mgcv>dntWjnozGaQxULDm4C=gopUwK^%!E1-aSCg0} z@Eovb$ShMCl6HQOj?k}*7MI4^wB&)NXD?ZVeBs%5BeXlFdfHmm2zRnJv1Nckm>meK zV&#evccku)OBs3P^~$G}rGAA^bP6GVBNr~A1~sIOtLo}VYW~0JLlsTrIw+(vh*)xQ zEI|4S;)G0?=HTwc%mELcnCo|ZO^BH%emO<_>R-=KouqQqT`GFm4 z0cM8-BzapqMIKYX_Fc0|A;hP7ww>?w3j0sw4@-7Ny}FFcf`4I`SgPiH<)MSP1T{}5 zNbz*aRXf=+>oRwlm4Elg< z%}Q39tv_0y$mpW|u?1JK1$rqGce3VNVDJilZVbV&{C!?O*&J_&DX|79mim{&f@|~N z+CkU9kjM?>?&pPrIJs#b*;3-oaelx^N1;i%dmt`UbE&@!F>}<#UgdYJ$3Br#H2A>c zN@1#AVJf=qy`wb5zWGjJwtyB^^Ek+qILdA8M}^ve32Du_abVG9-*Vs67T)nQAG^8s zY{64+sdwQ<;1zcGvnP&EmYF4)mt%F08`_B8ikKG~WgG7Ir!HHmt*etZ)JUrQ+rDO{ zHToZ+cEfOeiC0g?R^HAz%w)|Gt*O5TxBMcWiw#7_V>|>Z)-F|y$x8(`TRS9123W0o zB)FGYF4X$YE=Vfp@{A7>5oXN!yTMm6D{ZbVLBJJd+11O~!I@zn{RB0u649|0FV)7# zHe7C&e{TYm732kO;VHx#9Z3!*-NiZC4X(lm7iN*5yjnm5AMY?J+e0s!Z$#jzE{y`4(cgCu&mae(_FLIJ)i7U^W^7Egx zPK-y*NBYf2!Vsz}EtQLB)#NbmGuz*2*qDym6l(lF2QmZ!7p4Nc?EYb&QckfM41 z$R_K3i;UL&BckK9ju3OAe>~B-N{;$ z=x$$9gI96bWfFs&q*&KbjMg?Vx88h#$m9@I)UK(h-Q*rN698wbPSYc#Z?EULd%h=V zAKln?G(c}7K(!ERaLZm{7;)9KGhR=oUl?9ooVj{&K+e=t;IqiC(;}y-o9Ai@mC!u> z&?==lAKA!Rb^6}Zs?7>mb=Rdj%9+q^&2v-O%c@N}Apdhq9j8!vhIBf}rxIJio2X8L zrsX<5(5utzap^f@vA}G!hHIN?N<-C^$Y?9XT}7yQX+TEiYs6q}!@SlRN}yJF%+7+cdC@)ttn@ciyb} z-dXm)%@i-?ccdo4+#9%~qry`PQz4lruKMhRw7whQ^3^9H9}53PCtUFxIbyi#-=ium zmP2V~{yVVJOp?zen$lf)kBN2gBsfZ!rtFdK?vpTxQc@j_yT%SO^;i)L#II=B#7@7G zFWI?NDse~P*PloyyHQ`+m8~bne736c3PBDYMtFF6u7^9Pb;pxOc_$B#AJ<-WAay&` zN|oO~lw31>n-=ws8Yj&w7bUDAdjBPL$`a zgUd5ahpSbCRcZ<=nhUsU&H$XU2j|G}{vVrh=jI3W6Gs%_GYbBoVX1F`Yqvb{!)1dg z?t#)?13sflK~8oJy4evlluUlj{C&Tj=kAAV0WWSKNAaJkJ1!gX{m>-Jtngtbw1icw zw^eQ|n}b?vINH&^6OX;lS>2aA=g5o}VR|oIt7=Lpvl<}G2jg2?wDXN54*g4T(+JzZ27FC_WsaX&TU>I!Ks!vv}a6)DsKbXwlO?Zt<2y17423O zpb0C*gY}E0n`uugt+g>m>$-;XDduznQFH?0|4}&_ay01FKn6(a?7u2UA<0w9k7~;% z6>3Tn!O}!pt{QczC<<6f^e1)JQdUkHJC3QfN+t~w@lvw+AcLo|%sR#+&}Ou-rR3-0 zYLhJ^*ITM9DXI{lG{s(MJMv0Vd66~t3%kJJerl>{wm?Bb71=yp(XUjyQ}H;;4_caM zU|4L)Yb?98W=e)yRla5wQJi=PAAEi7gYR0@){_^pubm)HKI_l@-XCG{)797shehgc zr?g;ZgHg6zwSgYotQ6TGGtIa`zjs|^#%vV6R?FDiBxjng{f--F>f|fInl~+{Q};To z`UL#}ffW*I9!|T4a^J3Db>F`QSf+aBLFV}P+a@y4nj7he1jfFlR@t&#l5AJ^pp^O5 zvi`K!sQ63%GM($MlJy)YmO9>$=sY?4A$mvu$XAPdj$o2(&w{9&tMSY>g{?iip~DZq zSWw-Yc=aqwgL6iFDhyRY87)dz2yAnWy0YI|b1h+B0?40lC1*lY(KW`8Hk5P0*EgBX zC&Zv3PPgfFr*-Xc)Qm(wO<$<+Uaj?P#mw4_?;d)?s?5v&S#G1=0XUkej*6AzE;QQE zycyxTs*uSm<^id&CK=crvGSx0`UO^t5XKWCY6J(JBjUI1D-^w3x?E3I>TBGMaIF)% zKRcT96kiDW;!4q1g|Q3AC}VMHJ~;P#1^quGs5h?9`Q$`&kUT@LUfI?kj-q?kp*rjY zks{ZcDVpg>qWOd^q^;Z3hXdV}JR)M4`+eY4q+f3G8uQufjs0Lv2RmUekefo`c|D(5 z3{(+4FNC%6s^in5<9+)Zxx8=*Tac|S6l4cNYvRTJ@kr=cNHm%IP9kR9XxvVB^daO` zm8R?$k*X_B*JbxuLFV1&uk#4?e7H8d)oo_6fVqp~ zq3Am+4_PY@9|~bO+sPQu?q0>bA3SpBNaXG?hL=b>P@@V&uc=TP+!-{I|H=w8r$Y`& zA;u(aQd*cR3DN6^^}>rkAP;o<-XPu_-F%1(;J zW=?p_tGXPl+XB@tFa+5if`W@eO5tZC>R+btO=9LJG1F!W3e@U%bqz|2U0Oq9q~jxF z7Ko*@%%M@wW%Sg_a26ZcGfZ{&-r~6M!GzF}Wk<=f$Zh+fytvKp9636{O4CM5;jTH- zi!zeVj_TRlQLx?1U?k5ku;Qwt;v{98rI;3Y)(%wr)T*5~lmgXInlKd-) z$COS*>c~kaD_LNbL621wUm)0Ikar4Z5$BM9-l)8hR>ap-;6>iXQOg__s``L&@af(t*~TIdaLYlG}N9QaRs(aXW7??w2%nYMiX&_m;`y;QpJ8h!*!NxJ>=}OULki0dVhj9 zkcyp}?{~85*w7M&;>YKXP~3eY9z(}FUJ*gT`eXx%dm17H7*w8kqkLF>fJtKYDsx>K zbS8Ti=_ZM*<9`d2<0f3X4z1D?fY?BuR~Eb|6x31`oph~(RO zD)HMW8z8_;R6!8&{S_tCZz-brn`E;ibHba66A)hB5npQLn%-q2G?1N*$Ol*0q^vby z0mgXw_58c}~ZEX%+qz$K4VKD=9FibUUuos(KuR3t}_X0QlFYLw*V^begVt z7G{U3Tr=>?SQz~<)z4&LYl1F>)PCz=@ zNS)@9sH-7m{x6f{5sf$!$&iPQ;8<0J@ugy_Dt!?onn_YCPhC}@be>Wt@9>4!w=xTV zs>$K1$pOp*oj_9!f|7wZ?5@dX*`4Lc(9sm;QqLWL5Jv1j*O)$X`($a9@xBK86@!h$ z7z&zxVIlj~VkfFe zL`JjxPC3fYnu{rwZ#!>7M0Fm1~@lwt%3Vw0hpro%&Y@y^uJ%Mw41=9uP>T=RUQye%DT^~X|*^A=y! zYQ|qZ z?*O*%1?L?-Q_Zs*#{7cVjiy`trl~E9!e7_0{4+Q1QESmRF-><58D5B1KiE0{$v@|l zbL9#O=1gCmVcqv3dJJk&d5&?rsMwM*-bJn)Z% z_LLJI=JqNl4>`c7nKT=sio2dez@{cBX;Xpjf(jkSr@wv`)6xgEzmcO^bJ%9$zp-4g zFNQ>tt0~8;uSgX|%9bMbi--r*$fHV94Qb>J<%d6I)vvL$Uf@r>3jAe9e+VYid}73tk-L6uikc%^x`^ z#mJU+kVqr7lu`MPPKCzKx}Ht0KQn`p>+SfSq2!v;HOpyx(P3uXz4WsTXUwsnMt3DU zqDn^tR|>@k23o2}b2K5k(@wC()Q-h+H_a zV@9=lhINUvTdOOFRp$jv{o>Gf2G~`EG@BVH$1A5vuTST~9L;6FL;P-kJkA=VuV6Ez zm1)Eo!_YV!B}e$wVXe-}(XmJZ<{>-GsL+v4$ za?fs|4{SpAjG{{LfX(kFxDh8kLHuxGz$jQ;gXPVd~YAr=2iY1pE#8DJD z--hOnA#M*2H`$u7CMKXNKW2=Iy~{1k3Lm>1uUDp>WA13kHN8H!Z~@w^Fs_ylDThHG z-I|t?9Xj@w4U^sNFbzCoz9L9hgpBk<%Q2iQ zdFA535<$me`Je281{;V*ovj+OIrCqUtNx9gS8e&M_MsQaSGEXqL^DPx9ktZe6YA0H z##R50&bNL~xR&dC&$~97rT6OPrw+gPZXaB-b5qDO9D2htJAu0)3@JF~t0UgLYg*eb z`G=VC;?*-ex6!UIf?S91FCLqZC%8E{5Gq{54<`T*i>dc&R*Ij_S{i1hkur*@XU3{o{YM?~my7lnACbrcMH0{}J?XP_2W!J-!_;oJCb-JCp zm4U*j?XARjl0&HxDSKb>fQa@|!fdF9npL^1!y2)@?aeEh5A_Mc<5ohGR`BEk+-@9D z^zz^_u_I1-?6!a%!DJJsor%((wZ6)3s>>7c;fCQZ+mfz_gRX~3WL`xKLXv4f9NZrr zAkW21$BQi;_HMIgbc`-37}r z&2eRoHDi5Pxf-$2k0wtWO&FL0+HD(JDO)+4qai6b-g3-6%#(|@W^N_+$_dAMW!IRt-!gR4H3`GO~>@+Z{(5< z{;mk72^}qa_^-&((Q21ENF6;SD}%{WQ|U^QETz_;(s4prr7_pg@k5cis(44pSv&@z z{OU#VUH;FH*u*muuJs2K8*6>$mu71%f9A*@9o$wg0rRt1sObX1&+^|S=-(RQS}*X+ zAH|}|p3oQiUXV5|uu3SILC;GY%9~j6B~n+w@hd77VM1Rt<7XIGxxWgiD!qj#+}Ei} z)?ihbZ`6|7>#gmi>r&byYF%jNHzC&P3rM*VPLb(nURX}PVev5i~9MGKkwJ62V%Q$kq^(o3ZU_#q{H56s++O*sO@ zbKTthX9tEVg05bq%tr;3uy?u^E5EVHFeUn)x7k%&9BK2)4A3|a)YF;pnoitmt4zu8 zRgoI;HJ0#+S71cy@d$omGxykIO%vI4QM@t+&#tozb8sB9y(h|IUU9RT;4IXCXTc9| zasuU%H~XyOrnsEI-Y5ZWHyBxZ(SI}Ok!03$kT{d}J65q`VT6PU6)J((a>9U$ZE>d# z*2~>E1MkrcC!M?J{a=W$Z2$@nC9D>`_5JgO`G@Q5B^Tcr<)^fYVpfJ1>s=X|l)@JZ zo_P0Yu|>!Xhz=>#C}g4tL)&_1pVg~F6#Om{$k+rHq>-8UCmWLtozNZG<81@a28 zS2i!9q`c%d#5%(^z9_}}^MMfeQONU9Ou}@3Ii)v;(1p47&?^d^dP>pA2Uc}FN`Uj1 zR3!cCH_nY|EMC4B6o^k-4;ig7yJD0i)@11UV1h5SDBh%TI{C6Y)dsJcq+s0|Bog|k z^i++}#W>#N`w*G0E{5fwPLkNaRkI}>m8o7k+ch}^A?EsG8oy~AA_(rV_{Vg*7hfma zUZ3&YeD&6zyVWzgz6;VEI^C+$2fp1}U%T-6%z~UkXdvmQ&uj#oQ%x=-Hi<`M<+lB@ z0#x<6WwJx0ptbg&j>hGH!0=6Oj;>PaY#7vtEkrs;WUUG)9H#!Q9a>ojWFrQ)A`0;C zObnHV>RVU2=7tJkcbV%gp1n~`Cobwt)X7yC^Uq{MMO5?sSMAoRXl7l7F>dKB};sJwdO{$w6$u1whdN~ieC3px6 z`e$s7m-4f}A|OtLa{z8R7@!N>QJUz96pn#5iKkD>Y@_wQSd3zwKP!Z0j(`mVPh?sGOE~dtk`q>{;BY3$4~Sm`#HAFAXc@3=|8&JCBrvE3~j@`5*?XvF}-;J zka}*G>Zo)O%YCuH=F9>u5i2g(%qtHw`^2=3v+R9?*V`G2kIl`ymMPpxmi?{F&d9Mu z9X690qf%r>Wp~J-rNM1y{rT=^ADn_Hsubwp?Wzt9v@pB7)!y~qf#;y1Nyzp+mw;k4 zIN6v%_QmNjyX;$NddYJ;ht;<0fGbtqnV>ujG(_g_a#hbcU!0d8vUBJ!+t(uWcI~K(bM27O=JtYjXtJ2Ow z7i8Wh{VYUZdXMtlaEqx?FJJEc*kT|Msp#zHs*R{-^ujx~Gfj#d6mg05g zi}-?-t@bF%%8Oe7To=2uH}kFB?=pM&+b4CVGM{=fG~Jrh8I!n_OrCa%Z0-F-KdVWS z6;*#VbId$&1$}OUNLAC|9~L0hycLL-$CR@3yIsG?*^oxAI*7bl>`s3QH=2B%e3wzz zD%;jrPbNOh4U)|wWu?%f9Ea{sAcYRiToh3NC4h@?dX@KY27tlz6_S5s&1N;Mj(5#T zb>4Vl-Kyc@KhGAtjx_UpAIU7~&|eAQ=ws=ONIm+rWxSsOiy5gQIo%wH=Z_2! z(8ueiX~4>L>Nk3<7#--zbo7t^MlM$!{<}gGq$UBD0RNXbniKq8h*VZB=MpkYBKpw^ zm0DR98;{>mX_g$@+dh%NzANf4%$55ti=q3ja@BLBa9SkF#2h}Bj7V%b^4O3NKNxmZ z;qj_*vX>e1wLK;V`K^3Gx;4c6A{Wlov^{$?aZN! z8U0|`8(lR9^q*r;`_o$&de}{Z_wX+;r3c_i={Xn+-axz5S(|u~Ic89T^GH|(@fn6^ zsb1P3^*KG{RsGBh$-A@DhhKa)jw#{5(gy>46AaEeC0H^T&K(PWA&=*u*OR(GiQn8d zFmv)diACNvZct6qV1j6QoUV8fL#wCf%51?&h+1cm$PVth%7t zQ^BOK+@crKK;|>y9Mo1lXJoIrmNEUY9%1hX>%WFd=3Jf-S8I!D8-F3J){SHUQ&Mk- z9u*HhueS{W)FJuj(A9Gd;2%3RZj3i!eP$K6FDPon2N^F(dM4KmkQC~&?+nSu0M9xW zR=U^=gAiQf^V+_x>>tCPk563~d0=pr1c+px-93Pq>oxduIEbjjN8rqHGlxD7W3wvm zAX}qWc7K=X%7vC9JIr)M-myvY{Dt?7b>9Q`{bW-iw#J^uS45I1fH8ra(!pz=om9K$ zz@Mf(gr?4c>CRpIja+UX$jghi@_|;n^nW4uyAG4Kd1dob>QEi4sNUlzeG2HOY$2lx zO|v4P2b|8F-x9LAbhBnH-&>JT@1`X(;yQ7v%EXJT0BQWWIGcLoe2FdFo_g-?4|bmZ z`2hqkt|RpGs)=z9|w*t{PndX`M|S(!W*tmw?@Moo7rNtBjyi zzJ<(Yn-x@l^tZ^b`VD*mX1Z&qCEi&nHV7@pI!{5B{lS@61Z4QE%A$fOQ6FAc|P7Y1+xY+jZ8kPHT`hQm?4d=@>Yv?0*w#rz;oC`%VEX zh1D#u;K16wnb1@pkql9zmd%Lz;$cY%!x%-tv5cU$F6nbM2=AMJWRoJ`4rO(8uc`WW<%G;OsI2UsQ_cg`4EzYo14Z3 zjfB$ojgO8$Ph1a_X?bH-Id4{nYAcub1qax*dWzSw`I_Lhgs~&MPnJHb)18&4J1g}Y zxnz77AE=}9J;Y$JTiN_*M6Ee@?ix7pYxG^sL~TZhKG7`4SzJ5LmCDB0Vi*KPb? z3K>!n({kl6x=h6EA?*56}6m@jY}jIawND z_nD}Y^UbqlwOobdF(*_JwRqiOVbE;B*|Rw!E)z#eg8RG7tn)yElQA{@zQ|PZgu>fT z53A%SUD``5=dAgoHs9)I#P&Q#$kEz0S}j0bU0GowsEdu?X zozbBUNBeRIR+F`S@JjWan(K8-A|@YiKYs4XRgql(fSW^ASjf!^1(n= z4IyFruSr6x{o5v~D)P#w^szOJihP*#Z=O_Co4xX3^2*2AE6vlpkurLxo;`!+l<)v) zEtr76&;CG?qe%RSsqGeU+*{IxO$p*T=x+JJ$lt@cyBlZmxJ`Cm#|WI@oGRXzlNx&d zB4F!nf1!BeMO4Osdcj3Iw6;>5Q*%*|kI)+=#Go3HdyhBo9rr`ih-nQ!jvb=wMTsTU zS&bqoJ_d_UEBs-wO^N$TR8ODhD$?qy`*p3?=UeCT9Z}zhMD<5Lw)$1~2}3sfVR5&Deq+lSPf1U=qbBJQzALxg1b*k10-CTnQl`EN}R3azuw_AOeM~BPM2gu4& zJr|m4Jr=w&NG3YU<*)Y=!54Zb<~{C_^&QMB^TQ>s&q=zGz0Ib^0eGRE;&zQ-%aA;$ zSHq?#eptdC?otKdpn#mo;X4(q0fbnv^wR*gIMrRDsM1ooJ*RW8M~LI;A6@oL%?cBh zUx!08#?_Tsg~+pKwcWD3LiKoan4Qbyx^A5Dp*wTw?^q5lL0iab2L-7cfbcQ@Czhl8 zi|)c-f1QrMi;KQ9FKV@)nCoAvSDilMF<5;{Nvo^;-drWuP%E!quh-P%6w>PSZjn7; z;urZv)MPGug}pfA__(H$zY?-KpXuC%5OFWMGr`hw(3XCqjor+t8#QNK(0%O8*dhW9cC>q`ENCySZ#FG)z`q#t3A=h=)QPSRbdl_nqWGxb zV2-k?lXsoxbn=dkht+}9daJNrz_ck+=E(H%mo2sjFOyYy1uXA$V2w7<_gshr(39&} z3Iwrf%5N-o9mbV-Aff1mhG7(aWGOXe9|QBb?EO4S8xI~{FKc)6efC;kC{4WRR@@b} zj=7e^>8v}=@6tT}(CjriBpxc1Pk3lYam{T7vD?C`dpM(uzILdFdACnYoE)rZt_E1~ z&+e^^M=v&Tf7_S~o?W<*Yw3mm(7cgX+l@lo%{uejr;`_!rQy51DylS)$1LANhsF-TL9>(JPbidx7-{wlG zQp@lxsZlE=JRKcjABX9bm>lUyg5`Cab2X@qA?IBMrr6`1xe6_#j|$k6dN26H=}njx zy`Dlp+q;%;pBlbPfmJ%Iqf-6Y80mhmDg5&{a_exqzkNAc0)dvo)BktnGz*F5%Nfz@2z zCf-;yTs_BVIp!$y}4DnV2u92g~(Up4n0itmEz9qPc0l*10zp9OKz2`G)9C;nG^S(==EAYzQ*YZ@}Su=*xUpJ3lx0x)+ z%Dhre6rXWEl)#(Q0TXXCSlSM-fQ$YBTT%T9d&Kivx9ei7?#;oMju=7?TVlEm*-xaa zU|}v>qDW(xOGdYFZ(PFkvln%ufx>(ww3)!IO+=e>~p6p=d*{g9t;TxNguT~$HFa~$nrbbd;xS?`_4H$^D?2q z0qQ3-=y`tQp!f32XIQ$>4Z0B2e~{zy{5|8PZeTz|?tceXS}aE@Euj~Q5Kjk75*%d+ zi0V=ju#$At^MgXmUpo$!X4a?D&ExCUz4r_*=>z;=-6o&8r#r)1dXJlw$Cj2dUibcK zD1m)D_o1fQX94?k?N!FM$(PUKv5{OhCYXiZwgOxUA3<{-6C(Xp-Ar|S&rzpP*bx}m ziONiMN+}cZZ`mH|6V{n`ldWRDvg@0w4}oW^n9Gxnwk}g!)-AnS4DJ2We7p>M zv^SkP;Y#ZEYF+nx&QUoFW7z}244K_ZarryhO28K8Xsn=$wsAR!*!A*VvX)a&Niw8( zeaX2mbS0lMf7(=Yu3TST%!JGIfi!{>=Ob?_?F(#9x$-V-pf)hcpqzcLezxtK&Ui=V zy?M2LJqQC_Rlq@%fj@^Y#%x*QUHM7?v3&@cU!}y+?8p5rI~JJLSP_Xyx+%J15)kja zCz*Jl;HGT;RMHnl2o9DiB?B2Db#mNy(szH=)h+zNz)*W8B}RKdrScM14VJTUE-Oh^ z9akN*lwYyTMX;BuRCs?kKq&hcHgpIDH2SvM`pAu>btRiQq}nXmv1<=bMl8L$LnW8q zCw44;dZ~S4zD+KzMp|4$a|x_v{i2L#{4`KV0rya(*t6Xz_FRCOBh}BgL;ZaqtW>-O1V`SKq zxF;7NxO>#6i!_ULJ0k^88$J+t_`kk%YC!A>ST6iZ!0VifYSqcjSSUmTo$zo$aAvs7qcPwBUkI2t2VXWO%YP${+IC^QuI z7-67)#rI(GFzB{x@Gsrf;k>ts3$Ynu>-+8wxn`JKu0*Iv_JTjHC~dCTqVtQjU?zwN zvNB)}beSG1a+Hx|TS+(Y%FWTe%Rv&qfKIr^wdio?aq zim7~$9qz=7oLe@Rm^W7$%_W|l@ zyi}Mj!&Gk(wY+GnQ1Rf6WK-jLSl&YA2BLPp z-OiM821=+4E&jrU552w@Bk{r8#Bb9~{~-RA?qySvma1ENc6T-cL_8D=MMqf7_Cz0N zqu3RTuLvx%FNkqBbYsKl5775~vpszYhI2kOB(}6>Ro09V$h?P~=}Oz0`&bpemLWv( z#TWgLK71cc5~YKiHIc@aQx-{Vjj-b$6KNO^U3F!skq!1Sw9dkLh$rJ=XnUie-^mTX zSm^H028eCQbjPZFb%5uB*l#|oOz7aptjSc7dEZTA4&!PS2nB0voZqBw0##^9*dGU_ z7k#DYl`TC3JA9UT{VVXVDMS23>oClOue8~9d-J>$CP*HVtzjmR8|#5ic4N^!XMrhm zn|p@s&+%OoFsxFjO|w046f*g1E-a~e{NSX4$0TR3M?UMEjTT$dJbdaR|}vVv83qt#yxi({?qRJ3UCsTrM)$F%uBLq*VytT5?JgSmCbfSh}}T6 zh3NDMm71@mgv;!P=GCIK$ZuRgj&o(cy80d8EeG@D1zQi>95FjsyKssKbVq5f$w1|+ zFEQIx?zv~$*XR1W9M4RW71t*Xk6@y#3+JGTWHf?@8QeMt!wX|JU=kfZxEsQ4*7(F> zFokXsh0e1J$gTMb>4Sm53mq#0nDSrg1FoU?AJp-Nq^3&xqM*Kcg*#=?j~5yo+#!J^ zOI(Gw+`lSW-StkFzWR+*foJdK(X9|$R^vU^;NDoEhsXpyaq9N_(P5p*e9 z%fto(WfHM>Ei-_fid&gswidY06xuyfq%+zLLfKPTQEajG3s5Yd`JClmtI4yHOU6v! zS1C4Ao%O9ZdFZ_be8Aq`lUZZ++Y||k@;Lyv#T__l6id zANKTZ5$_yy&Pv*;I?K><7`xWtpa0Pj z&1Q`pVM!ib#h)S0CKcksm{N_Qq!siUsC5 zX;~n3M^|*bzzj2ZB5RZfJau>Eji#>P3KJ&V95NEWziI34`GIkfr*S(GnN(u5OvG)g!_Ie#yZnpq}V0?>giO z`Nh3Bt>#J8X;XIdcSvPt9^7m;MiE?#Lhoa+LMhbypXzm5+YEH~{4~aO0m2WVJX_X7 zYF(Lw8Vq_FG?X?xAs_QlF0HHcwKZVhw_EjX7SCrcSAW~PamnXv!Z%LwSM#{>p+3yV zuC9i9OrGtZ3?sG-`Q(?ubcupoF6^E~tCOZC?@`}|k~ThH3G3j&m<#I?hHLABc`8?- zH9W&r)_GVF3c-^$%0$}(K@lYPhew11s?fgvwO+SJ`@hb*a>lq(VP)MSc#bTrvd^n3 ziLc0EMQc(0%A4$TmQF49E3qucbsMo(w_?V^7@TFL*RIKcb{+G$=(>4-mRh~avt!PN$clbY$sR7rt!+SsN)Z7FO>D`JX135h}`1u`Q*#iecE z;4{vuTf(iVzxafTI&5tFi^}er)6h`%#p(<$m@>O2ST_`42Q%|0JB7n!xlt=qubY{= zc!6q(`yv%H%2X98V)NiGX~MzHTSStV`tQ!=>z87yl^tmn>%@X}&Q}((EBpkVkDsUr z@2s4nQ`UGGG`mFFRG};%y@@r|o)s*LsIE!jbKshyYo%jFt=c;~#kk~nRX~-r6~Zd7eTK3o{#|*&agRfAi|U zh)b!Ymhad?nTX~^?NvtY;fi1lI5>e+*R@*zVjh%I7zd^nQz8-h`o#28aaf zlFPV!+@Rcm^-36EPwo<08F28Ij!jZ}V(t^sbB+ukLr?=A)OjrrwD0fU{DG`?iRNHC2Bm zKm=uWrR*cS*m~P1Y~qe%fHOS2VW;@YU!x*he*IirOOjzJZ#)*y&fmDDCiu-EKml~g zYV{hDt|72U|87|&!;Y3v;cIWo|6obYE6~=;A<|^=kAqJpfuRGKQGYMNO-m%Nw6Jxc~zWg*7@9E;aZGG8@s}XAF(@!;+fL;^zPSNDf z>BtEFXk4HF!SYFMsYUy1rZ>LJe?94(ibiAG3i~a$6}sNwXvD^+Khi^r`Le!Yn%~{T z+3|GD08sl#(I+X;c%#cUeCQ`@w)h;AN*&>J8?uCBu+Fvyzc2xoY@irsN#4-P#nN`gD4#?-WgloOW{w&r!)oeE$37k2ROJ+Y$F*gjTc>uEHi>*Pvw zdPo$iMT3SQSfF!qXJ&;ZX22cQoJ;*^MaL>>2%}}X^7>X?hLNp=%KaqHD4q{{ZRPM; zK)ZK?5m&;E6{LBmjp4~v(RB(@-+v%?A-2&YljX>UhOH_8?HXyAuU__Cr%p>JW#S!Dbgp-#KH%NSSMr>mCEcv~_U#DzG?GEjxNZa$FBA$4_5n zEcIlDFn$=`*&yoXTs?Vgsm}jnWuamHQ{KwnJ4r8AZ&8+QbbNpEcUmOnB*0EP6Qd7U zX*Mz#l{dre7t3B_?e>RFe&>5M`#$F7TWI^P{u%hd;upNG< zaM1)ONOAKP1^++#u8Bx8DOm3xOA-V+^}mq2;E|ADWh!u)Eb#IzB1gGYvgeW%Sv5@{ zAqb?K8>Xx|FNgC#(9!RUT|W>#TuRCF^YML4wji2-HIj5KWxz^V#(PYOtJ^fT2KY^Z zfXAxCO?|(GDP0-qJ*kEB5OsFv-N7>A@PLloL@!yk6f0xQwB2@Kg@}-QrfSb^bqbFk z%Y{2#TlhwkS1@s%1J)Y%XqmH3;xXa`gy;N=5Avav@lmQ zHFBW$l$i(L+C9C)ZE7GC%n?h*s3hk5B`<&@o~g!mbcNrwpILAnwZ4(J%J+?X4@dL& zqiIMXd^ndwC|GPzXx@t^Z!SdoxNW|UgZA&l7mD+X^r70#*?^6Bq|y5a*NDg}z?eeq zRt(yV=#9re0ElW7Dz^OUtN*x8ZM?B#JV=m*y?n;(`EdPXCQ`!~weP*q za5HCXvNp5h=LkoyXX2w(1+(Y|`^05(#pN?j>O|KCCz%vhKk&CW;9G>O#JQ29YqD6U@b%mN zo6O6TEJUT|l^X%KbS5pVdTouuBK;D{4yR;W7nOAzJD4(0ssk&7jU-InxYELT^E4>g z&WE(=UU65-d1~Kz=dELl=UM(~8c*_z*bcpiF(>u(CK+JB?m zg^CqybJ0DZQTqSWuTs#GAqU&X;e=Av_O?-u_bwopvUee2EvhGw{clLpFG%XIG8F16 zlC$|88&Vw`#>GH-msA72fb+`1@~B)~;+S(#N19G63D2>9CYpj`HuvH;n`=Pe7gMZ36MMmh_avR#R2QNI!NxE{o z-jrZ?Cugh#EX}qb-YIO{4;KD>`vJWT@^NSJ`#I_9-Zlg6v-m$Asq)D}jM?AX8-^3z zKZ`Rh|sK;%8(i=U=lZ_i!l}MP?;y5ju zEJJF&MJ{C<&!Cf-CnH*+=huS`ZSp=9IRjRl*{7A|%&$!6cxUViS&QPvRJQD}!iY)_ zh2isJ)oTZ>xr*AlG>j6g-$uJp6YY7Dyyh_UO15BBL%{<>c6R-1E}%@lw+;hc=9y4?~3R(24xwk!YAQ~cD9+# z93{`$udbpXpQ22!FgMPloZrYhWYfP0Rc|}uYS!3rRm~BqY;>h!MP>-Qjt=aR_aBuU zS_5D%=&MX zBNItr7o%Vj8FCq9r41Q!bl!~ZkdcTx_~n&%cr~8p3mLWS7p2K z8G^{+7sZ(E!L$a^K!vx!x2?@IvreT}p)s29+ECnS|ewVsII}T(oQCKK0yhxUPFZ+tgYHftF)Zo2Hb=$P&R=Vf10P zX9+>b0nO%^5ysd3TCm>^d|6@}OuHM9YFy%%(w9!wJL^`GdBhdJQDZyYSYi*pAI8XL z1*U)Rt(RD)rnB_8InlT|SsxE;mt7zUKVsGp?GkE}I6 zGtEtW5-S_SA5g&%;eAgD_{f;01|&>L_3bTjRo}@r0Mo*0=pyBW^N2Ml{>+#Z)&8Xk zp7TzQ)m=_`V72K`>Ib4K`J{FE6?BMu??uzjelM@x^L9p6+|cS`yiG*!+O2l{w-m~g z6iUb3BGXKJeZK&ni7TRE3PNuZklq=pbzNHLqi3eOZArz3nRJmk;S|wcE*e#QHYBaM zrOhqTnxD*EZ;+zQhIwjlx&aW{OQ9ccn7CroU3jHMY=;LF0emyJdFQmnD`3SnVZi|= z)=->({2)OjXjC5906JhAK!|8F*WYtW{NVM?!TsAOo}a&Ye*Q6C?H{hkfyUWVNKA_G z{ldlr>!0DVlUA>hL7O)w;S}s@|0A3xC)NwZk+% z)b^0^!CKEowObdPVQpQ;BCq@`H~r-3>jtYa^e@O^cz-0BH5 zJ$l#_|3@`)g`mkI( zA;I`b`qL*l5oH*`-UM@f1cyPEST^EvlJ{Ykq(v^w7AVepA8)Vnq59c2`vPc-1W;OW z(OdE5x|3@H5kjK<#_y`V&IsexYB)z2+qqY^c1(3tZ!|tA@t$aGx+i zI5L%=F4oNmfADeZmqwA_TYZfLa2Tt=Fd04|3U&Uy4I^nBtKY!+>Yq~kp zx^kue6v2$t*aR>)W`ioOdq=tib2M#fDoPnR6e>FuYDEvn3sPK1vQb`=o3-frtv0}1 zrI2skIX*&%m=R=KAK}$)dC;Poi(m^*$^Me!xV~J-wiXGrjMo9!;sYeM`K{ACIU4#r zORa!;<~}8Fmwt(=_cq%(y%(I_5STNVhXY7obJhYDIL_Ly$YhG}%9NDYiK3uV_V+r< zk*wCLg96Q=sGy= zm|Jb&4z39F8)IK-&skMd7^rt8goa?F7qU9pQn-yRO2+PNYTMMKoA_=$&Po5PUS#+7 zd27arHg2g6GuNUl&9q?qAl!g6zHNNRcpA6alr=if;f`Q@WMXaC)?_vK*lVd$;TQk! zORl9J{7;V=nJU$06xr1WZLz|jzj?3$Mxv%ldGKhdq&K>>kTiukqaB)2AprZF5!-@6 zqIy_KQi82*vPoao7>6=kOK~<9*rh9Qa}ig*j)ry8De*Ogyn1zX6&>x3PW7C_kIUSF zGISE_;3$oa{@U0PNIij}Ek--#HHh=12_V)@J=d&}41hb;-eeHccuIRj2Yl0I?s zQ{J}h9=wyHP3^|*ynjlqaba%P)NSv4wFtER5Y0t)2buyO9mt;~Zr2G~#Ony>+05$~ z{o%S&MM|>EuD&y0aak8O5#y}2(ENEzIx$k37|HF45g#k7c4V<|z|0y9BP7pniL3xO z&4}^ITO&ma^<|yncPo^9xFZ*egY0>N+HBSb1oNdvi_PAPm;$zZ?FAKYFmrhz>j^h| z>o)+_tttI8KC$9?ez$wzs)JA#rVY;u=Ln;;Q`mAn23?5-2~={k2|}D>E9BSO0WZhA z+e>3agI{*}*+7z&BE~Xg2+J^%t71HM_)wb?LlcDry%-Hm3n&6QCz$)45}p0C7FJp; zQf!A(z{3%3MKyXV{7#EwxB%5_p~0Mnm(fF~ezpl1En{STP!F(;ioCsAyS?wmS z>I$Z(j{Tgm68vHNz;z?4dMa6}j}s@~cIC9%5P2T^GnzYObGIW}Cvc@)0OLYTyV=h@<6q9+U!8qJ_CG#$L;H_U_SLf-zv!A| z5q)aLlPsF(w*CREgO78c^isglFWkJ@Mb)N}sO*E{;vt@JV5hp7*)^?c*@Tq&lBYNj z%$Ju}?k%w7zmM-;Q@r+T@G_nu;u1^LZ#jl9%sOvoTz9nmy`tZl@H*HA1g3?FDTWyt za022UXyzb~|9&z0gmtko)jo)p#v9@)o+2?nDLJJ@$vC6%A|@;R%cVQlY=gU&meol7ECr?9i3XT1^RvJw@E5%QkZ|Y>SOX42B-pL3oe7781frm3bfF(Ge zMjYQw4ZH!8yWu5zL_ZKT{6S#$R*H~~Lg5p)63Wg>hegqGj_}gg+MGjuLBV>-*P!g1BF7&MzJ!i;v>M;9 zvuif0*eAv)_7haO7(%nW5Ijp$^U#H* zrN~iEevl~-hAoP&!D06rqR1{^H4Ui;gmE$*{fM}FysIGlkv}rI9eWl?$9|Vi?I05i z$~c@|yn2$wL#V4f@N25JOw`Hz&~a>t7t_5OlVp0?z!@a{lKR0cUEutTqd1L^s|)^3 zu5H4cXg?%}29;?p>rTILYt;jkufZeM%p=&Q;_ZIvFWO6gCC>pA)_64rj}AoYNF|33 zd2G?8u8p?y58~HyrYkkRf0REu-7PT^UFf~~qnDk!O%j|LZWKPIL_Bz;M>_i`odEW- z$`+B(&l`o$WtIq*EQfY+=FMBQ$j7zI$8^&(eZDr8x7l9kq$FmA?ylY+sYWgJcO7Y% z1_4Y+#a6Q8vu(l=(x!tw16Q>#&ws*fnB=m~7~zi`T@1k4?}Q5#uuNfmm%-Ur1P9_} zwx=RprxUH-eo#mVGzs@l@3Wd8I`$R(9@ z``q}(P-uH7tfMQveVEq9ky$b-+2{9D$U;YvBykn?u0?^Cv&V`$e#pQWN#`Yb1RT=V z@%|kHnuFf8I6aAPRQWC&DJu5U8OT+0HBCwauWStiV-;Df%YS?qZT;izHR^VE!rs~i zW}CI{s~92rmMe>@GR@B_#n9WTEnZ-`6!#mfvQ%>a&eN38L5~Ab6C;r^BN40K!-nx9 ztW%0gel%`<##~z|PQqPubFL%Ku$rAd%ki#{C$dCihG37aa zDEnudk4u%VypXaUG#q^HI#|6l055G=lb!fEr1s$I{il0z7N72ULh?rYvsu(+v}y?8 zfZUR}H}BPjl1A{e++NPHH+>n$`(C;E&A7o{^ALTqux0r>=P>K8-A=!x1iNXYeQ;p$ zwhnWW87$+;)f>oLU;4b}Z$RQkAlVg!!9_T*GOxOkm0Dyh0!xzKB&nu3!T!i!Z^a7x zEmsbX>chm$&_;*!A%}Edo29)y5+zb@8D{6Tt$3YOm~C zs;Pu6jm(&*!)>RNFmn znqz2|j4!bg30VNHWBrOpm{n9+lpE5AW^BSU!@C$=hyTU^9NiF(Zl3MBSR4vC03P(7 zwx63gth-M336Xt0Yl#rP%hr4V(f;Y1s@GWSm!$HnR1H}+JXvP15UH;NT+Vv>>S?Zj zL|{e4(UnBr?;4FEIj~r+UopOyp8sHTv(}#R1Z+B6t6ENtH>Bpr;=J@N;_#ib;0fB; zs*<;w*I_;fP-)i~=<(!1?mKp0VT*gh7UsdZ5xG#i<+iX6mgf3wTjh$VYEdIvE6Zs` z8)mB?cPQxMDd^n)O{`?dUHGYfeBpw#Wp2RbTL!CXh$hI%P;s0ls#ei(cQ?8lGA{X8q02b#W_ldixE=&T4E%yH;1umwu2 z+qBqIZ>nWfWetDK^O5pbTxqARtn;hytN*?-DEvkVU)J+gZN=z5@!eC*{su>qfvt~k zS=;iPHisNcX1?m;ckPph@5k)=+ttzP^iO<@@5~WvAJhBu(@VYO0^xlO%&g%9;vXX9 z*kIhrj-I}mabs6~xIl|z^#d+lJHHQm%Lx=@N!&h$HW$5!p3IC`EC`UU>ly-t%M#EwT5*dorKVexslr`3G{z zKs$pAMWK>D9A$F#Kbe(m^;KC#j&d35Y~(TU2OO-nvJOh#=f5CbSS}HJQ|#+3PhyF<+|aa1zd=IpXnJ8udRu$Drc(53f}%DMHc`1wHo ztNl-y9caf&x9Pg1#`q^@ADdw}-VY9^tkr3w7;C9C;7oqdXkTVnDE9X7=Udt1ClKcU62HB74-do@29j&76kqNemFNo~jU-J199&s-vIE!N$ zbE9M(ERh|_Fk6}3;y$c0$U{F=@6p8Tj(>48SIvtE_xhAsm`XoX`Jez@J~zRhlGOpW z;2D(7H(apZV2}o`N79l<#o=cow0}A_JVP8x1BgVIpzZs$iB~1F!N0Mka4~C#++5c1 zY)D_LM;C9*&}^;IM(ZAi=sZt7_P8z}0>V88t4%zIn|B7FEn2rj=yyWGJAhgEU?p35 z(LfEBU5C3rV`=`j)D{jYd~NninJ2-~*Kpta1oEPmSJp^Gjt*_(Eey_8l(HS66RLJ> z`a8gOG?2FNT5gFY?%*M}6HPo=as&kcARD}-qdFR-vQ)*C$815Y$=75`)Ry4c)&;4a z_ADIDD)WrSk}WiX2PRR#s`wuTTv+~Y= z5Jy2<*8st3bXC1Jk=!qXN#IiV31k404?c7^k(~_5gt-@g>kHPiot;qjQ(6F{t4E&s zS|9o_O+3|?l`R=rHVx~-r%znDWF`0hSc;auMo3ZN!K+0jcFj*wkpn${Gr6HLFoAtT z73hmuP#Fr9mNMXcgD zkX^I8M_ZF*hi^bS-MdV8MUS1VeBfOD``p96|1NjR_p$M{#tp;9jeP+hG>Wvy3vI5t@hlICTXI+Yw#A*(fujjLTZGH(8-|h z0PEc5ORg(?EFFAIX<;@Ct}EJAf#sbv2jt~IX)Q!{ioiKO?Deo|AmDYj>W8Y9*N>z1 zwV3TC>cw_*U7@}o#MYW88c}01zD;!ire=n0F_>sw<aZzyVkbUG#^Rms!eGQ>09zqX}onM%Y1WD&0Pr?_+fcc!oNdWBy+eG@s)siY4yA=Nq= z+HQsk$q#Bh5j zq&-i13}22#O=)AnG}}j%G2@E{VO7-M44+*+S4woimbx7Hl_+}$YkjC~*0Sf*m1=`8 zGFd7m7~E9Q`8~l0EP2*9uD!Li{60l_Xj02Ulop~_?kr>1p0CSZU=Ip*#F2jql@&tE ztAt{2=nS^kU{d2dozgqOfQP7Q;d>4diIYNw;?OSp>1hFD0i;+QqI^{)GgV;tRd{rc zr{S*#$}t^=5(&ZCr1)b=q`AWaF%n1a8R~Z*syd^t)A<%X=ySh=GUsv0S1*cLX-Tg= zJ@(6?(pN9H3^j~hR`_#;o0WdUBU#G9#fRq#;q=iC zwL?PEOh&;qeoTz(*s--}osuWNt*N5A%+d2k zk>W%}p?|`?d&TfLE9_r!bqXBBv!z^E+DA1z&X?I`wf-&3^pP}%xInwXhXtZdzS6J1 z{@(QTXno=Y)q6UH8{?iejsr6an)GR(nB@=uWE&kZEaEvWSaA`Z4%P4$XuoY4KdUXl z;VK%x_+3XL$6t4+e?#HhLYX)}UsQ(4tiqV0Yo;=9INZK9Yh91xJs(#YKi{g+mtL`u z8!5m-93lcpaqTh1wSU+8$@)IzI?jMhm`nfv5-T~Vkzb|`@IzTDoPfiVF-Kg*caeff z*FSe(t|DSKB@W<-N$SPkYR(_R#k$|4OR2}W1*!Y4kH23vRj2!dRB7PS<%Pt#&nx4R zL85n-?76M_-a_M*-^dNormiNHEsdeimhKB1LAgLubqJ@BsZX;iS4%en{^@#rYEmPFNFG)$D!9gsMhdNtgILLX1cA-J!X{A3(e{rIl zMDy(7E+EBg>P%I^6vMZqo290_f;Z`loi-<~MR~cXATx6Iep@WtWyWuFhK=Y>b!=FZ zr0=m!82(YV(0uq&-qN#8(pgUsmdg&Bt3z3SF#Msxxvn zJ^PCs!qy7RScZrJs;SZRGU*B1abE9tYt_!1>IUR0KqvwH(BQno=;U$hUVHyIzv}{O z-f*1=4`M*CrEf!9J25jul9E2emammgv)US$8NmqUo&%M&8;<8ttZS!vZOXB=1g;oAY;JBCfGsBGu2IQw~@6CEsc54I+ z&Td8BREBp^xxaWxI8$7kpn|-ChD732yvijzo8SN=_1*EG{5~lF|!7O#mihQ!parDw8Gb^PRc7zMbW9i-kSr~{N zaHmt3{&wwX?A+p#l4LX{TVsO_`^fv$fV;^3gr*j4N*G-U?pPROiJf~YPeFyFp!$cQ z+5Io%{^6mc{%`y6FXYfd@<5nlzmxmrIh6b|dV$ zio&u>#A!QVPm`uSaK&7#*uoxAzw4mVJLT^{{~4D1gr9uPMDXnsxY8_SjW}8#tJSzW zOPwp|S810gQEb(<+Bu#M#YNa~D)ET(B~I6b1i7&`nWB8@gYRnuMQ7Wg4jMr4^zkQ)!4@_lr`SjQ-Q*K=ScT2svvq3JreE{m|&on?)hz4IC z-U_E4m|VWzoYw-0W&==sKpdkDIfFUU`201ybD!PBE7gH%n{BUCdlkx945m-zMV7d*=(efo`zLKy{vvM z{?|3amP49tT;ksB}n+~j>oZwcJdJA*X`7* z^)FAuU&<-kfj^BUNzAlPhP&A2;r*T0vbympOY*`vMca)wYhzv zOg)Q*t&x z$)n(Xl!+}AN6x9M@E0T*!huZJuZC`3`2pTAvPZ;=<{r#7M}8ZM8$a|aUkZd|hS$(A zWf~yVzIksWWSUZ_bm~0KM}&Qpt7#b*oEP4s6jp@48Met^0v*NC_`odX@pOQI_O#}nubRdp zBW1kb;wRlOpYI-G*i@6bX-SYVknOI91LcnI_H3!7ITO;-uJAns+U{9RV>N1s#lNNc zM)+KXfXu0F#>VlQIpd(4^KK!0S<_l`Wn2Q}R7%iO zBJ`NG%)M56R>V;Pc$(|PsizK|stv+=+jPL|3jVM)a1eaxYwPlR1{Z!UX*gULM6Kk<0U;sA!C$@z<=5YT5=h8e1yYgoBPz0 zuhO*&zRS~feb^x+@F`tK$}~kB%Ml^$IhdS z^Vn^$zQdjKrtu8A%2L4`)UP`pu=peb=B7DRXHA*Phb?jFI(nC7b>#pz>4QyBb%xA$ zzf7g6$Cniqy5}6vTq&d;&=<^VshHmSYCgC9!oNCMc{&UlcvtYd)qmj-nI(b=btnde*C>8Un9xpcwiAi%{nf|Qn z822k|0NYZ})>yqVy^?pUvW)#jS%lp;`llbAM}1l! zD7J!C!0>fJF>_Y<=z=Z)J&w$KjC7M!I~F zTq;ZzqQ;k5BCAi5ZDEBoTpx6(Um+SB`n1^O1p_Q|g~LpwGJhzuM3Q^n$;2g+7Gs$fT0(b%`s?6j%P)ci{?w|JXwSm6V_?|2@V^i^IU`Fc_>Yr|0-5;$Z`MyESl~ zj5dYWbU`C#t*?12ShA*>qTufDIwarSX3CDMgE^)=8b2J&Zdr7<7Z;6mUd@Mm+px@; zuO4-D;NE6`5_XmS)-B*Okos56+V9(r!{3)p$1RoWZQXOn+~?p()$Fzy>Qpfp#AN!i z)rWT(@bEq}dXlq3tP6CQ#`Z9>MM9UUvUm_=lAV%TX&8gc1C6%wW(*hOeFd9#M$fTd zc^`qVlrd_`mH*9B{cbO_1xHCT>rJ zUqv|b$n=O4+bmgD6kx?MWf-${=_+o!)vArj*}tNX!F<%aOcXBh+Qj8RM@01$46@cA ztx3h%R^=IG+hrzsJcbsCE?|{8vs=#*prMqwans9fM#d#0*)#V9Ely_6Z257WIsP7n z9uT$;t~})ym28$*vSPDH>1mwsefiHzQLl!)3VoT~eC``OGRT#cN4q$z8779k^7T<} zcB&IqYN|BpmGu#CYq&9~u8eIL#(}m1t~@a6Kq54q55G2tn3gR?3m)zkB9(u)#d!O- zAk@%>OSuO&8_H9&t(OnQfBMRVUX^d2u(XY~IWU$DcJHaoQ)#omZF|*+Gq{<4bQ@GT z^T+`CzW%+{8UCC467G3`%g@}N2=BLP{E zaTEfL$z}{Zzhg$*t7F8zx!9uhj`vkJwQKI49fKYTb{IfDJIGKjEM4^oydEI&f~tq* zohroGhd!Jm*9xDJM~Z$!?^XS4o9#Wrt=_uC9mGKdt_tl-?Y+aGB=W3d@zt(avy7GyH(@JF9k2Om4L^$Po<72 z&X7f(5{jPF!@KsAW-iNp#MdcBt{+Zc%2{gt$i3Zq+4ys=tEmjfV2v8QA-^AK?we;g zYcjZnFMqh@ub;tdjA{)MF?Dnh50gCpeOf-m>`@mDBq-#m+M7W~{FyoJ?g6-%lZiW# zSBK~unsIW)e$Q?I2KCu!LKrMXmjFVAv|eVb+^sm3`!$}KG|HUUMUk~7!CjAp6E)j* z*Db=N-{RF(DAQW*Qi)A#@`LP53(2OgDZa6hR1kXuL{-*awmFucyR!e;!}D3c##{G+ z_RqDIVz)$In>u5Im-B|rB~B!4GUG+P0G@O=Y;9&Vt&0pEZ~C9@G*9k|-&q=cEYyuh{0F^S`*RUCv-qBRP-0=2ajYF1?mHA@PRIYPXQILq_)(sg$Zb zZzQc{LHHF#y+6`sB|D^MIAU%<@8ioSSSe#2R?H?%a?%NlCSr>lJ$v8FPQ8fne`c>a zU$Wp0PU2PYv0hMsHyNV+rPyu8`m@=?hrI#)pZb`k6SGc@#eRtLm$;X9n150A5FYdM zZZWBfwOqd@A5Yfoi0iVlA7v=XB=d^zZa2@Qt@}d2u@J$?XZ?2X^>1os1 zQ#?p7N4|xcBr)EkR%BT_07_F(vAuLm3io_su}ITvk^FEOB6;flfj@v1@C|QmuzC+g8VVC*e<^1@yqwwHMn>D71?Rf{sn zW%Ek;?+VDmyTljwo^nSG4G#9_OEc0y0JI*nZL1UIZw3e_3!asEIwY3L-U`$$xbtdb}m z8a(LgzSApeJ^Y$E+qEu8GkBuNtgGH%*cuVmizhs#Sfij=xQKFv$x0V4IAjBUMFg2h z^7Ma-IdUym)YXNzh3_?6K~VD` zYi{RdJt@TjTlx4DEh1RZ)4D_Kfo^7eks`o_yF}%0%0zX``1i>NE#&j&r(^eB3xye0 zpE<8rK+=r!!E0Z_*;?(0khv|G$PvU}w$i@RSOL$aspIW>WT31St&4ePLbF{|C;4b& z*CXbQk0bXy>thy#$CNsAn2QEeIKp5Zgq7+4hDeWnN2z zdu-vGZ$g{bRyen9Z|dScZR^@D!Va(b)HO$nz>oG)%8jh6pYw)m8YXq5;G*3*(&iCQ zCgxefQ4*~wh!xAkHs0tIsUX;Ps#wXYKA0ydT?>~LNJVTkH}8^W@-QPdcN~di!G9qX z9|1%ZnrRU5*PUly#Xdw>qZqoZfz{c((kh?rB-UL8QCSFp45Ip(;cS33Qk5_Jq2ffg zOvm6C+&Y`#52eR?bcj(=x-nDIbz3sf%QQ$GZSB((jQT4EJ%G)bpZk$9iRv8w4o8lN zD)hOhYgxVj?p%*Ve3U_}X?J%@eeNYBAd8=7hmQ_SX)Q;Bnu-&1!@`QFAQ#-qi^mOejWVI=x zdqP)B>Y1*tum3M=wbg}96XUL5bPxl53W_KSiiiuyB}W1ce97Iz1rMEU5AmNUM|m+K zA+J~~_Q;2(n_ij`NG?hwZ6z|;$o5N%=1L@U;3}Y7u<=Ha+=o#})R=P=(Xlx#ew^#4 zMtLx=bg@s~P%*uQv@p^zr(s$0fk;SZy2PqhA=jP_2W3y&PRTJscUoEk+o|AQ5xZm? zu5aA4BEpevFqjjN&3wGq_KxXOw!u8gud7~jLSJ>li1OG+1#^&Eqh#vs*3I;tdT{!x zgp59c%St^DD*WzT9vYwYfhVa^MN*$7YFr+z6qq znJTfHE51ux75v_(9^}$sat&p1T{|~6EkR~i|5~S4V0MJIO`0;=L+xvdHN9OH%x`%m z`b^8h^^Boj*+Pc-TzV&8w%1Xyuff#Q5Z>0G*Cx1NS_m~R33k~-NmcnBMf3|<6ohF4 z>FUUzibAVAyL($yr<&Dcqu|mcWKN2P)U>5Wo2EJ5?ZFzp_%Vjtes2H-?z#i+zOB)! zi)WD(Vxm1_6djdB--ddd>e`E>0#}(O9=Y8NJ4eG!ZdWIZw{c2DaQdl8T6U;KKXl+i zXe?F9a*aeOOH4i!Nfl!^Lv&?@v^Kr7{>1t-R@d#mdWh|p5ZglnqhI4^Qwi?xEK6G) ziQ{hvi!v-tKw_yVyBY2%DiK>57sUh;&b(7~3eY}<=aBM4hj4j8G?;WNl5~&E^~che zSY_?J%+=QYz$Myii+3m}RLS23vdnhtE?S+cF2l7ZTT3e{xdZ3M`oJm z@RZpLS!5luH^wPrbS*eOU8&&X*IoJNL1Mr3MCHgK%SI*F@90wU=wZguyiB)g#2V3r z79?0wJhQ_CXEm@o(?!zyzsK{6{0R1vN#iqv7dX5YTD9c4b|)|G>KkvAjF?VJ_J!>RaudQN3#($*>UYs<(Oxd zC#Bq-%G7z@oqKVvXXBcHtkOOCDSa-t@>F`Y+_!#yW2WLZQBc>zK*hdMmDfrtZQ|0c z(g7FNa=qz0$$jXhPG@d(a^O;_KIz`iPXs?d-)t`Z`|5k&_kxMLKydBo#++y|C;?Hu{rs$JTS0PQ09U>n2zK4r zrrVtaCCtEPZ~OT<>KaH63?K%B^ppbu++d&;#~`Zj+hs>x2g!i}Tsg>XuVDs*tbnM# z{rqfp6wKl8pw50@4R#p9**VeD5RcaUT$>#WarWK2Fkil}2Dxl4+}XO_$q?1~^G(-g zgIx_G;L1S`1MaIrxE&gZpPy}A3vo4&goh#6aY%up+dC+O`~o;#L6cl)S{is(A0^3w z3ONv1k0qr+)82Eq_kj#()Io&s2NqIzft4dd7i*#zHGEhE%V?5=qhVkHL~aI-DuTw&AmfR*^I$HAjVMC+7-MIU@x)xX%c064e2n2rNS|`3203_C z4t)PFa3mO(;zoz%kVlTOjlKfY8IB}3+6aXVlB4BBq+l7XSK-AL)tkxJ5k^zL4L)=Y zA5C(Ibb+IeA1&p;1v(_0s4$x}n&d{4+yM0+z_a?JZ8=a6f@<0MIwCcXR;-9IztK_- zkuF9n*3l_e+RreL7DR~Q9i&brO@n2$lp8JOM%!|uQ>?>#&~LPq8!hEVOS#cfZX}d) E0KzJ-@Bjb+ literal 0 HcmV?d00001 diff --git a/android/src/screens/ChatScreen.tsx b/android/src/screens/ChatScreen.tsx index 51badf0..34bfc36 100644 --- a/android/src/screens/ChatScreen.tsx +++ b/android/src/screens/ChatScreen.tsx @@ -26,6 +26,7 @@ import rvs, { RVSMessage, ConnectionState } from '../services/rvs'; import audioService from '../services/audio'; import wakeWordService from '../services/wakeword'; import phoneCallService from '../services/phoneCall'; +import { playWakeReadySound } from '../services/wakeReadySound'; import updateService from '../services/updater'; import VoiceButton from '../components/VoiceButton'; import FileUpload, { FileData } from '../components/FileUpload'; @@ -496,8 +497,10 @@ const ChatScreen: React.FC = () => { if (started) { // Erst JETZT signalisieren dass das Mikro wirklich offen ist — // vorher war's noch in der Init-Phase. So weiss der User exakt - // ab wann er reden kann. + // ab wann er reden kann. "Bereit"-Sound (Ding-Dong) ist optional + // ueber Settings → Wake-Word abschaltbar. ToastAndroid.show('🎤 Mikro offen — sprich jetzt', ToastAndroid.SHORT); + playWakeReadySound().catch(() => {}); } else { // Mikrofon nicht verfuegbar, naechsten Versuch wakeWordService.resume(); diff --git a/android/src/screens/SettingsScreen.tsx b/android/src/screens/SettingsScreen.tsx index f151757..068c138 100644 --- a/android/src/screens/SettingsScreen.tsx +++ b/android/src/screens/SettingsScreen.tsx @@ -44,6 +44,11 @@ import { TTS_SPEED_MAX, TTS_SPEED_STORAGE_KEY, } from '../services/audio'; +import { + isWakeReadySoundEnabled, + setWakeReadySoundEnabled, + playWakeReadySound, +} from '../services/wakeReadySound'; import wakeWordService, { WAKE_KEYWORDS, KEYWORD_LABELS, @@ -122,6 +127,7 @@ const SettingsScreen: React.FC = () => { const [ttsSpeed, setTtsSpeed] = useState(TTS_SPEED_DEFAULT); const [wakeKeyword, setWakeKeyword] = useState(DEFAULT_KEYWORD); const [wakeStatus, setWakeStatus] = useState(''); + const [wakeReadySound, setWakeReadySound] = useState(true); const [editingPath, setEditingPath] = useState(false); const [xttsVoice, setXttsVoice] = useState(''); const [loadingVoice, setLoadingVoice] = useState(null); @@ -194,6 +200,7 @@ const SettingsScreen: React.FC = () => { AsyncStorage.getItem(WAKE_KEYWORD_STORAGE).then(saved => { if (saved && (WAKE_KEYWORDS as readonly string[]).includes(saved)) setWakeKeyword(saved); }); + isWakeReadySoundEnabled().then(setWakeReadySound); AsyncStorage.getItem('aria_xtts_voice').then(saved => { if (saved) setXttsVoice(saved); }); @@ -828,6 +835,31 @@ const SettingsScreen: React.FC = () => { {!!wakeStatus && ( {wakeStatus} )} + + + + Bereit-Sound abspielen + + Kurzer Ding-Dong wenn das Mikro nach Wake-Word offen ist — + akustische Bestaetigung dass du jetzt sprechen darfst. + + + { + setWakeReadySound(val); + await setWakeReadySoundEnabled(val); + if (val) { + // Direkt eine Vorschau abspielen damit der User weiss wie's klingt. + // playWakeReadySound checked das gerade gesetzte Flag — wenn val=true, + // wird abgespielt; bei false bleibt es still. + setTimeout(() => playWakeReadySound().catch(() => {}), 150); + } + }} + trackColor={{ false: '#2A2A3E', true: '#0096FF' }} + thumbColor={wakeReadySound ? '#FFFFFF' : '#666680'} + /> + )} diff --git a/android/src/services/wakeReadySound.ts b/android/src/services/wakeReadySound.ts new file mode 100644 index 0000000..df632cf --- /dev/null +++ b/android/src/services/wakeReadySound.ts @@ -0,0 +1,71 @@ +/** + * Spielt einen kurzen "Bereit"-Sound (Airplane Ding-Dong) wenn das Mikrofon + * nach Wake-Word-Erkennung wirklich offen ist. Datei liegt in + * android/app/src/main/res/raw/wake_ready_sound.mp3 — wird ueber Android's + * Resource-System per react-native-sound abgespielt. + * + * Toggle: AsyncStorage-Key 'aria_wake_ready_sound_enabled' (default true). + */ + +import Sound from 'react-native-sound'; +import AsyncStorage from '@react-native-async-storage/async-storage'; + +export const WAKE_READY_SOUND_STORAGE_KEY = 'aria_wake_ready_sound_enabled'; + +Sound.setCategory('Playback', false); + +let cachedSound: Sound | null = null; +let cachedFailed = false; + +function getSound(): Promise { + if (cachedFailed) return Promise.resolve(null); + if (cachedSound) return Promise.resolve(cachedSound); + return new Promise(resolve => { + const s = new Sound('wake_ready_sound', Sound.MAIN_BUNDLE, (err) => { + if (err) { + console.warn('[WakeReadySound] Konnte nicht geladen werden:', err); + cachedFailed = true; + resolve(null); + return; + } + cachedSound = s; + resolve(s); + }); + }); +} + +/** True wenn der User den "Bereit"-Sound aktiviert hat. Default: true. */ +export async function isWakeReadySoundEnabled(): Promise { + try { + const raw = await AsyncStorage.getItem(WAKE_READY_SOUND_STORAGE_KEY); + if (raw === null) return true; // Default an + return raw === 'true'; + } catch { + return true; + } +} + +export async function setWakeReadySoundEnabled(enabled: boolean): Promise { + try { + await AsyncStorage.setItem(WAKE_READY_SOUND_STORAGE_KEY, String(enabled)); + } catch {} +} + +/** Spielt den Bereit-Sound einmal ab — non-blocking. Wenn der User ihn + * in den Settings deaktiviert hat oder die Datei nicht ladbar ist, + * passiert einfach nichts. */ +export async function playWakeReadySound(): Promise { + if (!(await isWakeReadySoundEnabled())) return; + const s = await getSound(); + if (!s) return; + try { + s.stop(() => { + s.setCurrentTime(0); + s.play((success) => { + if (!success) console.warn('[WakeReadySound] Wiedergabe fehlgeschlagen'); + }); + }); + } catch (e) { + console.warn('[WakeReadySound] play() Exception:', e); + } +}