From 78eb89aa383e3ae66f840f36a8ccd7efd0fef5b0 Mon Sep 17 00:00:00 2001 From: shuaikangzhou <863909694@qq.com> Date: Mon, 23 Jan 2023 09:47:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BAword=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/DataBase/output.py | 390 +++++++++++++++++++++++ app/ImageBox/__init__.py | 0 app/ImageBox/config.py | 6 + app/ImageBox/icons/zoom_in.jpg | Bin 0 -> 5462 bytes app/ImageBox/icons/zoom_out.jpg | Bin 0 -> 5088 bytes app/ImageBox/images/wallhaven-748705.jpg | Bin 0 -> 555807 bytes app/ImageBox/images/wallhaven-753155.jpg | Bin 0 -> 694195 bytes app/ImageBox/images/wallhaven-vml6em.jpg | Bin 0 -> 414967 bytes app/ImageBox/run.py | 9 + app/ImageBox/ui.py | 157 +++++++++ app/data/__init__.py | 9 + app/data/config.json | 5 + app/data/icon.png | Bin 0 -> 18535 bytes 13 files changed, 576 insertions(+) create mode 100644 app/DataBase/output.py create mode 100644 app/ImageBox/__init__.py create mode 100644 app/ImageBox/config.py create mode 100644 app/ImageBox/icons/zoom_in.jpg create mode 100644 app/ImageBox/icons/zoom_out.jpg create mode 100644 app/ImageBox/images/wallhaven-748705.jpg create mode 100644 app/ImageBox/images/wallhaven-753155.jpg create mode 100644 app/ImageBox/images/wallhaven-vml6em.jpg create mode 100644 app/ImageBox/run.py create mode 100644 app/ImageBox/ui.py create mode 100644 app/data/__init__.py create mode 100644 app/data/config.json create mode 100644 app/data/icon.png diff --git a/app/DataBase/output.py b/app/DataBase/output.py new file mode 100644 index 0000000..dd6fe62 --- /dev/null +++ b/app/DataBase/output.py @@ -0,0 +1,390 @@ +import os +import re +import time +import docx +import pandas as pd +import requests +import xmltodict +from docx import shared +from docx.enum.table import WD_ALIGN_VERTICAL +from docx.enum.text import WD_COLOR_INDEX, WD_PARAGRAPH_ALIGNMENT +from docxcompose.composer import Composer +from PyQt5.QtWidgets import * +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from . import data + + +def IS_5_min(last_m, now_m): + ''' + #! 判断两次聊天时间是不是大于五分钟 + #! 若大于五分钟则显示时间 + #! 否则不显示 + ''' + '''两次聊天记录时间差,单位是秒''' + dt = now_m - last_m + return abs(dt // 1000) >= 300 + + +def time_format(timestamp): + ''' + #! 将字符串类型的时间戳转换成日期 + #! 返回格式化的时间字符串 + #! %Y-%m-%d %H:%M:%S + ''' + timestamp = timestamp / 1000 + time_tuple = time.localtime(timestamp) + return time.strftime("%Y-%m-%d %H:%M:%S", time_tuple) + + +def merge_docx(conRemark, n): + origin_docx_path = f"{path}/{conRemark}" + all_word = os.listdir(origin_docx_path) + all_file_path = [] + for i in range(n): + file_name = f"{conRemark}{i}.docx" + all_file_path.append(origin_docx_path + '/' + file_name) + filename = f"{conRemark}.docx" + # print(all_file_path) + doc = docx.Document() + doc.save(origin_docx_path + '/' + filename) + master = docx.Document(origin_docx_path + '/' + filename) + middle_new_docx = Composer(master) + num = 0 + for word in all_file_path: + word_document = docx.Document(word) + word_document.add_page_break() + if num != 0: + middle_new_docx.append(word_document) + num = num + 1 + middle_new_docx.save(origin_docx_path + '/' + filename) + + +class Output(QThread): + """ + 发送信息线程 + """ + progressSignal = pyqtSignal(int) + successSignal = pyqtSignal(int) + + def __init__(self, Me, ta_u, parent=None): + super().__init__(parent) + self.Me = Me + self.sec = 2 # 默认1000秒 + self.ta_username = ta_u + self.my_avatar = self.Me.my_avatar + self.ta_avatar = data.get_avator(ta_u) + self.msg_id = 0 + + def create_table(self, doc, isSend): + ''' + #! 创建一个1*2表格 + #! isSend = 1 (0,0)存聊天内容,(0,1)存头像 + #! isSend = 0 (0,0)存头像,(0,1)存聊天内容 + #! 返回聊天内容的坐标 + ''' + table = doc.add_table(rows=1, cols=2, style='Normal Table') + table.cell(0, 1).height = shared.Inches(0.5) + table.cell(0, 0).height = shared.Inches(0.5) + text_size = 1 + if isSend: + '''表格右对齐''' + table.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT + avatar = table.cell(0, 1).paragraphs[0].add_run() + '''插入头像,设置头像宽度''' + avatar.add_picture(self.my_avatar, width=shared.Inches(0.5)) + '''设置单元格宽度跟头像一致''' + table.cell(0, 1).width = shared.Inches(0.5) + content_cell = table.cell(0, 0) + '''聊天内容右对齐''' + content_cell.paragraphs[0].paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT + else: + avatar = table.cell(0, 0).paragraphs[0].add_run() + avatar.add_picture(self.ta_avatar, width=shared.Inches(0.5)) + '''设置单元格宽度''' + table.cell(0, 0).width = shared.Inches(0.5) + content_cell = table.cell(0, 1) + '''聊天内容垂直居中对齐''' + content_cell.vertical_alignment = WD_ALIGN_VERTICAL.CENTER + return content_cell + + def text(self, doc, isSend, message, status): + if status == 5: + message += '(未发出) ' + content_cell = self.create_table(doc, isSend) + content_cell.paragraphs[0].add_run(message) + content_cell.paragraphs[0].font_size = shared.Inches(0.5) + # self.self_text.emit(message) + if isSend: + p = content_cell.paragraphs[0] + p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT + doc.add_paragraph() + + def image(self, doc, isSend, Type, content, imgPath): + ''' + #! 插入聊天图片 + #! isSend = 1 只有缩略图 + #! isSend = 0 有原图 + :param doc: + :param isSend: + :param Type: + :param content: + :param imgPath: + :return: + ''' + content = self.create_table(doc, isSend) + run = content.paragraphs[0].add_run() + if Type == 3: + imgPath = imgPath.split('th_')[1] + imgPath = f'./app/data/image2/{imgPath[0:2]}/{imgPath[2:4]}/th_{imgPath}' + imgPath = data.clearImagePath(imgPath) + try: + run.add_picture(f'{imgPath}', height=shared.Inches(2)) + doc.add_paragraph() + except Exception: + print("Error!image") + + # run.add_picture(f'{Path}/{imgPath}', height=shared.Inches(2)) + + def emoji(self, doc, isSend, content, imgPath): + ''' + #! 添加表情包 + :param isSend: + :param content: + :param imgPath: + :return: + ''' + imgPath = data.get_emoji(imgPath) + if 1: + is_Exist = os.path.exists(imgPath) + self.image(doc, isSend, Type=47, content=content, imgPath=imgPath) + + def wx_file(self, doc, isSend, content, status): + ''' + #! 添加微信文件 + :param isSend: + :param content: + :param status: + :return: + ''' + pattern = re.compile(r"
_k;tct?;pkA z=$EWRB6U@51*%f1`dOpZHE*-yl(G!Z3kQ4U~{AslUrLma(WJ(@@F*C|DvRQ(`@ z#ntmpk-P~)Z0F2DorQ%BdWT-Q4=Ng)ePI7F1JzC}9iX@VsTY||`?%dXpRMwxtD?bs z_K5(?)#E9L(z70qe-?mc5hMa$J-?T q!%ZDH$oxVTN{1@2T=*Ii`&h z*!_@ %OwWix~U(sXZvVTZFC??e^NwGv0D41#8PB8*Yn3jNB~*Rfu!b| z9kF&j^tK;Y^ Tz<(*hESH*(asBI)iMYV zcSFfLCm5B>FkfKwwm;V|!((EQNKu^Rhly4eE>HU-6O}qTmxyZ dOXc_zZmeo75sg- zdN+Ifx*^eUf3&whV-}l%umF0VzUBy|zt<0%@dW2n!I^Ln4M3t1Kl~Upg9nCR4{Pjw z#M2Rl@?@mUv!1TGTM#4o5jQl0&j|ZHKZLJ|gBQX=|1@K^o)LUqzC(-vkZ0iS5BawJ zA|KqFF_{WZ)C1cXA@#h`$REjqGC2DFbeOsN8UJ+X`6BiHa3IltI8Hix`u+4VaYYCG zbm)6|9{uS6i}^>=N1Qxd;g0SgV)0|f^!J)!W{70wEGFiR@^?Ip`oeIoUk1L&zv3P7 z{OfQ>e4Q;Uk?3O*W}fSK!jJezJe|e<7T?Uz6TQwq736vN^pDU0X8^(pjq*L}fOcS% zV7--3xt{X-(P#{s5g2@~H|R-(%lBmdB3la(0Q+0nnmc)Z=b!R*I(+7Pwv5(eo?fT7 z0_VXe_+jwlx!$r2Kn?)7*YE2$*l)kLIoGbK*$2Tjsx;8E})Mmcn2Xh@Pho#d6by+lcTiG2SKHu9F=vB>>r% B+!Gy|x_05(UIKhoLn zFUFS>ngNNeD?LW1^h6 d9CqfrJ3 zB*NDL%|IXlz#`cDhwkM39+<&l_!xSvV=Vvd@-zGUdj6tx!HgM||7VV|pX;xR8Eg~> zPqc-D>z_h#J0ZY$An e6ypg9*Fb#{!+QT-_t*0@Y4f~0+^tXjJoDPqrAb_ogd=Y zj>G8*cBH@JZgE7R!4CCT{LSky?_aRjN8w&ZMgRjwW`fPF)8F50{OdHM3q#h!F+u=> zJq$PadkFqOO$7M@0FPgQd;+iooIu-v?l++O4d{LYx(5}*26Vpx-ETnm8_@j*biV=J zZ$S4O(ESE<|Ci|e26Vr^dSC;(-+=Bnp!*HzegnGSfbKV-`wi%R1G@iz3%dV4@4p+I z*$03S@VCCmbO#8mIRhxb5d_u5z&$t@KpGAH{MIRNkf*;6xOsv8NYICYQi=SJHf~dJaT3Z~H z^m`G!yp4^2Cj2*R%gc*VuJzD W-VEUfZcTGS=m&rsOeKCqcXs+2 z*BgZD)(hb5B#-!gA1c^3ia)dR{;^H St%ot4T4RPGf4_wU={CjsdNBI0sdAf TjT+dffsGp2sDX_d*r {BhjLVbB)&e%#6T!$kh}o#{K9=}#B)pReCz zf Sn+=*7&=v II6-3m(wIs>lY2^XZzhD>?A{Y&vpD;;w+%BggFrISM6THtYG$2@YOX z2G42P;dFF9_1PX3Aq!P~XK7BqD>28=40$aP{#I&NudNHbD6=y*y@+vAOWgOPTJ{=P zyQu#>t>urST8^K-5Om|- A52>vtGvwa~2AsdX1`q=0W{|=*p{%J!2Y^b{p_5W}C_M P6-&X;&ZYY2a1+bw2{(Tid+lB(zPyibW;NMpPv~MVY4F&Lj zN&z(HBH +Ipk1mUReSWQuDZv3{U}WJj8*?yRO1_|Jw;_JwRP{t@+IPw&`J82@yI@yr0M zWCswB&AL^ideYeMl#%$!`Iox#(fGC3Pdm)&Y~txab{Zb+){2x3!1g}{Y@bxXiEw-9 zB-m!-=B28cD0D{#x9If~i8zaAL2JquckBlIEv=m{;OeRKmaG}?@t=tX7@x6*>6)-t z%|~Kp+$(Ms!$nVMT_iY#U!?<$#kTfqo04hS)i hgvPUi0 zuWW;T4z7;x_g%9e)54ge%7!~rzg3p#gj}!)^5fT(Nl#cys!4%sbJ>&Iad3y82po@y zaJ^XQ-8?eRph!f!&3;3}{lgVJy>mm;{nIsFx%32d3fB+5rO}m558s|&UJgFOA)aw4 zP-^&g*z90-Dow!B!eA{hEq(_qYZ{6qa2ILnhIr%=8SivoX6rR!>MZzXH_NErNV{Y3Btir1J+1@gcnG$AfFgQx#yPvmXy-0{edm 2DTg!Sf!XRK6Mh@_PZ*`WrPgJB~g6WO6;_o(`A zvyckuYpqz7w&{ta$Fz@`mo*b&X2cT&O_z&6H49%jVKYEeC4GYnW>v}Kb!Yrg-?Fnk z6wAibK02mH)Y(5Pt?#qeB@!s%pz?ijLz)i6!OOB2DN =f%gm`$ T39&H9_zQcKQX81B}J>pvW!d(Ugnq^iG `$Ha9kcZ`+v%Y{{Q%TF2cszlz+ieyz;D0YS 4xU%!cJ*voonJu4yq*@ zimH><&*Gje3Sn-AdR#OT{n9Hgu?B_k7ZF~nPDALxZ?SD b2qa*W j-2u!dKXeOGBTOkK9ZC18 zeoduhueA* X*34_zQFBs(H5w~~L#%mj{;+yhwDsIHAfW};_ zO$SC?5@?U8j}7KEQFW{6=A?|QCmD;i$}UOxwLaHXi#aEE*vPi{{1}=Xzx~YYYT- GEJ#o-@4Cakej@QW;<^?p== zqE~TRzf7NOD_h!oQSL^7pTL=`4c0@sgL56j6B9Byj^vf3< e>*$-Sy8Tq)F||6?qkZnfr`@M z+5?1H(T=m;bileP)Bek(wBvd1uD-4+@jl12{KRYnO1e|dw6y{4vk@xvf#wtT(sT(b z>@yvB9b(WDS;+XDK3gn(&Cg<~{aNgz# diK*Q zF~9r PlE{5&0yAQf=KO-kEt3|dPZ z^*sUp{YDAu?D8@R#f8ZVgj-a?{j5~7OK8Xp+~^y*XQ8kcXM6BQ2k8Jp(1NdSvLzq? zxRTQ^Xt^3AO|D3k*;_~Wsu5MJI2~x_56_NhJb_*`Z0?zPlqPE!k!elVw@j)N8lnR^ zmPt5woUbj$AKtH8Q+-J9lW=wlto)r ?+oxpA%P4N$aBn-nK+|LFss-e3a!A zdAX_DH^UEjTbxH1Uam;=fPaT>71vG&1Y6-{;phDuLbWXI2KuY4qE^P21z__!(^UI} zoX~|;bdTky NFc{W3(mFJ8RJC*@O0*>i zHdm7}KSUf?XddqzYr%oCMOE<2(85|T4HGAn@lne#xF_M}N=51E7o@MowjTM_r5$93 zwOX#!vxoy %U>cxEC-=fR Pe{KKPFr&_7?&&m4o<2L9s z!a-P8;TZqH1bQlrX8~S@W&&`}`=Y=c>V1p;Zix1^3PP rU K2NFyiG4*u)v$7J1=xaNfV0_mh;=08M5pE2H{6 zs4P2zaNwWa%_4sPIui?Ek~I$9@4b6l{^*P0g+;^k-mk10uSc%nqI%7YU{o#9ftYuB z^1Ag!wi^Gimu{S3d}sZd6>Z8X;jRBnY#FxTLDPr9R}Pa4+waunN8f7#)XD@@oR(P$ zoy#Ttug+lH4X-*@Z$6!JrO#3ms%RbYO8QpAaI~qdJqpw}Qjfs*4c^6yBC>|>Ub;d` z7ulrzK 3|jX3ANsVeYpkwuK&Yss$8Xe%Jm*h z8t?i2wm4r1+}OGz3p!|Nfoq@xMA!bbL+7w+v}yZnbamn7(jG6{Wc=HEBfPH_?|HiH z TnUCclbJh(6DE)~2exJj zMr%)l3AX1D2JL#tmHBvbP$>4u$;>q`6!k+tH-7#j{;7gF_!of7q @CIFfLGdR0Z%vaM&WM+eWWo_S)+v$T>q znfe(Q)p&M|EwJFa(*nn!tHlD^(rZN|W9!gr>oLbA5tpp~7Y(VRopr4jz;~8*Lnj@0 zRiy%5$hEfCqXYYBZ5|>awc4&RQgQFzwzXKIuM=-JQJ&>axh4U)FP8TGRO#&HwqC_{ z!YQaCMV$`F-J2{4P)#>hwa)O(h6}coo=0k)ONZGPbVn`Vs8-97MnN?n !u&Oo;Hf2MX0`HT ^?O)n8mja$ScfRLuRUuz+GpQDb*^C6M6J0F>BrY~4rfAVD!NZ3$%K&`YpJu{ z2E|&Mf%Yd` H z-E-f>_yfXVttV Y5zFtm4 HvPee^s?3r8B`AwD%bd~kpFSz|C{A4Cpe0~!hX! {))zvsC-O?Cd*GmFjEG zW%0vleY}y(tLTOho~*PUDNfg1|2^6}3H9~hR1%g*dNv<~)>b|m^@%8|np{{xE|q2R z!C?dR_g=5amXq#1>ulE8mYJCdUnO4 ;~pVU*snRp)o1g^X=oUG}vrd37KH~Pe)?@ zVP?etX-VlDE1v&FHqPep7%GWaxcoH~Yf0n2CFq%>^J=2vt#u>*<%iu*;Gc` xZRFX zcD=(feH>N1h^yaHeLy1|PQq6%f3q9YS;l|I1^>>Ox-)|9*mFJOD 88 zYMn(LqLC7)>J|BXk32lkqZ7S$J9FNeqZ~(dOwYtbkw!0*szvwHSd6Fo2QHMyXzz($ z*!`(3nLSsN%#za^r|cgr&zn;c>VAd}sDZXkPg|fg?a_o=bxM8dXOQP1t-o;2z86 r$A%z#EBg66?p+WJGm!{S{IQ+)v7{)FQkR> z-FM&4?#tej`C(b7sSA{Qq_aedwm CB6O`e>VdNV$_)Ej^mcdx{GntvF5*zGSAtd&5yHEp7_!(}+C zGJVd14$QzQ1wHomJn+pL@a5`*k<`AT$+XS4Uwlc6noffuj K+t>pTQ_Q68OIozvb43~=C)<6Me?jx%2sDbp|us4 za1#Y5AU(nR0-Fu0ORzX_UT2;w>p`8aini<8=5!c>eKpG6X+UbQUFWx8IuMqX6Z+{% z9JBGAE&+3eg{1odWBtN5m1MKUdtu{)Uvy_%W)>PcYktEJKd2QW&dGeq>-A6+by}uG zIW8+J;Y%nrJ}QI}=uB7W>{>3hlZx#m#oAgOlIM|JYO*a;G~bD;iYS=enbowbpo-ih z{d_VL=BfYDdNWCREwpnjol+EX)&6|9sq*}Xz_YTMuDXCXagDM8enICKYlB#bdi7%rALCcqo z^KEERXN@Xwo-&_|%#BQq_P4g_OKIzC^~*S>NU$_-!;S3arPX#JZ<=c#=(Kwz|M(6L z3SWlVd$G&Z7QhlGKcvCI$s3-@nT25gM;-EB#G3!jEBKy=`>^Hju-cg+qSBsN6o~+W z{RJ0Ag!5A-iLYDDk)C;4sQ7{?>Z^LKqqlT)p17UMFh$}Tfmogog!j0VW%;gU0%`W> zq1&TR9YuDKyWbYBkm^hcJwg%-Bl} zV2C?B!7-5YSlkZdWc8bok8_^4kuJAQ(t*9np##Tp8M>fpvzZ%vt(0rv^=s`-vQt;j zVGcZNP>%dKy}x=bsdoXFy)1YzA-Y k9iYiMs(OHwIqwnARP5BD0SJ(K`eYivDKP+X}m?yZ`dAE=65<^Vc+mV z+!8@A_ Y}oPBe;5xU3z!! zPRM9GOqcc=SBZTvMGD AsbTYqnfPa&J+b1(eHGO4AI )ozhf&Rlc?Wy~lH= zv{$&r7_Gp05$zZBwb8Oa<*NMyrrcV$OhK{@?S0;qRE)M{%9o>>%7;*SbHc|I%_HmT z;~VQ~A>J-u(;r< T0{p{n^BH?pQMJ%w~yr*B|7tutCdsOJ)4Cd zHKMkpSh;B_8eRF!;`kVuX1!`RkxxmwNf^(ap1@|6R~28$5-*DTV4%xF&0RZWPttSq zsxDawuAes?=MFry8(hwWA1Wu57lKekNQh)e(-vC7G2ZTAz7|3Gs#23-Z19t1xMU%% z%~0DkY12bkR1q1gofW?@anex!#8IoaIP**!o6Iycj$c4W<6@0w%K0xKP;Mz*5p>ru zroG~fV{R!8Eyc~g(tD%j^4 bu)^^wG!5e#_!{q1 zwokSHvqb{Q9+pz~smX7JA8#KR`SA>_c)TDd;@y*No-;LX-WJ48bz@3QLVLWX8=pKL zp4-1==@YJsLTX(Jj?g~)dg0N8a6>!#mQG6)_M82suTOGbeEE_DS{)0zY;c+vt`S}t z &q7?^6^ef8hn}ld+sNm @uSsKEzb7Xu?)->5JUS*hYcn>GbcnQPh>04Pp>#7ET=}>_7pz~qn)74 zqOcltAe6gm@i$Bp)MVz2#Dbg?0uNpD>pu&2^&vw6(b*;ZTz?|Djt-bk-W#v(*{^BZ z=5;X!w0Y=&52chD76zhjBGi_%8Wn{0l!t2O0pejnB_jyOV=T|^+gi$*zre9jW8W;| z!b(C@P(<$gd^gq6$@yKB%I!8 S*3PQf)4(4egpUOJ#VP3WKlmY50=tZFvVLw*loF@*?zROsZjUM<(` zzVX`9vRH*Tt3~tXMH;N`C1}Ys5bdxbj|(+!-)*tw*@Z8abgBg>=AfZQH=QP;S}4rj zhZdPqcWM#!^`R{%L(Qibip)cgvPBn(!d`?}ii|YHW3pQ7q($*=q?G>L+$ix_fn*+E zF%UDn;%I5{srADtc*k?p>J+TA-V(GQ4rrGX!CszAlP?Ggl@`sa@2b(dQiBPDmf692 zA_Bb1-2?I`Xn6lMn@FAkI-o)a 3k$A+fZ1#WC%}AiPAQ6R18*Q zQBJnLXbSfB$92e^@+7E@3?0ZYJ_%i@?OrM`E*mFspROVwnMt`@kYN-4Ax}9m2NP5? zdd|yP{EE*JSV33MOD(n0CD5X{UDj}~!uQY%48(nRkVtBrs7z`?y`-=HU=nm})3T)` zM$^6x>Ph@x9kHf)&B=i_Ki#whBVvf?;ZMV@lx?yN(FrQ|GWpJX)7auubT1qfVn!9e zu_xmiJD=x8*G@={< )>UGisK3e0{1hw t`uf
Q-sd9HsU&IHMM;QCc_G-xm1R>|7qwTqA2!L+T~EZjW%q0 zA}sCW(7sQ2sXgXUO98^i#B1jaqE@2Zhv|S{+FAt?$q$`a9J83YsQjU8)y92?R8rb* zqo{oTB|1P*1c!*}&Vpia4}=*dl%{DUeX_?2Ke4(b>cy ~hB2Dt@H0*^_&G4XfGCPwKZQj}x7oBltO~1*eqdcPQh)zg zh{|nZ>M0i`{=4 PyZ(B7l_3E&jao$6xRP4MeIZ{$DzG|q237X{`i8-UnpjRX;m=h3C_ zjPAhPMAlkyW#xo|rBeL*8l)D}RyfrdR2yL>7=o!b_~8`?A@YFZ9||r M-3Up%~RN5!tQ2 pauM-_PEsS-CH^AGm|MHfA?{8qSS((E<8xl z`z+ZE3+tgsrO@1r<${(xb}{LQh_mI6wWI1OxbbQJ6hYqBq3XTfD_ce}*?Z^iO}x)A zqMlE`@gDc8zc*6DnGPH&FgDaKdpTxl@=*PT!;^uYT%Mxw^r%J|F2lTcAHd0$eM_-U zi?sT#TOrP7E~w^l`L?8%y^}4u9G82d%k3&Brt3c++zr-Y5J^jge?=~|B=wZcZ=lT? zj`xr#4Tnt)P1e`zRPR&TVbbw9^R!=2lgHE+i@UhG=R7fWpI(Ac(aDlmc$y|@T%rP$ zCg$aMf#9ogsD5XNQbrQy*2m=mVxbYuA{h>eeXFaYJ5;}K?lT?uW>AUU1+UMgp6tgr zWuOlU3PvXJzge2enimQk4n-Ys=EKj^wn;DNXcG> KG~K=gMesRRSsY$9GX z<7vr4p8^vemSFV9N `*~q-JGMSViIQg=4_2t$32a zv~@G?RR!q=Y@ix`NYKOLSR~b>=X6`t+H6@N#m0O_agOo6gX&Y7JAONlU{) zYI1 ;zp7)N#UT`=f9#B;F~m!vpTWh G=JeJQq%=n)W{mSH_%+H!0=Y*so5&=#LQO> zw#GhUxwQ?(aW|qsTwlD34v-6GqR+hBZeWuBWeNZAibvbZm> KnaM%$ zdt ^gso7r zUM{1T!y~mhgsq>InzYVKi3B})l;tB<_f_6j7nKE&AAt*^O*xhwP~|(ymZFWkgV4&E zM)`-XNn|xjcs&?+jc!M}NvUk>f76Z!t0;sHoFa;Yonpie=W>@S`_+E<9Ojq=S$?Vv zy$L0IC9zB8_VyEaTcJDHe3KM;SuP8;;c?s+(2kGAL_nQM!WW lLAG!+jQVFR=a#~jogl@o31JS9~c|HR;`Q$rfkfD*7qAt9rubabU5#G z8-H|*nYiao8h)I(yavu~n#x~mRpaLk3QL>5{d%Y*g%dAqtfH+W!LA2au{x4!%CZZ; zP?cfp0QR9MG7(N2ztVeU7p_tk!_^=?%hNiRxg6%yHZu|XW_T?&**6+4C3`Sx3$d6z zYA6`&a3W1lLkG)@e40lx2-i|BO`CM{Swka36KFLJWZMpT@Wt>a94H0$1V0H4jH2jv zR$yMdUL2V(G$3c>KMa?}jaH3jis>$|@vbCjOW$u%q!q|T?g>HSwoS9Y_qdgzBdi#n z6L}E)EZ+O1yA_*Z-3MYX=X72Nf^3%Y{3YD-J)jFI1%r1xCs}OX9?6!YX<`H(F#B z@x3#@@xn x3(doKWfr?`6xYAsWeH9q$Pzl1X9l5R{+*8suI_I!4b7$lyF(1tt=Rhu z|M3c-4t=RJWkf$DXy1|S#{9>stM}NW-`(A-(<&HM5Y~X>Sq-qeH~9FH7L}#tBl}V$ z+;w{ZZ4X8-*jt=`QJYz%(8x%uttB(@VQlR_T-)B#qQG667WXko%Qi1?>k2yU#TVbR z5fW?%c@4C&2wg>e7K|f-Oq8Zc_ssWv@R7f&i8N%v?(~%F>!NDkJlWx!uNC?A@eORA zzE)^(=C`%{WcQX7SOYCCm=pj1u=k!(O||`=Fy0n!E4KwvQKHhMi;76ijfjYph%}WF zDT;uAC`b)aQBhDLy$L~D=%EJ!AyPv%K ArO*mXFKnjwca_;oHJ`?&husF z`5M;(*}3+0{eSh^#<1nf-cUTld2Z=#(yI5)> j%lv<{HEd)N8}Z=i^hK}te=te|32?cwbiYhUrbMrOI8} 8QF(mgSc&P}=5f(NujhXX zZo(ekF>_Y6uvN=`8|L~o4}yCOMxXSwRQWJ=od!r|R`A6l2}{uV>%;{fKA>?UqQAb? z)yw+OXSuGd_~$PlAvaNKDxh)fr-hVMsSpk%>iShHkkt%iPk_GU%n;C#C8Z0|H=Q;D z)?2Nzpo2oMt`y$^|4>u!I4)9 WjvQ>03@Q!oG~Wuce2Isw zW>p-6cmfRY-1mG6u!?b06r#Q_fZeLA28W2NMcPi7QKhfc?g61Q^8Q`8m}Y-sTU~jD zMX{OL7IbiPs`j2iW1fMtPj|}4ks9fXIepSwu||=I!DZx*H~z# TJ1yHY2_h7uV+Dkxu1 ze2$cpA~eTf))2vKF*+L{&J+A4aGHyyY+;UgZ-SIp9WfqO;{H@VPrFe`KN7YzV`>;y z6cU2mS}|T3KY`+l y3W3OEjVArqSybIfHRP;y~rP2 zu@XC?zfI8KXKUKMai$SmOzpO652-507hyhqbYX8Ym!<(BJnw+K@D v4M< z#$EL&OvYNPtOJQkF?^Zb)6}nNp=Mi;%NNJR$-g@kaB?DthoFsj{}Sk;aSS#+7x#cz zXg=khJNK<)R;Sjta@Es+gvwQ4eg88fhyTq0??62XQ}{$%180TFaazP$i>V3Du!`7k zlFB3?%NCIxSI16Q2}!T`U$qO!3$hx8FLhbije`^ZD6(R6r6;=Z)>?~lucz0B@SdLo zu~&u=9U%NEg;mrqUkm<$ F zm9#7>A@&nyyWhNb<_SRE%7m;3qXG9oV@V9wcq`hfMU1e^nv7Ad!rlI=2;1^GW0EN2 zFuHspmpmF?c#a&dvupa*0kwU8=l%e{QcuRNnj0l^Sxh^BgKkJt{UbJC_s-0`6v;w* zc~@?D<7^1i%)ks-4h8Oc0n}j)%)8#z?d?aO!=jKS40Qho? &RY-w-&0 zOT^4bzp`1cM*m1U5wfEM;%x3;acx^?^CBG3Xk7Zyu==c;et^BjS1k23$-n(TXys~q z4zS7y2=8m?IjZ&YB4Xcw(B`vW0*CpI#Hp^p&$Zw}vD83`cZ&<3(KDxc?(@%<*qWN^ zQr#YJ>wKhc-RJTbsnFKD7K!s@0+{jtrF85qy)r4{U21DEaY-LkwmysKxl4ql68$XA zZkGOlzMF80MhOr~6K{L+Ng(T4*IZ+Z4&5dQ+u0z$9g4EW4HZ`9A!~;2H!`;O<+rIH zeo8 %<48M-FqfBp;GMJRQI7J9$3eu-8gn)BLWy@YTLS|`21V!a6f)S z6+BRxa1UfUGM`fD?@d^Ia5#z<_~3K&U4z8T7}O?=+S7-aG596mE>b}a3YHu+hVc{U z*$L&9IObvj*Z)y;Gnd!PPmxp_ !P!Ci0P GJZtU3Lg~7{y2^85iQm2tq7V|BQT F@H|+L%bMU XA&d!yuGDLmH*=c0pmD2xsnG-qwv7 z{I1I Q0aQ8A?`*C~)H{!?Hovr4I=v zFc2F+9q2SLcfXw@qbfx!$Z@(IAYZ4R=Nki%-bWS5;<42b%B^TVv4Xua@ztB^t>PQe z92HfE^>=*Qr?PQVenayivT8JBznR6oUjlen?KCPMwTyaP(_D*Q4nin o z&2~xvZ3x-OVdWA2{UVR{Pr6sp#w6}Tt) I;r>w#4{^ei3D_h*ry! zL97bPgA?lsAG3EM#0G2a+I+c6m}C|>RDzIRj;gr3>DpAcbLG_*GoMHH%@cIqdTsE1 zr`Q`;Sl)}C_=18whoFmQ>;A25>)q&n(zdO9+^wHeJxRGmBV%&7X5mx%F{9P$jxzq@ z7YC-1GY^W2_isJ S{N@aEf|XT z6uyRmte%RCOVmq$FVwUXwMn%9s3=(*kGg5_Co1%gvftOZfXdUsvhUOD@EPp%3`{s# z4M=52Cix-3(ath}6}78ve&Fe$5X|N4oS~aP+e!W=Vqw-3GAjGc_O+7>HUV%C-bfyb zAUlI}ycNir3&r0Ig%p<*oXzO8JT;U%l^xC{;%2y~Eg+Cp5d|wfc0Yte{v~jqpF*-f zh8$+ymzcQ5$}K4P&d9scVCKg(_W~`SwnQ9V=1JZ;BCn7i16iZ;(zBBR4A)cwslQ#~ zO rEc^`*5q;1_o%6hNn|3J1riKc2p% zrRU(FB{4~!>% azc-d@r|5Hn# zo)^80UkHG2aWr-keT`1qlQ^&u2YlT@910+o@GkSTqHR2)$PuwwwYs6Yo*;EEsWiR8 zd{FnM#u2GhSW>-tKv+&95L1_n(|0#()LJo)ePA+Q)Hd~V6#;E4DW)>X+KZ>74f@AV z&E zeTvpGro_L&-MvgYJ=$;nTJH!qH$9$a6t4Sk)Jl?%|PiEkvetZ0){*+qFBcPuD0 zVE0`M&H`wkWe{3xf?k$Pr8PG 4ECYq&ABx}MvQHfsV%!uodf+Pkw7FMkOjC2z=( zcsrYW`3fMgac7(lLIjeFOsCfHro>uKs1DZ-dR+0vCS+spPcF&>BUTv@Q#@m}F)NX% zR_=4`S``#D2=Z$N@a-R#h{UN#P#e$m3MN%fuPr*}fKbWZ0A}%pyU#ZYz3C8ft@h}E zIie5hYzWRhrbo9B%h$FCbzZIw7utsB=8jp+)?vpCUZx})HkV=N3vQi8t-Z?*MRuz;l3c$1apLw z+cYbm=38Dqmj>KNZ~6p}I3=N#r4;vx{vlssY`qDwe(_6S7drx`7!#4NTdBPt2|l)H zpV%*(@U^XZEf4|ZMDy}ry8p-?O0*fB#3m6dmK5Ums4D-~2l{Uw2vYA45U*JQjx_Vo zsw|a6t?<5-F6O#Y)ZaZb`1o244UyO;BSGHYW{1G58D5m@encuii`Yo3OP|pML6^Co z<3gmi9kRi^&TRvShOUyQ#o9Q= rF%b7p#hiNlHb|FY*HNhawfb_POqD`)nbtF%79bew*natNFtAzRG z&ZITY$=0!hJozf_T8$t_(6VtcP!+cCmp~>G#^R}m-!Hz4ZabtZCuwvELFS@HA#R%M zaKJQprJlVGZu!PaAPJEx9^JT#uPo_4TK)1s->RiUZm#y6=*gToJL2e(t+VgbdHwE2 z#b7GX3EVqFHnqNtx+CW^v}7ZAe?JM@mh|rooGevg9W@;=Z8J8T;s(97+c%GF$Pu!) z{=if2S >O#jFr4lLY(p1>7OwkAFNd-eR9wLK2`fWaFNNr@u^|M{Or+;9GB;C(*UAnery{=j&*FoOD zGxM1a`efDbP%k`Q&xL4_%pcI-3OpaB3qABHps6dLiU=(FZJYduTCO&cMaT;A_dlK9 zmVM{yn{U;2ka9R2n+If&{c`BgMbENjIBFv=K(`9SU>?V%d!wGP4A?!vH0}zAu;ib{ zIvKO+-JJOCeNoL*qbWUOv1L-f+giV$6sEDa>z >O9@`f0~NevXvrkIi_DGYs#{zDGkVzV+U=b+Y~gUfJ8c;){i41Q32 Xd&S8TjKaIAXdx{&pcJ-Y1E$qrJQ8(|FsDY1U*J z!sScT`4Vxm7p4;&m}`HO^iaNNkG?(Vc%^%*ZZ BUUJ5H9JYG^EXJqP#gB8&93P{WzYx7$ zY&s*ObtIT^_4-%N{B!fUMGFIS#1|WP%KeT>@1pUk<`Z-gY2Gou{_+ceHVnTVP!Ec^ z|6n{SC|O6c#a80A+(LCp7P=}gX$;L5bzy2(QKN|vwtZN71a{>DneWc_@_6)#6?YGe zjwgG0iuC}y%j?$-_4oTb9WmEC=#r(osW#Slmjsyp1P1$p>D!%x1fXb9iCh?*^3`YF zsm+qH96yq)t8>~XIrN-R6y=q4n>k`nK+zXu;x|zBxsBvJ0<&}cB!dZeui$vS7B$Zq zj< Z#PEP0i>7yE>Il=>zZjQ|Qq>%|n4lWDlrY zYFZ= 5-2FK}lLs*8z=I(MPlS#lL9Ej*sRb>=3h{-~If5T#D0?=RZ0y?WtK!TX z3cUO(nh(n4yl(&}SA$#N;PSd3vT>9PS&L+7wM@7vDveFZeRDZw|K*{MkMuQBq+6eiyfW>@Zl7SH z*1Sutuy9&U*W_XoN&h7~7$Szlk8okay=Rc+FNN+c*%22~Ldu!uTkeqq8jypqwu*>?qfeo8lC|r>21qNu1^uOZJ*=X}D#$`(S*rtHxf% RxI9O@Az3=URaYYQE+=duiGE{1gzJu+ z)tO@pfJgQw_6S6r@&LkzGZFHLL(l_)1lG!(VV7LTBr6#sl)vN`eyuK@17-g1KHim5 z)~5wsgJ3Uf!N<-ZN&-U)d_SMfBrh@6Uo|fia-(0zoN~=-u_|Bz0nc}_Dm0CEl(W`% z{>3JNqeUoJ%Y*RbK5rg5p%GX!k*({`8w0FGt jl7 MJ%a$H%K& z-TN!$B(N<54`i{@Ba}hMQphK}2ho5A#UEr$WI!7M@I C1pf2i7Y0*d<9b=i+VgfFwjUe?E%`&f*iB zH?9R$fZ&^+bl{T(WJ8Xs%(GRf`Wb-A? hRj}|&x7-|^vGT0_m6Wq>j;9RmMU+AojN(y z*hV)lb(`o1e}FV<+Jy@53iNhIM?=Nwz9M%(`}G-O>QVPDqD22SyC#mVwzy=zLKw9_ zMk*;lUV5CQqHX=6-qA}6dgyWP`+$WLo8DuRRq+ks--HR7e_LVGRY`ELy5b~o+Nab9 z-Li~cObuI1y8R7)KXlmdsofs=RDIx&ui5kt`0{ff_Tj(XN>$8${2j4=cq#qX%=uF1 zELwKT3D*Znnz7K-s0X)44D^puI_BQPxAWk>i(_iC5)XHqn{THofO}u&z+^pT`LsKLXvtCiwrcRum3QFIj1zU=*!u!3_b zt?|_g&7Z`I;@LN6!TrQlaG>9!{6=7ARDjP<^*(7%I@pe3f1z}UKwdk_v3Z!jNT3*Q za%@*tLtjpRhT3}W+lH;R<5NS&6RUX|0eIvX*9KwycQcF&_taKuWUrrMP%|s}l5w~cZ`#HOB9HjsZ zC`Uhp-w!;_7#g7Zz1NBOkV&1!Ed=Wd^KPn!3Y)u)e*&9(iC@JI6sbl)-}a-{p&Mpq znvgZ@(!lzLBRwMg$M#Uw=dojb!&h?B+PhCqW@B&VJ}zqcez5tfIVdE88m(6A+#-}R z6uj=n)W6NZYAQ#3Y+;P}BhZlmBpze#FAx`1`jwM&>55cCQogVS2eOEK#}8Ri;2jV{ zJ^WJl7i#mYyAvE{nJHbEVI|&rZ7M1isU~X#9f&p{)l~)T?Vx05ayZ+kEfSuBPMx zov0>rihZC-)GIynXnw)9)cUlFg_Z{~UYo}&=D-;^_=O`&o4R~}IE-}f6|LHRxsh)J z?dM*+p8T9)19>zto_&oXh%a%v)3!Oss}YS9p@fV=Sk0zjJr$HKCgi51Fg1Ffufzy2 z@O&{5=52cUUf3AXT3bo_=99&oS*D?AD-;T=ByQ8@`0qUAXUea{XS_xDpOGSDFYy0k z5#YSk^AUl*re6YB)@G@u38C>@#-joKlGXbP9L-1TDo8KfRb$P_{knH{2`Z=LQkrwW z#a$ERjYkiECXimK8$Z)7V+HKZmrTkwaLr0wkVw6s6=xuslbR0S4$FbUpE$*IK2i7a zWAzz8;Q{SpSW=NT{r~G^`-ePgDW)HEqJdZ-Kn#Q|S3qHvNf*<2@rc&F-fz!*#w5Su zxXE$=^el2wq{K>zv`skX5e32`UdoBKe50X}eNdqYb^qYSw#nH5R0UW4Hg-F5hD+qQ zEZIxP>(Iq9rpF=DR6nE*((9Nq2T4ZEDE$%;4RoF2DpN}QS%ME=7?=(53sVi8RvG;2 z$m}$2_`3O4K+Y4o0+Qn>QjF>Ii|0eyAX``+T7aR(vivR|X$vO}!-G<~=qo)|{fTa_ z^}hrhFKBn*po%HfDLw?3rrgy5(H~@POl=2B(UJH5Z*(yI$II)V;tKm$$>%=~)c-JH z|8IOybQ?$90t1W-Mgbng3_v}2ZW{n!#mgy&-@PvrtR2Dj7$%1uEKwR{KP=43=eE}& zXW$(|CEDc22kwf6tw^5#` z+9%Pxf7{(>w#w{!RabL)Alx|JZ? z`;0WK63lJ>y@>s{q4b%;-)0wH4B~f#;)jmGiAxt}l>1|k`LLWij7>#>RcJ4$`-=7J zoWp4=;EeHp3G>|ylktXSC!^zQ-_kRa(h};{8SiciNov74XBL<$=-J;4T@rG;aY@g) z3gJwLv#cajBWlJFkaw*Tv7+`<4OZx}6Zp2^DdGE|7q-HYmkwF)L3W`$Y?gdLLx}o_ zhZy0w{J?%0++tSC>;+k`{yz2*v%c%+>^-g>pGJ1A*w=)=@a##4ex&S)??Eo{-G2!j zWk9SJ|GVn} 4SHSdfy^`W&V`aBQz91b|3%1L;3FW(L= zV`T`?x!?>GWfpwJz?Ac5f{HrYvYi{C`c6|>r`xq^n|bC~L#h|==JgA=_5AbYgZsj6 zn|UhNX3zm#`8(~5tV@0_jTy; Jj%p7d>2G$lX0C;?#{TI!+}HOOY+wXjW#o A01Kpc; L4xmZ>TUp^$SAlR=q zH3Acy8O)4I5fnyH48OEWK^)ze-p_UP`A=p=e*cz!HCLejkHH-73-Sv37<6i-hh&sm z6lE29-zzZGXLjw#l=Vx;G%&!R);7t$ISO3y>asFCy3eL)vJ+;ebAZL8@eUwOk-k0a zi$3$W+vet9em un z1GPWgirF9A)rnri+&+r|TUhdFm76O&`S67^W($HCJCbiiR}uL6b2RcTNNc|A>ATZ! zd6Kx3Av<3MWe{rJI}sjgav*G7?NqQ6Lv)n7(CKaq%4P$OvR;R^cd8mbvb`E}Pm|9dN?KKy*L#;dsQF1@>z!sipBUmWBJ0@4dK zcBId8T`+Pr9X=x-u_ZKi7 OJBd+*Qe&O1G3sZXsip7EKghd zPrhdWOq(Fh7RS0br)E@E?m04kV~nd>d)1c;PNXxfkFQE^Mjr*=f|Q{IWE(#{3U)}x zE{??i!oyF%&L*kkmUu^!K`3t_B<)rfxZ6vk1Yuk2b`* znx?$&B^|7;ygDu$;=aWAR_Vps3Oi+VRV>Dyc};=vA^jMOWp3WBFRXIm)t~3y>U|f3 z*jG(qZfd<~oQ!`qabZ1q{jkZUOL{6#6TW`EQZ{u_qR%ewtHW0p37rZ4_N&Lo=Nh;5 zGS?Ryvt0r+u=6s|Q5(wOpQNz3c*y6xH|LS!%L?`YjUS4e!fD+h-eD4$6$|C0n9Po! z)0F8;WCPfJm@pWswK(SpjDH35-G~&o`}5ZuR}S2qxg@nO8!K*n_)6~}%GAK_XE#8$bNOJ< zdVzlh^Ss|)F1Lic;@0&k>0Vn_+XOh ^5XKM?_n+@NPYV}RV#T=w6SK$w@c_C z_q-)7%Ro_UDVXR@fjk>qDHA+CVPtMu+5B13Yo(uWaGNVabN#)yHw=-T@tj*h(tvA1 zB2J8-iNXf1@Awp<5V?lUP0P+;q@ZC2#>yGgGl> 0-vKg9*14C**F<9oV#md29gAe>j F4gCbm3!s#zbbF>Hw?C zix) zy?Vykck(U rUY zzDs7^6sK0WrCQ!l^k?jw&5OT5-BdZx|J4DT2f>(|ZQ7T6-BjMTF&^OMi>~$en(_O3 zx~=g0)JN2}4PNDEwVS4`_gI;6&J)x&o=d-3H9V}c%9Gy+x+T-|ZdjDyTdr);z$&+W z7n;TdEgt2^L>mu5XT&nSxO2c$A ?4{;>AD>t`c?#jkxC ztXguhcs_K=clQ}3?x&pA;HK3d9 =P@EijXAkYyeBv$#lbkWF6{G&E zmUT%e;R43e!LtoNBY(rZ#@xKDJT5+MfWN@WimS`#IpMhZV{=Qbi*3DsmI+q}f d>W{u3G8K%+RoNJO0LhzWA0R=a!D01&6dd4(w5aPycgRW?j$HamY( zHEC+Kf8)shK17Ax-Bax)hQC#CU6JA&&+pECGX*;Mb}0&hYqzL~E|a=Qov@Z(^!Pd$ z#@mdO=DRqsXX(-ltS+?BaQA6YO$8mqps$$?>-|v-lKKC~)yLpO{r~#U_*eV$KL@cD zl<*~f3A}-9VnLqz7PwDFIP<5#UWA*Nv`c&Pg;MIzOOMvaq_yguI}Wm_1=(D6ay6(( z4~GvmI)XZqx*Xv{qW<65C$r3920gZQa+!7al;6Ai4#cJhQ4zATVcp1CP6W`n8MRYB zBrA?S(Ilvo+mBh#2720NC{sn+|DzDtV@skSf0K*+eaY&6tk1do8&W8#y7Md~!E2?r zZ8A9CZfjc=A%k~)aqU#+K{t-;OP+aeuV$2RYLGH$H+m5G*EP})59osU5Ye$V4%#~( z{;aG!=n3A=gJ1SxJOQ-2^PlS*$KJkd`nuKTz*{1&IDfQH{qoxUPxfB#!w0<2+9eXQ=|BD( zAGL6OXKu6=WCgoC2@}fylV|c73tLKHn(rl)xgXSwrWl*O7v5D5i%7d|W))4g0G~Mp ztPv@WM&3h&Rr1TgC n>s!Wd9xO4lh2IZEI(UGKqjTqr$alYu1FTLN?wl z^#F$#!gz{a4aN@r^&r{vsga5(V%*x>;}n+j(*9z()Ppemc8E|2;Mr${s6MY-fgV^u z7d(?2SQ~TsCGh9mmJXbf@D$o=vdIxAXzLD0+}EO0wO&-SANP+G&n>vP$2Pd1iLbu8 zeCL3<@ZmO>(#H?NB4DXPO4RSh+7murz2y;#1(zp7*G>Z#&<-o{*ECUBrYyIyD$4BY z*b?lEzmfB!Wg|_N)2Xk^<4u;7UdE>@eIQhXN7VD@`B>UE_p$ouhO-|@tguk^@i1-K zOC#LJ a0Vh|va!>4` z9T$gW_n@1(7Io)r;UJh4SFi;iJhhLDeK6RApj8KHJeJNKd!Ef`@44r|&e~&=eXy`n zrr_Y(ussj}Hc}JCXaG4g9wM?`hY(adIGj|Jo%-gJ TKI{TEw)28&n35m&CyWKfxrCfCjDgiIO#*NN)JY6i4$<>pQ^{Xd7&E2nwe}} zcYW!h-j&w%Ga85P^@b&%!kd(-^!2UQn}Sy(9fUGzP#$fwDuZn2fm*qRgpy}O#y8CU zMm^iB@Gn%%{(?4W>n$B5_s3jB%< Tor&;gcQ<~&!dfpMK fD$3v;vsZXF?$nODIj~Y&D zg^Y3->m@!}!!UWcD(@jv!Q@C>@ 8*@eW22Fl12qnK`k86pf<+@e`H>lL?q5^St)oQ$61b|>R^yZ^VY_SP(Rq*e z?m9lGo+& FhK@_{Lm+adSq7sYNYm`5VglP&^z!TwcC+7%UcY z&BCy)s&S;hns;rx1A1>_$4^^v{U+zK6GRBl3lNG)LNSnwLZgAo(X1)# zt(h&NVn|_|t)^P7=0z_v{qWI~w}{YX-7Q=D%sd=lot?ToMQ7A177>@>aL^34WpuL% z BWkQ}tGGcCqWJ+nYt#y5IW&+*xQ#EcP|K1JCp!vg`k}Hd*TCLyS z#0h1>D@07tQ+7(%Dg5}EeymPdhi5RYt;_n3U5L}{!`Rx9+P}I@`}nhRBKo(8C3Cr{ zGR}Fa8Gss-fs5|QmvZao;y2HTjeMV8>qi~4lXU@ps5z}C6?{gGQ1*Fp+(`t|b_~W2 zsrcdH&4{G*^gKU$&V>uX;ED95)uMNjd2d0e(9TRDt`N q&$NCqH9kuAedi5!y~i6`RaG`Y#(oKG zT7g4j^CtDKfl1+ne{{d|W8#D@bXR5eTBhjEsrU{p>gV)aiItDf5yr)Gb)!OS-#(5w z;3Q{XHGaqBw$(E}I+AaTd=40bPC(b4w`zE;+cg>qTYTchlxPc7lmF(5)v`K-g&fm* zv?m4HtctYzxCZyqot@eO#&e6lt%Go7d6(ECSVk1}cgjh5%gOeMdE|SEAzqPOGfZh! zt6s-Aw%HgY9AnVS= ^O3r2_h|h5 zZrE7=6lgttDJz{$l!^zg1#58|xaur@)XfLRg*a8GV`?_+q3qD}=kFui&u4L$-1X-e zm-?XBp;H7c7;A1@l4%se!sFg*BX;|r&hA>gjc=FVGezc)Ju;1R#~G_!oow#0LAbi) zON$ACrh**ww%2k`3$jO@INYPe(c{$;<1y 8%gzU_AF>jcBCgLCqNcw|AMz&M&)m zs~j{kFGu0Hj!*eTjtu&O{2@{CyAS#G0PJG*=E|X4RU5%%#XND4Nomjk5n!`rPgk!G z&OHdfnEE{~)p?k@j46KUu^8$y`&uq6KW~JNQ*Ob(-}`w%2KmwKhyB{0a%mDKO5BEf zTN`kU7~% #^H9^d-2#i0iBIU?JHxH4W %Kq!dGTbz>jr*1N^sQd%WkVJ5Lxx?itKP!`q*2QDRP+Q%znvi z@qBtkg;{Q%2)U5f*?se%<}v@B1_3&^g}B)n%~x2JQ|uXTIB 8QeG$^CPm>Yepu223)qs;4^6OSach*BlFv_H!)nLjQ}6Pl1sFf&7!Hc9Z#G( z&GjHC;M!eeWG|KfR(A|5Q8*BU?*|tRXn$7xVnT$^J6&amXPt5QSE<*3N{;PcmHYoB zVA-Qs2o56wTBbaFyXY-Xu#aY?5i5Q3XrZiRqYu$>SsgAt>Q}N=<+L{9xLHmy?N5S( zUMFG|+uvE5K9{LlacKvD)qc$&;Vz3l&yG8g`QV@(6cUq`^Tt$5>#=ra{4(9u#g%wA zoU4$kCLZ5B-vC|08>$2P+{27qP5kP=pMM;<;cSU7u>uD|0Ez-(@1F>Nya{>iikkkK z)_&EY=_5+u0o>@?w=XW6Kny^Ky#@UjOwv+^XVvOVE?uiBSi*dsVReV{C}%~*@&j^` z9^QG!VqXAwV2*%H(<5aSXTb6-IE0`bmu#E6?Ub1QEHi&(YHgK1J0R8pDxS{; zc x+$LWWAoj+$i#FEKk0?X*;>mflna9~J1R+MG(J1t*f8I-q*zKLR1YH%1GdhCoFA=A zV{_>25nIt-uHswcuRoS|8oL&x*h0A3r~J+(r5Dv@H13goujVQ%{bqd7rq(*hRtnWZ z6h7m=9=4 eT0q|qby67yz9Y;{W?WL83+T1?Z0n5Ps_ z?~C64aG@`p1q*EpHKUWl0`}dKZg^LusEE_Z^LC$Td@MImW;@LLK}^O4t+ S@M9=m5{5ZtvdgB=E?XwlGjxxBxHsxV0|Z=IK=zj8k1(?DCU z9=#-R|3-}nPkNp6!56x2x>b_wv7Vzw{(^?60%HpbjNxNj+peb$k%lzlJuQ}P z@Gu$0G0X(>(!`C6T*_>U+Gz*vn$cu^)zl7$i^pCV;MBQCO>W*bvc2~WeeT*5J%v-0 z=eK@FszEnY=~p*+c(0#fDZ9?R!>yjU*`gELk}VbWr}U@3Hc6vlqcNB?FWx{!?3Cx2 z;5k#+pBv0sHqYgB2wyiFpN^eX;Vo#Z{`SxHTlA_}s|NWFwv$Gzk^YX`o^Jfg{vocl zP_=S~QpIHgb_Bc{Z$8KMtg<=(z3535-y)@|RsXb9QR)cdMl4-p%W~|=yEV$Rh