From b027a29e24a9ae74bdb876293f697be452bbc5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rn=20Guldberg?= Date: Sun, 23 Jun 2019 13:02:05 +0200 Subject: [PATCH] version 1.0.0-BETA-b9: fix #2, fix #3, fix #4 --- SingOS.img | Bin 20971520 -> 20971520 bytes a.out | Bin 27936 -> 27936 bytes lsfs_disk_controller.h | 35 ++++++++++++++++++++++++----------- lsfs_fuse | Bin 46016 -> 46056 bytes lsfs_fuse.c | 2 +- lsfs_fuse.o | Bin 43848 -> 44336 bytes 6 files changed, 25 insertions(+), 12 deletions(-) diff --git a/SingOS.img b/SingOS.img index 3ff14a16a03387b467ec9db85fdc0e96f0a02d95..bad421bde1ebd830f5de7c7cfce80f7bca0325de 100644 GIT binary patch delta 11475 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 delta 1642 zcmeIy%`1dK90zbS`|R_wb{V_gUw;o*sl6$MixU@zJqWR~X={s$HNF9Zab{Tn diff --git a/a.out b/a.out index 3afc1856f2bbbe6d16c02d4e17d6547a266c372e..80285b3b80ef92fcf8c22ce5c3d5535c6e514b8a 100755 GIT binary patch delta 5188 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 diff --git a/lsfs_disk_controller.h b/lsfs_disk_controller.h index 7834544..a50473b 100644 --- a/lsfs_disk_controller.h +++ b/lsfs_disk_controller.h @@ -34,7 +34,7 @@ int create_file_system(char* disk_name, char* hdd_or_partition, uint64_t filesys int lsfs_disk_create_entry(const char* path, Table_Entry_Kind entry_kind); Directory_Table* lsfs_find_directory(const char* path, bool drop_filename); int lsfs_disk_getattr(lsfs_file* find_file, const char *path); -int lsfs_disk_delete_file(lsfs_file *file); +int lsfs_disk_delete_entry(lsfs_file *file); int get_free_sectors_table(); int get_free_sectors(int num_sectors_needed, lsfs_sector_offset* output_array); int lsfs_disk_read_data_from_file(lsfs_file *file, int data_length, char *data, size_t offset_to_next_entry); @@ -53,8 +53,7 @@ int save_modified_file_information(lsfs_file* file); #define DEFAULT_ENTRY_SIZE 1 // Sectors #define SECTOR_SIZE 512 // BYTES #define NUMBER_OF_MBR_PARTITIONS 4 -#define DEFAULT_FILE_SIZE 4 // This is in sectors -#define DEFAULT_DATA_POINTER_SIZE 4 // This is in sectors +#define DEFAULT_DATA_POINTER_SIZE 8 // This is in sectors #define DEFAULT_TABLE_SIZE 16 #define NUM_DATA_POINTERS 27 @@ -241,14 +240,21 @@ int lsfs_disk_read_data_from_file(lsfs_file *file, int buffer_size, char *data, int amount_read = 0; int amount_to_read = 0; int remaining_offset = offset_to_next_entry; - //printf("READ: buffer_size: %d\n", buffer_size); - //printf("READ: Data length: %d\n", data_length); - //printf("READ: Offset length: %d\n", offset_to_next_entry); + printf("READ: buffer_size: %d\n", buffer_size); + printf("READ: Data length: %d\n", data_length); + printf("READ: Offset length: %d\n", offset_to_next_entry); int data_pointer_index = 0; // start at first data pointer. + + if (data_length > buffer_size) + { + data_length = buffer_size; + } + while(data_length > 0) // We have more to write { + printf("READ: Remaing Data length: %d\n", data_length); if (remaining_offset == 0) { char *tmp_buffer = calloc(DEFAULT_DATA_POINTER_SIZE, SECTOR_SIZE); @@ -434,7 +440,14 @@ int lsfs_disk_rename_file(const char* old_filename, const char* new_filename) { lsfs_file *new_file = calloc(1, sizeof(lsfs_file)); lsfs_disk_getattr(old_file, old_filename); - lsfs_disk_create_entry(new_filename, ENTRY_FILE); + if (old_file->entry_kind == ENTRY_FILE) + { + lsfs_disk_create_entry(new_filename, ENTRY_FILE); + } + else + { + lsfs_disk_create_entry(new_filename, ENTRY_DIRECTORY); + } lsfs_disk_getattr(new_file, new_filename); new_file->file_id = old_file->file_id; @@ -442,12 +455,12 @@ int lsfs_disk_rename_file(const char* old_filename, const char* new_filename) { // TODO(Jørn) The data pointer assignt to the new file should be released. memcpy(new_file->data_pointer, old_file->data_pointer, NUM_DATA_POINTERS * 8); save_modified_file_information(new_file); - lsfs_disk_delete_file(old_file); + lsfs_disk_delete_entry(old_file); return 0; } -int lsfs_disk_delete_file(lsfs_file *file) { +int lsfs_disk_delete_entry(lsfs_file *file) { //printf("file: %s - has been deleted \n", file->filename); Table_Entry *zero_buffer = calloc(1, (DEFAULT_ENTRY_SIZE * SECTOR_SIZE)); //read_data_from_disk(file_id, 1, mif_record); @@ -530,7 +543,7 @@ int get_free_sectors(int num_sectors_needed, lsfs_sector_offset* output_array) { { // If free we can assign: output_array[i] = p_control.fsci.next_free_sector; - p_control.fsci.next_free_sector += DEFAULT_FILE_SIZE; + p_control.fsci.next_free_sector += DEFAULT_DATA_POINTER_SIZE; num_sectors_needed--; } i++; @@ -754,7 +767,7 @@ int lsfs_disk_create_entry(const char* path, Table_Entry_Kind entry_kind) } else if (entry_kind == ENTRY_FILE) { - // We assign one data pointer consiting of DEFAULT_FILE_SIZE sectors + // We assign one data pointer consiting of DEFAULT_DATA_POINTER_SIZE sectors dir_table->entries[free_index].file_size = 0; get_free_sectors(1, dir_table->entries[free_index].data_pointer); } diff --git a/lsfs_fuse b/lsfs_fuse index eb1317271177fdffc7ab43d09c54dbc173545a6e..5b3c1b057c3ecbbb97dc7f3e30d8413bf059619f 100755 GIT binary patch delta 13067 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 diff --git a/lsfs_fuse.c b/lsfs_fuse.c index c1a917a..7e7ab8d 100644 --- a/lsfs_fuse.c +++ b/lsfs_fuse.c @@ -67,7 +67,7 @@ int lsfs_unlink(const char *path) { lsfs_file *found_file = calloc(1, sizeof(lsfs_file)); lsfs_disk_getattr(found_file, path); - lsfs_disk_delete_file(found_file); + lsfs_disk_delete_entry(found_file); free(found_file); return 0; diff --git a/lsfs_fuse.o b/lsfs_fuse.o index 2d5ebe53a40d35ecc48de9cd6ea5cf6e7df5e42c..1c01761e5625637a6ad700ab86fb9282fe2c6fde 100644 GIT binary patch literal 44336 zcmeIbd00)++xUH&NJW!Wgkxxsq$JX$=;WkQRA$YyCUqi1NK&Ukrp%Esb0H)&X(A;m zLP!~+B6Em-Ywf+(v0Li-KF{xY-|Kq+c-N(~_x`MV-|JrYy4SGx+51?>v9S~u5@O*b z#4=_5J;Id5(nkatmItx%?9TH*UX=Tz(lh z!Kr=8O(?{TZk6HkBRjYWoDMF(v>EE)7t%*1{D;jKySln=QIh6P=8iy`&5x`HYO4}B z_0jo4{Cs>8m(OWVaH{7f*j9nFo4Nc-oI_DSgsMtdEb}ZOa3;5)fo;QYrw+l&M&gXOLiNXW_DSX~v-Ik!v*$KAw2~Jf)w}B6nCdvRGgM6Vv zVA7Z>P*y@@Gw@ZCy%6824zv;US&~X${@vyYf4aK3d=W0+LHr-{6aJqm;_h!j5j`}{ zeAGDRj<9uM>^1Y-<2Wy2OEg$WU-oK{&Ry~noCsR9w0QxgtAxvc2;67Ef5CrDwPXnu zr(FI$F8?;8;bj(?FBXI~n-2mS1UnD_5yE$B&S9}xtX$}MZjuSyP)bTU9dI9p|88!Q z0^A2J&P~#%_V}gQa7#%FaXLylo$#<_HncCn33RJQQ7D~YFHRAvqXANuU?!Si+rjm? zg%u?k>jHB@&!QD~(;Cg`1QFCQh0__D{@=5MnUVoEl(kK|?<- zHFVZ-h0qB40G|<)FCAk{)s9n_;8a69i>@>r*SQHYppY^yA8tqi6(9gcAnD6+U@ha@ z%fRA1r~@wFUcBeRfi8Qc9+c58My1)?Q>{T64HUC`kf*Jq!W*j8z`;bH1BlK)#NZ!d z_SeRwEwlw-Acwt-3;PWiv-9WYz%h|AYd~IV#szg}Wy6mac{t=oN7hJ7Z%zbpO7$Q? zd%IF&dUzISt`l6oZJH-HK~zYS}N;%X(j~Wt)q=9Ay zBRL3DdVKiXN#RiWFNLSTpeChJHvuOZak8X0KL+MQwVXR|?^3%x>57i5V@b!rc_^19 z40^CQ*rOT;1Yt8bIA5d0~7|mFK~DU-T5wMBaj%w zxdT3h;B;6oL}$~BiMLOHs;J01Xqt5LO>mG4jp{Z;wSx+_Gb%W&=L%-S6UTDuz*HM4 zjw&gMAs=*#9xKz{V`b{-%Cys!0WtG;xx%OnRk1o$B`_AyRceup3ao>+z>Mg~JD^_b zAR=3Yws4c+R6|PvYrsAn2(m#pF@XL9Q-UW~Pl^gmo*3miK?K8@upXY#?yphyTrJy>W|!9oOU9@y4mk~(3QqX#tAb4SS`Om@Y-gDbVMHb=UEdos` z2wo!ivIW7{y}gR);Dc2lEhNJ^np4+3KnFmJq9QY?2#x(h)#5)zXhhGo=(&6{0*k=t zO@%FYEGLsYr7#S5n5r}!mNRo;WYI%Z4PAQ>H|;Qot~+Sr?i~-+9m?+JjsaplI-$D} z$O(T#T8bMLm`TTU9f;{75YzqPQjrnRaNRDLcECh{!yC>EFi26f!$TOOU`uxd5I#K& zlK-hcut88agBiR5r~=#4=9*5ptb|Kx6%lXrQD0 zUj)>GMG9E(aQT8s8y+T@$wYSuh0BBehHh(s7Fh~`Zo$G81uCGmVAaH`8ewX|>ec zD)5;OaC+Ups-R;4W>yu@fsAb9vwFcVKDRvJmG+=gV;UXgN)9s8t`B5UC?-rOB8}@M-*l95}1ft-!eWNZ@n| zYylV6t#rIo7a<9pR?wZ{LXs{A7$ZR$^Y#X)0lpCNjE?LavKD0=1sOmiI4x;lF{~%> zNCS0w!U7Y1_{1La1nT+1xS;5Kaa6_Vz*Zr6Z4w>X%38M*=l`!N%!pig`DXy*4OF@c zOkHLFHYw~)b$F$N`vG=87+?w-26Fi~v0(y%XLt{cF<{|rtQ+qBuWlIA%_Zv#L6=d2 zyQS+(VDAA7A8=Gw&>+c&6L2$s%WZ(+o_Fc`KVaAC6g&VEJJpzs2^$y2lLi7*xf7&g zKI2yC;d&B_>4sB73Ac2;IJ5wa{w+{N0|vB7z!y|L2v9hEHE{V`=(Rc6O;}IuQlU%b z$j~-J6-rKi6-2>mBXuTY>i4f-5{!m$&bY5-5AmjSRyXe=D@x(zK<`?d&H zs_sx6Rh<#`;2woQNf6JZd7YNu$s%i!39GKxkgJ$aiy+dV_;^t z34|ts_@P#fTz-r_kOPLxbeq{?=F>`GW=}riY=Mi1gcO+1O`xUWO_WdF8WDJS3pasw zLsC4e0~%Bat4dzz;GUNhM+sqtg}GEWLKg>=3;v6xZ&WKAM9Dw?_HgP&7y)h2@zI&s~fX1L_L0pmE#%Y}Y-yZweJq-5L{Py-Mu%k4l6&MV5 zSa0DKUjlUqhVAJ5A)rr!`$x^(aeqK~!NE&OI_6|=GBUt%31)-Dpu2%-@V?*QsO}b< z^c?d4e)U?Eqp8XWMc;r`6p`LM9E2JQfpB>BGqK03A6GCDoZyEa{de-O0%Obx5RqVt z5Ui@eMG2bnKGWk7$fO&xl#>n01091+Ecw9tf%XAdN)UI!kZ-_v2rh2B-z#!x`Jdh^ zD&<@Ut%Yxq<->jI78zI^U8fgE^bJEZ@dT%Q2n4stzzvZeZjphTL6jJIi;T;M_EO8D zvTpT(x5)Crl$|dPZ;@SxHx`rZyAn9prxZ%Z`UBsTa*8OcCWGn%?cibr-u9yJMG2N{ z;R?}_*^?UzZrsCO=VoZaCGER z;c%p__qRf|$HaTr-GbAdXcaI1gI{3`~046pp@+kyg9KqFUy zZVpyhjBD%`w8|Xw_XOYpI3ZH^5zD#_&QultE*jxgQjgOcSfli^76utyxa8@`p<709 zB@GzJ!C=OxcvjaRG|t49Um4B9B8H?xMYC${(&m$dxHkP zJv8+15gUmc{1xXSWcC-$7nGF1`6BQj5J2~S;Ap|Ot+JtKJFpf2-vh%QQw9uC0)7L# z4b;d`NKFyMh|r6k$OfqADyR~RzF?<)-UZbE7g_LP1bP848R4y{=*SKhZy{>u7Hd!k zG~iR?cLx}9s4s5vzt@5I*Z3zpX(G7lCX4I>x6r?US@w(c+6-VP84=wBl8rspW03vR zgMbxMAY?!@Lbur~bywDlyPW=KZtro#fOb+N2KXKp6yE)Ql%U;Z&?5`D6EH6s=_LbY zFxAwcDj?v(+rbQQ6<*__?`~1+fV*>ylTkHc^P#kwWvs5Mtr@0n%8F#o;h0+(vfabI zy}d$R!u(cw8M0M9B@ni7y`mk)2ilp1-khK`LO>vHz3SA z%*E3$Y^jS!a1bvvI3U0)RNI%u3k-3gi^ulO^I|*t`UNdz^L*WS>=j;YU$^C6>=mJY zJf2q&w1X|dTH(%O**I7_u$Sv<>uBqYbJLa3u<;5DbMOlc@d~i?3-EGS8OHMp9HTMA zE66LVwG>APTJiyc4E7V7VHOtAyh7~#%6wh+-^56xBvi*WQy&~A&U~jp5C}rL_%7v<7 ztnn;umbNyFR;KM2=tEU;5ogXEyE#kP?>8f`l$8BzWUMMUvtE_$jEK;jVK#sF6$A&ab=5JSa8hE z9kWdN$&;LT{u|~ldna;MA#-N&JiX0xT9#&dNE$vk<+OC@u?Hu|9g99P>#WK1minh@ zKRmv7R(?-?{yp`>nm0y1|7(NKJbP6KluaRq-S(2`E&eizfvc1cs zUt~Eg&irOPcAZthq_!YsW#>(4o30Pl@?Cx~q^@AY&O)EWD`IUi!#g_+t+@)C{!#0J5z!hMG%9 zS*>hXm=WW!(LZ|Y?c=}gdDFJ;>hE-V{?r7sBes(}O?MmbFdF{inoe*G-{Oe(gF7X& zpZ-*i9ro_M#=@wlJ`xM2CLY)}&NF+|d$9>So_UK_-EVS@N_jH=NNkeIphr`uIoGQ< zPF2=jIG?NX%c3(zHjib#ZntILc=xI5S`W5$#d{`lc|H?jjf@fvtp{`N`;1=4GP09@ za%*I6ecY6Ip9If+Tg|Mk{Vz0J<-AND@}p_=)L}QnGRnI4hS@|^Z94HmzPPhK^FyiT zAKQT~i6gVJj!K$*3R|%D)YiNGuhx!iOgOT9LdoknWrN}yht4i;f9I@in5S#FJ5h7> z#_APIS2nt8mxq^@Pxy2(Zr8$3JGr0gxifXD-DDpQSypGiwY#a$r*1No(c3{rRujNb1Zr6&=dH+r2B~kzSkAv&Et^+qKkG4;6HHx~Y?RjT_aJcr%Qf*<6#br^Y;)%u0Qu0c%4iN{; zOfIykS2awVr82rIZrhc9HfBb{<$P}k*Ce!$iF$3!-Fj10EoaMMmqDX^myH;rwa@;v zWWt9D{$b0`2A)1D{ZMJHe!p!Imoyi8eze+p;`1uoYvaN;j8=<%T%DPeUi8HL^y;kj z4kHb;Cx?ZJtGyDEe>Fo#SqOZH!4C!S5h5&nJK1$G{4j(ceZWVWJj|7Zxg#N4em}u# zt!P+$g2%Su=8CIqf5`5Sch!q}FKqC6%z_O+`em2RxgaVTuU(tb(oc)$u(z#`aJoWL zvejU*a>*AZmVN`zXavHevE@b{+bjz-d9n93n#-fb4o{S*EQ=jH4G361*GSr+|6ax9 zwW{H<_^|TH@4jkrtd7K%?h5_v-Y#k`rQP13cwl?g($bC{)t9uZ_Yd-TdhGC!s=d4F zU!FCeG(X_oqj-~=+$q(wj_Vk?m%c4c&AE6dG)VUXPa>yznERWK52XeRTI<*N>V?Qh z$dBGKZ@u5q@$nKmvmREiSnd_!zIMSOsc}Vzq^^sKFK+u4owKm)55I;Wd4(9piiP?!%)ciiP`Th>cs~?0x*rui<-U54nG6Pmqnv(7kVC;yjP< zleuLxerB*_#g|52U6Zv;t={9r6EXLW#U0nl(Ta2&@*(T&r~WMu7M{xfbFlH%qH{UV z@@{aiUmvk2b<3-HQ*Ea0$YZx3@#ODZW4lJgs{P$k?=IbUV>r!fJ6`ELjxY1z=^Y+@ z+$z4*C+)xNLpSQVOTVIPKr&NhI{g&fbhJj4;9sib6xMtbWAy?kz(`JRW9p< z=P8$go->cHDjTAsxb#x>6L0MY{))nyd;BMZk9TgOjuUFfZ(R=rM3d&+a!hs~^!37% zW3}a38ZkyABq#0M`#vgku)OHONv5jnZp%M;dD`)qrr9OoCn@uXe^N>4I&noa#>mei zIQ-rSqk8LWiz~i8X_QN!^33vc?crG;&0OW1r}ax25Ux4%LO)*9{wbHkWQ)!y`5si7 z?Be|LN9UJCYrPe!VWL zi`+(8-Zk&OqN#h)ME!j0S z@#brjWEb1kw{4g=yDIheyB|RY%}#ZzbylBC`LU=x_}BYIa`_tvMPI9_LsLR5QOhI{Vpr4Rik z_7BQZUUwiN@xz2B@b93YmIUge$L^tD5z&R*I&dFqBgJl)ncif-zIR|knGg>BmO zYw38?H*)1GO_M!tmVCEJygRvMs(#6LrKbEVKAKaWPq+SZR62f@x1m*9qwHJPjbBDh z&$%?8+xPS+y}<#kl6QSG<#VUqN$jJz(Pv^r%AL5ybq7QjwiWv7Mi}NTz4Xnb-`)?8 zLhROi#2Bk|9N4{DweiJzn|*F!4s|!9_H5lPt>q@I?5x=TXVRz*&lJzEJv{EgWTlqK zTG^J!z$W@Diac2{7Tk& zl-y0onVhlp_+6{>AseS&9JwZ4Id_lMi+#m^zQ`3=jS_!6O0=nef!g#cZKIttCeE;| z*(%B>n%nAdwjI!4+PgGn?taz@xZ+mJ#S@7`|eiR36 z53m{PcjW7@*ZLQ20-E?5=N~msv<#SJ zSUqymkW|jrmHJ6pTjL+s1qP^0m^7!-;&!=n;|ZP|`{=vA>Z5c`&W^NkP;vWteDUrB zbH8peuB`gD_HFa}gcLpA>Z!}79*L0V$*na%lvi1$JvUrS<{_tqQC6uvP3dE?+oXRg-GxpHbkcA~-b;m%$W(g|K|kAA!VxN&;) zop}}utZfw{)l}VbrzO2Bo_%xCVC_c%Cr>-7to^~;G$6?zHD21&IbJfZ_T{ZUP6KWmewz3wL3H}F)`=^tRW9xD zD9pM$-+!)CfK|IiVd{o!FJ7luZCLJz=1s-dVH$M@%A;nhnqHKz!vdxswDMMe} zC~iOCFk;WQvnKA6dGbTU>Joq4?)bFXPo{dEs9e z8~EsxT11bu@3v>PUGs5_x9i)wZ0m(jIp+&h>^M{Y1R1=atYY`5 zsY6u3IN`(Cq8}}?pOr3G$XZWY{^b1#BM*^lOLa-zI^vZ zqj%qj+fKVyTlgq&vXJ`dGd!D}pGFLQniacZ&t|U~I;AT@Hs9TDyn9AOuB&#cr089> z>)a5<_xua*+7GZ(u6b&j9G`1i@WJks#akPrw2FuO9$C#8IdQ5?QtkEF{6X&zNt8#i zZOkq`T0TMLm!I0V^gRX@mwhbGS-ktq^>xuXWO8KF2laQKz2jTYtu1lT$dr~iV7=_A zcJ{79L+*F~uj5Ta4tTAZe|Tp5b2-NiGe#d5&D)_`AmcJWEFdm@pG;HUXPXRJ^9L(7 ze!a5wP|B#A5}is9W=2jv_rfUGQ08o(*K0y7t>OmM%>1N#U}pL!593$Sp&R7ZEE!hWdfz8s=UkAWM5AR*l|xEWZv=We*FQ39`mGcwHlgEajphcs ziz`|yGtaDF_GZ}FrpnK)mDfE6d|McqnV0WkWnyW_e_r%^CV$LQFDCt<%+80O#w$IayQsoot?NLg zt$C(RB|%Lk`Dfa%#G7QgO4!D{cm^a$jGAp6gNy<<0(U4L7e1hHm=C%FU8M!rJ%(pC~M!(oS zKiW#F-#2xPN~wD-F(vk#>hEREQ=1mMifFyK2LVw>42bD$E1V$8s~l#`m^`XIlaJR=hKb#Z-ia3+L1A+WSfs#$-E<# zI-(0jWZK3xj2m(A+y1UAHbT6Wt-|Vs!iGY|pJxVt*=C(HcjcxNtbrowkv@O!Y|v9= zzjH_yRoiq;J0rd3S^V^=F9r>}cYgp|YHRRKi-@@Ccakgs# z*U=snr`(7?6h`2^?%Qj9>En1LzPulOyaH{zOM@faPS+&qEPNcXKXPt`!=i@@yS{YZ z{2nFxlO@t8af@i5#N3d<9*LPl(}#T@(ZoA$JC3_aZM~U;l*Ov#d~!5{()FHxS@C?kRQ4YKL#yB4c=M~X^6H20;gj~cKe_lM zVEM0g@0N64*?##}WKEgZkv+w4#XP(x{q(cE`)F3`%LmU5w`k3dj9hs+GD^Y`^u}-G7ze?7Q0IwC;G@)pHfL`d!t3`l5f+t+#r6I3@w@!S@VLIvaAmhuxX= z_Nc=4W!{r)ezM zok+c7r~G%?x(!oGP=0*b^R@TaV_vBbA3Zwt>$v)rbvrr_y(-pK9kuAx?uB=4E4(jC zI(qUSwaf2&m+7>2X4L>6<>lu$FVf`&+`KCGOV%{8V7z<#@hFoMBgKMcD`#JbOlX-o zT{c(Iz$fkF@Q}>~xv|nIk7u+S_Njc)D&gN>Bv)ghzQOQA`eG{v57XpMOP#U(!ns4s zMTc>2NN?S=cSD!6&01EEuXRQGe>kRd z@#$hw^V^0qbN@Rx)A2u{RGLur!Cz(q<87h<)aJsZQW{Ol^U#PFGJmAU#V$>uSGWHjB=*8ds#Z0zpRbH=NZ ztL9tQefgmGyKdCsGVQlDUV~1yv7(G?+&75Dj+m3kRXBZNpsmq~3bRz#q`2ga7jm=5 zI32mUWYo78>#j#NXx8(}zYdvE7W;Wo$Xj2N-P7NwEcUqLG^%s_tT?|pcT!{5xr?0h z*=#>*)w8(8X*Jh(|dj~Vs}9C6)}xnoxa{Pu5XMSctt$7|MF$yNGMAN%v#3d2QG{jz5&^cT`x*=cFDUe?6ZVzM~rRr2ML^+vwW zW|RuGf0FhNt?(c1pL_G`;N!nt+J_ZXtTNdcHpBgmvs7S4KZlS(5!n){PO{PUljRh2 zAMq6p`g~G~(CFGa_3vnb4CST-R|qG|I1>)k@yJ?zhjhEtsS@MsMo;XhNe|E->i5Una6}94(j?gT5I~W z$#t+d?cAm2l3SQ=YMv_OBbD^oH*#9;#D(gz-pS$3;_6jna_sk6q;9K~aWwX;H$15u zV`ng=IQeRV-d^!@vIQ%%;%!fw8f>=aO>wsLOiopZ`PsiRA^Bx(X05nM=)HScLQWp# ziG?Re9T@ngYIU5Es%Y8ll1p-(*T)_Cz`7zWGv>uAWkqZ8ol$w!pN`jlv!2_(*k#_m z3rTBr)jt>CULHSmyJp%Vm9!}Fs?BG%r8gGZu`<)dvf=_mZSPkID~}Ga)L*bWp>fDn zgR44^C+RK_b~aJpUM>5@+}9@U1^>hY2bYRfNPa(r{8@c8jhQQ7>t-wkr~e7o+i z5mAZXdaiQvq4u+(K02QUiWshG96M#~dA_yHm>Y2yCiPQu%uI=Wqnj0DKHEDsuf(;_ z!;Ncv9v#XEaX6X2TScXCo|VK}nVUb}cy}&wpI)it>pQjZs&P*F>&qRFS5=8u7~C6_ z67fa%Nk79vpSkTXtjp$hBo4Ke`LgSj)Dgq?+wR-7cN)*FZBVW>lO30%ja(&xp3&PT`RxXwZyG; ztlZuC&{4KHMCzTa;b@h{*H>;Wczw!C>a5rCG}-X_OA0TQKHFV4+rGHU$+Fs|>imXh zfmypk&aa>3UcaR)a!vWn=CNh#?m8GeY+koN?3z^9Jl_rlr)S$|ciq?STlHanwfD!3 zsy2n!Mjo0py03>tZlCE^@=Mini|oam!)!RPSUM}&Twz=%Yo@@3t-m@!*)UGd*n0m4(_=Vc@jW-LVzjg_a9BXkc9ew50XHD9-E3(d@a>}`jR~;LTU-lD=O4}&cubq_^@T295PoIq^ z>YTK9X>DU2PrsJ#clJv3^ZBWZm%nW=RH&bR@6jVU`P}^%s~x@^%03!;?{dfNl!<+p z#yc$hZfK`AMgOH~%d+9_=@-`Va!yQ?#pXKvzl$u@^M$=aM7dwxBu9a_!Z_t|;X zhv}tbJ;Ty|8(j*I(f+MZL~2MzHU$Q)oj^gL6Nc6H{Snx8B*9(7Mp7~ z%*=JccYE_AH1XG@dG?dpa3`;^tI{D#Hn zJii(%b^DZx zAKG_A`Enuq`K=#u0j$NgV+XAHwKiR;v#o#f|NcCKY&=b_nK#756C7x}r{($cMV+%$7`n}f=p z{_mPD9P*xZf8@>kZKurL5_0~0kX}<1G&psX==ojxH`DY!#?;0B>F*z{CO59??lK3( zZ3+zz(Xs1pt*G6f{l{RJUrA0)!#fY}ynw{M3s=}S_wkeF?@+dTy88Ek;r-NSD=L%> z4yah#s{XmmcjtpDS))Q%_C^C<=oH1Y@*z6&(tDpyS50MCviLv zXWrqQzHN5nqiRC>0*@62%0`Rs>U(>Y7{pG?abF_3V!R@EfqV9sx7Eoli;5LOmK7Ra zbu_ncIxzbB1U*^r)WwZutaldoG#4ya9L49#iZDapsnlF=D54*2EcY4_6 z#_#KLJFjQ2{r#r+*REja+?)vAol~;&E)Vcsl`z%z!nM3%&+=A(eBV}_0RClUX!^~M zohDV)qB_5iqh|k&m*!ZW)xWAcY`=`nLQT_0J8U*BxFzJda-;R#rv@pb;!N**YX20~ zORkP@E;KkW$gU!J)`$sd{mNseA6!Zf!5dCgv3Wv=X{PtV1yl2z)e?2Fxf15WImf9yo)x#XuGv%YRyAnKlUgi~K(R#DJ( zPx$a@gV%-}D7&>sUngzZ?G0;&IHVgDoSe3kH(^A~0*RG_UepH-K1?RU+?2U6Xul;`Nw{qjV;VY(2)%a*MOU^F3&>{BhpB3@y12^YX?9^_O zON=v|m>oUj@zGadmx@2{d3rna@}#6&)kR^G6u8fGewNyJ{xX>vfFn8&=m<;y;eGP_xc_W>kU6g$PK+?G1I&X%iZgHP@Ovx%)&i!3N zf&9hARUU;yt{qIj{o{H9fBH1#bk+E;#v=>XZBcNjXuG=3F0kKQ+uIF&W_##h1P3(T=Nh*4kGXOv#Y9Zn-w{-eLc(;zE)ER&ft! zEF5ts+w=YGefw-GLaR--yZ@$y4m&)4>(rMoZt`*X4I~cG|Fem%=wxe>y1_8|bf} zr#j)3!;o8Mdap`OGze`!)#tWzW}?ctxmMa`sZF8g^W4XtbU9z?Z}qq;PvVc*RL#vf ztQpg%8?rTK%yJsTHqh47)}d!<7Hc5d5n45eB@`heG(@Ve_!e-{tO7XvgGm*Bm=BQI zBs{%;A6Fm%4q=`#Q!d zNH`E+1C$2-U`mA-@{D|u?Lt&RY=Ei9j=|O${0U@cB#K0f3eUmiG{ZcQTHy!QBm9Qa z0qua#q{1Z2EJs9&Dg@@kCsbi-@0Q;p$mgQ`LU?xr>le8pjLY{$`9@F)&R1zqnieJVCw<%I|Hw2tfJMy0xE)pnVciKDV3x=>q*{P<~^#{HKEaJ1F0_TRvBi z-})c)ONqe~S*+gttA+B_pb++t8>OD|zYWUwX66ec0mynt&=sPrkJLLmWVVRlZf5r! z5f*C5?if&1K?a9E>>$k0L$wWH!w|>ER7?P-i?|)w!bFYTU~2*Xpq>M$4^d++6aYzt zg(^-TQlIm|rx38mj0#3@z@{)O5||D-PH--P$sPPb&V~mtq4NU3F2&I?mS0P8F;*sY zAV{!2Fzo_=(9YB71~E0>0(KGn2?0B+ko-_^4AUL(2RSvagMF&)!S)sSgL*7r#{da) zxG%!$12^5$S8yc6;PA;&oJ8PjR6QgSmP8K}>PI)PiChsD^)np=h4KUbVGxMGS3Y}4 zA}qNcD3oW`@~?;p3tiOzMJyPwJ!w|}_3nwo7l3-=qk7?*fXe}o7NRn#^#RzQjyV1a zGiqG`xD(=?!t@E$JP&qVd(rRH3lBzmno$>{)&oFKbT9JpNZw}%U9JbcVIAm2{uq+~ zfw};WyDPoO!&h{mAKs#nqt+Lo4BuYl>wDqvdf^{>;a_^;V!*%9p4X^QTpDE}NpCsFGipi3U`p7adq zg^%ooYa{)~P#31wNdId@}0V)Y=Ki`}86ogyfH-3j=B`1>`p%-iF$dTH^q| z2l3k|{xLs~csLqpsW~6W=OWH$g9DJLxfE<~AwCa{wNMu$w2;@8V)VhvVqD zz{S#O)^tZJyIC$S+WLC>28_q%!$ZI`^v^MZIL7HlfgS|e@MQ2h1}iKC_><>NEAa+zC4iSL;M)bkp(|M)bTP#H1Mp1< zXoyE(2z?gyYJ`s$&yB|mWr1zDpC==OIGcL=z{SNaEX*sE=i=?=7r^ok_41;c0Qd>C zf(Llj!*?m2^F4d|37{z{Nc{mV=yg-02eR?ad+@l&U!7lnFQtsDnW8JPj&0a4D!gEfO9S0AACf z_d^2(n07RcamDB(SZgFMs0ZyMs+3URbhj|CzYeMcpQU|U~oL{K|O2+PXg-`E^KGy$27*d*# z0$a>SfN>lqm<`V{h9`lfhB#z!%*XOmdXb;b;BYB}Z_ zFdgqjPXR-osi&O5p&s z?_+Q{w_;w+;7s|2=n@cSt25*i8JwwS3|h}Zc`b(gV#Eb@qV^5yg|F|0=Q8v&oD}BGq?tWUqu|Z3%0+Q z;Mo2<1jqK@Lmb-4v|j-=G->~224~v8fWeveuVZj{uLS$&7=uq>@EZ)yl;=nQA&{Uw z6Tu(W6V2cn44#5G_Rk&EzJ~~o{d0og@jw?$XAvj;^M=8heo#cWBA`5cfgIbZ&frY{ zSTQ)${zZtB_WKYV+aE-5Y=0O-KeK&zG58pUolOkRtd|P9jwI`)#o)|(*)uq^9pe~$ z5~JK5h~xV12YE0ZV8}DanM(}LjGs>o&eX4nu4|$FOh0S(!p#|cEI0?ZqcelUxgPUn zz3`0;&eT)L;7mVPGC0%z#|&=BD7TZrne|d00E9py+e?+fne8=$!I^p%Gq^g?hwFQc z!I^qW7@Vo+DT6cp(8}OU`F_%r`Ty9jz~Ibs$082n2i92&^>_VVxEaAMkh}xIu^#7M zxEH}kBRydR$9{`O9NGwfSqt;{UgQrD99@pHjxh9?GW6sU^4R_gg5&yX$$*nVBK6X z^C?3f+KTyyUif#09&?7gkSsU=3F?>z{;-}Q49>JOh{2ij$aci>I9UXhf|SOPR|Cgb zKM&pag5@&xY(O0AX+?3nnc#SSNg?|hyY(m}?$>%fV%^33449@gJ8-p|Z zi-bHl86;RQ3-E{QtIXg`J);rFagOCDG31&0O?r`^%aCW58^quv81`&raHju@8QhW~ zUyV3!7woqu40$t#{6_|7)>jtYkA(hV)@urbGwruP9Qz0N-}wv<`wJd7+!=bb8TR-w z8>4!81pTN*_lhC6w5@do@#*o(q$G9Eu67rb8V8}E5(Ar~*~Yzj1{) z_7B!SmLbp7KcN?SOM>HZ%$lKx*)DTPdDM?w36AXvVd!Dnv!WOI1cIx;3WBtSp@(VD zPeLA-D}laGfNjn!R~B*7Z>j{xe$Zs-VV0{)$|FBaB{;Unj-iKX&)i<*{Rxi!5X{iS zwC4zecZ*vFXZFX(49;Btd|_}M;5%%;gd%JOdVFK*Q9vB~6W^CmW5_et^W%Dv&t=GK zf^u-V-x!>!ho?lDBUmR)ME>8|3qRBgzscZmJn=w!st||q!<@f{qVKyPHwJ&$&XWv2 zk-;A@xITk-FnBkAqVH#*erA1j8GHmok9RM89fLE=J&ibSFKquchCDMq3wx1&!H{RJ zb5zjxNThx(#9_Ud`t^E|U&N4S>W}M1em6s&ssCUv^0^Fo3x+>`^djF64G5(DGKiD) zHDJgy^@lO|6h^s83~t2WISkH>lY0!#?7vSL+>oK?ErT=rwe(OR1QM(lQ@jYwVf%H^_lHK34;b=HJ3ASi=?8f>ES?4 z!j%2vz%I7`B!e^KssM3ZFT8#$BX}UHR|P|l8SAh98iqWqGcNZT;*iZ?@UMu&a^aE? z%XcCU<>xWD*a&a{61H;kYFsqgn2e9*Mr6a{uzCb;!p7N$ev{ce-0Ib zg#C>5!{;eriljFJ{ZmmT5(u7#?h|bxxDookWIw?r;h+W5DS9K&zXj>fAb1F>?=^y3 zA^B2*r=j~P)dW|Efd|radLt2yTM{;XA>@P`yNuKJ2$SC_tnMu7>Ud4k36O z;@B>%XBFalgnSrkm#G9VLiSq|{3Vi~NAOEX9sLeaiUi+{>={k)Janu}a1k_KnG#%Al5Q{fd>c%-+)=3C z%_lhiUek-<@$~7eP=co*j{7UtABpOVzxT&{4)Pm(?hPi)$I^!^{JlTs2(um$@^_G) zR|H>#{PvOHd(rW4f*Tkpw@F;w_%w^U(OPi{QSfzZ@m_c;x@{1UE(Yk#Jf)^lvz9P6Ws+S1ThucdC**}Hg_&F78f{#GQ_5_bb_RK=_71pnTju#VrE|T{n zcoed8Il;RSk0y8yYWFP!zl!{yO7Qte&nbdGLH@r&@X4sX@Vt%dg}>j$-}_^3j?RBZ z=y`?4nHGXKA^jZ$hu3&8iJ|!f>yJnAEJyIQNY8MBABQJ`q(yMNE}25`Q^*gN1jqA* z1HrwJyeq-+!=!-(Ux@5nMew(X#}eEU#n}#mA4C2;L~v&mSLX;WgXFIf+=X@ztBm00 zcwQqo{+_sz;C)cP`#|uaXgusB_<3ZH1Zp4LzWDhDC4y_9c%DFTJl{_xcm!$}Yl17G za_14;3)$~M@SDh=!35um=7Ti^e~0=bpWs_jJMJX-3FPM^1Q$X5A(P;Ey?cY;FHn7N z6MO(Ven{}s==deUtIr`KK~GWKk}O-syEDr*Mpx>TqzOU7`3A+!SVC%69_&7 z)oUujvymM(1mBMQwt(Q&|F8gT@+SB%RA2mj3%36Zs@Hl#elzkz62Z@-dhI3nP!vDu z1P?^@$|5*kHxv-u0@+hZaO{^S1Xo1mHWSGfo`a^JBt|TfS+p`RnJDlKH&sc)5LH11Ug>wkr zi1a%Uyczi)&xhC^%mWE|yiUUR39x)0)Q{o_`9#!SI|+Ul#qCjoe@5f^1%kh!n}wB6 z@Fl3-@$*sGo@I#F6Y?>Lza#iZ#5)Ln1C8f>k)N>sCN%%a6Z|6b!w7=o`_*teohSQw?pIMEJA)OYOlovpMd2332uq%8$obybi9e+>d2od1b0X6d#D$lL2%rE zuM-^m@fN{xe|$i2?EfZ$WB<1k{2hw_-vr10ltAM*_VYX3jszcv#<$S~$K#1E!Et}b z*Qr=P?(a5){3q0}=l8<>34R;ZD}>;EQM@fDcqNMCNP=%e;~}5mo~XVl1aC$0a2RoD zHX0hJes`LXFF|pbO~|t;Y4DyWA@7Rp#LvrN{p^wS2@eVRa&-KX;Kxw89|?XO8T*Ie zHK<=mBLCs`3P9tv62bSN_EIJIdlYBW36AZwBe)Qmx`AC9iBA!HW zOH}Y~LO&nr&miP?pmxb6_(c>~6$F2P`q5K@KSjJ5ai|v7YdI>ni;&0V4n@ww{#=6E zR|9dZM;qyxO2}h9O9+m~u>gYKM*Vj$!LI{bVLFC5E*HN)d!3NSKEYkmh;2%)C z|0ML|_h<2QfY=XM|9JHL8|I0qKbjI8*K0Asx4;uYT8cQXSKx4(Zzbf9Av^aI^7y^r zi-bJ3vykAIP`|!M@C|7GZ6G+d{{z9VqPUVqU#wz3B%}U57;#)L{9d*$A&>1eBRKt^ z+=Aa&A~BIL22=LE;^3A`sb zw*L>o+fn@VLtk=Z`|*3|Y{W_X#}gdu$Ita)`Fc96SThOz_POCO96)E)X2wkGnzW$Il_u5b{|6XM+2qcRA&Aj_sL7a9w1l1Hr@4I?RLMvS@w6BX}L^j~fY&uY-0V zj{UY0#ZxxHV-SB#@FB=AErkAPG@kz`~VuS9TCTVeu(tD z67u->PgW4}$!HunN${~~{KwC=V*O^wZ>5BO{Ch0V2tD_a{`UlzL+$m4;1#G`RrDMw zE_Wbw2uQk!WB=ganc))h`%s+BC-@|!-Oz@AYuOqq5e35;M>vliz(vRZ}@k9oCx`| zX#DpkxI3~ll+c5JM~F|z`M-hAjYTvB{ zpN{7J!vued+Up$RxW4#zrHTo8T;E!P<9YBE!RMjz>Knm@Q2Yp^=Y(;&`1i7u5hwku zN$@gMUn7FMqkd#V@Y^VUmJoa$8V3Ri9*O)MNpSpqTN1&GP<>Mgj>my?#9@8mIDmg= zFO!g8g2vB$hCEaqf#Ro@kiU$^rPqYKDf098UgU?N>o)A?L8x3!#Bsae-w8A)4* zBsgw&78^7YNZ6ma-6hx*rsiwt;!NmRkmT9aMj(&deH4SEB?2X=#o%yC#O-c^IBu`~ zs9(?OMLwM1<59iV6MFFP@9iSwpP_z{PH;S)Um-YNN0ks9ucK-Sj@M}~5y$ny_q|0& zu&9LnEQI1s8gVR-f1gl|kjHjTB6vQkmnFfmJx&D2_3|Y6M>H;lAua^0h5Z*l@3ocS z?#TWOf*(OVA8}k?4pazIHNjP&07%aWJ)LM=`bx;-?ZgvA)k-xl|XQJ)KB*kJQ^Ad(kX&ZLG619 zaVRDX{_yW)-XY|1x%C9c<+c(Wmn$&}mi~7f!0&Y{6FeT(OM~Ee-kePEZ>YYG1pkW0 zZ5PCGy$WeFSj!1{brCuvhTyo|6oPL@?UjZ&)^CUOUm@i2_uwT2$KSu#5*)|pD}oO| z{iq#rT&^lAx9@0r2gmIaoTnWH7pP$vRpPr=@=A7`*351_926RxW29g$Nt|)@IrKal;Akd%LtD9T`R$HyGSAX zu|0TP#lJIwIi4?U2zfm32M`>uD-sEg*MVmUj@PAk2#(j!tpvyGcKrN2wi92EXh8rH z=Jq~?kFVd`2`;!#BGTPXe1ArV;P^h0J;CvP zun>ad`*m9gj_)^S5***ptRgtRkJ?Ufe4kcEw7dQI{;&?g@%?Ihg5&$)Aq2rUMpUTdN_C!k0b?eB$+<0H7VRd@aDCPV#(LWVhM0?i$$L52@dihdN=r zFcUr>KW~Zi@H~T$O~DR4pDcg9 zPapj~A0LO}^D#i%brb0w9fA|;Sb-qFC;QolyPps3hnM7}{ZW9CI^mfa|IPAu;PbI! zcrr*0==^YW--D)q%g4vbV5cYh?UDW1&(MC@l(-no(*T3^>);Hq57T^OdV8>!@^PI{ z12O7+T3qn?eLB61zU~)rd>-CrfgHRq5CS{>ESN`s_et4XAPX|G|H+{9ebG3NH4xRL z{%@V0{O61Ohv!A;KlqhBJ|Fw9r?O#L5mxXM_z|4|zZQhIa>(=H@}KPc0I{lO!%y(u bG&GKp$oj*}y`IjWf1Ez4nsF}NCC~pq9fQXD literal 43848 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 EA4if>QUCw|