From 7817b72bc98bb2c8a3b3d5cb9ecc770c7a5c2ae3 Mon Sep 17 00:00:00 2001 From: michaelr Date: Wed, 23 Mar 2016 17:02:53 +0200 Subject: [PATCH] project and android config and build Former-commit-id: 7a1e2e32ebe15af13c1b4955d3baec196af25828 --- syng-im/.re-natal | 9 +++- syng-im/android/app/build.gradle | 9 +++- .../android/app/src/main/AndroidManifest.xml | 2 + .../src/main/assets/fonts/Avenir-Roman.ttf | Bin 0 -> 104588 bytes .../main/java/com/syngim/MainActivity.java | 45 ++++++++++++++++-- syng-im/android/build.gradle | 11 +++++ syng-im/android/settings.gradle | 9 ++++ syng-im/package.json | 8 +++- syng-im/project.clj | 3 +- 9 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 syng-im/android/app/src/main/assets/fonts/Avenir-Roman.ttf diff --git a/syng-im/.re-natal b/syng-im/.re-natal index a2d7bb8ecd..7cd8ae4ffa 100644 --- a/syng-im/.re-natal +++ b/syng-im/.re-natal @@ -2,7 +2,14 @@ "name": "SyngIm", "interface": "reagent", "androidHost": "localhost", - "modules": [], + "modules": [ + "react-native-contacts", + "react-native-invertible-scroll-view", + "awesome-phonenumber", + "realm", + "react-native-loading-spinner-overlay", + "react-native-i18n" + ], "imageDirs": [ "images" ] diff --git a/syng-im/android/app/build.gradle b/syng-im/android/app/build.gradle index 4e18332089..8c1f179166 100644 --- a/syng-im/android/app/build.gradle +++ b/syng-im/android/app/build.gradle @@ -121,5 +121,12 @@ android { dependencies { compile fileTree(dir: "libs", include: ["*.jar"]) compile "com.android.support:appcompat-v7:23.0.1" - compile "com.facebook.react:react-native:0.20.+" + compile "com.facebook.react:react-native:+" // From node_modules + compile project(':react-native-contacts') + compile project(':react-native-i18n') +// compile(name:'geth', ext:'aar') + compile(group: 'syng-im', name: 'android-geth', version: '1.4.0-201603131817-92d65cf', ext: 'aar') + + compile project(":realm") + compile fileTree(dir: "node_modules/realm/android/libs", include: ["*.jar"]) } diff --git a/syng-im/android/app/src/main/AndroidManifest.xml b/syng-im/android/app/src/main/AndroidManifest.xml index e37bcf1487..c56b2f64b8 100644 --- a/syng-im/android/app/src/main/AndroidManifest.xml +++ b/syng-im/android/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ package="com.syngim"> + + #aTXwu#Bo+A1KFT~ z0u6yOKq+J>Lm^FphJ-@eGIYx8@KOp4Lo+m_3}tu>rIewRN#ytc?qVr%Qkc;9dqenq zj;?giJ?GoM?<|*bjIl!e$zYoH_Wte#vE54;cW^zf+B@2&wJT<_OvY_rgwM{7-dS@p zXRK4>^SzAOUg?-KH_mAC#!!M7RHRpa~4RqM74-~Yt#v(VH@#+BYOvhs=*=L)`Y z3hmkP``8FBsAgvV3ZMJ&**kLO#<3$`yW&=S{*1BQt?RBHy5ippVjrXZ+Za=}TzSRV z`pjO%_woH0e(${MiYr$p?-*OnxSmCf6`Wmv^@fe>fB&;W#w{6O%#pGF+Li0?{`<}! zF=oPe_J@crS@@ zW?qf&e~@VsS`xn#{wf^8Z;IJ=reebYdJ?*Tr!xMZKnsp3_y+Da;68)j$D?;_hFEe- zSQTf+?{YE~Jdgh~u4n9tUgqq=Z-oD5PVbq;T3BAP6MZ;NJ>jM~8T%G}$-Ty6}74OKr%&onbbGlSTLwOv#V30hHzZzhShqQID_zMK(Ua z!Unhuz!^LXzu`W?^_zw71{4W=kKYRAkZ_NmpTcs`&Rl+I{7;IXQoG~l_`dN!;d&9L zV0P*=$^`n*i?$g1X#95=dpSSE+VKo3sqf`n1Iv}_UF;*)jNiS5-&1|IqMx0% zcpv?aTZa1|Wk!^__^u0WWn(P)xJN;C;LicPx!7B*2W0@yC)|p-kFcq@rw(8TF!~M3 zT0HYNz>l4q&0J`wp72Jvr)&7`L-0tQaBVena;sS}`WD4~UErBHgl~M##q~Pw20R=0 z15W{f3t$n(N_f8rC=QQ*D$s)HkOo}F_#Z%vCY1jM_;-v?0U8PTCmN&!`n8BY3$!45 z$Uw9Z+w2nXPPo4SfZuYVed5l)on22>6%jK(t5);?T>O+Zqpu2le@c>*F3`LQ-?yL~Kv^!8v#I2I8I{?% z&WMJ1Zu^BLuIU6C0mXVM%;KwEB{zAmflT zl5vbbdqUPBZ-UIHmyz*L1^IgxG6?y|^spHj-v$(8e6Irs?_eya+3buDz|)@t>=>8C z8^HOygj*R8U$%ep{c=gNMf@%EfJ`g7UAe@w-a4;;qzgsf5ok53J(4xzcd@@r{vJHp z4SafK-o!YzqwNhcFG71|+s*rk$WNTjPwH<@Q;8Ioi`Ztqg1 zOfMQIXhF875p|Ml;`t8&zX5M100w{-pMME>A96aMv2o2`h9oRv`frkbj3r+Nyf1?M z9etMTmoCw_YU&TlS^RyhfPW9TCLWDK@4`08G@ZaX*)r%D{=!n$Cn^0Q>ye9>U!YH9 znxZcQWUnT8N~X!=Qp-oi|4Y_0-~qz-FJ)e!{z4~oU06zbBO#WsJAyu$D1R;3W7xz= zg# zNj?d12!BQ@W!*(SO1i$1Ka<@ezk>V;(s8n^O)AHqYosBYE z@e`JvaRjt|2iJ%<-hprRD%o?`=`)hn!d+#y>;9 zqI@x1iR&GJz6qGkmO|Fk{U_41q*I}1C-g0J?fCn6Ch6S@fFDrC!zJY{;6DJKL-9c0 zM0tie5M>+%oJ7B02fQtSF?pIZCZFfJlkWlkgHt4rB;TNj17i}wE=E55lej`LkR9>P zL6i@&>zR_dSsvTT#kuL+PVRQ@$J{CIx7>el|H<3K6dJyW~bfh6#7_qK_5ft<1(p_h3KPYqK_-kM}|If=%WsOtW0){ zkB|T7_;1I5GXCT7=f@u#zixcz_>S>y<6Fizk8c{kdVF2--;<}4ze)Zw`Qzl_z`}A*4pE~_7r~m2n z_fOw*`mTSC7ALdw)VUes8Rs(oE90Gv*F_!xCjTe@r{uG#dtg%H)AawiiMXGHmR(f`{^10n@NTcsV+zhrfe(o0*w~S(yz|QH0z;G5E{{neZ?# z^Fb;DEXYb&h=o~%m9jF#Mis1*RYC7ovlIjo<}W%J-;4X{DBfGuQ;*kZN>x?>r;0>j(IcC)?g zW_AZV$nIm`fvi5n4zY*X-?8tqzh{rK$JqDS6YOzzn0=r9fIY>YWKXlB?1$`GcAWi) zJ;y)Cu4OCOO12vMbc}tQt!Hcbm)IyZLRyNTV!6>?hsY5s?hx@Y;L{4?ws z{v7);7w7*0QutH;1x21BpMRch;g9h@;(x+!WVf)tVP9wa*sbg~_6@e5eUlx4_Pmqb z%l;M_lRt8YxbLxRxbJe0a(~aZa*uP5aev1!7#5jvlx6h}e4pd?4<6;lZ#v4_ik<;A z6-$?t9%Wp_>72H@?J&0tANU9^gj}d8BF^^13SWEQfM?LT&$(~D%vD90|m&>~&Hz;O!(KJ6%XeJ}1s;c?mMg2&}? zp<9D(cvMzo#+-p^=$MN-mi?D8oHNmH{5BW8%@Hu1_gBJj{+GdU!I#3YW}>I(VYm=| z))0oZ6Bur>9cJkmzWxG)vcEdYb?2d6|Cdp2m>39pZAAAC0?JK)C6t@L49YEE3gy;` zo}Pzt8~SV|l-vJ5qP*yQl!v)vumcfh40F#zi6@}6!%*-DZJ9m%Jd}DrlywcRn4~M^ zP}S#OsemFE?~;F031v@LEEDZip(Q^|h@A>Dbyq=xk84U?`ICUwX->G7ruA9f5V&tQcZ zc%eLSkmVRWhz!OP29VyT%5$iQq<7*$>hN>$4*FrEW1y1wStUJ8{$4GORQ$}ILzCUY z4e}3oj3B)M#RUy!oYx@wl!dOS&{HP%6e#EfCnVq(^b3C%5Jt!C@cvz~GjNWX|l zzZnyL)rns(fK9*HFGCZ*rS>lMOWev{68~}S+%C*;WMqtG9?E<{saEzWZ&W_1JgNLZ z)uURk9#HSfD$Dj~-;h(0o15F1cT4`70&T(d1&Eu+?U>zlTh?Yw=f{qZ7oQD4!WMgLgzz9YjCa`Zb!9J`9g zoWm}SE9rjBlk2Vbp76E%mHsaOa9~A{1y7f}5jq*37wL+;TsmBOPw6LR^<|Hiy;a^` zzNGw>3M2jvS7uc1t4dToS#_#fUA?d7x!8TN7h~_n`PxM7f;w|uf87W5&(^=yu&d$4 zMrGqz<2_B=n;x1{G38YA$1TTNUTk@#<*kD#o7y{d(bSQt8>e1B^_Hmz zr#{p+rLC)NUfc4vtJ=1lCpIvEdtsZyUaM_>ti!hffUuV)%{WcZNS2KD$c2O25jvDzd6}RoklGRf|@QtlGHh z##MK&dT7;?t4^%?#i~=QK3MhHNXE#Dk#!>*M;;k@Yvj|_&eh9Szq_Vo&HgnnuX%mV z$7}P~RSo`_9;dQTEx#Y_IS020a-K#WL`L9}V)r(j6T|IL3sr8NP7p>p5 z{`K`Atp8;F*=y9-Xs)qeYY*&@Sw(j40&(=d*k8FKz>q}c--+E^2hg(12 zrrf68=GYe67TcEC*0XKFwl&+fZriu*o^6kAJGSkmZEtRSf7|EVv$tEfhql*m@7lg# z`{cJAMK&(1?TkL-MI=Sw?Z-+5-| zhdV#NPI;a7I{$U`*Dbnk=XLj7_vZE1>t|lS>-x98R`IoW{^pY#wKrDWxZtKmH;vr1 zao4)%_oH?eo#-sOAO>>b^^Yw!NO2ln2#_t3tl_no;p|K`}ueK&8v`PrM_ zxaHBWXMg?9uYa`PyMNLCJNG}f{~z~%bgTK+;alIkjolWy?eJ~ye8c;VmTxTj#08o;x1Aol#qb|y(O*VJ z$%Qz%gv&jSLWy8GBYYgewGxJlY6{e_>Hsw>YI#B}fSMaMm_ZFfsFQ&5)=b2-d9aXq zj9=VpfT7HTdykAZE10Fsj^Dd6^pf7{63}f`Q!@j(eB9}b( zxW{7g5THls!vXG9?iyj-Dh7T~gAcL*YVZOBUoiBXV@gmc3s*8vQTLP+<6zWnEL52w zcm`d_kS^c`{uIJ=G^09MQK^d>JaNE*&dxhJJNXwr`Utbb@IM)!kLTNvJ^Gf6A2l_j zPHQ)pF65?NFwzAhAxz>%JUPQdcD2DzTxY1sK% z;$Y%e_z%Tvuf4`SaS*)bqN zyCkdBT`H-YbUk!Z;MP*$r4-y+id##;t)<}BQgCZ2xV04AS_*D0mASPP+*&GdYZadE z7Pyt#jGh#hCTo=#v`P#ejzO!$pjBefDlur47_>?ZS|tXp5<|nskkFIca-*%L z37w)Ps%g{6XrK#*vsVR8(fV z{eifHGu4zSYO1I3q*+T;%M$!u4})Y4FUv{;cy z1WOtnu0Q8FN)wf(oz)IS2me}DbA{Dw)nz3gQzj~GLAy=`b-?`NrxiBLq3A&J24pwq zaQ}528dj!$HfjjZz!8n8iPoVCwRT(+D4h*TXM@t&gmzrc2Bot>>1ZrW~VVsCSAx(yD*0?%t_M>ak>x}jZi6+*$e@t7Ssv^(aID|4|f*B`z~yd zV28+zs`0@L2m)#Woqz$r2w)7b2XGKTos6T6R)#i6Z?{5kw}Patcxo&3b}RIDEA)0N z^mZ%sb}RIDtB93Ds5}iIy{!X_Mynh=F{Z~|#>c^y(W)stv8BhI&vRe!z0Sl1{I>EI zpRc9dCYPOscAvrEvlq%GH%tCXE+_ruig>au&b!i^q2C&OMH)>JwI-CwE5G0ee8hRq z?xb0?#_>=17x-T?AM*Zf+=1hm1jrOT0P<`yk#Lasxe{Di39hUJS5|`jmEg)saAhU9 zvJzZb39hUZ5%(}EPXWlz)}yUTK?T&qTB%`Y$rVyFE3O@bSrKaj_fl>nEb}1cpTgk5 zFnBNw9t?vA!{EU%crXke41)*5c${pNCMhc~ah5lY)f99=K^Le83TBXcAlIA|*W6M~ zRAptvI>dfuV81f4e`-|BfFPh2&Qj1`0eq(Lhs)K_6%cxZ+_?{{8pAd5HT#j@c2k1|rc& zQK@cIZjralUR2@LYiu4p)I4N(6|y}~2>y$kd`wYy$`niYPxw=!3$jY^J%oGX<15%W ze+qhF)^X@YC1~vf&(vK z)i`p+k|;WDLO*^Z^kcs0^=DH*NZV$kO-X6fM4Sas0;mH_2MhvM1GWJ60`3OLUVY&y z+{kohG!VU?zDdq;azXe|NSrAKf(M&G-L<7vlYHV$tjA1EC zfCq?!!bDxeC)194ML^z44!*9R*X%&(gNb>03(zPzHoVzYnSHveW+z9~GTlZE&` zz8dq3@#ExI0u|({k?Tdi4u>-9BF~u2o*GZ*JBfGj zKi5lt-yzya2+SSku!G|Bkg^mlwE~(=0nMg>W>Y}3 zDWKUDLeEA~?gAVDNcL6%&8C1%$~ab%R#B2xA!l0(4zL6q9|C|lpaU=;unMplup4j} zKne~Rq#S-W1qW$?!Oc=saBV6gK#(^68h17SAv)lbpD$^(l$Xy@hdAmGI6c6b63tv` zbJ(JQzM{v#ula;mV(o|yt2w)mvI@i#m4FI~c#J+10TCRKOQ(m%7W|pZ@=DMS+Hg}F zBr$H#6(OY<2fHCLZb*z9661!%xFIoaNQ@g2jfxpSj#Mq6 z6EFZ60gM6m01g7OFYY5`z(>e{RA<0P$nfi9i>FUt9Mj8Xe@2eMQ{}<`hMbJ_I=8&> zhPBhCt-Ya9F0C!CQ!0vzDyFoySkvktH0IQ~5$FOHt0P^2?H1r`8D|oArnn>J!XE<{ zL3Kb~R8+b=g&t^zC^yp2Usv_qbberM(>-Vi{yXEq{R2H=doDx-sr$$Vciq7&-TV2%hPkayX=^Ouq`y=pK!!10H=s}G|7m_V02j0qM zyp;oQ<-l7x@Kz4Il>=|(z*{-+Rt~(C18?Q%`Y}Xj<;(#R!c&2F^;N0h0Pf=x-n@p; ztVwg;F>vy~fp<~QR-^NX(}BG#nF3j$K$c8_EKnc|6vzSvvOs|>P#_Bw$N~kjK!Ge! zAWImA1->UI48w!gLb5D}Aj=`hatN{?7WA$Us$bm<;7EDr3u|^>(y*k%dQG{AY)HRNmVO(!nDi+O zMiwd-Knb7@FdZ-mSPj?$*bBHDkkapx!=94!lzt~KgCiLQzj=WcGPL9&I9aAJ!U9|~ z%3MQBpN!xdEHeaj0OkW$0X7461MUJyTw?^+7zM83Tq;Ur$|2r)OhWoV=i=T>{zjp% zG)Ct%I(@B!)w73+`nA(ao$(Sgg<#&9P8GL-AALSslAr6I)Q}8@ME!t?=e&d;hS=w z4)omt&&2`H#R1R70nfz&&&7e5%mL5E0nf!D4)tMFo&u1u%R(DLnP!)jGmv$&iFneK z#*_JUAz#!Hv=7Y!n$bW|3Y5ynqdhXEXkCH_l=6U59#F~yN_jvj4=CjUr97Y%h46xW zdq629p~=pg(g{UTQ7o>DDiDRsQ4jgizu@&X#0)4JP zpDFr2%4SU1qe(bU&ni>yXqv!l8kD8z;4x?~u_jUgv78vjM`5F)VrSH-m;pgREua%H z02l#`0rmh60;n@qaBhRlxeegl25@czIJW_u+W^jO0OvMgd#jzc zutU?|T2s?XU^WJ#4o5U#luOD%wJps*qE~t6UXLu8QuM-5%?%a5Yu9aLE~} zGDH)JC?NSa#nqHasxFpFkQ{moe-z+PD=XtFkFs*;DT*D+NmoH{(Yyr35IR9`Wig#V z0xRqQ)yTn;VgM(2!71~C6TIL=(@yY$6TILAFF3&qPVj;gyx;^cI0f{R&VodUdhfD$ zSJqjQib~lT3+XJ2sIw492y+sov#{t$V06-1KAC%b;2xjMJw9-c58UGe_xQj)K5&l@ z+~WiH_`p3raE}k&uc+h#sSJ*6WK;@|E-i&f%8Ofeq1MXQTJkTVw*rFRnq4L9t>Ws6 zQd9CZZjr39WDO?JPKbTE)9`mq9QW6Ve#NPm0-`%;Za699Rthgt^ODk}g5axDIEhSw zD1}PkQ3@2)sF(pkKrNsXFaQ_rcA8}hJhR2~9G4G>frPPNEA-_USC3&n=swq38#Ml*rWk>c0QUVUo z;|#tUAK#bk;GQ}6DWA=K{L`N%-m8BPjdZdTd>?lo?oqKgiI$kPp?R?kv`P+Yrc`E8 z7Dvu0QJjHf3-mg4Cqgj#*U4v7>*qe@?n^945IrvFGg(c_2~q1jS|xv4=riT1#6F`G z`W!FiYBCL(o!m3Y4r+3p)MKKtZTxfY2mI?`uP8VBI6PG~a7orUj9MjGWAeblu%cmD z(J%~S7*;e4D;kCs4a16tVMW8RqLij?rP=2&tSBY8DfL&$!h&*P;tGMw$|aH}qUgbf z5!OuDNon>qrQga(zmCK_Dpz84N-OgOI@>WH1OB3_=EjkinoVgF(n3%}A1Fq$!|vE&|Ll0K z9rn)-`)7y!v%~(`VgKx~e|Bnyy5Yw&{ldQ({~F~A%@NHQIn+i5wXQM~1V#XgY@dEY)m^Ae^1(<1EC|i=`_xd@R?&chGm_tEDCYGif#< z{el>a#NyF>g*R&%)#-5U9b6ek{%2|6>);A3A>7KTAajd+(&tvuSys19otoG?$P4j9z4TZe6 zmGgyS;g+sqo!eSa(mcH(*OsIAHT8rVmQM9X=WlG8x^Z4*B3{y3YOY_oyQgQ*iu%&o z*Gz3)Gc)9L+XCiLt*d&tx6)UNNht6i!@d{FGv;8|57aBILrR~+5iUrJXGD8XzewfB zkK;xx_WZWbyQ0R5{2Oa}}CRs*&G_5$t( z5SLS~vOplbvYa9&ES|xqXCOanV$VlWxeVE*1f!Tap)613gv3n3os{Sl@;N3Ts!Tvt zHcH}4GH4_mw8Db2o*vYoM@62R$Zmx>ToJi4%oV1p18+q76D3pY++eKASwoe->fh+7 zE3;d}ar=(_#Z8rtqVgu^ZTt(`l0@Z{*@e8KsI1A;Ftb#PgqNk%=PEI0oqHp%sNC(V za$u4PHn$wQ^E=R;F7}7xz`Yt+mUN>UdP)uDL(5~-&{JyYDK+$z8hT0%J*9@8f-x0s zq8fS%N8e0j`5mM-9BFzag%zyz!MG`s7IcLIx`Jk61YJSX8w%(O1#|`J8sZfNbcF)C zLIGW&fUcl991(ZWK%%b5gRaPfuE>L~$b+uPgRaPfuE>L~$b+uPgRUT>hX)=)ydqw+?8aH0HQ%s^v5xK@Px7Pw2bxA^Mj|sunjYX^(0FQR zt!iyuHLKR6>2XdSnLd4FsuR34fH4O!<{XB#Rtia`j|$7XR2Rk;DZeJQE{{A$nxZ7T zLOq1Xh`!R)lUnMl=sVKi0q#f1ySUlOC%A3NO8$kOw|dU@5I<8N3eblvHsin12Wc^! zAhVPEkn&m!Jp!^png_OC^oy{lqPBi-R}_qx{blE8QVRN;2UmhYX@zxRq*D4Ga_B0cL`n%B*W z81(-F(o3}8D)8S;*bfK^%LC+2NF2?llAoQ2E1AM7OZt>H3oapYl17)pxfIK$tf6#E zIuAp$5x)v^*H}RtE%e~8XP}?k+TWkt1-3!5K60*+cu4FsdklS6FnF%$9|n@jM^5TV z$}W@5pjOe|xklWmz$qO2(2kB>EzTc8&?n{(C#?yTl5pVnuO5f{gtb(uM0;VB+h-{6 zuA8wUzh7Nb>MgTm_y5q_QSY5OvoKU?4aJLabio9@ZbYAR*-&ciVjP)$X?-z?8Y;3i zDlsq;Bq4_`?jU!y+D)GjpUA^U`#{B>tF$o4>%R66>Z?{q$V8hj3EJvy*F>yOMl7 zU6lTTojnTt0}gk5#DBcCpHD`UJh9HuHt(*c8k)qpL4y@0y`q*}#=k&!H2%(B67zZ#}fP9@<+E?X8FQ)q57}VB0#J14fE6L7E_iGXSP=)T zhyzx{0W0DFmpfoZ9Izq|SP=)T2$=&~DJ*8l zGSz~2flV0{KuI2sQPLICd?kE+4;+7*ItX(EuT&0BD~U|&^X>2N-`_lIR`Y)T1zqWk zc>TSjLK60VhdU{fc5iYRP~is1xYIV z;@nGEI?9SLlpH)TfKNi?5C9(rWIha_OO(C}fDZ%U!vHuT06q+W4+G%C0QfK<@L>se z0VApmQSO3S8bvI*vgf8NYHP2!sfS8)X>;(`=jMc_uV|=WIXzS|eMMvAis>czy1QHa zS$FARcT*wHc^XH$Ba!Zr#)gsZ($ek`q7U&T#k&RYxqpFyfF2YN6oDo(Pf}b!njgoW z3W->eJM98@=3(H(okkhcMsO$1b_=@32<|k3JB{E@Be>HD?lgisjo?lrxYG#kqmZRw1QS#`l6q{XZQPeoVuRxO$H^HnF-_4m*4 z%xErgR5lfl@-O5DyAwUj@{-56Da6DX#`1{2%%UcH;fD|NXYeu3`Z>yKfuTA;Eih9K z43rD&jwMZbS+ObFLt9#CZJ&%uA22CR17)FN0h9ph0Mh}3fYpF4fW3gb0VzyMsj(E# zO4I0&b1|3oRbyNei0&kAC(Z4Icss$uPH1i?G`AC)+X>C>gywcab338AX^yRxVq7OQ zw-X$4UW{uJH)K$Zo4#}=Anx2Cubg|t(C)X#!qx(JeW;|n!4sOcprUw6U6r=e)K_MU zN9@M3_Hutqxh>c>ue@<6z<0Qd^X+BDW}m~Fm**&(R$bE*wd9z5wuV4ZQ(We7l{n0r z+~U&aNOWe@>MIlcz8uH{`9UhydK}_G(*!ABb<$e5l+P=Q0UTs#1DbHi#A+C_iAWO+4ePkw| z5(fxOY=%mAp|vuRv>=ieMACvtS`bMKB56S+Er_HAk+dL^Rwj}bMAC{xlC~q%z&DXK zQDKx{Thu%}efn@S)~AHpYiim<+I}v-eq>g8`K*z8?&;*baPJhKZ%S_%=W9ZKa5gC8 z*9mxSk;n1h@eorkQ$?jh@bx%P*3vimw+EB|XEyx1V|+V84ag}RLdA~+eKz{#pEGH{ z*ul#C++r-UE{vXbe{C@Igu0HvqOs|FLlbZD(2U5k@j~W(jz~%Ha)h$}4 zLY;w2!N!xHt^L_QtxSH_&sB1FBu{WH$t#opTab|=-~|a<7@mps=9AVUr?MkrE&y}t z5E)w7M)Sb5-V&=}3>@N}BJS?wmE50`tGN5lot?pldpgg(BF5%+tiS&;*59j`i)5Zg z3z?@B4dNwKY5En(WYplLV|OKXjYWUFc=5vz^ADV3jfyeiyVSaAy^Ncba=>kIPNkq_ z(){b@a}auAd z+4$dZpN!LD^gLnRyV#qGO3HC@pCof<(B?bv@9(gNpJYzK+%)gVV+!;F9Dt9-C3S?r zK=el)w_e3p-$p;Bb$~zTPGcKQB{vVdy`Tl70P=xFEhsA1BBlaaY2#)-^5z8?SCKF- z+8t)XRTH$Ou-=TaSV1@yL3oToc#J`Kj6ryeL3oToc#J`Kj6rye(uCo|s5}KAkCA+y ziiy}>;Or=4gqLYOJO!n6}GF6^Ez z!fcYsgMBG!(?SjM25XbBtA}!|@tQX8P;_KbhGIqr$D6ui-sW<9eh1HL7!*&il6JlT1}w9Tc-6?yXzB9b$+zkV!bg`5%HP)(IV{b1&!OW9mLt%dt{U)5Dv9>w zcvJQf-o>M+90N%Hrwfwig4g7N0&&4>a=~kI!E18CYjVMBa=~k&={=cSCHtPDxwPd= z@R|hwQ(Cc%3#837f1-%KUe9>fiF(5iH3Ua~`_e&Ba=iiKwhC*B~gnrb* zWYXS49D|0dBtcY?tk4=aK~_jly3m{pOyh!{bU{zLpeJ3>lP>5<7xbhHdXmHgg7q*e zPXSUn9Vrs~3$l_*Jc>)*^3fyeTLz;VG&%Yr$O|QI?BI22&4L;gGav}41#|)i03(1g zz#hOs0OhD?eY+qpL`FYkj!vEQL+1RDIX`6151I2r=KPR3KV(i?y>JMXrvXCxKTRW2 zq#=%v z%L!sRK`bYT_^J%AVkv>+)YnKIKxL^x&Qo>|Nv zVOvN(Mn`_4=i1?6O`xT`z@3w0w>aE|ifga!;cic?4tG=+DV6QnSOe=ANF=WkeIX5Q zI}Nt1=YDvUH9*1}0St0qAjrKa-}nY2vEa#+J){|b59%Jsy%)ry$V9yAqhFx60kVxG z@3dioq$2=%4?x}nkoN%OJpg$RK;8q8cgjNv@*aS^QwB?Ht8xNwK2pTKG|encr>F2H zF=5U`IGR4cPV;ryGB0L>7qjV+;Kgk4Vm5d&8@!keUd#qBW`h@Lbs;)*2$iP+w2r0_ zoK0JjXux8P1mhX(+mv`bf_5WlH-dKQu)he}jiB8K+Kr&y2-=Ov?MBdUL>MT|{l{b; zkAcUfqc3Qc0c9V_pR5IR0tNshfHA-xz(Ih(<9cP<_May1Jl%qGCZaXb%nM90U-UQI zr(IoD>zfm+o)*;b_66nfMG3FBby2OkqSTwq_auj{rH$_3l(5kpK~&uoHXE+LDOlMO zEGe#O^EH-+NMh<1HM?_69#il8-lkHky}ZfoZ!WXIT7z9Vtfyhz8Q2sndsfUf*ugur zs_)_+m>u8bPw*XiTILB3kV38$!Ba^&$umw#4tYuWOfB#v=`)>-ULDXYWwF($m;pgR zEua%H02l#`0rmh60w#PLan~GjE3_S*B+b*+!>jFq3R~IKh@q!C?#CH8J@8)c&$k)# z?NuG2nMcW_0nqx+qvx_N^4uJsx74L z$+kw^mWWH&6RHptCb!aAYts4kg-%O>&Q_coDz` z*9n*xy;ie~Z!_>sbAv)SZAR4$e4Bx9Gw^K&zRke58Td8>-)7*OW)&yl`VyE;w>;^H zywLiHe%>d%2Y917e4LMvK8G)3j^^!HR*4%@v`%>u;=~Ruz7P|w;xY_cLh)4-G_*M2 zt0rhNLEiI|Ylxy$vZa&g&KG@&jOIIBP$YQuf`tEK2~D^gf=|QsLcY!H$Hyt-hKuQW z1jl;3d9l$#1aa`5(>l;3d9n$tY64MC=g4~h5#gf&`rD} zSES8lt~yIQBP4C11D#JPEkB-E72yx`o8lp@&!H`}dv&hHQk$b{imPg_xwW9uqj6aa zb*`|f7(08MHB&u}^F7;&+-j{&r!yC3XQ;GAWnOo+TN^A5TZ+{hi>AP!$<0veoE4rR zR>}M52p*OTI`{B{@Km3qxk!}|1ww;?GL++@`9sS@JR*f{Da=kf3OGF_K-=2Ij2UHo zF&!-?B2_@V3W&#kO+W`=K42AKGhjF1E`Wr16%a3;s!Io*khF<$1f79u5SCiVo1x@1 zJQiL+OJMm_*FHYqZY}g`=wOXdl|5^CxMv@C`}?LqQK4Ghk)<{U8@wEsxalUsLl^My zF3yxIX1_}Lw6rcGJ)XIgFH63!$kTMHY096Kyww!GE|oJ&MG~oXc_dwV(iV5YmnE(> z19@g3&kW?5fjl#iX9n`jK%N=MGXr_#z6xAx2J*=9MFtizg9jSHBkdTYH621A+l0yZ zGZQ)?-I={Q6%>#!%ej)jlQSuVFD!fD-T=N-Y+_x&HYGLe1p3h-{U#?_|-q-IR(g7g7j(ozEW6~W@u9vCe2Z#9xSzyK1U(1 zZAh(jqf;DH2UrQ~IfS(*w7P?D>Ar~{?L9beEx)C28^5NXR%fHf2Za)A>u6swY~(v)P?`{x{i1tDjv`nPLj1*SOs*`*m$gTp{ESRt(H?Rt#EsG-{a7>BsStiY&9!(cJ%v6^ zcCNM1@6B`mWZ^gXo9C`|RC;t7>b6Wp2>V_BSz-_lx|nhI0oRk)ilk604Mz|%%0q)f zNDzo?MHJ_)6>)I7yXhPsa*Z2y~k2M=nHcdRM-6{A6q$g=T zD`|iTomq%k6XaTH?FbG6!JSk?Ivu_cEm+K>EWE(RjhfmwiKagj#7aVq% zI|_K7%PXq%JyBpc<~M4b<&Gz8AxA-@rYK}R>?n6?h(~+ImFza*ygviweXw2x9fU;} z_?On3Adzreg8%TWS@9lS3t;>aVf;(6kP!Boaz51_uQ2T}{r^A#t2$BH$>@ z1=?X6^)ecC4xg?asLIZeQI(MmRPm<>1&6JnB28m~BV>DmP|%ofv==<#t1Qanc)q|< z?mk>#H(_2Fs`Pz6%5B6PbbydiKxXl+){0aWPX$(Hjl0>;xDW8$ z0=DuvkfVmGm1fxU;G7aC_UwiZ5&%2NRGWB|-~ zixw30qJ2jg84ey0lHg*3PbZulFJ_RhNSz;#1BH0L@4Wr(Q^${R|IWL?I3D(MaaS9y z$rayOKx{AgahG-erD);F%Vt0}&3zHlDW;;*HQ|j+(qqzmQ%dkB=~Neaf-W&}M>9uO z=rS~knhiCgCAL}{O@`FL;W$QI^XZmX~8jyoLjp7M%{e&>`>V@sgE zcusi*cOZ9JOUu&y>B^FpxmA^OTY{O>61)%RVLx zi`xmOtU3Kf0Epye)DlP4I#!b~OU!^1W!3RH0cJ-W1^tLW;usNI!Caa~aCD4<= z=13mHAK^9pBB+ljd0y$7#fS$QrI`eQn=b2Q1W_OPp^vgDx}eDAvQEShV?UaG^#d6+ z^Gan2N{R`i;(4{4u(O&DU=*i~AypToCscSf1D%sAtj#jvYu__KeSlZTk*%r;7Pf)=iW! zTBJ=;jq;>m?Xb{WvUZ}yOC6mwGX>gEiV;zpc+yK7+G&&9 zX+t}0Xr~SBw4t3gw9|%m+R#oL+G#^OZD@xM;-r(-=w$@d+A+M4ASTV+&Vuw+Kx*hc zdGa;d8#r%bHl=|SY6C4nrxO!6s8Lcz4NyT}ZJ`!au^bK;bF@c5sd7Ly=i~g;)UHnW zN#*z%9nzONx!j}>-{?>-9aV1PZp>|P>iiCEWVtmKu~+z=K2KejzjdvpJAZ1aA>h#J z93IV9kH0SB3Atj^yw>V+f9^g@P-k~*>I<+}Kw~a0;AgoU*#?)f(o~u22voVt5(YzK zDBKb574nY>qVWtAE<7rEUzoVMi?Ar|F1bugO8d%aParl|i@MJM9x=!~VgQdA zz#|6mhygre0FM~JBL?t@0X$*=j~Kus@Dm`;u=R2}Ox&DC3IZBVo^J*nCgz?|H<*fx zO@M!uO8zmYk*Y?gTp~HZ?AX_s0okI18fS3dJPy;O#PSZ3E*omJY56#msuHi}ljO_> zv9rPZv4JIR@P2IYer)i5Z18?;@P2IYe(3N|h}OfXJOvO$i%tMD0%##6t>h9irie^7finJ1DX}nqJ8znj@rJcr@6|dY*J6H^3@0Q z#*#X3RYH~I8-{n!oVk0rK`s*&ed}9VuAWm-G3V-*mi2uVoVBwbrxI3H_BXn9{yJYM zZYyi{d73Ni^^wk5dxz@khW5_t-9zP`-nNZ%D=X)2Y@51?%1tC|%*8#zRlw(R;f%qC z)ER>pW_XlB%tAII1JYOy>7ku&v}a$5I$0@N5QjJQe5I9D)K=+)ZT;fe8qCPj5rrwo zR`LM_wF~!7@H)tVlER?ZYKa4&H@GtC5NBFcPd*~f@(?{k6L>*7*n=|9lvttzw`u`6 ztq8ne0xy`r3nuV_3A|tud4X1wQzD7{6>7+A?$&$mP3dDf8BdT_zRrSxo&%ebK^2uvA73=girJgRN`s>xPVL0Z#XHThR%jdBx||*lJCDN z+<$rR3doqycezj^rL2|vnW){wlz|0$PV}2-*E_ApISyT@1W_nNRw7*S3Km)=)o7g` z=8MI5HeJ@L9l@_IgTA5H@RmU@mO(F;K`)j;FP1?smO(F;K`+t^M+A*p2E8b}s)Y1n zEif-AN%CB3F{D~3IC{BzE%ah7^kOaaVlDJyE%ah7^dhNO@tpUm6MC_jxVtz_FG`9M z`5G}-AZ88d)N495K|B~z34W$c#H8PlX%SP)Q7~x~(iw%0j6!)up(CTvkx}T#D0E~L zI+BiD#Xt_B@-%>SWHH(h^ejb8O^^#xokGOa1i5H}Tr{EMP2ia($VC(6q6u=*1i5H} zT#(X*j*M23lVb7+i|$jW)?|Kxa^(1j4kjvhbc}W+5^ctiQ?IqV3+E@_kTs!PPSS{c zW9>zh32=mDgI6Xhm zh^uwn5pF*8Caqaeewj53l4kr0?{sjGb|vomYphuiR3s(k(qH-{sldy6=@S&f7m&2h z7^rsOSa%$fE0(c5lS{96neyb4Z%zN2epcYLYBW}7fmDJR=(2oXW)3=!U8&@NVVfHS zVA7jX=%qvX_$qb2r5Ii@k`h5hpxeT1Yh`lQA3cuJXQM7gkJrXIEA!=YTg2{j$$bcTmfF8(z9>{{%UhIkke82KbZYnS;349X{^&hV7xpas0*+-*2S z#5QtDRy;oeXXuGe!ezg7p-R|>N=zr5sDbsm(%U@c7bc_ybF>$Lwq1m|TMFS6=t4!- zaBf`JS!%2D8zY|5N^>Y)T-{R`%g8qs8(cMdr(dh#t(o~YlhdX(Tl}tkd&uUBW%J6$ zprh2GDT$i0joKWK$LuI1k%?l}4!tV@Z(pPxDWc~<>oo9QA21=!DM>yUu<{IWA|95b z@_g&6TRZp{uwRkp2kp}Q;K!8j7T3I8=skX!`N2ZO)9L#WzIcvM%5$dHZ=`m6NWDLQ z(y;KaGHFQbd2w(nxbTAMLqFD%USj^xS!(K$mtm*PALiu$fj^o)eF%Kc8NY!KfhGm4 z9XtnoUhLc2Iu%rgQ{)<%(%|Or0R=Y{1@P`p0?8y5q%L*Zi?_w3BNr zs%i@?Uw8I71;d_eLC4Kve@1@&8Z?g+cRjM3^R0w89KuZoneN~FhggUp)<_T8D{7VGjs;c z_lj#NJQMuvB%jJjiEf&$5+_+iGfx>Bvivq_g|NJaRL-r4>zk$b@5ZCos5H5Gc5{Kj z9nxE?Oobj_wn3ZgDa_Vq>8F&oa0+#yRcm$|va)l0nv5(>uAwkfp_?nvf;LsaC;WXv2-~>w$@F+CUH5yshXn;EnZqz{6XrOB}&@~$98Vz)f z2D(NAU850Lk4^~6j8?wUCO0950SsSlzRu7T7cIQ0k3f+_Byzwl&(_>`~Ht3TvlRYfcPze+El_U zSrI2V(}{jN5mP(yBPU{NCt_+RVrnO1YA0f9>1dpXQF#hLbF>z;>J%8q0?!ZcrUc_8 zfZ+yUdn(E%l=OM}rMXv{1r_v+;M+{%-bTWBqi7uJ1o@=yXQC!fYaqO5IIR=cS~2=I z)Wm&u;B?U~ysQmM#}H4%q_-+Hf~K{CRMcZIQ!pqxQmGwfha?qn3hAujFX=eao=bWc zq$oRvC_hFVP@~Cn+VvNACubGL&vPf&OcJm!>tH4ylVtGcbWTP&*4xm$JtZNM$6?;F z>QO*tC2C*wjkkKVAinWd5AL9|fdpRrO8dD}8?7i4l>td4a+7iK$_stGc$60-@*=I` zMOwv+w2BvL6)(~%UZhpLNUM0E7@$%Pq4G3<7M*3Ljwi=?{8(uwym~tylR132Nz?a5OE3TnQN*t1%^aEmmcECKqFklq03vd8%2=Fu@mniuUsJsRccK#Qp#YkRq zV1x_Of4$I!x;1Ly3@)#@>I_ig3+@8ub$iCn2^-Kc!tEWLBi@i|KDH znsj{o9}BELLusrw9Ig#{j7ARuPFRwTbmv?3UYn*N7^pXK%YA(#nrxfX=lVDP-UCGN9Po*P8O5`UgqJ%s}lb}6nn9D+q z7oGtOlA=QzM*deLo>U*@e!~4A`6j1F3a%=-HTmmpEBVaa-~CZKPWr?NeiVnna?mpY z;f(YIcLOW~II0am7NQ>G5Z{OW)y}2+zwEsUd|g$wKYsSU$-T+FndfG_nVX~;nlwp= zbV%B!BWdYG%OIxBZJRbtN`{uAA|fg{JaJ-BtT?q&Wbz5GP;fvIN5lzH5fCRtAE2)f zpGb56-|yPzoO^E4q89!9f4|@7CD}Rq?6b$U*Is+=wbx#I8S*ND^}k%OZ#=PeFJuz7 z9O5jc8tryY&I$lZ4!piP24C-aahbW=8Kd1yRIt^99cE5SSR7$jn($o=s6tF{CZ)49 z2tqZWe}U2VK>R_K&iG|j%)FgGjYaqHtE{=&u({Q8CUfsiXIPH)1{U_eWsNZe58AgC zgP~Sv;!K++-X%0~YIxK-Z8&J6H=Hz4^6~jhc=V5;fDcRlP&&!*>q#gJljbgjASK%q z9yQ_7Un9IM7A|(y5I_1mgctdkzvScdF+MsU6%af2Ip9*hVQ8vzizEe}JcY{pBa@!s z2;_+7lg0}uX{1^cRX=$rEXdq3cz9X7EWeWBnE_V^HxF(V+%~vDxI=K)z}*NJI~f;~ z8=(vm$=J!b6Vwm17a%#P29N(Z3lQEaIYY<+D~9cEaJL?-_tD`zr*uh!$LwMo|sK4HHVF#DXqayI+i2NhB26R|5Su*Y!#&W{SWu_6A{@aXBo zq2=L?&%Tm;kpJn!eGCWvy3ksr7wIr22khq2I5}5@lxxe1kVeP3o2NWii>q_K-16Xq zEnogJ{${I-zuf%bmu5fsApdji(;WRZ>?1#e{PH1(g{@9UldKLhB-|lk`uZ%-tWeL@ zNT)f^+I00ScQ}ZD1?~;RwwxwL1Diq4W z^Npnyw30k;ptiQSjK0qPn(o%Otff8W+N$$vw#*rEMqE|BlQ!X5O5CzhyjvnT$1FK- zy8JYzoZsZwa{jVPw@o=?tm15pt_Jkxs%LR2>d*#b6`}O`xK(EzF(ZCIG4l zRI~|HvonTH0$tmnsz^<# zl{;I22|IkUDq{XK?Yq?q(4%q;jKlLRub+tRBf59&P`j<&W)(>Gq4jR=?8J>QnU$*x z+BYu1{bXfxJL(rV}i;{ zAzLR@&tEmOeREehA#p`gLBqo8nTu!T_bi#)v9PFdLHN|~h2Fy+qy8br#4_SO1R3wP zGENhI;Pm0@NL={+PCn|k(}!Do;==#Ojeje{g`S`E)vKq0Zp*Dc^}Z93S0v&Ck-HDv zH5H^zfGtSGVuk`Y8ei@M9?>+A@g2ANF#4Jvl@)Rq0=uyO=|X;8NYaJ%PZ!odU0DBg zVg1vE^-q^s!G0Q^yWyx9Kpog+7{9bjxZcGhTZud-*{vlW;Q)iH*fmY!;=TQ$7p>z4 zAuA1;ogjZN3Lt+#O?2v{gE6@U9=_Oe;X<&zg+RYT(5ynpg$qHI3LzIRgj~1~a^XVA zg$rd!(KeFFm1kY#ZdxMgS?Wg6NP8!0)`n*{o+Ns!uynESPVwA5IzLS<&E16xDt6(84tE4JxZes?nS8thL7EEbdo)7)= z^2%8a#%5Sq2W^I}3uKlS

EltzDSf)3q|cx}^Y=!mOvno?$oFQ$3*WTvJifHV=)S z2Wg9(d!=OWEbV-AZB~r+R1RpFu~Rb3Sx?OZ&7&nMplUKaGvMmr=E1Fk+XgoXcL?qp zxEtX}JLlLrIqRuKM8icMG@NEEV-9237w6StVl#Wc&;o zk-x-`K85g1&HPP1dl=5n$NXODqhX~5>X@-Tw-DIh1&rlJ1$B}a!k-T8^#ME0&2_Dm zK63rk3hZrlu(uW8TY}>`1wgP)wfxXWCG529jZ*nx7Vz1Sf zui2GwM#QvJ3)9Zu#zYR>6U~tm3cR1s_>9VAr$dlCL6AEgg4_v$+zEo*34+{-4(kL# z?gT;Z1VQcuLGA=W?v!y_0S2K{<|f{8k}L$DQU_ctZq(Kqv1Vxm^c#_&5%SeW$X6R7 zUu}eZwGr~wM#xvG7y@t~f#)7L%2%_S6m9175J}96zRQ;5W1x2G>67Pjn(~(C&Cc1| zG%|B#XSi(9>lSy|R#9q}&QQhcX6>!_IVMq@r@lU?HgjfHeNIR1+?ov+@9$Z-b5)&V zDy3kCp7Xj{9d(mePqCl@{Okq3JtO#bF2@CU0T<78rQqiVd%WD`jF-6Z1CS@!Jcu_O z`0NcQK1)8x|Fq%YH4qNeU1^=GH)!fgrDOYh;-6sw&a7D}VF+S`@gw6x9BQ(4Y<&%$`OkCY|DGXt&;ZXVn!xNUHQaEIWo zfx8io<2?)*h23@UG&{cyoSGU8FaFQ4^V{&xoQBGj&6C&4ag#+F=Nx3%xmrwtTJ^r1 z_A**gE-R~BEYHb%i%V&5sCj*OX~oha+h4Y38u1eAJ)ZbixbYLMKX~GQ!HKVKv91K&f|{`BizJUO6a&Osc~0m)9x0GDahG!lo&qP0Wn5^+f>e397twGw}Wg-s+9$# z;kG8kVCLGe&RTBT;F@9C)a=BjChr>7_hdI0X5n7s%))SnxpH_eZXa$A73HTF6r>g> zPkx0r5Z{xPo04CaojbFtB#4`cv3ZqLP+FOlQ=~%4`q$=OV)AB{>gQMoFT&}l6Vx$C z#4?YQ3(rY8r=tSc2YhYt3j=;JE8=0RNw}0Igtmfix5CEoB1mdl5i0BH9;~N(u%7P0 zdb$Vmd=J*sJy=ioU_ISqy&dj4IQzsv57yH>JjH#=nhttA*=?TLE_-+%C9-aPNS-9?oXgmV;SaF3g%2YtD2V zL#>>kF&8$t80GU^(V%|r!7O#Udm3ir5{JPH5`6hCvVFq6xxtHY)9-F*tG2Ioh+&}` z_T1+Hx*+#5i+r?(^N@}zXAc2)0pNmX-W<>Q>40^IJ^pczb1c4RuOKcy=BH12;!`dw z`TLSou1iOLq(AHAkDG;#dg60$-^5q$o2Y3a3@BCgT!%c?7t;q{PVU-3Y46) zbw2nh{>lZN$pfJ^ch@kK+IoD_2myD_i|zL^Jb4nYj$A3FGQ4cA4tP)pic|+YtOG@= z14XI>Hr9b6)qx`MDt1gVpN8jdIMHknxvxE6#3)eA@U2a7VkTsGxF5O;LS_;{MmQ<3 z*2ahEs3mJ%iYHgkv}^WS2@v-Wnw-@l?rg_PEnFwu3b^y&cEKHldk5V0a5e#I0s*2} z9$RTpiuT?CLl)Lpa=;FOZ>mwf$jUz6d(gT$cJIOEm-nr_&RG*WPd)$C*W#`}IM#Lf z<&)#n*MeIyplW^ODa>ARg7r0L>_K)yp2EmHF0no#;U+$L3KKuk`no4Rc?yXSp28cS zw8O+tvL5!tC+#rtk1;;veOtkU@Luq0>+7f6K_<3xw>W?vzTwRfjSSHBICPK@g9pd+*QzLtd|(6JhVet7jPzp;8Ett_y}RyUFh%(jTj`27@>_A zp^X@!jToVg7@>_Ap^X@!jToV}l;hLz+zm&K$Tm9u zes+rRo$Y#6PtUp}n-8e&&Z}LzZR({OP4%+^$puAa8N!FEkINk!m?O=2pA;9LhABSi;%f%cTAdrvBESBpkV_XMA5o zd~g%sAuQm-JRp_C2R-3gz1u)9FvG>4XmR$4Gl9LQyXoCXlBg4Cc8?ty<}?kH*ue=K zzhmZH?SL3Xp@l7T^EUDO*V)skX+6by5ROX*~(*z1aov7;b$B;U@oE ztnVNJ?xKuVTK52di>*7+ZuA&$1Lmw}?jm*iu>?>_0(6ql)3~?U@LqZF=7F;3fwJd; zvgd)a=Yg{4fwJd;vgd)a^SWQ*z4AcWc~LO;=yAdfvx9@_u@j$mcTZaf##Zgd&>kr{ z%?QR8Ng;iVgFC+b^&Z z=EffPm0#-})woI`23jx7r(8Ocep=2VCGIMc)3X=u1tpj#`T&;uJmVuN1p(*|>?Bwp zgS|&+e8qal!JujIih+l8F0&FBSnwtk&S#jP-m1TvVUG_m8-Ee{z8L!ZS4sF{&*OZiK8bL@I%38j@-NoN2ji?s;sk7%Ax{)tR{>{us+q#j~5`^c;e6!Akr^0%i)W2B0DETu!^SMdFo1?fz1k;Chxp&-F-jqL;d*kBId1-HNg7Oe#n{YH_dSE zw5cgJ#j?UUr(;*x_<(F~wSaWzp4*2%HRs$7=c?h!r|~}dCh0@)7=}lhO;|#nf=K`{ z?gfmWk-i1AMV|70r_aH|5T_(Q`ur6WA2{`ldK%#pAK@P`@#FLNDTP5aJ%4o+OJas+ z$Cc~%CI1p_L%7ie<=U-Pa4kWB=aO*j8_V1y`)}4I*k_ByCogB>Co1raZhZ1`5+8Gt zH$Hhw6F;C|+~#bBIkuE5 zD>ik_b*K6F%B=H$o1YHKd{|H^j=x zVA#txhv&y@gR*sH7ASo_Ows-ZM*-$+|G@UvR{T?6oBZLXp7mpEtE$$Ht?yAc^u5xz zVEYxzmtV1cL0?PXj<&WPeJy~K&#H=^^zFi04g31mGIhxbuw09rG0B zy{NdoXk)7q(ac1kMj{q%iCDBHV$qg}MOz{kZHZvg6CIIAA{K2p>jnlS9khh1IMn|( zKAL6XLi4pQ=5RCtJzH&SKFMTR<588O?4`pj?o1pi*qRG`9K|R#Y3n;JfPz%pg=JM2 zEuL$x5p7@mx|&tHsS|Z7GrJad+IQ9E=HSB7+OE1B{SikY>ib6Dsi~u(v8|=0vitnG zR9KnS`Z~Elv7lmcO9}5G<+HeXvEQgdVT^+A>%}q;wHulQl>?4l(j?pqjxma}-Oxcf zfFa3n&U1?;T;hZFU>;lKG5a1)5TXub|F4SYfZFP{Y5`!ZB<_-kC$Yvmr=p^FLFZJ;cCJDIm8e~+p7iZr54B{Td;_1!Txy*_Rm|ef8K)q^A_tG zxEtZ9?KRh%M=$c|b@J#%9u#=?B9C6=(ThBKkw-7`=tUmA$fFl|P!@UII^P|Oo5?C} z_ME?oneeoS-dx6*YnaIfkTr8Cl-5|ll?B`dFuSwonOo3dLnSLSbMD(ak7 zoY&ObT(hLPXy&pl&0RZc^@@tJwBn|+g6dM7oiA-#KBswQTWMm;8C1-cs+9byLX7Q< zvZm7VI@q90DQjFjt8HytVKw+k;B6l8miKdPQIDK}4s<{m{S#ngDU*IJdx1jp&+7gS z%IdPLMj@yRPz(Bao9Vp}mDrNgHNe|74&JT--mU@Ot^wYz0p6|w-mU@Ot^wYz0p6|w z-mVec-)QFx@(c{#>SFM#-1K2%@J3?rMuWi^Fkq)Srg6U~*l$iF8wG>yY2^R6D?tdk zKC1)p@*KEm(jIJ_emThB!fSQft3%p0O}jc|Mnh-mR2@k#UblB_48QulB58Tfy&{!u zRXM&h=}oTE)!<7oH%y`Fm;(-bX!H*;X9!JKM=vt^2qBzxY!g}!&JSyjuc!}8eArM? zxVr@L&$Gi}uowA*i`H#2XGnbHf7FhDQoT#^k@&u3>w7YmBtH1bbn9)j1?XM7Q2x(- zr&M?CVsrk}xW5<&W6LpO0kKsmtw7LDw_~F*5!uI%hLUMb6_FDy*uV%f><;2wdz*Ul zLz~|F-skkp=RTxvoZO{u?D}|L-^Y;+=zw#7OQrQB>pu1VmTc6W(k!;2#D2yss874T zWtx6uOaw#>MB_$>blf z*Mz9QP8VD^`QMHylK8S2`(As2>rE<|s*28;ika^2O&DP%=w({$&JbG^XTJ*IksyW)Mss)(XnM=PNi(J z*wV$yg?YMV-OhRHp2;l@>v4JWqV)~x*yQSt{&U&_S#wHcdjNv()9MgbgZ>cS@hr8YxCWz+Y6kY#Gm)FQS(SH9&O+!cgwk&3EE$aqjh&gA zwqBcd)@7QIb{6|-7W>KWN&D6)S-`b}hOpyUk38GP9k1stcb0Nzwg2YXJHs~T8SXj4 zjYpn+QT4KC+ta=!)qDL>LQI3kD=)UMNp)^SvZeZyAHiiwF_|XmgdYp=2V@SKFLc6E zdxUt~^~NW?G4Y+b)#T5) z+r&S*6LUBA6<&(&*GaJ7Rd2n~k)PPQznDQ!Kn_j`J9)BtcWLj;2lc>2&IeQnt|Wd? zh3hPBc0w=DbJ-A(BpZ_ltdg{~=G&}QI`sJNxV$@%Uo&@R{;ce(P*GYzX;!kYYv@pJ zAg6j>Lwj>|Y6k;4VZ5_2`_eOqs1HvKTVtnX{{m{S(@=N9qVTR;$7xSNb&e*Mw;R%?( znNyEiHw!!s5Ai6%=OUk4YY*yw58!c$^{nbbekL7dAxy{bH%A|q?>Ad(o$?Z@rlmh% zJ*Zyqr1#C4k{)CDvi$--DSvu;*85e`6K*$K`(LH}rMM2~%;ocp=sP97=|8r=>a^`Q z{rCrbXFsz2S4Dpy?Y|1R;`G0p9(xM$@SBnz-{aC7yDq*~q_DAU;4SCHPQl;{$aQh!3kxxOKbW1A0wgCHRK5x8TVmf}e<`{>yg{ z;`iC%N31_d{#md^KwSfaZ=Y3d(HA7VfcHNm+~C`1trOAzcH;Y%+3{Zmq*RzgQ)ypc`>3>`s!@$@5L3H^|AymW)%pc@h% z2QTY@syrRMu-p5H3op;UhP70+3A}m%uV)0lX8bQjD94-NPr~JBzu=F$75)E1)c1hW z>ONC1^$p*L@m=r-->-`Pk>9Ort;f**moV49Mf%6|{{i)alxO;%{b~CDfZ8PGiLD6V zrx1>Hq?EJKdK%@(c^Z8;!tXQT*2B?1I`xzMS-*g~UuQ}F))e}5zcTn@#sl}>P5cMc zU%2;9d;~os{a`x+>H+nk=uZ%S4)Dukk44?D{wn!Heh=L^)_{X@&$RP- z+|B=#l`@gLChfjI&n#3y{r_;^4)DDc57 z;+09Go=-{rA42`NN&b{cv;Jc)d=?9QL?(@T-Y@V$X|N^A{7w7^)PUq~=(oFuLjM*E z{EGqq-$;Bz@9$UN^w4|4hxDFsF#T)jJasEf{0G!s0-qYl!XaZucn9NSHhiy)t2~55 zhKKMi2>1JfNXGFNf=t~b??8OuDZ*0_KPK-${G}#7l6iHNK-d2$^(TFLM(7hpJnDHA zau(7jgP+?`uE9^Cw+8;e&o?97;HS`8gl~oX1-g<57kslWb9F0=sSAj3!8e2-w&@xB z_ZfttO|Ncy_4GXVcbfF$cKO(& zW_q_=w$I?#F{YF7xcZv-XRa^ipSbdDUYzrf@Zz!$dKmc{-hC;;$-DclOAg&3JTd6C z=rCkiS8yjTfHiW=F7C8j?d-kh*jc8S#Xed`wq=*Jd&3jFAuN4E;QK<5iG?694?$iY zvfcrAJ)Er-9D*ottd4)I~#WjB=!wvHP@9S_?P)JimGz- z48g-LtXF?ZepMfz@=n>7ivA4twsRq4@LRq2VZ8^F%2@BwCYsUfrYtJSl?24}+wMi& z1n9;jAQKal;xRu2V%crDS0PZj`hxxEuIpP1i`+YRvYaPSPL7nbinn86Whv#LL|MuD z-oZENKT0KXKLRtUVy$K3;JI%*g>n}hbqJ+1V z;Ls`LW&zYFowtkdG$_qNqC9Rsbab{+hpDDEBWYgEthP`~VB?a-n-laGYHKTI_235; z#6qb@FR^Zy`=ZWe7XLDv)t64Yv5DntD;M`Y{!BlM#>}uzP}^^+9h{g29GbOCbM(V- zaWh_O;5y)X;kLl-ggXHDcDU={Z2hn_=!c~NH>nRrYfJXdK@R5R9B1bMwhr-92R9FH z72GzsLAXP3*TCHfC-+wI?id>RGxklXzy+9}$;@CbtqRWSjJGQIHe*Y$ZvOnb8ICPM zWo1E6>|21!3~M{(XhvEilCo^HHXE(YMr*Ut+HABo8?DVoYqQbXY_vApX>B%I3mxx^ zoV9UGn!?-VjI1PH!>!F#Z~K-W~CAJfLQt&JfAT?2*8*iJyr6J>mNf|zu+H7*@^eetq= zJ2Aqqy%x0kJoQ6$r_i+fkwRgmIw$%YsZTL2cd~x~1FzXj*uexKKrRYbymuJcAlYft zX(ydc=}bDLCR6H1VwMBw zrOEmD_VOy{`Wb=ee9%48(K0tKMi1iRReCoct>7f#i=(7pJR>D#`Aed26gs+)d9wHt zD;ZgK(~Nk${r?1Nt>W+>SVjT?w!jy#w!mK$#~mh4i@dkb zTYC&<++KuHj2jf3mb}`%eQI*GZkv2wKVwx}5ug)bID?0dtOClZzX{Jz;ZR4~vkl@~ z5Y##dY8?c%4uV<-L9K(J)7GsULS_QFm1~^ojv&F_f53nrq z!6J06_bL%e=W%;><>ZJjDJ>MpNb_f<7lr*SxNrP8EGk58R>z zG9$5#f8UIB3*y}iN1MGIf=RH?%Z}k(XLz`6D^jFLT8~V!;>d;>wXfNsSZC?6o z=%%$&=wGLu`)TN{U4qTIp@bN-h*lcTt;Wl_>B$W)9S>NuJvsAwzrR&~lV`vt@mma; zzm|kvO+JD(tMzx$B^5`PCZlH}OltBub#3$-eFX@OLl-qhuc3>C+c(Zxc7eL~MJfNe zXis!|l$&&~jfMq0Bmbwik?mgBfHwL)+Gq7hIr-NAS@g?W^H-x^z0P%`&eM$Z$&=B? z&@S?_|F4Ymz&|q1Z#fNH3%q`A@|)3X0GC(8!O3q54gxo7qt61G$}-9%QWiEglS}U_GnZcpj|RvzTR`eb(!cXNmRC;86o-T#vjukNUaOFGr-! zmqUNrI}TzzYCi5r6dv_T$a^3!wbu$+es$-R_q*(O@PItaqW%MueL&p>R_Pel9CM-v ztRFyr=I8D#@_9<*K4>}fvd4~hO5)jfRUzIX(k?FD^!xPJfh2yIOacQz%dpdKUa^-O z*mkF;H1AJoQ*Fu0SDvnBtX5@{C!SFc>#v`htKW8tizFQzpwn zobv*{b79yFA2onZfSbdubns!MAA?84FGi!4asBdr9-gb6oM^1_>KhF^vSCOyp9?zStxL@hl9D{R|3-o0e}ytcyDRV@$Qom97|ud(C&?yBnU^V?^wTT~yod;W&hj#XP* zmhL~dvGLsfJuTZ-x2J9ZOTvEq-@ED@6_9_YQJ$MgVS#Vjo4F!y2|AqR7j7X>Y}$CCv|Gp>*Y8NKK{aD;h~ z^X5U$n+G{>9^|}vkn`q2&YK50Zyw~l_F2m#@Z1B(qYlug6T6MB;nsGl7(&Sq3WiXO zX>0A&S(znSCFSY9CzkZ8=hudca&tpT$=T)g`Kq2ehYJ==em5^1Z}OD-hU_1h{RZsoz49}YKlXdL zKT$1o@EF>355jw~pESq!euOW#!ymGK!}!r1_89~x{>M*MO8oO^zswu|RKCRjfHyvM z^-e92`0wz>NBBdhnh`E{ZOH!CH7pnVlGXP9XD#gBaDVO=6Ao(q6yjsI1$Jgwf7y4% zegU-aB%hPIMCwny44$34UFyFE^~c#;Z+xkLbM!pyN3;HJe5wDM=m)&{;M zc;h4dcB%iG$tS(>)r0DBD~I)&{Ju9n!vA0;vHsD;aq*8>pFS0m`nSc!KVsef3Z^aM z1NJXj&zWdfEy{h^It(~1wN9uONr!z*Uk1Lfw7(yYp1^*{(#zKhew-=&0qeJ~lAim& zpBMd!t*EbOe@Y#(9(L;M-Je4EVN+kg+Z+Ej#3#N0-f{6^uhPaB?0>oYt+nbFwC{ej zFK!=9_6enZ_ugb#w>M z_Iu+?_>}yyUw7L45pMF&!hT^af4_AZxdtH0U!kuZ%OBw{NI1st8c%$lRsZ9uOtfot zbd4uI!w)k&`ZLtCPU>&;e{QpatY`Fl2rrXx;1$}7lRpyvJHWY2^kW#G`;9@-&%x<* z>bJ<5_*~Jiq25ppzCTP2xfJTgu@|^p{7{AYjt>@e? z!p9A4F_t~?(Wj5gSY93dfcKm*!mpNa`~&=iaWwM|g|u?V|lYvzPA17kKp|JScOI8{hN?`ulT||7@0vd{UkKfs4%lToZ2H ze^cRDoMB;OU7E zc-~~wJnUsBbfBKH_wMeUA5iUTRA?M+Juks`*?V{Q&JS1*SZ|c?OrJF^J@)X`PB(q= zwDh#G%kd(6_X&O{z0qMpzb;kTs>e;wxxnoGR{Ge`$Ume@{12ea|yonS4Ru@0kOMe?(lw(%AjUV7;WV|vy=h9m_m!f==t{dZZ zv&;cZS7TkW5zxce#iuIm@*Lhq%0v1e2p)9xEY5VeX9Svam*5WbTyw1s|DzE$HMYsoRC`-%#&Fe@Qul zk1VIgI?(r&d>ywwDD9b&9y%=7+v%@AU3ztNi%Gx5O^^Eeoc7h4`br7c+wDZXrQcXS zzoXvlzb&S{A@sMQH*%H;-;YXvn{zjR27Gvy2=U7?$D%zU^tVTMhw-IfQvjcs?hf1E zF7OF~9(dxTUye$@q(tB0jgRnl;pIZ$bv*Gg?vKj2Pl>jv*LluD9kEskud_LNF3)?Q zo^w&p0Oq!5?YZ?l-e-<*j2H>OS?V(-KIp?~<0IUO-{{RB^?CM{zW@%aQ6EqK2*25` z&+~e3Ojnip+jH^Lr_(iMIif3j0E=zXm#Mn8(6JR>6YWw}QZ9A2sFTEYas1pIy~DH* z@)n~vKP2OQ9@~xl@0I=xf=75hJv*QALGOMg^ki!M1M1DEjekI8c;b^@VX@D4sX?i~ z$)EK%`R}n_jy?={nEc)Nn4eA?AN9B6V_tkf+AH}pzO*Y1aQLybSMq0khDT3fd>j&Z zF0kS76{(L8@cg5|^8!2kO4es;eBk40<0IU}|1*HZNFVQDYpvwwFA97-@=J@MV~ zS_=B=iI4D|GLFf|#du!w?1$~~eG=o_r61Owc0)f*KYqvQN9ek~9Q`%=(dd#f+_d-B zL%$Y!<466yYisE8Njq-effR^=hx`{EblbwmqvfY^wF(SF6ZU= z^h=|c$o$Oue#iF-yS{Gu>bUPI>r1BIdQg9HYI=NsL-gkc|Iyy6Y3V_C)TK_lW&VjP zA9Ud=>w`>B_)f1s@WBJ;>FvjNFTA_l@^1nBxOO~Xo%EEy)vf<6fFIY6)NPjXrN5@9 zUur$^s_Bnrwy6`KQmY(n%a?{V5mY(pt+J&E^3(d8& zw0{cxI4%wR?e@Fy<9f=wRzG%zwfZqct%ec^aGC47O24_ScA|NTnvf$@ot58LD6XYP17A^5;_{C?OT51*6q z@DVAGy2kP8mqtG?<6%_F<#_O>hpgmXu-s64ic1fC|AJF**tMb#yEi@B>-&&f z|5_Oj@#)cS7oSeac!*EWyE}-F(jU{?kN)z=P^PyZ-;FG#4NLwX`%a*KX6=4l{m!Be zJR~F5cl3h@|1Z-&>Z$0{2w#hJ?Q!Wh6aSc5>syNvewT!swZ5!d5x+TluFre+0=mD# z?@*TJJ$r$9MChT>HU0(4<$8&5N&=XL9zsX?5rlJ{LVUS4`UeSr-q-8ux}$#;&JuCF z>V>vU@T7i3+HclZxU0nO|A(aiU%}a{?9-%Q3RRvTqTsj1>C6*&Iq*z~`t@8|9M zy5+0m31RE|cD=6?dKgze+VvTshh}{hTOZo>=Q>gNY0`7=`p~XF=;2+`{{r9X^#`Be zf%EkCqyG)Or}CGiqej*f$B!bu!(W156nqi>75(tA;EU0<|2E(t{42uW9DNS(GyDR_ zm+%YVvpy~3(#)TvGctc#OLxfpFZ`XcYa{Wcp5SY&;N+Oi-!Z=McduZcwDUje(Czm0(@@qEv^@f1SL{W6&_ALV=Yl>(K6Xb81+wUJXjjZ^W;IVyJ2#%Q9u zV`guV8I{Q=sBayp{I|7B0hbr2B6eMXfrrWfjM zlWdU28J$Db^%K+^q={$K;A%Ab7FIabwERWXU|RYAG`-a0mWA>ittbMEE&n8n9%LPU z_#%sE`OyQ|RVLg5)Y|>Hq;i znf*&6Wz=`0;&1Y4>|YR{sL0N^rU-*qNhnISVPDA@v1n5Zzy0k#{Hee6ocfk-@A(#S zst#rPP-eC@O1+T)_P&@8ZD6uYK55G>8Bbb?=QGo-L+pMJs=09+oO{x-+EB$Yh*YdO zcjj0-?x+##Go0F?hS-$FwyZJbsuq3?KYj8~C-h7{*z=_?^{7QXUm_kVNa*iUw`!`O z^z(i&B5QXMH?q0gh8^r6%9fg>#0+Xd+1PLEn!`5F92ZFM)bbE;?5QGlEJL@B6SR`hA# zv-(%S1zOfyXYD|p-k`t33%{{k5nSwoZ>IQY$)Q(#1MnH^V&}s*jIiU@OhA{I8f+GQ zh_k#?dL|%O>YTPXtGiAC#$%}FSy&a5lr&sWhn5v58_UwfwE`iK2_> z=;Jl%sp)2K2J13WQ z>NY6|1+pL(=q(53O|JbL5wfOy4^PQJ_k>RshdEcww+g|KeGT*+ciVGT;yD}6JpodA z>f4dZxbiVh!oiBc_>aoYFrllqO$F$_MBrPUelNKohwRgm)jh-KUTAc&B z7T~pboetRYFeR?6!uWtSZ!=CcguHk$YF(PDS|H9E5^;@HGHv&3sC8+mb!lj@ zXh@oIIuBLlI1PwO4lRPdHWeH&9%yX&qr6G1ST52sN3SZ;d>#uV7#hf$)bL)1@<6#5 z9m>c3Vx>50)zO)c(;2V`2M(@D;gCirJVxhHMcdYH-Jh#wWljDZ9FX7WTQ4>fVltH*mLm|%h#%7EZCcsBy?1)%MD8qF=^ zoW_~ytZrN}yh}AeP8+wGSR*)^S<@`d$1JpoCZm;x$a49%p|6EtMhb!XgqsI?be2I5=1V9K?&k!3yAD1#qweI9LH3tN;#H z00%38gB8HR3gBP`GGx`Y)CMa+p3hmRa2%o2y)-o7*hIq(K17@n+>@+6Hh*R3%K5r* z%bJdsMO!wfHpWC2FP*_JV-_dDfNWvK`KbJdU~NB^ACj3^v0L(~>_A>{w#c-&`+I;Lgx- zt3z^v_NnHWlBR9%%X4gx7T~yiF~{~qQw^8x6)7<6nUy~LW>!9UrRu%1N97N`;SD=` z^wo`5>mGe&PtW8Lb<^a-YTo34Iv;*GRO^5BTWzbM_7K|4X-ufpz*VGlJniS-~Ar2=9zRN2jjk|AFMjc zPW)U7DpT_?eop9*xJK?n^9Q9bMo_4=~-Te-k zmz_@br?DSNb$aHHcl`m0hj&T;j1%rNw!s*V{1w9aU4P&Co-pR7bH3xr?~Lbr(5=TW zJoUK1u7~XFNDRRfhNvgU6@^M!pFa3&AlgfTK`tKE|OAg zzb&X;3%K7FaKA0!ep|r(wt)Mk;cgWCX?X62BTHZoRU6J^Ci0!>a=z29cCpv6Vm6U{ zZG%j;xQ5#*7jY-=bOE1XINU-Ib}}8PTM|44a5LfN!mWhc3bz~XQn;((Zh&(*T$p4u zM64ZLPCEeF4lbu1U~dPP(+)1D9b8U3NNYQ|oOaWsBk3fO7Pe&rd3V#a7N3vmCdW$iV9m-HqG8rrZVf6!HtP1xww5;x^&I>LtTHjL9 zR+*Vu*;dgozbZrR?R@JcYpWNXJFB5@ennGFYGG>q#Tz;ba~g_E%Q{x9-}uI=&ca#q z%SyXum$t0jK>Psf`Y$;nvm#or-{Q*xUxd@7Nx+I^xB%u5OE_4{Ey=Sa;4A>-lCMC9 zPs1b>n8QdVuh@dqiziq2==qQNj=i#lvU>6+Gmvi&@}=yK7nGQ3##pVOcoWjw_GDhq zRi2CsBW9>olMm_i$zIhyd0hSEu}<|Rb?@9oljltKE<{a`-%6FHH>mZf1niG+bHG`H zVl8+AF}Sp3t_qib=?$k|!Y%VXNcS&UL)zz;(6)cA-I8}Xa=c3%xt+iw`ajWn^%7v4 zgc?wUj@Gj`Dt%ahgPl}WJ)deS7&!dE;>Xmcyw;Y<&-~31Ey}yaiqP4dpq=puA#!LqSe?LqT3cMQ;Ag`4yMshO0Ak z>&kPo!gcwLi=Qm0tVx|aH@mDhr(*$dI1+78*P(CQtVVNYjq(X2S*S)stDAxCVZb9- zAkz#V7cXqNEU4MGQk6?HzsC9j8%`>4wb^N@ z2=WJ05Tt#fqQ=V5jNDZHbY^BsdTL>9Q$sj$GAX=m!@Rs1X;~?0DTTF-S!KEEh5W9? zT`eVvDcQtLjm|qyZ&L3Eui9x%oWQ1^SyP$yQyp56hOVlA6s?$p*yYj+92~{`Zw};P z*(SaMgqdv{n*26q3S#}A3Z!jDcrh|8hQAzsW?lzLpE8|Ku|uV4uZJg{5~?@(GD{mu z%U7>iUQ{tNu@P^xO3PQR?k%aR3N)Cv)vL|7gv{cGvhvmVR#_EL?=Nhv$Qu)D35qgMS-s$?p*Wzd)Y;H9X5=gELj0%nD}dP* zAY8!Hf5;|WW2<8m&UZy^ZFyr4e$Xr+ZLa>Q^)uhi$n*bYn{168aW>g}3ytxL`gz#P zacr{DhS*DLo6rGliTz!=61+0Q8H-c3B^;d$*HYL^uoMQE!w#QMTel1D|7-bK#|~c% z``G8oYJnaCbbf(%rI<-*0YGd>*fLg_#o=ls|0KyuXWMAcoGm*0E~bMWQk*0F%G7kW zrc9XWU~mTMs3fu*>3(%o%4^aqp@a7V(m8f%xH}KIH25ge)B`Ny1;!;T@j*X=xaC$g z?odrRfrqmfPCI$V#2lvtGd&c-hnXB~Yb|^gLKfK-W~V?n;#6?NsSZa>L{9}roC=OO z6&!IYIO0@r#HrwjQ^66Zf+J1^F)_rNOm8{pQY~_9aHY|w9e)t0ofdqr2cy|O$zXU=gwc|=#9DnD+t%TbOw;S$KxU1oAfD7`fF-O74Sl!7FpgYrWUHbx!-HAE4-p@9vrdmh) zcJ9omUDBLh5egO0D6Po!jjrtLi(QEO{>fqW{+_{x6?01b{@!42^_`{eYvk}MF2^G2O8z7}H!EkcO1_hrK^2I^cwHrE5$*e%DTFx}_F`vypOzo~wS_Y!%R@A6(6`>r3x_XK$_jh<5X=%3)d!Ux7s9iO~S zx2P`)-vTSrI?jYPd;I4-|3ilsyVo~U8@H_@*1akgLKP~w|2`U?O1=f%}euTGm z|;t> z&|+E_vbeI$4)}DwTA}o>UYVhMzvUeCSo9?rM0*ZVYfL(gbP6!A(+RZf841wBT;%J_ z{xR|hs{c}xslYg8{bKSHidIy8mRoky)UvBlw#rho)pe7pNxR>(m`n@>G5CnX-+O&srbV7pqS| z9`Y8#_qa7jIs;GOWFc^qwo6DQ+N`FNoK_31Hlfvp2!jnrnCfdo%y!c1T01Ej`&l3( zSynAR8)P?@(`qH@EF=gcYZ4?HLurG*4gFtDL2!ej-U6&N!b9>{N$Rjb@p>id1i@E| zP+ggtUz~ntMRQrYRw}i4cJ&?U#d&F68D-6-cNEo^rZ31SsV}^{4L2 zPA_S$xHG*tKUICAH>lH){eFah%Jv7W&#G_P{v@kVKWh6i3F?<^f6)J!kC!$v&ydxWI&Aw>tktRa z*!~REbEfUjw1R01Z9hg)+B%%g7_s()Z65{uz6(6oI8-Xbn2KBQ+X>%VgbyRmIO6QL zA_!Sw?X$LnE1L!XLHTX6hNi@7foH@*(x87pB--Xhi*@*9QxAz}?si(u)< z{zIdKyLOM?5^im2=?t$O93B}zv_BGFv2XjzS>b~R4>k?iK}|bG_BDmOhlawEU@SZu z8Hs8;t8*{Brd4qZ14m!x&u=ypJLWr*n4W{Q&YCMvkUC44@srvkM&1k0CAr z8-`;i3`+MpV|FLLvU3Rdu&8uT&yOWVFq%202a)q`_@=^=b>59wEQOuSt~c*H5jrIG zG0+?Vx{xO9LOiG2iHIXe;e`|H5tf*Q8QX92Hf=EwV_jILgT}0#K_mxK%aLxoo!UX$ zUg=FDV86h6ySzJf=tr4jQX3BUy^{Zgz|P6jDK&yMC+Qwx8Uc(6M*}^!o_%mg>Q5h$ z+_aB0Z3y}A$M9jQam1XO^Ee=FzA5jVeMI8gJUF=A~W{0OW4 zQX)w~tglS(d;5jh*kkw01nNSJF@52UMXZZ&vmtF}Rtlpm)7~LKEG(nf)Qv4 z%s6Mf3WQg5o|X{CPz{%CClb` zX3i{wU-nB&naZh87`RIe=R`wpgP6+JU5fwS+=!i=%veLV+)L98*D?nwU!Atc>gM#F zLn%3W32_5|Q=h**RkFOjl8(?=gZh&i9fBJ}I|dQP9L)$OhOq~olH)Pk8JjyK1xL@T z#qPsb!Y2khC)f3Wj~RRH^L>axK978uX_=v)#E+@-TzDWdHn?jTldLmC4~J*Zn>%+_ zxPK=m-|(SG|L7R!>D~PY28VZHg2rsjS$S-n)ACsV@K_kE*x=4ES+|}2J0fFE;Z?(K zyaR)ggW-dN6L{w_|=yrT2)6hFHJ~7%qE4+PToH_Iljg5ej*c%B?j73;|CXHOWA2p2(?}$i} zvGGGg;4lVvpu7W-p^^RjBE#d-Rw?Ho-UcJ6_zrj`Mh`WGHzALMBcm>;_C?tG+MO&q zQcH03jw1KnlKXCeX$-~oqdu&*4W01F!3ZEWvQKI?h$sTi{iBg_xA~?mP2nE2Wny?} z5Up^U=XBCo7`$?LKgu0C6y6malxp$6oX+0t`HNkBkmpHZnX8h@sDi!xbYHCN@|#meC&u&~`?4jE8p&j_w$WFw#JH z49UhLM4SFGz-J&bif#vd0PNw3en1#}9(ouc83G%(eQ;=S{E#HvHFzN6pjtobI=XLU zcyMF_(V1&xcx-U{5V~joe)K!@3GW;k4R0SoH;hLv1+*A#ccg!Sm|-vtYlk`EDcqYx zbHE-R7#v0Yk$vW*C#Pi*TogIz4v-pYLjm6Yy zetcyJ6oomglzHqSKy?a8`9fG*!~8s?fEmy#$-@3Z4g{{W$6ElwSs_G7#n`DY#pXxY zD#vVFX;oo+g*ISkLTFqM{mofewlx9vW+B&xWn4QHz&gQ^&qJ>)fQ5jC)*@&UFF}iY zKsA@a&TTK&yeq*suLf;ji<=_*taZ?UJr~X2i1~FhcGAzo4#hUesxN>gfs3ry;mG3a zt$w9pXYDHMZLsQh9W1WA-TF7{UDijjzW$W*L0<4v>#eYJ_b1recn@UBSHlL=ld$P| z7}{t5ZJo4UvOZzmW_<&eO>W0*vICZA25{F^#QHj{`hVB@w)GwB5!_0@6SwO=3afi} zVCH_&dLP8kKg6---PZ4||HL-j9?U&^LH&m?Q{IfOx&)XQ+5!samF%t6sIj zx)Z0tSE^NNwOXUrs&iDITBp{lbFIHxuUNmbeyujBjcOC@?QK!#sjX_8I$vF&E>st( z*Qtxu>s7znu6C#a6;V6YF4)N3tp?Q|wb%L$WXuOpU7vbwC|d zm#RbRGW7=aM)f9jxq7p@LcK*@sotutQg2glhZ4=z>KgS<^)B^p^&a(a>b>e(^*;4} z^#S!k^&xegx?bI&Zd4yuA5k}{kE+A!W9nx0arFuHN%bl9X;?8isy?G`ffbKiar^9T z>UMR9x>MbyKBxX&eO}$I?ot1tj;njsed+{m*?d5KL46S#r(cG};IF8!s)y9q)WhoQ zus8Kh^)2;n^&Rzy`mTCZeNTPgdffVj`hoQ`>j~@UkgWa0dJ6Y!{YX8gehljxKT$tb zKT}VrpQ|U;Q|f8;3s|)LrTUfnH7v*dRz0hJr=C;4SAS6d3E|-j>P7WO^(SlsoK*j< zUa~%-{;d8-{YAa3{;FPqXmL_SvG2@NZa$r$6SZFlaPN4s4(gCj(WyF3r|S%zsk3yp z&e6F#Pv>L*Vumi%MYP0#;wDaN@BBR)=QlI$e*ugJ$VQ-K3j!3r>}^ z!usAE-L5-yr=F|l>G^tr?$QhOB3P7OqPubaXsKSNm+M}=0=i(U^lH6Euhr-1KD|z_ z*XQaDdZXT?H|s6>JiS$K)9338^o9B&{W^WIe!cG3+w~4Tpd)&x-lccLveh0~*BjFN z^spY$`}HMyRFCO#J)sZigZfgOe7H=%LBCPINnftttgp~-(O1Iy&sF+u`tAB1`f7cR zey4tyez$&){x|(zeJwPi-;YxRAJiYx*Xir^4f;m?Vf_((lm4hatUso2h9$30;MBvX zpwWLsAJw1Hx9DT~R{dGr3UIr=L*J?If-Ta2$9a*vaTek~^l^PJY>%DL_v;7r7xWkP zm-LtQgZeA_tNJ1RHI2&!^f&Z3^|$o5^><(s=ezn*{XPAC{R90&{UiOD{;_^s{{*+q z|2s6v|HJw!Y&qX;J!D;JJ%}ByTVW~T3l{fCeyV?_pU^*tg!W_lN&S?5TK_^nqkpM? zrGKq|qkpTP)xXov>EG)==>OEu>lgHk`j7fg8kTnTf9sd@pY{Lfzv!3sU-c{cl%CX4 zpN0L~&)`1Q8?6_7%BP{6|9fNv zf59ED*S~B>KeF}@n8z}d(?1?qZWjo#77O+-Hw8xI5nS%34n|yWV7Xn5hT7C#(eLoUj}J{Hw+XhXx{k zFx7YjR@p5Xv|F;uv}DkLZk1i7@v zhvbp6*7GT4$n)Y~YhW@YkA$^oaKaG&`TI=zVUxbklO$!>^WyI_>4yzWhx_-BkR#r| zI}%uDw-aJq>9KXDog?x{UAKE;cvt`E#J-{aiSg7C@0)*vDSOnEy}?sl%BbhXzrmC} zY91R+sxf(lHpZY78jJY_foFHL+RrxsCX;wv9toS+XXEU%&8E*Ft7M;Tw%amcw`H?w z%Y-}?Y^Bb&(L|XdW8;p{M$VKLovVqeAB|q$Q9I z&>r2lTKDbI!+ZSQ215PjvC2HK_Tea8XC5QwvDrK(xX!Xx-QlR#V1567wf_4{RTje3JVeUt0IzFjuRQ0YTO@$oM_4 z$;+L1$%tUmrY(<)k`{@3Ow}ecO`+ z$>2$i5h4alE#XNvB``?v3!W6Wrg#ZCZRLmEBO`nJw~ri%;3Yup#xvbZBJrLiu!SdW zU}OTK3a26&alOY3AR!sXGlb%{L%MVj{tTxyCm@BTI4`Nvdgm=@cMp;!n?Vd;R;-my zyi{qI`z8%{-qK9#o!1np>^OKIWR)V2vtKd?2K$E&jSueaN5IG!KBrzX0TCa>7`sLz zk-cg0-;?_x8Hx-=2K%LB+UCtM&u-H}Z9Pjf_V*8s?AX1xe+RaBhd}g0-GdR=-yicE ziXt^M6vcRZ+)fH^cfH9BmG8+6v|~~dWW10e+TPTqHuR*Cso>!R=jAQ9%*`-3;Cho8 zYVu~F$#9vQVNe845}LBiGvrbRJTDo`rgTrnz?6U#n}|zCq}YVqyx3o)iq02#$yh!m zlZ?oefY9<-uZJQrf2uRq1w~Sw0WWXCUbpGNovt^q!XBBs%rm&s{S@5odXpJyV8uY= zTj}6-@@~hMw9nr33ni!WF?PZ{}H{A`hd&>P{_tXX#2*J^qccYtWaLn~4Gt|J7fhK>$sk?E~4a**T-zZZ+ z?0qc$JDz?bV3$?%yJm$$vl|$y=QEB_D8n z{__Np{0GhBJcBg{<&k`zlTY$N#}_;gDecj8(Dfpw149N%tAbnI&%sMwZ}L_rr{qf= zUvQiIIe5tRhR%-xA#_>HpUhQ`l#t9tjw$PWx08aG#k{*+Z}PZPSmHs>|B09)hj)QF zcCsS3X0qybS(0GC>&@tnRX|{q(LXi76GLF>jUfR!o)~V%Ii7snKyPW%bKblpAls9d zQ}b+3R!&&RNMWSPAtQ=0eiJVBvctunZo=J~q?XsG?UILHq9h+Ua_Qb z;7nPJf%9@V(_qB)`pvZJH#4et8a7b(Ov5I?Gf^9;dtw-9bE+)RUmt{2NB2MU9(kBqxPW^(KXGV9zV!4cP+v2H5DjZ6*j#4xb% z#4xb%#Bejt@x*ciy`>pgcw!k?c=B>;p6!X`ge7lweG`r^xY;czIN^Hz+oY2IL-I%_ zQ817pO)!wz=0*-4a=rd-QXxNhX$WQ#mQRe1fRV>WGV&RS1b6oD#t!lB$l$oFZ8~PR z&YkDq8yUjZdQ$)JF3P6%C6n*o$KA%Hb;A(^^baR(!mcDe!A(eS!jgMOCPpPNxfgq? zCf>%uOHI6u5O)q6?{cbGnuvYi4ot*N_SewzAvb1d(?Qh4L?A!kI=f@3{aj{0|G)Om zHa3dm48Xg0=fijQeVA4RAvihoDiMSngMkA?|Ez4sNlhv_7#w6(A}J_8QjCOYsZ@yy z67a8TFY1q|e^AY0i~$1`EX0r?n~&3qQhJUMLMv2NX;rI)l@LK{(9Q~ z6x8}g&(40`e7y6%yE8j8yDde(wVFmmA*9|?(t68D+d7%Ft&>UHQA*m5$q1uc%1PTc znKZhURme3oFiM%I>3uY5nPSp1#iV6gV!dzCk4$H+`nO8xvZX7E{_2P-$c8sJZ;vQr zm9=chx~jER`7KM;6YbWPrA@_c)y`sDWeb00asTT0mLL9rM=tWnLHhmU zbjeq2&fckd=-=#-r{IM%=KOf`kACv_?z-&^64>_kmaV;|6KAVEYS?XQSKS*t`=oR# zPEvcOoK#5J@=VcRrAAT5>F1rRI)G)gbs(5xDf1Vle^`eo{kiOGZf##r53riq$o!+i zuW&p?kM5(#<%rIphHd<(5RQZ@VKNUdzUnzfg2%>GXifBp4rza+?~?KF0Wshz>=EYW`ZgC-$>hoI9%{Iu!eP>=*P{ zulC2a*L_br;M>|o{88W2pZ6{OThQcB=*!t&;oJI3{0x59w*ntkhv&#j2hA+9WOxx|&764yH7T1Q+qaoNOW z6PHa~HgVa+WfPZ8TsCpp#AOrLI^@jzDTzzs@W_)#o+LjKzDxKXJ?IHivH()hdBVB?AHqj) zk$s~u#`-1v%lKFDuj1$M9k>S9;Rf7=9aU|*>K?eysNYFuo4ia>Z(j%81x%9}TM=m{b>5)s1TzceE za%eLWCE@QRhZZ@swAa|P9{+V@*@O1{D@*O?yn|rDAsB$eFbI!Y(J-k#0Vm-UOm9^- z60nhgjRXo;gG+=bSA;A0TosUj_0Oz_vUe$am$G*$dzZ3zAG4@MT>los5@>)%Sf;Kt zI~mg>Zy>3HC@h2)kU2Tug?3m6ufq3WBMid{I0>iV&u|y+!F_lD4?*S`{SE#OUxLpJ zOTyRF@Sdgzn1B`d0C*Qk-~z`(+RKy2AgQGi3Xc!u!#nnXmA%AY@)#?8f>D$CK_y_!Mo646Ad=eU=s~C z(O?q|Hql@c4K~qW6Ad=eU=s~C(O?q|Hql@c4c>(Y??Qujp}{8lYNEj=8f-F#uAl)H z8sMM-SxVl0q8fu(V`X0YzP7y7kQYzYLe}7~Rr#2{HnLb*YTn&-n!p-Py8+C;a>KS}xm9qTbtk1|j zN$R@NQgP(o>dWT|HgHGS$en8*_xt&ff_hlUzBHJuzbE%x&eoZhnWo%c#Fv+)%IMv- zv@%|%MBd%`7@&1lcjN;zM4OF<#%6meo(4caEsp_rjFA;7Jx6k@zbvm+;adGbl zJ`1-;8lR$dC+))jtgSZF)_9t>#v1novudLL_7XKWskc3St&Ml!1o^ZdkN)fRVV+IbG1JWQCw!i? zP@kUW#~JeUSEB|#%}@S4{n7HD{48!a@btRqWX&p{QCK5A6B3@E_j8i2N7KfCc5)8? zlThS8Y)wfWDORDXlueT}>er9|c*Ufefv8h=<_iMUpEEosT7wHwi(X3$sS_8b4!w!F zcL#7))R;e~*8K%er{??>PsP5W^A>F8e(^aX=6~_xGx|~Hu>PFRD;SvzHkWnYZKeg8 z+0~?lnBBFUclE5$S7=qt@yf8I?}2y&%&be|!jx1U@uhLqDoyeow>2D>GzFQ9*UT)y zR$P?%cx|*8+Hpzd;dRj4At{bA7jFZ#>MmSDr9Ol{b(8uYT$uJiA0bPAg3PZQB(x*A zD1AW332m4bUXnR5yg-h(U5>Ck&kUFZ?S_klFp8_9{V+xdmv9kU5|>%Of{W0mxXOAC z7h%?(LzvfaQReAgXL$n`WoF(@V!4H@VHVbHmM*S_Sy^{j-o+(pSKecJAD5(U`GDm^ zT#|WrwY=LXuE$yOhAoz}b>2Xvq#sjqk12`An145qHs^eOKFgGzVp*@(vy_t1nSHlN zOECYACm{L~eF@73y@6$;-pF#9&UfEbX$4eig;Z$;nUlA&SY|=yw3&n^C8smjXq57j z=dc=O_M&QuNjt0)*-veI71~{@)itHf#n+_NtiKH5$xr(3wBLNE|AzQu8@H>y*M7C* G%YOiu_j7Il literal 0 HcmV?d00001 diff --git a/syng-im/android/app/src/main/java/com/syngim/MainActivity.java b/syng-im/android/app/src/main/java/com/syngim/MainActivity.java index 37e6603d2a..e195a37b75 100644 --- a/syng-im/android/app/src/main/java/com/syngim/MainActivity.java +++ b/syng-im/android/app/src/main/java/com/syngim/MainActivity.java @@ -3,12 +3,48 @@ package com.syngim; import com.facebook.react.ReactActivity; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; +import com.rt2zz.reactnativecontacts.ReactNativeContacts; +import android.os.Bundle; +import android.os.Environment; +import com.github.ethereum.go_ethereum.cmd.Geth; import java.util.Arrays; import java.util.List; +import java.util.Properties; +import java.io.File; + +import com.i18n.reactnativei18n.ReactNativeI18n; +import io.realm.react.RealmReactPackage; public class MainActivity extends ReactActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Required for android-16 (???) + System.loadLibrary("gethraw"); + System.loadLibrary("geth"); + + // Required because of crazy APN settings redirecting localhost + Properties properties = System.getProperties(); + properties.setProperty("http.nonProxyHosts", "localhost|127.0.0.1"); + properties.setProperty("https.nonProxyHosts", "localhost|127.0.0.1"); + + File extStore = Environment.getExternalStorageDirectory(); + + final String dataFolder = extStore.exists() ? + extStore.getAbsolutePath() : + getApplicationInfo().dataDir; + + // Launch! + new Thread(new Runnable() { + public void run() { + Geth.run("--bootnodes enode://e2f28126720452aa82f7d3083e49e6b3945502cb94d9750a15e27ee310eed6991618199f878e5fbc7dfa0e20f0af9554b41f491dc8f1dbae8f0f2d37a3a613aa@139.162.13.89:30303 --shh --ipcdisable --nodiscover --rpc --rpcapi db,eth,net,web3,shh --fast --datadir=" + dataFolder); + } + }).start(); + } + /** * Returns the name of the main component registered from JavaScript. * This is used to schedule rendering of the component. @@ -33,8 +69,11 @@ public class MainActivity extends ReactActivity { */ @Override protected List getPackages() { - return Arrays.asList( - new MainReactPackage() - ); + return Arrays.asList( + new MainReactPackage(), + new ReactNativeContacts(), + new ReactNativeI18n(), + new RealmReactPackage() + ); } } diff --git a/syng-im/android/build.gradle b/syng-im/android/build.gradle index ccdfc4e3dc..f05bf1a9b7 100644 --- a/syng-im/android/build.gradle +++ b/syng-im/android/build.gradle @@ -16,5 +16,16 @@ allprojects { repositories { mavenLocal() jcenter() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$projectDir/../../node_modules/react-native/android" + } + // for geth + flatDir { + dirs 'libs' + } + maven { + url "http://85.90.244.96:8081/artifactory/libs-release-local" + } } } diff --git a/syng-im/android/settings.gradle b/syng-im/android/settings.gradle index cd1419cf76..34c3013fea 100644 --- a/syng-im/android/settings.gradle +++ b/syng-im/android/settings.gradle @@ -1,3 +1,12 @@ rootProject.name = 'SyngIm' include ':app' + +include ':react-native-contacts' +project(':react-native-contacts').projectDir = new File(settingsDir, '../node_modules/react-native-contacts/android') + +include ':react-native-i18n' +project(':react-native-i18n').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-i18n/android') +// realm dependency +include ':realm' +project(':realm').projectDir = new File(rootProject.projectDir, '../node_modules/realm/android') diff --git a/syng-im/package.json b/syng-im/package.json index 610f7436e9..d344ac3d49 100644 --- a/syng-im/package.json +++ b/syng-im/package.json @@ -6,6 +6,12 @@ "start": "node_modules/react-native/packager/packager.sh" }, "dependencies": { - "react-native": "0.20.0" + "awesome-phonenumber": "^1.0.12", + "react-native": "^0.22.0", + "react-native-contacts": "^0.2.1", + "react-native-i18n": "0.0.8", + "react-native-invertible-scroll-view": "^0.2.0", + "react-native-loading-spinner-overlay": "0.0.6", + "realm": "^0.10.0" } } \ No newline at end of file diff --git a/syng-im/project.clj b/syng-im/project.clj index 404396e54c..3133ba4b7d 100644 --- a/syng-im/project.clj +++ b/syng-im/project.clj @@ -7,7 +7,8 @@ [org.clojure/clojurescript "1.7.170"] [reagent "0.5.1" :exclusions [cljsjs/react]] [re-frame "0.6.0"] - [prismatic/schema "1.0.4"]] + [prismatic/schema "1.0.4"] + [syng-im/protocol "0.1.1"]] :plugins [[lein-cljsbuild "1.1.1"] [lein-figwheel "0.5.0-2"]] :clean-targets ["target/" "index.ios.js" "index.android.js"]