From 68d315b5556797eb866631c8634aa6f749af353c Mon Sep 17 00:00:00 2001 From: Ezerous Date: Fri, 17 Sep 2021 15:19:39 +0300 Subject: [PATCH] fix: orbit-db - tiny corrections --- .../2.theoretical-background/2.8.orbit-db.tex | 4 ++-- thesis.pdf | Bin 979793 -> 979767 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/chapters/2.theoretical-background/2.8.orbit-db.tex b/chapters/2.theoretical-background/2.8.orbit-db.tex index d553bd2..becc61b 100644 --- a/chapters/2.theoretical-background/2.8.orbit-db.tex +++ b/chapters/2.theoretical-background/2.8.orbit-db.tex @@ -6,7 +6,7 @@ \caption{OrbitDB logo} \end{figure} -Η OrbitDB είναι μία P2P βάση δεδομένων ανοιχτού κώδικα. Χρησιμοποιεί το IPFS για την αποθήκευση των δεδομένων και το IPFS Pubsub για τον αυτόματο συγχρονισμό των βάσεων δεδομένων μεταξύ των peers. Είναι μία τελικά συνεπής (eventually consistent) και χρησιμοποιεί CRDTs (Conflict-Free Replicated Data Types) για συγχωνεύσεις βάσεων δεδομένων χωρίς συγκρούσεις, πράγμα που την καθιστά εξαιρετική επιλογή για DApps και offline-first web applications.\cite{2.8-orbitdb} +Η OrbitDB είναι μία P2P βάση δεδομένων ανοιχτού κώδικα. Χρησιμοποιεί το IPFS για την αποθήκευση των δεδομένων και το IPFS Pubsub για τον αυτόματο συγχρονισμό των βάσεων δεδομένων μεταξύ των peers. Είναι τελικά συνεπής (eventually consistent) και χρησιμοποιεί CRDTs (Conflict-Free Replicated Data Types) για συγχωνεύσεις βάσεων δεδομένων χωρίς συγκρούσεις, πράγμα που την καθιστά εξαιρετική επιλογή για DApps και offline-first web applications.\cite{2.8-orbitdb} Κάποια Βασικά χαρακτηριστικά της είναι τα εξής: \begin{itemize} @@ -22,7 +22,7 @@ Όλα τα stores υλοποιούνται πάνω στο \texttt{ipfs-log}, μία αμετάβλητη, operation-based CRDT για κατανεμημένα συστήματα, ενώ υπάρχει και η δυνατότητα δημιουργίας προσαρμοσμένων stores ανάλογα με την περίπτωση. - \item \textbf{Address}: Κάθε βάση δεδομένων λαμβάνει κατά τη δημιουργία της μία διεύθυνση της μορφής: \texttt{/orbitdb/CID/DATABASE\_NAME}, όπου CID είναι το IPFS multihash του μανιφέστου της, ενώ το DATABASE\_NAME είναι το όνομα της βάσης\cite{2.8-orbitdb-guide}. Το μανιφέστο είναι ένα IPFS object που περιέχει πληροφορίες της βάσης όπως το όνομα, τον τύπο και έναν δείκτη στον ελεγκτή πρόσβασης (access controller). + \item \textbf{Address}: Κάθε βάση δεδομένων λαμβάνει κατά τη δημιουργία της μία διεύθυνση της μορφής: \texttt{\\/orbitdb/CID/DATABASE\_NAME}, όπου CID είναι το IPFS multihash του μανιφέστου της και DATABASE\_NAME το όνομα της βάσης\cite{2.8-orbitdb-guide}. Το μανιφέστο είναι ένα IPFS object που περιέχει πληροφορίες της βάσης όπως το όνομα, τον τύπο και έναν δείκτη στον ελεγκτή πρόσβασης (access controller). \item \textbf{Identity}: Κάθε φορά που προστίθεται μία εγγραφή στη βάση υπογράφεται από τον δημιουργό της, ο οποίος προσδιορίζεται από μία ταυτότητα (identity). Το Identity object, πέρα από τον προεπιλεγμένο τρόπο λειτουργίας, μπορεί να προσαρμοστεί έτσι ώστε να συνδέεται με κάποιο εξωτερικό αναγνωριστικό. Η μορφή του έχει ως εξής (βλ. και \url{https://github.com/orbitdb/orbit-db-identity-provider}): diff --git a/thesis.pdf b/thesis.pdf index d2a5a86f3b1341fd1c617570ea329dc2aa6dedf7..e04324d74fffd85857012c629f67a5897965d3af 100644 GIT binary patch delta 15783 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�NlIW5N9IFsk4=fXMj$EC$v7UN>$dQhu{D~%# zu95c#2-(!cE5q5*<91kQ2e8`Vm3HXWJuRKEj&?lu@JH7MzezD4(78QMAK=$R;H_YY z1`q^8(p_i7%(5#EyHRkSfEbI90hi2k2h3$p2xCMD&;<2Na3}Z0v|*diV(~174B?h}Z_vnUfnSRW0t?=qb zbhQJx?RaemVt}pa|2~9xJ7T07MR4@_-M-%0Gxqj<+B2TUsr1AhAAD(EkiS0o{?grl zm+7g$Mm^rr@^=8#l0Xl>USnp(hf}z65F)dFa%NW!%xL~~2yIP!*~!D4!mB{GAK;W}j>PfdCb^{Yo=z20=;V`mc}_iiHuH LlvGq+4Elco80OaR delta 15821 zcmajFQ*b6s)HNDsVsm2Kwr$(C{p3j|wylY6PHfw@ZR5P(|JA8F|JAwZo8Dd3wQKFw zy?d>0J?5P|<_!o24F(Ga4~7Va42BAZ4*nGk6AT*+*90#U55~cfCKnHn155+rTC+t_ z{nH#{m|qjuUL{b}P)>f?fjE!*Q^GGW7bB56!iFxcjBW^+P5aTi99k6g9lK6cU3+%< z_fv`asUi4NG~<{i_}%t-U)hyhO_s(W*v;VlK%u|=Z0~t=fADZ~GaPmi#`(m%9X+%C z+63(Uw*s-F+)REXqTr`e)7H-{PI%UK)Av0GJLgb62fWYA0~&5;!=q&q1r6+d%hk5 z&3bsF_yw-f4D_IfVdn~Ae82tSg{)>=9y08>Y-+sbwdc6(W%E1gRXfR#c809gpJKQ) z&PNjaD137YZRLoR+MW;9dJ2vYc-KK()QY1hNx{Vu%oG^r#`A5G88@=M*s=a$<+9qG zf7cl4;Pil|kc_FnYU)euQ(}LX{GIzoYBg)_vV}f;1*A4&N~X^;vDB@W5i_Cnx;mtC z1C^fDfxg*&!WB=9L?D}Tdx~sG9qcjQM^oUN1eZD{Kpjq4{bSAcP^0!WgBuCRKeZx+ zCj3WO3TGQI1Ro-_-PJ~@lY5EU*#I%3RH}%H1XFqbpd_$uX9t;4(HFFgwhx9a_O0f> z2rYnE4V1sJd>O|aF;~vL>q(t*I>eqwk8O z%je5f>#`;?`Vj?-9~?o~pT~?WvIp9y(}&y0nS>l7TXrq_%_<6EG;`F3!0bV2(#B3V zpKEhAwg7b~90W1L$}gbZXUp0$Kxu`ouc(A74t(_noAbkk(+EVJ7uYu8DVYv z^5L^-@%Rp){QRy7SWa2MhQZW3U}F@n5}6o1p34-E{NZf!b1fUUIR{^q(JfG@gRRCJXn$(bMEN0JT zWl8FUhGWcM+IR(&h7EaCF_1b?7{A!{@YK4bj|;^|3nB+Dm*yui;{;pLvP%pN#B1zO zRhtXZP&c(B!ieb5$DJ5)v&Py<)k_B zyS0R=<`P7)&tKANErY*t9a4v-qi?GZN6Jw0S9R+&p3sLwEqowiM=U{}KiGN>L~@SE)nr{ap8_uRz%RU(_kD92wB$SwXkL0w3V z0Zd)~ipeXxMn>=iL8E>-nVB|9-rg*ikC=8q*yc=7_n>ZEYLT0rIENANER1 zk(~@+Y=u8OVM;7%;O${AM7jnWX+JU=58Vj~f5UtV*h$*P)9BqAJTVvKysV=0;D zgp7O&xYQA})u%o+<$KY()7g6*vZ=j8l=uE=OBy7|AO!1nna}X8OixA$?Qb5Z)T3CZ&hfj=#VmF%)Jy+n@T%Tt75zx>=K z2VR{g8WKMjN#m#W-;+_y;*A6oESLy>GrG8s%FF6yeS*TxME`A4zs<=&$;oCl5^^e& zWRB7BHJ()*n9xWP#mq_YFMxYaKzz!($uO+ahl3j_Y)zomyLQA=1R8^5dqQU|+)aWp zC-gS!6CxJJ!L!YdDEM&n|7yDti{^GdxLaRGta`&jkozou zE(@ys@<#fk=Cb?(gQ9bS1m_6!DY{_4&ba{lA~-!@$Gc(EHbZ4mxd17dPQdA0d^l?=#$pV2KPzXz!;Ai<6OehZqB$8mrB_hxr{e98%;T}q$2o#l!$dh|r;ERaR`uecI`G3SM+W*l8Sp$(>B<776l8!ub*~4)H@WL?Dd*^aAXfqT+alm$Ex4m|UJInmKCI(TQ!KtY zmMp7oc+`8QpukVP&4!nGbYXLnOXwc}IO77E1m;Ks0u!P?MSF9(Z$%FTkzGKPYw z>R}Z8bJq>CStuZ~plCJzqc|;M_FAZH&Rz@;S^OFuGJ4U6+y;@U*;ig~ehF`3$BH2C zk;4_;HTfo1Fqag8fa{+&My_2&&XU5V0)g~|s~fE?2hg#qEoEAe%n?U=#A-1Gp~c-S z^r|A!Vft4>Lx*)@a&BnD^m%C%OMi_w03o<*pfk?1;Bb0g{pl1PBeDz8yQYXdIj(HW ztDkXRBrIcOkYXYqfwFz!vom3B$F8dEC*;k0LvBLMIko}nZ?u|KcXZat#4E;Z&M}Rw zuDrjj7SJyo4?x&E5rRbWg~=(PM6sdc*%$XOLf(7X20^DSG7x|B@2Zf5%-f9}?CQ=UeNn)`^Bh4s zR>z_C2Lw7XPlA zq&g7`aksLHCUWBd;et!iC9<}lzR2uv1n^SIq#AWpqWBg=w$pSm10~sw%x={J+!cF< zFD#=<7uq=tZnfBME-k4Nq#ttf1^F#{T4s31LQy7nThU`8XGtVAPwY6#(^M+6+o=iY zdK6z5yoKc?bib2Dqf2jO*{zMP!Fulk!cTaGTRz4#osm&qZ$9c{g>49MhBGUL1ja@% zl}w&ds#s|Dl@xxVKda?%kW#bt-B>_8p9(zs(a2Aa90a1_6dG^kwqnE0 z1lm&7iFf-V1a%CZzG@ea=I(Lw0Xg%e4s^nLEBmPGB+IjUu)i?lYRgV%SvZIUMuI)Um#6!CsT{t!|ya z!y%y?iyFxEJCfoGhD`*({VjMacMX6F! z91IF=wBwvmeTZq>#Z6tBp*7(OH^SZWUHkUv7l9-qUfr<`DdlJ_@au*`%FUmaHG7u9 zd0LH}o=bRtkIiuCrS#LSI5u-iTPG4WpGJ&AEbI2cIHMNcQDx|;9N>ka#ni{4M>C6c zi)!e6@?()Jzdh_#h@)4xgS+dKl9WMN`&)}MZmHc{r)r^9Y5*-6v8|!25|!)nNK*0xEZQt-&siq5cCC{ zyS?Bq{3bBgN|5=aX~f^IYq}e9qx#SetwW0iP}Ud(Yd>-tBE(jD0_+yw5@L4rHxHc` zybC(-Q4~h)t^YE%wC8&Jxjsu%q8w5>nXIxCFm*=zn9Sw_U#vF_Nvif1ZTJ}RV}s&z zg{n39T0*sXl2&Q`TiO21zE zK5@uZv!Vk8?>JIr)<(!U=T8nY%~wPbu@w+grdOAN;@~`j$TL-;{eR_YKXgd3!C{J8AOGL|ph8+P+8&>H(w(oR7e7VS`L9tf^sztN1h5C3%Q z)Sh?p!dY5P?AyNKW>FvWphqp4-mnw%-efd|ZVAhCS^z`Ms-$g&9}iBCum3>!8l7^id_}{PI&|> z^{&fRHm#QMG*8=H>IRR{-6w*A0S93=Ram=Y@-VZo+R$a0hR8H)*RZ$6?pJk=kPuB` z|Cp9d{Q|b4iLGTmZj|8MHR?01$sknNxh=q*pguwq!Fsrow|=KsI>?1VQownSEh5`+ z*{?hK%tbU}0RVGmF-PiHl~#N2M77yvW42ndxC8e^plk7xRVS;MPQ!Odvz{a z+guNFca=L&-Z3(yT}rRvpx66D8&6R~?0S3qFTfqauY1p9AE3zi;Dj80zeM-|thjnrmoszCvC9M8NmfHCETalNBYeAaCJ!gRxDLfa4KY{`4>UZ6v15EzI2rmP+ z>A*XRg#p{_J03Jc&w;OoeyT8W^HB9>-C&8%bT)|AnG=2wrXLWGon+3e_MnSs&g^z_ ze~K$&uM<;ZN4}-R5yc(vJKIj{5HgOqdY4BdU#Ip@AOQp-gos6E#Yju z<=9-#yY-=ZjjtqW=WnYG1t}s1JdO=!THqDvt+OhQ%t>5jWrt;_cDVnOf$@j#x?!4v zbdPV<|3tVmRt?A6kUzpn9nD_vI6mDfWYl%vXT2V$*O_O1QW#{lnBoK2- zZvCJL+NpDn)2yW0{l+WYmtcG8c6rAiPfAww1Yg7^uEOKSNL}>=AJ68xGl-d9(zys9 zF+l+F_NwDEVC(tQ^ab(c#Qg^`y&GJ&xBI3Sv+jtuF63&*uz8Pidd1YhE zQDC_I)FHXMSD84UH4ZE=6!DGbA*W1bd#+DvgbnL*)-r`rKedj2;SSJLx16ZqK6I1|EIykv>DY-AS;@HR=M7XGs+ z>D(*4L;Vt2S3I^uocQ0CBR4T*$q|8>HbPM^W}-e4F@Wk%343Dba5OPn0u|)L5vJAczZNmQ!p&d);Q9 zq9fX0f>pnoC9x}w;;Poe9@-Uzm7VYJxRT@RyV_Lj^wFuWjnQS>^!-@wix-2hf@ho80!`v;^5gLsP#DVsbT2il^2MzmjLr9?xaw;6 zrI+g>$XZCaE=8zbUGUk=nNR3LDsgN2PWTokEEnWwB{hgI*E{exssbiUo)3^dy?x!~ zklj`?cd8MgjFbHJKA zn7O*Sm>b)tO?)H3q^(>cPysmv1YrMn64q-SkUSNe#e^R6!WWXJs;(Z509Eu0241av zUV%MBc?BXHy_|WJII0t{M?jHbp-fiSeQ@z%`q40-Wn$WqQ0?E|y_S)H&$Gefdd*nF zZ08u8^W@jJUW0>G;OJTb?O5EiG7$G}wpy{?{rUd<^w83{;Q(~pT-AQ~Ji2PW$FQ9O zO|4z&W2(O`S=FB@-}tS2;QS8-#J#V?T=`~%zjbc&qjlMlVOoAlO7NG>!#~o} z=bkUoP=AWZ}=LPL^y2>BIVs0GK3uLB2`QN;c zbh5UR$g(E%gr6_XW=W!08cdZL<`#toe5pFz;oW25xcF`|vi);%WXL*~DHhVODlo12 zw~>Lmm>3wXhJHff3`>q*3!S-@l{jq*`(GFzXMNT{TZJ)DG7s9040@6Fy?d>h!U16Z zVoo5PDaag&YGEOc2jP6v>%JvcqLj=_T?dAH`eITu5}p!oxOQ%s`lqTq+Mi1O1fX#UA)d4 z>JOavmQMTdsM)VX!;N)tuLPZ(2%hg*0xXVtE}xfbd^X)ZR`6G2a)3vGx34SrO4Fr# zl;YafK=n2!ZMD|_q~du3-(~|}nYW(O6vo1i^02Baq)+?h=Nj{swIm;}30mcf3#QK_ z)(vGygUoRk-0jTnqX{L>OB-JkM|?TOisg+nY5tb0Eueh52Nws>hVp1kjR3+p8@5^~ zB7XaqG6lMY$T5ss0MKQYwG6ocqzTeGp9%yAIglhC)cECBhbrQFK%JW|if$*Xi3Kr=o%D@b|(4dxp^e^Wp2kk+#J6O-->r)u# zGisR-*myh+9PQi&5cI%PTd#H`MTzNfqhuBsMJAbguYwq{0#59d2t2f-H=x8*&Rj|# zzVswtw@y0a>LwuB2n;vlh_C3Lh6ed77Jp<7J*^k2r@!{2 zDL}}h$^U)cl2!K)!9*CO!$?b02Q^q@3m1NWVL+Q=AI07BHmoN+Hjl4uuSgn_ZAXN| zGGCBZ=ymPz7X=l$&4qKkwq-OjG|Yd1%Mv>_{GW188~#Q>N&`F~NC2hKobg8PI_%fj zM;2|`C>^l)r6!Kuf~k(160F)LdxRH*Y>|6ay}ePzd1!8#{a5S5jka; ziL1~+va|c3zSdC+Bkg;7B+L8Vzu$lH`5vUph3;|HR0*nUXe+x;nsI0zo_nSi(3%|1 zOfFyXi$GCWISJFENCC^^85Znv6YOcpaIizaWH+2?%|~|1c?qP6?yg4?o%p14JthQ& zxU)UZS*DbIx`aztPBOGgSC-5gUCm0!qbBL8MrSA<9^b(llJoWDF)KpYRI_s|s2J|J zMs=3w#asmC__ufc&IG{j*keKI5RF6C ze7!A^@^s>gp@DtkE#CviDcHdq;1|<8(?K}sozMBzmH=?D_9|G2X!fkjD2RXv@AfJX zlY)qk>l1v85{L{+OoDg$V$A~rrf=YA-gvjqUC=3JPQ~!79Z+UsQmLcm6<&9y`C#if zY#I0pWAZLd&nDvjikpv~Iur`y_D6E#6Q4lb+fO&~p1*|zW4~W=Nn*<-zXW&n;(3`z zc5ALuV(ykx9RD)*{Ue`{WKZdk)u)J{Hq%xwh_ zN*cbGL?mWoRV%?T(Nns*QW_tIKBjvAp9x$m63Bt{4ShF^dHg@5MNe~iMxX?;{$Hd` z(vAC{V|V8b!+*0vClG;yNL*^KuBJkqWd1+l`dH4Q zzoL?tmx1ncj{?91#~b6}bj-7r&2ecpU5LecsUBft9PA)w`UygT(U9M7*U40?0~)H`)?7+`r?B7GS1 zWGZg7-Z(HhG+931s^Fha>~YN09-CbD7yPA?iY;W}M>ytrS#R6Um9L9hE;Z`#07Uk# z?hSaO?ycVy{XE9@SF-a(qADXV{Y?*tQvy>Vk|rYoD#6MKb1P>D+9)B~geN9SNr<81 zkljm{NgXB$puVY?X=YO$5UJ$|iwlznMgEb2!hlTKtfY#M3l77}QNk$$?VIyQq7fEo zAfW-!JL$gb?6!zes>!Mm`@-H}yeIaHhD?{Jj-&uSX>~P7qBlB)OqNxd|-2IJ^g~-vwd>;Uvzz6|3mlxZaGya914Yy zJ0CDyCv7m8kqlDl$oL?}R8T1|$ig<6qPwInKx6LufP|<0+Kgf1{e?81p6Z+n-3BMN z8;_GfXZvP${teC+kK@H$ee>06JlqSIvGbC1O0k}$`b$1T!IUjmZ?;L`79a5R^TgDY zFe?Y>3^1KKe)#^XMnz@|ee?Xk=ic=hnDFmYg)kH)__zM!qO*|9`OC(HnCzs$kq1Kq&tYEE6mhqo`Qy*E!UmQ4llaITU#_Fw_KPc$EQs8A;l7HO+}b zbp?Yxg()Z+I9OFU+EKJI>-ZRkZ(z&cyZ$ z#m;#?A(nc{TBoAZeD%g|VydR65okqxWhXeV$LdmcDz}=q(#3DEe&~=6{ukvsIPnKnwGYLvnG_t62;$od9NW1uboA$E?v&SBE zuSZ%ga;AQxDnzaha;jhgNmFU%KO8jI+Oal?xwGv_-=Ye?nmPbc8)yHnry+g+8D#Dw zupxR5n?L(3#bOG5PMNq6b3JbAhPD@T3f?F%oBNeH9z+Cq@9&v@88pI$zNa?{@f29 z7nX@688x3nSpl;g;L<6PAY+q<`>U>wthT?i!>#ZL{$rdv+h|#G_H4%$#r41y$AyH; zyHWYJSUc-i@9}`9ftKi_sYo_+W(`DdtEe`E0~_Tku?j_@$3>E<@@3(Y<|pWE^X9{f&t6oM8xf(g#TmrP3g zvC7|aC8&jx@s;nry9a_qS`0b(O-3~7VE+xgYD+n1TT-m+=O(Y3ccY14ik7U2B*=o@ z2GR^g#EKQjdFA7=ZlXy-%Euf{UsxPd` zEQg?fazI|2^swNe@O&$vpb*3H{%7~`-UUnFW0Q1ZzkXasT-h$Wc8fylI_U_bX+MR( zDai4p7;#%X5A%~{tM|=|C&x~909JsR=mFIpORp1nC>hSgG&rYbz%VWf8O}xomLMhO zI;dUEDXXhNqN^61zSFDvTf!c>Rtw~JJK7ZC#_=U&njel1wlrN#XDHWXYw+(d#t8Gwd&+N!8>2a{y62UHc#EltP!<=N?%<%^=?e&=@SaU!-O zO-LWs(AnupCV4{(H@om4aPJn0bUSW^E*?({@bqoYC(s3juw2Jma4{-2wm9xZ*@lTeNM0#uR138}Q*@(k3|xOy4r=z#?^=MlCi_gw23X9K1fjx%!B zztmkO5`~69r%53&9KOcvQ(6m*_mJMICpqV7Jb_5KzT4~WFcaVhFvQH^TEan@aasY<w&rIy??iFFe#Q zq{H77JW@_ViC|m1AjW~peP|Y=0KVSpULFW}Af(g;w+~!jxmg)jew+o(FH^nvKX@r* zO>+KWsM@gGq+HSp-DGW{>%p<)R9aT&(BLeYsk?`qu-_r5F+?**hqV3i5V?Hmd_lhV z_NRJIlc`J+iJ*00KFDm?VPpx-naKGu$y}QZfduQY2 z;O^lk4Xo~6XP1Xjf#`Nb6lzEG@&r5q+3CcvhtHYtMg{9-M%m$aGT4$lF*HF-pkT(# zmQ8b7ksQ7J=p|M%YU08&s&w_aVr1_ez~0Bq{>UKW)o7vqwTm;ypZ6SXZsNQKpMH#v zPd8`gpAD&wct0?VrmOhw9fvG}3`MsgySy0nf|lJeO#8_Qn0(>D?wY&Hd(C>z+SWjDv4 zA*^VW7Y~i&^090eL^996=p~o_6OnO!7B~6~-bk+kTKGpj(cS%TZ0h`aClH&?=iL}#eiDlw975(`?svmglQpG85?)rSghzDP z8kNodC%)gtIng4U(u9>7z-ul`?tX50gL@TtZ7kA?bu$k##PZFfcRB+$W!u=0krY|h$kWx<+VrM2#X~(1a)gfe^)-s7Dbyeo^0ua+=vMfPdizRCs zpSX!c@VZKO`2qzz)Z?{dpiiry*71;uXWiuE*fZK7pDG5?$9!r9N!R$Tws{V|=Wl(_ zEP?=cNbYI|KjZp`qPSPPY6c#-q;1T~%SRqvXnMSTLLDv z-Gp1q#-fSG==7*xWipl*^Gj-$u*jBuBxtC0I7~VKExoI(3v?3}qyQJa2@n?Y06WS^ zYIoDPG?raN5@5n=dEy2=T&ta_rS+ovZ>`8?%JU8ctCkRJbs=sNBMzs3-J|R81s$i| zi_p_##4EO!mUXB+ovY*mv_7>m1?P#$pdxpqiA|tg?md^ehh$;R?FilfeUbh*Q}8S3 z9&;rA3uGa!1)j-<58IW#Q9!AM<{~V2wN+~!+T^TGJ_XoO?xK0rUp9;-aj78;$l*$G z&z{Cq)h?h|5}$}5)ArLW&ujW8c+NJr`&M`!m72ZU%}KVWBkeA(*c(?LTzrsx^y{b! zS-n)wH4@iRSw>N`z1(ISGl3>yI)P^DZ;V=l3BL05ni^Tq6@v9jVsS-c8xNFEW-|uE ziT5;1ehknJ<%+rz50GPO?|#qi6(V|jZm#XrmQ2+uOvh^&-Q7KykQo96!cLcye}}txiGqz zODln9`JxANwC3Lmb2FKBX)J|Mo%Bpet4SI#H2j}^hZV`87<43E@Dm*`Nhg(KE>KBJ zfP>-qhHgF@b4LOq9UGouU0>HsId+kct~suU=JfhB?v_x?w4(U}?C34qj;x7}Yt(3( z-2LpdC2j-*H`r)BLg?yP#gBNT=TbI>(`h!Mn&M36QXCBo{U%%X2^#wo;>_;KgPdU2 z^)YefL$`j@ZZ)g9n&O^r=0tdci`>EQzz35+nj=~>p34IXj`*|By7TuEH-KSV_ZdA> z$^N@}INSMXY$Jap?9kq9!K!+yWQDxCj;=m#g|no)rI9RvOZ_a*5Zw|htjp^+e-_G9 zGmeQjL$S}es$?9-y+q9vVSv2Pb+KGA+xyY_0VWVm+v7hjE>UC1Mr#oV-w`4kc1!6N_KtgYvT zr;0V^1g*|5zomfBkK^8fmXXUe-_9G0v){|y!!z^FpPhqm`l+r9G~dByU$vM|48v-nb5Jn4=U=!$`K_83|+ zE7~$C+T&2#S%yxj`mI6}1g2ZQrENUBBpe*VuSs)fEUl&h8X&NB6W)n3R ziX)@AVZ>?uC`)?C+A36exzWz~P}2Cq-dy306MZXt^7U2eHzV``aO4fzd;gV4;bE1| zb5ZOa1Lf=1F}a!B`CK?I7ONApGaFY-c)EjWG)e!I(~Ogt!iy`TgfKuZ528UuFdsvF z8{b?Yto*WwxNy4Mp@igLy;Ky)*C>kBC>VGXr6`I*J`wM5;fnFdRv3>;Xl zMYK7)Md_>(gQ-U^aNd(nbr+dCG74{4JoZ2&W?ef(Rl71jXTaKnL6afDJh{73!GKE4 zfI65!J;9??M;uA*@NE^AUT$jdtM?)p<-oymat!@3g1K-}-2neV@$~u_{f#rH8bkXV z!Gd;uRL|z`iwhSPr$XQIpLjwj_z7C{$1!w;$;^gZZrkxyU}Ho7c1{JD?FeGGv$d1b z-#d+g_U2fI0cY9IN!EMoh=7omC*`2ht^Yo4z6E$xD6KT8&_J=6@m1AF+qE_qeI0_s@g8 z%bgdpv`5iWJj&l^blC63ccglc)8_)&v-r{8OgF z8izN!ZyKMYE#E_gCH0K&@vE$~gNtVCNLgjNIRl3UVX%exZ{^^#&}2+HPM!qzV^g@~ z@+>3}j=9yZBsxbogTSYRpTI++6`u_i3c&^HEPmOIJ$NQ3bM6URdWCN{CzJtK*c)+y zBa;E!dQn(fZ>TA#hGe#6$>?`+-?}wPRJT%3s!uGutwmENDNeW|=0JWW9m9PhwGx`2Qs5(g3tUXmxm+nLxVID8>Y1UW!$Ue z43{S%2|pYznd2db5lM8u$Kn*qo>IPPp9ycIL8`&1UTh65j!!*Prcj@=U4DPIgZLC) z)htzTz#-Z|@i9R#J}ek6NU}21>LM)7D~=vq+RiB=HE3TN%o*Y%=t$c48R9a~UkWmp z7?{!h*0edIe)Fd4Qwk*j=v-y5e_D%Lx%qzifM(=KW8|1P_K9nLz;FjVc(*zV2=wsn z3@4v`S+w?i``yg>bl6=h8tT_(T}&N)_|B}1s&RbGy!0KNpBKDIMZlGkD$n|_Uuvvm z(V8LLMdHx+DDL!4`@J)ebmswuo+RZ6uQbFapygl0Oy1;dcmd$${zEpw;-BYX77yQ| z=MSfGFE<>vWaQyv35%vO7SnZtY1opQR15mN*2fDcT3?)%l4&=LxWlD0445~b(f>V6 ztcWHRqb9Cu-eTb#_7!D!Z#rKem=t3hVx5naFB+%B3rR>!abes!eA|ItY%C{100pK= z?aG@*!jhjhJ^PiqzNRwSOdUp|UJine;=}8!=d=j~A5J-MU%6oC@J^q%>!}$>!cMO@ zpATne>Q|iI+cOjAFU?-DR;E5MWMdP>AedHsIf&bMBNJaH;XFhN9(1O;+fr8PG@64e zDdMeiD(fHY=}M~d^ID)-NLq@|!U(ugmNEy$_g_#+V1^4~|TN*9x>W zxKNLR(k%!CliW%7>EF=WhaK>6QgZf=XdMB_{f1R7j~@^`2G!llVqmBdpevcM=xN)* z>EtX&)2p5x>DciHJiopL5n@*UJetTT(%yrl)jkMv;kF=)onAeEoG2PH)F2Z5TRMri zOc5AqlPS_Hh2usZ0i3y0UR~%CB_o&Iu{5`Did#q|hyuX{f4{QMEhp3#mJy6mPvhHLYnNA1`y zh&g>($Lt`j_tFazr<*ohCcNFh2>`|_?|a4!MeYPgwyV-97*@L1 zufm%!t9gbGl_38db>!`Ien9sxUnD5ey|p3^bxxeFt5pesIR-Idj{Fv0eGa<)?%5!D zPhH^Bx2&mU6`aj@4w-gCLH7UrdfLbf&*&&;xzjA4j46lDx-4ROZ@3N}7cn&dS0Tq!i?A@U8nbYlo11W3n6oi+b1|_oF`2QmvvRVs zm>F}hm<#az|E)+Hzebe$zkMb4C2J*h^ZzW-2f;sjsjfmO3;mGFo8%ZQGH9wO5TdL! z%6cdmnh;_t=om_7$_esp^tyFyjloSJ&yVtjPYszRC0JcH6=T9#9K0tVpMZyqpU>Qr zP2Uslm(N&p?d7eG7INxkgUukgp#~Cq*`kkZb6~>azHrsZfEUE?!J3S#nt80HNQ2B}E@9Wlb}8+yFX;$t*=NPIcQU^%SsBZ~#K$rFN9tEm<$`l)aCYt7A@g&s zX>LS07aXBwGd?fbp-Zg+dzM*HuwK?N0O(KT6MpRK#89%w2g7!JVZ)17`m| z%jA=7P|eQrWYZS8$8%+17${B;n{bA#=}&3HUD?%{90Aj#oL;GZr@y$9=Zh%4gWL@J za0VynrKuXm^|z$UEWO0WG(jU6v0(c$;+c93`ZobxpTHLYKHD@>suh>z#CqN5S%>=j z7F{4t_ZGf8-13gx4@a<9)0sAR0Jw4oW-!=#Yrh$qRu9)v4_&*f?uQlS#M>Qqa}f55 z;vb!7#OxoMcYyT@>#=X^MId{N&>6gP%R_0MX(%O=AwQ6%!6{D=jdJ?;>=0i|0yRQ; z6$yIJh;6GQX^ricxN2xXYs7{s(^Ht+mFs!LD!MPw%4eGoMRK;YN2eZP19%7FvCFU- zgR$?gTXw>P-slXEIIzcsdf)^xd_X1FJI94Fvd@JVhvr0*+1g7cH#o)xd18c`>7Xd_ zz`*q7i0jXj>A-nquj2`o>HmK~mIt@o)sq|Ww#r<7JoK9!q|*z)XhWAjpzqgX`?A2b zqp#`p(~H@t2jSfFp&JBFX$5yULtpp1IQySH`M$QA?d-?`enwY5w5X@6Jp})4?S4=` z7^byoEL=d3jbMveXM)Q`*+fcsP9?sB