From 88f6e20e3fc54eb3ab7f6e419ed6ffa0eb36ea02 Mon Sep 17 00:00:00 2001
From: zouzou-sz <59632945+zouzou-sz@users.noreply.github.com>
Date: Tue, 22 Mar 2022 19:59:42 +0800
Subject: [PATCH] add vertical ederated-learning chapter (#168)
Co-authored-by: Dalong <39682259+eedalong@users.noreply.github.com>
---
chapter_federated_learning/index.md | 2 +
chapter_federated_learning/vertical_fl.md | 68 ++++++++++++++++++
img/ch10/ch10-federated-learning-vfl-arch.png | Bin 0 -> 57149 bytes
img/ch10/ch10-federated-learning-vfl-data.png | Bin 0 -> 20830 bytes
.../ch10-federated-learning-vfl-train.png | Bin 0 -> 99746 bytes
5 files changed, 70 insertions(+)
create mode 100644 chapter_federated_learning/vertical_fl.md
create mode 100644 img/ch10/ch10-federated-learning-vfl-arch.png
create mode 100644 img/ch10/ch10-federated-learning-vfl-data.png
create mode 100644 img/ch10/ch10-federated-learning-vfl-train.png
diff --git a/chapter_federated_learning/index.md b/chapter_federated_learning/index.md
index d57a02a..9c5ea01 100644
--- a/chapter_federated_learning/index.md
+++ b/chapter_federated_learning/index.md
@@ -6,6 +6,7 @@
- 掌握联邦系统架构组成部分。
- 掌握联邦平均和隐私加密算法。
- 了解联邦学习实际部署时的挑战。
+- 了解纵向联邦学习算法。
```toc
:maxdepth: 2
@@ -15,5 +16,6 @@ system_architecture
fedavg
privacy_encryption_algorithm
challenge
+vertical_fl
summary
```
\ No newline at end of file
diff --git a/chapter_federated_learning/vertical_fl.md b/chapter_federated_learning/vertical_fl.md
new file mode 100644
index 0000000..6ffd635
--- /dev/null
+++ b/chapter_federated_learning/vertical_fl.md
@@ -0,0 +1,68 @@
+## 纵向联邦学习
+
+现在我们介绍另一种联邦学习算法:纵向联邦学习(Vertical Federated Learning)。纵向联邦学习的参与方拥有相同样本空间、不同特征空间的数据,通过共有样本数据进行安全联合建模,在金融、广告等领域拥有广泛的应用场景。和横向联邦学习相比,纵向联邦学习的参与方之间需要协同完成数据求交集、模型联合训练和推理,实现技术方法会相对更加复杂,并且随着参与方增多复杂度越高。
+
+下面以企业A和企业B两方为例来介绍纵向联邦的基本架构和流程。假设企业A有特征数据$X_a$和标签数据$Y$,可以独立建模;企业B有特征数据$X_b$,缺乏标签数据,因此无法独立建模。由于隐私法规和行业规范等原因,两个企业之间的数据无法直接互通。企业A和企业B可采用纵向联邦学习解决方案进行合作,数据不出本地,使用双方共同样本数据$X_a$、$Y$和$X_b$进行联合建模和训练。最终双方都能获得一个更强大的模型。
+
+### 纵向联邦架构
+
+
+:width:`800px`
+:label:`federated-learning-vfl-arch`
+
+纵向联邦学习系统中的模型训练一般分为如下阶段:
+- 样本对齐:首先对齐企业A和企业B中具有相同ID(Identification)的样本数据。在数据对齐阶段,系统会采用加密算法对数据进行保护,确保任何一方的用户数据不会暴露。
+- 联合训练:在确定企业A和企业B共有用户数据后,可以使用这些共有的数据来协同训练一个业务模型。模型训练过程中,模型参数信息以加密方式进行传递。已训练好的联邦学习模型可以部署在联邦学习系统的各参与方。
+
+### 样本对齐
+
+隐私集合求交(Private Set Intersection,PSI)技术是纵向联邦学习中数据样本对齐的常用解决方案。业界PSI实现方案有多种:基于电路、基于公钥加密、基于不经意传输协议和基于全同态加密等。不同PSI方案各有优劣势。例如,基于公钥加密方案不需要辅助服务器运行,但公钥加密的计算开销大;而基于不经意传输方案计算性能高,但通信开销较大。因此在具体应用时,要根据实际场景来选择功能、性能和安全之间的最佳平衡方案。
+
+基于RSA盲签名是一种基于公钥加密的经典PSI方法,也是当前业界纵向联邦学习系统中广泛应用的技术之一。下面以企业A和企业B为例描述RSA盲签名算法的基本流程。
+
+
+:width:`600px`
+:label:`federated-learning-vfl-data`
+
+
+企业A作为服务端,拥有标签数据和样本ID集合$\{a_1, a_2, …,a_w\}$。企业B则作为客户端,拥有样本ID集合$\{b_1, b_2, …,b_v\}$。
+首先,在企业A的服务端利用RSA算法生成私钥和公钥。其中,私钥$(n,d)$保留在服务端,公钥$(n,e)$则发送给企业B的客户端。
+
+在服务端侧生成RSA计算样本对齐ID的签名:
+$$t_j=H^{'}(K_{a:j})$$
+其中,
+$K_{a:j}=(H(a_j))^d \ mod \ n$,是采用私钥$d$加密的对$H(a_j)$的RSA加密的结果。$H()$和$H^{'}()$是哈希函数。
+同样,在客户端侧对样本ID进行公钥加密,并乘以一个随机数$R_{b,i}$用于加盲扰动:
+$$y_i=H(b_i)\cdot(R_{b,i})^e \ mod \ n$$
+客户端侧将上述计算出来的$\{y_1,...,y_v\}$值传输给服务端侧。服务端侧收到$y_i$值后,使用私钥$d$进行签名并计算:
+$$y_i^{'}=y_i^d \ mod \ n$$
+然后将计算出的$\{y_1^{'},...,y_v^{'}\}$和$\{t_1,...,t_w\}$发送给客户端侧。
+而客户端侧收到$y_i^{'}$和$t_j$后,首先完成去盲操作:
+$$K_{b:i}={y_i}^{'}/R_{b,i}$$
+并将自己的ID签名与服务端发过来的ID签名进行样本对齐,得到加密和哈希组合状态下的ID交集$I$,
+$${t_i}^{'}=H^{'}(K_{b:i}) \\I=\{t_1,...,t_w\}\cap \{{t_1}^{'},...,{t_v}^{'}\}$$
+
+最后,将对齐后的样本ID交集$I$发送给服务端,服务端利用自身的映射表单独求取明文结果。这样企业A和企业B在加密状态下完成了求取相交的用户集合,并且在整个过程中双方非重叠样本ID都不会对外暴露。
+
+### 联合训练
+
+在确样本ID对齐后,就可以使用这些公共的数据来训练机器学习模型。目前,线性回归、决策树和神经网络等模型已经被广泛应用到纵向联邦系统中。
+在纵向联邦的模型训练过程中,一般会引入第三方协作者C来实现中心服务器功能,并且假设这个第三方协作者C是可信的,不会与其他参与方合谋。中心服务器在训练过程中作为中立方,产生和分发密钥,并对加密数据进行解密和计算。但中心服务器角色是非必须的,例如在两方联邦学习的场景下,不需要第三方协作者C来协调双方的训练任务,可以由具有标签数据的企业A来充当中心服务服务器的角色。不失一般性,下面继续以包含第三方协作者C的方案来描述纵向联邦模型联合训练过程。
+
+
+:width:`800px`
+:label:`federated-learning-vfl-train`
+
+- 第一步:由第三方协作者C创建密钥对,将公钥发送给企业A和B。
+- 第二步:在企业A和B侧分别计算梯度和损失计算需要的中间结果,并进行加密和交换。
+- 第三步:企业A和B分别计算加密梯度和添加掩码。同时企业A还将计算加密损失值。计算完成后,企业A和B向第三方协作者C发送加密后的值。
+- 第四步:第三方协作者C对梯度和损失值解密,然后将结果发送回企业A和B。
+- 第五步:企业A和B将收到的值首先去除梯度上的掩码,然后更新本地模型参数。
+
+在整个训练过程中,企业A和B之间的任何敏感数据都是经过加密算法加密之后再发出己信任域。同态加密(Homomorphic Encryption,HE)是业界联邦学习框架常用的算法之一。同态加密是指加密过后的两份数据进行某些运算之后直接解密,可以得到真实数据经过相同运算的结果。当这种运算是加法时,就称为加法同态加密。将加密函数记为$[[\cdot]]$,加法同态加密具有如下特征:
+$$[[a+b]]=[[a]]+[[b]]$$
+Paillier算法是一种满足加法的同态加密算法,已经广泛应用在第三方数据处理领域和信号处理领域。在纵向联邦学习中,通常采用Paillier加密算法对损失函数和梯度进行加密,从而实现跨机构的模型安全联合训练。
+
+模型联合训练完成后就可以投入生产环境部署应用。由于纵向联邦中每个参与方具有部分模型结构,因此推理也需要双方协作完成计算。联合推理过程和联合训练类似,首先第三方协作者C将推理数据ID发送给企业A和B,双方在本地完成推理计算后将结果加密后传输到第三方协作者C,由C计算模型最终的联合推理结果。
+
+
diff --git a/img/ch10/ch10-federated-learning-vfl-arch.png b/img/ch10/ch10-federated-learning-vfl-arch.png
new file mode 100644
index 0000000000000000000000000000000000000000..656882e3469c200695874b44b9c79835102b289b
GIT binary patch
literal 57149
zcmagFb8sY$8!epOjcwb`#
(7>M$v}ri-
z8plOk%SF|}+{N9<*$m9W-oeg{0c7HAW@Znvba1)+)-3=AMhqq`CamU>b(Zb!p|&vh
zbMriN!#e~SH8CFiD=9IxxVX3yIyf9@j5%G768vj`5HT_|xEmS&5*+aS
z?ajG|)aQPMvx%1`;h7Km>!?_SDqT8CQ)y-X
zx}j2Wl5u_OXei`B#HTl(O&Ig2+~m;%`a)aXU#@DV?v__;S*HM6~Q_7mK4){+?~dd*p!
zsKkIEN`>(>K5PD4O2^Fr;{ySG-;8pI3W;bf=j?n@zC}E*;s!_fky6~Gr)u_}!?5OS
zp&KeS%Tt|B#sn#;8|cHN9@gVs+`l9^O}{BiY&|oZ29B{6E0oBD17#==uYcKi^10!&
zL_lLggCFvuDu>AsA9b-=!LK#Bd<%=JI9?zFQ$#w{@OQACbv$x}$x(pa@bVzHSD-mxQs^fKR2^HN+UvhUgayAx_GEt|Ua=8JmfeSiI!1ZOAG%xaeJ3l*0Yf9EdXBvzpFC>9jGJQ&1sYrr
z%18+Yd_CEL^Kxi?9j9sKw~~tGf1KTKnGQ+tF_TgUAE<%fI;(Ln4-VwS?N~iS7C1(Z
z=@B`Sl~;6a?w@${(9+pM&T5&Oq$gL~PVI0ni=7XWzUkOzkRe0=#_Y{Qh5k+R3Rmd}
zYWir*5Gf|*-)weV`zZJ!N9pL&DDYTekq4Fjy#Mc-AM}&Wo(fD@2F;phEmpDBkXk|d
zea$y~nFoOT*Mxj80}r&9Ns{pYAuyM&M2j)cVQH5*GhHOk*m7>sKO!vc8Z=nKoh@Ft
z;np_k%#M-q@&J_+yja#^)uBsUSkwmm^J_q!4GBDLKwjp~ae+wTf;Rt#IK#lgNOO|8
z@P@)sV>1pCPbZgSymVYa!hU{6aCV9kCqQ3;s|=lujZKGrLz#l?Pzl1DgADj;A`;jyE
z$MKi2;CUitD<`=adnG4ob)3_ERTC#zc#_csm`}
z4<#{ASF)*1*9bk9toeTdjn0m-fKJ4~%TPMHE*;Qa7*V@e%<4WW^zy*Rx!tw|Q@M%sSdffvBxOA?DyYTxVl^*tf84{A5xrB`}`$3l)l)zMB#
z&_}(7y4ZOG*RlQohF4<_3N#~Fvnl@mgoB%tqd%pL9)-Sef@SdqcD&PS3bP#U44xfg7t%CVj4
z&^xmfa)3-BiGR{I+s(v8E=N8)(B0?UMe}zgNoPsPHSg=DuY@TxVe(@lahg;*7Heud
znS_g1kad8N;{(b>0z@DjSb0fw=(|mXqm!Az2a5IG!u-+_8tTzdew7TzFx@c`QBX^%
z9i*bX9lw<}cahmS1%o${w)gG$KGq2y3=&)+mkj}Hsl53~4B1DaySZS6In0MYdt$3z
zWJ4(&h39^2S@ILMTyQ^UT_HJyuMbfHX>Wo|H75rGln=^!)3sewMdtTQy|-*DMG`LlkH$S>nW@nyP>zcLYj+K=%banM8lF&}m8$C5(9nvJpS_W}$b963sZ)-|1L3r@J|rflPSix(
zuC41zN5Yeqt?!7}-|6Bh!ej#Zq9Gc_hGnq|MX>EuIrx^yXh^UK@ouU{0{gj0vmqbzP1AXTk
zMC7eQQDa@UPVdmf#I7(s9B+@S8Xas-b8v~mge5_(iCTYq;~7CU=21#J>3>GQ#;1
znB4Vt1Pf`#d|7MFu^nXbFB0kdd-h;@AR7XVlALBNOjnm1eXZGq;(tDn`mke45P~GJ
zb2I~Z#|hvaSyg1R-cI$g^yeWE1lns+ZUVK3tUTE{af?1vr3N3v44kq1u_H_QD%n!;
z_LjCg2^Oh&YSdbHcYR!C3%}$jABgCQxf!DL0AtBbNYu`4pYI3s80HmKef2kRczK8*
zXJ*XkZ?*Ia4N=li9-+IeB4=O?YeSN=nEx+Ir&_#l;d+#pZn@rT6L
zzcO8l+QNLn%t?4$1UU%@@S)T@1!PVxj$4(veuw9Ai;nkYMsJs~BduJ#O^NrHlWI90
zMmR~e?U6Vw@?x|YMuGubK7;l_C#{FutwW;3M~p|TU6LobKiO=j+w>##Y&TMSWo!MV
zOsBpd2z<{L5+sV+z4Q7u)%k|_ibQyDA97n>QBJ`yc4j6$wIQi3j*-AG>f{b8F4q>_
zo-sZ-!8^v<4Eq98*FPkdkd-k)W$->+bZzp>X$+w{x>;4b<=OzV>w)l5F1vs4v{u9!
z^EPypwnFRWVyLLd>~^@b1+*WYZx_3sku_*C)jgVoG(}D$5ZZW#ufhtFnwm74>hgK>
z?S#2|6sJv5(pR1c=#vbGM*0`F(lE?r$ujynA2bRIh9pUR0?17tRkMjDCcm&4D83XEG8(L
z%CZRq?>d>mb8P$
z%c=?@fp~el8KO+>e8d4#)zjY%YEu@L#{*O>g5?rr*8wxp@R-Q01Pguh)f$%^|FeL(
z4vy@Y9z(+g&hD!oi_PywXO>-`Pp@Z>|fZjBDQSq
zn;Z#UzNCt9I@Yc{z{Rhpn$a=4UI>f#Q=YuM6Or-6Hv+z{>1JQwH|q|KF0DpArU{I#
z(sgf@;KW_+Bq2E|cXwsigiQ{r`GWh7(xRsc1oItZ$|-C9yb0Df?PL_+vE|sK7*gPp
zc{f&y&an7!U}`A+QQ*dZ{lidX%;$O9TX^*^?H!|HD~jq9ay-os{iIO6Xyatjv8Gsq
z_WcY$W(FHe&xud5aCK%&o|2N2)TXb)#G1N<|ILg4U3oS^y@JZ*AmuW=8YrmhYJO%5ISNd7IFr^-
z2QYYQ=@G<8jD=Npn@v1+GrR6^*>_v{RN@mA&WL^Fe+6x*9_X_??5X_Fm)3P5hpFp~
zh>O^O70?)=>waS~av;j5ng7%qKZ
zFm`M3d&bMrXsGG!VX{k#EOyV1q&}Yn;H9FA4K{zxEq?va#2xZB*I@8|DSF3$&c2=o
z<--=l2X*VAUnn%K_x<`V9DK!eU6=^l
z9^Jma`IMDcQ|;JV-mNGl^sN`h$BBdGd
zv@UEm@(|E1z5Ssw`1oUoHpFaq<64#st596tmVS4ps}hTYmhOEEjeuw4SzN!=yE1zjA)h44HO5ULlFn!!uM4S
zaDLZ}$MTx4fUq3h;LJ)^CV}TGt4nSQhA6C5-=AUabhj4ku0IqOoo*_O}r@BLDEcXVehIT5H5>Y?
zywsWQ?n+O74cIz!YW*)9E3H#eS(;mwDrU%%Ek3m=?(Pgf9P&z!O
zcVgjp*3Ybtpfy2%l9o-j932OIxIZP;H1uA5SxM}d0mtBt2}x!!of|?L3LAB3paWHq
zfIcC^pqNy=VAQ5=Kzk+}9Fae=yXLFEtP2l+uHQWwUH4M}&}k8qlyEM$Jr|iBGz
z$l_LPmWePG&7Z8PF<0xrCVgFZcZxT$m~G|ry!!)F;DcBcl5(Xo@e{EVQdJKI_0jOZ
ze9i))=>={o$P_6VEEmmaaU3bNn(Cbky^ujlgxeg0!PN7SCl7BG9i62e-^e)TunKz5
zT-$9+CmeUd7ysbk(EK?z6gYFBOK@YssT&31otiEk#ciUQVIsRHr)W-n!Ml5
zsTPFqL?#mO_Mal9SIN48=1I-*^^?+MeHra}~WPJij3KSo27CIt`U7W>9?+bSyAs;A67g+o`
zwo|js@6hO*tyNu4bqWq0gp5{i`xT%65MeB}iEOTT64q^TNS=`S^RfkhXUGG*dS0K+f=wbI;W_sES#7$E%^-0Y9oyzncRUa_pdDfYv6YxWN
zLOJurP@+wl`3==)ZI;ilZ|4;D<@ZXNReik#W5T3Z>u1<*_AH(3KbZAhYr6gRkcPFZ
zRW;Q1=ch?|Kmp!*ThovdCe=o8=FZyE4Ga5{G5x3zCI@uUj%|_<7{N&XEQc}mS`2-e
zK_wc**PdquP1Z74I^5??8-HchB{7dOq8!3WhJ0GUKb@p8Lc}q~bLMkl`p8z>GR$TX
z)tC>@yO}eH>HDGFThKz2Bq|HbS|excX)!lkVfxSldG7q+CD1?{tE0_#eZi2gTZgBy
zy7nAia+GKoDX!@FG$umHOmLUDks|iXt8VKhOHcWZnwie%DmcFDB3hirjQVc)L5sNe
zRvdcVRli!%Uac
z-d;u%_HO0``3553!U6gW0DLD#+Os;A65PeVtfSNyRq3YHF-X=fC|Jl0k;jVrS5;@Y
zRle5vJC2?H;jb9kNlUqa<)am?`n2O!!T+9LsBT?*6mkTDm?6v^v_qP6X7DhT=hfCp
zJii9~VOen?63TsO(gU4ymcjFYifw}?FJxU5<<#tSd;6GtrZ#w9k(4s5A8(cvyW>@S
zb|ehxrS~5MDkmoDr6k!M@X;Y>fEQm8_
zVWr3DZ0=id^~lDY{aR%7lY}Mxd}-)zIaeDe?J!=SD^26nO-}D8-kjMMPOej1-4A6d
z2XW*n0Y6YIT73-K)RyWXRa(EoOuX$V{3$e@{?|?khwjG8>sBQi<2k!6=a$f9hI38O
zRbUL$U(UJVeTf-gt51|uZhPUJ3SMKqIW3**!%u_gyGySOgq_hW$Iq^BnM)CGb+^PM
z!W$ad5+FCXKSOg7-KtY(>fAVmBmIlfWWk|YhZ}B>j`{i8ii3Wy9cl))<9!3mU$71z
z9Qs+(lgo1ae7d=77fvtt?Ef3towuF8{`iRDs0JxNOmW1xYjR!NZ$M@q;8QjH{^=~A
zy|63G-c-fi81n*p!b#!s`lX`~@kS%eDa!mNY>JY$!mgR+elC|$?*Urj_fg&si96QJ
z>F~#R?hSC?$k*ntE)MB!D=BM)WI{Rxsl9dRN-t{~-#k&BrYv=g6#QuM_6^S?nZT&r9@klVY;p13!h
z4UT!57DBc7W{3>7JnmkP!Pj&>>L9`u${14dbbcwG^Gw
z@PUVBspA^$QUQ9&5Fom6C;-0jzO
z=%#!6DANJVm;JZInjJOgR&irBpBRz_(b_p*-rVZ_c$-b?bY^txYO6$#e{i^*3tdK9
zoN&uNLHj{uyg}HsYNHX!(gV>1EAQK{E^9P{4T6~GLj#E`1fr`)BqX%oyD*GIK4`L>
z7$(OW#(ckX(k|Q6THIGZ7}yBk(~E20ds(2J97?#_6)x=BSmTAmw5)|Mp
zS_g%FA0LUzS|Ls3>pf3g!jaN_n?Rapd4)f<4+@uqR_OgGx~tdyXEyq=^YQyEPHfsa
zt@mN-7lUW?Q;I@QqjQOk%y~2lo@PF8nus+1p>7_WFPe-yaovK31vl;o(a|PXYi(n&*G@t?JAcxhzxyIJ&^MO&_}j;^m05^NM*b<%cCUPVoM5w&2ZDZa%{ac5b%
zU7q&b$NHc)gT>=UA@IIa``aZ5s_m-(YRKNMSCpDDH?vj`tvbh)$)Cg%y$
z{*v$Z`)Ka0i&hf~j#EV%33Ohox35stvc|VU6=Jg^?Jb^*y6<&_%gy@?dO*RTj!1t>
z6%Q}eJW0TBRp2mPo7nfY>6u`OE*_pV2ig9bSAdmFX(wF
zcm++g`bUJ(D~IM
z9~Tcz`+x+0S6^nInt^@)NX+qQui#SAavO9KV5D^`A~Zbth0UjDXA|N))!K#K_(NuN
zQg@a5ujs&U|Htd;{txQ?2X&%H7j@9szVGlDUB9L6Yl~=gJc(7!(3tv!St)inY(U^Lg4Cv5
z9S-g@V?R0>3+Zkew=qTj2C8_a>=KH-13ZcUyfVg(LBP^%DKQBPDIgEV2GX0MhG6zQmA}y~i_CeRJ(z
zPe4r7=L?Yn{+<%+-Q;S7jqXr;?nU29bn1%hWy6ahvFb(c&)O7}ZzkKCRZmT@R`clg
z1ZTZ}bV`xQst;N)42*)3Ds@aM=mHp3xRhxVt_Fk1zFTI{&{Ink+P&{q#!JIIssZB{
z<2B00np?=ZqDHJWgo6NA;LWUzOytVt42sG=%IWmTrGxOxG!Ke
zuuyyqdlDhso=&n)$ctDO*VhB?Xs3&H*7pPhTFJt5nQ0la(YiuewFxj0rxfE}w|X1C
zkHEv7o5<&d0k7fl>ijN8ik9={W>rUQMUu*}TX-MSlJV>S^Kbg;@e3C@i^KVshfA%I
zvzae!1S5w+RzWEn1UUNdrS*4Ho#?g(qbWI5em~9XRNGAc3*L(pB%8>{(%bza;Cqf&
zv14)7En6)g${yc-LdL;CE7ft2iMmf5*B+vigwFQS894P2vF8F-?hcNM^$F^X#_U+f
zf7*+v#Kzr~w0`kJ+$S>fAKgseD@n@fibGhvZFTqg8n^D8Aimp&OB%SQ{eHJ_2jfEG
zsmUmbL{$9dNZ4eyeUPcmr$5y5db@+}noBhB{q2{{v)f;KAe&yR=&er3_
z{4&?}XAiT;CzUUwbxb5gT=%+6g&484+(>KFaR{{vd)GQl1^H}YYkJ+PsSoTm?5oR3
zFGxCWXC?VFFNrXv09|?zQ6BVk9a2|TsZut&Iml30_=}k*K5^WjoPN~ilT-tMV!qr%
z=$;t_?hSjfeEb*)i0(e#Ewost<75H(@X?CDaz>54?@F~>ldLlOhuXL#9C4tNd>#?^
zbtUa~cIEhUo)v9bI)yFrG!0RpNBhSd?iD6f(-?M;rY`L`m=9}6-U(tD+BR4Bi|AOg
z{a}N#!Eyf{9P#;*?{y0{Sc_OFQ%>e^hU$kakogOAmToP)A6Ye|M6Pj=p8c40m;e*?
ztKx5?8*dDCxNPK5vsl1IR5?AC>U+8>{YvizOAA0rSbpk;JKv#U0gVo<9K|K5_~d;~
zUsJCsu-D+?&uJr5U~;?-mE%m-vd{Yf(D~23uf_Mh0!UcnW)h!gcFRIQ=&n9>DV@EE
z@!xBrZ#4Ow8-v5oc-rmO5O}#=;bY?7gN#usB!&JC28%U*L7Hj)qc8HS*zWsg=xOR#
zJrxdr8<=tl^M&u?;*5lh>EB-mw+^g*O}0cKBt4JH#Q`+4!ROk98UywSOGHlWI|z$@
ze>1zBkK>dPpTPF@nStxacuk|NTZvg69Ybbl31#Ar34ojotj-0oZ@v$*#%+uZ8$Ilk
z+&f?I4)B_@Fk4}Ra&$(^WFb*7@rM_a**2aW*(uQgNQ$45H8jV_!hRpb0&qtE?lW{^
z^?7gM@R$Gv@z2(yzWK;15%YD;GQF2I$2D`O-4Bqc30ir&x3u&aB>?7hdO{r$peU$_
zz%LnaCx-r(0I=`tak9q(4fpCjhjIr8wH80Onlz^eF3j}S%^3u&^3)2lXLOo(=ttN3
zoySKHQ)5y^O<6~GL3WmF(m0IHu`g046
zwEu{=Hs*h~I%-<`exv87vZUe*srY+)TF{nft1o%~5!K`zF{9$?zOR;s?Ki8@iR)8t
zBV@#;hkg4Air?#jjlkQ!xP;_Gy3ldp!as}Zeq1Z#jDacFHmu{}H1eKPi
zrwihWg0cTc{3CCO#sW-1+5wc(H6E1e#^2F#f5oYHJaF%Y6AUX4XMQ2*X$
z{K~Xt$G-RWCI4G{qp)jMrG%bHEg=ct-5x2+P1B2&-OYSO|bk66x=PEY3?C0WXkkLDO$H)a5hy?N?2vz1raAD|-a-CWAN89l-D
zB`-BsR#TA>u|)^?tMN8}9^XPTWom^t@Ju;M0o{9s%I^0R&74fpPmkAF`&@+R{nwfI
zPV|M=G+{O=`+PbHO0Xh7)~E9;Z-z&*!sgJz^wa09Yi;@t6Rymg#p|WO9<9qUOs!t~
zAej@ih(7#PZzUKWsPYE5ML{*}VV!ppJX~@Qq+fqp!5`?x2%m+~5hP=k(am{hGPBlUKfo#~Aq`%HGO2E_I_~M{_7XstpI*I^(24pm(h$r(f>^Ka
z?c0NTYwm0h_*#-PsdOjqGHYAP&tsZ^%$t+NpLFS`H+9~Sv$ZVwITS9-X#Lz?+d`!o
z^Ex9zQ-1pb65PN7t^*!uN&7@&L(4>qPM#{`Ye
zsvoxxcA_OJi~S8iN3LrrWJhSr-_pl#9xL+eB1-kWf&hJhfI%0ufx|0oX%2fv#W+f2
z9h2Vl#+mA|b3z11JncI4gYCSvkSl`;wBqv9)r)&
zzKICs4pI?aijhTa1uSVcnEqFc7nCz!`uN>3pe^zxXo||ncc|$i#A`+K&i$(PLu2}$FMg&M6J!8Mz1K)z|8RhUdNgGw3JE~GeGlt6;~7qHWTE<|MrPI8_Y+J$
zSIbKsPkW-eS;2~2)@!i$<{LOo&U`E?C$okMmB&kqJRDms-Mu|I9?_0j48aT@7G+mv_?VPF%<-`dRj0DxZD(FeMP$
ze?2!`SaW_JZ*7YZ`rJ@JQV!M~l`mI!Xy{><)-o;NC%1>WyQJ71+gm>y
zo(8#3L+C#f0wfHEX=HE--t
zo8>irvww5ogd#b!ipR|qU6BgRqe6ScuML!OuQ&0FZV)V|zIVt#U3bmqcmbz?=|@#N
zHtXzJaXQx|pWA28S3j-x00;k%pyJCavBHJzlQS_jQzQv^g5lZ2gRK*1Qm**al)es#
z+Iq8B`-3(2FmXi%P($dUzGv7w6r9%mB@qlqg>2U@kQq-MZy??-LN_c;YSTu~*z~zWE2UmF0#j
zWqq@alG6&POT3XG%M+rpEk`uz7FIV1wSOly?Uc}UgiP7KGVfaP!49hX*+@(F`+tNl+V6;+taIGEiFSKO$20L*VVNnXm4Rl8cF
zsil$Zng|fQq_}F7OvCjvxP}Oeu@04QkNL$ac4Nw4`rWR-!B+1PgKn|w&+zH`3gKD|
z^Vus}L<7?7pU;h;8w1DV_%A*;i*WzT_YZqF{eAA4il;`CMse@I6#oNV5cA!;j*)sxC(#|PT
zTK!gvdpaKoF)GKab)Otx$VeFmiN7s;17+LiWl^>)*<$nYc>7}1n@O+_$O&enew()Ul50TtaqF!xMhOJf`mwj8yE_FSMyQlTA`>X##878H
zz%OsKHRrpb5BTVU=StnnNk;Cwy|uVreerL#xcFrD9le*!W~-s-uwujYyzQHM-k*~1
zXgH!VE+C!!tpJY2gZohH7qS2aFSQ=#Y_$`Dn`9Z|b?~G8P)3e2NsmA>x|o}di6{s-
zRn(>I#ot8ayvdjJIy2jAr16XPY-E=>D;cUoQka(47{qIHz7-H7AxeG
z2JQ>mK96<{_PgEmKIi-g8=ToTj6{dn@z6m;H;GCYHmy_}002$+g+*wT}vN_WDcGK=QTp!Tc__bo>M&OKZr1v(!
zaJ&dv3z&3#+P#q<_bs#_Qax!!CM)ZV%~Ubi$}#3C?@X~@+U~XEbc!P?LDjA1_2%`d
z=>+$)gH;^?>g+5g7p$OB@H1}RJ{zJcqovphY?mL&G8E3~!9}~S6+0%Azv%4{5Mt!d
zCjZVkXE4xF5uxQdJAxM`d`@KbFqnjq+UzE;EteFvg$`tP@7B661%OAp^6W`Pz#}!a
z`z@7cWxeGl=1erNAG29zFdxAW<73?6qL1Lk@db8^u1fsS9Mp=J1B}TvF5hjq5|@pi
z{&Z1J_00YxywTS388O@s)!^ajjtWX$m)=B_psXrBAMR(4#ZeP%_IgPpPN{UdN1(F5
z!nV)3r*=m`>M#VED-Qg3$VpCU4XC#
zxRa7vt(D>)nC^)3nNQO1rtsd>TJg|`=Q13}X7WKPv*_eh{p(>&VH;CmQ
zh)F~Oe-7XGFuBFI9BHjGrht#qL$$?4_IknY@Y68yt3SaFn^6ij^K-94^)X7yG}riV(-vv=gS{1u^qDn|$YzrHcSn>|f9Q25=q^7p((r(b^t0&A@(st$9*(
z7djqerR8_|?;2Qn&u1FZ3lIHppn*dQ&pb!1Weseazs%+~vDB>&QJ%V9PWTwxR
zVtr9O&zjsOFg76pT|=YbglP9|5~vftUF+E!5jQ61YWiUeH8}Vw(YGvcp6?Ymfbj7A
za_;K!@z2Elc#d_5h=iCJv23?ok0qb?plDM~01=$K4*!Pw_8-;b2iHu&$x7~S)yjq%
zW!EHOStC`9O`_!ml5`6UJF>w7c*`L}bm&RWBH{P(98K?o6*{#Y%-f66A
z{;800?;fb&{oVd>Oyx%DPGpGMVY!}JW6RcCeHh|X+U)|uHlgYAU)E8~>`N=`OMXEz
z`+@WaCvcP`%8uK4*etglN4pjgvlU*tSyi>e6>dri-bJJKp09C>#0fIC6%6~A`*QkF
zrYkbe`(H8-pUQN3(I0qM)a>S-tnJ9!D-o9&6ampCV#ZWyz9M(iOQGvu1Giq&KSkw|
z1fT$0!y<0;RS7kuZ1Rg(}rZNKvu8cxOkB{BPzobmYRTbEX!H0y*PjFyc&nFmMrkR7^H8!=py{QV`@wB=c}cHe{v
zxLgk_o2#`fT9Y^d`MBE{@2XUmZ~S8}sWmd}Z-N`)xr7h{+a=wEWJcsH5g-8pDr14A
zvHzl?3f{}h>Nn<;)zyc7TE3pzdH$}rc2rhXT{T?raF>M8el{Z)e_m#o(hWwI
zv(}=2vnPgRBjFqgd<{L84bNr##1{hftoH0f>JEEe!^M?##rDhOtKjUiw?-tiZg)#lBh3#>%j$L~Fn%bC#hPeLnS$I5s_gx;
zjB`TiNt@lu^F08vGZd<@<|v+zGlXmmY9qje*Y|?)=0v)wIRRh+kUa@C53m5C_XHhP
z!Dd%)O&jSR6>?Uf@zwg_IgQ{?-kM00w|GKRQ^LHiX2i}7T{@|+Pp#C~$~aHQweU4W
zi%~Fr)wgR|Fl}<9nMg5z`h-V6I=*J$;_9IGV6e~x*u$D;@c6y)hG|~3Cllv3Y*Ler
zk7ULa5)R4k%l%5ivOb2nOo$r|sS}O>mY6_!`O!pSg3+Q>Y;V~syQrA=?J$z*iH1;9
z8b(8wOJI~?dgB2vEH&^)W2#QOy!4m0q)se{O44G8DS7Sr<$b0WBk1iqQ$X6A@$rMI
zpdli;KhYWn7O`9eaGv*l>NzqQ(nGk)_S6n*pwc7b!3-Gj{$>UreFrq2*N^vueG|>(
z*0R{qlz!_OQ<`|75q_1BQ6+I-Z2|j@9$i*vWY$5d?VZ0)qQzwR<@AT;L;~ik4{EWL
zBThF?`DNu9f|4Vch*+3)
zPGbrjcJh=U2f}ZtCT+IELXZgOVZszWis#l%lB1Sv%KF;UM#?zi6vgN%$*O89gMfhP
zwmV8TVQe4#$rJ79P&ThyF^Vzh>)RFleQ!97V3SQ40_VRCnEzJuSk$rd-aQ2XpqjMq
zTB}}YI_2LEf%cIQI@w{)X>k^NMn)$04_ygmEAD~fee|?s0JE5!L2Z~(SJ4P)uau3d
zbL~CiG5`7evUR+@cyQ1Dg8=CDmg`NhK5aMUJH~9i+cPrr(pzyzH@IW_&m3MSxJoMqZh){^0gy@nYgQ>22l*%P
zfS$q(L)|=1Lt1;RJC5-6awpLlH!}nJ>TzIm$ksHylhxd0Y;y_EUobZ{@`S<+p(BPS$gXN()%%gc(QPgZyu680?g9pby00{jG?Ub8)zU_;*TR9qUA>pj9A5hFRf2~rqb6wZ7%lPJ^45Jk|-?%}SPvOX~T;C;#;T>85w)={Ma
zVsQXAn_*?cu2yg#-!{g4H&Q3+ha=d|M|IKs=kS=E
zguv>CU5<_aaP0y0iXc`2{(G=xJUudWRY6Dn?}5M8DMRYUAD_QpAbmRdmCKVY8-LK!
zRyw&klM6I+enWlP%F}2tamS>wTAp9z+&VQQT%BK&leU7WVN{^n_kV5-KKT0n&ys@+
z`)9e|fr@a5lreQFwCK%tQ>0^?Lzg%U5vV#{S|zeW7)`%33+haULyXaoymn&Jw8GJT
zb(Y#l5q7e|kjEuZi2x7L4egGD!n#)^{_V~LjN~v^_mqD&mr5unfIZOZ^l($Kf68W@
zO)@wFYWND!PnmLJdh+;bL;sJpH{SXKT=O+Q2o&F5CEj02BTcvjP@uT@-wb#b#Q{Cv
zCZ|ZN4p~b^MUR>pB|Z1&hynY63qiqp%lH;L`kef{Qh)&uRIr$9?v_#AkYBWa#OF^gh?OETTZkPWv>f_cu4v8qwhkvh`V#cwxiDp1{aRqiY47nO7YT61^
zegjIoicHM{fVkCV+6^o&sY&$z+~_&F7IkvAZwC)hDK_o@8?~I?kyKy*;0*%{>@9i&
zLhybM(-uJg#8Dd6Tw?9b^e;(~%TS>Va)q5Ktcp9f3SQ)#YdUE1R)ouklTuLZ
z(^ttk;#&=a;pg%Y%TPjtQyBq>fo9-C+7RIul#Dx?6W_++!QY-kKiRPw3`#&AyUW(
z@B4f5U3b+Lk+6V`RW3E9(fN?>2ICEkCr`Jkm8%w#&?oU77tuGPr3qy#Q=2GnoZyh)D%u+IT1=+`h3W&Y;NakILzSq|
zwiY05L?*LOIrDoIT!bG$Go*V)(1TXDG&|IE>mLM{S)mpG{LMebRJGVnh(Z;4AN9|B
zrzERDt01Zv*3XA&V8vQ{&7)|;qE3b9#XQ=qP0E*4{OctR{hJS#&F4g+zX-VVbGmmT
z28Mc`*i_hUjSywiWnWIB&SaI@DL`5Umky<`r!=|7>>U#ACk+iD?~zqV!2Kp17!dcl
zIi_0k7*ZczdH#@!zgfldXZ3k1zB`^fq_0-`*^FW`;8*m)Ok7uexf3E(T@#^O;9$Yw#p
zeXf}Xg}SOsBE{@pZ^~I#X?$pugz|cJ_a22K!6Kx)Ayv6&iS8tZ6%2#(YhA*&FzrdR6o?nY
zuZnfuJ1$#nz*6fFOj&RWC1Q3GWf@5X1#?G70fY{XUxcjn;{}F`$L)+bOlW$UFa4ou0+g)6
zE&Eur@BGP?d1y~PQZg!0*!*949AGG{*02xrz
z!#uNRX74>$K}n`6^2Dq9v)@`#V_e+|$_?^3j9cg`ri`gTCo~{wp1c7Z_uXz1nuW*9
zfWcW$EyvYwz2l3YG;N`lvdzNkX@uvLqme%D3dh20o+BLB&P(AZyDA2#)>bw?vZN8(
z6@j94IaVSS`}b{WmI*FyZ)k@{sg{>YfU)`*^kd?u>CscZ_E*4xm4!?F>4R?rGtOy&
znN-e0>t|D8#`>!SS|}6VLr@Fd@ex{9+_0Tm2vOfe0d(Q>b7cA@Cf9Ck^Fhs5a|=S#
zh8m|pS=#J#(+`-8;dL?@L7^c{@T4KqC1n}gv|MPXXVO()j?K{3@AW7;6akn7wg~i_
zcFk%*FG8XZDqLx;-oD)^Hrp0;q%l)7r9!A&7Z)DOm$JzFre`Xe*NDd*5MN(tY#68|(Y*j(flfi@P86Y2xR3rx8^C8CUt$?c6Smq+a=(DUml$)74Hs7_ny`)%bK}3ft{?
zQlfZM-SK^=JeQiXPMzsuq*pCkX3>~NndGnS&c2#Rl4_OF3ue3KZ0o7SfQdQZAFqK_
zqI$mRtkGvwazur)VJCi5AW|5{rOhABQF{EI(NW4PP%%$Iomt8uteqdTzhAIhXf>F8
z)A#PUES~x|+ym(9c;7Z6^J{)v#502+E?o`^C5yXl6i|4=`x?;RMeGmI!v;voG0c@!
zc})FK0Fe2Qf_2$ea0C}^N@Z)Upf}Db`;7~#!EYBXKF0*eaRV%EC%np=v%dUN(O?>W
zB)$E&iX0^=`ee>HJs)ZeOl2A-nr>5eGN{{m^R|;YywK2luSqE!J`clO7_PhZ*n)zn-&vE*AV^MLol>?j({CeO_D
zdTi^ndzRuHQxU;}_d6P}8{hmUY`=r|yvKXhn^l^&;Zi!ynutr)A=Cb=dPmj9apCf+
zo3O3DA$wukctQS9>+8=HYG6oHx$sypy?|CrO6(vixdrhw=xMq`^iw11@yLF+@ZuqX
z%P1d+KeFGV0fX2fDQ1`S2pO
zMiZc5{TbfTZ@*UjMinEh;!F1;p)ZuPK%e4Oq#qT(VJhgC3TJ2Yi&ynTJA%0w)
zz1qBjTSihiF%;3??MU$PUDBc3wN}WX68LM*RqTG-6N3)*#z_;dCYEx4Fd`qob`Q#V5;T2$=&ik4w
z_)!>5I#mI-9!$eUqG4l7I*y@_
z(9!NM(4~1tuN{!A2F%tW8K97oQ!)O^i>nKTQZb5D5NUxi$e*h*v_U!>(;XS-x`8}U
z4`$D3>vX#wRhSx&>ke4VP_cU2cKVz^$l!ga2#A>k1`Ve(H;d|p3;&>LCQ0-1x@=7r
zq8}{(LSH9Cxt>XOda
zAOBfshap*e^DpL8DjKs6*t)l>L!fCLv%U9~f!bab*!W^UUpR~u6OF$=#i()12!NGb$510#V%mPX{>
z=}n({Ice$9q}F{06k^asYo&lpWYuzIPX@PFpown!_=`)#&P9;KLQBW|gzGsWg^A!S
zF&x*85{z)uM3NC3A_muGclCxV*D*;3QXBfuVz^E+o;UU*Yu60X55<-vAtny0?;qmx
zkuDAg;4>8hJ%VP{Ne}dOtyw-IZHfO&lM%t!y?
zsWLh_cJS9CjKLNLHxR(x>CnMp@Yyb6@ZH+)LCJB_Dr5RN1}F|&Dy(GM?++H}h%^Z;
z1m13`1J|b#&E)yR>Tl{BBOR^~-CpZKbrvgujk@lzbmjXH7fN7|4DS>h`iF(&8TRCF
zG0;BiI@VBxO6DdS<~A6BGpS8YAl?@qtgJJrUZbb0v6d|d`JqmQe?}1(c!-|iz47$MbkabTninyL^+I-c=cM@lJW(<6bq7A7Jq@Q`bI7YSGpTQAHU4uQ
z9rvoTjepI8_^EMZgjOfB^|yn1Gri~8cP(wPr!1M^pVDZD#&V&;orgM>Iy}Ae|TH5#H?FWGr@=;snPR{A!EE1h24hQJsOCkmp)fL&}Z3?PZn%D<+Z?X80f(jae+!_>1T6%HRq4txy4Z)~?*!2toiS#@)abEIc>bF@Vvm-XXBn3&fWqX0u>^a)SRz<{S=qV!^MtA
ztJOSkw4eR+*v!hb+9M_f-3xViH5FNc+^+okkq%d44`NBP^XkHil9~=-?))TeogK4m
zDo?K?kqTYJzBF)h+y%velPOC(wi5*#YfW!UVVuzNnO><9jr=5nD6Ah5M8d^{ZUhTu
zYTPV0Oo}M6b+6rGZf_SV=1>O_i0grw(&C^OL}F`j<-&ReIOL`K~emx7;!-49X&?`J!9u}z)(+a^9u_R
zac^!gX>x(*a(B+p^w3M^daJpHJW!G+phmn%NUJmI%*%ychU+D{FpIXe%$0h56aJ2W
zcdYX}cRsN4>6_AQTr;Ib%+C^zJq55aZhI#awmZKaLU3Onr7Zx;
zeKT)}S?&RFGwqs?QtQ<@qqQ^5hwD%dPtG@n_s?ETPwO3`7i|yS29Gy~6Ns^--Rl+J
zjU3mH(kLV#XO=fwUarV>^z7@CrE~x+m`;E9lM43FzNL`y7T<2?Q<20VnZ_Qs2(Kfcfo$JH;v!)Z?WXBcx|N!U
z3y(eh1{Ak^opL=+V-o$X*Z9?gh1k2+4M}@56wR8*8W7vBH8*Mm=S#yT7v|nJk$nis
z?}mhs6WH3|LcSU>v@oul>m9pMVi?LfkPs!jX3Ja01_nP4rh1Ycs(r{UbL`iGJB
ztsat3^DjS!{O&;0I^jnP4X@{T`P@3wXyUT`^mKXHN{YTp8TFQWi$(D5!g9WZC2
z9a1IY8ps8Utbt+ba$tv9S!Lv`w#V-?T^U@lCY=cEma3QHp=P^%v3k;&h&J7vz&|~v
zzVj;B47~L%*FjqnUeadNw*})8(z=p4bF9=vR_EMpud0Y*?$OppuQgLI#W=-{t0Sb*
z4;xgO-~w>M4AgOq5o(#<^j}wpp0|CfZUZ6v+f?RQoN<>#B_;N<_|-*TJBpq=zF3G;J{hE
zMC@PE$}FaM9UJ@v$BfU_SGI}b9TI!mNgg*k*zw`K;3Iknj4e8QG5i;CVLvE%Q7JwE
z`B2H7A!HQU^Lhr|`)yZp1aTtA2}P*pwrhGVDB24;nU59=Ze;*5&mi_vz3mmAdSXW*
z+6UG_iiZ|*>xgtXLeAx~J1=nZP0yNP
zAIc@{NKcL;Xed7p&)4^#wSDweDyPYciGDb~c78n@ij+NLjp;ZQK5mK<^EP|OF;vS2
z&Cf$KA(i5Fjr*Ef6J#Z-(?2+njNzAoZ&&)j#+I?$P7VD3@`QaN`?h2`O(?4&x0e77^$1t
zgCcHqo_Sme8V={xb!92?xpI_~`}qVQ@_hVhW(y6sN0s7`QEn$5zy6s(wB^m^`b_hy
zi$|D_l{lfVjn3SQ3(qp-qpZbdAk#6}*QaHMA7+Hqod=Ogj_c~psaX+L=eDK%P)u~K
zQOC!g9Ue!Vt3-r%xUHa=(vc_?bF@ZXnC$N(WnT<>Iwlv>oUmdoJMJN;JRVfeZNUqo
zr#&s`To~Tck(=>NXHvA|1D=}<>M;}|Y0vk}p7dN#{+!ENYCJ#-z5S$SoA-tIiqdD{
z9j}WHB1!)?F
z-f0?m`-pUgt>9+DgZU*=>Ol+0*ZcybKb@)6GiMgAZhn70LgyO4`ZhMw3Ft5`czQZJ
z3&^Qfxh_w^POhy66VVDc!5UK9OF27b1kcv|ftpVXH(p)OPyC>is3e6^p?Ygc$`h+c
zy+J^#tP5mpE8e{;6JyWv$mx>Vuxo_vpkI?Y7CUQQiQDt%-4`1cFC7v}GyT&+C!!`>
z1(?)W3pw{(!Zmk7yw~77cPy4xoo6SC*s$ZPI@BUvNo!makJYr3d$3DP&I3-Rpl@oa
zVY@HQPtJ}E%f(b#YsG+^2gaMFvq9mQLu^?nSN9fss@f!Ssb=I1&8CT={s4|
z-JLe>hEusM&+#)*BI@L8cw-@>k^DM`KlSdiI4gU@`ZNNtSGq{c=iEX?1-iX=$ySg${zM|Dg7^Is&bDls}
z*y*MCc|_^a+C5d7QXM(PW_IF(6Rfg=_LiQ^yrT8e>t_F2>A<=3^COQRO_2bBEd2z9
z!S+!c!HttZLw*#UO!tps)3VE-BlFl+Z&F_wioE+LJz~xsT|{y#-mGIwOEC#^Vi+<;
zO=CdzJfWQHH*XJS_2$b@Ej1vjxvhtax+~ihaR-?gF*qL=??{1}zs;$<-}beOmT$}s
z!Ox{(PrBKmsvVPbRYN_u~jOl$_4%ru}3RC1{alaEe#H<+_N@8YnUl8dRp13o)
zyLf8uy>Yh;C=R*LaRj#5sjx4^D@i-JQR{2BlUPK3i^HdLquK-H-mT50T282eUUb;u
zR_Y%0$c{Ya?{INP8#wCcc>rd=s0gqrotm0MQN`kW@Qz+OYH1$_gQlzG#f{ae*c$QF
za7V2nKh#%j_l@NI_Bu#R-39zxw*MCB40KA*Y`-lw9Lo{G`F!;>#!)xv)Gu53WbAcI
z0cA~|^pdFwx}8WZn@nUW^zP@S3lGbDp(k_7k5)($+rO_FDAf1M*ONBuXP}2
z5TcgA`m|peUZczo+LIZ(`AA%ftrCCf@R$vIHdOEUuirhTp%p+HO!FvVS(wQKc5PKv
zHyq=nQ%E&|mZDtNYYdyNS6MB~7<^ci%-E3yE=QRvyr-u$Qtt9qW0N;(8twxS*>9Ub
z>bZYFo141xf{Sq-f%w#)5T)UW|J=&14BeWBi`Qz!{ZQWzvDu;f}iHl@+#YU-V
zcbLUBAx(0_2cW{(iPE@m-B7pu&}a{%%eP~c@O=&7W|N=e#7NO?klH}^?ymttmjO0
zx3KJY!zD58QdpTFs#6+=u1%Q44A|@8P^MH-y-gI%p3InFP~~4PCn_aAZewthv0|#q
z-l&=@p*wdeIH6XN?n`Fwrp%P<#%xk;F00x0V!ahV31MsSfIHR7kezP8-Jc#vWt_Cx
zyYvaCs&N^ItY<(cHB@5Syw*ghkrOL;MCh##)br`oCuw?YjEtQ{+IJM74#i+Xo4kxo
zkm?px24r%LxG-+hJ=p0qX^&?rdoWwB=(O64?_eN>YijW}IyT2ca6@o_7Xb2T~s
zDhx%I*shP!tuQW)x2>@NX+GCS%hY7&6cr~=2mfU?Y8i{$;d-Z?yM^5fO3p3bkiRU9R{Y1^1dVFkYzpIz=
za8^m*azK>HhbIhq#e6V=fJ)vq^98XDOHoh)qXgRNj?y47lN`3>{mx1K{W?F|OTxq0
z%HQFAO-%f=ED>UMzoHynw?6HFJOsT%#?cK~|IzxsJjdLn%LOrfe7g9+oD%!cfpisD
zN8`9}Y4x@yN76vEh#gMHq7tR3xR}+f$+HU;uT1D@h(iw2Zf)zj`P?-aT*Ep#QMh)(
zF;rt|CxpGcj-1>5d)R0bC3E;Ib!T9`zhWtcR=Ook{rQ=BZo_x3eotoFNSe0v(bqoNFExO-ttZdrH4ZNzg4kdD;es5%bW)1%17#=BkJ*LJt9
zR+O>zmNYoaH=}{^+$4`ap}B^{eSEyHdU~IJX_Ic1$~vT9X%ENM{35-@j;=aXKPBZ&
zjbpL7a=a&|7ib7iZ1rGq@3;Fi`8?#$`Pr&Y5sxk!ak8NZ^JD%Uq>i?}-|d^z+UK&+
z^5v1OzbDeLwKdAH7WLR4zUL#SJh>}8%+%tcz7?64EuM7r4GlTduh?RpxhG(}V^%vn
zAUt+Z_ZxexYWOoXF&O;pivbi>75wk2{uFUX$BZhw_^Y$4eS37gA``f26PLPZc7q(O
zoE*ZYGKA0lUPyIE7>`5Gl@d`FCHx$J#x1Z$5Hed%-JvSfKf2)EQhs;&9PHWFYC0WI
zp3~L#5oGeA5yso$f~;ovH#$d(MVnG_Ysb*7FMiT(r&y=t#Kj|FuWgh{T)NKa@*fZN
zS3O)$j-|!oeuhqoYzMJ5Zy_hBRU8rWVwRDF6Qw0HN38Gh+t!;>-z4Dxs)C4po}0bO
z++8go^;5=t#3H_CH-h*njZvj_$N=qY6BTa0;=>L1P7Zs%{Pc0y;RaN0ch|$#qu2X$
z+bV;nY%CI@dGTpa`89Ou$7ZcVP0hJMVe#hmuAfzbXCLJVu%(@?$pYO;cww6~9sasf
zxvZfr{%sD}I~pMuoCyY9H?-K&$q^2xZBu%>M2^2%kC?r8v#W%f`itvLmQ=#U`@ZE~
z+2pJ4_W&q{Ws5kicXXD>ylz&P8X|k%eO?*6J3HVi@99JeO0OO?O@!e?37mY2tBX&i
zh(`-(?BoP??@U4QCe)7G9k5p0Tvj%;0-OnF&v&+Fk{%wYp``^I(^MjgH+IzJ3}kW%
zTqo^undNjEAAVJJmJ{kvSP`<{-3VR6D{1K}y9s^&9&s>6vIA=^$O+8kLly>Z_8jd8
zIG~X|ERdIyn^)2HWEPyQL-q()*CMS?v_P>bUgLue4z7evDyYZhBGm3*5ep0gd#OwR*FsbCdw{Lo~_s##ZNCn@eGMvER!1W=aU2?Spo?d?L
zn+HqU(^J7}vsW9o+i+?yO9WR>o!VS&%i*XolEq=Pw;>~A-Vei|wfgnSF#NJqo@g*W
zXC4#Dug+RJ{taoP`!d}{`*U`DbpTe%w=V#WqgvpkhoRF!taB+gVJ=uj;ZW!8Yv`b>
zIxowg!AneNK}|I+Cuf{+yM~%wQ@cQ*&ZH!pp2=?)H&lrcD^`4qZ0Is$bj-!gKJbpr
zsUE@nIIBT{`-ZcC=VmJJLqfEiyiKiSFesyRR7Q=dQ9ie*
zsA!u93>8|^TAQAxb+RLEY#irI7sx30(%24uKLD6%h({Sqr>M{Y?
z3?0VB5{|`Y_bh=Ia@`Y}!QI1t#2dW{nH>8QHa%079HCgpCs0;5Jz@*#B
zS^6P+sY@p)>`E^#A=WmS5w-IP!r@bgR>G5T(?6zIP2+4(Be3!>6olRY6po=mDN?Z}
zu1cnbr2b9z0XsaGlv3oDC5Z7Yj&tB4a25{GWMWd6Om@M`w?x_v9F
zQcNL`#{OIJ1)7^EbL^qbGq2>MB_*_+IrKoxXYW-bT%d0aQ*
zw#B0Jd?Tp1$|~7W!bT
zh`#c=d4e3?@mx$hvTHAab8RUJf3hb7kO>}1d#$~1o~e{I?2uCWa
z1H~=O17!37ef1ZwO~~K1!KcO$!w#7PlKY(E#PdqFWAEsxAn&X`qrqz~Uj)R4!6KBu
z6`)Z!yF7*usXBWv>Az%`ub^C>TOx&-I!66?A*@puq`zyvLGB+8gxl;|a9!#_5iUj)
zRw_c;xVaP_%P@g#HF=ub%Eg7?tWxFgu>`aw#~P|tId?e
zW_=ODY1SSkT8@}{%r8UG<`X*m?uZwVnFq>kh4RLO$7VQ#{6AUBW^RJd-u(_{6dbA6
z?#Ugg>jh&!hTVGSuGEX!S7$h5%9kXQ*IslUo4IsQjuO2xw+gHrxV2-x=_BtlQBYW0
z%%m#=BaO@OztOkQgjT0}V~)=*3KrN-qyMPz{ARqnaa>;~+@7@!+_vnB=qa=AK&<4s=Ol|RKdFxm>dxG()%BUQha%uN|n^&u3*e#-A&
zUonYBH
zgTlb`xlBq^Qw=4;Gbs2;t%i;|x}l-MRK?tqgGZ~(a=4TpEWb|EvCkW=Nsz?rM9CW-
zK`d&*O709i?s1M^I~=Xbk7ACdqvL4sV!TJpUGJHp(%&eF^w#{Cokty(R$mY``b$mp
z55ao$@8oF*I;gM9?U`JHT4QMo1sKa5zrBLCmOMU1w8L#Nr;a1-6AN!-=wBaUN5tlW
z`Jt{5Lz6B?JRA@4x(JzMMaoqTIY-MLt@(Am?hq>l-e9;k*o7{ZZ~mK^53EDmiS-jv
zF?B`>@b~^Bkl%)EfpI!j`!$M7I8l#sp
z9b2Ux^Oj*lrB}!V?t4_j5dspz$1g{9cU4BciF`z^`fzi2gM|E_ld*lmb3YwTmrZDn
zE{^(EV|b@d1q4NgZ?|S{41o2SU@J&^267RbFG^CkjAQmTgzo35zdoF>XkERH=H|YB
z+7C#UZRUkBiOkXGcQU{D6n6@?<8200JC~RQOtlM|Z?`e7SL8%F`mpxF5%qMebdvv9`bqs!)KHDAfzn4sIFx_9J_5DeG^mOn+C6BdQjL3!
z$Ej`67&25H%g5z_qMS)EsNIP4{ao2h{krs2{Dd^vc}V74dt8CxZ{vyfQoC09!GyKV
zw!2I?gqF|cV{xrP@`C*RQEDWV_h*;v1>5ul{1JWBE|MdAohd^@ZA5p(8wFx4W4uXT
z4^mhv@&A+^o9kq&$Cx3FPA}#N^Z9*QCS#`oi)M~(B=*#pIcmVdy#AVXOk1m+EULyD
ze}GT;$Jb4cxgN9gJhsABvq4~he`ih80{P9z2?k>!ca{hznOcG>^|^+vayI2xP-=Hx
zqOsjwxu~1@bGw??hAF$<{eEz0s~U|N;U0WuXv#{^XF*#qEPQ@U!vVtLQPWD~yLn>mi7|7f_;xl#kB^
z&-xj*JX~73Rj-yDemueN#`5zYwLw)`0gU7I{axSzm!77}7~~);yKVM{v;V3N
zreNFWQ*)i@u9cge{4UgYx1(Y$@d!Z2cB+_2+*wR4i5j
zSk}S*;b>AW%dIuF3`2#^jGGjfl?t!1$4RAubuYT@GeU8#9)ui&66nU`G*9+>~z1Vr3
zd??va#yt{FHew6535$)IfPLEH$ULs9Pym4qIojj3n@>nMJM-gs()B4P8
zev;ZZFTm&i5iZ-ysCugVN$$A2d^(;Hf^4M=b#z?OXw-rLg>PRg|0UY`gek#tF+O#u
zy;V?Orw=*|6O2B^L>SDoBUcAarOBsiCq${1peMH+P_m6&eu#Uh1m4A#_3&bxpXU+q
z-2UL$^5{hia^Uo%ES;}%S`c72=MW}do^DigffbWLn`eNpZ@JY?0tju(b@cv5!529*
zGkk4cr@sTQ(bu6!)Oj*`?HI#gb>oYXxqljueA13!UBXKDxAYIfXw0gg6OG70Pr`J(
z1R*25r;F=_YNk0*3E3^4(sEp2pkU0E6HJ*EtpZ%P5!*Ag
zK=%*ZmQGIJpX$xvl05aWH*S4WfIs=s=QD#$ER0GyN6?|PL~byb;15~zN05Nq8%G*(
zC9#(GV?P0><#P8QH=DoP2i@8C+hU}AV;L{iMn-#6bbLur(dgGF*nxiO+D@Mzx_gh;
zNC7hPCLp)hHb&{s{o^2V8z1<6BMPC)*-Zz>nes$l!PRiuf~}pi<$h#VKa0r#`2kV1
zmZpiHkucg}!jH6J2HriE?A}kWO!pH!q^U{?E_Q{cnztWj_vi{7@6{93o3;o!&wd*$1=;*PQoa&2iXHCby-Kua
zr3sK<_d(`LERBq_zx;S_{X+U&4|!)YVXViQYPP*A3?S%fs|7_mFRa$>J!awL`AFFZ
z$CKG#3k7n0>lL@_8oSu;I<8mHv*sM69S`q0=gX^Ick5|}vw{8Ed4+{D9qnKSVwh~u
z7e>Z{oSgSem5(Q?qmKq-$rnW{H@{#LP?~hW2a^sfw-49OM_ttI0}FJ)D-@|qnVDn9
zxt&!sbWr8e<3RSn-^A>JKU45cKVJRY}$7}yR;fT|9CaXk|#9f5k}SH0X|hp6Q5kYI8~vgj<7S6t`H7R+T1
z_;_h?Fc|wvK)b)fD=6t|S>>}xrS*K8?vFk;rcTL)tlPHN9tuUn5|jiO6>)KKdd-Hg
z{!rYR3T1d<)$C&{#m-(lriV;hro(}B1xZTUqtb=fGk19&j7(kRX?Q;TU>Oq?Cx%iai4V8#gTjJE}}d8xv6pA}PwH
zAt4W5RBJQLfmmW2irMB9aO6gcSKMHZ;I=ogGi2o@gGX~1i;xzt-GVGa!=mFraA_;`
zce!}%jzaxj4Z;Ejp^vXwi<{jRM%5aB_vWKOG$D5rN53aQG?a
zPb#{4;9{O<#}iwiRi~FsdM*{mN%nR|0;m_dnluHN;!$P3$Tq8Q0&hrp0#^
zl);oR5?zH~BN+Zxuu9OeXKW-e`=?7Aj2a&o@F#n;n`
z=YMx?Uc8*}_ja^`JVuU@rYDU)Z5&fmSHh^_YRXb3FE&3Yg5!V{A=$N^bhT91x#6v@
zie)lZAQehVO3&8^2)#z#@132U(t(@9xlj^*_h-#fEPn}y<3$!A0KDchSC*GA&wEkX
ztd`k%Tsn4~)-A;<*wA`S1?gY%J9&$-6{M(*lKqxWF9tFi3$1S!E|~a
z{?|BD0Vsw!+-(H>mc&%n&Hl-g#+OW$Mlatf$k3i%9t}VLhBLFE)46&x3qe()^gyi>
z)y3(?QqZ#g8xL-^wXe%{$g(N-dTQfKNBDTX`=)wK#!=cdy(d3R13q1tzJF-J{Cnp1
zo%zFDaKWoL$^D}n^GWOpu-uSi`I#ZS5UV^Us_)hv7h&J`k(ND~*v)XPu{;IW#pZp*Ep+9!m2FhS!!3%dvLa@-7Ax-gxNpiSu};p^JFHj;;tdUtQPOt>
z;G@ot<-4NT=Yw
z7LrLFgt!!qJq)XOvf??s&NWk%2dgJ6*?&rY=QHWYEow1yFlNYdQR{li7cyc3
zGzERuPq-N$l#jfX<-XF0RdW5^(s~oKk&1yghfJ*dJ0NHHTxC02T9#E+SNMEGrz;Oc
z>0l({NnZQ=pqW#GT&c%*{#}_#6wUvrOH@&YWn|AnFzOKXFRhfp-XKB)UTbR
za3++1@2$A*^D)-g*`ej=a9t1VhH#dG&j>Uvq+x%+D||<*vn@TLq)04se&o{M
zh>i}q8A3%_P(oP=Z=ko7GQ+&u&5ehCr~^#xp!=y0yqz(fYXKY;TfchXYJD;n4cP$J(V!T^hRj
zkD5n;8%VXa(>XgjzvOZyOekqr7y1rw@215fY!1QjB3JniWdhj>^`{F_UJr%X;k9%7
zzZqoB&YvYiCTIyDRwuHS`sRKRo8X;Q<)Qp$fJH(n+PQ)hX+0rbJ_JIbv?qCE=1
zg)2?dRP!+?vCPRpk6K@TSb%`05sXk^*h#KN`vf>$0TdN!Pp4m5}VY99uTgc
zn;%%M9-m)1QgBtiF4(r8d|%YCK)7}SPKY6z#*S^zA?QEw+e}Hcyq?lpE{48;W1hv-N;-n
zfO{I0E4b>KVgxKOg)O&;cXyw5EjcA}4^kqX8XFCsei>!7@yEF*jAHEY-?PQxB06$wAY3H)Cf!s+Ewh(UzmX{do)&yq_4}_gEZW#K+5Z+ft!944J6iYIJQF
zEZE#L@{^7kV*HY;`IGPt^B6$cY5Pd&ATRmpmsApW`f(Mo@o*tH)&^G@>0E*UduJNk-q6)^w
zv!qE~5cQWz!&imE24GTkZEH2Sr4z}%yvh)+r5=(uPitOE@xH|8Yy7mBoc@RS?-G34
zmUdO;J{Cy>3TDjF$-05`qpq#X`ZHf2G|GQ@&$So5koQ+-ewr0w9Pf9uM@%`r``N@0
z7&aDKUHU+8#>*3*&?aNu*?Mr?+?|UlmER1r*j#Je#kN>Nc=wVuV!6}ZE(3UQ@Ql?9
zh7#Bi)R=s4iRjC%;$IvB&?~)RiERd9
zo4FCy^|ws{3CDlJ7IBfBsjdGj_X-4l<(#Qh>*dRU-^LdLx)4m@aoDq6IR1P1SgmD!
zrxiFea5JVNRo
zoc|0iYDHQvc!BAN|1#Vs_?}K#Om9-!4R~?Gc!yO{9UKZR)i#!?mZA96d2
z6UpGm6F>}sm+B|cOlH-e;mgwj0bqCQBa-&)A-V>hlaL^VqUJX=nC!Xf$`)K8AB7Br
zAcC@
zcAp8tVcT^kecqmQ1zztB+uGVv+|3v?<_gq{_;|8|n>vdVKf?ppGqkSPgq8#-8Ke!v
zN2pb1$sXXau(4Up{!oy(@00CKq|1niyuY}(aNM8z^{?`*&t;to0pS%Jga4^R%B^k?0`ja6
z*c1T3rRTC_LMXy-7u*T=j8yLTcPiF9gZ2xw3
z))@dvoHyQut1R>WLz!i&I}O9ga=irt3W`MGOmtLK7qQDK)X&gR#7v)8P^oIU!Q=Ho
z7%^|c@$oU0j@2jy=<$;}FD)S*o$LS$gd#_m6XU3mGY5mi14~L))@Z9Q7!L_Hfk{{H
z>(}2okOv@?+%EcY@p+vA3)Ohf#6(53+HwmXs<+?HF*UFl#rM2&XlO`pB#tJH&n;$m
zG?7iO>!${(rlMkZnR@MyYJ(3Bkcr)CNmB8czPYMBA)*HkD8KHm*0YXL{|N}99S8&y1EXgkoRHA2zC4n}n}2WC>svdLuxZ0ijw6yL
z#J9(tUxWjg7SE7mEXnd|>Q7g?Tz>EW)HT1iPs60Zv*A}-@jdE>ePFrh$xRY;GC>Dd{M9UdDq
z>JP!bKAbC!R$X}nU|NjWo_ZN7mI1h~H0?R?+u3tN*y7TeIdj0#3McFmbp8wWk`ns2
zI>_0Xyt%n~`6S&Bxtbcx?zm60!n=eKKru#ByXxxde@7E;
zFM^JS)&-13y2J3>>ut<#)
z_TUnb0pekY9}jC7MNT3}1^*q=yRY){)b#YnTX!E35!Hd1i4=To5}%}z!eC@%Ongz-
z*C#{7q5oT2+3^{WLT)13fE`iGlsrAYvrFRm)8RF|!PWavl#nrT0B*}{^_WpamO`=Y
zQ`Yw?TUL1jEzT#>`uh6e)Nqv@k0o1a3we2Y1aGSY0}|6$_0BQ5jeuX&2U7)bte1-A
zI|`%utBOy^|5Lww4jK`enBd6V(`p_y3Jwgzt}y=pAndYt1+o2EtRi^o&yTfd*c97o
zJar&>*B39J(@F%Co5Y>X5!@s>$Y)=|V+hAjq-~fvl(3E}lkv6rf>(v!qbMw!s29^eW(#p0!
z!3t9x{U38Q{y(XouO*Oz;6-wkT$-TbJtV~qvEfu={BQxAxrF_>(j(SCh;kZA!xO+0BDtaaPhN9n6i#LB?C2hUEo{Zc6TQpLc7Q4JV{5$8G?CfFDoW*$;1cqfl7r
zOs@Q-h04Bpmwg$kz}XPJ@ELxgePk{&`!ZaJcfYwn=O3bODW)z!paP3A=WA)nPj-@3uiGY#O0r)f1&9CPOJ)6u;yT
zNPD%`66Me;OyWyPdja>YxM6>E<|nOg^S-11uyfr~OTncTTMFwIO9Kxm!qj!kO#k`3
zo4yd+w$a$OZQDtk#B!?ZxlNqGV^;Rxq$;DSX2~T>OSdEOn<)j3
z)iRLSC@`xSp+I+|0{z+4tR$lUu5@lGZ+3J%o&%(SqmjfqR0C}hmnN?YFeB!)f#r@d
zl8yXzN8!QWfXNslHbMIx=wK#|^V>_30Ij6^$G~>r;5e9g;P;p%`|od(74P2B
z7!U)#DL1)%~zdx{4pL)T=r5lK;^4zS%h7Ewyl<2>Os*9aXbLMFN0
zZv@2{t4}4RrD-bCbqdE|w?+TYX#rNnUOm+*UsbgYgx>LwdLpWGBlG`X=Ps4(I^_^w
zv)Z5FD|009*k3bJR%SfK@V^VtWea_;`ho8UZnw}t$x6LgrKjK5&{<#EP8b>rouf7%
z>Ngx38vFx4J2=`O4Qcx5gz4&u=!X~*ew^f~v;*%%&*#w$raS5OGoHQCr$F*@e5@hN
z5EQES8fkaTb3G}z>NvsE+uO@*uI28|@kO^gK*X$1Gv;_oYy(OfcZC+IBtw`*iNm`K
zK6fp&jw+8t_zPEf?rx?huEa9pXzm%T3%MU+tdlFM20yFBo<6Xxnk}uQL`j*YouG2b
zij-Sx6e$q8hY!lZiL5Mck3iHF+K79gxB1TJlbBlhm~GtF)dNFXA6;~TU2A(Aha1wL4j)BawjI2D0S
z9RFIK*V~YpxAHW_9PblHpJk^VH-ITyq=e_8{87OOVhUf~OfjCe=NFD2zCSYs?dKy7
zI>MBbF8H0`iY8BrlA$Qj>Zmndi~o?V#jEo&M(N0S&f9Z_|Ni8gjyY`)RDw$Cip4F^
z=P2&4YY?k{g^RUJy!^`oqW_x`lpIa|Q>U*$cAcnj0#$0?ezG!hd8h4q@XMDqFSs7$
zydJH|f#HF-uDD_CHl~-RKg>vTm&xAaU_L2r=?mi_oX^b`@Mr6cani`9SH8fQXytWp
zh)1Hw^O}MIlasUDZiU_Ssd8+s>_}~u)uS9oA!)v3jmjL-M=GspPLUAft|_w5JO^#^!Q_-CJ4inmMm)2!B5
zg`*e+l#E#Ek$WFUia?)sR;Q=%)4~!x2w@gcdts7@jv;q$&nM(En{~_5-w#u33Cz#J
zU;XDL54<@Y9Pk7U;mDK}+&=9xFu_`{0?is~Yz_vWAtnZhyN_z=wZ(AR2CbvTKc33g
zKPGVM7f|!cii&a4GUxl2nK)Cb_>Q!BwWRQn_z%_U)rE@R~e{iuM1xo(fA>u3SLc#gk51>(7SRuC}^k$lvN@n
zuN2giCo<2`b7*KS2>b0$@B5C&M)K)7pjn>GfnD}dBe>!@ZL7jw;W+A*`Fcn2!(Kt-
zI`@m}*_)~^RpwhF@N4cADF*wiL;>`Qcs36PFiGwRm}ifnX|isaMf>RhGn
zItyK`DSML%ijd1Yto)K+O6ywaD&zWIoyI%>ky`S$85Mxu0*5$}eo+g#b*c}V-1
z)#g8B>9cXl3w+t2g2E
z?o}vn$^{iK*=7XDP2Y*goBT$?jNBPaU9Sz^RC$&K+}(5b=PkZUgP;(UFE>O@vA
z-8b)v(!E}!6s(G3rBkL&^=ocsJ3|$P>A??c^$bQ#E@J!Uzi3~
zq)wC;RIfVCA%uJH!`Wat6KP{L*_=$LgtzUx+NeEaG{V(Izg%HHzno>;8hv7rhd5bL
zV%aQ1(ht!d60^;t&r#{i{FHIsfpdS}S?dNB5Sgo3v{v(T?LhEgAMx%9s=IpAq2>O5
zD=MT4SY-y)(J3k76PekH6o0%fr2_{rL4w8+-wzx`N{eDk$r+0&E*7oF(lT!?F|pWA
z@L2Y
z)8wkDyUXL=xMsa+RAO&Wy4IxAoHOvAkZIS;*PEFouc4Jyww#z2)=Way%Ey2?%Y_=3
z6APcmTTP#GnXNj>3d4=Sp>#de=SwflDm-&R)@KZ+AjSG;1Oz0D^zpRV&I)4P5w6cVFecGZ&M
zP8z`VN-H~9xabd#YQCJzXQN1gn(*z-MV8e+G`9?)6Wg0!%7`(}uz^}h_BcC|dVTyd
zjRn1)HYTa6+m#bckZ!jrC&SZ8x1jCxEeSq!QPtCeS(VQLdQbORch{#jiQXCE$mbYR9oDgLz5{idgGGc}YGa8GBMt>I@s|G}i-vDBOAB+;
ziT_Tz>`&2lGauTK!bR!IiYa+!c(XZOy0r}jbw-w^UMyK8mBo;2%N9}nz}j?DFC=&V
z<|BEvJOMoCbVGprA_v|3qh2h1{)HnDx8J8Z6{q2bkf75HamI$A&v9duSA>$A^c9St
zcRwM_{Z=}qcKx_tmhKHw0>YyJs5HxAzHdgkwMdPpg#|`*o_D97@(I*J{R4VQ{8SG=
zA;z13Ea14F--MaQ%}%nCkYrHU(&)_;)v~|AW;Cw*hKFdswoD0xh7%}EPllmg4oWuC
zAI|ft#gf_|EUq+dt)X(W*KO>$iZ8$UW2VB#E|Q|kIT#=Sa0?tj14IY2LJ1Ig3N56T
zN`3KP$g6JoEsUv96a-v*Zdl-K(I$E3iqg=sJxd~V1P}#cZTqN-I_cnD(D@ZxuW>rC
z=p(2+UO1lqYTnQV<`c)Ix1Gs8)>D^^?N-Yd`{Euk$1HKN)UClZ8{D&JR%DE(U-|58
zpTG1mm8Y{b#G;
zM@T^xxz*MB&2Gq-F24s#vFYP?o@Y1&j~z-CtIz_`DE6sVx*v71*j^)<-JBOtX26*a
z;MpYTGDX||r;BH5-v-tEUBqVUekGdvM+2`72HE^h!oaR{GTNkhawTytc>D2!_1u0O
zsZ5_XJ%mmFqtiwo?~kw|{9|Q9TEK$rj`V{AZ}T1)Hfcz46pvV6MGSVs+okU8<&`h4
zzWg;9FV6fQo)tg)ipv(%&{|y7kdn!Q`wm}t4(AUN{ez@YsAeQSJfONhzS1w~IPli7s4DFvVgu1q!(>e+V3`
zCM2Q%E`vj?Lhf%eb2DGB{~{Jnro_^B-{B3Lzd}KnjkJt%6J;CSjU27`1&k~HZ)obE
z;|Lk+bFw$KEVb<+E)%l)%=&f&Q3e{Te=G0nbyeY@wylZz(pV5jk3`fEf`e>s6xDUd
zsdgeR1sXqMWXgNvm6PL#)33W&;A8AomW+w$FL>{hx>j*^iR@1_RSJFaa?MyYR(e8Q
zXUo9Aphj(7*wwJ%FA*s@;IqZJ-Sov070{F*t>bl?u|SPc*-t!O@WP0nB-WluG&V>D
z4I^wNR7b@a%mag91d3{;++c^0G~m(zN2tHy#NA6R`3orl8C$zX%LNHvB{GXGhg(J<
z9RXyvSfr$As2C8seuy>O@GsS%CMjkSH2+_~LaYnbcH5N}DP2SzbOR&UubbAoKJ0$)
zh_XkF$~ChQ12O_w`=`St4mJz<5#cvptiHS|+v40jbiO`PC22W8#gR&L2Fe3CfywvP
z>)k#EFr{G=dt93jEv+TMD!6L=?&LS=u&sA}8JD9_m3ft87EWC!nOblGSk4$duFYy{
zYLeM(agB{dB*S0??39(2t1adzY1_^P7#SJwCwyN80irs0@2JoBZwed6+MY!hIrzrn
zOeyr#nsQ)2(3X{bCHEfxUL%6u?vL+Jd=*?AaeLv&nK7Em61Lv%$pkR{uXmkq^>$8v
zc2+0L^aAWHv1aqz%?9XvfiD*?n$kT9LkEUcdl@b_z@PGck!R*~NxqCcgQr
z2prg3{2I`8+WE&})EeU%tOZR>uX9&f7al
zx+VjWINSg!Kui{vsw}Vqm{*&D=T&d_U;%mG;UJUASkb3UyOj4od{=dnbwu25phUqlfU9h{eShy}GM+vJ*wWsa;jMuv+n@Vj1m_-ir(*ywJ2*08
z2q;2E#>U`W#Qc!ZcdJ+Dm0oL;YSr6hkU{haodx21n$&2tt;aQnC=vMBp6`0cY>~XE
zcL$0}V~~Wx=m0G_KjatL`VHKKet^{7-Sp5W)+lZ&6$i*po*09p(@VkC9kMzGiN~SA
z3k+ZdWo0XP13-qK$3a<}-%PqK>kXNs7@>e5=?l;(0)GUaGBD1}J%5i&`Hx!=Lkrp<
z`{pl~m#`hICAl*KC{TQQ*lav=QO;IgY0Eg76`;$Bw_BPU49>4IwV0Ti#TR7WND0T~?gzF8kK;lj6t#SmSrd(MH6YC}KGzKPMZCG&@9At~9H95dEX`
zlTQ9T^+}z#{=x~x_lNCSicX&dNUS4Rwy!7v%ceor-hlpA2{S3YgqZ{Spg*SJtr1EwS)1;k>h^>aSe;bRA`
z9XSY5hL4C7$Z09%o*E$
z%EnAI)I|F`0`&+~7r<75s6hu>K*+vM^T+o6k4<{EsoN}fHbxfk`h2G8nzg=fn8s#n
zve6wtgC2o+s4;>C&JT&kQCy+WG7AkHPMazfjuN6<(ixsx;`7Y=Ca*nkTu*p_c*@X#
zJ*#7`@wBA=o?wPu{$?_L1rki}u6DNcROy}H5T#86qJO^{cKL3EXdMOY)i5>o{3D&K
zk8+
z=sfPdqLoKAxFVl&AWyZ6x(Y_&*P(eR6STArPpWM}CGcPZnXRuTcybpYE<}dVF^=iq
zDP6Q(bvuq%mMgdjR7oJtAQj(g|A%oaa9o2H4hBUNL(&Z07hLDiG?_-(-lR>RxNv>Q
z;9~2{RI#?Ep-l?AzrQ!pEp3-mPFQPog#dbT#MJLVMqIj1{ur4*
zCoU~*3}nwihb!BYS!W#S8M*k$^*js-C+$L8P)8U179BTC1%M{}AGXup7c3A_egK?d
z`{k
zLqJYV4U+akNF>@*XjCHTtS~Q+cu^lL{KB7-5Mv|-0pcGiC6Tlt_GK9!QUG{m&Hkyx
z@0;0g7Ggk2_zVFLJ6IxMWkvn{y9(DbjP%U@LZxn1&pjZlP|10uhf*AEl15qIy$>5X
zz;SlL^CJqR@qEdjzz}md@`18v$CgTErucW0m6T==HBgTo5(gej@VQAq2q0<@aPYo!
zntn^T$8ul4cHpcIn^%seBd;2_YZH&
zcYgnqY^Y6n{ia?0va9=HJX5U(aUR1si3ikxX=z+@!9pgL`VF)?t9CtbS`I@bDBr$8
zaMiI&uGHeTYmK%+3mDer@STsQ!Sc!jsqq%*rTbhej#zP5o?D6h18LN2{9j+56t%QQ
z1L3gT4)T)*$Hz%2C_+X@rPh6(PV|BnNyWd4<8yw16xiZcE^;54VqsZ~se=Ked#?LVuV@0;I2%uL5%B<`hXffJ&<4Ndw5nn}AqJNJ|S}v?BD-i!6Kou$Ogp
zJtNCxv&w#XdFh93zhc0%2R_B?qgOG&M(nza7pKkE>Fnen$f<
zHmwoM%gcH}^Crd3pxlIQbWBSx1Z8J}bvlzA)o+;X{*yld#4uB-%ZG%71U!n#YLh)&
zW>P{zA6@5jcX46na5RCS+vO11#nTH7b~!%eNz7_C-z`=WfqJ(ejzn6$+XZmE;gKjH
z+%GLHji#|h-5f0dqa*e9`l8Xb7o5I<3FSek+;5@C$9y5xVf|?L#e}$VxRMuqXuvr>R`Fo^Bb=J>MUY(RQ8t
z3oQC~0|P=VRx305luzs@bu;giPC)PznDpJTw1w^%XgCILK@w(N7Z+AlZD&;YpkILV
zVkTEK%0#!es3=&|ra3^@=OF<2A(P2y@&}>ij;6iLpjcM0t9`D2)sEPD!2(b`dVKag
zh%JSxddzPCKgPK8g0?82<^oErMcld)peUyTqHZb>t>vQ~4F7vBfXP^@@Ir-llzyId
z7SQDYz1?8(uT*Z8Q91CRD<`|}hx0Qr#W5K6)0>WC0|)dsH#ZxZni>)htTj850pHBd
z&Yu7Mh2Stk(`a{CT*&CKEfyLY8rdZ}<)TiPN`*-TC^DnPCBsY;+czKnGA8u$V0_
zq5FVY8vwE|I*$jlU=aKcuv(Cw%+tC$FPk_^>c7-2x?Cm4Dm3BIVy5h;5=>kv;%a
z-opy$HLzy`pM&FpE^23Yx5j8FR;17atH$|A#p8OP-^1fkH*#TiR!&K&cg+WO^J@V8ahE+>0%f9tAjd8602D
zwQy-dcQgFeezvU!4!DFDbWO~)*8Mqs#B8<$7pu7pJVG*yCE5oBzGr&ibN+K+cw|Jq
z)&vf4VDKIuopi=fkdp4w4S4h70l`q9TB)-N%;8U{4xDJhxF|0LBG@GOLK)S1sj2sjr4_(Wex&YLkvD&=ArSWQBeC7
z`}50CKU=;gHo!yCbF+{_W)E{)a7uKFcfkt+3END6ed4UU^MVP0b`x_Yyw@e4@&@65
zC&THAAPPiG8@p8jR_ka|lIuSJERFpysT-jKkW#|YzMUSaoS7~90#ab|U|r)K_yywo
zQxBo3HwqBk%0gL(yC1KS^T;wWtITF2`3t(OH)DhDCcxkMZEYU}j|Z8_dOcA>$dCDX
zS^n5r`etQ7Gy4zpe^GGr1MuE^>5o>4jyMX4ajtFln+ybcs~(yJpbw8!8zrg`cIX8%
zAkek}#XW`#0R~8?fb|aMYLw?2Xm|mr{4jstEB}1ozY>;;GFNRA&}{_wt}HT!+e*-_
zhaO%01XRh-81G6h;%45U5%6EZ`;h(>u6MfObn&`>a55c(Qd`hfHB>qTfW`kqufJz+
z@_(0OgiAAUE4$!Pnui30vS7+)fwWxJGjLVm|3L9hW#7&HpBA__Kl~44;zj?uSV9FQ
z3H+_E{=efC8Dk89w?y)r#TU$%%T3zFx$>KpbK^<(ysbd|FE$=Azx%=kfJ^K7mhQ~h
zGO&LQ0HAnyD7?#F6LJTrtw6mC*Qp-aCwYfHDq=EamOQ`IuN_dA(I~Q8Hy%?1O^clV
zwe&3uAx77Peu#cvAf5n}te@h*>xO_epjzhZyMC^=Rc?yHq#%|0-ehwe-lFacYrdCc
zf9i5#h>0M!9}}qWBV+W=Ks7lX125@~lteJ%_Cs`vWxade>S@Kw
z<;LAVagW^jD#=Mu_dKqPAO8!mF=~CAhiT0
z`5p8mpFNq%KS~S8*m%@CZ3Xb~%$afU;hUxtV-iEi0h>GC`{WeUOpZeaz%yiIWQ5&Q
zwET^NkYW)KkHzA+uHOk9VoA0C?vOjXWc5ADtE69`DXLBJ4J{S`tKkS>-TQ?j(prFO
z1c=u$2ExFmRkP?J4b??;Nb;-+QK0Vb?Cgm06tuNrck0f5hCvwtWr@~^VqsDp0>)H=
zwy?K||GQ$XX$JtIHSLZ*xM@r*2NV{d4JQUNQqe$sQW6uuBp9MAKM|5Sv2o9z%lcuj
zK^<+o1NjJ+ulapy9{2yFRGu=9`Vyl)JYEdo0UUN~A*!t~a7l}3t2QgYzMs=KU{%33
zTLLQvxD2TI3r+7!1n55L&qQa=-)?^b0B_I28FfujQI$ef0rtO)vo-tP$`VM2j{NZ$
z4-+%-{BKZzVnnqb_%C2r-lzXPV2MRxC9;@$Un#Q37_z)-vw3~+Df3|jcut%5HZ&iz
z{w+w!tK3$qk35SpkOJQ++GW|4enF?k$cg{o3FLjHnLixa@$e$95kW)4bo=xpmz;wE
zQXKj+6dh!?)By(?hw=CSoodfpH?I*>3`{DtKj0gPyBiB&@6l%u>ItjxX2s&93oqK%8!?bG^tUvtrF{c^a
z38(e>6Nw42(MCyA?1I2s`}})M2uW8(1nM$+)gXo#^x3TlK|qKjE+YV`m!J@yzK&t-
zo~qzbkPZY@GI35KAns!i*9?w&Oj)9@D$gRkBNIxMKHKEg#O=e)i&`n$S7~9^5?S$!
z_$Re^G73hmxQM)wl?k|dVwDC8b*Nuojvf=$VmX?^X1APC%047jtWwgY|H`Nu&CQ5R
zujo>AQ5H2$S?V*#Ip}-qiWyYLXo|@JWB>;;Wz1-C2fU>l0!FdN?zrj
zN{jnvXI~|0Q{POQ5u{LReO3y!F=*B>f#fkMr>2BFH3*!|?t^%A8IK_H7N_8D6Z04G
z{pm*bL9sbo28wRfB{haKw>Y}0rcmU6fPejCuc$wJq05xG~}=FOfm3OP*W}~`69?z=0vR1GFo{Vz35ya4Dg)2fkcfLp2Q=i
zYsWOD`AyTp_5oqj5^OsxHWHLt@v5!rS&H4EaNz7bKERAg&m191#f7g~5VCfQNO+-R
zP)uDPAPxLE4e1qL_IuICiBX9qdT*e*uyI*RE}l^5_A2(^
zs&e>9=l3f9(!7#CaokX9Z+h0TP(t7xldYflRbV-L&$A!2N^r2C)TZ&0>BTE8EG#I{
zz5G1|T37{>`;=Z?E;^)UF(x{Mb%kMslyHm{J2ZekuKW~4N_8<0xmmX1o@2*gz7iVDHs&P%Gks70c<@JnZf{E6$vj8eJ}oz7U4
zDF{zl@xsjKIW<&wLC*Q)&p?3~BifR`GV2DtIux6FNCUfAgK*qoaJHx$BgWSdBN5k}
zI3ij^-O%4xUd(VLhQtLQ_gLMnN@a?e;X2e}Mv|x;hn5t@h3g@HBtv2y6w6;9A&HuZ
zeEQ`u<~bTEFYDN@|PEhz=-wJ9%n
zcKdYb>z~GLkQ$vE_-OW9ZA*v2H!6t+;8c$&nmO=emqhu~;=X*33kyn44{ao)8bq6#
zueK5R>zFdJG@)*m>=*N5vDWf=i@68;!P$yx+!u-GdcJA{;WKB(g|+e8;|jOzBNR@m
zH4ECp)rA%y&|JK`WzjXKeKD_BDjp8~5VT95l>d-S2~Qwy%+Phz;o$lGDK=i#&wNxA
zKj#VDD1fNjMXs>CR0Etz|Br4-ltgbebE|;s>&lXLDZxO&h*2yLdyp`?-(`M%vdmhu
zeVdol-@{hwdU;jAQ#L_Skh3i4=kpjbav-L0|8KzHp|_1GlOm}
z?_!W!AUG?&?0j3WyIspVAC)e&6X;CLKtk`%
z7kO!R;rSw|Ly40XyJOmtRK|e4qxYRnmZpoc>xn%
zI(tMdmr4DiBg}wER*}-{+}qi+CFqS!d6#Lc@viB4Pt{GYXP^x8&6ZH}+;bG@Z1c8x
z$upvC0T%&?zy&dmFfJ8wTohz$__~nB@swv1j+-tL)O72w
zAcAn}5Axk6Ec|KI`uu|C-EnK>%b2gCBHwWS`Nt0u<)^sf(1~v!t4`X&gcRmNU$jzt
zfSatc8eL0Y^;?nhPn;v8Oqh_#lnH4Jl)(dy=2PkHZpGP{SMS~Zqq`MGNR?V@Vc%K;
zlD}kva#%d6Ndp>BaVM6`g}q)CX>EOONEp7dGR`3Hr{Ri%XfN^r&o{FizZN79NdhhF
zZbFT{Cq-IAQf!8z6sY1Nd|YDdtpa`g?&wOrgO_hnA9~4Fc>`T2y!
z(1^`5_Uxx)mQ#DHI*Q@qu@ran4f|KnT|h?R7vPl3$zcKHh&hyZE+yWk5G)^Z^Y>{8
z>|thb!GYD1@_2t6lFy39D3|Wr___lb4_Du0xgm1~65)P43V)$Lq{3zoLz=*zjo)ov
z-EiM{``j^YiHWK`oVzFGQd=!bqiDYE0{f#x*$yW9OCatJJpjWqp#imK4BZNs8$
zBa6;mQe`+2#ix+GlABQa6?C+uu5!!0tNSxudJ=D9Q`b?#h72?`>#(-ethbZ3(e(7Q
z`x-r-EiR*JCSc>8VU^D7$5?~1QH4^COUqzt$?H>W$+Pk5bgq(9weppLf|LC1ZPlvQ
zrob#V)T+{=)b<^j&D`U>{-7BKhV))^2q<~@O+xEl;icfH8f0Ysp1k0^Qi_sv9SJJ!
zc$GP2dAb!<{r2BwiEF}h+us)SYLoYq(fKtDz;KX>*saA(ZFp_zagYTn6T{95m&nZp
zg#?_#v1wD5C(IO_n}COV5m&xLK+`)SNsJ7iv<#JhyDvDMclbreD$vL=9Su+
z*m&i$J+HerLsvr7v(?JLOq-!^kC6i=K&5b4tgoz2+ZjLqqONlZ@si7Fud^(tgXMxs
zXZ?~Wq5G1PKM-rg@|tP{G(1|I@06dg3;pxmG4N12?LAOou(+coKpA`6J)rMgDV(((U
zLwx<Fp;UEgtHe4W$Kl{IO(CnTfG3qXh}WGQU(_M6Ve{
z3I>#uL^wVRffkAiD!d$Fcg)Fc52@1Rb>5*_Z1Iax5Dtgbs1UuwF}#prPULHHlfLs>vc-faZ56Ifu&$YSN6=b
zWan{&6uI02)@!l8@O{yu+bR~SHbvej1TqL*I1#co1>w3`kvN3j^F>$4rL=h+HYG>Q
zUw!Oe2{ozEhiMzLuu(^sJW96bGE2Qn%;i=FBp&OyTG@*8+3yDV1cQ$!oEk
zwEM)DG&}|#W&