From 88220d6a7dcf7bb91777a5fc9026e3cd157e451a Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Thu, 1 Dec 2022 10:30:24 +0100 Subject: [PATCH] PURE EFFIZIENZ und sortierung ist bruh --- Input/inputHandler.c | 3 +- List/list.c | 112 ++++++++++++++++++++++++++++++++++++++++++- List/list.h | 1 + inputHandler.o | Bin 6976 -> 7080 bytes isometricRenderer.o | Bin 3720 -> 3880 bytes list.o | Bin 5144 -> 7592 bytes main.c | 22 ++++----- main.o | Bin 2976 -> 5184 bytes spiel | Bin 31448 -> 36416 bytes 9 files changed, 125 insertions(+), 13 deletions(-) diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 2b5f428..5c63da3 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -131,7 +131,8 @@ void mouseInput(Game *game){ else if(inputHandler->cursorWorldPos.x > maxWidth){ printf("OutOfBoundsDestination Spawn\n");} else if(inputHandler->cursorWorldPos.y > maxHeight){ printf("OutOfBoundsDestination Spawn\n");} else { - ListInsertBack(sprites, SpriteCreate(game->textures, 1, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); + //ListInsertBack(sprites, SpriteCreate(game->textures, 1, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); + ListInsertSorted(sprites, SpriteCreate(game->textures, 1, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); } } diff --git a/List/list.c b/List/list.c index 5f0ca4e..53ea5d1 100644 --- a/List/list.c +++ b/List/list.c @@ -63,6 +63,37 @@ void ListInsertBack(List *list, Sprite *data){ } } +void ListInsertSorted(List *list, Sprite *data){ + Node *new = ListCreateNode(data); + + int inserted = 1; + Node *current = list->head; + while(inserted == 1){ + if(current == 0){ + free(new); + ListInsertBack(list, data); + inserted = 0; + continue; + } + else if(data->y <= current->data.y){ + if(current == list->head){ + free(new); + ListInsertFront(list, data); + inserted = 0; + } + else{ + new->prev = current->prev; + new->next = current; + current->prev->next = new; + current->prev = new; + inserted = 0; + } + continue; + } + current = current->next; + } +} + List * ListInit(){ List *newList = (List *) malloc(sizeof(List)); newList->head = 0; @@ -74,8 +105,31 @@ List * ListInit(){ void ListDrawAllSprites(List *list, IsometricMap **map, Camera2D *camera){ Node *current = list->head; + // Only drawing the Sprites which are within Camera view + Vector2 topleft = {0, 0}; + IsometricMapProject(map[0], camera, topleft.x, topleft.y, &topleft); + Vector2 topright = {GetScreenWidth(), 0}; + IsometricMapProject(map[0], camera, topright.x, topright.y, &topright); + Vector2 botleft = {0, GetScreenHeight()}; + IsometricMapProject(map[0], camera, botleft.x, botleft.y, &botleft); + Vector2 botright = {GetScreenWidth(), GetScreenHeight()}; + IsometricMapProject(map[0], camera, botright.x, botright.y, &botright); + int itmp, jtmp, maxI, maxJ; + int extraPixels = 0; while(current != 0){ - DrawSpriteToWorld(¤t->data, map, camera); + // drawing some extra corner pixels + // if extraPixels == 0 you can see flickering in the corners + itmp = (int)(topleft.x) - extraPixels; + jtmp = (int)(topright.y) - extraPixels; + maxI = (int)(botright.x) + extraPixels; + maxJ = (int)(botleft.y) + extraPixels; + // Only drawing the Sprites which are within Camera view + if( current->data.x > itmp && + current->data.y > jtmp && + current->data.x < maxI && + current->data.y < maxJ){ + DrawSpriteToWorld(¤t->data, map, camera); + } current = current->next; } } @@ -87,7 +141,9 @@ void ListActAllSprites(Game *game){ float movementSpeed = 150.0f * GetFrameTime(); Node *current = game->sprites->head; + int counter = 0; while (current != 0){ + counter ++; if(current->data.hasDestination == 1){ Vector2 movement = { current->data.destX - current->data.x, @@ -147,6 +203,60 @@ void ListActAllSprites(Game *game){ } } + // Sorting the sprites by y-coord, bruh + if(counter > 2 && current != game->sprites->tail){ + if(current->data.y < current->prev->data.y){ + Node *prepre = current->prev->prev; + Node *toBack = current->prev; + Node *toFront = current; + Node *back = current->next; + prepre->next = toFront; + toFront->next = toBack; + toFront->prev = prepre; + toBack->prev = toFront; + toBack->next = back; + back->prev = toBack; + } + } + else if(counter > 2 && current == game->sprites->tail){ + if(current->data.y < current->prev->data.y){ + Node *prepre = current->prev->prev; + Node *toBack = current->prev; + Node *toFront = current; + prepre->next = toFront; + toFront->next = toBack; + toFront->prev = prepre; + toBack->prev = toFront; + toBack->next = 0; + game->sprites->tail = toBack; + } + } + else if(counter == 2 && current != game->sprites->tail){ + if(current->data.y < current->prev->data.y){ + Node *toBack = current->prev; + Node *toFront = current; + Node *back = current->next; + toFront->next = toBack; + toBack->prev = toFront; + toBack->next = back; + back->prev = toBack; + toFront->prev = 0; + game->sprites->head = toFront; + } + } + else if(counter == 2 && current == game->sprites->tail){ + if(current->data.y < current->prev->data.y){ + Node *toBack = current->prev; + Node *toFront = current; + toBack->prev = toFront; + toBack->next = 0; + toFront->next = toBack; + toFront->prev = 0; + game->sprites->head = toFront; + game->sprites->tail = toBack; + } + } + SpriteUpdateAnimation(¤t->data); // updating z-position according to the tile the sprite stands on Tile *floorTile = IsometricMapGetTileFromWorldCoordinates(game->layers, current->data.x, current->data.y, 0); diff --git a/List/list.h b/List/list.h index a7e80f9..f808ca5 100644 --- a/List/list.h +++ b/List/list.h @@ -28,6 +28,7 @@ void ListPrintForward(List *list); void ListInsertFront(List *list, Sprite *data); void ListInsertBack(List *list, Sprite *data); +void ListInsertSorted(List *list, Sprite *data); List * ListInit(); void ListDrawAllSprites(List *list, IsometricMap **map, Camera2D *camera); void ListActAllSprites(Game *game); diff --git a/inputHandler.o b/inputHandler.o index ae05d6c5462d2710a9cabe48f39c2e582da59ada..16524a736174979d9f7fbe362420dbf33d387b42 100644 GIT binary patch literal 7080 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 TvrwL0Z>&oF{|yp2X|n$YZ^4`) delta 1262 zcmbtSUr19?7(Zv5Zg<<=U0PX5y1-&O691u5(Pnw*zEqGIQW=I7(nFRgL?mX5@ODc! zJ_;Wq78n{u8ScTLhphs)o>otLseGu=Fe8Kz`m?@s@3c!HLH*!6_dCDe_kHL4&bcE+ z{cA(sDw~5WBA|Hz;vynxl9hLja&Tsotn?(5?q~AV9IndBMEGEhxQh}p!P1E)bMmYS2??5*TY%t?oy%PLFADp3O#=>bb)L@b;xURC;wR-VK^6w}m;dDN2N zpgxfYVHvb#Yz97C3gG~4q_5#VEprb4$YeqxS#6n5K7}dTZQ;StVrtZ#QB!?hHl01@ z`IDOd)zr@QB(#}*x-+ogJTh<8nfK`pmlV+KwaI!@Ec$HwUqS!bCm`)u>5};Ipf~DWC`1n%3r30 zk2(AOC-7;4EJ{@t-NNokSN3T82o3f`1Zkj_KOEMdIx71t>%Dl7T{%dWC?VK<@H%W6UiJ#=t|z8tAvy!mKq9T5WDR2B&Ssv>L*;g4KS^ z$ipMG^5|@PdIa;Rh1Zs~uoB2%Wm{2OnF4&*xnuctgfIBJU3Id!zddyo10OdllYc zspAbj41%+cHbcGBPj5n>w#IRd02Tf86~x5?XcoQnJM@WufmrqO6_6C`Xa!K0-_&Y{ n?XGPrLRra^9o@;hfNL(FFv@QRF$_spojt_cMRXCcJBxk-JMWq( diff --git a/list.o b/list.o index 7533f361d9d330978851274c31276de85630e8d1..75049e046fe0a9b9673e20ec8189d026763eec22 100644 GIT binary patch literal 7592 zcmb_gU2I&%6&`y-a3OFv$c0dTx^2_Sgk+q>cj?7>97i%Y|EmdV0|*A_y5Cs@+W&hJ%&@Q%%l> zGlhFA4226!2TVPLiRf+(dO?-gO@P`i+!cW2(QaGCDw|40j{bl2-LH%S=K|l?2blB% z9tIQe3C^z$crqfx-EQg|(F8WD{l^OJopFkVX;7!lxu3KzG9v-ca0!a`{M>KZ9@{%F z3U>#F)k>Ap)P|KmXai7YGR(aYSeRb0;!ZO-^Qfent+l7U-P-U5d%n=Q?p$VrX zS4YQ%BuUS!B|={cD<|V@4Y;!2ru>n4NfPsNer)f>2J67xmo8m8TsO(LseswlL7-a8$fSLO(>M1jeyB9FV686SZJ#LG2n&IP z&2wxbV^&X>>=O;sMSF?>ybXc3Fc@3TcWbDb&^bc)Daawqo+7kLLuA=+ z5xRvCa_0!V#tMdW9>6kVrjh*9!W!>l$^c*NckT@q*}q0khLH~6yEq{i|KuYetC@=5 zz`z%*Z=c5cj}N26DUGw=DeaeR?z8bx0F&c`_$7O;^;#juWU~Qmc9v2r#}*r`@%9)K zQbL@A+beZO`W+6!-4YTKmAZqt1Hwm$V}7S&<;vR0Lv+kqJGHx0@h4L&=}AS~7;1Sc zZs3&>mZzHMUTUP0X&vJ{Q|8u#zbbxvo@pMAA2KRd8H~(>M^1-e)vyc(xwl|d5t?2iD_F)4F@Yai+mW-&wXW2$*2<>0 zhA~pnS}So+uMc+k8(29kb#Q#nJ&ki#li}-|%tmTgnKQNJxvaIn`k!huuyE{u$tVLy zuWD?pX+`@K8k}7fv-G-d%nT6~EE!_7qaXDMq0iouFt>%DNR9kAQVS9)6 zmKYslC%MxatslNkFtQzaBTFsoz$-yF_a9v4Wv0xf+R&DFn)U3w%=oZF-bO`xzrjWF zAJomFjYC9}c_ZQIAvt|mU1#V{A2jOwQEvkW79>a4k0=iGCBJQM0FH!_O}bXRHu!%`H;eWJ+(d7BLb--^8h4|7NU?rYg#s1HVJOFNv#Q5u^{FT|o92Fu zOxHn;pS@yG2VTCKpxR+jyUd3}(LS!5xQui)cr8r9K|tx_DhM#sWfcVLQwj%9au`s# z@`8>81kL!|8Tc5+^Q$YyGyeQ1$FsXo@tCnp>t>NJIC;0tD2JyjGtE9c--4Bysp~K_ z7egz74F8>&o3?BL%8kDD|4K!Crq75hQPre}>8B?#vc#raZd z8Ln)-I5>P$E3^l4p@RK1c9I(vSM{02;B|*lDc3zJ9t&zWcg`l=j`#L7zq0YA_LLC6 zY{z$6i03+lc&|h3zoQd%tk8RBP(Ld+c6NRx(URU#$oYlDhUEHW>zZ{1*;@C^J*~;s z^~rU21-LZN6NYa{o_QO$rUiCSnHbM~N^?+%hCL67hS7M#ZOg80I*e>g0KZ-Jjk2_F zj6d7hdBakBEY|o0NUA@@KFBxuqdAQol0f~(i9_T|E9`$Q?B6eY;S|fT|Mjr{C~-(L zd&Jd{ZD2um)%>B_ z67hk28AS;(Z8Xvm3unE$BL+*gBqmqw@}8KWvzJRua8)jsnE2G?Adr~g#Z)b{aFgM` zTzg=*;A0*|WetE@_9qxEHe0JH1xA5i?WC@C^uP;SRZJNwi+mC>eT@e%(9*A*i3 z1LYokwfxx!octb@_%dIB9aQ)a6fW}w*o*jT+2P*`weUCU;P2GIXY1e}0H>cXaKl1m zUZRX4{#xV4>)?0R!PnNozg7p|R0rQt2Oq72AFYFn!R&~i>=T<&bb4;acem#IUD3O7 z^Mf7jn|mMZ>gut#^=@nL*lhQTq0Hc5KHzqH*__{%_nyjl{bIP_k4OufawD$icX|1o zZ?royeNP(Ap1kL~{bHx*x(dw(?EAgUQ|*I;J;PqscSppgk^GSBd)dA%nc;3P|AgD; zi;b?|(+9=e!`Xg+SEcE=*@0cYpoKtvTmIp^H`p(Fdq;c>-`ltA$=;or?4TU6z0Wts zfz2*2Gvsc|4!Po67$xuBv)RoJz`km2&3gzvyC>}K>B|g;jrQCC8tu94P{z;ZbDg^~ zxdAt9iol=ra6jg@f||j>fo<7A7t=N*o$k!%z5Z+t{OU;nZ%cl}PY(~f9u=6MJQpZD z!It6s7`GjT&jbp$CsSGD+*cIxZ^WnZ*9k&2Kd^G?l0FBb{67VBY3DlBwVfA{XB6^H z{84pIMDe15-vk|P=Vu1aeW&pm12_2>4BRsKt~ysZt~oyo2L5S-zi8k$8~D960AXSB z+YOv+q5T{&aFai3;HLd&4cxSI+`vsc1L}NY_X=a&pBVV920mfnw;A|xg>(8?Rl|w2 zx|-PLJ+I?>&A{(4@ZTHwod&*1U6r)+Sp)A=xE@#Eockg;*NpPh2(I5vuSRgr1!YR% z95;ba`~Q~+pRrMvDhHzcl?vB>CL~*k`|I#`MEENe|NC|LKacQR6#qmW{vRX!)r$X* zI{aq!^w9pdD*hUUN8|0PgFmkpg8a|n)ARYZfq&k>|7PG{Fz^KG6#BzY%l)dNas6)T zkKkuj`#=QO?~|7!xPG6Ui{Sbl@_q!@?~o=Me5nu#Dk-%QC)f$O9v^j8I?A(& z_?Hx}j#olbz8e`=aT+?ZJIfUrWjS@x3OV}_FqFAP@%rwKN_D<`t;8f z?Y}NN(5dSt@7=46{~;*x=!*J3tMn75QPiXUKLL#6NA=|+0C*zeTvVS~SZn>~)qz_^ zKZWbhBSh=#^SI{N;3arjLmpQP%VUG@hNwPmM%NyY*w04*lT^UlufEn_zjb<*9L z_j#Z9W8RsaxxO6Vw7#;Ug2`6F*0QoBQO4ehl*a}i8f+e$%i7KSFI&xl-|EeLf9WJ? zE|J#E$1j-$dfH27VYXS=QEle&x4qgdY>Yr$Xy(lb$~F z&jmN+lVIk-V((pILX&15GvIT>u&sJ5>q!DMs?F7>dsmbh0%xcN^4)?ev^9EKP&qaq z(5kVe9!Na$yQ=J!L}5az$p4hLTaJLlyu4R>7|#IN(JXJ6_%e^jXA?-ZjqC$6@qCtZ zkDR1ECASNf3gjVLLIk9tQ7y;*GGQ&T=Cn+C+E-q7So^Vixe4EFtx$gNFX2D-!1=*) z1_s;>^8_Ze$Xtpxp*?wOLaT|NgTG<3aNuK}4Z}_-U4Eg8XI3g0bpw+X+QG3(Plm0r z82l0jW@JL!$vun<#L%UxR;sQ78SgT+Oi{*eJ*PDc@1fe4hKxEfZSp4_*BBASUyV_F zIq78(@CC0g6_M>YZ22U{wff<5C|@meLb?$mZ$ITB9WeD>5`H=hM^K9sFYZ7h2u_N*Yg`9|!SL3XW-I3s{^ zOrDJ1ZZ|lw&_;WczLsIo5$Ffnb6V!K%oY1_G{C@~88!3g16mw1@k<3`4kbCEJy4`j z*k{H<8i*sjWDfL~n0B!5+SC+%!U#oe_ET&ZOJurJ)*Ai3uGv5q#73i5^Toc}qb=_@ z8H|0_gy$4vuQxMxv6&sXJBIOTj89{HhPA|EYxMdSE92U>zI=IfMYK`Ru3RdHj4Ghx zq1v}>ZfBLOqDUAv25%KYzE#Mz67So>D)vPx7R{MeJqWT6e6i5wsBfAVd95-wcV>K` zsxk?Z&>N&fYo(XuRGOSX_RkWIc8p%W{!?FnfN-?0=;iCb@b!lYM_WNJsn3+-7YRpu zj9yY-xseleK%;o5ovFf0>Z?vvc^|jv{*WkO4%OT<|H%jdfVBXa5`DG*UfS6hD^?K-1Ux~aRYL5qT_iX zCOv$eli1soN^Q+LN!Q9T620*@`w81gb#iu7ha2FuSn!)jTicRpi#=|2xVH1qCM(nJ z_DE^7?I6KqpReB9kx2PM6P->B0W)qFYsw_k2{&nHVm&yuEMH_^7VX(iOu3A1$k}Pj zb&?&ei7fKimP}cgW16QLvu&p{nE^k?6ke;HbKA37%OL}-3}d(RH+_TNS%y=Tw?hJ_ zZAYK9#NQS;@#!X!_$LCFeBoy5cnH4~z{!{NLuVp2!h(3S*#CslnJfA42Jkrn{7e9! z7r?(2ICV5HvZ3}U325YB!z29{0yyngiGLKpYXbOua)3tNd_0oBMBp;6-1~-t%X^|* z!9`h^D{$&)?WF$~6+Ybw)ZSEZouiB$3HYIy($7hSUnlq%Likq|e!bw&qeVg^b7 z?8)7k-e}gbaYVWMVMCs*o@ct~oE4e;w@!ySeM_SJzB5CN_A3hc-AUpi3})alBp~`r zw|Rp>aW0TZw)DG%+Cr~mOVAT8XaZ&IxDrzZ|yYGq|@PvZ9D@kPv7x ze+jL|fb8XWC~NsnwOgYbFd|!s(qV` zuLM->X%|kn{`=_CK>N_^7_C43_Luf@{ilmfCT)Ufh{Wh#qByEO`Bc{)5F4a_anQCY W`70u$yJ|XnU0g^m_fmeT_J0FW6JZzt diff --git a/main.c b/main.c index ba59fd8..d1ed27a 100644 --- a/main.c +++ b/main.c @@ -36,20 +36,20 @@ int main(){ ListDrawAllSprites(game->sprites, game->layers, game->camera); /* - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertBack(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); + ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); c+=10; printf("Sprites: %d\n", c); */ - + EndMode2D(); // Moving cursor Sprite to Mouse Pos and drawing it diff --git a/main.o b/main.o index cf7d598b7a31ba1e49b376f492eaba0fac0bbd7e..c9cb43351500cccbdbe06a3c04448470db3ca98a 100644 GIT binary patch literal 5184 zcmeH~T}&KR6oButg<|DrTdSfdZlY}@u@fLo3{5n!+l9e^SQe}=W;5(eVOw?vXJ;*F z{0rK2+>r3#i}A&uhx*t=6Z?cfjZ_m&iwVKR#2AsF@u8JcZDU-|xpOZZhMmOdiw~US z?mhRr=bU@z{_iV^?vAohh)D^t$Ju5{QpRQ?n|d2p+gJ^&W^1(#w+2-Ar=&XZYn?iI zCss|*L4;4EVa8UmcmaR7rn-q$uFNNv5&rx^1!HO4it;5 zSk2fvb1%9}ps*q+-*YoB82S~?&Oi;cUCG;bSJXmCEgY*<-3rxxx>7B)M^v{X;yFxw z7Nw1Gy)eZCc(E>FEUvzK9#!{i*|9=mSxsM7GYjAJ3`W%1U!v}n*_-8WH(qhS%q(1o z&uzTy&P~2~3%s_QF3$c1ri<=xo2IYLp{Z!=T~McS&}D0?JGZ49i?U*S?454xOp3R6 zcGd>$pPijTkFWpRXiOxQ_rNlBKUXIogX50e4CF+g!uvuTe;`t<~;ri+He9 zeFW?G6DN6KawIMn;Xbn&p0~8QW_TwiR#Ve^z(hE4=2ct`y*^X>M$gS+k(c?krWT(4 z5 zD2bZLnX-6wMPecx{=EXML}fsR*Uv6?tyro$T=GSLeUiP}>J{c+v6W#d%)hD>#}03o zFe}~ZFuQHLF_18W=Y&r%!amY}J~qJcK|!808(t3va3z308o*-#ygz{J0sOfD{!##c zFMxj>z-I&aLID3Zfd3f4Zv=3Ba+VtZ+5p}Vzz+uS<^UcK;4G_UOeM`Tmg?;8jkR~D zdOJFjiT+f7d#pQ=VqIp&IqvQ8PAzL-k*OKoi0AE`WwY)~&S_6O?IR=N1Yq$IL$hOA z`qYqZHq)Yjmj81f1|mTt5hWnDQdYdCf$-DjA(VH>uWZ{Qwnl!r%O65nel zZX23o@cJ$@XV^~CvK>Qba15Ew36?N*(F%HdF8x+AZ5xKkvQ|C^A2OPE*ePRt(9&$( zD|H%)oe<9D;2;wbmWKSMaRzfL%fUyT7oKdJqTgj4&s2&eXCcmawy)V`i@YVQ(G?cXPy+DF7y z;s4%7!l`|$;5d93Qr%FA-i(_*aDEy)WDSj_~^l z|AFuZ!dD2#y(#0|AUsMq>L@r4Vkz-5Q*z^3M;nCPvAuj)YPK<=DULDbFh$oKjVXh< z98+w|E2OP#)-a*Yv>Zc$H_xG*181fv51Dyo)V4<9TpI@;jARU_PS|h&d+q+m-zfOw zmJ^@55v@&V^1UD{#P*a$hI4{zsBMFI$}@Plfh>uAay#hgD_=CYCQuGSLN3e@aY>YZ z5|NjTXZHwX81vuyH-j&>zhy3=EZfJmNX7sCtx$=qi5h{P68*>iQIY;Kk3pr>sa@e8 zet#c0p{c+BQ^G$=gMu!{U*eOXVEcam^TNMP8j9TSkE^iM{5Ofmjhttke>^j!zvQLb w#-^@{_UpvN;&Q^jC4PU5>7RQ*tP&dp>Gch+ugLGhQvRywzvG43`1Sk$4O+n&uK)l5 delta 935 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 delta 11385 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