From 51b7169a184eac51473ce4ef55055dfd13856501 Mon Sep 17 00:00:00 2001 From: 19972076849 <3504229115@qq.com> Date: Thu, 24 Jul 2025 19:12:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E9=9C=80=E6=B1=82=E6=96=87?= =?UTF-8?q?=E6=A1=A3+=E5=90=8E=E7=AB=AF=E4=BB=A3=E7=A0=81=E5=88=9D?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 11 - 软件需求规格说明(SRS).doc | Bin 0 -> 136080 bytes README.md | 1 + SeKeshedemo/.idea/.gitignore | 8 ++ SeKeshedemo/.idea/compiler.xml | 19 +++ SeKeshedemo/.idea/encodings.xml | 6 + SeKeshedemo/.idea/jarRepositories.xml | 20 +++ SeKeshedemo/.idea/misc.xml | 14 ++ SeKeshedemo/.idea/uiDesigner.xml | 124 ++++++++++++++++++ .../.mvn/wrapper/maven-wrapper.properties | 19 +++ SeKeshedemo/pom.xml | 109 +++++++++++++++ .../com/example/demo/Demo4Application.java | 13 ++ .../com/example/demo/config/MyFilter.java | 64 +++++++++ .../demo/controller/ArticleController.java | 55 ++++++++ .../demo/controller/BorrowController.java | 35 +++++ .../demo/controller/UserController.java | 87 ++++++++++++ .../example/demo/mapper/ArticleMapper.java | 30 +++++ .../com/example/demo/mapper/BorrowMapper.java | 20 +++ .../com/example/demo/mapper/UserMapper.java | 36 +++++ .../java/com/example/demo/pojo/Article.java | 13 ++ .../java/com/example/demo/pojo/Borrow.java | 13 ++ .../java/com/example/demo/pojo/Result.java | 31 +++++ .../main/java/com/example/demo/pojo/User.java | 17 +++ .../main/java/com/example/demo/pojo/info.java | 9 ++ .../example/demo/service/ArticleService.java | 16 +++ .../example/demo/service/BorrowService.java | 11 ++ .../com/example/demo/service/UserService.java | 18 +++ .../demo/service/impl/ArticleServiceImpl.java | 38 ++++++ .../demo/service/impl/BorrowServiceImpl.java | 25 ++++ .../demo/service/impl/UserServiceImpl.java | 53 ++++++++ .../java/com/example/demo/utils/JwtUtil.java | 30 +++++ .../java/com/example/demo/utils/Md5Util.java | 73 +++++++++++ .../src/main/resources/application.properties | 25 ++++ .../example/demo/Demo4ApplicationTests.java | 13 ++ .../target/classes/application.properties | 25 ++++ .../com/example/demo/Demo4Application.class | Bin 0 -> 736 bytes .../com/example/demo/config/MyFilter.class | Bin 0 -> 3292 bytes .../demo/controller/ArticleController.class | Bin 0 -> 3871 bytes .../demo/controller/BorrowController.class | Bin 0 -> 1657 bytes .../demo/controller/UserController.class | Bin 0 -> 5022 bytes .../example/demo/mapper/ArticleMapper.class | Bin 0 -> 1153 bytes .../example/demo/mapper/BorrowMapper.class | Bin 0 -> 613 bytes .../com/example/demo/mapper/UserMapper.class | Bin 0 -> 1407 bytes .../com/example/demo/pojo/Article.class | Bin 0 -> 3479 bytes .../com/example/demo/pojo/Borrow.class | Bin 0 -> 3485 bytes .../com/example/demo/pojo/Result.class | Bin 0 -> 4241 bytes .../classes/com/example/demo/pojo/User.class | Bin 0 -> 5784 bytes .../classes/com/example/demo/pojo/info.class | Bin 0 -> 2323 bytes .../example/demo/service/ArticleService.class | Bin 0 -> 528 bytes .../example/demo/service/BorrowService.class | Bin 0 -> 215 bytes .../example/demo/service/UserService.class | Bin 0 -> 565 bytes .../service/impl/ArticleServiceImpl.class | Bin 0 -> 1780 bytes .../demo/service/impl/BorrowServiceImpl.class | Bin 0 -> 866 bytes .../demo/service/impl/UserServiceImpl.class | Bin 0 -> 1734 bytes .../com/example/demo/utils/JwtUtil.class | Bin 0 -> 2193 bytes .../com/example/demo/utils/Md5Util.class | Bin 0 -> 2953 bytes 55 files changed, 1070 insertions(+) create mode 100644 11 - 软件需求规格说明(SRS).doc create mode 100644 SeKeshedemo/.idea/.gitignore create mode 100644 SeKeshedemo/.idea/compiler.xml create mode 100644 SeKeshedemo/.idea/encodings.xml create mode 100644 SeKeshedemo/.idea/jarRepositories.xml create mode 100644 SeKeshedemo/.idea/misc.xml create mode 100644 SeKeshedemo/.idea/uiDesigner.xml create mode 100644 SeKeshedemo/.mvn/wrapper/maven-wrapper.properties create mode 100644 SeKeshedemo/pom.xml create mode 100644 SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/pojo/User.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/pojo/info.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/service/UserService.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java create mode 100644 SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java create mode 100644 SeKeshedemo/src/main/resources/application.properties create mode 100644 SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java create mode 100644 SeKeshedemo/target/classes/application.properties create mode 100644 SeKeshedemo/target/classes/com/example/demo/Demo4Application.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/config/MyFilter.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/controller/ArticleController.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/controller/BorrowController.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/controller/UserController.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/pojo/Article.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/pojo/Result.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/pojo/User.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/pojo/info.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/service/ArticleService.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/service/UserService.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/service/impl/ArticleServiceImpl.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class create mode 100644 SeKeshedemo/target/classes/com/example/demo/utils/Md5Util.class diff --git a/11 - 软件需求规格说明(SRS).doc b/11 - 软件需求规格说明(SRS).doc new file mode 100644 index 0000000000000000000000000000000000000000..0400124b3e662d96984668376388d37d56c751a1 GIT binary patch literal 136080 zcmeFZ1yogCyDyGd2!bFIk^%~fbc2La(p{1--Q8^vDk30KA|TBM>23vqSLyC zUz|S=@6Y}H85a!={jbj_r>CcXpY}!Gz(sKC|F!=CGjI%JMAjHt!wYb{_}6>nGX}iB z0>A`d0j>hD0XTqb03ZQ0Jiv7TKHvs`06+*J0uTdk0!RR)05SkMfC4}XxCNjBPy=WH zw*hwmv;aE5UBEp6J>Wio0l)}g0x$zu0IUEu06TyKzzN_2a07S%yZ}DH0{}lj03Zku z0z3pf0tf>{0HOdffH>eWKms5MkOD{pWB{@NIelJ-{CTeSiVL5MTr_2ABX$0cHSmfCa!3UT1HcjB1aJnp z0Fd=_gQGjZ1K!tFoGpGf}d{}NpCUwwX8xR!nE_dSs{LxzH^2{Mn!vLN@m z3_$ijLP!6d{f}Ia;QzJ%88dJKI|lQN0${QKMMLOf!aw2HzPuT3Ru~4_eY(Oygx_8O zVnO&l^8F_Ow5J*Hg3wSN0HLEQ076TD0uXwd0U$KB4nXMY2!PNQ8QcWf3oLL%XpA3@ zh>VedBO+&1;E2eYKj4VS8#6fK!qEwo(m z>DwK4z8i2Eec1c%XWaKc{|z!exqt8{E09G-@X6_nFC+Iyp7)WmldiN}8p3AJ`bWmZ z26zYnNfTH-alm;_ z7(XLOLF8&Sc*g=q5da6g;{mY1S&=g-`Fkudgn!lkBl>X55s%E0qLaJ?AT$vQ_-AX6 z(3>NytRt+D@tK7E{Tzsng3K)<%aP+Rm}BIANc;PU&^ppL(s%&K_z>EL_VgRPApNxf zkl(+AFM;gPir|QRM!rLI9%)!DdC&}up?^D&;QBx-#(!~pV~}#naK;7BC;<%rk_GUy zvwI*k{QLI`aHTDb-WjfOf^~F;mA8V=YVa#W`v2}5>0c673(-IR*<2vHh%wBC6x>S_ zG#o3?DkMR>u!XzH!5AgcT;V7R_ceo~I^4$`^cOaO2V8Ffbi@YFA_`+QgU_Pyz4h7k zmS^9qfX?Cy`q5*!zvbEeOyT!3FdiwOE<^aO8uYCU_f>@R@&HL#O?HX9Ki{Q2cM&NA^1#ocT?q{}H|azVfmd&X|{+~C5CjVEB0WLt+=KsdV0_(018mJXe#{W*k z0ZK#W0HJwA;{8|du?`o7-ur!}=-H0Y|F8V)pI!s9>%XmkAv^(n?Dy@|VOKf=jXJ}t z6YK*4+n z2MAskkSILDHB!d27sGu&C8cxMIa@9Jz&Xo0j;UlwQ)`&7&qcFeQ*oIsdul=|-vV{f z|D2*q5pI~+6$$@`e~SC~j!d59NMf*JJUXsAjaKL3Eq9;dDBmrg|2Ut=?|Fdx*VDK; zSScgajI{O7!b*tN1nrO8w|jrTLlgf$d@?6~{&RMAB$GQ0&)vNGq;o70b#=q1ZnoK| zWER%Pj{`&cYUXEVjFujv4UM9@OzJ4r6?)aI-n6$DKUGJ^#yawlsjI6iUq(l3XZM!m3=+ej zswETfSfBWcgL(N={ovr>%20W@*zx>{LGlS+&EBu(pFgdXo6tLSr>3V(TR)mF-Q~Nu zbidZDGij)T@9c}Q<0hf!FJ8!!Uqs`d&r2iuJ=I?%Br^Y^v^Rb!|1(a0<8=N#_>R?` zpJVz>uum{Y7k-P@g|* zmzjm3lF=4!^kr+!&o3Vqy$#^}-yy(lTVaeVSFYGQ*nOf1%F1$daNyu8D=Whl{?XjL zO=)^!nahiL!4Ef8+vjAe0ca-}M>x^$sLWoiug@CnqO8(;q*6 zR8E&$^j)S+{beAIw5-RM+`e8RBR@XeW}mjp5VE}UPCAMyhU>Oqf{nnRuW=v8i2RaGB8d=RC^8?Bq)yo^I; z_H`Ohm}K_X=g$l%6)B93?TwA~^-l-y-@hLzb8fz|A-EGRjB$^Ff!|@~r6lz^G`AWm z6s=!q%C~PF9STeKE-oeFN{lx!h1}MvZAL5N_}zak+t!#b-ntS_EBk@tRr@@?@M=T^ zd6)Cp2NoN6zG)t^x0=~<^76Kvd7+`9>f!G$$jSMIUP7tN&vH`Trl+@ni@3PB{6dF@ zG*^r$(282)xS2hA?&1WBU?^s)JPsje=SR6XI>xf-KhMt2wzp-Zryn})mLFPyDU*%n zc+~_Cv^rYpx<2tJj+qi4f3s^K--;_1S4l&o%z0UDx(=SX490X00s4RO#iyNE{E0+oFq;9IC`7=N9xz{g!KtC?;P$HIbr zAnU!YgC!xZRDi3QCSAU(~Txdev0-VKVCQYZk(3+`(Hd}LSuez zKi$~b|A9kZzWq)RQSITFXV1@8oU~*1>%_RY#JFF6iX6WytE|MjfG#ka@g~mwS4sw>-ue*|D%#mFltNTL8~A$|K@^nw{FDJh@xyd96O zFjet~mad@>K8dNt&N5CM?p{7_p3>1A<~u(J`&#wwcs|}!PLqjYOYJ3^q9s9liU+ep zedo?>TigR+FDuh4vc~Z{B_+A-vGd)PyJ^g|@1;^7J$iIMl5x2+Iq+oKZFh-aAU9#M zd^y&(<|e_-@8&D<98t}29sKiTXjj8n%)44**cUBjBcvKk3ZKA)H(=sm9!ym43Tl_; zyx6ozR6sVJyN5@~Pn7l(?oIxo9AI%47Aq?x?T z=v}IGU297a(lgAF>d(=MVtA5tJQP+R7(yoakzY`#N~bkJNJziy_U7EA4ftJbnYERU zXVYX4=mY`+0^)^S08RxAku*IrpAFoe`9PX~Ahn#Ly zI8RPas)%PRq1yDS+)hu9flsKZsTms^3mtET%g`o!G&VFr2MQrsSy{|_HNa6N933|= zp|+xuAFmM-;UjFAl-p)+f4{fCf76YhD^@nntkHfhaB)!-NRiEk6n$PXT*QnB2cXyqPH@xjKRy8dcrz4jD1r!BpETT2Un|51>U zp&`5XffL_e)sYur(CpfLlSyGr?bWFzi=|}6(o1F9IWaLesr(KK@P$)ag>Lz=wnm&- z_nhFNxzPgu%ut~(*34F*Uo0PwFxVKInHes%87*@TB4J8XQB^fQ-K}kjij9fE#=uVP zS28CS^m2pmGn%fyx=lydG(23%*!gS!D2h(LBrlI8#Rw%=BPci|U3~HF+bp$g%$4zk z!`t``=g>X{hu#u67a^6ZLf_ijYRops-1Jt_GJI-k>e4lmZwC3duYU(|psb`+S63$< zLNS^uO+*;f+uiN><>|TA)m1X4DBL8qEXU1XJFCNV5mKjzJ{4@6HOH zZtQH}@$kaO&!0cH3m!7uV-2fdaIv?)DQF-n=i(w^mJw7~sDxs;&+O`KuXy(coqT+i z$BHJL|MLC&yY`Tvpu?SETloY*S#ow>q{Xo0{8Xjy{aPQ0lKEphQ)zI}h+25Q`mx-yH-bhhe45N9B zL%~<%Gs?6Ysi~-+(X0U5YNc{PsbUZB}jC5%k zCb8%Nuo!v4eZRr$&^k(U+fqKX&m+4pUO@Nu_0byd%KUubmzh@*@!cY%?u0j^o;e(x za3Y(9lamv44N_87O#d&P_L>G$AbEaTTQ?YNM0_NpY0ROit5?s}mBrXU4iN&SPS$&4 zdTPp~_2WG^uOsbjwec!G7^{@$e{`lO&y6MmX?;lN$=CsN87%Si7Dsi-7n?^&CZeAX5?;!RO#Bt zV76ANVzT&mBQ{0*{J1zB;QCSZ=4NJl2eG#3=g-eN?C-=qxI*O_9}M=<@-pSo(PsODs~Q@APTHl_9Q}Ilcj0(6<5e=B^>}%=;w@s>>R-=a z&OkTOvmLG2Io<^gBP%oW_3Fq?A)l(;TxP17wc68@i5J(>WD|T&>ik=fCiD2&EsLIv z*N3~iKS!ladjbmc@?M67gaikt(iJT2!KTia{m2tGMk&n{WolwFH#<+)8vTeueu7fa zOCpNfP;N^?TG}vj$H~!=bf8u!qKS`(=M9p{`fq?H@O4vj^Lw1C!L25R zgFh!G{@~^=r5m!)HGH<49m^f``n8Xs2gj{jPw9JU!@tXYl$s7D+4r zkq78#OV2mkXV1<_<$Yk_WyfQ<{WagcjV8mUx5cx`=g_M1bjwmS=g0E&Y=%VXdJXcU zdGA>Dy}7BcukV4gFg?xAK`m^U%38gv>f*vhAPmC(qeIzIu<4-kBJFP4qtPK zxi&tr184hV)O9zijs2tYLes}h-v)$gs-|GEg(w9y6?NOR|BwXb)>?`F{Q2{!ELD(W zD=Wv}54M33d+w}Sn{s5t<$0*zu4_>(pM=7B?i7COglcOxTjZd;^n{ zWK>57B{2V9>W<@1WNhUjs%bYWiPpiA(&b=lvD#zDsD$UigHx{=jAB=gO;w#rmt(hM z503-xQ6YMIdN#Iq9x|hw2f)|@aLAMq;jL1 zKU!L<+&4|!+<1Dg6B6!-N^XC8c7BnY{`#w~uC9zG@O;?j=#JhBQ&?n8XjkXroSmN^ z9v<$FeP*tJQt8jtV`gSv8?5AhXMu*6Oa*q+#gKGgDtiwP4@t=@feqAtReX-L#h4o- z`uTH&&t z*|@PdR3(4IMaF3hgltUu(fa!OO-V^0vA$MSjR7kc6{DGsmoEzn3cx7MR7_RUDYJV< ze{@*8Y+ihz`RJVL@dFl?^;dOhEQxyE-5_Ka3q-ch+7?dx!9CT?p~oQ^4lh)s&CM4# zdQ>Vz;0O+f1dkTK(4Rkl63FZFC{!x#?rls@H@;zIXLq!-`=sf{udAfgRb<|s!x}IG zawvpSNKW-M?VSa=5IP!jX395Fb<_DB9tY4dLGCzz*tw3GoRoCcOCQWKQ2R2PdeCi` z?A_elK%jYf>=HVyt#(ycCMVM*wA(rx%Hag!lOav!Sh8Ow%VUpab|7CQ@EYkxC!~2i zl*rW5x3-oIX_dNteFcX)Yyl*nwvNsfDx6kN%kAyW<;m5tfq}hd=33&K%hFO_Uf$#ba1~VEpw-Uya(}|s z9$MVUD||ZbxHwR13`|TS6B15y*J^#O+sMv`TO_HS&VRcCym6p28KpElZapk+TOelr ze0G5UxQnO7;IdQi)P8RD++AFSLe+#GVA|21n>;)`TR#WGdFvV{?J|nW)6&uy!_GU& zv75Hj`jwTJcRovMB(jMVxj>^lH&n3_t;Z~QSh_@wgN#EZ+< z1c!^hw`90$-MMq8=f&sy>R?uiHkeym3%GUMvS_MQYY=^mP-@smA>VipenG)_l7l`G zrYLBRtt}rbUHfBfyD7(qx|E!DbEr08le#CqTe>412~ug%>ovu9D!;9zUQ1U;V_V^u zoQAI0uCA^JD9ei%^}IGNj^^aQm7bWnZRhY#DwT$shK54u`;%Y$g|YJMH<+Rx_#6Sj zG~o*u6c)z3=mH^99OX^&QaABfG`AoxPXkeHW}6qAF)9jJi-U6QzoJEd19imO$_mVw zytOaqge88R9AAq3rjF_bIf?g5^xnOD-RW|S_wOeMzQCaJ$fO{aGtGbT@+HQKSmLGY zuSCVI+@y2SQ@d?fD9=4L#c&ic7ofj?-?Tlh*-F1}BMo%F;r4d<>B>(^ce}c~MTCVv z5))m^PNGfjRQ?<@`$K~vvbOeAH5+9y1di9^*r0ovDw$wrb`rFmwEV!lirE$Ko1>Ps zytH(3u$&7_r>Ka79xYLU7@wS+gk))TwQYX0cDnPW^*(kl+Rps6J0 ziIg8N4Q@ zWH5zq9ZVG=wHQ2g&wYQN=JDH<$P6AnzKZhlVvo=-UmkkAl~GmgEuYi35dITXcyQmG zM@Pq?VvG4)QK6}#^bU4L6Qyq%--BG;YEZ8Bw)^$c>-T&PT?)Lx8ohgCXKj2OsIk7a z^=oJ6(9j1lj7=_Ti0m$1l*$~wCJ^Y@zB<}-7r*+Rv6Yq8arn>OjC3zW3k!P3w8kVd*y2a@IP%PnsBYlZYbw{^Uzp9CdN zQMnOZmky4OG2xwH`EZYWO)ss=wHD~tu-v};GQNMbqho!2BUns~I!xRb;_XU69E_G$ z?@R22Qy)8EP+|Hfr7jzqlxEJ|)E@WVjmz5?HS6HtE=II;H3k*X zYh}EzoLrml<}VPRgq-67{e3+>DvF9!hAsOBOJmg!iuWVsfWknd?kO!xMIYs$2zh+1 zPRL_xq2F;ny8Yl_uZqi7w|{PkNoHU zsuFnCGrPi7x;^zu14(}y{eyK3TgR@})>$+rXb)e#e)Cb#o3B{3JSF8@ne(e5(jg(8 zA@)f_1A~mq48ou>tw#i!wt@cY?d63*C6%g_s-#F~kg6m}a3Q~-;PtEE)U`KSnwlg9 z)NgQqfr|}ac#E#rd~va-h}oJ^mNI!}b{0G)#igaWpq4W;r{}UdS%gYCZvH|)*eNb4 zIkDA^Z@g+<6QO$T+O=TL$sw3;AbkOHQ16I5N6(}2ClcL7**u7Q@nv^)GFF!v~ z-Xy{xKPBfaZr8wo**CAkx4Ylz63kTWyO~rPy}0PO`^(T9(AukYt35i!YAICIN;n=h z7DX#t-5v7(5#1io=WMYV$w*E_`2~M!b3a-9ZOSDFFv{HcDI!#&U_V7gT_fXxem1~m zmY<(b5-TTk5jbXop7gxvad#6NJNxNo!YO#5CfqERmQ=Igffb_ksw`?6HHD(q^|Rq0_zOoSe5~30+?pi?4p2wTsU%hzTHP zylP*XQjlo@YcRAz@1LaD&&ECX1I%G?D-`eU8|7;N^{Qao`3oz$tc~IOLs(TJ6Po}J zuhTzY1@&siD1(g59b>$1$u z%yywuer6%P-EIc8)6h^>R#v$8Y>1u~8h_MWYaA)B!G$D;*DU2EM_}hO>`_PQ$0uz1&?dK zVH1;PQAT3oquyVyrJkDh==mOVnoWEG-gf`Vldo?GWKvU8!NW!E$5NWXVJDq!DxvG+ z)Ai;iN$_-Iu&4JJKOd^bd%mq;wz(MJHglxDo3j2gnw$Q_KoJ2!~!4@c_i zo_BlE-|<`DKhm!cDCh2Ho^{~q2?ZC$$?W*)$?Qh|60-_zPL9viHMBpJkQh%i%QFgl zMkb~cvttjF*5OSermc;Q#5oJhj~~HsI-U4>K2FR&b$i=YT59P-lv|I~ZNE?mj6GpD z#iXdE1|PL>A_PmpL%$C`=f%ZEQZAbmi)h7Mi&yrCn&vW8U^nBC^YtXU-`AlCA-Zux z6l4Ezt+sZ!q;+TG3CaUA0WHjwmHh%+uPdOnvs!FM_W51eygS-_w4YgZ>HANhuXyI3mK0Ot^FfW5;*FoAY~06`fEd`s5p zOPjX)p3BeQ-@noJWmHuE;abh|Ut)7is-O8O@2$={v7|p!ILx1+P&Fu+8WOcQ-wzjs6Ov_5` ziIjlPk()(ko2%*Sz3hax>`d^wEG;iP`xHS~?Z6}MRs8l)mw#nOhS{mSP%+81r&p?L zT^Omr>=I2Dupi<`j3Q!x)O$i09TU@eQ8c65fYR1hJMN~Ozm10u^R+Flz|Vqim>cc+QHCGPC%)TI9k-j+}mk@@+#Ij%fk-?^nLamBk% zQyXshv@&kD2)o6aGv4{NpktC`#MQ zZ!_Cjx6IVklm-=Gs&aaA%qeHYSE%+OI9L`a!i9?~;E3CHPhP50v)rKJ)1wz;6)wGH z846jw;37W;GbK!7W`3UAX@Dh8%e^}eh=XrF{vujCxHM0{dahxU@r0fTeu$0L+So^b z_Q$t8{Y!l|EHgz})!x?}=QRIN=s@AqMYnTta9ADh3~y~Yy%4;_e+Bqi#k+{&-6l%^ z)$WlV=VUz% z4NY;BRfbAt?a6`V@LTdIW<8UV1VPW8t-(TY$Agf;CT4lMPh$sjWY`q4?4^ejIK8nK zsV<*cP@qH`4ov4R#OuLWtXTNaKJ7S+HnDGa*cJx?K2Dzn*fR2QyoKI}F7)zDC(F6u ziP^f{+tAP;L`zrd`5CR9Gf|<;py4$HN48R*YcrkBM(ORGZiVmgf8gpW^u9*r*F0%g z9M8$Vy0&nTLR z@9|rA&}i);@~jU*d(QnBz52#RFkwhC+v`7kSehH+w}=48nANwJcw{(_QD9R=v4^-E z{2UAo#r0rDv%uw{qnn>ke(dPzsP&qP8)@nj3p}Q6AE`tFz^8jR;s?9AIU}Qs#q!RrYk{kcfd@qho!e#JG;E`MBuRt@pQXRRiW#l&%fUw%6A(oilmJlp~0ALI?=lLEi} zY?zur9P%z*DU)09C>D)8j^~2H!@EClT0)LWFe%H^ou?@uAY+D}zJkLv);OfU%DVST zV-Y4wMqDTR$4&Kw;_H(3_W5u>;Y0}m_g@3~hAmOx6%({+A!cW12PH6DHSfLqzUNZU zy}3&|9$venuEN)@2}>9nCQBvm=~*eET*PHDB<1Af8m-OUav~xlS4Yab8yn}AiY+hc zGDENtLO)K+eb(d8&Z9z@Js}9%^5X|42FBgoj57D>Mu?gCO!qOKr$K$rJlHC1zfkES zD=p*XV8>%O@l^cs0r$7{E1F?pVL?QU1w}=-L*}c2SVa42bz@7dSl6R2Ox$c3$&aZx ztxRgg=U`)Fvl*?C#R&Uu1aUfy=^u|06^>N3N0cu5C5i;n8?n_5+`9#PgN7zKcw?c+ zdtOe<(~~)I{iq?RDTK1${m^QDbyTkP0eS~4{MA$P^KOC+(L#F3=!y@|n!9^>Ow5xk z_9D)mt$e(oeKoaL-D!7dY1!_RNThawXKQt=Fz{frF_=`(cQe>uU*t)T_$5BmH_8pw z5Rlth83r%DzKxBb+4@B2r(0aH$IbbMVy>$SqaJP^v@#!zY;1IumBHKv{{~6{mBZPu z8IX=8$w}qswb4K%Kg)wf$k1U^<+S+DB~fPxbY6}wE81x$U*~{x>(riIqYPld|BAS; z1;HD6A!}(Cm?MDlZM_mN;F&Wsg8`{8y~z+&IqDwJ4HCB=508!>5W4M0PlDg`^*MI7 zx8Im2**1lqqMt72YVwp)RK~tQJIn|8FHf))m*mm;){>K4~TFW zd^$GLm6a7DX3Z2jE3*fGB~h-UC$h~$K8Qy}i8hn%;RSP)N<~5W%lZdvRU*L@_`*C^ zE^(p-f1G&rH{B;%Qdd*kSv_1+W^bIHnqK7lCYAaNSa8e4*O^ciBuN@lUP0Tmn|PQR z8J${O9FJs%Y`N?X^`87?AL+zZmX*1+#|u#UtUnWX<~Sa(;@ZB&z|d0P8fxOp~d~;a5WN(wowOON@ot>SuU{AW6Mat%u7Z*oYL=p&m zO3cG=28s~Sv-4et$Ta8K>{UI4*bjuiNy&&aSbdsh0)j(%tTmOC-huJoW@_3NpIzt; z4!W(Pb;zA)=dv~sB;_`F(>#sxfv|i?Q&x61IVtG_F0RP^8&QX~Gi@UyUVWdRuovwR zS(%w>98LzRZ*F2AOZ)+5$ytBv=rIDGF5uP(7Kae43cYWo-PgXpNZhH_B`I~1?oTSH zUk;906oM%ykgY&MWpr}155l&Xm9hWU4a|BPYK}+|Fu1hA1VCw(g8O~Dsw7n+udG7g z7V50FiP89)F@qt z&JSVW-F5vrR9sQs!sB%5ubk6~i_|{rpHQe*9=opFs94JA;|&e%4v`=cVK@HxhzJ6mW$9~#LB{&}U#%uL+<;TT&f;fs1wo@HsB6_? z2Kw|8Daoq3+T8qX@q3jA4<2+&7K0xEM&D*5mD=_7>m*9_;?Un4v8Z>lJ}_bR+~%*% zEJ{HTQV{23+}_yP@u}$T{DSfK)QZtXH7_qO$8^_fNvZvvNz~F`qO9V%^YeRatF?JF z-|gGqAj{3;vkE!=ms$=Ql(cZ*uM4l_P!Jm6BT99F6(G*@ISzi zm6e64Ey>MohP(3=^99{sBe*wO2XH{2Cpx~?RshK z+^d2~x%~XVtI|ODO7zh8U=i_Qn!d2iK%u^WZ{=h%F^j1A{#Vshd(7+Cm~#nWyMBFf znS8wldi5Av@G+jXC1NV_2&GMZ*E9`|{Z2;LwXx&*e!U>kq*_Z$=NgC>oVrXtf6pq6 zBTw`Xns`ac4^Mq?>Z_)D^IfYTffzMjVcpGaC5DrYKuS?+#jMBh^-!g4LRsc(Tu4~V zF*2>Kb+NXwVWOH*lnr)45|Th-pRCtkvwlOi^<@jGp+<-ea%Gc45-0;3APxh*#Dn%% z_(OxAwVBcbT)+pRI-*sXdPhA+8|ASV>fyCL#5t$jpQF2d9TTz`v{5OV?;YGBo#({}$B;rNAa1-dceAI+;4qqkE{Fn09t{_I}hmwhRpoAs->9lhCUM(z(r;!FQL2 za}F)uH=C~4-ms}Ln0)wLBHBaKJhMq*o?~^!Rdg1F{UEmwBJV6-eqJ z$HjaqIdGPm-`%6=ME(76$Jo>~mJjpk&UH#kAx~NEAx~5CYPu4 zl!5hl7#GssqEGPtRcSD>um0poxm_nUlA(X^vsP(ad;hLEIkx5hxRQi_Q93cA=6RKv zgpQ-HsT@qgh-ds*_| zLoRxNg%t#OlgK2=eH|M+xkrKhTf%+WZ13xH*&wxzhOg#v|0Y^JaN~l|I;#_bS`0p3 zKEZ5ALpc)_ZYPkeOUdu_C(NxA=E=Ep@~kNF|Enhl=HX%Bbxi+ik8KMJ3rK&lFjiGP ztX7necnM}svNotI;KCkWy9MdYC4GHUOG{9W!u1WSV-OOoKq^26?|p9W{+@iahv{>( zv#N@UU-@m7=9PmTQ@?a}*6Imy#X@v~JWRr9Zv#d2!JY?FC%~P+#v~zv)1^7*eyr&|59MrYG7m@0eq&dc!&ze?+G)6%wmV67h+IRdpRmdpA_nbY?k zymM7A!E4)>qXP~P*U6)OaPTPw_eeqoLackvRU91M8ZR)h2a!q!f$w)NZwm`1Bz*Xg z8FmfoF(R6yE?>BC6#eldoSDCcHST6OvpxxCj^6QR0^^>Uqyb2nq_q$~bJU50u%{IH&XS^LvRay#uGmWK+4C!g>RdUXfOGW2~Sv5*33D zd$@OSl4lyy7S5E=p1`4x@LNc8{I&VZASs!X4?Lw%c9BF)!?=GWm0y;TAyFA3oLX0H zy)Z*fP2JekG(0$1z1gP)sxso)W&;qlgIJAU=vvL8+`?qyCI%?cLsiB>&nRz0<;s-b6_CGvxR6n%Pb1E6u2gNh zYXhnNqRbFQ5lxCIG!gv+c>QbgXu8h)ov;}@X9i?i>|0HOR++OH31m`G{ zuJ@~%88Qd5i;L6K=@Qzxk9auKcw$MWT1&??tK2pgGVVSL?}k+2gw9;SwDiZjAXee74W>*)Vi!Zu&th*p2jD} zUGE$!*0UM&%KiNFXKpQ6MS_w zG%UBH|g)Aytr;Dh%L6FB|aSaCtY(rDp4WSbGt6O5*-QNIca zGAtZaq2!`^_UIAz_O`$4Dui(|Lu6>X_n8YJPznVlr%nsFqmbgxX1h9~Y}!T!PJ2d5 z>@OIVyFXD`S+Ts1Y1!E;(b2@D_p`8Dl~tl4mKwghrg!3dYHDsgJ2huA@fG6Kjt27| zc^!3Q1a&I4TwHcut7a_-C75+++`YjREi^vbtI8Bb2?irPu+RFKr>?FpKAqg>++5qm zirPEi=r0T)`rE|s5tJ~q%S%o+l(xl#q{ei4$|Xo70TNBgAp`E7ajH{j zf;~F;x*Yi zB~K3zAbV4t@+5`39y>qpW#=+yWqb;`6(#{SSPqW%i3fkqIyB|zKqiMnu5Na2ZhGZn zRomp|zHRlf3ngU&;x`Cxj${JY*I8?EkVDoJFCOtqY|gQ$F@2}*I^ z7DxdM+kpX%6&zWq*|+2mXyxO7E-XZ!4BI*#f-iZ#EgoXEIw~q#8v)qZ*S}Y6FJDA| zBrDqrV?d>*Kwff|T24_(NzRQRaAJU4h!^S^!5zZzUwd~4QFVzQJ; zpBUI=ll|xqf8j8XUq+Y5iJ_oRtJoqUDm`5(mCtpRjFaOS0>dzv8$7(N(TLdc+Km?= zzxnP`oZkKe*HsNIE#|}8Q)PM>V+`%pYq}f|z#`BQepBJ;%zJ;iP&Re}=kx(*782BT ziXYkiIhIX_qB!%P>AX-mFjb4J%*tx~R2m2^XO^PnP+6+{qg*D$ZSXzZ&38}rxa3{} zk7SoNt#F)|Gk13%iDu=t9p!@@rQSd1H<41%iBGrug*PBO)M~t(ot4#ouOksmcd$eg zeeaLC&&NG|`V`!FK{s!ba#>Am?l1Re7Zwx%*&Tu-26jNv*2WboX(DDE9Lyg-e(<$v zXsbc44?gK(->@xGEGJGR4}ZBqfX`4#76bAYA?v|xwaOhDUpu9M=MKm8hEZ@Zs2vB_ z#E5PrYL#iPT4k%gY;m9&+Wm9!nf;t}k^BG&q`*->e$%o4{w!Nbv)aR%+jRcu$Sac- zLh#?diIS4WdKw!e38$$Yl`d<#kd7S^(w=k?ORe^pi|SkNV2r5^Q<%gKEuAvaHx=3= z@CZX*iM*7Im3bE`AwlowLMIsx-SQ8DIdiZV;|0AvzCOR0OM3^x4hF%5PE`=Q@e9QZ z3qwj&7Do>yqdakifnmRRA#y01t|cn^Ey*8iR9h#4zBkw0Ji+VWUT^$a5sLfRNI7JM zfpH3+sGz>hyH9ftS&HG?^a}Eq;=)}d#YTbaI&Ek5@v!kOUh@%cz?W{a- zeM=!gLP4PmVdl|z$TQ9>EcD!3P;_?Y98G8*AQY7iD+x7S{<&_K1!RNP2OLvWu>rMRQ1MvHU>ae}D z6WKhwr4MN|SXfw4RhVLWb3Qsc8um64oMdK}pGHliP>|H+eYhhlApzk5T6s z6$S-CyiHaXDHHphp$^%7M{f0(pm@s1K&EzETiOr!n|5E6d&=KIL1@`t zFn0lyp5Ql)6Czl>>(}dknlw&sLG=S}SBetwyX4elRaG^c;d~kafjB{5h5Pg|S{D9( zexKbBtwosRi&}dAD|dCgHX$-zE?5yv@XGRX zULGEBNlP25mB5}gGc!|FB@mEqZE8vfUD8ARBW#^ZSBbxv6gL0(;Uu?L<#X&osW%SM zVnszob93`c$M{g84rT2D*GNmad1J~CouB}}?Z^>|GM_zr<`)_{=kIb=Frn6>;WZwO zxLvt+jEoBifKuz>w9yriW=L&*i4*GKt@Z8g(XBz#^tO+KP(yb@wH%q2PV(qfy#@m4 zF8YbFS)Y%vXkb zmDt(XKJR$}8}mK=g+=x4>(@k3-as)|LP1JRaZCJaPR`e7&!Fg}6pLt~`{2v7^P?jp zBbq1PFWv z-qv;vs)U4uggk_@VRD8J#T2*np1u}Mf?_7K()%|s=ZJG9^Dq?e-5?2utW?+vxits$ zh4zq?)#kOW+NIsc& z9t~~f6MnFYx|%9fvKfsX?W5DB2xSq@JrY&9+mLKeZ_$BC_x0WBz1t z`#HKaR?xZgmmpc}1_9A{jbotu!xhh7LVgPUd?U6&n(Tc|@-)Z?gX{#_a1=!Xp&Uk7 zU;jAcJ(T6!Y^X1V`j{=vT=2zezWTPXi;aylx8VjVnGaU!`f1CL1IW_@h01e#iQxM6 z=aLg0V{!?CE7Q}+-(%?U(S*|5G)+${3?x#}_y&p$C_>WJfZb$4c~{lpmbr7uPIUpK z=&yi%2!EttYN}v;yC0uc{)AKDc%J5Qbc7qwH$>30O?P#$Rj%9-pmE6dnT0Y}#xMye zYe7dxhn(K@z>YuP-W~_Tw;*o4P^;m1^--ve_3ct*lbgvstm8 z3f&V-pv1)m9s$XPV81!-+=E1uN9QkVYH0;tx=aI(BDV@YMbK4v!z0x+b!#jdFrlDH zk22v}f6i!)^)N~~eL=Df{c%&VWk2ZD2L}gGh@+fd4P~}QQ2IA|;d!BH+d?e`BreZc zFeK3WAqC6D$|Ejy`uQ3RYVcPkM6$&a!N;PxzgHt@V`D>NS)FlZzGv$fB*l14-Q>)w zDk^eHQ^V#GewiB*l9hFzN;Fa7eX(5yR82#Sg@S?t#KRR#Oz;qs{{i$eo0@t$EN|ID ztghbA%x#+%Dda>CCFb$b(LjCh=MXYge2t7aI5-v%jXbcw~bp&>PE_$wK8Zd^~P8THMvPE;`s5vT*r*G zaBy|{TR&BWzs)g5UXwUuYWj%AO;^`qxw!CS*O+{Jj@cDmNy(k8mhfDuUpH^uxTw&9 zKO5>L@4t9tZEf^18TCIWZ%+LF{aTHeb?hVU0}jSw70Xa3o1$NE2n$?@#O@tG9GMFV zZDFCfoRWpbgs18&xO5Bh^Z8L|^p?qrh&U`ay!2}q^w7R$S5WBOJDCX^twTkj%?`>j zJa+Z(q{>a*$?e8H%=@oEBm{hwK76eaig z6rc>vFXeCFooQt~ooBJMoRpz&nOU0O%Kwj!RmLTobB`6|_fRIP-#@oETB#zD-KchJ zeaQV~Uu3XXYOZuFp&H{+d2b6sDZ~ zNN@_R%+%0iamybLbu(`6AjKBxY@1Ej`QChr`<0RP!~DA0RVJA|8ydH-A58EQLJUt~ z2zTwjzX*iqFJA18P;w?F8l&Ihlr)+D^^4$JF>pWND5dWpJfI&6zP7Z4*BL^*uXD23 zirF|sHN{7kytH(B`x+Zf=#Jz`IXNowpXHvFKI(?w7vT_UUtjhmA@f{l6uaMg>6>_G z(@LMGC;ZIR2kb4>bB1u6Yo$xP81{`%1~}16de_X znl~^$iuv;jQTT+-0mB|~f}y-hL+^znVq^9a4KEL*paJ;QTR^S(62%qY&63D>!4s21 zyW+aULp)2Z0PGmR5zdlIy4{y2-W6jYouBq*&M| zxFYJC;$*2=-av$O5~J#5Z!d4v8X(i+f85~e)pPWO?F)|ib$_1aT{>6W zsnbDpE^_#3PT|PkZGp+_nwt6Z&ENKfDLs#lzSOn^PMRCP&wxo}+9{pgm8ws7-jfxAo>C77Z_50n9wMf%6;!Uv;D z@a>+POIj7=%2>YyAQ0veL`KtTFgDW(HbRk0@ z-W(yYh1YpVyP+%bz8CtLY8#@++4Ocj@E>PP1Z0AQW4@?Cs}2gNU!_8i}Ahw>&THK z_)Kz5dHYD3uU@UHAeOtwwrw$^f9TMmY`5<{T{?rEzmDEy+?(a}T^F9gg`_vX$Vmpr zkJ3>_@agj{&K*B-!Ywgc4`~8|IlknNVhkDRPrHl1P!?gJ`k)@AngShzetLWKYH4?! zb#gK_-D4nJ5CKKLnqQi`cvzODQo!x~c}J=uWbnXbm!|1$ae*o*FwjWo<@M{=mo$Ga zopb6?kwIwE2f!Pvrx(c)*alL-`vUN&#wf=1OKq?yPBGuv*C5D7Lr#)d=FE6bPv{4r1-M1<@Bv0fW#Kd7DWc9( zqDpQ8HoIJzb$}$_?X(^4%44}eNkZIq?PZ`a<6b*^cS`F=s|#24^<&Ri($A&uy>zk` z?qf7SFh%vYa`rD|?pz>$m%!%#{Qa8@)ipU?eSN)^^_e@uQ9pjDzgTLtH(+HA&(4H6 zd+^?xu-y-Jb;B>KNM9L|X(hp`fJ&Kz^~T~v`Un3#+7?~v>8;$Vubd^e9JS*Z`|wc` z8wF#r`Q6diuFoB=q?X=I%oSZ~+5TQ2Yt?@j8UMy|x2MxIM`-AiC(o6R0q!}4UKV>T zs=J`QWU1}Rofc(&{bM@WLL{aF7^(=Afe_Bil{!z`aAo)Z-jc$WW`;y-2gmC`tyXsp%*egvM*i725?LDu~5@ zDmTr!Q#vJaXFT0~Ke1r^X8}Gz_J`HRH_KdFI_oHA*A$cHDy_QpdVVExKKuRqH$Xt3 z-NKAUwRee=R=QPOOScd(Ci+QuD=fx}R%2xk>Hy{BXTyaEI#FS)slBW#9@5_0nqg27 zVx9c@)#ul*SaxoyrdJOcG|up z!V=x6ncfN{MMX)8ftgO2S9CefvOP-A5!)11e0rUD0Uq3t@in%#nhWwn#9qk2;9eX`|IKzz)i z<5$=`UMF}tQ#Qm(OY#WN)Xe3SZAsw5bjEK_El(v7W{0lG+At%*l8&;v!~`vkK=^scQQWW%LK4=E?K~0^ao(5}n=UN^2Z^6*MWGVCSY*dx@ z5-~*?rB+j~=H&-_z8FwE96N<8-ojQWMm6*O`)|@V-sI3u;4GU>AZ^K)i1}7hze~t^ z%iUnIjfozo92n6D1HOme?d_L3xp#jm(LO>4aCiHLH`mf2e3bmV(4sI{h<6Ite?mj*~nn~je zu{wBHB}I0Sp{nq2+ppX+_A_S42T}u-SWDT)53y;^T3o`ogPP5;p+4Jed>^QEG@YM* zHUCJ>IIhQLKlyqflL%Oobd9$=e_?3b#PTK!D6!H928_YWDk?*UhoXyY>@_vp?gx^{ z4DKd=n39sBbZowVVZHyy1zgf7`G8ZNW{^wxo|vwwq(uJnE>kV18;-&`vf;xdt@%t3 zaaQ566TIFPy`-7H7$+{s!=sehZcuo?eB-Lk@YffpH0+9g1q1{DTMIpW+EmYY@P6R2 z$&)6OVnaMzf5Dib_xHK|9s>9EsqIA&Meg954zljoclFTZCM< zTQ_B2Dd~#nM4VP&a}An4&MIc{{45)R@Dl?2P~9`%6}Qg074MZ60766`l&r=Rl|j}k zN)srbc}nM4{{kFyV(ZIc2bra$q|mrWs*F_S3UgnmX=HW(?w{=#xr>YdGV`1d=}Dbj z^R_*w=%DCC@yD{#j!ht7mE1DPG&$+!=0^TVK{ZCkD#NX4wZa$2Z@1G7%Ng6>cY4*i zLp;koJt0`nBT5<^{KCm4^G(;p)byi-WZx&Zg87N-H!kh*Gdk4}C1O9OMmTG!%jD8S z3$?A)goZ?nzW&wy2lqF3bU35K1+I&%Oc?TVM!yje1gPB5A5svVc7y$`+U6C6b&)C$ z&l(D*zPZYC|Lc&rzOL@Nc-*0#Q=E&cP-UtA^V#>|2iU3|kpKDP^+g81Rx#0$SaGAR zXMM_-bai!$^!|KjKTjY4vUygkgqJ}CEk~-Vl9FLgCsH3@bG>RbAZeL(jhF1hY* zO<7%WIDg(JH(zsX2*(b29=DxgmvU0`FOGw~M`^A+2OJX;9xi+h)0HnW%VaV{F?(RgGvanCa&M2`$bR`08z!|)zDeir?_Z5`rOIE zVK<>aCPpmogQEm75h3;M+pnEv+y6L-edQ+E4GM{iN$xgOA)#yZa@I3Xo=`1JSmx<$ zf+X5sMk{H9e86k_4^lm~Beb-G{bQ+`>46$5 za&q42byQPM@bG+yj4QX%<9+dWeH{vdi^raU+qDS{Oi~P+Rh+1U|W|k|eG` z2mRxYaFL#Vvu98Vq%nZY&&|or+su25ojK!zP%o4_iZhnqc1!j4MerY?r+?FGLCq?2 zm-gy;L%q$+JWIq^D26Z>;e*ec`D8hF?%t0K=*`Szw>RLOZQvsT`40mukIpV0y>jNl=1;b_nRR565)vS( z5j(TXlhbh!h3%)c^z-OKo#Nc4f`-OVBy0&#)i*X~e6qRq_4)B2{Rh_* z)ZEv5oOa%o{)^|&h0T_yph3NSm!95qitgk5h1g5xeJvk z3oo6n?8Z~QEB?;3z#JracmhgUQA2hBH2?2L5&frSM#5Q+u+JxfjZgo<)UMD4yjsk`U|9*`^90ga}a+F39R9&97+Xj{qlf3>-8w>-oB!x+&%mg#ju?eL^tWBYEA zhaQj*4iRq{144$F#H@&WVDLgYCT@SNS;07Bx28m|8b;1co* zm+Tki1^(@0Prn2^eC3D^Rv@E-(0Gzv z;1wyskRji`jutvUVa80oVn;qPu}R-Uv^7uIt+^+c{zBFfwIO>tOeqXYwsdPwHr}cw zYJPqm<~EN{W>-S@hC^TYq4Ng^z2z51Mn-7Ge`Cu4?7#Y4n~tWxzyEu4b68xQ^?J|# zfGy%S4<;%`{Ju{Rw5^@ zt=`_aY`nECj;n@e2@&<2qLfRno73F|PM%vuE~WpxOTG<+9L)DCF|%&~VQ%7=o}Q^n zv?#cvio`^Gi7f9rJsn+uJt#Z$2~j$MUft#KdR4 z^+>GM(Fu5S+73tYdxNr&^wzisbH3A);)Wgdr3DH6DCItSJXov^+v+iJG7+FUKbd zp+!kZLNfWa4X5ibB&a=k5-7Mmar#0^OP!9+UwRFsTL4zX;k+Q_v||3Iod18c0LZxP zlwH{^r4I=c2#)-jj%NRrO-rE<-VTgqW|ta(6CkeKBZFYnil;emt%D$*hF17kKp&K4x3yRQ<)CMG`i-b~r_)Gd%1 zAzdC6>&5MdMZ~=@k5LGF_ZG{ptI!?}JR>p4d)-Ar0SX=+<;TtD8tJX0p6h#S=JNAJ zj}p*|$tNSS^0Wq(Py%v*Kpc9=C1|EtT3VsowVIyJu(Bd}!C^rEl1e)&7R)80RFDrx z6I2Zta_jyWCK}Yt!QdEjN#&Sr*DTZc*F4LeR=Q{F(a`E2sQN~_t&O@~H4PataE<*l z&-FoYSdeND1qF^(1qFpvq1|&0VfDjk^TwysySlokZ9E@|@QJ#R@y(cWHfxQ#*koCB7^ zxpU<>i1?ziSrAP6KH*_=OheXwZQ6eEPisEZns*3hR^z5AT-aeH_IT|wN|2A+#jO;v1cuIL5+QG~3 zJtr2&$tbH+J36qZCR{*mO zy5MsFqbN_v zxq;!wkBPFA16KEVr?-lSR6cuJYVcr5+)w>!TU#4~Q74yN6$-8<%cYgLt?+M@f7vtO z)9TT^$N7e6^vN0h11oFyF2BpT|Ke@_`)@>*9x@&q-kd}V9Roo8O{%bXMvNS4s-m-}PODKT64)>ia2nSEkzQKBNjexU#Y$c8B|TsXb-@ z;1`u+7}nkAKbFQ`(b3&Mk}nYvBx3$_&wRSXd|L4s?aMe$uS#T#pJzUvnW~*-aqt(v z%B71BkMMBWQZ!wTf{S5dLc(z>a*denBqyhYMAue4KrNd3e}`xuIBpv5Q>bG#CsF?o z9}=RVHkMYLkV1mfzlQ?z$y;5bj7Q?HrLa%1gx^E{KJn?RG*9t~Xa7DOy=KSf_yq(|^N%hqAJxs9ZED2kWE zMvu@@C3RE1r9hswHebForDGV43T0CSWflwp*NLzy7H9A7dLnj&y=lpM|qtszT~3NiIOOV7Vhj>ue=le;;I_qVOayRWOInBfM{(% zeowkGu;;*lBX2EE&^g$84OBd!AFK(y{CT z`EFgqdwR+0(%~<1RJhicrfx*0AqHo8Vd3cCtX2z$2Ts(N;LroaBO&4X;}Jzf{Z~Vm zo<~15oSasm;%Aj|{@%3|{_I)2AhfH&F8xTwyFWQ{IU%$O`Ntq?!q|c+cv2O2mWWfw+{-MyCT?Fk#GC?DthqTY$vGMKa?q0_v5b$_E0Wz)B;$tA&-V$@p zWp!(PdmR>G@1uvQNLBg~f{$*ShYnT)pxQ|-fr29nOIP>rq+z7A+_-cbf!}t(WZh*v zjdd6)-(Eg@PUPRWyz|b-%rLhAD^o71*~GTU>Wmk+yqjCG(lJ|GTMkyR1KD{VgphlX#f%gqc77|qKO#a-#}j-qS5#X!%(qMEF} z^JpHFR!0{(O#TCfm6H>aaw4n`|r1X1tij9+BHCqib-{n4igv2R~U$9=jVkA zT)Fh5s7QCQ`DQ*vp$?du>UY_a%eXO&b`rp{+?UZJ9V3zOe}9+kZ3{NF@{53}oEThp&7 zx%3iM>gQ`X@<-H*IoLmsh=4MTK!|R{0{7EADwiO@%llY4IlrLbfX&vE!>4g6RcbTN zpG`nq@uB^~n%A$#AlS*;x`cgkEaCk)z+0uM(z9Zsi!A+_15#ZzT8U8a~lC?>{J`KHCfs@A9Sx9kh$rG*8z2I_h4 zUAO=1i8g&+OuIPzLFpK;l%3yd-n(~qZ#z0(yjb_`iVR?{1Y`~YC#26rwv2odv^2t` zl_ig(Olo`><%m6)0UEOHa6yz$nJ2_!`CJ(|IQd-7s zi#AO3S?1oxg)rAOHAUp*VsIIsw&5JhPUKu|yA}}ekM_sKk5&2BA7ME%%}xW?hC)U& z)b`pY{Ij!cHM0aSX#JfZ%Oy0#iBVU6Xj+*%#Pe zZbDGPPUr`33(mqSba81;u$`2}Ld)dR=(m`o5xSLp1;O1xNPxO{Ik{yV+=hY2rU=2XGyC>AA|i-4OKqna z8w@K8zI5CreD?WMtgNcKk0ua@#=Aziec+JDEZN9bO#vrbI9(Q)C%K>c$XoTa*A5N> zsicIRTo#0~z}5UP&D0K(L!PXoaenUuTBC1~$3bcu zo%)-!r5f?%^A<_di}h|;J@l?z3w<7 zQh!D4UhbQ%%bIkTFd9kF_>pG%ChmLsAO#lCuYuGrUcG8C&RTSRaQX6H7c!DL`TxF2 zRxA4(hKUI%AXL8QCvb{feSn)Dc=R!NCvdzaH*3Au=On&G%uB%e4LoC33vV3;Bh6LQQ2*m@#Khq8N%|0<}MB>B;*o=#l#K)0)F#Ghe4Z~l86)(Y5$|6`X7zt&` zf$4j`M@G6$@U=z8YX*n^RRaCzmI#m~WiKz+<3B_oBv;o)YQv;=ulFNo;A8Li--L>! zMvG_qZKx_Mss_Klvx<kk&U%1@se=Pk7(tFhVVpQOQC)>#m$^xhBJ z^&2@~5b@!E-XG0V4zDB=fsHm$;)ODY=BeYyJ5fk~(0=FbP262T$H@3NOM3-PpBj-2S5qf0^D@BiqO2 zhED=Qz6iVlxW<2>~3$a}jc%hxP_NImTqVc$C4fx~fWm;R&{A_`Y-^ zZ+VV~ifr?3ni^)ls|!SNB)yUPB!Gy^^-!Qv z+4&T3-lc53Iq&VQeK%h*&nkC@+RZvk#pqwrRzczhz6P_v2wvreYP>J16aaUF zzEP0~hw$ahF`h91z0kRM8+D-GLS&YK>p1P1RM>cK%NY;8H1O#Bbc;+1nwpia3SS(Z z1TQ2TSBQ9yqo*Yza#>pggyE>xbHa6l7f_GSu3bcgGA+$}UAc9?-^p`OQ17kgyB^&R zf3)~F^kgb;&a!==*QnIUUkf1}JatIpN|f+;aJxQ)#422;k>eKlsT~BI%huW`Ofne2 zGtwBn?jBQBRdpuEOj2ANXuWCA-=$4wfAT7V+25aO3!_bDS=#)1f2jTUEe%jwYGwi< z*;tAeE3oeKfW10A2ct${k#cl!*jz52nbM;_OWn|`{B|)IO_`^O85CrBI;C(5Vw-Kb ze?9|aR^v%KR|Ob(t8#M@3%qrFDg^k`xj6j=w=V*BTOS|9Az?7n9T6REImBVjr!U1X z2ocS#ZqKb-(>|GcMM4}>C247QHopY#Tz%wzkE`t&r#;-@ks8*uYy(yFw$&o3xz;r2 zIGr-C($3*}0wGHq_so(08EYIhibpXR>{YDCK*er`MM`HWiJ14z78FCb%{@`6QAxm@ zUxNsQ+0UQP!WM_8FV}2M@RAH2o%&73%IcZl9gz;ntMlSmZf-7IuSGX*043c`i2v|G zEvXr@{MqB%HmDaDoJ&-hGYef?H{Ruh9|)@cVUah&ZZqe*N9bh(;uk(F<-^l*fRCRm49_uO4I8Sok29CWmFm$vm$8q`^&-olhphY%wbNd+bZL1#xT0pK{3Ryb>nZ8P z_0iG6Ku=Ga{)q^1_yj0Ac<3;U$kT0TZ$fA&5cZQNZwtI^rlmMDc95I|+*xzi-)*wi zi#w5es3cUJZkyxFot+E){cFJBbEL}H49cUu2(59u_v4uHJ`c}XL)-{uWu6u~I#?j+ zp#jrgkxh&hx~(iHM;xq}{{F253`1*#hUTzuhCoH+*kT&~!`qSTTHAq&hOUdykBZ^D zD%ClGe(wqHazL7xJ~B7?;)IsBxA(7`H^al9MSXnmJJ{mZ*6qjAx%lrLS(vg3s|)7GIbttI7}`Za&ZF%;z+qED0Q z7g@V4+7`LDlx_En8ZO}?iHeHubH;NkScw$8g*(7$y6blKB3+>TwG@?yds+bL2Q!L% z-C)_eC7==`b7bqddU!bU{2Ke}yTk&$YU;mz`vmpG)#%4(r4Gn+eG~y$_pO{GEOoZw zaQ7{Umo!by&X1aL9Ei^G+&MG9#~tP$0d2G+$wTrJXgS=lfCwPr5V+g1qx&F=LyEo1 zg$p%9+*e?`!STAh>?j_JJqw>H*qt5Ku<4Qd#>*Ek1(8!@>J)Z?z*Yk0HS>E=R9dNy#hIM#Ul!?N@l?)ib?w~ z(T&GQa#5ObnZSMGx#hmk|7du9Spi+s9_Nzhb3=ln;IuoD{a3UwTJz-a(8R>V^t9F7 zN%{Xr49Zka*FUVoG2!+u^%3<=QXeDFq7hIlFJ*5CQn|fc)E5u2?#|!4byt|N_#?*f zpsfT4@fEhVH(V}u3q6>_5XCq@&q(jxWk-$VbeJDw^Kxd7%ZQz*|56Z|l46$ckR%(V z{qBt}Ms^fdRc(^(qq%^ob+|9iyo_*y6kq=)>qBRi{`szD2GZa+D4>)%4-$fGPCZ-` zl16@4dGpl-HKoZ3{aD$!rcqtDjJz}ie?il1-6Rv$Z2oB2Y*vf+1?5eSR>r;T!WD)> z-M`{lV%(Pp)aK^V zhvya#%eXruI9P*Mg!(P3e@vWvw#|^D0c+foCr{ReI?=(d&kdF)78b6y1v9~&fjzad zH0QG3C~L&J0Z^28Muijo=>L4OD;XFV8&q_`RDcq}g0p zN~{1h;Nx_y>&G5)q$N)Apb5fczcPPDJ?M#_1)RG_YmS=zc!fx>zRK)0oO1Du5T_!lMw^fROql9*f;cfI9E1(Zn@zbEgLd1znK8fY^}N$**a?nqa77OTd_U zpu7-Z@slU__Qone^;-Kd5Zee2Cs7#@y+kPgZ|s34&dq9|;$k=#pxe|M(wPZJepwGP zU3z!E|0_vbt@e}z@aO-b__ns_`)Uy@QEe~Smyr0d)dMT2kf%eBlKO5-7wkX>4u* z!NJ!Z92u$naFXe)H*J(P$t)}_Ffr2s79AzrIlqSQ1R2aD-(%3^5ZJ8mJnTD@mX;Q) zukTv=DK)j$q#Fg^wQw$#`!+Ud)_0HX8yOvieQ;bjDoJ)*g}KUR0}}4&#;vtg8>amt zA5IAf`j;%3R=_J#6U2SgdKuz&6g}KaIct;d=e%hk5RgOA)o6B+NB1AuSfB%7_Xit9wG+e;gos2`7!BP0->(14*e>)&#C!g=$kZexPHX!Nr2KV zt*s(u@t+lkFJVB|v$D;`@^T{kNqx!(53aDt?jt;HYu#KN3YG4Sj)84OTv{5`|NNGO z$ z8cwc#jKb!KSw*&>5UY=ocEjv|Fk?nh(Hhv|{8Jr6?=hp8UiU`&*^`x^*M!AH$~(Df z12th|#@$z{9~TivT`Yk_4br`g&xJfT&^tk5>4}`;1huh0Bc>$riHXF2(gwu0zIEj> ziQNtOM+xITG7ZY^U1sON;UFWUpV7Rbsbeu8aah{b9@EIOIWNhuJxB-pAdc&C-`1=T z;vs^2IK^+jVm{J%>GWfqRzX4BxLbXF9qjEl+&9DNWbt0@O=pX51S@gxPP!GhJJe%ip`YTrrY*UozW}7KZ7v5iZJ~)1cK#gL7y{ zG<|UY9F$21k1=IbUI@h`(ef_mv%H}NHl66iA#-j(Pty=7$aT))e|b%5G>@w*+oQL< zNLyv}^@*ep`s!TLMMdM3^UVZu6(~*-JUM?rfsg)*%bzme3%Xc-}D{ za+2LWmgXN$r;3_w6xyI`6Ay{QBCIJ(hGq#iM(ny0+u_G`X}5}s5adq2ckgr-H3?*V zG8?n!gKBQwx|O4qfq+Fwz%fW^D!R6BEbQnRW>r`yhuoS4&4po7vQ6iXQB1nUKp?pN z3{Gkaz-qtr57iNg=W+=MDMt(=?VS_e(~^!-=#AG#N9Y3=@v4{VxSJ zQlU0evBS(YR&=+S>l>v_xxSsUytDR?#*fxA?LGOd{+Lts^mKrMw$AaF?O(bp%?#Yj z50EQA{wf^PhupgUcadGk33d`c5Dt%`h=`TO=k8xrg6bIma9KK+Ki=%&% z*a_~+(v~u=BIkY4h1olEm0MfuGw09C`T6=n04B?R#Sk{P_=!BPrgn2-2$xJ~uQtK& zZE9-Tn|3Y#s8yCW)xj+jp~GQ;dFJ89o>1dA__P7>h}?sjt2Q<`H34;% ztxcRDc*&(5n`B!iA`0CZ%!91oz($?4C zY8C5?^e4+tamQN1j7(n{nWPJ$-|Cw#IOqk)l0l6h6v3b8NMHG(>JbTjknd2TH1z|^ zVvk4hUDZF-?ZWqW3?rQSo^45CVaNVTNCG`J#z9^b7rTLcD0zwT3t<=j{#}(9eGhD(-1+lF@1(>|$bzZAqiFi(dkwe9nZrA1RD~!+0|ppm4bW?F zl7ojQH7~=eskgM&w~DceEp-dVs{}Rk(1u7oez8OAmoHrm3<-Ioo(3fam(~X(^L>QX z5e&24-0a-956lO_t6{w5LiHEW%_!_-J&tB=$Df-i*%Zw>vzOpCxFy9hb2NwhJq5&X zxsk`C;0z3{X)zZzquhhX<(j;1#cxV;@ZjzPt6ZGfB&bbdcn?O@UshF?J13IJn&tU* z7lGtoE$PzAO8X>61Z@2++ujUy*TjezrOUn(F{CHfvv=sR?@zum$LME@gfp?7Pf*hi z9f?ElQDw);!9h%jZ?_1fe6HVkS%|@}G5R#Ov~*8(HIRaq@o%xx#h5SBef>1>9WhIb zfB0|E9zKlmy%$25kB2F}*DrQlt=*q3d^PkMGOeTW07ds3oMU4-z;GXOrJCmN9&%{5 zxOoI-$4err{ptXFgO9d7edxwqAz;OlL}N`;3`8}_=~Urb*bHW>6Y>}4U0TC9+S{hY z1mN(QvO3Qg5AMg*3z#^n{X#H}?v7Ok9u}2V%u$+vSb@H&`lhA}eN6d>zrURD7-+d7 zd(dHKN}Y!;skv}DZkvSgecT=ed&{I5j@DaWs0e2-U8+Y*vA)c&A<^?%g08|)pkYZv z#Zc(w2pQIe-zC%_!{2&}k-YC})b@_$reiSOr*+&mm;tj8zM#bYNhe<8X@Na z8%X$sL^r~;@?Vf2;?ov@G`6=_3i6>VPVgvMX+FCNOx)9L(}5+FtSkbaFtT^6liEoc z8Nqdi0CogkHb9#_`1EOv-o1NH7j^LjFd-9e>Yg5HDJkYk0gXoARUf&?mb33V`>Vfv zd4t+w+#VC_y%6&S1!{LHXTTzl)m2o+ET(@T;d)qccyG_W^S6c6TDFL9NJzkfEM-*7q^}GE4U5<1G-|5 z8{D{#v2DNp{j{MLMHk%}5gL3}%2K7_4qsP)`CFQE1!=Ln{D7j65N4YSdUs;3N0&S8 zx^@MZdoA2-`*qjjpA8=WXeXhUQ^Q*N?4g(k7FT^&mT!$+m+I-^!v}VqxCY9&B(HU_ zw5Qn9AgNX2`#3O6bJo3(A^eRXI-=37x=``Gi#bO1!d9ykrwFvTf%3-p?(89~UT_q3 z7XBexlgJ;YneN+~AeS(^)|rD2<-x66pvXVW8LnmD#)XgRLm%$lNQ``T;#%?G%W)Oc-} z`#`sEy?O=f(WTeH0&Z`lvO@7%{`(Glds|eU{p`0wMk3+$)TxQWjuF<3&yNpnV!9`g zQ%GSkn5O?Teuj13JL9Nl;IB0^yG^mVA+y@=<3S;GhmKO1`~$h4(GKs)b%4-c0p7@* zigb!K>%xn6QnYKcld2ibweRRsYNMm)zNwN?**Q6}9zM`wR(@!Qpou(nR#?<;F*j(^XY3R-oA$xrH9_bJEFQBj|5b z9Q$_sM0BVmn2a*heZ{E>#m3P7k zl5Ia{EOUGw0Leq%*Z&`1{XAj}`<3?j@8WqbkQJ#0cuTxZnf!*HDN-Cj&|P|B@K+ zC5C!d{$5Hi;tAUeaIGeU=|WQT`@X`tn{oDQ2q|~}(tTzNbKjg`bA%(`Wnl#J$gtA! z+S!k+1^IXGSVGujFVWN7yg%>y(Z4FzDH}k$fB;p-!4d4!7=UUF{KWpU?9RJHaof;= zAOlQ2O@oK-FNH6-Q4Bh4qvVhGd>35sq4^rJI7nh+2?YErI(gW3?e^))w`L(R*J8~_ zgbUc^*``RMN*7o!@4v;MsCi(_=Ewf2`nreT)Z4t6CRHRIf3bnSQB_s;{_->KPw(EP zEOy-KX&D(ei`>^RJxR{nr*FNz49aDqdi{7|r_gYv&!f8a!3R?AGjsE*A?+s9tf?Zy zGd5aR-sHE>@^W^41Q7vMj&J?tix=5@pVygi1s}1ry)mzqu9^f<{}o9_ee^-sc@M@l zL9PI-ilqkE2T6qosr{QSjt}qNB8PDLs_aQi`A7apmWg_|i|SI2it<@WNlB-zl``Nf z5B1tB* zhpE{zUxl}*k$AdFcrW186n?S?)AwTYh^t9sF;cDtWr~%g&u8RO$p2 zMe1odyKlzCY%VD_QHn;xC~)_lQNUTLJBFpXU`5S^30^E>b}j1aJoy*weT+K52vyb8 zAghGBzzW$Y>|}5n!II(Bo}pW0JB&T~@a$|`ln5ljXVzExU>Zh@n8t~7BDu>Z|9>0) zg7@w{NUVhweZZE3Ht=5C&+j~r9x{8p`Id*KCb~x3F&&kp;#JCijm(B`T-z39Wvce} z!bT!S-tgyYp3uC`CEY4a>eFZ%UB4X};U(nSr*JV@?O(L^zTnrH3aTv8%s*Ty&4j{64oB&3>whUm_?Uh4bwPP`fqHl9FYzPLK?i}yEj zNd5Xg1WrAav)KT^^tS(d*8#%)l|MI`u36(2MXuTJqb3QqvC&NNYU1EkBH>W}zczjP zR-+x+V6)kl^UH}|(wm(g;SDa=%JVsQU|EV* zEDKvbyE^0y4UB`s64VIK!k?kfT++$7s9#Xwr~Uot#~`@h zndu5t$!earqjT6IE%mslsH2XeB4+qx-K#%bixC4LK6e~5p4Cw7c*!MvSdbZT+kdXG zsFl7dao-0D@sJtW`=863=W3giz_rP%-Gp0OOUo>Sg^G7q+;P4V!#h`EoS&Z9G2>q; zkUVHz8NTbG^N&X)WNt1lM1`%kPaPN~}tneLmKv-lRtL4V}=>^yHlhxVx?yfq0j*SM^?qv1O z-rin=cK43vgbJJY2PLU2A+8!$zcUU2@TLRP2o2@7-k}IEu+T;R&ODl-pQ)ZkAOPFU z%4&W+wU4+bqcOC*?A}8fSIQkV#MmKHb2X4{wS95*!+_@VZt!!vn{)naCj>vb`PX4V z>$;YfC$Kmw(xf+UzWmnM7;A=P-Z*QOXuLefV)!e-bBDJYNJ|7#1*M1-OOv4hDBsVq z(ND;!o$lL{lzK+qsFWHdB|KG5<_fwiq;|OQT3T*K((?b>@Rf=W+#JLcB~!JF(f1r( zp60gMWN{!v%ES8o8z?#XZTxlba9ItQTskQP5L7$IRV1{A2`}w)sb1RS0K*>YAzZeLcMgBO<6r`#_ZN|;Ikaj!AM zonsxni~|6V5aEaXvX*X(9x@@=4c@esO*C@jxE< zv2Wc<)35;QaP?|)Dr9gQRdwM<{is*w=cA%uIDmyZx3#6mua%+MeSB+Rc&O3_{`w`M zmrs82+z!dy(UMlN_&iZ)neup@mUa=!FKs^XUPka$jFvB@liKy%af` z`UxkLQStBf#IaScUcsq0_W z7$M)LQ7FwzHr(guVAKLqzwsmJ6gpp2MRz`a?6{k+!UeZ+{%AHFHR07iQd^x~|LDXC zAV{R}1yJ@cmR-h`!o>!K4(s`eNj~+%+1h-n1qJ?RwTdGedr>V`~s^iT>o9Ms_NP#!h%Yn|h>mI1ba(!;SaM zsqK9p&v!(F_$^H)ankyfKi#fB72WvJkPUf5k@-Kym%wu^|B@wcKFalHa^!3aAI~My zdUdpxp{<9P4MT%}9pE^9x}~*qZMmoTg;wTQ9UWNQ0UW@#M@-P^?y5cU53v3_*HV6r zFU~)HoEi{-{69#Pq56T%0t-A&+G*cTHVI7FJ?WWgU0piNHFyL;b#&w;^zBM&=0^x# zL(WL&9P%(FNtA`Q1~vo|!eWwgoYFC6=F@LJq^27DANJk^oXWRrAKr~5b0tZN3aQLv zkwOzPm(24#6_HsoXC_2Zlp>)>qEM+MA(@Iq=2;>c!gt%ui ziAB=UA?dGoJc?8Aq4S+BToj}e1u2HO=^L_4d(H>kq;)pyIg%T@ZfX09eZwD+`8MH? z$0iOTI26BGzrD?3BTAHwipwl=2CWhbg-K_?V3D0YqS`=C>*|Jm?FDrdg7l+EHFWam z7W$%M^T;#R;8xd!$EPOaTVw8ShZyxhBTaZ13p#q17P(zfl&F8UmivV zuke-{Adyh(J$I{il6>jY#xf3*Z_cE-l8IsQtf1Xq%=5cNmatx0u_@pTC;hSl<;^VQ zXH{tJ_KV*%RPLO-hETu!RtY|AC z=Hj9mT~sfR;K$3C{lNVI2UJri{W4j4omq8ZK>>)+z-7KfKmjNlGHT{PTCQz7i@vsb zC#~QdcXu>FC@$8fS@)>W6=Z_Zc^XU?c@gU$S5;B7qNCfX+P1q|Bzd+iTa4jmA&&s8 zC=8Fj?7411N2Ht@Zpe>+n=cd%TOVaAWkZ> z%dGRHAQ-&jYi|I?>!)I20FKX5L*Ix7?*f1#fscceQS0=HEjK%TJ$NY4#m@~K2JMPS z!qjJ|yE!`}0gXNYC3VNe z6D>9llAfPs9G)v|XD-|Rvf|+66xHWXlg$Z2^V5R@l~b0KrBU70AUr$##79W#+K zF)?}SJ7#v-YQXi>R6rzDJC;YNF-xj5V*-C#sSgq(U7tq6b(y2y7wI-*lDp#dq=?tPWnSvS#&a)U`!;Ik}aC#Q0ruKPgey+1(CqJ}pg6;Ckz?+L4{9 z8INO@BG=Go^m)9OJaofuVa_cw)k*O1VCmPaS%dsL>d%^yLPW=4J-vsMxEbqCemoo* ziFg!yv<~`H=oaR|d;Ih|nWiBNO)FsF1bEX9klTF7S(bZyQ~!-`4zsS6_Y<@ish=3T zo@6X21i}(9uw$l=SnS%xn>n{eEquKQx2Wh_w@><*Bb24c@kkv?R(g*T=eA^N?4to@ zefBJLCCzCEhuph&jrkcH#FK==d-^^my9nkmj@%n50Tr3}>_E0WyK1Tmol$vRl$4yV z7Xl*6?9nEsrc61SXhxfEz{-kjaZXA*P_5TzXkLe+Z${Br)oze~nM)X=f#j_N0@p&! zKn@qWUIc8@ZJ@5{7|NV_+BV#0fmzekMA5jVcRjopT&yghR_1m3WC>E-q#`%R(7yNF zT$Z-B-D6X5jFg$eFWMJ~^GNCqtPd*KU|*Dq3{u0h;FctocZRzpCFfBN>owEd8u*3o z>5`(l)wSAi_3<|U9ZOS%bL;oB#;N-B+w!=ecnKX>w6xr)xm{l8FP)gcCvz(Yc7g;1 zsT~<|9ncR&n5h~{p_q-%%aBnR&L3OKhubHO00op*twpG;i(j8eU*+d12+}E1Kac6Z zm66>zwg#E$k=By%3gedU-~^+$0}^)9iGa+w&(9%rDREbV&VaGIy&XB)yWD?`#`WFZ!A!mAomZdGV4Zz;8**^sS7FVqo9e zCwU!w(XQW|Wo6GLd5m+^yaItr_jq63PN21#?jBaRSdrsN5nOr_WaZ22kqk9D5PrS3 zZ)(}H0m-?ykLbMNYUGMhnPKx7o$5JKon$k>eU<9Mv3ZJ{0W1CPM02cK>m!?b zGx`v^Xoj;$D$IFNmyIH2L~oP2Y+{1dz@XIKU7L)$^JD?=_LS_=rKSQ&*)Lo*bv=jQ zi?z3+AP|m>`<~09_6Q{^f-CXzOxv7?q+VEQ?q&1v+N%FoLeh=28A{qowIckU?r zMTCY@30=;;cQ2OH=1peZ-MekCmAs2QP$JpA%4g)Z0UDg5%Id^}WgeS(ct(JcM1mY> zGy=;KwxL$9H4SJcaN;N<*Gi=+ zu!%YMDuvr#wR|>llDXtUjER+%T-Lhssw!?y&P~r-b>6=h-NAtBgKu0`=H^$j&I)IS zOHMtFXz8?fL2Ulwz4;x}+xOtkH@y%Ze)VdH@5zq3CLh>dfE^{|K9YK=fGVS5k$5v5 zg?n*iL{UeOXzP3Va_fhhWXJi~SO&}b=@z$%w=0(_ui~JX{C0G^y62aA_59)Y@gP6q z`v$6nS5z;$)L84@zD@JmXh~0{{M!5aN!tGB;Brw&jVknMuuaISs+zA+wiFcQxAa7=@qa1GuUxT%k&Ht*jrFZ^KcS@$ZO zAm$7btRlSRafi0x0s<-HFXB}Uq@9P+)ux^g=)Cc*z@bhCHGm0vwQne`12!`RgEeLP zfc59Q&U67MpYBv z6QiP1yqKG4!Hj@d5fy9Qn>U}Er^Z?ojLW<1najW=a6U1yaH1wU$dcZbd+Kd@bfS*7 zEd#?u+VEx)`#zoh*3OY$XHD>Q^@_5_ywp$1u>L4uz2or$bW#iOYtR^| z&ri_^Jw>O6}0PUHO;QoX8Go$}z3#v)j<*PY;gVgQr#HeP6@bYH4Xf^Ub>A zk#s%J6%;Fi7$u9r=_2{QYep8v;v}<|S0z(4^UbVcmM_=F`gwMp9RpRB<$;#YflT1|OnzNB5&1prwTP_#&Cew+iu{5^u zKMYP{(JZSQmTT}!RIa%uV2T+L`S!;JMmdr8QHR>+OJ;r7qx1UC}kS94)yjD zjn-lGWyT6HPg$k?pFV%Cpm>OJ9h2+${0JZP+2*{A=G(evY)n&`1Ro9Pa?(|oRhPtyUm zd}h{bLPnR;9BvIDV0HqSkyE>7p@C(IH~az-dk31BNC~1UXaHH5gY&K&x??7*~CQh+5_Al(MEOFpN7N75+zuJ zgM&Mp?-ezzTHZI@Lc?q%kZ}}`uXX5uP^NEyU#ZU^H;brUw9OC1_ zk~B8U9=&cCGLn#=lXf+qM+0*|1@#t&LY~ z7t`7P;zj$u=+(ro<#-K7a^0g>c}ROVDn00gcbm+@O7c2}%+cre_8}Wu1s`4M^NTan z(vDxdTFByWfK{rjc%o^qh{$rEnudn!9FH%i1w~xCB)*LwErkt`a2umvwefw)Jnou4 z*=_sDi)Ono0-K9f1Mbg9HoBTgO;u#$=2cYgUXPEMO1|v=jW7B!VnBdU%3SV;qd44j z$0x1gN=gkNrFfK~Jk#@=voCE8b8%6Tgk`(TX9pD0*VTe!n9WjG9>U))zCcQioE}7Bkk4|OVgwn{^ZaUt zibz<;!?h3kZ$9P?xyAY1m|sFdLQYO@XmAk7Jei?dZv)1WXWdRn8)C!Kc^NDrwc^g! z*0++hhfx+CXnn~d5Ujz7a%}bmxxZuH9&jm?0|SIv1fH`M`y4l(Az0RkhrTSfrT)vw za^DSxg;58|Jn0!b7{WL@6iBCedah^sOTzl2=ZN`)=qdn+T7fnUSERroU-^Og&Rmk3+>{vL@wy5 zoMjnGW5}tgih$LSa}fA)2GJ5!|7n(7u~->HwSnK)d2^oh?F6vb`ALBU9BxeE#3J^k zKL_7wx=pSlMwoi_tXWc;jjrtBeHsxxT1yLynlC{|g@is=DS!+Nquepn zV$(?fDQXi6TE9Ooyv@HTqB_4L`tPYv74B2@SWF3`BQiI@_mkWK0mJfYY9X9 zqc$x$3!Zo9<*BKuj69(LRVOFQssu@<_UbX?X={m zsYAsuXnZ+WBY`G zUCp|T4H{RBA>(tyJ9V0Y-XH$DtFEAbfOcuc$&+6g*3_21dBbn`&AD>ORnvjh7t^+! zC?b5Y_LF=4*LPz*OV%^((aaC4?ip}ZM@Y#NU z6lH+P3mJk(iHMJ-XXa8i*3=Mf#?sbsA;On3EPeNdrJdCS#~x~bgJ>heSA2t-1_l}$ z>l{Uxi5?&?Bzs<644}Q4na(F3lz2WV$@Ynq$(4;~|GIJy5TMZ2E3A8zNHf@c&?!_{ zEX9!_Xy1+ej>#|YwP!~RUz?M&VsE6A-t@)M@qy>$KAR4#%g)+an)hu3kv#1JXla9e zfo8`5ZnAi7+sTuwDfUaGIxzNbrBz$#k4&07cY+z5R@k#Cps<&cvMx{SkWxfy>Q<>k z$U-`v@&x^1!oDwP1`@LSjvEb&`ObGb2;+ZfXc%f` zj;L&>{~$N%K6gEIy-@zZHnn>WUu`Rf`z;8@-HI+0wsv-P<()p2R@C1y1U8I@*RS{5 zPC1n>&%5LxLAg!sKxVqGx}K!*3tHcZBuWqqm~3*Rp&D0(W=8~^gNy`M_C zF|V_DQkDnfj#vs-UnM!KfvaWVGlTEva^{@(<>lv}R#Q_0L>196DzE$6sMXo4-dJ5S zDK(ZrN8uN|mKyvU zW6wTP2q5Y7JyjBp{dEPeUfG^*a1f}s1h1uoSv7l>tvRVEdrr}qVC7oTnBBNYZdGn78(yNXg(!RB4Py)R7f&`NcgnD8>Uk`V(>_rY}_Q$xUXlkZ%C=WNNI8Tp-ANekW*cvg3E z+@Mh~{cuSPbsR+K!NVN|BN16PuFR#k`&O(#bQqD$2Mzm0@#r*3J z6T7N}nNwUb2s#f0H7}aXoo@4?VGmh#1<+U`NYv% znML9fE)5M~)YRvys_aT;j}1KG*i0K&0IhMv-A~ z1Rm%qA$=lxls%mP;O4$Z59Ega9nW=q3iTOFFKQMs`?9vN z0c~U%X&M9WN?7uf2GIcq^bCQ8T!MCaKr^(-!Keows--vyOGk zmd?_W*-+6{M}|a)`OKBHwJ&*R@}yOy2<}AZ*0QpLsR+U{uz1Z~RRfg-+9IGg2GVrP z#(Jz8_SGyw*vtzix2v=3nS25$t``DTFZfzcOn?Guxf{as0M6a>`kL5H4dP?_g7+=h zb$9j;y6@E*7WvXpU{pqZI@DcZjTEym=uxWUg{;uk=jj2Iaq07-lioZE4lEDfz_!G) zL`R&vv9xqaDX&oprxbbm(IwaE-!`LJ!@Zj~EyrSa@{G}u9$rJsvdTg|U?h3lMW0H( zcpxtIqPZ-fqKnP<0_6eVga8HdeEVQ6E6(QD!~~on1lVP_(5L7hcXpn9DCTfqJ4-6r z*?OvR9hmr0(xJK98(+&cWhz7tpB=;T<> zqy`KGEi1^NP9XDKES6DnAKSK-OV5rPmG!&Yr{>(f8^S25JHN+x#hyFIzjZb0%_DY; z{?nkLPL=)A6{kl(v*l?S%H%isiob7BWQth9&b_^ssf!5_H@o7gZfp^UT#{= zrBU?tWBd5A=w%Hx>E>D1BkmN&EFo*Vf|62Rw@|PH^>H^8ie9NNxpE`0o>{(VpU`7a z12@;pQWRXe-$EbWXVrL%?$Z=Vj7L;B;Ydpljy0X%CeEUms zxmgeBT<0?g!(YqH6moQ|PDnturC}(Uk`6U2-fqrIyh`cRLNSvE*##P&i-Fg z0z%N}zDdpDU|T26l+$VOa5 ziW6)D=bv(PBsl#L5#!p>cN96f7hYhE zXO=(gvRN#?q6?iUSH+d9sHo6i?l}Xn$r1;i)SWxYS((d_CjE5#+S0OYPt_kB%i6)Ej&8YoueIbloN0|5`}G;f}g$Q;hZd+{sJ88 z1pzAtpU0vn+m~ttd%F(2zi&|+T^24mGbjM(_v49sBk$84&m10L+%>xLQO77Xv*=zH z?SX`TTg&;IYWtr(OIVW>yF-H?6+x*gE~sj%)XqgU!|WGd^{nG`Z6lY_hAFd16Re{f zR*iiubeun4!om=KX3yrxLuk`|#BFc;Mn}M~-@IXt-HDRECWcUVMIqxOJodq|sji4P zod$<*bv>~@P@H49V zF#WGjSt1}04yU6>j&O;;{Tc&Pr>>@E-F)we!)_3ws%NtZTVGH~zV9&*i;km67aBR_ z-gw~lD3Fezy_Rv&t@Cq!p<8UNfxsgwM|deO3b+Y}msw%EAm)BQwLoLOdF>8OtQ7C- z>-XE9Bus;-vf}c%B!WB|TebPeWE(|A#adjFawA1g+Zr0Cq^6p{5x_nrP|jnd*aLQI zbYj9271@%<^Ql=o2Rom3pSY&d_xSwkcJB*;zO9E80Kmh#yM?2x4r$s8hoc!O4-AK{ zuiLnZxeV^q3@U=S56Rw4OFP51{Ytg5nVFSGEGl;NMkku9mMpJ3yruHU5ov!)R4(2D zWz6_ED%P=AVnryf+2=-Tsu--K>8tx71uh7oOjcr?Z?clur935bn)A`V zS#r8N7{EVlF!#{KZVLy9y`^U9UzefwqR^&UvN0Qp4vENw=_tA{fX|yLT&^<)AiBWFz|%w)>;OV7WD%7ui50Z(cBp6A?}T{73~ zxANe&ce*&Vi2KY=p%tm9HMw8Nl_+cC=C*s3X7h*Q)AOFy`+WRY_+jxwF16E%vh;wT zA2Q-dP4#aSC9&7RYs*AHyr=r2i2kE9W|^6&4QjV90I3~H7Jy3Oi)IhqD7i;W%mr=C z=H(9e-P?zTX}Ft+F418fUh^}pfFHs(!8rHdG?$9Ga3Sqp>V7Vd&z(UHQ``swqOuX| z=+UF8!Wqv$o`9_j^lGecjHX$|=nvFn!o`b{NWV8%Uc^cuIX|xIy*I+M`_<#~=T91y zMQv{9P*KJDgbGus#1uPob7v5Kp#=HV{yOsH@|qe&X4nJ69R{~<+Hl986;=6ad&Cky@4rLmmZ#sfe z1z+11`5SEH)@bkT<%}+WLv?=@+4ALFp@pUEY(Q8EdU2$0(T4ZT@QnzYR*!?XjA8y? zwbH%Ws6J58S)I6Bgpch>OAC=-y#0xOTmnAKd_(p@a=`D3I+KwQ={+?KyvM|Ft0YRc z*gU{Xft}&?>(>z(x3|o{eLJG8gKFKb^V*%-M~|9VnW<|i^O?L{o$0ZwWU@VYua{R| z=u;0AkhF5VoM78vb(2ctt)XT#+h!MWU8D|?Gp^GuMAfSjCwP73bv-@vw`G&QP0_Br z`M`1Hv5(OC6!g9nOPJCY4IAjMs8wCdt?e8?5XpSy67wpDi9wCeE}ORT)s&WQ77|+X zS#d@M2$`!_Q!t_(eSJZ+Y@Y?egdDd+L+as8H7?1SuO)VC*X-22e*#^)=cjulFUQ6t z%F11(t~Y1%PXX6{SqKXfY{Qbyw-JHpP#6KQypUU&tuF&ssN$ZDB_CJh7WR?BYq2c{ z$v=t~pRB!(6xOSiYXg-Y12BTULsgY6B14wyeoCB_6cjhJv*+hm3Ol=@D@I@ZN!;v+ z(u2@FCr8EVNe{fafa%Fes*Nn`)>$|&;vmT{E4>XDyzKdN`l)K{MP!cbV*@B)4Ff|l z`o_y7mVo&-gh{9$VVZz&=9=6n3RW3P7LKj#(^J!IzP77ZW3O?ardT1|{jO~bc5XqA zO~$e3j@8BNKy^f3n|;Y#|MtvP9@9KiK(imD*;pvLo5;Fpo3ih?zu04>tJLBNc8(5k zbDRDA0CBYJGs4Cc)xDN8R<`gC5mwfmIkjuI7<5D3p}qU116Nsn!ReqzZXx`{!w(Sm zz#Xp<|ElDPa_e{=5-*^0DUoCU0VyS_N0 zMR%W)hkolGz_~1a4hkWl0+=421rIjJ4Bx-M#qoFsqyvpPxvkhvqejEc)%liYfj#IB z;18ja@wL#&p@D&mqNlm<+`fsH(rz{@dVEvb+cCYEMmIdzFMUX0rmn1vgPq+JD2lq! zV9+t%)nDYQ8+EEFWZkf>?bFHAfTW;r{rrZA14g`zVEdC9+FGFPiA2$P&=84YIArF} z$Zm*PQ6765m^cK)R`pLreI1>E_lwe@3x0lnSbsqwnYGj|rK)wLWFFz69JKwx6U)fR zQ2am8n0;B?QC5A&u5JAM+}vR=s8egqXHJrCJi; zDeJG#*vyW4NX9y$4X!W_gCFt+LPb8@&d;Zzp#0`E)(uC-%CzRRTe&1K3=4F#_NN4w z)<04Uyq5tO0?%$?)e(&$(Ye~l&6uIfi%)|qxUhc$CPMT0ap1xFKlhtG|C>{>wWvxUGna02huOF2D`&>*_&rhk{b7H5BOu zT3|bAbswul=Q8x0bsg$Iir|vZViF?&AtSaF zlr4vS7B2?e73J_%H7ysxtY}2=0@Tzz7;&|=1(AMu+1TgL6qJ;{TTZ-g1{w**M1V0LKobL1ULPBMJxN}FhR*2f1Wt7=>= zKwEjoYxeL9G@o#?R+c!!!6~QVbN*Mk3O|iXh z4tx>qx&e>}Hj4TLlh7nHB`ceweo3vb>-#snrbU;fh8?4+!MPb3S#gt2PC!xHOx;Ci z@#u0;d=5--AAbH(v!?HqnJnvpBP|oVuRP&>1?oVB8^{kL@0B?t?()sq*qk%2f{KFt zd$veEW8*R~y|46>!Zkpi4oKgI22&H0HQe+TVIB0sHci(GBGWSM@Gvpi8hMCYr=T6M zha<}oura!Q{He5g{Rh8_9d@bfO&_V<3 zg=F%#*;&@K*MPFys0y9i`rev3%O97QZ$qZ95)s!SpjL;MkmbA^ zoB`dMpC4m@bWtZCH5n_S?Zl;}O%Sk(l}bLOs91thm@lF-Tcz@RzyjR9tLVf>DTL~M z4oH(zeH{x<6psh5pO*-zrjR3Y9dD7Ak~;Qqb^-t<3qeglEr%uCT<=b7+r9e%Sn1G- zN;-hjAom@-FYm{Xi6|&j$2$A+wQJVG;{%>TOjHz1>s7twP9)u=br&;l^kYBF+c?2> zQd+$^(BSRCjUIJ2T5i$^+VRE9?@BB_m*bugIEI4Gbcw0)@$>_`5>6)EOKo`ZT8T|y zKVq?`)RZ!ArbnK3N)U+09myMpgw*x=@Uxb_uTg#*f6CRuqA#ef&dX~e9-C`AG8d5I zzUk})t|%*u8@zb-lf24P4(AUE8oU?Hw6lnltv`^57p8kn<03@&7;n?R+Lx`}-Z6B9 zT47Z+MT0m?O_$=E*ZQZf4DgxLR==cR-2&`v;f)7qMj9x50NFOKM5r%jH#*l}X zE}?FUjt8S1-C+(ZfeYb%g=zdAV02MNPdDDukvmezK2m2Hm~sEkozd6H(w0YV&`BXn zV(Jv6&E3cp)-Sd6j;3DD-JJfx!E1CGK)I6R1_F9kC7sfp5m_J*g1fN?AJ(#@ViJ4- zmPed=#lWd8Hx5}^jZQc@P$K#Y6oYGxOiV12Ay?)Y)H+1x&?xLki#@iUNXtBn_!_nI zM4)83W03KtUD!5WRiwd4Lszay_SA4_FR1cPy-Vq5Pf>&KUZoJ27@GX|cq)V>+pQ1QimjZ~- zvNd6`zI~y8NKnS{bhX%X&z4hfAD}qs$a?m8CXY=^A*z)!J1+zOSnoEnV)7dqdL6sY zd-Tg^Hwe{}Cu5ofhlSZTTnG~uL(tdog>KEe^bF&4l~guv7Y7H2@O?ht)2*xegRdmK zIC`x4P(!O!wcH7dqGd0EhPDgksa+hvlt>?#c9aG=9f|D%E10RvN=vUc6T=8^k?%5% z1&}4jo8LzC8MME712&C*5DbC7;*i8GfCR+e!Kz^ZC#vo8r$H;swVHxG8UW=*6*s+W zbi1P(FG)A-uaR zvIRfL%M;>}EK$AsQe+$Frbhs=6>i3~_-(t(cuq)Su)Ow$cqz+lWY|N|B_~Ch zx68?Od{}vA^se87LfUuh4!DyeZf~f`$lBT7PESj_caIm%sncfsjO7(^l2$fbRgErC zE?52fMoFixm_KqIC}6TPJU@GT%oJ{@8=%ATfu8Rvvy3D!b9mIv1}C|gLK9ju_iI}Z zqCyEYG!}wQ*m=ECyv!bF5{Xf?w|n1fZg<+rzFk905s@;lVwP)&CVrZ*>92aKVpCdu zTjcn=w+~TINID}KUp%RycVt_!A7yX0G;-t(WG+E)@4I-M5|guR*wfXxa*V%bZS;KY z@W@WY`h#D$%V+}eaq*h zD{=QbL&;A&Qfu^G&)XBxO}!*oq~Ur zF?g@Cva$_IjC zG@m-K<;Jn+&x3knlW$Y%8=r045H49c`3B-LKQ&(4&RoCWs;VODSunUr_PxKlhQd#tJ@@wQG=#O8p1lF+cQaxl z1oD)rd6hbfkXX=lCMi3448>AIzGRNeuORb(x z$!fX4w6V^p~arReGDtzUm}VcTJeYLk8Y_PG=kSaytP;`Cf! z3exUJ$%DqxqcNJ>RL9-#E2XNS8N6i!qZxlZ+^B@;ddv!ckKB3bux@1kd4uLy)aFwo zY}~NV`{qxB!f_0d&vGglg_&=`Jb^i!GD?|dx4aMK9c_M#O`95Lp~n+;j*@Bqk=1AB zczAhFeDhs_HdxAs4=bNM>FzE*^#*Pbk!)xgYgx0M;`3O(=hqDd%ABjYkKbpwM(C5mhHIsOe>-4DAaOfx!{N4xN$&t>zfC2cg`X+FnwHN?<_+4nUfjzDM& zo!;D_g=GJ3lbmOmi$;H0tF%iNjw!E4^5GU)@bq&UNAhvP4{#KG^m-?@nN=vM zZ2wbI?^=5LD1=hMfc>!|x&D%bSCYHkDKvMH;kJ984-_ZBk` zp>Y%{f{}9b`sSC${3$M16T;R8*vH749CUj?w^79SMFc8g0X#mcrba6k3!q;1k@&L) zj2~*0zZfz!EF>0>*4JIh;zrLKc<2kwd&g@P_e?pBnHp}KHKIxwQwLhz*1`rg6Y#4P z6_~_qQn!z+CT$)MklTaeBw6`aNggw_Qt)xH3Y+S%g|27@oX4;t2H;1uYez^4ppT%~ zCe2LEJg!Hr8(B|Xy>cc5UK<(B2F(Yip~w$JoCo!QTr5T7UDOz%CKI_IHMMI(^n1xi zhX#>J>~?03@s1Pcvq@Fr+FnuNIJ9JMxYA~=B?gSK04Hu`_kU*C!guS4L_Ju%{H?}E zKxZU#DRMGfqJ;Y!6mI^L(s zT!z68sAM2ts_A2yvWrp*<@d;7Bz&rcQ!Bd(#v=CG2ff?FdY{}`^j6}KDCuy_H@1WAehC~a})qd z;L~&-I4SGBEH9txdl3mPM)-6haXi_Xne_>d^dQPZ@Nl`0GFE$z9d~kbK`(bGwf}YE zBa61Jc1A`%v`?CwH^!dtow6j2CxNK%mQIl?YL5`(%**?tQJvw9@D#$d{jNv7me5fL zbbS1ne6Qw_?Rj{w$Y05&CP>d1uGz;1bos2GnSO&y&?I4yA%T?6L3 z6^{j=@8dE*KlX2@2y-uzhUCR0>RAuOKuSj=VSe!g{>Y6R`3Gl!`=CN-_>;dwvRf)T8 zngrRS<6~kRzqu%dB4)WC0N++5mC($}$F=x66OqLbt|h5OaJ9saSQ@US|4q{?Tc!j0_uDxvlgoMmhWq zfM`xhNkRB&11oMsB-O6wCecV1$v=BG9Th^p%W6dL-A6%qkJ&V(O>_p^(I`LrRBU2>Q}W=}8>ZO&$Bm$ z5=8#c&XJ)nW6Ichhf-l%M5u_E&d>s6Ns-Dw|2&jxy>MN9qZPx-3qTn0&;s*L8+Q#1A}RZW1IsgBzLb?d zw^BZy-=uFK8%@`D1sRWd&1Y<9`S8#scjl3|bWzcgZ?oW8{f=2^#yO4@&kUPK2A1n{ zo+r{JQ8CrAJX)qGKb-$4y)JCCFXN75SVcTHAK2sz#QFHaCx}QPmI{A2U5#PQn#Zez zd*zT`1WH;$@67A>@7;ULHX>qW8RZjzt`W{NHgSuV0EsNXqs?2+Ct~|PkQU1w_Nzvv zr5^s&TbEx$zLUrq%Wk2dro4OS4*D`hb0~%d1zA{H7Ah-&@IB2bE*!BI#xI_lx=9{G z33O)sC))O6^X>ShEG9#}w6xU5+8RY^SH2WsYl^!uHMQ${dWQ>fS8q>4Hs<<06VJmG zekobSNzTK}yPa-TppFsQ<=WcXbU&B+3m4-nFYrkZ?c2z@C9VQHb-m9us`DqDQFMV& zfY;jx`OT~O;b!5XlWm!~LR(oG5bMxIOO_)PGv(}N#Sv58_H-}TKToojPm33uz_1YjAnJ=5-jt2nP+x%D@RG}3DHXk);XLg_bCqvlTf_T?hxZ`ohisNB z71L8=evlafC=dQ|oAE`M6Q#4?kP=%?!_EF5)>Uo&ebcScv8hfMI%l{Mt%K z!~$@C;dVF{8w<08d=IS2`MSoQu5K0yPwgEH;QBU8dx6p; zTfS6umzWLu=gyB)YqSLv-pR}y0@|eRxmeLhKn|bX+95r$WBc}6A#VowSvEGAUsC_6 z6s_4KfC_Cdkf`-*-r2j}S*y7=CkHq{)eX1rqzAofnCpAX2UgSl>W#qikDKX6Eb~lT zACxXI8&kNV(cb?0)90U^AL7Qd{aTG(+=~|%R&VgYmH?SqSXnqUhK!)6BJ;;7)|=OxCQCod4zkkXU}t^`59Q-dEqTS~|t<>-bgoZrlwoS4qEZ zlVWx0!LSR)XA@q1JwQ&kA&F*o@+xa%Ad9s?E*J&&@hndxy1+mDHvMG)SyamIUh;(;_mO2F7FlugMYft%&6jF|Ho8YP_y+5!U$#gCI6sy@$D! z5f49gifFrd{LxAG*|Lqh#l&Kmgf|@;vPz7Necm%xx<5t0ta=WfWx{T|4>=|RChdhc z#lnwq^6AQk*H|cywR+y+{$2Ejx?%=@#mhkuPO_#mXp7go+%L* zIU2m^<0*oDw=7&MRYm7uR$AKq*hCvMv&Q#tkE32lQzgo4%rrkEn@$QDGd#YR{HLJ8~ zWx^U3maKJZsLQ}^2GgRTIUBdZl^fIQN-bW%v|ha^wRu%2^|y|Wa3PW5-6!^XWzb}f zuq|vPaT_0zm*1i_r_UJ6>v;2FuBw&yR?-{=DysDL?IyHN4{zD2eW>MZ$9-?Qyz3Hf z6N7z~s~I!n#3TJRRdtFSn}v@bq0(K!Tt+oDpY&0rc2#;h(%n>&-Z*ey_MSjp=EVcs zn9E?|Zwk{WR+$bYPfYIn79SaD(AG2jA-7C-6H2fCwOnh+cQ@$xD$ZV+<}pJ?8+o+w ze31gb7mMpv^;eKSm8H6ryScas2?`Il2aGfpticSb9wY2Di=3IkFU zGIvuE1Gw;*y!scI9y6PMY5k8U&P3`T`A3b9mp!(GxQ@@C7x%APbVcuWZl2J`njaM% zZHmJmuO8f7Di!x|ZaQNR9cele^)u1TWIwR(bDhGTGp&ky=Df0}5%4(3m2uN{%?IJ~ zk3-@tLjEd~L2Pf! zUlj=?(&l|XY9amyKH`<_*9#I>4TBm$FRNiietZz{jEp_YNPAnszu8LsMk2L^AJJ3t zm~pC6l-v*;?3P(wwfu~FN^Y*ez?&{0=d(WqMc;V%a5>c~3cW8uq}LCw*}Pe~HdptH z#zR-Vd9#jgyAqHwxzuwk-aBFm0)hJ)lQ*julRlXp7-Q_5y;+Uz)WTy@`mE3|7yR!V zyy|fi9}73Q69;}3mkK>k0j#eZFa zDa=dl|N6`S_m%%mBe0l6`TxX(b28x$QC|UUwwY*30FBG>#)pI!y9) zB0hm~{-vs|bBkiN6_hlAB_|p9X91EBNetgb z@tybk@m7=m^(z0o#w)&SqD0z9I{5v_`$-3IynlbRAG)oEwrlW3oXLNpmmqW|j%mVV>`;Kogu?IXA@(=v z!H2txbmIR$HorS(i6i_RpFh)uu;0Wr;{Lw+@R5d{$jpClTm=3GUA*BV5FsER zh%dws;tvUc1VVx!=ODq55J)H_3=$5BfJ8!~AkmQXkQfL7A4OYx(gjF7Bmn}1JLwW6 z5rXy-+mJhu97rzYE+h|f z50VeL4=I2YLLNZSZiQ3?DTWZSjz^HkkSCB*$WzEO$a6>;O^{~Ddq@l91Edww2KfkShjc(XAzhGeNDrhJ(g*2> zfK`|@2pNJ5Lq;Hr7LiD!`1u(!1{sHZflNTYLM9*QizaN_qg`gP^~GmREj z-X9tXk{pz|V}4hgU)SD0(`I4q{h^Hz>AI($nSt5wtv7t6U)SG1(`RA*CG-*aZdZxj z#P40HU)NxvKeF))Yw&_D#M(o6w1ls;TVGZ2vdZik9@3PSK}fBqui5Wu`0MKYCmQnq zwK@}{MOc4ALnSRj$NyYE;;27Yra#l~=gPe>ip1{jx@Usc?~E5eM*i>8=jW;|h+WXa zo^tlgMU~(6ZutLc_5QOl`nh@w{iV~7z3T7l_3KJ5{0Fn2{})Rxgt^5>BKE(;jwM8m z_-*dDc2LC8eqO^r)9a^27yfI!{FE2=_P;+~zuI+?KN_!}c3tG3^g3Z;YxMhi{c7Pw z|46T&7G9LJIO4o6hyL$t^Q(RTGi`p_cQI0n;&ZM4M4MkN{GVy_)4~(`l?8o5)E>M1 zXL|i=*Z)K>fnV%8vHSU9sR%#ncds3Bte-4Kd|1+I_ zT697u!cHydW$nBWjr^UJM&O^U`k(3b)2c7%^<%sUy@)Z}ro!p?`{VYjbr<^st03@; zbzjg=;2-1mBWm}12i8Hi1 zvhCO=kKY@qU+wyzY4p>s6T2=Vh8&`nq;=cD*NO1qe^0Al?fai;_0zudAtp?$eZQy4 zueSZqH2KxG3zI61wH1F)lV7blu{x~5*MAmy7W^lBE<)OGaw&GH#`06YqYrV6pLYCD z_4(D3i<08p>aB?k&F|^+s}28CeSWp#Vx$#j4$6fJ$JKuKei!^F`~9an{j}i3j)>4{ zN#{X2OpB9_g6*(z4e9r>@-dy_CPXDPs zKP@$pms+O!Eb#ZQ*{@cb@WB4$-v4Q*iCqw(i?0)-;vr>Lt8m>AH6r@6()GIT?~T{5 z_WDotTd>%Iq=o$B)1cqmoeLuF_p4p{v$0yR*+Sn(37OMyt}qTDW>?`8{%hGnLBt^c zE^UPVVYP)xOxj##9YMLuzD~p7*7_ZNh-3V!5Ar$x@hT#Oc}T?hMM%BY9YMdR#XsBX zKht8tR?Ea5{jJ=K(7)K`A36|g>fiIVkk?(n7%b#gslI16snkBXFwL7P9C2@T*%zAZ zw)_+kA0s}Kh-Q3MWtx}zp2gn@4S69#$cXdei|@N$+q_I1hk}2+hIrQ@`yFP)y9g`; z?{^{oTcau;Nc>lYWJ0or7?2$BeG`sCylO$KpP5!F(hf61i(Lvo^rA9LR(Wl7QSpR{ zx)y^fp(Qcn3QP`}Q_k-O%7KXIEmIvdTsV`Digx$MJ1 zCiJ14C+XFw7MSc(unX_fnF}rsZa!A1@YM5+A&*)6v5m0{+Vn=)dvU5u#=eS-R3OgY z{21l@q?3a(kpU*ol!BM=9;0;$&zA5`Ochr0Qt{_|JD=oJ2%nw|)15 ze_&5!NHV~l5U*G`4kyX!f|T~JuaUtB{CpL090GljYACBlU=`FbD~R_KI1J({{>)7i zSC9Dg1g*n=T|Z)ceVszIPMHuEo`_mg&M#Blu0~w9Mc=U_i+DNoXU`mVBM>W#d5QNE z@rJ{0H$0i_}hfGCkGoiwH5E>Ha(B^txcRBDVD;3(5 z4a|tx?2kwT@e0a$Jq12(9#hJBUo%?6AJ2p&2%8Z30bi#d{~@v|9QuoSfBa3nm&bIM zg8z3+&T^F_k?%ZzqHuhj2tA3{>@_shqeU*}$BuI`?>kQd(L+2(W|W{soD0uUk^*s; zvb%LD5c80@J|Sv9R))pAPP$zRB!xf(m|m z+>==G9V2c6x3p5>Y0x?qrup-_#BBM0AL*+R7ZrYtE-}`)zv2o^Bn@Z`(u`Wec~yvc zFkzzM_|9|Tz9a4cUnk;S3s;6XcTV+ph`Sq@E$By#iLX;jFy;IXWP8r*p4CXwBF1WA zoL-wPTm?>bCJo{p)5?S$AjY^~_4|k_uv$@`;Z!GlJp;3Gr&J?ih7og(i1PoRIeIE& z0k`@RIeWrxnFmslh~J4TL`EXUgbX<_wKLzZJBf^BWF@Lgyq=8IWg@CeSTz;Bx8Xl5 z8`<~I5d8i*o`3x=i1(3^#yzhYvRV>HCGL1Kjada)EX=lX)7vHs@8cs0jp9`C++ z`oCRq{Xv>jlMA~=;f+}*^VGu7x}?YWsthd1Xl`N#>0S0Zl+w#t`Hi#MlXzbT_Lq&M zy%|Oe)0`b&w`0pQ`P>=jIn)lqNACF3WR)`2=c>Uq zd(dG}w}o-0Fh9OnX&CQolfC8M^{FeS$lX8t)h|}N>!hH^`_F!32g;YnJ9VOGSeG$5 zzX-hDS@Tu9QiZgx-)%PS_Kc$IX=QJwMS832A7{t-++U{Wilr^hBz!rkFG(nW$5>xF z%G^QkLwU${*%FtXO;6gg_fxx!e0(k?VzI)$H>;q#TUvp2Upr39w*?vX2gUnZnkK0+ zgS4-)icjr#OhJ55%$z<%g1MR$w)+nn@yd3i)f1Au3oVIt!#;+7ky4_H6^AYNM&1?g zYdkR~<0ihl8!fKn_Ey&wIcg=9<0P@bO0Z*B8B@EV(jB@Q8)rNvKF_o&8pryr+60v= zyOzI(cI_1VLM8JCgM0S0S9n!}tDaJeek?~ljnkPPuS)3Y%-T6x13sOp+Ak2hmR7x{ zmCiV7vHFAB7F6pO@4K0t*p+l?LoKBKWdhnDz5V~LF}L#X8h?L8VO@EjC%Z@btzF}N z>r*cp>dB6w1f}A-iZ7OPI9F!deNR>gx;t+UUDLET+JvtuwjW)~Dwq|L!wL2YcpXx_l*8x{7av)d1~TRPRIil6eRlcQwE)u2RkRqxWNrChbC z;LxBLUkWXT_BIb8H#??V{rM!rO7A=*)fLHQAirC!{3=ri#tceD#pAmB62~N%pYpyQ z>7S;)ZoTz&qg0PGYE|{zPXC=luIha?vh|uPEZ^=NtB`u6cjHSsnhR6!oEPJ}op1hJ^8by5qq40wWd6W;*}*AEyYirRO2^Yj zRQuj^P|Tp_rht)3a1Pr!q`?ryQ6)<)Q6Ewvm2^lWZ}ui;+Hu~EH|pyS4LV5c(}!m_ zk`L3^0iJ5@0WY2J)UOESxhzVVVx5ERB|YVX(N><5O}z-UFCCE17|V30xviuuhTl_R zr&suW4H_A#Ppol=z1!63dpo-_oRN`pe@;f#)Vs3o=>B-BS}%|HqKvz;?6G{|z}h)_ zwjwoWpq|YrTAG#Kbq1r{|4d>8?H^-YWz-5e`ztgOIF=JU`ib=wWiQB19HY4mk9S`7 zr|BNA<{{=}IAgoY1FPmM1p5t%*35^;YimzvQ}M9P;=~ z^%!dB9PfHvUZUBN8avf-_t9<7=PgTnWAa^D$5Qov^e)B(v?}E4bY`A4_H^Flj3XqS zag;u}VT>6x8dSNJl=Lq35agDgc)yn@(F?NUi(i}<>|WpONNYw>K#o%<_DJ{k)Kk4h z-x%w=u0Z=WrrrBNdUTpSDo!Sq){Hu2xrv>sRG3>b9<#Mcl&%UPB}Y0ZGm11avL&s% zO3?+3RB!6Gadz#TdI{ejZ2j&IW-WvJ+@U!e2}i3peLGHNHo)X$NQAydS;EIudmh9uIZ~Kdu*Dy zQM_ck%Dk8A%hxzHB}bvpC{lgz&YOCNohL6$y(I1D-Ji{h^+}qCQvZ|MqiaNQOvYSm z%s!)N!lHTE_QD>ukJ;fethG<5S`VMn4HWf6yQ)NZrs3mp3PhaQp%ALpi zYPx*BF#D4SHNVrEkzysSRrzXczcAHysj*TZO>;c>h&ZTzDuQJ)c zP)|G29G%wsj(^QIvuwY1e6CUm-JMiZn7W@!Sn?ygzVE$M&$!w-a`iyA`n3Dfcivw+ zr)Sn5hRB8eZF%^)iaDaVjM_P|88_2QQ%FhNl|Q9dqUo9S$`Fl0J>JozmXj(iaU*HX zL1U>}KRZ2pW;LFe#G9r(xROJMUL-)^SDocQGA z-Tv5IiyO5zwR5B~)wbJ=qQ!&SrP{8&^oy_KpB-9ju3Nhoj$4_X$Xr3;IL)PK-bQ`m zMApPQ5!0Sow=$DzyZG=k)kYwQh4VG!vmY8{O3mky5PL{oc;T0*U) zdA!kSTPE8QSN@#eN2xHq_r4;fvuxLtl+ET=4iAJqqe!7CHp;1XIw?PB#4w|1>%C1g zRF>_$xMb1D=^k%nb_#V>Po(Jap3baXVCNtCRHz zzQO*gTT(xH(CH0K@2x&qbEDaHy-)E`UjJr!*M5(agVjEV&%r7s!8usFNE8Rc~+?^8)vj+v8DbIRK8$+Yjc-f!m^M>1*+>KEU`Y^P>FuI%5O zy4W_w`VzW6Fz=HG7c6w-^1*#A#(2E{$x7+z@!pvcm!Z+Vo+%~eR-;dQ#=w!_oD9vm zIccgn7`?$x_2$Ojb@*&v4*E@zQ@h`7mraf7>=t|UeAQnI7CuKQ{#90+f}5>YB)`m5 zR(l^>%EPCy?beBBbJMvamek&s*qei6q7wFNo2-At8E$`Ym_qF8m(W$XeJL+5zjQU(2y_ID6VY6jlhS|-%)6zuxq50%Uncr?zucJw;qV0(oyDr3MPXCBlkBjI=4 zlG7*=141A}X7}jpJ zUgzAY;%m;6EgLmX&25~M!aw55bYX`PJ3j5`r7WavUhOWs}ovz(QK3IDwSK!#K-%F_wIJ;eHU4NM+iFTrthS%Q2h-F|-GN#1dE+N!ke_qWT_^H^Ve z@u9JrHF)LzHF^4Wxpm4)VE?FdCwK>^(#=_6V^58Chx|gNNa1KlrJnyHTPteH8+txx z;JX8r>T;o{)*3E7gm`OTiFS}^9R4P~3hfDy3;WHb_h|<5s&vS->hJ89bUz8~S#;kG z>>PC8Eqni-?MgkNz&^S-Yi(F7Zkkh(G*u&4HoBw!FDu-)jqPsD33OMAYL;3lRhjwX z4&Aknp)xBlJt*U9i4!OpYBe+qtvsZA!|_$wDgzpoRyJD~R?o5hxmR?YH9E~2E2k?I z$2^cQ)YcCmyh5I<7ojkwwyP8{n4CgCk&FG<3=sa@U7$k1@29EtP`bAuy9%?SuME*_Wg_y9W&fXg{7KCXb6oUs){kukOmom(x~YLeV{L}?b)!w*W^Gh zIG6yFfa6)rRG1Dk;BJ@+vtSO)g<_Zw3t%BEg2k`| zmcepZ0lQ%j?1icq7*ib*pb0dEX7D8^Abe__j&OEiZ|CHPEt|~?Pp*38!C==lhjlVh zqo5E*Lys6w_0soDEpO-gCgkoVx;s44Q~E(9VHl(T113%f9M&l+W)uWR;2YT@c{^_^ z{eK&!PY&clJ`})U7z%~35>~-uuo~9DS~v_x;3yn}<8T5#f+iP|_K*avp$(io_TC$> z?|9k#W#iiadt~99yT*?#WVoH3c5}#Ag{Em)sTV%211T9AlAe`Mj_1S?efS zbEc0UJ}fuK^vmc}O8(#9v?^bY_}_}ZsVmuZgEY7sX2L9(19PDm=EHV)8Fs^7*a!Qe zD&6DiPy=c~ZKwnBkOmo$2`c})wr+XuS@YE6R{0;1pPSX&WZqIr{M;PqFwtbgWrzcr6N^1!UAV~6GT>DBdC`rDzuiW;2Wg(;r|%jc@BTFKOvZ1SN9 z#=!(w4QpU6tb?cE8CVY=!6$GEBC1i}Lo_5qTWAL<&>n7pjxZTMIr7e5U*7!e?|!>t zxp`#4%qe4r=Jf7*>kaKCeaX9`tv*}N@|#IIe2r@AN;Xqr7R-fWm=9ZF8*GP{VF&Dj z-Ecv5ntP}XmqP+HgiPoKeV{L7Lx1@4qr-2#wtdsnzkPi9GV}2KyYCz|xPQ-EZ?R-A z`B%vPzae|8maQZCEq2_pvGmeIL%|F5El9yG=*XDd)v{T{y52ijN4 zKeCw$(_uYqfUU3tcEN6luECfTE`V653e}+obcQaF27RC}WW#(|01IIeoczRmczFM- zFK%4-_^%#WxWL?h_k=qJWoO)SeL26de6?TsTz%ctI{)e^Q&+NC3`<}s?1g=B5I%xW z;0rhnOsSbx&>Gr6GPH$ukOJdi0?dHX@7HL@)Rk;bz(?>2B-UpB7Memc@In%_ zf}v0dlVB#yf;q4WHp3R!3fo{iybMv7(0_o6@xL{rW95PJ^-|8ItFl@RQ&+O71qsj) z8bL4U1AQSI`a=%n!V*{tD_}LOfwgcLj=)hk2FKw9d<0GERE+-_;gz{&^j%0g{7Asm zm28?q610VOkOHHj2*$w#m;{qyDm(-0VKeN3y|52r>oPWg>QDn}L2alQ|9>B4Z}mOu zNIrF-8>B%F42Gdl2+Lswtb|qY7(4;1;V>M56L1<#JpBb|4Q(J9+Cn?182?iPxL1$Q z>A1J7`aOK95A-@sUCAZ|+QS5x1T$eFEP}ePk>g?8rncIw1v@71e0Md6vKSj3fth{ zA0Itp4(;FZ=jYb4{{O(Nndavc3iGnkO3(j(f79w*#;kl{om*Lld#9-@*=&cGVF&Dj z-EhI>lyj&Bbs!$g%L0k zMne&dgEg=g*28Al0$YLkzXPxT)$D%JD*tn)PaVtd)Indj{Qo!7>VI9<;o@)VN;aq9 z3t*G5iGV1Gh8ReJ_RtwJp%?UlxljxXU?D7m#jphSz+QM8j>0jh*#8&0`}1tQ^U#{) zT=zLlUCHJ+G;F}!4PS6EXp&O(@2F!uEun?BQGFT3KVIRB+Z^HpN2=7C^AF)3K8bihW z|MzqLU$SWjDbOB@U>r<>$uJeB!wlE}8(|Y{hnHaoL^Pt!fEc&{VxcNjhfdHLD(3&c zpY#8cO&90|eV{KC!+cl>i(oMS&gS4JN|Pek2m9eoI10z0&sE46@}U34|2srf3L_l?@0llCP^o5~N2qRz-EQTep5kCFk@9(_6^TijQ{@rgL`Nh0@ri>jv zY=|ky&&}zdO#sw81kLwY8Nhv&*+r=`S6U_&_TaK&8Yt~I!DcuB2jP8)YR1?d>OeeP z4qYG>=D=K74lCdpSPz?EGi-yG;e9v^$KeEg0d<R;1g)SAScgYJEn)|sEn={3zEcZ@1!7tx!|8K`2$Y!TWQ>Et< zuol+AR@eqF!<+Cn9E2ub>Td8t8e~8w*pLgHvd++)AUDKxAX@9yqjlYUnzMWL{o2{JVgyE!hmB_(*Oi#A- z6Wf2dJaDEb;cI*QZL}*MwSB|rnYeo=;ojlSH^!^<8w!Om2`0lLSPUy*B}BADeh>}u zP!AeIBHRESp&O*ZOqc}=U?Hr8Rj?Jd!EV?C@vR64E{7y&1??aOIPS(wfEjQ%JO$6d zX4nF;*D}8VO`#cdhAxl^yIY?beiG zXa_0K8M?q+D2Dm)1gwT_upK(L!3`9`2xxj8a)UOI3^~cvBQOi*z;4(B@joGtKr`^d z4bTyCAQvXUBv=h=U<+)8BXAVzv?UB^3+*5u3LtELFuTo8!}$betND}JWS%$cRgoAv z|K@SC$~{7 zJ#2uZa15faXU-9tKvNhE{5cl043@)F@C@vRJ#Y%XfQ0tM2ReasHpqwOxcR4Hi-I|5 zSf@5`(4f3#c9~a2!#>y#95ZAhpgPom_HY9f!8mvZ*24za2wiR@ zpFub14>^zv`A`JoU;<2ng|G+~gZaXI&Ze@DP8>gW^vL1&4<2~?&HelK?%BO-$IIKd zZQZhY)5Z)crERvuE-?qyFyA0|hU93|ROvYv zmcnXS18ZR&Y=iCaGVFlEa0HIRG58ElL9I@-8BhmWLmNm2ZSK+mFPYE_av>iE1DoMZ z5iEp7uo#xYWAFqVfP?Tp9D$GEbGrv;_EW|;ty`<)d4k?0mtX(N?%}Iw1H00 z88RRfvY|f|z)+X~{9zt57v{raSOS}13%m?F;279_t$)1p+KbQq?$L+tzvs?TxA*IT z)^Fffvnwg1)aee{b}F4O_iBgvHqB3-tNZ0mCwHE3o6RMX(FynnBA6VCf;tcn^`H$T zLtDs%UeE`|!33BDlVLtAfQ7IKo`BV`2G+u6*aBN&8|;Jq@Fu(sr@^oa6akFYGzZM@ zFqHroW_K8;JI^i@jXckRbc0p4mEoU1HOOai8GdBrqR zdPhMt)PP#h5E?-uG=U^&1?`|cbcQaF0Xo2`2qwUEm;rO(V{_v8`}=one(JHM^Jh*T zJ-B~nm-Y<(Ot@Hl-|wBP(t57KDQ|iO@<3U6*jy}G&4ul-1NOo`H~v#tWWo%%8|J`VSPm=T-~W8~^;iD%tkVt*()p_WOkdNTK7{=%@0Z!R zI`n^iae2e2aL33sUUFFlkHI>43f99$*aBN&2ke3`fCE)cG{itvs1B{54YY%g|Ngg~ ze|q}2zy9UCpHIAF&~52A|BOi^>sOK9iJo&+1DvaHOijrw1v)`z$b|wJ4MngJ7J)Yv zIYVnmhPJR3w!wDT4SQfO?1TOACLDv~@DaGm|GfLmEHiD&*kO77du66F4^Z>km}#X? zN3GhSa~(4Pc*ZokiR4=PUf`_M(oeo_i0)eDe6LSTyyWr;oP;mnG<@nWu@#r|Ed@%K z5ff!%=;wpZeU7d|8xEP!3(nPf&tJNe@jq_M=Wa_-w)?mH$;WQXhi=OUZp**imVde} z|8QIW?zS9qTi$b9-gR5vaa-PUTmI&@yy3RI?za5ZZF$XYu_m#c8#^6?|H{md`PQgM zSMFS#$E~xtbzZd2f7Y47Is;he#-7)550Y+>3}14~@Xv0`3vP>Lt`u+LwpKEp0?sTi z(_Gi(#%1;-eDl0fTXNEQy*lGnXSV8`Po3MTvmSLepw9Z!`EWY#O=pDZtS_AlrE{Ki zHjvKx(fKezB{`_P29?U7vKLgsg33`)X$dM5e{m<_pWK$`-Ik}_mfyQAkGn08x-E~m zEx&YIg3Xm`xa3im{M>HJGQ0hj<)%FM-Ql>+uDnvoZFaf2NV3yeJv!e-=e6jJ51k32 zGahsSS3087`IMfZ^!}m~epvE%rC*t4wmfdiBU`td@`U*n-CQKu zEe7d&Nq0;7KGNTj&WCh3wC`X0__g<2`?=kFxx?)n{+`tX&$)~4vu;aJ4eTf&*o)@}!tNq6}ykNGRgxvYFzvlBA?w)c9U*ZqK?cIypyK6u@232M<^ zb3X~{I|Q|LxH?-N`liq8gxia+efZjg@9e*K_S`%B?VY{$+Gnpl_S!S9{o>jyu6^R# z6R!Q>=bPNi7U(N(fd=*eg1RVwbUQ0Cdk|t}V|w1O&0I8Ng{MClPel3el`9Vrp59a1 zZEeX(d-kZ^BgKA4LIiQ{H=?g-d+#`kN?$-=)FUdcoGqf~`q=qbZw_xdwwL!f%L(^cxVL z^T=5)EDNoPy?T8^HUqoWm+Cx%fn zN`6C1Oc-u=TXNi%EVre%+tS@_>FT!F{gu*fmg=o&b`3T*7j`tJ0|QjY=CN#^Nc^e4 zgS&YZ_5T^`|0>eIbM(I)-7o2VN#{$tUefcDj+gYiq|4Q?IqQJn=xRB-S<)Sn-jMW# zq$d>AXZ*k|)W5qehuoI8+?H=~T=k0kJwd(ozqp^g=(haXZ7I7`A2h@JyxUKxS^3jK z`PDJIukQP9v)o`0S1wB5JDdGt$;#2?k{*|IxTL=&-7QCNOFCPQzLuk_B|R?f8l1`TNiKI&;JtFB4Nq^{k8wY+@`P7{k&Sv)4cR~5coo5`gt}eHABp*k&OL|?> z>5@K|bh)I*B^@s5Z%KDcdRvapmh`oxt0g@x>1atmOS)Oo%aTr(^s%IiB|WSP`5W_B z1X%KWt;B@kRkvlQ+k!brp5KDKj-w|h9Wd#CN%u>7U()%KzL#{pq~|3aFGs&ix?R%i zl1`WOxpL9flHQhdwxq8mT`lQpNk>ciSrzjC_T^uyT$eZB)RBCoJ14z4>C8!APP%f^ z3zJTm^ueSHCOt6efJy)BFi7u9I$zTFlCGEZyrknL{VwTtNw2GV3V8>VUlGe)6u{@{Zf`mfP|-x8;9t z{#WwJgsCteHo!56xt@L;NS|&wNRLiBbkd(|*q${5kiM97#iS?Jz60yV;OK`*H%xkA z(g~}O|2HrH5n-ez!g z^$uc=xyjbgOXTY4<#odB=;OKd#iT1HJu&HsNk2@wVYNF|lz-Cv8}JgyWN%n&~f4`r1*e%$%+?G9V%S&#{|AM)S)5$wSPcYPtyKhJq4$8%RwUd+G z*Q%1Ebh@R_EnV($Fx;I)`EJW?ZcB#S@@<=~uRTj2E!0gp)_*^%)F-z5{kExmXX!m5 z|I_ld59QqZHHe0?FKtd z-CVvtkNQ6T{?EKK_1dldzd!8uKSuJ^nI9WKXMX6s51sXK8cwotLhqPp$ysN*=sXvl<+Bw#0i*L@@}WZhKb-bo^457jI_pR0{3NAT$p44b|M!@Tb#W_&uUhFg8Z|^U ziPrz6p0QkIom!&a{+c&C#se!8~Pc=9%j(L}|e2y-~xVYDJVp?mFc?|$}en^*Cj&O2(k%+9^i*JsM%#_{8PQvpfe z37q@xtK-IfuPk%hv!r`j{=P5w^{s2z?BI^iChWW50Gt42%Ic5+UPys%&>u#?R49hB z{JF!HIRUp{C!8O;Kb9R*KJ-NxuGNu>^@}hAhup&$@qm1b_*J^ePcX*OoSC)AErv|$OXb<8$IDg5Z*GHkD4o@ z2rsH6Jde4Y@Dfbd&Jq5jjw7r;S2loqgiqL=O{5hz-(BY-!qOU=6IZs~6Lw@7VMmy% zR@i~CEbspR8ky@;KJxv_kYN5T2Gvcp*|&7X>^}_o>5QIP>0RY8)!d%)vF}NxR2|!+ zH#*7`=EoNo%xqhLR)CS_Y^%MNqAHc93=xq-Z9^2r$GQ{4od`=xb{HwMT+ZR72Hfh)zQ*(pA)ixq;$qd^K4G`~OyNy-5wAvE-dP*xgG z>l-tztrglu9=0@-n!%y93<|AANoaPe%D2~CY)Qyll9D4LqRjE49{m!GBvh3=lX*k2 zr`n88k=dYD@t62W@-)MT>Ue5|=t^dM&XJ)V3+~Bl$`nb2sfk!Rbgn^8t6|z$@w?vB zhUBX0cYlG)z59D({V}wCwlxX7DNSD%Q`_$|!i-rIKTT;%DY3S<+|-ChJH|v@SAArH zCnE6PB(VC(u9fxU(gXa=g9IA{hI}VLZO-mwyyd98;%69~%hBP;|ELY*=rZ28) z;*r}nQ;l;MvUT=?X=<|ZvDVX65ww2Z=xD1nB%1D1-k5L|_ae-tlusQ{*^R$jqFSaK zwajIf>t)!K%Q@B3)bpnVbxO?@Crqssi0Eu}K_^QduX;KWT0MV=mHp-BtL6Acrf14> z^R9;!vMVgppVhx<_dYv9>SHQ%I*q)U>4B>ct$b>|j(i$vetzHS1&= zfzPyS;wdl}Tz?VYh}~aXjEIOf8Kx`cF~R@k^)S`Qt!34P2dE334K*!Py;iw`@Gclp z(7NCKBw@WU)nYv=bwwqHQgi_$RI2{eSY{{VjOkyM9jjF5{rRHFRF#Wr&|{>yY@&!A zAp1s>eVPz2onqB4o*v<)>~19)w;`PUmovjvpWUem$h{%G(jPJEC2{muaP^l^_17?U z8iM{Rp8hhLwAu6*lB5lxzm%fCmZ86xpi}d8a(cuq*g-R;I!RThY3c+`f-%Y^P2g%E zNc~|%QrZ}TB~My^7|kgEsqSb6yvCqZV}1;6;5tB|#-Nm8c)j^4v;!0?tQz%tu0)A6 zXXiZ-HPaD@o*{aM=&2ReBEAlB)+CSWccetm2D(EUq(cTMt#ulpPK48`V9^PLLz?J> z7@ZQLlOl9lfHcOXH7w0hX%9++Oj<Ktv38bfccFHeX_t|9nrOFyR-Co! zsFf$JK4=D7vyhsJ(rkoAq#A`fr;+v`YMIazdO>fX1vXjG7c>`{4gH`$41gRU>zZ7k z<6s?PL3OJfYpEy?<~jt1!Z0X=;V=U3fRQi?M#C5=g0V0T#zRDP{?l&?8HgWAXZ0Y> zO;N=j9!Eq+R*I^`X$-z*=0Mgsv#E+4@bh^jJD)FuXbdB2qbMe+T*q=vBMQTaz9MrC z;oNN^Jkci7qhDl%e9uda)`cGfDeF4hYQTS7%X({6CEgkx84=}+HV1r-tlVMwd&EQV z{5lZ&FcN1ZZy$jDtG&hNtD!(#zZeo@42h!93NhyqtLxK8XWx>#a@=6x0%0p8fjKtS!7PPoX8)udfZ%C_; z^WZg~nvA-`YJ666G7U~i&G3oLng`LfJU?13tJ|V0t(K|A_;jJ=G5SP`uH3B5MHydd z>0BK%x6b&hZ#+8hfm)#Q30giA9X;jcx4u|8>B;zA9opO&_pfKSg+{fdx$uO_{xpw1 zVYCv;n3q7GX^nt!G9;U;?@CYn}{L{kYEzL*%e0-C|ia0_&SR2TwNU@Rb17T~mqP;l6uQ75xE%(=P`DSCz|-(7tcMNo1{{IN z3y=#$LkwI2t)MG(hcw85JK#=O1dHJzco^2hHh2#X!C^Q8l`bT2LLxMQtKk~x3~4Y7 zM!+2~3W{Md`~jYUXW=>62M6IxFtOAE5D5v;6mEjfa0}cDgP{oShXwE;`~ud&Ciok? z4e!9aa2jIbjQJ5XhAZJJ=m_0l2o%C_xC7>bPC9-LHo^<=M|c|!gNK?X3MxTm(22;` zKqt5bxe!t3w`oP<+wF|~Oes0){Zx{o#E7WiuRf-4sI z9^CZcrV4XKI-ILK@ZeO+oz<>ViK*hDUA5 zEg6ws$Nz2k-^;b^XRSh>wZU%-Mzz;*E$uJxtaZq#wjziUY|?-~4+9cGI#{_MCY%ob&a*&@udfWM>=e}QLZ%eDpiAiVq(mr%Jo z>Cz%hehIuURJH+spZ3X(fUTr~t&r5#`>N7Y6nuQ%s&!FTtti*(2h}&|z z+oBoTk{@9Neq91adxF|+x6R}`2KFrYUd)13w6$L4Ub!+=UH9#UCfB-_<&#+g>pG9| z;F-_={bBF_i*aVzzYLW^#hvpz1*}rm!qi_gy;;JVt=BhL6I1y|#mg!+FGB zS(6@FXU&1gq;3(WMR6OC@6`xqmnweePYMK&^ID#vFPRi(Ea3DvS_btg>@WlUjk5c8 zEyIKv@K<(!vE>=Y7vcJSfp~_78F*jWeLIbX%jy%hWYxCxvp|?-_X(32S(o+~h-aw3 zz_U<)f%k>>`vU$#pE>@{B=>N#b;4{FCcgxpl|8-)C-;EAvd0i-l6%WA~I;sJ}p%+FfBx3UjUE20!z-ib9s8#A-h;a}|61L@-?@#`~GZ zRYcabN#iQ+_p_g?xVn~2ORl1mpXpr13w~~9uZrmDCyzZU;#EJZ*smg<^s|wxc*)OO zT*aq;uBp#_H4OB#kgM45=kHv_Nk2^!n1_cYem>_aA{yBIjH~G4r#DxT>t{GuahIR? zhMXV*4gGZBDlTQ7Tllw2SY7i7LmC3hOV$h}%Qx1-rhkdVunb}CC1i@9JYy{avO1`h zM*e;YAO`kVvE~Ep7O*x8kc`%rBrTrCgH~d-h)Qy@>xwlTNC2X1h?XHr+8N2V0oD)T zN=SsOpb1Eg%V6LMylyTEmZ_4O|Dwz?PWrWbaN7-jfMEp%?T9jlj;f zM@H$|fkYKI`&r0Uj3J@LlYU<1Dqi;!hXBM>KQp + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SeKeshedemo/.idea/encodings.xml b/SeKeshedemo/.idea/encodings.xml new file mode 100644 index 0000000..63e9001 --- /dev/null +++ b/SeKeshedemo/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SeKeshedemo/.idea/jarRepositories.xml b/SeKeshedemo/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/SeKeshedemo/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/SeKeshedemo/.idea/misc.xml b/SeKeshedemo/.idea/misc.xml new file mode 100644 index 0000000..88aa9a7 --- /dev/null +++ b/SeKeshedemo/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/SeKeshedemo/.idea/uiDesigner.xml b/SeKeshedemo/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/SeKeshedemo/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties b/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..12fbe1e --- /dev/null +++ b/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip diff --git a/SeKeshedemo/pom.xml b/SeKeshedemo/pom.xml new file mode 100644 index 0000000..1c6089d --- /dev/null +++ b/SeKeshedemo/pom.xml @@ -0,0 +1,109 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.4.2 + + + com.example + demo + 0.0.1-SNAPSHOT + jar + demo + demo + + + + + + + + + + + + + + + 17 + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + + org.springframework.boot + spring-boot-starter-web-services + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.4 + + + + com.mysql + mysql-connector-j + runtime + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + org.springframework.boot + spring-boot-starter-test + test + + + org.mybatis.spring.boot + mybatis-spring-boot-starter-test + 3.0.4 + test + + + org.projectlombok + lombok + + + com.auth0 + java-jwt + 4.4.0 + + + + org.apache.tomcat + tomcat-jdbc + + + + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java b/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java new file mode 100644 index 0000000..0344102 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java @@ -0,0 +1,13 @@ +package com.example.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Demo4Application { + + public static void main(String[] args) { + SpringApplication.run(Demo4Application.class, args); + } + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java b/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java new file mode 100644 index 0000000..43811b9 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java @@ -0,0 +1,64 @@ +package com.example.demo.config; + +import com.example.demo.pojo.Result; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.*; +import jakarta.servlet.annotation.WebFilter; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +@Component +//重点 +@WebFilter({"/user/*","/api","/upload","/borrow"}) +public class MyFilter implements Filter{ + + List exclude; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + System.out.println("初始化MyFilter=========================="); + exclude = new ArrayList<>(); + exclude.add("/user/login"); + exclude.add("/user/register"); + } + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + HttpServletResponse response = (HttpServletResponse) servletResponse; + HttpServletRequest request = (HttpServletRequest) servletRequest; + String requestURI = request.getRequestURI(); + if (exclude.contains(requestURI) || + requestURI.endsWith(".html") || + requestURI.endsWith(".js") || + requestURI.endsWith(".css") || + requestURI.endsWith(".png") || + requestURI.endsWith(".jpg") || + requestURI.endsWith(".jpeg") + ) { + // 在排除列表中,继续过滤链 + filterChain.doFilter(servletRequest,servletResponse); + return; + } + + boolean loginflag = request.getSession().getAttribute("username") != null; + if(loginflag){ + //登陆成功 + //这就代码就是放行 + filterChain.doFilter(servletRequest, servletResponse); + }else{ + //登陆失败,打回请求 + ObjectMapper mapper = new ObjectMapper(); + response.getWriter().write(mapper.writeValueAsString(Result.error("未登录"))); + } + + System.out.println("filter=========================="); + } + @Override + public void destroy() { + System.out.println("销毁filter=========================="); + } +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java new file mode 100644 index 0000000..7267327 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java @@ -0,0 +1,55 @@ +package com.example.demo.controller; + +import com.example.demo.pojo.Article; +import com.example.demo.pojo.Result; +import com.example.demo.service.ArticleService; +import com.fasterxml.jackson.core.JsonProcessingException; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@CrossOrigin +@RequestMapping("/api") +public class ArticleController { + + + @Autowired + ArticleService articleService; + + @PostMapping("/add") + public Result
addarticle(@RequestBody Article article) throws JsonProcessingException { + System.out.println("Received article: " + article); // 添加此行以调试 + articleService.addarticle(article); + return Result.success(article); + } + + @GetMapping("/select") + public Result selectarticle(HttpServletRequest request) { + List
articles = articleService.selectarticle(); + System.out.println(request.getRequestURL()); + return Result.success(articles); + } + + @DeleteMapping("/delete/{id}") + public Result deleteArticle(@PathVariable Long id) { + boolean deleted = articleService.deletearticle(id); + if (deleted) { + return Result.success(); + } else { + return Result.error("删除失败!"); + } + } + + //根据书籍名字搜索单个书籍信息 + @GetMapping("/selectone") + public Result
selectone(String title){ + Article article= articleService.selectonearticle(title); + return Result.success(article); + } + + + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java new file mode 100644 index 0000000..9d08ed0 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java @@ -0,0 +1,35 @@ +package com.example.demo.controller; + + +import com.example.demo.pojo.Borrow; +import com.example.demo.pojo.Result; +import com.example.demo.service.BorrowService; + +import com.example.demo.service.UserService; +import jakarta.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@CrossOrigin +@RequestMapping("/borrow") +public class BorrowController { + @Autowired + private BorrowService borrowService; + + + + //租借书 + @PostMapping("/borrowbook") + public Result borrowbook(String title, HttpSession session){ + Borrow borrow=new Borrow(); + borrow.setTitle(title); + borrow.setBorrower((String) session.getAttribute("username")); + borrowService.borrow(borrow); + return Result.success(borrow); + } + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java new file mode 100644 index 0000000..ecdbe29 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java @@ -0,0 +1,87 @@ +package com.example.demo.controller; + + +import com.example.demo.mapper.UserMapper; +import com.example.demo.pojo.Result; +import com.example.demo.pojo.User; +import com.example.demo.pojo.info; +import com.example.demo.service.UserService; +import jakarta.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + + +@CrossOrigin(origins = "http://localhost:8877") +@RestController +@RequestMapping("/user") + +public class UserController { + + @Autowired + private UserService userService; + @Autowired + private UserMapper userMapper; + +//获取用户登陆信息 + @GetMapping("/getinfo") + public ResponseEntity getInfo(HttpSession session) { + String username = (String) session.getAttribute("username"); + if (username == null) { + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("{\"error\": \"Username not found in session\"}"); + } + info info = userService.getinfo(username); + System.out.println(info); + if (info == null) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{\"error\": \"User information not found for username: " + username + "\"}"); + } + return ResponseEntity.ok(info); + } + + + //注册 + @PostMapping("/register") + public Result register(String username, String password) { + User u = userService.findByUserName(username); + if (u == null) { + userService.register(username, password); + return Result.success(); + } else { + return Result.error("该用户名已被注册"); + } + } + //登陆 + @PostMapping("/login") + public Result login(String username, String password,HttpSession session) { + User u = userService.findByUserName(username); + if (u != null) { + userService.login(username, password); + String pass=userMapper.login(username); + + if (password.equals(pass)) { + session.setAttribute("username",username); + System.out.println("登陆成功!"); + return Result.success("登陆成功!"); + } else { + //这里已经处理好了 + return Result.error("账号或密码错误!"); + } + } else { + return null; + } + } +//充值金额 + @PostMapping("/recharge") + public Result recharge(float money,HttpSession session){ + userService.recharge(money, (String) session.getAttribute("username")); + return Result.success("成功充值:"+money+"元"); + } + + @GetMapping("/findmoney") + public Result findmoney(HttpSession session){ + float money=userService.findmoney(session.getAttribute("username")); + return Result.success("余额为:"+money+"元"); + } + +} \ No newline at end of file diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java new file mode 100644 index 0000000..b4cfa02 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java @@ -0,0 +1,30 @@ +package com.example.demo.mapper; + + +import com.example.demo.pojo.Article; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface ArticleMapper { + + @Insert("INSERT INTO article (title, content, url, state)\n" + + "VALUES \n" + + "(#{title}, #{content}, #{url},#{state})") + @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id") + Long addarticle(Article article); + + + //查询所有书籍所有信息 + @Select("SELECT * FROM article") + List
selectarticle(); + +//管理员删除书籍 + @Delete("DELETE FROM article WHERE id = #{id}") + Integer deleteArticle(Long id); + + @Select("SELECT * from article where title=#{title}") + Article selectonearticle(String title); + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java new file mode 100644 index 0000000..b5bf5df --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java @@ -0,0 +1,20 @@ +package com.example.demo.mapper; + +import com.example.demo.pojo.Borrow; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BorrowMapper { + @Insert("INSERT INTO borrow (title, borrower, borrow_time)\n" + + "VALUES \n" + + "(#{title}, #{borrower}, now())") + void borrowrecord(Borrow borrow); + + + @Insert("INSERT INTO borrow (title, borrower, return_time)\n" + + "VALUES \n" + + "(#{title}, #{borrower}, now())") + void returnrecord(Borrow borrow); + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java new file mode 100644 index 0000000..c7490ad --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java @@ -0,0 +1,36 @@ +package com.example.demo.mapper; + + +import com.example.demo.pojo.User; +import com.example.demo.pojo.info; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +@Mapper +public interface UserMapper { + @Select("select * from user where username=#{username}") + User findByUserName(String username); + + @Insert("insert into user(username,password,vip,create_time,update_time,admin,balance)" + + " values(#{username},#{password},#{vip},now(),now(),#{admin},#{balance})") + void add(String username,String password,int vip,int admin,float balance); + + @Select("SELECT password FROM user WHERE username=#{username}") + String login(String username); + + + @Select("select username,pic from user where username=#{username}") + info getinfo( String username); + + + //充钱 + @Update("UPDATE user\n" + + "SET balance=balance+#{money1}\n" + + "WHERE username=#{username};") + void recharge(float money1,String username); + + @Select("select balance from user where username=#{username}") + float findbalance(Object username); +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java new file mode 100644 index 0000000..9dde886 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java @@ -0,0 +1,13 @@ +package com.example.demo.pojo; + + +import lombok.Data; + +@Data +public class Article { + private int id; + private String title; + private String content; + private String url; + private String state; +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java new file mode 100644 index 0000000..4c8ec4f --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java @@ -0,0 +1,13 @@ +package com.example.demo.pojo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class Borrow { + private String title; + private String borrower; + private LocalDateTime createTime; + private LocalDateTime updateTime; +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java new file mode 100644 index 0000000..9605aec --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java @@ -0,0 +1,31 @@ +package com.example.demo.pojo; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +//统一响应结果 +@NoArgsConstructor +@AllArgsConstructor +@Data +public class Result { + private Integer code;//业务状态码 0-成功 1-失败,前端获取到这个code就可以判断了 + private String message;//提示信息 + private T data;//响应数据 + + //快速返回操作成功响应结果(带响应数据) + public static Result success(E data) { + return new Result<>(200, "操作成功", data); + } + + //快速返回操作成功响应结果 + public static Result success() { + return new Result(200, "操作成功", null); + } + + public static Result error(String message) { + return new Result(1, message, null); + } + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java new file mode 100644 index 0000000..820ce38 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java @@ -0,0 +1,17 @@ +package com.example.demo.pojo; + +import lombok.Data; + +import java.time.LocalDateTime; +@Data +public class User { + private Integer id; + private String username; + private String password; + private String vip; + private String userPic; + private LocalDateTime createTime; + private LocalDateTime updateTime; + private Integer admin; + private float balance; +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java new file mode 100644 index 0000000..8aa8d91 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java @@ -0,0 +1,9 @@ +package com.example.demo.pojo; + +import lombok.Data; + +@Data +public class info { + private String username; + private String pic; +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java b/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java new file mode 100644 index 0000000..1a757ba --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java @@ -0,0 +1,16 @@ +package com.example.demo.service; + +import com.example.demo.pojo.Article; + +import java.util.List; + +public interface ArticleService { + Long addarticle(Article article); + + List
selectarticle(); + + boolean deletearticle(Long id); + + Article selectonearticle(String title); +} + diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java b/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java new file mode 100644 index 0000000..904124d --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java @@ -0,0 +1,11 @@ +package com.example.demo.service; + +import com.example.demo.mapper.BorrowMapper; +import com.example.demo.pojo.Borrow; +import org.springframework.beans.factory.annotation.Autowired; + +public interface BorrowService { + + + void borrow(Borrow borrow); +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java b/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java new file mode 100644 index 0000000..01f362e --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java @@ -0,0 +1,18 @@ +package com.example.demo.service; + +import com.example.demo.pojo.User; +import com.example.demo.pojo.info; + +public interface UserService { + User findByUserName(String username); + + void register(String username, String password); + + void login(String username, String password); + + info getinfo(String username); + + void recharge(float money, String username); + + float findmoney(Object username); +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java new file mode 100644 index 0000000..680a278 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java @@ -0,0 +1,38 @@ +package com.example.demo.service.impl; + +import com.example.demo.mapper.ArticleMapper; +import com.example.demo.pojo.Article; +import com.example.demo.service.ArticleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ArticleServiceImpl implements ArticleService { + + + @Autowired + ArticleMapper articleMapper; + @Override + public Long addarticle(Article article) { + + return articleMapper.addarticle(article); + } + + @Override + public List
selectarticle() { + return articleMapper.selectarticle(); + } + + @Override + public boolean deletearticle(Long id) { + final Integer integer = articleMapper.deleteArticle((long) Math.toIntExact(id)); + return integer == 1; + } + + @Override + public Article selectonearticle(String title) { + return articleMapper.selectonearticle(title); + } +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java new file mode 100644 index 0000000..a811b27 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java @@ -0,0 +1,25 @@ +package com.example.demo.service.impl; + + +import com.example.demo.mapper.BorrowMapper; +import com.example.demo.pojo.Article; +import com.example.demo.pojo.Borrow; +import com.example.demo.service.BorrowService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class BorrowServiceImpl implements BorrowService { + + @Autowired + BorrowMapper borrowMapper ; + + @Override + public void borrow(Borrow borrow) { + borrowMapper.borrowrecord(borrow); + } + + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..face9c0 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java @@ -0,0 +1,53 @@ +package com.example.demo.service.impl; + + +import com.example.demo.mapper.UserMapper; +import com.example.demo.pojo.User; +import com.example.demo.pojo.info; +import com.example.demo.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserServiceImpl implements UserService { + + @Autowired + private UserMapper userMapper; + + + + + @Override + public User findByUserName(String username) { + User u=userMapper.findByUserName(username); + return u; + } + + @Override + public void register(String username, String password) { + userMapper.add(username,password,0,0,0); + } + + @Override + public void login(String username, String password) { + + + } + + + + public info getinfo(String username) { + return userMapper.getinfo(username); + } + + @Override + public void recharge(float money, String username) { + userMapper.recharge(money,username); + } + + @Override + public float findmoney(Object username) { + return userMapper.findbalance(username); + } + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java b/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java new file mode 100644 index 0000000..425b01a --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java @@ -0,0 +1,30 @@ +package com.example.demo.utils; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.algorithms.Algorithm; + +import java.util.Date; +import java.util.Map; + +public class JwtUtil { + + private static final String KEY = "itheima"; + + //接收业务数据,生成token并返回 + public static String genToken(Map claims) { + return JWT.create() + .withClaim("claims", claims) + .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12)) + .sign(Algorithm.HMAC256(KEY)); + } + + //接收token,验证token,并返回业务数据 + public static Map parseToken(String token) { + return JWT.require(Algorithm.HMAC256(KEY)) + .build() + .verify(token) + .getClaim("claims") + .asMap(); + } + +} diff --git a/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java b/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java new file mode 100644 index 0000000..002c882 --- /dev/null +++ b/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java @@ -0,0 +1,73 @@ +package com.example.demo.utils; + + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class Md5Util { + /** + * 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合 + */ + protected static char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + + protected static MessageDigest messagedigest = null; + + static { + try { + messagedigest = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException nsaex) { + System.err.println(Md5Util.class.getName() + "初始化失败,MessageDigest不支持MD5Util。"); + nsaex.printStackTrace(); + } + } + + /** + * 生成字符串的md5校验值 + * + * @param s + * @return + */ + public static String getMD5String(String s) { + return getMD5String(s.getBytes()); + } + + /** + * 判断字符串的md5校验码是否与一个已知的md5码相匹配 + * + * @param password 要校验的字符串 + * @param md5PwdStr 已知的md5校验码 + * @return + */ + public static boolean checkPassword(String password, String md5PwdStr) { + String s = getMD5String(password); + return s.equals(md5PwdStr); + } + + + public static String getMD5String(byte[] bytes) { + messagedigest.update(bytes); + return bufferToHex(messagedigest.digest()); + } + + private static String bufferToHex(byte bytes[]) { + return bufferToHex(bytes, 0, bytes.length); + } + + private static String bufferToHex(byte bytes[], int m, int n) { + StringBuffer stringbuffer = new StringBuffer(2 * n); + int k = m + n; + for (int l = m; l < k; l++) { + appendHexPair(bytes[l], stringbuffer); + } + return stringbuffer.toString(); + } + + private static void appendHexPair(byte bt, StringBuffer stringbuffer) { + char c0 = hexDigits[(bt & 0xf0) >> 4];// 取字节中高 4 位的数字转换, >>> + // 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同 + char c1 = hexDigits[bt & 0xf];// 取字节中低 4 位的数字转换 + stringbuffer.append(c0); + stringbuffer.append(c1); + } + +} diff --git a/SeKeshedemo/src/main/resources/application.properties b/SeKeshedemo/src/main/resources/application.properties new file mode 100644 index 0000000..2ce5e24 --- /dev/null +++ b/SeKeshedemo/src/main/resources/application.properties @@ -0,0 +1,25 @@ + + +file.upload-dir=D:\\uploads\\files +# MySQL ????? + +#spring.datasource.url= jdbc:mysql://124.220.45.50:3306/big_event +#spring.datasource.username= big_event +#spring.datasource.password= 3cjBiCj3ZBafn3kP + +#spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event +#spring.datasource.username=root +#spring.datasource.password=hsp + + +spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event1 +spring.datasource.username= root +spring.datasource.password= hsp + + + +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +server.port=8877 +spring.servlet.multipart.max-file-size=5MB +spring.servlet.multipart.max-request-size=5MB + diff --git a/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java b/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java new file mode 100644 index 0000000..bf176f8 --- /dev/null +++ b/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.demo; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class Demo4ApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/SeKeshedemo/target/classes/application.properties b/SeKeshedemo/target/classes/application.properties new file mode 100644 index 0000000..2ce5e24 --- /dev/null +++ b/SeKeshedemo/target/classes/application.properties @@ -0,0 +1,25 @@ + + +file.upload-dir=D:\\uploads\\files +# MySQL ????? + +#spring.datasource.url= jdbc:mysql://124.220.45.50:3306/big_event +#spring.datasource.username= big_event +#spring.datasource.password= 3cjBiCj3ZBafn3kP + +#spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event +#spring.datasource.username=root +#spring.datasource.password=hsp + + +spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event1 +spring.datasource.username= root +spring.datasource.password= hsp + + + +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +server.port=8877 +spring.servlet.multipart.max-file-size=5MB +spring.servlet.multipart.max-request-size=5MB + diff --git a/SeKeshedemo/target/classes/com/example/demo/Demo4Application.class b/SeKeshedemo/target/classes/com/example/demo/Demo4Application.class new file mode 100644 index 0000000000000000000000000000000000000000..9b3b9e9f60a5cf0f18d73c4ee286ad17390d3e26 GIT binary patch literal 736 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 literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/controller/UserController.class b/SeKeshedemo/target/classes/com/example/demo/controller/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..8f0ee50221f35b4c7952f1f602739747d2b61d6b GIT binary patch literal 5022 zcmb_g`*##q9sk_TV>Zb^U?H@@7}5|*2!Wx63Qd5L2O-$JBq3F>kIC*N8L~UG%*;a5 ziY-FmVi2Bcuk(? zm;(vV5V*g#V`jo$Hd{lDYciUW7#bBUnguP{vj`z9QLt1+8I}pGw4EW%jY}JY4#6F^ zoskR#p6(@F0@&Ntw70Lld(ZBDJ6i=-b5yNQ=qEevl*=oaaY^S=Rs(NqAM^%>X zRSnt+D^g`zRc_J|)kjKDh5Hm#t5}H|fsOyeoC5g+L?Ey&(~BvW&6`DI5$?xo1+^;H zppG2Ec1$y#)?@Lgp+$_Ct%YsNbL?o;a5PD(CH*Q;A|tVv(PoBaG<9T+h628t$S}*Ylt)vCgH_Ru-uH`Xh=1S6(1Tsl> zs%Vqp6tG96%Izw4XtisyW6F1IvM=P*PGgIKf9FXUjL`wNh6^~2u1yOs* zv}Ddasp2W<0>v^1I`w#53R05|H|BrxGa%WEVule>U`Uhne07!@Swo6ZiXj!lFj>=# zg9$xKadJl5KDj20sEC4Lt-7wk>l>OTm@)o>y@c-(f<^^oZG(!CE?t+BERC z5Lf9V0_A%WTv%d8zv-F-QKQLXZPz_6tn|i~oXf_5p#(ZzsERJ3k*|b;(*n!0awk22 zg}&49hV4j?F1I7BS5&R2*Br9A6LF|+&;L`1t##X}#ipD=aM&2o1{h+Q{@-PIvKq(@ z7mLavJ(?h*pq5_bT62`CY~|)CT(lV1U6(tth=5>P-c4Y?#w&R9u7b)A0uRlbUXSf& z@GH`0mW;u95t}=b=A@o4sk2;ae#I7O@k_;=fuB2|Qp*ipm8uh>jlo1((}k#cUcoen z@nS8b5*7E_2`6l{nX(crkq(&Id99Z@^hNy9;@Ga+?U-DS4>mQ8W zKKsV?@yS$cX(6r_;{$xC;Lmai`G~9fOvy5>L-vTFC07yh=60_pCJnKiI)G;ZYRzCWY?^dgnflrqtxN29%_XV59?Zp&f-MVS%? z-CmM$bW!j(p2M;j<^rzZ6M@Rl@5+ozvc!GdBn7y`4e*ag3ogmu^*DQIybIn7>aIZi(I4_XUgc+CDNgXJCOhE!ILSAGAK*pg`-4B`r1@-nbZtnP zKv4i6p|rF98Wvx~;&I#)`tk%;1aP755?0kuU~K?h7xBQl%hO}xtA*nS8Xukoo9 zKc@*P+DYCe?;6Q$?F4p_87YPQS2BGx598>*5ZXJA$7TpEqwK(Xlu-0i(pZiMNNQsS ziJCNt8Xvm!K@DE_NtB=*Z{Qax5dOl*V{i=1*M$_e9moTH7_u%S9;c9MOBEjyU(O=w3ey0FWqzMXh#8O6UQO({@MT7;go z2t6qgA%sg;0)dRFItg4U67X+Mfx^dn71g*Gk7~Cj82c{vEK@* z!^--ZfS$n9d007#Z-GvACC`8#pYoqdU{I8iiAwd+?N5TA`Pd)2f?i&-6Me|;iLk8 zTAZ1Hf0uInj*|!QdtbUrLiq#Xo%hq>0%WPU$oFJ=yoXDCU&=o3v+Ym*^@@L;z+d=9 UZtbghbpC5$5kAJ>aSi4F1(k20;{X5v literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..938ba628c3f7784d1a7841716b9daf26a8116d7b GIT binary patch literal 1153 zcma)*ZBG+H5XWaLP$_~^Ma3r;3)+&#i{T|=(!imO2PM6ViN0~^jqT#yZnL+C64Ec` z3qOD#$~e6~Dlh7b>-9Fj`OnOMW`F(u@e=@cVIvC}2AfSCIrv>foe-S>Bke?@(?R1@ zjFrt057VzK%rLlhCeDQu3e|FIr)Su-400j}L?2}EvglnA>*zB*l-enIV+BvE)(&YN zqHXKoSQrtZMH4f~js#chiLx@n6B*0X5GzV)E3DLtsArxwEk|@jvyF~CrQ_HUW5B7Z z7>%V2v*#jAkiqBbk?+3CldDELh5&RJ`}D&vV7X zWr}snyl^=n)Bgl_%Z1An@0J)mpHfq;lNR4=JBjfPDm0WRc!wA9H5v(HF#i=V_H>v; zia|yO3>N6%*k~GvysO>bWTUQLEpaOf)484zKyGTe;K;=hxhT!kum-$L^riT6`k0yp+4al`#9 zE&uS=t-D+Xe3#}VgD%gqA2>00vv5hQAmc4IAd)+Gvoc z%Ax$DbFr$B;Ui2=)bff$5&Kv^?{w*3(>1(_C{TPyqM?<#j=@ literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..8bb4693f79c6a56b5207358b38b35d2cfae75aa6 GIT binary patch literal 613 zcmb7>-%0{O6voe3YHeoPU3VKs?1D58AYCXJ2>uB*3A%{c^`I-eJIm~>2GWal(F62Q z(Q#KP=)$@<%zVRleup#P$LHHS0NlcP5poQ!Tp4hD5kcf5pJE_+AfgBrZ%L)(s+Wo) z95SdZ#8Plygfl*H7U*gQB_}m0bfuayxU{;zXpvmVEvsQqh|)tnm(zQpM1UGq%%G4_ z7+egKP85fao=g2*Wo?|Y)4ZIV^sC0utekuF}89a9S zqxNuYcKYLinN2V)?P(wDTZw9Sd)`d7jY+fn&>oqFRa>XV*Sc9-XRWA6gmPusHm$8t zCo0^n{kKV3&p#&_Bbg`{?>wJ2slMH3|$E98l~4If^n51;{~>RGz^R h9miBs%ZcK literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..173e2d99fbf74beb3ea65155cae4d5b6b39584fc GIT binary patch literal 1407 zcmb7E+iuf95S>j)(x%XsOAF;{8i?XzFbE!yqC6BxM5L5fO;a9tKpT6LY-R6SYp11( z@)vv!4}1V0g&41$G*VinJZwDPoH^&r%&!0Z{q-9Fs!+;9hQO91eVhHDe&8|NWxlk1 z8U#$)?U1Qm9p>R0fwg0LLT!(Vp1s#OW==$4rOSo;;VcGzp*|z5HS@JSR5ds(1e=@0}*kb9r2KNJhmf*jA+EAKv=0MRnMjY zb^6Ta9o!CWdJeE#%tMzbkv*Z_0NuR|^^UP^bd~gtSj9N)GsScm3s#H6vG$0-0(D&i z+ZWU{TVSIK*R7*XM#jzC*Ef4!W3UyCKk5Z2KqIk-ALkP{VQ*qY?Wax5*j=?j+XAR;p_nx(Q)i literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Article.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Article.class new file mode 100644 index 0000000000000000000000000000000000000000..98b155b83f87ec2ec59ff76a9a5999d4996e9032 GIT binary patch literal 3479 zcmbVOU2_vv7=BK&UrD#L)Rq#;w?&(N5Wx>5r3e&CgDoH}MM0EpvbNhMyEWOMc;l_( zh2y2;h2A(a!*HQ9f-_u*-r$VCNyO*uZqg);wBt%3NApvGcxwcEWKT|D-^CD7}z?frO5vi4K?od-7f>V}ELu z){1tfV3)kinz!O*PM3WrU$g~cPC-EA(1nJn3Uj`^{!oV34aVi1Q2Li>D}WbaVA0VPUPUfIhghU9^oEl;b+?ZYNU zVPie72aTg{xeUAs(< z3*4esLb{ZpTzY|>I&1sOUg5G;wo0~dm$}VgL_}N@`w?$)SCSzSIi!RNDG4_QM6g-C z=GKflhsS&VvRx*EEO9Vu;*P*r)6Bq?54jiU44rk|2;A&pfkfyE0$W}d7o!I&#(ApYc0Ikih&OWjzmF2PGLff?hneALUfuGd74~;(b;QC8<+}qx&oe2|~3>tdM%KKjVj=(pKFE$DcbD6f>LeZ`a&UoHxb#45)?cKC- z{?3}+Cj3SNLTxlOm?DTtt5}?Ke4D*z=3F-7WYMZr?23+MfkPW=YL}{x6@k6a4<(CX zT{ytm5aX*?`JdyJQcTXwVC7H@Rt~~o=4iW`7_fqtLP7}kM|O@TN?+W>X`)B=>)6o~V*4bb*hpyZ}N zoWN~>dRu`yHU;9`ZUfZc3S@2ybPA^t4_M0*P_nKK4?KY0p0*ufL`0jURQ89!8SYa# zHP{TzTu$Qb2KbQ&=-ev2Y`Z$VRGQ(>wTIunRe0IWb$F>X!%ww`@7*fAd?a;vsWii% zZx7$URe1UK>hMx&hUX81@b1Nzq^*M#JsuhU5vp>3a--S7rQXb-^T6j9EG9;bVQmTy6o}lM0I#X&&YX}<6 z>I@pq8Yx`{8Bvg)G8%$1*#v_!*<>mqgOX8DB9*KKDRKhD8zw+FO4h>C>OJ`w)5!5& z`fv{yI9_7>k@FSarY+8|fiEyaNx?i;F-u9sb=bH_Ny8mX;SwbspW_rRQ!?-!htWHf z68HfFxI!t3Ip%Q;-MaBNw&^g;r`Vw*#y>+m#m-Pn{D)Y3D$^}=De{M7^i+;B`(XY` zo?6FVSakRh)q2q?OO-`O5Ai|^x{$x=h{@?JzUHd4g3r3gPbd?+yT_L$?YAZZzNJdG zjqZ`V(8nI)Xkbrg73oMRk;jld5V}UQYTzRM!6qZ6)?Asa7Pz#!i%r2@yW8_P9cC4k z6vrpzNX`}&Ra~VMLoYtU0?UkJjNDzLq>$^Qc$bojJo@n-B`x6R9*k!!S}n$;P1&#|`4e@IG#GHHdzTpAUGiU|$O?!Qs0|{R=D`Pu>6k literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class new file mode 100644 index 0000000000000000000000000000000000000000..b21356cc71d3b8d2f0b77fd5e189766371b1b3d8 GIT binary patch literal 3485 zcma)8+jA3D82_DQZ%H;ZR9c9wh>&8_3sJlvDMg@AT5JJnDGI1;lS8|0vKu#>Dlo+v@`9V?|kQXe*4`wfB*aFcL0;9r;$KX zg``7m~lFQE$|E zsmkkisbR0#rE|99*q<=SuIbh|L+@ONcENQ_Yh^+Z?a|RAShQsi&mE!MtD_gsF{CRF zH(b7G)`=kR6S%Y~&Dj;Bc0M@rc=~kodskYGYM@UO(*YfMJWuo$!@BTs%cwE*4M!~T z9h@lM6yQM}FW?}7SGc?ATfJ|%7(oYii+CN<@sc1`xL|FH>qm4H#Ptka_r2$i&>z+D zGKLwlq@Rj7G!SyfxFqh4=ok&}U5|K`z_^ZMD3PJ7Mssz_u2OU;F|%pBisLF?)A2gq z*pf%za0Ye5sI~Z&y9`I;qOjf7UaF82I^M!bhW&M8oln_T#c*$!F1^=kx`yR88E!|( zf*@_@+KnbA+6EPV6>T-f%;9AQP zk)O3T%%(~A&svu48m>uxiE^#k^<{g#bdg)!p^B=~6|LDWj4f3ZxLjPKpwDx6)vjJO z9HY)%?hsXmZiV$gRY1FF6$}Qkizx!ZC*YmrGcbE=D+L8ieP+9>+@YQk?iYfl%XrFg zm-UXqMq}9HpLP^I9w6FuIUf>L`Jhglk&|7MrD28Xaq@-uU?y-zd+{CQp-5J z*{X@D5*n5&bZp2JqA$x7qO6*0hn1XOuv<=rPn)6+GJbfEi3vmIoU?7W={iQk&qY(i z9flJ=X4s3&BpW*vzEa4YSBhQdm6NR4qhL9W3aTo&Xawq=LT8eh)`q>#OTJZpZ%i8% z*LLnPd=u@80O(sZV_4N1Zx-fkd%e||cxGd4xwv?*!DHaJA`Ia~i>LyMDWg_fFkMcC ztj}6h)l)U2+2l6D4 zYZg?%Q0Tl&yAtgft@6mPU_W`V33@7?QpG8fbss=quhX=9J2*WUpVbrWTFB%<#@4AH)BB7H}qvp9#O7wj?-iXoE+P9FC_ecMLHa|A<5c|C?2?LkM z=uwu&|3W4&J;vTm=;L|mAzlm-hs!cS4wsd@EHKJr^ll=Xm-9*lG*ngzG*s5|ssL#L zNX=^zP_djMP_dlOrvxY+fKvH%2$JrT)yYUR`CZxYy=m9U1I%ESLeYosaEUrKK|heb z#5<%*Vgz4cjwA^ev5t9?WO{O3CP_h!QgDSN6%NkeDoGl?qJi=*Nhy4d0bC;~jRmsf zP4uYRKiH!}dxCxy3HsC66CCix)c=TK_0Du9ND{vogYr5_#*5~VMP`K0(E;N7?DvM; z_E{!Rh0j56T-H`PL9Zwo+XkJ z6z;pYLCz&{gi`e$NfIUXINm2orssa#BuVj-@&mM|q>xl-j8P)M*i*XL*(Zde4{`_y zG169508=8c4zgPtfYq(w4nF39u5`_=TkWYoP5z1R(4a_-NCW*3{f1X)Dbn(YDi7VG nH~M)R3}PAmJSB14E29taA*~wm8}$DXR%n+dX%%Z!{Q3U?2}Y0G literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Result.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Result.class new file mode 100644 index 0000000000000000000000000000000000000000..74f881bdc885bd48c578f263255158d3a2ee8e95 GIT binary patch literal 4241 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 literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/info.class b/SeKeshedemo/target/classes/com/example/demo/pojo/info.class new file mode 100644 index 0000000000000000000000000000000000000000..663dba06ab8303e273ec216392917a9f292d0ec4 GIT binary patch literal 2323 zcma)7T~i!I6g|B=GdsHsu)#pG0V6R)`OGFJD%pi-Limb6s1UJAUmTW}9oU^&cV;Q` zPb`0cyzrn^idA{A^d(mL8~hnQ8sq7i0R~u&#j<_-_U+T>o_o9Z_rIV03}70oIi!%z zK(nC35Xf)ayLPc=yIaLa8{4uH2pCh2>jZZN(!(R`S(wOXkh9PMOW;z)s~6>0cD+%P z#Z6iFiVbhuD?08Mo`Bi%Wz)6mQlMw)78Iolg9*T9jEjcJPT4Fv#@-+YNky z$t2hK=(A+n@DtFYv$~fYSFW_`8?yPt-l&Djc@?|1ZZ{n@kDXdjb$H&u(!a}J7U+N6 zas#I>7u{XQcewkW>w1A5IAp9!QuFE?-cE5|y0U2pa+6y+{G^sAw2$){S!a_h%b@CQ zuG&o&H;_%D8Qe$-1q2J9tae;70o@C#vMJE1xDOq-Mpx)hILt7B9U+j7)C0a%*0zS&?&&5;m)v^tx(GCUoEP z0zYWljVLqU#0(3qB8Cr{PK)tD0#1vOZUeJ9%wax*1=SNIFm&ABj=Ssa$YOM6)FyLw zCGeV01-?!;NE{fQxL~`RHR%s6dEQQ|Q9j!>3D1d*Po6epoAA#P@rSo2;ff(<>{@Nj z2_!3TExK%jnVRkU($8Q?;M$p-+ELA5Md0#(hq6FXUbwN$m<3w| z2K{ewR^&`@)JK1U_&yAKo8Ly{#4v3uwns3^*;u?f&QYj$;SA6Z$b84e6pn#1uLR=r z&<3dUG?4j9pb1<@I!vuZKqY}OI`$(n?Q`pkA`s=K@>XIA%0fwaOOZd7@QwEHo&OhJ z)!+!e`wToE&Y1n5WR@X|>e%SF(6#-sUtxX&J-t8n3(V#5(F5eeDUI_henh3<_?cnW!04;igmKlBGyq=^&{3gxhmFiRd1a_7wVUYFzP=1 z!BOW}%9p3K=}_E(e7Q<#&HUING7|^5{JHY?mo&9d(Bc(S3C^W~_Cnr{P-9AIigE`f zQqn0|nN|up+`trRrg4>bVVaf}iuMrNOFA@)CIp3o5HA^YJWnY{FZ9EJ!x-(Pi(#jF z`R>u3n^dsOx=SUjl6!_Xfzy{S5;uAdy5dZd&p{d=gyr}U_c)qFe8B(vc*t3f)<
  • aAHYW;whbge z4?WIk^k%&N_l0Iu@YR1 zD(4T+1!j&xAfyy+lEGD!Y~hxsFh8t$ob-gmRQa5k_vl`Xd=yrc=+M>-{0@k@iV>4ED*R13*C5 bAz1@BA|1kUA351X#&FtO6G~FoCV%z?Q)Q0p literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class b/SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class new file mode 100644 index 0000000000000000000000000000000000000000..995960fe0c109534199cd43ea38495c2e15aa54f GIT binary patch literal 215 zcmZXOF$%&!6h!AolV~dO1~#INdjPSquu>EP_M6Q|6S8jD#OT>9Jb;H1H)cwYC@2_ zuLz^b`Y)+8x%tM-r+fFm;reLOowQPO&9)*$u{m4CtE^zc@TYRtwgm)2$L$5kE$|UI O4juU|I1@dm9{MjmJUKf6 literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/service/UserService.class b/SeKeshedemo/target/classes/com/example/demo/service/UserService.class new file mode 100644 index 0000000000000000000000000000000000000000..8471c3850f2c2c1df4df1605f121836e2797860e GIT binary patch literal 565 zcmb7>%}&BV6ot>Ar4$wG4?Ka1u(9rm8y8*SPtxdqY%gUxegMCTVK`c^9j8vGjK`8C-Fxo6=N`#_|NG}(06xQZ0U2aH`pXZF@qBD?uix<=%R zTcwJNaLvbcyf5G#I;8DAfjJ(XmU_`g2}?}9$<(b%`$6`KFI$hgGo)&%nAI%f0}r=+ z1h_45{RaX^DrAD3Y;m4|JB6 zluArs{<~gebzAM|uHFsRMidza)IM`J(>IQqH*u>8Q zIdlj%de%JAv1*pd{R7iv&(2nLq#pI!yDI)(5?)}oY8o=!k+F8`bTeo7HRIhKFKv+a zE3OA4c|*1q#@$bdl@!;M-8ao|r7Om&m@%j7x)n*=i<#TXm_S!w1G&ZoQmqWrm>X?c zaw$qb2xN4V@n2RE)2ASuc&N#d!-1lRUbnLGn0Gp*DsQ#z^LVVTR2h_i-SpyydZ?Yn z<&&*;ugNXvBTziGuU!(NjD6NoL8^{2Z`mZ@JAn`Rg?qv{f6QMKobPkabLKn9@e{5B z&dx5s^asRm{E@+@9NjVKT298q0IPgU!F|3>v~td$bIx#{Uiuy0%_E%2;8!k3Auc2k zm-=QYgv)A;&I0SS&I>LaE*~J8Iox|(xtIlqdxSYL20K5JSs{hpphpH@(DMPlOp$uX z@&ha;89vA57kKB#7g#*PjSOnb&v7&N6TIBd$Yp<_SvD!&{a=8u))PZtCCYkE=j+ZmU)Ns2*A~7Z)H(sl*A}M?s>xUz IHun+mAFg|+jQ{`u literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class b/SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..815602009813d70a95bca8c80c97577c254b01db GIT binary patch literal 866 zcma)5O>fgc5Ph2_F--z30Rn|m2tp_=5-V;<0i;q12`L3cQSNJdnr?`_)_T*>pM`{k z=%GJ=ABC7r+(6|XIC!2tAMefVj(`0=Jp=Fxj~b|8B|x=>8tMY;V|A?LM5QD7AskcW z1nMt!s@-dWmEQJn6<4qtpwU7TEdd#sMABE4WD}AxB}V3Ck99;+vrE1))|%PD!u5_l z04b(l*WrYA)6_WSv`KS;7XxEQGS93|M~7A=G&A;#3`wQA zJXDc0_C%^>f!v)sGt-vhzCd-)#3Zmb&?&v2CL!6+is=Q~0~4vqP+9H23uo0GY1VsQ z9__sA%Wr~(>Wixo*eVzQdoH{c`{a&H{89Ny99b4@9GIz%=&kmhbuOHYzvyRvj|6&` z9z)I)WZX$cve=D2y1ZBw2;ATYez_QL@mrm-!{}qYp=@vSmt^#LwVfXj-{#>vY<(EK zDjRG)0Vm)t?lB5%qRk|}c#pBd*xdP!;OS3Xt>7<({~y504OaCuokeOv<2&2LeWu&u RSk1Hg)*j65!)3!=;1AA{-v9sr literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class b/SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..06af52bade64230c7a015f967372b9a94f285e88 GIT binary patch literal 1734 zcmb7E+iuf95IyU(P1_g(1%F6aone zl?Oh6k3yWaO=@rv;=vy8dS=dBPvfyJijdg{IG_BzUIsjl(*DtN1#%G2EPUURh( zZ>(}HFgf7Pn(XydAaJpkiS9U3Qhg zwNh=bu8lCze!Ei6qW8?UiLfKoqb`nNnq|vYOJIJV6xpP!tJQMdQa<70Bu)wB+bY!l zrujb(HX`CM_A3MN*1**)j5HaF9&|8yQ;4Hy3tXOecyyK)W+`%tkg`<_WC`m>1IH+-dz1uEAW)RX-_1>!u7c1&CQv|Zz?9kQqjOxV69>onD*X*@m~W)L)0Ra=#grg~&g z*ODD^fzrMWu}qZ-cY4a(h+ACYtc>&U3(WCx?0KfW#9LvE_A+grmX`wGSGe+M1?}kk z7l=>%a8Tmg{su$K(K~X$Jg#yj?1`n94Sq(OqdhSH8TqTbIN)Gy;UhQVB=!;lrpe)W zl<0iyoFrlx7O=>K1^O+KiGyqO9~IoTIM;E5TNdX9`BzAa}GYxEj>3k{#wEcQBoy1xEqDu8%}5i_z4MgWJ3S| literal 0 HcmV?d00001 diff --git a/SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class b/SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..581445df53c450709c58d07a8aee3642f5aa3571 GIT binary patch literal 2193 zcma)7ZCevZ6g?A&OV$NKst70)3AVwuthHjbL0Sx0iHX`K#?soC$!17~Zg$h%jmYol zA8EfRw9nHY&>z*OcQ(P07d0PtXZFsWd(J(3@65md{q+xkJJ{C|!H9-Y15un|i0|{~ z+_bq`MR@5kOsFk3mvvu998($+2HwLthQ)VnW{4fgpq5da8Mafo z4*5dhNvE1_S(<^g%{*_Uhv1`OnqeXg6mHw1RCLT>R>Pcui@4OKQQ^=J1Yu8EP0tff zP?U9%m$ohaP_As0L`LNIRp>a6MWyj&hS5}32^mMyz%s5djH@iRUo@mA{7q8)Mmv+& z1coF2A;W@_OuXRrhAqsBsJo_$;hWim;0aB}u)?4bn2>d@<0E{m;S&R^Fd3G*)#i59 z^~kgCo0}(7+Iv60nYq4pli}6?wR`0q6eFz?|J1;Bd`3$6vg(Af-VII~^!;8{jcW#O z;&YN81#8(X6~~5XzsTwIwXKA}SP% zQrX5m4PP6$j~#|&H`>5G3}aOhv^(siF2m!Y-C=K$G2BI<50KN4H}DXT+7;S4F;0QD zL89EJR;89A;W}-ox|dq&!S*ggqQ4NRhcd3?2iyrt+-_14jAkfnhRK|C#KUI2EW9Ew z+hj@PT#MT!?n(9CHjV~0)v}9W;k>zjhyuys6y0A1m2L8Lo3@UZz6w(LycjkyU?i> z+P4s$8tr=sm+=AJgaE@F9^)Gtzg0&!QW&8*-Hr4vkj12t(HOn@3hd9&rATkJ48-t+ z-bTv-B|Hsn-(i=6sLd|4a4mTREir!eB_{vI`Q0O2IEQ)u3h%$fQX+K(TDbNHxsO1F zo+fl)k|5$3#}qChfhGFxKqWDO@5$!}dRpMh@{GQIq$f)E84W+t6T#2K@fYwmpJ!xI zyca^$BiuN~EvDc%6643%ir^So21O+jQkf$Xzy&&WXDH?@UDIc^HSBX!0HM=q+5TB7=Zo!kTKs41il}lnHS~VCt+R!fWl;xB&a^5UgOEOcG zWhYbj?2?-qD-Pzl5YVYVc6@Ldt}`{2>lRI>H7KevUb`z zCFj+CzuMm=u!YJaBkKgLVYfi%@Xxnbdic{Kk%J4;`< zQlWZo5(S*oFs0)ayehEC2U~5BfK_F_RC%oEmw90#PvQ4EUQ^dVt1mn0nbzFtnyI*q z4m(9ot)q5Dj@Qf6EJSm<#GUq0$1+Q2%$lvf!_BBSYcq!Jqd(v6Sph+@_BGYT17l2j zvrcistdRsy)+pCv%}Q%-g7jQ=YDIx(*U9f%sJ?S7%<3bhM7cOPak}^yMHQLK z(Gy-ig6S8`oFGfO>)&WW*RjpkAcuuW={fr5lQm{mLk1$#yekA@Bi0@+SgR3>y%s-W zmBQ;ZR&h-^FAxUts3L!=-pEOE(y7-hdD2$I>*1BTTVwmj{^TYc$KE3~sTmSj`v+uvTvFgV9_tHlXKKbIojd$2d>H@y^_Pedkct442_@jpF zs__0Kuydt6?aC!*PG*9#32O1AX?adz9}3FGg%E0ta})PAq?fR1Y*+sx zIzQ)UfTsQ$0BO42?;~yxL^08A9zOGvN41!N93K*iUG z+7&{5i6}Dw4Ez%Vg;>w*9c0G4dtN&j?LHXmh;>B&j<$41Z2!O#_PrMqH~;tDz#w;=Kmn=}jv@n3BAIcaGk4u}BiDsK3MhXGxoew2H?w{f_u4L@Aft{gb3 z)<)~q14I2iix@iFzg3MZCD`fvmSg!Hr>`f_&4+adUi2eK2WYsAd7={6_mRDYPAuRG zt#;7E*STt1E``e!bNP$o4ZpfoDcmEB3ig^|d=o1)8GG`DsIfO+h#C9xg=S-azMvTg z@`boDm@gR3#zBsn@f^pv@jSJMr3+^J* z_YPTqpW!Zd=tX|NiK~=X=}92+BdQusZ6?%P+=$?9ss!Et9u2*V5BQbj>O*{lKjX>& E1GCPj%K!iX literal 0 HcmV?d00001