From 41c66570907c66f677b56e11d8cec1475159ccd0 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Wed, 17 Jul 2013 23:25:22 +0400 Subject: [PATCH] Beta version --- stat_new/Makefile | 2 +- stat_new/coords.c | 4 +- stat_new/main.c | 60 +- stat_new/oct-clb.001 | 3376 ++ stat_new/oct-clb_4.55.dat | 105726 +++++++++++++++++++++++++++++++++++ stat_new/stat_print.c | 27 +- stat_new/stat_select.c | 27 +- stat_new/stat_sort.c | 3 +- stat_new/statgen | Bin 0 -> 28986 bytes stat_new/summary_stat.c | 4 +- 10 files changed, 109169 insertions(+), 60 deletions(-) create mode 100755 stat_new/oct-clb.001 create mode 100755 stat_new/oct-clb_4.55.dat create mode 100755 stat_new/statgen diff --git a/stat_new/Makefile b/stat_new/Makefile index 7eeaca2..3db8da5 100644 --- a/stat_new/Makefile +++ b/stat_new/Makefile @@ -7,7 +7,7 @@ SOURCES=main.c coords.c int2str.c stat_print.c stat_select.c stat_sort.c summary OBJECTS=$(SOURCES:.c=.o) EXECUTABLE=statgen -$(STATGEN): $(SOURCES) $(EXECUTABLE) +$(PROJECT): $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o $@ diff --git a/stat_new/coords.c b/stat_new/coords.c index 8e7a82d..8bfea49 100644 --- a/stat_new/coords.c +++ b/stat_new/coords.c @@ -194,8 +194,8 @@ int reading_coords (char *filename, int type_inter, const int *label_atom, // if x and y >= 0.0 A and z < 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; - coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; - coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] + cell[2]; label_mol[tr_num_atoms] = label_mol[i]; type_atoms[tr_num_atoms] = type_atoms[i]; diff --git a/stat_new/main.c b/stat_new/main.c index 9ce5876..c465f8f 100644 --- a/stat_new/main.c +++ b/stat_new/main.c @@ -4,6 +4,18 @@ #include +// prototypes +char conv (int, int); +int create_matrix (int, int, const int *, const int *, const float *, int, + const float *, int *); +int printing_agl (char *, char *, const int *, int, const int *, const int *, + const int *, const int *, int *); +int proc_matrix (int, const int *, int *, int *, int *, int *); +int reading_coords (char *, int, const int *, const float *, int *, int *, + int *, int *, int *, float *); +int summary_statistic (char *, int, int, const int *, const int *); + + int error_checking (const float *cell, int from, const char *input, int num_of_inter, const char *output, int to, int type_inter) { @@ -276,10 +288,10 @@ int main (int argc, char *argv[]) return 1; fscanf (f_inp, "%i", &num_atoms); fclose (f_inp); - coords = (float *) malloc (3 * num_atoms * sizeof (float)); - label_mol = (int *) malloc (num_atoms * sizeof (int)); - true_label_mol = (int *) malloc (num_atoms * sizeof (int)); - type_atoms = (int *) malloc (num_atoms * sizeof (int)); + coords = (float *) malloc (3 * 8 * num_atoms * sizeof (float)); + label_mol = (int *) malloc (8 * num_atoms * sizeof (int)); + true_label_mol = (int *) malloc (8 * num_atoms * sizeof (int)); + type_atoms = (int *) malloc (8 * num_atoms * sizeof (int)); // head printing_head (output, log, quiet, input, from, to, cell, type_inter, label_atom, @@ -302,29 +314,36 @@ int main (int argc, char *argv[]) agl = (int *) malloc (num_mol * num_mol * sizeof (int)); connect = (int *) malloc (num_mol * num_mol * sizeof (int)); num_mol_agl = (int *) malloc (num_mol * sizeof (int)); - if (num_mol_agl != NULL) - printf ("error\n"); stat = (int *) malloc (num_mol * sizeof (int)); stat_all = (int *) malloc (num_mol * sizeof (int)); } -// analyze - if (error == 0) + for (j=0; j -float radii (const float *a, const float *b) -/* a - [x, y, z] first point - * b - [x, y, z] second point - */ -{ - return sqrt (pow((a[0]-b[0]), 2) + pow((a[1]-b[1]), 2) + pow((a[2]-b[2]), 2)); -} - - int create_matrix (int num_mol, int num_atoms, const int *label_mol, const int *type_atoms, const float *coords, int num_of_inter, const float *crit, int *connect) @@ -32,9 +23,9 @@ int create_matrix (int num_mol, int num_atoms, const int *label_mol, * connect - connectivity graph for all molecules */ { - float x[2][3]; + float r; int cur_num_inter, i, j, k, l, num_inter, ***label_inter; -/* x - temporary coordinates +/* r - radius * cur_num_inter - current number of true interactions * num_inter - needed number of true interactions * label_inter - temporary massive of true interactions @@ -58,17 +49,17 @@ int create_matrix (int num_mol, int num_atoms, const int *label_mol, // if atoms from different molecules if (label_mol[i] != label_mol[j]) { - for (k=0; k<3; k++) - { - x[0][k] = coords[3*i+k]; - x[1][k] = coords[3*j+k]; - } + r = sqrt (pow ((coords[3*i+0]-coords[3*j+0]), 2) + + pow ((coords[3*i+1]-coords[3*j+1]), 2) + + pow ((coords[3*i+2]-coords[3*j+2]), 2)); for (k=0; kJfjWMqH=CI&kO5bpq|16T+`GB7B_fVp78fx&`-gTaA8jzOA%je&uIm4Sf) zrp^J%g3$*+hA}WOz-SJz2@DL(3=9k`AT|?-U|?Wif|>xOWuU?^8fpyKZ6N!g(kM2A z#6%)MBm)DCW?)bN3xM>4+$sT;mxxFJi^J#>PE=ZpNRG$GpFO2^Sb$0}*C` z(IB-Tp}?mlDIj-(*u-F%JN0uilgv!?b5eA3GV@9+bSo^(bj?ikiu3i1!0{u%zyJ<& zcRz@OK;8k_0}54;-69N-xCF_IW%846v9%5@cXtD953G4G!@sIK(gF5Z{ACd_E5GJ2=EsaELF%A^sSL_)Hw) zw{eK8;|RCIIMlb`5U;}_Zid7BYdF-O!XfU3!<-Bp>KSq}lX5}H)r=wDGsHJOCABCu zJ+rtZwJ5~bIVV3aH6$@9CzT;SK0P--FTS`Wv8W_Io*~|=EItUT&N(NsxHz>Kq8+Q| zg8XuZ;=-a5kX^|TyNXMSk_##s(((&Z^BCgeGmG<+EiL1Vi<1-c(ijR#ONtrN(o;){ z8H!7aa#Hgc(h5pTk`e0CAnMYRbMlK*8FCYIa`KZI(#nf6OHvsUOY+k|L?%O8K~ZL2 zNg6|Zd`@OkGSuz4iJ5r}X+^224DLRjPR{X0dPaJtaJD(9AO&M)1|~RUfwLGGm>57Z zAR3gDSr{0>kbwb|&p~;*R4S7bR5Jg9W-mqtCWc%Fh&)J0JTsFQl;hbLAz~2qObjsf z0#T516;wv>gET;~0aTnFTAo0K87z>*L3IL5+yO}(RL;P}J&?qa>wy3yagg0G^$|$o zAiH7W2}t6wvJfPffh5ie5`f|YByldN7>KGs5(kw{ATbbbKoaKx2|#fNk~l9^3`9*p z66XU6K=BMDapdq^fFurzJE(Go6-eTOFhK?eh7CyK$mQw|Bymt#4%2b~Nn8{r$iTpG z0!dsPN!+9P4TncJ>)t>G29MSQC9E$#GcYiCG#}vr6);HZ{+q4}RABh8x+YM8fnVN% z;lC<~56ayPFCYB>|Np=0qCf?P3{Z9P@&cGY3&aN{)|Uss{7E1_D5<>M0Oogr_@E^6 zasim%1mc5|#>)v{eieuhN)j&{!2BW*ACwec7J&I#AU-Gwyi5S|lR$h>)V~Y>^P@m~ zP?W!P0P}-Dd{9)sGywCxKzvXXzf=J8oj`n0)V>q|^Q}O9P?Wx80P~GNd{9)r{O}Lt zUo8+H6ooGzfcZ)wJ}By5UI6o@KzvY?y*vQs3xW8;3=9k}H~jnm-|($x=fyaW&PN{2 zPd)^Mcpg8X;OD^Las1#0Ul4V?f!~4Qh57&g|G%V70EPFC=TQj^p&q&qq7oQ9nt$+l zbUrO-iaopo6h)wj`x3h!B=!FRzkCBoYzK%3Q-AOWvq$GskIq9L2VdEHFkbMu_@k65 z_V6x{LXXx-`i0s}*d9NY;aq5Cx=5*R!>pZ>oP`?C7~|Ns2*3@?izG{_i_&e|WHrC&TcLtk|I ze(>pZec;mRd#AZpfT4t~xmJLsj%x=veind|V7Kd!&-?-m{NX40^$u2XKu*k_k`|q`n6|s?VbN1%f9?CW#0jc?AK<^wI3Kt*>`|q`n9G< zx9bc3Z45TbrR+OEas67{quccXOav6$uUWw!jy(+aQS%!EkIvc`ouyAYLmzl_`rdHq zbiLxz>3acWkVmg+uM-1T7_U%;dJ03>`w4)8~TTnQ3^geFMjgh#il066?WyaOP^JbF#_peBKG?~6l! z{{Q#rc2(#WfXb>uWkIRw#gae&{~ve#1M=Eyqi)wf9y2_8MOr~pAUz(87vS2yJA#7- z;)mQn|Nl3;{$cEP{bTJaQF9Dzbmy`Cp#1wn0b(Y|ke5>!85kgv2X}#@6c$cv9T^y2 zwEy}4A7bah2W%d_0U{pVt_B{A7vLVcfGo>`E_(tY+j$6G5*8N0P-la~V%u+23pLPn zp;#z^E{kMgZvY3nEX+nmWE)-3Y_vhwbpzpv-T)nRSrqqxG7L)apty$zT`$Z%6CEHC z2P(T?Z25&0aT@$R3ID*U1Dwb~g*hyKS{)b|UOfK=lRW-{``7>f;J7~t$w{5HFFZO+ zA9!?z-tg%3z2MX7dcvpE_rP)2KcIMjtpM>BA}zh}U_8{#y48h&p_2)ea++)ZFxA}x z<<{fi^4g=@^~NyOnA$4=qB?6- zBs_Ze%0Sry9=&@NpllA0-n|-Nwv7s?7`gNhl)K)5b5~@y>l<+HItuchM|Ug8c2MEo z%>XK|bW2TeEAVJOzz9-QRLb8Cc4zYe#!d*s^$laU>l^Dzn#Z$HBINbRKsF z`{(6kP6h_tE(W<)m%o*p5uYNMw=(!!AA#zSURzN+28I_6-~a#j=(V*3u}dKAR1iA@ z!rlmC$3WPBLF@ns+u5Fh;e`u??FwRBK-kkkY#j)DE{LrFVebU7MIh|EAT|et{S(Cg z^9}3TO=eFnk?<^2~2AZ$rc5x3g;P5Jq z!yTZou*xj8geYo0!06E{f{~a6JbGKfX}9wlCtE5zXp29Mrea8Br*3dusIM$lpil!ji!e*6Ew8!Xe^3Q}fysLr8#Du~tH3R2H_ zp%W~QET(y=^Fk+B7E=_g6G=ZvEhvw;u4#6C!}#(s8$N%5!=Aqt)DD9LEtX(qfO$T- zG#a7^x5uYKN{b>6k6tL#iv`N`1lRPs_K*@8927xcp)q7fj3Z^4@c9Jh$VC3uFN_Qf z$6G;#6sYt$?)m~`*=q;9ZWriwec>^~gYg0=M07x94M;yI9Ki-PyS`uqsYt$o*A#FA z>doi>|2-@Z7xj08wSvnbCQyP5{sJzCPC&$)e=wCKHveF%=W71JSR(V%l#zj<`3Ez9 zOAiBx!NT8i4%7mdgBK$>L%longh#LG9b2T3{qgz#|CgYF9gl9;6CS-DECielF`^6E zh^-(apzYfe9=!#iN}ouhAW`jyY+Cx~|NmcyLR?b;s;@~l@+ZVpMr2b3KmY$f0i4YL zFyl)cph(r_Z*3wf1r_nPMlvxl9Cuv-N;h}|PN3U$1*l@PVe;tRS^#Rd_V&hrsn!HA z6~N-r3ubzDe)Q}-;n8^!)V1j~b+=()09Vg1{678v52P{~0fU ztbw;q!4+03$fiyvG|dpzaLpiR;M457qSN)oOBq6m3^jZ3w>}3Kf-gY%!*vC1f=I<0 z7DU<~2Qr9A$@(APgR?$=)B1lfCxe0r+<*Wl(@=OoV=HLE$&{FyFrS#35Zo98*MwZ} zq2(-Ss1y=gxUEmctpHZW=9D@dZv{0LLFFq%IgY{!TqXYo6?&@ z;3jS-q}lra{r~@+u1lJ0moU~Tbh|F;Jm%4ByUGHV6cyh6|Gxud-^-b-3=Hu0#_<>5 z--7flK$uwo>Rmt@BHeF6U9SZmGmf>ef`s+DT^IC5FhZ*PeW2c1=kXU@G7JnJ$(K7? zL_tcxDwv=uKqFI~$6vgV#!$fwRRMBQ=kXWE&{Z@aV1e5TaxKVck6u%G3vgBO;?Y}B z%(%|*Xs(^XP|5}I*Z~%h$EKQql25nm43A#ZCUdZINO^Vc4Y*@815}}XdIL)3V3o-i zJUTCUFdhK4>JL6(1<9sBOrOx*3RVGXj)TR0AmSb9;wBLB26S;5uy||5|NsA8Acb8w zG-l_5+CDDO#?(|$Qs~|aN|qkIz2J5rB%Xb`eINLA`lu+lbh@ZW_;iDMYc47Roi!?; zJ`1?P(rKgO+IiEp^8(1-=iY&Q1!{_Qy1seY0ALc}+~+Gn1i_7(CF%mGlZ%=JYl6BdaJ-Jlu? zoH;{GVVSe}6{vK1!3eR*()C5nn&YlZK!NT8%l@D+g-H8!yH4=v?gfWkcW8%4ckKmO z&^-VJUFY!^lNG=r*Ic`Vp|l2S5?u2JkM7zX9^Jk-Ji0>GnO~)9u>e(H(lhqjxK$^nt`9q6ZC%z8x?(+yJ=&lp0S-Fff1%H*lw* z`2eG}>l^<5EYLt2IP#zo&>Qf_quUi6WME-Xy8vV}O0xl!JG&VmG283)zw=P%Igegj zVG~#YI=uvSO~Bf^Yd3iG_JTV1-KA?l<=n6T|2;c@fLzp}&A&;?WJ3f^$Gdc=Vb+Hv*T7FJ^;W(dl}@qq+71ycjhQ12rMR^9>%oQ_p~E zgKpOg9=)cUA-W)?X~T2yC<&;c`SLn=ybzQ?T0z6|`#_W8AYZ)!s{wanUM>Ks=>^Ms zG#}6hNrS?pJM@J|@+FU6o~a;{Jh~zNVm#F?WO;$VH65f0;-7AT&I^nOdSyWMGRP8- z<^xVQY`;m`bnEv*a|m;QSoYh%378^P!Sw_O~h@%}R+H8LSI zDuXmG!=({!z9~qV|MUOe~m z6oB~&RgZ)R;~}V$ZieO;j9|^6B!FhN0@&;qNYW6qK}tIXpp8ZAR#5ul?+N?|Dv>|~ zN}vP)DtvpSU@4*V_=`9;6^V z(aiv=5K+}a(j<6H6RuXlgAuH@+4TwIOHt~DOb@tRz#TFSpZOz(PRKO7-eGL6y~D)c zxAHHjB!(oh=`5g>eFxNabG`9$8O{V}4(`p}z>*YYkpg@*JSmoNbc2%QjUkXEy=j~z zyImnUxCfep5Af?9 zdLdW_TiR_$O1q$f1Ds~>l*W)+(0%3?AUcS_cHAJ#4oHoMyFh{$)nGgBlsJOv8zs~z zxF3Rsd0bHoV`>)Mh)6XDw6NbHOGrT?%R(H|=I z14+yp9Pv*)P<2=Pq6nwf*n${4Ub@lWN2t&fCf9f z#_y(KPQVfDy^z!n3F1MO+R;M_yl@59HUfnddj5kfs~CK#y%&<&Awi5MwYNf2JESlo zHMOIJ7HAC&{*W30g$%Y}r+R9qTCk%S1TEW9%7x*U+9@jAQ9^6bq;?cn4brlmqF{%# z6rq(D;l>BZu7A2qp;8|pQXdZfkng;xc`*B6isrG-kGs;-($XN> zn2@yn0GWtQ>fi$=#tV!GG!J&3=yd(kTziADl&9PEi^mN9Z7!@2UTc7Qogk4PFcGol z+8fLukv}jI7XEFn4`L6eO@NHWH@~Uy=&W7g(OJ5{qce0yr|%S>PS*~fPTvNPZr24K zy{0ok6PcaIUpQU_Pextv=nh>0S{~`qYuW~pf()NOyZ{=sfvoBagN~NL7fC?IB3loX zSYVYA=yrY6Tfhi1w)0}=Cy!p!WMre;E` zfrkd63*JBrdSsZ;{e)x?c(Kv5^B{wmkGnnrO$of#gLRM*hA>|6=w<*d)K0$Saqtn7 z2P1U#DQLtHyXn@hPwKaWMwW3&zu@op2M-)g0s9E-kXW!oTn|8f^xC@HbqfD_*EgM5 z#;ZfMI>&+ADKD^w2w|t-O-ua!iQrKU(9$|=xx(7@1%JN* zcpWilZzRKU*9V}q42|j6p|G^AOHA7CW?*!EfY&+oJMbs53D{G8^9x4C1J$RG#)z*DjFfPhAbqf&kj&V1nrst z%~+Nro0|tV7gDHH6BqE!KNw4WNK2F`_Wuz@^4GglpmO;MXyrF%kT6)gKH=|A`wyB{ zbG-oCDFoh?(FN9nH<{f9Co^zxy;jEIEl~Nq{v^nHJVw=nwqu+CDQ!6kb_RITx&o{X zvR>VF3V+Y_pI|v~jbehd!A3%qf#F5=DVXH(7yTz;ZG+|`70C11&2K6?Yxi`P?(pag z-QdybyTYf_b%9H#@0@PeJ>c>HT%9}sxuMhb0yNLOJb|S;x!}-Io0 z?h|X*J^Vd||6x(^0?gO>k4Win!813o(*F#EhmuYaEC*g!0Sg^Vl0BMT;t60e|| z4b-`S41HJeKxqD!E#TQZn%Jc0dWOF(1Z+NN?Kspk9^J0sGzM8-0IO0_6Fq#PM(73) z&?*f`!iQ%B)Wsa3E5K@?dY}!qUK8k250LDqZXw1~5HldnI8fCBN?XWXM@k*_1Y`l! z5#aVX$l*{vWXj%y7)PN_mf&*~S}4#mq^RpCs)SUt>jTDa*9X?FbNG8Mfwvrj>bxBX zA25UKIMv^ zDq3rH!Lq9{cuEjFr3h{0yte9geQ@vr3&`9%Xy&42Mc9T|7VvBqWWt@l4%Q!d335TV zE3C*~$pBh51@6(oY_f%=WbAqA;3IgxxdTd~kO~CU+b*n zy2Gc_cLR8a-s9i{a3^lYK~Qhf^#yc~<4e#U6)f8vFB}IgT4O+$*#YlcqRX6s%N%$8 z0cza8*6en@!@u734=7>%KucJlUK1#}fL28QVC;7NVeNVclwhHoaqsZ=WPsZO;C+}c zo4`rw1ISdE;TqkpfB4tC-oa)#sDuWknh(vcaI-HogLYh7pu747+|?f4t~+3D{T-mC zWv&}w+zp`BU%bGxDiS0J z?-oG%%6~u$gutrd5};s)cO@__goG(HkY2tAhuarWxV^j#Zu-I9fGtA08DJs$1ueQD zAqwsxw}Z|3g5p}ZS4(psaZZ{yzYy>yrezRsHoJad>~{TP?Rtm5M-iM+LD7vRycn!q zfAIHz0(VhAFoHJjg13C%;qP$==Vx#vzD__-9N@49RsNu?16h^}O8+>5AB$>moe1go zAuO$#0p6zHdHjX$UT8)>2^~)Z<0fcy#*i@ac5j0F6y(hJCGq?o6;P z46O%B*t%W+bh`e4TXmr33S^s>>0u6Vzw5>Bz2M9bKM??QG6ZZ0Y#|2&!;4)Y1<(@# zl8|~cvp|w__kyY=aA3WJY#TyNfDng#=GQv#nP1TL&1Zfs*CQa-i_iQ5Aa0!N3lR57 zx9gwY0MM>`P$Gio14zT2fBhl20o|@g_}9B0fbr3cdC=|pr}+RQL^jg(0m$e(pZNts z@9;-m`phrj`+z^{B*^9`{80z6hM54!A>eVt572Q#F-SP=0PW;>;kO4=RD<&U5Ab5` zKm7e%kpAcn@Oc6|z};Hd`*0&{c z{PLg^ofsH=I$!y8esk&k@AzNjjz{xhMi0x^rLRB-wM54{#yG}0#yQ3xPD|5+ssDU9 zZ34(7kP6UIE}-*(K!p$Jye$x2T#{Ilo|>m%Wo4xhre~;Upl1MP8yOfH>l&Er8k%!) zF*y7Cxp}&W204a!`ulM)`1rfqs%CNphI+b&fEWzEj=|oxs>NJxoSgD%m8KvnM=o&&< zhHw^0-Uu!VV;SkfSRi?0xIBzyqzhvi!&qDlu6{0DTnr2fL;`3yF$5IlrxzvWDx~EX zDJ144=2TXtD&*$pq$ZcRR&5b=A#H%*;`+Qb;XM%t@_CO)Yas2Z`t<=jU=Ugcc{Jr&__>4Gm8P-An~f zzktvX1>Ir=aPrXsr5y#`WQ7QwNS!DJ-9!aFJv{~8A_$eQ;2#b0E^%UIli*gf7tQ6EiS;SCXA-@R9)By9>kq+ zL%|FU8zVgv1xHPV#Jm&*16@M}4I5)U15Jg*qEv;v)YO#J6g`EIjLc$%w4B6rh2+FM zg``x4(&E$GfB0wQ8F*lV#0Ti)dNf4o{ zkdvRTkeUZR1Wo}I$skcM)>SAh%}gzUNrD^?F+T$=4JLFIiZk-d6-q!3%t*~C0Q(}f zBC~`+H4{|$sHW+F5rb+bLl&(QVYH)~Sh-Yw!r?VATje>$go`Qk`i1q`~T)OChi$OuvJQIw$ z7|WrCfE}O65FG03>lhTNfaFpJ1_qELQ5*}3 z4`&bol2Ir?ut2I5YB2pmzyU~JRkhSJN>fm^)H6*}P&G8rGfl(dd4k6Ic>1|I2HC2D zv^z&S`?x}wp!4penXM}r7#Kk3G4X8v|NjUB14GP~|NlW}Q2K2B{~y$$mfQCKKMx}V zL&nbk|8*D{7-V++|L+5$Pyhd4!pOjI;o<-Pa~K&IRy_Lue-9%A!<(1?|36`5U@-ag z|342C1H+H6|NrYSF);Z2`2XLBiGg9ykN^LtFflN|&U9m}3SwZa5MY$%Vdt2@$Swd9 z2c4~YVDta~TA&DoVvsn9iK?D~0d&w5NWH_R|NjF(U2Hx9H$Dk3e(rLP1_pa6Yb|3H zC6GRl8qk@h5nKNMzXTF+i&rVAJt5}-6p4&+4;8=VH7 z5eX6pouvh$JvboxL1&|Z_$q!7z9fjlz`y`IcUKz92L&03DFq@xR82{gYh<_NM>iIjPM*3YiRn;Y zdS0nsQfX#Rif(2KgC2;NkyxC;pqEmaS6rD3p-YM&GG&k^Jqjnjh(WI?H760I0m>@K zDPhpd%*!lc&?`x;C}Ge`%goDU&@0MMNi0cZ&`ZsTPXjep<1gmG2Oh5E5NK zsJ#95|9?JIIRmWRNq`E#+z%^&_NI&I|M+QKny5G<1)lCFo2G+gS#JAj$D8`*Z`^z%4LAr1EaGU z7#Kih6pRlmr@#llGcYg&K=p&%4^jhjKUA2Z3VO~vNDd?hD;EPm8bI{`NRRepvV!K;q z1RcN%)2{&4uK+#IA6-2UYc&0^c8vs7KWqU6F8!dkF|z+JK-)zZp!#9% zMAr}FgU$s9xdrBa&~d^bxd%}FAUO~phSAf{f2jLm0ajk1iiHTs#K6n&0j(Vm%2Ob51+;#s2l$o)UX1=JsJ+9;fbbVAKY{wEj0~9J52~L*=EM5C zU=P9TP0V=Q4{pz3hQl!&;^%RQ-^3vfD(|s{8>k${CJrhBu!-Xee||<#TnaJ>M4FGu`Geg6@CeWdNOK4^js! zgKNOzAQ4pD2NvgLIKv0=7kKQ5fq`K*R6M{QA`Tv#VPIfb2^xbzH3G~#3KqxAFBib( zfR&&SpfNbmt^*W7P@5ZvdO;?TztB}PFeo#D?$eOK$d6h$)Z2l@c^MiMApQc6aWOD3 zfDT|0V!$llg2C!B?M(-Z^D>y2L(Bn>fiW;JgVAQ--tsTbpH~z@O%snAM|qU0}gXonKAo@Am4~EGcX7;Nif`iwqrnIAgl-yXF!zy zuxixR8$-uy{ z6)X-i0TrLX5uSH&sDFn;oQVYz{^;)KW5FI@8Z4mjM|BH`X9X7LWr*>HxF0-L%D}+j z0~W{9P5_Od=p{2G7nKy3l%}QWfv)56at@03@eB@$k7q#K8x&uX8=nliIjEQcb{i0q zP<(t!etddPeo|sid`d}vQE_}?X$3=aer`cdYDsE}o|&`;?pH!cnuD)oLhwOXCV}o*LKTTm1)0wPxs?f3swg!vB{MHQJ{cVT3=nTY?sh^| zn4F(i#sH3uG*k(&7|4jk^c;qQ{Bl%T@cmGzLKwF`p-O|VmqHbaj|aIQ8a~j=qtI2L z-hvgMQk);3k(if~lgbe9=^tNQl9HJh51M^Njzds-fL>CCZd@kvy;lfHa|ZCNW_)r+ zYI1gFUOGd3YF-Kh)MfGUNyWubHYiy`f(sNh8L5dW3}gXM0NBnG