From d79593dd78f63b2e670ff94acd78e16fae15cf54 Mon Sep 17 00:00:00 2001 From: hwam Date: Wed, 5 Feb 2025 03:42:01 +0900 Subject: [PATCH 1/4] docs/feistelcipher.md --- Cryptography | 1 + content/Basic Cryptography/Feistel cipher.md | 107 ++++++++++++++++++ .../images/Feistel_cipher(1).png | Bin 0 -> 50327 bytes .../images/Feistel_cipher(2).png | Bin 0 -> 136359 bytes 4 files changed, 108 insertions(+) create mode 160000 Cryptography create mode 100644 content/Basic Cryptography/Feistel cipher.md create mode 100644 content/Basic Cryptography/images/Feistel_cipher(1).png create mode 100644 content/Basic Cryptography/images/Feistel_cipher(2).png diff --git a/Cryptography b/Cryptography new file mode 160000 index 0000000..e58ebf5 --- /dev/null +++ b/Cryptography @@ -0,0 +1 @@ +Subproject commit e58ebf555964007b0f82b882aa11232eb6269030 diff --git a/content/Basic Cryptography/Feistel cipher.md b/content/Basic Cryptography/Feistel cipher.md new file mode 100644 index 0000000..146408d --- /dev/null +++ b/content/Basic Cryptography/Feistel cipher.md @@ -0,0 +1,107 @@ +## Intro +The Feistel Cipher is a cryptographic structure that divides the input into left and right blocks, repeatedly applying a round function to one block and combining its output with the other block. +Typically, all elements of an encryption process must be invertible, as decryption requires reversing the encryption steps to recover the plaintext. However, the Feistel Cipher uniquely employs both invertible and non-invertible components. + +The primary reason the Feistel Cipher can utilize non-invertible elements lies in its design, which is based on the XOR operation. +> [!Question] The Invertibility of XOR +> Due to the "self-inverse" property of XOR, performing the same XOR operation during the decryption phase restores the original data. +> * Self-inverse property: A⊕B⊕B=A + +As a result, the Feistel Cipher allows for more flexible designs compared to Non-Feistel Ciphers. Additionally, the use of non-invertible components simplifies management by making the encryption and decryption processes identical. + +A well-known example of a Feistel Cipher is [[DES]] (Data Encryption Standard). In contrast, a prominent example of a Non-Feistel Cipher is [[AES]] (Advanced Encryption Standard). + + +## Design +### 1-Round Feistel Structure +![[Feistel_cipher(1).png]] + +The left side represents the encryption process, while the right side shows the decryption process. + +먼저 암호화 과정을 살펴보겠다. +암호화 과정에서 입력으로 들어오는 평문 $p = (L_0 \parallel R_0)$는 $L_0$와 $R_0$로 나뉘어진다. +함수 $F$는 키 $k$와 $R_0$을 입력으로 받는다. +$L_0$은 위에서 언급한 함수 $F(k, R_0)$와 XOR되어 암호문의 왼쪽 절반인 $L_1$이 된다. $R_0$는 그대로 암호문의 오른쪽 절반인 $R_1$이 된다. + +이러한 암호화 과정을 수식으로 나타내면 다음과 같다: + +#### Encryption Process + +In the encryption process, the plaintext input $p = (L_0 \parallel R_0)$ is divided into $L_0$​ and $R_0$​. A function $F$ takes the key $k$ and $R_0$​ as its input. Then, $L_0$​ is XORed with the output of $F(k, R_0)$, producing the left half of the ciphertext $L_1$. Meanwhile, $R_0$​ remains unchanged and becomes the right half of the ciphertext $R_1$​. + +The encryption process can be represented mathematically as follows: +$$ +L_1 = L_0 \oplus F(k, R_0) +$$ +$$ +R_1 = R_0 +$$ + +#### Decryption Process + +In the decryption process, the input ciphertext $c = (L'_0|R'_0) = (L_1|R_1)$ is divided into $L'_0$​ and $R'_0$. +$L'_0$ is XORed with $F(k, R'_0)$, resulting in the left half of the plaintext $L'_1$. Similarly, $R'_0$ remains unchanged and becomes the right half of the plaintext $R'_1$. + +The decryption process can be represented mathematically as follows: +$$ +L'_1 = L'_0 \oplus F(k, R'_0) +$$$$ +R'_1 = R'_0 +$$ + +#### Observations + +As you may have noticed, the encryption and decryption processes are identical except for their inputs and outputs being reversed. + +Encryption: +$$c = p \oplus (F(k, R_0) \parallel 0)$$ +Decryption: +$$c \oplus (F(k, R'_0) \parallel 0) \\ = p \oplus (F(k, R_0) \parallel 0) \oplus (F(k, R'_0) \parallel 0) \\ = p \oplus (F(k, R_0) \parallel 0) \oplus (F(k, R'_0) \parallel 0) \\ = p \oplus 0 = p$$ +As mentioned in the [[#Intro]], the self-inverse property of the XOR operation ensures that $F(k, R'_0)$ is canceled out during decryption. This means the decryption process works correctly even without requiring the inverse function $F^{-1}$, allowing the use of non-invertible components in the Feistel Cipher. + +#### Limitations of a 1-Round Feistel Structure + +Analyzing the 1-round Feistel Cipher reveals a critical drawback: the right half of the plaintext, $R_0$, directly becomes the right half of the ciphertext, $R_1$, without undergoing any transformation. This exposes half of the plaintext in the ciphertext, significantly compromising security. + +To address this issue, Feistel Cipher structures are designed with multiple rounds. In a multi-round Feistel Cipher, the left and right halves are swapped at the end of each round, effectively ensuring that all parts of the plaintext are processed. However, this design requires more rounds compared to Non-Feistel Ciphers to achieve the same level of security. + +### 다중 라운드 페이스텔 구조 +![[Feistel_cipher(2).png]] +위의 그림은 라운드가 한 번이 아닌 페이스텔 구조를 나타낸 것이다. + +1라운드 페이스텔 구조와는 다르게, 다중 라운드 페이스텔 구조의 암호화 과정에서는 첫 번째 라운드의 오른쪽 절반인 $R_0$가 그대로 $R_1$이 되는 것이 아니라 출력의 왼쪽 절반인 $L_1$이 된다. 또한, 1라운드 페이스텔 구조에서 XOR 연산이 이루어졌던 계산값이 $L_1$이 아닌 $R_1$이 된다. 즉, 1라운드 페이스텔 구조의 좌우 결과가 뒤바뀌는 것이다. +두 번째 라운드에서는 $L_1$이 암호화 과정을 거치기 때문에 결과적으로 평문 $L_0$과 $R_0$이 모두 암호화 과정을 거친다. +$$L_1 = R_0$$ +$$ +R_1 = L_0 \oplus F(k_1, R_0) +$$ +$$ +L_2 = L_1 \oplus F(k_2, R_1) +$$ +$$ +R_2 = R_1 +$$ + +복호화 과정 또한 암호화 과정과 동일하여 입력되는 키의 순서만 역으로 바뀐다. +$$ +L'_1 = R'_0 = R_2 = R_1 +$$ +$$ +R'_1 = L'_0 \oplus F(k_2, R'_0) = L_2 \oplus F(k_2, R_1) +$$ +$$ += L_1 \oplus F(k_2, R_1) \oplus F(k_2, R_1) = L_1 = R_0 +$$ +$$ +L'_2 = L'_1 \oplus F(k_1, R'_1) = R_1 \oplus F(k_1, R_0) +$$ +$$ += L_0 \oplus F(k_1, R_0) \oplus F(k_1, R_0) = L_0 +$$ +$$ +R'_2 = R'_1 = R_0 +$$ + +> [!Note] +> 페이스텔 구조 2라운드는 비페이스텔 구조 1라운드와 같은 안전성을 갖는다. 따라서 상대적으로 더 많은 라운드 수가 필요하다. + diff --git a/content/Basic Cryptography/images/Feistel_cipher(1).png b/content/Basic Cryptography/images/Feistel_cipher(1).png new file mode 100644 index 0000000000000000000000000000000000000000..e809e8ef9c693be2ef70787fc164b99190153645 GIT binary patch literal 50327 zcmeFacT`i`_b+NWHb7AkK?P9(BOqORvmsIphb}dW0s_)Y=&>OJ0!oz~4%XVkYx#s%Jy5`zD2L26JIm~dHVb`u* zhgEOi)ZVp=F>u$e{R{{90(Y>&N-Mx$yIr(ZuJ6ieP&atE;QP%{_beXlZG^dGqG`_wQR{u3x_%7ZeVZ5ZtjYT3MD0_>FMde|NeV(bMyZF`_9hJ)PXyH1O^7G zsHn8Iw$|3xuC1+|J$n}T%-`SNz`y{w*n8&U?n8&0H%AnKe>`#32J7r1yO+uXN&tSY zBAzga8u+E;xBQ$S;F!UoZwspBoChNBP>~jEQIplcT z&}G*yu`iV0yDvR7>fg2N>k-wP*K|G1W{H9EJQYS$p5R26IQiaLW6{5_<_$2GTq;)2 zGblJ|yu1ELYxRx1o}rG8L2=WSB+VC?nX{J8;?UR%4Tl%2M0w_cD-o9m9^!EV{wfa> z$pJj7;s5{qb-+^!_ljFJeCTBuYEQ#ko+{;xH-iWk@&;yFbEAMql~>WzNKSFG9qSAd z!py1r&(6a)R&EW1b@HmZaQUt}8J$h^AuOqIO>q5`cc@EpbOk}t;bzIYaVHa}N4lrF zGis}ht*7571*wNG{_tc`EV=tq8v8RHJzvLLbt~ga_T52yh&8_>e~I5EAyu#Z>cdHu zkLz)_2{opLa!#tbTKso1^(9;44=WD@s)x6Ml`ff1fK5;bwXORcmuz`3ltHNHioGOx zLM(8}eLK}!y_!|iYGF_{Ns%gK(Z2p?jNnA?g3&=^OX}wGCphUCEE^U+tJaY93X3i_GB$0?8`skRV6E>g9 zH3l{bA1Ylry|Ne}UJoqaDorj zUD5Y3lR=#Vl#o&Zmqgzo?@y-S_+!=GbkI1d7`;-A6rU>t7F9A^d2FimFjZTax$^3g zw8yP8`m&?Iq^{{5jq)KE^gWt8iD{@jWU-1+FvV4Q?m!od-W zusIzIX@x?WJ0G@&9UTm;0A^Fu*0MvqDP@USJ$=WaXGU(RH(q9oA0t;_$uKVfGxd|~ zDmR6MFADV3$_M!j!xgH(z3q0IL*!?K{~J-K6OE z7)B*M-?oSO@Qn_BQPY2VVUrg3`HcqC$eljx!8iViLr)_V9T~=! zY4PG>Xn4I0KW~1|=&V1|+=W!~JtC_XqbzOWf%8w8$ZpYvDDhacM|S(h-xNY$GE6kq zpY3X0LqF?<-NrYqwR#j+W@qnS$tC9RQox!F{cM?tDI>`ym{#fJ_~3Q$wY*XjsLZIL zlrwslB!-3pbED&;a?83!go2GNBEA^ zxg}MG=%EyWib<;sr}ZOXQ2vmy|Ku_}sm)=o&S3ic$4STO>+7<%5KF@-&3z%Yr(P}( zl$H9Zg)?XwLhYH#f|4J)+ZRnkBBx^*^%Zk^`R6iCg=1P`aupCUoa(AIGmBBeX5M+a z=}KmOxG%g#5x`sybF{glt9lr}6$F>~$yQYoeC&&&+k#oGgf2rYiO9>DXH%EZB=%<4 z=l&Bq;kvJz%kw55d-ndS_K+#jT3ca&Ro{E?<75BVZoK|_5fX}4&aEvAmUy+K2?N6_ zUGoN1y#!J5u2uZn*DOQWK#2(g2VqUi5i!FEB;zgFib{g3kZGi!vBNsAW&K+gwv()r zKIf%YmKkSt#HC}0xzf{>VxlxvwaYxC1ffH}+7jBAc$M%E`P&K*g^_}f(;4p;2z9@T zYMp-U8Gob$Qt#tVv>n5-wi%31s;l25pcX*^dU!78)uS+!$s8TKX_)N!lY_X|6 z5R}1ine-J|_Sw-V94sU}HJ}T%EJ9bZAxevMKS(w=H|wPbNg~Xv-aEOMb(zV5RLfO9 zfAYrqM>>Uuca-U_O-bM@OUzEr*Y7Jx>p1OXIHjrHJKJ-nUA-eJxAh`9x!yq;d^ko} zl+Ty5%>u#$H&sNrDtU7iq#W$%UvsXIQ?*+`$AB+;YfA8J?ny5XXMOGJ+#BQ4PIlu;)5U{xzk0~Xs)7as)ls#V3TEQF>}wkboFNpD0)U3TZbJQxI>J7_iijdo;8=KF%$- zxHK7O3T9Y!N45zHYfdGa_(X;Hu0=737iIaR>bxCa?495<6GC_pvv{nf++(~2`1i#p zzi`ovwrw8o{5Cp1u?JjvcaX7z?3|}MB~`uN{k_;2TiG^|;W{%jYz#z{p=UrO)c*!f zwO-N(r$<+H42L&q8Asb;29}py?Ta3M5BDX`F%;nABBG4y7p1-O&Du)?yF}H(*Gn%| zT3njv;7u@w90m(tf!MdPnRL4-zB2SnEpmy73bV@@ZYk)jERIZx2Et7z@*hdX>uT5n zPw{ZGx4@jmEa{SE?RX(6}7hAX4>(gGFlogq0%}SqR%j* zCWi2?HAXTJ&!?`IZsOj(n+>hymEPR}aN zN*#&WbA;_tyl*yATzDh$S3Wi>)jZR8cxHU+;t;Ec0^F}Q(#Jx>)>wZ;~V#fRKfk1~Gl?=~fU6YC@ zy!X0`%Lxe@b}K_Za{_zS=VH{Gs(UrWQkG;}&|UmkpP#o4B`1cd?^|nr={9JzZ)#xDEAlgb_O#I5+{p~P z^?D(2i|Li2^4Pgl9=NbC98}OAg5v6lZg*7zqDjd;uL}FSq(w1uY5Wlp%vSNwkNZcxgE$jW8BIV1qaeiEnH@5fR#bG)&G+4h>ESXK$nf4I zlR^Nr*3^dpd-hY1@CbE`A5Z}~)U3K!6_zt2F6#>?u8(Ah-f#)0A!aln$L&J-xjEM=`DX@NU|1JMA7f{=bgTeRCX`tjfd+Wnc zg|f*ur}UowyRw>dbmOXycM+(Xk{hvR3@!Q^2^NGro*QVgaq9mh0-djGk8$!jUqmTz z1K|8Z0jb^H&$`y`r_I1OF!^h#E-pY($^aB=txy;HRH*D)CF9gz-3&UiMYE;!RRw=G zzG%AkF!N!mK2S%lmg;I@qXD=nn#{;!5gux$EAdH;cmC2joddLB#Pu`K!OyB%{~apB zqNm6Olv!_={B@v&1(soD+RTUc}{x-`X?4U7jqSXHk(F zq*)kGy5^TeQ)79+VkibCID{};O*@xmf}qMbwIyHXSB>;wmGBhX4Y~9gWm_9yJESU+ z5?)@Qo148abEdYX{w#KSU&h=-j=k?%%iMfMZM}B>irYm@Tv#sg+&du-Rj<~x5?d#& z%3pABR@Gq7w7P7OPacK2gbjr`RxeREBgxDgKfD%y`wkEvGxjv&t3Q?(pUlc(7SHh1 z@6I)Q(`V+@QMM}NFxWCl;hvbc7lHps@gu5-hlDJq1`n};+JqFtJOBgsruv<@F{|a= zzFfJU0^6RnlYpLdYcM@J?sLa`x}OPbez&S@du&(cbd_j%*H5NsL?}gh6fWBKa^9icW$A|^uVw3 z%Nm%@<@#<)Fe=GrDA-K)U#+^1zg~%IuFtsN9(P`~?|R0No_-G{?9EB)%n-u6_D%2< zwMIYjRkEnsn&KU{stvc4DjZ3wbapD|qM2H7Nv@~E=XSMgsTPLk0XGWH24az*eLSnB zEX3^l$+gE7r_)yCqM1}t#U0cCB#ZB`M_WNcQoiFZrK;`>}jr+X4pj>Oy; z!pb7U-V`f6QG;~RKu2GAgH3yx)v4oNjQrijvOG2!jPz@yD=(X1d`8)#cm^Gf&MFEG z1?5Khw%O@gou115r_5bm-EJi}s_n6ByD70RqVxWQrOu7fnQ^YuP996=9EQVEdM;F% zs!PRrE}R*DqckcFMAIs2%#N62h&aulWYsj?i`hWmk_4-V&wu^8l;SE-t-s!$+0w^m zXdGYM6AH?(8%mnDND_ch`CIVyuF2v`!C~RG1^rlVOwnzJ9#n|skas3S z{P` zE)z0VPguA2nNywqM{LM6H=?}lRtw`41iMbW4HWYIMXt%7Kjh%w)W506nx1?{bKUM> zRoOCkWgElcAXvV1D`y+xpl~$g@wJGQ@=uwX#eO#?G8(fivX8V^@3(3LtABTnEj4P< z=|?~7V9XjCZA5k$Al4sNG=}yx!J;>L;AN%Ka8rmOZx#RMP!3y_f%><{+|`%m=&Os# zadoz<@GXx=_K^rlKN28$+U?+}d|O-`8$>JI71TU8o?q^FMWVe8aPD+3GLP{Qu=?Nb zUcT3^*%%wcySvk;go{e&G9ljA!-`UQicVCvHLKiCcfkdf`st$tB8PHj&Wx(FRkg>@ zS6cd2QsT&#;R)MEE*2ek$(cvy#*kdr3mEln(bkta(5~*;ernRLnrsSPbC}1@ z{G;vJ9Yp!AwGP4R)iHr_37aZcc=foo4^o>?wQr%4IB+Gi2#BB<4qkk6;W-~?{*4&# zp|yScG6anSEwSIQ44RD1)~a`XaG4M}iZsB1dhwe2XI7JPm z+vKe_+1yu4j}|TlvPg2Ng>cy?k(m;4PfTNAR-#=(drxq1CXcFjYLcFrD0NocKtoU2 zr7i;~GD8p&xV)@XvVk{1xI5eN@p*BYjhSm!`H?7-NT@oX4!EN;^%gT+vw)m1JqnlZ zNw_S~V(A3K{q;;JCbwzELfAt#SQ!U6<5VBX#qa|V0%Kfk^M}@R#Af^%HEaK!(tJ7~jE$iQ#Vpa%*oH@*|=+<+0$Uh|Xf?UcBHWXRhB| zM5cOEYtQI(l(BraH8R)34amA)DN-1tE~A1W?=o!aGirYG!~t5HLrcQygBe^%#PWiA z#JA?MBF;6hYsUJ8MKe6A(04>LtYPtCSbp)zmUauSFPHgAz3b1Gd5W^LZ^l49JYhYE z_1>=3@rIf2<>kqitDgN`Zra)qFidcHEQ-PHXmLNGzGVQHJFGPL10y`4^z3vmu&=%H zVhREG5cu_8?OYu%&?1{1l-}on$8WE=J>j!>mTL3r+;@fdr9a_IrbnZ@zJQV%;ywP8RH@Hnxy}q4P6}ORP_?<%b zOQcwhw#3a~0GX6bUFO~k*0=7c{7#{B;GOoxyPsb^I#$RO;uFXQy@OH58n{+%LYuLd8>WxX4}Ezz>m z^~CQKe?S5B{s)vlmO_aTf86I!O!*UNfqeBp%|6+l%t!QSX{<}~s}(-z?Y~6RqDj+b zz5sq&Dzb^k^auZo!)3893^ESVGF_KsM+w`%B~Ssyf7tL}@|tNWukRt=o%>%hscpTr z@VLYDJbnHMxuwB>OWj7J`o9!uxmeOyjUe4=_isj#eNSK<>;s}D)Od|y`+pm0Doga* z6~M2&m5ObUm|RAePka7#v^i)#Al&=dR`%~R$FEZtrl87aB&Ng6y;Xb!xZsP*8I%0* zqtAQ2ndn+$9$(eM?y+OkJrSz=daGREthE_W^uOKQh2Q=IeV})1a z=T)|r6ly8qtgc^F0T=+aj9R?f?dMUffBMrU{gA<}3aUqRpf50Yw*JmACxE>Rh%|e_ zn-rhLO4Hw1ndv;!Xch1gwLbE=R`NGZ_pD;sQ?l@S2h605dwagmHyDWLl*jC48;;I}?+SGVe02<{7yBMc4W*=p9fZqDrA1{P_4pfHa`Q|bN+cgkkAE94Rq5mN5I;|m zTJB@hB=$);7hPqZb6Le?Tj0$aBDNbhB zjt~QZ2Fi3yZ}8zFA5GUL6*1F34+4Z#$~6VZ2Te29F8~3C^T$KAlhUawH22(l!Hxx7 z1K)VQW4XL?OH<*a0pVC$)vuDrSq7Y(WBNm=X3{>1TNZBWqHR4wt^L-J43)?XgOmW*|RB5AcnM{4mZ!7Mh|GJje67b~&%d-mhe&N5ile+9IQoHW#)c=7DQ{ z7m-Olcs?y3Vdp>2A1P3=6Y0tA*5a32Q?LFB0rLZP0pqtVco{*>Zg4yFf;GJXjac; ztd#4g}3D;wAKtra^;a-7_~t>DlQhh9CpyS!LS>Jd5#QsVjil!}$#tRrp1>2@W>ZW*&_ z#ia<3kwtL({I#v5TFt;Cv@~+${!;63p`?N!m_w5g`p*%HvjY#mDAA`sjVi7;!XDj5 zy3vPmd`F2#C*_t{N! z23CX+`OAYg)4?2HwTFM%ZdoshYgaXS73a|7i?3NYnoGAfz#=qdj7a|PW+vvVFcpDx zZw%0~0wvlsq-#n%XNjW+7Ll-lmA=BCvBNCySHq6It7fFGd>A*pW=ODA^o#JIH8W(R zqmpFWb=)k1?eJ>b1|#B;tT|6?^VSl-e2R_cV8=|-CO$YExHEi_iv0qz7cEx@A_=hd z(+1>SR&*cX2xu=Bk4kTEE~dByHChDJZ2El7s5&`Zp_FI&kk0LB#G&*_WLw(;z)^CG zV_#qg4yPiB(IlBINYd=>vhCY=7`U4CMu!09agaZ?*1zQN_Qa3WU8Q-!eHLWMk9f^5Yz2$SDb1Yyx8Gk-bIAT;ipqUo*ADowF z0ki7Lbr@`~Uqv+c5OnU|r&A^~Rw}mJ4Cm{nxFQ$sI)01C7^@WD?pu^w@?5s}e{G-s zGf)jk?a$d>-XTp z8O9y9qn!~tj)|2uJ?$J9v z(T);-y15;2n)6=K6_maU6}rNqH2Pw=s-2d5iSa7-4?t$6LkThBp-GPD25eX@P_Wpo z!Z#YQPa-NYSVM1|4LUVN{=&eM0S5goUX z@D0W-GcAIRKlqw)DE*?vOsg7R`T_np)m0GRplHl2A9N~_LrG=Zz8{TssHJi`Fk5Byr3gr@>y;D)Fl?%&Hrn^Uk7kRS>WjNjx~=kw*TD zJlyE7X|rz*%iZ*fwfC}3Li~8wyb(Spw{h=wIU$-byrP+pm0lpuED$=ae1*rM3szeZ z%@!-kE#+{jf9`wls@+ytV+5ZUb{81_UdDn5qS@l1*jPvY-hq!wqP}w5!H0cv?OeZ0 zfhhXXU>|gP>Ts0z2XPu2-tlrvF7FagWJ}p%TtL+Tf_)=$O9I2w$KqYyphj6jlbj}R zsdBK=jQ0&tqLq~$Z*W0bP7MY+oTmqD(Z%&dM+V)X83#h9+)}-y?PI#ow;LbknI(N0A8#LRF$ zWcYhRE>zf+CQ4sLy`ML(Mgj!l<+6^ijt8`J#s>rzyBO>Pzfqg#{eehx_@{5)HLZi? zGu@{yb{IU_X6k76Eb(%&(3H8O?+q6>;Ye7zk_ZhG=*l+>f$s!^RJE@zB<%v>g6MBg zfgB^b4)%E~-=^RVYa5gipZ9mC*?D8$D-(TGaV8wozg^D-e2MoK8!oTZJqmt&w;!9( z9`!hFKW&4t9_q*g*kiZ8HL`EvMJ})NJ;3cks#rkm5t>Q~t?oDH>lWx+z2{$e4BXMk z>yPj|b^Ec)#fq0TG%Y324fbAk!i7dE`)R}7?T?i`2Kj;83ZB7NffHYhHxQ8ezR4}c zXjYfNUB=BGNzr2U2|$m$c3N{M?a~}}is3KL28GiNe&668r)W?(7>?(^a+EBqVugbI zC;@Y9zD|98wBSyt_Xql3^P0)6`PzUYH!<9z_JYRnS$Yr|sQOsn1ovR2Swg%11u5ev zLftvW-b+QRaNt~CYMGnj+XHZqnt&rK-%8o~whJ+v@u1JY<5|&oW>Xe#FT)mL=*pr&$eK%)19kvIb{7|VtCdKCp_@*6=2tZSR0$iSAEetpfSC$2`ql$GBVE6QL@bq z8n(xg)3+pR&U=8-lve$E-})5&DBf}UMS<}^;P6dA2c>dLRR@2V57)-V51$LAiQnaB z07a(>Z*QXcN5GY|5dPUbZGlo1yf)&yJ`S#=^$tFtIoLN19w?8d``tZOX&AP;n5}&6 z?c~)hdpBUMC})xKZ3p~8+$Ob6$$oU>lob%pXrj68y%wMDV3*n@4sfUTAM|%a(X?z2 z(8ei-9-!nGErFtZmK|^Vd`4qU+lPjhRScn#@t$*0z|Hwx|QA8T-?8~ltY*J zIi{ad;8J6Op83Soqj`TJT59AkS-z8mF$S!t^%E=itpX1C`t^&pvU(bw_tX?I>XDmYvP; z>7RT?92Km6SGRf>(?E!Oy-j?Pd^h}tZ3735wSva58+A&~=pV9nA>eB|^nRk<3?}|a z;db`qkMO;Wky@~&&v_r8!%abW&M~OF@RTg)yDZvHHq%~?4Jf22-5siDWq!wOu4QOA zI+E;m-=R~R<8vt4>eHOlP!J4{!LX>6T#u)H$SUGX>33|M(xrmqKg7h1>R+O_4!Js@ zhbabOm*i3$j#*Kq!>d=f%DUqLNVS*46_9gV`_7^WOa&!zBo}uC7?utkGNrWvKflHZ zY&UcI?pL45w=|*IR}s)51za>vtAC+3fEj4=VFIv|)3RIPL$4l;8T&hCTgHmYB(;|k z59r#GOIh_5@s*)C>Yww?KZm~m(vkmj68`5T{LkY7ZwqxgQ=T6Mp2I+CQTMNE2hIZz zf21bA0ZxOTQ=ZTGpWiQTBqungTmYU7Ne*JKlzT(TmU@RW>p3Y;n6Qd^K+geLBMf>- zh5tJ6RLbX9H5GfQNhazaqk*Tu!y>xJo8La%OQ@F}HNk)d{1aQ^Bx zjkt~XyFxjN%>3qy^H(ValP+)8$=_(KnZq02cD|~K&~32!aCE<>-McIPA|Bz*cLh&; z9mzNxkp|q;K9%Wzon5}@J_@*}%KxC~?}N|NB{kxJd#V;$CmHT9cD_{AIrtou@w)5! zd8WiZ5o_QcPgI`Kr580iXD;3W?xl$7GXjilYE$@L{F&?zjDHN|kDvXCAb(=xpA_>a zdHyL2{!~|g>c&6i_n(c$pDoj$o#&rD^`CCR|9wrDy}qMt@V8e&6Td6Vo~RkS9e&az z?L^3k6Hk}h=f^SC@6Mt=d^@8OUN|n6dT%_0J0nM!=U&XObDYRZ)$#@lwVIarBSmZ0 z&yyrR9p2OUmd6614*ufAqgT9Uy|)!r!<3Mc3EV<{!Q7omlH4$Se)_x4&eV28cU{+f#0Frze~G z^^I5^wt3m&#G@JmOz;Z0=z`*`_Z~(qwIrk%1Gm1lU>tGjhyA+WyC38PR`AtA%?Y?b z?OxVABP}R#?-$P?uqf%5;6~#uX0JK{X0`z3OW=a@KEMo=dQt8NJ&^`|QTh*;{S2C!hI4^^_D0f5;IK=}f=;2fLi*blyK_fAfg z7r0e7kP+BHm8|&SS%6uMg_#N_L9{`-`Ia6L`U>J3=}^Z}jB< z`vKaNEo>9hclAb;D_abozjG|=e)akc3D*PLdkE=UD@6*<-88}<4zM~(8&(*Dj6@%k z4oy+3#>68gj1Tn`I}lr>U@XLduZv?&N~UKXeF|T9j77~{?UoMzyfItiE7w#$(T|ub zFcCl6aF)hK7chq0eb>frdksvHCZI<%#fF!16&s_H?~N>#CgmKyqO0m}lC~Q3Ml3Yt zfbSI4S1Pt|tO7A3SLS!{wd`4JN72)l{24Ehk!EZc8s4tHS-=goM|`SMBv%dB_OS1I z5ZXv|wR`_Tt-RG@`sB+qz^ucM#=4$XFNl-l062>)&tIi9J zKQzgmnxwigm+4tszt_2)at+9WS6?_Cx1a#bng7e*05HTec9pWtR%AiLukD1{cB1^+ z#y^cnJ#S0D`1kwAll+Fph>=UCilqFLX+0A00M8T`_HL9={Q^w zgvi<#4r}k3W#^vQeRJdp4Q{{()I`70sTOCrSdyC@2p5ZN1NB3r{Z^zN!F>obK7;n6 zf8XMIDmUU+F8Td$UOT5){zi7%>OL=&Op)6BD zW2JlN({1-2)tzUbOgzk)L^xoUF84a@*v^D9F&RYm)6YY;ft^bIN}L;BS}%K+ z!(qAvg{k-Wm7tlzcJGj!iph`@5oj@&*oFAd$E{uqHPkp*gq!MEXJn z6i#}^ko=%>2bgeVrvf|sjh(qBT&5t^n~gAZs|zb!rhGby^tNq*ghDX8FwxDra74_F zZGXeeBwkd(=TxCj^$YDI(NxYFoy}g(ULR zZgQR6)X8!eS0wD?W<~D&5(56^C%f%7f>*}G+(0kuMYboKmL`LcY61go$FbUD)rkhP zhi*Lhw6mbs$WAyrYx3)D@X*HJ?qJ#piH^HfO5m_%tYD?33i~N;>WZnM&a6~pF!-A2 zw}S(_u^osX4VkC?f`3+Sstif)D}9!{X9~f*Vq9sX#Lm8Vho;RWZNA|h`-5#G-iIK0 zny+A$VVnx1$3qzi9T-R;9s+~+%p3~uZw(L~ZK(a72ol(mv=Yi!Z^03TcM;kwsr2GvKd}W9RY@0x zbeQkUGYQk3aQd3kEpyU4DGkw_u}?p_Tn59I@TT`Pm_)bN;x#F@#{RPQ*N$W>zGT6D zlgy+SQW|-#gY($+B*L}wdE4qRxnI{#hr8tj0-|961wBVSGWpPV%C6F@#p+-S*Rmg9 zqd!N~<_#eN6ZHGumvsksY#IcJWqyT8Xj`oF!z;r&W_~dx$Rn7qazp)ycp*a1aIJ#t zxsY$NJ#|2q9v53Hy~1wr$(;h$a@F_*)}vzfOBBc4qPGdIYT(8J_G5c5*D3dtq-3K< zj&H?Vz)Q#2nH~hwjoPaY>Ze#gQQ}!L`!=U?s*2c;X>NyspiAqiyUSP{%z?D&9P4Fr zI#_OrI?a-4-2~L5WVR-iV{S>#1aCS}-{1Iz9dcf%ZxZa&wI!8w!`JUSU@Z;u2_kCZ zEn-|TrVDe!w`2UIDD0O?e`6m+W4|baT8^(YbRRVeb;sSwA#z}sCPmM_GRiD<}ZRla8VdNp=EH^r9B3lOD_{?0y-&YqL+GNRerBFS~m zcVP~4r^oNWzm1*88h%~2tu$C4H4k0KNeGcHLzlZnId1KUk~&(Zq4(uB``r)Zkj&yA zd4CyfWv}w#lGH511&1g&sva9vD!ftex>Vu>axgs|BDZuAC?c-N$7C>|t_}p2i1&H8 zl{nznBcmYb?0lW_4ImV$W6%!di}Mp9>d8)^A&Q=FO^NB(n2)ivBwRq13cf?cR1LlVllAg{KnhAqMXI$`XIsH6#azCk%2m}Z|+d=7~T zyWEgkLqjUrCHC|AkXpEhTyls3bh8^6Jw_cpbR6q~nRb{k8v@J?ioU~iMc3L@NJk>Y z381tpT$(n6sO$PALYvJ@+J2ZRwNF5hgOzqnFY{Q@AFbx=pzM!6p+-#7KHuYD%6ucY zbl|n5+2G8Kwzgk_RI@#1*;{>pjo?vEm?@1f5e%t^d$0g?!RZ8~E~_>Bd|f}_J>@-! z+p4%jLzgO2kqbgjN^gb8Yy++R(G6&DCB@Yaw^@7+y21oS&rw;Q(b4t`r?Re4AJ9xg zBHmUs`7Xr=Ii5yl4hAB!13ZykAJnG5&6uSPz5b01kSK^wMottW@1M8C1Sc77jK#lc zSXP6g9p>&2h2OFXjKH&1Y7lkHeSBlRZlFZY{tP4|WS~;jN4A2#obMr3oHZb0#?wywWEZ>OfP&w4oC(Yd$dmZ$W(l z%2Rmtm3arc@u>OlOi(C4yf)hE5Szy7;E73;+c&zVi zh^-MZ_+X3a5Y=Qy&`=wd$K`z!2Rx`e5Ou_>Zl6<@O_efr!=s zPxXKs;f0e?LOKrM)BZGbS)Jg!M1F~F^26Xa)dvu&Jun%pxM#0yb@o9QyNkPsds;JY^8C)qXbAYh0SbU8u(LC1cIqDM4#M5(cU&Ear0&S+wEC@R(Mdpwh z=BJu`W;Tj1v9`GAf!NE7j)abpSVef!wA6jSR0RD`=fgc^OrlkMq->}+!Jp9pif zcDh~w(0ZPg;l;x}7HU#HS`5u$i;BI%rZ8CG=37@HTWWt($#0nOFVqdM*H)(1o>w(m zX^zf_(7i9?!I-w`3zu7x!d^ydBm+AmK}giI<>X4ub@iTM2-@$8DOs;w%B75=<;mz% zhUbO6^xZ(DZW=mq21Oe11pdnb4!fZ(?-`1I1|n*#4AXj?GV*gT^8Kjx@}1eZsO7@o z^ds80!bNEM*ZraEp}cN0tb#fqVb*9C3Ym@8uMPM{yic@+7iSFrrWFrwpVG{uncJ;= zb;`!`eSypc%q4ZIL~jY?32ebe%5xnW(J%PM8DAO^;&#yVhshJ@kAl#-x&zcHiZ1Jr z4a(sYAWqCc{1?swqZ6|3Ad+R0MXXt4YV*M${*To0^L4r0jp60>@d`sLt>a2g3G<6~ zBcXroAL1ywUbK!a`Zep_O! zVC!a*sa#2k8*bxwwM)#_#Of8Q_YH_`MS zgS)hzOFB`;VsM^(CVqRg_isv~4VN_sDISEP`B(oNdoy{=B}2UExHXmMJrJpwuHi+C zX>u*wuf5Otf!E*c=j-%-326WA_loX6%&9YoXPch+1B%YecSg1>q}ZXS>ZNcUQQotH z=ESYGhH0`j?|~SA0KVpr6~BBUl55;IA5u;t9mhJL)*x*}jmdr$aMdBY{{ogYNcUer zmGFCi`x6wFDu88v5LUm2+r8~{Z*s_D^9O_-bitL|#Jz!tuKz+D`ZI7!DSIxGGCS%- zx8Q%LaW4Dxf?k~2Lnh5e6X z%Li!uJ~40>vB1W*OwDfiP581-rIx#T%&;k%gmuM9IZCOwJLr-&E~eyFHUrVb`&~)O zTO)wqK4BfDC?QRxZZ#|cTzz;zG@0LZ08F@}gcPd^RWI`ORcqEIV(nY;wi* zxJZ==`{^75Kk!VITPj%>aVV43Rps+(-PmcFtNWf-n2q@DT$S{bk(i;vETA##I;_RPQ2VwLp*k#23dX^QQX!pkOgu2*WQ=F#Y-CP#K^<|qJtY$n z`=4|6Sxny{2J2dLB#xIHYGNQrTf=g)f zQ4(Yf-R=x>;HR119cUpt_#}`LNCiz8n2INhpumM3K50o(Q^;3zRm^mIq+gv?M?wtFGRSjS629h z5Umv!VXhMjyz?a;QAuPlK&8Idd8|<3u%nxHLN2u=WXua`2&R~mH(vp zUz5z9h{&<)q0PkeY$V}GEL{as?IhQg~KBBj^o>$pVvJl5VVY&!6Xz!pK3 z_k&Vr++#|WaL-)_dwjT{-=AOMq3KE!*sez28Ut6tfnECnB6}e2!H`IOX=t)Jti?^K zVFvnCl(uQ6>^d>A$j%4sN0RB55QfjaIoa;n7>O1ORU^v85RJ{Mn3;k^Z*6yeSYk2) zM1XzFH~7Zh|Cd`^x*q<=8|ZBUzo#vgn`ef^ElOV{i@|D@7yO=5_uP^Hb1CD&VhZ`N1BJMd4%D31^`Q3iLWjvV;W{Q`zuJBX zPBCD+5bXl%FY-jYsk>EbzXFKDU^<+X7P8*53QWya4YsV}5Nads@ zZ6%=+ke$BlY-8K~m(LR}Fje;<;)5TMJL%#o2E-1WLk(eK%A=@SME2#G?S`x%(CqPl zDvH|PE8CEs%~pD2vApDa0=_cklR%G1s1xW^*4Vne{2@BDBW07t^jW6YTPvkV*|oxT zupJm^yqF}KETCdQ7{nkV7v~3IBT-(pi|mfuJ+??d(R;ZcWNj;qwW_leXccW*o#B+} zTbFY6LCxG6knKSMaVF9wwlD01=+ABO;z($My2k=(I@j}n-3KleV-i017Z&J_y5lqX zG}+HTpf+8pPA*icG1oA{ZclG7>FFiOk-Ju*u=S}*f64D5$%kPiD_3vqyyhkW8OQSS z+k5Wqmbki*j<=|60~IG~hqH$ZPOj+&dYu2Y`&&VnVyt05<-WZ<;8e*5^s@04l^LZ+ z#lJ~hfi=tyRw!-U7*e+VRr@1OiLe(hkHeoOKUcJ33U}J+tO93E>-T+_Wau59&*cv1 zZ?yYiu^wEe9}lR+_$@#&OS8rseQ@*0*YevwU^FFGbYSnp@7s{B5xb{Ue-sRpIEPea z`ed4kZ4Moz*_HpMwT?%2l3NYtkKUj)uqp0(U}MdJ=T^k<#+@N`^+M;u)p*3Unej2m z)Qo%ZQ!)IG4X968OrP-v8uQ$HsV#TvnMED!qDoUPVLEroJ?=wDax7%C3-Un_*Y49A zDyn_<>JCt?7N1W%r}g8ASldp#_1|wFHmC4{oBfrLDU>G**FEHG`YV&q>f%bFT z3oid^@%d=&!;S3)tKeo~yy_dVNyM_GsXG#*S5zXB$Yn{yQ{XX#UvzG_)Gg$LokNx! z=UD!)S3UP^lQ-h>$hYF!{0Jbw<#azUTpRjVI&2yQLpRE}tq=d(DUB!7HiHBB>UIKj z`3jb(wCLdXD*!gGB7^_Ig&XC<*Klq4g-((-t*XOvI}~ndv<7aUPS^vk5K@zGL_JlZ zo)%4eS3^mf%5zJ&1>)K2hF$C~^0Y$`J0YDC5fk_Nohdil7V!3BMU7Bc57e1>l--Rs zRQpg&#tgei1$x_S#(d`?z6bL7S2)SbE+#Sz`?rtPzFAB&G_>SMZyQ`-yI+4vM3!+i zvAdqm0a@v&B=@9IW*zdgHa1rwYP>w=@3Zc2|VraqNwy3-SV?Jl4To=3gJYYNVdr z@CT`823TP_E{`VvFGPC4_hSGPsV{z#4o?BZGa}T?3CRnFrX;^BwDE{+mrk}*v5MuRYlYq7{=0O9l@*yyda{? zEC0BsC3KxkiU8gS36}K;Jv8O& zAEsvau243bD{%8^?Hzd#bx9u?V2%}RVL{v&0J|fJV~lOK&%;zHGqK7yu(a94Yf^~# zm&59aUq(-!WdY8w>ut22E0qq0fa>46o`}%j7v>atGJA!O^2W-ir|BEdR{F-DYoEE8 z{Srwf+MjrQi|8pp6n0>XXs@PIpk(&)c`DJ90BM!r;*A90^_I+gbKFi!j-{aib#Hm> z@{Hu$xCVxvPSsIo+RZGglG(lSn)1qve5h6F&3MU;cL0(10A2;{H{!_J4*Z{Aeda|T z@03cb4ul0#)->lNU#nhd>mPO-SW|ti#|s&wqPFxDNsYeRVnDZh18hBRa;TzCX4WSI z=$U$`Q6Xm@JC^eyKnVAOI#m$JBhVcX7I=tS|1EPtLOVqh_0NIvz8<%!<5_VcNL&_m z@T&u*FV7l{iBk}`z-1|u6h+a1jZdWaMj>T^-vSKVtayP}cs`!ynmDT{NYUf+{pb}# zDijSWWdWM%0OCPD?bpV_#TI8%MFF+%qaHHW zOs4w5?263_UOq;bF9eKD=%zHL_%Gd$23Tl4JJN_$eef&asBTef{>NB{`7s#|;q(g% z7X@E47nsDf2OW2nHUpo&5z}?yWtel=*`$-f-vFMh7*Xr{0AS@l`jPKzmv%&7-6*_! z6X2O~J4}^vtoCxxM8U_uI74G18opZ;y&6p(NN!B8zu*k;RQA#^V&}3f6G~#`{q_42 z6%++ez6E&lqaL8XZipb=a9NkG0b-|!x*7_aZ(PFuTC&c2#St2#^Y(1S$%X(!043!^ zvVWlXzYhw7N*Fm&N#WW5&b+>EYARV&YVtp>_XOOb(oGt*7jU!x)>ch7zB~dYc>e`B z*3*(BDqc_i&FUE!lqzTIl_mzbDK1tC{f(!P5B|kc_2!o{l|^U%ug|A$Gt<3IAHI(6 zmbL~B$#GzI(_OL*``QgXY-tm6p#AMxG|gwSAJhT=`wHA+!7=3k-R8%KU>l3eC9%@j zqk#W-EOKDZ)BRlbR?CkY|BE2q34V^oV+NN@Q{6|KTv7t)-ZaB5s=_=9c+}$1=xt`Y z=Ns0iqb2+tXZVZMy%wv5GZ$$gqC0iB@mNX~%Db`I=qVizekfWC^&IPK=ue9ig+W{d z!~b=dJ6eMDH7&DK2vf6Jo%NOGtw#0WfzzP5s3AH1ZU(w4^hM1=&(9%N&6ooKTgx69sFHdWnkan8r8?E;PsoZ0-v1RNZRER;0LM; zX9aBc(M?j|Gl?OUg6)srv31fK`xyuFCI>N5yaRjaH}43#@>5Nz)Q!U5`*;4RM^xh@GrUN-)@nHdG-xWzXz zs2lVIq~2LtpMF@_!XAqlZU)lXNXXZ>XX%=E4%7=u1_eVt3=jbs(l5wA3|&2Xc9Lzn zn3{P|%KuM$XC6*v_cwadJn)oCNmN1-3L6{KOt$VHSxQ5$a-;a-Ta6|8W^Nl%X zpQp%!zv&dq(?%E*V;C(JAD3N|*m^JS&g}yQpWED4%Jeqx^w7p<%&7b>W8l{UEx)FG zqr%NzPAEldL5d1V`+!xH6~Spr2TJblnLgkM#qwqFDRkx%fi*I15?ao*9^3@zG2D8x zwA_B6-Fu)N>K!du8NX=wNR3TjvXc82&hv7-c#un(!cU>%;nDoE%T-64^4Hyi#t%GI zJW9`V*J(eMV)Vz|+G+&6U_`+XpJL=&KI6m9;Z=r7d+B3ef>l=!TRNGwbXtLRSNw(X zo0@}3{dy)!fgcWqAUM`5SdkW$sn)c03*Z=)^z?3`9uP_*)f+J$<*xU>EK$O#DLC)) zmP}$M5$i8FU0bZ$E#rh3Et^io<$BjC9TB>B#QXNe+?>fs5wQXsADDHPLg`DG(tJ4; zu05-kXSsAU-jRCTP0;xI5J~?U?X`m=`lUBPRy8hsVz)L)t?QS6W;0bua~HY!sFoXSS}GQT zAypVKiTlfk5~!|R$meMakt<`+i3cW@mg_zi-&Sy#p6OD^%P7Q3$@UL8I9A@X06|JErk+mp{wBuJ0aqs#N9Ev8X)%_WN z8{o^?rJ9Fe$rebGae=Qg=(%tdnAEjV7^{njCjA*Tajq1F`RDsWSV64Bu~>L1nriR$ zI~I5yTd6CwaI2IB=)AX&k51BO;grzHw}%;BSDIHpKM=-miPP9a632Gq(%K&OWY(hgXa94p5lI8Pfywo_I5Z)28%=u#QMWsc}uU!AAx<;qhYBwwU?2qgI zwBuZ;zz<9&bnfd+u9v1|wJ!4&8-s=##D;^O+4G{SxuF{OAbGz+B0Tnr;J>TvChS3+ z)p>yBQXqk^#9C((bm)3~z|L;rJ1|@d-JAhFkeA zdajfKWc2u3&A}G6kn-r=?6FTHH_Y2EmtJZBPLZ&r4PiyJL3TbFTq>qMGIRl&RT)8a zWkAuTq1KisfaZfX-c8P54e$9ZLRQ|R!n)MAQMd~mdlxuFpJ;?nDc1IG^6!b_f=`gJ zxL0L;)ndRGe;#3LsrMR_kP$rAxMxNzhkHH$t!a#2WNsfqgu@1!AVF(dV(UG7Yvm)* zYtZ)jHv#h3R4*m3edLEU^CD?hukE&5XMl#de;H@rc3IC?*&cV*4-pHMBy)|<(IN=} zrGjp9Th`?wiThpKML=m_%LEi86NJ@mei^MAJA&?;WgCJr3`!XVec`=+w+(#tY!+g^ za=x0kx$IA$$0X}xe_H6?54xe@$NmkUsNFdn3n$MKg97{}eJdzJ^Vd$)uC*&pcl!V9 zOIoy}gEZ5R(0oPi8(C;CDb-ly>$*VN$!n-97q~-8#X_-_qCFWB`S-BDjr85nM^H5% z$q?t7hmbAMb1DVSCuSv=ErBhtPFK#+0<)P&G?U}DnY6mSSdeDWM0N;w0z^D9un$KM zKmGzxrT5nyk7}+df?U$pa_T z!r*#*fHzf%s;TaE=uqWUNQ&pVhxUlDP0A7NGu9wPQ7s_l?SQrKdo45cVU`{7&~ygQ zU}EXIP)<2!tgr=UVWNuWDHx$urVVaRI_(`Qc7r@Pe0!xFTeS~kR)t$T0yZ_SO%*wC z=#x%MQSIqa<{ih+l%socz=3OFFEsAIceHh?Ed(^WZcLss_GJt!j-` zZhBT1_z)cOpn8Lv-fZ>$yTLVIaK#!dBiGt!R6|rGPlvEpZ9O;-9?&w4f8XgMo7lyk z-&&kh4ZCOzK2?wgsUx;HxYL3I^l{M`TzDq6aIv;G4uY;zU)z%FZx`#4&%|rw;J!8} ziddz_k;akg&zmRB`jV*L!3-^}>#UMA;NCOb;vFZkMgDe+Yr0z3nIyqQS5ga?!cMp(2L0vTm^UfTYFH~o@CxVNM7cS{YP=@zL98~p zvRS-}CIlQLmTXo&3NB_6AKQd>`GE4yuF_o=P?^eu>r^3a#l*UoN#OqB)-!O;^-k04 zE)iyPJ^&w;kKNd}nXEuWpeTcTtXt2(Z;PN3$SeUlG=Qdh>8uB_OyxoFDhUpIM`j-* zTu2j?!3?5=N?tpTyfRUwyFRK%^u51C!jezHnIaH|XpChR-^uSmO#~70d-<8zWE< zrSTuJ1S)ydr7%P;NhZ#c?|<3OrB>(fTPH}Igqj5`#JBnK+X6*aoitgZ`7pN)smkiOuS`Ind9bHF7HH$cDucOv{1J{!c*-`S#OPjbmcoX|9J1 zJ|2>&+A?bUwUpZyj~36|?BZ8A0EPnB#MXS9pD{>_kl3&FCc`J&MDfIbg#{sY!*)dJ zc=A_^E$GPPskRHbcA=T6^IecJ1!q}soF#|WT72+B@Hhhir}NAZt3$%*2)${__OhT$ zgfSihFP~+zZhmN5=-s0J1zd5qcxD3QFZS6L_7Ko)h1+N|DyCIJ=N)B}VSA1PR`H z%KMwEn)dsX=vVO@)8P()#!-J(o{MSxg{>1zumL^sIwtCQ+ZY)a?m!}A6E13*x4=lC z$*U*d4)xHul&=!@y3StvIdZxe0&xg_GurN2e|B1z_S(?U+m@~q{uu@9>SJWrp zhFb>e(8k@`NKx35#%!JE4i(AUpU>tmHl9`5CcadQvA(mq%;&0!+X1qkQfwX(uljUuub1fGq(Je^TxVbPPNZ^ggR#z&mvR_$i>b#NiS`owXf*F~I#B~QH~HI~ z1M&U1-``i5gIKH#_xe0xo>|pW`u-HaP%aEF=_Q(SA!S&99~Q>CKtR_iqXuvx3Vd$}ZRnh7DUeD#!_K^P*#P#23tnNmtr0Da^D#nZsbGwV!?$B7j72Q{( z@`W?fS5MH!?Vb`e7Xg#MNj(t1zz-(?e~fu1p1i-PgHZ8nb=&SYde-Q+31E+g*K&6! zL2F|Kz7^BiN&)LK@CF18Ge^;HEY?xc^hLpWMpz~Nj+GPSe1rCYkTfdW)7$tvjCGUz zgM7+1OlqIlwRcwclwlw1pED2W!(9M(Gx_pOqvo!HJ4%3M)T zIKn(X&9d#9_BVkbNfCLXWI`l_YFH4&9la__NW57DvA~ItB)^LF#sOHF^WPb(`P^|d z=%e|PNf0~^Ik-VKL!zQSmgpXCW?7r9bj9By5r|N9)0I>(?u}B9KEJif%gyO8qO|Me z{Ulw>uegz+%3Xg0CDR4I@G=}AA$b3qi&*yeR@}mQ{tjqTuoC>dh#mV)t? z8AM#JhLX6`&(E7D*PhgBMs9~bRrF}1DO&0!numl`yK99V%ce5;v7ild41~m2(JtFt zD|MB3CTZcAx~kZAHKK#isd^7BID2HX25HJp75LRi)$hmiuKe zOvGHo%x6@LGb~zj+L4kfILLK5vXs|s#bP_D^ zf^7aq^z z&p@`n_JyL{C|jeiVfBJGVCO+yE#k;$H%_~k^c={iDe#32TKkpH{e7sFNyEa4?YO-8 z{ZLgE$0Ln!i@+yUa+pZa9A4R%EQjVl6gmvX;RJvxFEL)!{s-b46qttlm1smG)>p%( zJ<`r^LB>4AP|R7owbLEq(zp3=R1b$VmkidY#4eveyP*gIJB+&Z?!UEa(q%`bF;GzE zQ=ofoj0Qvj;6FF#L@Fg+8&W2rhy3(7J?B@lkWtmh<*xpC~OJ{kR)bWX* zcjeI(zzK-$do{2@$9b$zd7TtoKi#4RMF{5Q`mCOe12LvMc>^YOv)A=1fKoc=f&w?onMo$ zhY;H7ZAeX=LyE?TrTgbcfMDF&VD)Q@gyQmbH}nhN=YiRY#P`HWNM;sOV?r+wMFcCE z(R=5O#{H$07K{4(kb}2jqgaEV&V?uo3cM?UmV+%k^t0Ph{G7Muvwx$7j-7m47aU^y zA`+|VD2*YeBoHzn*92j^BVon23%Q4XWNWV+>e_;6ZzW9G!?CP1e2C&sYAvyQ_i*Xd zebtuo+d@N^3CYvprrk@KmhqI~BSUNGYy6Ni#ve zWzRcU%AJ6@d>6Qk8FWGnls1tamF=mv!ZzArCstL17@dE!xhcc4m?}K06nGNjC``Wa zx!~-Dt@Sy%_N{Pp?lwd|+i!a&Q0=W)NCj(9eL`>fwqun?zD52PXI<6Xsgyjex6(!g zd`|x-&3;Y|XvDa+O8rNsVb~9-sl@M2y-y$PESdlAtLr$AK5H=&q;*>f?6Uur(wah; z9tz0bJ1BKiG$42)aWLV2M{lgdhCC*K>U}dQRAQwu=A`^j(bfThg?a0(=5guAL0E1fN2M>Ht_zz@MCg;Cy7Z>w;Hz2#m~gpG zMn)O#au5cF;XR@%?8!?pjjOZ(&ygsP+JpT#s3w-`l#^HkDDBdp4VL4i4Og*eKb^pH>F#D zmHVd;aDVb7 zZYxL7;jTpm-8f^wB{d-Al`2l_ext9csN5>-g~~4TH#Jv0<}cOfR1}Hv-^hG>(3mH|Cd*pTTsFO z()SvG!_>hy{D%kG1}T*y8o16_NyDD~Spw2C@Rme|OipfSD^^ zJW*c*p!j`ZBuNZQ4;IM}N4O3&`b$uo2&wR(+*Bis&v0%M z_uGF!ZF&V3H{PC*!c11mB_YX{@p<7zA2hSC1|EeU%yLx7u z%3~#D;kmzhl`S>>+kjzoXr^Dc*No+ zTf90zJ5#ZTlE3`pQTIvzs_uzWsZuw$J`QJbhq|9s$vtcOUM5{KER-{@-F;33Ih=3k zIxt1(;&i-885IqG|8BGoK9{&pstF+q-{c-vx3*}TEVo;Qz zZZVA+LB9aC`$?FPn3E(Gs%v$jP7 z+tXY9&}>XaQKs90=i!R&RD7?p6QQo?7TXZnDOZ4@s+eTfQE0WoiAr)*nY?90{%spk zjdlGAdb`0J`Wu~r4DOFjH6!@RsQ9N+O)ah^Qt#8z%xr0lPwWC>lu=MRPp;(|`f`8) zq{2myZ4x*#mRcdNISb4-+9iY58vZQ=zo~9#rpo1F%n6=)H&FQVx*l>p-Y<7JbUD|V zmN34&p_3L~QKRiOQSM499Rec5MYmSPcW-D>I`t<0ojczcQ@zoYwYS3Cw?4)j$+TBD zKmL%aBIsm)!w&C9nKx6cJ_zVw&Y_i}FW7ME_ux%7NTRf<;r}j{>u#4}SM$j6Il3<1 zdvwwVYv{WiYRT`(c71-Xsg2Wgz}fg@|7Lp5?s_gls6JA)-IM2#Ib&}`39V*G;XwP4 zk7kdVX<31Z?;))hDb_ojp`aK~XTXI{RIls-||-E}dKS&7%V%KY((DqtD{Ju*Yut=*m5&e#lO1 zFO^#}KfgC*GG3YBq~C#?bRAUJyC#)` zDxNFk#eP*QG9~I48wrECPmNa|m6Y2%g*Vi+pGg+C$B3M!!*N$Mw=WxlLEFHf_3X^u zt=<>WSI|Q;&0P^9e)T8p@+v>ZxcMFlM)a#B^4eRehmUoIRdl*gHQ#hCj-~bt2^w23 zFR^M6V?!*dsOu3r+?hiUiyvt_;GNj5OKYK6EtDl8Yx_lmGt%;tY{C^n&Pu1hMn>;L zn=uhro$tR^G`oDrXBa*+T^fBBP~q*cn8`05fKM-I9?KZtsKZW}F41ouiZ)m{?~IIZ4AFkIOc8RH=!N zhSK%5Jl3S>((WG6a zW{*rjI!9L}()vw8T&U-g`r(nb>VQ>wGWy`};n6|Y31c%!+UtFWn<-jy_VJB{JP3pM z^t7L8dq0QkwBk*Mu=maRBDLD5bS}(1Y~r)f7~r%EHI_Zb&^#eMGbzqR5$#tS6cMrfN;uWMXftW_Y6tM?o`pTU$feX({}np zFnEsL zlKqFXMZZKa`JtmPwS!rvBDI!tZI%0j=wbsX%pWFa^qPfCeeOuwyP}oR8P#i(le^My z-}(wW>W8(>{^qf0*lsCDEnxiwCv~~++UR0Mibz6ia??-HwMcAx&wV!&D`znuTuYLL z&Cg%$A=*b$S0|I%W)%EoDFxb8z-(r=`7@nRr4s(sqn@&LczU?0-smq+W1Gy71p00x zg?KHUYB!DVrowp)WYYnMG2JbJIS;U41Sz|C2A#~&m)!~FGDjrj$0z&eY$N5akIc1h z7>PRXp+sGmWD!(VMN*qD_K!56t@ZE*y@P`Vzs zPmxUM!s(K1nJn}2E<7Gpxc;Km3<3G);o*WMxf=md`Q+)g-43e{4x-p=b_x27 zrSUqpbZo@(x)-2*k+P?d{2Tob(y1HejacM`^W+j$msCQgR;UL}2GylExW=FfPDCs+={=!UG&TA|oQ`95)%W_>K z212@8Pp{dn-(QbrlL8juyKj3dBB4A$V79w=dC@kq9SnZX_yNwk@8_c^+V0XO-RVlp z_z_g}BYR-bCHt4U6Dpj7{fT@0UJpNR+8Vyai&iL^8Z9?DIcD*cLg)Tm&2uUIrybl1|y)zrv-bh1LLN7!d9`|QXP)_S_&_=odsMxd~vMOMX`g#5b#vv)N|yRo*=6HZ4OeSVyE-v^5vL~ODM&YB^!=T}VU%IkK0S_JZRrA2O@oOcZfFkNdE zoE?wxe|xhRElam?fFPAt9ofNqsI@~i0{_sB`_t9wHm0Bk;xP7j2q`6P`^}4xrz>m{Yqz6lUpD zH$9U36EVKiMfjxy0*b{EM=-^5iMDf`4;S+-!XinH=NxvVAL@v7B?i!CHA?Ys1aa+cduAm*77rW z#!KF!hEdZs+dP)GcZHf)&`eI$=1tT?PI=*+##VNA`Up*KFsWFs3RG~KtKiTj>xJEJ zivvemdR!w=xdSvwKeQV7`E#e`SSUCD9`|yc3N?qE5)lrQD8aQbmph2CH{-f2!+^QFD2OUGI((Dz$%(>Yp-z9k&k(RebC%~6{Y$17O$H0;d8jUyJO zW#ziDISL;q#1`#sZHVqa(ah*wO+WLBIEiBmJ(rQR3ZR;)hmwh!4x*WIk_BQ z;xh>+)n|3>YVE4zQ1n!#ZEVDs{Oq+Uqs@Tmf+P@4Cmi1~eA{DwGASdXCy-mkE9&Kn zOs=3%V0zaXtxoOPA0qk}z7Ozjw&Hs+56G5WK%Vg?Pv(s)jy=q~*9v>Rz;a)@$zWeQ zmrGYbh0OEK4!-?(d&hUUO=`Q*Oa>bo)2rKq zhU&e$PVeoP_d|q*w`vQAwcy_*6>dc-v__36EGuJXZ_N<=D6bbePMz7kR??{AQo6aO z7V~C_H9f<7l(zFhgsDkNjWkU?B^F^3oQssB?b4lPSW+()yF0tEy{+K zAO{h5Y(1fS~e{+mbxya#rI z_SD>_Rssi@-;jt8j|v{5gpIB5%y%{l@djtQ9Y^UAl(8f0t{aCk{QUfK9Usj~=c*@s zH8JU|?BnQ-f3+$&+bEtd63?rqT`cU%PBY2XTD)oyVs8?$c|V}y-Q7Z-!(|lH-)0VV zx7zyZ#?05^w9~t{)C$abPJ30(2ffk4?42==x}xF8Ug2;W3#RF$(U#Aq-OolZnM|=u zGS#mcF_y|4KnM-{{hIF?6K)9EMAg+Uj!-olga%+%?I=Q4-`}ZoUHzWU**s{|WGCwz0 zFm^u`9mhLvk{Ld>qDhzT{*KvbvYYN$Ysl(Ud{zEkhP1qr2g^su`%RIC_;82C9BCQJ z{1UC8*y#l*y3LIRQ^@lNA6UPA->dYU5Sx;YQtN+0vqZ4%MYoybZ$nFPQ>8#+i(Ha< zi-9Qe%~%dHFTZq%hhXd&EAw&XA^Np>PRXzNL4j)yW8^d0g4`}sDLNsEG0Sw)x_6N) z&;)w3PUy60*;>{FS|x}(%lvMH2BP8YN&fzz;^N}cM!BWc?wtBwd86-%`WtcxPStPU zyg2yywOv+JbxK;B8<3r)wew4?lG$>ENV1u~38LOTtYmUlS`-$WU&>>5qiv)_H&&kL zB7|oJ8LTPD$QnOV?<0GH`S5??|NlK7)czZKc@nfqKyOkUWUf6tP)216^(c8;Ry?V6+D zk57E}+wVspiW8U3o?Ha}{_Nbr6F3CIpaJ@)_U&nxUIb!}V)Ole=Wvg4x&4#q-e~P` z&H?r2KNjz&{(Ab_?&HQQkKbJPIK|P_>q_T$hhDw7cCG5`?ar87z0|YMywC=z;jg~? z@#2%Di3aRvb~T^HCcQbj34K6w-=&7n|CQ|Y)n`M$Q+Rx z26%Psg0k!&d^yQgRwm{qOEWu1ev^C1dOCk-`7JczHM6q(TmYYgCzM!&DVTA)Iz_Pl}u6KHr4c z9gojyD~mRgz4*5g*c*Y^!Z^LDfQj(7#i!`Z5KJ*-iFJZ3UjwnH?3HSOyat)3-_l`hrT0k23#(m$wZ>4=`!PnwHtd9|VX~IXAm@DV&(o}hzld>+l9y+>E<+_F;bq=# zW(pVob~m1DyhBT=t#`-NF3IO0ERvXtJEyXZJous_)Dmi)!c7n5d$wwL_QV0RxUEvl zN3{B*M4oTCF&%RcDT=tw<~y^@1sh~2k8DaAj=skjfv|hc{Nt{V9y=jI@G6W-s2Fl{ zDH}{@H6~q^nzo~8UCe}#r!<0F3(YvlhHsxrHP+xq=8FYSQ!M(bw>i~>W^vgw&#Mf+ zVN{<746`>3J4a(9y9+ZrwrF7m&+D)n5^;@Fqg*qKlHAKVe#DE)()uFBUwRJcNKEb}xd6@u~ z>W0+3tJ}Qffeqg-wOHeF=pkyq_0(Cnemi+(a{`1Zut%; zci{*}be0&ZCvQzUF{W6E=q}iFRZMl;H&VB(qe>cG(63|gctJ=4&H+m+^Uh4a;N4*m zyyXTb#lX9e(dpg6FoQejU>Ti!97!Z<)Xbwbv=S>t;~g-CSHD zwXKIuDoBv9N6&WR13s#t8>eI6T%#5G-lX*}14PAtOkO(YpswlV;wjHd2dixFK(M(+kT*M;8L z&cI+j$9$zdI)=ljC5Uqe*=sU!m9)e4Y)yH6X9aqh1QVF)+mbV~SJHVDz3-?QAe>N* zt72hM?_S2UNqfEcmW=eDbr?Lyxt&&wA&#b|;Wjo0OB7%3Jlc}O2TX3BQ&!}kiu0`f z1tS}_?(-KgJ&13#L@dLLBx^}sV#dSYy!#`6cy91GtB!V^Q&=Xfl6TmnZ6@9T;kz(7gIx)=;05tM2IWM6rz3c;+5@$bh~06>G-a;84X#>$92gg2cpj zK9D!%{2@Ng+>8y3p4CQ^zjl+oqS(nbU%TM_G@Gss7DOv@u%7$k*hE&s<-RzJmc5qk z5hHs?JPH{!jPOZiZm3IRhLB>BP-m%z*o(uS+)KkW`L92fKwxhR9*h5zr^w`9_ij5s zK`mgXo^tcQhV;3%)#UThy~#R_qa33^qVXeVtb0wUH^Y?HWAOO+0^r??7|+cU(Lo_t zPuXP*KhyV(LYC&*q&YT#OZijNli`lHku~ASZpar**sEIWdAcAf$KkrwV zh~lD$OuN8L&#KBVXF9q@<$F8F>a}y+o+fD&ps}<*OtYev#KEQx5k3Jl{D+P>+SN#e`whcClGn|v59M#5S*$qEFtwxQ z2l8{pu38)Ofuoa#2nB;yO=k*Bg)U}+Eu9PproKygWON}dL{MksL-eTGLnNgbA`lKk zoIj#>u-C*V-y*${IOiP?&rXNH#7$+=6p20GyZMJvSM+phBvXrU{`tdM1kZf}o!n5@ z##X4B^JR)d{XDx$!kh$&MYLn7-j-&=hL>Eq&lFL%PVGe)tUYRCbe*nMldnpUq^5x( zkzb*E4qh5PTAN=<))QghM5}{@z+Ur!;-x)OKFP1hr5@G&AcCFplMtDwan}1^{+bAThMamAf0jQp3Q*iH0k} zFt+E9g|%ehM%>IoTb!E)c_N*}ax$SF=v2R_(8SXbmUQrF#}b7euMWI1~sioGUIjj? zO%0I+j39GcUvs;LCD2VPp+lIx>r?nxqRBl+ZKJlIj5jrD((et=6*Kp`OM9rEKOAg2 zJNdp91o1^Qwjv;qEavD+szX=e_>_)fm)L73q;isJ6KZ3T&lCNkcu7VyQFkNV=ME-| z6WAjanX(%<13yM)=*h>O8DF+gW(-B=0ex|3K%CT5x1tILUHAA9VV|_DV(&;D($u4w zb}c@2CGJbB6+O3CoF8>-FOoQF(6?>O_h~hSLi%P|{+;puPR8ejw2DU-!B>Q-k#-Z; z6S^)acD+o)F!oMhhrS?Z{j@xyzF3^0Gx|=~Y5F9C&81;? znyc#+G@BNjK{8DM9sRlQl^)98)H-Q*>N2K@9;RK}XqxLy>yt&DDmYIUyG?jFxs~eV z4prDak3)H8zjmxKI!bO2yTiTAC7G{5G;~y#|DI{U-|OUp+2p}lP$jxW(LG$G`z*-k zHe6U4h(dPaG9FTl^Si$*<7FzvF-^q#wU>t?e2X$f5hkMlNyVqtwQ>WGg(kN=~q zmVOA{%DtC2SflPSq{%FHnTS4mj^ERhk+&BVym^o`piyD4w^xN`8;#N{T3<3}{kSU; z4c`~)a`K9 z8wfzSj9udTiZto^KQ$TO#8!&0y&S;M{<20P*Wdd>5shnS(-f5YN^4Lks(Q@{L8tOc zryMOuqF9R&Z-Zm?6onMsP8Yl`F6efV2*1NAp^diONL8SW>~1o3^T%CT@rbtMON`GI z432MB+nyl_HuGrd%iaQU$ayTWLQ>ZSAd(jtbQ{B1H&J&KlVN3c6wPZv)lTpBFe9|A zlDzxEGxDrsjSj9p=A56RHNp-NlV6&AKz0}>#*ZFQDD|am#H^e*yc_=O;-h)h#*$V^ z)yRIErhp#VMN`0|6t`YqMqPe-FAax()X85lOo`*a_P{VwZzK%9qQtdKMCY00qlLa# zd`Sqzba}~HZT|#9#euioiwH6~iA5)Ig6(<+Rb{Z~rRE%%g7KK-~P=2B4t?U~?^Wr<3s9 zw>f$niGu7l1R}iz($YyHtLlP98@W1=M!pk$Y(WmcVaEz)p-HoL_ zSM2uzRy3@nRrHop=fTb%8;E|pf%_YXKY{QwBi-3)B=(|H>wRLA|2z;oy>phz7u??$WXFv7g$r^ z4K_sX=av=S8IK?ui41=+&9Ygp|JX3rsD0DMyA;u|7P&rr;Ne=j(%c4*<#k*hu8oEX z%QCgxf)t&ECb+NTdZJ9-$cK*99oxx2?rpEq)#nP%VPtO{8hfbtr<7MeJzC>lv$DvL z?RFNxS!`YopoFd|Z%W5Gm{ef6qRZ4?jWN!opnplx`IV!`btUZuC?d69#WA4E1X$jd z*+FR?X3qA=x)&ew@oV>b4#1m~_nxCzNn`H{Hy# zL+5CdwnUaeQ|WC?v>L)|Gv58#AyD1Rbe)i9`I_8+;HsKL<&#i>hh4HesxmwUfJ||% zzXoTh7RO=f{UuG&kmgYELfKBnhn+n<0LnEXi#x31E`0*N-lB-6$P=E`L3?zdo2Ed% zYWM|?uRDbN!5}}r!zh#7stfqM&CylYDbeb$^wNx}%)=WK+HP>u6P}k;*c$<0a|-!0 zF5-7vdzD5%UxZ=%J~2$0U)v#M0&^VKo`HslYvyTI5d%Zc^2^L_y1~W!DaI#->kwY0 z@Zwhp$g0ZBsb#NW#eK%ke>-pW*5_QKTt!9hiVM;z64k^9R98;$eiBsAV_F8pE>40b zIL{tpC!k(e+o86Bp3Q%~!I@Es>xh=5n6*yu4U}H-X0-ki5f3-Pq}eh`3fHvE@qPMNR5_`t(a#^d%W)1F|D49#Gi;hK zcFn6-2klVS10aZxgRB4qxEm&D0=cO}f2Y;F98*y*n7Cg_x~|@}Hv#&n6WltF> z+q`nuyjpnmrv<)W=;C{D_VVQ~S>3I}ocdak-(_mkYb_9PR#Lbu_OiiT3j@?@&{bE< z<~ix19#)G3&Na)XZlH(8z&2&fXDS;&t82_*JU3K;grmSxa%I4V8 zfh@~_=NpDHLGm^?h|}vC60OG*`=$3ZF*}7z5HFsItKX#kF^EH+4WfCfj9%sI{r0kH z`$=k56n{~SsR=XUbWU;XxOEX9qkX=h zt~p62b7gxyIi57{1a7j^)m4n2-bbFk{IH&%~JcuK<Cpy`{**^#DPdKIPCiVf3d;%wcBXsWZM-_uMSoda?FmB5PRU_{HMLt)StmX!` zrH9t)7{?UE3)_012~#c%u|Wv5&Uk1rbQ-?^rB#o6FN0!7TZ@s^1&?pyJ3t`KQkYvw zUUE66dB!`vIax|qF{M+NJ6RE0SP6~oEqc-iNrsW9NM~%!8Y9ZjMHlvaCr%4o@ZJ-k zfa)D1L%MZhLI*`ZGPlmCabK0u8Sjx!48GC= zP>>5ykEB=*G^wa5 z_jEI`5}#v>n-eR$2553WSwD%*nJII_$jrSZ_f?`Z!}~B#q5_(z=LrRk^}{UTCF@2) z{AB&csw_mJ(rMwA8}6P-F1=}|+_O|0&kpe^r*HuKGEDD>8Q%lp$00iX_u^9DdC zP(*L)^uCY?3XNNA!xR2`796%wqbv<0uS&Kac|j^<6x7>orMa&+nB@5agJ z`n6%#Kp=)N@2C~thQW)NsH__bpzj%P z@8iXPWcF?mazkA9S(zLL_quY@i_w8tW}~LyXs?b_HpH~0ezH3lndnxPIOFtXkn5IX zi{e{yz?PL*EJ;!E?PDVglP>cNe}xg|ngqo;PO)%r>7J<^0lw;E4RjXvOS}`q3iwH; z?dph_?LS_9hh8>T-W{;M`a9nU{swoBU8j*|%_w@TlAO@*Nc4zK$b2|0g%@=+NAAK1-T6)-SfYVSbY zk9EGeBYK8I4&J;Paop;TO)_jLDx!huh`KXPS@vQym+@$6LsrD-$!zdSFgx&m=b=Ri z)^Glf6r?AxK<)wr=AaRkNiN#&xDU+Xa>qJZWwhgJ-G)fixD$8R)NMy#Kjtq$pwXh+OcexnBJd-WxM*AOihIoicvhukz(4;%$=d1r4nS?#?qF7x zWYIR;9o1rta?_jvg1)9^E=BCp?aHzBtVU!VlG@#yR~A6=zgI1WLWy)9MJuOM*9h=YgIW1MabI}E%~xb|^Gc4ndro zrLhZyxt`OUmjz(jY8i(3zte6EG8#@A)p(fXEA8YLXCTg;D3bpN0!0QzSK)LT%AgD( z>GJ{%d+vm6`>tx&H>YBnDF4kA4W*blkBG2zw`+4PtMkZEh7v4B^POW_s(ZPoIxW|2 z2bnD_k?-)oXMn8!0y;+{#RF2m9#-D~DSuE4vQDt1Tk*d$6X>|`qYu_v>`nxn-CqZa zj{F6uJ){>SU!i*h97dZapuLv3K@-SKk*rxw25?FPAc z;FEA$D6!%=Qp0@o9J`Qa-ntWH_AvF8(7T-zrdvmu5oOh%+HHa6pu_M9XiNDSYxt?` zIw)akvX=mmdFf)eaO@fOrxW5z8+;)3@n0&9v+LwtMh4iRHRt{u0p<4z{1CHdGjoPQ` zcp{sa{3MI7cHU14+_ADfgOS16V7akFx^V=CzB(+`%0zSRw4qd|mMxC^bQ^+U!}lr; zAJP$eE+*Or)Ls1@pnlzPKkruhW4v}?dHh+a95eZ16$#>z8f~>KM^NB2I95~l?!{G? z6=n+$EPLS!!{{Xhqt=rQMnhYf_!A|E7j}S(JN733|1Q3w_uHU#MI_NxyQ@Kw_A0 zl<-*;8uGe_Cg8Q7OoKZD50_83>eSu8rFbw6Tc;nk4$FLM@uvHhFy}==g0MR68T%u? z_vgCA%)rLCde8XHeXPCP-s-|jo`=PLW?!>E;&srR9p9~`jwy&7Rm+1NEl@i8Onb$W zpZHMC+usY@o<#9@ts!Nvw zjQG#j&cteQvtXmcd?`=?{uwfGl~s2>9AHY5udmjRD$84eN+4^gT=w}q;xUX2M`Fw{ zyk?UU?pfKU6yu*FU})DV8D=zZ{CC6$vi5gsCRuy_km9{?=`|RA>MHboS?#y?TO2;R z)|&p?0xkH`c33@sblnq^Cc}I-JxB2%3ijY2>_Jl5&)xPt`_;rcP}l~+q3=>nHT^ab zY`eo8Ibks$`n?>({7!AJ6R-m>Kn~1f*;nn4==>6i3O}?+2nPvKb`x|et_Ec>kqbW; z?}TP0!n1COwQ!D}9y}TlTi>tViiBXTt%7wGmY>?eQ-n7zYJr-QelqMi%2v;GT<~s*F5FNYbu*Sc-VZxUy&3wEhk0LHyl;R2D_5+dGz=Pop`(QY>z*c77 zFv5<_J^w*|(FdmT2e6@aNAq~Uzr!SY(P8^Yps2lfl1g+fw&A;9Y5N95*L$H@wZc6c zIoV1rXydhLdqu#psI-YQZD=5XpL$ceqy@IfMWscU_H1D0_YG3*2h42Y?0z9$Ans0Il*U~**1 zqV5W4dXxp6UtM3_8hh5p&6y)?d7A>Mh5AgTYo|SZzgm{n`!hcFJ(Q@qP|3TBewcTE z-a5y}d1<_7w}SK=7Y&lywgyuSl;082*#%O^c~IP{JwlR^(#%Kp$6dj7F=4D zi4w9jO}L5aac6`F4MvVTHD=^%RvjP6B@jF?-n1e3}{^KIT+Wnj+0 zp7bkBV;PrQ%`LT>%UyJDI|M!Ae7J;2y_1%yvZ8{j07_^1Ev?7{$Mv<qss<7SW{9*Qj;-l#x4-rCWA28SbNHz1X7+Y*S%4cgX&f~$+x!Q7b$^Wm3yg?_GguU8m99@DOMhtS}GP(sA1mlGMOTjAkW z7&42(%&^vILi`fg4wKM2CwAE_q{Vpg4|j;55CNt1j1q)-_@&JeEIqx7HEWAxVLWc{ z%)?TcYPDgL{X#YQ-CkOUNxdpv@({MyLY2K}btqgK+Kk=ILp?>|H+asT`v%f#297xI zKH*GM7CT$;^qECkhKmvtsHyS# ztbdPY65bf?8h-e$;(<5p4n%{KZT7FLQ(R1j7Y|=9~EQrCkLP#aODDFxE>AuVLKKv+jhpwrZ2>Y$>iO$4JbC*9-Xg~S|IGe%T2yg`(> z1+rcn4@M)cZ-+%u>6!iOoxV+XU3Pg(VBt#=OaS_j>v0+`9kEdp`Ga(lPQO`^D^eH0 zpcD$C*(EBMayoz}xx#yWW`p?pPcLqP*A+tRhIjr5(7#nw^M_*c8mwoeO3#5be5Q`^ z?*;MfD$ynTn^Ihs>x2$TGQBVX@<5ma45L05)M(zzem_fM(Jj%1=ExfyONK5C?i^ba zi7NJzM%=PJnVj%U8mpS$J!-yFQb|)UPT+nD`9l~51+P{J&rlx1VGLs0d=KFc&%MZe zUlyobE7n_G>l(Pa8Nc?6iYq=cT=+IP^iM&fM~s7SR>rNkEnPAMyU;@AVn>ty#XjR3 zq)bkPE)|)KXAiO_%`ZZhF^BVvb-&b{kclz}02~uWOx#kO-vdo*s)TgxQOz1q$ASC6 z0-eM4)2f>CSD4vdO%^Tjx$GM9CM569c61kg&E7wtX=~>VK9<+}`?X|Fz=?;>ymxr< zCPmOOu^vc4CQT6Czxc7gb3@XmSb{_8uwZv!R{>r|V5Hn8j@tkz1zHH8tbOlgR(waq zME`H@7e>P+W$6TgxnxZxzWqe;>r|Mi;$T5K`ZOL@_0qqgMQe%F3t_zBRd`Frv$DDC zYY1AxR=<_}C`aNBiI|raeL2J&579~b5EPkjFW+MP;u5=#qi|+qjQkE*6Xd{j23#Lu z)>W%*tohLnTi)j{$s!E6zF370hxtVg*Dg4hKk_J{g+BLmFeGVHDYOaR_SfQDSzNAT zx~_L`wDVX?!~~y>;=R))&McC^*qem0_vlL_T^df;HCY;|B}(*7esAeY5v!kfZN}g= z=g$`;{F>Dg$6YV^a8h{)#b>MERgGuG$S-aacS9Q}fddPb{T+3DIJHA_;sjpZbZ}b6 zEl%(iKp?{@L00_8Fn=p=#I4h^5@z3QC5t?>Z`r?o3ypoj;be9Gi$Px2pLdT>*}b_K-CQFjsG>_A~l6@wgPcfpwc`#kpt%%|0>(CuL^r zn&;LgS1P~xWd%FwP8qU3~AlqXi9^Ft6O79%uEx%5f3wd!CHl~)c z{jxi`laZl?4ZBD6bbL!uw}wGA2$ukzN3%_70rAo$uz$(Fs&-=E>2O?q# z)Fe*$#_%<8Aj7rD$OXo>H|AEnA0kdKG&>_q=Il#U<<}8&RZRcOq;0VeL=u(0M1w~t z{tPn?1;btdL28{pm8_N4$)W}DOFiWmTVNK6fEmpOy=n}faGpUnl0-cScG$;t)F@iW z*bH$Q66P|uYO2Y%R=mb4ys;ZMV*2=)HrR>*AdF|6uuM3W)0hv)X*fXLbnE_IJHpS|i~UTLbUs*so4 z)KO?;g2deFD&Bu6-0Q5LI|YJE zD0Gmw{JewQwRGU&=a5UQYN0Z6cg4}&0-Z0>;FQ)XsVSgQUwAWXEu5csICYhk>u;$3 zBKq_~m-QuIfc@VMQ1&-fSJs1C`d!kf=6gCKZb)pUZ$R7x#tUu%gm7#HrryazO|?>O zu>Ci6qh_+DBH$C;#@guykN5P=;4C4UEHX*PU%d`CjXnMbTi$MKdyVS-8%k&DD$e}V z$X3`%(3gcwbvkB4CKhXZM7|%^g;m@Wt~G>|rLK-E7#=wF8m*lIy*%NeY+=e)^zqURjIB%#^0`j?B(Ddcbl3rtZGnaKFYJxLXrln75j~ z=^ufEco_aKQNhg2}&3CyiL|A;}s zcvOe**s!}_H^k5?chE9X+VlksLzI#SylRaAmfnkeFN-m4H#m89_`Osv zyeDUW_u$6gbiUgz3=PyDl`wJ?=f8&}i%`LB9fNGK+wQMGLI{7Hdr|Ut?7k?`x$3&} z4j4Fu*3N=*^#lPjzFKT*B#um&Gau8oPJ*IBqHNA%COOsBHC=^go{+&IA%^!x#sI7W zywk8do5J(N2QJ1#;h;*mZpOnJKTE(t?A*714*Z=8yw-`-8{bdu4dG5jbsd6iaHw@0 zs@($inl{RpMgWL!N)0ZjUb};^ABY%QS^7L(fkn_uS%b4jWxb} z)G*mXGVz($-MrUSaWdG9aGSpyDN=`BlmXN0i)!i>A8Eg^p%m`dzJft?u3{kI*xU;^wE9#eYUh1t z&Z>)S@m@KoHWK0>$5`U7N}Ha;{4otH%eMb5r%Jt3lYm zU*b0e2g=pWL1PAQ(N@7NOsj+ZV%Xocyjoz*kzGNnYsB19$&R=0P5Bl$Sqn~~b1L+V z_C@|Q!y4p-Vm1;n+6X*MxN!5_FbnRr!CR!YO06yW3xbW0_Cm&BVoLcnp$jSe^XM!$+^KC~v-~&?N(3`8B>fF&P zaE|Sil&Lz$_MZ;7!Q;Sr5inVRk@CbAG?_ho+6#J7Uvf3I4yLf-Vqy1(5bJbSch8SUct!gac&No}IcQY4 z0C6p8X~6t=#QplRqeb)L{9wDNe11IQxTnkAWAox{p)7EnACI_)Ea;jSC+0dh3@|_b zqdFhG1D@;i5o{l0=OYz-q=JuB06tFtkqSOi!AC0iNCh9M;A6k@v3-NO*^dpv$Ex7t z*2l-4oR3rh?bCg15I*jLe%#dkKdvhH`W-!ZW^N!AY`l+hoe*9v%3XQk+o+`oaOV$j z*NdOad(e+@V^Nf4h=3D!JRubgLne{>ZUL0okrYWLXCy;LqvqdB19GVHAZ73 zGJU{x8Zmz0jyJRr0W9=(+;JngQ()36GDiJR7s67c*vO#g3-52IlAzgq!Yvjx7@}!l znZA=_6{Bii4vxCet%eq$RE#gl|HL9hWrwp;vN{_PB-ySeAX(OtJH9~QLr!(}>InSJ zG4MXb@dRKMaMzjv?pq+d2lFIrPzZdIzYBDU1YOE;?oeG?5`(feDu5<~)Xe(vjvu(A z@w>HZO!62!CJP#q?#u>bzDul!*7^4f3uEi;1-g+4@vg3N@F>aqD;fC+aGne*^r#v_D_8*8I*eKmSw{p}r}Ur*2zu=t z4>sKV4VMt$h6Y3By%XrtU-w(8p~=?6cXEEHo`%=id&QXxts{jly>ZM0_TAzh31myy z+*Jh$Z2^P^=Y_zV8b0x$!}=t=u5GLX&qKez0(kY@X|B;k2qI=*bQqb=9yWAWM34ss zQ*rL~&xhyO!?g|I@40S@{Ddr3T*?pQ2+ECJT<@E3ac-<-_cpaXhStcK`=e!!)-spV zLLZx&8=Y!$S6Gq7=3`L>3SV~)F^D)oD3nLZ>cp~wjfn1>!VMBLM8hH?rNwfLY5dDv zJ$gs3H}pxU`fUWVMWzg-iPbC6_5^ zgar+0j`4TEQz~aB^gJgFMD&Y$eO)|Vvt0*I>iPvXPyJ++TXh^1sIjtr?h1*XUwmCx znWCKVkjacn8eWJ&3roO~!$NoQbjd?rS$zc#Jov#>=Pwgg4iY)Tp20R4UR|z;p1EY# z);24kNBJJ)PQ=?)3If^k&5bKB`y=LLgL6|a)rs$hhqUM3wfI^HQ^`o;Obb$5{>FNU zQC?<=vFsp}%MZ!=SwBd7e)8io+dm^Ejl9ya+ZjK3V&0;%*)aF|o~;FU1?}pJ7wYx1 zuN@SxTNrb*4EpR?kz%an7+u=+4wo$E^0^#F#UO^BO$hYjM3f1C+L~+nEfAYD;xR@$??aQm-p&31p}#}f%lX4 zEO9vL;&+X)0CNxro<4zalVpd@$o2eC(T3WyFP3;(O#bRn8})LTXZTE`N&Rzy=AfS3 zW2+y(OzcuqAfLvE(LOjS_J}E#~1&ocqMU;d1()0$jGt zjb5M;*i6=H2hUKRmk z@}1r^5J7q6$lOdzJDs*tr<9``hDsYa%v$h}lanB_soiy3v}N5*9*TE~bCsUW@rDw# zx;+oW!&7}!!gaAJ%dq%$+-UdF9nZ%NWg2!2I!rFP+`el8n z)VuN^yaU;C^aiUns3p!~`WAUm!5^Fmi|GK*3b&(*YDAVBx97%NYph+jv#sa@)h7By zCgx=;df0S@h%jTExfMKYm1DZR+fAyWo#L40{UI3Y`MnA(xy*y$N*K#0+!>s)-?{Ow zL0l+!?B6D=o7cTP6(1;4BX+3HT_7okB2Qj|jYQL@4|7Z@-mzu+KkMYqgnVGH@X$Fl zx$G#ITI@?K9~9XmHx?O?vt?D;SDTjk4K4J}jhG(*yT7}D*u8aiMa6JOwj!8*I=#sS ziQ2>OW1hF-9Di`!FYrSXW%bMzpk21pbpZjKp%0~7o1O7F#II%QTM??3neS+$eqa?n zIbV-B0A_cpm-o`;!^a52$E3rYC|1BJ72${uErIyw!%@>V3@D(@1qZHT}`Vfc{KR;aQR!NRY$w2=;aYk z_k$c}hMAAe=sPqQJoIR-bf9(1M&Wxa{*HFhrYCPz#Kzr7@H}C=Z!mcFnBUN1D@s+c z%9~2(Bom)+U0qf&HR?dD_WVQFdnfE1Crb}X{3i3wZTU{5qy%~}IC%S&EljYCk+7Ov z+NA4=v7oPYsp`pFX~IL%;mO8?-QTBKe`u?BGIvLP{LY}-$sg$EuI(fbfY^1p^|iJd z=yf~VDE~I|>znS(>URZEufEED6BgEDBfq_?Ad@)ObT{hGvc8>dw?6QEpqm`C&~o~g zx(HqBgXIGc#2*-AoR~fGGm!d!nA@QyH)K-BQZZyXAQ&elOC3*GX~cDsOUusxf~S~% zXp>8fFq=!`Nl-3Add^ANGD=TL`8%eS##Q5OR0m%_@1<6`5y8zjn3H7i;qvf*!Ii~} z6SIl#%(Qn&+V6hS4xh=fl;#k8EADk>H*etVEt@LD&cbUFzG_RwvJYK(V3vk~*kYp`UfIJ!1EFsQGBsEo{T*46+t8u%Cw+kEf zGHp-Lp%YigT8C7b${sUU?zzJ&zjkIMU49_|0)1Z zM>YJ+izSxb$j2<22z(gC_$ZYa%~|&l@)#Uv;MBDFEw~mucly}e8m6}Vxi&xS0?#)3 zZoqzx{LTss#Wu%48{tS21w2P>l`{8r-y`;IU0vh^z9WnwLKlbdUsB?rnE{AaROD9S zAP^ykgJ$FD&*xb6xj57LLPE2r2&AMJP6RodSU32zV5g{{WDz#QaS*^_y`By3pR2IJ zDrEJj7YpSE0nvC+FZg+rq}}=PMtwI%+I7&jO?04d!)c{)uFLn6%T^L*ZfQ$z5!P1J zchZ}WmQC8qfwTU7?p!)+>uT`meOV7f+;U&U2an@6K0{3e8mwgJMkqCSj8@;BsID3Y^+;z|c z@Ps$3QBPFrpnaOa#A)<>Y&UqepS?y+C&L2Us)U)NnF4rBZQD(_ z!AKa>aA$6KH=Ls_KTE&Z8{65`Oe#B%jvnu5)VQ(7^8-}2&Fpk{d~P;;)pPa~{gd8U zRNeG5Ah>WBcAPt%tjFIw-ocxhI;xU?-6Q!^qayCh2v9{`R``?46sX~yo-?-ZuVRkY z2n*M3OLhVuOQysT#SF!Xxpdi$_TgR1`u)D?+->v@7bH}1NQc>>=hYy`=3q z_7BC50mULChT=`&RRF&l$5M-;Io%GUA~JQgSjW9(-Yu2Q@~5Bs6*|LORp|N2Wm6rN z@(%d~cAul=PS=h`B;-kzR_}2JP7zIZF7p_O61EX$XdChP(OW7-oGPb%{4Yh@vZtV^ z_5?JrS+YIxAdUhGeCug#z9E|nz}4$lWiZM^KJKGTf~kw;VzxlD{2mJkFIX@75MF5zf-UcBcR7m&xpsyz-L z*vfte@9y{@5^ARgk#*%hK@flMaw5vgFuObJJoAor=LhRLoKT|dCBVQc)grSd?o5tk zSXM8PNi%!PbL)?m-;M|0SCMV3aJmz%FB3&3)Fwk*l2lb`UB%{^Mra|rlNiA^i+IBi zwH4>+(;O129w5#@RN+vwSh7L-zSWv<(x+c2PTMLyb5;?j=f{^#d0UFT5(_hKY8pQ2Ry((ahiJ%~1*yraE^2m2TR`^cEolO*emqYh z_G7;wS<~$b?mLXSWR>Iw&!QukWUapJ)=h26p#9fu3ktEp43e{FQnN?H0();rU3&g7 zPJr<9F7dpdXDj#uwuolO+Uax6&V4zcs7nWluvriWDQ1{GWA_im$k*fsv_CBNRaa|~>AoZB;(hjx(#if5e1Fg{lU&C~sd<}SO+PJ!=KV>po@xHVo#G&q`O zvKrXVa{R_p7W_Ce!YEA_4~oQipRu6q&=nr(WACFOX?w)z1NqZ0RgM~;P|mIuZXD89 z_x{{k!&*K&{06{zd#8F(N8KYQ5~g$V$)A>!v}dks|0>7&5lIAJep#`doZnHnKULb| zY!f{yEFkhLbV94PfinT(=LHAY_H`fB7EI#Xos11N8=&$p6qozTL(1&H)1 z?V8-5x3*B+7kcJ3|GrCSBaymG^yL9F@rl0d5*mcsa0^->=bfkUO?`^omMw(yP!hh% zIu)%_UvOh7>2knckPSR{Xhe+eKaByzkTV(O-(NQA(5P@gfbY}GQj%xiD=nWurDl%B zUtW**g-T7ps+;xUuTbgV*)r1SOdQ%IOD^QX0j~PuMCKa=!Qd=^+U5j+4xb z2bTjK?Oi0zC4PC*&9p!Nc0Oj}M-pkoei6d>v8Q$=fn$^s`C!Kq22@uy{{T6;nFU4s z&`i>kLvXrwG*7>wyBJ|SY#C~^2u(uQEPlM;=mcDdK?A;>aOklGG<4QH`^z31m_ezf zo#<7g-M*8%Y|AwP0)pV^0o?wkWxM6f)3#x2!fWeOL|0BWW$?s4RoK4ebS`t5r#QN^ zv6yLfo>=mW3UD=ei)5*bjU_!4pzX`5eL(q(Pev932gN}=Ff&D__W>TDU^^Y5d9gog zv~&(y@He;_bdm3lJ5`hNVc!J+et)GneMl9bp^~T_B3j7-lPvpR`!Ye)?>{Y6i?IiL z8BhR@7-obY zdd_p+`{VQe-uoLQJJ-5~|23|)_XZO~NDZ&ztspg=PBO4qfd7M|)|&Sh6`*uU#o3++ z0I#F@_BYwB9gBQ};9fb|k|ckYBsQxKvc=QR9^2g9*=?zue8v0mB<#;u({z7IfK;@Ha+Z^Gx*JJmqU_10Kz+`15&h@5RSJQ~DY2Ax+MWDiA+9^(QAs2q3>@<%)0QqsEvqOe zvB@h9mZmH35yemcnup|%%3OO-CFAXsf$}^vx;L?t^`xufwY?maEb`=Xbje+`0G9(h z(D{Vu-)hNG;K`_MbN{Cd&l(c{l7=^BUJhx2ic{e8k>`l#lcr6kOrdx4D7`@8f}azR z6as>zO1qepLcu*?@%ck5rGP0I6nh zjQc4InSK>mt4$Pj0X#+7_zoBZ1GzxK665?&xqPjeiyE{><2;1hE)|opCM`!Nj)Bn= z6jJ!0em*4n4IbWodUo^d41hVP`tDVf$J?{B;F3P=1z9cK0Um1^-(mJ_qY<6wo}d`) z$-$~E;_|!Og8E!^S?tI7qUd*Pfsj0M46Kn1uOR?q6Hvb1Op3`z{}R-c1CH)F?^oArz$gMCJ*!tp}jYx9?z2x1{WvcdoCoM6D1)3Q_9LG_JHC$4b;az z^V7i7&!n?cK$Lq2BZ^7*p7bWTmw{3+c)gUvc6j`*#Z`80qg_NpHL=93Cg=#hdt1%p!TQ3sjE5-n~lO4#(glQ?_!FQuXeXUBTmA` zDn`S7P`>OImpg9`obOwgSNdCJabTkPcFNjn#(L=@-G$euy@fyykvJx57aV@D=aSCT zyRlQ|h_d6#8vC8Tg)tLYk|^z@sHX`yQHhHZG)|j>ZLx5t2-TE+-_G~#e-g;{o@%5i z5mOSYbFZh$J5*zeJ$TS(3oA)&Mj>em!j$}vvY(6 z<|VIMk`!Y}vu3s7WCpV8_v@}gFVaCqP}WfLKl@zS4}iW?)O4GXY~&fPN&!rr*I9k9 zV&CQH{JDQ?w!)Oyw2IFyN4g2)-O~O(oC|YjVBqjAX?W^EMyO+k(Q@8>@RY!yY8ceI! z!rdQK#jPn>m}R8Z=YJLP1hir01ly{_JxpNS?NC2|cE}f_o(&g@?@?+V2PV9tAy-Rr zv9s8$E?r$a^T&FmhRu-6osR*Hl);ryAe|_VT-DqrC8-c(WC9j`yTj zm0yY`&(C9^XtmIYzWRtzWbdiLOaU_zo***3#a>=qLcVSzWKk>5UGif0nZO0s!gM5J zXxhhRi`huSBz|&!K8L9)*#i~VcNSK8_%TN3-$Y0-0NX4tTnU3}1iwn+l{}!>xU*85|;_m|0YhqI6ZqRR|8*!&e#(OracwqU^ry|ekiuI*Y%$&goa|j z=_+6APDVzw*x`#ya<5wpTaNb_KWu;u233iRLJWf%`q4`oJjR_mYvKj9RNo6*s1@bE z=CZy2Y1|9jNy6l=Myn zQk;oWj{MW0jb1oGZgw;n&{gdF)h2%qo`@~Az*$1Iz2|0T3Op!{ywGw4U$nb8J5tz0 zt#}=`g>Al^dA#7CNZKK0T*{OT1h;Vni4= zlKKq1Wxw8Kj{$EVQtnjzh19t@%APMu7rJJ%$%*q~p7Yz;5asNnfg;{RdyR4LUXw!0 zEb{f^o6Rn`WuTy{ObO78xMe#(=p3Vm&)ox?Z!u56%r>$iMlM26M&hRJn(4cTz|6MV z39Lp;J?IYL5FU0__5J*;hDUQr%!YSpRy+Hkm) zS%TIQMK4(Etvh4djETL;e7!}x{@dyZ!nir798JEiIX{YB(mhuzPNcc@4Wz=hNDk5o z1Xyj~qivLbeZ#es(XM4%bc46$=hG^j2wrfn-E5Q;*7_u?CkmSHpZmpzY!VLlVhdjU zvIp!>tm*5Wdb~Mgrlm?i6SJ+&3d34&96Ss*K$wgB2J_o(tO+96%y<&g!jku~#PtjT zc^El5b9k2J5roLb>(H~n(iaK5n`-y2;AHjFFI5WISnty5qdp;xXRx(Rv> zY9&GA4e4CZ1$eEu%hwt%WxmdZrm4?bAm^0W*PcrSV>fZ7*hG8yhqvoAKr>vqFtXkR zkKGWwsR@0kT{U9v;l0-8y`D;7zDbblhu#mn_QcJT=*8sh`vIC2$L`2CiCAhAttXI8 z2F#{%B=`9vZAQG8Y1pJpuC?oEA5uv?qS@BQ0yfevK9?GzoRv+QU5k7&F#&=O%1}UI0KTbk1svlABqKoEomos zvSQ(hWc(|Km(7|n`?E^ga};jeSG z$Br-E+kp2wNfEY>3`SLT-!!)PTgjfMg%GAQ<)2Pkx&k~W_Di2ilY8ouBTC1!PB>vE zmaqAzC3j>(xvy{}MA62agXiZw?E!;Idn5B?WJ2JXLk7Fd{fVJCC^a=C=H~e{6x?)fIg^ zMr_5*4NS@hI9M{+)8&mX?C}2FjA;&Rb`0t}V#bWf*_&oKxm>{#gSz~$F6@WqcfJD` zhOeg?@nWXI>mp>H%$ewVu*LjyP~}0d-tjL4k&_N)MjmznSEjyr%$5$ctAOp`e6W$cu=z|-V$$N3?(FM}2OFA}{dE37#ofX* z-T&cn3iG9VG3GQ-t*!M@l-Tb~_BtZ+5}gw50+r3N_h&$c6(W6QU|L1jfSsq((+Zr{ z@XdjCt(D5>_3JOl6ogV)?zN3uf4pqwx}|zcb&W;5(zqs>J%9iS(h|S4cuKsDhy`L2BBg6X0i0#oNo+9U-q$iLjkFnID$Jdokd+}dl zX_L~D%63!P%av)Vvn}d~Z%FQPhm^}B+cFrbg1}$4*~%!R8v0wt6Tk~gUxgAWQlYS$ z8a7}N$?4vQx8QU`KkLwYj3H0H_6@~gm@g5r7D^kj0R>HC51RXP_*s^cnFEcVlI8Bx zYH2rSAAz$##bg& zC>6>8#R4T8+>kJv!bIb-;`LkuB&IQfC#@7#Qv^PnW_7QoD|j5@Y$liPW`%NO#_X5Z3wX}G7b~AJS8+#v zvA36E0g_OHznvtr`9$GfA7tFXy8b9sa zUWT2sObt>a3~p@-zYf3f(Ap zdtX(*#bCHm0828@_TzGx(DI9R(ORrknr%gestBEL);&|NxmKa0yCKxWbN_on&45r8 zEC)=eHDu=DUF^lx@#F*VL>oNM&WLeq%p+HVkLIs3pglUJdbh&&J=2%bk1tN!1}-j@ z-igOzyx3+tQ9gJPnEuvmQe@-(x8JH~p&?0MeFt#b zXzmn#;(2Z3ugfoDo8AxkF15>kLDPGaDik`KUVVnS9tI}1r}L+$)zg!JU_e1Y3Rv_k zUNJ1#@{623<22UQz&yf$9DK{}F+(=q$`^MmO7Evb*r+yotIKZDs=oZXvX|a|50_tr zk!SB5EN7bv79i5Ti&pQd_IKqwI)iV4WUaesx6~2yOU1O~Vae_ve5XYqcyyuqg{u{Z z7c~S-GvWQ9(q44uora?3PHUy3J-04uXoOt(97aoA+Z%KrMiR6FkvcqDJ4b-*5m_3m zXDiBE1k(MAgJy%q7FgXuk8PXV>~! zvnGB^2!ER|ey(zAi9Z<7+SHAmJgv0PKA!NGX_d(isvug>{TV(J5j#>770l2r`v`-NXiTq2H1(kM2Wd`}$=p@^Bd|3S zOWYeU6aJanONJw&@qC}T5l_S8a)qUtpM$53c1hPn)!N8scxvqadJ}Jns{T^0Os}d& z@U|oTOoDSVC)IXady=&GZl~p`y9Y-0UNU>hKsMg)*D95%EM+fJ`;kh0$a+MXmJzE> zqMEve#!~;{R@X5#YGwWSL+uFO&cW7T^=^4=i+$id)x=v}&T5(E^@%TH`>R)jleC%q zQJG51jV^z+Yqp}IIBrjW#E^P@$cE4}M)4v-<9oXui0bpPP`pl3qGhi=#1_DQBe4D6 zsoAeGqS~jXX~Jt|*7LTZI^EDHOi)DQIkr^bwSq8NaqVbNzZ4JhQEMY$s?XvYuKa% z)6Dgoe>c7)2zg}2Id?~o4M8Y_kpGY0vMtRH^yf`IZTh5Oa(yVlNW*1mT7v|09879TXW4FP<^K_>q4s9x#EJ@bm`X2J7U{ zE(wI7%1bItBxJ@5w6`4Y{Y9z+!u0v+m@`YlbeWqPajpP&=Y0U4{&JbV9VcS!AM}TJ zZoNd5{Rv}CA;xh<2si{ZFAV|3Y=!9oi;rIaSl_GPcS1s2(f)Gu;xe0O^v$LIQZFhp zbDZq?STTN#=F_kWhI_~|xR14?8O1q2zmL@BN0({jR=p1Hi@HCd9d%OGxw1WPuO#5K zVa)TNEya9?k0jT8X0P9WWF;SeL3kx(M@@aAY0r$_u33nX`K!If-Ee4}PFxDePeGJ1 z3i@|``dRj-lnO%K%xm^Oy!Cx_Sc7BziI)o<+%zhhP*rxhfyX~o?u z;n00!p1=Azznc7ddr^_Su0cOni+SzVEVo!siAnftqRKw(W&O2*v%4ludxQrd(tF>N zu4~NV0B12T-30u%RByccO=DBO?`AlgSi{-G*_J(GCczgAd|jpYU2Uvp_HM*it4+=z z`nqYVPkf<#w!^kA25U9*>d)%W`h0A(PfK5QcID*rP;?Dg-U$i;=`yLlBsbo8pK8LTv0p_880ky$FLRTl; z7Q}DSIThJE;*=y^uj$1!Lef7;e?W_Cc`v8sOlYUqnu*f9JJ!yf=oVFtTet=ob4K%V z78qo-Y(MsaJ|4b+S7}A3*W?9*EbITLllu8@tI#X^BDlkrp$regcwu zu{kr{ulT!zDc$Q}%l-yi780R-?r9T%@MT?`F=%Bt4aI@S=$e2n)iz&5*-Fgg@Um4H zUN){3W=m(Q+$15euBZ=1*M{}A1Jaj{A~lT3zAs`o+b0RV7nu808#g$VF%T8zLf;5U z`44ii0raK-OVn-+n5C2kgkK<_;%CdY?CHM?#B0e_(|kJF)RZjJh=ffl%<*o)Y65)hjDLU1uY@U1JA z=4%DnF9)o&mVHg+CrFI4f6(lxjeB-tjb=Kc?7Qmrt-XP(mN$8usU`}t2B1yM|D4N=@UO~ znz1*kei>Y^6(i{gBm#`_)S$fh9k}N6{EgjE&mB>-&0?mE_=&lkSKG-~1>tTVf0xlB z2Q{L!kUN5$1S|h@)lveq_?JD4i=V~)VmV&z$~iRF#%{JKH__EM{@UX8WUd;bCLqbg zpym_AS;ve>?cIlZtO^TcPJayt4~TAiKExMoE1p~pDIsrB34dK4a0$f~{jOj=(BA=G z85=dGf++2wVdECl1K$(fOz(c;jpR4-3nGj zwS(rd$cEmgER8Sntxn&Zda8=>uJq!sT2$(%kWxF^qUip6{`qst&Far$?(~PdN#E!l zY(B&<*Dwpy!69O)5u!dnuttXAq^ZX*6(Iw=bf^qHs4lt&487;beqiW2kw9vui>ndk z#$h+&pXE;f+q(I9?9PGsoodR?OIGKga#{s=n_q<{;_UYs=d^coL6CEpTyd^t!c^F9 zb?%%nq1{@;%t85lh9~Ang9JhpostfZx{&5W);oE~>y%TDCU5k~9Q>C#cmBzi>6?m} z4dbPG6ClQPYHZABrRbm4z&rj^s+x)+G~>Cgu9ZlhbD-!Swq3}Up8zsBKTDMb?dLjb znd1ci_@9)bXG$Y%F-r~hy+vCOvM&?o&hQ7B!#jjB6=0x?KQ9{SPF#qFhc*uQi?^eb z#(D?kF=46N`iWCG|M*i?w;7*nSRfja_2I!~Kr0aPpn*%Fx?-xW{Xw)xAwyYlMl44F zwSD(aZ5?<;;)_!{Anx$LF3=C}_)kRG4Fs5eclHzRZ|=dh+_?6LSs{W&w-iIC&UXBH#_YmE`pr zyW_25L3H_ed@;KGHp`v(9i-P=j>?W)ozr!VX5vG>QqzKjzZQJ-J*Go#A>_XTfg&uV zP~rU2d-9-Z|2;brycP+!{#Tlla&_0??0bfWZMv8JDX^8E>c_klcZs+j~QzI zdgTD^pAHjhiy^(#!PGUoDfJ?R@j8ikzoDn{f_g?*XE8(3^EvS1gbR!2$%tl>2Lb;6 zny9;B7WO)F+IG&>^0zW(KlUuJ)HGC+z4wHg{0e6$sN5L0l#nKdb2WCG3;VaY6iTIm zUcfi@yjYA4m@}YD5sp6Mg>9);@<`H)zsiG1B5WVoQWs8f>lUM>eXRsvR8`MEU*>v5 zQd6KjD}37Yk!;cz)FA#!9#8z;A3HiDfSNrU-$lQCc||=3aJ(z^H;rvYdF@jU78+E)-cE4pIXU zS$TiaH644L>&*cAbxzgo%~VitvL6laXq~G~{x^)AmahLCL&`FJ62=-Sl{rURJl!jZ zU#E`mQ&ef-9dLdpq|Y)n%=@+lodN}XnNIcRuNKYuwFa(^5UCyBlABP~nWz7w?pJt* zjZbKf3*Hh=Nt+i_Qd;tC^TanCi!=zTq5)Q0w0peH-gL!u{lsx{G+Kt{?30jYb#FXl z{c{C>V1;CTMQ}vBn$C6sRtMV=wNpF?w~p`q?cp$`!pccoT)1aDsEs2BqU+`c8x^Xn z`>iMJ`}?}u5{GitJeXc<-$5o>@XOTEqzX`*e&ciBQ8S-Uc$VA$wog9C|F=lB%|VjM zRv3qOHWY!HuVpK7=uDl`(BiurmJ_*>g5cl~<|$oI*m0_n;-^4i@dLRh0)CWA3g1Y#&l5a1 z7ENW94p4C;LcvaiM>3)D1n!5q)yNG09ndVO^W;C7-9Xq8zpXBilr=%qfr$T=81?Fe zG~Kmftss|WG}ZVpH!|VXQ`M3d+M$@Ac*pQKaVfV2h1gptSJOJIbG~LHm|>X)louGh zKC>i#d*l%s9~g|3g>eWy5@g81ai&dge?-(Z>q$oFlXz`Usk!S`b$mmi)N{ctqrs%S z+KuGhfET-LKx92E)(JhL0>*ivo*YDDxE+6$HlpMr`pJ-RoKULksIksL<1+`Pq!Z+# zf*>dK!?we`+@YuShqCN~)}}vCLsfq+R+WwfY?{&aYB(*vvjNdZCjE;z_UJ{fWj=1W zAr_2MO=wuepeY#}H^HU&7bE<3IL+Cc$Rq`Qq?6nTt8V7MtS6uDl|HrZdAx&{T~Vdh z`m&JXwO00r{Hz$s<&_kiQ2eq1(JkoHFwVa`kh9LXxMI5ns0+GxWpD0#DWd=*)Xy8i zxEjm5mr=DYvrJa2IHZLeJMl;Hz@8WSAaLi^f&RdX& zz!k4SB$NB@o!`@X<|Uz&_z9Ka1c^q;e@IbZgPrl=`nym1 zHk=e2Zb0z&`=sv?sKg5b&y|1JVnpLu2W~_R7E;1WL!S_;z=qRSs!^$L*$ThS(i1C~ zzo~W)Keg7_Dw=qDut2F*<3h~GWeV3*Lnwp>JGHA=NiUa4wXBpTa9i9EeJsVJ7uyWJ zkWD+I6A})26k2QEbVVQpS|<_<;`b<`#BYS*RDLnSgCUQ07re1VO&otPqUEXFs@_k} zP+(*AqMt*1Mku_O*bHfUA*&uuQ-q6GbJ0b?9TYv=0~ zN5yBjJPM;!dTD32Rcpsgi#h4IoGjcxEi6VD53nbWN4?SMI^{{n>><6#jkoR{W0^=z zVt37IaRc3SJ@Cg4G|&dy;@Z9C9^yw_H6;DGh5yPjH~V^zETFsYE!t{MDG9cSLH(uX zK@SYr(am z4BV3rb2;vaLc?sos7A1B;@3A>>RXIU66(5hNCii_&9F1mTqeb`4#yE*+7(+Vlvx8& zu(!J+O;`2tPyAY+=p|rIH>&Q<)T9qkq;G_qsp#Tho!>@#ae%!b#(*S)IDHfn4ctLY})a&rYobE7{C7LXq4We8kBc z8iDhCs{h5pVxiY_@^IIMs#F7t!ZoEddvvUsLUfmlg$Jno62xf5Z_)1Zx&C`AwsXqA z)ZR4_9b;V45NxV2o<$_gbaHj612pM1p_QB9yMs1NH#}avkL%@T;G)udAY04PM|$#H zfbwLA?PdhxyV?6(5t1Y3q@k>k#|Mi)0?h+ly_vy-0)OD!s!w;8uCbLHXPjqmlwEn|<=*S4qX}D+5}N#MEIdRlo{! zAeIhq+&QR_K0J%dw9rfdPeC#N!xcp=!Bq?QQOQ~Vm#x_9llmO|Y93x5rdPYT`uDkt}y$N`LLf=f+#SkyY zkZo_;xFK$WKVJ7ahLDXL$S-)bf%1%jfKN(07Q=Nkk9ZMGs`z(-kmlSO}- zNLk!8B!`5{R{SlRDMVkK_Uutr2cCooEli^h)JiLWzl5DPv0=L4Pl;c1y-)_e4^ka8 z&$!~tQ@b8`kE3_j`F#L3+P~m5t>Rd#ahlZ7p7I}4N=^7 zPw9e>I*|RbvQ`+it0tf9v)ifG17g(0Hy<}GJVk+R(Om{*POGAU2I(oTD=KtPY6RJlX-{V0XX0dx#g_MGPCj zQ_?4o5KmH=UJa+jHoKm!kbv7;2Y*z2Czf*Kk;*$611Vdw-?VpVxN+)T?uUSku^+kj zjzMcd;ZvX8K-xx3gSWVyTZrWOl0`!%Qmzn<(nU9fi(hQmeVnH&lpVq_b9O;QYt|Te zH(8&KXWeKR?`Al8vHh=3dB+1dh*Q4Vs`knmZOAT zAoI{g%IAcacGmpLu=*Q9|L#_MH_okT(osiewzG3*;d%j9V#cjTazZ}4?<&5#q5FjL z0Z~$$ zVac55UqL{NGeB}fgDjU)`hY)XLlp$RX%rry@QVgLIPxu^dO;vI&l+-ff$9f;M(l$$ z-9gGj7lE|e%gsa)i%#B7mBz-cJq(yOCRrVAAc#+JXM#WC)PI{FC^nH^48WnTN@%{7 zxPmpQIDjNX`t$wn#Jf0>5KEn;v#-ds z<4Uh`-UT~^M_O9ZK%MkgU~#4=IZ$aLtrBu5k)^&>C$phohiHFMOYNpvR!Hv(^{8Q6 z_S#r^;|XE~mx^M!oC7IY#KfdC=-82yp8)2n#!pisOF+>U$qhjXbRN{ot_w4%OxK1W zvCYm@@}!1XerJX`>|N^*9@B#wTS+l0Rh$9!I+4m=*`$R>i%q!ED7uSMKP{txJbO`rQlV}BNrnSTFOH z3kc98ZxE?7k#z`@NG1{=DBi*CMH%?e+U66f#UQv4k@e&ridXVz$KPd1rwKJaZ-^1=a|=m)s@o?|FmMC?1O(KYApr#i+DPe3VKgwxej6(kK3sg0o9SlYk?m#W00PA! z&1-mo+?l}h`Z&0P6a0E@mF+q0LrLb4B zwB&AL7PT2gM_D+BqZcYWK&<3>f_unu{MiHjqBrE7{cCUMO_o^Z;ktzzD3u;P7Q5#4 zXDFBd(M?g{#4L&~oqef8OI|2kOJ%ytp9e_mZy7;Iegf4zh|qPu6kNUV7B!@paL-QS z(B7{sVpM_>W}KQW53gAR%z!A_s=+B#-FejJHPi$PtTkAsNn_u7^1 z#Ln#E8oBAB8j#|X+}as=E(84=BL_}~h`}RDFSznmAjNBubx(VKz?VM@nNx$5bS|e9 z^nwkbDP&aJNzkKXdqUz5j=2#)|P(LE3@QY{njH{?Y5JjAsWuhkC?0Ps z;d}8A7v*N10&=ZtHHr7Knt;JdmgH)Hy>=selb&ZmD9V+DdgUpED)rjN3Si2Js~uLelx+K zWlUtk{0%;Yijy^RwuZ5TW~s7RIx6&!R6gIfQ0n>8aH9ZWpr)F!pl(yTw9`?_f()HM z->l`%#I6Eg_*dksX-R*nWET8=iDCqF4!T4>rGjQ69T485N+`ayxE`25ycgSo8h=o3 zoA?hMggVPK6VmScy<}P8_r&Xj8h0fiLy&lH@j7s{Pk?Rjh;$?Qg6eGw7A3Nm4TPNK z0EOxL0?oxhpBn8RQHd{hwHOR7Nh^hmXfG;{!tM^AAl#Ft0)SRieZdpFfZLt1uk}BG zp9rB?7G@Bxj3iJ5tdfGH>^xmMXzNAXKqL!PFbMDKgs&8A%>-8te^O0r6!+)Qu^bBS zlCYn`Dq`HTLxb4vasZ!XS%pgw9s(#w#P0C~+22(rDVdmpYUU(5=xAM$Jp)?uqhe>O zgu0+dKe6=0FJ$lCPU7y0?at^1JK)GOKPn|i!GZP;mOC0LZxddpXchsIh_0V7k`icU zV&DcIlXsJgLRq26EHfLP7d}Gl%iV=?_5!T#?gH_#&?&sU=0}!i0}jM>xImkHq_sHq zaJ7g8u^LhK!NhTSDG&IS7g866w-)b0N~KU~EN~9HKd;@!Lp2`W1w3>^g!lnB&E4u4 zdGfiI{D^oZSIv!Bhl8GmhZxN2yJtFJkD5G+w-eL2AxJ@ZR=r@FU@!g)DvQA*2@zRt z=yWm9&_PoVTRD^PXqz;SyV+g$82+?)KN6hw?U10LDom_L^@ru0$b+*=n8C@?s!*1& zn1U*T8x%9@j3<9AjVh4Ml|v1RCm^jARJYd)06=cE&Lms2c;G%r*4;>^2U)ppbgZ7j zDj8_NJrWkfCc(@1f`QiUZVt#t4Ur%*0WC*=Yh&ewM~aQ8Mik%Q0U|E6E=(n&8;8#O z-o^C_C*62%^1~^LYST!jkGx*!N{uY>1-E7+5Tz|_olwBxj+{!ISSY8m=!6YSN!lT5uK~krCScC(3wfbQIclw{#3M5GSF}xp`EF`&ObTjgF zsRi_*IEo-JgK-cdSJ8Lx1!I|_BP}A8_dvZ-=sxMu-~ecuADzdK-Y_UiZpLQ}grC4k zE@6l{1J{R`ZWwfCo^DA&BsqN``y?*ys-PcYGj@1BS(G;LpIA_Xa9~(Obq0e4J7q7c zgN{@}1rm*#1^^dp2AU9^(7}xRp<+HYiNdIoP9l5s_+!x&P=(!tt1v(?bX=;q5$*2H z4kMkZL+|gezCFQ9e(h{x1~vDYGpm(g#reE9l=* z5Lui)06lh7KLA32{J?|CsLMiUw@FuguvqDip|y6f+&~A01~GtG2GOkDJ)V<-esTii zTLW4*(D!@EB|FEN*cl6`5jhSwBB16@nD4xPt+((J7g9Bf7{5!Cke;sC84}fi28PVz zLJ11U`|2o|4q@*9DDIkX_ybaAfj`X7m%!jPWU(jkCk|R%nmGAM)d;AAi=jF=0Qbcf zT7yZ3&ciovg~}4&23!~9is}Nm`SuBHPXUIHODi5Im)3KcG(x?dXsAzq7_@47$PllF zpMcSwyC4w7io`3pn?V5A~Dz7J7)Y%EDOQxgX-pt1_3J+-*@kqktm@s2|4L2 zj{{Q|OdBYGk!UpDK|IP$01s60z5*njb#``T#5{ey89A@*nIyy|9MzuUIH|j=}8x6Jj+G0NjHY5ee#C(JWLBbG%lA z5S@wioCb3|H;&g%f*qJ_*h3mDX@GswRx*N{}q-}R@0z}q(V7_l>`7}6* zbD>#5(}x%uP|(MZ`6#8oSjfExitE-A-R(6qk6v^t9^F}cco0KHK}E3*SK=mk21;iX z-cfuEDvI48U0Q}kNtZs@seNj6jOm8-|Sm)Sg||qz&AWrU!WTGTq4GRyN99 zFdgd$SttjT41=FQ6Ijq28OQTWKwmH7T2TolcFlK8q#eQpibjdztXK;wL7azjHiX(5 zAi=oK7HqUIkCTU+YGt|rK9*!$ypX&Lj2ZxDIId&*pQ{kMCvglg8idPYI@0t^8|dtn z`8b}?8Oee~^^Rj$bxIQ02RKltr8PCht#>0brL#M=tw+aDl#mk3QXEzI2oP<{&~G&# zMC=_UQU@xeV?s323Qa!MtA&pgYfvRciX>qqWR1WsNj&HVyC#-u*aL1m-fOs|eR1dm z&*=SjDMH1X6z3u^lnq3huF9$B6@yW2G}jENj0Sit`$;DhQTo?@6ldQkR5}yN?3(jU zqz2qH@W~rcJ<||~&+`o0r6>1fKW*jC%mFld=Ls&xF+K1B;z_C!=;-fSnOK-faV{AE zRpnE_Xw9zz1=J#4C|RcO(&hSYe7*;cUx*~JAwcUl3Kx)!B9Q_QQyb<{ypOn=0*YiS zaMKEy1KBr#@%Abf3Uu&LnXRm}Ypw?UyO88I=_M}~-rk9bjrIb`(2eMbxEB35pw8p% zF0NH6gK5{?X99L&(C(Z^Gn?I5kUMLg0yWuN7xl7390S^YXpF+75EypN4@{&JV8A?i z%#r!`bUiSO*8*$?-{v%A3|PLRLpu*gQWD#+GsE08H(l=rcd<9XO=v%`ibtY=m9Dr1 z?ye!a$~{vO)A$pSln|=I7fi=z{Lw10yEu!;sS!j`x@kIS`83qbe?-dDEmdHkW**4` z&jdmAcETG!b%)cTVNc?Ii_lk^RA-t3FSeqFd0Rv>eetg1E8Jc;j_M{v2+;iby znk54@(m#b%Dv8D}CnPfHpe=0xt_ZwD3_47|%$$M@#Rrej6w7`2tCkmXJUlLny;C2TiP22{llf?Ya31$3Ub^uJuq&ud{Jii+}11fgJj{lkuwT7ZubI`TJW&16p=>V%k1Es9MDTVOXW$bN7 z%}CCnftiS5jGwNT)hClGY6zzh(7_iE)B{z?D28!~B2hPw)c5rTC;tp6?SXmrWS|c-%&0x^DyD5zL z7Z`Yk1{k=5z14GE!&8J>yXoORJO=!>2tXqh|Ib*7AZfwpmX6QKAiRu#dYa^voDoAd;m zq1nicLmGncoru9}VBftll|0u4z|}IS_zYn`6$WzKqz~vp@W_l~&9nOeM6(JIvHL@h ztzLemWH*>GO`_!-VLZjKT4w_ybQNYS0#O!$VL*EN_QIG->;W9uR0Sg!V7J#h+wRH% zog>!OsmxI+1fob!MTbrUM5q?2zbJ2hP)j>=S zxXWW>er~TyW6y#JH`=?+5FVL^EO1B5N9?EL2)}W5j0hm%^bx)YY=Jvw_-p@@&-`hz zI-+ZP+dXxJahzco_z|O7F<7$Yk?>E(f-}_{QfSaPqJ`%(<03mFr zOH>i0nqf7+M*BqMBs2FP-hF4xCR`C+z*WC z)Ou(e!Yd6Nz65zKN9GEh@xlNlpVZ%}@~jRV-~(O3R3B*tIKk-vEV&*FaMT5kp#sFE z@d4tzZk_Q2`b|%;LsaR5!;>IKm`e(wb9o$K#6P^BKFhl33>{cE6PywHCve6FZDjDADa5tR z31>&i_24RH>^Y)?sRn5Z>|d1}g8;PGuT*!HO5-*MBXf?oX*g${2XM(gZ~jZy_Fff_ zWJ9Vc!mm+FGgbc^m707LomT+e6D%mMUT2qpJ14*AGs-@QwKtWh5_Be15wY>F0p+uQ z8FnY`Xrt=m!CMrb-ClKS6Q%IamD>>Zq3vpK0j%Svp^F}QPx=|IM7%WV{&-dFHskIE z3LI!}?d&5H{~p5VW<=lKb1-U5O6ep7~|O%)tp zZYw6;H3BX(SOI@~ZXz;zFAp&o>+0*VsRpsTV+ZLja2zLt>}Z}5fPGCq7Tj-y2#q&1 zx50kDy3r+DxFZ@wCPaG^kgaS3A6Kn5y$+!>^qFSrDt&}~#MQ!=;9+6Yw*0|7$UQ#I z8t&Ht4~op+f;$T|<53rHc{&6*Ok)(Z>rnNgb8^;?q0)F$XX@`E!$uW9fzG#(KTq59 zUo?-Z{eam0*ACve3NRO*WF7|A_e=+#S9X@LLoJqO%&oVmF<6O+o4}q}jR-smkv$)E zbYtuulSh!uafc0d`y5?ScJK^{9J@2sQdFK@jc4@6$y^Yj&RaE85oL$rZ_=P|lH>0~ zaymErder^?fgi0E#0igs8aq|XHb}rhe+e1fw3%27On6{FV9>ADyy&CG)IL5WoEon4 z5_zp1qN^Q*-`LaBzkds~E)CY0uvclk(iaYR^YVMo+s3GBHL%yF?gOv0Ysosz3%s2a zJp2?<^#??3WC|j7z7-NjFJk&38-T;>6h!PUBq;4dC#(YVza|Mc)0F6Br*2n^ru|k? zg9S=ob`$Q!t4+UEZ51ePhlAAdVsJ&x4}$b>1O$t=>4s;wSlxv=Qj;7bLRP-)KpX8C z#wtqQ^cp_4mCzv_+VKUpoIr=3#C(~5mn~mpdu#2WH2>6{d>Q}y z(}Ea_bD`_(dT)k#8|jXU`qGlyQM7Wgt-+7%rVRbv9HPEpX#8>ajS6jBjh2#I?VR8+ z74PgYhu^}K=0&@+>3WW(`=GTA8hWjz#pWL3}>&s`8B3^VU^_6XNyaGjkz*@7+(4mbS>cY z0?iS(1(2-lf3qpMYO5{#)86a)vD90MSLWA&KE&)M*4btN#^@FcJK}3w z&y)2XD?`KC`;H~&Z>!qu1ATa%?`&i{U9lN0O7=aXhDf_{#-$p*+!T@Sm0{Drz{*R6 zUob`|9Ok@GHP-&f{$e0rxUE6{yMKVJ+KARYZF#{)b%;_Y)9n$6z14;q|X8^#zyS{R7kuml{C<*~qnR{^Q-MKnJFv zjWWDd*Z;;dZRUq}|I9Pp$2J#6~)sr_CrapO4pwuzW22t4) z+XN!tV3{EIvgZ$K`;~(V5NZSPH0S>w&Ojv&gjS6#|CZ1~$92R{ zRYP$g6IM=KCXa`GcSi9bihR41yUC06-*ZRzL@CpM0x)k5F+UD7|FSe*r`7604aB-X z%)0%)hU*=Me>ia~Ec|Ncb03rhux4V1%#5nrD^hnXNw1+!oG7emGb4m=tU=#)e(&IW z(t~bJ7Mud94ySGOs6F4Wu?gbQ6z0+6Y7f%6$FSt$h~55T>H%|L$GF;lv6m-5K$?Xw zU*qiyspohs^|!<;+F7pS1ikT2eji68mCe6>o}j_MHF^vs3h@A372d6kb`nfG-X?}_ zg3Q+iO0FB~se`2n^|FKAxBk^A2N|EcNhh_6^Pn#v?fwOQ^`X0v^w(E-lfxWd4rT>N z%rJ!vzF~HKA#4B2EN5tCCS;f_yYT?cNjFK>L(l}K z2HgsthyEPg+HcM8^r5R7Ux$nkIB$gM8wp1>AJo_h z(w{xh(m78cv}1)ca|Kz=O;ONSo3tQFi-U%8IJu;iKr5yYfq{9gj53JAhhP30ZVM^h z0#dp?r5{^^DR6Y$e~zM5x=QfIue6vqS80K22o?D0;7&5AIIzV&=V}DzZ?o9^tQGCx zy%(ij;1Mj@>g~A^^+Qqx`_l;%a*(4+;jJ?+C{Yj|lu3S90;;vuJ<=d?IFO6iLGCQE1Jd zX}hdkzHBO24^sAFHA@{K->U^BcYfS9N`J&RaUXZ-wdI#~i6K$-iz8UMhy8m@ z3_>r;pwLtKVQ30_UwK?@XQ^>#EsMmNyN``Xw}G(p2*yrR?c{1la4$KwNFXwC@0tCR zsg?*UC>T}{M!kX7;iDpgKf*ykPIIg0AKmKw$oVk8VC|84QitXppp_i)D7SqN-buq^ zUT=F~@Mr~8Zw|1PWU-k>%E1{Z0`|j^bN6-KfyQu998)XjZM-oX<0{$L_OOCxt-?=( zT<7Bj%chIozV(P_=qzXqhM9V0@49f^JV{o;^N4FRAs0FJfKqt1B`9Uf4D&*6|1Gfc zD1_AB3#Rf7|4YzU@dfZ#jth+ ztv61BSc;za9oPDoM;lF{aMJ@jKDkx=CC^0vyNmI*z;@vawlnDrhHRG^LSV>zH4qXg zs05yegG$wCw387tVp^je#sCjAQ|t%H4yxr5&vRqLp_sLx+F~DUkqq3rx*HA~i=yX7 zH08GM=vT$&s88ELiOK}>HCL)naFNWk*`hF0`Pf<`)DnWTVjj*vg~e{VT;>aX!ho%? z8f*Edku=OIlmKB_eICo9!H`+7FR^uV;+p1_(-0EF=V@n5=Wxc}#&kk=ysIta`kMMt z&0m+3ZZ`x-ngU6jYq}6gYWDzdXruG{NE$Vudn)Z3fz5>pE3o+cdxk3y`>oOs=5AFt z9A5#yI@9j9jo(5_mcmNjcFi}|^6#$xy+2wxM=QLrWVhiGf_F5=shwj8Grhe`j z$Zd79xXE*tTGW;s|DLtmp=CqUK)~)2H=y z%Rl)!>(9a>4b9v2)!$!w!(p2bYm77YXsGi;O;VXUq^*Ms+R_I=*O{tjT?~gjcK88| z#s?O9er}L*h8HM3Rb58OB!rTY1~Mj~W4TDDJ@=wDgo+FEs0d}P{vrkBslX^W46i<{ zROin8v85~+^1OC9j~BY4zjoRm66WM|J0_u)^!F zYG3_&8q(E)wF{KLXy6;J^oB5Psso$$vjC&|BNHYMaInw%LguZhaAj^=4^$7N?}DXI z1L6Ft_l1YwLcs4?IbUa(0F3o*gQQ*!NqwP6X8!-M_vTSeUF-jF&{Atr(_SrDMN(@O zt4vl=Kq2)~K|n!80SOQk6`4^c0h6Fsu?4{qR3;G+5ko)-VN9^7u@0aC5)4C7ln_D) zN(M3D z>xqH=(hJ;{ad$oD?j4xWf-nD>&~kZZf)aLK=@<=a(j4jyL!CkjxGm~uSZ*>L`@SYE zoA!uO%Bigxclt136Y2+edIIB*+!9r%v@iApm4t1l!=f%jM9uAtu)>U_8pFX)okaS} zmTg-M7Zd$Z*+0S_{TT7+9ks8vDZ%{`Q2f=oc`iey0zv!;8vFoc80|6NMpoKgGv|;& zGx+K$kOv7p+cuN6;F=Z7EGI>_SEH~m4vrhOW;q9({+*cm8>+dptD<4;`oK|dmMEBy z2dgC}H!%ghrcXbdV8Z1gN=suh*N#`#g%OvV+FDLLc6F+1N{B#;2jaPjRkClI|`BJZl|_jcnQG`RDV+ zFUX_!P|iq})A+=;+Lzmy9^Bh&pq?Wz+a@RkOolt=@t?cmqIn}nu#!DOIGfH!9By%- ze8Iqcr&@mG9K=BnteTy|wN4G4d7_VQdk0+aKK#>11A!{OTGXy{zrZWuD#^@blAk#T zoRMcX?U%%t@zNNkW=J?A)>kg5U$-Xewj>N4RRToWtG;_-lCS-oXUm^=;(*o0suyJj zzx-5tu6YL7yaV}XKb#%-(M?y<)GF_+tDsFs8mDpdL^h3#*viD_QR!<4>ckCI8>0Rc z>lp2Z^?D4pa3=?BjPz$#NrKm(8l8~}=gl!26||OEw%X1Z$h~mFzB*{LGc@`T<=yC@ z1->gW9#%~ulD&bm^{ydp?IcUFI{D8Mhb+BcZFpZY^1kSt_{8c1xVkQ&+&b&c?!ingCoCSgRmI9=7Vsr)#&eCJaWM<2= zo8BY+23Gs#5a@oi^@Pqfv&4$rr>h!SXo4nBYNXF>vTm_6{k72f{)ZDtpYk!aSjtC7 zw6SE3y|b3LO@2i?Z(S&O!#o{n zYR27qM=f_7`Va^0oYsUUG}Ql`7M7yi=tM_ClLK=tlOy<{daG?&^y9pYQ$vI<^9E<@ zst?a*Jb=S0?t8d^S+)(WYbC&-c3*VLFP~&lxVT2)Bf2B35^L$|(Akvf21vos$dngd zoC^etE#+l`c)t6gmpc)yX0+#v<9J#lH+8yP(I!~Qu~id^!6a{W$bgMqSa)2%mI(r` z#tM-0o?<}getj!eYq;P#e1sO zKtsH))wa)t+wJ|-JOU13kR!cOnpq1#APWcdK?}of&{&2XU6gBZxLI&He!Y@BYLhz3 zq{6ca6#+qK&dgaCGZqCcs9?_FN6a#ws;fEjD*+L3#}RSHY^re*x$lq?r=+HFrpYhC zT^$0gmJF?KxiJ(Z$!=-&yfUT6^&RGIB&0O0s+cNE(N^XNS2WZ{@V`s2;p^)K^kMc* zDh9*f;26NEm`9u0?>u|x6LIVTAVK<6QRXmbowr;+W2y*_=&XR2x~k^;Ed%3^6P z5i~?ZmSE~Y`A>$OL6cZrEtuN<{a%-CY(n^#o1*R>n5wC~v?I-bqX_^je=Nx+8aePV zrZR)7*1}=NKu~n}f++!!Ffug;ruPBydb;O%Et$faR^iJjQd?j~(05>*p{MB>eSHx9 z-8KK^^J4I9?EelmZg&!$8=V3q!)*-W5{xEQ<;&?9MMAu5_!&^^;VIx)#mlrarrP&S zfz}P9t?%OZ^;@cM%`_>?$kw>c{(!n{>4ftRhqrulyC8ZevE#e!pWqVw2ri=*=n?cB z80VX7aQ^hZh$p!CnC@2@#_<2EBEd+|D|?h_4iB#gNPbN?)PfGZVMlB)=dCd-{D3+g zlm>&weeh2+AE-anHqTlERV{-vo`DAbHjGMQKSY`gZ7@LEBbf?DiDuXlG}w^=hi9ms zj{ac_u7x8liZu+!5|pdpO&t)Ej2Q?D(<AT`>6h-<($|-9;5*W>wvW zD@z{SnYZ8KO3`0}9Wl@ew*cV!&xdKaao{l{LS6p;ok5Wv+>{DwAP4KAIO6cQh%NZ9 zXMsZM0qry!AJ#9o%&m+<>_1X@vr`xeFxWqz2&(iEDQ1A%VFSKzTd*jta>++3hi^sI zfUw)VKwOmlQf>gVqoiui{hX1vHovVyo~j!^iS+Tg|F-%XALGIk;BM1MM&MSkS$S^! z-)nrxhDhVjVi$WuzJlJR#(9Xc^2zSC>bv0Zm8Ub+86=W#9D3UhTfu6O7qeSS!SSi_ zfA_Y9PUVji5 zP}+VmukzK>T|4V^t*;)xy5f`_`Okybd;)d_7dVz$lK*|}mG(EkB|n(4=^OEKPoeR4 zSJP|9&wum74=xb2hnQ$t&R8AK?p__F4tlCo#SwhSuPvLOl*>GoG&UEqUiq{NTvBp* zS(dvy3VfK5z6;fGjnz|v@}12}E(R}A2e4wnU1?6>`U-8-tQE7tZE@i2%KtAO+2$MS zf0=n5P|O`E3^ag zS4fTl;qHRwLX_{mfCsz4Y+pwjZ!PE?EgQW!1C{o})6%cO&BFyI+vE{;)ZMkTDQk`!83`D**l zWX*zow6;n0cnzv_UO)=q;5!XFV}Ba-Vr=P6KL9>@vgR?k8phE?8h|$O(DL|m4HFRl zVLitbd`jee{%)|Q`{5#&cyN8(=7`(i%C|Z3gQhL-3%*CCflE}rMpa#pAaPHCZyBWh z^z_cx;HtO5GRBtaC?{}_iZ;sYc{LW?FEIY6q1>@GuditVYd&fkTl4CgW>}c2MD;J= zt90N#2yna1e!ik&2FhdXPefPJl?SFzQKdTrN`NRR1Eq#rgb=C+{_~fpv=vXOz`6~7 z$ePQaR>15$EgD<%&YF%DDBo|;s)`wUw^2sBt_A_?hhNn^Y4jA_hdKYAE%GEn24&Gj z7<;m24G%o|gDX~aS9>MODeVA=cvR*P9e+bBp#WTM13cyzDQxM#S;0tVn4{7d1<4c% zcQX|lW)V6l->bH;f;8?mtFIMNEkXr#qXXK%fU#zJgXdrq4cwli)g{+Fsc|UZ8Wp@G zwLL3LsfC(eBZk);%SN@`6zNOyx(fPDsf_JTqgP62lfwc<+3s=(2k{g+0#YTkPQ?(B z?4erUKceM_yiG6TxagHA-))IDqPv9~P^G#7O|VDC*D;ken_TIBG9{=Wg3oM)n$$6J zPCrH4>8x!3Q_K@%Q6lW=wmC9z6WO^wI7ny%(>-%K6j$A>-0AyN=E@+s9K@2cqz~Pf zCTj$mZC4jszXvYP-WT&g1a82f^FaIX4;U>TKUN0i?DMcRN``58!UmgS(TV z66*RYWyJT^N$039x|mV*JquWL@W%$@BNR5DN-w+Alw^OCK~ozj<4=B@ui7~>Bf?3! zM;rCzN%{PjCt1YXqbGtkEB6BCg4m=(ZybuD<4#r>gEF;`GG6Ai&I`xInv=|E6&N>E z!>kQS-_CJTlKapli$zJmEpE3JQqwBh_b}AmN`_X+Qc?O%;h%J;p-fL zol1NeAdbEu+d3h^33+IJ{iUW@wCuWGeZQa>uNo)}BaURyuyGrP7AG0Vq?`fD3;cSO zwY(KNqvCxXv02%(tZ8LPZx-MkdmG%?G;Cydq^iOtP(5xZ7Gbl{n;c1B7(eN3p8zDDoV<* zpj4cRIX-4hCs~H4A$0u7N}soX7KX*OWK_C`wPZy+Z!A$~E8?9<;$sR%HPrF)Jc~Y+ z+%Z6|X^H5>C*-78$dM`Wg?fzl_cP)xQ=^JDp$iyHwNDF=bd5f{X9vq>3K`!YoA>@c z;;7_l#2=UTU#c^1R*d?VAiR=WC_c(xPje4WjSy@?dy^q3sjHl8lH`GM3i+016g z{8#-oT0jV!%fD3l);WB303O^;?HfR^yVMkdf9B-#?tEcb>|Ld;o(Q_^ml@eZds*h z7kBhYb$_l9I;9SCpy<8(1D%QEHm^P86R=SHg(iM78_MT{pnL3~?3gOzj?742KXAM* zpR6oiComwiu7ESEnsU#wfDo*aU@V-hmsuyhT_irjlwBM?)K}#p61SDl|Nd7lXKbM{ zpH90*vN~XuL)eIsAHvY;f2mClGLGw4FpTR%9~%B~*dzerPS#fV@BXX0pO(+Jq*dfh zl`?tA*3%wyQjskl&33^`U9nN|yP_>QUXo{0k{?97!QmB!71N*gl(E#*DISJu-n${w z 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 Date: Wed, 5 Feb 2025 12:20:23 +0900 Subject: [PATCH 2/4] docs/ feistelcipher.md --- content/Basic Cryptography/Feistel cipher.md | 23 ++++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/content/Basic Cryptography/Feistel cipher.md b/content/Basic Cryptography/Feistel cipher.md index 146408d..0016b93 100644 --- a/content/Basic Cryptography/Feistel cipher.md +++ b/content/Basic Cryptography/Feistel cipher.md @@ -18,13 +18,6 @@ A well-known example of a Feistel Cipher is [[DES]] (Data Encryption Standard). The left side represents the encryption process, while the right side shows the decryption process. -먼저 암호화 과정을 살펴보겠다. -암호화 과정에서 입력으로 들어오는 평문 $p = (L_0 \parallel R_0)$는 $L_0$와 $R_0$로 나뉘어진다. -함수 $F$는 키 $k$와 $R_0$을 입력으로 받는다. -$L_0$은 위에서 언급한 함수 $F(k, R_0)$와 XOR되어 암호문의 왼쪽 절반인 $L_1$이 된다. $R_0$는 그대로 암호문의 오른쪽 절반인 $R_1$이 된다. - -이러한 암호화 과정을 수식으로 나타내면 다음과 같다: - #### Encryption Process In the encryption process, the plaintext input $p = (L_0 \parallel R_0)$ is divided into $L_0$​ and $R_0$​. A function $F$ takes the key $k$ and $R_0$​ as its input. Then, $L_0$​ is XORed with the output of $F(k, R_0)$, producing the left half of the ciphertext $L_1$. Meanwhile, $R_0$​ remains unchanged and becomes the right half of the ciphertext $R_1$​. @@ -67,10 +60,14 @@ To address this issue, Feistel Cipher structures are designed with multiple roun ### 다중 라운드 페이스텔 구조 ![[Feistel_cipher(2).png]] -위의 그림은 라운드가 한 번이 아닌 페이스텔 구조를 나타낸 것이다. +The diagram above illustrates a Feistel structure with multiple rounds, as opposed to a single round. + +#### Encryption Process -1라운드 페이스텔 구조와는 다르게, 다중 라운드 페이스텔 구조의 암호화 과정에서는 첫 번째 라운드의 오른쪽 절반인 $R_0$가 그대로 $R_1$이 되는 것이 아니라 출력의 왼쪽 절반인 $L_1$이 된다. 또한, 1라운드 페이스텔 구조에서 XOR 연산이 이루어졌던 계산값이 $L_1$이 아닌 $R_1$이 된다. 즉, 1라운드 페이스텔 구조의 좌우 결과가 뒤바뀌는 것이다. -두 번째 라운드에서는 $L_1$이 암호화 과정을 거치기 때문에 결과적으로 평문 $L_0$과 $R_0$이 모두 암호화 과정을 거친다. +Unlike the single-round Feistel structure, in a multi-round Feistel Cipher, the right half of the plaintext ($R_0$) does not directly become the right half of the ciphertext ($R_1$). Instead, it becomes the left half of the output ($L_1$). Additionally, the XOR computation that previously resulted in $L_1$ in the single-round structure now determines $R_1$. In other words, the outputs of the left and right halves are swapped after each round. +In the second round, $L_1$ undergoes further encryption, ensuring that both $L_0$ and $R_0$ are processed through the encryption rounds. + +The encryption process can be expressed as follows: $$L_1 = R_0$$ $$ R_1 = L_0 \oplus F(k_1, R_0) @@ -82,7 +79,9 @@ $$ R_2 = R_1 $$ -복호화 과정 또한 암호화 과정과 동일하여 입력되는 키의 순서만 역으로 바뀐다. +#### Decryption Process + +The decryption process mirrors the encryption process, with the only difference being the reverse order of the keys used during the computation. $$ L'_1 = R'_0 = R_2 = R_1 $$ @@ -103,5 +102,5 @@ R'_2 = R'_1 = R_0 $$ > [!Note] -> 페이스텔 구조 2라운드는 비페이스텔 구조 1라운드와 같은 안전성을 갖는다. 따라서 상대적으로 더 많은 라운드 수가 필요하다. +> A Feistel Cipher with two rounds provides the same level of security as a single round of a Non-Feistel Cipher. Therefore, Feistel Ciphers generally require a greater number of rounds to achieve comparable security. From 22f1dfba3051af3007eca6459077bfaae889523f Mon Sep 17 00:00:00 2001 From: hwam Date: Wed, 5 Feb 2025 12:22:51 +0900 Subject: [PATCH 3/4] docs/ feistelcipher.md --- content/Basic Cryptography/Feistel cipher.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/Basic Cryptography/Feistel cipher.md b/content/Basic Cryptography/Feistel cipher.md index 0016b93..00a51bf 100644 --- a/content/Basic Cryptography/Feistel cipher.md +++ b/content/Basic Cryptography/Feistel cipher.md @@ -58,7 +58,7 @@ Analyzing the 1-round Feistel Cipher reveals a critical drawback: the right half To address this issue, Feistel Cipher structures are designed with multiple rounds. In a multi-round Feistel Cipher, the left and right halves are swapped at the end of each round, effectively ensuring that all parts of the plaintext are processed. However, this design requires more rounds compared to Non-Feistel Ciphers to achieve the same level of security. -### 다중 라운드 페이스텔 구조 +### Multi-Round Feistel Structure ![[Feistel_cipher(2).png]] The diagram above illustrates a Feistel structure with multiple rounds, as opposed to a single round. From 4f6af32b18c5a93b849e6dcbd176c7cbd80f1552 Mon Sep 17 00:00:00 2001 From: abell1689neo Date: Sat, 1 Mar 2025 01:19:19 +0900 Subject: [PATCH 4/4] final --- .../Chinese Remainder Theorem.md | 138 ++++++++++++++++++ content/Basic Algebra/Ring Homomorphism.md | 34 ++++- .../Garbled Circuit.md | 90 ++++++++++++ .../Secure Multiparty Computation.md | 92 +++++++++++- 4 files changed, 352 insertions(+), 2 deletions(-) create mode 100644 content/Basic Algebra/Chinese Remainder Theorem.md create mode 100644 content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Garbled Circuit.md diff --git a/content/Basic Algebra/Chinese Remainder Theorem.md b/content/Basic Algebra/Chinese Remainder Theorem.md new file mode 100644 index 0000000..8fa273f --- /dev/null +++ b/content/Basic Algebra/Chinese Remainder Theorem.md @@ -0,0 +1,138 @@ +## Intro +Chinese remainder theorem states that if one knows remainders of the Euclidean division of an integer n by several integers which are pairwise coprime, one can uniquely determine the remainder of the division of n. + + >Simple example is as follows. + >If one knows that the remainder of n divided by 3 is 2 ($n \equiv 2 \pmod{3}$), and that remainder divided by 7 is 2 ($n \equiv 2\pmod{7}$), one can determine that remainder of n divided by $105(=3*5*7)$ has a unique value, 23. + +## Theorem +>If the integers \(m_1, m_2, \dots, m_n\) are pairwise coprime, then the following system of simultaneous congruences: +\[ + x\equiv + \begin{cases} + a_1 \pmod{m_1} \\ + a_2 \pmod{m_2} \\ + a_3 \pmod{m_3} \\ + \vdots \\ + a_n \pmod{m_n} + \end{cases} +\] + has a unique solution modulo + \[ + M=\prod_{i=1}^{n} m_i=m_1 m_2 \cdots m_n. + \] + +Such formula could be otherwise expressed as written in section "Ring Isomorphism" below, according to ring isomorphism.(definition can be checked from [[Ring Homorphism]].) + +## Computation +Though its existence can be checked using CRT, derivation of value $x$ using pure computation requires long time. + +### 1. Systematic Search +Systematic Search is the simplest method available to find the solution, which checks every possible value for $x$. +It suffices to check all the possible values from 0 to $N$, computing the remainder of the Euclidean division of $x$ by each $n_i$. + +Although such method is very simple, it is very inefficient. This algorithm is an exponential time algorithm, as the size of the input is the number of digits of $N$, and the average number of operation is of the order of $N$. + +### 2. Search by Sieving +Searching of the solution can be made faster by using "sieving" algorithm. + +**1. Concept** +Given the system of congruences: + +\[ +x \equiv a_1 \pmod{n_1} +\] + +\[ +x \equiv a_2 \pmod{n_2} +\] + +\[ +\vdots +\] + +\[ +x \equiv a_k \pmod{n_k} +\] + +the **sieving method** finds the solution by iteratively filtering values that satisfy each congruence. + + +**2. Step-by-Step Process** +1. **Generate the sequence from the first congruence** + - The numbers satisfying \( x \equiv a_1 \pmod{n_1} \) form an arithmetic sequence: + \[ + a_1, a_1 + n_1, a_1 + 2n_1, \dots + \] + +2. **Filter by the second modulus \( n_2 \)** + - Test values from the sequence modulo \( n_2 \) until finding the first \( x_2 \) such that: + \[ + x_2 \equiv a_2 \pmod{n_2} + \] + - Once found, construct a new sequence: + \[ + x_2, x_2 + n_1 n_2, x_2 + 2 n_1 n_2, \dots + \] + +3. **Repeat the process for \( n_3, n_4, \dots, n_k \)** + - Continue filtering each sequence by the next modulus \( n_3 \), forming a new arithmetic sequence each time. + - The final step yields the unique solution \( x \). + +--- +### **Mathematical Representation: Ring Isomorphism** +This can be mathematically formulated by defining the following function \( f \): + +\[ +f: \mathbb{Z}/N\mathbb{Z} \to \mathbb{Z}/n_1\mathbb{Z} \times \mathbb{Z}/n_2\mathbb{Z} \times \cdots \times \mathbb{Z}/n_k\mathbb{Z} +\] + +This function operates as follows: + +\[ +x \mod N \mapsto (x \mod n_1, x \mod n_2, \dots, x \mod n_k) +\] + +That is, the function takes an integer \( x \) modulo \( N \) and transforms it into a tuple of its remainders when divided by \( n_1, n_2, \dots, n_k \). + +The key point is that this function \( f \) is a **ring isomorphism**, meaning that the following holds: + +\[ +\mathbb{Z}/N\mathbb{Z} \cong \mathbb{Z}/n_1\mathbb{Z} \times \cdots \times \mathbb{Z}/n_k\mathbb{Z} +\] + +This implies that the ring of integers modulo \( N \) has a structure equivalent to the direct product of the rings of integers modulo \( n_i \). In other words, for doing sequence of arithmetic operations in \(\mathbb{Z}/N\mathbb{Z}\), one can do the same computation independently in each \( \mathbb{Z}/n_i\mathbb{Z}\), and then get the result by applying the isomorphism. This can work way faster than the direct computation of $N$. + +## Example: Direct Calculation + +Consider the system of congruences for \( N = 15 \), where \( n_1 = 3 \) and \( n_2 = 5 \): + +\[ +x \equiv 2 \pmod{3} +\] + +\[ +x \equiv 3 \pmod{5} +\] + +Using the Chinese Remainder Theorem (CRT), we find \( x \) as follows: + +\[ +x \equiv 8 \pmod{15} +\] + +Thus, \( x = 8 \) is the unique solution. + +However, using **ring isomorphism**, we can take a different approach: + +1. **Perform independent computations** + - \( x_1 \equiv 2 \pmod{3} \) + - \( x_2 \equiv 3 \pmod{5} \) + +2. **Combine the results** + - \( x \equiv 8 \pmod{15} \) + +By extending this method, we can optimize computations involving a large number \( N \) by performing calculations on smaller values \( n_i \) and then recombining the results. This approach significantly improves efficiency in modular arithmetic. + + +Rather than simply solving a system of congruences, the Chinese Remainder Theorem possesses the remarkable property that a unique solution exists, making it an extremely powerful tool. + diff --git a/content/Basic Algebra/Ring Homomorphism.md b/content/Basic Algebra/Ring Homomorphism.md index 905aa08..4dd4144 100644 --- a/content/Basic Algebra/Ring Homomorphism.md +++ b/content/Basic Algebra/Ring Homomorphism.md @@ -1,6 +1,38 @@ +## Definition For two [[Rings]] $R$ and $S$, a mapping $f: R \to S$ is called a ring homomorphism if it satisfies the following conditions: 1. For any $(a, b) \in R$, $f(a + b) = f(a) + f(b)$. 2. For any $(a, b) \in R$, $f(ab) = f(a) \cdot f(b)$. 3. $f(1_R) = 1_S$. -Here, the operations on the left-hand side of each condition are those defined in $R$, and the operations on the right-hand side are those defined in $S$. If such a mapping $f$ is bijective, it is called a [[Ring Isomorphism]]. +Here, the operations on the left-hand side of each condition are those defined in $R$, and the operations on the right-hand side are those defined in $S$. + +### Ring Isomorphism +If addition $f$ above is bijection, then its inverse $f^{-1}$ is also a ring homomorphism. In such cases, $f$ is called a ring isomorphism, and the rings R and S are called isomorphic. +Such isomorphism is noted as $R \cong S$ + +## Properties +Below are useful properties derived from ring homomorphism. +- \( f(0_R) = 0_S \). +- \( f(-a) = -f(a) \) for all \( a \in R \). +- For any **unit** \( a \) in \( R \), \( f(a) \) is a unit element such that + \[ + f(a)^{-1} = f(a^{-1}) + \] + In particular, \( f \) induces a **group homomorphism** from the (multiplicative) group of units of \( R \) to the (multiplicative) group of units of \( S \) (or of \( \operatorname{im}(f) \)). +- The **image** of \( f \), denoted \( \operatorname{im}(f) \), is a subring of \( S \). +- The **kernel** of \( f \), defined as + \[ + \ker(f) = \{ a \in R \mid f(a) = 0_S \} + \] + is a **two-sided ideal** in \( R \). Every two-sided ideal in a ring \( R \) is the kernel of some ring homomorphism. +- A homomorphism is injective if and only if the kernel is the **zero ideal**. +- The **characteristic** of \( S \) **divides** the characteristic of \( R \). This can sometimes be used to show that between certain rings \( R \) and \( S \), no ring homomorphism \( R \to S \) exists. +- If \( R_p \) is the smallest **subring** contained in \( R \) and \( S_p \) is the smallest subring contained in \( S \), then every ring homomorphism \( f: R \to S \) induces a ring homomorphism \( f_p: R_p \to S_p \). +- If \( R \) is a **field** (or more generally a **skew-field**) and \( S \) is not the **zero ring**, then \( f \) is injective. +- If both \( R \) and \( S \) are **fields**, then \( \operatorname{im}(f) \) is a subfield of \( S \), so \( S \) can be viewed as a **field extension** of \( R \). +- If \( I \) is an ideal of \( S \), then \( f^{-1}(I) \) is an ideal of \( R \). +- If \( R \) and \( S \) are commutative and \( P \) is a **prime ideal** of \( S \), then \( f^{-1}(P) \) is a prime ideal of \( R \). +- If \( R \) and \( S \) are commutative, \( M \) is a **maximal ideal** of \( S \), and \( f \) is surjective, then \( f^{-1}(M) \) is a maximal ideal of \( R \). +- If \( R \) and \( S \) are commutative and \( S \) is an **integral domain**, then \( \ker(f) \) is a prime ideal of \( R \). +- If \( R \) and \( S \) are commutative, \( S \) is a field, and \( f \) is surjective, then \( \ker(f) \) is a **maximal ideal** of \( R \). +- If \( f \) is surjective, \( P \) is a prime (maximal) ideal in \( R \) and \( \ker(f) \subseteq P \), then \( f(P) \) is a prime (maximal) ideal in \( S \). diff --git a/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Garbled Circuit.md b/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Garbled Circuit.md new file mode 100644 index 0000000..dbf7b6c --- /dev/null +++ b/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Garbled Circuit.md @@ -0,0 +1,90 @@ +# **Garbled Circuit** + +**Garbled Circuit** is a cryptographic protocol that enables two untrusted parties to jointly compute a function over their private inputs without revealing the inputs to each other. This is achieved without relying on a trusted third party, ensuring secure computation. + +## **Background** + +### **Oblivious Transfer (OT)** +Garbled Circuit protocols rely on **Oblivious Transfer (OT)**, a cryptographic primitive where: +- The sender has two messages \( S_0 \) and \( S_1 \). +- The receiver selects one message \( S_b \) (where \( b \in \{0,1\} \)) without revealing their choice to the sender. +- The sender remains unaware of which message was received. + +Oblivious Transfer ensures that private inputs remain hidden, a crucial requirement for secure computation. + +--- + +## **The Garbled Circuit Protocol** + +Yao’s Garbled Circuit protocol consists of the following steps: + +### **1. Circuit Representation** +The function to be computed is expressed as a **Boolean circuit**, composed of: +- **Input wires** (holding input values). +- **Output wires** (holding final results). +- **Intermediate wires** (connecting gates). + +Each **gate** in the circuit: +- Has **two input wires** and **one output wire**. +- Implements a Boolean function (e.g., AND, XOR). +- Can be represented using a **truth table**. + +### **2. Garbling the Circuit** +The sender (Alice) garbles the circuit as follows: +- Assigns **two random labels** to each wire (representing 0 and 1). +- Encrypts the output labels for each gate using its input labels as encryption keys. +- The **garbled truth table** is shuffled to hide gate information. + +### **3. Data Transmission** +- Alice sends the **garbled circuit** and her input labels to the receiver (Bob). +- Bob obtains his input labels via **1-out-of-2 Oblivious Transfer (OT)**. + +### **4. Circuit Evaluation** +- Bob evaluates the circuit **obliviously**, decrypting only the correct output labels. +- The correct row in each gate’s garbled truth table is found and decrypted, obtaining new labels for the next layer of computation. + +### **5. Output Recovery** +- Bob sends his garbled output labels to Alice. +- Alice maps the labels to actual bits and sends the final output mapping to Bob. + +--- + +## **Optimizations in Garbled Circuit Protocols** +Several techniques improve the efficiency of Garbled Circuit protocols: + +### **1. Point-and-Permute** +- Assigns **select bits** to wire labels, allowing Bob to find the correct ciphertext row efficiently. +- Reduces the number of comparisons, improving circuit evaluation speed. + +### **2. Row Reduction** +- Reduces the garbled truth table size from **4 rows to 3 rows**, minimizing communication overhead. + +### **3. Free XOR** +- Eliminates encryption overhead for XOR gates by leveraging a global random value \( R \), significantly reducing computational costs. + +### **4. Fixed-Key Blockcipher** +- Uses a **fixed-key block cipher** to efficiently encrypt the gate outputs, optimizing performance. + +### **5. Half AND** +- Reduces the garbled truth table for AND gates to **2 rows**, minimizing storage requirements. + +--- + +## **Security Considerations** +### **Semi-Honest Security** +- Yao’s protocol is **secure against semi-honest adversaries**, who follow the protocol but may attempt to infer information from received messages. + +### **Malicious Security** +- A malicious sender could construct a garbled circuit that leaks the receiver’s input. +- Since the receiver cannot inspect the garbled circuit, additional **Zero-Knowledge Proofs (ZKP)** are required for security against malicious adversaries. + +--- + +## **Conclusion** +Garbled Circuit is a powerful cryptographic protocol that allows secure function evaluation between two untrusted parties. It is widely used in privacy-preserving computation, including: +- **Secure auctions** +- **Privacy-preserving machine learning** +- **Secure electronic voting** +- **Anonymous data analysis** + +Despite its efficiency improvements, Garbled Circuit protocols still require optimizations for practical large-scale applications. Continued research in cryptographic techniques ensures better efficiency and stronger security guarantees. diff --git a/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md b/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md index b1a693c..0d591e5 100644 --- a/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md +++ b/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md @@ -12,4 +12,94 @@ One of the primary applications of MPC is the secure aggregation of data from di 3. **Regulatory Compliance:** MPC aids in complying with data protection regulations, ensuring that sensitive data is not shared or exposed. 4. **Collaborative Analysis:** Multiple entities can collaborate on data analysis projects without compromising their proprietary data. -### Index \ No newline at end of file +--- +## Scheme +Let's check out how MPC works in more formal manner. Given a set of \( N \) parties \( P_1, P_2, \dots, P_N \) with respective private inputs \( d_1, d_2, \dots, d_N \), the goal of MPC is to compute a function: + +\[ +F(d_1, d_2, \dots, d_N) +\] + +such that: +- No party learns any information about another party’s private input beyond what can be inferred from their own input and the output. +- The function is correctly computed even in the presence of adversarial behavior. + +### **Motivation and Example** +Consider three participants: Alice, Bob, and Charlie, each holding a private salary \( x, y, z \), respectively. They wish to compute: + +\[ +F(x, y, z) = \max(x, y, z) +\] + +without revealing their individual salaries to each other. A naïve solution would involve a trusted third party who collects the inputs, computes the result, and returns the output. However, MPC aims to achieve this functionality **without relying on any trusted third party**—ensuring that the computation is performed securely through direct interaction between the parties. + +For instance, if the output is \( z \), then: +- Charlie learns that his salary is the maximum. +- Alice and Bob learn that their salary is not the maximum and that the maximum salary is \( z \). + +MPC protocols can be generalized to handle multiple inputs and outputs, ensuring privacy-preserving computations across various scenarios. + +### **Properties of MPC** +An MPC protocol must satisfy two fundamental properties: + +**1. Input Privacy** +- No information about any participant's private input should be revealed through protocol execution beyond what is deducible from the function output. +- The only knowledge gained by a party should be whatever they could infer from knowing their own input and seeing the final result. + +**2. Correctness** +- A subset of colluding adversarial participants should not be able to manipulate the computation to produce incorrect results. +- There are two types of correctness guarantees: + - **Robust MPC:** The honest parties are always guaranteed to receive the correct result. + - **MPC with Abort:** If an error is detected, the protocol terminates without outputting any result. + +--- +## Protocols +As we were able to check above, MPC protocols enable multiple parties to collaboratively compute a function over their private inputs while ensuring that no individuals party's input is disclosed to others. In this section, we are going to check out how MPC is implemented in real-life protocols. + +### 1. Secure Two-Party Computation +Two-party computation (2PC) is a fundamental subset of **Secure Multi-Party Computation (MPC)** that allows two parties to collaboratively compute a function over their private inputs without revealing those inputs to each other. It is particularly interesting because special cryptographic techniques can be applied in this setting that do not necessarily extend to the multi-party case. + +The concept of secure two-party computation was first formalized in the 1980s, particularly through the work of Andrew Yao. The original motivation came from **Yao’s Millionaires’ Problem**, where two individuals wish to determine who is wealthier without disclosing their actual net worth. This led to the development of **Yao’s Garbled Circuits**, which remains one of the most efficient protocols for secure two-party computation. + +Check out [[Garbled Circuit]] for more information! + +### 2.Multi-Party Computation + +Unlike two-party computation (2PC) protocols, most **multi-party computation (MPC) protocols** rely on **secret sharing** as their fundamental mechanism, particularly when operating under unconditional security assumptions with private channels. In MPC, participants do not have predefined roles such as creator and evaluator (as in Yao’s Garbled Circuit). Instead, each party holds a **share of the secret data**, and a protocol is executed to evaluate the desired function securely. + +In contrast to Yao’s binary circuits, multi-party computation operates on **arithmetic circuits** defined over **finite fields**. An **arithmetic circuit** consists of: +- **Addition gates** and **multiplication gates**, +- Where the operands are elements of a finite field. + +This shift from Boolean circuits to arithmetic circuits enables a broader range of cryptographic computations, making MPC suitable for complex secure computations across multiple parties. + + +**[Secret Sharing in MPC]** +Secret sharing is a technique that **distributes a secret among multiple parties** by assigning each party a **random share** of the secret. The secret can only be reconstructed when a sufficient number of shares are combined. + +The two most widely used **secret sharing schemes** in MPC are: +1. **Shamir Secret Sharing** +2. **Additive Secret Sharing** + +In both schemes: +- Each party receives a **random share**. +- The sum (or reconstruction function) of these shares within a finite field **yields the original secret**. +- Security is achieved because **any unauthorized subset of shares appears as a random distribution**. + +**[Security and Adversary Models]** +Secret sharing schemes are designed to **tolerate adversarial behavior** based on: +- **The total number of parties** (\( n \)) +- **The number of adversarial parties** (\( t \)) +- **Whether adversaries are passive or active** + +| Secret Sharing Scheme | Passive Adversary Threshold \( t \) | Active Adversary Threshold \( t \) | Security Type | +|----------------------|----------------------------------|---------------------------------|---------------| +| **Shamir Secret Sharing** | \( t < \frac{n}{2} \) | \( t < \frac{n}{3} \) | **Information-theoretic security** (secure against computationally unbounded adversaries) | +| **Additive Secret Sharing** | \( t < n \) | \( t < n \) | **Computational security** (requires additional assumptions for active adversaries) | + +**[Computing on Secret Shares]** +A fundamental goal in MPC is to **perform secure computation over secret shares**. The **BGW protocol (Ben-Or, Goldwasser, Wigderson)** is a widely used scheme that enables: +- **Secure addition and multiplication on Shamir secret shares**. +- **Fault tolerance against adversarial behavior**. + +Some MPC protocols require an **initial setup phase**, which may introduce security assumptions (e.g., assuming adversaries have bounded computational power).