From 364d934442cebd22590ab21e14942ba1ca71e96c Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 8 Jun 2021 11:12:41 -0700 Subject: [PATCH] Update content --- src/SUMMARY.md | 4 +- src/android.md | 3 ++ src/authentication_protocol.md | 2 +- src/cwtch.md | 48 ++++++++++-------------- src/deployment.md | 8 ++-- src/fuzzbot-invite.png | Bin 0 -> 105976 bytes src/overlays.md | 57 +++++++++++++++++++++++++++++ src/overview.md | 44 ++++++++++++++++------ src/references.md | 27 ++++++++++++-- src/server.md | 28 +++++++++++--- src/ui.md | 65 +++++++++++++++++++++------------ 11 files changed, 208 insertions(+), 78 deletions(-) create mode 100644 src/android.md create mode 100644 src/fuzzbot-invite.png create mode 100644 src/overlays.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index f95842c..f213412 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -11,7 +11,9 @@ - [Groups](./groups.md) - [Cwtch UI](./ui.md) - [Profile Encryption & Storage](./profile_encryption_and_storage.md) -- [Cwtch Server](./server.md) + - [Android Service](./android.md) + - [Message Overlays](./overlays.md) +- [Cwtch Servers](./server.md) - [Development](./development.md) - [Deployment](./deployment.md) - [References](./references.md) diff --git a/src/android.md b/src/android.md new file mode 100644 index 0000000..2f4e193 --- /dev/null +++ b/src/android.md @@ -0,0 +1,3 @@ +# Android Service + +(Currently under active development, will be documented here once it has been merged into trunk) \ No newline at end of file diff --git a/src/authentication_protocol.md b/src/authentication_protocol.md index a77429f..bbb15ea 100644 --- a/src/authentication_protocol.md +++ b/src/authentication_protocol.md @@ -23,7 +23,7 @@ Once derived from the key derivation function \\(\mathrm{KDF}\\\) the key \\(k\\) is set *on* the connection, meaning the authentication app doesn't do the encryption or decryption explicitly. -Also the concatenation of parts of the 3DH exchange is strictly ordered: +The concatenation of parts of the 3DH exchange is strictly ordered: * DH of the Long term identity of the outbound connection by the ephemeral key of the inbound connection. diff --git a/src/cwtch.md b/src/cwtch.md index 2ec7344..f723eff 100644 --- a/src/cwtch.md +++ b/src/cwtch.md @@ -1,51 +1,30 @@ # Cwtch Library -# Known Risks - - -## Thread Safety - -**Status: Partially Mitigated (Work in Progress)** - -The Cwtch library evolved from a prototype that had weak checks around -concurrency and the addition of singleton behavior around saving profiles to -files and protocol engines resulted in race conditions. - -The inclusion of the `Event Bus` made handling such cases easier, and the -majority of the code is now tested via unit tests and integration test -running the `-race` flag. The last portion of the code that requires work in -this regard are around the AppBridge and Server which are used by the UI to -maintain separation. - ## Private information transiting the IPC boundary -**Status: Unmitigated (Requires privileged user to exploit)** +**Status: Requires privileged user to exploit** Information used to derive the encryption key used to save all sensitive data to the file system cross the boundary between the UI front-end and the App backend. Intercepting this information requires a privileged position on the local -machine. There are currently no plans to mitigate this issue. +machine. - - - ## Testing Status -Cwtch features one well-defined integration test which exercise the ideal case of +Cwtch features one [well-defined integration test](https://openprivacy.ca/discreet-log/06-cwtch-integ-tests/) which exercise the ideal case of three well-formed peers authenticating and messaging each other through an untrusted server. -In addition, unit tests are defined for a number of Cwtch modules, however - many of them have become outdated with the introduction of Tapir. - -Most tests are run with the `-race` flag which will cause them to fail if +Tests are run with the `-race` flag which will cause them to fail if race conditions are detected. Both integration tests and unit tests are run automatically for every pull request and main branch merge. ## Resolved or Outdated Risks + + ### Dependency on Outdated Protobuf Implementation **Status: Mitigated** @@ -75,4 +54,17 @@ against the server adjusting difficulty too often would also mitigate some of the more extreme vectors. Additionally, Token Based Services and Peer-based Groups are both potential - options for eliminating this attack vector entirely. \ No newline at end of file + options for eliminating this attack vector entirely. + +## Thread Safety + +**Status: Mitigated ** + +The Cwtch library evolved from a prototype that had weak checks around +concurrency, and the addition of singleton behavior around saving profiles to +files and protocol engines resulted in race conditions. + +The inclusion of the `Event Bus` made handling such cases easier, and the +code is now tested via unit tests and integration test +running the `-race` flag. + diff --git a/src/deployment.md b/src/deployment.md index 8a6c9e8..83ba9e3 100644 --- a/src/deployment.md +++ b/src/deployment.md @@ -3,17 +3,15 @@ ## Risk: Binaries are replaced on the website with malicious ones -**Status: Unmitigated** +**Status: Partially-mitigated** While this process is now mostly automated, should this automation ever be compromised then there is nothing in our current process that would detect this. We need: -* Reproducible Builds - it is unlikely that we will be able to do this - overnight, several parts of our build process (Qt builds, the recipe etc.) - may introduce non-determinism. Nevertheless, we should seek to identify where - this non-determinism is. +* Reproducible Builds - we currently use puplic docker containers for all builds + which should allow anyone to compare distributed builds with ones built from source. * Signed Releases - Open Privacy does not yet maintain a public record of staff public keys. This is likely a necessity for signing released builds and creating an audit chain backed by the organization. This process must be diff --git a/src/fuzzbot-invite.png b/src/fuzzbot-invite.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3dd1cd1f08d1b4f71ab8da50bdeb44fa1fd14e GIT binary patch literal 105976 zcmZ^KbzBr&*DZ<&BB4?;lnR1$gS51?!q6$*-KioV4U$85cXtR3-QC^Y4fpWe?|t6y z{&D$@KXsTmvCrOXueFZv7im#+R0t{p0s^|&XCYYxgeN)(2#@Pfo`Pp2aI9OwUr%fV z#GokP#}!5QHv+;N1Ti6gsAJsDteqp47)jHi#g+!uXDdTW?DdZygIZ=W96rv>&T4=^ zL7pwMv+Dk;lwSzN>x<8WS(1(Zu+fUC23;PkJSvHuoYb{Zhw!AL;fd&|cb*qx^jHpU0%|FCWs-&#yGTGWZ(w zC%k-p@iQyy!`bd6>5pjm>xZ`r``?MLc16gt`TX}?Z=&TLm0sgU;!?&3Ci+QIwam{a z%8>9`Yu)qu;(X7{qyTRariw_nz5DNo_!&~cC+Fqm%W@L%#dEv6t5v(=BTzql#pThu zC>3+TTR63#GwK@scY(L-XG9*l)*P2NHR%oZ5>|y`*FXZRGgfUmo#j8 zx?SPE;t{zY@<;ANMI^9pzMPpV8!0ss7{B&4VvtYC$;PJv|X+m2UzW#nbS#C0&lkldQWCp3#**=4*CD3ra`_ICH6+TQ!O)W0NZV8wD>E(rF zZKoqy_Of0Z8x^UbprFq6)Q`KNVdSzDH+Q^XUBZ$fo~x{7Y%EgHCs^Ca$k!|V{ou<` z{rPAA?kN9@R}@s@EbufkFM(v^fYA2?)FQigp2*l#U%qo!yD3-e)5;|BAZjiCNw?je zdG_2F36EZV>3F^Woq52&+x;d@K-P$b2__|Ou$-B06c8$Y$`1b!Ax=X}8`{14ne0_i z{713i0(GStS0ov2h&IApy+?nY*YnN6d;;)s0#p(2LO+MJroDxyJo|U~1h!rf;RFT- zTE#Ox87(UK{TpRxcel8>n9&*b*4oQC`cDEp`tjw_P??p^%uw3mRUm;{qg9v+t4Wd3 zvHnzrd0S7ljnnZNQIa3W@LHjQ>10J<7Y^0IN~c^`B&C!FA0Jr9$x;hGQJJ_G^?DB> zut=e+rzh6pY!}+8YdYD$oL)-$uE%-=#~=?umK zHg&rr1GBOWF^D*R`um&wG;$}%z^3?a5&GBbqs<;6I5%tO^L}!*3bgut2@ zqB0?!0flJ)#G@8ua8NcSB{e{WotvA`OAS7wTzYtT_*4sCW^}SO?PHjYjf{+JqtE&^ zz(_Y#OiyH=>w9|o`)f?XB>i5JO$G&?Bt%$4XS>DL->O{ON{#rek7a0G*2Y zCT^8kj`93Cg~Xa9HlLn-*K3 zRGJCK@;MCdOJo`i?!9%w{`efWD5&W_>6@E>i3*W@bgTI1c&^E(%OV*oyM9Y+;hw`Fuk}7m9uBjh3l*tY1}AgTPRv z$c_M)P7qIaz06WpXE%E;@f?AMh6eW0`okQfy5~NRW7CbWMA$X;Lz(!Mm;i;CG1!}$ zzI^%e!wM5_Uu>b#??(rRhx&VYleXKFh}Dwb@%8l_r6w$P!4XT1Q6sfCLzgxkE7qxJ zJZ#khV(WD3Fg^!5Ufwwx%?j*iA$01T#C+}o=Nk1zMMa-{7o+QnDOXTWN5%#}li|i7 ztJUulSXImHenrFU zarv{po~PVoQ)U{j!fHP?HRYGfZeD6VDbY}%9UPnx zrkF82*la;o$XEIi9Lyd}%tsy-jQM?So;gD*)y*d;O(L;*Mw!h|jc)j6cQr!HMET1A zb#F;ks^=^1Z{PUKp!`vLvq}xNlwcx=3r?R9)N33NeUZQ^5y{NO&%lP@ddKJI>+|dC zlBrghrE0`;N=9=dWwWT1N|J}AJP8-~T61%f+zyi@A60f3PpD@x8hLSF>rfu~&-#Sa zS?l))3B6mqSsHv(x}1Y^_i>=)r&c`Td<7{F=Ml+Bb$vU_v19_iq_z6`2rS@WVR1@=Nzh*Ka0i zyqBITGg2wu>W#U)Rc>-qt4Gl0PAe`#PjA07*OF6i0#4co zL6HEm1>rXu_)HA$J%$)0Jn%@fY0As%eL^luZTLfe5)k(d2zb&o*M}kD`y^fMM@@eY zG`Z=1kEbh=PIxzF)baF+6^~x?n^xhTQY)0s{CZw6?62|fcXoD-#*-0~oU>BS7H?ft?nY4& zDDa}l?CKov&&=w&hcjdnH&|Ags@L|boct`51ybInTH0IdP7b}-?FjinA(M~qu*?j9q_pN7e@#LBZl;c{|dI($e=JStI&jl16pok2LbNhz9E) ze81y%I}1=gUX!cUN1rM;mvR((g3s*CXtDT?aEB=Rppg-cgvYx$Rm6Iy^_fDRvS9w! zXmMpFsme*f%ZH4CZF35@i(xmBJWLVJQq07q*Q{%zmoXo^yTwFcH=oTg-IT@dN(@F6 z4YE4FBL#?}Grrpg;G-8OXGD=5Upp2}Iux1GWJG5nqmH*%tmEc$N!3t~Dcr~@TH3)9 z!*KERwR>3@_A~K^3eW$Ucu?dlfd5@{r#vgyKqe*$i$(W}^~`KTZ%}l20y$H49J0gh zDP4CwyXK!^=snTNRe7`BtFQ_Iy7r;JKZT#Kg;DB=Byc+kY**}td?w4&sD5l=VS!5< zEz><__WSqmroTf&Su6lFK6{QSN)`4^$E>$gE)&LN^_bmab`2z(s@iHsy}ynaBph9T z)4L7l(il&-NA;RQl3i~ud?~TonX5cJ$fe`qsqMj+^I4&Bjh3NAwe}AP5w|zy=$wz> zYX{EZs^~+yc*2Z|>fBuhvoV~{VC{vBATF4EM#&ws5K0NL**+r*7k~fC_sRV=CK$@< zrT-^u-R`d4=x8Q!*yHy_Ztdn%m1a_-eygFM$ym(o0*si~hZ>})DT4}95A#8gpOaTJF2Wy?8@=< zY}eDr2N~o#{oa~W7L%c9so2Vaayii}O#H6Yb{Paq8;O=bm&aB1w@>lwnGQ}SZPH{Z z^HnO|P*M3sZ!@>9Y-FBy&O*7969v+D|$d^d!|kvvADAF>9)phvd)hB>!55e&7Z@|t5yF+`0Fo$ z%N3QSq%_=wzCr@|kWu`JLi!fbprxM6=PKK49g%^n{&*#hlh$k&(-`0L1JRkP)vy*6 zABOa6L=a5y$u8pppTN{V7|<28PIEdsI{rdW%$WTI=tMyh(bLOjMgxh_`-#V$WStZn z=t2&DqmaEC#axM+j%vKW^zmJW%jOw=?R8cz)zu$6$u_-lV5W^_9jzn5A))2GLgwwTiE{(tBpQxe`33DSf*0FIS)RwK3P~))Ff))e|riPF#{6|AAz^XzCv}f zOGsqKA>%%nB%Q0vy?s0`U#TLnsiG6F>_ja$4qoc_Yko?YY51Hj`?JxVRpQ4(V)>uP z;{&vO2QI75WMiEt}2w$V*!VhI~iFi!HgEam~w8 zeLG!Qd4}BMEb^ZTfxW)R@byCKD=2tqlf^s6wU!O!{@cQW zk7-C$=#MTkSfq@={C6E5-bT|-h!NxApYTuh_|JGcKePN(uKqJiGSdG!^8fQhNPv*e z|LXKm1ejjQsXqUUndDYEwn7~qMWAS2Vn6vbU$1;iF;gI-J>lE z_j%JSgZ^oZ{y9{?e#2k$e@;imq5ZD;V}_8=7WF$jzXkr3OPRituWXys9ohGF8AOC= zZf6m{6}f*${h5$aQtX9nwn*>xH#4(dFXkw_$We2pFf{yOoB4Zw)D_8pUwT2D!YBe> z`dIh~>m_kBU+(>=vO>1A6GC6y$HbY*|88qT*gq@LG1wWJH_423a+N=~T7Be*1$hNe zFuM-pF!;~@q5M6670CEA1eMiXnS{%QO9QE4OnGf_QySi*QHMS>|K*>2{?Dt^%u^WG z_)@gXt;uCdT_c#trS=Vab!4$A6;Qrs1}ALNB2j zfv`b;1dGaRKMEXy#$CUU%h@mOx(a<5O3;8BoU>PJWu(TH7)9G0M+cQdYqyBCJfC9craW*bd=-=Nt2ZQEY^QYdC-JeDsW zFH$~HZ%2}}HOpXk=SVf0^(m|o64Js&ur8zdILYO{?*uXuaU|b0kS9g@Q=@)y_4)4N zHlK;|g>pgX)eXw3`tQWRSXKm(l!C5`>RewzT{$P?aQO>P0EJ@Kqxp9dke)ZP-Tp$@b z)Y#pBPWI+)1|5MIqxI5@m@?zv>FGJk$zEP$lhmjnjCW9@rp^`W{v5j)4;DP@on}jR zTP^^6RZNBP@BDaLpK~Ie!y1l{wI7Ewz8O4BuFZJW3F{=%rE)*>^Z&bqvRQ_Yz<&L` z_$H^+pvBq(M{jK#h4p$^$jCas?~c^kxPQvvKC$BX|65ahfAUaD2@#bMBT<;2$Cqkn zq`5}7;QM?R8VxR=?)5^(tZU1flg&@yjf#HNU~= z>Yh1EfSkHQy&<~)cJ|RkmA(Jq=53zSjYgZq9ct6H1BorjeP0kM3`D{9i;Z#9D)IQE z%6FF-OuIj|CrQYgW{afkg4ZXRJODL8!Rr0{kUMqnqr(=8)MEy)XnIQ?PC+AZhIkbc)S)Vt07f{M7?#cG0c9%3=M{TTQ`^7@p^iksto{ybs$P zcS5POxX4r@#u@@alECBM7n@Y6)?gVZC)#g$HKAOx-UGKt_bavC6GxCH;q!@)r!@%n zh-Knsy~*foCcHMaB*@=@ zez-tPaZOtJb3ea&AaU$P>DnN+^;*}XrtPR2W=foUK^&4MYPqLpagrCmYF(Ef?;)u# zC(h>DMWSD7de{?RM@e8xTTvV^IXtGfIlOyTK{WSiKAES%g5nP>y9++Ii~P~;hEV+d z&6y~pcMy>lNN_U7YmyqD!ea8P+*iprhcX|geq~22xgJ^nK{MU-r%o)jJbi!7Za2re zhvadsn!966YSej&@$sveawF3-?yPKTwb0P7;k2?5Mmh#>LqA*E$h2hGsb*_dbKps9 zijOE+$*m8*=5Vz(gfJv>yNX9OI+vPk^KP+TVsUY)_QlsAG>xHiZ5%0D%(eDF_5JD; z3e{mQ{Nrd1_K6dD$1uC;sO`K=US9THRf%11)>CtnfsF>jhN{@uM|f3Oj<8{NOlFF0bL^D{qlGTNI7DEm8X4jZ42$$8_>%L2pqUiGNTrrE|fW9y9rq%bJwUA*7JR=~&89v`Jxb+SN4aGsYedwQflYj0Xk zFrsxEgcDb96Rt{6XWTVb(L%5>k{kbZzCBo$!gQdHPP#8>ruG=&d;a}SnvH(~w+H0Y zq+dG9-Hp5rw+taiV6h-{-PB?}F6O*Npygqy?lh{OeTE%JtB9LVV~^*2TYkC~H+`e2 zzBmCzMJro1AZs)(34z zAMi?f7mLML-E)A7?TRRbjME3XXwvT)hipb)KcFW%|Hdmr)-TnkC05Fx%A$S zZbQE{b zaE@N%ND(ecB!aQO1B4FVy6evax$Gca4pmhzZLj-l-f?5!q$8LS*s&eX!4fFD;or?$ zpdP^+QrCO=or__!S=_CAOtG{E3K;4WQjw-GgfCPP&>W2fVzX;2!~L%+WpX^|qvtCb z%G)AngrmqV$S&{xk~-e)Abkz}3hL4F;-&}ybV9-+NBvtKy^+Y}6Y3!(b1ppqpHSY3 zGVbh{J{lcJOs*GYwr=_;t;W}smoB$4ZDd&|^H(xnRAS^y*xeZ6*v-@Jh(v! zeIk!IyjYY2TFRlXlWa6&DPHfLX{rOk+J%&)lVky?8g)oVFCeeHL9LjWnp|3r4GZF# zUfNrPcRX5V*}j^uY5&7PeQ|PFI#<^7H6w5l)))4Pr_oI|{an1=1hI4zcBPUn|8#fv zpey``E7I+24l5J@NuB$JwQ5XuI(!AQ#?#n9hPSyrk`fQ6k}e$!M0tksZ7l6lW&3Pn z9(GWKLLL~C(8M0?NU3hXAV0awS4Z*C4{+1OMbT@#4eRWTW5x3F!_`{aVRXGa@yf+3 zjMbYqUd{+k16_xbit-Wb1+@$bk7#lTSo9xYV=q?wTlUlahAXV_Ji%FkQk?WIBQ`A~ z%h*Qh_3Q{MDMj~PH)2yuLf91>TrtL!BW2f%!{;ip3*|v=dghoBg919gn6gct&dsp+ zIL7hFm$&Wi4hd4LqE!3$NVC^=8TOtKC8eweOcN86Bb*bR)?dvx76(FmGfcY-^VpmC z%w~5_Q1NI#Cu<%JCmF?ucl;Dfms%HtLRr2g*HDb49Z0T=*_J^K9EFx6Pw`o53iZ`A zC&kk{H9r)tEj$|Sbp{Em+IA0h@!KNyb-iI-e#{mkVN>U1s0i(r35MktoTd^SiAM+I z8?*q?qP?D+*6QBwj}eullv~7{nHdIbAqUYg5)Yf5U@z#%i_6NA_?cT|C~D95f0g<( zTg=z#*!6_4W6C(d`w6AM0jYC44thqKA)8@|vjsJjtQVJ})GXtiRXJVz3+o2K3^SmR z>KM@zlydVlC6H_WEi+Tx4Yp_m`T~LM)w4E<9QZkJ-8qVc#B<2~=$HMl*hr$7Z~Iyg z;AkX!AX-HaGLR&0lM{Xs#^jY-Vt8h4K0i>863v8}#DzOE-tWVNBVk0PhEQOnmVIWR z2Lyr}$qX9&Ww%%QTilTDcJ@rFU}uO9lWxx^U0rC&%IUIC|48l#bbYk8<&$UPVWU&9 z$f(LtmWqUNgwdz%r}2(B7Z6Y+0Gv!xE)?(egBGge!=UhhXExc2*_2YoWho9mKc09z z%Qz@R+Qb_6nw+^d>e8{kxZq!*4e+)asuq=*C}4OrP~$ z0lceswt@t@QGN@7871 zpCpOri_b@BeuvoQ4rO^QE|$Qr2D`3<`+8~7BXSi7SXx^n$pdpUlKaE|)H90AzDWJ@ z;bYZ0iYoh_qy=G-9FL zN}55!g+nKtEC^i~otp}RCuk}n+ci9Etm!u(E;1I((S2Sn?bXLesCv{9(v~C$;t}-E zK6Q-0*n^|KK@F+=M9e)@gJ`*S!GYk1O|8q2Kg4LH&gme0JlFKq?SZ2JfDp7IU!6^Q^-DAn*^Q|jdg^-enI6R;!FSzfoj57M0OA1FqQuC#u7 z{@GT479bY2c`8q$L=iDyG?h(|oudDG<*>wQ7=7`5Aplejs-F|p9qUIjvBY3%kHxz0TiNEO zYuqI8GZ3u3on&qonmy@ zdgnP!28YVJu# z04eZmu}Zbjdbv=xwxlYrD@U}Ks)`we)DYEqSEdkxu%98*dM?giIM42r}4X8d44e1f-`pPq& zhNqG5Z*Z|Z$ap~(GFbX;1aPI|Hk@zo#~t&U)!v9O$XetseR*KRL@46-Zn>6Y;1Qth z`slP``}6uy2(zL+!d&BZR%xDfub+~V5-9BOB3_+~i#t-I88ue^T5W30bTojfUl0-H zk1nL#@yZbKjZdt zwQ5bl6<#zv_0YRJd7rajZI@#_H?H{gi(*%aZg<>51B?`N3srF~@0q4)5D8~nPTTft z9=+H2+Oy$p`Hrw<7eATPsR-pFXIy}-PWHL6?^VwcUe7t8r9YP+a~A$3dO*eSdsg*a z7T`c>4L-w)I!+F*5N98~^+$L&Q=wF>_X?PrBj+pfJW>ujsJ}Se zvE)d?9+;t?B`?`*-S);BX3i{~oYk&)=DFPm^e+OBj?Ebe8F(_rB0aXFjIaxTZIg(( z{O2=tU066y#KdL<@o&pJOY5P%^v#WxPlg?p2_kOZwxSTC-thZg7OHzVQ~TXU7)V27 zrm7;zDM(dzyBPUfb_;vE*PROX)C$x-4h4iAtEf_fu^bh%72BFsRW%PA2bc=9j7sfh z2r-|dUwS%{UF^tMUE8yzaSglqsXm2>OEwO3)?v&H$qQNxoAdkwL0?aunvkxQRoh^8H8ZD_+MHCXU>w zJOfYG27fVkY4tD$eaQHbVGz0%UrNiA1%OQQbDq$QM? zNEggAb+$fc=OG?NFLs+@_tAYLe9T#o>h4ifdTA8a3?{2x+wJalC1>~1$|=&qvWvW6 z@2CWOmTc*}RjLSmz+kIvvl)LS0iff?f_J2~1tjvYwZ|SeMfMt4xq`uLw%gM$sZFTI z=%$;(8K)u^6yjrm+R{=$>w-UHleTtiH7q(*FoJ!lG73d6NAI%>O`Kw!ge*vqa%wmG?V1DsH9RMCONb?8xOqI1i_^$1fKTL|m#$&nqP_ONgL1tT% zS)T?$mw~M6y?q!Un8^DH+QA@uk9gWL_lq=kX6k(KvDO{~OA}7IY-hfSL)qBzfo=O> zr!QdBVC-g$Y!wx@8*`k^ZZgIivophnQlggthd^&jUrDUzYhT`sJ~PLIMl6*?XxET7 z-m#^sKpfsH)HAvP zS_UJlVf;cehHETMuSS2f)sE|2a{bW;2K#5K)BU8N_o0OAEfd!3y~3NQIVRJ&c=JDd zVp9u-Qq4SWEN0WS%a0`084`F@&xh0G1=ZBlKUyiBe%BdUNxoP)(_c*~ckULGg_(FP zQK@FL=w#%WtI2>mypB8n(}!GiGJiJdsURGqX|6dzUG?l}|H@2%xbUb_tvGR+#BT=O*AJ?%i@e%K6p{3L;>SQo~5&oh#CHCts~}EqmtYqgz-1Z2JDG zK(nC}P!#A1!6K5cC1KIugs*lcD=-sh=J-sV?g!&J+=I^4RS9;8uqwxED9I%HqbJZA z0Y#|?Z>{bup41KHvY@M9uH@mKwHsqyt50dfY3}QbJcwpYV=tUr>+!XDwx+WmgxC|! z5OtZWzqOnG=wNf%!2YJz2e8%nXqH)Lm&15hwuHZA_TmC!SXvjPHYdaICd%x$WniM; zd8W@mcB51)OB&;xYvAaNACCfCt3ay}wO~IwWbhd|=@}KSYUEDN+^emvY)>0XY}B*ekA}7hOAzi1lKQ81NYHxECAL-;bLB)djm^u8 z#V`dyw5EslP+e>}2DIp4)!N%ey}pKd8$X^To^pYjYRC+)|CZy1%)>Ef06} zOifKcfUd?FeXA?d)5GSh@9WsUS~lz51fkPJ@S8tDGD^|=$a{)!~Tqi z6eg>Ew1HL2;SE*`%K&~GzQjR|g68N2AT{XthNx7FSE*Op*ATZSUA1^zq|Lwej-@|{ z2^}3D*a|LjY%~hO&w*@6r%L4NQ=T?m~=!SjM z8?sUThMN*bIDa~4ZB4W1%umg%w^Zp_wiL+gc1HSw3aVUe8K}==Ga`=wYV5&JiOeEKm!h+3eYLGJ_ZX)-TVvxkUg*iplCM`pL1*@9Hy( zil@C>40>})L+LWzeZ4Ma5bdTLy-JbUoPg+$ukjS|faca5qLJEDV`iXe09r4<#=6IK zz8o5Haq{fJeB$v81z^vuEXydkB`eSUYt}z^D9*kOpeyJDraTkkRqb?wwSiR^e>-|v|5^a#Cd8g z+VIoe)%8B~wiaVJU*00;{%bJU`PONM9ax_y%_I}PYqd+webMS|!TJCwV zisgagod)a#_5z*JUrsu&fwQwDSw z&z_?j%oI^NCvN2GKezli;G39-B{Z|_Ak0k$Di($Z|PgwF^AAdeYb&bWotetH{5gv zsQW3F9m#F)_=z%e>ZpFr)m8s-;3fQ0=J-uShPbP0le9O|2dJVYx_w=a)Ed{?RC4*8 zEG=Csl{R{|wk+Li`Pu-;>0c+Hbt(?XWIFs#4fC9%2!`o+|IGH`a=kh51^xKDuujRC zab}9X;fk*YxV!qH%=RC1Jn6 z1LDMd{$Sn1lfpPbi^5wVnW5X_k6OE~DLkQHQauB!yKNK+l)_Q}ahCmE?lXE(y8Y3d z9msWpzyFr^nMRLPOm*Y+gx&yvIv7D155u`r_pt_~UA|qfRUkT=qcGsD4V5!_!bGGp zje5t*jIv@@3-1p!5PIT127}NUE^^}Gt-EiHN%uGg(9&7Tcv$Dtkiip{_PeZVmnufr zn>V28P%1sK$oGE1Y7;dp%`?5Yv(z(3gj}ZoULwehLdcC&7sp2KK6T{TGSyvsVa(#H zRdqW{nfm}U&1~nS7&UHswMQ_B@59FI7O~~Eu0z4h*X%pfG(wc1Jy-Xzw6_|Hn+EmN ztJa6$>({}a*ox?CIoz$ZVIYz`4cwC`p7&4r(!t@rf$ixWkfdE4bF$4HE$2)=J7566 z;3&(R)>uy`c7D!h?sQ)m&91|EUoa1^t=tE0Z$L>}-R}vK2Pc>x!NQw*0vWfwfw6_L z09yYTxqpx4DuOLPlcUt&)mDK^q7D%QE-vnyP_1u9u#I!3)+YxykQ;duu0tZBZ^_?4 z!)jE+4Nu=+co<0P(*S12q}=)Q1KZ(RHO;nNgC5eRi03)t_Nx#ami=rWQbMjYA~Xix zt$ra9p%Osm=j+KED~xczt#Q9p6%2GXgbprwvF=Cs;0iv}2ObmBKK_68f#ZNdYqIM2;x0BP%Z zNE4#2dS2`nb|x3`iwgBE<0G!oc3ZVWRtB|t$9P6h@_`(8(FbBm-=ku2t8E+5iL#ki zw1BA8uiz$w9y;GFP`($(8J?b%*YxU+o0n6IjEwxS#NBIYX*rbh(LavCHg?r;OPR8Sq{E{I!BT4lJB|EL8?Km^7LJ9tGf*%OIz3IOcfTM z5l}xK$SuGdS?;YM0cF?^N~PyG&nSt{9Hy~*4a^PvK+!!h?^aryB2i>l1eov=LipEf zI10^tK2DEaP-OH{dvhkDvt)N5`lG0~Ibr#62IqMzhWRxJaviyL4}aB6WJ^1_Q{69^ z{y|csu_7*!?`51zcgohm$+`Uvih=Is-_f$H=^*3u zE!kXGLFbD7{)i{qM&$B-l4iG>DMpjPtgq)XStk#rQV6RE zaGu7{;JLo>1M4ZKt=GFXZ;=#&CYA=j>Hg?;^xQjOPhE=QW5=%>k^@eU65akDu)P66 zNRL8VL`QS(_jZxv^|lPR0ClAj`1m-3c5S%5-!bhp$!7lyoBooz+WH!J;_dXsQPCXR zt}Aoi3anCZ@4H8bEc-|w-54RbUmh2^x1-ia9R5a;M|x*IAk3N>O;LNrVlo^pKH7za zg9Fr*G^c5J%$&9rEY&ni??7B;F$KvNB{<2ZTLW#6QD9$b`GN{{>xgVH%%^px%#(`2 zq`PMK5^{qB80oIItJ|JXp9?AtYZw}JZY$5Fc)|YWW~xC4tN$T#$SE#k~+4am9hj3E4U`o=BJA#@%=73ezpEV9blhv(17 zd&oVK>*`z&{qEG!kZYu}Z49kPNPw)w-*11*VRgX*D1wvM6Y>V}q}Rc6+z!gPeQI61 z+jnVF`(nM$qe@rju4nO+@C#UKqYJ8q+vQbg*L6RcnTm`%y?mUeAKv9&Sr4SiK`VGs zr6oLQhwm(rAY%o>T%Y2s@`=?Axsh?7qkSgpY5fREZIVT1a}jpV?PdPx*lbJSG(FvB zTtEPaBN)u1rio2bRvE}62wSd%XNH|E+zldUbv=3HcyvO$zkYr`MS9q{eeQ*m( zfI`bqfJt9gN}k|^>a&5e{eB*T^K!mgt*xi{X!nC`cC>Qb)-~k^=)hAEt44qb}=V-KEJD+SA0>$_|@d`X?-8(=o1_pBC|bH^1eyTI@;Jy_Onf_Q#)2(&`8k z?eB;o^`G<8>a7_?xaD8(DNY2MFHl7tiCzm;#3^SFXGQkCzPa&&w!9_bVQ?kIkIL>Y z11jC_$x~{nEf@PU`={H;Yn&wTa??3uc<<{rl2vip6euHI+#tHF#g_9YQ$hGi`xHEe z!^->BM!;ckDUsd&6E_}a(CFjt53t+p$YieZC;<)&Cnr*GCg3Zu$`H63n+28BS`Vt2 zV*Rex?J_G=tBUmQ-3Gp)zeQGvoAY*AbGzkxBLd9tZzjWP_@Qzx@eCC#<~b#2A~M|c zb~Lc6z;D&ZYk#MvRQ3g*FqkPnh;M+7TkBre62XiKStz;+|L7xdG+GKrkCzP9_UZtF z7O!9pGgsfr>m+9sPKzmRz`zOR2GM>1{XcM$Q2035Z?WWcf|FHky$IQkybsg59em9v z>vT{5Id&`zxRl=1I23W5TP(iz+Pm_?wt{@C-SxVJL zF9q*1`DCwvxzN^d>H+YFQU_!DkM|G9q@2&6PCH_q;0Biwb3VepXE*yLo#s+rJS?&l zI_61@SHK9g8t)UrHegm+p%0HbWES1N4RF?!QfC|a@e~VHB{QSo19#nd{!Sgbb9Dp3fnw5<(oucL4iE!!a+lmLcZM#R6zrT2NnXAU@A%A?| z3ayfiXa_XGx8^P79(6`_gGoOm6T|6Mdh$NvRNvB*!}`5w*Y#+d^9N!~zLAqF$b4x# zsxT&LIHPO(_cPCI`Nog(~lpCP37r+TF6PSMa%Cv;x!LgIb?2?<;0= zmsu*Esj<7knDjg{5*KVqw9_!|wiI>w__NWGbCiA^eGmU$z%0Gssn87}MXR{ z6PG&fs)%nn5jmWFrTu{^vSW zDAmVTL;0E%1-!g14b0OMfZC~*Fh3bZiQ&&_gY;hE<;vfRqs0wm^0L-{%pOi2F* z|MHJC#wqQ;HH-I=VRpW75gXB37h^#4xY8_bev5MX4NCyyCZiPsP)H6?4mwCpWu z4DDXI0jevNJiUb_kK7pI1DjjQ7WmBZ>?fdP3~8rJ&G-})6ar#7{E~H$8C)izphw^+ z+78i=2c8U@?JFWc)`v^#^kYzmhvtoL_Gc3TJy*$#4g6AVmBBjW{Gkd zGs0F?K-u38YE_27Xh{ry%`0s`GZ_M|ShM?`CrReZd>kI{(W(+11inYYT?KY6S~<2`*1mRaJlTZL{U+|MtB-J@niY{58>Veh%0` z9EC9jZjV==K*Eo%H_aI{>8i7O%4f3W{G+(XD&NoKC>r)a5CG>lGwAA5d2M!&(7jI} z!lUyh!@yktfSUBdx)%4av*p2zbo`Z1LzIQa>^FFE`q+_1imeqDlvbko-DUZl!?|rL zmPqaf2aPMNgp788-g9$2dKun1tm=Ot0pqWb% z1Lz>WwY6LzJYPXxi6?8Kh7=}|=uw5g^JuQ~opUc~3-FzOGi+hl|BLSgv8c3?lq?~3 zEG^9-%S2nP7&8U9c(nBNPSs~SwMjO>HpM6r&4YRgdq9Sb8L>7y6i?t^_)gI;AvwcR z)n5i5$1Iu@>+rVPFLfC8HWsSYWjGL(g9H5~73%h&nE<;C_>z`(c8Y3imxr})xeiw1 zHUN#n_I`5m1BawCy59k)$&N^7>SKkz5wtL+Vl8xLik{`R(oZG&{XK<%-|lSlJ*8$d zc0Lzsm7LcAmgFtAyD&h`uE}Voj7r(JH`Y!z7=a7IV<)c%+O)J78O$b&LR#Y>r;=uP zi4!3;<0qJM#Jg1dr7VteLAKf@-q1&)(Cx_ta$SX7p@>QtfoLfj>5;pbM-*kvp*BqN0UEPYN1Xsel3JbQ)wv=LwL!)@NhS z9k18OH2L}7k-nR3JbnR6oy5WMgR9C)(%y8;69{KOd=m!rCV1V0${X3Qna_+UsqJb3 zlaA6DZK1b+qaJUk?X2(SSV(|OLpicp?~%!+#!6?SMy)dqxNY{rc{sr4K$B{(Eyyk? zesC-|4<>+2v_+!|9LBL@W^JH7h}?}`ilF3~X5SsUq`kHyerVZ4+D^!Ofo-a?U_RMp z+TA&miFN(1m96O75~v9Tz$ND$Nbq{U1z9dJ7^?+)nt0HIrsXPVaVwnwc;&2D&)$Mo zDCSL`C?;X1az5K3v8pjRZzx(87NSaqS#xiHSJ<;X@fbAAl5bCOy%eaVuvMEscFD5f zJYG3YH_jL5EWCgyH#$tux6GXS0BQ!K?dEROL~)ED{3EaE8A+x=?cM(vKbK*BEm=|V z@n%1bGS80gNV_yYkO1%SC>N27X@9~K%iSgP23J{D@7>vk#IxQS#cDGwX0unB zH;{^zI%a1f8(PnOAItU_RH`uf8Fx50Is8VRIZG*@8`yi&6(+q^fa8Dj6A%@&0yQoL?g$ zKE#Ne!^N37=f5eb)Yk429*RB5s(YrT{cI-vgU@s~_FUw?A$yTs3S(_T#wM;%>V3A} z6{rb7xIZwM^meu=8!>X&pNDNOuNMIsIBbQrcr!g?pZ9%X@mk2xwGMzj;ubE`i|7xI zw?OJj!!v_eAvd=2v1jLrvq9zMtPy@Dm`;ahy`2eRsuPXd41h}>Q(@D)b2Mhp;s;;_ zjrY6%cB2Arz+tIc*r{0l>aFNVl^!Cey+zo9^S0t$ON<_YQkgy*Z^K*wG4~IfOeoJB z;M9f2Okv6_F8I?+J$1&vbudN^e~KZucQzlN9NK7bKPRJN^7}D+ z(jOV31W0$RRI_n~wC<3|?I?>93xFH-r0$Hr7i!WyM${0UcTs~%`CR7%;W=s2r_AkeX2^8OO+K!@t%)xma!lZxUXR5gKzOIk7&kc zq-H{=DgeP16e0mR=!wMK(D+wxZ$H~977o;+hdWg9dOS~UoA1YX&e|dHkUvgRw4je% z`=}W!F56`bZXOs;)X@PB&bRVrBv0}GQ1;aUQEpwoC<+J?N`ruk3ew#r2q@j%T?5iE zFd&jrBhuYn(%s$7&j}oWI>5-)CLKn{|SWyYfsLpKo?M!(1r4}>#r{Ew`R!n!sW z8=xx1n%_mmRmza%>%CGYZjY)Es+kstukQtFpw!>}YOQX#2`a>8JB{M!i7kgrVYQmr zkVjGJi1m8Y6zD|5#}+JJ5erN-{M{NI(Dvd#^T1?69yg&(-lt|jRrpa8xTD;?@V>u zs05VT@5Mw7RsKm;1ll-|BTJCL9>pZw7kB$h`RBHuV;Ba?7eICAwl?sGXfg+Hf1rHE zVDx_z<@ZD6S zExMYSn{NPrm|OOZQoK%h!zl!ZD@sX25}D%`&d6Ra)(O7?H@s)3vF{jC&!okq7t-mQ zFKvQNysBFtw`R&{EJ~7Jx_TtX{O*x+K<}X`!yy`uLa` zxHktHf1JZ>7S&j{N?4?39cZ?mg0sP#64JE_jt))Q71;Lv&cyAxrqC@C+{AS4Pv>&VJLgZB zsSpd>4OQ1&`Jg4++ZtiFU4Ih6m1%yvjEu&g024#4ZR@`w3as=zH(GSSL*fe#J+dcM zKRPLduNkQ&am}wcC|>ZoMG-G~2K2GND|g(nt+rW^Ye7C~{4?n7!S`NwW6Yeg9kG73 zxmlxMyppS)qG|V=uxVsJ*<-fJv2=T{SdG50MXTe0vNrO&au4d4Wjo4FqpA#Rtw5u# zvbMO1Dc8d3F>euJ%IkCe&y+K%lE@Rc(z#Tg+a%XRUN;Yq$jIne8?1$inHt+q1DXcKylrj^Ozf{N)^11s9G$JM^BgE_mr?f&H0ntMzzmqtgEmZ9B!Vc32q`{{eK)GM zom)aw)HavR?2*w6g9H_*fg$(fR!`pevWlLh0lMJXi{~=kWiq*`l3gE_+%kUX&YwFu zn*9AXj92x+PrEV3e9eZF(OP|)0<|DqR=XIY9ipFvJsTT3p8sdqnEzk1M)8@vbZO|$ zJ@5u*tsolupsMO(GdqhK@#LN~VBRe{HWKQOxKd<4K20Ao(Dqe?At zhnnj{9)3M$5(*4H!c6hJAVtvwZ)z@GA339x)NNz7w~Jl=9+C$$=>3NnJl&4Di3b>m z#?NB$r0*Wwj_$f#b#}8@UOiItI^q=f@A}G$4_r2Y_0=(k*=Rn8qVaalLy)xmA0n9y zo?znCG1Ij5WD)uAp_b|nQq$($2QXep2|BG*F^^?{P<5VOOYD=rfws_ zl+nt*_Cb14Wg|K@(SMk?@_xy%d+7YATq$a%`3YD@^fgNKwyGd$ES@mt1D^*fYAP-l zj{ne{oB9=rL|HR2>rG%4b>db>Wd!uof7oHpMH>3-pN;d|k^p%9pWldLjD-O^^p}L( z|HvS}XWTzSKXR9I-9iiMgHwXV{vEO!O8B(}zC46xtRnud|KG==PH+F`B)|ZI|M5hL zjs3qTs){4cOuACX^?Uszu)46z7b=ajkgQs#DpfD6&JM+hvo(;2sPS)u*0Tgvfa3B8el*7I~VnGOe^FS3$1c>bZsu zjtP=y&h-cj_nm%+QSuUN`PeEda(0-S9nVOUu4^^AZkx;v51c>cX+wbb)sipd-&vJs!V0BMWuT=Kgv!UFTQm)*DIuGR?4^`XB`6!&H#+aaW>W-Pn81ToS z2}x~O;ZOAkZ#e}?;@j}|Vkd+w)eozU^o0l*SqVIg!yx{ zr7gvl)gU`w^;|;S)4PT$o8-^+Tj#NR)$bKF15fLQC>QPI`HInuC)?>Rj()*gs(d20 zzQ59F78w#j3h~bnzB&VgoxaWs(+wfQ+zV_6#1~`cCk%u1K>%LAq#dQ)VQn|(w#cEHRN`=^FnO~Db|09_{9Ke+!U(rSa(h-nqqFCIlv_fl; zfle+jshx;0N3A0Eg{yg}x1S+t#Z?6<0(zWG!9^psh@ZFhJ5JUuHUPWipGXQS1pQRS z)FZ0gLUHmwVB$BsUl;!Noktw`UKQmE^W{OnL?N-3W?=nBEnN7t`PJ6wuAPBQ*W=NE zkD0m=0s9C3N}AAmAynt&vf|tF2#fFOZnvlW#`8}gV>xd!0x!O1h=gG~t5e3v&u^uH zwaavQo(ck-WiXgfa2O~PYU!F;?j@;=za8tiRV4Ur!ikuJhf|@R6;6z1K2&t*AH5Dt z*H(>MwPHx666IC#<0@l5>+=2OX+QIf{p;T9v#tCHjnt*DN-F+b?;n7S^f8XbYIbPf zPUS6Ah%H8#+jw6SU?!)}-KwwI4e#p0jX~ZMs-zRfmCk(j)>ol?;6+&U-W)3)BIJ~6 zXDkQUUp34am}|zq@Jhzlsv#jdqP+r+KcFCcv3H1?o)@VNe7M6FSZGF66j;q_QT^a3 zUw^sr#9$$YZrYAhm)^qGtJx2|?_KNV1$m!d-}r1PB58>Tn=)_)s$Wc&LNmg`#1a#2 zcFzmOW*%gxJ>O9l=IO7zjazPiH9M>y8gj`a z4pKwPOHr;Kr3YSQOwKEw5gA+>=r?SN0y237;zPiO%s=I=c;T%asDURB!s`Zisu4IA zE&C2RfQnJHveCGkz?0;M)l8ho%d`rWG5cL+&|<1glA3zTlEYT~JI0h=x5B9Pxo3)_X>T1hm4#L zcP7Y_??{~ODeC&I)j?kxE@ue$eB!Gc8*v!uz$z$dnI^Hu5NGts+0a^@%0)A{U9_J1 zIwMoim1BU2Oq%^d(YVVoF4=KvyHpUC#CdsZ9~}cdl*77kX!0C^#J4E>K-(tt!|VCZ zz`PcP`~g(}#49+$RgKUJM2n7D)?5SYy{qf9$b^rgHno*xuBjVbo}fs%#OL4CEb=|k zeOyYDFj?_nY4XmBO$z*E8s_4}BN(G9$*)sd3EPJ)^OHM!P{!bfRhL!Vs+kY2Ne`S2 z$Oz8vl7LP=Q<&yOLW0#y^W|SkeK4)y8ktSN-P?m{4kDUGPd-FQ@VXf=q4Y03EV`SY zLg>VAZ`N8#>r|;1k2@l6%%jq>CDJq)x7-OemY2d@)G)QANb(94aa-!J`mMrl9L91I zE*TB3`*<+^bYHm{>yNqgVSK{rxr((*?w&8dTaH+Mv8Y=;m^I-797>xDUE&S&0;3bL zyPAQq7S@We!sfV%GcW`#COXivPqQhTlF|0`dcft9_5^7tahH~d8C;mIZ&Bztqt-lU zn-WC1kG|p+ZrxeF`VxT~FL!+GWDmyfuKi4oA6TA?QdNWovJp7j{tmk9O^xtVGVVCK zG|a2X>_PhgnxA+FiiLiZe=5GHj?yEg@U3wy6EzICso3He{ac2?B@+b)#dWRQu6cGE zC7o4K+QX(-t>gpr^KG!;+s5=6a~fko6~FpdSRga+%C?9hqiOtaikNf?!3Cp%;>N=C zkKfk3a8|CS9y;?!Rb-Q<$czPh;vx1QG92tmoF9v7v*4jgq}lXK3^Di^=%4ug=owZ-+DFMX5c*i zVkF(&s;o5Ox1$Z#?I~wM?YAC7lT4SD{}#!ar|mF`3Q3Yvuh!*yzWPnUWi5RpI`bU+ zgY*vSCQjSYijeYQ^<;!&HoDt~WxS{ZcEut(Ktc9!uBfFv#gNpD^>K#0JInSR9XC=8 zPx-jGebe(}iTlyIiF2V3Nh^}TYoa_Q+Khl#unK6VM7L>Y0RRGptur= zOSq@UVixQ_TVYtIU!I*2`LgcmiD^5|f#`RS(Kw!VQ%Le^Vk;uIJ_v=m7jFYgR0u8{ z?YJH5?l#ir8C7(tQiP1YI}`7t6Pt}kS43J+8z*+bBES!H^tFe=$CwE~qWV!CT^g>N znb#U&)shp6)tl9t)kD*lbFCN*^thRnOrp3)AE1B4$X`s|m`S%Nz{}uVW{+#@!*$j< zE0@t~dM5UKE~^DdoXshxVXg*Ll)k`mJF7tF^Gd6;Y8dKVrYnBep9mUz8FV7K80W8~ zU27x><*cdj-@af6eJ^xa52gGawnT&BEQ|ICoCyu-@iHZw z;b5>1&kVdEbA~NE&{*O|^VDeMZ@1($a;~`YG!w1WYiEMY_=@R@OF3N&P)N` zDd|E_@5r#S9I{B}N8Y7D!^JHx4D+L=c_jD0LQDy?gGfkq5Kw8}@k3m*O75q2hdm~alFR2)q?ZiF{ zTiP_gPrRDX&A<%_C>}ZpPs!*(&!q9susm@-0CwNod%Mzgl}tZ^J7zJJxUNbl0x^#T|nZO zd;`o?`po_?ZAW8yZmRaSySfGj=pOJ0>(ECZuix(W?j47ilwpT@n)a!;0*i9q{7=qk;#tO(>=gBOLSJS2gPNVn2XK@}~ zrD2EIhK>z^R|wQ$YV3*+(&+LegB7YbGf-^4H0S%0J2%%e!p5Gc_gg8BOOHx)ru96^ z0PJ&WLJ;Lv*m{Gp9IojGpF=e4>i}0RV~Q=VOwBq?A;n&WDFp2*j^{)u%oo>ee*bLM zjxaIgC@1hL;~ZOJG5Vl3XKGLhQA)MRMm6Rpj;7Yk^dNVhmU*c!H=XUT((rTHI_you8kMCSGq}N9) zGsL+WNkt#}=sJ$JedP9FpuH2v!OFKKbA{C!LJOOR$;%IuSMuRb;k507qwT)S{9< zHzOtQTZcFZM*xtR?x<2@nq(@T1uDdD7&ckj{$LN_e*1APiK|=L3>{oe&Af26LYbs+ zpFtBhOpW(jALy8o>`a@SAv;(C{9E*Eo*XOAkg`5|T05^c`i3LGJI!nHVvtfKl(O}= zmn<~oD}hM82CUVIf&L#W2Umefm^(Om^e5R-o@GzoaDb8$s?Shrq3T598vL`dPkHq) zK1!ErH?=zUe7=W#n&eex?#DEBm@iJh3$AeP%o~ZfnUClYp*IhXH`DW9+R+wUs*%$3 zu7|%b=;jjIN^h1sFUF1BHJ1t- z@@yQg^(ZMoP!O_wRZ=vU(HHJANuj0DW^ht3^+{Eqx3AWm;fqfp(wU~fUdV6Ia&U&! zJYO}|iG7D=i}L3@plIV-NlqoB=dn*s)gs)ZvS@0)&9>QD)pe6w2s}Z9H!ue;o-<>I zDR_YV9n$bXR>BBxcGT=&n4E$PhNg=VCr1x2pFyB zFu^5lv55GEj;^-sv6Z>d+50Cm#7{egnwb&br6zSRK}ffU=LpYrx8tMIk`WPdO5>*( zp1*J*pE#nXs(DXm2A$W~O6?cXYWe^p*mpq7$baDM;@b2*P1;wvp7dQ(B(4B?(Evo2wncJtwVj zLhON-WiXF?#^=l`VkW7(ER5l!*J#{0-IbAdQudruUXQgzgIH-P@G)2)40-={eku6d z2i)}(_f%V(Et;9p?TuirTb}$_R6Q@bvtzY=(_250EaABex5@`AZnqwhir%i3DK26S zw=eMjvTrAGQ>R1d0@gM_?exrj%w#eO}u001{vO zTq7$x@+P~Wo#vVRJE0{n@2PZCcbmSELianAw5<9mgHV1*GApMzu-iIhHu|$yY6YDN9)x^KaN|A?3~V zw@vO6m4oQw4@{Sz9EZ%m7ikKBr8e6$KkfP?qwR`K&TS*Cm;0*DqeMp+-|YCKowsnY zP(eAVFA9@W^=^DI|GfZPonHx!pV~EB9$Zi|T06V^O7unztY^i#4t-;DtQ<;3Q5a5E z@hFi3Bla(uT`#20i_f;`2-BoI`~C#bHNS)|QRg}VXBMt_o+7dsZ!W;c$@>5#@w~pq zs$SK;L64`at7=Ln8M~Cmt5t}fv`HTWyo|T&`&u#cMzO`-nRv=Mxm1nQyW!hUeV?D& z;VA?Glq*n5a=-f0J|kQaw+}zOm(*0R3WZ$5GFCeBVe6^w%oH9P8dd);YEeOos&+rTo%=8LDnb7sn; zx{7it-(nFOML;#rC9_;5!D(1N+8php6P;de&+(r+2X6U6rE=*pvD>7LWXk=(7$ccI zCmO-Mb>~Fqz})eP?$bRL%VK-o?#J=-?y3|Yueh%xDG3c4n}4k^>1g+yn`l-P35K7V zZen3qiwn9u7lkC3ggw|Od1cX3tbjvcmo znN$%^K8%ZXjl6yX;ZtXJ3Rq9f)X<*`IE~;`Pz;>@vXm6FCpUeGSbBKEB3$|SeK)m| z?EYxY+;o?-30*0F$Hd+TnzPtb~soe1D zWtbJXW!OlKFD_h7rtJ#K!+VGN% z#AlEBI7EoMmUEM_S)G`6h4_5Bb%J?Ggx*?c3Mm|CUKXx6E}uc9LiSjAuyoJ-fL%Il z(?pqirG16AM~-ab{q-Zm%VoLya0TqH&HJ1m17D_s%fcs(m)s?7Bi`XOb# z6Md@uJ(jj8OSP$(qU&0El!}-M%G_5L27O9PM`w@g@>g3zYSa{j&fTktvXA&;Bqklx%MFsbUnG^^pGedVF!=(( zR2Iu*lEWl3PWqbq*YGlw!U7WI@Co^htW=Ja>t?4c#dwdxE&H}KI*p|nOFBJs0Z7Th z5Pk*l0dm)X92(N(wgrdGQ0~ULxpHb;9O8!P6t3g?A{VAS*!FiI#co&MCAs zp*Fk!G5OwsNcEWb7HjO^<}TFkLyC&cyq!1%lZ(~o z>h%)4Hrl)j8!pFX&`Wh=A>&+5Ye_R+LQnd4LLF4pune2G#Ee579e(?5-|~gkH4=5f ztfHpANlmhGQ@*lom(d=#tvkYF2NjS4v8a~Rqq$vV-f|ZC&Q=#%mDWuay_5MYTe2J# zvkeR?z8D`!NgNtO5a3YT`s-Px)n>?X_OUSA1dExZRmo-;I^~C;gMy@HiDsQd~FJfXyf8NrG2S`?7Lj%C@ zs)XD;dR)@5xgzA2!ObttN#3n3S~}NbMa@@Vt#8RKhRo_B6qF%<|)vk_cU$4pPR{3 zzwnT*@gSTV$+F$*uHd>s9&N0}Fh^x3)`Wd(!8-S+yQVwIDr=WIBMerxlcoZzxt$y3 zODqeT*L>eiQCwy((V?h>MH6Pe5-lc98;BW3)th<6qi1gkaVI~MmLRjkAS1ABoU14& zGSyGtcAH;ob6j^xiOV8THFP)S2huVbUFhVl;hc*+FiE)#jwWe4HbKxvRY-m2gpSTK zV}8TYtI_!_h9McYD@#IWT9Az$kkGyGAVqxx_!j`1L<_L(AD~x?TmIG)4*lZ|wQ*yM?U~?I*f;IaRo46SAoHu}r59j)u z&yXHykI8xY2^<@A>N0tdD1Ucg0p`;#t#odx4qgKJM6#CvATo`TgtxJcN7*cn&vQCmg=~N#&bVByt@uc&y2h%jy{i#Wmd)qKbQmMm%;Y7jNFj@AcdGm}&f2Cv%&yW%T^`Q|fl=p&@JEY@8dENs2cW0p5eM$ud4(`h z7og(aO|8uvPx^OZdyDbDgg3+(_>&Aym@bx~;Ltz3HC!>xOd!a+;Ko_q0QCo|#}?~7 zGciF+($FU#6C2jUSd(p3kg8{r)a7H;MmZJ_D@X$vNP;t7#T)_n4D` z`d$J-epEXh1Cw4cogZGiAC;l@YcMw>7lslw8I|F3O5oM^Yp8FE>(Gw_)JN;nzP5)PcywkEfXBN!& z2$+TP9;ETt;3TvHYkH6W_3*@jk8g@gQ%MBl)iA+7NQ95f>gI*w6T3iJ6sXMOM*LHf z2eVQnA0_-u!MVpDp#O_aXwnb|kvdn;{XfrDlAB_Vtl|j)e1kdJKj?!D;_}%YUQNxJ z2}9s5TMwsGaDd70$sW^5E{<94$G50wm;=^f{`%jKz((_n3bTp|NGO_eeF5ymnD{?1 zi6F{cW$VK1#+;8tJA|S^R1g0BOyc%d+Rh9IxpOrco%KMOWpxUUG$4N5z-nk5q{7dg zF#bgr@QC%zNBzaPzkd8LWC8U*ue=|>B~flBgRZGck6ik2p#dq=D9WQvqZOoxxrZ{Vy7B%#qMz>AMMh=wz$63E8rH7er!?SluLb&|LL?8CHmvsmZA0i z=`JYeTpSyQJJiROAEiCkvVYjzcB& zpzw3%kinq)nf$Evi0njfsKI|@K9bN(SaPtJ)TnM6AO7=5;$h>%!|E#l5^+C%YyE!2 zhvxL7={NVUtd+Ff`WwqqDTZd8q@ao=M6~?37~$o( zG+=V(be@Dwv%4TZm4~mF?;eTYT(87}`2>LBO+QZF{;pEg93?M<@vRv zkb4HxG#g(aT;3aY+z1~|(U+&}!MEIz-L?$L9Wj)q2rJICcjgjIDLNlS>{q&+@*eaa zf^ScAdjCcV&6)jAs8cTY=z4TiYf{%l9ET$VgfELZciNkA&4V$C7|FzN>{idkC ziXKIE?U6x$WfEad?8KpA;9qeZ)(lmgRY|?{h_gy?hD}3^nzq>QuIIpB2 zouy@FuQCc2RewuyFA_<0jUA0Bw9NF;Z6xNvx!L+^tJRR4_Co|`PY~ghh*ioTJG2uD zYHTb{@?L*l9=@rhtUBaJYCKzMrd@cjaM(Hoz+xjJ<0a?(RtPqTs}PU$kB_B;!o${j zo1K0tJwL=fv736O{{{J?TV59ar`hS7=)>*QxskCpAyW&jg8aC-irEagAotf{Lvi?l%OZiom(B9arc=w>T_$pfQ_0uEyz|zSjvO%1Gle zMg_4Pe0SZEl-rrZTFpz|&4jkaYm1nn`47WJGP`ekqv%n&yc@@D&CNcTsm_ZOYdFyt z3MB@bCRe6CO3d3sS%DjsA}QXN!jMNwOOQ)^w5M`L=hL^tHJ4r4jn`6euD$Hd?uL@p zfca8`>2LWA&0i>At+egVPS-A<4I6&3z&pRWRUg!4^R4aFaIsw)h~kCUA=TA?T~#>m z<#fpCExR0qWy!v1+i;%OhLkqd-g6PAZ)>_z4luxuOS8v;CqjMg$OFYVH*|ILe4#Z1 zYlE+eYcPeK-PEG}Wb7#wzh7n`8wSQ78q-hDdvHvj;}MATk0MPdhjJQ=epY^_UT6*< z%&KDCiw3E$XHyGk#yV9Zc}#CAIRe5++sAx+^65%5Ue=86o&4wcC0Oy1P>-wysVN0! z|Ay~$#GLYL91g34Y~cq7J-~l>TzGsF_Zt%ciIWJW5EXUM$2`WW+dQb@z6Q|p%i=~3 z0-xVM2_+K_J!qL740F|yMf@`9;S#R9#e6qHDz9Ne3(pCE4S=yLh~?o$j%Iw-nr>}6 zG5S>m`odJ*GL+vl@=o@M2dY{c2g`;=D^-+P>z=2QNPj3f>;P?TwW+A9uv@i%>Dgr8 zkbiaUhGY76T?gE8`9e6Uk3#(}LSOe1-Nk0kH#W9LyT>{t-t+P}`7SLZBOwAFSa-Tu zCv6UVO~9-D#(lm0+AC<$l~WkJVbOg!=@9o1d}c*P2n=_8=!?o5q21|G>S;w+Le;$3 zPXSvPScEMv+oXCoY(DXFh5LT&_H$e!4B^=v_eWW9zJ+8_4H}I3o4a$|0$&))>eh)u z*?3IldDFcK>^$n%O)8Ht;1Bken>#ipPDbr7KW^l~EmzGG9MD3y3^<%>c&%jT0A6vf z&T2aRsApL>xg#FyowBCh(4F8J9d!@xV*_OQtmh%Jz-8jMoE|@%t^`p4pja2K7wq>S zQ87{MRj*{t`qxZ_d7;2vS6_On&JTMJQeKyN3#czUuo@tf;$>mKpP}Z{7XLnWZF$GU z8qj}4*L?AteD%3e9z)?;WKHuMCe~^(n4)Bf`}d_n z$3)K*R{+h#1zkAi2w_gzWYd=$y7@J~2VmTJ!!INGOPnrshis{Z-iHH9ul%eK8@Th1 zN?3T=R?wVT012*Wyz1Li|4sZm(EBSh_mVTAmsj(n$LL4L9wjt%Ou=4#kohnygZ4^} zZW*%S709;0am~hNRegQHIKWZrjv(pXj9npotTCp1U6Ih8d{T}PuGF#>ZO za~}A#MKw|vOX@39D5MK7Z$w^(_k8I_tk+}KfHh@vbMt@yc-hlJtj7Xd=N;tv88$T# zTm!|e<|7{{)su4n{CL^BVzw;xo{<^&H0~>hu=}%_Gm_YwYUe#zJOikNFMG_)rg!1K zYny}#blTe{EDkpc8Ak1zx3gg7?fcd~A!Kvo$=V%C?*Nm*@zq{v3P*e9=~A0uVAu@~ zR?e2+A&HE}M+_P=G#{~cG1@_T4noJXG95F9IGbH&j-YP~qFlv5?er9V0})=`FRgs5 zj33|N#`j(xnF9X;@h!G(1-{J+IDU<=}r| zowsP?NvXBIhksA2o+b(9bO}Y^KvhOGzfCpr7X#V*!q%O31pwWi={rB-UO+SG0L7O?YA$O}sx0zDSXGtt-i#S|dQatAC$5VrNj<#xm2`{+ zV(>`u+kBGI-}7sBuVRg`86BRkOw_bw$$N545pseyED@tfhI#`WyQV*{^dUEl$HVbm z;j$i=i}F-izg8l?gUDUV0O`_k+G8V15e|ed>wK0~t;+Z0%`V9a|IGrIRCF`R%Rgwo zLtr9yY;;^E9t+%_bpV>uT_%CET6;wEiv=9F4p^prd0rG;vYeKIr_Y%!Y`&$!N`nSGqa1^9zbLR>@=Tml~SP_7k|Z@i@?X zp)c9HIa~E6Y@3@(TO>`Gd&&N7BFq-P?%lMlHd}v`OI(Ib9P&Kx0xK^|?@}!z5`-f3 z{k*@n^dOp)w;y6)KFP``dj7TbHwqnH0SX2Vc3NfDg391>>C&K}@HLjcS1pyvbjN822SlK*S{|=*C?c=6gJ%=vrm({P` z(8o9xAbHNmAM1GDvSA(v=M@y0_2dW+4QJkmR(`pFm9==w!w_`z6BF<~dwFA%uv<;J zna~Yp2}9yoARMm@Kd8j09<{?u`KKFEc)Z?3mMKdZmgP;tW-tDn5(=Ep6nfrlNZFin zp#;lEjS6!{0PARt>pNP=EInGqw^LBldhk`ZLOII&C*X4Qcv0PUunTxCSD56O^M}`1 zAM1_33r9&S$_m}2@{aZvKKeNjH|S`=$CR?%PDZ7@QlnzZT5{z8yFT&Hs_2re2qKs#oHmG4EdYX@AR- z(PmB)%8LcZxZOdW=Lri>?oNGMeph?gtpV2%dLs8>fV;c0vxzPuqeF07bxJAgt!nCA zF)O9Fq_@W5E?6ILy*0U8l=D+*HNS)d4NFTewSrjI6j|p;!cr>?*tVSUV_*`taBrSS zz`5|K2F=JG;Tfw1&N^N|JyKWXTdw%~e18JhYvL(y%C1G;L42$ff&H)0&VKNPzS^fF z@_jG!+M>FUJv|dji-`Wx#fV2vOKe2SA|fF?_(^U-dB5@LQohrJM~|*}r{5gnK7A?N z&>A$q482Lh&za!kV2n16WnQgtZ8q9D=LaMbr3OJ^zW&&tH%~>hLyWiboJ8NNvR>2c z!2;y=_GYzw8L&E3zpgX{)nXs{KLUi&4bir_ok$?LQD$?4dPCdKEHUA9A0+~DJ`hT; z_B4MzC=yrh>l=iJoVOU>awno_+}4$$YyuAc&*X@n-7e+6p>QsA4I?@Z0HLgC|=o5}206c_s;r-K?i{zz2(DA&iT|6l>!Z-oyOe`t5k4s1Rr zqipZTRgbji2q`k=9n|DVzR2RKwwrlu@boB3g~fh@M9sT81u)U8n+F5HeTQ)Z<}ZRX zemPF)Z7{`u0Ni%Ke0B`A)Dcl&Ji+c9S%w1FOCQc*=35}FHbW#Gszj-?nyAo` zN>%`OL40Yj$Ci~||ETxuKDMv_&46G{EnaQJN~#76~G0nvt|X2IOKwHGkz9F zj-g%tJu;u~n#Vxf7$(#lkbS}gUgTvo(o+$yiPT3tEcYu=U zFOY}D1%t+m%GS&_o)O}={ZPyYemmqe`w-xw1A~LjhDZE1FW?g=1F4Q(fDYgL0J4kjoyF7L~kCq2|HjP&<9o>%WaDUC(FbH@v*|q$66-}thWQ>D@y-Ms| z8&NF0yK$>7%$W?ppQH8wU%^&QXc=-S2=Ml^oUFlc2I-(4NAv{{ciGHM?DBNJVg@mTy}y_)qBQ<%kviUnIb{PNrylic3{x@`;8=Ig-Nqj{XQ=u3#8L@F3NDb z2Q}Gzfh!C+8&GGh61yg5tK3VC6J@Pyo~4qA*&CA91NZPxaE4R8$$c>cA$jbd_8X;~ z-2o8t!YSOJjk^zz$}vfJ-h8(c(v~#%B2xGua4vzbx`>-^ZMj58-bVB(^Ud+8nlPPC zmx`iZ-^F(3_Z{+~7D{l$TtdCsvVNl{W!>zhjb@84Z%EF{`d$}eWLi;AYbB29Zef{R z-%(dXVQ`Wct_h3-qF33EGCY7G>x`O(&(^t9-J8WEX<|GQg4PmQk9f$LidnKCVGD|| zNYB7Pf2St=0;aF`lDY8f+gOI*Gb>Lqk3(eFv04|h*?V~sx{%3%GMn4u(nRGqbB;XL z+cLm09mHL>HHB?7EqV=m9gi~8GQPi;z(0qlW(!e@X|(s&!3*^Y=m*f;t^*7eF%!Ig zZz)j&+~>K$lp^hqS7AmGOKiwWdrGXUtpTVHyTDzw^6>Z;b(( zPf|X4%Slk8qS4q7XJe7FS-o8LtPTf`Avbv_tFm6{#jO7cRa`G_VGRn4VK<453%U06 zK^h}|4z$~>g1_26IweQA#M&D1iDE9bjT(&)a6_D3JNDGe&jzrws08GkY~ElEr}}z- zrLt?ecm~+KI4;-M_~zlS-UyHsPOWON%&FQ$nuTRI4-dCcd40beFk^LCz~l04m{QRJ z;#(c$#JcB|8oZv$tXW-2rT?Vj9jTqN7FS3ndiXKmL9SjbD4$ZcCcT}|9Q(!8w;(=o z*=V=|=MBj{yu4nH3%)!`WioI5fdsTZt81SV8a7ockOGiRZHUo{-aG5ZYW>~_IKqp= zfD%*I)|U4)Vu)S%LMhFx*_yF_tWoJn3D}%GhEk(b^Bn=DSb{YomwF^mBXe@|XZtK1 z={BpXKP%+=3QH{3J-UCV!-H}XaJp&BAowS>ejicjCJMo9C3@6Mm8m;n!v^QV_T1jL zr})KQTZyw9ISnQ6XsBxd;mwKBEB{*SCnRv)I{>nc1T=wpGJi-e^2RgK{!t*B{e-Ui zVHf&x<#lGejLh)O@f7;y#Za{8>0!;y*~&bvpl0_3Zqx5+p}FTT$kyCAe&@RCivbQB z6nSVFyKK#@?{#;sze4=GC*;mE8StU&PIcAmuah3!AjjtKl^Jj^zeR<219>cs8{Ms0 zrK%p)1;NP9^SLw~H~1tpi*UIkSML-8{#}6rpwd)dK*DwD`GDOGks& zK`!%$!ovEL*9WN=vqudm#$|n~sYUh+#rs8;=CVe!+2+O-^9rib>UXy;u{Xa2DRjZ` z%OnOm)6Tdy6N-^+ATMBO>Fc%&9jQegL0gObl|Q{0jSbqu(7Qd?4zJm-Z3x?<*mwJF zHtp5q1H>fH@wR$4PWegM9A18S;UeO}oVHjNrZ5dCG?6pNO*xP5*;B$~==ej@#!=3*YP-a(RA3B4olv%IAq z-s=$Y$8SG&`5iCzQ~gcYUvrw{0a55j{Da1uGWhb*8Rb7y>3%T#@3znT;*6lx<&?Dh zWkv2Msn1*63R>GkWe)`I#^5@x^QKK+sks8z$jk*dn5u61LCk_|59oZUSJ@6(h4oim z1XyCweGBdj=-2-C%me5!=fxaW_;qCNZKX$WJj_YoszrP{-LGPL7HZLV__1{brt$l6XjS*O*e-o6t1mT3;Asi^{ zHuX`S%1WCKXXL+_^Y8=GBYA<;1hR|g1A+1(kh4dw6Ngt72QG?lQeZSf35~no{!wSVEs!r`Vi#?zBrAi2sctTohg zcinziS9p7Md3iLktRoG~=y}taUy^4yQhh6M3nP92x6jK4jB6pZ#k4)N?9rnOMZIYO z+$48oW{+l#6*Z6*;zMCBcKbQBQyt0iGU8930+4u`X>{Qq5k`^$exbn8Dr9%DI@Md~ zPm(d!am?^qeH( zogwl6Q1um1RXtz0AWEkw-QB5lNjC}-(%sz+(v5_4h=_=EcXvx(x2txOIxvj?KTw%uJO#ZKG=PY3dtg-Z;P&HU^%~e6-d-#T|1vO^G+( z+RVR~lJvv@dv@n}?VYd}lvvNi1L|<=lEnekB>H`S-i44*9FCm*HBkcggl9o?LtN{sMATozmR zT8^9qt~Lp3e|`Hvxz*h2pJ7CsDsVuP5yv9rd4nxky!&Q8f`>2j2VRp#t;XcfR6L-Aa%d4mcW!v}RVjiN= zYKij9BX~h*_l+&-IT@?a4TEC-dc{%WkZ)$a?HU{MDT>DpIG63JX_G4d)yf3|tI!=o zwJLHb2GM4y+d~HQ`{;L*^!MKvxDNw13mcReC(P_=#B6`}j*0bp+}Ryfn9lNX+_(sp zYRhZCddH4+dxh(_4Nz;AAzdOiT5KDr}Z6-)y|UzdMO^ z-kB_K{<-qT7|Pa*rYmTw!1aXJ4tEo7dh6WCzMIhcmW5HcLYTp|-jYH4emBep zk#N6{(!vOuisb1W3Mb26${=pZ+JX85ihsW`+iDD9-##Q&Rc^X`r_jdw+EUA7wmX}N zmcE{3$7UR6rp}YGH`a9GyHVsR2b>f%n2af<`RQYA-h^rw4A#44;laU_AsWdTQh8_V z7htS$qilx9&ztUcnZ8&z?vdUebw<@$U^d<#>8aMFe|jMW4oFCSSY10UV9OrWQZ&4C zpL4ZVUFFg9t_XM;ISo^0xN2!zZ|8l*`va66b>rL{j)lFvIr=`)tORevpI7OQeG1`jUC}8+)OWL{l(;ThT>$W{TC1Jhb}Nesr8>eQhLV4 z&s_%e7VHWY%eSryI^cR;-o@%MkUC&vC4+aY$fSw_H|h8nTG*ceVW zbKE~hiXj$iH>*r$+dNFibM*1U8Pb(^c!T6Ydv;RSJY}mQ{&=yJC?>F5Fi-qmszlLg zaQUi}Uo&%1gOcRZkn!!6m8fhbjq~vS6aU_IlfjVUBAv>QQ;d)bS}P@+U|)s#7WPOR z!ph&1&4LfN6NE5SujM<|FA^Wt5Xub42yAbbsGjf9YG1H(`&3uoZi7NDaG?HH`E7l# z?}?yhm0~xRL9aCj+$Xo6UvAGcwOl9M%#}2&Y%-qQ!1v6P41#BV)07*! zhwAy9EjlZL3t8~y!BM>^qHS@iP|oTm{Tx%FPrHn>0u;ev>d6<K4==LudMtGkEb+|!jzm-vF?}|s zmdYOqyBvxA8{n;*%)gp*v6V<3LTxZMwV(LL&ZJwGC~<~cX>%6CK=JA4(?D_<#mx;> z9UkZF?6<$0l2LO#Iag&PMrde8s*Lz_&hJSVWzu7Im@*oJ&Afvz_H$LdL!_+2%ARY*haV$;x`7_%ps{B2y&_Ab@P~Jmf$zt*S(^E=kTXc7 zOh$E*2wu76e9eh`^}OhhZ_6?JPp53%pZa7PcO9?2h0|ItG8QcYBmY!#=?Gikfz42Oehiweq0<2 zZ-<8yY(*VzTjnHauTyhI@kh#r)|SkV zMAycA_1T_Qr7^PX9O%{?%h4k2S#%|)FX#t5-hniRNH>xdk01 zAMY;Y>m?^^iO6aiWhhEr{Z2`&LQx9lqs%yx0v+sdu7jn#*2jYny&x^-h$&n=26SB7 z3SIAumoQl#hwO?(^z+fXsYgOuCWNu~w_cCp|0^-SgJ2#&hj`rQd|5XqdJOV**jQLt zadx4aay@^3Ph^&3m*#uLR?tf_;uNp0LvhReptG6Qs0m2v69JSRl5{U9R?t?^2sCW` zDaGXtUvvlOZJ2Ijqdr9n7A?|kh?$auj8%DHOMu}|DFy>wJSZ~I3td$M!E_4O3ZLDU zP1xfesYSB}Hg;Z4_Du4XW!excsn6lp-lJ*mz;R{ndR`Ayg2m*wbbYrN!li1BjWtI` zH$6I42N@%j!u6rdd#;9VGtvrn5wq6sXJ&tJG2K~HujlLbei;KyHYTR4KWn*$vU0N0 zGB)zD_d3UQf&k^r8xZol+!DA(KWGn{@3mi(Mn})j+@nD+bpF;;@2Ir39%0YEwY5ql zWFMt6TR+us^z-y;A+PHG4GPKCjt`SwSwz=0lJUh+M~e;uE04sE@_VR|AS7N%o#Wu- z==ieq(Cq5#6cx9H$b6LZ%37{#$CWQ?h^TzSndDl+ngibfIQBYyU8-_0Uu4m7*}VaJ zFvRG0iJ>)Z(^}*-$wf(AIje2eAKEiau)=ck-kn8=J!Emdbcwzgh^6t48RH%wDv$-N z`VLEKe5cO3v8Z%`BuRyM-l_*WPTkc0@2}@a(1W@CF;j-%FAy0+`rFhAzFa1ze-Rd! zSKiop$Kkq`VAvb_KVch`tn6>suzo4Hc}jIt9xeJ zbPa1n8*9AJoa2dKK+?loW>jBj+e=Z){WqW=M_4URm=C2~7tc3IR^ABix zGF^hGNAZOQXuXta>j)@p*E9eQ(`3~YYt0e7TEaN$+CFm_jgD2F-3GG6nLoO9ogR9& zub17keo|qif^%}t(lR*O%ZdBzrw>Zc5(h!yuyRYaiz-w{71;7p36qk42&WVJ-Im`Q zSnb*WJoND_F+ouuV``@Nfp^=kIZ|X=o@+SzM3RW3-V%I)zv?NBvjt4)Wpdkw>iwo{ zp7_qjhwHN2^SCcHJ-|I+n=}13Q6}^JY)MbUce$Ah`V3fE@)KJM zVNnreD;UR918AElw0=4YwHUE6k?nWY#eI~y+AlUfQ}>NnA2ge7`_8#qhId<1-E2FYK1rv^1;=oCd<)+{J_!Md`Jf=}<>?6VLe^|OojN*Hks?Q6Hzj-S6C;5WfrI5~a+AG03~+1or< zH)AupZk&qY<-ItKN1#xyz31IlV!AY^x4SLAKDsIFcFS%GwDsY1H$RPKVA}Vh&XAE5 zaNOfGu=CouBzNAMic8#zW=|g`n)6Ep2T5~!_0VqKdD_d0UZ?Hs8^!9A$T{ z>|LL<`)zUT6~~Thaefzra77Vurx2&RB}a=}CdeMOFMg=8fBE2jKYV8Beo?BF;B!kg z`mk^Eg^B%7sNX|;>w_;JFz&bd%}Br4PF^3zEf;W)!uj-MAtpCJG*FwAF7}~g9dkbeBkkD+R*x5!O%K6 zUiHJZ!m|h{6j&W8{vl42Ih(c+@0E-PW;1`yzTv%;p1DoB-4{xa*Ym}Sz``xD!74CG zF9d3^G7uA$D&Rt)a+DP?Wx1K@H)43`m2FU-?$9%1FTuyIHIy<;1AoL;?-zgAfJ>9H}{8A&dN7fF@bM<@-{apD$M)r zTdmcb?3`3E%b=+KPoN)e`B$F0)HT|kOeEKE zSVYX)<(Rda@5#&T;p>1vFAQ}}Gf0h(_n(V=7LV)Nyva zGYA6t;X8OVf!I!3)hWZot(>s0GbY5|~7gTtt@9QtR@ST?KP;2Kq zCvRvSfc7N5cxg2d-}idIM@wqFLcxivcvkI9=j*OC!1^=2s(KB}-)iofj$Yi|-gM); z5KmL%3%Qcn@Z~u%&?c*A`Q>U_WgC-@793w1E3(kzejsb0nGfa9h(Xp$gjl6Ww~_uR zQ*f7Yu<)SxzVCp@1{MvF3CSkTqrPX7j2@-)kQiAmdII8Zu+_9hH=fc49u5EyF zvU}+~jqA;~hmxU)02T5e#7`wQpKA(_XQu!c#Gf%fYG*8;f1M__+qCjzMA)o+CAT7& ztXL66tq~vf_~!Of0Jg1ds|=GO$lwL`s^dFhp|q$UOmp2Y-;Qq5&f9Eu!eJTTpgqxL zeb0#xSGJPd%|ql$v-mp6A)(jt*8M`Y`A6x*4q5q|j%N=MsK1INuz@M)-VTvyDIO^r zJyAF4#+H6)CLqh76PJbu+!2pd$(}HM)T7lnT8MKq)yfx}Up0_&$M@ zG%)FWV;|b7I1;Y18Edrmm7boy_$|!~0l)cU26#O~Jb2yMST9@eKVLUB-ON8ycA$$G zD&KY!7K>-Mr-Cz#K2QGnE-uc?>-w8#p38Wuj`;6Bd>tf+pYXnw#E4c`DVL_-TgZ+V zOz-}F`#z1lY2aHn@i)5cS7imAz$P3w&@@iBE=>2k_GTNcmQ`yH&VM6yf`bicW%|QY z6ij6!7x#zx+8*t&5#~lbhjlXesC|V%NtqO8Qvq8H1XohSX|1y==AU8OFOyichfjk| z`VSpcN^^~BT~SFEV?R=QRr)~3PlpE`OG{ekJ;xL#;a;!(TE4U~GKh&U4u z1sm+mAKvNSoN2w(wBRTgUMp8!%6D#7XVd;E}$R6wE6p8H#EA$Klw;7As65i#TvCO9H zUhV-19wt^j!BB=!XzIlFFRE&+PEa>nH8d$In-9KmqTQ=BbFrA7x*BWQ=M>%5dgQBB zHY&ge*v`&*Ki7OnIOrtI=jzx#Pd@U7Ux~1PtE^FJEDwhC(J1A(aWeq>KzKy7;qu5G z@Y=?KWpZ)E*QZtL-KMkL`YgS3K&v&ozogjfYEv)E@OE+!07j3H8`$Ym-qMK!E0;Z0 z;RWvJG9M!xs37ml{E7ahA~*m-3Za;>7QAbERNm8J%xPo!^owFV;O@ZytI=a=j-_2> z7L_sqmMi~R_B=)oCXPy&(0OHe7>j=Me89X-4i%n4dEU#JSVN>2zuMMd;pA(0*7jbT zh_nqHW>97@{8*w$&UqV#UpllAt|!!XJSO&`*^zmk>j=>d$|}=1QjE{@Qz=+{sGfpC z$N6A!C*YitLPx&t&Xd|meB-CH{gHvLVDrQ~0P|e>d_*oSeQ=~?p3fUM62WaE!2mm~ z>2&%w>k`WAc_9HI_N4Jr1sTV>jF;2S1u-Z#_4lWC`J6i?gui*q7~!P;^cK>i0lm+i(T1#-!P~?0YlkQL2?``t^B+hP5ehjD+0$Kh29# znvo}r#~M`!&Fm={+m%rhr@yAjeTOPD#>J$TYn`VDhuVpn!s9(K%t&fucr|VG)T%6G z$j#3l0UQ&&9#|{9k+=Qu&LVYgVea}PFr2~pC4-ifVCUV|yAP~p=s@g#Cs-nl6J0!`K-C9sZ(TvH;6ZiA(;*&Guu9O%IpBJpBwn(~F1#woHG2IFKwjcK+&OQ&DaKeBeY0cN zXP-TN0?UT~RE#_V08Q0Lbg+8<)ASDFe9V(n#9%#pGhMtOE@~*S=;ex}w9Ohgx{W5s zAN;u}m5k!lX53Gl)%I>l9AS?-3Z0#!Fz= zY4}`hRbk!U-TFHuV1*Iwt@nV~i42BmY^*ytW(KRHOmZbkv72pZrbsP@WYB1{f%x*) z#0oWK*!1~YZg^z)Q#c}5l;}MPqiQuf^*qjzE_a%(2IpH4OsrjnUdJ z;@!Q~$fskzH-0v_Rl0G3V7qk|n_K~un6ybKbV0?#dBA$~53Xs@fySc-QzTO|prU`@7?j{r9 z1z{H+jI(yP`$+M)UW()8KF7K;O*5ST6 z%k^W!y4LIsIa0%%XV@Utvv>e#(V9MJv#lL#QazLV?Qpq2@A3)Q^tz6BB4mB}4>~V; z!u~cbF1{g)EXP5^Tx@+ZQ&jBrQ+0`rY|bRtAt18r(w$=0t#|edBaPN8{T`lX8uz$1fs86MRGT=ma8 z;-dC=|^X~*-O8YivNlj1;sLqfou=eleeF=G!FRg^*PXH$z37Oyewv{crO&d*D1K z?gfE(Pc&>8MEHQBOG7lRmbnqP7XFW6bdYCzC3@Atln60w&OKBL= z)~gI)8AUr~l(7aQ({j7Ucz-$3db*mPZGYKTehMk#LIDuOikEOhE>{EDe*=|F$JC!P z_!9Yzt1dk$%W~&eG=!6@z{@+>+n3)-pCP(CvWw>7eWW<8s7*-ldck7wUS5Zg?>i}0 zoC&4gt&lK`X=G|kr{`%TuAj7lFZpBC41|D^AxKZ*m@=A!l6~)3cVEk|>}-=zSDPTe zP5O4?=?(MBE;D3e=f@_=Uz{AQRxZKR`0Koa16>aIx$;liF(qtC=P@?1zFNoW)k0z+ zd%b%oE9YBN8Z8xi zfCs1JFpw@z0I;y-q4EeABLuDY?b!f!r-SwL=LO)*pX8;SN7=dB5B&D+^%F%}i!G+r zUoDg{z`@jXv;MH>^Zehm#qA;i-MkT>HLM$Rc$YjCvuK*9Vo9NmJ3`Iw$GQ|CugR+Ih`$X zkC!?40B*kDa8{&svjtsSeYy}{ytMRsL zkF_ON{BJk_z&zYXH`DqT+$MW#ZyAt=!3Y z7~;uPlb4+Rky=MbYjpjJmSy0h0bY>5|CDT*!IPZdk+eo5U7j=-h5eDEEd%_eLtn{S z5$Wbnc7_PJ^BqqwZ=5Coz@n-XLihhPX(G|}XePRMJx^y_%|s@S!1}dKZJK!&(Qvd+ z8aAOpZdDh8*|ac{8k1ED>JXj@>od`rA{uyS>!F%v-XeR_yf%!F(zM_E5ChKF*!1)V z62WZlEg;AC4uU8yYu=#xLK6l~g~=WIp}RXWvnDsA-;yEwMAG%rz!xSoguV!djv6UeykSn^Nf`tpzm`%;RC8)qvF7`YmwZGAX? z>Ws3X63|LILVlxD_0%0-iYC_iZ1SdXs>Cy>tX;%u{iYc=FgX1+?QAy%BM*Q78!} zc%LZm)hZ|BKWNRaGwxtb*q!8L1jVdCS*2J_~LuP|&j zp^^-HVWnb)z8oxbTGtp2^~ZJ{W%H!8zFo<3Yd1~$XlGrv5b*VbM)x!+_v8HgGfj~) zZc8GDf#O3noT+zw6PHI1o%5wb#&K`wt{(E-<2w{-Zn~hAG^Oc2 z#yEgsIEYnaJhc1Ss@`H8j}N*p0zlE3)*Jo2%^}mkKa%C&^1F#F04f1V4H*n>o2y-6_gx}Uw+*sfSJe=&c$*3XwVTA?6ik*S+K zc{uDaTO_WD8d1C@8@mjaH_%X9e}+ntZatUwV(VIqc2g37R8JQ{46wJvhAmZrio0Oc z&Ci)Oa*L_nu-9g@)m~YSMMq(zu;k6bFONrW0V{6qIe7D|BEiQ-hF_k=vq zzmeS6?nRz19n(o%b8p92cr>1*-)$sDJ-#356?1zqVD(P|^7i}ZuuBdh5dhrwyWP

O8 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
!|wU0{xY!+=W;)lh9j7&lCN(?E3fq{kfJ}O%uRA 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 + +The Cwtch project began in 2017 as an extension protocol for Ricochet providing group conversations via +untrusted servers, with an eye to enabling decentralized, metadata resistant applications (like shared lists +and bulletin board) + +An alpha version of Cwtch was [was launched in February 2019](https://openprivacy.ca/blog/2019/02/14/cwtch-alpha/), and +since then the Cwtch team (run by the [Open Privacy Research Society](https://openprivacy.ca)) has conducted +research and development into cwtch and the underlying protocols and libraries and problem spaces. + + + + + diff --git a/src/references.md b/src/references.md index 778f265..b402f60 100644 --- a/src/references.md +++ b/src/references.md @@ -1,6 +1,27 @@ # References -* Nik Unger et al. “SoK: secure messaging”. In:Security and Privacy (SP - ), 2015 IEEE Sympo-sium on. IEEE. 2015, pp. 232–249 [link](http://cacr.uwaterloo.ca/techreports/2015/cacr2015-02.pdf) - +* Atwater, Erinn, and Sarah Jamie Lewis. "Token Based Services-Differences from Privacy Pass." + +* Brooks, John. Ricochet: Anonymous instant messaging for real privacy. https://ricochet.im. Accessed: 2018-03-10 + +* Ermoshina K, Halpin H, Musiani F. Can johnny build a protocol? co-ordinating developer and user intentions for privacy-enhanced secure messaging protocols. In European Workshop on Usable Security 2017. + +* Ermoshina, K., Musiani, F. and Halpin, H., 2016, September. End-to-end encrypted messaging protocols: An overview. In International Conference on Internet Science (pp. 244-254). Springer, Cham. + +* Farb, M., Lin, Y.H., Kim, T.H.J., McCune, J. and Perrig, A., 2013, September. Safeslinger: easy-to-use and secure public-key exchange. In Proceedings of the 19th annual international conference on Mobile computing & networking (pp. 417-428). + +* Greschbach, B., Kreitz, G. and Buchegger, S., 2012, March. The devil is in the metadata—New privacy challenges in Decentralised Online Social Networks. In 2012 IEEE international conference on pervasive computing and communications workshops (pp. 333-339). IEEE. +* Langley, Adam. Pond. https://github.com/agl/pond. Accessed: 2018-05-21. + +* Le Blond, S., Zhang, C., Legout, A., Ross, K. and Dabbous, W., 2011, November. I know where you are and what you are sharing: exploiting p2p communications to invade users' privacy. In Proceedings of the 2011 ACM SIGCOMM conference on Internet measurement conference (pp. 45-60). + +* Lewis, Sarah Jamie. "Cwtch: Privacy Preserving Infrastructure for Asynchronous, Decentralized, Multi-Party and Metadata Resistant Applications." (2018). + +* Renaud, K., Volkamer, M. and Renkema-Padmos, A., 2014, July. Why doesn’t Jane protect her privacy?. In International Symposium on Privacy Enhancing Technologies Symposium (pp. 244-262). Springer, Cham. + +* Rottermanner, C., Kieseberg, P., Huber, M., Schmiedecker, M. and Schrittwieser, S., 2015, December. Privacy and data protection in smartphone messengers. In Proceedings of the 17th International Conference on Information Integration and Web-based Applications & Services (pp. 1-10). + +* Unger, Nik et al. “SoK: secure messaging”. In: Security and Privacy (SP + ), 2015 IEEE Sympo-sium on. IEEE. 2015, pp. 232–249 [link](http://cacr.uwaterloo.ca/techreports/2015/cacr2015-02.pdf) + \ No newline at end of file diff --git a/src/server.md b/src/server.md index 5059cc6..35df5a6 100644 --- a/src/server.md +++ b/src/server.md @@ -22,7 +22,7 @@ expected to provide: We note here that these properties are a superset of the design aims of Private Information Retrieval structures. -## Malcious Servers +## Malicious Servers We expect the presence of malicious entities within the Cwtch ecosystem. @@ -43,7 +43,7 @@ guarantee more efficient properties by relaxing trust and security members then there will be a detectable gap in the message tree of certain peers that can be discovered through peer-to-peer gossip. * A Cwtch server cannot modify any message without the key material known to -the group (any attempt to do so for a subset of group memebers will result in +the group (any attempt to do so for a subset of group members will result in identical behavior to failing to relay a message). * While a server *can* duplicate messages, these will have no impact on the group message tree (because of encryption, nonces and message identities) - @@ -58,10 +58,26 @@ This has an obvious impact on bandwidth efficiency, especially for peers using mobile devices, as such we are actively developing new protocols in which the privacy and efficiency guarantees can be traded-off in different ways. -The most developed idea is to bucket the messages on the server into discrete -time windows and allow peers to fetch smaller batches, coupled with the - underlying tor connection this technique should provide sufficient privacy - - although the technique still needs formal verification. +As of writing, the servers allow both a complete download of all stored messages, and a +request to download messages from a certain specified message. + +All peers when they first join a group on a new server download all messages from the server, and +from then on download only new messages. + +*Note*: This behaviour does permit a mild form of metadata analysis. The server can new messages for each +suspected unique profile, and then use these unique message signatures to track unique sessions over time ( +via requests for new messages). + +This is mitigated by 2 confounding factors: + +1. Profiles can refresh their connections at any time - resulting in fresh server session. +2. Profiles can "resync" from a server at any time - resulting in a new call to download all messages. The most +common usecase for this behaviour is to fetch older messages from a group. + +In combination, these 2 mitigations place bounds on what the server is able to infer however we still cannot +provide full metadata-resistance. + +For potential future solutions to this problem see [Niwl](https://git.openprivacy.ca/openprivacy/niwl) # Protecting the Server from Malicious Peers diff --git a/src/ui.md b/src/ui.md index 3c66e0b..63bd51d 100644 --- a/src/ui.md +++ b/src/ui.md @@ -1,49 +1,68 @@ # Cwtch UI -The UI is built on [therecipe/qt](https://github.com/therecipe/qt) which - links in Qt libraries. - -![](https://docs.openprivacy.ca/cwtch-security-handbook/3.png) +The UI is now built using [flutter](https://flutter.dev/). -# Known Risks +![](https://docs.openprivacy.ca/cwtch-security-handbook/3.png) ## Deanonymization through Content Injection -**Status: Mitigated in several places** +**Status: Mitigated in several places** -Like most UI frameworks, QML provides a HTML rendering engine with the potential -to make requests through remote resource loading. Any kind of malicious content -injection is therefore elevated to a critical deanonymization risk. +Unlike most UI frameworks, Flutter is not a de-facto HTML rendering engine. Any kind of malicious content +injection is therefore not-elevated to a critical deanonymization risk in the default case. -To mitigate such a risk we do the following: +To further mitigate this risk: -* Maintain our own UI library that explicitly relies on PlainText fields to - handle all content (and thus styled safely) +* Maintain our own set of core UI widgets that the rest of the app relies on that do not + make use of any component widgets that may hit the network e.g. [Image.network](https://api.flutter.dev/flutter/widgets/Image/Image.network.html) * Mediate all Cwtch api networking calls through Tor -* Force QML to use a deliberately broken network resolver that is incapable of -resolving remote content -* Frequently test the UI for potential content injection vulnerabilities. +* Frequently test the UI for potential content injection vulnerabilities via FuzzBot While none of these mitigations should be assumed robust by themselves, the combination of them should be sufficient to prevent such attacks. + +## Corruption of UI Chrome through Content Injection + +**Status: Mitigated** + +While we assess the mitigated-risk of content injection resulting in deanonymization vectors to be very low, +the risk that malicious content causes UI chrome corruption requires additional consideration. + +As a simple example, unicode control characters from conversations should not result in corruption to parts of the +chrome that they are rendered with. + +![](./fuzzbot-invite.png) + +To mitigate this risk: + +* All potentially malicious content is rendered separately at the widget level i.e. we do not mix trusted + strings and untrusted strings in the same widget. This confined rendering differences tightly to just the + malicious content. +* Frequently test the UI for potential content injection vulnerabilities via FuzzBot + ## Denial of Service through Spamming -**Status: Partially Mitigated** +**Status: Partially Mitigated** There is currently no limitation on the number of messages that can be sent to a Cwtch server or by a Cwtch peer. Each message requires process and is -added to the UI if valid. +added to the UI if valid. We have put in work to ensure that an influx of messages does not degrade the -app experience, however it will result in an increase in network badwidth which +app experience, however it will result in an increase in network bandwidth which may be intolerable or undesired for many people - especially those on metered - connections (e.g. cellphone data plans) - -In order to be suitable to deploy groups at a wide scale, the app require a way +connections (e.g. cellphone data plans) + +In order to be suitable to deploy groups at a wide scale, the app requires a way to prevent Cwtch from fetching information over such connections, and this should likely be turned on by default. -## Testing Status -The UI is currently only subject to manual testing. \ No newline at end of file +## Testing Status + +The UI is subject to both manual testing, partially automated testing through fuzzbot, and fully +automated testing during pull requests. + + +