From 471f0214a93daa59e21e640c9eb7d0b01edca693 Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 11 Apr 2024 03:10:17 -0500 Subject: [PATCH] v2.0 upload --- .gradle/8.5/checksums/checksums.lock | Bin 0 -> 17 bytes .gradle/8.5/checksums/md5-checksums.bin | Bin 0 -> 22147 bytes .gradle/8.5/checksums/sha1-checksums.bin | Bin 0 -> 26543 bytes .../dependencies-accessors.lock | Bin 0 -> 17 bytes .../8.5/dependencies-accessors/gc.properties | 0 .../8.5/executionHistory/executionHistory.bin | Bin 0 -> 77882 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .gradle/8.5/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/8.5/fileHashes/fileHashes.bin | Bin 0 -> 19597 bytes .gradle/8.5/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 0 -> 20503 bytes .gradle/8.5/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 19073 bytes .gradle/file-system.probe | Bin 0 -> 8 bytes .gradle/vcs-1/gc.properties | 0 .idea/.gitignore | 8 + .idea/compiler.xml | 6 + .idea/gradle.xml | 16 ++ .idea/jarRepositories.xml | 35 +++ .idea/misc.xml | 10 + .idea/modules.xml | 8 + .idea/modules/BetterGroups.main.iml | 14 ++ build.gradle | 2 +- .../goldenn/bettergroups/BetterGroups.class | Bin 10555 -> 1851 bytes .../goldenn/bettergroups/CommandManager.class | Bin 0 -> 3722 bytes .../goldenn/bettergroups/GroupManager.class | Bin 0 -> 6133 bytes build/libs/BetterGroups-2.0.jar | Bin 0 -> 6983 bytes build/resources/main/plugin.yml | 2 +- ...tterGroups$WarpRestriction.class.uniqueId0 | Bin 1940 -> 0 bytes ...uniqueId1 => BetterGroups.class.uniqueId0} | Bin 10640 -> 10555 bytes .../compileJava/previous-compilation-data.bin | Bin 35220 -> 35184 bytes .../goldenn/bettergroups/BetterGroups.java | 220 ++---------------- .../goldenn/bettergroups/CommandManager.java | 82 +++++++ .../goldenn/bettergroups/GroupManager.java | 129 ++++++++++ 36 files changed, 328 insertions(+), 206 deletions(-) create mode 100644 .gradle/8.5/checksums/checksums.lock create mode 100644 .gradle/8.5/checksums/md5-checksums.bin create mode 100644 .gradle/8.5/checksums/sha1-checksums.bin create mode 100644 .gradle/8.5/dependencies-accessors/dependencies-accessors.lock create mode 100644 .gradle/8.5/dependencies-accessors/gc.properties create mode 100644 .gradle/8.5/executionHistory/executionHistory.bin create mode 100644 .gradle/8.5/executionHistory/executionHistory.lock create mode 100644 .gradle/8.5/fileChanges/last-build.bin create mode 100644 .gradle/8.5/fileHashes/fileHashes.bin create mode 100644 .gradle/8.5/fileHashes/fileHashes.lock create mode 100644 .gradle/8.5/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/8.5/gc.properties create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .gradle/file-system.probe create mode 100644 .gradle/vcs-1/gc.properties create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/modules/BetterGroups.main.iml create mode 100644 build/classes/java/main/dev/goldenn/bettergroups/CommandManager.class create mode 100644 build/classes/java/main/dev/goldenn/bettergroups/GroupManager.class create mode 100644 build/libs/BetterGroups-2.0.jar delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/BetterGroups$WarpRestriction.class.uniqueId0 rename build/tmp/compileJava/compileTransaction/stash-dir/{BetterGroups.class.uniqueId1 => BetterGroups.class.uniqueId0} (87%) create mode 100644 src/main/java/dev/goldenn/bettergroups/CommandManager.java create mode 100644 src/main/java/dev/goldenn/bettergroups/GroupManager.java diff --git a/.gradle/8.5/checksums/checksums.lock b/.gradle/8.5/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..e97c5cb660afd48d2ce2687a760b7f3ca6a81142 GIT binary patch literal 17 UcmZQRsQ>-p7cuE+3=r@f06U=tZU6uP literal 0 HcmV?d00001 diff --git a/.gradle/8.5/checksums/md5-checksums.bin b/.gradle/8.5/checksums/md5-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..415fb83c21d1bbc330fdbf737e676e5994d2303f GIT binary patch literal 22147 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 G%=Db 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock b/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000000000000000000000000000000000000..28674bba8be8642fadfc103eb394e6ccfba2f5d4 GIT binary patch literal 17 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.5/executionHistory/executionHistory.lock b/.gradle/8.5/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..d9649a5134e64f8b825d441e5a0f3999a6f64222 GIT binary patch literal 17 VcmZSHW zC4z`n0>mg2n`{{$3rs#T17q4QO13dUECta75kL4?MVNTk_kCy9!~d7%cL{fwr}y0N z?&10u+(wELc+BC2db9A~?7|)tfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-* z0Vwc)DUe9thzq(Ifz+PaS@MY!~9u2ExC+om1YH>OGE+?p@VmE_~atQV#kQvjECJ;Yy2ZUvPpY8S$uW!Xs`!D^pxu z9)^!UPq=DXK>bS{KLzu@3IB9Pt&8Za_ywQmGU1;Gr%0Phy4(=o%q4th?gtZD0m;V^ zkKIoA-aF3?$@S;f;PVF)uCX)y>L72jARc2OJeSjBl1iPk5RVEcoNOt|UW`72H57mX zPyh-*0Vn_kpa2wr0#E=7KmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`% zPyh-*0Vn_kpa2wr0#E=7{MQNu(HA74f0%##7JKM*EtR5y9}|43xjt_9Z&He~J7xGn z*ov?ECA|&!x8bMR7kI<$@A!Uffh4r-of%|!Jx2y_HQU(t-hr{|#KMx%0@L=PGnXsz zjCN$y{>(PQb{ALd<|}_#X{v4wotSRIGYXI)o@5)k*`ZdGpE$09CsNn69r}wgj0&eS z$Z!Z@8{E@Nx`jCtdbe7cpU^q}05S%~kl{3sF|uyOCc~5|edtza#)&;!Rmd+I}!$yy05R_iDnEg#zqg@ zxTMo7!}%8?uicxL*G`5C7{idabS*L{A=|iFE=W=+o45T@R8sfkk!!wnhW95NWC$GD z#+0Tsq&e#2Tv1iv!I|PN`Zq?;IJ!!UXD}O^r({0Es4(}x-Plrd@vC~T(lTww;qS&b z_R^0hJ)`ZK5gRi0jQI?D#@)9YhJ}4U9hH@j>z~!V`@qjL+&W|23BMO(eOhepV@!UC zTcx|wez!+c*`SSAT3h*uu_16^U)94om&T{th7XQpF7t16mY=g4@_hVUxvyXw9TM%G z(A4h}M|b7$#O>1aRzuQ2e@~dja|6AyxvKrkbqm>Ku{eqh6`lB{h3s4gJhA-w$&fGl8O(PSGnH!&3KX!#8g0gB&@k7Hz$L6EX(z KbLAb$7_R{{Sv0r+ literal 0 HcmV?d00001 diff --git a/.gradle/8.5/fileHashes/fileHashes.lock b/.gradle/8.5/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..48559ca05b65b74ca646d46334f8b776e8c1cdeb GIT binary patch literal 17 VcmZQ>Se5r9apTEH3}C>d002Pk1#Y8xovLc7Ef9ck~?Y5bI!*;UmxFp;QM^$d4}`6&g*%fb6)27WzOd)fv|Ji zXZ%I@=OzBnCfY&;Pyti`6+i`00aO4LKm||%Q~(t~1yBK002M$5Pyti`6+i`0f&Z5R z)+-mX1-qD?s=V9{VLt+aB)GDnA0&3AFN2S+j_o$92HziqI;m&bWIRm8I5i*e@Q6=* zcXcMGF-}ifm_Bxdz}#r%A(g#>cK= zoN5kuvY*eg^LYpSyAs-F!0!)ARPhF9|AqN98sMx6%gBS)v-dD=QV)2VBmZmj&0Px^ zH;r56cOz6LA5AhbPDug$G3yNb>s}>Ud=3ln+_6Gir6?0&jGKD^Ucy65?@8=GgmE)_ zz{~01C+hhfc!2vUl8;0k%)L@*l8}RB~fvGm*gQxL1Zvn44A@AQc(qw>fy2L7< zA$3mZ>Pljq_8Z`}EMsO{)iD8#o96)jRBUc(-nB0P_h(mm)|Z35yUa)N`TBsr_&8|6 zx;0>jacT_U?JfPUHO%FD@cDlNKIOPzmpG`1_oOpcc|_$0_IPhF=2M1OdHF`=LXC`1 z7^iswzQFJLUf|Z5PK?tl0bf)21%6yOB<-I=1ZecW4WAox!Fr6-asl7s{%;;(wr>W;DTe?TeB5@nqvv=b#!bQi-@d2ho|Kf5 z493kj0WQ&;{$0INY9_|1^MFe!kwn;(f)_aNSmjS2{_IU|ufw?-;Cr42KNXNsF~a97 z1FozaQz(0-`U%db0XMQ+xiOk$s_;1ifFH4}-<_;|B^=|FTELGTj3_&uc3~Okp@5s4 zH1Uix+9ok>Y6-Yw+PM!+Vljs?ZsG*ETZy-iT-EWdI5z_PyxxZc?~m*c!RK@V?%v-h z^gFq?1miRnz`ZW@$|$|l%)$Kvz<*#WxVPKO;(teqBjCPcyo2%Cv{>A~0Jy&rv3XQj zE&-q426(`90h7(~ZpXNp6yOXyqk>r0ISZWs0XX zDu4>00;m8gfC``jr~oQ}3ZMe004jhApaQ4>Du4>00;m8gfC``jr~oQ}3ZMe004jhA zpaQ4>Du4?7uLAp4c1WzeMY!*6DX~m7qgD|)XK`Nf239EdiDc>jHiE4@h9tk;r#fIG z^{9$0#eH^ojj{J)Lr;Qyjy0J_ZE1$`Km#^%i7L{uv%S(aMbvoz`G8xnVLK%H;7Wtg zzBp3yRCjJ8_et|LN14q|FdiOGQ(llib9;V3uM{@4%C_*SOXf)=g?~=V^efv08#$W$ zHCr>Qc{eX)hW3bXjA3KcF)f;$|5onM$1uKdgHG-f!fVb$U!E#2dopd#x>GTpl@g~4 z8~mzU)6HHNEVFX27rzW_v4ssM$HnC7C`r?o9Ep}k7v~&d2)W$ z3^tq-96Kj>H*q#jOEQA0E^wEAtU1#@@t>mg_>*4{hb8)iW-so9jbf%7b4XX+vU0}; zvCSquwcd8fO>ok>ztkm9G`}A<9B%l#PsQ2`Wjncc?~SP#gAKzOIq9U``}fIG z0~8+|w33I7sKXYF-<5>}Z+aa$&VD6Gh7J1G4%521=KXrs`uBZz2;YW{`g_;DZK!27 z|0nES-}vW17ubl7^mjNZz|lN!=Q35^IU}EgYCdaEE0E9lWpud13!af#qhK~? z=#%_tT&wsm#ib?K$miqS+3@FyqtAWqW1`b~x5I`M^OAF`Rqsd?i?eC$*UP71qe@*{ zGikeRwzLXD>V0xcPprjLP_+mKZL4aEO-h z1~y(6N#_y5gCgaspT`;JcW!_U5lXq+$d{cTPL2O~l{ZQB3)uK5I>os`YGaYQYF-R# z7IN38tT|IxZ@C{neKTeG6G_L?N8s@=Y*Z(xWZl#WeU(J}qjGUShr5Pg&5XJR%OQ^d z23t2U6MML#%#8W*7EPkZ)!GeH2k5_Zm?+8wI z)#2M6bhQ}+&hSy}f9vXISCX?mE*)&FRPAnq4IZ}%V(oIl6OY>#G?v)+MX=%5@?^@T RK2KDiE3;t*yx3VOiU`a)(ja$DAh6w zj2RX=VMQ~BL}kRLMkOQ~q{1*SDzclPn^`eprEQ((L1H&D5F&nqbN1)E=lr+x+2z?T z2)PR;=_O3PG*e5gAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0ucCL1gyy$QA#(H ztIJ9))NVmot4b~ky*^8!$5Zu5`dB=`&kq{Q4L|Nx-#sq%itpT8m#baMSe`-Z#@F22 zoL}tY^;JHaw{Q; z#aj!EFDlE2Y2MAfG;63a+*Nx=>c$4{8{?``y*X~9`EA@c&5G_{GO^Q3^I`70t^4-$ zU3q4w`5x}}{MEycwZ;7ZZsC3?ajK=P_tq<#4{@)oGktZG*l2(8B=?$;SikMzjrG#J zSjyeeujuIh7B8TEZgQ`i9et + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..b77fd0e --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..bec3022 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..eb28ca3 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3b1ee13 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/BetterGroups.main.iml b/.idea/modules/BetterGroups.main.iml new file mode 100644 index 0000000..bbeeb3e --- /dev/null +++ b/.idea/modules/BetterGroups.main.iml @@ -0,0 +1,14 @@ + + + + + + + PAPER + ADVENTURE + + 1 + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 254d995..f4bbde9 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { } group = 'dev.goldenn' -version = '1.1' +version = '2.0' repositories { mavenCentral() diff --git a/build/classes/java/main/dev/goldenn/bettergroups/BetterGroups.class b/build/classes/java/main/dev/goldenn/bettergroups/BetterGroups.class index 4b49c575519bef06184f49f4a3e83ef49457021d..66e1de98889a3570facc90efe195c21c74e9f368 100644 GIT binary patch literal 1851 zcmb7E?NZZF5IwgA0wsJ^J`_Qy2(&?nh#yE1DYc*&9JCBG{7lOwL`uS>Y5y=hfN!HS z0)x)@06vuC-lS7fXc_#o$=&SPv%A@I|NQ;=8^AMY5rhzy&?KW7EetW+G1Oe?;J|d% zqe96rE%l3D*41?~o8FnBWzn=ucZne!Pi#wQWf->!DynPZ zv7uYK!JP;sLPq*#pmWB9@-<5F>gAASd8e)b-<21E3CL=VzAsNGX zz|dxJH*H&crok{5PiTR^o%h@&M|VxzQuoXPS69jS(G_>H6{8H1{J!q4+RmZww&Eef z@bOk^?PS6kJ>Jw(JDJZX3*vnvlg*~qGA9u{!nlM98Iy=JsQ*dn*PL}7)1sQ^G`K-&`JEN@UPPStfPbJLBB%tRE zJ%N_|2!?JNw6B-y29DL{s;H|bh%&##yo6UW7La5Z31qGpPkZ5T!z_~CGG%VLMQ=g@ z5Eoum6A>17lEMF7laFM^(3G}!IYXCbTKr?_Fvp!OJy#%4RI~GXVOw`hajrO<+07EaKuPr61Bx{$PJQo@w*5E8=L^NWwav{2d!({1VqqmTdy7#0trDrpkxRl8* z(n+N!6JF&U?7J8CnymON>=Ieo55OBN(}^Kf1%IVPf-I%{g0w>!+D;+Udvr%pen37) z?Fc80N2B*^jj0#E3+rWoY{FT%Ja9;DGugM#l%Q@D@apO3~!MkTiX*6d?Qc@mpu*F?P(Qjb-)8x!LhpFcX(e1oVW@euM1xH H>ih5y+l}PL literal 10555 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 F{{W2w=Q98R literal 0 HcmV?d00001 diff --git a/build/classes/java/main/dev/goldenn/bettergroups/GroupManager.class b/build/classes/java/main/dev/goldenn/bettergroups/GroupManager.class new file mode 100644 index 0000000000000000000000000000000000000000..2de23b3d67e4d5501fcc7ef5f63c932967171048 GIT binary patch literal 6133 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 Bhq?d& literal 0 HcmV?d00001 diff --git a/build/libs/BetterGroups-2.0.jar b/build/libs/BetterGroups-2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..479d970a3179c94f21d0df9fccb1d2cf19dc5c76 GIT binary patch literal 6983 zcmai31y~i^+TH?!G)Qf_B&54Rx;G%*0-NsGG?JT;?hffqNlSxlNZA$sU46hLx3A*~T%ISeZsg z#_H8MCb?HO);17+6Jxj$yW#)UE7DEd+`{8;9p1%Y{2OECWN&Wa==eA6-KV&{!CSpQ zv1S$!h=r?_tCPF4+kX)0jbuKa-#ouC3IM?TPejRosmT3Hg$-

gJZBxu-s%hI5S- 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 B4VM4_ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BetterGroups.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/BetterGroups.class.uniqueId0 similarity index 87% rename from build/tmp/compileJava/compileTransaction/stash-dir/BetterGroups.class.uniqueId1 rename to build/tmp/compileJava/compileTransaction/stash-dir/BetterGroups.class.uniqueId0 index e063ef1786ff4519211ec21bb9b9550a97fd4f32..4b49c575519bef06184f49f4a3e83ef49457021d 100644 GIT binary patch delta 618 zcmWNOc}&l77{_1F=kuj0nw6%0MN6m1m~51+9H}gHI2(Sh)MA=rlA~fPOH=x_Or{($ zk*nWUR0|7TmTPk)EB_c{;}3u3n9rZjvG=p*^{Pl~OLgu2*V+L@O7C6QXq%(b7G`w| zlO4m}6CEAiE{;K4i%f7<`PwBVfKg0gEP;$Ch*<=aObFS8a)5AZn8sD6bAt%(F@vYf zBXnVLN+Lr8z(G*-g?g8#R#DhoJ=ya|MiILA$t|Nr zltx;UvY11ql*48@&AKwi#)S*ZVgA={pY8p<+w*kCS0^|P{O#%iLS(4TDaxyoEx2%?i_$G3#1A&{ zi_Icz5i8rojqT#e4)JEE1d=Qfq)05gB#Bf>BVDrCE!WAAo9vOn60&5Nz4DoC`AUwm zlBb-=S9S`NKL^x83RNgYDx8BVl46y}A+?pmDw!iHlM+=*sX9rSs^O?=`Xcy{@N0Kjfkw z<&yrxWs5UcES@x4ylAon(QJvL#j=*x_Fx|`<=$rG-NJ(oQ=rq>zC$QoMrF4n&0aIP z2N&)!o%`5$&_2O$xy1IGkbTB_zrh2z8J9MO2xr)Md`2$MP0$w<^O6c)QE4)s<~0qx zp~>XD!8>mAp1XW7E2ECH{$tYNs0xUdHpfUnoQDl9D@c?_<0r~voTU$>Uk2nU?*9N* C5U6SZ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 6a2245ba28fd3a9433dbeabdb47ef49b3ef68151..b186f3f8c575ce12a9786cc0ef72b51cc828a816 100644 GIT binary patch literal 35184 zcmYg22UrtL)9JYsbgfvi5WAiQ3w9wCkt&JU(EtHMNgxRVc6yg0#YRyn0wSOyDhi4y zf?%U5O+-Xd0Z~L0!G8|l_x*k!A99!5o1K}RzO$i{^vT*3oQl(MI?2aIyq`e|u#-93 zh^0~{Dbz}=REp(xa+#~M0wZ~{NPa_Kut|PHUm;e+*yrOtzGbMSEtokT+pOdmbNLh% zlE2K!NhGxyM)DU)MRsC2l1(?(9Nfn{+@Nde^?3Xg#c*S!PZ>e-C7=vLmLZ8AQ|1U? z&7a2Jt9ZRUcf?4uQJY5NWAL%KDn5?nBa_>WC;3~sIygv_6G;Bfj;?kR=|qyRy=cD( zn?&+~kI5vzp>N3~GKr+NafXDg9q`>RmMSrIk}vVeBM`E26w6`Qa1soqaE6m+ z2xjtU;j?koIivvVzldWhbKy;?&Coy&i8BOsI1DFoNHgJvLz<^MpTEEi*II}#!lx}J za1wcl<=7IEufjuWtpV5&_e)7W`$S6hq1l${&Rk9ka2H#V50B4c2SngzPN%9-I+CvJo5h+E^B5Mb1FDc;POA(Of{a|&98x0tv({p!&@er)blSK3@FV{6<7A14NZkU2SG zwxmFjQZ8{{YGaN3Mo)6Zf~_8%!EaVvSo7A~&e(b%DQM`ihWip5^x3phXd8H0w0u01 zLmOtlLW0}l4!Ei#$=6jWadaa2No5j+SV{^dumnk7Ad%Y2kYIJ^J*PF<<%{Mx+8+@| zb;yjZo&N{b7A3ao-5@9Pt2AviT5FpxG`R5PLItkGUGe?68_7p1R=Sh?96V%li3hx9 zLrA8pTzr7!s}#E{v4f-#xk##T1cq2SiVu+jfgLg_j6t!B$8Wmz;B0D)Q|j-Q9}_DN z<417Sqog1^LV!ddR#H^GRky?ZtdB&jYWm{$?c}e=$U2^6Z7;HkH(ASvZ01YG{m8gK zndC?4j(Y%^6fBZTWy&ED!ve{Gj$Gs<2Ax*~kxAZiaWEN_St@mPbPOSrygWkTR%|PB zbyT86m7gt{yl*e`q^Wlrl8X->Cu@h1^~1?{1R0Mc<0r@@AJC>Kc)?C4vvU+jlS#gI z3Yip(fhX`83r}1nU})sXxk(;#^ZuS&-)ER;4C~f7bdqd-imZE@jGrOnJI<0xp<=1^ zK9N-E1WZt1ae(yy?&E~eOk+yGAJ25spOzlw@7wpW1TvmT#;2VllLGdO_ercB z#ZuJj-m|U$Wk=zhP zWsILW;}P@P=Wm-4-PpS45?PQ*=FPw^1JceCJDCzu7HEdJ+HT!)so=n7XMeZsEV5oU zS(roKc!i8#1(4SOOS_5f4cV- zOKNby-X(9_ZFqj?zvs5dFT*vdX5WEJ$6Y?S8$3E@L~t9vLqp!_*du}(!qZ66 zt3|W68Qv;AJ%8m~6HlHPvm=jzB*FKQjT4v8NY*X6zi7e_vTh$)_a_$loBblGwU|&=>==a<{J&dd)gwP2LJzwc zYj@({CePfdo)ld#ig1=U1+cMNjw;31#x0zFW4iVD(4RF6H9CAKxGx3wqkuiBCi_!J zfkV#R%2gpnB^FJ8q!Vx4?r>dn$sta1Ie;Pzr0{|$M!^(qeh2|i8cKncP$;qE@af?! zM$7cu9(ZByK^H$$UY)tVR}n@r3#SMoC`RGrNEjlM+MS?)sgX-Wj*Y^a$nE%M-vtFh4|Q%uQ!K1wDE}zY5($c%v@KXaF!2`I+Qn{?dv{VzDU8-DEN_d3MojTl)G9JPDhIBLkg-k`0sdA z)_Y?mb4^=m21WN0#rz&Q6PPHry9|HbozaWb=9Kf@%IcEkDiN+TwIZ^B{_Owgw?$8* z%tmjez7b-3+>D#r*P|SY_7w_WaR{(jlV;^xEIiUVmusjWm~Gf`m4aWR;JE~M5-8V! zR=L>4Rjg0~Q*5@xC0$GTc?;QwuiW`DyfP1Fx$)mDHi+{ue#E!vh*?&1T5egEO|861 z;oqX*`4s#%1=Q*eaC#r1Dh2Qg#7+=aDX~HdVF-y!WPGT6w`oV+;NG&G%QDyNFS<*? z?@{m~3a)zp@6rq{eK9~$g17)WHA$N8BXrk>d|#NOu#Y>a`hbEzq~Oy^U<8;FM;j^P z?){Y*Urpn)U-w;AIrU=1BMLrSiY8e|+NM@)n>nENpz15;kyc9Kmr?kSDR?=|RY4gF z>;O&0kc=s?ClpeMO#0s!PXQT1e;gr9MUJCX{m07E*omesh6^5LL_VXKKBw?rP=wv& zN|0Hx$O)?gbexI64!L$o>>afJtiBm?yPt2qtGSwj*AQ&31%Aj~r4SP;dvV5n#w% zr8W|&T@#3e%pKiWw)fA0evd7xaUEl0H4iU%O)+bx2;Wff77G3r)&ppL2a+ZM%A|y! zYNLRu6DvjU;S<6$C+q_d0H2S@h&|Ej@wlX4_oK_+A?L9fty@uT_pF?^v+kds7P~|E zy7K6pc8b!bsV3|9Q(Yqi^Bf` zY@%p?rI>u92oyaa2!IB}aD;lGiB9zl>EmjAPSt1Cot7rv-zmn{y#(ip$Wa3#$M~kq^OfK+ zC#Qu`jl!vV5!B7UDUkpY9HPWlB9@;3gk|z5DkLgkl0=RQ^lW;#cV;uy=cMVkY?9B& z>}aYWhKk1m!Y2W`txOJ94m(AKRrUafow_yqEMwN0b-s^_LY{|Gbx%_*&QP_C&jLUz zutE^S#1XI^9bskUNRh5L?#rVoV>WL!kY%{WiQ=ik1S&6)%0EZtou`^zpl(f~@{+0i z6sjdJyR|%}F9i-qaQJ;6&mYW70{3;gxsb-HUd9Vx+IyfuQ&!s-C?(G}Pc57Uj zX!dK%#~W0Wn^gQ370;(agnXMyI&K4|PcHLNC}ofkSYmeoUzkz>`G(jA@tp#@#yXB( z+;DT!@LzcBlme`F?$0TGyY9h5D!+t^KY}+Lu~LFZHezekopb-4#xTv_;rprl01A6w85Ms_#ZObp zVIluo3@Q4!=tGm8it+5XJ>O1>qc-s?sKO^y^QTn&85Ms{&|>-m#AW|KD~MGB0b*y@ zzZnJa`(nhRsqYJnGCZRPmtPa*g;Y_&%SjP^rIuQ+KbgPu-jhA={ToHqR6z|@yOxT- zq~fZt0EPk_rHw1tK&%e9Ih6X>!#w|fi?-S7)0>uCdQKg0c<57DJ+*;qP(p14!XRsR zN3;)K=|#s+T%W$%^bf0c+rB0$|20*>Zzc!_EA|GM2J&D>gwHBxr~=PDMUfZnH@@h! zKDwcWiod1e4y{yD2$8Nz6bi7dU^q9omhM|{n-*`@IVSA$&IM`jsHSaH!EefY;FYTt z;W9o@NnW;SO#EQb2UYRfz0oN%`?j2V)=t&QqK1;uWNwc4%Ziw?g7ec4#y;Cq{E;gB zL^br1^EU=Avz(-H&3Ea_)jz5DFDgE}A6RblH{k;ojGQv& zkEzL#(?5>|8*0zKdFVG)XMn0bNHzIG)jCEKdeU^gXt*~GA~qiyWI`f^81to({2hm4 zK|lD4@T)=OU~&i<7$R`Gm;1p(+@hIHiyqFk+UHNh18BHvAdRRGSUbRcsa@Iomsczw zm-i~NjW;9xdJv5tOxwOXghs@$j#_9WDLnf8uh?z3N&7q}tnfb(O0%#&PWvY+TPi^( z$D8}E-dPJ@(ps5~%a<~63A{l4dW7^!Yy#`5&RnQaj?lSta8 zaB>X!1k3_yFFMET+d*SaF5KH#cpzg6X=fCTA5GJWq3OiZ%udqqQ-Jbm+K{X$hDtfs zV(bhJbU^<1R(Y1dRw;@DM%aj)!G^}e6%mrSE0OLgQ|8+Xi<=_w>j)n)Z1bFPch3ckz^;N0OOYbMsOj2lOsWki|u|R1s(pm;FhP4t)2Xz0Y{c?$Q20Q?= zhmzs(!s&~yX+N$ionf)w%iu!AC7K|U#=A@tWYO?!8t$3{OQj(632UZeSKvnGDz_G+ zJ+oWPvedN`%ucNil6DOqTiL^O$lJ1T?xP!_8M`;Cn|@tVwknsVb)Ck0 zLnb`kfnMIxVWB~jznq;AHqiJ!BagN*hIWI1JX9#)U$40svdi7o>4M6P>tzjrH)%VJ zZxK(OtR!Mo^kZYb+NzuP^2}9)+N)Nt&8P8i(+pB+cW4lKJAp}p1hN2V{Yy3xF>TX$ z?v|-xy{x!T)E1u}cD;~>-=#rpS_>9x!gj1EW_= z1KTgb9>B`VM2_h8$-S)iZ^xFG+P3)7thzebipsEp6_BCp7#i4PX0=Mmnze{|Si{jsNhIv;C!? z>FgC(CfdZz)q748yrA(biSd|L70BVg!--@WZ|rec{MKHX#JIElzygV=nx^_uzBq4gMsbI+}4k4I(+LfsiZtPz?sf?3^Kx zet#9ZQq_9z@acC@oelXlc0|@!6%yFGY#*cK}OyQ5EPJxLpt6Ct0b`zBht$2 zG`B^f?&UQNdLgGe4t@b+&!)rStn zXxR|+ed(YX#1*{55Pq?XSaPSjexpT?+jG@&Ke~=T-7J8P2f{n8R4j;2n5=)i9T;cL z59f~g&f<<3+!SBI`aT#MOxHGkKt&g{cGV2u@aya34?PpUkMmCsqM*^LX$Q4m?HGT) zuv2Idd`TySj)&60!W^eVyf0GjlcK)k2h;2vXI}9sj%{9ZW6O~+I=)7Ver#QMaL2uC zsn<@{Jc%oKZxl|)Bk1_JNI*n3WGLLkRwrOfLZom)$7xM()4Zz|^~X|1R8A;VjiL*q z>AJ@KWT0$~`PS0shq@=aKL4Uq+E#BILpO<~<0t9(DS&nwpxKL+R&tRAdmNC*gN4RAfF6%f%QAzG)8`XmU}py^;O0GYbM?F zGTk(b&da6?a_CyI^egbXv*ap(hY-tEfn5X0kUPpj#B+gLQb!N;wPksZriS5|VN;fj zKh2g|UWd|S9t``N+t?z<_p_ti7ap`bxxLZe`|P&58}R(*f6r~uwzy60yDo(Uh_`>M z8~a9U$t}8ZKAnG?uE)OvYwGAKu_*u^ffa??kxW_$vqCV5ZeP$CnOwn794X~^#oW)0 zyGz%;N9PsM1^4OvV!F`-I{uK3m(X$LBRW*1{xMTxc`3-NBe2HW11kffhOQ1h9+JkP zLJS0epg~X4CKc7iKlgvm<+b&}aYc0`C#JwTR--H?3G z?6QKWKS$>+x0}bz>YUO*H*cgH)zX>(q{InwC!5zp^+e^19h5X_7w zLp2?^MX<;vIiZ$o)+4$$c5Lo?&0Wje=?2Ch0Xe1E32h3~*0?RN^FZ?1XiNtV52z8WeZG2rha#(@-9jva#ZcYf$y$nevNF67eP>;P7Ttx&8~M{0C3QyNDJK%o;I1nPHZ~FiBQ7Cf=0oS(U@yG!#IPX&+j1@(ovh5p{`Q3r`M8>RtUtUwVD#fkfhf8;DMNt{B< z%3PVlFfOMLLmDfirnBE3rm5IyzquE2V)qpWL?c&$grUF#NQk6Ad@&(R^}Ph- z5p<0q%w_PdGx&K7;~Nb8CIeT!1yebRV3&oO55&026*4(dEYP8ppZr9odW>4EJ2Ua( z=IYxFi#$d>9X(EZr4yf1G+VIob>XaUChB(>W|6c4SY4=R{oN`+k~7lSD%Z}`*{90x z_Vu+DGE96S@j=LF*|Vdo(TpGCjrw<1zI$_*!RH$yQ>*(uAztSS-x<*=r_8))a*ttb zT?7>TO;l{rs2#3VdL6YNH(xHvtcY&Ca-U&R%)lQo@P`cWJS8wOu|r41?BH(B(2+V@ zA8i!h_c*XIpkU|C()*7X{89$Li~&0j*iu8}XE9K4Lmk_7KyAet&yktAj~T*pkf;h! z12K4Pu^dPrH*<;0rmKdo{v&z)?U!>ro-nk|P@lq5$mKFOWU+p8+@cRAPTC)LTs&^- zQu~Zy@SMSa!7#04YzkmhF-TrZsu?72D|@Vl0p=2RT!waZAtq(jFZ(sH>8R_3DIBZ( z`*}LGK(D_XXC7+<8hOs-Q9=4ikk+qmV zX&I+Ot)5}rzz}qk8yTda|MobBA#D?^XiVqPV%?v8qk={{-)Le8Uo$q|q&5Si#6+zO zmKsRhX#OH6uarqmFLYXqxlb#2!{E0tjNUT%tqk622877(2vZ=kX(P~cbhIK|jN9tf z0aN@7CT;I(T5X-$JMuka>jwtEoq>O3;GYOv@|n1KkV@>#qdr z#Eu=Yt9_<%yvM{yUf|k}=Z-4R()zwJbUf*2X=pHQse1M~b!^i9(WJ<&wzGN|_*f~5 zD=3?ze#%s1{nFw;W3Syjx@tu5w zhQ_SI6Q^caM%;hvzNye@_E>+WP5@IokZBUc)Cy(_Lzud$G+&w@?Y|m=>&qbat7lmD z#!-RqdNb+^4bU&c4bO~19;`fLtz%w*4;vrKg128bmRL(M&vsiN`YWlT4Dgwd@q2Cz3dbZDz;kyy^SeQsT!s9hJ=#<}h`yF!8HQT=gs&w&e#HC~=fBdtcjq z{k!vPH-@O{=3Zl(2GMevkdhF2hyv*uEK!MlzWVgFOQ)L?nkU}9&J?6DE;Es{>m>RD z$+n=8F=eV1)OnBdm}WPayqipmTTFv`T0W5Z?>0g`9eYbdM?c**aJOQA8W#8RV#DF$ z1-F@e{!1Eq@G#No?!mlUuJ%=i(mhp-J4`_VQ#YJk2mpv(G{U38Y@W@HhDr5r zh*5SnE8w;c+TWS(}{9FJA6Y|d)fvkg=Wu!usM36FPOTOOmlyF z6>uLyv;AV5<;Y@RNA7{IC!%h*bk4t_w#TxX$**AwW2lh~=v7#>m}@LpxVVDlb|N?- zprDqCzhvUm-a)R->FhS3bc~H|ap|0})P1A;6;tOoxenk;6hz+>s!sd5?AOS{RpI#` zSL|JIFt(n_Z(s@=nIG#PWWmzkyLo z!n_9hHx5(PFd$i548HVSU3A=!fxMJrPmMa|OtO*bT+Qd=f)=L9Tc%ktqZMq3%+ccn zaAou?Lz!WIS6O%NaQTL#KJS=@ZA>Gm%n}$5ZCdnE(Y%8v4{FDs7Vn_7+Mb(Kl=y+E z)y_2Mzovf#ZLqcm*C~^u!BZE0cw7uzlk)O%d2J@e?GsZglJ*&plgok3#yNidVSUB6 zkEXtB?vHQi?O?*DUMG_j{Lk(kp@b<@Og34qPq0kx(X8EZ<|o7E6L&C;8SYz0dn>E_GU z?DMgA9o6$-)HkMH4^!(qq0z@FakM-#dLK0WuKapyA8*&}6TR!+1okq8KbX3n^ghsa zTU&4#;O2IAT-kdj_QN#$-Di6;CVsd7$u!Sk{DN7bx{k6Vy)SdbHKHS#Bg4lyj8g4q z@_#c86$6COcvwLOdk9^PVU|2NJ9C=lFY8SW54x%bnZiFz;W5m>6T`hQ*z5Dgh}8qb z_>umd$jG-lmsdH=oE6*cdGJAQ#K`?Vn7J>e=ZEq9F}(mxD-bgeCkJ8RYHW$}BdBCB z2D^B~5`@5o#1WPZ3&DQUkyh)Qwl!1ZC_#<0m#QxfGYQ26$1&|jaym5(gQB~$vrMi; z)RM<9BFD&X=*l(OPgcFk3disW_)ji@Y+Ao?4RfKx?wHw=Z?qL347G^F_$M&ED2)G` zf??4B13E#7t>J-3mTOd|%*gPy%S!3jba)wq;jtJVPCrRdCKroOVZ@%S$k798x`-)l zI%3FNF|X!DRKwAOJ(k&I)HdgwIR3&&eqkYP^j!L|#iud;8BBN<@{xk-^0TBlu|esCS@^RNpH%kPI$F~LQQcbkEw!Dwp{tZ7Hzya{%e2hDHn zcoCf6H?1%o!!s~^+9iMic{dabp!kxUD7{eotn)LCa%;*n~vmsYEQy9utvU5 z480gE%*2c@V*+6ofwg?U1XgDlS~(zmX<6~n-~DlWlWu2#MmA>JP0wYbkG&^rE~R}~ zFY zTeefGsgV%zspGrba}0lh;i{DY25QlAiIpp)nMi+4*st+TTiXvbRaY;YnV(aISu{|p zK^2DrPBh(ic70?^^)&jv32VtcugBJ4!di^?5)<%W!CXWnqfkn$iF9eo;8Lkt$|;-r za)Tu;*=`T(FynemuL0xrF|a#y$N-OD^35CN_ipv30lHdm(wBRUn0XV%dyVNfWBmKr z8(2C=nL@0NwGfkwph*y|%rrOB=I*_@Y-ywOch;qOZ!xo0%7P(N57lL)XJ zR?{5{PSeKJDr{!Q=)Sh>#EiQz{0oMU>jq2|jv!8gn-fB`|totr;R8ctL#*}VCwo@oR*rw7yjju{uxdNHV9Sp6VSBlgeF9({dY zwC2E8?}L|)?zj|`--j9e#I~f;>gc}!FT!6zn2&T0p4L12cFNijRrYtX<4qL(V6-qD z{s6%85F4UBVIG>R4M$G5Pfwb2_m4$o1R0(3`Wft}_Fy~J>_*F8OO571Oz#h-BRIx_ zghXL2mkfnq8_*NhlK0Q+XD6+=*B;(g@ocy!3-@AyX6}-r<6ANXOIA`ch2K_2?O&Mh z;LXB)SP+ExvY|x;W;_p`~pW?-Bx8=EgzLI}S<cQhN2`BqWa=G4Q<@}LRt860>v;EY+8sEP*P6+e8*{dp7YUyHupe1^F)-x zL@7&8oeR61=&XC9^Ym2b@gKuko2?^&c2@{=q2mGCrBP$+<@NeI6H7ZTT29d(<@h)f zhMf5SLu`=Y$zu7lgx;dhFOAmTHqAAQVj1U{(kr`KmS@(imI4 ze0&niESY7T!opKo_>L0DA^?<3CQbXxT`~G@Qp#t|JXc23xZ%H|D^Z%x0-xK4q0cpS zJL5hpqE_>=PwhNZBUM8Yk&dKoa~c*!JY9Ccr;fBSgJp7wWs=Dx#@eoZR>8a@O&12n+4^$ z>5HXk;FH;k#CM-vb396yw@y#GfSX&0|Oz9B1$1crB;{q1DmgH%%ZbdcB&8a)z-DJ zEZ(xrTUiG0SWuP;p|k-D?WC}o_#Q6AK#lYRP($?nBF~E<&RPR|j|knQD?3cnHoS)Y ztpJOhk4?@K>^CMJIWlG1_I8%;M;5P(j&)NJBb)DB{~>&=O|Ew zk&Z-$J^SyyPpvO1nA9u^E24d2@nh-T00J@sqBjaPDiRX9{bH(G=D%2MJKhWX%Ch*z zGVWpF-&we7FR+zpsT)cVe-MoMd;Nih`lZ)rz1tP_wj%kN&|911e;E`IAM+xnAz)Io zx_5`c9{1UOEW>-WDmu!2!xg8gXDK$MOu06le>~tP3u+-@Ow^%xtIURQT(c@PWU2h(a8!dH6d)@x}M&WOkaWiFrAblu`azx%4_HD=R2QhNb zZR#$)J^$7q3mS2@1~87XiLONlPd0JF0-V9o+AY+!a~s#{k^IXd4I)o@vA5Pxz2STj z^lHQ7)~gN4HEZs^_Hor;8SLiPT}OIeXv!Sj6yW3j)|YZ6ZZ3k2lz^bMe6B+K2Z~j`2tt7s%ENVrvJp zxBRAr07A~NHQh{wGGpE7@cgqAyKN)YcFxc}^(j4+%|FiO*VDq-e^ml@@!n9;QRU?9 z@iVX3O*Hi=+A(@OE1azz!8W@|jf7E9uO<#006P2E-Vl$)4;|ZXV{=znx=`B&)m&6n ze0fRRd)0sbRn+NkbArvwCityJnN{;?!o5`9(+i>P<&*t*edzAv?dqK-ZSmnV5AV0gfm)$_iMPB)v_cK*77?xYyDc`V!LB-=cIaSAX1QGgPK&1s+u z&Mr8fVZ+9kEg~nRMZZzzsLbs(-Df=Nr21L5aRM_A*exMSmMG(;J}LOR(&+5i)i0)| ztY00^79_BRjpPl900tsGG19!2dYxjMMlInsy|h%99Y4nwo@e71*tlyFK!I~ZP_as8 zBBss!0qddmC@e3i;gQufH}moHpq>t?Yx8fO!d35VDE$!IRG_)mz=S4W+qEk0sWjCT%O=L(yD zmCdWBL2($$F~|4jEYMbS%Zm+l!5Hc7CNC&x@5kiO2O|{Z$$qiJGHepCYiz?@wh8|Z z6%_5E#_mSDo%bg^>Ig~4O(%W2&KBgcb#JgY-eeoSrOZa}>^?yxNi*!)5^?=IW)9-DuYS_HgtltAK9MZuQ#lF?m} z?cHoxf!!JT8sN7f;$5 z5NZ6FtzFK>E7%a&L7DssVHlJmRNk?sCOG+>zu&$Gkx$$&v_EC@pRrAzv+);fs5n=G zWW(_(;v@%F#fE@$=(327-guSj*hbt%cOHw^#4mhmbc}%<#w#9Z=WjYw<`fzIDeTP5 zYPN1C3zl_PPwgMsVRF&3sl28mH_A@GqNBl@xaJkd4?m~o_uu$-DeiO)8?R;KFWJyM zT~2+)CWS&E14Z7yXMm(gEmII_Wo|g(cc(DApXMD|$JR~2)KTy-J)T*ci^;K(dk-4h zU)fR521DJzhVc8ZSthd5x+P1BhrPTuZh!L}A9>2N(T!|KW||1QBHRBrI@S)q8o+6m z9lKw=cm?uW`d~fMDXdhNJid^({d>ap$&;iQ^xMQ;qjTxOJ;zvnkFC9rSFh1 zJc}Ks$Bz2Ftb=WkMeih5hlsXe(%GNS9p1uq54wC=-25T&nr;^x|H6hNQV{kW*}C(2 zXW7=u)&)1_UpYBtPB&ZoD_iFxIhXYf#0e5p;L}vS$?p|Lwqy5Jzj@#FDTdgjE# zX?@sFw$3lMaVm3w1-c$IMfXj}>oFy3d@e;FmF8XSXY+rv^~>1vzwNKXz>EZr|s zAkmezN0&HnE3LL9J*rktz30Wjy*aQ-J}|V%5|3AD58|(_5yQ&YKX-5rlBeLOJ+x4z3!; zftE$NjA+P%FjS=8!jricA+Q3ot($ zNM{~kD1W%<%A09jI(+O)yNxTpyM0==YE1%1*PoThfnwU|c%CER z|DY39ogF`YZ(h}|GCwg-_0o&8j0+r#Bo3U0NT*g~up_%ye=>XT@rI+`6KbB0+Mmq9 zQ#kmvR1VaNAvN(7) zNJtJWpUBk)>^`)qUV$~2$>HcDajN4g2LkZF571lj@XI4sG}R|?bECE6=fz*+7>z7p zqg%!=b_e~SvOJ}ECix4+xfQiLAO-PnuTdo2dd3Vu6X zaK6hC+~aI5;_yNt|DuAM)aZUk(|yqNK69(u%;3IJd+u}KyqXmKn(G>HqB3g0C}pxB z&A{nxF~{fu$M_+~tb~I<;^1RTfkoiE6e0q1Y;qZpI&>%2ME+VDt2gfWupw;ktZ&=u zDY1_^o69-IzbThlkyI4=<7C-^VZTD-e?BglO`o4s!4W*+KvnH2$cM~b?Dz~m_rY;! zG~Ur8Ki$Y4mz4BOOVQc0?K#Kb1;^+o7E1YrAx380Si5-NoBqC)J-X9-6Dm1o_gGa! znraJZKurVrY`8OLpNVjW8(9*o>YtcY%`w%3jJ5RB+}SP>DY=KHzv|fDsu5em*;>ol z^pb27;-(>m!aY(svK}z+_L7K^y|heog1&p?ly411xnE=Gq=*s zo$o#_8gzQtgx@NQSR$Av?bMR&kG-$qoDda=3 zoD`L_zmZIPMm`(8bw%B)le%kLIOcCT{8kSBj)N=PKqBE78iWu~)Hw7W7WJPS)ScJh z-x;hoHr2+wZe!~OjSn2-5>7h|2hzoGR8o#ybVBd+<&C;)ooC*5MW6QiBbY(D6vet2 zWn`>Vi}}=%)V{Lbj`N8FO`%dGFLq1w2f~q(x(Gu8Rr(tSV~z=~+im)_ZFx^U=1=*;(eCE(x+sM4>YcU3 zfpRwS<*Man+1}#$H;z^hN6Y#uk-a z^0%vIj&Iix>+c=*Wbiiuci>-eHfYpfg9lYj`Zm@6@|^0UyBh{M8*edTbDeg&Gpu() zyWi@0-II5!@7wx^V|lygEY9WOqztghg!i5uC6E3D=CazUIOz%#{q>H8iYF>%8DtGs$A#S! ze=gBuPMoz>pyUdzCtcstchPfZtbNcQu{MAUr&Fb@BCj;}Fe;)A(bS)8jJRJCJv&ZgKO?aycU+nX3Owuf+q zp7d;~D7xrB?M~~_D&NDB!FA5z#@o9rpbnhfr`xKXVn#(`KHIHDNH#hZtjWuh=Py4kYZgK&7*HwsJbI}TuPg@+od?N3Q=jt^xn>gr+ zO1I$p1hd_XUC-|}kBvAJ&qA-xA8KndoMo_C7VWioFeEvFD@f$>&vAKW6gY|qrgHbP zi%lGkw^e`WBVEri2QHoG3NCQ@NnHM{WMBg5KnZ^}- zrEf&p0Rs-4+3vxe+nY+x{rWODoePFairO>Q=5BVHzt3od-E?7PuZj`s`V&c?F)uWH zlit1fxzZ~)GPtIfxJH6^j7*qfs1>g1>9b$r&}&&5D#y>cbid5F%+=50YF}lyVcA^b zydfNQ**S^f_R}ur?o#&aiE&M*8yIN3D1dCS(BJgutEVo*YAMTexNzuMil)7u_2&My zn8Yn3#koNdS2kba;#ax&v};^wa{u2i5J-`8cX7fLKgE&@i`~;(V@!H-xfa*CTljgf zW>SU7R(u04h>DW}d5m|Djy#;Pse*1jIIe1OQWzOg&Nh?{P8)X1b|5IVA^VQnO|Aj| z7Dy$W-j_q~9_(d|YCG6|vTne()4^xX;NVPblrI@SrfU6x% zjU`8L5$RmSgeR*8Ylc7M?M~Z!SN9=Tw}fkC{0LYi*$++@614uJ_QY|M;&GGCL#1s7 zndPNi=+Tp+ZziFJ^WVR%a!I+%qa7>blySG_P#*&!L}Yxm`0*cnNoYV_ophnVZi zxq1~`izi(CDHqa4N9@^<1`{sxIdL^~3>&@9tnHooad1av?3h^EtqZq{Sm@$8ksI6N zYWXtn)Dz3}Pd$IZHGjaVv!i5ILA~@PS6D-R1r&-D4(RN_$%3mR-%{5U#OnnHkEopb~FU4>CqWt`x^F9tXbIsmxwE`F|V0Vb0sDUCYIKH=ppvWB2 z;jq%a_Rw%Ir=2S$&#}jcTDgLET%B&{0)Z^xKy&8V&%-LuC*)bpQnJaU??c_lI{+r%)wZFLdS}AJi_!Nrc7PfpPdek(~=7IZT_upLI42C-D z=%7Eg=1rb`>`Tz|xP~S80M}#?4ALKvV~Dh12T5#mOa+!1PTl_VD?8WPXB{~{)8x^u z_HV1yM$is;st7+4zLc_i^UK|)%v+X^Eq|(I2e0!|(ehS-O=QeR1@?ab*+NEF4W(^r z-dnh3a~A)3<&v?em5vSy=LHg7A(C&YO?teyX<@ zq}`>WpQH@e%^$hL*X`pTl9*cD3RHnD^&pl1HRRc#=7Wg0BBgeP{nny3_xsf&f>q2z zRLnzF%oLBvXSuL*w$?MR$~~j|Y1HV`EC2W}zjs`PAEsikIb4Ml@=seI5f!MQ5o`A1 zI}1v+zwoY%+I(G^7olSCjXTIdBUMf(9JX}!e6ucm>41vZ`3DnKR=oedp#0jR0^W~h z3(_LYBUSh(RJ8suTK4WD%@qpAGz~&A{7N$)f>J@;E^+>JDo!VMxTmR z5x#X3n&k zcjwQ6+dnx-O{ebC!YhVvmInAfx#w%OK3;`iNHs*{-IJ$G?=E@j!gzE1OiF_!L4_Yp zhXU;-_1()_D?f`<`p4ZqQL}b!qKfdGijaR^1zfUN449AP*}I3Cjc8vu%wf^yX9YPI zRD?+?!ekXZMFkR;R28D|KGZG*Lg~vzGZ#Bzt0o^yvYY4tW(Ii%*BMrmbP znR#(6P!iK7D>buG%c;2#2SAh=R8$lN1!Nv&6af)I98f?3#Q{M?1(Z<{f1h=cx3~BC zJ?ueI*l!#QW~wb!`!zSH+gj;{I%k?0G7e(TC_zu{2*lh1+Ms)y^qL33-Dw+O0# zpu;Oq)SQ3vmT8#t$Nf%SiIOHoOXIt=G3dPKrlbX5AVpBUseJCx_IDe@eNTQf?)H*{ z#Ts?f*~pt0My>idDzEipGnCq$i%9r&X1(MIl1%fm^M zO|oP&uo}im)i_6WPSo^{vA;Afn|wFsUWzm$&%6(;Yu&+ne~U=@^z-*#Z>)N|(;PE4 zWM=8SRB3#go+^v7Vlp!HHv`FnU?CP2KH{^xy zTOtpBtvet%Q*w;vvM^c87XP3oc8t*Er(GIUqkC=l<&=~G`z3qZyGFH3(UfAm>}@H&6z-{-5leMZ0V;^Pax{we1X*O-B~i*qFVTxn`Op9f}NM3Ihz zcq=%?Bl-@_&^{{>4sw@kXb<@M_& zlEX=9;wj12zSMfh9a!z>JDM^)0Qnwu_2{I_m-akaeLmIJTvI%0ak(_>v^4mPG|9e# z*nIIqLnT__t}5JQrOqAF=chmBtr=SP%!LsS7b8QeB>VYiA(DH}XyIzI`Rd5zE1gcs zliZhfr3vp9wD9Mo!Dq3FSsn59kq=hhwly{%`(}F6@O`D#lEZn);eupyQG%&+Lua^z z$Ml>f$EK9s>;4sI_&oIJ{69yv_Itro_?dKuBb>GSLAzc@{hM)`1C2=#++nc z<;O+0IzBnZ#pm$CMJo#jq-UGd<5Ty~xclyFXIp;H57tH`bX=BfYbE;wnmP$N)P-Nq zzk*SPN3e`O$tI`PNA3U1(c$l0`f=p;yTj_GsaK_m4bsf*#=HC-4dmt0y^(XLeCQfe z_Oy4w?dzj=T$60COEYgsQyV4Qm4+tF*mBI+_q2`hprHO@EBw^2>D92`UbcCAI)5>< zS(`b_x{L$%W7P95~J&-Ci45YvFU&wxLaXZyUPVqjXC97vD}^Jz%Qir0=vf z^B(GuES=KeJR{iyAC)C1Y_5Cap=*O?I8MH0`0Tc1b4Rl2k`So4=BC&V3N@{W-23=*Ums%K5)Q{NQgy>$zRad|Y@AZL+%0$5{7>#lllExvEt@{r z`b}x@)6I(aqq|22v6W8p4BM45xR!S0tp}x<119T-JzOqN*s(^ob3`1k!gYD+ z$C)G+U7o7Rw@|i?-K)p^muuX_NO`KSw9-_Y4T@ybv59J8qP1H_6y0VW3?RU5V4LI^EMWeO&n6 zsLd|T?m2>5d*S%Br)EZM3@!WXul}VQp4}|l#cMl7mCKp%$?N@RM%{=y`uf436?K8~ zjB@i9Ja>ULl{MnujT6HB;t#wL(dU5AAG_Y)Dv#g8Z)A55RE?bwd}ZHxjpy(~ zUk%$+eIg)8p157Mx7{HlPJ^SPOXhyLELdjie}-Zf)KbPiNKuDw(>^wBA) zha%(|d*!K-vQ3n1^AS=CSM@;}_23Ive~U>xF*xg{a-u~}Xpfe0J>4Sp%l8I{x~ciA zrrq179&vK8JyjOUoDn_=6m9aeHWSHv9XzOR=Gn0SQuP>-O z(bU%`;MUQ8@$!4~6EIr;(G*y>U+;2!;>k_RPrN*Dh{JoWb2<`b9HCgGc18r6K7QlO zR)6OY#*FSrcTbY-lI6jjX2eU?p`SeLdFt-89)gUAD=PZKh@72Gj4Y z=Nb*S^vK{Iob$tEi)Pq~$Des4?C5RTBTIJNFAvU^CmxU;b7Y5HdB%1_9xYkiih!FC zj_DKh&rlX^@EGUXQ{ht%zBqsWTaO-fUUpEn$)_Z4OhtJredNegC|F#e_chqCRZ+{EvO3vkGO$B6)DJfs(+{!y?=6e4i`C z?_Oa}- z@0W~NT`5nl*7Z^61djLqpx)!p{KVORjrsYvkSf`+hKC1U_Q|p_AHV$DGYJd(pJ-fg zY4BOu=A4W(mG{8sOH2Cby=)F1{A10NbNo7Pd{QmHe_pn^fJGqV#=uKh-%G9cxF86D zQ*{2a>bUgR(8|CMhN~+NXU|NGomL~yye!+tmL`aM)jOteU~yE~*|%~P5MBZo^59gZ&FT_;bnziv<~4-ffu zy4TI*18;ZyyC!2Qe?_*b$GDiT%4`GnAAD`yE(L34k$Nm8TlehnpXT)`U-4a${kWJ0 z+1^byB}WtqWQu#`Tgtij2p5|qioY8+ceW>eRmTqyu`Ze93ORy zWE|~4$Jd$em8W++{b*R-W1eScW&BduB2Tn$#Ts3-;CtMqxn|0%OC4u_FtO<4M<#Fd zFK?4A?Xsmqem6{0C|HBDeo4c!(pHSMt@>Ty>M^C!)r$i z7n02*<_Pb6)-5|`2=_=f&i!HOSGXzjsBHWsXxpt{R{nc^+3P#KOP!Rd7zJ57`VsZ z&+Ii|qS_Xwd1Tr9;=IGlY-C6~=%+dXjE(+E;om|JRnCY=k4~lM{qAu{;#+TIXD05YCDDeuX4lxglIX6%E zSJ25$IcDRzb8gBc55qbI_9CuH8MtfI?1&HNES=r)*!C}H`d@HY-dnFg0d7!mqU5_@ zaGLrD+**oc(y$svC*+-`d)Gg6GV1@(;^zE__3Y~jThkN$G#)RW^( zp33xQjhBL>N7l41F06c{`jEb)>|nyQ0K>elrsR3vifxwYL(j*>Hr(<9zZY(h`+lrF zI6!wk;juJ9{pzc_JI3X$!@GxQ-un5|iEsNV4h=d?+Q4syEG;Yg^Nn%YqrUI6E;X=F ztLmB)&Td|^@cAwA6TZ0mWdFDP6dQj9YdS!IdA4*ua$Ad3cIdmMg(c(Oozrq}Nnb}_ zexovL{wBPiRV=-Xlz3an8&?ND>-q3!)3-ev8)kIgtT+TJGqxy$n@xtT){bb~A+~(( zQ9fR(++OfazYn(guAlSF`E82Li#Vm$_piMtw`}n)-22wcZ-$P!8l+6H-LBxyxi7I- z11HLVQC}GFW0c*fq0im^Re$f^>i05tC^p~X4!l~Q&XeywZ2QivfT)>Ax1Np$c{{K$yvD%u{X|55>DZH+{^+MS|#6 zyIaAfBaNJTqOx?k{oHT=Ne8DnwBi-|p`azt_98@(bPc{yC2XIFn=CogDs#5!B9!ramBD@{x(R1%VTo(eu~OmrQT?UzQ6)m8 z0$m8Fj>Rc6;}!eEyj7?Lw0<{v$Tx%Z8kZBk zU(ejSH$kyaR3_Dn*RefEjrg-Fr}T>jwRMx5=5%K?x0K?b?ck#8|2`e=IXr(@cwFK0 zok@!Q{A93i?^bSTo_9X@^pipF|J=!K`82R#Mfah;>W8bIO0#|bd{dG4m$B9Tm`jS{ z5UT9MY~$<-F33?wIzJJeSzh<;$j|!!S(V^^B~_W4rpzwq_Tq%8+WJb?cei(%g3G^s z94GV^+N6V}GJ08R6rSgNBI(@2BY$xFGt49FH}l|MGZoyjvPg}x)P3tZV)iG+178T5 z^`!ZTi$OhkvuIDgXg}(ZYv*Y1z1x;&Dbw~VxNaa@M99Ofy!mod*sIQ~R}3u9-B{s} ztxWL~2CJ^>-VkR?!%G2wlr()>H0GfL%EUv$Giq7aw#;Eq=f3cA!?st)%?{vl6vQnS zsc&49rbl1>*YG6|D$H<2xI%2LI`1xQ_=to^gl=q62sa@Km7*On5w{A6p{IQ#_$yzsd&bOVT1GZm! z#eS}fSsh$f9eg0(-d+3Q#-@{l{EYxyISG>eN&KE_;Cf-N1TA5 zr0XNT$8~vowkk_C?nxtc-{!Ig$0~;sWxV|{UX7}r8sYZvjH~Tud}l~6m5n{AOgyF7 zostSfqyut)eRf_wgU2))vKkj6c2n)`-5RBDmWpJ}6hFoK|L@QEV#|Z2X4f zSqbjzIovx~EqN<$bXukF65CPV|ME~09`}Ku{=k8X4>CW~t z-Aj;TAH_Vo;P@wnbG$}w7@AO+vFM!QxJrjzG=nc4&Xg7n(;fTz%e$g-yrNohJg?YZ zfP51S7tz62IJYt%(W*;ODzF2={Ffdri5pc{+4N*6;y<~3>OAXQ>#&dA`n+<|>FLy3WkQ|ea7A&PJSCX6Ep6@o z>CK_)SwK$rdX~kxLy;t zwi-5yH|PU#Jjfa`$+v{BIq)9tNurJ zt$1TZ%E+|k!Yk_eZ$Am_a$i@O>m2d)%->9fZOY6*9#+~5?$6Cw@>|iVXEFv(Dwvc1 zNxOnAeYnVO&5H5n)nQpvvtsMto?q6#Lz&U3%)G74sM6k1uxIXg zva;bOAKPBJ{;tiHb@4`Z&56f%6|^Q@zuY`%6X8koxNRZk!iRLwO zD_>!n!RBe0>~8cj-ZJ|boB1yD5xGUm&}3=$=@0O`xN@E?)G%F@w9|N#V~c^N$f2et zj{OKUz#Om5GcqS!>yHCL8;l3#_4)#NwboB@HkXOza-1PXzAbf2btdM4I@%h&r-p3; zril~SPJ-PA76SN8vni0z5Q+qUeYp9GkYujVW|%z$OQLR{AyqzQsFH(>6T?NjEyhwV zP4F;;DEVTJacGs^%haOZ%txEjO>8$k0XqR$BoO@&H=V!!xM0U(=rMjqw$EB@OyyV_ zFdls>y_vU+oWXuc5a`Z zWueVOG;Th|g=m(ciI=H%l|*Ambv?NjX`g-<$Fk|kZKmUTc9^hKuE@xWG%U8q+Z(W? zcexCh`=2}Y2Rv)NWBl0xIJY!_E>K&z;EO719Br~=7l3F&Wp*8q^Dy}7_e<3RyFt_v zEo&zj%(E^)eX-G!B-%O2Y^4@dN9Ibv!aM$^?qN{Jk!P0_NgR0Y!% z45*FQ?$WZoMA;;=7(gLKUL0zz+{B@B97yH>^If^cbkhC0^$Xm%&Zld*vrEI&A>N_ecMsmw}-vwHS_+)o(gT?@nn6LhUW4@pC!NV8p^%Qy1HntaJe-f5_ougQCjc}k5^gV90_os*_Z z=OVDHz%{-KYa$vhJr6gtn?$m(b^v_3n~8N1p%Q1tI8aFA~61s_(X}q%~7K~D3sZeb2 zGv$f?x}KrLsPCdyJu3^{cbPpoYP215iAJF)@fB@Fb#K z(4=Zv3NSv%?e~2cVXQe3S9Qy|HjUuZ6u8TGW>MZOmQ1KjBDx8yQr0d32y5suwvY#oQ zFEEsvSPe?GwOAMIDlkozhBXlkHL;rncN$p>_rT(yjhf;EItXHQ+ym6M7!GjENe{{` z+^_LH_6Ik4XkB{&K*x__G|F|6HJFgWL1|A$$DL zfoZLrB*yW9d?prVyN2X69vgrXA5F8#$sD4I)Wm4q&Hnmea~Fm=+?*;Tnlm8Ev(1UR zWZhL=lkTR@O`PEv1St$*UdmPR6e+9%8Ms#}sWU!IExL z(oJnjuIZSmL&1n|r;%^uSrni)%ABQR$-tzZH9;$aG)tB-)D$l_aR-RO_n}bIrses8+PeV#gv0OUGhuFt8}9mu+Hk1T8F{iq1*rxU(Ef1g=fygUu`h z80TcRq>FYelc=Ri0>}0P<3l-;g^hv>N#$%%Ou1r%!OMh|UZS)M^eYy4b z9L3AYdh77#qV$7!@>!X9YO=3Eij~A$c61b?3&7)EKU1*j9Mr~MQ;r^@p#Xj9LS~Jv5V67nPR>^DRL^JE43gE7LfIa=W2$+cz=5($R!_{HHv!!P91ACm>=%>tC0#!#Qu@y9lBCeph&`*#Zt>S!PmqRsn>NJO9s^8kP7vdLZ#8BRDopx6HXhk z8-Y(Z!S19X%B0e*;8K=NZD^qdb1V-y7i3D|{5WX7eEcFsf0(E-nE6r@2C@jhq;7eY zV&`EnYLBMaN30i(4Wq1vHjuiJ|;;5pu7^!Ol>5mxfgW zYN?!61ADB~6pIB_B%Bda1xuO%LJgvpY~~~}Sjm8>%@^zSdrU`RG;c=g^uc-TB0V=i zW|s+i>ev-PT@_3JdSRnT|<7{0O(?18weH&%*XJ+OD4d; zGXGCyXhYYz*!14z@(?IgHe&-M_^;F$%}I>cX}Xm;$&qKIZ; zu>g9j6m8an_hQKC+Rw8@YYTzxBZyB<1JreJ7B87)5^Awp$NQ-iyqOQEwMyFpVDNY( zyC}1}$cpicuaSB!D)8npPz?UM8hxNxz!fSk<{Ui+@f4_Hg%(VP0D+hxnAl} zSQ!d6rwy!vAXe{Lg3%^+iQrk-l>{M>ZxCD~v0D#5@-5WV!a4vT-XkFq*d5?pm1ehK z2V2Wq!=nCoX0S2brst2rZ0KLX{xK8XXv{mVk^3fziRN6K2{U4Rl1=%zj2@U~AM7AN zAxZJ%yo~ewjaKm$M_g4WI>~UMyig36?!FsHULbjOJxaI72PCg9Sr6~er>83EajVbR ztH{aeBSq2UK3kvQM-R6!e*k@w;steXmBkzJTbHU>Ey>MP1;*4CfM6Hp+pX(72} z`}A;~LZ}EV5dmntBE&%$b<2VLSyP4(jkjlesXR|%F@U;gu3871IF@KILXrs{g%ZX9 zNi@&oX;*07jCM(o21g;;I(STZCN%|9f+4ejs=a!IeBxfOioUD~E)&@zESnnS7{knX zejadblGq`!B4C<89V;ei$Bt0}d2+0r2+;ATi4w?{a;)+`d)AmI`sst=&{c_T!W|(1+N4q243~DZ zj38mWHe1(ZPB$GhR2$ocsll9=ID_4!hgOv1I$Q7p`j0A_sy6(ouKCFVsGKZ$+8cK`3%Art=_{MF$< z7L6~}j}@37p#Hx^hA&CjY=s4w9{6py(#u#ib`W(AcPE%A*5L^SX1>qa$@-nfCT{V4 z2H!(#+|I|84Qt!Lq&KpVnRWP5=c?g%tlyR?nkP+hh0NA@a~JJ}csQY)Wmp24C~ ziHEAI;5?xFf)y4Ag4O~)Do{AGr8#WswjHH0Gjk}cnQU{kOluN-dll}A= z`fE~$u?^lrqZlSz;`o#1E-~8VETzgU8O=2p^(>7bW;7j8sM6a7VKHV1DasXrWl|CB z(`sUac<>a!_Weg@t0_Y0F4EcY?svfKjN)YOLG=MLJ>bLWHBoj&l(jg$_d{ zyz(MbwTX43+~}{}z@=$2G%?yNO^VhUJ#aFk>vZhD2GqKXE@tLVm@@);%o~`oL9P?y z1W2Y}%uK!r8>N;O7loBr09B3G{>U}~AsOS3QR>$t(Mk~1ydu;~NpLw4Iqa03$;t{* zaz%GNd6nn&^)Rl2VfJ(==yVHp6>Y*)Z70mCCV~kgcH2b=Jbr~`5I3%sv24RYqwr2R zAj~ncs$7*YGihWCOQqEU?HGwd9gSG1jztmfE>eGqK(&3Ll9GUs6i+9Z2lEn;4>BI$ zI*cubcw?l(vZ=(v@&L3~%qbA3MA&O&#RNSJ>;yq@&q+Wo2cEQ5{FdUE0NFh$(?}Kt ze6uo8v@HT6d1ndB*1`9@NLU3dV0MKt3%b7sgha~?f_+&N(c`hi*ezgv?nhxr1N^Pw zNWW3g%&OhmQB9wxT$3sCgm_aIe*Z^v+*ggHasSb%n;J!%(geg#uukvcCwE1lc?2V` z7V##5*m8gn;{Q*C{Ub_YbN{5+KV+I4df?h*91wTMrSbTo8xm#4sIRAco|Hqq~RZJ@{;HS9?kvw>I#DN=^uP$J$mCYn!+&L$E< zH^f_Fl;MiGRF`PFW^Ph$m^~ntDosAn5<%2Qod{(VL^>b?fiZd-4C9>yp}R;vA)*^j zKb!T;4nBMcA}o34D`qz_9ZLEXf+52Ld5Z^p)d~~aOBE5=i6)3KtAY&CmuM?-Ke^(G zAQ+Jm=7nj>dBCIJs=Xz!R3h53bONwSGXS-gJtme31oqc)rHx}==m!feNAJPIK+L78 z7Pbp-ham{ovOExYe_c<^E|@|I`JkBV5S?$4?P&h42pQ&+O0)@fdm*)kQG0}7lE`xC z+p$JU@Vm$TKSd?*c**+3$~ujo+EU#$GpnG2l{)&E+#|&}W4#^rTb|c9e$XChi7HaBBgeJvX zVy)D;RA6@it(lB2B0%=s1=NQiZf@Bv;00Go))$2J?F@{MQtHGc(Fx)bRclCKUDRW| z*Px6-{sgA7Y&=m%Di~tG4J0dW$J~KxH;Is~9#qePc@t<-SUcIpZ4qLB(CkMLI_VK& z+X;&k(D4q!tl^_wz>v_e@_86h9ad^t1R+fdf>$l{G53q3U>84N=A{_x2u$B9u9sOX zb!r{31j1VR87vTsMlFS24$))?`z4AN_#rVx@k-ba88EL;8CVKxYp$4CDjq72z}JbsrZ{Lat0vAytA~4S^?x`c z#7Of0lyMN{4yDXsHsIflS~gJHXi)_>ZvDi#Wg@( zw@@egNUWJ~vRh!SwE%}gt3vR#CuK*WEV520)z_24K=?I~)}D2K+fe_0pqA1`l)UH( zeBDo9bf8=VDR~djx>}uN5G-sJfUf^=I67;9Az47S>Drz$7Xo%{Jyjuws)W-?B&Y-* z@YVzJWdLJSm7bjmwFIaH zi94jVa#DxqvOvO_(-DS6$!KDRX$m4s>;j!zY@ za{Hw!bkjRIE?m#_VAv|@0f>QB5rnl<{oo8$Lr;gTgdoyJ155nBtuG3T{loOCLl4#@ zbpsHtS1++^5B@GK)YCo+U$hZs!GLrEp&`6uCD^gMfLxi1 zPD7C+r5sN2iHWE>iA>{gkvXGWS0}rh5ffQObun75fIYT>8!&_iNY3RWJZ24zxKpi* z0`nkIM4N#lfyROe;!T1H!cN*n(86{DAlhxmLg@D{h3z2-M<9ZrAAAl#-6r!s&0)mL zhz1!L1E`HM_=qfyFa(rY0u|NCtQ5lp72cx9pd^9zx9aGTaun$yCjL7?em_0l7wzG~ zq)r+`e} zK0~IV-q3JzpW{eqIiN8yL=&@UM4SGn3>dX2ZZfX)cA4 zeZ$-hLmP=nyDFIX>4=i&7)!*{;!sLLQYN?&=Dn-rA^A!ENK$N;0{K*Fzf>YsOWCGt zu)92j2$?d9m2#DQNA8wS8z!!TC0?ivQT8ZNN`g`-C_&giQqztg z{$Xu}Hc+=uSE@_l4sa*93hpYm77i=rK3nwJ$aUW0UG%N|P9avvgIRDL8O?4XRuhXv z<|*W?+>Cz6T5f@;EjCu`oJ}q!U(+6#2e~FE%nxN}-Oa(~41Jh6(VT8BHeWNtF9{c; z#SB;zMTZZ`x-N0Jv*a!LAg>xGB}ggKka8)Rub0TdSu2Ohlqv0$ofJ34RY^lq zoRXq_Qgl8!uMh+-G`xK^8cjhP)MIw?5p|0tp6SoJ3XwIve7T`4eQ0!Iou6Q9>0 zcxt^lY}6^E8rI0d7^o(g70AINR9jBuMDtMQL6!?;RjWYZdjc=CzXj{=94LtY`|Ep? zN7l$_HK>|qfyF~G{TuU9r5O?cqcfRL6{5^!D+I_Zb(>{N0hfg-f%zchb9UrD2)BTgUJ$vl&`1XaEfyvG&tn4QiL=_ zb3xR*=!e`Ay(NTS@e2v0U{f@l)@+@N8A0z>Y6gA(3PyvxfHwTbuwcJN2QXOaSZS0v zzf1M5>exyZ<<{uPDqxxhnZ=W%3W1D$ZHzJ9TGhrywRcr*-P9M>VQZlJf}R%)lH3o4 z8uNP9W`k<)p-y&F`}B|$Pu0dto$Rez+*G59YH68|I>T3;?WYdLG^p4|zvPDimG0NZ m$uR5LQhJbPqdIkyYO`6j>6foD1Y!>$F2%#4ca272?Ee8&J=41Y literal 35220 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 diff --git a/src/main/java/dev/goldenn/bettergroups/BetterGroups.java b/src/main/java/dev/goldenn/bettergroups/BetterGroups.java index 8dc5fbd..b442e8b 100644 --- a/src/main/java/dev/goldenn/bettergroups/BetterGroups.java +++ b/src/main/java/dev/goldenn/bettergroups/BetterGroups.java @@ -1,227 +1,39 @@ package dev.goldenn.bettergroups; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.plugin.java.JavaPlugin; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.*; +public class BetterGroups extends JavaPlugin { -public class BetterGroups extends JavaPlugin implements CommandExecutor, Listener { - - - private Map> playerGroups = new HashMap<>(); - private Map groups = new HashMap<>(); - private Map groupHierarchy = new HashMap<>(); - private Map> groupUsers = new HashMap<>(); + private GroupManager groupManager; + private CommandManager commandManager; private String chatFormat; - @Override public void onEnable() { - // Load groups and group hierarchy from config - FileConfiguration config = getConfig(); - ConfigurationSection groupsConfig = config.getConfigurationSection("groups"); - if (groupsConfig != null) { - for (String groupName : groupsConfig.getKeys(false)) { - String prefix = groupsConfig.getString(groupName + ".prefix"); - int hierarchy = groupsConfig.getInt(groupName + ".hierarchy"); - groups.put(groupName, prefix); + // Initialize GroupManager + this.groupManager = new GroupManager(this); - // Load users as UUIDs from config - Set userStrings = new HashSet<>(groupsConfig.getStringList(groupName + ".users")); - Set users = userStrings.stream() - .map(UUID::fromString) - .collect(Collectors.toSet()); - groupUsers.put(groupName, users); - - groupHierarchy.put(groupName, hierarchy); - } - } + // Initialize CommandManager with GroupManager instance + this.commandManager = new CommandManager(this, groupManager); // Load chat format from config + FileConfiguration config = getConfig(); chatFormat = config.getString("chatFormat", "{TAG}&r {PLAYER}:&r {MESSAGE}"); - // Register commands and events - this.getCommand("addtogroup").setExecutor(this); - this.getCommand("removefromgroup").setExecutor(this); - this.getCommand("tagreload").setExecutor(this); - this.getCommand("creategroup").setExecutor(this); - Bukkit.getPluginManager().registerEvents(this, this); - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (cmd.getName().equalsIgnoreCase("creategroup")) { - if (args.length >= 2) { - String groupName = args[0]; - String prefix = args[1]; - - if (!groups.containsKey(groupName)) { - int hierarchy = args.length > 2 ? Integer.parseInt(args[2]) : 0; - - groups.put(groupName, prefix); - groupHierarchy.put(groupName, hierarchy); - - // Save to config - FileConfiguration config = getConfig(); - config.set("groups." + groupName + ".prefix", prefix); - config.set("groups." + groupName + ".hierarchy", hierarchy); - saveConfig(); - - sender.sendMessage(ChatColor.GREEN + "Group created successfully!"); - } else { - sender.sendMessage(ChatColor.RED + "Group already exists!"); - } - return true; - } - } else if (cmd.getName().equalsIgnoreCase("addtogroup")) { - if (args.length >= 2) { - String groupName = args[0]; - String playerName = args[1]; - - if (groups.containsKey(groupName)) { - Player player = Bukkit.getPlayer(playerName); - if (player != null) { - UUID playerUUID = player.getUniqueId(); - Set users = groupUsers.getOrDefault(groupName, new HashSet<>()); - if (!users.contains(playerUUID)) { - users.add(playerUUID); - groupUsers.put(groupName, users); - - // Save to config - FileConfiguration config = getConfig(); - config.set("groups." + groupName + ".users", new ArrayList<>(users.stream().map(UUID::toString).collect(Collectors.toList()))); - saveConfig(); - - sender.sendMessage(ChatColor.GREEN + "User added to group successfully!"); - } else { - sender.sendMessage(ChatColor.RED + "User is already in the group!"); - } - } else { - sender.sendMessage(ChatColor.RED + "Player not found!"); - } - } else { - sender.sendMessage(ChatColor.RED + "Group does not exist!"); - } - return true; - } - } else if (cmd.getName().equalsIgnoreCase("removefromgroup")) { - if (args.length == 2) { - String playerName = args[0]; - String groupName = args[1]; - - if (groups.containsKey(groupName)) { - Player player = Bukkit.getPlayer(playerName); - if (player != null) { - UUID playerUUID = player.getUniqueId(); - Set users = groupUsers.getOrDefault(groupName, new HashSet<>()); - if (users.contains(playerUUID)) { - users.remove(playerUUID); - groupUsers.put(groupName, users); - - // Save to config - FileConfiguration config = getConfig(); - config.set("groups." + groupName + ".users", new ArrayList<>(users.stream().map(UUID::toString).collect(Collectors.toList()))); - saveConfig(); - - sender.sendMessage(ChatColor.GREEN + "User removed from group successfully!"); - } else { - sender.sendMessage(ChatColor.RED + "User is not in the group!"); - } - } else { - sender.sendMessage(ChatColor.RED + "Player not found!"); - } - } else { - sender.sendMessage(ChatColor.RED + "Group does not exist!"); - } - return true; - } - } else if (cmd.getName().equalsIgnoreCase("tagreload")) { - reloadConfig(); - - // Reload groups, group hierarchy, and chat format from config - groups.clear(); - groupHierarchy.clear(); - - FileConfiguration config = getConfig(); - ConfigurationSection groupsConfig = config.getConfigurationSection("groups"); - if (groupsConfig != null) { - for (String groupName : groupsConfig.getKeys(false)) { - String prefix = groupsConfig.getString(groupName + ".prefix"); - int hierarchy = groupsConfig.getInt(groupName + ".hierarchy"); - groups.put(groupName, prefix); - groupHierarchy.put(groupName, hierarchy); - } - } - - // Reload chat format - chatFormat = config.getString("chatFormat", "{TAG}&r {PLAYER}:&r {MESSAGE}"); - - sender.sendMessage(ChatColor.GREEN + "Config reloaded!"); - return true; - } - return false; + // Register events + getServer().getPluginManager().registerEvents(groupManager, this); } - private void addGroup(UUID playerId, String groupName) { - List groups = playerGroups.computeIfAbsent(playerId, k -> new ArrayList<>()); - groups.add(groupName); - - // Sort groups by hierarchy - groups.sort(Comparator.comparingInt(group -> groupHierarchy.getOrDefault(group, 0))); - - // Remove duplicate groups - Set uniqueGroups = new LinkedHashSet<>(groups); - groups.clear(); - groups.addAll(uniqueGroups); + public GroupManager getGroupManager() { + return groupManager; } - private void removeGroup(UUID playerId, String groupName) { - List groups = playerGroups.get(playerId); - if (groups != null) { - groups.remove(groupName); - } + public CommandManager getCommandManager() { + return commandManager; } - @EventHandler - public void onPlayerChat(AsyncPlayerChatEvent event) { - Player player = event.getPlayer(); - String playerName = player.getName(); - String message = event.getMessage(); - - String playerGroup = null; - int highestHierarchy = Integer.MIN_VALUE; - - for (Map.Entry> entry : groupUsers.entrySet()) { - if (entry.getValue().contains(player.getUniqueId())) { - int hierarchy = groupHierarchy.get(entry.getKey()); - if (hierarchy > highestHierarchy) { - highestHierarchy = hierarchy; - playerGroup = entry.getKey(); - } - } - } - - if (playerGroup != null) { - String prefix = groups.get(playerGroup); - String formattedMessage = chatFormat - .replace("{TAG}", prefix) - .replace("{PLAYER}", playerName) - .replace("{MESSAGE}", message); - - event.setFormat(ChatColor.translateAlternateColorCodes('&', formattedMessage)); - } + public String getChatFormat() { + return chatFormat; } - } diff --git a/src/main/java/dev/goldenn/bettergroups/CommandManager.java b/src/main/java/dev/goldenn/bettergroups/CommandManager.java new file mode 100644 index 0000000..037794d --- /dev/null +++ b/src/main/java/dev/goldenn/bettergroups/CommandManager.java @@ -0,0 +1,82 @@ +package dev.goldenn.bettergroups; + +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class CommandManager implements CommandExecutor { + + private BetterGroups plugin; + private GroupManager groupManager; + + public CommandManager(BetterGroups plugin, GroupManager groupManager) { + this.plugin = plugin; + this.groupManager = groupManager; + plugin.getCommand("creategroup").setExecutor(this); + plugin.getCommand("addtogroup").setExecutor(this); + plugin.getCommand("removefromgroup").setExecutor(this); + plugin.getCommand("tagreload").setExecutor(this); + } + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (cmd.getName().equalsIgnoreCase("creategroup")) { + if (args.length >= 2) { + String groupName = args[0]; + String prefix = args[1]; + int hierarchy = args.length > 2 ? Integer.parseInt(args[2]) : 0; + + boolean created = groupManager.addGroup(groupName, prefix, hierarchy); + if (created) { + sender.sendMessage(ChatColor.GREEN + "Group created successfully!"); + } else { + sender.sendMessage(ChatColor.RED + "Group already exists!"); + } + return true; + } + } else if (cmd.getName().equalsIgnoreCase("addtogroup")) { + if (args.length >= 2) { + String groupName = args[0]; + String playerName = args[1]; + + Player targetPlayer = plugin.getServer().getPlayer(playerName); + if (targetPlayer != null && targetPlayer.isOnline()) { + boolean added = groupManager.addUserToGroup(groupName, targetPlayer.getUniqueId()); + if (added) { + sender.sendMessage(ChatColor.GREEN + "User added to group successfully!"); + } else { + sender.sendMessage(ChatColor.RED + "User is already in the group!"); + } + } else { + sender.sendMessage(ChatColor.RED + "Player not found or offline!"); + } + return true; + } + } else if (cmd.getName().equalsIgnoreCase("removefromgroup")) { + if (args.length == 2) { + String playerName = args[0]; + String groupName = args[1]; + + Player targetPlayer = plugin.getServer().getPlayer(playerName); + if (targetPlayer != null && targetPlayer.isOnline()) { + boolean removed = groupManager.removeUserFromGroup(groupName, targetPlayer.getUniqueId()); + if (removed) { + sender.sendMessage(ChatColor.GREEN + "User removed from group successfully!"); + } else { + sender.sendMessage(ChatColor.RED + "User is not in the group!"); + } + } else { + sender.sendMessage(ChatColor.RED + "Player not found or offline!"); + } + return true; + } + } else if (cmd.getName().equalsIgnoreCase("tagreload")) { + plugin.reloadConfig(); + sender.sendMessage(ChatColor.GREEN + "Config reloaded!"); + return true; + } + return false; + } +} diff --git a/src/main/java/dev/goldenn/bettergroups/GroupManager.java b/src/main/java/dev/goldenn/bettergroups/GroupManager.java new file mode 100644 index 0000000..bf34423 --- /dev/null +++ b/src/main/java/dev/goldenn/bettergroups/GroupManager.java @@ -0,0 +1,129 @@ +package dev.goldenn.bettergroups; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; + +import java.util.*; + +public class GroupManager implements Listener { + + private BetterGroups plugin; + private Map groups; + private Map groupHierarchy; + private Map> groupUsers; + + public GroupManager(BetterGroups plugin) { + this.plugin = plugin; + this.groups = new HashMap<>(); + this.groupHierarchy = new HashMap<>(); + this.groupUsers = new HashMap<>(); + loadGroups(); + } + + private void loadGroups() { + FileConfiguration config = plugin.getConfig(); + if (config.contains("groups")) { + Set groupNames = config.getConfigurationSection("groups").getKeys(false); + for (String groupName : groupNames) { + String prefix = config.getString("groups." + groupName + ".prefix"); + int hierarchy = config.getInt("groups." + groupName + ".hierarchy"); + groups.put(groupName, prefix); + + List userUUIDStrings = config.getStringList("groups." + groupName + ".users"); + Set userUUIDs = new HashSet<>(); + for (String userUUIDString : userUUIDStrings) { + userUUIDs.add(UUID.fromString(userUUIDString)); + } + groupUsers.put(groupName, userUUIDs); + + groupHierarchy.put(groupName, hierarchy); + } + } + } + + public boolean addGroup(String groupName, String prefix, int hierarchy) { + if (!groups.containsKey(groupName)) { + groups.put(groupName, prefix); + groupHierarchy.put(groupName, hierarchy); + groupUsers.put(groupName, new HashSet<>()); + + // Save to config + FileConfiguration config = plugin.getConfig(); + config.set("groups." + groupName + ".prefix", prefix); + config.set("groups." + groupName + ".hierarchy", hierarchy); + config.set("groups." + groupName + ".users", new ArrayList<>(groupUsers.get(groupName))); + plugin.saveConfig(); + return true; + } + return false; + } + + public boolean addUserToGroup(String groupName, UUID userUUID) { + if (groups.containsKey(groupName)) { + Set users = groupUsers.get(groupName); + if (!users.contains(userUUID)) { + users.add(userUUID); + groupUsers.put(groupName, users); + + // Save to config + FileConfiguration config = plugin.getConfig(); + config.set("groups." + groupName + ".users", new ArrayList<>(groupUsers.get(groupName))); + plugin.saveConfig(); + return true; + } + } + return false; + } + + public boolean removeUserFromGroup(String groupName, UUID userUUID) { + if (groups.containsKey(groupName)) { + Set users = groupUsers.get(groupName); + if (users.contains(userUUID)) { + users.remove(userUUID); + groupUsers.put(groupName, users); + + // Save to config + FileConfiguration config = plugin.getConfig(); + config.set("groups." + groupName + ".users", new ArrayList<>(groupUsers.get(groupName))); + plugin.saveConfig(); + return true; + } + } + return false; + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + Player player = event.getPlayer(); + String playerName = player.getName(); + String message = event.getMessage(); + + String playerGroup = null; + int highestHierarchy = Integer.MIN_VALUE; + + for (Map.Entry> entry : groupUsers.entrySet()) { + if (entry.getValue().contains(player.getUniqueId())) { + int hierarchy = groupHierarchy.get(entry.getKey()); + if (hierarchy > highestHierarchy) { + highestHierarchy = hierarchy; + playerGroup = entry.getKey(); + } + } + } + + if (playerGroup != null) { + String prefix = groups.get(playerGroup); + String formattedMessage = plugin.getChatFormat() + .replace("{TAG}", prefix) + .replace("{PLAYER}", playerName) + .replace("{MESSAGE}", message); + + event.setFormat(ChatColor.translateAlternateColorCodes('&', formattedMessage)); + } + } +}