From d07c586ade2b6ae1937969bc6f8a342400547252 Mon Sep 17 00:00:00 2001 From: "Georgy.Khatuncev" Date: Fri, 20 Sep 2024 06:53:52 +0300 Subject: [PATCH] Last fixes --- ClassDiagram1.cd | 2 + ClassDiagram1.png | Bin 0 -> 335885 bytes DC/CD_DB.cd | 220 +++++++++ DC/CD_DB_2.cd | 11 + DC/CD_M_1.cd | 50 ++ DC/CD_M_2.cd | 24 + DC/CD_M_3.cd | 105 ++++ DC/CD_M_4.cd | 61 +++ DC/CD_M_5.cd | 45 ++ DC/CD_M_6.cd | 52 ++ DC/CD_M_7.cd | 30 ++ DC/ClassDiagram2.cd | 462 +++++++++++++++++ DataBase/AccessDB.cs | 226 +++++++++ DataBase/ChelDB.cs | 322 ++++++++++++ DataBase/ChildDB.cs | 264 ++++++++++ DataBase/ConnectDB.cs | 78 +-- DataBase/CorrStajDB.cs | 179 +++++++ DataBase/FreeDB.cs | 224 +++++++++ DataBase/FuncDB.cs | 340 ------------- DataBase/LearnDB.cs | 182 +++++++ DataBase/RabotinkDB.cs | 448 +++++++++++++++++ DataBase/RabotnikTypeStajDB.cs | 188 +++++++ DataBase/ShtatDB.cs | 310 ++++++++++++ DataBase/TypeStajDB.cs | 194 ++++++++ DataBase/UserDB.cs | 209 ++++++++ Diplom O.csproj | 147 +++++- Diplom O.csproj.user | 13 + Diplom O.sln | 6 + GlobalFormFunc.cs | 283 +++++++++++ MainForms/ChelForm.Designer.cs | 204 ++++---- MainForms/ChelForm.cs | 184 +++---- MainForms/ChildForm.Designer.cs | 393 +++++++++++++++ MainForms/ChildForm.cs | 162 ++++++ MainForms/ChildForm.resx | 126 +++++ MainForms/ChildrenForm.Designer.cs | 210 ++++++++ MainForms/ChildrenForm.cs | 237 +++++++++ MainForms/ChildrenForm.resx | 126 +++++ MainForms/LearnForm.Designer.cs | 269 ++++++++++ MainForms/LearnForm.cs | 165 +++++++ MainForms/LearnForm.resx | 126 +++++ MainForms/LoginForm.Designer.cs | 151 ++++++ MainForms/LoginForm.cs | 64 +++ .../LoginForm.resx | 0 MainForms/OtpForm.Designer.cs | 466 ++++++++++++++++-- MainForms/OtpForm.cs | 189 ++++++- MainForms/OtpForm.resx | 126 +++++ MainForms/RabForm.Designer.cs | 398 ++++++++++++++- MainForms/RabForm.cs | 274 +++++++++- MainForms/RabForm.resx | 126 +++++ MainForms/SettingsForm.Designer.cs | 378 ++++++++++++++ MainForms/SettingsForm.cs | 364 ++++++++++++++ MainForms/SettingsForm.resx | 126 +++++ MainForms/ShtatForm.Designer.cs | 259 +++++----- MainForms/ShtatForm.cs | 165 +++---- MainForms/ShtatForm.resx | 6 +- MainForms/StajForm.Designer.cs | 397 +++++++++++++++ MainForms/StajForm.cs | 298 +++++++++++ MainForms/StajForm.resx | 126 +++++ Program.cs | 85 +++- SupportForms/ChildForm.Designer.cs | 274 ++++++++++ SupportForms/ChildForm.cs | 120 +++++ SupportForms/ChildForm.resx | 126 +++++ SupportForms/LearnForm.Designer.cs | 239 +++++++++ SupportForms/LearnForm.cs | 82 +++ SupportForms/LearnForm.resx | 126 +++++ SupportForms/LoginForm.Designer.cs | 188 +++++++ SupportForms/LoginForm.cs | 79 +++ SupportForms/LoginForm.resx | 126 +++++ SupportForms/OptForm.Designer.cs | 193 ++++++++ SupportForms/OptForm.cs | 98 ++++ SupportForms/OptForm.resx | 126 +++++ SupportForms/SelectChelForm.Designer.cs | 165 ------- SupportForms/SelectChelForm.cs | 108 ---- SupportForms/WorkChelForm.Designer.cs | 60 ++- SupportForms/WorkChelForm.cs | 71 +-- SupportForms/WorkShtatForm.Designer.cs | 10 +- SupportForms/WorkShtatForm.cs | 33 +- SupportForms/WorkerForm.Designer.cs | 252 ++++++++++ SupportForms/WorkerForm.cs | 169 +++++++ SupportForms/WorkerForm.resx | 123 +++++ bin/Debug/Diplom O.exe | Bin 58880 -> 0 bytes bin/Debug/Diplom O.pdb | Bin 136704 -> 0 bytes bin/Debug/Diplom_O.db | Bin 40960 -> 0 bytes bin/Release/Diplom O.exe | Bin 0 -> 155648 bytes bin/{Debug => Release}/Diplom O.exe.config | 0 bin/Release/Diplom O.pdb | Bin 0 -> 359936 bytes bin/Release/Diplom_O.db | Bin 0 -> 106496 bytes .../Microsoft.Data.Sqlite.dll | Bin .../Microsoft.Data.Sqlite.xml | 0 ....EntityFrameworkCore.Relational.Design.dll | Bin ....EntityFrameworkCore.Relational.Design.xml | 0 ...crosoft.EntityFrameworkCore.Relational.dll | Bin ...crosoft.EntityFrameworkCore.Relational.xml | 0 ...soft.EntityFrameworkCore.Sqlite.Design.dll | Bin ...soft.EntityFrameworkCore.Sqlite.Design.xml | 0 .../Microsoft.EntityFrameworkCore.Sqlite.dll | Bin .../Microsoft.EntityFrameworkCore.Sqlite.xml | 0 .../Microsoft.EntityFrameworkCore.dll | Bin .../Microsoft.EntityFrameworkCore.xml | 0 ...rosoft.Extensions.Caching.Abstractions.dll | Bin ...rosoft.Extensions.Caching.Abstractions.xml | 0 .../Microsoft.Extensions.Caching.Memory.dll | Bin .../Microsoft.Extensions.Caching.Memory.xml | 0 ...sions.DependencyInjection.Abstractions.dll | Bin ...sions.DependencyInjection.Abstractions.xml | 0 ...crosoft.Extensions.DependencyInjection.dll | Bin ...crosoft.Extensions.DependencyInjection.xml | 0 ...rosoft.Extensions.Logging.Abstractions.dll | Bin ...rosoft.Extensions.Logging.Abstractions.xml | 0 .../Microsoft.Extensions.Logging.dll | Bin .../Microsoft.Extensions.Logging.xml | 0 .../Microsoft.Extensions.Options.dll | Bin .../Microsoft.Extensions.Options.xml | 0 .../Microsoft.Extensions.Primitives.dll | Bin .../Microsoft.Extensions.Primitives.xml | 0 bin/{Debug => Release}/Remotion.Linq.dll | Bin bin/{Debug => Release}/Remotion.Linq.xml | 0 .../SQLitePCLRaw.batteries_v2.dll | Bin bin/{Debug => Release}/SQLitePCLRaw.core.dll | Bin .../SQLitePCLRaw.nativelibrary.dll | Bin .../SQLitePCLRaw.provider.dynamic_cdecl.dll | Bin bin/{Debug => Release}/System.Buffers.dll | Bin bin/{Debug => Release}/System.Buffers.xml | 0 .../System.Collections.Immutable.dll | Bin .../System.Collections.Immutable.xml | 0 .../System.Diagnostics.DiagnosticSource.dll | Bin .../System.Diagnostics.DiagnosticSource.xml | 0 .../System.Interactive.Async.dll | Bin .../System.Interactive.Async.xml | 0 bin/{Debug => Release}/System.Memory.dll | Bin bin/{Debug => Release}/System.Memory.xml | 0 .../System.Numerics.Vectors.dll | Bin .../System.Numerics.Vectors.xml | 0 ...System.Runtime.CompilerServices.Unsafe.dll | Bin ...System.Runtime.CompilerServices.Unsafe.xml | 0 .../runtimes/win-arm/native/e_sqlite3.dll | Bin .../runtimes/win-x64/native/e_sqlite3.dll | Bin .../runtimes/win-x86/native/e_sqlite3.dll | Bin Книга1.xlsx | Bin 0 -> 11519 bytes 139 files changed, 12409 insertions(+), 1234 deletions(-) create mode 100644 ClassDiagram1.cd create mode 100644 ClassDiagram1.png create mode 100644 DC/CD_DB.cd create mode 100644 DC/CD_DB_2.cd create mode 100644 DC/CD_M_1.cd create mode 100644 DC/CD_M_2.cd create mode 100644 DC/CD_M_3.cd create mode 100644 DC/CD_M_4.cd create mode 100644 DC/CD_M_5.cd create mode 100644 DC/CD_M_6.cd create mode 100644 DC/CD_M_7.cd create mode 100644 DC/ClassDiagram2.cd create mode 100644 DataBase/AccessDB.cs create mode 100644 DataBase/ChelDB.cs create mode 100644 DataBase/ChildDB.cs create mode 100644 DataBase/CorrStajDB.cs create mode 100644 DataBase/FreeDB.cs delete mode 100644 DataBase/FuncDB.cs create mode 100644 DataBase/LearnDB.cs create mode 100644 DataBase/RabotinkDB.cs create mode 100644 DataBase/RabotnikTypeStajDB.cs create mode 100644 DataBase/ShtatDB.cs create mode 100644 DataBase/TypeStajDB.cs create mode 100644 DataBase/UserDB.cs create mode 100644 Diplom O.csproj.user create mode 100644 GlobalFormFunc.cs create mode 100644 MainForms/ChildForm.Designer.cs create mode 100644 MainForms/ChildForm.cs create mode 100644 MainForms/ChildForm.resx create mode 100644 MainForms/ChildrenForm.Designer.cs create mode 100644 MainForms/ChildrenForm.cs create mode 100644 MainForms/ChildrenForm.resx create mode 100644 MainForms/LearnForm.Designer.cs create mode 100644 MainForms/LearnForm.cs create mode 100644 MainForms/LearnForm.resx create mode 100644 MainForms/LoginForm.Designer.cs create mode 100644 MainForms/LoginForm.cs rename SupportForms/SelectChelForm.resx => MainForms/LoginForm.resx (100%) create mode 100644 MainForms/OtpForm.resx create mode 100644 MainForms/RabForm.resx create mode 100644 MainForms/SettingsForm.Designer.cs create mode 100644 MainForms/SettingsForm.cs create mode 100644 MainForms/SettingsForm.resx create mode 100644 MainForms/StajForm.Designer.cs create mode 100644 MainForms/StajForm.cs create mode 100644 MainForms/StajForm.resx create mode 100644 SupportForms/ChildForm.Designer.cs create mode 100644 SupportForms/ChildForm.cs create mode 100644 SupportForms/ChildForm.resx create mode 100644 SupportForms/LearnForm.Designer.cs create mode 100644 SupportForms/LearnForm.cs create mode 100644 SupportForms/LearnForm.resx create mode 100644 SupportForms/LoginForm.Designer.cs create mode 100644 SupportForms/LoginForm.cs create mode 100644 SupportForms/LoginForm.resx create mode 100644 SupportForms/OptForm.Designer.cs create mode 100644 SupportForms/OptForm.cs create mode 100644 SupportForms/OptForm.resx delete mode 100644 SupportForms/SelectChelForm.Designer.cs delete mode 100644 SupportForms/SelectChelForm.cs create mode 100644 SupportForms/WorkerForm.Designer.cs create mode 100644 SupportForms/WorkerForm.cs create mode 100644 SupportForms/WorkerForm.resx delete mode 100644 bin/Debug/Diplom O.exe delete mode 100644 bin/Debug/Diplom O.pdb delete mode 100644 bin/Debug/Diplom_O.db create mode 100644 bin/Release/Diplom O.exe rename bin/{Debug => Release}/Diplom O.exe.config (100%) create mode 100644 bin/Release/Diplom O.pdb create mode 100644 bin/Release/Diplom_O.db rename bin/{Debug => Release}/Microsoft.Data.Sqlite.dll (100%) rename bin/{Debug => Release}/Microsoft.Data.Sqlite.xml (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.Relational.Design.dll (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.Relational.Design.xml (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.Relational.dll (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.Relational.xml (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.Sqlite.Design.dll (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.Sqlite.Design.xml (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.Sqlite.dll (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.Sqlite.xml (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.dll (100%) rename bin/{Debug => Release}/Microsoft.EntityFrameworkCore.xml (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Caching.Abstractions.dll (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Caching.Abstractions.xml (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Caching.Memory.dll (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Caching.Memory.xml (100%) rename bin/{Debug => Release}/Microsoft.Extensions.DependencyInjection.Abstractions.dll (100%) rename bin/{Debug => Release}/Microsoft.Extensions.DependencyInjection.Abstractions.xml (100%) rename bin/{Debug => Release}/Microsoft.Extensions.DependencyInjection.dll (100%) rename bin/{Debug => Release}/Microsoft.Extensions.DependencyInjection.xml (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Logging.Abstractions.dll (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Logging.Abstractions.xml (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Logging.dll (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Logging.xml (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Options.dll (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Options.xml (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Primitives.dll (100%) rename bin/{Debug => Release}/Microsoft.Extensions.Primitives.xml (100%) rename bin/{Debug => Release}/Remotion.Linq.dll (100%) rename bin/{Debug => Release}/Remotion.Linq.xml (100%) rename bin/{Debug => Release}/SQLitePCLRaw.batteries_v2.dll (100%) rename bin/{Debug => Release}/SQLitePCLRaw.core.dll (100%) rename bin/{Debug => Release}/SQLitePCLRaw.nativelibrary.dll (100%) rename bin/{Debug => Release}/SQLitePCLRaw.provider.dynamic_cdecl.dll (100%) rename bin/{Debug => Release}/System.Buffers.dll (100%) rename bin/{Debug => Release}/System.Buffers.xml (100%) rename bin/{Debug => Release}/System.Collections.Immutable.dll (100%) rename bin/{Debug => Release}/System.Collections.Immutable.xml (100%) rename bin/{Debug => Release}/System.Diagnostics.DiagnosticSource.dll (100%) rename bin/{Debug => Release}/System.Diagnostics.DiagnosticSource.xml (100%) rename bin/{Debug => Release}/System.Interactive.Async.dll (100%) rename bin/{Debug => Release}/System.Interactive.Async.xml (100%) rename bin/{Debug => Release}/System.Memory.dll (100%) rename bin/{Debug => Release}/System.Memory.xml (100%) rename bin/{Debug => Release}/System.Numerics.Vectors.dll (100%) rename bin/{Debug => Release}/System.Numerics.Vectors.xml (100%) rename bin/{Debug => Release}/System.Runtime.CompilerServices.Unsafe.dll (100%) rename bin/{Debug => Release}/System.Runtime.CompilerServices.Unsafe.xml (100%) rename bin/{Debug => Release}/runtimes/win-arm/native/e_sqlite3.dll (100%) rename bin/{Debug => Release}/runtimes/win-x64/native/e_sqlite3.dll (100%) rename bin/{Debug => Release}/runtimes/win-x86/native/e_sqlite3.dll (100%) create mode 100644 Книга1.xlsx diff --git a/ClassDiagram1.cd b/ClassDiagram1.cd new file mode 100644 index 0000000..7b89419 --- /dev/null +++ b/ClassDiagram1.cd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/ClassDiagram1.png b/ClassDiagram1.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea5ec34b7fbcf12799d815d148519b0feffdf8b GIT binary patch literal 335885 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 z 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

wKdc)(!Zl61tB)H*m z3#Uh}k9BK5$LA__B`c>c7fpF?-`JPd&FZ26L*@BN0BjubgvgC+5mr zw(AKVD5vv4ISiT2F>*2hJwx=1*1X zSES3fpe2T9YLAI)$RsX-B#E9H9qYACqZ%d3^Od^#Vyv<}xc5ZJf$w}iGLiZw(Gege z;J7;mh@@j0TtoUhECW@`pgM$R-9=qwZ5`$sc5{&x9F`wT?e6-15`qI|GYDLA8Rx=V zjuV~>f6a*^g+VJw(Ut3|E~K;yQrQfYW73T{+RvpEFlxQrq_Xvw#JNo~P~4y=j)*iU zUvXf~tYA~z=U#D4YB=%kSe*(IXP6{HoHHiQy&9Z@5$9lol{m(Xrv_=3xXwyhpO=gH zLsG}+AxB^C`Hv%RW#{MnI!WVR!9Rf`$#qA}SA1%cgUoh@@b3HdJGW+aCyYmBGFj69)Rzj7AdPN6Pv}su8T({!^};d;X|p@@RW&;?aiq-{I{s zpgY4@Nh2kqf?t01cr&9%c)bVI9tpJ+j)sH&qw{t>M&5@6>%HguX&C)k&(eF zkk%5(0{zDN-R1_oaB=Fr3~4u>(UbFnpsL-gB7a!o{?woU^!Wjqn%i+QLJ^eL00#ZL zME&b?0YA?ZUL+{o^}oo-CkKs)*Gk3%Rd_muxgZdp_kYxTLl-qbn#wC}Y#V{Aa)_R<#ANpqK-X1IZG3+1A83+93}0#SaY|6Z5f4M-yl6 zmbF!;MHbdS3R<482ws`ZbX_#JxejXZ`RB+K43LhE%!ToV_X6DT2H?f&rs$B?O#G|} zKtH3jLmaz9X`Pt@F+_{ZxD@u=9&PNiKDWA$sw_9VVRxzn;qE~}{{Yr66>?uMU?w;w zX?2V?o>5Jp|M>&3cuvxRiGdgPVDs|Ai5MXydQ@4CcK*Jnyuc95T0?nwSJiB~2IoMy z1rO5fBWq%60UaDd3d{w}O;KlAHmt#e4!S3!yuR=7BLfyFrv$zd_&iElWxZw3 zr^5`>6kV1e`7wz2i61Lq=v`~<7UbPYE=@3`cgS~LG(H=UAngGrOU$bPNcFy4stv9ymk-blC8zC}>7m=*q#;%KB3Zd3$;lv^~) z0EO|=QfO>TlQh}jknGMjFkNVK0|?kt51ZtM?2BuD>R?`_UL^+X_}1I5Yh*o|5TNNl zSioB&88%Kri)4b@^f3j!i65LpCyg?q+^>~l3m3*dw2_d{>`^HlUcZ@I`ptgKC?V*N z^sWg<+a_#u!J^@QIbFA6;FdWFBNOjBDDoWTli>1VD6?Cf729?dm;Lo>T+Cx#ez~gK z8=K2;dt^P@CPAqxi8neXI&zM323*0*O(O5ybzfyn(-(6yn(=CCt?j;S^KUF3&cxxb zb1HjabCDQZp$+U!N7lkyxyh=urt(Grec_!7AYD>(IUXAzyzF(E{g14+IFTsZ0q+IH zSNfrd8l=$HT@*Vat&v3A1uv^K&}k+qA=kf(vW%FNaC@*OAkkF;LXqN<)`s+n=^lcw zep?Dr*u-pysoQwkT%(=U(I?WIKNTc=P0Bv0tI~EpU+GRgg7d+uU+~j+mC&B+=iOYi zPMseWQLU1m1utvZMSx6r)?4k^2d9N|qGCz3Qbgj{Sz4vkE{A1T zUl~c011?=@NY6%$2dAoj)r#@VPORH=8%MH>dYyWr+x|NJg3e~S89N|a4~^W?@lL6^ zwKGw5y5oY1tqv3RPDeVwI9W;o{7UESeDGE^7y1C&b0ruCoCP^~z z^VHMd?o^u5nG%cUoyH;k!hWPId{9O(r}A7%6z*VWQ$L{;yB6>sYdi<7;9n8*{~BAb zF(6K;tDdWT9{OZjzSbJ!5qf5<71C6bJP9{aGa(LXePT#49ni4(tR)6$2T&Gh%@Fh% z)QuQ;9}{R@+RO@k>I(Y0y9_90mWMwJL~bo&9{7^=2CinS- ze`x@ps1mmJUzk<$Vqxl2ll^Dk;!XJ92nXl~=8)W{SFSkXz9sBa-?b^g{#1e;lksqL z>2*z3$rJLlPz=Ki;h?1fmkxgb0OV&#S@>xOdGT_aymBd{ofQ{JtV@-;>dD&0&-9rX zsMEa61SuV&yix=A9KQTrR^C!%Dg7+Gh3~cY-twVkD~*D+PgR$CK>&f?Qcbv-XPlHP zUtYl87igqcG2B^5hx=O2h%xGnQLd3S02-q?>vd0_)R18cpy=MDrLAj`!gDVH&q@i>gi;E%4GkFAzP2cwxZWa!V;LYfRw-Y!wrDV ztnZSd;F~S%{c)C~55?=9KI{*$ld)vC$noa44S7!}t;&mk3y_{#aq!9!c@7Yt%gjq_ z5yui-LQUSiEtVG&J58%^6|PAYQ(GDR7Aot_bU4u0R-yFyF~EB+KrP%meu z2R&1^Zx>s87IG`vKL&2T6rj4IQkyTZOa??iap3gq1n!VOIXE&Xqa=6rV)i%j?KL)+ zDhRk6Rc}vC8T^V$B+%**zE%AjgVgCywHIf6Z!WexCn(-IaR%97V=Ep{^pLQg6r>y> z##4u6&rChwj;)3q3*A;BQnH0DAJt>}QT(IOnSl}4V3T)tq>%fUPd19Ln#3?JCeZ5w zj=5_msl1*ue&VYsy)6=|2X=g_hEaSE5D67T3thV$x}zJ3Nvb(MDC8$_dE3uaJTzFQ zRYMJ|fiX|driRd37oK~1xqAUEsx9aDh#4WjQifdW$o2~|fLzkC{ZnCb^MdK*lBBij zg=EDZHX&tI(?x4mU@sZ6MgR{$*Q|d+4Ti?tt!nv{%u8PD-aa;0X7!oe7twG_8?pKJ zVVrc!H_Cxp%yq2O&Me_($mL5v*;sBznMGA3HCz&yo_rtD2?I(}Cp|64%-UvZLp&;R{U(zbq3V|@tn0WvOF?J$kDXkXAL zjSi09JcU(F?Q&(CYcJkX*K>!> z5`&=GD~WinrX5YB>-1h#=FjLcMm>L+)?_9b*u_>Cr(!gM-O#WYoeNk`8pNr@P4^+P zCxJN2g{(QE?2sJUec`|T0nR0AwQQlA5^H1>kOBQD<$RzitMD*2ZPvdUT)lrfE?u5CJewW_@bn%~I z`R{`VfQG)u{q+tvo_)<(?0fnGe0~2qp#n_i05ciudG4hAuO4q_6bQTx!2^-d)iKuh z8RA5wsYp?)>rHlWi z@mjVAD)>4TyhV$9ZIp7k@ zoe%)xhYi$m^X7ORH`J)sie&-pP^CML^yg?s=i-pG%(fY1idQ=Xlmhfk(8(Unk%N}g z+o3)59IKTLN6oS2qXbpJ5d9bdi=)&BfNL0!j@$7}t_(g|Z`v?XY#3aW)Uy`o(AX)9 zOW2pSQF2)~6KYb}AvJL}C@DS{L5|Y*o%k#}?y9a9pHccJNY|xZT#Mpii@!|zEr*c24a>hZ3tT??8ss~s@cKjq%S$n!r=@dKX zTk+~S(o3Q4pVxurlc$VAo|Y@m``Q;yWqnFI1&2?yl<`&75h+6@rT{co@}3EvRap-D zPMAZqTv91b3Mxy z!9^nI85%Ot@tx0EF2k^8gv7AoU)e#@=-t(d_%2VeOQNBZiyV@lZ>6;n;RNRaenp>jkwsoU3pz3R$)iM;+Zq#g3SUbhN_xdSC zB7U#vd~5ZztNS;Ruy|35z5AAedAQu;oeOK{Za*CT@v51T zlc6VQL5jzx9C`g%l<^rBRDbMk+E-X_qROku*I>gI_!N?1*nfVrcitms!t2|b;{J#N zcT1ipdwRvV0K~Z6M-zE^$MB;&VBYyI-)t>a`jEfUP#ZVavt;$MAn9V}^+C9CM(oSV zDTc_deh9>=EAZ|y!75!Ktgnc96>8T|B{FKXgDeqp97~`&pf-*OMJs}s9f{Gk&heBF zz%M4ZG@SvY^+hB>b5aAQ8R%A)(qm{}U7s`NA^muFluBX6^V#?ERjKYw?zu>Ex{6b0 zTfIm9OQ~o}I2C{lw>r+1y|47AHn|JJmpNAsWLBivk$%yO6-_o4%4p9{X?36u{RuGWVEzI3?X<{ah1{jqf~ApjRlb)3xY zO||xEJJ_gJ=>82wbM=RM=)}vXs@PN1+EHz(GZixdO>0%-B{zWSi1$vh{Rak(s8@>( zn{5E6zRhwe7h>MU?vb`y@m-khmM=X)2KV1br311%QfidPO!Gl+y=a zkjF=^`RNW+E>~oC>wgY%b$q`s--lR%GtPp(2efg^dSKf6RMBsC1*>OkM40pU;_Y|s zTi%~6!m;IjjCSi$`R%;W$?~{eaeJ;M3yS&Gr&?Y6QAvJ*Q2&a?Z5c70<&fmcHxd1p zZVUV7O;BDP>MXEdm|3gzh`9K5d}mIZKIw4-pFNQ3M~ooA&8bsX(#N+OYS`@%4*@ ztvAPrpDiUiO4{d~Z@v&UrOz<5iA~S@=3tMP;G5yP(0_yIg#rVoqo zpt~XKMkR!>5$XJ#iQ^k(LVkrOb%RY&yOs{J64#p!ox%o3R6D$jd}e*MZFq=&UH`6o z0(?MD+84MP(eie1SZo=FV>VOa0cRBl>DR&otv5oRR`)aH7dJxwiDV0|T_<#*a`##= z>%o~mB5psYPX35BdJAz}&+dn!5O{Ni;na<0%~Y6FIjxHD>!Yu$M{#fmp z3k3G5_OyQirO3i@fW|JBx>o4xJ3S$x)a8NO%v-hhAly2t$u6k4OR)O%Zqn`wK7fCG zYtKl&T|c6}Lp2Fs8WQGvY`7~cS5k*?6BYS>GyG7fh#R9`u2anRHqgaz?tq!kea%v_ zK0Bs&8r4*lu#Xr=wa*frI8#X4n}^aG=~>BRJSWG=WG(c!nw@w!m%tiW;iF!g7BN+3 zEZjl6=CCjl;hq8M(mC^@voH50OXQtT-g}h!*wo=r#f$g?fjgfjnVjHgiE@KfMEmuJ zh%w7CT_@!Vk7s)P7R4_P4Jw=!>#aH)p8y2GVgb?DyowV_ zW}$Yq&FFB)%)AgQ#lY${?s}X>e6J;tXu^x zB>V($zry*ovYE0aJ+@FmqM9c|}bEuDx&hy$ng_C@sJ1YYSsuGX#rk+FvI>L5i_S zo?cO$@dik!41gWz6Y?#do9R!xEgUn!XKexrGuj_5507^|CNBebII$TaBrd0#OsW4S z(}WdV3l&-BOM1C)!#+ST0{V-<@lxy=)4p%P&W~40Z1U59zv=-)cu5j?wFmxfA)|pE zAoqB4#d9>yf0lEYuXQ)esPlZn^Wb%jFTfR1pp2G6Su)^H`oAv|*yx<#!&#?5c+fBB z&}CzEf;;dvw`SCpj&jvK{oe1sCV;;&IL_GnZsCo~h&sTjL0)@+>lVO!kvyaJ|1b8g z-83Y~Tea!;+3>f~aGGnl8o{?jAiS3ldLqjO*tS2e=9zqBLo;jeojh%SI?sH zdGY@Grd2)=V6FYz4G2HmJ%3&-@%AvoKrLKtAA$GOW;V}%8NW|gX7E(0|8HqixFkc= zEm(VZLvZ6ic9CwwfJOi6@AIVEi8S`x=<5DCT+ne|pyBR6bGZ+KK+xMRPm81Aoxzeh&bfpK^ zCk_v^_yD|x8u_cG<1?vy#u|DuY9Q~x^UykAlz>Qm8nA^F4>o+VAhR)55SZ-X^U{HF zPYuwKEc)=qGZNyZDU)QQ`*!&W4xN~n|%Vg+DP^9FS0c-zFXJY0O=hQ$szOw+<) zAz>eKjd@1*^o6N>SKj@;i0uP_K>U}a1(4M5?0ZbpdDc!&jRY_$`EiKRQ(k7rwZ%2P z6s0gb(68kQInY@7xLv}2S?Tg(C9mcwXx;FpO~3A$DBg-kgHm4JMDF@jnP)}ka^;I{ z)B|6SPIOT59opq50afodU_pJioAt@4AwAMKMCtA(kQT#BMFkJ60~qlI5&yalc{M{h zEnl4TQ&9k-Jnfo$;kOWWM+TMEEqsiZ;~}}r;nk^?g#xP(nY^G!_Nbb_t-%Rd%jE!O zU-wR-4T1(p<F@^FAW};n4Q&lUxJiEq;5DPd$l{r8ZvW%PJivJ%SubBo9FazyO*0=d6!* zNhmgXP&l%IpWmARWbK&#>1v^daf&)nag*X3RqAbuzKgYrf+?M1i&)ht#`>V;^>c9?%XFkSc* zJ0Ru(^}r`6u%^+vjj)JG6F6PcujCF%6vu}0vTyr#_QP_ zWpE|xukS2U202P)b_c@oODyy}3o_v3&#vxnA9Qd|ByA)chQ=(DA@{DXf?E z+3~(jf2M_IsYIuvcg;Qo3FqUZyV6TIEOsF-AZR&L#4l?aG5v}kN2+$)+~)1oftaMmIDFc z^*icDB6RFa%VfVA)z;9ctwXHDi&G-VAQ$sU+JW37xQ zwo(~Y@DB$ce_nOpWZ>r4bHand0z7kJDWj{x;Ls~4WvyPoE%B%%>KosPYXxeA%`c_y za$g<@*zp};A@N~KELq*P7uShP{H^e%Qte-nxob(=veea1^&Wnd< zZa8sdl0p->+16Io54kd_x36BLT%yCl8cM?*k-puVpsrlNlT`08nJ( ziT;P%Xgo{l-=}}Y!RX|a%3wL?mLe5i9WPKNy3rBnYo42<+V6=w@;>o^j8z{w`tGca zhG)b9Dam|b(u5&jsar7K%z8_1t){D5U%vQD)ta|odA(hgXWhK=>c{(M(RmU$x6lQE z5v@%y60@?NOnT43FP4m&0R=koOj(}tK0oXhj@C0g=Hg7ZbgW4hvx_{YIwiNAjo=<= zK#cHI2mvBFZa;n-%*B4+OK-Bkp!||%LR8aO`aOf+OXZA80sf4Om1%eHaOxu?7j5iQ z_uJq(3*c>mGD=XLaQ2DCH}#PS-^s4IJvFD4O8|+9QnQAQL!(#qidI;yVS~p-@;y(b z%~(lw^0@$H;5&0~#TI5}&f#^dm$z#bf1W>1NP5=uS}bzU+te1Z)>YK!o@VWqW2rIRw;ttwZ)3dA&LZ0e7-0;Z*H}0@3>wu13;<5i@T-qhR>xW@n_EpT zE4)`aa_MMFX)|P8>`Uu{1MV72?1nuHK1STRVd&C)Xi=S7Qp{s3!_JXjnZcAIclEbi z2q$igzy7)`tWp|KPWDVz0^q@dZ{xDAKNR<~z|m0QesJLXf$`l{&to3XObOevMn$w_ zFT_81m!beUw5@4oV{Z4?y<_Q-Y;eU^X2(5*9r4$a8Gs8X?ke)lTLKP)fmr4Z@rGhk zFRFo31^>HtKktZ20y~%O>UIz0~igZkH$n_C4A?oTQsNPAl9hOpT z=UiRzvpHRL*c@y8*8FoIQzpzP%paWI+@2%MNFP9{_Fp3IZ|hb%#>eq^VQ7VIvIbg9 zbx0Q(!5L|(gXg2Tdv+W1z6TtgkyPO-ci;$q+YCA2b!6R^3iK#C%gM{-7fRqBS$&x& z6xhMXYJE3(c>^oSl~-^aAuo*CHx|v$cS{c<4cOlYN1;-mj7z37oZIa_LFc#51Hj4E z(k9yg81~rk+CEKcQpqMM`f{m(1aV+c<^M4Eo?%UHY5RBRA_@X3B2_`K0RqxXL{MZ) zu_DqTQk33n0)mQ22L+@BMZrQxdY2LqX(A*Ndgwir00{~I6>#r8GtWFT&-?BDHpf2Z zkUQ&M_gYsu&)?-U+2&BdmPBtrw=Kqm=5oe@Z>Tp6UWJjkw^hn$u_E0$Gf6k6mfv2W zo8Q~g!~hhgN5G$kSr!dEq2h+pSmpLvuz)|Rkv1E5fytllB30~)2D^h#R+P0kOaDbw)%C30ogw*)PEGZ`J5*Fk_P!z){b@>#rOs5 zJK7Q_^*i&W-B7zXLX*phHyIrI<6gW2H)WE!)Nsh(xki}x2nG^ed+gOjpx-EHzH*bGq{<- zL_p1zr12`w#i`w&p~GqHq^L4orqDYm z$bI6Y-$my9qnk#o3pU1Pbql*VwUnn9wqA=m3j0L{i!GP(_IF+cKg@xe5lRrcGo3Gr(-eeiiCU8)`rkU8(I)gZzm?Rw zX)e3qQ%3(S*RC}suYbS(TOih>TEQL9w-C`4uVAVPMCrkjMX(R&S%(=fU@IqsmfQuH zzdY83$U-R57T3~LWSQlLEY?&upXhuGMl_oR;k52q+SNKNdYfd0H86Lcz=wzdi9w6s z_w>;*WsUWsw0AM^t9kq2Lei86sd!Ng11PC<2X;Tq$_Uqe;gR!voB?u%`T?$A*JTAh z18$K5XDE6ppAF>>)iA9zlJt3S}M=n}K{LS%o9pmTA?1 zH@Z?Rdv5(C7g_CQswRBMis$5c`@`EOf_q9|7>U>TRG*7r;gqxG5C{F^OYk#M(-BD$6MTV7>dDGGf_y)ZyW?SE^T6gAv*2oA5efG# z!>nHktZ<>Z0XiE6xro+QaGb~m*O(sl{Jmqf%$#P?L4UtWN#CR3EDPH^%ajf04X0}) z7)L+=683sPpukd=+=8$aNwvVhbyjdOlFwL<&pcXXj(Bhki2NxN6J~fgIl!LmBda9pJN% z1GQxkBg)YYLvnS%j|6Nrdxz-t1@D|!^w`@H^!?Xgg08==;M0XbsQv2;c*M?{_gH)2 z)TGwyDB-Qc0$*k710projI5bZ#OEC_B6F|-sy`IVKRuI8g6}Nv4+8 zQ3LS5WY(|`^Uw0^Ce zL^zf#$D!NXJS!_}+8qOABVT{te&<78v05d@)v$0`vDJI#^5qr8n)?m0JYL~(2dWIP zo+5b9&~m+RdYXMT|naz(HWprk+?C>_9!-B?#;>*NdV^D@Ot=rl)TCuMn-= zY(x$ZS0M(oZ(j%C(7qFx$*y|+pp-kc1c$P()1^MD8hynFqPSm8qW)lT5kF*Z1f<0D z6#=(GowFuHeg1fsm&jIiN#_)%K(wtZ?-U-B@LIqY4URtA-5Wg2lX~v!I7iGqv2stSa?~*i$mMLHNe5A6 z%&K&)^3r`AIpkxA4mp4DS-BGC5V*d3Ed|&&Cjxq$BJBd)qAig*MN{T}zLKfTC3K1- zt+KK$gvWP+idfS)E)MROUOW^CL(!J;Z>lpU_$@JL6%`|=wHm;wRdAp~Faq0=@qO$PC>)7!vVOmYzgzM0Uygqy1x z{x(XM{vjZ2i)S*|(o9cozvXVT?4p{+F;L``SN*rcvm4a}G~t zUycg^MAr217SvyQ$bKn_C8-ClSP`fkItsZ*8_*(1WNmyD=YZq8iV4=kXsA+yQ;{LZ zpp0Qzud3W0M=XW!q_q%pfW1N;NJzM?FQ%pJTTmF(TuXd(;Med%MtrOM-e(Bbrw?6M zvt`Lwlv~L!hwdwa2Tp*LC5G3`WX{V%n$xSDkb7$P8$Aa0!1~&`CtLE=h+J>w_`NR= z8{?~ndW|u35Oex~HjC}^v(h~tE}h@jU+;YZ$!7rA2gMWg`uxSGDl43(IJq5H?OMrW zJI~Uo7)s&VS06egiX+ZJZow)-ffv2+U*pxFg+t5ljJ!{ni_0r!k`4%O&=?2+8SJ$3 z&riBfBASIN`28<)*iVRAKyearji84tF%dZx?Sich`Spxh3&R2S26u$0=w(0M4R)1G z{)_j;w3RLILE(eYv&ofv+VSoH%dB%nl8|^Q+mSadnkH3a))VvTv8< zdGIZ0nc}W~d0jKKaKC=WV$A88DVMjGsAG_MOpa)T9OKQpOO?4dqiLg zuP%sW4b*C1To7PN1h>a)Q{1OAZrj^4vM%KEXW#?|F}`wqWnibo)r93jgZ~SALQ`c1}Wu!X`c4s z#)m3(w+lzU=)nUI1ic&C4*`X@Ahn3OpfVG-{DaFO%Bqr{fX~NavB0O&%<@HV+J&Dj z1YrEeC?`WVo?55R5yNVv+@e$Coa^H?at6oiWLDXe?MWpZoJ?gHV&{BYE zCyYB!V2?%T5Pa{=^+{BQ@2!N;lFg|!8KPcp=iWU@EoB5$-OFvsGTxNr;Pm}xDS^Ty zPjIM{fJg#WMKC3ze1>p8%xGUpNouA7D0BrF1nGR}tUuLE|AB6M%6LR5U-f?jd{J`+ zjh{bUYiGPbHBe+zKV7^p#y4s4A=G5`=|z*ronuZ1G9%-*^~VNeC-?Y(N6M)ze!4p4 zO?8FE8D*QDJ~6qOQP28-4hB`)Ie_5*M+)5EU^b9*MLjo?3(Rpo2d150+;@YK60Po- zPSUjXjOte2X?J)0K`pMOu=vyW{f6-U4~!f&2!ql|d&CJz>vniw!a;~5&kE-*0Un%}1)1qO5TQW3TXy-qzAI{dps6@jFXkUk+}Kl`+yjkY3Ss`Df@xDBUT%@CZggA%HSQV5|oVG_Q&hVi|0`CVs- z=ipv&8Sl$LWe0Ysb!0_G?D*FH-1Oy9oJ#c3ol@)Z4A|i^h+)NImR3{OKYchQV)NiQB>eF*a-?Hc-F9 z)GDcuiJrX8D8&$8jsTu2t4@IF$Trzk8pWKc0 z8+^8G;Oztdy`LfUvyYUe>3Hcf2atmbFY>uXq;CKvYDlV;f(!dMa5D6D=OIfug=;g- z+5Y%=zt(PG$M;XSUM2ml`PD*h*3lPX9VUsKM@cPyiUDfubp%1^FTryIe)OmRQmw}E zC68}L^T_F7GN8a zVQ}&vx!{6(S;#~-U8JCoKa~W{)E`hL(7<-Mj3`vouiDrb4Fu-0w*j6bQZCp-Twh~E zndSi!WN~Sf#2c@VC3GUt<3+;{-#9tODi1U>wYGYC-cp&?i|TpkOcYC>!7Jscw#vB= zmQucWlF-B$e|8$qx)ThPXrb^p-5yh$hLtktCS0`Qt|6byj8j)J)|RcC$XfM;XCj{s zRL}a4+XHXJd>SRUQsF5&NU^5^xr!`@o&7O5%jSdUSv7eMxWsACp2EB_eVH z!SLo)W+X&-Dp1u4^pY~rZ~aU@-K)+$_35TcuE<{3sh|XbmHA#=PfN%)8;H2g*b2oi+rBg~N&){4}n+K7hzrhx2%N z*^OTUGE7EPtXxi-d$fwFkr>B^lLDJxSigp@nO7P+>+ojr1v-uyU}% zdCbyxar!tA_$$2Z%dW{t>Z2U$$@%eV9vTj=c-!K^<^?3?Xu9X_nq9n|7dl0=;`@Ca zR(@q5ZVf^4NXUCaB7xzrMxd9}GIKqyukhSg?)^?LDY0AEO4~2cWPMp8Fu(8~H}IWb zltHtU0=d{5T(U^cz2Q!~pW)})a`b8TQ_b{0@Rl=@M0EkDe>HOm)0#P{w(91VhVzhBr2KyEf^or2rb&s_HBhjU3;_bb~kSfrzipSO@#E`8_;J0h}0 z&;(6|<@%pYg9g#-c^>C7(a)-1%XUBR)5mUC?5&@T@PU^-fuD;%k#6&$_=UoAsasBc zrp-Ih&UE-@K+BAN7hGoRwCO10jW&0Vyac*Ctduy|@!__rt5Yy;#h~9yi!qeId1+HO zUO6a+y>jmxrHbBl1QW*3bJkj&{lKd71|8~gF*J9nLVqOqbtCHFQ&zw9f2n`o4x&H9 zoK7hcn7(u|%{x?rIWno=kUXTr<9fg5K?+*Mg; z<4Zb%7j(2lz{a^y9?~jDU5>@K#HJ=yu}9k%5?aHd_id&)Ad`E#n|-Dj)tS&!3Y22U ziDPP^r>&%Nol;Lrzm*16ZF=aS=Ez&CfWPaeVOsRc-9L`mUXjC9JT&JO{WXXv7@3Xg zp(ri#@Y~$4D~|e=JfxwH22TH$H(x|rT{Vmz26QPNaV0M^rt;k03SSMczg~8el?2?l z?7mlr>~8s7l5Z{?up}B1*rITy^$m{fAfw318>>+n+kJb`C3OARn8wJ}2|Ka>wJWnnk$Z+sL!u zU9MatepI#rlStrq>o|EOzFx>x<@&Y$o~U)<1$;#I1hnM$5<2dFZn~y=YcRJ6abazt1jzAr#-ICK?YA5A3FL-ZI7-3?r^MpO z_}xRQi+CtI^M@fnfqn49xJt`J#@4mGPK)yH*S}CeD8q`<(iQ(Y1lH`^dQuf*)T28Q zb6>2{yW~8;JSiHIN!_4*fC)xiiP|%F9Y%jZ_8v#4e#T@q@nsC7c{^3EoHmf2ltgZAOE+}VWACZnmec?3h$L|?8^dr5xM0D0)agvmbCu|Bia8y z3bYNAFW?vGFvmf(2L_or4a*8t`8w;EW=IGA`=$Cv#x(HV2z-Z>`~eD>v$KEO%W|Y4 z2CVsl=j%DQgcdp^Lr&r^ixF`$sdjLe3evrMkl2f@g?^W82p(53pRSHJZG&RlLcx>Yg94Tq+~qmvz$TfLmbx z$=%8tvf?|$@fB4S8ih{iedUDhzV~QM@IWNhRi)N@Qcd6K5ebq7%Cphbz<5Ncv;DRc z|Fi&so>KI3yB!p(_LZ*2F~qQVv}l!LKKr6gyN|@;YLOgUv|K@*ENL$ELabT zYwW2t!^p1I`OQs#*ql|rE6ClF3j_-e6?|& z8s?ac01W45=dG13#7F28tjAXCXqRbM@;UF<^76_v{!dxp#{lhNd~pZWKh;0`-McaPin6lI zr9;7^H{X#Sn5x)Kk5 z|0FRbcX+h8ElqoPLE6o+b9O4Q*#pA2sm}WOM0bg8IXb!5A+HFJE$2RH?Y>mq&}=cs zv_!)9P&oOMFPmbH11aK!jKkb`GT|lokt9Dds&tO5?iZ`tm#_TYYNQ0D8{gJ=8YgV| zyE#nwA4!(w9twhAMMf_)!@g~$PZ@#Rbh>!f6a|}c@$JLyuW?GC8>glyKk}H!U#T+o z$KuF4HQ0v^DWpeSr&df#jm^-E zB?GW8(lMx;g%PK!I~z}@KLS*p3DLFjthLDA1WI-#+5s|0`)0qj_>I{*k$ybfC&%fV zp9vTR^ud#S;+ow80~fzorjx|}AVhunL1wi>*))nElX>%O;L3Ko#Cw;|7TrlkG2J8K zi{woUS8?@egdF8(z_y*od`%uG{mO!ZUA^W-ZatU5m(6!|dpI2Ba#`X_VM1|meS532zsWH8ED&-cJU#mDO>RF2vxE{rGnWInws8`GmvhqC)@b&Yt%DD_!ISctxWYJO;LxM1_i6Q6}J)s`V}8B;p?pR?_h3|uYR05Gv;_n`S=BUDOBAN~i2H}w2Ek_OPRqx=)Q|MkdJ2hy= z&WQI96*GiNxh@mt#HP_RZnoCW^*M*A^)o7&$JGg5B=FZeMqW>PLp1j~9_3}+8uUYN znnbYE@7~UN8TM-Fv20;UVKC(ycL|5P%TYNs1pkY5k``vFVB}_-4>cxgQY9jZs4XQAnwDt zJwssBz%tTDqjV;j(;^^NK-e|3OVb_k12~w-wgZVQ@aI8@sn)qtqopy|lTpqj&3L`y z54q<~!k*&IIvPx~>T*C&J^mDx25Xu$DcR1knbD$V{KS4zCDC zp$Z=NlvKO6X{dafbIrD56@?Kay1OLI)cx`v^%J(1_nPhr3ssd#?dz9GSTpL6oRpV2 z(=~GeMhm#qDdt(E=LPRLI6owSV_WpSz;FP5tf^~W*6q1IYe>VPJ4m)1Pj|sMmf*Lj z5oVa#+C>qHh4BlRo+^7;VlW}XvC_q4TF3%1M!1cwfVsV40}kF3j}e?M z3a>PUSHr+&A@rLMNUYJ6$xti9C7G}pc3*wmvv<4hP=%{1Cfc=~w+g3X%KlJ(3N%%W zsh#^{)!BUS96wyRm5Uhkt9Mp8H+O6GK|)(zYvt(Cx?!mYDviF4r~Lmg^1ujPO92FjAxQoe-?=hhRFIDsZ@Kfgf>U3grkKy*M;~;27wOCvfGQ9m* z>Ur|j5R+SJXmi7jW{FrtG*7J``CX)1cu3CUod^4rPyO^TUKQgEIJN<8-2UcZBQb;} zXHOk~i?3PG1IpvH9Ct!6{O7o-d-k@+Q@%C<&6W5QQLnWbzlwp)F^x%j@g6mOKk73; zP&}t5fazvj&;_b{$cbM?li=)q3!N5Y@Vdq8>6)>T?haUy@+rnr2sm+@i=KHj7!Uct zKYU?Io)a|ieJq3_QfLtI_j!w+kXW{c| z$7VY{h@4HjneMustMA*T8-!GUZKAQ?8zuU$|J+2GL=}=ebQm;!-q#I-vM~b*)QUcx zC6rfjL$pD8`7;lZ_B0)MBxBw>Lj5kTSNv(&0W8g5`h{e5S1a>U<2XnHZGaNj z=HdA$&?f}s?C%M*rwPEIlVeT_87AW<*(lLhGkSj#?#wsztU_ij_2OtY*#?gPZ*}?I(zSj* zx!NfpZ!2|}Bpz|~^M{2K01dG5H`h&g0)qWd^FKn`kAQkDj5hyB-~N)rq%Pa_;-oki z0UJ06Wp>nIb#YJ$4MvcCqcQjUpRTIEN2*Z6UAz7L^cQH$MC=%hUcha?5DmeEv&d3_ zMZouo;;2@iM)N?2zm>6n0jU4df$Yi;H*?N-OGjH3vPuWq73k-`$Anz{oY$KYPI`cC zHUYeYxn14?EScr^1WKQ@`?wvPQ}pKpgSUXROL$Qm zI}(5Dm&MAQ$VQmwPpvYf_jBQHDk;u$TQk-HfOTvXCTei?yH7Xqa@MQ73;1!LKE1r?nI36Tt?2Z)1Gqs7i!RVFW{ zPB3u^FG5}498_WqP-2=;_~wG0)9 zkr1`_z^D%Fs}txUPz_G2AMQ}|iF6$(_HNz$y`;c2_PrR_K9a~117l|J^*thO|F}44 z;S3m8y0ZX%F3yI{yJ)uk-NbEU^q$aM4c33n0t}ph{_dioPfOTuog+Ws0)$O^!R z;|=3@VjJ3J(yJP*POLD~avf;I20W*mWQw)$)%$CN$ z4z#Hc)9(%MO*tZTBUw=GRrV44C^16JW#p3olv1~c#atMCQ5EZt=dm7?LlkbU*{EWH z!N>N?shr6N#vBe>We!!nTATQS(k7GdbMNks;W2CyeO9S@u_y#uMyo1v<`-;w6WTmA zQsxl5AR>6JjgFxF?1iU<&|gF#sdugNVbW{vbX2i#P)Vz%}vI<}3EJi8t`8YBAY_Szat$98U^=)hGbjVYJxHoG8~ zY59IvccG6`tK|_*!$oeb7W!0no5hwFRB^#|AxhMSzw-I?3z{x@u=3~T1Qun@r71Hn z1lQtHsg}2)l8D=L=kvR9vw*{X6#M@2>lcJ)ru$ESJDRX>eeUFuuE9*QUGaka)ze*W z_aqxUz~<+_JumcB)r_)|z;&49U$V6wf^<+Nzc*vtVn3p18T*^{#bo5E@blo zR&=63cmNE0JQf z&Zn*I&gNf{YC_Zy&N_>9phfjLGqq6+qUQ_z*6s%ZNy9p^@iN@ucy~!?ak0XF-OF)Vm);B zN7+kqM3nUEyGbqLUHY1hhPk5fpjc=%8KjCdm~(Jg!8RF|IuVZfYO7q`A^s8_6cfhY zII-EOJjR53T8mG;wBgIQ`;~UMr6Afp!K|Z_##= zQ#)_vv68kL55*r;bY5~52n2#6)cf^wJF^OI!!5`+KyBGPQS_LyR{XKsLF039WKp@> z)t!1g{me#9j8a<024m5|a;X81O{2)?A!6+}zgKjb%_AzD%t~>sdHQ9a^5*nOd zp+I{ISc3Et^LNkgxVAPuNIh!w$H?VBzW;D|YV10n8<%bQY_3p0-{ck;+XjCp25_{F ztKA`=rYFytO~0^nFNh-Dm$IE+>6AE01CBY>j50sxa z8m0!$A=t%pXTX;`fkBG&5wYvOSZ(`uejz^ODGH+;Vef;ze1|m`j@qiTrR@l=5Z_&| zqlE^wqn?9`85S~<@*{tiqJKRxKbytPj0#QyXW3P;ah&~Sp}2t|=}4ZF1zcikR8oIG zQD-;ol%DpHQgg+sMP0QkTD8ShT=0tbm`W?<*E=Q^ z(v00NsB+}+KkT)rqm@T1mcnQ@txH=o8Z$*$R8GpXTibF3?XH&LcavH!w@D126l;^J z(SsawBQS%Tx>{lc7Y4;#Z%whDCe;-~m5-?6H=C%#GxSd{nXv5lyffPM1*0jD!4n4n zuR04yV_mS{0B0}R+!kgu9CT<3T`pW2_FfOp!Rv@^x>f7H(q20*>54Bm$#NpJ9s|3J z8hPVpZ2-|ksyL0ldl{RoG zZbP~&qobyY;`^nrm6@xqfvHqgFTV(U>EL^X7u*eg+M~tfHIF5qIPz=tC#xXI1KoP9 z(e_J}^#xn$mb)BtFJSe|Lr$L=KAW*rIMIJXedjY;K)o9#fRio$FsX4rST}J3KCgBx z4AE}|7K}^3-%)}# z8V9}~f!Z`58PI&OP9qK>4oZ(-1kT*uagRW0lB~YciD#L_>HSRObTtmV{e-5*l2O?!`0QR;N;#ZI%L|*Q1+uXk+QPW*$FszRU5Vo8e zaGVT?4*y->j(bUG&-0()2D0}60V|5RPXDj4@sVybJY`*L^K(dPd!^SBz)35fVG3OM zPuOZ|izEAtEoa@nk)*$VZm|eXafm29fHFdc4}+pNdoa}x2`1V9Zz&KJ2QpTgInsV9 zzE$x%B)93$A4R=X;v9Iq$gacU0s+Y6hK4s}rvvvlx_HOVNl%k+;pQBM278YoOOA29rR`y$23v z#UNgz@do-Xxz3M< z%o}XDlFC-^x6WN74j?RhIX;Ne{u)98!M<}cc;>n34dbl~1N`8$m+a?Ns1%=Qlklyp z*(Z9sqZoTQ#s|5`B4=$_D)paWlb!r=?k!X?3!M;>(BiTNLlw1aHX7;`4O?~Q9K3+bH z(6<{3)&YS)UkQ8@CDnwaWV?s*V9*5a3&xv}(l?Hk$|HEo)3-$`S3G6;YTL3Dv+W>=Te;lTKwR!Qr5?xXw3ZPLT@Ine-MapmGT zU@3;EfSHgx;noS}P_2o|%ISFFUtF~%4*Lw@Cv(GK3yMAyVkdqMVSbXw>-SK7$muuNu^;CoxwLqf50PjNbqe$VY5N#jKbWDHT%Z*L= z)nJ}zNujVeKntDpQQvUDqu6X{MtIvg)iyJ%-6bc=#ZO92AYA3qS(zHfgF`@f9};PW zmshfnd*Q-f&4l|#Y=}FaT*XU`xAnW6z_|s&&&ZFmnm+GkPGi4M4fPaM*cnvndaiD{ zB?fq1LHOP;tC{yMtVT$zR1DVmaY`d%d9qF|Uu>0Zc4JwE!-uTHpYJe`D%Np?mC|o% zQUixUQ1sEsBW%hwGJaZCjJcW!``#hcLK%`^=q<%5^Nkj`NQ4;ejvIOX#=Y|NYYp5x z7oikC}Ei_+3g=W3g(t3Xc%!g@;G^LAd>X11u0gK4q8Y= zV_~dn*>hfl7qr-5slW6r7o%Z_q?kTLn8Pe!p}{F3C(QK8G#(H^^tRz$w|-BC*+$^COoSz9AkA* z?%hdCS*VTldMYfbt3W#gXD`xxYCX64m6f8%A7)E*(bWErS}l!OriZ=qheeKG-oB|K*-L%o7`d5{S$oTejk#6)5g3hmLpF&q8Qy(#A~@x(T+bD0i%sm7&fcEOTsQbi4B z3mQnT-1<aB-~A|ofPo`hRkMh*dX!f+=QpsBI+vfbY(eN+y>BqBGQh7=P>f%nHs~vn)PIJJ z;A$MLxX|~D>^@u*ANGhxbX|7#vXNya_J$ZstX(nh$P3UQ7-(`+W@7UfoYk_fG^QZs zJDzW9TMpC()6W_Crt+RmsXN@VGY8I0W>xIftX%Gc{d2e*JR**ja9?;U#(MaYT_|3~ zc3BpzqV~375=nGDmk{INZX6lDXI50JJ^Cx;(*CF5OV_ul$TJnqH4`l_?Y4Rp=_pka z*@@u2zld6GTa!F0kY{2uwQ&-*@5+?QFLcLN1U3@KY#pAsb1;CDyJ)av&`};KnDE$$ zDWL7pYR=2aKin0%x3A&Bsio9Yx=L?@Hz@m!IT@mNy`mb{=%n>rPDPUIg*--FbnKm0 zi+Ael>E2QNl`sAIU!GTb;4mh`{AbCCkvpJSt7`_g=rnqN>fw(KhD)L|EF;ZeA8*(? zbsWLxfdY?d9CqB``Sp4|Y#*%Gp9G2J`!N19cw}Lmfodm2w6hcNbl=Klt*&4u51PG zDsI!Duzbhs9ag_)Ky|ziejou^tgz_)!wLOsONASqk`OJBHPSbwZoH-;O}&0Y-)-uF?C!8YAp93N7fp{;19~P z&E93{;4{l>E1ke>F})UnqBX>wF{TH8L{y+rM~L`*e5E@=%e#TV&fJkM*^Mj3V4mbIW2Fut@eR_FkJScC*Y z)9jqlFu7*Orsa35%%rqqGq{F-c@y_#CzA9Gb$`<0j2Z7UEL=Fv&(t^=Sw&S`*pKC;MNkZELB!>;VFuyg<83PW2W=LDo}x%Hb@WZ*@WU|w)YcRpPLI#wjJejnr~BxG8Jyn&g-$dU#jDqvbgyub=xF6 zp;by@sV;y1m^G4L0U+5@guGQTwagHTe)vYtyUG3TuemWv@ipmec90VL= z_AY15FcX%+jV6eH5%%Q>y_|8%vB%|sd|Wt<=ZX*W$w&QC0`G9VqP_~)TPco6rm1(p z(tA9{GR+A-XS85*>xEx45+7T0J`01YjrUDTXg8@bv>s`P8yLVyQ;n$!K1e6iTE|Yr z3@HmU#W8SM%F(FYrqME4;**1fdq`QY1DgEO%D`EPyTQc06kCSj;ej4iTAy>g>{3yy zHDZ+-xulk6UdlkV*)T30sUAL{Dv6JFN$!rD_kQJhKZV>b;-nKY7C@yCSG_tHDd7=?+V(RSA=R3HT&giw{*}60c5Ec z@McSajkT17TN=`xzD=s-8`lat0j}b~0BF1bzrsAXp991Xa4mjgDyYSHug@(9@iWzD zA*ZPXFwlA46$~|5AG*`}QOm7%;K-aigA9VF<`+v6h=FW1xJctfQTFY|ml7h9&={FJ zU)LB!ofbnp)MB*Vv*Q6vsVa7lrQ|_qRh2;L8f<0|Z(*dv(c*p%fXPZUUh_-w**W@4 zy!X^OFj5 zo5KdSQtWQq%^8inGADnTr)FmBldg|z9KX`BY)HVX2cn(7|ZxKA4DYM z#j3dXo8Q6z@rdW%+S_LLE3!3C`(y13!udPbiu4G-@t1nc`=doZY(RbZwv<@0?ttb5 zwk%%#y*9u_XxvY~ycWGIm}~ zAb7AZfJF9W+1I3k#7wL<*ZX~dU)o0HmqzdLOFyzieHA6SUr{7`XB{SK4519Z#Q6a1 ze*kC5Q0d6hbjicc;LFIO!l?(mkdlM{DM_MoK>8gn6?7JVRKfUGD=V)xsV>wSYW}c4 zk@|(>-SboT(>cW=wYVxDp#C_TH_l?52?NQQaV@kn=P+rS_8qhDa8PXqHuD@IG%o}u z$j$Vh2NE?*h5>9|yJ=94_#(c=&SWHmbfwJl<&56drwpRE9!QzZ#~nXcUgd4(p?s#1 zyQB?JWB||9Z7J&u#>Q3LH~TwDPY@OYUGGiXs9syInf0h2zTT|8qkQcAWAIbKOvL|? z5B_#@%!T>cpA#pr8`DJWY@IjpmlCfOcwu4h5;g;%vViP(`PD!TOfu};Pkh^wS+Xc8 z92<4z5}$8v!p6pE9Adj*yYNn}6U?FuJj$V}5Zlokt;08+dTKY)pYMyb(4&m7P{7Ed z{|Or>yfcG94(|CN_PoHWO;6~JO-9`AfGquB5mUhOKepx&3J`nFe@(Q3TAmitC>ZmkhVvcesjs`W@5A@%d4p^AlHZ zZ!Oa+aTr){gDW|0!yQ@KfWKpEoa*nG+#j;};ctV7s;r&~Q~IN2q}>lvN3cWIW*8nd z)xeJXc8pEuE9;T#{;LBc4YWiP&d=zc)k9hA(4ndka~p6(C$y}?&WFMp`G78KZ|G1K zsVcyicWhc{?8)Uvy?KHaF9G_^Y>*STG{w)p11Nv*eLrpQV%42yIOnN@lYUdx=Z~$# zy*FM?!hu<$(|PMA*G)8A6y8k^H_x$^i@$cnp{JT5)1a$OCGW-Z-WO?4`s&jTNlyV_ zE67OUJhkID6;ZqOKsgPf$6UH9hdfxEW~+CC2(6H z68xWbXA!Y&D5$VDq^Z zm3h=tYO)-(Th~!*#;?@_Pwm~5ll^C`om*Qkvrm5H+?J|2e2`C9S+DFsF{4qGt!BTv zA3J`QZYvvaR0o-|>}=hfiDHlUo?(H({pUE1@14m@AQ@ofFD}dxC-)=8DKX4-%A{G{@~J}oW;txmgJ`hgOZ*c3amRzC z+`9f;NkZxB(qja2)cm@Ck=4ouMNnw+I$#zYDMGhp} zjW*&zQEaP$V%F;}K55mRK92FLv2)=Hy7D&Zc{+f?u6!1Q&Jie0Pzakp(;&XfN8f)f z>}EwyT~O;&oWi>DsMJqh`}go|Jjx`d^YbE>ZY6Kcs(hFc5}9Eg5dBwP9}Crpd!S`` zYGxs!P4?`wOq}^KzuPVf21Ahxj*|?i3zEF)mdi+m=CH{+9{WXp?^oqrti%;!!64fE z`MRPPJ_n%D-N*wKBL+d6uZ%}RYK{?+^BG}5YsUsFmaDhmT$|P_OIFRD3!H1x2vhI# z_nt^@4_4InT)27)%v!WUhBZ!=otlp_{1Io(%B}RVb#0T5=*A`o%qb_1&&tIA%)N?w z(lOVN*q4?tEZSvs8Mz=kz7q|;zZ=AZiL>rMUC~~H_WbCmb8Xv%8a>{pmml@z^*Vgw z%d@zv&3R@%2D$8e|Bg%sGE)flN4E|%KAiMpXFh>yKfcD^nXl94EIzw^3tL7jD3f_^ z`wfQ4k!~gKfV%3NRuj={axP@YT$VLY!gaO5s@s0yB_3^+uxIGAvlW`1=gRz1Ybd&p z{;lEctr=@R<>-YiFLjp)w{zg*0C(?~GrYn3JQFdimM&wfZAy{~cve=ylXFj`2BC*z zWF9-ucb&Jy+5HfqN57jj$8r&>?moT?av_?of_~aSU$WXV7-R99m#!_q7JTeuoPj0= z*{GJls|R~jminU2RlD@E7z+o2!ve#$*?D00vcmEK+_~I?{4s>n+&KJ<&+G}}Ta$cp z{HX7VQb$+&sPlSTW<-A&E&^pZlH6K*ZxS=>w6u@-hAn|yD~XZ{KrK7n0#lLn3alrJ zPQh1c_CYyC2$gVRXWZ6#=K6KGrN3GvyAdlDFL48r+LL=9t#yX;9&bghVB~$aK%hRH zd_HbeqrKENot;7BvJmeO*s=6)a(-IsFJ5d$@=C}BDEbSW2jlgr+c)fnS z-ttYD;vJ|=8aGPj9tK8;aFFJXL*j$5kGF-@19Vi4GnDKphX|r>8r><)_M%vNC69Mg z^V$f`dAmGlvqSI}qtY`)O|-C0?8cI-=wH=^tf1;WK_Xrx`nv1UQ0QgBel=c|;6s`; zhSK{;g{enVIm)E@&sh%ZMJ;KGg#h7Nlg7O+P61 zm5tg=w~CdENQ(}1JDupH|NEA!Di5dH$^HdVJW8@IX=iDF{7IY~U>z4-y;kGWO=4Lb zqFfZ!>iiV}_i|KYy;x0|jy%=IIhFc7WBWJry$b0`av7o}0DvoX?#S|2f|lO-R(zg^ z(N~Ru+-sUL5}u;dB~BVg=AE8?(h)q_VqSPbvPM*yiaM4Md6zh4G)&YdDI|=g;ccqk zNwm#L5V+$g<4>Du$AhlEc(xeAlB_)V^tQL7lWDTk`IPS;VOJ=+T+k^uwSvy$t={|b zjG#A5v3$0fs2gsg*HnMuX8c04M|l~q$c~un{E3f95iFz__*1U=T~CP0@)w-E=^zf> zyxOR4Pl0mR@-(cw&8-z+B^yp?LJyE7JZows@)m@ikqeGePc#`XduhbikT%M2BJ6do z&!*f*y0zr2c{fQ!{Jf3eJkMYSp4fR?KQ0t+h3r>#b_OM1)(JH8LZ+KPZv7V}NZwin z;&>cnx<3s}vqHC}xbt#6HFKVUqQvbYM74<9My;-pWY*{Xb^|G;l&$lx-Kwcr`pF)v z6d*)yri{mn7VpOH3SNk27DxJ(xXaJV1yhaoS(usCX1OIfE7dzF8LPXu6qZ{e#hGr+ zjVn9oj_2z27p&2U!W#4LkMpvIxTGxuA^91LC2(Q^=G;GUnye!)eX(|xf5%yAf=oUC zlk03ufu{7KF`Qp^d7bPB8O)2T{*qB&oDi$Yxe_}>E5EY@7cPeSD{c7jVat{nzbLz^ zom*?e4|Cj9fs(`i1b1l;M%vgC+pLWC|C+27&QKe5J)4yHYbhYVz#r4mJmCpVO>8UC zCN!|t2i$Tm-EQTeQ7FyKg8W8vTVI=?%|rMTH?d@{}_AkxTdylYnZB1 z6cv#wSSTt2DoTe~DN3;d(xQMM(tAyUpd!6W5hN59RJ!zzNFs+4nj{z?C>;VJlu$yF zZ$*91Iq$vqz3=z8Kf~T@uQk`4bIdWuVE^-nr7LT+#kE9zWBr(lFUsbfsu)AB@@l>P zO|&0zL1ji8@H+&OsCu$fEgP5!IVS&o`#-M4RH zx#ZvyDfapGxg*jrMD}IO!)No$XkLoC#?>N7?aHoYX?44Ev5&(A_~S2+@PaBN%^G=N zls9Pq8|qsQ{^oY>8h5s4L!mI3;?1mQO2Xz}=BTq|&G(aTmY@lmv(J*4IFEe#v3{Ma z)@Yb2X(dIvNY?j4CJ&po&ilL;J#~sBo+o5%{Y7XgYP^mo?1!yw{p_>LH%nvdt0uI; z_e&m7*~-y_iXDP=FIQ2}@n>ieY3pffd=F-8T$6yR--07cwbq6acYDnmr(YOVy3=5C z$mb|qCC4wP-ali7fP4!wrLRUThk*^oo!dkk{87acfq-~!)f444e<`yIfZf5=B7bxR zUUr>3V3ZQOW35fIF9ll$k587?E!8OyYCZ5)mo*Fl*r)z8GD~08sw`bjo!BwUZJ5A$ zy!QSVfrOdTRh&)yjSu;GZ*cavEDn@>rW!@t5b92ms5(f`=8g4^#YELun{L?0;cI8% zUfZ0(kxv+JvT%8!)=0U3_YMBTvHH!$zbin+VObn+FuNJL)Q$1ju+QSOV$i0?8AmDf zrH=93(fB~(Rtb7yNO-e!OntCp>fw!3DYv)8g;s67{!J?`a>|8P{GbtseAzaB!b z8AXs)=15*dRh}uok<*GKMPKp9r?6Aquw0_1u+e$uYVu8F4Pu!T3J{ z1+C5+Lp#Sf9`jXd`Dy)bAHdUGjm`V6?LzFo{^`xGH^(5xCd323&u1jXR>i z8bkTk9gvVkN*65ABhfbzdAGaoX@=WxQ{Sw&XQIzcH{MKj`hS=kUlwT7dcUJ&M<7?_ znT0>S1RT;*uZPPB)2w6-yId|eD#UXyd3yc6!t+r(A z8AO#i+%41GO7*FX)}vzgv_StsGxit;78w`C{(tcf{$oX_r2Il%;h$%C558 zT(Sbg_Wu7*YvGqb?w_{a-!c-1J8Tcxv0#Bf4-X3vSp>5Rc%{Xy$wo^Vx)yL{4x3s! zRZL()`SLy9(*JPXs5lMpL&27zj5~i(^QL+Oli>}iqoU@;y!aF1$43JnG4LxvD%KVY z1l43eYE2Ei;6fAj^PDzpl$AMO=OuO`dZ#pnSATq%Y{PZE0itXi@sHI&-YigfwaJ<- z$`(Ej>VfKdxQ^{TJ^dZQx0b5jijCWQo=VHDrDyCP1_oTegs6VO_#im4xcUEbIrBtA z^SK_#99OT5hY5EgJh~NoR303qi|A)+C>u4@$gh)y zuGiCspO*gAAlVB8EPs-Ye99obK8U3w`Mv=_A!A-U=l=4Ro<&5wI=yfHsb`}g4(NyJ zv`??s*T$)Ao629ScK6JDtZo{=hXEBR z-m(nCBM&7(052i4g9bU{ACg{PH!#gh0ope1ThU+krDIbjHfzRHh{dYYflmqn z@h>R|j(N}XOW$2}@Ehs;zaB5(PPL_PVKZ$fPUQD>RO4f%sPZf+{wW)DS?;2vmZUx& zY!JtNyElRF#RF!^56L~@?tUudWwkWf`FMmkmq&G%kg|8d8o9#q;Bef0RlH~)Sn*Kc z_vF;*qA4|{F1Pre75>`EwescEw)SQ$G*e7xdTpwHm_GVxRn30^-MP@uFWae?dHH(p zruX!H8P#`MqYEpNSgpl+qR_(p48bA1s!E?u*ws%)|G+OS&@UsR1p3$eUFTDzVx>C1 zO&{~)0}fK>elQX*Q#W@(n#R3-7FWLQr!iFMO}-621!IchL`8As`pT4Xk=>sSK+k8j zR=*);bIrESr@>r!?%S;568YxGY^~PusQFGmc68LYgh+wK^G<;NeHj5a>A9-@yi1YQ z19Zja=TZVqm=c5?`vT0SHE%;!GVcVCjx@fukS({_xuQO2+ETI0ldS~oPtX>&{;Ah} zWvu1O74h`L@u!_5!L_JUer(|f82_JR=elp{HWKrWW$x|2hlcgEj_A2broOewh{;tO zjOhr4(IyUqU2q(53)72JCP-xle?hFrE2h;%66WiQ(j~u*&$zFtjClATaH}@#)}z|G zAjRjaYCMl?L9*2a)3$qB!?fh7GdYJfwX5W}d~YGB_gt&6cU!6F$EPV=TMr6$#Xvy` zzYR)wBI6SnU=XLK2|+GzF)XK6UT!l~;P2|*X_3l|Zi$9tWQTzhPS}h#I{1o44_wp9 zzF}bIuA^F3k6_5ctphPHqXqslxzEIR-eX8oUN>`eg7<=S*nsxe<3q))V|SLScta%| zqL7@}gQ~IIE3s~M?yq0Rj?vjIn9_uxHc@(Jv+L=s^b(5WsQ8}#ywbEnkMb5Tx4d++qj#oLKVX9)2R+pm}f zCfui58^IPOgzf9)h1U5Mf`S5!Go|L=#G$8FYG47xGoI5o{NP8*f;5VI&MT4G$XvMU(AA_=i+VW2ywWj7hU6I^FAC0e&3 z0w~PKc`xk5b-GTgJcy6w^0$jQ>x#a8m!vy1_~3cJ3q*C-!4}-hW1{KjucNO8bb3kP zK)VkNFk9Uc+?5 z@Oth`o97NzWU|@7c$ajX?D9QHcxYypXR-M{A2y|*yQTMh5etG^p&JWNQq2{GcH1n= zwY2Oq(QPXsdhq$oX)zT+&<)HhZY-HD>`OQ|OJ&Qt4Xirn2mV{#{AJYksPoUk z>Ta~zMVTJjygkyZD$c1j8q{Y!;z#r0pM5h-c2C*1M`8K(lU})_=HuZ_Kg7!I+tq4} zZ`L#%t1^n!v|ALr)?I8amP6qwwj}<&(6JewI#alz`Qjy4mGJ9Q=(G4|h{RuecRdLc zy-I63l!h@`X5@a0U8UMwr3gccL&Pw1{7gNE%kyW~%u43X3JrcDdp{25*BgsN0-kHe z43>UFV9wY`Y1-BDIq@(}z~Kr7JVP?ICoVA2OHCTLlF3fMPbW<6YZ4(TFqijgA96{eW!JF4>?-x4 zO#0-~4^w_cGcT7~zUeFg0;|n(2mEZ)Dzg|==ZieG7pUu2f ze^F+vwn<2!!z;=&d`oC42|D9<5QRNm<9g)xMvm`}Pi!3bSWiNHL4AVmm|1@vl{>gr zj7I+G%RDcBIjAq@5Frn3r7+R`fU>={J`^LoN0mPE*-@|}_VW6q_fJy!7knbabt=Xg zW%MOtjFu$cvE9|$)DH9kF%zT{4Co%C1%@(}QFkXyJXfO15;A2gK@%2PH{W82P?(B) z4Pbd+6!XKPUsaL~w_ei|O6w7p`+YTZqVI~x{t6D`)9YomFC6#XXU>z!(R||g*fRvT z3*#P$qXKT@u;MQ%U)vo5^`tNf9-ZKB2tfr0OcU(dl%!!9{N82>Ud-roy2<=%Bf!66-1&b@%IX>e(Qi|p>Ubwd7n7-5T_NEOx#TKT*BWY97>*rag30x&2pVu`YU<~w6eZZvmEhU0?(iOP2oL{7aN*6 zz4De2^A@Yc62~0k@k^xC=)3$_cgG$$VN{MEa*Xw9dZ3kawQ~2AOe%k{H^6HE)b(b` z?l5Dk@++^IZO*#eqi4gB8=F~8hwx|9O8D8AXyxv@*8NgiA^WODZ>M9byA3pCb4$2x z^+1+~$AbPFxL$Vs0Cm@*qTwK)ax>GwY;E#LCTr&th6TUI2VT123BZiB#)<_sj;Z~t zo&sOu&$u#BT62yU=6I$ocTvE~=*E%!NLQj{&SJ-#+@fvK^(w-CeZ;47srem?S&?u@F~v!>m!|{loqoNGLN=MJd&6Yl3C?SsBKhOjBl(@UdwZExL6vi z-#33rJgmSKV`DlBgzE(sXG$Mh5@Mszi+z#_03vr~>$V!-77`Dcn3cz66C!p&fjVLjXbs&!{7qk!W8&0w3HM|wId*`UGM z;mm(xPNLWBfsb2!01#5ykOZCD3?U#WFCD4T?O5wKH zB+Ms{EnpEe>X#PQDfwJk2qJ`&o~h}3KI(OU#EXd4*Z zarx{X7AzY;S5pua*ItDSg?kZyPZ9(-{86g@rPmC6W>3t;%WTacznW8?N}QnFgrrN! z`PIgpq;SFQIs{p~=aE}7tGYbCSZcm^Z>d=)r3DkjY7wlt8LF_lvYVx{%Z$GA8nTf) zg(qb9KALudIwqPd?+jKu!r1xW^b>(Icd+opN>j>x(aRx=A5DravSYXFT=p8bU0@L? z`!BQNRDd=c3@#%HRLc4*!e#@h?@_s;68PzV!_UoDf2=!BouoV{L;6HI^R+02ahRW2 z-u#Yj)CSP_rN@+=NGIxlGvYSwKzwC5l&>iN-+u81U@dl)150T!Eg|%GHQ=l3efuNi z11!8F%^GHVaE~Nirjj(f?@Lb%O67R2(?8{A;1ZfOR=Y8Ca?{fPtyj5T(7^ z;4|!_k}v{Hg7fjg{%98Jvi`j6dA#U?MXhG@=0A@Yc3uxwGX{X|nH3I)AXe7DE;NZg zd^s!u+_I-k=R5ph+XlNxn>|H=L658U+v0C&wgOUvD&SUhjk%^=n%>$F900nezu(3T zSR-0w{+jh3Zm*WaNb%3T#b5Pj3~21&KLlW7WH$0#(PvAJa$CUAhK^%Sp zXMMZ_VcxwgCcy|%JHa$NepH@j>{wEvdtq%iOE-J_hR3x;a-#IqWO_sRYmDX(%x;eA zgN~bgn~-Q9x;DK;`eB>a2nP~5++kw_scCk80$2VTQ3DwOiW#MLrOh^;DjG_$Q}VA4 zjEZM^X-wIPMuE&5L;|~|s>xFrGFc%Xq}5q~yzp!JV>xa)@BvYC6A9h5Is5}*mJAd) zTS`DYBz96z9P=E}BMi)?-46KD(%(m^y z+E+D^!a;3%ob-#2`$^xTd6c;X3+Bf?@hDRbK|D-@PiD!Mc*OPV#37{=zgH6nX%zT9 zJh5hW*xF)e1*l?inCeGHlXJ!<4SP_?-i}9-xz~#q&U+y8MVU!mw$z8-jkP+0Z%*N( z`W153h_<7dqnoKX>hUjF7YN)df?4XGx-YTsRNB$eV@j>AFP z@7Z-bf0Ya2x|$E$IXsTJKv4M&IvUlD!%?kgwe~X{C@| zx!=r~%DLrK1c=J{|X6^TOF)hS}xl;NbJKx=jXJ+`^1$}Qw zJi&(Cl`P7Jh4jOIkR?6;Q(WsnzfW6QD1<9CM(?bAd%3>kYF9B&WrqRasw(yw+_{3@ zodCbMzM!T$uzC|Y8_5&gQI^aQOJrOhWlSm{`~jR}pN>In3{CYzw_e^K!8Q%ZGZGGL zgHS^G_Eq96?-?s;+;tm`Q#byrw?44Mk_BcAqWS zD*=o9fmXjZU#PJ@o%E{TRQs4>tr##dG00S3532~l+c_s_HX9j@xmW%q2S2yby5;oW9I-vsQK-q9>t^E$NN@65S61FjL}0G&bu zmlwOky{hGLhF%~4P$?%=Xc3-98%FZ-EXLMyjC-#b)JqcND5*9r=r+nE9kbIP{x|LO zAhqLs%WDe-T}Lb*mhZ#nLMQ-ZF^INUIk{n13#^1MuE_D0pKWCPqjDS3&C7cbuwK*y z!TWfG)Kpbz(2JInMS;tl=PgT(s$&~s;^7kg_RD)jsiE|ro;;qrae%%Owy7_w$!iuq z^X6D?e8~J0*7Nil&)+A@;qcp=_r#;aRGqnil%Ok+68!cFV&%pw`te8d-;s6&=g(+A zzfsWi1A0RSbh*gZ5{*OGKQ??5agw@!?F^=>ajj5k?=^SKhN4wp%H+HN_32Z77bzT1 z^!Q9dh+D>V-kE(ko(@K%+bQNq@y34#3SL-tz*7@o zd~{^Jr>wDW;J|G4B?%fQ+dWt62&Kgx5W)(3zDg|X4r_^_OzA;!)`tW_C#4a46TPDh z(LUirHWtd*GcNkC*`wy2MjzN9nCWYlI6(ha(u}bzpR-azMS zZU(9pws#6s@suuCc>mfYw24?50qZ`aedrW}`nmMixNoVwZo;s1m*ws6D;<_>BT{4V z^iVo+2R>S_x*Xm5U|ZUCRpqAv2%pbw8y zOm$!_$uVZ{RuKM$%l_Esj_iq5JDH4655K!A=j158=oyqGBk%R6c;GX7V6t|C;TMce>dZ){&MA_8zqwV#VPpe)lBUF`nhMIxc(rIs2p0$7Su&a{V3IDCTW-0TN z^c%`dv|8s@E z4FG>ZS;~*}hVq7T<{{K)Vqg-ndxBs~cUb*0#6;OY>Mw1s^>Zl;8x>0I=)p%7uh~Me zTh7C~**@uaJ8EQ~Xwi!Ilo(Bk%Io&jWh44H_oHRSp~a5j4Jn;k{Y?rM2~6Z`9)EvT zBv=jvsiX-;=_Lt=$Vk}seDOvO(kHE(ag0;LM$tde*8FwrJho<=;HpD6Qnx>bU;#N^ zoyk`kkgVnT52E06;wvc|4wM>?wrK@@N~z2PSN_Z36ObV(PEA)rqc;pXd<^CIVsE-#_9Hh(L>enQ`={qX$CEx4yDMYQJkKpv^{UUpw!{l@I3JY?SSc2nFvkkcm zzO{d;QHuTb(ZWc2s5K+&K2$l8VIN6rb!Kk6_&)PYiFC zHh2}{?^mh%{VEINu@G_Yz}2R*VOJY-)%PJ{7uQ?8hpZ*IKHvJosk?$r+5e#cEC zc}7Y-)MMKsazU`N1c#m^TxLb!z33$B2O&gfy8&HdsIr4R={H_B8z8KsK>E-2WC8Qm zBeE0pDwf}1B~$ubU9nZ+;fw--otXk=RQ$TxD7b%PZEE?~`pwol{!;M-bw$+`-D9`d^NLPZj*r$cINSHNAsw#H%IOSe6;H9yYID0l|8Poi1@<1u{S06H9!~wcD(|BPWsCkNhJ6@ z+H>(pm)9widPOINLWm#)PC&7Vy+``rnZI)+ddU7%a(G5y8E(2q<2^YvB)#vK;bWK9 zZrvp+$1?*rF3JR7;}}L66pJ9;p)Vsu7Pg|>HG%^+?HS425?RL8@Lz?{-%9isN`c@* zd0ORkyB}9|ZL__9DPI(hO{|)eGRCL13HPH`ZjOBmbzJ_gurt^h97ks6{<-wTS#O81A)0EPGNAQNWg3kBs;K)cZh$%Rtr1Cn zX9$4aZnXOCW>E#zN>V_lo>h4Wx?N>?GL$`&i|hYIZdkRmEz@n)MX^oGWj_P>Z*zl)(BlQ3FkHD^5)}hrJ(Xs;;3m1e0UN{R90AQen5SSg9PH4)zZ)QzcaRqTA}xxiM_uoY zW^jG1OIf~?zGz?h{Nd%RhR})SDXoSg(lbc(TOJ!*Vxz)1?lE!z9+@0AO*nM4?37QC z!RbnQ{ad8FmF|d7nOUw3tFlE-bDb{OB41epcf%WZ z@-!actWw48EmBTWRP73qn-QH<+P2jVB6O%*7o*HZnoP7le?+xL$b%(|bI9^82b7^mF?O$a&Q ze83spaoh8({GV!S<4XN8TGF8tO8!IjK6g*tO7gJh4%&vNu?bn;;Xi=Ohl%yAqx&S2 z^J4hLa%IZ&Gf%I21eEMCnaPcPk2$hpCDW!gPWVV|KMm0~`O;s=UFA7Fhknr@m>=_f zg`afhcb)r{ljI+?Gi%3SAE}h7Ua<0-6eLqC?*uEwjM%3uz*`HbC?h2#z0)2KS|!fV z=xvCO@{vWEk`W`@8ZK9?C;yDg%evlt*WnI$qeM*a*DuwtlK5mkui({ehpI0})(D^0 z|I#W4O4C*4+??XuYAg5?F!iYJ0{NY`bx$c&IQAR7MPET{azOoqqBXmik@YoGmO#*aJ>5R3-q&{KK{s#_So!qDeQ>!N zX#JQ2ohhZe#PMf{gbmhi{lb>PkVcknqb~Xwt@)2|jx!gKM*vhDwxq`Bt0!tz@?`JN za@!54eJXZ@ks~w>dyE7sCz8=IC)B29YSF$Ed35 z-QRAm*anx!Lg>}9%l>PX{_BgcsU}-x+d@sO`Qa6-fxxi~6t33%n^ zY6@J+bbU>sqN7QY6T;M<`1Y0IITOBcP|-n4-&#kyA1y;nJ)@6ME6p4oJfmvt$KGtP zjECK?0{hJj@*W#viG8dLEXvEfYn^v=aphdEA%ClKfd+~#@Mu@PdTW!mVCkv6^^V$H z$xJe*v0oYw(+|SvcM(8&;}|u{>V|mnf?6Sr8R9y|Jk~b)y_34yLz?k9R!PiN)Rv!j zPh4m3Vd{Jwr;ypE(;G^z0`QP+i>+F$f*J~zaVvz>1hjV^`J}5#Use7PEM=LLa6DM= zVDDF@cPct&O@)EW2DVKD%d75c!|;WTfW-T0vTwKum}cV$Sb#N&b1vJMv5$}ZOw;un zNANFfOv;M=hN$DLFUYkOR^wBf-r%Mq2^)`BHnZ~c76`EH%^6wfE(Gd&CS`oQyg(w8 z_suJU7LHQ1xoxtI>-$VYdDGlM14a6oPNh(|wt8heWBPRBP)&NYof7qNn^qBKVv7m! zKcc;{;_+s3d*w^^K`RX7$>*^NUn=iYJf{{M@a^ilyBGN;@mz7kez97-AQ!VvW+`;Xm^V zts!*+a@{v=-cZbIE%?>nnMsq(1(hm7m5NDtx-Icb;O^v(6BUR$o&!{s90Vl)$*Yw_ zd4+I6>Q|3@O6c zwFRlw$hBL~AZ3fK#gy^XqlZA)K#1rM;^9>=Hw(~)lRdZ05VJe0?)|A3=4ni*PN4-6 z3}1xNmc!RF+oKI`pBw9LBeK^4R&~#oUc4!hlEV6^J7MG$*x-uW6tbGNiKKTyEZKViKT+b&^-hqLu&Zq zKo_d0UvS)~(5bAxjWjJiWnU@Ksp_Tr+0Viwl(}1feSll@0nVz<+7X@^J`c@@(DS4o zu^rGERDg$SU==*6=v!fvgHNZa914LdU8O!P1V~mYrZ^l{vmwgZ4x=ra)e`7#H;g`? z{yw1GMRT_s_g+_fZxSpDqQqXmWO7Zj4ayl6)a;T%{xsu0xS|pPV~#djG~n`NRjMbH z1B=5OdW}QmC}#-7*pc3-`>ybJF3&SV7oXd1Xc6iu%04Oe3>&&tO5Wi8x`;-LcoQPy zo`0|5#?Tww&bgmV{T~sQBBO=P@NLJD8y8lUmNmixG?W`_*+s>FVcQ@wn4xkEkz(1|O%BTXp z4&zjr{5Ph>IGJ_v6O0v-J>V)ThsL+NHRA(;=1x}Vj@kr*o~=T z>8QMn_z#w`&aM2Jb*V}-6y4$g=9Z-+U=vV>lubL=>o+9FBJ~Ek5Du3oo6Aoh$$$7F z=G%Ttmk5(v)E!s%7AFF!DvsAbWb|xLS(ayQRR;fDdy|zz7*%jgm&?#?L_|8J3}0ws zBs4u6X|zny+)x8(SOxrzKf;3 zKOfSpESRU3mOi(kT#4OTg)-X$N}#&gu?JQs%$%A^o`I;1v)gbesszV`AhEoyemB@A z0(KPd!>Q>}?>^+!5S5$aYXf8>L5tyU7|FNT?U)!y-4*@BGPHr)$_Jbb79wtWAnuaj zx2Mn8ic%jQ|DYH3kjM2oo6u0Bf|Z`LO{9=Tyn$)zX+z^z*20>Zvv`?J4p?C47;JKs zkz`S-qip;kPG;Fxta8ZsBEZI#@?`LkS3f>!UDXmDIZ0zQUPicp6C01wo=|ykCSIJd z+SO<*%92;|ix+FqwHeOL4{(!58kf)v*$$dgt(?upQX|H|YxMo`*|zF!j#Rw#tpde@ z$mqAoJrn8j^e5@IaiRKzLG>c2i((x!8(4%SAgV1UvoU(#0j)c>o?a?JExmtF zm~4%l4psOPF1Vt51ZaPI+Ljs_ojz!^{A8EoYzjaN7Pg~7T?-2Q3l0Bes#4c{tINva zt?tDOt9gr_YIH~vqnKh}iNbhq+%q^pt;VET6`_S7=7-)HmGW8a{RN^1 zk|mIlGeKY00YHivp(R&sJ65$T{t~JrhpUC7XZAc(Ewh4T>uk~dYLMi; z0Z=nzT_+fSBX)lSiGbCC9+x565Qu9A(p#{Vj)>F)TwYH(Wh~EJ!gd|lBZ;~uuP}-| zAkB+U`y6)PTsY8Tdeq3F6f>J0VK{y3h z3=@+4A70QY2Z!cYWc4rP3G!-6&CYr33}Xup`TV5aRPNp0BU?!sGfMAn{G?Z$ z^qE1%oh9-gyf{O%8YP4oZIRK-9k*zW0)mE;yCOBMpIw$h=rkBGMnjM0%$KCx|9HM! z{vq;6u*gs-#1HECcQa#44bIB)mgsQy@be7}6ZjofU=+>kd=T0-##Zna%0vbM68m>N z{71wXr2G7rqnZ)9Cd#~QgVua4lv+^wQs3GEzH_C~XQ*bq^Jqih^sD+oJwSPmZJ3t% zsd;N+rJ@)XZ7qR2^uO*{CcWR$l>Y>7$>?XP(ZrB4=y?DxJ0CH{jCLgXX~$UyE#W3d ztlqIvHm5|*X_?VjYv)79DNg{B17~Webrb%l_Q_bg7KCc=QWu*|p;*E-PF zQZm`AVsh#cVzIAk$zB0-X=x?#I-107hemcfF&iHqLYRWcOFtx^#vxe-I?T41`oy5O z#ejycclD27URfG5cVI1&A6!7Id|40DDxVieelO%0qLlj2sg>CDkhJ}^jyI${zPU>8 zk(At{&Os|;B@2#;0Qs!3Bq|U0)cgaRq^xw$jb^Q@vKGg(1nLR0*w z0+>xFEEjkqo@@r-fC~t4B>*zlKyl%3oY*gOXPBwk`WIVr`?K*0p}gzKa(PeNVxTjD1)c2^l7v<)GtWi?33qs_G6l>8yLaJAPub z`o{U^PUA6H{?!F)B5c54s;VE&P0(5N`VqkV;9z1PACP&3hi|KW5v-kZmH#Um^~3(+ zut6gol||po{9$P8w_@b7XNNK`Kl;UpQ&0dwp2y|RhjEWj(#DuSi>z=^p2={t=R z?2cTJdAy5&U0G^m{bl+1tN2ZSiuguzdABVKyB7nr%l@!z7cKU~KS18dlB85&LtYh% z312Gp=1Lx5NwsNDhopZD!GDm;&_eukOQ+wGN&_WsdD%uj-!c3wl%NwwduOBH?dd^2 z-Pp9a?+rX^QPb<==Y`?GH5*)$l+*rY{@*##B|5TYgkwN?VFERZ<3pZ0JpX-s4^J%| zdzW)Z(WdANxgncX<^3be*-!_$|2#}m?{m4WoizQ=vEAWT-FVWP|38~Oc5%{*kI z-c_K8T9t%YiGzG!_uj?`@$i+8c9l{a#d+p-((De?+3qm+L-eoxU<@?3!ENK$veI<{ zcNAd2@Sn8b7_iJtuW&P&DQ30Kj!Z%)xG~JCr1TTq^{z=hSiq-#q3F3|QtyBCwu54i zwr}d59O@QxT@;FupB499d`5Ej$c*?}J43Lh{JhuzQJnH?q>%2TTrryd@$Bir|B-Qz zW7rG1Y{kyxvFW=ieMo;HH(oh4g{*7Axu$DsZ`K$!w@fg%h$N)oPh#kL>mpeJ&#Lc z1(gWAPvw}pCL><85k{yEP-M!%hVBDZ$^705oRVlZUoG7t@1mJiI>*CHb0ik?TtJY> zZMaB%@^^Hgs2@8tV;R6&>UsW#p$w^=j^iYInx|bk5@oMtm zVFt$SeR^~effU%;#T4o#csc#B8#e%ewUB{GA!nPGcIYAS>QD<}e-0`SxAWYL@?|BZ zZU;Tr>)V{wJ2uQS?=C8whVqF5g*YHc(5lS-fT=uiRXHb{sWlX>A$MJ{AB;e{x}JrL z)T^yZ21xX9=iZCsEyvMSXW5+n=&n}RFBmlxAGlr>=2*&9$Mp*}Z1!$CP*`=NYFQYo zS5R~<1^)A9YRfUj-KDmclp4gyR@mU}DZlqN!#Yk?;avE!;=wSMr2n#DR|RubFE z-)cB*W+rLw3U1`F7c|QU{9sX3T>4IDaL7GSyBWZHR!>CZXv5^@33v84*2xUmIskS~ zhMT6g9i*miSO{HSI3KZqiDx-v??|c zXlz%D#q_qBc?W?w$Q)cBG>WV#h0OToT#N!?%~M((n*`#H=xd3fpFJ=dQa-iw!9ETi7yTPv!c*$!7;%{&rrpZ>@zZ9+>#0(MLJ6b}d&s`rx)7Oq72k`B8%G=mQDYGahUf8O_zw_s#8c z{kYvF23f1>p*GbwK}gD+A)dQ1qLu8MdNJeDyHf;n!IrX7MGJYCY?JDsJtX5a)V%+y zH#hcF70V`r*Mr}vtBJFbgsn*rvfK`wb7gyu|L(8B-=B!qB{+G_KTnU88+NMK0}ys% zVuW^5aHvN2BeyMEz9U4cDBXqHdQo!-Ju@=rWtt4kHx8}y<9KF#pW8Y)g+B`4;3+w@ zR3&_{vjG|K>oWUOlvXqi;VtjS>0S^9w{Ee*CbsGh!!$(ik;xB{9hGjDYC=92O+)hb z*a1nzQD-s3j1Ju8y_JbGOfM#mW}hL)eqU;523}O)3fg<0e(;`B(sj=9v5ivaRRU`z zia93gt(ltcvM0CYZZ+!60}|LxJ(~y!IbT}ZCNaT--6pjXmMoAM|Xd8s-7pHy5lDto|o?tu`4K*iKZWQAd@)`#pj?al3{M zSI3sV&(Kse?r_>O3Iv#p%4%eGZCQjmCYx8=9brHOZH75ac>o@~ln7ANOu)A(IsZq{ z7qlDW5pN4OyR2xYH-g2$I`l>#=nj9ro%pFfvwKa^KY$J20H5Uv8n{xGE;Oi&e|QwP zUZ?k?G+@w3$Tx9w+@dsXxQZVW9`4x!m-R8rN`in{d^2g(nmcccEuDkWXkENU)`W{v zeS-_#W!tM=^88S9SG+%-uimdnXLaKRZj?@?M(R_h-e={Wx)(pZTfg_X~s+xOe1xsi`;sdu_Fg*vPtyqu>`>gYP#6ie7{_DuhZUl76liq%8A=0o7?+;9(` zEQ03~E0)R~^c}w(mTv?3EIJto(4q7mzaI1AAOE3zle%{H-iU&POo#cfWX*`qi)g9H zHHxJ1c|h7+6WL;U$VuE4~uT8W~LgVY(vCr1DkVe-+sFt>jvy{Nt7#VIWI;H$5-r7Fig;E(a- z27Qd9kWKqWEiyo%2KGj$6ayfqxQ_P^M{ekjuh@!Wc|4p!*}AyZ^1EzpH2m>rb^13r z+#GsHRxL&@tgC_YJv_~W&4gdfTF`z%8}SycbXi?3z{#iqTm`=(lQ=r|7zp7qw3)B7k_XoKKqSqe>L*RsKM!Y_`GaI^Eh<6Ut59uYGzaV zuTX~cOO1#P6TjeR_8Db^vykL^%~#`jo)n^KyI8%1Y-yKQCjbTJJ-f=3|EIcu>8M`* zmcVO)3bB?@9-{Xcxdjs6c>myF%JNxphk5lYv))exL%*nVlErHr^@}M-6Pwo8*IR8@ z(*x6%DhQ9hC611~al=+6_S!(DtHVN$sJn~n-LIVB8TPb5iwVgmod7n+3kZ@Qbh9jz(D%sR(d#W@O2jBUcck>BjK z$HjmE0Q7_YhnB!Ws^7NcePa3(aetZ(gksZDb{4QZ&JGP51mN`?(wg92&s6&LwqtUv zk(u`kCaUf~=l~AQ5t+8jBb8UxA`Sc)j3Fu&dOcH zq;PFy#A*rmGh|FXy5b4(j$7@Pl+#_4hT(x9JJT&o>PIWo8FDZ!XHU&ss={A1v;<NauxvJuc^mhXx^vF2SH+!7%}-RlyY@be;<}&5WJD z{^D`LRVYidMa#wxmKX8rT24tg8IIi?t5+oU>`&Mo_?a&pMr=L`_n(7U>TonSK=VCr z)PL97z?QVso_dVfjI=6A>-=FS8oCuvGvF+9X(Bb~@Krc59>o2Tia*yz`zh=Qe`nFHV}^uT@~_6o_(V2^OjuZ$(AI zc8TmVL~1RBJYDtu{)Clv**R|_-B}_?agQ)d7V;K)=iK;ruIWZh_eRW!_H#1$Z4Tyd zd!{jeJJ{n1gYQC37K81E{7e%|a7_q#H_P5*zCp*Y5m&}S`7ROJrSk^T%~SWbg_slYf>` zBJ@s1bme=Q$M#2JBflxEzelo(JA6gZAPbQu%NW*GLaFZB4+}P z!NWUO31@U+&`C{?UCY&`G!Kbk1Z&UzAaj``h^J0zr8?2iM)7cu`L08WVNvgGLeB(n zd!WOPT8#^Qa(JP7;=cLuH9H;_Q%z4d6xAt>y0F>s@Y$JpL8^r+ZlRv?bGzk<^AXN3 zTKCtQA*_Es^9I8vPQpHy#TyZ4o_HIwlfuqAH!m}_wA3S#5beoM^L5{DRM9S|#}^kN z#pKg0`gs@XA}s`$cietLSKm?1U@Hl~AB5klo1_>t#&Z~TNd#N(PA*e@zq6tZb+0S# zjJMPFnShLW)>p&i>=(dctHjV4_UY}GE8~$R3(En{5s4pB=o3)lr~F4dttCnV#*i#G z^l3Ag-@7R&YtS@!2!vA81bAk za<#}Y3d1%L{O@NnK0?tOP|d{2`05`LMMOQv*`J??;oD1P>1qAoS_$>*OjVW`^Wx-DJdgAc-^hi;F>a8SC_A7cu4}j@U2^3lPhok*tvNTDMPs^)h0oLamqH< zfxM+v8cT4w?VVG^zJ3mANyTQ~zINsStRY23<~!OF5p6PvHAKHyiC&b!M_5RtYAzYE z98bAL+qrvlmlKN^6p;L=mMCx}99lL8 z!yxb4%{|vg3s8`=sxjZfhMsi0+#csCTsc{FCFq!rSGrSV^1Aw^44euOPp*v#2%4~Y zg?b+KJ~>I@*qrOfD(d`rx`(>9Z*kse3ic{KXYD7Uvu?+Qe=WE|qjjg~Vj-Q4<*$&% zXarS)(eW~x@1qy0y;nL+ee$Wo^o#T_i7?%)GRHj`3D2IMQolCVik7;fC>i9g9u5MGfMQ1*-HzZ@ene07NZR)K4Ooi4g;5&9kTS^>MSR;xtd z*FL|tCLu)GM_G^Un!SA>Nf_SkvHb7oNC#-Bh()PY596_QjLW;i0_Nv zlMy*yKUSd;lk%~-6rn*H-3kB2@r&s|^`WK&ZlSJaCdJHW9yeMpF~ z^$5M!b@;_-y5+?v^{3(=XV#1#2a#i{-UQ_iC>6`)i16!m9{tD{{b@l(em=kQ8G4b` z=5b$2coca{sF)br>(5Yvn;Vvo1i5^h9vEO11JO}C99BK9K-gpzioHv43P)0_&rF|r z!FuCB5=+wq#=Vsh0u?4JDq-x;n54?7PacuUNO`+E`xxcO1MYC+$BxfVHJauL483rk zGqpEd>eFo8|JOi{u*_c$oEkC1wYM(4YOWmfUyp$OT&O@I8@2B?HU3#-{c98noM5%v zk4sX^sxT*c%i0P0t+YV}AlZ6j|JxnoT#Lw$D~yLXYM-;!9q1`6BN3&#iB4_8_6MeLv{Urc=J;6Rmf?j}Zlz^Hq|^d$Ia zP0p$gD8s+P9EKMArQ2UzAskXudI%LX6_{x{!A5A!Cb(DZUWc;0V;?u?`w1`Rl=H~& z9E_46yGPEcXw(cJg63jsWx7t zP0^39!(!<6Y%hk%4~~7&8g3zXTqp@I*s{BBQOSO^;Us%g=FTiJV&PxgG~aC>dndmI zN2oceRO4eKV}DT7w{=T-f>*ym^ek*^>5G=6?Y^9p>Nu&Rufn-qCvJzNF4oSySM^Ts ztsSUQITDR<*`0or@}6A8=fuej7l{e9oy)AIIL}jTezte)SbO$Dvw1k9u3Y$0Fte+=duUwVRC+x&sK zZ5zWPgV5h9iCTnv%y5x?Kj?aY%xRqlHei4OT< z{)dv+zZV>QjOHIb{@^Biq(hFk_tkSnF2zN%Q};2+>fTqn@#av(9@)KA6*e}>(@^FW zBmS1kH^F{qg;IhG8|g@AdjDdx`Ya-l*7%Fke*$fp4_75w9JzptNVy zxI?VG_^)9!P3@qOl5vMuJz)=NJofxIm0Y#~U8U|lASxu)lNT#~M+M?Q>x@k;E#mta zTu=gXY5>(6u4y$W^Ju@$kH)$lToTOk{@pCbyQQWu5DRV`6e8RL<)O0DRZ`begvDLy zGe=1hLeTOHQj?-@E88obU&CK6Y-l)TL`RQ+MRkH|R~61-_E9G)-)ea>6j`r;#L%Y{ zbFPV(7xw<#s#GK_{uW+ngf)5N*8fM_dq*{ycHP5~DuN(IPyqviVgtlNl>|h^N>Efl zs#KMxAe|&2C?HiCic*4Ds7jR%0YQp%X@LMy=_J%ZLP+~vIP*L+?^ECRTkHF0W-XU% zdFQ&%IoCdW?{n_TXzTnM)qsk@HgMQ4$^sgb#`WhoAl7oeb6;}uSsw0kxdlg=GPypoB8>=d>j!vVCBfTt>(61$^oi@*A>cdh8(zdbW z(WiCg`^$KnBy!rSmd$Q34`F3ar{y?xk6RQgJ*qYTn9yKLjaBK-=+q#!t=o(5s9?rK zXCT0Ll=Oe2;S9}6V%801DYGv?m|KvH`25~8?X3kHus168j-Ky-$naCbgmtQmUYaY( ztsT0w*Ei=9N4N6K@>c=bAT)=L zM*A1E3^Z_h+D<~*@{#>U8}XJZIuqLX=&?2Gd)_On0ldBSMT66C;CX!g=W-`mZCzAd zTHXeWA2bvF0Ix}iN2~=Gfv(~go>rMb5mJMV1Z#d9Sy7LCqYbeKkL?_SbCkvkkZiSW zF!Qq|JLqp;8#`3f3g-M*k61(M{9Y^EX5=Dvk%h*5ZCFzTq>JNeYsuuR51Za8dLwus zk=zVXh$^OnCUhE|iFGbq`FVC~QMNE+&toPKhCE!VuLh|EI6_jE@)~QG%eJ>3J=B=b7}k9~ ze@y=DkNHvkyVsC5{zgF~nHC8#?gOw8D5^i>s=sll8Yvh-qJ z$`Y+iXjB>P@-8-A>rid7r`H=|{YTNht<|%fO)0fdp5Uu4tMdH*lE>NKjbV-~O7g-? zBqkm@TNnjx}{Pv?QP_>c<1Q+uFst=?j3)&LLPMnkh|jtrgq#aX|ZBf!TK1k zky7T$=rJG&4ILKoY}8DB2pU07HWv@xJUN$L=dsE!p>*=|URvS+8TRd|usFS&QTXae z@9AEQ6IsYPhi32NpO4FI$~{s5hX5eUdCVKUuzzS7LHwVXSLXEmj!0m-Tr3pgW?pEy zZl;!%g)hX}zLLq%9NW!z=X!l(U8(A^-Rkf{H-E)Z@>l+Vx$(0aUW(baSzLu(XHqoR zkg4RrdTZi|xwu@ePIZV34?}cUp81hcbULjfxovUK!;79cs8Yh{^senSOVl?e>3KBc zVjk^zMLX(}h?sfpZeg{;tHkj!w-^rD+Qeyi9CUrZ@&E0}A&o84&;ccitmH?|6mr_|>BOOTd}^^tah*SBT7{#$@%Jio3_H#uA^pmV%Lk=m>Qnlnu-DDO?)qr@v@fgPof%v`rwmXqJ!tg%|v9?_-XR!44> zB$xFP?lJkag}ANF!7c3whqB-})qf7YKllnpgwDNPGU8i;y3U!bb%;YCHhC+owoX;8 zADN&Vcy~E5rKjl8SMcxf{`z-3I|+O%(ibNF-~k*q;T0%M_6Bp71yRZ~VSVL%1PqF31ksQ8G1Y z%Q4ojm~FMcuPJ)SBkD@e-h-ex95Q({rer(dDgFFnrT;S&`K=G_ zEc%#ZH@exTozb21^AW^ZVi#fCz_w%S@opEMvuAO#a1XWcs zmD8h{_wEVz^K11>$&bq_dR_SR<$&Uw<8v z=%w=&cEhhPWOcw>IS+3>Xa%F&CS7*s$s}FKOMG33PXdOLH1IlXq?p751lf!k2;v`^=KdQ z#(dDwW0sb9t|(m~ymwZG`=Lfb2PnPUb9d0?=cF7-(m%_hqR`M+<2CZ$0XUyRAqdgo z_xQY4bi$zXCfVnL*G$TbltE*`Om-X8{p=Cm5B}irdLE{6&i0RLdKGT$-+DMu1YFl3 zr284E0bHt(Qf{tsqZ=8of`cuJi;JBEKbouXR%v-vl%9WQ6yesn$X#msQ7Xy8(k)8u zd3WXznp$Vh*VlVXjvMATw4i0K!sP(ja1(m2;py#asSrDHMD`Wmnhlw9|Kmag(%>WB z)6)Gy2|kaC=OhDw&%G9`gWcBnol)z+w_wYc2NlbFGj7k`X>ZYWF>}lhZRz;o#I3O9 z%uyblmjKDXZaNBjNn~33yAw~dk*y;>z0yWM*BTk(5n5@@dKFO#6`g%5r%DWj?)P{U z*ri%|3f>MAB`+ErO#In-dGJnRFh-QXPlBC(s@16Cj+`buof#n9a-$A5t4&g1eKl!* zR+bVj5d#s6q2Akx3f=)AYy$rlh{Q)tv&gE|vC%K7%U@fcX*xua=d|oU80EALA9CdF z_$j3}D;3w|SaUoQiyz~Rnabu|Kccv<)n49~ye_IM)Y zcGt^$$u9Y(*Wz=3g1EUog_QGHZ_~e-@%8eaPxQyW!K~!;@O-`u74@FM7xWN%f4X{V zo>{!7RObAIo+b@`({fXA{b;o;r#;l{94Y2QL~RdZP6e! zoN@y14i|HSsWIJ3QSQyWVMxf#o!?`!@RDPSl#6@0k-_@UXrCuuOT!Qymv8q(4aCQ_ zQfkS!q>Z#vqKXH;(av2VJ zWMto^T7Y^*6!Yv}Uf5L_Jr^$TTNj|qzG~Q9{c6`P;i&rXT5-HWxA9Aoy0l`OeC}bQ zdWv!9-XmcPK3qEYKp5&G&7+Kpx^f@3ZB1|e9-f zRHUOFA)XoE7C~p%u0K7iS#Rvw-!@OIJ**OaL=Y8a{1KOV`~5iHtG+adl`Nx?S-Rh? z(|lAdmrE$IitMIOsZLFx)shBvTjdv7hvUu)rIb-{6pNfwIj$d%o1#13YdnNZ0C?~_0@r~-ItKGCsvH(S z$uHcq8b1f}GZokDxL#w<8z=r|n;mV<9ClB1x5t*+>upkxmsQ?kyHwlRLg8-fJ1zYk z5ZXi2fsHzAUW-9m^~UJ_B~@x;x}iT9<0;ga?iNKgiiXxv0$F%HJA?V9si}VL)wc#y z>vSbmw=&5_q$!=l%Pg+1&`|ohyik%d2u#)yy)mJE4$7l9w*fv#`Oa%pK$mL*52lg%BIsz7vQxxHLKxC-p~riq{N6#PPy1JvUh`3sS@9wEh}0 z8kiN7i1#HTI{@J#yP&Ny)e+hhK;q9&${n;i8H1wxdQ3`om3VzB!gdzqTOtR_++a?% z;zjyL=#?c-UG_tAc7&CA$>F{Jo#s(PWk~w_8cUbe-FK_bQ_4#v0;*V#X}22p`k%o^ zq#?B&5MJ}knU!A5*^k=7C5gBF-xn!xQpAReKWH;aZME8orH-flzZ5%Sgzz4A%B#4D z{G@44%9%RLfaRM6%We3}%HH#n#mJMHt( zQ&WYG^IyYpVvgp@oREPohjj&IpW2HpLOt)1FVd|tn9l_;jkJAs1JheK_Q|q?UDAcV z5z$-$f~83W;Z?O3@g+6)fG8EF00Fy%jLdS=6<;~jl822QH=bA*(_o$Lj*%&j)@_Ng z#^{(MgZTmr_M#jp4^=&CG`hHGEQO#<{0~~GM|0O)>-IPYO{*G zd24YzO)zU9+bYm=DVi_E-^1btM!jpw_`V<9si=mu5pM|kws6}@%%WE@AR1}}>ZEko z(h-zezB&M3IUrNpn#w#mFb9MJ42b)@15B!LnIfxsE2-=q^uS5bHQYLr-;i#_L10QW znKLQmsUP{L@4)J!ASfF45<^O56j~c%!)x*)`AIC()86VgN`K~Qy2#LA zCB?odpYAnFM9?WMy;DcFR9&HLC!D@xv@dA=W|7-QLj1A3`R7i}?fc3OqseN(F66U?mo#uT zDE$_Kj9DY0W%*Ro>WKjMXQ~Pg6FU{aUzFtbn!%?!|HnIRiIIt*3CpsBuF!XQtOAw< zXAB?sLEG?w5A@hT%^Y*Vy2v{t$6dDZ2L*7P*;fVww1z^s?c0_ooei!scMR!UU7v{d zwJ3;Pll(!<;W}UaL4en*4dCeK)@EJ`}2sv ztZ)B|^xUMiJ}oj3VXgpZkK&w4C$v6O1TvClN-_{BSS1RVM zO{Q0T9)5SsZiqGW$~=Z4w1OaMYfUEK#lBs>YJ&=2gUe8Y zaGB#~2hoo|fUkk!r5Hefop36jw4&{Cb)hwKX@nf5<6qc7MLx#HzAL?t^|282zalqr ztyxP>_KMtZd^>Oh&w@Fo6(}zG@BA&VO6$!fPU1ejjeafC2;1%<)YL2xs1dj+?Eew! zYM@p9L&>NxCU>&KW}5h1C;UVP`s`~u!d=SqzQD8`Li;sKtmNv1Go&1!SK3#3BCA{) zESbi8gkz6XY-k6GnDBv1@A&HdNWyyCVtGivBbLOEJi~V?40-&8OR$J5>YK}jpNeX< zgyg_roPx4OA|{<2_ef8~Gu1A2KGzP-3{i1oMCnIre~2$KaFl`+41vSxuBq)(>p@){ zPi|z05Yaj$aN5mfhAb|#SsRQ7;1i8Ap)=}*G0Zk1ZZ)6Mva-vRr1vx7yXgI&o?kGi zHxCel!p#?-hCS@7Jt9F5`MBRxAYO)YFUjNB-oT3Be?EdYjj(LMP6AP;{o1A7BE9Ob zuR12@=|v!YUdB#x4__T{yw;pX2*x>XHlh2Ktkizh@$tgx4n6r*@Y2-&V zHJ|n=xAiz(l+xQD2AGz}f3|fjhhO#`Zy5dpW3()8-dp7}P1?FZgf~2K?)dyP%(Yzs zyYh@idZ!>mX}wZnzaP)De}wTCAKPf=x}vDIg|`r4>8=FVomQBAl(FzG(MmN2wvj~} znT9#0At|O+%y^%oPKvR?z|j46I0GF?TUcbmJm&hS{Z7sHplwk4(|dQ)rCy3& z!zz@wet`F-seh#2)8T@S^Cg$YX>gCfTf`9be`hc^JtvT3#_#tK4(`pcJ#cK7bMc2= zg+ivCT5Ji0eU-Dws6>$=pZwvUE{DKohWP`;VjWVkIEax?R1@+h`FVOT)p(zmo}N`{{_Z1D#@n6S&6P! zd>SNcv6fnUjkqM&VO8h=XM@x+@AGYK1YiWpwY$&evcYU&>DNtLN6@5Y(ZSBbXyBW< z!#ewW&7FW(FJ&-Khp-}d~ z+7f#cdjG9Le7!L)`Q=Vp`Yu5Mo+C|wi23vknbg$7R}Ho-U3gS%>*aMjH!Z{V;l4Dl z8nMpuO!`u3P4IFWN$)KF3C>XzaOxCL_VQbNCd|5YNhf6fW0H)YmB#vwk1nFheA~>% zY*0TWQ1y&%A!aPCMIUy3KWR>ZF>^Nc$^i2Ze@1sCKYPQ9o$S}94tPBLh(A%L;hz6u z&7;{DCvGR`@=#B@EPLs_TFs$( zcx*p1;@}W^CYZq^zJ4JXUbuA!-Fe@B1<4-(!SMdwcNCx9q!xy>E?7AVx+sA98=||W zG*oYgaF&Jxfjygrhu=5PIDDBz_Am3dDNIepclaNAP06lm-+rTZ-uZO)Ero&Vkm1b5 zkI`Dlfq)+Eevs-J=9H!{i`erVE$`Wt@dx>SHbmu?uLpW|%`Qt;6jV zVdDegIGi;OcZF^A#JtMHpoSOdmlUok#Cf7uX~vr44M}-(EXi%hmzasc+qJwTho&}f z^~OHdMVy*%3*%>0Ja)+lY8}*N>fto6H*$aQrVYk#G|Ky>++^J9Gb9e-ORp%$O*c3O z5bUQTX%;KzSd6_Ma`EVmHw}$2G);19?a@eAK>LOa^h9P&<%gOdYVD5K|4sDq(}b04 zR^7+pjFuS21@ONqH`aSHH0uhh;Yfb%99_uHlduoCG2E@u`|PX_Zk{)g$v?Astv&zr zV;%2b=P48txRo~fO9vUcF=B-B61p-Yt8LA?;#vHz@fHR*9i-*vb@Bb+D9w<}zkwL> z9bC7;3=&-S-oR!E9T>bHj05?1>GM7Ojl!-7_HGJQL8oHBT66M>s^ijw1)L=%oy!C4 zDAd_|fp(!&6Mi)?{!3}|$#O5Xt57zA$s5-_d7@p)T@3_t$CaQ@C_m=2H6bmw_u2Bz zY7cFo#F*;nfN;N5QF=gu$YH`#o6zq0xT8lXzDve#4?PL%xk75J77SxfdprU;wj?># zTk&sBxfgZzD|)@%5jIW}S`C4Ap|g-%-``+wff#xfJ!jJIG1)i623j&pS$>T#55NQ1 zON|TXN?00@8LW{Z72)Pu^GwD10@l(_>h>2LcfuB?_rXmGdYe&{+YWl2^`z;-I;0S> z!|w$m{%w{3Vr|IbedQ4484_ly(B-Nni2`4KhmG3d(?gOmk0f9Cv|X*8Jn;Q*l`cnK zT9VI4$+G$`iZzX{6{e2(5kE{tYb`v$e#Np`^o|mP0yeNH1c^W-OJ^UJRgXA&Z(QoBgmQ3|HGmjwJnYyS|6N^FiQL~Nhs+s0- zcRj*O1_{^MHO-80%W0Ch2OeRJt@Wn#Lbo3ndUaN^5%y;P51dVSxykWp=V%*fks}5< zP~#AcvZn;Y*Mp~o*h@kdv`($Xlkkl<@cS@YE28o^^SG75+{O#fOar7J=A=L?9 zE?yClZ+!x8aU3$X+%k5@-bk9fmYJ5_Cv7eNo`L{Q-^-32h#n-fsj6Ke556*n&zZE! zzzzucVl1dIO9$Z<-gtyAENu0nr4{}7M2wFOCbR?XgY<0Qj@@`bzJV!2mWyvRHp0^2 z?o9#d;u`^z%5(FdM%NcYL&K4*?`+p-Ps$1O4ccDzxLWQwmYuM%==KUOK^&{2n-OL* z39hXa|A3h-xssS+v|OCGClH zS}BV$cw4u(^?dhZR+T!9OnQLvc#OFty2hnPU)%RN^<4CpT(1A{&ZH3}k3`SUlSfX# z@LQ21EAa{)bcE6MSqCx{CM`_gTJ^(tuc{T}3cbx&VTtx2_3fME3g5gs%Z(k%xy<6s ztC|B=h=^pwKx_G>@8p6C^7az8;#4O#5T^hpRsKN9PH~UylxtUue8E>TJNyZBOR7AE zz-AJ>FIGrc`t&eG*n_C~!4W5Q7O9KX9&d$Q)3VI?sBBvHZ269}`{V7au!nwN?_WL7 zwyh^)=3%Fg>xZIbUT>%LZ`n$_t%TNJ_EQwR(XB#H{r;G6fP2@$a+!fsYtPd4$H zHt&CCns`?Cu=USWYPdxER_=2-E;-S4r~H~L!Dma9!oEofl*VT>SlE++?U#jWo_sD3eKOs>ss`0Wi z_9smUy~K;&u?D?cGY#*9aT(>XA&?~RqKBqz?27kLroB}u#s5iHJIeXv;@+`*N?Y>V zeX_%6iiEjz*z@(tiSIY=msyp0%w52EAedomuKPS|6YjPL zCDtDZWF_zGLsSy{S;ONj{yGPh{`JyG-1Mwtn$Sn;{N<^SW?t=`FL^oemH-0cT*|7O zPmAGrg6lsg{PJ0cO6^gFs6NSdEqxP?Tt8(AR{wovYzVlxF%8G!km?nbQu^GWL%@8B zZ!&&yFIh(68*0Nm+1hCU*;n&9;tNcvVv}d!gu9gKl0>i8>5}3SQ`!*SH!o_cUTW!a zs-{pV?G+x==4TcrjV)F3t2d;nU!(M)$UeqKKD&}u#-uc91J^nPERSz zg!e?wT0gCXUebI^S68_Dfv(uiskr5j=lX@q&-+@s4yF0u+{tku-3DBbN)+FWdY3IkHz7#^+g=7AtE_t5I`B!-PbB z%3k%I_K;$osM>CW(M6q$Mm!%!gfO-qpVyB?=;SZku2k3kM6K!e z=M&v;My_gTFM5U{YnJ6o(^_W--2q>AermiQww5C8%mocVu9D!6Z++e$URfbeeC6*Z{b(!qZXeU(9hF<^W9!~Yo^=XQ5<8gwJ*31S z(2#2`>n*2vPW1icyK$xdyf;d0B$23WThC)}Mvb3&YkG!}J^B+MV#(g7rNm9$fgY;{E8js9Fr4r z>3yG_Ts@%TSXfd1nM}6>0rw8u(-!>TKRk?*U4u>ZJx{WZzlcf)f~l^f>*dkh)Q0oZ zlvDGy&tVF-kb0ET+;4QA=J>PNh1{z5@TqQXo;(R)@!Nz-CjnH72t!_&@nAElz)xP? zGlH6mnws*jopAA=*;~chE5ZQuMez1Qz_fg@fqI!MnU@=e2N*z;FDEKhU~jx%3r>}U zoOj3piX(3No9NUS{-AJ)t)=(0UKDOx)O*Z+3@=BaF?fj+15w_|Z*EVJS>B^AEOoH( z#y@Is^ERdLQ4T};#kp1RsfQs~UU<;>Di2?rPIj55fiFLzGNMI1@==+Wa201$Ee62L z+)rGGqcp!F}jt%_qW7%jvbu zc$@-dPrl^XnrWB9Y#1_6Xypt2_Cv&e80sry0iTT`+L~ZOzQE8cxzuvwi1&@KjupuT z74&U76dFL)p6Y#RgTXmfTe6)b@Pj^}icu9?Y-*pZDA@d&sYQStKu$z*_wPrE@SDV)$E%vt2oM4%Iek&p>~swOq|O zws5)XdcxvI3OQh5Q>BwuwA8j>OF3`q9vtLvUIuye^o2op!UN2k@nj9uTa1x(NjrK! zt6XGuu%}XVTC#lM*@B97O*)%0P89{?8V8?bH6;b}Qg;>ODM#2(P~~ zG=m3bagQEHM}2{PGkc?36A$R&bv!*>?7mt{Q~oCh3to2(a%(wTtb}NJhH%O}64ck9 z|6~a(T9Yy1xDP_(8$f>T%3~&U-hsvMnS!Xt$OOs7BEtA>lIY6C7T#;Hi-w!mzc}?m zy%4rD_tOcc4b;@ZzX4JxM3eqhmsyCRz4=NF#AOz4ss&`l-{AG7d^Q+a*x7Ndg3Z3Y zfAcMWf)AJ`;vDBxb+g-Lhjs;TEEKWOoV2>m@T=?JZhT!CWim-=mK;6O3X~5FH+f0j z%>+*MJ+xL|N}|^1pn0a3f?)d1?wBiU9^QhfK0)cbjXyIrExmsRydggvR&d{It(eYs zcuZG@d;yoZD!?R9V0HkQE59ms44Ii4k&Z7v{|q_eR1>lkTAJ#c{!u^tQA)Rd?ViX| zqWdT8pi(2OV7JLHZ!Th|yg&r5j3^G$!^ud(W|wuBQ(s>qx58t=QYY z4W4U5VjUupf@E7z8^B!Gkn!PhyFK`GrJAn?+HpSgaqVKb6IIeI{LB^6kt(Hg&CS?4i=J?BLz~8a{(>i2{~y z_RAl5F}SVt6@Y_MgtPShQEnpS%Xw_!)ypODGXvu>Tvp?2Yd=sIqW>ZUtpFitSxttr zdusEhElPq4uRvQ$&yk8ZphQqDRg+yVs49`z{xC&)!96R@F7VlsS*{FigN>H7u1Gt% zySe~|5gVTS`t};zdib0&Rv;gFMkQ~UC|iC{6^)S|Rn4)r@yzTT%=lRK;c~Qv^(e3> zY^8`YrEg6dU|eIGH|Jbl-VbQoNx%DAXvh%w)@Ia~qfNjz&XS|lr>EZ7Eqm;{K9vYGAMl3Og|YC+4kSa(K9U0p;BOx)$KZr&WqbI z<^#X|qatgg=jw^)AE$D8U0Ijc`pJW2|Bl-E6s@wWzE`Z6k5E5HyzX^wpQKAF7*C$s5WJLlok-mA;;YXTC43{jNc7y=Ui3oO3;>D1tgr{$Pa zb+z%si$*q>38!iXQkD|b(E+&9D3MLg@+Y68dBMk>S%#2K!T`_uu#Ob>JO>s?P7igu zgf3klz4{%&d*Iy5&V0VZ!=Ai3<{{PxjzS>p)r)6!Z+zkDofc<#+5}qb{MIwLKjgF} z{WWr8`WPH=FlR_7j{ZkF6{t@{d7?8WRj){i*H?K!RSMPabx=nAHLkfvJff2mE6z1} z;(vFLPzvuYvTbS@PQTq(a-3E)eCz7v{uEVHgOcp2^7+%)Oq3_-FlLPZz5POK)25km z^Vmol0f#LiI^4g!wO3Bnz609Is;n;J>zQWSR0J{w_ultZ;;BQFA4N&cWgJrbDSRX| zKEJFQFAHz2ez`$oPcVCVq;->XjzG>B2a4^OXb$vv@F35d1=bgvjoAmqY@N|ii4a)0 zmLA9MI(9rFs93ykf|Y#-6oMFm?RZ`#=I$UJk>9aE^ihQ~3Oamin&Vj$MtKh8Jts)o0&mD-$?H8*j4-ni%AMBt{?4Mo{eS~`9dLiRu zTwXEKOR!ZFqC*3c8>mrr?5*ok&MH{B3Ab3qpKjn!+A&*c!gea~eG~9lmk69=KYU=e zJ@;j2jP>EWt|Ohs_oBa&jkMJa;yv(rQ*}2hGEt{uz-T2*W@zhQ$7=sd;{wCRF)@Kh zK@ChzoxAK6O;s97$1;(ZccC*`Tf(9keeteG+Bta1ePAX=M+)w^ULiQ+@(c_$AF;(x z7S0zzPscaH{{MS{;+x`5jHh_!EB!J=`%c8ryNZX7+8vjDN7GWtF$XEKHy!TAE1=wjwh~$yx=TFstBKyl<7p|}71`)fZ>cCPK zXGmJX`2pip#QL@IotD1!9uc~p^!$yY=^A}|-#n9rlCBc^`v3i{R_<7VX-(_}1HeK? zbcG#sfh9NxjMuDvaVt&IE@E90{0Uj%42sLNJ!UIS$PO<TrCr33~ zwJHFB=Wm12e|>{sAc0R;FeV^J2rr|50p9ZzWk1bld6b`Nlh5jZoqL(h(Ie5K9)zfI z@pkJ%e-kR}Algh0uXHL#pH8Hlo-EASo6qcqt#~9sjYgdTXazjts86DA-TuD4$FV-+ z(Y~XpLY|`cv)|rMH6hCPw>Z;x&~->}KzB}yK&qD){9OdA-U}&s2|~B=3+xm6XTWm+ zGY$6<$R#a+ z+ZSE5rZQoM`+MH%Zc5Py`I^NqH-35X&~694-I&x+&n0*~Wel#GsAS=OzU}x71cEya zkgt0qZ1EGT^}|rlGI`VgQscFnD zACuI;L>3cpuQe(x-N@z6(Im>7HqV~%N)3&?=&As*;n1?oIf%73cuT9{$QF3d8R!ba zH47OjiPHFvF@c8w0$BMBE8K;w3;xEs+-6w*)l34~mkPkRr;pf;Ptn<1(2^|JE--Ve zl3wd>$A;SUpyYoI)W1eKHHTc#>l>sBAxM^IwRi%-V3WnpAXEgv>v4Y#-g99{8=g9` z%>xvn8-62}7K0NEN5URd`P(<0qn80JhfP-q>iPf;_!htlb{r`jQ=Wm_4W`2IjAv=T zKsAVg6IO*ne^-Khu{A&m@`QAMl-w(|BM6>jWUR9#`oM*)fbIjTz8Jla6|S(F%@mzZ z4Cn^;Ifl{->x9!{EfQ+C;*tH8NeGTY#4zC>ViiPU;C%W7P-Uq`boLK(mA&qd7*3U7H#>l&8Ssau zHkge>^3nAlcEbvDR=s7LO&JzjxN++A&~_|i=+>&-i+ih={ZOBU8e#v@vauNjtw5jo z05ee++s2C8nHLv?bu|RrOI~Z7y|KgjASgE)2ujamOcVTGBkU{OH*pQ|R(T&YuCbQ~ z4B^xNvGf3+Yk@RKN1P)Oq57G?n+sGZ0ry7row-1zfA!{#EBhS``DoucE|6>7tArol zfj+$(Ac`mM@|$|R;vX(@0E(ubA@`QAhEz~Xr2$ud_$4Kl_D<4GZShmvQA&1*_B@y; zCj~3eA9W!96#)N8YITKd=~XRs zv$iw#wdl<+?&UlBc-w;UB~M9x18Guk zu~Z&L9Q8T+dIWOMkB3YS1zgCId4ml=RF|L<@o35_8!y0KOazMz&mX7t9*EcU6kzW1;+>b7fML%~-1HmIW|frkg!3sb?#(`zI$P60xuzyPrbKb=yNui0R{oltwm$ zM$!D?RDz#YZ^lwbsTE0&@6&MY_1)M5!5#biT9nGp?}K(tC{MowUz^;thw1NWgpqgB z4P}Bjwq?sSTsNpld)rpT&yl5*!OwL=H>7EVbv(;4oJ(c66+3K|pw&EAr&E;=oiOwa z=`5~*<@7E%QJp&VQG%PSaD5=E5JCKl>F6;koTA_2#}E!fKBfI#9wi|z1ml{;fJ?%n z{K4yOKT~19E;=-5eG@5A2=2ip166~cY%>CmysVgN_huzC*X0nVhJyt&5eE@iX=S>x zasO(bn-?H+H)s1xVTc*M7UWs%d(^C#7;&aL8J67)F+2=Nw$1u=_tIWM%MK{S+7sA& zLD|Z*JUO+U3U+gpMtY;0lGt4_?9j2!l7j)oz+_^Qp?G9S_27>wh0&+-WA1mc zD-w`{k=KKlxu}EjH1?^q7`NpYQ4^OVG<2)3uH!*Tf3`VPzj4#R>O=V2)%->8=s5ct zXX2Z|?Y>OI1v$EBO~6pJWHr`%VN?b38y^@K*kqj#yo+`_X&?)O)ZK5Dh88u#8fWQI zfRI#z6r9_fT@9dSFD}ksiTJE$243a<|LyI5@vWRvs@va|6nyIrsY%6Eg=4oKJ-K8z z#=Y~5uDZ%{K3{*lXh7ER4t$o&=zIP^TxB&R_@msTw0;dKY3cB~ZQO?%=o|${jkq~w zD5n3lrO4cddlKwhl2$rR-)8h+j5JRgVmp0I3Ld3+0>3&^HRK4dLzzaGbn&#o4ND0{ z^2V;ht}O!Zz`ZC(|47O=w;W+hgoUJDQQc_OSt;afJB^#{-; zqKP@lNU?VrrBxlHyzjyEVJ^X&(CKAhl&S#w93RM1F@2DwQP+}1q3JZ{M~(9965120 zjazg~K?n}nV91p78y?Vneuy(4lwG8v#z;nZX?_D+mxldfCV%`NISm-j*)^dQKoMbHCV# zp{@v|$tK4d(g@>Uhi<_HD^7WbFt!(+V{G3{T2Waz@G|I!FnEhxMCj&V-hPaI&}R_# zKKW}&?a@Mnq(HTM0TAx46+I>Uqjat&HaDgwYO=|^ycAL>&-{)F$p{U3N!tr(j7uz= zFg>n?EnoTMi+OWEI2-A+PPYyKCmXV{lN#h|r7g_No4@=V)whbYfG66v$@lR|=X0O- zN+yL`Vu8bUvj{FNm}X!+H>|6Kz#%&eZbt2S7lQ!nFdXkgh~ef%REi5t-x9>b11Sw^ zPCGS~K-fs2C8MdIQlnS(;HxonH3^|^r2rLP{x_z>=%c@-$dUh{rLB}wFHd*b!z&Hx zZoW|u2}6qim+nV?bDI2bWAvAH(#x$n=C3d1VP+o(WY-z0Sr4+PJ0eJ@_z_fC&BcT84@n?Bvw*%(X3yU2{Wz-!G*z22<0=glo?XhEErmfLj2hgS{H zeAhbDQj;$WBOXcqgoJVac5Y$)*aec_=28z#LH;+NUJn_G`j{d=p&O9FxD;W1)@mPxfT5<)SxV+P@phI!7s7{}2 z(tO8dt`+m{XKgnjxqP@&^&bvjz%_lk(QU}vx=$Cjj}}oI>EZO)37p^j!Rk6&-rA4d zMb4NX$kl1c(;~&zrd9@;dRx%%Ca+~N=Pe;Xe1Y{}TE{noMCCWl+MZpX=GFrd`wn~$ zIk_7@M?3Ztk}d`s&3YT?&uod@`k=IcGoQCYrXa}tMKC9_=8bG%e2_$!^!nnOp1PF+ zjS;q-9a_nEs>tN}2ZKD%7xw}CziBH45>J;G__!Yr!~_nCuDCG$!hddp!38z+gkR!S zT`J=;@f}u1G5J9H`T8tvDzWTvx91q?p-$vu+ryXoc^d8NBC;M^R;AV@Y!$2A$2~na zp1`-V9j0b_i)-%w^X6xhGb)?a_)p&NZ*%{LJOjob-ha2eBh=XH7Fz>?Tl*;bPCH9Q;8p^2q&ZiC#z3QqzGNzj!kntYPWx*~ zhtBh&tjk!G7+!*NC_woeE8|nA@_nzWy-v84(;xoH;CfVhsZb&4U4~^SLzZAr*Sh#6 zK!rC*WYbANZH@m&;zM1h%uT^aDan!jwNCma>*jIOy;1>MZWQyAUs>-Ucwcd5ch2je zlEdXYh1P{{eB`uF7MX|(Y8G6=~e@F!t%ePg|e%#3g3y^E4g zitwJUnPL=o2M7w7r=pGuYnezuA4d*Jr3BqZS0=pgjvXA56kqnpB!Ev9u#b^e8+LG zKcA9QIXC%U5Pocm!+))Gv__jPff`ZGkBE0_(<)P6F&`%X)|}&4P0^#bY$lFD>-kx_ z(A*n{*tXy61wSO|h{qnn$&*cr63}#CXRWePQ4UGBv}*6~;XXg{J9u@Z(vO0waqSDN z9l>aX&z}?sj=#HVVR|J>Hl3fc=;AtC|&LYC6Q3Kw0!z@GSJifh-NdRm52ar2;?vL~FT=O#Dl zF$Kaugdp%d^t3_RgTN^NP**5hsB}Asnm_FLQ^#t*q!(^q-U1N^Gvp@WV4X#*5W$(= z2-~>1dv#C#VD;3gtNT7Ip0X@MEnOtjgwpPD!#r)~KR|Q9M2llP{ZL_3>nVj5->(77 zF#jtxjCWmzFXqAM&f$NrMga?qdQzS4(?1tg@<@Y`1pqI=uZ&r}3d~vg!mNwL#2fFe z#yyYFWTD&E6{vjZkN}`^!)%#5C>LSobcKls22FeFJQ38SxJ9SPS;uwOlSSJCxGb>a zfIz!DGw3y6Zeq$-X4d%~)YzOfbk_QF?Z$7XYu9wg_x$8k0cGTmQRV`Nb%&}jT&OGL z=qlecWM3R|lk+MHp6 zBBaE&*#&d>1{Iv zYZZW!xHnN!GC)a?x;fCU$xyafcYvy%g$s?l|IH7G_XmTTVxD*))?PP);`>SWZ(R3= zvv&Q{pxA>7B9XhEZgsGPtAtuwlYtld%`UO;CbbosVIm^J*YKgC1Mh|DksjLC_rVJi z03Ve>#(~UJTzbw5pN{E1-Uu7|A5$~{3hi!$L7aI#E~rw5a4hx%D~~V?kkx-Z_q{@d zD}h4QWAj9SB~enFCYIoTdh~!oA%*^5|Iu{7yETH9uqL8YFPuKrZSoU4=!PN&z=+&- zqS?CPlF1XC!nJAjpGk+0xj%YzSMcVeiH&dz^qC;BFr-cjxRrp#Jpdy=lXw>$lGhA< zSi9A_uq`xl8`u`g7P2k0v;Fw{ zv)cr{&bvekW^I2O{Ks>Haa}N@4vss0$NK+468ma5su}!;eb&96=l^l`=J8PXZU6t+ zLWGEvU6x9+RAd`#(SjCR$&w`%QiLpHEEN($g&2cE$SzBkq3nAp+hFWt--a2?_I;1e z^S;h&xv%s7{r>iNc+BVXc`wKDI$p=~ct`3j2tJMrW?ybqsg9%%qttfY;?ic~AIbe} zq9rELu{Lk~S+=~j?5+=rXDrp0RYbabWooJ?|2^)9=YXSk*QSD@y&!)P@pL`6j^L4g zZ>U_lCET)x{i{W_yTI!?YvUTZf{3zn3yr8m?|rs=Me(d#;tmQndfOrjni9>-;B1@* zjSaQq^Z6F zrqpPa2qv@d@G6fwui8X(`8Q%3JY*ce=4SCWv`-sa83wz{ZV$962CyU!1RG`23LGGg z`b!t%?>e&LjdIZbz{Gtt_0?X*6D!H(+6;S7pDtpQ)k_Q1mhaJOQIzeq4>8rMR~wyZ zIPQ*|KWlE}iW?FivJLw*TE*x6@&Hq-YK|-A^IDOsZ9{Iibwuu^Jy+9_@j05FFU|2G zin{>Ijof^*$EGkNLm^x4zkL&7%EQht$yhqb%Z_f?aKg&ACZ?#EVp&SXY(+wAS5Cx0 zvp3S1w_2@*ARmt1I8m5FNlI}0VrPWuqrHVjAiQubqQ0zLaKL;8DV^u_F9V^?g}Z{_ zYoY!{Oh)q=NFalq2xPCebT3VO198B=S~ZLkKUrp+8a+GV*&}wqVa)Mf2-nyBLPzfg z7&i1VvOA;(-EB8%9&ep~pry^ML?6V#opriCe4xw-eVKP^>KiHW0?A(&z#78qSOB|4 zr^tx*M$FTf&HgBov0H(8g4tU+#`>zu>%T%+N#@npNRHP_e`Q2Em)PGt@U+{X zNCVyI^t6IgjJA;ewGFo9y3|4@i&DcM(onRXXb*Y*DBl4VrURUY#QA(Jtsr_1!|At1 zWK*I1=1K1myAz<#=K z1G(0reS*vW4B5Ps&QztqjY!*2=d`JvjI`DB9;}|Gj~9D*04vUSsJ6$VuRSvi=0!7L zKBkFJ_Y;BmR9kp{SA5#})FmP~P$IH(NN2Hx<2TX9;*@G4xLRpf$-fyE!09Z-C{Q}B zGJAT?O=RDRPB!ka&05j(%m=3NT3XtSrw*HtM`vc0gr@Ei?lBzZgO290A>`t7r{h$$ zCdxAkzAfjXSw7#e+`6C_kjQZA0rma+**F;KA7BZSFj%J3|3zQ}^M$x1@Y^-095zVc zvkDihv?M}75^CGq20d49PZ)70!y~Y|$5AnTXKFpFy01>^UZh>Lf(Zf;uG<0)^pkj- zGt57y|FZW)2jH?dU?zCy4P!{3HfVJQMzg_3&w$a)x%%Vfh4KrFlPM`Bm&D%%WbzO{ zK&8WA7a@OpKA~URhFC9$N|6No9phf@7rauTA|d4bWqMbnx#ficU0H zw3i#)oJMQDF!!Y^WFe&R<94cQZ&UgfC|9$(V{7oA3-Snpq3&d=V-SYjth+3XDRTvc zIl>zl(;!f9TF87{#7UO?6QH3CEF6AJyb*@?$6L2GHt!$TsjWG(Lvh$ak9~(}YSe+1qhiMMr`+Byl{rk>vhQB( zj}<}W{MYW<|FP}7ZvA4&s$|ga(IbY>*6LyW#PQ$v!UsE%=S?r+?ns3d%1edj=$|rl z5N$x^^cC+*;-pn+hyj3@jH^LV+LV;0cc_;pG-LspyinFIs1-agPavgA9Mmstmv+S- z$wpd7`Kyn5VGjL(!h%h%Q zpCGlDJ3zITnM;aQbM?i749Q_;Pm{28&4Mqwp^gd5Gbd^ zhdcM0x*w_W}87vbTicVVc3tRpYP>i3lkXoLb_`mK>AC2yljJEW0c zael)Yz0@ycbJ!qm^nJ0q*$F5A851YcrmgMezuh{ji~_r%^M8v)fe+|*z>L%A?SLu$ zfKm@5dH%(!PMRp;33J#xMr9~e73G8MN1 z@=J*;XLR2ERQN0!8jV(4eWpIDQrMFL8cwT554N=IcoFar{><=;pKJmYaM+^_SyfPw)(v%*)|GsJjj^XJbE_+s~bQVG$+-#}T zU{{7+0>I4a+Ix3j#u;zkMw5!G>=z*COb@K_j ziu=e1U1WCGYO$=HNKJL?Z2tpSsD#nPZxc}L-~Rx!xtAXDK_Tq_09>-GLI7R(zaE6_ zAQ1>Wy88+wrF(ne^<@B<0c0sO$o$KECJ}t?T1Od_Xt~u<#@a#a?Va*Y^V%H?XB*s- z`*W+?09@qey;z`&H$cJOEDHGGKf9?fqkk2`G@5I-D|{q+Yu7p#YBdg*=fb>XT`=r} zU}}#2FhA1H^&4J@#qa<>aRVGbW!3}L!Ih;xmNKU7e zPb?*|Z(e#$O_S{xIn>C>x^-C0a)?k^tJlJZSN_y3|Fhp>pu4bErz1Fk39W?@Z!WNC zK^6vRw**rd5;ynhyxjoJVs^)AE!ihmsqwZM0jEwqh8JFV{q8cFM3EsjzEY8zc`7Qh zf!VhQ1W#}6mhF%Ubda6huRE5sblq6fX~~D5-Ru>Dx_+r~j{uON>h}ma*e2!TVC1Pn z*7Gm9Po$1Do#jnDzo@Gtag0=SN!s)0)8G&7%FT8eTJlZdsT}cKI-BFnUd@#$OSIY{ zpys;xTYd&jk4NKGcBqvBqt_^7ZRDAp6d1Z`KdH|SWJ`5qkLyIYcJS*OptN82+jrA( zW03)30d7*r(Wg?0_>N06tiHVTG(5x%m&wRv9vZmG>NiUQ9^mcQ1la7R@#1vppQQlQD>7=oC`WuOi~ zXHnmFL+_)W{tS>$DZ^`YAlm6;kG&^vQTg0fcdyvZM=gp>n>ktYXX8pd3Av)9=ZU$n z)>{t?^P}n6s-ZWd*;zi~+?zcDuReJ1n19Oivf8uxiVe<%@oO`^*_*MpHSjTgZ8337+ zG#V$!<#TEe67j7F`}Nv+Zb0-np5L=|7im!_XM$vhm^hk0*4cj}`jdIz^}HnQc-Jz{u8a0bd=N+`a`$j56=X6Tq60_Wrl3~1!wFO zEb1@$u2@*YoucM`(P|sj`k_{f79_3xK*&cCUg3{fgHloNwd%)P9eF=Uh(&XVegGIv*UT<4 z9LfJK%+Gox^}=GwTwi~gB)$59x<|Y(JRhehemp{{Nv?DaFT1WSJ{Z+ll>!)k*b3Jm zWOkFtmbCo9R@po_=#Ivxli}-|pDhTFc?ooKmf{qsZj#E=Tt3h>f3#iQp9 zi!j5*u25_;_@wpM$mVzioyX-$;XvUYIM0b+@LvJz0he0bKOp#M-}Py1vog)o{m;qt z4=}~a(g@T=-wj}6vRYC<);tftzd4fUbWHzM zF!>?yQ%2>e?+t{Q9lg#4uLO=aRhp@7I$o%Q~^iJP9a5i3Rly%&AVW7kx1B z^el=@^Xeti;^DK6Aaz#AjJcY~q!sbf2@?1MQ~?2y!O;(up*^vWa2S`#$?vff!2e0z zuU-FT5kaV&v?kYYv&{N?2Y{s^|6_lAmvX$@m$}TQ4d}fI9-o8!ckj%W)}|C*=c@Os zc_U$hB%Ry;X2D)O)a`)^tY>!{Srsr?2qpL-a#JWoM z!YreUgZ$AQx8DA;98K zEFl;`%K7+!`PZ(4mX{11v{o=LKsgAL@oY0~$|(xw`A~bxm*!gE&B4Cf?N8h9%Jh+E zY~sC^DnDrG;Pd)w#g>Y&9lu_|sy@2`0AaT&WHBFBUet+$0Kh1%)@Kd57%_FLR6vgLYDwDppwg!JM8c`o$VW**b+ z4;;e2bb4QN^_lq{xU~21I|`JJ3NHj723Scwtqd_=j<-|W*&btLhrnmiZe4Qt8>a2! z-4|>^N6gFj-!Cbf#~FNfwd7h778VM(d7AxCj7e8E(&aOhI?bT^rgBpPhKoWXH+oT0 zR6?bDaa*4%{g?eyKBaU!bKSN1o54O94ZRbR-jW<8}E)}d*xF^r$|J3HZ%9t|Dd3-sAI^;zB2*NRmKm6uMk77 zYAOzN<&bCiBm~--a0JFnn>K^d&pQ-0Yia#ihJ_~7U&L{M75KTEa-OqGq3HzymnKs1 zXRJYE@pJ_2W=zW)z?r^&?B@B#U%5k?@Q1dRm|I{v2v(hsi^!PP4C|FcEK}I*^TATU zt(vFEbJ}p!sT-irXD9cMbQbc&6e2V9+H``PDsuG5j$!mT|D~lOeN=T77FX%%i?#AN*@#F@D>Hp9b*Qg1tU$7*2Su^o63IF4(p4zx8}HGaoJUpw^K zytTIXFw;gD3OGhU!Rc3crtP4^VaXpUe#@0(N|>XGcv?d|WhZpm2RNDK2ZGD?)$ei5 zebjSMn|ZGmzrT^kUqg?JIygeN^_Nk#(C)-$r_N~)EY5*pW~0@oCIQo43A-DBRBM(N zQ0$goNLs*l5Ikl`H8{#*rREJ^im}q^Jz8&HGB`BQKW|`cdEUU(qEi&K`vrkRJ$Fw4 zZn&NVGfiCy`~~U|PV&zKmuPBg(@{R$E34`!-`~v16(q$CG;6fpiD#6xkNpyLEMMW^ z_KnM)UG{WXqPAol5@}DqjG_ie z^x77l87yNI*jT><+Qfvnl4k(4i}QDU=Sh9@bOvCA*^!fR`x3Eno1L2;Gei{+%BT+< zKa4z~L6t^>h6uFk1jB+Y4v>NvP(I7Hlv?rGIidA?!jMmp4U7u#4iEhHIDr;#6Q5(% z{pX5aec*eOjLGfCIe)kx+-z~p^Gv%}Qtl_>=_IRce%9KioS_03J=d>zu6I4#`bfUh zjc0D!ZH9Sy<2i=9?Z!PayW`Mlsy@2io=sgL{JzUfVA2S%O!d4+!6)TVlk|^t>7UWW z|Bc3AC4w*;d3(Hj?UoK9>CKkZJ@H_X%kXey6WTFVLO?pAVk)Ur}eNdMB} zV{~Bs%zZSs%d4`|5a?l+JySv5_wxU;hi#;k;N6MeupN`2QExz6dXJXb7ck^xEy%NQ zn?lVA!l--8!$lIo)VrPjL*!8LfbK`2Fk~D~VYZDAdc5k8maN?LDHq z{UKIu9i4rW7GjT>H9bQaMb}x?OFNh1b0VIKzu}iWZWLq3Ev*>i+4{vYre|A2^48VI zjC#U6x9mR&!(gSgC*}ORgqNINt4lo+j!5Iq12C-^OrI!_1+C*={)?h{6kfo zipkcb7d7z()$kRt*5pEl4Cq=MigQ#YcSf%oHEP^H#UPCtro)9Eww709PA zHVB>Q$&S<$YyINYnJ>K|_CfU73kmW4t{=as?|+FlXR)x;>kdyCJ6y7`AK93Wz5EfM zbKe()=ECVGonTmN(Opj<_Mef1bF7RUtn_#$2r(EA3(^Elu6}dV@tyCZq4#O9rbHU! zsG77cbHh%=@8fnTHCh2fuE97NA$Dqgmnzr|Gw1Y%KDL&6cqbrEaW<4+FJ5{}NC;h2 zq#YF1phF_C^Uh!5T<+{`zb-+jlkl#gNJRlsY{)}ooMiC4mC7R^noIok8aNN?wrnXJ ze~>gU&P@uiJ;4*40gzJWnTCU+S<8a^s!h1$A#tv3gML%i+dstjAMdAsqa{G$are z28#`<6VtA%h1lAx7RaqK7j=7g?DEY14J6pDNv)=V1SjcgcB+hfB3Iq0lkhp!9)ZzS z^5)PQf9z#8$sa9JmomebTov=IF-MQaTn=%K76XZg#X)4n>CQiw#**enC&puDRR#BC zS7HsPd*vECfPHpw2`e_ifbBvoG%!~W)V%}V_Q17zlF%RHIp0*ibh|eEtw*tud0OeD zQ<_cd&sSV;8lqZ1Mlc@Dv(*pR`_Phc{ot?qX?#U(|C9Zt(Ff`)CJ7(a>(59n?01bT zJil1pqCylGyop?MK>qYO@nkszNT3eku-a9NO_o*t+D%~AIP_1iqkL%>kCHz3p9q3( z)FqTDU5)vW&1z$?4~k&kl)N*@c^WZmLtTJhcRLh1>~Ql$%z34oih0;GhZKXP;?b(B z?LGrugC<>PBZGYXpVr%=UBNguFvuZfU%4rf6NV!stN3@R3)94BcRPp!_~W>_ck5PN z(&&a1E+*Q)p^@3zXY-eJQMbuj(6LwAgvCHL2-7L)BFK*1?vxTBiWyBNJ#VVGQvI-J z0NZewqzmPHB*7^D)cYk@`9|M49iggD)*JKFci@uzS6vIE8d+~waPfRNn#`5i+jXGd zAnEJo6KtvX7#s4$x9-HZK2(j8ewMUr%^S(h!B}hV-7b&N<5lGMO-vKOA}&%fLJaiw zdZ4`W9x{#`b$pPz?&@TyzlfWw%5^P3p-BpINGN(AN5Bl2C5`SL#Hl!q&deXg@Av`u zX9@>9XgQV`i{}9N;ek-(EY2B)cb*A_Z-sU?L-7i@PPc$wQlA_7?RJp}Q33ZoI^d@| zd85}0b8(f2ZHD|EYcuyaQ=#=j=2h{?;MikqLRic5ijf^eUUlh?Sqn=(RE}Hhy$A4W zDTXqH(wkGG@h%|tLpvqO??zvIB_R5$-S%_h5J^Cx;-5m1_pvKNMaB-4(f!0#B{ev8 z!u%VKKr<4lV!9J?gf3zUmf|qCt$8EcP9%!+RS#AlsFb(-$L4?K&M3oi%AL{Ft>`MS zLJd|Y8~5}b5V4RT z>ASakNWZQ3>ik#6@{Jd9bqM9E)RBc{|Bu_}#=axGLG*Q0>#WJ5F5OqUAZ=jIW+eTn zuQjAKZ$yvQ8%NJ%+ALljTZXOpA$^+FMsGvObH+&kVA((Hg?4?QA(?LNGyUeS{0a&_ zK5gW57}xJNjC$1(3i`UTlOMh0l;^)J&?Ew;AA!MUO*1R*93t;f@ULB%l1Au#N{S@D z2uEN>J(ng<{Y&^_mOc2TWX)X<2P3-n>B6Y2hq9Qm+-$lq*g+#6dBLN@udLy$L zoivY1>l0tej1_yCH=VENLz6d@iNQ)_vghx;wYj<^z=)V56o%9gnE zUIzKuMH6-kw}FS}r3`+1%4)`QL$YSch3BY*voICGO$5y((rR1%2e;5>U=Y;opM1d4 zaKEEZychDy->EHEd?VkFwpP{-M%s`XZ5|VUOjd_7;sVB)y%zG?zmeHmPlG%$sqIkn z79^y;^fn1JyM4~yaVr>*R)o9FtQ{+gMwBzdE53<~fDth19^~ZhfUabe_b5_>Abkl0 z;ujAPdy=UhNa8IXk*y^RWl0LEWlYZ4f;6(9g|7bC)4<#$_1fWsr$e&Ka1pwtOm2&# z?Af)rdq9i@ekI7vrR+&d4)xJz?12HL2KR}K*8u+Dqn!xFbSzKginfm8F?{9P%zQz~ zsTt7Z{ILPbNokYato^zJHX(F!h1x5U7aRMZU@qcHi<<2aZwTTy|?|=R8VgVm(FxDWi5;x_@Ew!pWo~Rn+g(Uk2KH$n{dd ziL|GE6kY)OLY6h+Q%VcbpV)`(v*-!#SB`>U1eD>xa{F{)(WBh+6Y?~YYRlVGHExBB z1OVqjCT8UQXPValL$1jNRu z*~h(g3#^$p$~~0w1RE95&_1YzF|k7)wDBFRiAD-{l4q1rgCxodwU%wDX7y{ta=b5f zPLnK6NLbb+mS}oRclm8EtU&kgoq49(oBoihLsRj(Gu@jMpmnzLuKaM@LU-33idxD5 z_M{pdo{m6K*PSNqL{#GAzlt2g@AnEppx~8>C}eIx-M6nI@49icBTkE~hr~0h6B0B( z{y zmWo|lHQ;({0KOC0Wnu05J`)MUnXKF? zLBN296U~U>Tw+~~;Oonv!v@UJ2I1`jII^9q=WTBv*J`P+FCUGk9xgDZ+~-}aTKWd? z)6wtHcQvX6%ai4|^q#GfdNeNp!UhOBasy?VuI5p3!6tQ!DlpB5-o)3ku3;@}Uu z5NcR@FYw&OKGVNe2JCYQo77!`oi}wEQwa;LZIbz!$oK4j-4x#&prpfcDX3n5s3M#? zd54k$ev@W4cEyb--#yoDiu10*NH=o&yfc5YmOPsOej99^yA-2>m7OaZa6kf>{hdz9 zTm=K?0(>L;M@Lg4IInC^n_GuBF+Z@*!(S@9?1%ty`zRhcey{2Q>h2 zdOuIl1FW;na6$FA1EGhipz=bqsC#9Wiy?k0M`=mNzR24ykibVk_Bqc>R44hBE7xnv z85jWDzYbkp?U;?tn44uIRAMnLsm&aq za({Q?3bte04@(~OfERC&ke~F5IKhaKaOsr06AUJA*XXzj5B+VEkc%E|LzK0(uXMf_ zM=KSAUE%`_jW1{y<+m>WYCW@k{A5kuNmJvsan&apOC`M*PH;TH$TmIGjhdCw))Oj? zb}nd=S#ZvS4U7^uotT`Rz5Q?XKVOc{>oQ_54UTN17$_wv{%g1ibzs#)~xWYNT-OX zdyv4lK)$?H6#d!HE%$*%K@~1d%HYXktkn#R?FFp%iA_y38^?L;NdP@5>VGn_B_i^G zAq2E9-(1u^Pp3}ML&lS|QrKrJwMM;bCtXJB)oFSBI_>*>UkiE)mAK39ip%38E&`a` zX5kQi)vu$oy!tz^R>}`Z4Q57b%JZLi0FH8NS^z|01t-W#upLrvm4ujCFC&jRSHGq) z*W}1A9)!WZ{x#hP>+@T%$UADUs*r%_qwaP&)bO7Hy!|BoYIE~*?ibk-lf~NGTLqhr z!LMR(mm!tZ%%*b^461!vtCj9aq1)Y1_m6C!rjHkVeZf#Q-%=kQTv*dLf9A+7eb0SM zo)O(o^WQAYUa|{zxoDVa_yc~#xIa9?-k?-BI4NgpDW03Chn(nr5jb@R1(V(T1LSM| zB_5`IhT4nQPl8pSSxGG;Si5Q$8BbBB5zZ?$WG9O9`}P=r2skT{?OCoGxhgSa+h=q)$VpM1|F9E0m_ zst1ACo;|yP7$5QBmFUaNxU;FvIv|J#gD}OxZCTs0rKN);f~YHS02?`jKjn5>8H1B_ zL+cU-HVLoB085(RCC(+T8SId^v>gJl{4Z^=zlN3~Xh%Z8yZMhxo65>K0&w@9kcWHY zd;yvd`xp7hEN4KP@1W?Vrrn^ENzeuR!TxA#OZ$)KJr@84B7*q&v(h0m>HhmedWeC{ zC{HP#M^VR%`euIZDMMbYWh!IpE>YG#ns54RFr{F~_^nlXF;U`(d@_hm7zxd9Hf^}4 zp6I-L5q0)FR7F4RUU4Hd#_Ohkj1izzObF|MkvU5D=L@O6S_;4enm9v|d8R8{JCI4G zz3t_izO?zS{XeGqqWx4Xj?mOl;VaCh&r+vGccR~qv zc@@k)GA7=WB76Da97JzdqsmvJD#?QVhBG4l4|372_}rII^>4mp3~|jh{8O|AA1Hr7 z`t%<%U#t7f|4ruu{%FK*UYo18XTot6(SADA7LXFZUlF7ai2$#DcUs$97Atxdtr4 zgLBE5Rhdiq?Pu(ekonz8H_~jBTB^&gd(Pp?>V0L=UBSqMWkzBBx!STJU*M7hI9&k3 zX)mnhc{q$ln`QalS*dpXQRD$)MZYiWIH#)`PRj~#&(5Yr`=8-=?Vr96FR%jpqR=`? zw=fQ5zGacwJ8}(B$}sdasvGeiHAQw{JaMsYTBF-H65<$q^{qz?t9pFT{q*l(^tdcB zyuL-|Otrb&&twcPc(@or!lOmc3QcM%%mM>t$+QtM2Dj1IzmzYkJ|p> zScfe9H9L{e3V5r>QW>v`^mBYUVK&4HuCY9w>ag3gDX!4{*}1=i0uA>Y>VI-IvCr-K zfd1xE2L&5x%4a3a<86Jv`Yc?_{)&TOxFRUn&wS6D%YqI1h9+0aFBx)|%HTHo!_{bdkBfX%hw` z{TI>s_hMw9WT4GG$L@CtS#Et@Cr%xaY&km6K_R6KUT-aAIQTQatUSnrH+5#`er{~| zfl{}ApVk_>rFPLLytY`_IeP8SB5KAyq~+1k3S)-Vu6j*3`IjnN-3o7)Q4-aI<+T;3 z#6FI18hyIXdjARX$g$)#yfboG*XzmSpU^?+fi6!E_m+iE7j9q4BEKHMwj_sn>81;Z z!9Yh&c_LBwY1R<@~a;E~q2d&BjpR_X{KNPnv!YwyOY)$O(&Li zcIAVC0V@k^>hnjH%PXIIi$}^1KjTga+x0RWI#4~dkA#_MOSDYdl4^zG9W&DBx3bomz?G|6D` zY1^=6L8MEII`WfSKJwIGG!cLtv12$D&N-z;80qo1^CH;q{pdtVKiCm*jf@p6%cPzM zjV`oCM&{*l+vf*_Flw+xVDa1J#9IvOI^N7&x)kYX)Fa-YVWf3E{zqis*7 zO*&uqElhgz?09sCh=oV`;bSk>kc-zlnde>G!GFh|3oW^;UuHa8EPlm20yy&YqtjrE zK3cP<1pf7{cyJLn22%wVb*7|xN#tR*+EX@}d6=q5!o!eb32ldr{|z2zdkj1-*ZMh~ zGTH;5SY8SAkvFA28)!zNLuUw;9{$B*IRE0>%789^O{YJKl5yILz2W;hB%pwPUTy(Q zk-wc@8PRSBs*a#B1&vU=T!DSBvFwrdAjZ=dii}NGztSI)#6Oz8$x?C*bY^MIi$=S~ zS0UMSi6B2-^}2GnauPI>C?0+CS%B*)ZSY1ItVvWkF%wUliUHV6Ljl0zwqSeQNf5+Q z?3sB#ZM72r|NPuQ@M~j#>vBMBKJd-n{_ZYjjZOBcSj;}nj9%9`9pUqP9k`A0+0PWJ zJ6Z3#H$o9*j#kAmo%pINBb40QMW2jN$?8r|oQk6-DI3 z`uflgxsi%p5;K?w92^MyBirJnJ=Ha@wxIwrw6ihQfj8UJ8TU)cjvS8s`QiaC&Sv8h z;al05^jE#ary7PZuaWTM=B8+}58^Z4WI><&!Xwy#WlHhQDJYEfeHH9(P$l?9BGa7#S*Nti|9X^N z@E2tqamt{R_nwKpe1zuV15dj7{2ih?vY0YSa7Kdo02`c`Ix5P9D(#F@FKN z1g+IN-&a#rj@6tCU6}DKa(B&>H;C|itn$(uL33UWsg@21!6zI^Is>W6jSbb5!OcoGXmhBeOv z`+C)T%I696lAr98;M;@XrG$pTrbt3|$in|n=KLL!NUhPaVw|=Es^0;tc2cuoEYR}) zP1rpLgk6_YK+C%bz-=|SJ91ZMgP+2E<15q55=U0sk!O%7|Gwd&k6m2}g#P+^&4B*S z%`ZZ@K4Q+;SP07fQpvI_;aqSC13k#~*jcwgPU9{gEzOpFfl=;~z|%|5ucqfH#y^>t zDAP-q{oHApDK1$(&zNBJDck+pB9B4oXHwa8Q06$HVln+#Y&a}9g$2#TDofxDcv`ZD$M?KGJ`P(@LidI-2q z1%5lE*SGqZBb`sI#*`r@g)}@v?T@>VjY)K9(7!HUI}lo%T8`MHe+FXvdUUR68u1b! zn;i@~Ao@6{o)e*i8erW=>tF(JQwfh!XCdFX|^2ql=~W8 zeI)fAYr5h6jI!-^#y1O$2yVhG=vlNC0tde?Ag9-tc8c-WK|}Ex71b(~3xEVj+8dth zj3Hbid9uQ@j29=nnCy^05_70`!eR6{ZzqvLoR_bpa`$B8ZZGT|k6fUprC?V!IlYs= zlScBLK@zZe3si1^_3%I4j6E7A(ucN3+gi^D{IJH8`2xQJ#PoS86NKgjwwd9=MAT1O zwLo?oaAo|8quKdm0iTjlvn3rsz5M$~L;*`C^uCoH7nz;?LE1Z}W0ouJEPvS*-Jp1- zFq?Ut=WcOw2$DZH);RwtJk99JM4O-Cd50vU03YHt@{&@&7hpdBIuduk_~e_qh1Yap zAny6SE0hSfb$7O<+mvUwctF)r2?|u&s_qW@lTL1H9|Q( zXIAvp;Ro$Rl(PzuJ#0nBzW>{kzm5w}cKLbXeAzH@>9k3(#mYV3uGxT(<+p`7f4rX8 zj7P&WIECih?Fl!g?Fq#OB)1s*I{s8@6rF~tIQ~HRPo)_U%769*9F^1h{{KNX;1*gGhJ-4>fpX@O!xOc$8aj92_2d zGFnYtbsf1e8SCyPK%j|x|7ar*PpaqX%P?8F(<*9NW2499s_du~$FJT)jr z9Zq6F#z#ck_6r6@I__>MAFWP|rW1ArrHAu=*WPc3yhE|p91NXVc~T4{Bv2U!A;bEO zU*!1ZG}UbW5)yF

zcbEtaH)+Nx+jG~Md4U+|P1D#!jf?2-&@HlHhNy{37?NerKO z3S@rt8FH3o#!0I9syAjd-wzFo`RmSe zi5SoaLtA&i;X;iPcyBAu|LL;|Gs74XFh5PHLgM)E;Mkzd_CLZUlb#EJYIX{$-*}E} zrI7_Lo3npa{-~5~O^}vw5kEx=19plg#SdUY26f=p1r73GWcSIgvztCj5UoQUD*Rwbat8wB_^1JC=>NwYA5JA9 z!QHU^0%mjrtqHYW4Y+i{OLKcga&3fXZY$eUal3or(-~&-)(sx=&*+!Z#0u#pI<7Pm zs?R1l{!9F9#EEyf9al7}ikL}sM`IXtlFxrQnDhRobQMf3pEe0bZ-}MO@F!LpnKP%% z$6pR$SO;fOkA@dY?x(>v56cG78@opC{mAz<857}_dx^48@&qP{SE;ZgZ0c#GkKTcG ztF$;if-XJqvbtDv09F(K5u@R1kep@S=h~|L;(XKoS`KF8loB zHG$~qwZVs{cE?*Qe%AEyOon}^3Yaj`FV$_4(2(q1Fn72ZY$syW5GO{rdrlbtfXj~d z`X=|B+w1hvrfhmE4))lliTSt#@@#MX{o^qubii1(fuih5~mI}OA-FgwE_Oh^39(9Q9^Y_7*|UX7%w zgENdLbxL)=9x~6ikbWkwx1utOyNc!F`N3GmRPf$>@yL*wXBpCILNFWZXLa=|Hze^t zz7U{BLAc&KI3)|M*zdO$eXpoC`>=^_;MPSBFZ%yOPD#eW!9my-&1rzK*&*KQE9iMm z+|UkpznG4*(bqaXmb#f-;obOze)M~`zBE4j6C(?RWoAs%1Njpc*WSK?dDaNM0aH2A zkOmWYWLOyGrM}km=I~80tVSFRx3o9(hzwdN0H>rCcnjZ+hhox`DjrIT$A<59o#OGG zpT?coDQfX5=}I#;m_$13j*~ka?Y6BPG!LaqPL#N)Xu~BJ z%Q`Cy&cWB8E#UyCZ43V!9^`2{ z!9(5IZ_(17^wk0+n&8#Uh4l>qEB~A9B6@vEgW3@JF(S<#Mu!(7_50 zHyF%FhKqQXo?Zgtt{ou8G=g>&zz2-HtLBseT+GCO+e6pojYl8GSGCeZ!hRsuXcG~b z6O&i)3Q53tS_0gBA1sZVmcESR9_}AtF`PO!HpV1wrptR}tpH2X&ao0&yc-?a&&z77 zcj$|z#ak67wG21Kq({twjQ__2380`$_f;vI(`_sHSnIYv+5e%S%)H)*V@O0YrEHw# z1#C!_5EAYKxj8eX>3n_;HEg_n>}(FkccdGwoF&H`>lyGYMm4OiVgg}V9hqD-^Rz*0 z6F+vQudk1(s9Tjb=Bu&BLQr?@5JkHmC~RNfgxvfv$?Ey|a_B;C9yiOjorw3#mqFhZ zQWB&BI84=YI*k(T&2B~CwM5t~s!pv{`T0#k2b5u)$H@?vR76uJKl`=+}A7uMyXB5ueL0 zH%^rz&ULY!_$C;PP#>++q(e9TAD5#V09&gdA7}{&8s6rhc)WbHvyvJ7h-uf?zy^Nk zS7;#hClq)bKyK$=)GZC&i3gu|74X~oC8lnEzrzM8w$QP|H0p4}?9teNe zt>iTmpGOA#y_B{lzr9g}p`&74he}5aP&v>-BeH7NCCO{q0fTxv!jd;*P(KINRs$NR zP;D||jC+AI;}d#x**HCI_87s+c(o)Jd*p4L=ea1c;-NzHH7x7f%qd&x=u@l4b!CdC zR4Y&|#d%vl2T1LIS2SogYf*fC94xjcPJSy}6ym}!N$iHb`~g?yeJNA-+rHQ$_aTfW zV9qnCvzO_c@m8GiTGa_;pY%DM<KDHsM2HQy4z*Z-B~#o1I(;8HlH*=WqhD^DmToh67H+uSM-S{ z!7`iO5Hqdslih9PxYr^&=$}V+-m|YciPMFh7%OoR05!ujJCPJr39XEU`Cm`0QP6?5 z`Hi4B{H<>0S`IZ?_amnG4O^;n;6$bQqmGY8GwZE3k^r?=Y_xe@^1tSXTXtirjJLD25#TCDd zyQdo7wEON}O%3F%3I&NpTI_lmE?#;3u zi-Sb=W;%zH#N9_ag2#RoJ?%R;@A~ZIwHBQ)cdUhM!#%?0vr{=7KFbdN6r%)P&mq`S zKGkDf8&v&kAU#5D423DuE3+;X*y*T~X#c*|5!tO!Z#Z-zkwSee2mJ5dE zvIeLF2gHgJeE8r$3oNu$5~f6wLO0KZ!)`LC0%1z)WCpXqKkCyX|o@C`OPs0CRP>fR7}C5n?=Q;v%r)SN=@C9*MjUU+u~yF z!fvXsW$}k5N&*!@LXHoI4U?=o#?^p-BL4_5MLj_4=Va~dg0H6~HjjkE%=!35+3xNL>Tjteh8=}+X?dmApw{I{7)@X@#4 zUR?Qla&=HFm zcl_*!qyv+#ohn;Vf!^=?E}Xt9rJr`MIbZFnqxZ{xYtdu;ReR*sX1HBa6+nZ$O}kd@Y7y#5)CDMaktx;v7e*Y0f7zaI)$4XvrE zIsfr-Ky-tmM*n@WpcuG@c}IPUtUfxnf7ZsWG=D(hkn0u1g?euOXV;oV4(saF8nn1K zC!HK2K5E8rwM#!(e?VrOLss}v(rYiY^k?_APFnS(4)U$t2n)k}7dGyx^kNXTJ@xzZ zxMNpfcE~Ogf)R?WMGrsRdFhjD<^8QdeX$ceLLxgak;twh&w&Z#9~Fe((H^aX++;=( z&TK32hYX87*is9q5S7*Rq{eMN z`9+n;Q0NPm{To!%0uALTePuQrHV+XQwA9@Au>Cc(tCUX18Ra*Wk17DFz?D~URs%bc zgA)F2{@dU1{L))R?Oxz6N;kYcj+lol`SkWTe=H7&jW%B%{yFXR%5TK>WQWRt)+D{=cm11`C)yL7 zwaqJuH9M`)UsBwirRXP~qdPYZxQCRzsvB7Y-nsT24vLTq`0lt;Q4`V?2g@OorP(~^ z*%6xixp|IVy~a-UZBSuC$70_XD4Us2B#dEC5Yn>v23-^T>G=R0#YvT_HyjN{L4I&N zhF=qDUm!xliN0;hYh1NPlkd5HFwd{uNDt7r48>d3-2s_70Q=3V_&ZS^^n+xfa|>nv zfEVYz{S8q*Y7RUHQARjl${I&E)`w!RK+&rQJ+y_NzM$13c;L~t@ zDieCo?o^%*4V0GgMoi_i+s0ep*A$(tS1&be-MSS;hY@kerv z$UI#kJ?(1&Q!C2=`CKX&@uM`6v{v;XKR5&^4-o{!eiWm6KNOGF7;Juf?C2~b6gyux zrs9EKSW!TdR6&-bjnXPC5Lg8g4gg0;wjI6w_F}s1ne5eAGww%mo*&&;rQV&*?2WpZ z9R4M_QZM;(`i)z~pYn~vf%JR~&w9&)$VN(8*i&M^+*NU4tHlvgw{y&sl&0V?O}Q{e z5vVoyCM>*wi4!(oyXkCftEQ~Ptlo$X2$dOtxeDADDWvJd2Z8g9glN+)iuNszPC~`a zhGI8P1N)rQf;91`=ES{}pO)R&##@w28&5@m;f@C!@&6jmX94ONO-NQB1qh7JI~+J~ zFeoK&H+pJI#<4L*x@8$7y?mH<)Rvy~M-u6-03Y_Zwnpf<4Pz59_)GtWCK=nh8C-E& zwi5~dLmqB#gu|YGkXGS4(AN+>SN6UETJLcs{FHet3ivnj$q^-L~qO59v1C-js4-mZDZRkkzjozQy}kP!@-I@wEGgH2x9RK~wWH=YY%a z>&s#`P6mJoX++DZe-ea=SSoFni8S=#KMcP_1&D`(5#`iB{OVoXOub7IYLE|+&04xHUv#3I&wqiACy;mwDA%j55;*(=F@e=s;Et>^F3vU6b8)5 zQyQB1PRcDJD~N7Wh~d$iNcoMK*f#$|b z+~}SJ_>CUg;RdQ{U4QLEznL~5r#Lp) z_HD=DA!Z;zcyR7Hfkm1SFso{n(={p&k@)59Iil~davFJl(~H{IFLs>zfmeM0J*4D} z_p7?B{k)!f+O~1vv7_Wb`FHJxhfi_xw)$Y83e4SFZie9gcUfu{7#Ios-h&_GUb<`( z(AnP!m&zQM;q%rjBOV?LdCSD58t8c#B}QljX4NEl{@KuTu?ngk1{f5fD~W)LI%U$t@JtL}rqd^`+Fmc0 zTLrLgAO@B;#^q|$$s;11H?yPfoNgI6$Cw+Ioe>?L*ekVQIwgYfBvU`iz*#72YmefchC zu@xG3M!X~vbgGp|`YS&+DXJPoMH2u{B_&aL+AN|jU2AAeP7DM&ARnfJ!;&M*(}ar0C#VZUx*Hj?xK(V z`f#TaIv;Az8$;x_LsS>r5KIS@*yanClz!PuND2qL*}*uS+o-6FUf(qcNKekpnhP#TbW*&dDS$bIe3*&gMHFa-ef3uJ;lgX zX*AxSJ8yu>^5lQq3xDL;ziEyIxR(PY#W9@fx8itvZHMgwWUl$YTUgQyE5v#>Bk|@1 zasQGcw%H2TSmw-I{Eed{JoC%Y$P<%`z|pH-vvGtWO5lrkSZp*^#Y-m$M05tV_PY|CDDJEqdH ziHpNc&frAW8$ayZ5Hm56sL8}@O+ohlg<4xfGx+>nu~cld_469TQDpNy;KO3`FK47P zbl1-A&1;ow+IbnN`Rb9veVy|GQ7g067L`{^*7`Fus71DZTGNtzqyS_De57&r|KTHL z6C{&l{f`@VP86VWMAiFRUXHCp*#oIAockEWXv-DQojtft1CccQKb#N0b%L`p(B=cE z2)F8u>*n#&v{BDc&*P={F|f&i$O6 zBV<22?bnpCJ607u5(pJB$}kqWM%CAQzR&&k-dpB-GgaA8b>hXdLDBoRtC8oINSkrW z=ld^<0}pL~geR&2lb#>eb9RYPyjblzw%K#nRCoSfJ&JLdV%PCq#K?7pybs6cXfw35 z&)2b_2g`ci=YG)(wYm4Es~M}W@~*k+hZpuWthF*<4!vnW=qP97c7xkcHjn)Oin|TY zHJ^K~6y>Z8T$$c5f}WZfK5%ZY9&ytAK_&QdSobO!BgcYEd`r;LEJn*UP$Tec)LAV+ z=!`D|8x`5e|7oB3qlP1C-eV;8Vd6_hkG{foAF<8tcWlRNIHyL?3GLCDS)B7yI#VXW zjKqHmjO9o-u|UT+M0n#jZiwxcT|${i6u1;?RHPnL+JWDnK)iXPxsua%Oh}T3m_&HL znrv!bLlj0Rtz$0lZzGhZ>V**l#Up;U8%;rV82wtPxK~rYpQeS+x>SbGilrh@i`QGF zkD*xk6KhIee7ed~rYi@z!-wS@ZwgbrW~C8`Mg1id7c&J!UG=+9o2T$8({+<^Wv5hQ zGGYGJ-eH3hAZPw<)9OuWh5j*AzIV0V8>@W!aw1FfoR43ZFyLc?2J|9-6sN0kuukdE z2H9Lr9Qld6JM*j0DUyyaRK2WD)jeLZmb$h{bByccV#?p$w1e3fjMJlH{-Fz_iVNU_S8bmpvBP7uX*<6_9i(N56)Yy zy`ae0oV_5nWaR5)a^P08yV9iHc$JOuzg>lwp|c z!+cA=YfAq zj_QL5lhDM7us2jwuJgEtkytws#J;qH8gfUMq0WjCYgaqqH>1$F?N(1xoDENgQJOGq z(5q_9vaml`mU{qeX9}48fBIR#HIRpVK@NGTUw5&`y7^DeY|$}-;3CiJtpXRE-~HH! za<X%5^|Vd^uz zdild0@-N=s0}{PBs|}y0P;)O~BXOT5`drlfAo#%lXRpPc>dH#a)yZ7fj*odP@6I{e zFJlU+ij7Wn@_sKYJHDr5=H8U2)mZ^+D7$*4s)ywmV}*;t#VV;WvhA<^fy0as4BW5% zRFIc*bLIY7<85Bu!Dw$1iP^g6O2{unZ+zXo=xl$zIH_2(Dr-%cgL|fO;lZ}!)DKwx z5~IJNrPga6fSm~t`#)W)7&sC5_duRqF!0HeXTH+@aEB-xGP~=@yJH@-4cHSD-d1-Y zcIVqA1U2T4*Iv(>M4>^)+ODEpxg0@KCNPOK->bru> z%vZiNs@HqJcX+Va_x-4=-7-u6%5?tc$fUWIJUIxhe)&Zm(rCt)^?3isikK{W=AK%6 z?tAk;`s8{C1m;WJ8THYLJ2@;PHo5Fi)iq#4S8ac=BBi7_-)&`r=cv%EWs%a4foUEv9dZp$F%6X1x*GPII%ASwRX_W~&FBQWd(hUAC|)%f~kv zse^r^-ad$w;cVlu;x!kRnJrzaSNoPZSK59O5bXaCWBI=w5P*r9-8)G(^6+r3mkR&l z%J(Z3;nf8-xb(!@arSnlE1$~NUst6-)n{m$o&RU;0GtiM4?uGIxNu#(s&IGR{Iweu zpPf#To3xugKe}wwSr!nVO(EVXyQ9M^>-{Mzj!{rHXKyKOP+Is$SKahD;aRrzy~?|? zwWjeax!!ap)rI%WgIsg7P;>EkuGothv*ar$!U`l%Ntl%SLQP^zs?M?ZtWPt)?`N?|Jf0J2VpU0Rmi0!~t*jgfo>Eb< zCnUO*2BtdN0f%N0M0aNVA7*pL?K*Nd>XNfr>qIz@bRKYf0FLwRtXdyWfJ z$NhAu%s{c*``66IfrHudSnxo>(rw1lh8_??V$lJ<*=JD0<_UK2Z?lpUwmc~uxrZqv zgDCM5x^SJm>0a-BwmQtF+|%wiJ}ii~{`p?!GV83S*Fa8C>$sC}?BLY}{Fy&y)=rlw z)QHQzrR#tDZDk>RgBhNJxY+6(>SgwadfAZ;`o~kX&y~mPMIQ3>u-)P^ndRjQ9jQ5o z>}A1|&CrkxPycw;^Z|K*^+Bwprchse@||1Gx!M|)-@MV(wy)2439@Nl(7T2n_p^7_ zQnE)je#+E=8Y~s;qG4m!1#0nEL=tLlKY&VLOz&_9y2Q@U#xvdhk>&S-sp_S@)0gdy zITq)yn_Qz#ch!?EO@7OYu!B%FdOra_&B9^^f8jdaej~l-g2iFqw)039_d0D%-E9<; zVatD6uKn+_Ay@|efJDVJF+fav3p`vXgniS-5b_)W)T2JjM@CWEF!V>nFjix{=_d9~ z1#E>gvf91!sYT?d%y}Qd`;$9!+rvCZ(L;%5OJg#XuqC=)o};7IMP^H7j!`g^v6wVP z_HyKB>`J1UL|0IM0Jo;#hG4^O|T%8eDa-0I`#tw9WT!HX*^O-;FHrn!>epBj3M zt0Y{W4|+dhST5F6Q*qV0_0HSqhAdW#AU0lwNbLY9z2Vr?HpMe>(MVpb%m+x{;P?DM@(0Kgx#r%y`Wa8uHt@5<^289qVi1(zr3AfG2L?`9O6ry zMdKn=LZP2JDyX6#I`bxtu+9i(*Ui6ggSsAx-OHzvKTMO91!B@?f8$+GPx`?^rJLRJ>Z#Uy?-I&LC4LT zk29Ess$G4=M{SojqRnOJjZ;7O_36bZ)ce{j=~?lYDt3AKLV$9yrpv0fI^ER%a+R=e z1<%!eJKZZ7`38UP=JNE4rdu_-q9pbh!L{ewa9oXFDJwWI5)q#*r%m#37Ih)c7ouX` z$aS>G!w_P0bxa$I`r=Fg3&&ZCt80WZ&cF^><8lvS)A|cMw|JpRt6J`TFAxiq#SnrC$Fsnu0oxqYydg z`!V|lrBH9h(RZevF^|(|7j6We^Fc1FQz~2%xw3_QD$?_7w-G4Hzt1jyAj`S)Ms_HkW`(bV=ug3_*5i%p$F=H&WBC;W${9Z;x z8K=;`_Uo$1-+3uv%rWo%GVq|DFCD{R14s&N%EZ)YmboB@)jZN=!{4I~r*z4^=Ab&i ziKh9|e|qF#t#q+iEegx9KaW641lyIE!vO51;UdYvn$c?2{tVG=bNu-WKyRgEUwGWM zH#oyiLbn!PczmR+H?yl4s6GsoR=nh3#p90?zO9qpA6IF|_~ROKiNBz9%8&okU#1lK z_Wn2v7sQexv2#ZmmUa|!i+WA>Km7U33X)J5nNTyiD3~IuUta8;A8|1$&s}%shkXTN zETK!NZ)x{TUhh)YcDqfDoP>w(87GZSQ`^PFcW-M>1Il0FWt>qW8DgwY`2X{+nsK=5bsgg659G9rPk5;PUr`sr^r@z49VWj@|1b zfzZ{cC%seKSBatf6P2%*ka8WyvI^TtYE@9AAK8CggAejI<@4KOW_CY#sxK z@>nSJng8UZl5~!4A7#xEaZ3h>w(Qvn$9a1U>*q?{V!_J>{d6P90#A^}2V)pDS*@)c_ zH~{a0Yc2`Sxn49wkRaevTp5H;dfmMTHQ0z?^NtHuYtS62MCb3NYmB)uhsuYDqdMfi z_E0T8j`3b`iWO8+s1=R&u6V=hC%2v|_u+bVl3YmF=4QtBikBM|u&8_>DO5N2>W;L@ z$?596?JwWKInPxIjSbTomMn|tS6cEHh;7U6!fz-oAQWHumo)hER!i-|lqdU0F)l|j z^2v~0$LDhdmC54-j03ST8Tx5bV4M5&6fE?sdvcSE_zujve`RR4r|bY{v5Fp6&y`b| zPui3vE2Rcgs-A@^eq;e8{J)kk)@wIuK4=L>h^}3V=l=L{pfVYQzisKyVYh9#VM7in zy?4|7%P7!7$*BLOg;E{RL1uwvs%?)OklyB=5#yQ=Te#Xni;T0l8v`*7Y@wHQF6n2A z$1)dc3>pmx?vjVL>D(@prAfN--rhiEKJmi|ksYYeyK%Mq)bywySu zluN8nGy$Wk*2L89K?lnb>chS~JfCH#{MDC%Q97j3{};iU_`Oy)r0M*6liGuN?MY4- zgyYu!_F{oXwNcz-Uc{SKj@vN*$FQ1+9j}MJqHjA5u-5@Y~kf8>JA$b z!>G`Q3CvqDo?;ohTThi1{}5--@g-dW#MzmQL*lHC@Q0oZ+};>vw#5TN?NK&SHK>Ri zcd_3=_34Fo#+J+g1pU-x2rgjUZm$WOQ>CI`K%Cv{mBUPi(874XdCU!aNRt6&Z7Wq) z?g^n~R$!D#tQOYM7yqlie=Bqu!-8vscbk#J{N|99*TwCQ7e2T)j~Iu-H{C!ny|NEu-|l9HSiNa zAMm!Q7?(-sbObm26o|sxDRiQ8b~2f*L%zBJ6Ft54 zq(mU;k$Y%^yUC7c<~jH+^0JA^-pvm0nX3F1=|Bm#`SPRp93$O2ItHaKpYvLMl@=uA z<+sS?sg!hPb~<@83}!gwyyMc3x{n*O4<0KllDYBJiOzh2xX|93rZZ&`d1kXLqv{dw zdIsZh(RAXMTa)tlyXQIga88`$lQdi0u%7J0{aGFIR^zH_B9ZpCkeyQp548c$U zG0^jF^G0P(guL9Z2tEh@eQrZH>fV89@N!B@k>Ci|wWBQ3jR~v$PgqV8EEJd|6E}S{ zQAI9Cr)OzCG!qM3o{_l~&Rr9hBd1b=<~)7-WVV zSKAb1K-dY1x(oZWZfH@g)8dYqb2K4IXF0}sgbzD<{U4{EJtJRm^Mn{ytBi>q`TCfnCkCP!_41G^4$dCqRoPq&UeSoU96Xto5{jPNAhMDp#s zK`r3*I?qOESLPdi)S`0YOe{gc(g72Tk+fae7`@0PYKLkY3uv(dhs|@x{1i3$MvJ_s z9gpq`4?(~LeAvaba}qj2t&dsVn)t65Dy^k9EmXbze6Lc^V5J&$XP~l)a;MTz z;BQSg{nyp812+j>XzH{MsOYZc6<~qWKyx@25FqC*Px+ruYA}DIVWd9HjK=Cm*@*Wg zF=NkF#*Z#@fjjO;geNw50Lb-vDYNv;INy&$H!d}GIA5>_i328cFF7AZ(UmKF z@Kek69G|lyqsHf=>v}YDLaHMvFNN39j#;O|h4Mwr zJXdqL{jzV}QLWirIgwcGP>=YK$P2k{=$!;#%3Np92l91{2Ez#PwXeJ0ru7@%?Z1jV zKDdA=VmUS@Cj98agHh;b!mD1UV>Ej)*ElW)@D^wiB(1BACZ@4h6aRMAlc8zi4Y9k( zu?dCRuE~NBG^)qnJfweH@6O6K$z1hoiELb|@er&^>yp}nDM>!o5t_inqa0pfPVFtQ|K~^u*E6-fNdW$XC2t@6Sm+$F+x;*EqkrP9pc;}2Vo`iMa(OFnP}fUMRs<)7dHNJ9p6LNZJpmYO9f?t_v29>_gWWZq1>#jLv9qC> zo_zKU*H?ArFIBaf&Yp2uW6g{?1rjs2o~RqjrcHQ#YXa#wW~6i+Lb*7Mv2MK04B^p; zZNTMS2MgAm_`^zE@}mQ1RUz{XuTK8;(;q2U71aBy_wmn?+<)tC3r zafCMA^M_PLMZ#EsA?!AYtAI!vy|vJoMotJwJqw8l4YN0o;ESTs__BeXc7>ikGJhuV zQ6bdaBX=CmdwR_Il5WfuVf@K2#R6^&#()ZOe+%W=V(Id)#d-h7*7&L8jMA@b*ZAIN z2qqjuf0M3;YrWIUEYuFJ$L)_)vHJ>_nMRCV37Wx_-H@3wrjFOH=eqAJV}2KB;7zxgQ1gdU@F&C zK)&svXtl!Y*bE5E@Mm&U4GpFFzQ~6=AMdF1@@J{X^fEE;ew^BWkoK^z_Zw>sBfl2| zhZbqXhlyd>I(x$I*UKBB7j7nIM?cckKKD*7@g+{4`LHwQ zi1f?O-RtLZH~PJ}sbVxfJm8Meh;@r7iMB5m^;gurb-QR3RWcxi!CvcU0GVSDl9)w` zpa*(T_%FE4;5Ggf!_q8Y+F!}8i>%P_D~u)U@09-3YTyS4u_nN$(?K)LPlkO1;%0Qe zc3~69&M^G;fUEjSP?NHNlOxzK{6w}dohC`aG}KFFe9y|0oKAKJ8z7tX*c#Gu4zQ z96K-?A4<%gW2*&O!m@sThXy%ctDn6eBDaw@`utIJyFF8d2uwh?ZO^(QXk8dG^7(!Ba+_8PV(Iz<>5(>=DCZ1rfg|Q zFejem&F*+%mJ5L|ZB9Wx|1Xlv@2vxzkTVn^!DM_vh?I_Vl=Pu;NH$TfcUf7g>qmYb zAqhjGn}b0%GO6oMy@>Og^q9qp=3MlG8!UEke!I`x=7MQzf_xg= zyfdemODc$mP?>tZAZuLSQzAzrCY(M4ejOYyNhlUZe940tNY7m!=dA&B+D#~BsDXsFTW&hI}=e(qRD3cuEOE)66F z)5Wp*)pA^lzgBWMBW^nm3^B46F(pltqdYmub;c)w(Ihoz6p zBBDPeU=mUln751JCt<(G{fYYkJL7n%8t#=<3z9>;&^&d>VnhhZ8QDDdKxon*5ADnh z1h&G2>{)%01Vy$`&zmY?_6E>*Yy*6`O^L74pRT^wW^bZ$NtvGvIKR~AJ3f)!V<(#Tj900l!;Y{! zqi@5rh)G*P2k4+3+*bmqH?v6f=DwHE*u+{Bg*2R`Y2^ITG&lvYKd+vi-GY=d-b~Yi zKnyiIdOT;Jg`_&&(?uJ(5EUJcGasQsLx=n+CZCE-1$J3T$R(j5~RynZmzBtM6BF_lU3H?1#ns2(l3z{>Mj zij|=%msHPVs==sla~$FQ4Z-pU{Nu+9)GiA3yYVB0^ennhUsZNtyx^pRUiRC%#EjVi z1$;xE|*wyh!PJZ`sD{1hvp!YboDP5tP65&G1GJ9M>S5V7)G;vjbOVLQl3^4e`@ z;;i3my!?nExDBYbLT@jqN^31|X3F|pf925gT`%SiGPfuH1@OL~u-qMO$eg6n2|f3|z|OJ0g%+&5i?# zIgBM5sB3etVHMv(>~cqtbgn6$>V+{@y!Y637oCP*`GbXGBR80%a}R!&dmbBQf5#21 z73TmL97m=Tin(Y;HZVvKMze_e727NqO~*repMOq==KJ0j8EsUP|2ZU3ZD3zb=bN+@ zWB<+Dr%hwQU4$K+SO|3Rh_EcgXDKEo%V?qK~AJ! z>J>~yg}1x~_)MV4Ox}8(Fj#CrPUU?o-r5xJawZH7_}*xpAN5}iTCG>0UYPB+^kKE^ z4E(J|ZMfA>o@9mF8S%5jXu$8k9ym0AVrIN)bzVgf72&eNp{x@7@L-bVNdAtpe&BeH zS-eWq*G1TPOzohYP}kBAZni79xw>4aQ`#HPTNqpIssuAczglpykdqc}ld1qDW{hwE z8;%(CbOpD|nI<`V4Mk_jsn`C6oLUWOG#@_9B#ZfZ(KkOi>+O35w*0qI+@|pnW&Wdl zb&qdN9c2yGD7zVStVS@x$%>^ff-Pt8fmm?g^H>|%K0h<}HXF{Ow@61};gml6@*mkn z$P;bGz|fWATON6^Y?>VP^utp0${7W++caKc-gm2d*PuggAxh@~p#-dIEzy~{{Ba03 zIhbPNVB+gn4rWS(Rtdi2LmKK zZTsvAe-{9yd!#VJ{Pjgbt>3r5==toB?oW?nSX9A%LO0aO3X6l}TSfr$JvTnJX7=gPO7*JUQR22cn0Y;?hILo}%2U^%b3A z1|qG{QmLXrf+M5rq6BnwEsVAJ z?c40CCkRh7MjtJK89k(Y7Kf@pEFJU6@arJ*c@eCANw$x-oILfbvqy?O5NBN4N9dicKJ@D8?I;k&w3!d-gr>c%MfHrfjJ$ zIaNY)DAMUNLzLMbbrZ=qHQ-K5HriZQTZSC#zOyegf7$%O$xvAAnf6nmUSl}`RasEk zKaT;Jwcm)b-JR=^bMj5LZ{LGJUtd7_Rynj7(ra3_cOvX3j_}>;b8i#*wK!Os3Gd6Nvmx^vv-j8;db*%24qq)JVd&HB*W5cdAlzL2V z0haFiAEZ9E z7MU1|m1rMv*eI4=x8d~?XE(Aa2K#!oTznLo(P@_JK+L<2ZCJ7OYLf>HNFrxg1iT3251$Dvuw@`rpU|kVv;O6(^Jna$p#qd^mMb8QQT5E^!HhU z08(+%@N^VSk;w~^-9rH24c^weyt748o;j#;a6pU=!yZv%P84*Op!!0oDsI&uj8CQ! zqr`AunAAAa+|%hyKg&n0mo>?ddUuy1#*f_OZXB4NVW?H<}4M~r1OBEZAXka%gCA?1O=Xenv zv@SZ{6U_y*ZgA_m#y)*oa(+JvxppA- z{1cx+B+Bm*(6eSQlL6tJCnZsI<2&o5e2GL(gi|LZToqhZwl&L#x+lf@iMIa9!+0H- zyrYi&W_+H8OQ1KSa_0r+oUd{LvvKnF{Xb74QYhNMz-}rWXcZ=iZm$Ez=5dhFI6vT@ zun|KB`AC6(am*PCe`i}@&!zut)2ERac`Bky?;?^3H9Je48p;uDEWyh^MS0EJUxj<% zB^&v?xYbd6uFSC#Z~3U=&(S9Sxr$DvhFU?9QR~M_S%J7*83yC{^`kwa=Yb+~JFI^} z;(;hF>U%HKY8zs_c+Cj zXUxzzwN8vC--5gdqU5spD{)lk{vIZ8NvT_U9ft9R7nGl8%$-~cl1rc5%4?M>KJ(?d zvJxe_v+ByUx7WwJ(o(uptos#7Zh{0pNyy_L@b~ElY(7s0bvsNFCKh-faM(VcuNor-T9d(>+vKRq4f$+O;T#WEt*8Mo&HNx>+qk$uX%1- zK$JVW?)!#awN4JFZ+{?pto3+R6i`d80ZPvkl8&(ZOdWJC6hm+I{!D z!=R`R;>*i|grNB{x!Z}ftJv>+2db_I zDTyv3)!B2X;sf{Or}9S2F)7J8^X%!QL0xA0e?R}@1D}6S=k{-4S50hW8!$sf4&Ko^=5doJRoou*%X6p_st5YTdbPVny zA*BkmbJ?erQs(Oq_LBA;Z6{LXE5#HM@knkSFs?*?6YXhMXlf!aq0uX*Od8JSV-INg z@(4TX7B| ztUi_VAzTf}xh$61yw0IA5%1p|`N@jBb@nvYNv%!Q(j;+n2Ld7aMg*T_){Z=F0D!4w zYlv~0{Q_d#cJ>0q#ggO{hJc232Jw^S>~E1tbgoZ#>*u!J$E}33?7b>pwF(?!KWypS z@Gg3Ih;BRFL}Dmv)B4Bmo`8HE?}h}34-e#;`2b`$$Zxovm}hw}wJKxlSBEJ}QD8vh z&i40;c-D1QXRqIY?%`Gp?33Tyj zbFmOTl$fzD6e5*!!n*=Lu9g~~JzeL-pZi%T_!ex(3hq=)6W);*Dct!?l&e1=wuE}58 zoNoIM3ET1`WxAO?>#fj`xrK#W4Q=VqTW_h0bSiA;f*5+~R9Peq1k(BYZbTE{cJWXc zy%H#Fe^K}Zcw@S4#iuEL83x36eQcvo`;>r0YL3UaF_^{U)#od3#D)00JL;IV zKh$KS6L1?P0(a*vQa^HI(5rU(t}B0a-vv~X+y`O7u2A4RSlY{X`KH3f`en^&<74iG zn)08(a4H%1{}>o<1^;JYIHdDA5dMC%$e19CU9%54RVD%|i{N8)0iUX^3r<4PI%wLN7#F1*u`Ifg9oc3HT2#VW{t7$rL@{&hHOjPhJ@On zX}6I5rX~4GZsA7p#8ubCM@k=y77gr7Lk?sp{`sh}ejlkIg%Qy~M{Q1so93ph4It{Hqdw3!%ZXh$Bli7ZH7IDK!0#pgOkys38=z`eP{Ad-NPBhr21~fO(NyI1_nC{2 zt3szWES)`_@4nJ`#7XB>@ksEmjO?WOdDSKK=HhE$Y0<83suJU?;R}3IaH}wD)28pJ zSeU?elv3h+56%mVRW1OhLPpkq~($YO>O^u?i&LQ9KwBa&L&d77!Tz zbvb<+%FsM_SW_qI6XT$id(@>zn~5}sJ_gk`sOVM(YM7Dbe+ju5%@84r`Y%+t7XNsh zxff!#-0wx@xQMn2CI2ClW{?hdJr< zd-+4qshYkvXoGLkHKq7D@1+NBJ;y_<5?BZ`71>xo`7)J6{N_qZUtj(lq+{n5|owA3~8X{}eGy zX~fv&;F9LMvhguvwyD>K?Le`bjU)tha_vgsj7Y*H8PT7i-C_dpHWxEP#@zjMcZSNW ztu!pyp>m1EfS*dx$mo4m)*Cjre3GwD)uJCwEDYpIc-rs)Rag zrOtE(Q%Mgt2zm0ro{=ifoW$T!nBr$45U zKgt@hK+@G71>XE0x*Fjh-mMh2Ki(~DhdsR&JnlKZjhZ>dMRZAb2_I6dq?WI}gF|b8 z8?<{FlZPK8YuZE!&-OKdN_#|mxQHsai@QV2%J|Bv*&SpST`@Naj(4IAA2oA{BQ9TUn*p~{H?z= z8bwe59>ffk<<)j?DtD5=+5XdHAtUV2wA`;EmC9{wdCcaD&L%_d=l$ryVENlvV-X#2 zInN3fi2#k2==q$UKwOM&$It&{*4kCLZI5PGs|R-JJ`utWO5m%nU9Q-ex^FHsA)J2h z#K1IuvriUjb>RA}SlKGGknZ2B3hEL!XKq0d(8nc83h0w|QeIG>3~+fXV=-&PP)r|w zwIhaZRhRY)Md>LLQZM`uQmVNQ5+4ykxt+baSFthpw-6TLYV&krZxqf&6uG};sbJXKFcMdZSU6)Q{YH1 z1#!0|#hQy@@T#AAZ&fITijws!*u9}5;z--2duH^ND^sA-H-ky?1gtz1@A1rUI5r`$ zFnY3xTYufNYZz5TDbvv8_FNxn+`60E802soUj57ES*O;JyFrORkG4r@9piY(vph4U zC}l*?cYAuj+gD>B^Ea=ojJVO{FGsA8CBU!t&S%}wkvz0qP4q^`uT4(_T>Q1iddg00ji}%1>!tbCBGRG2xARLvai8C2+@tz_-4~IJ zys)}|>RS7RPL!8d$@+$Qn~-)WEE@a^2U^?Gm2uw0?!eW?jCIRepN&N2)@T~2NGV66 z#rs^}G3iwYBP!VBp0S^YxE}ticTeBWz*P&V0&!v3Y+!xUXHH^bPs6@I^Jgzv*PGv^ z0IX^}pj7ugY|aKh`2A`0>1P@>9yE9UVzPLvBrNxoV$lCPA+grA%S@|6Uvu*d4R|Q~dgn35+ z9jrXHN%xNl(YI=eT;M!x(yaxv{|i0p$@rFc^UVt`0RhCxppB$d|B-cpI0O%R?kd!F z$h~hBJE% z_jnm1_1`kzrOr^8+~g8v2j&WdP0zbDa2Gmy;I|TvMl?idE2$)k(m1P42hP9B(u#N@ zS<0jI0j+b+t2sED_PblLgL_q$+b@@a-`+4*ItTJ&Xz@sGSP#RBz7XptbW1+)9{eE0 zcBT+8S2jJQc#ArVYvyDncezggAd0-&**NR3_^b12u+sQ?jL$stT3?GRiG9mq=X-u1 zNKO!`!zG#zz=%0DIXQ~LrSS)i>MkkR@7HAIh-(R)TeWKcSRmv2kr490W6WBIdR@SE zPqt>dr;pb13dgjMu+Zv73}r7m%{>oV{5=u2!*@FP$8J2GD|K-e?8&XE-Rf9i9UF9X zMf6wsN>1=2&=WCvqO0;Ij!&D^H{@sik?ULMZk=+WlU{2yjG(Fz<$iXz=MzkzczkX%>ySL>7g~ z9jUPsb>h7S%QVt4z!Lv;9<$e2qN#RKJ>9Q=>sr{k5^u)BB^or{9`TBv#l&Wa7`MM- zdAGRcr17xC{!D``rLQYMnEa8EW=U)O4miv)YwkJxQ`K4I)P%UeAVGLoW7Shbgh z5^uR(^wqii3m>-iJ&!BVWX6}#l6_`Z>FIF-^LUHwBaS1i8|4+InI%-2mKKtd986n6 zOGmEntC>Z?>fD4|p~a@~`F9klXv*j7bf#7}ebs-}w>{YBwr}zP>nZYK?QlIArN50F zDst8@>4!0cUwX=(X>pgE%2qTG&8NA*&63*&>VRoxn(>)GojSXSYFLrh^IvNaYpL6+ z{pAfqnxrkQPNWgfTNT4mZC@)ZU4pmf**+7-RoG|%_0=Vcutyvv5JXHOHk;U%zroAu z**Fi{Ho9)rN7TI5E2IrNrhJ#1En1OFnCYF8~KW{!RWR5+4<88ChD|+Tu`Q~x&3rl(48+ly{ zcjr^&axV1Z*nCIg43h2|(BL|JH}Wuf0~7VQ0CFv=shDHV6DPu7G1-MraI;C(L~WzyM38+L~WsiHv?Gq7(8UA z^n8b3qoU)TAN0!Er=d5PUr~r!Pf-|DM_zpCq>4h8uhUeTa9m{Z^WvD~t(+%!$$7cM zHwQPJs|mEGxhryXUp|2tpC^jS-ygd_@YM3V(ug)QF@bWJs@YZ_NH9zcRenK0f+@Xs zbcr6oy21Bd+6vC00QqK7)fW_)pgjMcTWD<;meWVsbdHAb%J9XAl)JAVCI<7{ya$F+Se+P=|Ag+l}lN{-$nMm2qYkYV47?d`usH zo<*DmsoAsGNdYh`32_(VKv}n@luZV=RU4YjR8x+uHD|Fi!&^^&5fS_6gQ^>LsqM_Z zU2C4GKYvj{>J&%ahB60L&!?zP(nhP!5LXs*x8R@dxE^HY5l~??%y9(`^|xT-?Em3dGEZ z$`D4p_ob3YKSLk(`&am|8*!LZ;y?01=a zObFYDhS)tH6EVS_eQdp_=~qAOf6*Xl7rXrbk@n{CP`>Z`@Ys_yN+D~dqQzDr+aPUP z@J@@ej0{OkvTw6kDr74vWEr$bWM8t)kS%+%%rF@HI@Vz@>vNBKf4-mZ^ZPx2J^y=+ z`?|0DI*n*5SI2M0X{t>}X$3y-s(TYvzpycYdH)#BTW^*<0vpe7xZANXFu z^2j)sg)r|pC=edBX>a+6Yd2`Te?R*z@ONMM>e)aA`I)f+OxcB#>8cVgQKi7Iai-?L z2lBChYF7@JwJY$38O8n@>Y2SRsMWl6Gq8Mr;Hm+lPzmrb%{H%OH|`3QG+=-Y%4^U7 z!t&=JO1N~t*yII?0K}w(YJxx@+`QFZ>bwa@r5AA=iLgcMYXeR;%3Y>7t6B+=!J&hY zelY;9>dop$bA6HFJed#!z~}nkuyYSn{iXss1vco^yHmrOK*b+NTwVdV#Bqv&rL7bv$GJIhiT)omh%=FJ^)*p@}Y^m)C zEH|682iiudu_11|tMaU7d#U!fra&?jRS<=5g+p+OW4B0fyYUeCL^!zHG8B;Yn6oM) zIbBxFX1&6tFeGYl&}$*6} zna#&a8vCrJ@6_RTW)!>IZAWu$(t z+K8CK($QV)11kPRQ%wc+rbs*a%c=m=y=#LDd9kk&oZVMv}g})v=yMqiBmK38tZ5i?Kz1&;OdOCikP#I*LWxOuF@c-(jw)q^;z z1!x-mrUfX0%AI5EeXULJ%^Ui9zztoYiOfTbxl)_1JNMF)6DUdWg3+lh<8B-d90=zu zSf2X&JZ1$LWZsVS5$bAZ;%4gAZ<1kX4m)XvFobcU131dbwb%N>mzuo#dpA0^1F@G8 zqEPux1dh2b@b3}?IxoEa^sl`b>sL!o3<(Lja&IqHOP2F1fXtxBdu@C-0cmVo8#|d)H9>M zQD{bk);i0ieMSY~2YmXzDc}UIq*W3yaaoLZN}gK4Epu{s5B(z{w6uXJnd9|$#%70Z zZM4X4;ReX6bgn6f?Am@{EY7RoK4T$Ie7OzO76RNN^MJPvzk8vXf?$82{=rl3yxujp zs*?rc(>$-HxCo}+^17MIybig=1B%RiXRCYLMsV-k(;p+tz7j`#nt4+lc|39zsOf%q z@T&j^B(YB?^RC)c2wFB1OQi?P)kmD>n;p`6k8JwtLiC-E!|PU=_$Bhh+9_-Su+5Xv z>1)LHf{EtZxrJ%t<9jnuzG(c59qSh>9guBhwjQjc z?Gc&4?BiuB^AydA>QoT3cX>_2ge+fX?n)i?=LCbKGxZ9`2a5s?lX0r7Cp-F_c98M& zuji>%z7IjArhvh=R6*xqOSr*~bXL%1<6Zz16j$^sY|wP&N_dyi6dH0;V`PfdGdYsf zQhcN7uB4R9h~m^0sV}8Ka_v*=WZTgjlzsOdC4ct?>wd8h(-iStAvMs_e;k-KH7Dl- z%J6&3O)A9vWS^HMNF3BxsaERjd@AEZTBRBK9fSaaud7rjwew;rik%Wc$V7{1Pr(Jm zGgoV;@^`gxt)O@ApDuN<9CUa2Mh6FduS5Z_2Z%&hew|6EpYipO8A9DHy?Ao)HL|;) zRC+F3$MM=S!WK_>!&cr)uYU#simBx9FIN9qovy0FtgND5UVFcnegxgvn#cL%HB^ic zu?G6$2iGbxvgPg8>{HChCb#X|q8<5dWw&|F#h=b)`LBWXbyWlXfmhW~qq8<>qmo{>j$(${I`7C#DrZk_oZ3YD@IY5qf7? zRO@WpA+shw=Ucm$4;Np%)R{TuCiOIw_C!MTJ2>~ARqKehx!Wb9v^?4VJ1&=rW+_wJ zBE@&P#^T^-G^X}|uN2<AdD7*Il^`O z=BmBaYSyc76Hr;09AYwm5#oSGkv6@RC9Y+S^B7@Gy*+#Q$J?R9O~-Jb>gn!j2EAZe zfT$vA@lq>(N6#m$lQ`RJ7ty=ceGPHH_}Zj~Y{IpXC$I#9TYo7@7De6F>lPHSc}`KV zUV-?~1;Jeao&j!cd?CtJjM7WE{2u70=~&9M&#Xlm+a(@?tC0sugfHIhLLLs z&qp*65|S{Z)4F%VdcvC)doJYucNjxOp-&i}>svt%>i-@-eqca_H5wb|wflfK@3d}) z%41QoRL_O1IHj#9YIef6DOhX)80&7~gDKSSEi?J80H`TMJ_(HP>MU_Tl?Fc$*y=8( zJ@UrmbE>J%1cSJDXGd1`{=t@tCpJE{YVqPJrhJRT>Je074T%onL4oNwko^cEbD_tV4G_6 z1ePJKBZm#v$5ZrgWmfyR8iKBJuQYR4`4M8oX@m>$UX`PaA$(MW!qr{Byi}9fbeM4X z{QeSyqresW3L1N(6r~_1$lo*|ck3SQ4lFm~LQ<{YGt+ErPQL_nt9qSSsy`5&BNO(K zpzySlSz%v`42cTa)PEkK4qMsOfH|jlngX%b=J5v9|3l2$keln~KWe8EH8r!einE(M zVs#en9DLebW#4D6qttL&v{fYoTTLJb?o$AAL0b>a9F@Ji<7EC4jUAA?JNmllJnL{y zOtq-|_iBETY$;jCVX|l+C+n|`yo5}i8(nw+U5gp^aW|9uWKudIpZv^J??UVPr-K@` zN_&UB)jAyR&qVN*=Q_vGz33N$PgZ7_ocpP9I_uy-x0i255gZQ}7Q#b-#Gj2`#3%K2S(8_W#(sr{Jc+FF`WWwR$K z@bQ;JC|mtrfV2`Vbh*G&RuWrlGfgK7BYw(d~V4&^M_p}4y_HP8R9QXa}v!)tj!Ob01-3Hz#dEd>_j zaoS#Z4)<<5%)oKrdcll_K28sPRHdYpWN3F^zh|!y^B-duzv~LU2l_9SiBC?bf5k2s zVM}H9QV)h$3pRd=l9c}(JVgqssPZfTTkB`fl~l+E9ttzv`%Cxw4@oEQ-B4A5nD;o? zigAcGZr=SI$p`5ORr&JVI!x~4QuIqX7hS9(Re^ST>*i8rvHp}##;I}C588u(;TiQK zeY;DSSP9ji2TSTk5QTa5dV${pH*x$TK1(Om=_-cUtA{ZHvc4c-aG^}nDip}WR0*Gf zD*hF}bG-F2fVpvrT=d&Ef4St=vr|o_#4`F*C{4lG;4M&?$KtNQzULsX^%;*U^a&<{ z?gGmM|C%Tu)SU&ExzsxA+=DbPzfooWTL$Qz1P+9(B*4L_=bw{t2lVoI%rt@Z@lHKx z3fA)NVaSA=eu=TIQcYf}#1`d=_i)Gh2_3}D)Vq>-jHmg{L}8nJB3$ z=aDl1@{;p7k{pjcS|Kx&bw8Lsjx2C@X1;ob70CDdQ~QvP*D`oN1LY4VOW-FKAA)dg zkKTK^mp%grX&5fVDbYoVitJTv`+#j+Px9IwA?9_Muo??T4wQrwF_8=gJ4uG;Vr|gnJbN5C21XQ-z*0 zn5wy~`AT364QkK6#y|HZG+IuzZ2+aq-)L1nXXu6!n2 zzcho8c?cB+T%-R}Pjfw%-Hl68P!(|OBx%2RH9dl?(~NuuOL>tq&sPFsr^wwWfDLy2 zcQFev@Iz`f;QyA8hXM8#kF98rZhx#?GcSW0yW*R`*TP$S4rFV&ox(ldASJX59dDDb zyU#ljvp85pfzA&1!b6Boa(PiU@$h zwhJD^)8Ih&|J1tTn<}8RJE~Z&zeeT&R&f6qQN*3Quk;>J)H~b+G-fQ6r)Pt-RfcN` zwEwpR2qYmi#%b?8Wb>tY|EG`zUL)ws{z%vVf2H^Tew-pvdOigv0`f@j;Z*T@M+L^E zeWB&Qvlp7bv~kh=r$^_fe9OUHQ#TImM_xX^UZjL{1E zmvZBltkEVBkhoutf>#CpQ;XYGyYYZ1yesIJNmGoEv(s1JBSKWFyEc9%kG;j(UaLWy zzhb9ysz0@>EioPlD{Oy2gWBj+xmLk=(i_Hp|EXv1!zBotLg88#FOJ(* z?~Qb1WuT69WH(A1JM4D&?Je6i?z;j%o^WAo)}}_Ft?T2+qWJ#V{&Y0T+D3s|(c}2k z8!>3bBwXYc+piw{w{q`?a%x$AAXzmksA;E&dU(E(KM1nrlsv%TNr-qR?4rg^a*^&6 zmlb;XIepi~4CO{NcAa~BAyy+2dc~>AqYl(+-QGm4C#Dcc=L=~$MX5;Fc{_EIMF+cK zQ&a~38~-+7_;{0oDina&zC{4ohnBJL(+L}(El)h{w4+7?Sk>D{`bMW^1J}*`RZ-)O z!bZ4lYv*>r+L=uYS-EvH=yk2DqR3}R-yXtO=X6^HMvM^AZ*}-!iHJm{?*U7>H=ylr z%%0tgidfenr~^gZjtD-ok)Q52{xcv}QpS;jPJdpbqo4v)FvCaYQ?Vl0mIxHC*>-a7?kPt;BJGQB(5dfX_DNDA zpylIUg+~dPSCIm?l2^f;Mz{a^SEX*~aM?RsD{RH;vhVlJMH}a4uDo3+qaanjU($pM z_##foTa+nFbnW`3z8MapdAFmW%W>Qp*A3M%u6g}FIW478KBxoF$~NR7arS|!*S{Wt zWaf01XuZ?bQsm+wPk?}s!NE2&m4MqrZk7)A-DSA5z+CZyuX2u=MUEd7K?{Y zB*+0+%mr3Tx9NffG>rby;{$cG!D%V`H!efJUvw_QyOmaXXcxd2#U201-i<8SC>xGh z&~1X0)-(k`-+9sC8=qzW!OTBnB;;O;7Jfftk-ii`6UFzp_gC1!RuTQoR+wlFEtDHEIvMV>)d5Ff64=FYvqeasgLtI8%k!Xi0d=e&AQ_5h!w1% zpe^FsXbjho{`zxlmq<>x2ti*u;K%x@u7d8Z53=}*`JIvCWn!A? zk}bSro#zwV^Nnu*6O{wtnkQ!0Q~~#sDB&=#z3EEbY6lX$BW$W|_XibUJR*KxXwn{c zns6tmNH=ED=N|Sf98EF>4XBNiLDPyHQ1J#DE zdseMvJ;9v>q^bA%HD#Pz)3FsErM#U2-ogMbG>dByZ$=l3G(PE04+TzFuup1Ft3uX*PkLzsiV?wU?`yev)EZudGU zXtqDhRLoX%rQPD;v`>81k|?$9*c6*ONWH)5Uz2Md!d5PP%h3G!RSj!n9%&6zEleRo z^kg8O9|giPr&nu-3#WNJc!03{6GvG*RJPpgok~SI&P)#(F&ArnO?^)Fi1#i{4fjoi zc<09fQThtI7pvIHD)>mayp^6UzSR1=cov~G)fBXnCjT@?T!1gvv}a+-!Poj8tSc== zv1##W?~AKHH+*W);%Tc7G&aus+>=#hMV2`8MSj)PCf6l_H0S|equg(L zjQf!*+Scti-&oHJF+KQ@vSHf1`Z4)sGVAt;Y}K%@)J}#Urc%T0TZXJfbgTmLmCAFM zqwM#|1>tV!2gyyR;UL8Tz{mx$02aKq+5dX#f*sY@k6jkS#OyJS~rU@g6m1%Wj`rTM~~$wJ+3L`5ncnEoLEE zX}~xZ_FNnDRSJ9Q^0386Vz@im<|h2h1QJ^*%+TbT%;5IRzGb7FSOhz)rMy_Ff40rF zYsG~8fwtrDobakkZE~`%f;%G3MHQ>mNUKX=pg)=n=6x|9V23}T*ASXLkuxi`D$`MZ zUu6jgfGep#0y(pvz4n#uzz-7OYYzJO-df@(vrrbUISv2d6t6l0E8cuvi-yJkr27oC z)H22HSVg{ZalyqsjLYI8wg;}Jx)?$B7fv#rMI&!S#^r5BtTvqL<_`oUTrUt9^2`_E z#w1)-%t9&g$$aF7L%Mk3zMNHOrG)~sgSxxCt3mhqs$`^f9jQ7y>Z_eURWQ}0>Zgx! z^H0YkXPtjd9-^|U>F`|otCqrVgpTj%xo)}!ucBDJf)k_OSL&M8mvaH~6x>UgXAamq z_C3?5aJ_N}*CzQMIrwc{rz<)KbH8#P*5h+`k!hLNR4EWVp1R3wbzigD`=1SqW-lkM>cdl8TD{bFt-8O4 z?V27q(zCcskY0)?UC^RiiN2lmTajbGv$ISQ7O#--6ol?3!Mvi@bIM9lAJ7!#68CHgXRq0mwT4ULzftKBv@yBdNeP&d%{&ZuEEqoh|Y zhu^)6ST7jS_g%=#;OrV|=pd1IfHHve)hoo*XjB_srxK%t=75yqaSVGl3UZnXT@==D z&0tCgt_QE{{N#akNe8hz`1}*TT`&w0=ufhhn&!2Y{I?LZ6sN0B4E_fEkb?~Rj89+5 zC_A-JDlExMrik&S+M$SUt!SG3sjXn{K0w0ZuP5@YMEB5s5)59$KoUBdBL(zd* zbY40-KG{sJ=f=^--mL)Kn}v&{e!P%@Y~|j_d3e6bM?2izMfnF@VnLfnZdj4Ke>EHm z+PqM|qxSpx2Gt?I47C^9Wl`%y)-C7-IdK1Z^Rn5?y(sj|mlO+iRboPFZ@ z(>qetpVQpuaUs;6T%~K6qd9pV);QCXyB;G-J??!KDlqlxk!FidWD5ug^!d!XmM-P; zElh)Q#B)f7vJw$fI~YF4ekC2{cYR9;UOwh4;{nowsLKAWB?EcnKt6?_C6^lgwkeWr*Ew> zZ&DY-k%hV9fx6pt1YSV>15hpE_R$HaWyC4yCsyfpf~I8ANHx3ZCmK9(-GUfBAJI+$ zI^WTvKO_W4BdnT5=bW$JNRoBZFG=nE&-w6y@vqgMI$|ppI(p*F8AuW(+^wD}$XPEL z$GdeR93ksF!UfEc^#WRQt2Gv9FOT4eFVLySj#%}l5vGB3s;mAjYM(^$cc_ z1jp16u3)yct@trZTB}A2?%mdu(rbVqkOn`e_9Sl6S}b+oXQ+F*>!9757T3=Y)RjXI zL4gYZ=yBsdx!XX^uqcK^cpZK6LZktBi5^X-T!8KJdSaQk0HoLJ3yc6R^+0=B&}8uc z9YElKFAEDiK{d)|bo*AwQTQ9Q5<^UB&+^-uGDk0Ke?l)_e!jDoZqlAb<3}w@mHps+ zPXEDO+Rqo5h6Gp&bh2l^XUv~CMs<6xjGck)l4<%fA69SF2$PO~Mx@qYZ4()gcFuRV(&8gW7PqIz|43EcL9KOTp5_YP!1Vx4QQ3(X< zYjMnbz~Te-2=<9@BM?S=fXT~T`GP<_2de+#fT$VVY4E2P#sN~e%y`1KH6YB5h?oPE z&oO0upql$yeuM<}D3q~c4_IxAgYuOgcYpy8k^c}ELIBpo!ArB_Jal?j*M5(u;i&Ud zI~zfuom`xU3;xf0O&maDeESk`bh!a;knOjsjm{{)c6~;BGeexB!ohR&LEEYaKzmff ztqOGR?cQiZo}M3FoorQZe)_b*3UCNzeLB5x`8O8_&H|d$+fdKnCyw_W4_AYtGB~T| z-|8dzFOV>8Xf?oVuk@nQ7MErzzFD0 z#+U`FEc93vU%pY~H9*!`@Bx7?1^z`Y{)cm5#z5P3xRy33W_cNONCwRFTWL1Y z=~J8jmTNOHDKd+Rbw%D~&!e-D_?ULqaQezurHMA_=qK`S_=2*g(yLHWm_CMef5=f` z2~)a0opW!U!u`o?l@{!>su`amvlBP1=CYIh3)Xg6j?b1eaF>I9^lxJy{Jj6t6NH<6 zUofMDLHUxO6zHyl-yd9otAx0n=w|iC3D?=P+bMCM*~x%VEAZlfIs~ILm#B zB-^INKGT(WTKF_i>r(0OKv2!jH_4HX|IJlMB~Po3%=KoMUPt?p=9*tTEhHW5eGTWg zbpQw~X37^8DETM>o!tOJbu=8=CogdVh>-rkN7sx&G$d#utF{;`7sWyEg6rLntZnIR zB!dy};3;qP*i*5`sp+Bf^dly2uY4WY%fE$l<9=KufPSF59G~2-6(;7!5Np7yUmA+cHfC=2u=^>Hn6a9;e6NK#ZX$tP$6W>+zbLhw~8FLq7B9w_tqK6 z)9J2{^{zMFV%Tmta~FiaR2XwT_-6Xo8uNwRSIWvQxwL%%y6_6pN6QGCq@w|DU2LZ( ztIRg)S00~z3W`{rb-8C+JKYOpeYfSn2WMd)-nj=r7PnR72h#e6^Ur3al^4aJo z>)df5KCIPC4)45*s^W=t)&0Gp@@!`~eW@%7)*Kgd^EeWzwvg01h(j*5+r8`4=f-9s zSrsxx_1IFo@2L{RBSMW~wde5G;#>LW^kcL@_JGp14QO2aydx#@`O>ko?lWYjO>Aq_pFUDCVUqWkkGZz%R{GDoT>od zUd*j-IO#ZOq)?ddd`&lJgZB#0Cd-Jp%Gibf2P6I^Iua(5VMlLm>wMmoWqHt<_28f`jbes9brt^y~71 zYd0hOzR6r>JflAyo{wF%wyVt45u1yc^MPG;KK;*bgCHQ$Dsa&~Y^clq`2#=O+P;WG~~u18Q@xAUD>^zT8ALtid70uj*|Wk`KJsQKkDW1&4GX6f|j>Rmd34MLMH4n`^HLrQ3no6p)8f?Ut9A*G51L9 zI!6Aj&kW;SzBedkHuMbv$XEEzmQ=JmxfFT>}4@eM6_U@RhwaH85B~r+#libMlpQUy>125)y zAu47vNApx3Nym-f$*Ge4sX&k`R-sJ>5iUoaLAWSV_rP`)wMe87?9LSmH6s!&O03=l}3HF6H$VH@}!tS%Uow0qjYYqN~Bq<=sQOPC=$uN5>;X zCwAxM86ZJG`=hz%pe$GSKSgYlY804V92I%s7GvaFd1nC5MndX4$`fn*07rdQrJ?oi z3xs=PwxpzqPCL8%fy4kry@~BoHso#TSfvtEkMqeR%TbV*q~-O6u<6H!?CtMJ>ZPM`02Edbbzl>@%aa26>!mPVX0^_J0d}f#T10)}|f$E}G{H=SH6M3_wQRdXnd$ zY$vDfy7t|L=n7_As@_sq_6wR*)Y7l{(a>I1o|8_&7rX98=$@9{gz*4w2q@sK169?s zGXuaB-tvdcoX3daZhlN_@g5~9kO$ooi(kR(z-N)3zdw}Yo|G)Ka5~od|9~`%+M9h# zZzEjv!sTb>S}?_?AXWLRrqnaK97mH@D4T|dX9Th4w4Gjf$VZ7Ie?U&>9i5&n#Z5>n zjbQoLxfJE<70g3?d9PpYYOcz{FBNE2M+sG^pKV{MO*ro|zl9kno@CWlgtVL*cB2n% zG0xe$;j9z$x}|h($+=&5BL18&B(|TMsE};DZL8BG%Wf3_tn)(|J|~#5z)4BKn9s!A z!;yFYV!e8GY&h>CJ-Y^)B+|Z)(U>%pn$vWL{w7J$0@D3ka~y853#F?$=*hREj^+a9 z^d$=$%6mCUD8Jd_YF}Lao&*eq-g*ab@NQ%VYzHR_ zkG+3cl;$KtNu&L*uU!m8acsXF}>~Q_l8BWW zar&u(cU{}ajFNQTjwc~%_U?e9>dm!&N?w5P0xEUtm-JldAcDM12zZsEed$r{F13Ay zXD!mrh^8=R2)W1Tss9&c+D+s$QbJeh>>OWiJQ2XMTxp}M^{vCxot2^Ih8?B$@qIy6 zQ9|dwbPC!TuyHbz8!6yZ%QrfkW+gU8V_u`G!w8`k-jQkE$jQ%&MDBc! z!8^bPeUSnMb6fQVMd!p_P^tVDoI?qvMMpQM^#3>9!$<0fR*H&*urCwjE6@NCUZ;g?>+XUllEa%YIS z_=b3ou;F;oY0F=E&#CILpW&LjXCUV{W^+f^)`~4**2x-7-c?~+9da=HaVr&i@E2@H z0*^Tz==fWyvV+}zYCg|zE(-v?GF|8t2dpFFbha%}juQ%+HEEY}i=H>@Tq>ETcvdLu z?V15xO*yQFySt~c9h!)0Tl4=WncS;CZ6}vxvBByBn2X=g{c{siHahsb8&BI)KdeaI z76{DxqSr51)E?*u4%`=JdUK*deijyXxyG|cR{sj=EhIUrOjdTj6{T0XID)Oh?DqC; zYOc~mH*}PJhu(#Lqj+Izz0gKiu7A8>Y#RVnseUtRylp{QfY-H|asnEF2QsDrxr41b z5JfWTA^uWXsJFVFwf*&HX@-f z4a?O!{ds-{YpCzL1DG9kP(lFYA_TC4-N#?|sMX8cYLDOmr2&U>;_#Src7>*(pqkPe z8uzv~Lh(FV^bAO&HuuQ*x(3Kr?SD{@oByS&0IEPxpnEMt2t*LGfd173hyw}__+!&X z3eQ<505N%WS!tX{ww}vOmQ$gK|COfz0+0X8k^rY~kkA*c11bu(a8O_aFf}P3CnsaA zCJ;Z9`6w3{nv^E8U9|yhBv45R2Q&h%Z!Q4r*oFcAm4-Z20Ei8s5UvCv;NNef8OzcE zTdNM@&*ZGs@VVAS=&b8>H878=>z^OnQfU$jld8!L{QvwxdFq2q{R;O6EA4ZImxvq< zPuB4RV338%9}37G52XWdwG5zemfo4rfPksx9HmRmSpe~DX(^F8J`eYk`tD3{&h0Hj zisDXHlmXfYqmR*C`4Za=VPRIQ8&BVoEgs-Qo^LFJ^>L>s_(}w*ki-p{pT@k~PZ!WK zGzy$8){7pOqg<#0n0S{skJO7B`C$bZ%ELeFze!~zU3(n42%rjc<-q`=;N5W#uRBXy znnw6VWp`XVw6@hZ#Fk8K7~K7te?Fr8cl7=}0v`(8UD@BW)DML%`K0~{ncgUqy|U6; z>v9L+tsf78h-ohXj0qqh>~6HKk=fnoq%T8i9Mrjf;;fl%fbTg>!)*V9v%fZs`MND! zLV69h3IAlAv43xd}YP1Ef?1m0lLu{&^9&4oe>CdKD>Z(+2R;B zs-(+!GWm$de=jJ9-Q(9Z+;n(s~0a{o{F4ILzWqt7^ z*qT@KDrYHP5HB1DDoE`9yDMXjFYD?a?z+X3iM->MtnVG^XaWnA{ZM-hAnO1fs8Rca z3PN77ui&4!IGi6~b`XDpxyOSi?1!E!KdlnX0}xjSJc!Pt^IRU8J~FD!MA4>`I-?_AvI zbZoeetVR2(v}il}Nw+*u-aPe#5)gQ!eZf}D7Ww+%XxtDE?s{q*P0WG`3qog`PRX8p z&s>$XC(#BDBl(f~Uam=!Ji+TyRh{tR732b^B;t@2Zu38j=$7|zM-?fp2TMVhijEg_ zhL2t=_e1R!kqIjQXU_iQX!BcK_(^CU?xibN{(R5g$jp}3xE)8TZ3*D30;HEK!Irq( zlcB-wKT$FlJV@yv?cx|?8E5~ExV>XoV&Tb`0pZr-Ai?cGbhHVaUgH0Aq|Qn4a?mY< zM1XgGXpC4(%_s>B2*iih%mt-JzSVPwx!zN`^bp!bNLf01i7aWa<24-F*%EL?%V0yP z%p5<4k@xSUas|zVQU&NKKwizcUx6a?s9mmcRF_brYfF21`6rA{1tKL`)Kh<$ah|w3 zjXUfSS@rPnxeX_KDL<2-DwE*pTq?sl@(>*lzjbf=RJD7fSo0IxpqpH$6)0Pw#g;(@!fg3Po4}C4X_|8)gwEto?m4#M|&OPU2e5KW4;en2m_cK+`kYU1VilUBM@CUqb=Gt4j@Z z7^wISS#S5Kc&bGfJzvK+K6SCUjnQnmj(i5F;L2D>w#` z)kVZoQnSa~gFe8P>UFhC^B$2QF5{w={QV{y=`nnelNG6tL_}wG29CK!|I!1~5`C(G z9sn?6<`a3V%rL6k`;kdhS45*L#KiewZWG;}XsF-wY}!UkV9#r<##GBTl`g;hppLR- zh~+J7XK(DCjmH%31+7PxQ{%V%T%u1i@BJ)1>}@LcR~PbYdiNA}pSWNwL~HHC_s(!w zSAk*K9vEK=Ui+2g<*oaL^nH^()o{CAVb+v1IrWFZQ5;;$hFtWx5EJ`osPkdJ%YBva zE2K^N1_+agrg>kmoE|IIyR?4M`uN~1N;`7CKP8nAI!x}y;A)+_71#_-P?!3ST9Jh0 z39&9pn_h( zcq!NMNkwwW)|Nn?tEvtM)1+9sB>if#TJ4Vs?X6N6pZsLE^i#LuI&fl;ghmC8`1wvF zDrX0??W2zjmPLhRY>1q@Jdqm8Y}2v%d!Mc`q!L?i!q&!Ci0uc~JT$C_aY&IH`p{l= z;WqFP;`o%zW&3F34w;M?GTkM-15ZQTda`tUeYrY4MpW9yZ_V*g>&qK$3$_}Z=rbE< zr2mqhd`?V8%2P_~PBGE3eXIPNblm^!nH41;(<34L86Z&;DhQ!*%&a4$iql{bL{UsT z)p+!JQsjplU~61?Zt0nmKV}Cic~kT*G((Ov(s?mDBS%+WgkL*8_8Q*@<-u}&_j`P$ zky3Y-DG~+WFV}6jNE756nNPK182iuyxJ%6DHfw-vs3%fLL&BA{3IRwXmEX<`$6r3T z>{%b9bYHQOwjg24L#pvr^~N3XG^sXy%RHEn8?#gk_X*$Qx8Pk_y_7u9Z2*XN_djF9 zpF4EKGQ$OVnoUlERDfFG(Q*wa=9x^wze)}}) z`A%QS&HK*gzpucz9oAfT$Dr^DCu4rts=}d&9IsfVe^wb%DV$yV0qoj6dPup&f>ayW z69r5t4-0EkgX55LvDh0l2+snHzP?q}dEN#cV4{Zm?d22yYvgS_YcjSyp%sg z&S06OxEJY14!K^FG6GuIBS*)dZN8wIyXUIoA!e74Ojc07l=fA)lEXcS&+LfMgSFGu zTTOj%+CN@3Ye44$Z@ifhwSK(OhIEYv%;Adav1li;&s zze?enulcy2YBl>!j~icE>rSYCVOE(-HuW9sz+C5&xaqIj@oehuz&oz*r=|}D-*8R3 zB0a8_zM{WGJkPD7y3i<6XrSNBgzKkQ6i|6(D9VwG>3IPJ>#|Bs&BgL@|Lf$4pn2|t zfDUcnZydK;ZB6J=6jDEtuy!2LJAYUr<}B~VNp?)h+wt>7X)y{0hE9M8<>__Rewtps za_JF#YvR18bzb^B>^i&f`a-ZXn?sS2zF66}F-#MBCMT5^A_DqPmwcoDfkKKbw6>qOvtW@O8zDU(<&5(aoJLwcvxvD~|Cq#LCb}58kDF zDLzvxEj=u$@r(n*&3RC^Aq+Jq-zbgX<_~cS=x&NC_natYPn`Tlae1{m4VA@ATD_C~ zARa}c)t*s9Y!0SPg`%*xC?=lK=?jFxL&W-}GrF1Tywl2hasrD<^8g&tDf(SsPjk-Q z*$;D3dI{IH&qF7H&jR`}oc@tsmeNw0C)PS&kfoK|#A9tk$b_0iYYNB3aMe2BnZ5{d z&;A4Oss8T&^uZ&MAEaUJxW~94MycEFZN3m{-sC9R&bZznT;^ zxa0~nJa_&r)3~cr0kjv$Ktg|c?Vb zKd&1OD4GI$3q0icTQ~}@)Ox^%eeK#Zv5c2neeL4y<0QXYEB4ezGIBm(D(?*0ndDzu z)|8C2CXRQ$cYRd3V)a|rf$r@}dPA-En6gx(o4Cdxr?-Oia>@MtaRW9p3sXW<#61CH z$DLHXsVND13&c2*%s{&%BH+X$m33-$d|NjcUAe!gT8~0*#p;QdE(w$0cBCR9E}gHd zMGC~BYMlaPJ_i--=2ur0;e}7}q14rrqz&@hgz6LRo_+g5sK~-bQ*CF~(p*{8)?JMH zRIaHcrM_t5ViMPOL);cwaEf(C57VOtYB>bh1Vj-O_`&>Z@o=*3D>3?6!d+L4r)&R; zXyltW5k~}I#uw=Ax?Z~@w961hooT`;5v|BdvzsEYbS7vGx&u-lqbXa+&)-3SY zKlrvoZ|Txq{YTwk>@$(D1_LTr;yy9;nNTO2ew-LU&QRWF!+>h20Lpj1Z9YBWph%wY zm(3ryZ`7+5u zzd{z3nN+cdr@rjaY8WenbU)tW|3AU;8 ztM!b>4m%w=wbSCNMg951aN`I6m>H}U`n@A>4d>Wi84$`#n11UN^lHDL!;aveHmHm5 zMFgrPOYb&gNlE+JujVpGg<>QrV8|51Thx}tN90oDsiE2Vd8V4gYV#Xt0f(<43|Sm? zV3*iSq~u`P%(<;g;oqtI2ivjcDq4zry}OQNC>1ZHlt0S|h%?1OtwSHzA^*VvETiTN zs{6O)XbgX5k5Tb$g}!#+7woHRwvI3=v@H4TF@j@mkqbKe&RrPa*LC+}M?Rodf6Tp7$6W=e)zJcdt?fZ=UKQCs!&t+nr4NV7 z*uS$c*sN<^Pz8hby z`b2Y1WQSV+1H_`%P%j}_gcq~LIsG$zZd#M(97GV9xEY`-d*<&4*d(oVxG$~T=B2+2 z!p+yEL-)1tdXWWLH0pAO+tnwQZjcJ9ua_CH9Yv zZ?7)xL;{u(1OYoal2|zMJv$MHYDthovp;+;k2L<@;E~SCLpji$^cT%{Ofu%FDM6}@ zkjObG0M=d8JtAM&01>82!!5labg@IOQ1our9o#n`UkPN9DSkL$$Bvp;??ZrbTYy~& z=j6Oj2z=#csPZwr6v?bpmTeA$U8r0}v9t%%{RKRD7_fpZR5$A=1(;Cm5P=LEXV)dj`4N{AG;v$)3#sdW zh$#OeP=C!y0s)zj2oGStYint%{o~Of2*h49zF>HZ0chYKQ%S!nQs8ueb#q4m2s<1C z(O&kLY2=m)6xo279WWQ6?*JSJ?c~I0x~$Fdsn?ff)jA>c9KTOl@$yus3RU!mz63=R zJrmmg>6-rFqP5C4^k_G?IgxV@WRBnlDaLf#v`WeSkzpN71Qb{Qv~H^A3Alj*rMC-C zj^hX4-|fO~zEsO&r>Vv0Zw32>J%fkv`+~?OX``h1_+vJ;~`XnY-Ku&&=J1}`)w>8^U#1)iyoEK8In;gk{(k=X{g=n12lJZO zbGfc_&UKC+j2h`dAPiW;SM%|&h?GR4vfF@13S~J3;XtG>oo`c=B~v1hJ|5sXybGc0 zCtB<=xOC(Q*Bk9L?fVTx%E}pTiwgD{@0s4$ptiXv=DnHuFFHrJI+tM3-o*;8z_R8G`WoA{Mzy~0%$IbR zy>oWLq|XtTD06!=@D-(V0oq<}12$D~T=p=I&}jE746!VWvnKx1N|c%ik5F7tF=cP4 zw%!~N?KbE!`s_@D5~EegW%#w$Y+eO@Sc&WI6?G4ViKd;#Pvhq-J|##y|*;GO>UTl&25gK|2`(?Ej^kH)U4dJD#JN#-b2B-7oJ zx=Fp5anXspQ(sr(@IIgkr?(P|3mfKCX+9CTN_R5wXXa)lo9}1=2*lg4d#Qjx zD4kPt6 znz2u*N20^h6Y?Cbk+clALmftWOo>y;DB96V_{(5S?Q0DAHciE(ltCzU@L80@wt5c> zggp^#uam1vpOLLKtJl$eB)2E^s?mS@^3!KRFXrP z$c0#q&mV+CS>9a{t66iW@T~eOE)U@Tv+A=kF^S)_P_qN<-oyIZQ$9keubx04Dx}vu zVU$ulmwa`;o?>+GuoL^@r9+EKq;yykz<$(?93r0TRfJ*u5p7POxIK9O4 zwf4y-#G&b)LV~x(yfu!;r$5-%k>Y}!(E9=N{EQDIo^T+V%~Fa4X-6>(rh0okCZL}h z4~-8|`tCxco|Bu`q}a@AZ1pkh&RWGc)T}ka6T3-_adZR*?>(#YwU+c1r-sB%f1-rJ z-ceD9OBayRQZfCh$6}paBM)Ltcd1&vq=nuBV?5irQZ)Y~gnS7;=YjW{ z#=B#fOE~2DX_d#UG;z(+=a*Di)v@Kqy5{j1p_dPwh|@4hPg9{~ zsT(7b@=2E`z!c0AoYH|;&qstMZIVM+9I@&ELlC zHHu;Ih$3>r()T5IqdTu%281KQd6zNh7Zc+)qAixab#$21<(ITr7a@yL{m|kFzSFVI zh^sdTQ=;Ex7f$g1NSja3Ws#Zl+DYoW=9S?`i&B)k#0y*_&4Fo{;q=lAO6X4V^ee3a zr*sbm2BY@c_%oh%}clD{@t9q{tb`r{MPcS)pA+LrIiTIfU(I9k5z5J;plb)EPyVl3vrw zOGc$DM&q}9#%@JZccmYsyY;^xH!?8|9^4ZjcWsfRg7RD#&mS4`uB$1qnGej_ zIMI$>H4g-|b5N;C)C>=U71B#9@m?ZM4sL^HJPD;`nJ1SV4)yQNe9emBSvYQlTUAX) zgiK&%_&Y*wHseO#(mGbw6^eVniF{PFk-B^draoSbW$PsyICt|pA_{DoDAtk^w3;hN z%xEXgKu{$R#a)fG$lcn$FYd9xow64%;u@m9Au~$r0`GmMMDtFHR6Dl}I^Q2e0y^t5 zxlP{xU{YD>uBN)p|Fo$|ARW9Tp`<>pl*@xBPV7(!$RIeMg~vYCnQz6&Cx!IS{-W-4 z3f+<4>~fUnteCTq*VB8ORjIlrYb6O~K@s_ZnAu1$k=CzjMV`YrKJz-4lW|IW?epWe zHMqJF?4tiEXgzxJ-U){Ue0h4A*l$CpBG&!U1ei@by|eMvwKr*9O-mNlaaPr`Fu7SB z)s)yJIkvmg%HW|z-})cW*C(KF%w1-Z8{{fGXM=gJwBPDd??QLYtcvGDp&mXiuXF4} z)L?tlqrz9LSg#+Z-Ey3=<2k4{R;mdOdn_xBN$eh&8NUVd{;B-~Mal1A?CX+%Veadg z!#t-VglL9N`qy$!BZl^4t9jY=d*?oKQmMYq$_q+wSBW+DQ^>%w-U*nR(5g3$K+LJJ z^U1<5FQp^Wm*0=?IA;!za#;30U6WU2HtWh6>mxZe4)0OaL>5dTp=vQABhVd5bzc-kznNe-vCujFdHpl z!fLANpYglV&YOXuVf_F@)4~zq(@9VCYHEZsXJ8Vco9z+QcZgokxkw=C*4R~B=aV>U zW27*6PFgO*;adacMl+}EhjvRzT_3$<*ryEKxfcBO;}?1ECy!bp)~%>2AJH$+^22ky z%^&SK5zVkT2W*QIWTY?HrI{8fU1&=dUQ8u-p4}4VIU%ai8RE~`B{xZ4JyMjGwt*e6 zry&D)upI`AYZVI&=LJ?X>B(q&3m;=Ew7vWYsGCCUJy;z(6v=f(%-2@c$%kW?QoyTy zT3K;~cH98YXBR4Yu_y5MBFNAElBV;*{Y{tj66BcN8=&uHlvjMJ#0XAOjg2spF}xY8 z9Xf*3&!7WzuRG4gA!!ot!98Rhj7jUa@$q9x^n0dLrf;2NpDoRabkvmVk{x!k5}tuu zC>S$APGYO&LDX(NV_XT*$sE0v;={U;cP@T2Jj4T|Cxi&qvJ<(spp+v2u?}?~l~XYR(;w zXVCCm5+)O`%X(PCXL8G4Af`)sk;&C%cE#mu5A9k;P?%jW`hZh}qFfdH9fJ4v&C1!j zy@aPT_ryQ>uUYhi%l-YmC+@U1Q!K3!b~v3vSp^QL3f)*1n$<~fyns*><9c5_u8L^) zbchA>3nD$KkQ%+qhD=M8-1||>lt=z)ri7H((PG73%g0)>vb}>o9vJ?NoMB`CTl*fJ zJE-|e9VD`eCNVLn1goa>N6ru-FvD?JTXv7?h~Fi(qgW3Z0oWmS?wYH&XapPNu&B4* zrK0pT0&2%cRDZ%`{6Kn z%j}RUZSGFV#pCEbytno7r?ho5P8AX*(cx#{-7_N|#HN`dBxS}-;AKg_qg&T;T9t>D z@pkPq0FkJUH1onJG%A;Lo@6Y^y3S*de9?TAVJigq8Us7qSEvi)0|$1VMhe|YNQnoD zbvRTxW)rNP9}SHcqP>UT8q7M#Y7}OdCq8!Zq~ayG{IWF7p0;GV4|1&dUKLzaKfZMB zo_yb37cKT2n_t6+|~D$It9~s)+cRhR;1Nq%z)VX^z$$5wID=iWBbB6 zMFgV_p_0cf#+QSUAsSaY0?+)Y(Y>RUmoQJaHu4Je1*lJ4)t~Lp4w?$-$Pmt)h$06z zamXe;v7|c_6GT})Un81_`(DvVI?MTzr9Q~?nKq`DC`P#xmM4KLl+Ht%BK5v})ex<8 zHsb>WAG>yQb&K^zZ{@z-WC2DKgvyqo8TW~cKwHcDey{y-?jwn;WV>Q6#A>K$m#vZk>G6s z=zWr(>_i_S{W1UxM7QFcNxwRpRWzqIL20DkyH~PwO7%7DD(qlJx}sOfB?80UY$Rfq z?x>v+_?9%EUOziG`D-a)He@OYy}e~Ae`>}eR5J8Zo9`N;>Jg7=$f9A!p4c+%;beSG zt+wyattZ2;lwuqY`@onLO84Lefec4)!7`TMpH4>*Gh^wDndO=>vhwjeJ0x!z32C-{;Vv&c-O8(>+^*-`pNhtD`r$EfI!`oF@VZ;REo(0c|J>u4;)b?eeb1WF1BZV~v?X@SZqWnzZxpaakyN>Mxr`KuroZNk}+{h&H^N$O7>2LPm6+U!SH-ItX8Sc za9LQ0G7qfQ+Kne^4tkbN%XEW|43TBq)6|?r^o?9Cec;OVzHKhX;>m>91Ae{^P1|ZI z)wGj%QOTGs8!!Hp)Ge#7uAzjO#+~l8UeA-MX?>_JvU5qvWu*QnN0Gx`*Do`lr$9JU z`xCs|J%K_VbefW<9S1TbM)Jz4u(mZm(X05Ok*U^MV2ldvxHiDMT@{l{D1UW)!1%Tk zco_^v2ltp@u)7#X;zq{aKqq?3zIm)zY2e!`n5cBEE89$9F4Ey%JYHrFC-4|v|74Jn zO`0XsNYS`1=Frf5&nAg=2dNES$iyv?suJ9fN);H6a8Y&vz*{PgeQ%$OJ--;S&7PZ2 zPV05|^d?)_GOb4I-U;ET8|i5s7_t??4Y5QvKqfIV)6XW}#eICU`Ad8pEIC7A&SIFT z1a>e_&r8eF0d9+6L=czR?epRK$q_6r=u{Qg!_|4OiI@TWR4}zu2->l5Tq5+tlQloa zb((yPrsH6@F0k1ut&0#ehb>-`?tNCGE=YTy@bG~#)zyqH=%SOMKfmXE!f4B?PLckT zNsWvMH*L?7`Mi^6_Ho?nV#8!Q$N*p?Qhwbwd}B?e#{z-Y?a9XxVaRa?TT^Awe4_ds zYh^#>)!Alg$@v;n3%BuL`&1mC@*|%MTZ9R?{+kK-ry^3PyLaqITx^53dsbk~?_#7_GvzQ1{euo=LMq zg@QnnDX|j)tl5NoPBXhp9PpyGkqB}LiIOxUBb#R{wwAZ-Fh=_1==OR-bFmV>K*mTM zyS2*wBb2&(eMJG8Ah4=ERZ$g6Z%i#42iYVL3oI7pbbbj2KZ;`vIFeZ2%5r>@iz^4am=T<7)xcdqvjHR)}rB&jC#5 zH!yEt)@O2voR6pfV8cy@PI$fXTd01ObWDw&AnhcdIm`ywtV)yF{6zC#&*l4P>Q+uH zJUlJd|H2uv(sKdG3*E+rtr2?CTyMAm3Gl{v9UTT%tIFm$Xn(%V>{^g81pw-5L6`*H z>1#RNY{*}#x*ed&Z+zH#RVkiwf&W*p8e^%EXPyQ!?O9h}ku4;-%?38C*A|iCqHL^o zeeM`MMk4@Z=OuEX0q_WI_w;-#6nX5I4|01zZHLXm*Yv@G7oIuHR**J&t&4sE-S?LAjP%uNykh_Ddio^-HO@wxWr|Rv z^}8&t)W_-$+~TVg%U1dCT+SQXH&p)YntD`A&c)rF-}vu)##S?{xgmyOe+>x3Yn+Cs z4}aT|T(vYbyXyU|r%*F)pFyZ;zD`8)->&>Mm*l%x_f7uskU>TMlPNO@fD zazY@e-|Yzihhx=g_sa1$gj~il=vo`n`+E@wNa^Te&F&$~AyagyeK7|VLTR5r9L9LcxFkC?WCS^+|ErEEuI|`P+?s;g-coddt$+?W zOU`ZPj3ZylKMUI|Ddx++KKgu6(}!)gek_Qk9w9m+H$45Ji*w^)P-)#H6(r`T_e7Hp zn-XY$ijh20>N#aHz8dEsLhH_@cz?%cL4z^#Y$ia8{Hh7t)#y4--1QXGc?|oRCL`Sf z556bz4zFq=>6ECKL$DY{z$2!4voZgmzgdQvo(_9NYG;ZJc!tbesXb%_TDE zV`(yn(dT_)PlI+hYH`|TF=;o%OdFK9f4QQ0W|k|Qj+jxu-Fqr;m3qfCm6}eR5$W+O z_`ZeY>D7PYb#E@_@pGPXv|4B{tf0EqMR-Hk+Phh+BSOONLd(=Fi_J)>P3z9 zCfZ||>>=?DS|P|d{u;xY&$e@{sXA?m<18>wt&$za9;=xrc?GVBR1zKP9(7}EK>HfL zou=WZzce@6RM;TVSSl*SG~Q_rqt>$q9P_hx(u}dabQ%|PHJdcB*p{$V@eo!#wqB&v zN|Ec{0_|XVe0+Gk$Hm~gYliA_3USbW;{z!*O#WjZDc__$OI#X>*HcOn1!-x>W4Sw+ zL7DI_rvo(;CWS?;A)R_7$w5r?ZV#o0KwOKJ?{y5{uP<;ORF|6|28eY<>loMT#vqL1 zWs|)N-zmHq`X( zyY*?_l`~A>Qcq7GS=S4a$|gMbdnZ- zQqkW@p?xa-G1?J7*Z|Dx+uSkAuC$R^E&6T0=Nsz{Q~}W)Rd7C`M=MwKj=Y8?{|dZk zZ?z^m48KU;PVPHf+;|r{@7=W*ZJQ+MWE7AM zjvX9)S^WNyR5rqSpjq_^SviS$gE;$*8oHYr;Hx20sCbOq6*ws!v=+qmX{*c8t)E4q zquLMpCa%w&ey$RH-cbqf6ji~1N-dJ@=p7%-@|y5wWat(*tPwif6zTI23Gil1+U@Swka!?z! z%ZFRiuf)^RC_}jm`Mx~?Tm4Tm3U+4-hRr__h(`vT&m}rWh1^{q_~n zac6;N$Ia~IyWw1nN^(R&b#ybBKe;X-E81?;ew?uxCbln)7i8w>U$xhQCwUfk`%Wgl zf4R-9CKdQ}FRFMC6wtj744g}A3`CKC(e=U9cMk<^_uGyeeW4VES4tDNi}uu|6+j*Zx)?T51K0-tMryFa~se{}!%+L;21>K{KB+Q1q@6Uaoo20&f3i-9dccctxM4 zLAy8tD-Sdfxhvy)$d@zE4J72qbyRy@r{A|B7$n>9o%ZW%Kck=N(WDsVO3p8St^b60go#A3}TK!g8I=9P;$Ngu`HI^h&;+iDx zDe=`;v@^IML}a*VOOAsDBeY*>YvQ%JYgX9u%UyC&I~R=_hkIvSX_PTz(QZva-23i_ z-mPCn?<{+APHXR{&5cgE$)|1~mXv>ETYuXQy|NkhE32URA3G%ZC$(T&Q--psKyl4G zdtE+$%lx8!V(RA+>~?D}r<^Y_;iXloLL29~((k%0BjO3E?c6w0Yc421Y+Utq;9GR- zFs1p#3^bx~q2x<^EYyNzG(}Hz&x$CD<|cr^dz%L{nMxi$Ct?B(h>LyXf_Qu@_Ve@Z zrZvl}D`uM+A;lbdKa}@^9BXd8Dy?ef>cKa;HOO==iaoO2I6yy`N(|*{o`-!hu z68t`}Nn$u?zK0Dq-Zoo3pwk07HK1Q)BNsBjQFv=0lV97_Z*oR>MbBl7X|7*F)JxQ?GrAf>Ti^m#W;l*p+OprM#16G|4d|zMD z6yAb;c)ORlG!Z{3?T>tht6~l%ty;ra#=#HmT0DFV1V$KcTek&XM+{K(Tzb7?RyRGh z**LY?)=NiXpZW2{94x!r=F%E;Qhfi!qq?HIN1B9bsqbIQB$WAs?+;v$)#uiLV96V~ zZTkhw`h8mLWoq-&0W8xW#Y^gIq6hrJ2`_!mKJq_t;M19EIiP$w)h>wmhP#g)%M6#W zOx!VwU{Z~OF+~=k%gXHBq#%^uG*>i`?*1CpN#JtXFuDHIRTq(vLNOD$jrJCbRdoJI ztADSW%0aV05OT!pNH#OzJb-#Y^HmMJ0@`r` z+5$)^_)qA8t(T!qccvKit2^~C%1s(&ZFOURcF;9WIc$iM%nKLJ0pA+-s|1Nm{>%MW z7W_@Hb}Wf3wOi(}bi}7FSQf?4I0HY}m#H)}GEa%qr6V<#!#upjeQf@x5xm>EgnBU0 z_h{ZaXGt9+LYI|foR)+v0-zpLCHl(dFb7I`_{HxnYH~CBjkYmGXqTpgJzbJ9=irI+ zP^=f8L-_=zJ+eUt`>guGZCdn~sMBj4lyiq~!-WP~NgQVC^cc)dN3P%IM4*~A%)rN#EWW4s!PfjPgRJHVlpsyRzdOY-L%#v^&cADH z3HK~0S>V zO^Tfv)Q`2`KF$wxk8g~@?HN)D$5E7^nqKqL^0Sl(7KLR4`0L5f>37QU2e<>WKn}9~();;srpJAo2 zmar<{!1n|DhVfqcj8tXCu*O+&K#jD@!yx#O1!mElID}Vv{@9@7lC>vSb2`GFxrm-q z$t@alT#B#u94O#I05ygO22}%HvB1I0gRpx>mN?u;@V=yKro@(Zu zM5v=TTR*Nb?NPw_jf3dCr+y#m}Q`<0naWDVLB&93>UG{&$79p&eT)M=6Pq(+z> z5T#6lAG~KVX%|ssN=0(mPWn*-P*LQsD6HyDx9w(M6@SE2Y!qmt%VwKd{r}fWfl?2= z;eEp(WA~-MIc&um$68J!G{&D>ZhML;p=T5}D$G%@(yVc01q2{<>lpxxg%cg4z*Nfo zQo-sg7T-p-nk?>xw@`)}`@Fioob@lu|V8(f>(uyspA1*AcA{Y_nB%3Exy z{FKXB@`nw#c5s(#EvZWbmR0ah*1V4`<3oK9>m=?L8PKMkU7DDtS=%2G{F((9PM zJ<16+)lEAyG|%I87w@Fhy6ikk+B~wE@~WBqR>S-$Uhrbw?=}%k5Dq?x3g9_2d*g}a zcZH}Y5PSbP$>faE3=YW6cmG%SgT6$DMhWu22-Qz_jk27#}J8;sm&;P45bVDx-wZe~F7MWG8sqGY>2Xo~7U|#93*s8y+pkU7#3c)2Y zrlU6h`!N4?zxq83tafEuCWA-v`)v9J-=oOC>+sM7WSyD{D|`nnRnzyR94#<#pk!Qx+^yPYO!5n9Rv&;T}?FQ z%=koVcAJxqpU1Vuile4SC*Et*UU{c-L&WqI>X_F(Jo<(gyM0tXm|V{#3Or1IH}+Ug zpMb~k(1$pkYh~8AxQB}V5s?vxOV%c7= zdB|N|!r;m$AO9|a`|FxUc2zWmp2>YUb2$gjDzO_^Az2#1dS$&fpPZcIj!9$c+Do&{kdL#sFAB?Kx{7J*Tb|C2kd1Ht@jT3c!VU*$QXy&BZb!`ID_$F zhKCi#gyAu~B;JME0%ko)jULyL)uL~|kQgHd7c&R5BA2p?=p1$Ky4diL*;`#GcGH{l z`;GwC2)8Zkd9=ZjGmb?+!|WTv*Lh|=GYbKIZ#*+Tw|=eZ$oF$gXUF@W&VcE}JC!@2 zn;=`REw2INJJ}s;>J^&#$E|vkN9rT^1B?t#i#8WU@+;i4aG9|-^ZP=Z|9Q+-N;E&s zJ|q}j0Dls)G?;B@9{e=AS;x)NG<{m#W9H3GcKv>mPOOH}kHgHdhaWv>#4ym$6y{3f z4w}tl=)qI7$C9`8ht?3ZK7VU=vP?Os07=L&2O1jJOb7;?4k+VOE zpxu=V!-M`k=lGv|tbaubqnzK%WyME_3zY9n^j2k1$L)biV25F?f;E|G67AfehKLVhDM^ueF09*kk1=kkoU$)v zM@oG{72X_jIlnsy^OHSqwzII>yxrs}i>K@0mOZ@H)PPR}WX&U52svHydoN3N!ETn& z^N2AgTAaQMkj(!QMt9v66P=k7p#<~L6btj$nbxF&T5UZG?bRxpCCeXOr+ET@?z&?* z|0cPu3t_W*CZ#iS5BNoHbj1~SRVI+C`1n74Az{+jdEisiuMYup<#1p|o`jcZc)4+A zv4=CMc66(&uZ2*Tu>PpQ92dpQ6~v|wn1>ZzbafC#z{U*G_=(OBZG9+03zVv8`U_UFye|bxGSA zvMOi}!2@>YP4OY!ayymW9cVKXB(tdixZB}d|8Y8{)rgn-8u;yh)CMG;lpRXFj4n}> z8ULA+D*W)p@hqObj8>=HupLmzdHTz}sclYk? zQ(PljjsJZ@o7ZYaKU-2Dq*88$4{d7P)spXfW$B_;$sF{gGGMvGn*oIxr$Ws?->55z ziJ#CGFHD&zmL1n7ps)?ERc=jZjoNJYrwUZ_ngZ;pm{=0d%Jo!8$-j^x_&T}Oe$r5+1`R^Fc zd+*FraK9xW_mSpm+FJOrjbi&o5pwO?hMCd}*eChb z`pt)D#4Y1&mD5GDXX7T~&-bNw9df_irJsw$+#&v zy9u*m)zX+R!#{Jx!ff|4Je{_HxL8desnUJ%_KX3F_&dhUwZS)v`AVhdY$nnf8Qq?` zIW04%)+2%BTWtxyGETjWGRIw6JyzuQ4GvTPSa5^NmrLDe@z#rN#&qVCesx@hVR`NJv$@;gFqoniJZ@GVM9qv;uI~ky>sZ zW3B@km=;%i<_3RFx_xY4x^81kKeM(dZCsJkGXs;{J$DJw2b&9dX;e=;G#oIpnenP} zR{i=JpINiC|4Ni6k3?ZLK)KELjiZGtTPu1c0v<6l?|;H>e$mxe94W3vlv%Vv$Tq*D8lM~Q}4 z!^!oQr9KsBh)ft!b*!nk?nrD*DE7x7pXrHCFw#yAcJZk&Msix`&IqZxBsQJoud__8oz17A^kp z3Nw~B)CywR@C{?X`Th^7`xJ*Q-*P~4NPS^KebLwCH`D^g+@hhbmTyCH2q=;o?edLG zR>E_K87CztRFqp^xbTy=NSD62v%P+qAEjTNVeSQy;beu|a$)oSx}3ewM0!3vZ_S*R zYjnVwAoxf90UD%W;FXE6UV4JWi{CkfI^2Uo+Ua*~_fl1cd}bR!!Ss$#L&wj~0N};s zS4IAVFQ}Pi<4W=mo?Y1@bN#Iy{OJp~b^sB5`ZMZmdWtBAre$GNTicL6cdIfx?Jjvv z)%B}cu@n;rh5~dY*JH$f_x8#G<0fjLxBNe-#cMWdq4e_X&8-urVl}iUdkfvK-idZO zQKFeFJhJ|Ym)0PFyaupxt=OZS5vMJcOfzxdGL?z{In%heh6B>M95@*kS@-_n2s;%mHdvs?@4ma_&4+9v0!+31w{ z{arA3)5mjM1_JBdUN1x4I-Wf-$iHq_^mlm?oKf5@2KjSC0W2O0Az0s%Og>lfh|5>| zJPf8${$L~K3YV1MI>Yrl8T!IH;P79Z^#(5x@dWKqTgn0XP4ll0$+R;MD*!9*Dxd@W zhGR!f@82bm7Hij))>8^*I>bOOH2A)NV{9Bl)VKFz6;?U-k%{GBH*v+haR?pQfd9o& z|J`RFgE!NE{yj?+8^{r>wDBA1x2gq!pOT_M0V^|oxRKLL6rgUVtZKK0TczZHtaO^| zv%6h&CDJomTr@j}h~ybNOQNwok~JPxjFGn|8d^r^*h)5jL&06Ma%)D&Ut{~X5G;C2 z80}?}&>rEE{@QP-D9oAOHZHHdmipB*S_cbz2vO>#h0Tu7bzbJAeAm(Wo`UnK&YgQQ zQ>g4EYmeuf_A0^5d5wF0Wz->ye8FSAIscmk0fQAhnrALWqJIt6?si!6f#htKOa|#= z;A?9xniSeLWXUy?GO~oj;x_`lp0gvq@O!9QXNIZWgti=1czP~yiAj5WPJ+t}VD-QO z>|eqgc=O?aS2J&dgmrb3^a1N}4Ii0jdY6b9+doQt+jo>C z*Qgo(J~1wYoNAkMIUbY35P+10{yxP3N4lr)!SngS+WmWK?-|MRb98fqQ4kBP1(*h5 z4?~@o?E~r4KJm9?X@K0lrLT6eq9^I%vi^SZ_GYe-F90Cqh~J3)&SYic%z;JI%jY9l z5psZ}S^>{9dFt$nMb=zZkf7!>4t5ZVs%?sE;-3zqLXC(}v&Vb%z+fejc^JN83q@zxbmf7yQ^7#jnk6 z{NLotVSYgxWN^bhY9lT>v2}!Xj(8|CC|;V(f!?SO`Eq>pmTxAp5C5l!j$(cgEHG0#ln-@YEK z6%@!}SlJF7`hjrdcXO+GF6Ty+o9Ly(mg>9jAxxhc3h!5voo_UPB!8G#7%IbtA>>3m z$-A+M(<$$ZE~aJ$$u9E`8k!VpUYwwPHQ^+7?&`=bFqLgT6X?BVsCU)Hq-ST9i|j1F zukv43#^CwD33y1qjwugQyu50SH@zsM*S8jran@F-f`2_wbH}J=8|M9%px(6wcNo6# zNKJ2-&XrO_72m|W>*vbvH@GDOy48~#MN1lKbaAGE{OGR_&X6zF^gc{YpG{CGU*dr5 zyA}a*`>3GJ1az7(3hngI&Zalc|Jj;kZ?1}tB&yYlbO%>$gV??KKcpn!Fps~DR=iEz z9c*gNEr^Hv9aUhZLr`cW72Y>=*UR(GV3R`l{*7lnml3>1WQoWO zOmD3=V247DG1jku=oCxVSYU{K#-it&wcH2-k2&t~!uK5(4B?&2Y%zRUnt#|5-vNyy}%=;SI5+%P<8T|(ZoGBt>p8bK{Y4xN(bf$)s^t) zswCdyszB2W++sxx<76G9@8*ZbTk+w-Q#2(bf-u|}&imN!{^^u7xkm?JgP(&iuPFmd z<%|->%luV-MtsKmer8GOw)VjCpSitDD9d$o-hr@nbKVSvulh9g$&CbLxb z{N?dq`-;?lq3TN%l%9H}%=^R|Sm z>wz1ZmTtU?f@rwqn_1HlOsU##<%>9}({bBd;QsOJITB zJU72~yvDv$r`Gln^3>_6s!Fd!MMLu1LrgSpy4093`y`g)1BWe&k(I@tN}7mV5bup$ z$X0z;)NNLKQh%ho#icdX>~s(h6*Z`McEF>BKkDqjDT1%iK^J9R_>VsvtFBM;atG7P zEq!LRGT-Q4x89w+HcAk2V5#MOci@ERk=A}Xs!6FYEWHKbV%9+83PmAsfjmCO(CBv}oKM(V_}8c6LrObnhuf1^^OL&eT3Lg!;xbfV zE>P8;VE-n=7uI@CT>UfzlFSKgXjE%HYgATk4c3s-a=d#FF^rAGD^@~V-Of}&HK$M^ z|3G_NoD`>W?q=XEDVzp7!I(*BlKNbLPq?VB>INZlHwoGpW4Dv0O(%@IE{J?7oQ+vw z;5bJt+Ii*(1o78g+=S>3IP2<{i+@szA+Dhtb;%AHa!WL9zSgX2|1aZKW_!XX)Z|#n zr{?{Xlcj3qDG~m6QtvA3{?{Ab;d@^Re|=3EJfIzz>A7%{1rEGRSJ9b%HIE{H6Q$n(5T{%GQHfs(%CiOVLm`@^q5Btk#;QJwRiVLk;2QUEmrJ+n$B1y$PHj{?idC} zwu#$#_aX?J%i=b)VrP?}J-wCin-elq-qn4opqI{1?v~Xt1t^aIC!f?DZy^5q9f#@=Qq>BUu6Q#jZ(4czV$&53ng$ z6G%9y@18%M%|R-~CsW;Ju<@hA`kxc+HDzbK z*LY><7s3!Do8yz#!*qWBettn(B_FWVWz)VUh(%o~NWI_h-^upX_$yCmeL7$N;)Gt# zN8G}5PFQ~bs-HToY}|@X^JO1dS>py$eGtzF=~l~@8_}zK+<&$jXdP~*{LS(5O5OxT z{co`{>O9zEFrnr5huWKR0U!BlHCj?+*?^FIXn@)ljIqbiLq+XhKLK{M2J(NZ7~ojY zo)8+t%jd8H6zGPDtu;L4)pzgY#|MQNI~rd~?B;?T0CDBOJ^O#yWKHnk{^ixX0Qr0T z>qQ+9iM%1K-Vh)IqkXv@ipY}b=X^Z38nW%Wrh$X0&pwIYZ5=zfc*8*B-=c)gn%=ki zz5j)24<7hS@ic4(lr}qyNA1D?pDdnr0<6qzN}X*%edl-m4d9hMqkB|!n?Cr<*nMxL zadeBQ?gzhh>cgm||AhkqQT*R=;V8#-Yuvy_7HYkN0$gcIsh2fMUtGfObJ{v*nu5QF z-}71lUHlR6CXUlFHW)=JWb$>`sb#SpyRi zgp|2x)mz$Q$-2+mpH*=~m{(yLa@YHeM|Xg4QH=_^@3nXS6soplpq&)5Pw(Tu|H(X8tu7pxh*Os(F1>H8vK3AZ zo8fJE^`JJqKVU9aVydWn7Tvcp0WSlinVB{yxHp_Tt zt^IB4{v9{itF{*2X%I*~TA4r`b(oCcpK|%89mHz8NRD*)n&E7lv9JT`;1;!xRUPi8 z@-NMaCC93F_NPqiuUz6JVuV@_ovwjIRY}{0Nkj&6!GBjcY@b8FghTD;PUHYl>ZPX` zjo_fsyO&-R#7eohy!lV(o4rr`>eyIPRe?{o!c25}(OA{jI}_YfM>mn%PQ1ov)YSPJ zdV!9O28{>|-Zm%wsLKQa{VG!K9i;IptH0 z^y%{HKRxF>)tL6xxG?JLa4DOCt^DYG^LPlxz3^ZnF81BRq%`DE5Nl-3X(mZC!S0Yw zP}2SiyQ$CPHNB>*1DH>$wV6{Q-*&7cS!Ul>#K(!7Pm=i6&qxq*Tffta^3OEguAqDY zS*Zeiji=0g_`l=hp^TD)rW4~{1vd}Uw_8bY?NMrgCeL*g-ek{;Z}H}KEtJ;4Pf;5) zM(cEEHnu)c<>OA}c$a1AX5gznYHA{oZ3G|KtXHaPEfWpQ{XPYq^7vA0 zVirRFj$BPi?~$(`^*0SI%v3m?j+=l9uB8O;-?^-L>W6Q0*VHqQ;!NUbwtqfA0;{-3 zu$(CJCK03q75$ebD`cVufg0ee@pL9QYM^ck!+cc+<)7PfQJ!w?q-XCDt8iD23@ zhpTpx-NnhhzAwQI$PS+WN<7SxJ=-Mi7`|AkGLUehhEY&X>1pzE6mXR#oD7i9UmALY zdPZwSfB0ug%q$YtP<+edD~Cvpz@kdzdg_eRszN$!TK4zKQqG7F+TpybGAH~}`;-NL zzg=Zro>Jm8>EWm}z}-e+)w8) zeEz(KC$m0A$t`#@C5DWaaOmkil}#moHEF2d>}}zytRPa6aqK%HlT%XrdhLBB;bjH? zW5WeS0gsG}vgPa1MCZ%^#0FK|693P|DF;F_4= z9z6#QCQzg-ek{j|_GB{cHd6=UjHxDt3Y{|p&&!SQxDa=2Ug!M4p3$$XG&n-*=#4_v`|D$=f#xXgZcu9@%Nsr59|$1uN>TTp!8BWHz%>K;3KD%;b7zdRCE z7zaVR$KUR4j_z$yWKN06a!k0d`tE(eF-Ht8c(jTeH=FbZKFs4_@LG8W%C1I!Cs#Sp!%cpYpzK7{`YG(V-uOfq&dz9hZ zj(;>`hDE(rZ{M>s)~i6%u*+d0qH26^k98g8L9_Zxf~KpYIc~aJ+6B+oVVmYZV7)_I zz%}eQL}oHwk-nh6e=C|R{_sBsl}cy23@^TE!w~d4a;=4*V#HbTeibFhdqBltV^mkO zml&{8@=_jintDA(d9_MCpO~}42&3I2dz_GVG7Z9%#eLj=yLO`|mKC$~I9gPe6EXrq zh7A+%8BLlV8jqT(`jL=!u8Vhn-^WCTf>VBK%G67g!b4scqtL|CUq-G9qKri78!2tqod(G(XeXi*r!Pk3#9!b9RI-*OH#d+9f<2<+@zPmxk*|;-oEc~W0 z?S1-{m6?v0UB?6C@-+azIBzP`wOd-rRgmDnq=J!{%wiRlr~NMKHVDS6Av@Sph36sL zwjalx+#@>yMjsDn)HqBi>1=A|mey5Rw_J61XeCDfkS!f6by*B7(Z1NOPMUJf%as4b z#RSps^Ga$y4M!dK3>^P< z;d&}QNX!^j;IQU-qx2bGpaG~04_bOlJzK)=RZQyE+ZI^3;!8x`SKv7QbfcO6)j8Li zyX6Gu>x)@Yr8+RmHij(|i8A)`w2&&pw4PsoFG*#`$z}A(` z$Di&V<{@93NjDzP^RwW&ZL_^T2vfAeb(ax4!l=As@ogXl9ymj{<17T~?hL7DvhKyw zOZS6tw@3A8wT9Cb3(NPJ+seGl>4jSlpW*n%{~M_j&(P-+crc+v$TK@5$D?VBy??nQ z*9ni;F9;}!slB$9l~j8iz#Zp5j8<);{eP6bc{r5s8}~ojBxyoXkx7x1B?=KUMWPaI zAC!GdWtk$$GBYG0*-{}i+DO^OBzyLCvcxc$EE)SY%rNWkno*zS`#i^U9KS#Mr$6ex zuetB*zRvS}zhCdoa_d(m&FUi(2PaF#xK0DNSaLL~5#Bp3D8@Q^0Rd`CwfsX38*aX> z4c(Q39Nb)Hmmj>&a89d23FM~+heAtMu#eG9<$aq?rrz2^`EjqyS-mM5)na?1R%eS5 zuoohXqtQ@r_I=;1t_=bbG2att1r_g0k&LsVE@2Yz50_^*P{ z#<40!kLf~p=4&!d^6r)#Y+WfXIOtXdxLaU!$MThj8I;HH2i%P3wby|P8avH@+}14p z-xczig~S}ClQVJ?`;gz;hZ3id#KwmKBz`$YF$L65`%|cndd>INq9bnKxL97fE|e94 z{JMn|aU*9ElznY={OVF;L3|S7U)~V6)XKJn&{b!mtEp?ZZh#&F0U_0#qCGF}jfFhA zZ~Nu^*(IBWlZq2zJs#|@ZZE>#7Z417tz|emiXf1h3PCFYE4=<}h5GM{y=V_B6{^@z z2zJzFIY~_0#2~+2TaI5I51*6xe8X;l7Q=8Ojs_TRyuoMUY2+VEqVj=)?8x7NvB6KE zHxeB-mh^}=2U&sb=xUMBZxJ!Lj+c6R-(E#O*CZ*4o~x^Yn|@KI1cDWl=l@qR1m%tr z*MNc;QHmKnx#I&=MgrJZd10~tFazJym0Mm*+eIB+$^UZBf#lv`@7+pDS0;O%jaRRe zTetAaa6iFJ?{;~kcx~@l74}cE7N~=19VJ=36vT%*e`GdIE-|z(KiQSNT#M?5=f7JW z($uh>kVIRvr}MskT$%0!5G)6hf86wkK@P9yl~mlRE5m^D|*o_(CT@61LBVcqJy zkUN0{w6YULpxK%{TlfYWT_1vb@6;iHTw`u06d~Sfsg^t}`pewrBh1Bg&sz|1x0(Lz z+dfVU9FPR4xW@#!+c1_zkO&RBpKE0O)1CmuHZM#DAO09LZNx4E@;Mp}VqpGjt5tyf zvDH#-Ah&q%(o0p$CSDWn+5zRscYB1-T}ct$R##o4)KI3&aI%Tfs)CE!!z|phMeVWR zz4_OT8&6eL3O$fKEWV17)aJIlz38WSeaIp^9OG|B;BI(@QtjOB0imUU7rJ zJm<^IiwdlFd|rK`iv!%ZywQ|#E)$R@Z%xKu^H#c*;NN2?*4pIB=Sj=@QxgNs!m6Fu z@457!%$ih3$bSm?@Bd;MCZ4Be7ZOrOShvnR`MzQ`WanQl+`8p06y|>kTO%1O!fi}} zCK8ut^}B?}WXsl$u;4q7C_GU~^D7NcSU2=x$EBjI5PNEHEASBd+ZzxXbFRP3-Bz;T-q;cnpUr^NfA{xR&5 zABRsvp)`Kz@$o>?po#!GRfLgo1Z|@>P`9>fn_4wqrQZAM&wZJe*bNo@6y(ca3--G- zLq4ojZ*rDGuROHwFe;urjl$`cVFmt23m6(P3W-qOKf7wGdKwL;m9*^D+ z`^X2W1>!4dz_z=VG12|2-F;=3m9_1sntM6MdbS9~u@%YwPb&`7@`2nsy~bYaGr_xi zHp`D$DoI2Nht<&c_zco|U@qA;#im{viu$vnQ>%LeIPCn%v-Mz^akkZeML!K%;I9`2 z`~l9oZHbNif!3P)YK5d+>K_-aoV=P(^4lR#@9GvCzie&by))hKEq%dPrx(so6iRm) zD@=6g^UgsB(TWt%DVJCb;vCU1u3ble4YHHqEGZCF?3Aw8|7o>52KT3jV4>p zps;L-fU&-vo|kS&2{rrVmht;kCi!SC`;3ssOJ?3;?beREM_2xLAe$)6u)JG-b@Q#a z;4Dz)BUtfyn+{ykGFMZQE-n4m6d;h2`#zs;X1#6rbfi;VA4+>VQ|KkVa7)23T5Pe$%HU(f0jN}f z?*(j0>v!Vo0-CPa_^F;%RYr%f)YTS>+r0TVLrF zdJ@@cvOhH=!diU7%A9=WOC(pcwdtO+#CPy20!jwqofH0d-?B-o8jjN4+Nm$pa339? z3VV~A`8CDdsIhL0pc;nkQR*ts=s=&-@YtL95TS{@C5(Ow3)mqW1$B&5wwVzTTu`1S zYxU;khMURy<_el8DBNgP^4H(H*EB@DhVQN}BD>W3OL%p#zN8J+TIThn8R|<_6&3Yn z@37|^2U|IAfwpYba(mmw2j=Z(aHq|M{7-(^!d)t8L5aup zC&c#MO_4=^O}Vdi$&I29x-`sOes-C5nl*l`T#qVW_|^^7z_XXe^s2LbzDHROL(ZoI z%Mdt1g?=W;sp4eGTh*}NOXA|Iv;!kDiOrWk8gJ{jaczC;5W{_X#)?F-{I6T5zg}H9 z@}%G3qY&ZD?<3~wFgWgv&(hf$rH-zyqGLjmE-C9^00YoCF5U^4$&-6HfxRAQ=91Vw zCTsUfB~~MZ!~6j@Uh2J^U<0ioGP2iEj}k}A9Vap5B-Sb}7q9oYTbX?Az;RbZWnrh| z{2Md@9#fsOnHEtd9+qX|G+&WY9%9FU-^^R~TvNOjXxKFGoJ6~}592C>{Bn4>FZ3h4 zMI1K#OW(@RqV2r}44?y^JEPb>-oa@ zm9r+N$(DUS{|P}(CuD5pVdK2NIU-H;?iRJE_upCiD()lZ_nM~>2lB}?Lz5eJ5}j%CO+zntG5y}o5RsEOCqJE#D_tms z$G;d_ozAp`>Ioui=;e=H{L7s~9BVIGQRrW-T7r&lN7WQi zTT~HpIikGj6Gy#pY-p`+GbhMFi253ii&d$8gXS|gY5>WWvOSKIw90GOYJau!OKk9J z@FIFKb#tS}(q3bNqOS21a#J!BwXlc2+}WopbzVvj9Jd88wnaXmFYISOsz{2PN(AYBV5c=2!#|#cQtl3_r{i<@ zJT>ZV|CUx9E;(T5@FipIZXohB9PxotobnW7rUYdcC9BkTx2dO`I%{PV9W^(ESk>-E z!>R`y--}XI=cgN`Ih5F+ACt*ddApIt{7AH4R)m!hvJ|f2_rM<{h!9K)$~_W>H}Gu4pSRGu+k270&<$PvF5-;O?CD1V z)hi0Vmh(Wi3$|M2aP)=!T-6*39Q(E7JS0)K@77or-)q_B)^u!Fz%EeLG(uE_cHsa1 zw1!pkZ2@JS_|#&UHsa2h$epaQLY9nG;?I0itDw%}EMrNy;lzdYYO-s8yNUS_DKf`o zi!3Hl3NJ3uqJ(PTdC3Zs)2Zcwvkh8%@0g(74n0PJGF+Ab?(Fj&hjkF!gP=2eVZMq$ zI0gD~4iD`TBLg-94AI{ZswEuNCbH={bW7I+XiQB<^;ibTQNuDgOIjzaO&0u7#ql42 zI!NmTvs?lE!_${Pa-Kpx`kME`z}N<${PEd!HnK;%^@m7p)$})-S84|)wPB+J*D9D6 zsz>oOB<_wWxdcffyd7ZjSL|K=DqMa-a9*)BP?E8X#tVjYDD{j^e8KMZs4EQ)IJ*p8 zzbVhg{}WFAmbp=Mxgq%BQRlkO>|><_`s@1#6`I`m88z=E z8qvnaCj3aMKsIM-twF*5(4?r^7w(&Pgg%f2uq3`AjuX(Hx?(S};{2m)wCNG>60DmJ z`{0@C^0#42zsNtQn59DxZ<2qFTB2rP&$f)(95(qJEik|N&yW1SqwNLp3HF1e$oV(D zZXxA5leF9tLY>=XKaRGgT(tI90eY%5XviJ?yMEV4aFn+vo|5WpLZgz7r9|044D(lG zRO9xIdVe~skF_-e&2~^|PLv-FxpmQ``2`l~km1>CRMWnfnrdztx@5+uOZ5GBO*d7M z2w+qZK;f%Qw()&!?8Ht5j-mW3Fs9qp;vDD_{uiOp@29$J_Im9Wl>}`Nl&iq^RETFp zmI;m&uC3iKG%>xq3Mbr%et%?!}tdk5fEvAEo)_7Id3o*snie;_HC%TI%0JUHwp${RYtd zc=WFruh%?bzDYu_h3?K@x`b+DPL{pv4!_;2JRLlWKC~Ev zYAExIxnR@@K2JJ(IAEIoy9@E34uB$75@L%xk;ezgQREF7Lt#L7oX(;(ne3p{#uh># z=7-8T`VLC0jwqwi^2;sd+t$WLhpf|)kHMeK^^ogq%Q+Du?6kDs$VG;IhU#T+ya9pv zG?3-C9zG=bQF*on!R*3@z5%bD?+01*bsMV&8$QTiD!i#Fk0f?t8roqG_)eRpx`23N z{g5b^0JfHwxPhkWJFsUkhevD7dUrzt3hv;8YMC?+r97b-la_?h6uaJLVmMMoZ1;t_^Qp3({n9>}-4@j7dajC2-vB+0R|Pi_qje z^r6&@SjRcft41J`*Cn=1JnXh_rSVV;Jg6+mw*EPY7AQWIK7WKU2m&jT>&gEFRv;S9 z_#i)W!$4keiaQrF_HO|<91aBDNU`6sym2qN#^h?Ktr_8zDmy%CCnYrsw;ob)?U>J( z`F>6}2R_#iW3|EDTryhKhn-&r@%k0>=ojJZ;R3nP!2;nmuYyrUI2r-V8k){36WNsR znR7qnp?1FnYVVqTT%Ta)a)N(!u#QjD2Ac8mc;VI%+BHpOr2xr^B;{`ub9Hr zn;TNZ&bF2pl~|Zh=`qHaZ0$pc9bdPdLBg?rxnfG01w^RgBYzAY-3Xg#)!XDg-V zQmRV{-wVFpt77a~UarPYe(;}ofOp#FQlh*>s#+>)b+Hm>VJL37>D<+~{+Hw+aNqAn z1*G9VipjFFNuhC2QL<==*`vlPU3w;0`iw$J}}s zn(hJBKk(U$A%cNT(h z)b`R#pE><@7qnLMmtVQYFDB}rQ|JSSh&|x&0F*8b^Lpney>U>)EMIMIgQKk2g+cEEMFm260}>ipvcaYO{trEAPP+kn(^5IPq$^O;UT@UE`LU6!E6}haa7n8y?S;S&X$t(!Yo*K_Fs! z2%0mh7B1(xS!CZ>;)B#*t?vJ5>V}?}a?=wZzGnoHdIM zqn^A}V@z*B;P2ftBzj;Qt0G!Tz3N`lXZDMQI$UBMJ>?mC*U&nu#QleX48EtJppHRb zyjr8&({JGpS0i6jh;h05t9CRsH(D16-PhEOlW=KRm3u zIX^!`GB&RIegR@c&iv6XrgzNqpXKYqKzJ*k1Hn}F)kC<~^U!b_s-Ht2Ckv;rbY7gl*4S#Jd>cbk29Qg|t zsGU}#RNU_m&pO1(-_$`qxU!f_8Lwp?@9ABiZ240(MxUAjyVWY#RlOqc!;~ZrnS_8iv!r;3gfGY}(e?=vT&zmf-gfw*&KGEO`eCF4FQr(jo=Ack(O0n^$B` z_GGyE6_{$>nbTN(TEYeF`TkUEZ=Hqwv%2J)vl{naCAsYEb2d3j+jS$q&-vh)&-*%; zirs6I&M|41QC9`gVlgFi8+xc9zy1O|U!3v%5PSSD&hQ$^GYT=vHEXV@UInK*A;IG{15~4NibCba(c<8YT3M&TX%#AZXnugZ`bUa zjP(`fqtBjncSC|I#fZr?sIit)3wqK{`7@9B7KGv>^QI}Upe!mn#3dTJlXGbi`9v%aYQn8zcUg}>rM zs3DAv{Xs#DTNAy*EhJOdcGP~&+nhFvLfMN!6!ny6c3_zYyn}#&8ob$^jDH*_$?~cp z%5WG?7~aAqbZ{4LKiCv6?2Q(AkS=3~wiVTtT^hl0v;tcX&l`|B3$lmImNI)rUf(#f zmG)3HEX64LiOC>_Sa|Lk**{U;JWV(g-OL-VY!v=1rWEpu-ZzuGC3 z728_*3p}6&DV?v?MxXD10r`rxek(^~vQ^<##1POXVDBshH-X#lfeqRu$*S zv>?$7D+?-Y50k7ZFJXCQs%qe1De}tM2X0Mb3RaZJtD(Dcvd?1PyUEYR{L;Rpc@UMM zKayFJ^y7o2`Pv@{ZByMH-+uLurG288tzo=qE^SjgSNWtxbJOdMxz7&EKGS=Ly4!DU zZ$f+B`}w0N$%K&$3Te%vb1MU_FcYPOta|rL}2k zpFK?1%K7%Z%SESK-Dd89wZuJX$>=MH*$gM1yaDSbs}8M+J_DL13^~S~dZZ7R-i3c~ zhxxtEAd|G-7uX^9@{V$Z5vJewjQ(uEv5hGF<-hqv#IskJb0^Vmxeo7&m12JWS9sB{ zoA1S3dn$Bp1*0;iFAebu09E$Ow}15wrqTzsXTsK>Lb<#)KV2&k$Od(R9&;&Y3qM)=i1I~_dT~BL z?{nMy=@bOSe(GD*ChFCzt$K73H;R^j|D-oRsL2(0CqJ;|wM#bI1F9Nq0RI9(8qI6n zq0trBG`{3Xn;^ekDV>ChqP9=zGBey*Y;C^9(QPArFHV&;JQA`owG6)GSz&GiftbGE zk!uoDx#hzenc*XY{0^F=)QBHpgijeRj5G7)ap( z)cK4w`9|-k&u*}dQEbhaW=OzX`)2`niBKPMuPYK`Cf#NBQxN6yBvamCW3I^xujJm& zt)M&1e}m6{lg5`FPWb#M4B27^DHT|M|Qnq>mo;8BR^>P2dSQ91N+vY z)gJ}?|IJ{6&%4Y{Rk*GD`V?(mbzi_hHbXw}@h*k;U;eEx810QWKmFL_!~Nd!woB!K zA(1`4>1Bpf!yL&hQO2VEtJgOSsj`e2ecg*Eqe`qV9OYV?Z>K1d>j=f%tiRPp1h>!!)^P-y-~NZ@r;;k(_bt0mKEM?|`07+NZFufB(D zWIl=04w-23qd?1-Evu_=7PPFgyNfbNkL4%d&HW#3gO0NCI@7B%)LhgSeVyg;Ec%ImR@Lbq zU~ju`9SJB}RrxnGY%o@^6eewud8;b7=P-2b{}I>7t0CQL@kja31x6`2t1K5O><1E% zf`+m1>SLw0a`V@*CvA)mk2J<$=ijJbpkLwt*Zlz-(Cz40-`(;MA_Uq2;TZwGJk&kb za{`pX8DtWOvBTlId&@M-24?U>&64WVTkySm@306{-mLfZ&7Y^g00OvGaemc>-SAfv z4nj}pu4C7>Byw!{|ECN-|EEURbmzjQckzBC*CXiEA~QfYbL&i+Vkw9Vf_y&MHIcVp?pHjSts_@9>-aYhuSf)Uh=5 zn#ugqD5ZWVWP1Q_GyGS<{eP#ORe_Ylm-=e5;`Hu~mlLSjdQ+leB^i8&*2TPu0=oW> ziZ8U%w$~jHJ_8El0>MH4rS#(|lLH9%Tjvdj@&)o=23&v4sr`3xZ18u12Y^}p#hZAW zc;XYR+R@pwf%r>+iGO|b0#cqEr8tb4F@B7CQOEAYPLPL6;3uWf##=`otX}wUn)g3~ zfb~ES@PDApTz{(kocQsn&)rZq5Tqz>NW?z^J3mbtz)em~$8Z4iV)4b2-2(;kZXm(CcZm z+e(0(T!8uh`Z3}$wLHIHw#Z`P&r@qa!o#qBka1%^wjtyeBw!xMBMqO&1)ti(6gBc= zgpA%Mi3byKI0B&FR+U+$WzL#yLy)U=p||oiwze*l-)U4vZ`GTcq;G!{6FjuTj0OT8 z9-Z2K_V$n!Emw{?7kpSi`od4C(!vQhoyDFSWld&}`5UYg{dbu;A{4U0A{~E=S{J>ElrA;(db9(}zPGnQuvIqm6G5 z?=T{Y!(5Ub&l&ARC_fmUjOM$r7Pzvb?Xl{k+Y!#)AzxA2Q#IeH&NGe~8R%=-lP9{y zaUuBHUabKWuL8!{*GswHi{#Qp)J4pYRxx&>V`*0`xoO5mz)P3*^u`gUKVRsP5N^%v z`ln__{S=ntno%FENt)4kd~*I-Nqhy5#{H%)Bwm?$dAZK5JM=14PteBjsC3Ov zx8ouf_1Mx~i-YUL`?EIK*zOYucUvUh>oYMdLieM+bx_G=nW8}(Ux#cD{Ge*{#9R4e zRE19CWFE1lpg3y;RlU()y$$a%U+_h1(36h!9?GAmr?}0Nl3F`nnQ>@yVK~YeCgZ8w zqFTF(QXL%B`$B)?{&;Ht;;e-Nh*@~v<)dDI1qietE4ZWAraBgTJ{dpK-BCPk|1*&AUU6yN!&CP#U(nrh zVGi%=gR|ahM*F*8U$3?xq<=SZ4y73=4D);g^RCaX`!(}Yl|h5!>Puyagg4w(&Clen zsuT$S1IGXAUWE?v_#+17OQS8 zM3lMBP~zsU)D>oB^#5x99Sk>})RGP+klF>{8PVUuOtmCJk0-^y?e+j){fVmGqGU(m zkT>GVW0U6!e&{BZWhvWVM1@Y~pQaH|r#qc5dcv6vf!b%aZ1pn&;*B6k)G7D0k3{Y|1x03?` zZ^`AFp(^h_?)rd@3zDqqHQ{q~B=vktr9FZy~NO31vkb#=k_~D4w@$mvUm< zLz13Rt35|8R2as{C=_`mP$z3@Lr-k4_1N^N;3!epZ%F>8@;z#Dyv{T+mbAOK#o6EQ z;0@&^YH3_^2OmSJC%;sOGSyV3BVITwH1)jo6$WyDne3ue=a1+o+Ho5(0ZfaR z@q0p|ojB%~ru4pT&+Xbh`en&y*GqLPqs(55ebPp9&jhv}>#7?MoD}t9`0cbd>*fVh z-BV6izw&^<@0b_C{q>bV&h=H68r$RPU(o8}p2Ez1a_*Xmy;v4(K^XY2EA!syAocy{1v)vxmpl{`;Xnx-H;iWqMNB-EUu@9>* z`$TprCeQNo+@or#E2HIG6l=G>iGDYyw`anK{Enr&qXQ;N{*1gek2e|Fc=cUZ zbuc_2CeRZsaYkNYIl7nmzAzhw%P-%{_=>c#W1L2I zm(3d?qu>r@yK)5ckkqcQIFY@n*)ck!MBUs=E>Q!~UE$BP?VcW1G}`ny=G9`$<0yCf zXjr6nzbA~>Q$|M;1d^H-j{oiJ9S3iO}*DD*t17LwrV0SdVfv7nG!R%5SrEbNa} z9>2R)M)V?Cw0-(r~}*|uRMEe*gr*Np#_t@#6;j5Wwm zR-=yH5i~kI-mu{j`I@HK_d=t?^&U!PTi*pflnklk8w_VBWSDB(1;hBHYkFRHXK%Bu z_oRQ@>@8)sxPDLJtF4c>enx&i9K3EX-8XaN`|)$ub16|d<`1(5=W@!s^Q%&^`rp8p zRaD2Mwm>FJ1o|S!4=6HQ$|YtMPrWEhVvu?d5nZ;`jbO?FKka6| z9oH$8;1`#Gb#Uv_><+R@apYvWum(=l32OuiyQ=Oq(ZzD;5oVdk9-V@_uHt}9kSe)Q z3s0A>xH9IcNpsP>^rhpKl<5hI62u9-ZI73LlaM6!B)^n8k5)A86h#}KCNB-oj?zsM z7gB_lB#M+}E9Pt93*nV-czKYEAZGT%x?E_zV=Op~pGf9LK;4E^{mpgXZ?$RN0Tn{; z;R|=}Keo9@dMR`oz}u>$c9v+}TE)8GP-$a4BAa~k*2d-V<+-Pp53?RfEq6n)nX513ZfT>N0s6m*`Mq z%6>it4;dUf?|*MkIH`JSe<49K2oEaBxHEdi_m)8|BK5?a$rtWBSxC#XbX< ztjx(YqH?hGfM)Vo)sN#xL)vhq(U0CD%1O?;3hh4&@^$wsGH-YP?2nx}az9E)+Ad7) zfk4cB&wX-3i5L=-f~NV@F(wde|3Y5q;^=ss(*4}BbeWUM^7y;2aD-RLokN(;lXWm? z>gYl+B`0OPD$$$I`~*)^a#d*3n~`#ot^?T#W;rH^{w21uKWWp=ci(@9l+C-v5Ykq# zE0bwYR_1AlTQ8g9pPkPj`BYY^P}ZW=5Wh zml-yrRBU@(lUjbunMwMo!&JF7-AY6EZKkR;{rU~`+&Ql)VfSXNRf#{t*W2s+wH2u>?y#y^3MKNd&qI*6HQ0_mRaXQ&2uX_L6P zZg};N2((li`&Yq{m`T?r)*HPi=Ns^^Ij)TPtxxRCo(lQ;`RF2i-qq|#w3Q&QqoieE z#6fd)&ObdyCHN(ln5Vd(?A)I{B^sdpKWdYs-|&uouHll|TTpkV=(}^3&0n0C8CHIY zX+&zPj3%0BBg+<_0|qRBJOkLXt8&@mQ!YUwuLfQ{&#`NcDw+0fP9!l$@8RhQ9_(L5 z&xXf>fJ3{tz@_VkMQs~z@%Kc1f4MurC;#_6^-ftc-%3mL-Kc{sz2##ZC9%InW`g3mV313MacB!;>gXesu5Av%QgU^{mRY{Lvw;r#lP9j|QVx5*x6$K6}1 zbg^|(e$Cno_4`J9oUv-zN0&UR;pfFiXW9G?>`^Eyr|9l@2(fh1=_Ak+T!>7(I#T7S z5RNj}#&Wwq&Az*BviK(XS2UtSLRa_>JY1dr{ua0x&nd}|J*8HeZ5=HeP*xHu1t1v#8z}ZnIz-CPhQ)u^6X_&*G+cew>Wr=$rpCLO)=|P4szmE6LM@n ze*4$j(H*6`4GIMo2QN%d>j8C3Nb7cv_C`+SBN>n6Yf}zQ)6OwW$&C}2Y5X4PIz3zS z=jTk$1&g31jMnvHYu-!}TJcJOMX%Ric9MN33c#(|QLWj@j0Z z?>+XTcUSl9#1}OcV@S09Ee>jayMs07q=OV@VLfH5053mJZqH)RU%7Ze7&4N^2e~VKqgv( zDHjC-)~@b$%a)41Rh72Me=IK+z2#r|9kf1({i@V(8#lKpgf<(S6g#qNkk3UGM29N^4j%XME-j0?RGaqc(BL>Dj(G5z=%8ZP@4JjK^sU&5@Ao|;68xp~v z8>JeGx@R$^hg|ewuaH}cNi26tszzx8b3vJtw~~&f%Twww%({D=L)l+7m;ku(M+0&f z%>eSE@|#f^A-p9h_#k(E5{m@GWA5Gm4MX^c+lQ9tER=0;f|f4^9sbLd^loY0{!8z4 zFZ5U7T&IJM7hnz)-VA+p$SY#;r}5%@`VRji=C;|NJ~cr(wJ526Jp&}7JIczrxc`S4 zRB9hKh}HaMD=J6e(w-g&gdhgCpZb-jg+5!V6Ll)JdAW6$8OlqTZn=o0U=H>VO@~I5&Y(sS zu>>*&VE-?zz%U+ba`9=+79*Ms)*L>HPblizC$lNaP`Gk}9M->m6ADdF!}R)3T*j)B z=v}yGe)t?8#S=mEEMztx!JAi_oSmYKm*02#Sw88=eeZydN6zt33$8!$c7u6F$0qNw zv>c*C$fcUtTMjrrb11K`_S@I{{}v5_G&{h2kSRG++Cx4v`=uXliJ3kwVoKZa5dVKaM zmc5wP;)&OBw!Yb01ETEao0OqU?_?w`;THS7=24lcn0x8DZx5N7#v{+9h|-H(dP&Q> z5BVD|=3`u4)kNrX>L=@50kFD)zS_lH)#fCWf<#2O{6l~+E4>qXLaN{ibcEsx2~g$f zrheM3hy3D_bwJAWGA%jUdA602K_KUwGChlZ6ieqr21Yujj-%2<*Y(f0$)alyNmG4( zY8XDu=Y}_Ey#`Gy>od9ds?puq$Vex!8Y;85CUvLsi6Du0j<<)#p~vHzv8*0!0%;|g zq~hIoCuD`pVPX@xf2W3Bu9j=&M=YPDP;uq`U8wQ*ai_yj+(|3(?WZH4Wvy~pz{l`= ztjJ2nwnN^!yCcMALi6quO`J`cT+j$26#F;jEUD{&5XVyuU!;3bNRag%inAnD5Mh2&`c?~*~pM1lJAeIzt#x!8Xt zPjp4nQl&e~DxaI5SGS)Zw4QlLMV`42yeZ%z2OC0%g+Fyh6-J*xjcyV7(C1@AdxW(C z*&`Ge<_nkzgL(7Nz|9GQ27`I>5J9>UEFN`69kvDBVW5ro-gpZ%%MLs^L(_0q5QOoH zKt_$0`w#E*oW^*PiL=hiBO;A2}N+GoGQS(LGe3@n2@mu_o}F zfL>LrQP#$6gRx?^FO|%F3#Xok&-&o~rttSsYzh{~sAE6r-o`#ITVmWj>7_J@vv1To zGbUH`1~I%{nBj=yv-P?ahV4<#M~Ol%==^@efHY@=_D0_d$rHTpJ%E;vnu$?=H?;)= z{x3~!0DLSq=Vrb?*-o8GI6iPE+eeYbs=quM!{1L;Yypk>{)N_%<{yG9vDVBZ*0cl- z4JY4lJjUJ*Ux}*XroBt_md_r6ent$-PFEqN?Kb!Hk5;|L&fltmUx^Gy!EbJHg=Lnq zS)=&V%qQJs(r~pFa>aq&lVy^KF9&}J_WkK)jixaMqTW46N55$ns# zv+60D=3Ho<#H@3Xc}DD3#@30n5^ClGIQavfcobN)`Ri_wfZv2X(3ro=XENmV4&u6Y zmC&;rR?kUJkyD_)X5B66yEF7vbAS|Haw%ycrX`m(oZ9t}fYhX(G4YmH9X~@XLDYUc zbBQjgOZvPHke#@JIRD7wm>LFCl(|`wtW+M!9lcbU*1V7T0&CH4;sG|Xw61+rX%&+b zQ+kNOU+WOa!!&<%34v@v>M#2%WMGuiVxrl`OG^P1M;2-#J*~OBjH*TfpP{2(*15Vc zbrG6BgGef@JF{`|Rz5PW2HtyEF6i0;z#>zhPAniw?r3q#eD8Vw)Iri`BMcXZIpAOkezy~tHPAXDSql;<>@BFNk`)8*IVTz=Lbo7NmMGZNy7OSEBJ z2KsH*lWuPI4CjcobS~avMgy~wYns#H8e2gQBz++=iTHd18BK{AGw(`7y;6a#)Lp@e zGyE4bvzS@Rq1gF6d+cmN)O_xGdn^HezjTIVHI1niw1>GkJw}ZQ!Idqfq0_OtFjWy+ z^iROZEX#ffKYozf22ylSG^}WdQH^NV-JUaYZQvHq&RvtCo>USDIKQf2<&x4}bKX9E zC^>aI?{>E4X@G$7v@?z}PUMiM_jyii5^$7gIPZyWUuSzB<{Hk}bdtq0fwevLbF=MO z)v|fy1=eUgnq^xTIMJIJjpB@{#HuP5Rc%N|rdm^beKmS^F{>vhz!CQ zUFS5&{c|18o-|n*1?l==fHb`Kf9d~eKQ6s5rzU1+^#VHd*)O7+*Ve01o&L^WxMri zxJ>q$7%OcAla3nCBI!2nB z0OL)dp1lHN6kuB1#n`Z0`onyq+ohB2G7Qc5XJ_t)S#s_%mBC&~qQ=Ap-3OwgEohU@ zegAb9w$UVTs4ayOm%6{ZY1Dn0wPkIX^*nz1L8|@gs0Bn~$}zI37KL1ls6AHDvrR3P zMGrp)spf*#!ce7iHAx%IqOLha!n%*3^I9o#tL zv-tA!jO%W)t@9qHcb|9~JOi1oZHLJ}VCMi7!SWf?N4eVu8`r_QJaE=BJnqw4Tiow= z5`ewJT~`8}f1FA=RURX^_~@17w`s#gkT1$TJGCh?;P2DvHE0&?aW9?y1v3> z9OOyb$o$Fj)A6x_E`AX?ah5mc8qa=de_^F^$B5P=;9{A~R)nMMho&yb!2ZXC*pV2t zNPOt~!9;!_hWPr_rtUieF*9)cZX<>h;xmGv{DBXYA0GBGY8k>AbJ$Z1)h&FsDr(Ch zL%5W)DQ646!zxT@H6scF@jV-f)g+x(Z%Hh8o?uKh05;8#g6z@WAQt%W)~l43oKW-vWdJl%H~5`-a@;P8d5%#OS?DVAU5V-EC93Zo82YiX}Z3ah^6R zSexq#kmBZlG4c5!-!FSGo9(3v&3$|vXX<{%lxRmcN*8^OX*SWMmsrZgZL7Dc@$~ta z(d%o|ywMiV{$ z{Mjuv8@Do=MP-KT_Oe{-7woa3p1!`S_oMGoN_sHH55N($VpQJC-?pCCF!rO;bgF~P z0HV{_4SDfrr$n1KjH#=tw7Fw*$I=4nR}ZwFkvVvYcA7Xr_jAOu)cb9iyOIcX$EAu! z?EpEWb2AWvj+uU)T9^ zW?!-+C~&zK6ks+|fOG@ZrHE$sFBn0QO-s z+vFu$ml3@``gV?&8j=BAPlk-#Yjyqbj>D5H-3$}cYJu) z2mH*DupiyJ`@Z6B%TqRhzVVIWwZ*$5)pX|{i)SnQ9|@f_t38&d36Xz{HqUKa@(WsQ zt4+eDYY7eXS^%DGw?LKpmR=}l{mQ>nKy>G{n<(>i03jSb-!OmVYHMOaoI$wfhba$R zb(;=%zCx9C7mD&9u(%1*E&zxkI%FessOZ!kAhA=Wq7O&8{Ak9}tt zA`*srWbvG2a$f$wuzw>|r_lSMP?$VOUQ zJeslxB7Zg#MnLpL>7kp5?F+(aF)M=`HZr&fRNJGSh2x=xe75!fdczF9QRMOE`~YwP zXp9+cg-KB$Rid4OOos9gWRz<0-HB}3c@ZAAa5m|<*3poO7WiPF#i=R150=kbe|hO! zrQX|H#1G&BzmLs50FO8L^EAJvWfydpQ}R*ObaCSTZ*>O%Xmz$AG@x zwE*MrT}tkW)?yDoue%~Ao@#A?*n)MqkZX9j>-+qs;2rx0HoqBSy#4|UIHpz&RpE@N z)(J@-2SguV1cmjOdXDqlW$VGF0`D7&dziGLZ>)k)HEvtG5qw<18H}3_y5psuru+36 zC_YnxYB%rC_7^;Hweu;)ffSs*1`@wYD``GGB^tB_maym9FYQy8l)s*@jw~9%o}1%8 zwT^0c!a`&3wLPwHo<=3V;{UU^h*yF3|A=2RuCv_J1Zfx(Z zGwKh&I|NDYGX)m`FFR#9E5gff4RS(*0RT{Khh2ZsU`$32ck@0P@>CD5lhP8 zYH5uae9bPR=hXrw@3Mn*xAL5yF#bJJ|H|Kh>Ukar_gR!c-A7og-ist+E#zL}KZMyw zHG+g~hPBS^Iy*X`#mu~I^VQ{AXM*vSned^8B9WH;sL@@U5QE-Y+PQo0XM` z;Qg2P76M<=0))WHPxFsxOx|%yI9$y#`8{cKd&Q80vnsG`v;Y~|0O;?5GoV8?9QM@{ z-#0HTw-88>0|O_J{|TH|R^X4vzZ)wcj1*!H{OX{3HdKfFc3n9EZQCxUc;~lNrUqzm zReJZqx6-v2ewL2DDAmdDCMeGO*ISl;!S}Vjpn;m0!~QDDV5WKZ56lpcAlYl>s6HoV z7&}&j&W=3dH3#*+N!^Uwb^NP`Q^86XBjKF1qZtCz6Yg|P+F$Nzn)>4Ul0tXddu^+1 zmGmzSTqVYXZV4nnxDIq{uO%dbbur;bjp1X`>X`WAXk=@|4%dY0WOA`3r}rKK0Cr zOz#AeOX1ZiaEX*Qu+}o%#9MB5jI$OeS;RVRa!D(0$wI{`c^frT`|MqZgnWYB-BO?t z0GB1^H)~MEvbFyAbv6J0rS*W_tu7RmR1t!1pH%X!dnL-Y+-?t}6H9-PyFhq7>n3Fu zO2@GXIOb6@GpEl0xx(8DK_5JiaGh!7nX_%V-a{-1+i~ma@(~MN^Vn^SdX2GAcyh(o9tJACIw-#PO`Vr#$!u@(?ne`I^H*RlKc@~4!*_gr0eo%UmAhuo zv1qqZS(Izt`W#ZpU0%8JcWj9RZ|muJ2|zV${)4u;$Xh z3l`2*9nyHbpO>*`=Ds1q-s@}kqvc;*{Pyx4f!vvdLw=uU+^C;M+=aKf4-)@BzTP{K z>i>%$zji~2GBQI(s%w<(A}U4E)G{)%lbvy0GekyY#zh%LxQK*%iHwX}_NI($ugkr- z>-&^G@6Y@5`~H5vfAVLq`yA(a&f`2Dj}x%(iH_#>^rs}JIst8}({PBJG@#FQ_*c69 z9=R9r=uAw}&84#K52&j5MzFTcQQXSF4VBzmrjF4n3jeWS+qG$DQFOOUlbb!0-szS+yIlSracTe+`_@fN%A^=&$6~G;J z?!e2&987dc|JQ?s<^4nLEB9`12HgE#u;ln7#|hWXy2|?9wrDmh;|QnAMWk!10f>uU z{D&x_l|J|DAUT0_k(pDXc7kWsT^Tg|_e};`chxAe8q>KWQwYzZmQl?=8Z;EmOIh*l z0x5|@eGSSbhsv%zNl`_YT5tcvS+L#D>3XeeGA0vuq*dlsWy|k^mTXto3yt6JqU1$A zA1}9$@WqX@mn^roL|vLe`&wTt+*)plG#@WlWN$13{Vj#k4a)9_2uUE$lZ_1yRn==z ztZfiuIZ~efOvzcxo@2eRsv7M`=0xhuztG;?A|B{2%{58yKFN6S#=6xp_G9iw85DzS zdwxVE$CEOmOpi+H-Hfe+dJn&h8HGMw^cPwks$Y41Ph+Nr;%lq*aXroWX+*ukp_Zzb zkp&`mMl^FnM+E{utpyhe<8GH!&am z(-Te$hn4ofiy8EE5|CCeCh?S?CceiD^$1NT^`9Sh^7p2%y?ggrZ56NaO0xbps&F0b z?hbX=`_eqq)Px`1rSD+ky?|G70L*bx>!zyNTH= z>_nmD0D6qVo8W^9xlXG7J+*<%@1;?O&PF5IcrWk8%+z3(9b=ux0V~W6o`_^kUiGxV zGTy1Q`id)fZzkN^`S3S+>Hq}pq!&JVH~e=n{b=(miuyXv0^c~y%5*gaE0G^uaX~9+ z$Yp7s78C1U#j(w2{e9N$o#mTraPBJk&|vC*$TZONlp=&m=csB{WLQ5h649<;ZNN_W z{;!2&fUJs86C0YYe;F`13HypT@xJEq&8C=yX zMon}U%jE3$HQ}vNGjuK0o@mJ(T~{y_Y-1YYl6jEQTU@j<^sw<3hQZwb3R*LEbZpEs z@Q-J(kW=tahTbvA1Gel3wj%lr=5`VoUNUC{T`^C3K3RTLhM#$#)tFIZ_I!A{jTiiu zOokUl=nE@eS(fPe-_y3YXkx++bHByjTDZ6a zPTX%)g4N=wzB~FxHc(Tsg|^1$R(^34KDL_u%_J-Sx5ExG-$G!z@6MDN`b85;ij;ol zo^&uU70XY}S=k-bGYAmkEo-v15w!Gl(1xi^CjL`%hxQ5i%-3)$^YOwB%Y_3A4sr2x zN?w;y^byB6eOR7~azqJZw^mSGq=y&DU$+K7t)2t$fTz?ZwJvrg-o*5axejU9#fV6W zKXjfQ?eQg)`SU15SNqbw56NfS;qP_Z}k6DE7-v{}(;%n0r^$nA(s#48=b^i9^* zw}-6_Fyq8aC90CVIvrHCm96yVeVt$Ep0{yDp+c2dCS8m4N$Po<{*d*;Y0Mte3M5J@ zvnn!&cKr)ahrM_!K6#m&OHze5@~w`%|B;xStwfZi zrv=3hNbN@%UaJMw-xh~e!y+Ri&%|o29LVeU{Wv_ZXrwJRT796~i*XGf0mq~fA6|R@&2Iy=wGeVhOg0#Sfp=%2a@#47m*=*L$ z;ZL6-lxMQBuP9!lYt_2ZbW$55(@E@{ zo=F1j_XiF3(dQbKvQ+Ltr4Jg&TsK1hEJwfYl;y*nP4hU#FfuaG{@z}=j0fXMm+PjO zrE5+*Da$`g8j{$MyMI~tAh&zK_5IJjwqJZ_9&)hO5{{y0;`i__Ib@$<5KmP+v~#A? zLzzwh9@^nGnDg=3>2@yW=|S9pHhh->)4iL*4uQ69XK<%Lk7<{GmAG|A@JI zDKl}A{QE2ULsPWP<)^Pi&n-f68lt=)k4(xgLg3%k4LXf z+wE@}6UE3WMDL^Y)9NzKcpxf$>*FX3q}g@{^z3ezUbP}cz0~h^ z%SunjwP#wz$ftN2j9fE;*41Hu5(+)W#rW;c7?a4?`&6|Hi#l97;{>Pi$BdeA6t=Cy zw~?`H7_njechqGl+3U$H-*<`)_x5Vp>u<0Tq!6`+Df1Kug5i$)&E}X&NbD&%Vt2aT z<3^bD=U^SgV3UWZm5A)8tBo<&wSLm(4I^2lPD?NaL5}zS>e@*{9|=fk&aT%hIeJCN zpalEWNJKFLP|lbw(ZgMrPHCWGwmV7YKAL(^zXJSz6m;K)gC^sI`{IcKKpfMc-#1n4 zH$afNl@dGvtt2plMYyF&GuLe73}@2yx3stB=)^XIm!xMt1oCcBho-%={Fxd|EL**# zP;RzUED&sTKf2b^GV}*R<2?n^c&`n?9s!5#IGcVVL>3=&!D7h$w6uGJI3USQJWL*m zowyVUA6u*M3o9x8(@Q+HgmKfs8gb)ij{%;DGm!V#SLdZ8jv-tmjk} zyPZuDweC$nqj)%mu57&{+EOdibnm^+<3(XNI-?g0^C}{GAvdY>er`+fm1bMOpK_F4_+7?LUXUUyA zMAHg-q}h%+p5O~rTyY}SQk>C!ptVlm)+rLzJUy87C#TjaLiq$w|#nE@oOvb}PqFFBF}A z%kpbUZcWDTrtt3fiwr;@%139BQ?c+UKTWHh?;@q98~Sz1yR(Mc_O7U?5a*7O>PfJy_LG8KzuO*Vzmce9~L_q_WyA zlag)1Cl*zaWf>}ede|-^F=hk5{ZL_h>8_~2L9iUG;DCcsJ%4wLgY=Fy;M{<|tf@0J z=9nXck%<1da6XmCzwZPDqNPP)*#Ki)^b zgKFqpZqW(Kc+-N*xA|x~*cJZd{NczGM|v5*a(~dFJvIDb%Ju?YQ`c0q)vzFK^57|5T|hdd3V-(84}oxy-0`*!|x7JJ@(KAf=q!J4w6N z&@A~XyigY2A?~*isEP#rW03C_bEJke=W`uI{{bo!1hRiqklIF@fkMF-o9uq^dv8BF zttF8B;UnSb*{k7jdNG$6MNX2kf`zcy`WhkaFaI8U5<7ltJh>a#N8_htW#$+U96e4r zULVP^q$j6uxEO!4Y9re42uXL?==VE_nHNo!4@%e{Ejb)KVB>UUMYBxP)D&jBtZ~U@ zjqlDBJ>*t>7xB+@Re)Ee3%GmM-O-X20)*3-om&W^+f_H=Kv77*L`P-n%u9h#zs zaX^vScO)UFE?u2G7&Tr$cDL=nuzZsi)*Lt<%xNbJ&q$+QlHyFIVvon^pI@|`Zy}dB zgT`j*%SRSScW-3a(7Y-3oCt>50%Uepi zjQ6@xHPV>+tGw*mS)KOd1XP3`KPcC9jbMFf-xGHUskhSU!Bp(59%|VfRP7O#;is|0 z+p`A)nzrWco^?G;CmADNnT&Xay&7>o(|KkHkrXmC;nrI2MLYk7)^-Pjx_t|k$rT^P)!pc_XSS`+w@}3si=CSvyPsBh64CVgs-@WT0{Q__jPv5ks zrTG0g;Pcx;7~p)Bvjs%xyUehVGv|BOr#`4?O5I91^LYQT(3R}kv8plWqLEMohrG~6 zo!|qY|IAj_N2Uj^Q`dl&^jZ`fr>jj^aH!3aTpj9A>9A<_czV{n^g-@T*M8h?}*6I@%CxI3|D54ng6%&0!K z8uuJ0mmm6ygcYCh-r2Bo8zj7*cBqlMN{R%9L6@AOD4}(q8-R8mn0IV50rkk6hrlFV zi;a6;=vf~O0+-O&%%TfK2lAz*F@w&W+O?*PlZ~g=kKVr_!d1S2%^UZ`2${V+(muPSSlnt` ziG3|E?f=pOiDpZZ-)My0gaP5m290$w@Enc@7@n2#p|Ho*iW=Nlb-uxE1M#u{KUM=zfUlJB!?THM}2^|4M1xzWs%%_y%d2){Jr7z32sAm`7>gjfUKf ze$~vghzxW5LMsv@c>6H~vL`qFFH({)f=IMLKJ-z&($2Zh<^J8|F0TCYck8KFr9WJ^ z;JzoJ^&)7|JM=fVao*vIme+x^$%bK01wOL^)r7g^BU?WzG>pwMR&h{b7~p_-NUdF6 zEL-H=;%o6y*u_n*{Rsj9j%1TJUF=q`b|@-d8LG`>{x58jju32}UzfvZ8ghTah%dm)xirQ zwrXohQRPH5v37Y`R+zMmWL=_>Zflp6f|~u%WTcMbC?afYJXSrmqZgW23x}MZ|dM-P0aTl3pMwt0^M$0J;C)uGb{jRSQ#*PmuQK_IM= z4ty%C-=F=|`b^L9DL7z~TU*v&T?ZlU+XJkUGEd&B8Kde<{Wo3HFC29`k&86X|37O&&x`$&2-f_LPTF?Ck zJ6$T^bnwv&Xwu;?x!=`!jjgo zO#7QXo}4|>gQrs`J@IF29~LpwtdI;Qib~}hFJ?_-OBV)(nsA`LF&@ha51Wr)8g@D* zhBmQhYbq1OS;FrC3M94P<_RJQ5p?9ie3T|}MD`JcmARmy1()=$iQ4+~os>wZ0MzKl zOD;%@(fXD}`kHS$ZG(3-W=+NERjZtD(OBDRvns^u->;wRDxR=~13EY(5MCdd)z-L! zmR0e_qf#6afmRq(Vm%=>S1T$*AE__ztyBM!laySp@uX45>d)UZ6;ygm9}#DcIVCnE7W5inFjgV-n#D2fRq&eXzT&Gp z!)G0zzM%x7o2G8U!3@$7ui7L-mYHC8jNn2VrOponUuf`3|6w@BHBzy$6uwJ6y5WdY zpu)$!#?*v)S?|QaX++v}+)~>OPnxdg_*@lqhckj2y28+cK7WwdU;U-Mv!ZZ?W@&9G z`}~!pObfL2jv$8UcX`@w&QDh5@k-KMc+?=B9_n8~zi|R*zpS$B;sfHzKL$#3kHj0L zY^bk|E;@29a&23JV!zDdB{!)&dGc1w(ekIYJodNKWH`Tmo;)wy?V#k-UjDJzF!$#0 zov117Xr-9(#9U>=_D=t=VdpH@U;Ay^nt;%*ct^cPYhO<%_in_rc5y|qi>WD;iZ#s5 zeV@@QF=AZ*a@lVP8p7=FYL;NgOxIwJxftTlm;@%t>=8{pVONVgU~<`@_b-gdrv@H$W2RTLv!u1^;PHCR#E+aRBlvCVW1 z)M7`mz(&)FjJSA)gm-@L(V591762s7OfrrxayE1CV+MNj$Fd+PR8F*Lgbh9S^1NjPn7Po%kj4)0x__-}-I;EJ-`Cbke_63Yb_l!bBru|pu0~{MP_FnjU^m@`FC-WqSnp*F zZ%sNWM&dyW?C_ARq47t-e{t;JL5|nwIq)|A4vJ|uE>hGy_5*CY#%gCK*l05Br}~rS z#;^;>gN=>&8@@CZYXINxokmXp#z2};N#1a)_OkyB61n|6Ew7^5?ec*LttE3%OjZ3GNoUp2vHY5m+(E24{SdhDku^Th5aLJ1 zfxWJ&{W9R%5Dv|NK+t?6WI)myQdn;q1ST8_x2q+ykQn|Pf=mQ`oof#atp~g@0XhNO zp2DTY&jyjx)S(3zVIi(W8% z`>;(nVJ<=A<*-dTWqCn^~=ELvbF2{Yn1IEbYT^+);vyymRLVjSV2LlV1Ca!q`k z#b%n?@x<$*UXlZHqMl>Tnso{mo@2$ood8@H)mpW*EMSYVHKx`mN*wk&+`9JnyThX!7f#*3#T9-(pRIPj;#Q5o z5z@23mnPe3!>DXwH>ttroTMMrGsq{Bo+fWDm0u7aF2nJg)Jod&w_i9-u_5%nB_D+t z9Zd!qkifx47(^g*#=J(r+;*77wT`{+*$+MzNY8;k6>7)iL5Mwo_;dPC*Ip~O52`mW zyVr^}TRvDeD=D%5%gHWyZoiA@@02GV{Ltt78(}A7P;a&*!&~2Pz4<=;Dc-T+g*(}w z4;VxIPu2f>O}A|5db$78Q#nNBpd=J3e3qE;cBP9|R0E=QbZ@nQxzke!BN$XH{ol`F zY2x{V4uRGzt0Ja%m2B-2z`g(J{o)tWdzHNCKb3r-A*kfJzWl#e@(YphAS`|RwfEFE z|NpCMZr(ZxTvPV~WJd%jDTA-E4IJ3l!~og5Kz}wXI<<*sx8B-&dV@Qh&ovWg`A#vx z^RH7Ku#E~8WR1pwJmMt;sL)Xsr*r_4DIRA zJ;~JLGaRG=-FGho0R>Y^*kQbu^OWz^D%JFe-q^Y|;J!W;eCG!jFzNJHg*6!)HpI`& zlM7YU@SZN?f>&HIRm#=2G!styVC;!LQ(Dc(bR}cMhlxT}c+<($y0N-HuP1PV_|34e0r1z13hms=L-(9zhk+T|_GM<&D7SU4K+slhyS}~^ zL^(3)Rbu=n+?$tdf6U#=c%D&xV?yBqU@9d_@6O4)+>YOv>z*lHl4VOx&4+e(!#Hv)X6scjsxb4m1Oe6w?O?WD1EO1z`Fgphi35+gEvc|wj>{0Y$4^zR~XT!eT;Px zFHN!-L9gbZHGIXM6kl56&-$r*-N7u1_o^r#>58qh-*j3Q{G7Ad^5BC&__Tu^>EvKP z%K(7q%pwQ+xd=09;|G@b?MO{ZBtl1}Kh)kiXYqlY1HFUSi6vsoeOlthAJj0+@L3uW z>72^rUttF$9`!P30>lh+l`9#A6Khq32P&SDY0H@TPrTP%y`Lv|?N+Vd78Dm3wAp$! z#LcE|i~g+8iU2PZAbpK(t@me>bVzscfnMKC9bEcq@HsIT)*H;HAGEI3>O7^Xf{}V! ztrQz+LTgT*C6kn~F>c9iq(dj=wb#~Q=kFt_dFxnE1PP}wZ&|&}3Ca&AL+AOB{;tS^u&otwTelC)Miu2$_{S7x}bAi0wh}!cFG=;(z zKeJ(PeZ3a7Wc%s1~+{=mE0NcmIXR4rg1^5|oJ`S7ErZq|^%I z8+vPqK0K6H2v@g=8T6MdPo9;Qa1;ekC^m$f>)eIVtDUgTvyZQ}PZdg9xN;wbe&RlQ z3V!^_#mtRUQC-zAmTJ4U_!g5s6lynS7FPJPT`#+3B4{ z{m@&)FV8R(hmy?TbE6!jx(}ajATf}DuakJ95U)0tff&rqO*Bdc&yMy@C6fcXtigSDHe(Fsa{vYs!n>66IIW34k&!?A^X*c5Uxi)L<@8O8TwVu_8XsW0|v_@A-co`hdpB76e z2#L)zo700my*!Jbh#$9yQCpQ%q)(R z6UJLVL;;@)fUInT?leGUadY$*O)`7|f8M7g%t1Q!w-s_88RIu41{T14zs%+5FR7fQwlXl9JLMY<2~01TQZw#u-ag?nS?hOt*s>IUof{^Jd=TJO#@YOi);C5-81Ni znrASH1Cl;hzjR20CA&~W7a(2uCxj<~5dMsh_AvJ8vt|iqjeuVH=Yi`3p7aLyh2OGx z#`bsdD1~=+0)J$c9)TzuwWj7BD#zRL%Y>!y>T^cV{&WWWTcfuwMmla(9A4aqR1_6R z>#WFWOHnnskMxc0Ocy&bO<`{D0IPX%Q7jZz_5vRDEwE&e=|LYY|6hU zqKV@A_3HzV>5bc(tU`uY61FCk-QsVlD=+&s~J+k#e9cvtO)LQKJQhThEFpFYDl94YqZ-yzGxP*Z{FSM<_o2@B{}LKU zFq;np?QNI{<~7!(;up2hVj(1|zOt_a?m^O}-ZiblL~a+ToN;?IpGAPz@{Eq8Xh2C# zhkVt;lL|cFHX97@>{zLOTKc_VVt@&qXXUrUyODIT4=R3U7iCGx(wjpZb~D%cnJM60 z#B$n^HP7SHrI}VPZwL!J5PelzAdNcobyej~tDvwyz->rSO%@UUC8G6&)9Ewx+Z>5O z3_~iyk64%6r5%BNU{dKcQ`0tO72Ak|UEFN-1XV;Mj7p9Y_VO6057abv5p?%|cxh^k ze%|Jv*5GG57%8-vfA8+-1rPkWJ4Z-AUck(@zVf89`%N%(AgSGmFW%eJNomFKC5H|r z%yvgGaCq5aqfI05NgWzEUks7Gsuq9UlNKU@9{%!W@JZUTp}%lyEVjpzQRRlCPP4KT z{xY2*z=kVKKMW@)mt*@DusreG);Alhm`Lvl#@7smG2LFK;kMZ_ec|fS?*=4iq?)i_ z*M&?f4Vo);jtd=MK3!D-#uLB#MD_|FkOYDF!PP~vXkS#!u;JumOAzWSEYCF(?@l#f z?{JfzB7C;+yY|w5z^X*#FCTvJYW!`x^Pvn6EKmF}t8hsdlp8dh3Za`xzBBW^CUNmQ zj9~#XZL|kZ(eJ@i&oeZWSJYVuqCrAoJgecB9}49-yQf0V###RS!u|rDF#bZ7a&CUX zXtNS`kcox{3{}u4E-PN$=~?jybb8=3bocM7a*_Nf9ZD}taL$yEm|pS(JJlR-Oq(}z zLeoeX%yu4a1DU%2OC@^qW3UAhvC(!FKVn91T}IWYIHwAsm0ym!H(>sWjXYy)q`66Th(cgEz6m*0ATV4 z62>q<+R0)cykETbie9*CX`${rtiuRn%m(5|7 z3e?y@esUTH8Xh;)9s%%MI6T+Ob7RU+|5lVaO2+52C6DpX+uo%X!dDLEgUIx6unc$^ z2m0ynv+ok+TadgCw5SicPiMzFURazor^T2s=f~u%u-~E`)EwpwG%#JnyW(wTQ}EI3 zXNA*s7V*xS12yUMqzraN+DV|asPcwtt_+}YIWs&Wgt=4T;6#GwL4@!gSc%E(#Qwm= zP*9qE#n@FmaYw7`qdxsyR1Q+P>M*G4UGyMU^4& zaB}1)vXUf7^1xVYS8f@eA)vjwS8|2@pijPI8g~KJ9YBM^#cM%M-B;lMBGCYz0A2U{ zTG|_Vh!$lpJ^O2}bZqfBuOVPy?Iax`@n-4gxgI|rb)>cBwzE`+sPge-x$KP3%F#pn z$IA3Yt0NUhW#aSI239&f=uk1oPu!>PMfFhv8_!7|CXM)3K{p~I;AmX%#RLNqj~lbU1XP|PY%s@YDCnLU*{P9t@Y#)z;oSPcIoDh z>)ooijs#h>Ir25|9;mxd^|iGIZ34xyKMMiSsffV}WF=4w%=L^QK({sRFTc0`JAiPS z0pJ!-i3~Y?cF;LQLEPW2@}pWm&NTcf4q z?Qh>|WJruS5qv=Ey#;Cs5H+5XSbqfWH&Ai)i4Y>d$=U%DnjA_ob-q{;FaeQurv&{pZ2Ad^wQbSGGPEmLa&SnYGjm>Bo$kb zrklaWKRIMV84Da%8MTWt5~p4W#9e-Fo^z=BRSdL1LW6VjRb3v}$xU7DOmSH>B=g}v z5J1l^KgJSh$<{x8j+dk8F9$d6H1rUA>`aQrf$Z$2g>bLZ^2w)g`#~kbYa6Wb6#Z)> zHyR(L#Q84+4cMW7hujSY+@wuK$b_uJsBkoJdYL+SKD=*;WV+l4Q_@`TTuoLJDqO_t zldlwe4Ply09jU*7-vqXXw~vG~1*}Ti>J2>G%^8#B75xrOA1SJ~z0VaV282~;t}RLoi68ANl7r^X3y$IZmh*1+NU4W(vZ2Ar$(A2yi- zxGEgFZEv02n6~BaK@zhFYZtyl@&iASc`Sr^9sNPpua7n2T#wC^lw4Ptzo-9|Z+qtw z=K$}cLz`inSCT|WxiY(5t}T@6+#$qyJ8m11CmVGK@fT>d7x%!~j=v-oQ-C|Xf3Lxd z<+APKh+;A41xo=kF#k1%4zF%1u~y&!LT?qs9P@8#<)=e6fj<&U8e(%QvIDboJ#A%4 zb4SK>QEYJuf&Vn4L><+yU_IzZMR8G$QbRSwd4Io#tD>-Aaki)U!9U11EzSG);U zM*oUlv}^U{n2|=P-3&Gc;*05HF1@S8O_DYJh`IG>zzRaReWa zKx;6g46z~vm-E7<=Nn<6!`oK0#tsS!31 zHqTM8@uR?j1+>M}q4}X*lqAa9`ntB;iVA0bM~Ns8B=f-Dt+8?2#UC@v7%J$4fKv1b zI4U9pyBO`oZUvyT`w>>ifx?31DRFMx|2G%XcI?^Yq4*dAFiv}bv0>6gl16atE}W!A z4{KqFeO~SwQ`3sM^Pi5w?oM^AY4|V$WxWA=Hc|D=Ouztc!l8yO60TP_8LD>c;tTkO zOyk4tdfY+#tXni|L``k&CsCv?d+Mbap%hF)F69jiq{Q&=ckbe(J^#i@o9`3Ds>~)g z34pZby>;{VYf~N5$#dry<9z@nl9ty`cBlc-4M;vcBH=CQwGQXhqj2!2@(Ub@q3hWN zS9C$;1u+u*AM(>Kuou1Zv&^_?zCm$5rO@={QL}VO(cJ6PDH zoB%IzX4mH6Z+?H4_y(naBPqQE7dR^ue?65+>#d)MN5)xW+>xYi&#{LZF85}BQ@g?G^5Ma0v0t$1f?MiTQ)$ z52Y($S7i580PGQSB%IziYn$c#L^ofA?+`_N6}Xi~P*$Gh9i0VqEW0I3&B=At9}gEx zxh!_RM%ZQ~+(P0T%<Dl3UmF66np%Lp|{_1uE#qMF@9viEsCU8pKAtufV)xbc|K2#4O$PkqHLc*Ns zWYa$_vxfnnvalu@l5YDxc#BY26Fst$)>3>HL)eP!D2^+Uv|idKKUX|Wc%)Fgb^st_ zcV{P~bYX$;@5ds1%l|Oog(WwDGSUV`!oC8{D8iNha;BPgIAwVkl?#relY;(#NmIuO zE>`nGP(sSdCcf|LfLHib6{#Pac!) zndW7yZi-jSf|9HE#TxYFpo!aQQ`&JezE?%QdN7}>tsa(R5?^(P?*~(5z|1V)Mx2?{ ziDs6wWc9}knV$CRW-kdg0P)yGLAmj<8h%?p-pxT*)JzvGLnVzLpWs(wKU#x+aY6d5 z;WtvqGl^G9$t>{}30kq13-R4n{yE1apT`wXA5gg18T0+kIh?)dN5q+59$P-45L~R3 zw5^$GFwFUbVR=8C+p@^8Pq_1F7w+go=j?~Oq?wo7O{xEuy158uyl)9BHdBnvy!ITy z5yn0jJ0fR9e}Y|Nwe0~U(Hbm@yah5TjTla6C9?6?uppb8YbREFQ2}UFAX2`5^;GYc zT+#{$s^z$L=Oa{WS@puqjcH#$uYPs@yRh+VQiRKupIBp@-vJ{{_4^4~NVDCsvYh_Q z>-f7b9P>zLAj5ggG$!-n{}Qjnb%NqRH6jskdHP&hR%~RL1vG1?O3OGnJ$bvf*Z++qdLE-4J5Ni>?~C4lw*ay+nYMrPhM( z;0^dnT^)8Of3|@}oDZ=LX;es0ZsY^gvXXT_zKQ?tz;;3R#QjCFVK!a$`8W5!Y?m9P z37uRSUP+Jq&>+O+MCiQ9p)!Np5k=;-EMO<=Hcu=VyM@ls#NnOw0`EvPeN!H(#D59X z%!A>pxk+;E?nllPy#iQkFt{q9YPAk9Ctnn~-g(NQGZIpM@0uC&TVW-yGn_)qt$APL z{o){MpWyJ(Ayo^ccM*$i-xp2LPyr)v{=A_;(al{=YwwsNNjhB94Z~WLePI!5%FLNr z`?faeHTQNT$+K@ercLYuX(w5KkP7SnMX+f;`frqx6xJmBzTYxKpKD2i^}VY7Yr3E(9#!RH~7 zI}kQt!}tHWg7%_5*L%dPGiq3>bEek5txpmYVy+;v)t!6;>q1ChvTFz`{lq-~&&z4P z09VW{(8)-%zx0Ci(x@r7%xTUw_gYdPPUxK*PVe&IigEUvTa?kyQia3lpeXFmzUhU> z8?>ubJT(2-Zw8+W!gFm_-SE3)8Z=@}ZZq9;e00rBZnF^9lHl-g&W(-*wEpNIzTGcC0BVWLI#u&2l#G&gh3Q=g2wnjf`B;@c>oeoWjwrpR!Ro7eY5B^7%3SfL~P5 z1J!|%)cufxiKKn8UX4Kw+LWq_X}Q6~L;L0-el#9bMY{>lVxLF(u>8cpxu(Dd#TZui zHhEXX3SM+)lQe%DqM=91w5ItyG#yKFj3h+T$|jCMK(R`Ode41>&fQDvA=kh(r8$Ml{KNC|PvUeJ9Mrf@isNd7}zg#i0HM*Uu9~!^2 zD7lL;LjNF)lzT(M$|bt}r@JGTOyOUNZcZ1XJ^BxCEIbHuUlw?O-y3mYMMv;G_G16X zPPzOCy^n|m*b4$mcj}*I&ul@4m65M!S7zvwZEUtExL)tPxYaoEn?)|6SSHr&DI65y zo5xLixfx^k09Y*g@Y+)&GgVIBXKK2qMC@I zE1ANnA87I4>%u#j5+}%a4V&wDhut>l8!YQ&^1e`2yWT>qS3aAO&fk4fwd$mUVEUZPxK1ocwIM_n4-EuBO0M;G&k%v3bs@3~W30shOm zj-N618(wa7k7=eS{KQ+qRr=*d7o7iVyA4R&fHL-dE8^T#L+Q#X(hqBnG}`<@=S18Q zC;F%A|3()VS0^syhGhw@S52=@m3oIZ zP%)fae@n{UM^WI6Ur|p!Yn^yUeg?;SgV1rfY#;D7r z*UEz_t}zx{P2zZRVyV`xYiA^j(kYpk zy`wHabZvGGRJ?wM^_662Wu?=aQ|rRh;h2>-vw1nyrj;K%2VdEd%W0$6{o8fgmH-WI%zy-MUV)@VpWzs%|IEljEw zV{b`P>w%?)hFJ6rx$bJ}xI6rMS~J?BUx-*F+Ey7`?BNkYPq(guh=SjK&EEBX7f?)J zr`&pQdY=5QtxdjPNhuqNRBPrgQaD#+k&V3i?u^R~e|4?x&yF-&uGblDe(RebXs_5y zl|>}i`IZahMu^#@&VlmFGfhSFzK{12z9I8A($~NBcwv9S0WZ^p!Y4cz>wWQ|W&cI; zNZn2XnQTq7(nNc0XL@hU#>ovO`l}y$fy}#8&XX)$wKK3)PcD%)Yz^yYM{qDDy{pxqVDuUSXzs>d#y;Q=;~o z#08|WK?w7e9?9;@$&S?@6$;nCIEWpoXzWbtE~bozv@&XjUlpNMh6W zqVi(QgN9ZT$=KmzHXRB(_P?MnmhBF}XOsz?QNk-`M~>VKJY_TbF5!S@X#5lT0qbCQ z>ND|)iym`>MYgLQaq1Goclt#b!XLtpy@|K07Nl9D(9w#;PsI9i6-eGwLluGF&LCDJ z&3ZkbYKV4NTRL4ATFbKdioyc?KpWVAPuHwWdp-cB-s?=HD^Q|w(V`ALl1RQ)O}Pn8 zE(N%&CdIO%*f^>8prC7VK;*e|iHinn&Mw=PdU9>4S}$ zr3{S5b&hbQeEnF1-BLBsOH&HVCvW2o+5wkVy<#(_&Y`RW@z&k)PH#n# z*-IylxB&+3?F-(T+?@|COJDl)Jw5iP4F8WZ_bEcK?L~pRF0fo$`5%N>8XzC?kUn#0 z{j*v)?|~Pa40i^#9=;ZNT4@9FzNmYH&HMaA25`7x_{#QW=ngnDe+p95L0q9XDW+y# zSM&UA_fSU+TH#>_C}cAB^yJAu!hj0!y+FU_@l{9W;oQHFrA8ymyYXlQ^}FyIKn2gb z4mTYN5=P73kktti#NSunooLkdEcku%Vl0-brzs+x@iG$bR~u4$Carw<=bu9%ymu(H zPtRW-e2VDRlRJb-ZBF&R-A{>}IknwcB#Xh~=HHc;o{@NVBAH`dmnefW{7`7Su=x9c z1@cAyHXuk0DE)oDyn&Q3?=gG5x>G|C1L$3Gd>&Q+7|HV&Kmk3wIn%IGR=iNUTY%I0 z)l6-vbWY%oyyT+oDr5;@fA@SOVsb~Q`vYwh1{9ME0W8fS-0}#CS$n&*k9djI$Tv8RNnC_C9AONDHM5QQjZ$(ki)FJ(8@Lb4@MVr*Gb*+OkJ?wuLV=$Y<_^ zIV$+pg-22xAL7(xK8trRE+F;qgEHKlU;b-q0SRh+c zXblKZ6rve40}-Buh>=FaQ8LT3B#_Y(SZ$Ze`^C5vE`76zPn<=I9^X=l=$9$ZP>nEEf$An~1EJZ|#2eqg2$I^l%>`_kEQiPk80iyX| z$8{QrgpyR`zNs=}b~^xwGK=5x`@fy_vor^P9;<#5-yyhu7qnf18T(_xG@g6ENSyuk zp`0tsF(-vg1UF~sESZZBZhwxQ8(BM@Z!gs6A2}`uT$Gc=Hm~lHbt%B;AVRUf3+xxj zP}wF~Y*n! zixfP0CezP`U3A)mF@Io^j63t0B?NZ@mqhoip$wAP`Cr$=4{%&`Jh11G5YX&r+YpEk z72yboI3Mx9C&@6_5XzwQmatxPrxAK@^WDU4{|EidxarTJty6IHKpH{;Sc0DVQGp%} z?cnUv>ens*@i{P5!P)twzu=`>pLa)BxX0!AX(&9qQiIpgc8_izg-E0THHfq~F&`-L zU>|N;R?-R}&?4pk$7X50Zklq;de_e5#}gT`T1Q9E3B6I(^`D8vigKUXmug==Noh7g zMWbDYtOq=tKC|;ddpPtS`6@Rctfhf!F8~xWm%kLU$;B^nKebmE&YsK_s=o&EwrrGW zAAOCyz_&1;k8a5CU8MC_yEEX{mp3qj^84h)6C>}xcDDATX4pFag%*TW3o0E`*8KX0 zP+;=!4GXkl*o&s*6i$nOrL{J9pe+1WHx7h6n~9^2!7pi;D+x2_sCs2x&y{IpP+-oQW`U%+4&=h#+O0CV8lu|n^t~646)oRg+_*4E1NMs$c;%kL zYu@4cnj>{s5Y|tI6j5(Rttd(arO+%JxBue2)+5cKw6Md*{N;Y3PJ+fEgCeiS=ZZmu zHmGP=YM38Zm*Yw$jNRptQl{VS`Q$+&`;ViG!v``4}@K_ z6?}1ax$q?9a9 z1RtW<)PKWQrxd>mlR<1cMt}!JAEbifn+!p^9M}o>yOf|9WyGoFkuwa9>dc%VV6O5Zf;32fOcw`N^`c89Bi%j#AH=KX#Kj!&yj>a(n~I9PZjPJ?SPe zdaa)f5GjxcMqc1?ZCNRf6tVS{^^Qcb=_(L6M~~B)<8VP{@GBP1G>d+~Dq@ zskUJh5k*m~i|Ljz(af-T*`{`A|Ek2RRNpO7I#fYr>l-8X?s%%(>XQIl6$#GAqCD8v zURgL2h1`E;I2xf-leh+>LPTEe&eK^Z7atQ0<`^j|2Q$vh@xp&Fi5S2nGEEW3{CG995wW|&Rfz8b+k~Fi;iI^mC}(0I zV)%VJd_D@K6_&JwVq+itTzX7YF3pv_iK&Estz(r-B&pZ5ZW%t2a1{Y9GUOL5RaOOT*qlT>G?3^!7~Wu>W)) z^+EOkNNNRU$unp}q@BUGb`X;5-AnK(h=?8^95-#_!-uVZS)wA;*YLG1!p`ovCgq}n z$v!Nn=8Gb9O8D?SBO;D+!>`5c79KzFTUL?thM#Tjv5+>t)P>r8P{0AcGqg%}J6;Oo7?uDh{a_*!Ipgc7wmAlY;o|WCa2`{ z73xhuZ!sU&cS^#zZK{*osL-Zt+kugsfhH@G@ z6RFhVZBt#uSqV2cJi(da_EP1m>8Vic&kcEq4|ICN?XXooPb}^!?#EBYAW<2_*}gj1vIWuQo-N$PZ_z}t zUKel~%``)Z?#~N=r8($WaOwQS$1T6%jYXXC?$1nVebK2jG5E^2bWj0i$~}~EzLgN9 zM5E2#uMRqMph*!CIbNdslIuxL1FUPyM9KMN^DSfR>5QK~lo^Y!=NsMgp$~~IB`0M2 z%`{4*ljSu&7>tQGmg{lM2FNM-jWfX$K53ZcU2@ibJx(UoOoIfar9l@=l5+A$y)=J3 z!@VxVeTCvOEggi#xgmLI4NYCC@Ss0~3QWXs^DY}2ab|TM)+HDsUJpB&E%Z?PV)PhS zt4rercYZFo`0;A==9L0wKx`JpD&eY0lq=bf-7n1dN z)AsLNECi#YUJA{KJ)=waV{NL!#=0?v{@V~0s<{eZ`&z+1_sUbkQ^Bt(OGfF((l>+N z3&|!nt3WuaBB*AvCu`yYg^7&K>oqEKkmTz};4Qlm;u=sdzb&I}4h{#*rW#-QdHT_N z%k0!C7Keb$c7mGr$*DKX1E^u9t#_(qu%VMgi|-wU+QWn4VXH6}Q$*K+%$7~+L;~8y ze;rP!NdaL@#MLr$_hGvqKK_5bs)C5KcxLaDC5RI^cAHyVRX#OpDe}JtZQ!yLaGh4WB>Ula z@I2i<^=-SaR}&q6dMOX~N*LF}KH%efdYV_hjkhSNDfMho#Os!-;RcTp&uem_)4-kI zmM-Ba&Db5!Eqz4Loq6ep9+ACSQdBFtqU4-pZr5^Z+D>5_bKNgXKK(BV^vVS4wIsp3 z+ar3b)$T3M`R7&}$B`QIpA~n~aq$+JZO==C440{DE;scRUz&`b7Bur)s*#T`z1{8> zJK#C7TaWH#9Jh{TP%_y(Y^Jdz4q?lB2H=ZzlR=l)!@#5YTW|&;D>q$fLV=fb8T~jg z*Ok#lB6!nXVkHQ2w=Rl$B379tEy&DFxr1)@HXC(cX)9`BF+Q#I(o*}=dijEjp#2G^ zQ3^38sZ9ae`38ZzXPPb6@}Ux|SZgn8F37oU>kwCr+f0R93{0bW$oIG-T^p+H(&MCZ zH`YfmcaJb3mfZ?5z8?IpugSXHh`U%_K1r?{9+Afr-4f}Q8YaA-mA+qhS|XJ7H+yVrle3@FTzPPmAick4uJeXrPW{eqwyIaAFK}|Su+s|~DtJ@x` z)bo0B$$#r62CKAnm~@I@4Lqn1Gbae&AK{sgC?3H#zJYz#e;XB!it-hBdnSQn+wmH7 z_@+}?QtWxcsq1>fpuW3i#}Id-+oL&hyt?)j*K!T6pT)7;ITZE{I@_KEd+=C$Y}Ouc zuv@v-&UP(go%+pn$973Y71+5Uozi#?V!P9p@#7~g818S6krwnTN|Szt>LXk0@Ukic zuTEUXEh0bHtDuy`R@B;?j9S zmB#%(4ldLech4p+NNL>xUUi%g`(|WNGT1}Wh=IcV#ZljfoHBFnGtL$D6{j;F2U2NC z^*1S!@B^*AoFX7NM7v0;~ z)X*Ne)ceESwcSse+b_MUwL?r!?36D$F4E;~z)e^$9=D}CuQQxW8@(#`h>Spxy%0KN zu<1e8RK-hN%6P z3YwvxI_`vQX05T(7waiP;$G*bLvW3gUd_|Jk~~#xLMz_aOG(UdCitH$6Pe`C zr89GtvED}NwTo|79(@qI9W9CBFtD}u@_urScxmHyV$$%VQ8fY^$%5wG8N+GPncYp6p#K1@cw%8tQNq^3=+$CGA=&r8S=1A5v9FrFI1FPxOf*xb)TmR^|tChR~*}SULgfr zw4UIsXT5Z6S4)6~#xeW1VGg%w7#>}VG1T8b`*10L!Nn1{&r2e3ihDjin>YO+0-1xRr_ zja2nj-d&nQqHp%EV$hufz@Xy7QZ- zYs^iB&)!^YPN^8^&fWX|VjE<1NidWs_-F43LQ?M?6qMlKAoO}Z65=3Fpy9vDWm&31 z7%dxkpfKCype3jX<)#9c5HOTe?_aLl@!j<;{wPj2Lm{Pm)AZs00b*!N3|qP@6x+x8VW zR}010xF1b}>bRA+3J*SaB9ih1y@xT=3stf!?%lE}QY<1V)A%E!oXOckTOgEz3qRNd zburm8_K8f}RASLxCN3Q(W?NoASVWRKv^?S(vpV+vwoKg5Qo7URu7~?iYj;gsIWjR( z2RjY?K3j*8fOT1VPKE+9Js<)}7s0Le=&{#+Sb?y@?0dxbBzErwhypBd+HV^CVfQQ$ zhSAK=Hq<3mSw*n29bYgluEccNxD%)EB8)w+%OSYweaC`H;^*&Y36*KZwa_@n&Ew&I z$;cDfR88_5D3n|71k=7<^-UJgxhr8LS^8g;!quhtdNDu?FR^QG#rleg1^M+1g&=9zf4@lopzb~)>#r7s zJV1{&NunR+HY8l&NaA{N_ftJ(BUHl3>p!oHHpfCYOPxZ2J|-P-s+rTRhdJTmGO*~{ zWouZ9l*hnQwSZ(;)9g&<5kN_RMYITdt5PE1@~B(3h*)z4_=%F@?kUOAY}&F~63iV(>!@Wm;=qR5|1CCyfsxp;3T z3<^T^eT)W@?(4@(3FIGheEClSOqDezo4dyBX!9G|iQLp`{U00aZ!ESS*5&hSZVgX{ zQ*bDt%UmeldVpsZdYHEjl0E!7pCTfMln5GCLd{IF56=w#mxNt@s+(vhe|AFljq2rK z*KW8Pneam;FkdU>W7y7zFH_AcZ8SgZ%bnRrmZGD_%N<=z&wcM6GaF18R(SLRv84aT z@*_hbL&0&yLF8`MagZx;{#-@!axKIWun;T|JuD^xjm4HSV_Ry!z%lpPBE0xdM5tQv zG6jQoVm;A2-8NU#+(vbyoeR*llmq?e&Cu4-H{1z}g;5={y$4Y3`KQ0#bq$?t{^H{I2ltFPZLJe}h= zF+Zd~_pZXXrx8lcW77%`J%L0%&J=6&f7q82>fDer?BxoJ^~)H-Jdm^VkEG}COheRX z=YBknn;QsLAJWFd|6ZXJIL48Olc{$_HCuqJGzFt&H8B$mW4R|BU$qGGyS*zyn%t+&@Gb1Yh)7aq*BK<@@-ZGdo^-Db zf+oz|PvFK_n1N^QvHk*xZ6?z0mzO90MTI#m8Mym$%haHIm8P5OW!~o{f zn#^%b^i?p1Ant@ObY;|S_KiWj(zoKGDC;3?+BUfFZe|6=V128;3M$Z0*FT#va*&V& zf$Rqn2Yijt6=!qLwb38)7Q05S=)Qy@ym;&cIKcjYtb;N6au3EvU3<+`UG`jUStCekXTzz8IQ3Wk>XF& zy&>JHM7pTv>MJ6iKTbljfhGJ;n);HTge^DKtPNN&u;j;gV5QXQ>oAee zu~uA|JK{WhY1ZPf-o6Yqxhr#g7Dul%KN*^37y^kt27%xW^jvR6$Z!#t5MDU7`_URm z=2BgIoG$_J`LLH%1&o?@TcS)6u6AkCE=^Rv+rez;#O<6*-I zzp(Fluvdo0!iEx5aq9_5;zw}h7C7(C`s*N@u$;)HJ<gU$& z1ljy#!#3*81w_E?gx@;BU#_^Tv=+R$YE}b9kK5+N4zv=yQto@Nc+agUHO1~1IfDAn zZm!EZr{EbyUtI>T1T05gQJ8I}n9PrB@xqyC0W*Q)O%yTNSb|#{DfIoo4ZWF<)>qJ{ zzG-c1#AR zl50hM%M32QB_;XwmJ&vGTmBff+cfgFN}*1!M5V;4DcF}~{r1OJ@^_-mZ0lAMex;n0 zde{;dcu^9mqlQ&ev2^K$8b5pm+K&&x#=ovXN+?`uQ;_ZWKpHd0%J=<-7Yhrnu~WwI z+0A1=KbO0&jnE8dl0?E6v_4kSy%xBZmGXrZcMHb^4XnpZ!dUn?S`rMCi4&aFf@J2D z6Y2iKiSz+~Ym4Jn6e3?N=(n^wFz&OR!%i+48g29}_gHc9PpnB_NAs1riQrtJVSbkU zgRhqvBv>6S4BQIhc6Uaaf0D+EFA6;|1n)^zbN0^h`1X$qquQszaz9I_*EWa@Ad%3O|7_F0ZW=DU$#52}={%Z$A z9hp6hKn}tF%j;?EAo1}2c_sc09ySo4{Ok0c8yYp8BA$_kt7pX?TtmnCMH(go7{SP? zG#*DmM?DPhV@FT7syp=vibIem_jxCf^%r2erh0vq2KV0R3N6_y%PaY4Hy6b!5QIq>U7Kh|iX z4#J-G8YPZfct`+oXW<8@T<~QNp!g`2*rGEV*A+^sC>s%f%jvpSxmyWoA>XgRdrPCw<5?qgcP(mqh-2%x0^g`-AK!v#5`xCAO zBF+HtdV>l$uHM@aXKEz=WY)7!T9Xuw<@-OAHyTEOka_pbbej=RpF7{nA2>Yb=1kvKts^q;v|OzhrwNItVW zpYxO?eMK3E|?9~o@uP|i`J=^e`_I@=efWlT>Gl@`+#~yqV0jP@ofsI8Eo z)kfLV=dj1pUke)k*r~_7fpzwD%KS86Fg3%m3c}$PIAeIp zHt;GxKsioI`jeLeMFhCJIB`V}@JJm+SnC}DmA7$+Dt2{JH7={R%4GmFnB~4-X@s7- zOWz3ngOmJ=FIrqxa9I8`exg6L_EMA9K-V_QIc$s z68$)${TC%I(ujM2CKc+6DRMA%Y@eu*UkWo0f3{W3sz$4t?sbP3ceU%A)4ODgl26|; zr=}M_i+%34;yR0XlDoLd%j(gol5D26z`nP+g(xHCuEE5-D}OkgA6jyIuf0&_HX&!) z)&(-ycIa+Z=MtF>(=wSuO8VfW)me#_ouUfnipUp=m~bJqz3ct0?BR8YJduVQeFPT5lL zJUH&LXP`b_BKo-xn9{5TH2+9;87{WhOVCIH_Lui_Yb(_> zSGq8DiVnsjst<;;rZg1&eS%_NE35T%&j6{wF=g9czW%Uu?)nu+-Zr+t=f`o|$h(54 z7kJcF9z&hRKHml5WuvdCFPgA|N0* zi^}mH4>dCrTyx5OS$auF=@^TbcWo653_%%uU@!#a+`VpfliRRP=^g*us(&m-U68Zjaa9;4Xx#LpyWFrL1 z)HW3j!hk69`P>Pr?YoP|Noc^$JqqdHJB6b;NKz}Pr*23-bvKe_q^of8x))y)6t>A_ zZDxa*nTLJS+EF(b9+3=$l_}-Om<~3VjWfMkBWnURs9b1TEhDuX*z0~Jx%lOkjDsjv zDxjN$rde^F+jw&ujcLOr6|*S4gS`c43hf6;ZqrT7GGhH4kF86V= z<{#hv7bnygB3W>8C>rT<+wpTdMcu_~o8zqLTE{=hWrI+cNMtr%#4l0%`?}{itLEO% z@PA7yVT>hoVsIu9VkURrR~@~as45qRq{3eaJj|T)N`=wOnZVB2 zYXQF#M26OC-erc=0aWDf|0Erae90A|tctW|EN&08-QR1G3_iU``C@YgjbcHe$dB4qINm1?zD zDDU*H?)8c6YFY@$cZTv$>!0t8zq}iJMl{-RGT1tor=}TU4C6$cQlhbJ2j4DA+=mUr zq1Rx}IVTWcyz|SfLL|<_3mU)vz>@yj(Thhr&23>_xG?(au$*cvV{-QKikA2Yp{0en z)fpFBm0fUxCI$6EDpHvvEDqOlGl2U6^yKqlGT>p2ofxSy82 zkL022%(YZyJbt{M>XhjU`Qumx-mb2ajJDGkRMh&UsaVRPw^@#T+_PRU-ON$2^t#3c zhK4o5WI<+k6p&Z`Bfm%j`Od(e7_!Udee*^VJA*cFcfLUPuf&3AP9W+~FfAc>(X7gx zDJBvzHJk-cu5ntdUa~4*!xdUP-!{*31Gj3|blih^b1Uiwv%Qpso&so84SwHoq(4ES z)xE``b>`X0O=HNj8$B4q2y7HcdoFl*4LhzHGyeUTS1^7s?7_B%`(pcH z96olhYF9hG>e#1MLPXw18#E+0c&H%gq{(u6xnACoX}H`|XqE^4PwQFVz7m@G-qI6% zgX_*o!%QNp8^e>n_{G(wGQINEkYd{@c;E*^KTdOQ%F?#K4*{#GPa`M4EYGzlgdPfZ zlS5htugOHKy9Sbn@&-(_=RwrOR)w%W2gt!)%a|c&8fOqV|MC@k2VdL@Wfr$GI=K!K z@Bp;JTEc+HQ-NEN_K4C+YFM z>=EJPu}#EMWvb&f7-0eB-1ZFTK)K^sUA`FcWINFlnuQm7k+!)fe1mHSvqkek_xogB z3W%uh;N^mqE}W={TDO2mYahj1_gzwIn~O|Kn-TsFe>I-!vgTUe8Vf$XMANTHwUukECZOa3XIHl`~53c3vx&Z zSQ^&#)8edjrQ#y8$X5KZlrLf7zMdvSM%r+5Z2}ek{z9`x6aFmxl;Cs|Sw(UH6%_?5 z%d7T3FGXDFFx#T1q^a=U9hW!_Ibw+ zE!;7eVXl_KM4J3>G|e}Ii3=zEG8y7@u;X=GH$kC)6?d_*z>>~qPRSu@8DSaM^<4gu z6gPzZx6kSY5|z^#MJw@zf|j{OKZq^#Xg6jen3@-w=-NX?)0--A!t)EQp*g+fU z#xJ%%TiRHRkK;e@gh0hua(`raMJXWiNNAi9s!ciWBLypk#$nE(;@%NwuY_&&8kz0N zmRVzG7RrV_(vNQ6_j|?8Wf}YFBu%4QS)3lh9^a-|>)rfO35z#y&f8874=uMI1h3kU zVRM#ujEBI-_5gL*-8pHk$*D6p9$oqE3)h;H#JeGon?rG;>jzKf?3KE)-^9}I1bi@a zNZBeSTNf^!kZ@*sZ6BN;&q6k%F05?*$g`DO_E;$>ncH}W+@cTV1p}H2J&2s-R`6~R z8U@-&bksctJ_T_&oMXl=F%Y7xt+^q9_Tv;^9@s%o^9-h5u9czn^&Ml~!=~phMEH$d=)V>BDLU1AXt5!f>Cm;Pl_ruoW~!J+HRY~; zirf78x%ME*e>MFFn@Q1EDy{X9e?(dgS0I~(#%aV{%2SYnf?dE3ZUK^aA)L`>(lF+^_7n$%x|!blAFG=vCe2fBzh2*;b*lEiwTm`)qfjjxoN@W2=rcrMBCp8R|b{ z@0lRuk!GZEnDP$hG}*lTBNJMBa*|gX%C!BMJS0Wv5c=0#016(94pz7fYS$0Jm}{^E-B{*({f6T z{DV`^U=;ZkbE^KD%O)ESB|rm9g|G5*2qwy2LH9VsJukkm@%+)DWCOK@_4~l`qB?r zdyNQY`dB*qOeo=rCy3;@F?0PIy62@R#eSa=ulF6rrRaS;5&ZLtb1`AYA!Dez#u_K*ZAV1CIURR1)+vxb|&{`{2np zI1EOx@q=qVgAXr_rlk(yJ<0U>(A}uxjWNh)7S{3dSxrzCbCDO5)>%v7bgdtK{8(!R zKt9rY{Bo98Z(A&RS?Jw)ePXy8dkP-9pk2#J=NJ!u(75lS$tOG~9d+;%0}Pl`SOO}L zbtKt7L;@oe5x)bLCuh`OI3?TZEAjA+s6l}>jzJx_3A5Pu9#&JB zx2~9CcTcn}$3#T9zUSgQZ6Cdl5OHbFb#4}Py1O2|F&XoL^s+ab`Ec`+n`CFT7gJ#VY^V7zA8#;TMCk8O{AUKk34e@F8UBv)bU?RQgW)qKgnAHO zLpz-JqpkLW&;ICh8zEBUMEs4L|6jS{P!Jgi{gN8tY8h|c_7WAGcNK?NR!$HofVb(7 zB+(3XvE=H;t^W$TU%G?t(P{?!ZtrhF@}HySyg5=-TWodsv1Sdh@@^weJ>Emq=o1T% zG1nBl)j1)e{Nr3Lh}Mlv4yDkUOnHc<&!7Lde#&jB>=F99yEide4w^9KXQ;6n#e|qj z!Xh`#k|I*829Azt-c*umqS^N9pa$X;=eQP_IHLE6X#Cvo(foXj<@e@%d5-7CQX0)) z;#IKGteq}@tlV!_TIsg%+7iXf1)pLbK8Cz zm0mVnRaBjVv}^Nfm%eio&WEJ>s|B_{H12|+Y+*FRvSP*-i(pXD>BCHIALWi-KeE4? z{4{K$R! zgP-S=Lf_BP1e{j!We9jAT>d{v=id*RcfNJY_bd!L#`IS6LJ$+r`KvRnVLIe%9TV#} zAsI~)`!nItwAQ4VaQ{a;02X&OH0G4g*m~kw2kqzn%A0?G(3+{)f-JeIw$%bgDd&Q$ zj|Y^^QiMq(Jv3@5FV@b*)hi7-W0E@Vx<)T7lLyHa2z5V(nXT52dSrKJbp*Qk>}?A? zqU)ggbDymcBZ)eGgp`vzA32}KGR& zdwA^O+fs3L%a~yQTTp1YrH(fHp@-2b?~9p(DLOwLxldhxMS|rJH3V|=6+3zWG5U%F zLkH#9`^XvmE>oY`eOESx2d7PAdBv63%DkI`nQtCS$Q}{-ejX1aUjUn(nKzhuMYJC` zn7W%#+Db8nL9-@dyopDLoSH`kppZg@SnlLb-hN-u{S||Fr;$Y*RPmLtEr{wrK0bvy zN75l9h~M{Kmy+afjfQWrV~d|yNsr7vUg0TVVjgBn!Yi(!t-DJ*_0FiFgw-!Rn&G`x zDd&yij=EuAglu-!_Zt7K3QGFqvip2HvO%N2-wZHEgmEPBFQB4_s#lo1i@sl0LL=CN zzT-wrrv}|o^D~(=JFf(O#-vo~lhH6MKc0E4XF*z>48&2g@bX+Q2{KUBpANzc$04R# z6YbJcY%);%D-J)DR?!z;r1&fwt!_sE1a&k&B{a7v{Zo6A{2Dt0e7@cuvT#bQXJc;} z92)PIKnu=%C1(Dtx!+9IpFIzvC+n-N=BmTjBdT^`bu+=<%v;R74|P+0CuPGPQVXR3 z%hZ9trg+L?v4K$FJyy0|m9}DR;pSEBG=~ey3vNp~4?#6!i!}H2f62SQvOw8gQkI&mJIEsD1mo;gqOe?8X09O~hY;*ay7VuIB zXaRNq)B=97?rQ-e($cy zfzQIisy&1p5|uG+sYFBb#MQsXGR@C?mSSyv@aj%eu~ee6R_}Xw{^$jL1qOYu`?VkA zupSR^bg0&?l&|*}E|`^_GBsS@C7TPz>85nCY*t@!Zr<&j_hH^_*sT7>er?pj6cCzV?Y9_h-}3w@z(!dMLp5^6+UZ4bc1z>&x2?rALjkKQ=h^9KLHR?P;)x z1>@2{=LWnfN3jEO68!@=5xeaAZ2?R|0B}LvT-I1TQDO7X!F5T11W$$it$QCIsZXnQ zw3e4Y{B$i`VokC^fl*K4+L=$f3Y~u?!M)zt-8n$-eQ)oh_g4fq zwg*Mv^Iy&hZrql`X-AuC_&$oQyTCDBj~CRPi)hQ1x3~q%T4pKrJrlh;^_k;#e`2|e z&9dO2PtesbUc=tEIQ5_hQ||2doNKne*}Y)ceLOe(SUbPJ$%{duohGudL9XLcjZ?k@ z-1qAuMGjWE1XRXhv_6?Xcu!8)B}igH(45Ej&=%dtcM^JFVwf!7NGxuhFgWjf2bw+O zCgoPc%aRlF5}!aCkC*0Wv-`xC6sNcad+u_kjTIgO51a&~#z&_LFw5*3m^Hmm4*-91 z-(YN@BJZI#+3C7kDGsC6V1_sD^&w(0EA2Roy*rmAG~NB&dWbXP98-R|UyAR7g-rjW zr`+GyQ-mx|zqs>!{mfTe=}LYHT|ellj!G|ldE0yFlI-w|a`1`EK8}+Y#<`>@*`}*i z#uzSrf>)o{rN@lK1wOu_7>v&}+kNx;lSrvWe|$?%zW#OgxvP}87czsnx;*g7vmDni ze|S7?I;Q|)YxV2)7h4!^u=Sj0OJJtitY#W7?@1G3v)CgdZ>jYza5Ra&6vC-g=367`!2g>Wd-C|4Mm(SoC{O9V0 z-}(cj7xCLE!;b}>@cq*GFB18CLMbnHZ3QB|a=7zAbm-p~9Xwb=;eGf#q)!L~$b%8i zQAE~(kpnjn@JNth}Y- z`~ZV8CHVSIgK4SL(MwS5QvFtzGjCUSNnFLi^!}45o=tjN4>SrN*y=~hMg9Fk^DlBj z693?B9m~Dl)*(X-!hrW&ShPaVsXo|->{xf7;u}AkJ{a_Z{@8brPlwxy;6bE`hJJ0Zk`+!thFqe7j3|2A^^)4=KR$?*S?-882 z5z4RUR&e(<%7sxGrOZi%+p9@(W-_56yDfLeFye5xh9FhCmt$(}u)mw20R4TYdQ`K$ zpJl`Z!7ZR}>lbryf5IT51%;HkuqE)pP+ODwGW*Op);z8jp1DkW%VpsDO-;&cR0Mez zPlKRM(4cPRdN28|9~7xJHxQbLK$vsp$o)cwKAzoa!p=yoE~OP*g%rxWFNQD|*As?R zVJo+ZB^YKvPguNXcmowln5y`q^zbx{`umOl3gHHlo9HZ$&-QBC)gFs6nFyqyC)J4v zop-C#gs0w8C(_LG`#4(S9~{FW#6Is{=7jbqtAarbZtz1-m3Vc&rF;g#fbrLo&a3#W zD=?S_KLgnUnrl%^>(fw-bEV>IC-x4NANAA~GA-P-Bh-+0oFo1qWoHO4V~Yt6zgz(I z@g!WU<=EWQd9JS?hmS&E^QdsVQpa|PDHEwtL#^HW=Qc)worOeO#O{u1!HWsUH>K7E z@qDaq+#h8G8!5OoejqF$bv1vCe-S`ckOCPEnIsOHKKxq9T$XCMj%F{D*=>!(kIvh^ z_^STJy78jer>FAC0awDGe=)l9`o=sM(6DP7gs_}@VnPZ7_#nbR9lLblU9)+afZDm(9d?WI(pY;TqY>K2rw8|_NLmmPgEY-KERAejjPneB`0yi8tq~-9t1r`)oT7 zIev@x`>5I6=Kt?HRDZY~||hN+e4)wFf;x z`)n*Q+Wd(V#{OfbV8gLrY)s1?ggXkmA|cAjO$Gzxsk$H~2HV=M#S-U2jM~zNC`TT= zNPuC7um{u-`RN5b>s5C80vy4R$clGt-O0 z$*z2S>GS@098+Ewp#fwm2|c5f8F5}`KQDqytiVgUT?Z4#tFbm_ZyYq0|LqZfqfhdP z2g>HkA{ih^>90hR$7&~^U7wCq6{05rS~ey7?RMZ>In@(4e^+xY^28=G-s83RIZj|c zVkh~Nz@$OX8Nbp&gE1P&@xPFIieQcc(5QPPQQw7qSRZhbuWHipzIvlD^*PhE9dS7x zozE|rr(Me<^7LAm-%%VfLtlf!{Dop-HdjJ^z;#Y2Uof68yUM z?THQl=?chfXd$~`^p6W&?%NGx(6dCFsl$d$he)H+KVy83`~j~r>(1H5wP33c_< z(vZ5+dOQs%AP4;ib&UZ`(_QmC;6>?vWtl4rg(xqf`D?Pv$Z`VzfqmRB@!L5qeyxXa zwh>x*d+ut88;p}s=Y9{(aKAw|2xr(khAgK5o}c*xGzN%?mIV~gEbFjc`J+QnEDI$} zit~I}ynQO*V|L_E!QL<^8~-I-5ZZXTu!bjb?@F3mUT;l~EGnTFHG&Ky=q|r*2d@%_ z1ZE854ARq@WtIvTE2UXfyz<#FSD5uK0{8lFndKZ&f!dM-02RfFq3FqmPyro(FN+;3 zIA-?OuaQq*R?@cdO($q!ub)q%DCGcg^yq&s^kkRSsYAAP(n33gIu$C#2cZ_T6nfPA zj}qWK3KBJN=T_`Y#{Au^;EYV8+ROy@598r}Vtl+QAV6kw-v!cp<;NPyQiR<$Cru~- zR*0MEI4#}pA5-}#rBsH(jg~F8zj|*$^F|6^Piz{oN0ixq?szVD#`$inR;3c-W?02$ zIsd{d)X(HA%R@r`>!YThJICC$mf0(ou&e_dKgOASoejaIxBm5lOCZTqB_NQP^l8fm zcd(|AMDk@NhnH_RP~ouByWhZZ4UqN-)zT`Wv--Z7<9`es_8D2*5YW&BYxs7`2ei(A zPL2C8yhud_;#7|OPCL#)xn5_?cq$_16!*ruqVu|uHD>#^@7{CiE%6Y|>>n=cda|EU z%E_Z%(`{iFKe1;TGOz0;3-jn|ziRNB^FD9I2elg#UrfXQ^d`IX8@wRlGaM3>6cFH~ zpqE~?Vb?8Pyy{+>K~67kIYh||X%5CA-cC0{Ve2UZTl)E!pL0Gm%lx=>YN8?tZywkk z=GcidmedGekkfbw+W{ldUX9r8vLnowS&M+u`h5UQ|;IX;%eExjsoT zYEf!6@)a@cO^fv?~Hj*quIAC#y!XSK%rrbCj?{9#^y!5g_Jr`C4Q+7IN| zfZ;eJr%baoQJ*89%G|I?wvsmnaV!I3PoZiH?|e4H9H=eN{1&|4B2kgz{^u%`zC=rL zd4fszzH1q=)-KZGwMb5%fzY>xe9e{x@96-5rVJWwM+?Kt6C)2xpc%Ehg7pKzk8f%9 z3x8WBlfM+pOnAVJ9h8y6t*qrw7JoZkeKSgZ_uUVc!@kJq%kZOkt@tC9vPJBGR=8o5 zg4xE<4&7h8h+-(zjR!>lDThV`T{wsJB)$(nFLm`~u)soN<{*e@)=npz!lp+iACMr*W5IRM9Pj z%EPG7`k8J6_jZ{lcYJJ;VM(7?VvvHDQZAujigV%t^S_UCXMsWO56}gM#&(X4`c6na zL6eXo-+@Y#U?ffH=RRO;gmh@-ZqXcOZ4{WZlD_nnF<7AH!Q~%`i9!rm4S}u-i(%YV z>A3#5hh{bXzWjU(3C(xXQAuK|%sy3!l%z|Bu?zwH;Eb;$G4H(h7XRkuz=BbS-KTL} zy!wb=s(k;f%$tT*pAVJHLVBY&K}%_O?BPIV!q>g3d?`QYRvfF)|Ksev1F8Q1_|an? zd!&rQK?6}%DdHf6vPxxSk5tG`!Z}uiGLkKatdwlBGO|aGjI2bm9h+ku=bZaGr#|cZ z``!D;^;dtzYrbF4$MZ1)LHVOjIchO?hevHcMHRkUv+Apa+G$)f0*a5Wjh3arj;ghGIe)(REO5!!(aNj9xKJnwtd`GjOQKE$2IiLX!asOdegdBOdR@$lHKvf*&yBy!0B6m0VT=5)iCI;QNCU+mT`E#kZ z+8t~;?Fjb=^o1|pDKYlV`koc}0IWx;dIA&kd{RR^ z&JI5MaLlvx!ED^caVfE^bq-%REO(iAY;8YC>!K99bGpqbi=5|L;aUv^Opq>6=pPlW zmLefv*Eu$!D@PD^>{t7z>uOoqWtY|IE-R<6ik{{RXTAAk(U0k{YR50ejcX;}PaJo? zc8mp=a(wUmtv!?YL%3k{qa+Q6$KSEPz9BOSqMLy)|G-yh%Mw@kC0e=lM+`Y-U|Z`9 zY#j_Dd=GZ{fWb@&ksl<~lTs&IQO35aj}We3?~Ke{<=tWIn~p5!rid8V_YM#WyOszPHQY#5c+{Z}groZ>xMgFZceDL_x0wB=*lkMICs5ZDsUy zaD$u|a~ufy6Ii_8Z@=nnj+nv!bf~>oj#^O}<6pf^d#H6UsFp;Ha~Zd_l0$ZvkIj@` z`F#A$mB2xVa;8%kCH(`GAe-0Sicmqp@|CcZvJ|zeyN5c51Px)M0$p#fO70(p6@Wr9Q`WA ztZB`rgP_IA0lziM1b`>+Q8l8#X)(E7Eh(ZjsY5kcobfLENh<^jJt%r=H1Kq{#8Opi zVtd4jVXR+XiQ5g*5O{ z^J1rC+~T!)uIADEytyy}ZJ?Ya#0Ciu-a(#^942Jb?|eho(Br=Dgkz1IpRy`?>)oHj zfiEf3Z(!wNi4c}ASBhywXQ>|}CX4bLPg7hOzcQ!-SNDF-+PXOB@nCHKQGIP4w5%;_ z!l1^?WR51A+~K>bqSq6Gdw)gy=#^l_Eyl;hchS6VagaYIl^2XY2naO`vPYS#H@xEd zABV~{3z7oPtc0YBasI7}d7S?p`G_jo9+(P)gz--y>Ab-)y+$S7_mdgPYb-7BFpJG7uul!< zQp8mAo(;FLCFMgcbpbN1%0Ulo^Is$3b%Mo_YwKY<3>)6a)$6f4Il52Y+6r)+YkB(l|?vMNl{K?fIhb@E8hfXmFy?&=RXwyySb92Nf z&HVL^$JAGWK-&)JZB_SQ8SK9X9Q0itf2x5WNZpb3`MI|zyqF+GoWH-hGBxC|!2d7J z0oD!_qDI4;$_FNCBr>=Bqe;sNy<;p)D;9amqn5Tj)Pump4uB}J?vAPaOvINz66qLd zadt&|G_0l8sDZ-0J0ag-4tlSSm4(wLWN00v*NRg$9FXt?<;VS(38IGI1x}5NO*6nA z*1T6`@JMZF;{#eHdc*ygok-Kskx9~rMsZgHm;aqMoi;p@werYz*+qeh&p*!XOF@oF zxP0b24!PP)r)hiq_GlH-)d*v=s2k>Ijk7ZgQ^3o!C%g@Ni8sVKb>`sKqTw^I5cWnP z)Vn41Obz-E0QKx|eFI>uYJq^V)(F4+%8)?H4Nvn%huT0xS1r)vz&O-?t_6MXvN&F* zqQJDu;ZSV<`a%HY4Xk@}Ix;)jj_oGZSnjMP)%Y=M^yaS>9`}F_C&)kLUkA{=XvX`z zm~}m24Y_QjD#S0kDD?|)*=7*}B^gg>^D&tgRV`Uq*0W-xneKoj_U<qwV?a~!;-@WTY< z$iRD;JG|Pl0kxna7ZF=3pDFAvgy!YLq3==_J?(-7jzfNdGE#YmR!-&PhYoo_ifAAe zOL^l+10ZDwpYN`{9By>PMSpYpL_=J0s}17x(xwHI(MVhL1L0wGAxBr-b|Eig&*~I| z(&cy00E48fusiOkP1n%38~mbu#rI=RWJH;_^zpV2idjT4DyNz3qcQK>_QW9Rr~cfR z*rCU9b|Y9mSYZyZy&FUnpOQZblDSd$#E$2^si@AJE z{_aM{WD461w>w3}4~ez6+S~$LbBEJ{m`7dB@6>ZKP)Mek1Tss_|7hUA^hH+LcLSCM zgj|LJKUl~B%K;a;EX;#x$KOec_?XSC@uE1h@YQlu(?WUqm7>gzV=_~y?%_`y)D$j> zWFE;Dm1%fe|HL{1h*kc0tCCY`hAG56B~^lGNbDZr{xA<~&7UlSeT!Tkz=%U5UMnBN zalbzzQrhXzJMlAuEXAxBLz08=8|E1xsp(%p2$WKv0?_Uz5WJSae*E}h5))%O)Ay(vjLQ;a_uu4#S=h@x?x`+Vl(#y1zzV|_V|lZ5+=4eb0vy_8elcrk(1j86`H z>T8jRBS0WVA>}Jd7Rb#Hvkn%ajh5~vfET!OsV^lO( z!!z5@dm-=h56x7fox}DRE_rdJ^#gD`s{A9Q8SXwY0YrHK#AABY@PMASH$4ED#j*kp z$8McJsnq9m7)SOJLmOv50>j#}_D~$7I93j1Ze_4iJjjkGdDmusvFtYEuqNd_pgPO~MgqA#eXeM)*lofgLEz>B)pW z$g2*M9oQDps%Y;6aM=K^RlvI8w-co+Kb4gX$_n?%V5rR}aA9AXF9 zp-?=Ml-5{96rfR*14E1E!bM98XN=I(ZGy;SJGEwDD^XQfM-q1TlDvXV(aG z5JyG1t_b%2{O;KQNJZKdkTZ+2cX6pt#V#}1sBzvAiEq|1!ZtZ!j}i@J&kUe4g1K$kSvYT z(T6(4>bD-rdSqI&Pdt9Y?5rB%N|N+G?*ezO0ZP4~TlbFw>^krd!v3ZM0Rqco>4)PM zv*<6w9Un!-sKkqtA&@rG&`C^w#QO}QOZ)7ylK4q%)x(Dm3sM{gV;(;mTB$!yvR6&l z>sY7QxF(&Cp~o^z`2a`|1W)}}7xMa9AT4KY&>FQgjp9`~+ z7ON;q+P}4@c}J~IF<~Wc@G>vz!r|h#^44>5)9&(g<-gzwf+&sCdaLq^TEJMgy9|Bv zrKrZ+&5wi6?_WD0=2bseS7O8?&Hu_y7A;0+^)Nvg|01=73^$v0SKzgQpaYWtPBe)+ z2eJzBp}$%vw;Y|9D$DM+$gLP3>|R;^NXh@h-lFD6{M?X7%jR|1n-4V{+iY*n0K*W_ zWi*WNy$4I;#Ov)?0Q8eQR1h_f{@#W4b|8h#|7gP=Y@)qdaUqRU&v0L!vg?!~Uq5@p z(X>T*nrjbnJ-t*l)$^#tQcnGP8<|ja|;i<;sWJk=j0~ck5UdPO>b&W zFIeQ-KPuLnA~u1cF7vFvY(W`TYh#JdYxZA>N`k+qY86;(zVrFTKQo@%r}@V z^krV0-)F>SM?082C&qb6Rtyi2u0sR8#38ce0yO?|=N)2^H+W;1@sFZ&;&=HQ(RWDF zI}if2cjmVz!&7PwE-tRun$rZDFwbD{nL6D;ckbeAPUq-`Opec6i2Cx{cw8qPHgiF7rYmI=Q9PUe94 zxX;u~U*4>sMweI!gEM$> zmVQNmko0_PZ3B6t{W)?1SQXO5ekaCcnKc)$S7+sB8Wj`?eq8Li? zHsh}G5_zKjzOcnm5mEKpE>TMDgxXjt@l6$X zQ3-1do_NidGn9y4`p13A3fRv}NeX73WAwk`=_vaYvBs=&)*x5@Q09^ed;j%~xl!cW zSdYpueZTfzZG0}^8SpfFK*TjjUj~-NNrGeJ<>ZU8g)Qk?G8~U{{p(Vj4erZy2n!F) zU(5wv=2&Oxs57u|oRw@ z;;18nfO%VnicAsInLG%+FLVW~hw0nDrSjdKUmmMUQHYl=pMC>w91?(kFIGKS{XpY{*ni?Az@I z`5W!kN#J0#WhXkfSC6c%E9!grqF;;|PpjhEjWA6Jg z4gABZMB_0JByE3sl_=2$`-Qk$2kEZ;*%%l5$0yVAGG=pYp}(SEZ;HQugD(5NQZwAT zL*7KuezM6GxLmCq6~yvUHTikfF0>Wb(WI=qC%xz55WmvWSa}YW_Sso=T zLH#C8)(=aVoiY3Yt80z8jax`-TV8)?Ct#JT)b8`Gc8y_3hckY&&9uf0?r=h(&-w(n z<2$PoAu7cvAHZwdXL(i6v9P~!;l?D#bid!Tiq!c_iJ;o_rvrJLMt>|Wi06hcEUO{s ze6F};9-J|%>fdwkg>fMg&Nz=PPFyfyi7y??U}FPLX#Y00cq+ki>Q)Z%`#H**2AF}i z9BUDjY*Oi8QnY!T*FM1L0rwy1oxYgW%bXwXd#`URVdsm`6}nRk96~`4Lw@MAM(k+N z#_o`O?bdWV^)ISi9iGI$A>qRRNDWNVB5GTyh6*!$JD4{1Lwz~rkv`&M zyYjDinFNT&hT0d@F&v1t;wMK$!bXFb73A7vACweunc91->1K!O(sJ*ssJ$UxGZV#r zEo5__fucb8p(Qw+|G#WDDgu`?hz)+URm{Ll4O2fIYAe1UMm`%ZjuZPPA9^{$AB($6 z)eq;?$t85e8~&o`&-L=O?ILA+;h6w|NCLFH%iapx{qnsnZTCIpw2WZDrC{=?YDB6P;OuA1NtoIRO8sa?)p5rh-<;o>?^&`bweS&`kv>2kTC9jH<+#Y z0SFVmr^%OK2lb6S6?FvH9EA!2Oqqy?g>GW~Ze*WVMF0M!QNPvcozI9|V~?Q0_saJ% zg2RQ&U}HfnWx;Il9>QgT+4$80ziq1ON4Y0oIC^6wC3wAo6ra|7a)kAB{O0@Bi!W!)E{#i_l+=86JU~y_e4d_F`NLtp2_H*~ z`UH+W5csGU=2#ZBX!Gd2#A<9ah)&tFGfG!Hd}sOEM`mny9|5<7a!7_%KB5N&aSU>+ zOK0=D#X(2QiZk%YCV3+Kr0AH*<`5tScc!qMi)MavVZoW6M)=Xj#HpEJMZvzX>X$fZ z!jWaI;$U{_XVQN-Trw$aLauoFw=4SMU(BFr!<M&G)jL1^jPXg4@X;W= zC>10XWT`00kzNy;y|JZ6RlOjLkbTUfaQ1;txZlMy`<(wTjw75}hzE$SlACo3LXoL=r`WMwf$22LJ*^EpEhmD&BPz|6cqOhhrU z4N)4L*mF=1eRt#}R*S)Wnpk>ZK1TF1aQr7pf-v`4KW+JgIZaMbhdiVqkMs?lK5uTv z6Xy3yfOGJFw!xM2zmGgLJi2j9?L%8N%sv~li6qd{n=x5gj zEcRJ&2@0~E^<`|W&niBB(ABdqA|^Q6d7hg(C$B&RB|V6?0}`AQJ*p5Hfm?Z3Ax5fP)PtS zeipKQbkKRh7|O!trg$#RfzSMb6r-)XhDGlTillEvn5ev~FNrkkXqzJ~)x&&qnhMP? zJ5WGV0U}BR6eznceH!dVrms^PuXqYU2I%&QkXMXTKH1=ut%)z!cSDIb{l2?BCm|3^ z75H{`&R$wQuI9@}WSbXu#c6_wM-I$T0()Oe;N8qplwj%qgBEz~0QJz`r*pr52?-UF zt&jVToJ3GY_^z12@9`@>vHcGvMxf4+yKJAeexDJO1{TVD^Fz*Fz*5fMHoA%rEEvS2 zuxckJXD@P&cyqO`qWKeP&D4SEJ#E8L%t>wmClo>b{mR;J3D4Ak3v$x_G?@eQPhq*N z)J_1uy|TUm7|Ub1NAB;ll~F?K8Ja&`R;!n7UI*CEHywc+KbB@$O2aH6K*lpnB5v?C z?=buXiRVt{t55A^Nb_;%(0=qJRO|o(iT5|>*|i`JFMV-WS|eh{``ZcciHn!abRiJ# z*55kC(I5(N(s^^Haa1^Y(qEMH@4rYN<=>)EJ<)(0nO#wez9^hArZoxpKVg@X)oRI5 zjbs`rpO_a?tTfC>7F}G!6^7g%Pd9vmpHwR4*n~h_#J5JzRu|U(a#nhPAi^%Lj-!Xc zLWz?T*^+~Rkm{F+cge#zi&?Mw_B)G;IE9$Dke$6CJb2Cj22TE9Mwi|Z*{lGsqPnW8 z>R~}#_}qwD4Kb1$01^J{fa)+wfHxB?3kB++%2i+zL`m9p)GEIC!WS_wOJFk<{`G;C zGqJ|vUYgJ9wNJRjG9_#qp|S=CK2I(HMV^F^r5GS(As2i_-$Y^(EtPb-7w9Xz>4oR+ zZJgb%W&t)sA8??4kQ_d^txEhEt+T2WeA)a-ev0A4;-Vosk5|JVeX#uwwMM&Le!-6{ zgck)()7maPe!-Qf)uJ(RJY-mOFir1%53p4xa--FXUq34m83R(BArv_W4S z&+ot@&3S^=F2?kzR_h7kC_&5h^w>A&;C3)OVWg%-7(Sadhx?@lhnOlZp5Fl&Sc}$a zAWnl=9dL--($N&OL5-2;0cIDX6XqwW39PCB6mr1mznAA-66v(4czpK=T;pfW&=cd$ zM(<+{^_g+rXYZGMq1n1G)H9tu3D;?^Dhcb5GZ_&!(h~V`BSi)bNK=D~Dc_J-}QqSJ+KHIz@;&CtMRbv#=Xzdk5XOx zzn@U|2g+ff@+bRJU;%^T7g$`Iy;UNv{=34?cdzXpAYN_^IXbQiHWiDkAa;TFbOLL# z5Bh65U(jKYNW)6oP!BPR1XrF0QM&$QVxml}mz$7IxZ}M$x|or3jBd{_=5{%#D`BI@ zv9W&EQvzdYsDULNeoB41-+w#Kd9Ef&>&lOKSxy{g2R%RO%}3`sEhS19P09ZepQx^M zhCIgri%6L&l+*RfWPO3dsiXXP~jM zVSBuZ93g^MBKq3Pqb-|DO|hc;Vq1KNaFx=R6>Jv)xTl>yJy*E0<8aAbJl(J81DbBb z4mCC-2*dC>{DfBn_qP|!ykNk^1Cj`PQtXE@sn#6_qAS^JAmAPRDCd#Xi~->ATE{%^ zQ=o9cD9>~Zdb{T|%kLBxBnum}N7;h(y^ktq4)ZY?HP%ChWlrjSTgUqcg-FG)0$NDZ zqBZP7o@J!n*zvb7u*tXhAy+Bz9N>F8O=uEq_ae!apn^1zY6)c=c>OCjneh`(!$y$3 ze!@Anqq?S`wDtVUfXvZj9BWRSo?EDGaq1PO3$JwkSwo;}l?5w|?MIN__Lq50 zK7p$$8o)OV8-zia8dSww#!>^qGH{JK)^p>B0BEhlXA|~RAaI zs1-dBlL#_qm7Ehea2oq-Lbok(-~E)9srOFT7wb+A?Ko}yYBT~krNec-&epwr+fJEt z*RMo&F@q2^CCMnsY$v_P67vyH#D5}=Z^cY~=6nYYL@k3$>CgT=)eI;3d_mU_f8Xia zHAu$7_%QXzuc;@Gcb~1)_6`&{pFuS!M0aKbWoF9Efl~|m8TCLi)jWv}6WYLB-)^jVt31e#}0f8~^a>!SL>ajSgu+VE&tBi|! z{mB~vNGAjz`{7M1b5O4}OesxL?A7d`G~bTIWvdsu=#F)7tPIJIK$ zeaP-*U8?ofv9vXFNo7nw$8o8=5=%yKw~)3lB)bHl2vF9)Pz1hXm|W#8@0)(A`YwCj z&|WRe{;>PDlg5t6zDBZbabJ&Q>bZ11QtG2cg4DL_Xj+g`+ghrlfMPx}FJ1AO!M^QL zT;Cx=+)=t?jjV4TT0%ikurBm~0+I^_!xd^{Q`L&_>%M56K8z#-JZ!O` zd&REci=9iaqmVakK7K+mR@=)O=YNU^&75|`rYZpEsY5`L0*}<8K`upS7q@u8IR`)f zH%36{L_!)n!q~J_XhI*XY23NI!?wQ#8Ra+j1g6Om@;Ire-#>7h7-g8dWQ7>YdxUpB zKJ~Hf^9mxrAbuV(n4lMT#A)U>12dvBoup;32`;E3X&J`e%~Z8JD7fI0+lO0^7b4s3 zGeAya$%`SCWqjx>(C+eCAYMDRQtx))ER6GZMD)|UJEmPK6)HN4=8%@{O@8f>unkPU zDQtjPw!3hmE6g|2=i39~t-9`>EAY_|qb+-m&(CgYz&_4#FmI1TYh-Hn6AoZvh44@;pSG%dS*nA0uOy?`MJ@L9B}xc$U3l7sGT>RvR6gE z&gu3jeI}6&cT@LkqklI38dE%#wKeLY|Jmy*R0*)Dd@i8UO9Cl>oYrxc*i?r-EN-1QY&%)$fDInME|X7v(yTu%We zbBw7#%nR>Fl1RAXKP>|-%S`dm8Fc+!KnH>7UjnnU0af#C=<=)@;gYhq&SI9;y(y*o&_2Fb3R z5z|#)hCG0zcWqfRNxRU-Y2JsN?-(4eI}_j?PcSinm!U#}zf zzAFCO=tY3aK7Xts5h@l$9lv6DE~e4TOZ>K>^gT#}+WeiE(~53n^p)&veXs)qre9lrgCP+aB>wTmxFE*I^2W zS+&chOfWXq;Ty?`H;s#E{uw)|L~m@H$!5fYx`J7g#pd?(0_C!5uq+5*H@rK7haAD| zG=jLTvbPNvo8e0aPb4j$A-`f-@x81xxDa+29nQ;iDIM}6Z`p19kpRCELLc*sZt*HD zGsK8R`x^yBSN#i~qarW%NKPUDlB7Ys{OL%oowia>^-D8v$Z0h^z-Fsv^ZRcfi}n&K zxJE2lps|#dLkQX$$$&E`cYub-5J8-oZ1G@+GR_IjP**5+5<+yhQRoO6@#S(Xa>wXs zYad_K1|r{bCmfdcnV-p9?OiGrd4zHqwQgr0fsu3*=$}qu!%4a+Q#RZN9u;hx61vDK z4wR${WdHr<^aAUfCW=xPhKur6EPM%KTl%AeL&w@9Yz`HO$*e&wMSsg0be8e4nWw~_ zb7xC5u+j*hkd_n2Y7NGHSE|gv7ZrTbtPZ%x7jl;CtImbbr#N28wqg3~+EpkP9Q%@ODm3s19jF!sw|RZK+1B%~a!$90#4k zf36eG^1mH@Hv1KKe6Oa$rnr%SAW#UV9JmS&^Z)%ealDG5YT(RM1kydCpy=0iD6_zUH#F4mh(4>q0vI+ z!vH@F#NJ^0kntgNQg5GTg8%~XlYWz2{FFmC?@j6np)7WvS^!@P|Cm?4NC6AsCW%c7 z5f1I!{xcc3ydIzA|0D#6I%HMIpRzD~d&n}oH=~d)N9u)1#<{NH1IufGpnFm&j$|+a zXnMe40suR|pB5k$4Z;iTKTeVuH#!}$o@8!75czHDMpR*V;wJmC9$v?DDv~EzqO-JS zR-QXW;o(Z^=-k^UG&fm4h3wwV*>Bhf7IriCr=y@*?Z}6~Nb(xV_bC0*-$xbv=l)az zfPSEPy~%dmt-c!_w&zxV5Bcr88EpTg;>=Hr@i8r#?u39(0p#CID&@YM;Wh$J>+knZ zFrZIjt!4{Y^EEm^`1YTE{5~4;s_UP#aR}!!NfAI(bdn9w*0UOH%_8%}yqJ&Rb`^k& zW^AlGWPo8`n52{4mEvi>zme?JBUO@r@%f^nNHKCKwoJ*C!CS;Eqhl;rqj%VPf(3C$Svbwa9*-v3B(A$?#nO%5)PfS8-Ah!Sjm9@_Vbh>z5#7ckdHvNGC!h4q((Ik|;G@hsYPo z^k1~62?^dmY%K!nut?#I);e)x5n+5^vWs}R%14KgQ4*$4)#Ab7yDUdhe|KiE$s?C`wQ zh&{`(DFM0hPeJAma@UKT{yq@kyWK{+_sbeKs@E2E>}_y8LD*4Q;yYA19GFx+oN|8U@pCqr#60qjK!}i-btKe)O6IQF7J_!cUeS`x_8 zC7Wm&p#M{rX~eRPC9eDK@aDpwDt+Uc*(C&u=7MyNKVEOoIY36c@3sxFT>|tLw1wz= zSQ2n#RNW6eH0NdU7^q}7RohDaJZ<_4v(Vm?*DRU-4jc3!@^${MioLYnz9^mje6Hk* zPdfGAV+5yw6mGsOkk+h7NcaSHo5w+Az*P&3YB0rRNFV5)6mi_W7QS#!FZuoE=ImnF zwI0er?{BH)RDQBblXJ^b?d}7f&KLdHK<&F~9~@$;Ii|8ZYu^u+e!ooTOG) z%V}&cauOc&{Rgy~NcA9-{8+u?WT(fYu{34v2U`dx6}E31B11KaGF ziq-{=gDyw^86~-T(N!9DPVZ3WJD1*YS;9!U&5o@xM@RZX2KW2-4*l#-td1}Gg!_jR z;@SJ}cXHwq2i<$L)Z7z6YqF|=wi%v#S0dK4FJwZ-1FUtE&4%F)Fp2x=euoCX%%GT& zUU4CyuyZX_Hu3PhViSc37&5Ok@O*_xj)vRw?)qb8uHj3}Q#w0k zVSaC7CkDhA`ss$+35-Gwevd-)65+hBtht9B!tsi$ba+BoTv3gGLIhaCXS@z!1y{%8 ztJiQn+TTBr44zvHwjQN;B~2b1zWDcZ20$&U^;6mYaEV{&-=zo&t}h5)+1<@3-+H*z zS+=iy5rf&MU@x@RS%*)QYv;`LX|OY`6$U?UWoh?IPalut-tr3CxmP4`5*x-u$W#f8 zpOy>p>}QalgR?V$(0Zt7!4nn61k_G>e9bq<)IcCASA$cPjvp$6b*YXm7d!r%Wb;YN z?+0P8{Xqn+NOn9jc4+5IP?+Y3SArj62+i8XR$P7WV>c{PtO1?}T8<@ty-_g#YCwgs z*k7(B)DsDzly^oYP{q=>uiW41mPL0Za$D>k0U{_{$Q8go@!lI+8{xjr#laX|EW>xL zwPvkZ8xc+#<1!FP zX#iyt`|92_iPXm|`M1J4)GE9)hq1%KJE7(c-Lrt?-A zB}ILbo0l7ji)daRaJAWG=i}BSbMGs@JM7wOcUVo?!|&d;(Zu_jeGlJwuN?dQ{&owz zgg@!qm=oVKt7Xuo`18QiJ&m<`3~}>bpgdT%P!!2nhV5s-7_iKlFwBL*_4z;wX>P%J z%5_;~DU6}URATVb;tcep{)X+*5hE$S5z8l3-gpO?lna_=e_OzUKi2c=jR45ytkSu+ zi?Tv|hATiI_10n8!bdsltlpH2CU5|xd)ckE+(>u@sv7i5^g%$1- z*r>s$T3T!wvji&OK;%QTVDJSx1)$mne&9PVM!0oLCrUs@h4)Rz@Tsd`xs8-U%HxNH z`HoTfSpNNi)_LZ~%^%zzK$oku9;TNVzjddg|z#zYcOJ#mH zC6yVkYfkquPY*UIUYgHcRx3&uZnv_UtLyG^s}&%5~&ilvUZ|8fhnIaPPWLE_K^L&Y-dmK(64-TntH z1YIO*X6=>n8hcvNEw6E9fGhbx8~qioP&ZNSMTiNeeWluopH82ceF0^RJd7*LLVu-U z*iAgt-tP7%Bs^Lu_EApZdCvmTK!;}xp*Iy(aK)r8r1HB5nD+_kmO2a*^9dy7$-h*3 zX$F7XtKhZT$L+L&_6@!VM~X#O4mfz43^{vrh)2SFs7V9L{v#p( z`wWL0jX?bk0>MxK+Si!{MD#cX^Ck*q<8)-n2>{32iIQ`GyE6^9e&QXM_LkVAMdpgC z??R^1)&Z}YWd#P%-`q$+!JhRm#YUn+)fp9qg?H{~U}VtSub`xcDyUZMArI{TI%7vj zZlI9gj%^b#k7x_M(T;TDIn0AwT%k98^$L>Ri{A_a9kGtJJ z_6ESKC;(ph*^D4}D1VEig_k^{QK))ejD=0f3g{!OdU}%D2%cr?32m04DBICE8x$3DiUDSmQdV&&Z&Rt0}BAkjMQg~XSC(L#P3C{S#uiuRUTrA zi+Lkp9ID7^ek_5R<^sIy#fOLjt#IczsDyV)hNm=f6=7Dy3s!f^_M^GXM$mchGue8H zu&zAZ0p#(6MWtBO)qj_cB;E=1#P38EG%fGE1YjG|o|zmNIK*UW5vW8V2|KU%tyrht zzP$k+W;^h{dd1?LeTUbhr+a>IL*ckMPpL++#^$Wc9`(tOH35M8+RPLTPL}F-d4q?V z^Qe)D()W;@pV`mcD}LWZw?uvFhPdkPxj|RIor`SmxaC#CRderXruK#1yV3T%iDS27{q%Xs zH~PVqf*e)Pm-DTI>f33X4)ya!YR^=K($4B#^Ex|qaKrmKM04PNFsb3}^t+)}LVQ%0 zl4LvWbl+y}bNsXP6M0NpbVl;)*F3s!-TQ-*=O!@;nuJ=ocJ=2p{0sJxjWKM zu;W;szW7dPu^y@fN0b7$)L2H&Tp?i6!lM9__TPVd@m~@>P=>~&n;&MloK2}yW%HcL znz;iNK>6Unq0(lNqEz2aGKxveo}!5NJQNqj%6VGq%ZRbaN*J9#<@2Ht!_l9Ub!p;k z3pf1$ka}e}lMJMS+pOV{GP$DmE{U;H8YFZs%%PBVGOva8L|EvX1@5M%9vusvaon$7 zFI+h)fL$1LUXon+E;aJ#j=j;$wpwu%qJ`_@5%bVIi&m!jWTVvBgIbpI4~sA%EYB!s zGaM>fLxdTBiN$??Q~zb$;n3O|d`u~-aAgDy1#t~ni!&QP?Lm&}a8xen9R92R1}7;E z?)L!kMJx#ar;_UgC}I093B0I9M-TRzFsBZ zy#o>?1fy54f@DNkNbAb7qVmDo(+|fky);t8u+m7GGzdk3%9ZUMVbWzI(eaL1km)o({`7n#aWi8+($J3X}souI&I6twrGOpOS43eZ*MPjK=aw>He7vm=6>^f z0cBE~bC*SnvAcJmf8AIvV&>a%Ir{X%h((UM5&R*&IR~AJ3zdlT6znze+DU}D8mFr$ z?K_WV#4p`r4e~aKrrLLLL79HAVR=)pz#Gc)a5(PTXUlfH*ddwepcAs}J}c${u|<|$^3qL|^giJ`#Fn#w@5{}+Ey0c2RC zqWhoW^Tb}nDehch#)lrBCTA<556@P8^tXFkMMU2x_b=_~z9aejkgTo!12Db({miy; zh<3&_!JQOMUrb2Wz&W?;*E4N`dp4)|FI=?~w4)CX=la8mB?&<|65$l_U0FTCZ&d!% zVwOa()R;W?Yle!2YB@axq@i$_O;-EUo=in$747=&%FlEUrn6|u+3U|-mbJ8J?DmV+Dg15ul;66v0(VylUq^NFbDe0E375 zil!J2LT~8Cp3P=6U&D_-MRBZ{r%uq6Dxpo{+eB)8IIL9@HSKphi!0vVB65zyRb(&o z*g++&?cd1w3{0~!ak2z=!jx(AxFD|wF@voFv!_YKpU z{!rVYfk(ywbth7?B*V1XK#t~^3En=fvjO&Q2U_;{{ zf(^aBcdK4ez)f7V)zG_%fPDP#?ffpCKm_@pe=65}yMU-NSF|Oh0$7fT;adAH$bIlL zoaG5L9(kgv9ezWe{}jUGR8)2|{O9RWYU`Tgt8oTgC z=Unv4N71)@)Sr#HGXtm1{cVCUpALdg{|cIkap#Kh0Q3=#Z79V~#&+8%#|(=u8=L7V zHd&|Gz90&PN{hQQ;)?eYsE8i=0!ryaK|WV&WS>|cxsyPgVJ~<6))lKZ#FaO}QFy5m zA*#I?Lr~DJ`I@c?M0_&Zrcg@J&EGU!W#WmpZfn@$$8flVsb=P=RskYY^0W7K-9w_K zJjHq#6E{1NBffRG9CEMpC+L+{{co>Sqrc^qw5#~lu*XK+&To7PMj(11BIA0Ek>Al1 zf8R9OBE?ZZXl+O(yA==-N280RFa{gLM#N+xYzOOn97KKg{FvLMo+q~J>D()o2qR)MM+lU;w;9kf< zk$$C@2qpUgKEd8V8jnrdmxQra#bwk~UO#n8-GzsPst3cQZYR@pnl9*n|Uh;66`$o%<*E(;boDxXOSD6 zx0F5{ef8lIorzJP!_vkqoON{eKw3n4n{<;w1C%>!2Rx7h^$D~9sF_Di12`mO7%JxT z@CC3CdvDFhNR7t7fk7T*%>wOwd1(Tn^ao&n{|$YJUdF^qOLFr0LsbE- z@l^mPZNPcZyKF$;JdlR@mw>k@6BV9#hU}~YD(B_nHpOUTpXW>jh6mYy|BwHz$xFNe zNivtV(f?(P*lf|D=rbuXEOj9(m4iMY$Q`6I0d{b@HhA4N`48JifCS0uAo1C+c-kN6 z+u8MfVwlHvr>hi?n)r1WgdZ`%Y(G}j%FjCg&itL~2f~q-*GM57;$X15km18i%%D@$ zp$8P!m&$igBqxZ!?+KuhBeOIeInLOAeh1G@2b~o1a6oO!L}iUS1GqV)-sbK1^__+* ze4H&z%AW$A$Zh`AQw-PS&X0) z!NSwJMP&?DAkQ6MjP`VQcON$uD`ySMc(@X2ygknbEC{IfPV(HwQv3X$m2I_u6FKp7 zi&5&}4V@#D{0k+G6Kwd3qr7jarPRqa+JbfXUH;D!n%1o;#xF$QH^1JRY@^Daie(GLiNb<7 zT^@jwT_n+nf+R*I3oi}lOvrq14!_m{I&B;h?%@`Xs9di8E*Jih0$)UaL+{|^hK3NmTq&By9aa?YS37P1s|F&7~zr#oZW{k%3<1?3}n#)SM6Df7*eePZe34 z8-hs|IG-(PQeT3b7-L{0M`HU54x^-b&ZUN=N^WrIwpPzqcB#fneX==o>K=M#dODVA z`pzuF6qP>1|8iq_g}dpr6?W`U8Rs`Kt7?2w9`zX$Q3C54!Z)sOd$g&^ExMadD005x zkiT-7f1C?U!n~~eoaEZU<$Lu?g+=vQUF{zA@QHY~@A?*BZi-;PdY8#>_7oPvF{dvbi^TBIbw#S}TW=n=2hh%44XPtffT2&d${l4t}FQ0|_e+z;yE zb`adZN15MFa8ufl1S_XM7DrP39R7Nr{YxE`j?T7w)~8qclpPVar#uRhVezf`q}IpG zElvJ_Gh%FiuJ}CWAT_@Sp;Xa!Ub?-v26wgtaF?!}vE0)XkBiMQz{~uOkfn|mrC`WO zkF#;6J)b_=(-oSS-}qogW}y;s=1}2zt`{`!@~!lF*#LO{chi>XoQRU=Cbek>F$yI2 z;Fu@=F7WdyiL)?hqk5>E5BslJ*i95UkT932o>mjTgDvWDaY}{|qXyjJ#pZ0>;U&Gs z^WZc+EuMkob)DGh6csudtlbv85I#mH9G>BYe#7BHzrx&`g5JBVV>cd7tH6^&HhcyD zWHSI{cJ&rm5{!>M4UZ@TZc{6;A%eEzfK0EGAGvB{qAXW6v? zqP48rTy7b6c0)}54aEP`&uek}R#fD4F)OFOtyl8W-KXnc&pdF%;C2KEg$w+bfE<&H zpo7h!n~fGN*dsuI_(nX_j+L)17ZuqLIvS3r5*VdFU%rtd3a*$2j4W!2t6P1`YHg-N zaDxN;uFV?NmZ5*Zr%(KUHsdO5TW zIKOk8%&uciFFGU631pH(yKM$v^1RJc6vQgeQPaJ0$2-KK} zaW`I60AJD>gj`ZI*mDA5a!TQ_S)6v;u_ z$Zx17u89@wWxF>3)hM#$Fc_Qwed01hs=w5$!<_IPmrJCf$wgv-k0SUbK|Hcuh-Yz644v)wDFSsT)lZ&waZ}F z72apeqX@ln%Qtco9E8eTKQU&1ar|ZL`ZuqHCgOe>Ux@jXL!h{$%WPP((_Vx)X9>$1 zvFDy!SzZ&*IrL9c@!PZ-Cw{Al%HDH$#(XA%dLLr-G~m!(jkD@K`%xxUkf8g4fVt(a zd)vzUr%&cjm0Y?wpZS(FW&}dLrfUG^m6+^pQ+q;_5Zbsp**wd9^*aA+O3sE479&?+ z-QFTPcV!3Ys}`HLA8{#h-m2Rve~>(*N$C5gKM_8X@{&Oh?(<>u>F13Ye%ZW!i@ z;Uk8Zo#-~YAvKut>alC2iY@7lZ-yz89WTWp{YA>d^0>QJimh?4Zh65HZb@*2=C#|X z-rH%Wd}82&oq)5Or7-A!B>d*}k6)nl9E8PbkivN4uUN&K)Jp9?e}@fBdRGIR_$tgt0q? zCePpgA$&m>u`6S>sZR34^5#QVnoI&eRe|qpR@W+ZyPn|GCzDVo|1>kXE%{rPwp>zR z?_bt2C3ZfTgMvRuw^Wo@Q&-_;H4Pha>v5`ZyM{e{o>GZ;aQx98a(T)(eUDb!K7Btd zdh``KzcMtMiy9RinrM7ZGu%j!AHO9uswvwT9d8W-ZdXG}{XQD3+6~uLX77`d6#~Km zsDehmfGW800-YdWFL?*wynVV76Y;S*+4>eppthI0;?^3pw$e_kxkR8p!j+>ww!=_8QmCc2L05G$-B>L$&^?Nv$9*)YG>uF zr3B)Pjk)hWDF+*>UyVC^p?L7HmYYB6VrzdgnM_%c;iD%mRyIH)LvyPb|OF|cOIM?M_dce7kQMlQl&Vs9Of&jw$nc*@o zj~F+{>nJZ<=Pq!4)@k%JP8ibHa{qczJyv}v?wN91xnC)iHS*e{E^A%kk-)8o8!r>p zuX?VwSsrkrEHfRx3fMHB8ty&N`!wjCLFitNlAihs6*!7=0L>HrDzT^{5Q^-L`uI9V*%U}3%RR)4>ybKoO2Qm+-v+o;tF189Ootw7ttxGNXb14DyV}eUYRb`%lxPAJn32f7CJe6g;!wh;KG#tnEor3WFf7m(k6pFU2{y&t5e!+$UL zw-1JLJmR3wE++?-Cz_YnpN?O~MqIxz*;}rbW>Gbr#Kr*>ze)I z)C58R3S!HyyYPEwKzh@Wn-b|#p`7aFuA-t}EC}kg{k{tdA?4E5LTqb6K3&5Z#O_MHV8FUyZ z`-p#x4^eirm8;#Mi+A38z1+5SaK34uc^c2V31fkX3CfVCYsHXl ziF-UR>zCq+9qWQJ!0no!jzcdP^Ik4rc5A%5+Y7ggQTQ1noC>ZggBKNPeuQ##I6h)) z9r>O!WWcK7{Nda##`&i*hijUDSmsL^r0zxry5$tCfAu=hc_8a2sugMa2Xrlnm|idR$N1jru4qV{yeI3Y$v8_jdBrPKqbEkRSmM-8j6Al_K%nZr zQD@r?A#wI?1M#K6YJD-uX6Y_?cpJrCnei?9{u}RJ()AAj*nt@!!qptuZL(Q=Oj~0D z`7ENCDh|tr9*f)`=!a^s_Hfp?;cZUiUty)HYmcEV&~av?TV1oS*6Xr(vHjI}Xod%G z)KDL$$~@_8R}bgQC&zOm8gahsL!M5NT_$zr@u6vSa;YPFEqf5_`+fQBAXgdGU1*Ro z8Rjui&1R+d6mwvg@tEF;okkhZ)`=?e_m!wuq~6EjEfA~a6mwiR4mf1ibk+PYMaps_ zRVO0hs4HYvG{N&+><`cO62knNz87AFct4@&$VVJKH#;cOvF(1Vc=Y&s=`+><_=@lJ z{j>a;)8%bJX>n2BbG7tA%#ZT;&YsZw$0Du^ja?0a|1jTlq+_Z=yxU$=`Q5EYdf?5j zk@{{4d71GTM? z-q8vNr`s8ZTL?Cs@cx<X+E_$qoY$F2AH@(N(r zKWgKCw4&?kdG|2wF!LKIgQb|A@Kg6KW<+Ny?0`^QPnrF2-$~6=U;IZPYr&$SA$iXJ z5jJwcajd2_chvC=``8QKXJkh9!=semp7QQmZr@@jOvY3|5*1I~-@Jc%nQ2@SZpZgr zhGwbr#I!20$A6qz(Q`M^eD$DsH=gCcoPDRS>ke;Kr-2K2e0<97qZK(b<$*VR8V_@@ z>Rs6vA=yF1_t|5sh29kU18+IXOLfpNWZ!f*gxMORS}%Pz{0c*&ibkJsiZHGeh8;F5${coLay;+kbXs zI>8?z4N{n0HJM#(_qEAspTGANh{1310?W5-f@#r9Um^-2v3YmfNZ;lL454d%d(vuh zL3|UfY^lfNIo!~g70mo~oTdv%WNN|9q7*$O-@U1GWSD3~Y7fn^^qG%tgaH=k{AXnn zW&D4CT0dIC{{=a?~jvpgs&Wbm1ub1XL_BxFSRbW)Co9oRd|3R z;C0HK??GlE7n)!ZAx8hKxHjXjUKhN|6mFtQzTCzP4XXApvau<70=)jcz}=i$;_85Y z3_XhhZ#BITg)3#FN(LkrL%InO; zt~#TOAKzN#-^^dvvjhbhw`=s2YZ}j4x|-}H}tIXFq2l%FnShSK$l6SG*GMZX*q0j(>(m*H;vG%#vU@cfk& zT;NnISgS%Jc&P=M+8eX038^=*Qg;z=`UvdXurjdQ1z|fP2s?(a_smA3g%c$DLmpw3z+e-UYzpRDb-ftbib|!3Neod+NQT++~j+*=97Yv7ucG@KPOs3X>GvDCuplbc>|^SrBJF!^k6;UPDOgX)#8mSTi$r6Un?k$Qvy z^?F6}ti5XpuCqi;crMyEyKKqwr(=^`x@UpSnr;~ zT>XifHiXf28Y2*J6~&d0N}aAmW=B;c$v2*2O>93Q&P@#^-szs$-7)_r6b)40O2wBt zKog=yl|M#39Y5_|~NSrmf(PC)6*Ld2E<bK6@7Jq5 z@O6f7BquzFzLtwf4$1Jzhk&I63t0P`g2qxFm04B@84kzzPK?`|b7=8gLzhY8%(p=D zfVP6~cbm2Y%LUZE_*1U3Ga7n(D5CIlivGG(RKTPCRyQ6s#R-d7w}Kga-Lim<7^9Xn z4|?CSNoPz^dDj{-N^E3x_M+Hos$ZN$Z|ddH_3-ellvx|8;X)uhT!tZBuQWGfItU#V zR~G+-AWnU7g^BE^CcTG7dZaF`6yZEizKL&mohQn3yjj|jJU3LeCkIibguc6 zT<`640a2|!q0vnGl6A`L+KAX*#-LvE%TdeIMg`m00fv?Ya7^7v60j>xy2Mc354Fg%}AT@$&75Zm2cZ_CphRtc8W^DQjR0Ur|ndRXb zMK^L;yaoJ*iP4t|U5eC}kn{=%JjNpU1#lj72P0Ru;u4F4Zfv|aqq1wM$HOkHDDwD{ zaRl(v@Sx2K7#+eZX-++pgBBJ}W3n6vbv}tc0-v5cLETLBIZBOmXa(CLGO{o`f!~10 z&V74TTry~e*8CB`nLnYBS(a_$r1_KhpbX6q`MdbP6=4T_r(uI$tK^raJdLA=)ZJ=u z+81T@&IGQYNWA(|ZhaRdGj>XU-vX5G@t=ZMW+ci$%C1Fq4NuvU- zDJ&ln7A>dexp%SJ@6+XiGq(^}BD{zkQkS_c-={r`lhH=mhc;RdB+I*!f7pS+&7fU{~BMQVX=K`$t+ zl?`VDEu?SYC|CVS?QA}%X%7v@$yggN03Jy(F{-#*TW0ymawns3lORm01w3w( z_;(l^vfqhn`wtv#@oeT|zn})Dlo&n4FE7NQ8mTC~00s$Ikc4l(1^k(#eME$){*v=@ zb}zciK_k+QGa8KXFI|a&!JV1k8km@5pj)Df0F}~olc9rhwbS*MvUmwXU+whaXJYJ` z`kK7hADjK&lv&;)Xmu-MJYQGiE*b`f-cWG?wJUV!)$?jgzY`jHDSn;({WfxYLxPlD zvSv(J&dXS>Zfh(_;JD=J_W~w`5^H3R7j%mC&R4}=WIFidiA$JdqEW#k!y0@dDo6o$ zdUZ>>))`yPBF*HvU?OZWANgd?Q@j4o_Z3MY$RpM#pFvEfX@kS+i5%f6oAqjYs`XAo zLmqQ~h%6%v^H1^v3f>jUQ7)rE?yHdoXArwIT=fK}K73&7+E&7#qmR_)t8Xkt=lIM$ z9Zc8pgVI`_gpvY=1x|39*GV)Y|T6R-SGsHHS!8A;mPx6%<(#7 zYL|J};l7i+Di*vHI5|yd56mIt!Hqu7F?-g1qR_KnFfSaM!V*7^} z^<+o_>U+4H%va21Szv-7GNm57gxP0ubKaPx7VH~|IlZrDfeVk^A7Y&#L8S_@TcS62 z3N0G%Z>psC3vmm#pI(00z&nM$85|n8OK{sV9;J4|=@pC=U6{JWc5mP~+P1l)nO#d{ zQ1nk}9eYJI`^#UE-OuOu__`Mqk=udCyhP`+`!_62T--jDMH2hqZelj-yh zqifIm|E(jcGCm-;{sXCL6qxq<(_7;UMm3cuPpFRvx?Rtc<2#x~t#LK#`Bv%zGWrO& zHGJh71APQp0`0~_KL(6YF?m{;wutRNm@K_l=Ys{WHX~h3v0AlX5{QcIhlyN70hb0L ztbLol`Q8L_erl17$`dcvwnKBECGW7Mci^D66E^gzkA<}pUa-Sr}itli7D=o)iB>>;=%uUU{)2t%e_DK#ZrVb(zO5 zqX0%@M~u}aQiyF#os)Zc`d?ewmwNt=$6-p6u=>-_!aGkQN3 zOc5l~)%?+YIWO2hO|gg1faJd{^9Fr?lzaQBe|9N56%b*7C^i}`*zS9TK8?DIEoksv zimVpv5}0tkefQ2hfAFZ1@0tvg$oG2tyq7%wczdc zL4SSGuDc5d#eeRMNG1Ik9_{jRk|QN-q@i%}S^Bm|=BbbW)Qt42c$I9yI2Vm9e*f=x zFNc{A1`-^cdSXnuttDc{>YN9Ku7p(+m9*NQGQ4J6&puU`>BU8hKNIj*(p?S zJSNUci5~VGjQKj;iLBh-^vQgM7T-vm(Ow#ZwI_4}PwFbYu6C@{E~PqZYtqcqnF3Sm zM`<=%E(p0Uf+7Xt|IeuEc|!S~SX^m+@BkQMR}*Hb{!@D2%GVg*b}P%!ZKX$ocfFuM zR1~uAL8a2qKZc5cyIoJ8oQgowruzHi6xlP#^H1Xn8AWlz;Y7B$Q2w-FbE4-M zX@_T%OV6PSW2se`^6q`z%G{%c`$7BDh;}^V>t$+dWvZhC8Ye*Mv+qy24UV^d3!NNAGM8=on@*{kNn>{#hjdf$Kd_inC^_OI;ALx3YF}<@qL# zk(eq?!$5K8WCX)!U<)U9icBR;{hipNm|aZ)e`ALCE#Ng{MUdL9e}nTyF4-YxKn^7v zklua%UZBl7A+JlPyc672GJKDWdN4b_fwCb;m1fdN)X$LT?#yXlDzxfOSD8JPxZJ?mv&?eoE)}vx2V& z3{kgv7xlt0din!w_#Xyljkz3{f^*7@{qsNi9(Yq3CE$f1HiIf7$Natz}TMT0m$U_#N5k4)YlI)+J`B^O6Wj1%tDh%lkA z-hbF93wegB!RFqqsQ(cke~GF)G}m2$EZJG;{&S$K14+&+gw%>`Lqfp$b1V!~$n)ufOkl^Q7tkY`bc>4#<(|j>YPc`+KilEh1XB@4HK)ZZOck8+c-H~7S zp=$$=s6wIJ!a0$X{vuPu9kN3->7^c=lNkGMI1G(*cCL@>;cje|HlowpX=Oe z-3pK`Oq$xT^4%Z17#^qf=UGGQK_cb&u#yo}Nm;6$!@$}Cfi4Fo;_ z&AE0Xa@ItPkfSXVv*ByF4cveGMc&9flR)Tko z-A4#}4E1x2>ltK4)%kChnuNJgmaT%K4w?B7N`S&+o_Ui`$o1;CU>2KP72>sBvD=$Xg|MH(2y@sO~lQg6F4}R%lnX z`4~&{5=EDxuqBcmZeGY}HTPc8#`s6Y*;_%YF1n!SP35CJnj|AJr_0W_q1pjY8n

N@?asr&Y5t^>Rg=4VL-% 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

~h6X}b1 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 F{{ev2S@r+` literal 0 HcmV?d00001 diff --git a/DC/CD_DB.cd b/DC/CD_DB.cd new file mode 100644 index 0000000..d0fb2e4 --- /dev/null +++ b/DC/CD_DB.cd @@ -0,0 +1,220 @@ + + + + + + + + + + + + AAADAAAAAAAAAAAAAAAAAAgAACAAgAAAAAAAAAAAAAA= + DataBase\AccessDB.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + AgACAAAAAAAAEBAAADAAAABAAAAMAAADAAAAoAIBAAA= + DataBase\ChelDB.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + AgACAAAAAAAAABAAAAAAAAAAAwAMMAAAAAAAAAIAAAA= + DataBase\ChildDB.cs + + + + + + + + + + + + + + + + BAACAAAAJAAAAAAEAAAAAAAAAAAACAAEAAQAAAAABAA= + DataBase\CorrStajDB.cs + + + + + + + + + + + + + + + + BAICAAAAACAAAAAAAAAAAAAAAAAACAAAAQAAAAAAAAA= + DataBase\FreeDB.cs + + + + + + + + + + + + + + + BAICCAQAAAAQAAAAAAAAAAAAAAAACAAAAQAAQAAAAAA= + DataBase\LearnDB.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + BAICAAAAACAAEAAAAAAAAAAAAAAACBEAAAAAAACAIAA= + DataBase\RabotinkDB.cs + + + + + + + + + + + + + AAACAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAQAAAAAAAA= + DataBase\RabotnikTypeStajDB.cs + + + + + + + + + + + + AAACAAAAAAAAgAAAAAAAAQAAAAAAAAAhAAAAAAAAAAA= + DataBase\ShtatDB.cs + + + + + + + + + + + + + + + + + + AAACAAAAAAAAEAAAAAAAAAQAAAAAAAAAAAAAAACAAAA= + DataBase\TypeStajDB.cs + + + + + + + + + + AAACAAAAAAQAAAAAEAAAIAAAAAAAAAAAAAAQAAAAAIA= + DataBase\UserDB.cs + + + + + + + + + AAAAAAAAAQAAEIAAABAAAAAAEAAAQAABACAAgACABIA= + DataBase\ConnectDB.cs + + + + \ No newline at end of file diff --git a/DC/CD_DB_2.cd b/DC/CD_DB_2.cd new file mode 100644 index 0000000..02c7402 --- /dev/null +++ b/DC/CD_DB_2.cd @@ -0,0 +1,11 @@ + + + + + + BSSTjADAzlZYlACEECmxBNd8Y8AAMCSYAGggMG1jQCI= + DataBase\AccessDB.cs + + + + \ No newline at end of file diff --git a/DC/CD_M_1.cd b/DC/CD_M_1.cd new file mode 100644 index 0000000..b716ce8 --- /dev/null +++ b/DC/CD_M_1.cd @@ -0,0 +1,50 @@ + + + + + + AgACAAAAAAAAABAAAAAAAAAAAwAMMAAAAAAAAAIAAAA= + DataBase\ChildDB.cs + + + + + + AAACAAAAAAQAAAAAEAAAIAAAAAAAAAAAAAAQAAAAAIA= + DataBase\UserDB.cs + + + + + + AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAABAAAAAA= + Program.cs + + + + + + + + + + + AAAAAAAAACAgQBAABGCCACCCAAACACAABAQBAAAA8gE= + SupportForms\ChildForm.cs + + + + + + + + + AAAAAAAAACAAQBAAAACCCCACAAAAACAAAAABQBAAQQE= + SupportForms\LoginForm.cs + + + + + + + \ No newline at end of file diff --git a/DC/CD_M_2.cd b/DC/CD_M_2.cd new file mode 100644 index 0000000..89aa89b --- /dev/null +++ b/DC/CD_M_2.cd @@ -0,0 +1,24 @@ + + + + + + AIgQBAABgCAAABADAACACCADAAAIAQEIgGAAACABAAE= + MainForms\ChildForm.cs + + + + + + AAAAAAAAACAAQBAAAACCCCACAAAAACAAEAABAAAAQAE= + MainForms\LoginForm.cs + + + + + + QIAQEAABACAAQBADAECACGACAAAAAQAIgGAAAAABIBE= + + + + \ No newline at end of file diff --git a/DC/CD_M_3.cd b/DC/CD_M_3.cd new file mode 100644 index 0000000..54ffe68 --- /dev/null +++ b/DC/CD_M_3.cd @@ -0,0 +1,105 @@ + + + + + + BAICAAAAACAAEAAAAAAAAAAAAAAACBEAAAAAAACAIAA= + DataBase\RabotinkDB.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AKASAAgDJCEAABYVDCSBCCKCIABAIQEIQLhBESgJABE= + MainForms\RabForm.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AKAQAAABACARABAXAAaAKCCiBAEIAQAIAGBAAQAhIIE= + MainForms\StajForm.cs + + + + + + + + + + + + AAAAAAAAAAAAAAAAAIAAAAAAAAAEAEAAAAAAAAAAAAA= + GlobalFormFunc.cs + + + + \ No newline at end of file diff --git a/DC/CD_M_4.cd b/DC/CD_M_4.cd new file mode 100644 index 0000000..6ba0d73 --- /dev/null +++ b/DC/CD_M_4.cd @@ -0,0 +1,61 @@ + + + + + + AAACAAAAAAAAgAAAAAAAAQAAAAAAAAAhAAAAAAAAAAA= + DataBase\ShtatDB.cs + + + + + + + + + + + + + + + + + + + + AIAQAAAhACAIQhAHBCCBCCICAAAAAwEIgMBhACABAAE= + MainForms\ShtatForm.cs + + + + + + + + + + + + + + + + + + AAAAAAAQACAAQBAAAACCACACAAAAACAAAAABAAABQCk= + SupportForms\WorkShtatForm.cs + + + + + + + + + AAAAAAAAAAAAAAAAAIAAAAAAAAAEAEAAAAAAAAAAAAA= + GlobalFormFunc.cs + + + + \ No newline at end of file diff --git a/DC/CD_M_5.cd b/DC/CD_M_5.cd new file mode 100644 index 0000000..39ff402 --- /dev/null +++ b/DC/CD_M_5.cd @@ -0,0 +1,45 @@ + + + + + + AgACAAAAAAAAEBAAADAAAABAAAAMAAADAAAAoAIBAAA= + DataBase\ChelDB.cs + + + + + + + + + + + + + + + + + + + + AIExAAABACAIQBAHBCCBCCACAAAAAQGYgMBhACABAAE= + MainForms\ChelForm.cs + + + + + + + + + + + + AAAAAAAAAAAAAAAAAIAAAAAAAAAEAEAAAAAAAAAAAAA= + GlobalFormFunc.cs + + + + \ No newline at end of file diff --git a/DC/CD_M_6.cd b/DC/CD_M_6.cd new file mode 100644 index 0000000..5c9a9c3 --- /dev/null +++ b/DC/CD_M_6.cd @@ -0,0 +1,52 @@ + + + + + + BAICAAAAACAAAAAAAAAAAAAAAAAACAAAAQAAAAAAAAA= + DataBase\FreeDB.cs + + + + + + BAICCAQAAAAQAAAAAAAAAAAAAAAACAAAAQAAQAAAAAA= + DataBase\LearnDB.cs + + + + + + + + + + + + + + + ACAAAEAQACAAQBAAAACCACACAAABACDAEAABAAQAQAE= + SupportForms\LearnForm.cs + + + + + + + + + + + + + + AAAAAkAAACABQBEQAACCACACAAAAACAAAAABAAUAQAE= + SupportForms\OptForm.cs + + + + + + + \ No newline at end of file diff --git a/DC/CD_M_7.cd b/DC/CD_M_7.cd new file mode 100644 index 0000000..04ed242 --- /dev/null +++ b/DC/CD_M_7.cd @@ -0,0 +1,30 @@ + + + + + + QIAQAAABACAAABADAACACCACAAAAQQAIgEAAAAABIAE= + + + + + + QIAUAAABACAAAACJAQCACCACAAA4AQAIECAgAAABAAE= + + + + + + EAgAQAAAACAQQBAABCCCACCCAAACACAAAAhBAAEAQAk= + SupportForms\WorkChelForm.cs + + + + + + AAAAAAAAACAAABgDAACCACACAAACACAAAAAAAAEAAAE= + SupportForms\WorkerForm.Designer.cs + + + + \ No newline at end of file diff --git a/DC/ClassDiagram2.cd b/DC/ClassDiagram2.cd new file mode 100644 index 0000000..108cdae --- /dev/null +++ b/DC/ClassDiagram2.cd @@ -0,0 +1,462 @@ + + + + + + AAADAAAAAAAAAAAAAAAAAAgAACAAgAAAAAAAAAAAAAA= + DataBase\AccessDB.cs + + + + + + + + + BSSTjADAzlZYlACEECmxBNd8Y8AAMCSYAGggMG1jQCI= + DataBase\AccessDB.cs + + + + + + AgACAAAAAAAAEBAAADAAAABAAAAMAAADAAAAoAIBAAA= + DataBase\ChelDB.cs + + + + + + + + + + + + AgACAAAAAAAAABAAAAAAAAAAAwAMMAAAAAAAAAIAAAA= + DataBase\ChildDB.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAAAAAAQAAEIAAABAAAAAAEAAAQAABACAAgACABIA= + DataBase\ConnectDB.cs + + + + + + + + + + + + + + + + + + + BAACAAAAJAAAAAAEAAAAAAAAAAAACAAEAAQAAAAABAA= + DataBase\CorrStajDB.cs + + + + + + + + + + BAICAAAAACAAAAAAAAAAAAAAAAAACAAAAQAAAAAAAAA= + DataBase\FreeDB.cs + + + + + + + + + BAICCAQAAAAQAAAAAAAAAAAAAAAACAAAAQAAQAAAAAA= + DataBase\LearnDB.cs + + + + + + + + + BAICAAAAACAAEAAAAAAAAAAAAAAACBEAAAAAAACAIAA= + DataBase\RabotinkDB.cs + + + + + + + + + + + + + AAACAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAQAAAAAAAA= + DataBase\RabotnikTypeStajDB.cs + + + + + + AAACAAAAAAAAgAAAAAAAAQAAAAAAAAAhAAAAAAAAAAA= + DataBase\ShtatDB.cs + + + + + + + + + AAACAAAAAAAAEAAAAAAAAAQAAAAAAAAAAAAAAACAAAA= + DataBase\TypeStajDB.cs + + + + + + + + + + AAACAAAAAAQAAAAAEAAAIAAAAAAAAAAAAAAQAAAAAIA= + DataBase\UserDB.cs + + + + + + + + + AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAABAAAAAA= + Program.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + AIExAAABACAIQBAHBCCBCCACAAAAAQGYgMBhACABAAE= + MainForms\ChelForm.cs + + + + + + + + + + + + AIgQBAABgCAAABADAACACCADAAAIAQEIgGAAACABAAE= + + + + + + QIAQAAABACAAABADAACACCACAAAAQQAIgEAAAAABIAE= + + + + + + AAAAAAAAACAAQBAAAACCCCACAAAAACAAEAABAAAAQAE= + MainForms\LoginForm.cs + + + + + + QIAQEAABACAAQBADAECACGACAAAAAQAIgGAAAAABIBE= + + + + + + AKASAAgDJCEAABYVDCSBCCKCIABAIQEIQLhBESgJABE= + MainForms\RabForm.cs + + + + + + + + + + + + + + QIAUAAABACAAAACJAQCACCACAAA4AQAIECAgAAABAAE= + + + + + + + + + + + + + + + + + + + + + + + + + + + + AIAQAAAhACAIQhAHBCCBCCICAAAAAwEIgMBhACABAAE= + MainForms\ShtatForm.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AKAQAAABACARABAXAAaAKCCiBAEIAQAIAGBAAQAhIIE= + MainForms\StajForm.cs + + + + + + + + + + + + + + + + + AAAAAAAAACAgQBAABGCCACCCAAACACAABAQBAAAA8gE= + SupportForms\ChildForm.cs + + + + + + + + + + + + + + ACAAAEAQACAAQBAAAACCACACAAABACDAEAABAAQAQAE= + SupportForms\LearnForm.cs + + + + + + + + + AAAAAAAAACAAQBAAAACCCCACAAAAACAAAAABQBAAQQE= + SupportForms\LoginForm.cs + + + + + + + + + + + + + + AAAAAkAAACABQBEQAACCACACAAAAACAAAAABAAUAQAE= + SupportForms\OptForm.cs + + + + + + + + + EAgAQAAAACAQQBAABCCCACCCAAACACAAAAhBAAEAQAk= + SupportForms\WorkChelForm.cs + + + + + + AAAAAAAAACAAABgDAACCACACAAACACAAAAAAAAEAAAE= + SupportForms\WorkerForm.Designer.cs + + + + + + AAAAAAAQACAAQBAAAACCACACAAAAACAAAAABAAABQCk= + SupportForms\WorkShtatForm.cs + + + + + + + + + AAAAAAAAAAAAAAAAAIAAAAAAAAAEAEAAAAAAAAAAAAA= + GlobalFormFunc.cs + + + + \ No newline at end of file diff --git a/DataBase/AccessDB.cs b/DataBase/AccessDB.cs new file mode 100644 index 0000000..144ce3e --- /dev/null +++ b/DataBase/AccessDB.cs @@ -0,0 +1,226 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class Access + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [ForeignKey("User")] + public int UserId { get; set; } + public User User { get; set; } + public int FormId { get; set; } + public int FormatAccess { get; set; } + } + + public static partial class FuncDB + { + public static void AccessCheckValid(Access obj) + { + try + { + if (obj == null) throw new Exception("Ошибка инициализации."); + if (UserGetById(obj.UserId) == null) throw new Exception("Пользователь не указан."); + if (obj.FormId < 0 || obj.FormId >= FormArray.formName.Length) throw new Exception("Неверно указана форма."); + if (obj.FormId < 0 || obj.FormatAccess >= FormArray.formAccess.Length) throw new Exception("Неверно указаны разрешения"); + } + catch { throw; } + } + + public static Access AccessGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Accessy + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + public static Access[] AccessGetByUserIdFormId(int UserId, int FormId) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Accessy + where a.UserId == UserId && a.FormId == FormId + select a; + try + { + return res.ToArray(); + } + catch + { + throw; + } + } + } + catch + { + throw; + } + } + public static Access AccessGetByUserIdFormIdAccessId(int UserId, int FormId, int AccessId) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Accessy + where + a.UserId == UserId && + a.FormId == FormId && + a.FormatAccess == AccessId + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static void AccessAdd(Access obj) + { + try + { + AccessCheckValid(obj); + var local_obj = AccessGetByUserIdFormIdAccessId(obj.UserId, obj.FormId, obj.FormatAccess); + if (local_obj == null) + using (var db = new MainDB()) + { + db.Accessy.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void AccessDelete(Access obj) + { + try + { + if (obj == null) + return; + var localObj = AccessGetById(obj.Id); + if (localObj == null) + throw new Exception("Разрешение не существует."); + using (var db = new MainDB()) + { + db.Accessy.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + + public static Access[] AccessList(int UserId) + { + try + { + using (var db = new MainDB()) + { + var access = ( + from a in db.Accessy + where a.UserId == UserId + orderby a.FormId + orderby a.FormatAccess + select a + ).ToArray(); + return access; + } + } + catch + { + throw; + } + } + public static bool[,] AccessListTable(int UserId) + { + try + { + var result = new bool[FormArray.formName.Length, FormArray.formAccess.Length]; + using (var db = new MainDB()) + { + var list = AccessList(UserId); + foreach (var r in list) + result[r.FormId, r.FormatAccess] = true; + return result; + } + } + catch + { + throw; + } + } + + public static int AccessToSettingsFullCountWithoutUserId(User user) + { + try + { + using (var db = new MainDB()) + { + var users = + (from a in db.Usery + where a.Id != user.Id + select a).ToArray(); + var count = 0; + foreach(var usr in users) + { + var access = + from a in db.Accessy + where + a.UserId == usr.Id && + a.FormId == 7 + select a; + if (access.Count() == FormArray.formAccess.Length) + count++; + } + return count; + } + } + catch + { + throw; + } + } + } +} \ No newline at end of file diff --git a/DataBase/ChelDB.cs b/DataBase/ChelDB.cs new file mode 100644 index 0000000..b61122e --- /dev/null +++ b/DataBase/ChelDB.cs @@ -0,0 +1,322 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class Chel + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + public string FName { get; set; } + public string SName { get; set; } + public string TName { get; set; } + public bool Male { get; set; } + public DateTime Birthday { get; set; } + public string Address { get; set; } + public string INN { get; set; } + public string Phone { get; set; } + public string SNILS { get; set; } + public string Pasport { get; set; } + public bool Pensia { get; set; } + public List CorrStajy { get; set; } + public List Learny { get; set; } + public List Rabotniky { get; set; } + public List Freey { get; set; } + + } + + public static partial class FuncDB + { + public static void ChelCheckValid(Chel obj) + { + try + { + if (obj == null) throw new Exception("Ошибка инициализации человека."); + if (string.IsNullOrEmpty(obj.FName)) throw new Exception("Фамилия не указана."); + if (string.IsNullOrEmpty(obj.SName)) throw new Exception("Имя не указано."); + if (obj.Birthday > DateTime.Now) throw new Exception("Дата рождения не верна."); + if (obj.Birthday > DateTime.Now.AddYears(-18).AddDays(1)) throw new Exception("Нельза добавить несовершеннолетнего."); + var rgx = new Regex("^[0-9]{12}$"); + if (!rgx.IsMatch(obj.INN)) throw new Exception("ИНН указан неверно."); + rgx = new Regex("^[0-9]{3}-[0-9]{3}-[0-9]{3} [0-9]{2}$"); + if (!rgx.IsMatch(obj.SNILS)) throw new Exception("СНИЛС указан неверно."); + if (string.IsNullOrEmpty(obj.Pasport)) throw new Exception("Надо добавить паспорт."); + } + catch { throw; } + } + + public static Chel ChelGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Chely + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + public static Chel ChelGetByINN(string inn) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Chely + where a.INN == inn + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + public static Chel ChelGetBySNILS(string snils) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Chely + where a.SNILS == snils + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static string ChelGetFIOShortById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + (from a in db.Chely + where a.Id == id + select a).Single(); + try + { + return res.FName + " " + + res.SName[0].ToString() + "." + + ((!string.IsNullOrEmpty(res.TName)) ? + res.TName[0].ToString() + "." : ""); + } + catch + { + return ""; + } + } + } + catch + { + throw; + } + } + + public static void ChelAdd(Chel obj) + { + try + { + ChelCheckValid(obj); + if (ChelGetByINN(obj.INN) != null) + throw new Exception("ИНН повторяется."); + if (ChelGetBySNILS(obj.SNILS) != null) + throw new Exception("СНИЛС повторяется."); + using (var db = new MainDB()) + { + db.Chely.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void ChelChange(Chel obj) + { + try + { + ChelCheckValid(obj); + var localObj = ChelGetById(obj.Id); + if (localObj == null) + throw new Exception("Человека не существует."); + var innObj = ChelGetByINN(obj.INN); + if (innObj != null && innObj.Id != localObj.Id) + throw new Exception("ИНН повторяется."); + var snilsObj = ChelGetBySNILS(obj.SNILS); + if (snilsObj != null && snilsObj.Id != localObj.Id) + throw new Exception("СНИЛС повторяется."); + using (var db = new MainDB()) + { + db.Chely.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void ChelDelete(Chel obj) + { + try + { + if (obj == null) + return; + var localObj = ChelGetById(obj.Id); + if (localObj == null) + throw new Exception("Человека не существует."); + using (var db = new MainDB()) + { + db.Chely.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + + public static Chel[] ChelList(string filter = null, bool isWorker = true) + { + try + { + using (var db = new MainDB()) + { + var chels = ( + from a in db.Chely + select a + ).ToList(); + + filter = filter == null ? "" : filter.ToLower(); + for (var i = 0; i < chels.Count;) + { + if (!isWorker) + { + var check = new List(RabotnikHistoryByChelId(chels[i].Id)); + var a = check.FindAll(x => !x.End.HasValue || (x.Start >= DateTime.Now && x.End.Value <= DateTime.Now)).Count(); + if (a > 0) + { + chels.RemoveAt(i); + continue; + } + } + + var fname = chels[i].FName.ToLower(); + var sname = chels[i].SName.ToLower(); + var tname = chels[i].TName.ToLower(); + var bday = chels[i].Birthday.ToString("yyyy.MM.dd"); + var adres = chels[i].Address.ToLower(); + var inn = chels[i].INN.ToLower(); + var snils = chels[i].SNILS.ToLower(); + var pasp = chels[i].Pasport.ToLower(); + if ( + fname.Contains(filter) || sname.Contains(filter) || + tname.Contains(filter) || bday.Contains(filter) || + adres.Contains(filter) || inn.Contains(filter) || + snils.Contains(filter) || pasp.Contains(filter) + ) + i++; + else + chels.RemoveAt(i); + } + return chels.ToArray(); + } + } + catch + { + throw; + } + } + + public static string[][] ChelListTableMain(string filter = null, bool isWorker = true) + { + try + { + return ChelListTableMain(ChelList(filter, isWorker)); + } + catch + { + throw; + } + } + public static string[][] ChelListTableMain(Chel[] data) + { + try + { + var result = new List(); + foreach (var chel in data) + result.Add( + new string[] + { + chel.Id.ToString(), + chel.FName.ToString(), + chel.SName.ToString(), + chel.TName.ToString(), + chel.Male ? "Муж." : "Жен.", + chel.Birthday.ToString("yyyy.MM.dd"), + chel.Address.ToString(), + chel.Phone.ToString(), + chel.INN.ToString(), + chel.SNILS.ToString(), + chel.Pasport.ToString(), + chel.Pensia ? "Да" : "Нет", + } + ); + return result.ToArray(); + } + catch + { + throw; + } + } + + + + } +} \ No newline at end of file diff --git a/DataBase/ChildDB.cs b/DataBase/ChildDB.cs new file mode 100644 index 0000000..16a1ff1 --- /dev/null +++ b/DataBase/ChildDB.cs @@ -0,0 +1,264 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class Child + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [ForeignKey("Chel")] + public int? Parent1Id { get; set; } + public Chel Parent1 { get; set; } + [ForeignKey("Chel")] + public int? Parent2Id { get; set; } + public Chel Parent2 { get; set; } + public string FName { get; set; } + public string SName { get; set; } + public string TName { get; set; } + public bool Male { get; set; } + public DateTime Birthday { get; set; } + + } + + public static partial class FuncDB + { + public static void ChildCheckValid(Child obj) + { + try + { + if (obj == null) + throw new Exception("Ошибка инициализации ребенка."); + if (string.IsNullOrEmpty(obj.FName)) + throw new Exception("Пустая фамилия."); + if (string.IsNullOrEmpty(obj.FName)) + throw new Exception("Пустое имя."); + if (!obj.Parent2Id.HasValue && !obj.Parent1Id.HasValue) + throw new Exception("Не указано ни одного родителя."); + if (obj.Parent2Id.HasValue && obj.Parent1Id.HasValue && obj.Parent1Id.Value == obj.Parent2Id.Value) + throw new Exception("Указан один и тот же родитель 2 раза."); + } + catch + { + throw; + } + } + public static Child ChildGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Childy + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static void ChildAdd(Child obj) + { + try + { + ChildCheckValid(obj); + if (!obj.Parent1Id.HasValue && obj.Parent2Id.HasValue) + { + obj.Parent1Id = obj.Parent2Id; + obj.Parent2Id = null; + } + using (var db = new MainDB()) + { + db.Childy.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void ChildChange(Child obj) + { + try + { + ChildCheckValid(obj); + var localObjById = ChildGetById(obj.Id); + if (localObjById == null) + throw new Exception("Не существует запись о ребенке."); + if (!obj.Parent1Id.HasValue && obj.Parent2Id.HasValue) + { + obj.Parent1Id = obj.Parent2Id; + obj.Parent2Id = null; + } + using (var db = new MainDB()) + { + db.Childy.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void ChildDelete(Child obj) + { + try + { + if (obj == null) + return; + var localObj = ChildGetById(obj.Id); + if (localObj == null) + throw new Exception("Запись о ребенке не существует."); + using (var db = new MainDB()) + { + db.Childy.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static Child[] ChildList(string filter = null) + { + try + { + using (var db = new MainDB()) + { + var child = ( + from a in db.Childy + select a + ).ToList(); + var _filter = string.IsNullOrEmpty(filter) ? "" : filter.ToLower(); + for (var i = 0; i < child.Count;) + { + var fname = child[i].FName.ToLower(); + var sname = child[i].SName.ToLower(); + var tname = child[i].TName.ToLower(); + var bday = child[i].Birthday.ToString("yyyy.MM.dd"); + if ( + fname.Contains(filter) || sname.Contains(filter) || + tname.Contains(filter) || bday.Contains(filter) + ) + i++; + else + child.RemoveAt(i); + } + return child.ToArray(); + } + } + catch + { + throw; + } + } + + public static string[][] ChildTableMain(string filter = null) + { + try + { + using (var db = new MainDB()) + { + var result = new List(); + var childs = ChildList(filter); + foreach (var child in childs) + { + result.Add( + new string[] + { + child.Id.ToString(), + child.FName + " " + + child.SName[0].ToString() + "." + + ((!string.IsNullOrEmpty(child.TName)) ? + child.TName[0].ToString() + "." : ""), + child.Male ? "Мальчик" : "Девочка", + child.Birthday.ToString("yyyy.MM.dd"), + child.Parent1Id.HasValue ? ChelGetFIOShortById(child.Parent1Id.Value) : "", + child.Parent2Id.HasValue ? ChelGetFIOShortById(child.Parent2Id.Value) : "" + } + ); + } + return result.ToArray(); + } + } + catch + { + throw; + } + } + + public static int ChildCount(DateTime dt, bool? isMale = null) + { + try + { + using (var db = new MainDB()) + { + var workIds = ( + from a in db.Rabotniky + where + !a.End.HasValue || + ( + dt >= a.Start + && + dt <= a.End.Value + ) + select a.ChelId + ).ToArray(); + var _dt = dt.AddYears(-15); + var res = ( + from a in db.Childy + where + a.Birthday > _dt + && + ( + !isMale.HasValue + || + a.Male == isMale.Value + ) + && + ( + ( + a.Parent1Id.HasValue + && + workIds.Contains(a.Parent1Id.Value) + ) + || + ( + a.Parent2Id.HasValue + && + workIds.Contains(a.Parent2Id.Value) + ) + ) + select a + ).Count(); + return res; + } + } + catch + { + throw; + } + } + + } +} diff --git a/DataBase/ConnectDB.cs b/DataBase/ConnectDB.cs index 3a4b5fd..13970eb 100644 --- a/DataBase/ConnectDB.cs +++ b/DataBase/ConnectDB.cs @@ -15,7 +15,14 @@ namespace Diplom_O.DataBase public DbSet Shtat { get; set; } public DbSet Rabotniky { get; set; } public DbSet Chely { get; set; } - public DbSet ChelToChely { get; set; } + public DbSet TypeStajy { get; set; } + public DbSet RabotnikTypeStajy { get; set; } + public DbSet Childy { get; set; } + public DbSet Learny { get; set; } + public DbSet CorrStajy { get; set; } + public DbSet Freey { get; set; } + public DbSet Accessy { get; set; } + public DbSet Usery { get; set; } public MainDB() { @@ -29,67 +36,30 @@ namespace Diplom_O.DataBase protected override void OnModelCreating(ModelBuilder modelBuilder) { } } - public class Rabotnik - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - [ForeignKey("Chel")] - public int ChelId { get; set; } - public Chel Chel { get; set; } - [ForeignKey("Shtat")] - public int ShtatId { get; set; } - public Shtat Shtat { get; set; } - public string KodSotr { get; set; } - public string Kategoriya { get; set; } - public bool Pensiya { get; set; } - - public DateTime Start { get; set; } - public DateTime? End { get; set; } - - } - - public class Shtat + public static partial class FuncDB { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - public string Doljnost { get; set; } - public int Size { get; set; } - public bool Active { get; set; } - } - public class Chel - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - public string FName { get; set; } - public string SName { get; set; } - public string TName { get; set; } - public bool Male { get; set; } - public DateTime Birthday { get; set; } - public string Address { get; set; } - public string INN { get; set; } - public string SNILS { get; set; } - public string Pasport { get; set; } - public List Rabota { get; set; } - } - public class ChelToChel - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - [ForeignKey("Chel1")] - public int Chel1Id { get; set; } - public Chel Chel1 { get; set; } - [ForeignKey("Chel2")] - public int Chel2Id { get; set; } - public Chel Chel2 { get; set; } - public int Lvl { get; set; } + public static void InitDB() + { + if (UserGetByLogin("Admin") != null) + return; + var user = new User() + { + Login = "Admin", + Pass = "Admin", + Hide = true, + Default = 7 + }; + UserAdd(user); + } } -} + + } diff --git a/DataBase/CorrStajDB.cs b/DataBase/CorrStajDB.cs new file mode 100644 index 0000000..9dc3e03 --- /dev/null +++ b/DataBase/CorrStajDB.cs @@ -0,0 +1,179 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class CorrStaj + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [ForeignKey("Chel")] + public int ChelId { get; set; } + public Chel Chel { get; set; } + [ForeignKey("TypeStaj")] + public int TypeStajId { get; set; } + public TypeStaj TypeStaj { get; set; } + public int Year { get; set; } + public int Month { get; set; } + public int Day { get; set; } + public bool AddFlag { get; set; } + } + + public static partial class FuncDB + { + public static void CorrStajValid(CorrStaj obj) + { + try + { + if (obj == null) + throw new Exception("Ошибка инициализации стажа."); + } + catch + { + throw; + } + } + + public static CorrStaj CorrStajGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var corrstaj = + from a in db.CorrStajy + where a.Id == id + select a; + try + { + return corrstaj.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + public static CorrStaj CorrStaj(int chelId, string name) + { + try + { + using (var db = new MainDB()) + { + var ts = TypeStajGetByName(name); + if (ts == null) + return null; + var corrstaj = + from a in db.CorrStajy + where a.TypeStajId == ts.Id && a.ChelId == chelId + select a; + try + { + return corrstaj.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static void CorrStajAdd(CorrStaj obj) + { + try + { + CorrStajValid(obj); + using (var db = new MainDB()) + { + db.CorrStajy.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void CorrStajChange(CorrStaj obj) + { + try + { + CorrStajValid(obj); + var localObjById = CorrStajGetById(obj.Id); + var localObjByName = CorrStaj(obj.ChelId, TypeStajGetById(obj.TypeStajId).Name); + if (localObjById == null) + throw new Exception("Корректировка стажа не существует."); + if (localObjByName != null && + localObjByName.Id != localObjById.Id) + throw new Exception("Корректировка стажа существует."); + using (var db = new MainDB()) + { + db.CorrStajy.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void CorrStajDelete(CorrStaj obj) + { + try + { + if (obj == null) + return; + var localObj = CorrStajGetById(obj.Id); + if (localObj == null) + throw new Exception("Корректироваки стажа не существует."); + using (var db = new MainDB()) + { + db.CorrStajy.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + + public static CorrStaj[] CorrStajList(int chelId) + { + try + { + using (var db = new MainDB()) + { + var res = ( + from a in db.CorrStajy + where a.ChelId == chelId + select a + ).ToList(); + return res.ToArray(); + } + } + catch + { + throw; + } + } + + } + + +} diff --git a/DataBase/FreeDB.cs b/DataBase/FreeDB.cs new file mode 100644 index 0000000..0f3aa0d --- /dev/null +++ b/DataBase/FreeDB.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class Free + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [ForeignKey("Chel")] + public int ChelId { get; set; } + public Chel Chel { get; set; } + public string Type { get; set; } + public DateTime Start { get; set; } + public DateTime? End { get; set; } + } + + public static partial class FuncDB + { + public static void FreeCheckValid(Free obj) + { + try + { + if (obj == null) throw new Exception("Ошибка инициализации."); + if (string.IsNullOrEmpty(obj.Type)) throw new Exception("Тип не указан."); + } + catch { throw; } + } + public static Free FreeGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Freey + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static void FreeAdd(Free obj) + { + try + { + FreeCheckValid(obj); + using (var db = new MainDB()) + { + obj.Start = new DateTime(obj.Start.Year, obj.Start.Month, obj.Start.Day, 0, 0, 0); + if (obj.End.HasValue) + obj.End = new DateTime(obj.End.Value.Year, obj.End.Value.Month, obj.End.Value.Day, 23, 59, 59); + db.Freey.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void FreeChange(Free obj) + { + try + { + FreeCheckValid(obj); + var localObj = FreeGetById(obj.Id); + if (localObj == null) + throw new Exception("Отстранение не указано."); + using (var db = new MainDB()) + { + obj.Start = new DateTime(obj.Start.Year, obj.Start.Month, obj.Start.Day, 0, 0, 0); + if (obj.End.HasValue) + obj.End = new DateTime(obj.End.Value.Year, obj.End.Value.Month, obj.End.Value.Day, 23, 59, 59); + db.Freey.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void FreeDelete(Free obj) + { + try + { + if (obj == null) + return; + var localObj = FreeGetById(obj.Id); + if (localObj == null) + throw new Exception("Отстранение не существует."); + using (var db = new MainDB()) + { + db.Freey.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + + public static Free[] FreeList(int chelId) + { + try + { + using (var db = new MainDB()) + { + var free = ( + from a in db.Freey + where a.ChelId == chelId + select a + ).ToArray(); + return free; + } + } + catch + { + throw; + } + } + public static Dictionary FreeListDays(int chelId, DateTime start, DateTime end) + { + try + { + using (var db = new MainDB()) + { + var list = + from a in db.Freey + where + a.ChelId == chelId && + a.Start <= end && + (!a.End.HasValue || a.End.Value >= start) + select a; + var subres = new Dictionary(); + foreach(var r in list) + { + var s = r.Start <= start ? start : r.Start; + var e = r.End.HasValue ? + r.End.Value >= end ? end : + r.End.Value : + end; + var d = (int)Math.Ceiling((e - s).TotalDays); + if (d <= 0) + continue; + if (!subres.ContainsKey("Общее")) + subres.Add("Общее", 0); + subres["Общее"] = subres["Общее"] + d; + if (!subres.ContainsKey(r.Type)) + subres.Add(r.Type, 0); + subres[r.Type] = subres[r.Type] + d; + } + return subres; + } + } + catch + { + throw; + } + } + public static string[][] FreeListTable(int chelId, DateTime? start = null, DateTime? end = null) + { + try + { + using (var db = new MainDB()) + { + var list = + from a in db.Freey + where + a.ChelId == chelId && + (!end.HasValue || a.Start <= end.Value) && + (!a.End.HasValue || !start.HasValue || a.End.Value >= start.Value) + select a; + var subres = new List(); + foreach (var r in list) + { + var s = !start.HasValue ? r.Start : + r.Start <= start ? start.Value : r.Start; + var e = r.End.HasValue ? + end.HasValue ? + r.End.Value >= end ? end.Value : + r.End.Value : + end.Value : + DateTime.Now; + subres.Add( + new string[]{ + r.Id.ToString(), + r.Type, + s.ToString("yyyy.MM.dd"), + e.ToString("yyyy.MM.dd"), + Math.Ceiling((e - s).TotalDays).ToString() + }); + } + return subres.ToArray(); + } + } + catch + { + throw; + } + + } + } +} \ No newline at end of file diff --git a/DataBase/FuncDB.cs b/DataBase/FuncDB.cs deleted file mode 100644 index ef5bb73..0000000 --- a/DataBase/FuncDB.cs +++ /dev/null @@ -1,340 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; - -namespace Diplom_O.DataBase -{ - public static class FuncDB - { - public static void ChkShtat(Shtat obj) - { - try - { - if (string.IsNullOrEmpty(obj.Doljnost)) throw new Exception("Пустая должность."); - if (obj.Size <= 0) throw new Exception("Количество мест <= 0."); - } - catch { throw; } - } - public static Shtat GetShtat(int id) - { - try - { - using (var db = new MainDB()) - { - var res = from a in db.Shtat - where a.Id == id - select a; - try { return res.Single(); } - catch { return null; } - } - } - catch { throw; } - } - public static (Shtat shtat, int ost)[] ListShtat(string filter = null) - { - try - { - using (var db = new MainDB()) - { - var f = (string.IsNullOrEmpty(filter)) ? "" : filter.ToLower(); - var shtat = (string.IsNullOrEmpty(f)) ? - (from a in db.Shtat - where a.Active - select a).ToArray() : - (from a in db.Shtat - where a.Doljnost.ToLower().Contains(f) && a.Active - select a).ToArray(); - var res = new List<(Shtat shtat, int ost)>(); - for (var i = 0; i < shtat.Length; i++) - res.Add((shtat[i], shtat[i].Size - BusySizeShtat(shtat[i].Id))); - return res.ToArray(); - } - } - catch { throw; } - } - public static void AddShtat(Shtat obj) - { - try - { - ChkShtat(obj); - if (HaveDoljFromShtat(obj.Doljnost)) throw new Exception("Должность существует."); - using (var db = new MainDB()) - { - obj.Active = true; - db.Shtat.Add(obj); - db.SaveChanges(); - } - } - catch { throw; } - } - public static void ChangeShtat(Shtat obj) - { - try - { - ChkShtat(obj); - if (GetShtat(obj.Id) == null) throw new Exception("Должность не существует."); - if (GetShtat(obj.Id).Doljnost != obj.Doljnost && HaveDoljFromShtat(obj.Doljnost)) throw new Exception("Должность существует."); - if (obj.Size < BusySizeShtat(obj.Id)) throw new Exception("Занятых мест больше > указанных."); - using (var db = new MainDB()) - { - db.Shtat.Update(obj); - db.SaveChanges(); - } - } - catch { throw; } - } - public static void DelShtat(Shtat obj) - { - try - { - ChkShtat(obj); - if (GetShtat(obj.Id) == null) throw new Exception("Должность не существует."); - if (BusySizeShtat(obj.Id) > 0) throw new Exception("Есть занятые места."); - obj.Active = false; - using (var db = new MainDB()) - { - db.Shtat.Update(obj); - db.SaveChanges(); - } - } - catch { throw; } - } - public static int BusySizeShtat(int id) - { - try - { - using (var db = new MainDB()) - { - var res = (from a in db.Rabotniky - where a.ShtatId == id && !a.End.HasValue - select a).ToArray(); - return res.Length; - } - } - catch { throw; } - } - public static bool HaveDoljFromShtat(string dolj) - { - try - { - using (var db = new MainDB()) - { - var chkDolj = from a in db.Shtat - where a.Doljnost == dolj && a.Active - select a; - return chkDolj.Count() > 0; - } - } - catch { throw; } - } - - public static void ChkChel(Chel chel) - { - try - { - if (string.IsNullOrEmpty(chel.FName)) throw new Exception("Фамилия не указана."); - if (string.IsNullOrEmpty(chel.SName)) throw new Exception("Имя не указано."); - if (chel.Birthday > DateTime.Now) throw new Exception("Дата рождения не верна."); - var rgx = new Regex("^[0-9]{12}$"); - if (!rgx.IsMatch(chel.INN)) throw new Exception("ИНН указан неверно."); - rgx = new Regex("^[0-9]{3}-[0-9]{3}-[0-9]{3} [0-9]{2}$"); - if (!rgx.IsMatch(chel.SNILS)) throw new Exception("СНИЛС указан неверно."); - } - catch { throw; } - } - public static Chel GetChel(int id) - { - try - { - using (var db = new MainDB()) - { - var res = from a in db.Chely - where a.Id == id - select a; - try { return res.Single(); } - catch { return null; } - } - } - catch { throw; } - } - public static Chel[] ListChel(string filter = null) - { - try - { - using (var db = new MainDB()) - { - var f = (string.IsNullOrEmpty(filter)) ? "" : filter.ToLower(); - return (string.IsNullOrEmpty(f)) ? - (from a in db.Chely - select a).ToArray() : - (from a in db.Chely - where - (!string.IsNullOrEmpty(a.FName) && a.FName.ToLower().Contains(f)) || - (!string.IsNullOrEmpty(a.SName) && a.SName.ToLower().Contains(f)) || - (!string.IsNullOrEmpty(a.TName) && a.TName.ToLower().Contains(f)) || - a.Birthday.ToString("yyyy.MM.dd").ToLower().Contains(f) || - (!string.IsNullOrEmpty(a.Address) && a.Address.ToLower().Contains(f)) || - (!string.IsNullOrEmpty(a.INN) && a.INN.ToLower().Contains(f)) || - (!string.IsNullOrEmpty(a.SNILS) && a.SNILS.ToLower().Contains(f)) || - (!string.IsNullOrEmpty(a.Pasport) && a.Pasport.ToLower().Contains(f)) - select a).ToArray(); - } - } - catch { throw; } - } - public static bool HaveChelRabotnik(int id, bool all=false) - { - try - { - using (var db = new MainDB()) - { - var res = (from a in db.Rabotniky - where a.ChelId == id && (all || !a.End.HasValue) - select a).ToArray(); - return res.Length > 0; - } - } - catch { throw; } - } - public static void AddChel(Chel chel) - { - try - { - ChkChel(chel); - using (var db = new MainDB()) - { - db.Chely.Add(chel); - db.SaveChanges(); - } - } - catch { throw; } - } - public static void ChangeChel(Chel chel) - { - try - { - ChkChel(chel); - if (GetChel(chel.Id) == null) throw new Exception("Человека не существует."); - using (var db = new MainDB()) - { - db.Chely.Update(chel); - db.SaveChanges(); - } - } - catch { throw; } - } - public static void DelChel(Chel chel) - { - try - { - ChkChel(chel); - if (GetChel(chel.Id) == null) throw new Exception("Человека не существует."); - if (HaveChelRabotnik(chel.Id, true)) throw new Exception("Человек есть в таблице работников."); - using (var db = new MainDB()) - { - db.Chely.Remove(chel); - db.SaveChanges(); - } - } - catch { throw; } - } - public static bool HaveChelToChel(int id) - { - try - { - using (var db = new MainDB()) - { - var res = (from a in db.ChelToChely - where a.Chel1Id == id || a.Chel2Id == id - select a).Count(); - return res > 0; - } - } - catch { throw; } - } - public static bool CanBirthdayChelToChel(int id, DateTime date) - { - try - { - using (var db = new MainDB()) - { - var res = (from a in db.ChelToChely - join b in db.Chely on a.Chel2Id equals b.Id - join c in db.Chely on a.Chel1Id equals c.Id - where (a.Chel1Id == id && date > b.Birthday) || - (a.Chel2Id == id && date < c.Birthday) - select a).Count(); - return res == 0; - } - } - catch { throw; } - } - public static (int chelToChelId, Chel chel, int lvl)[] ListRodFromChel(int id) - { - try - { - var rodChel = new List<(int chelToChelId, Chel chel, int lvl)>(); - using (var db = new MainDB()) - { - var parents = new List<(Chel chel,int lvl)>() { (GetChel(id), 0) }; - var childrens = new List<(Chel chel, int lvl)>() { (GetChel(id), 0) }; - while (parents.Count > 0 || childrens.Count > 0) - { - var newParents = new List<(Chel chel, int lvl)>(); - var newChildrens = new List<(Chel chel, int lvl)>(); - for(var i = 0; i < parents.Count || i < childrens.Count; i++) - { - var parentsLinks = - (from a in db.ChelToChely - where (i < parents.Count) && a.Chel2Id == parents[i].chel.Id - select a).ToArray(); - var childrensLinks = - (from a in db.ChelToChely - where (i < childrens.Count) && a.Chel1Id == childrens[i].chel.Id - select a).ToArray(); - for (var j = 0; j < parentsLinks.Length || j < childrensLinks.Length; j++) - { - var chel = j < parentsLinks.Length ? GetChel(parentsLinks[j].Chel1Id) : null; - if (chel != null && rodChel.FindAll(x => x.chel.Id == chel.Id).Count == 0) - { - rodChel.Add((parentsLinks[j].Id, chel, parents[i].lvl - parentsLinks[j].Lvl)); - newParents.Add((chel, parents[i].lvl - parentsLinks[j].Lvl)); - } - - chel = j < childrensLinks.Length ? GetChel(childrensLinks[j].Chel2Id) : null; - if (chel != null && rodChel.FindAll(x => x.chel.Id == chel.Id).Count == 0) - { - rodChel.Add((childrensLinks[j].Id, chel, childrens[i].lvl + childrensLinks[j].Lvl)); - newChildrens.Add((chel, childrens[i].lvl + childrensLinks[j].Lvl)); - } - } - } - parents = newParents; - childrens = newChildrens; - } - } - return rodChel.OrderByDescending(x => x.lvl).ToArray(); - } - catch { throw; } - } - - public static ChelToChel GetChelToChel(int id) - { - try - { - using (var db = new MainDB()) - { - var res = from a in db.ChelToChely - where a.Id == id - select a; - try { return res.Single(); } - catch { return null; } - } - } - catch { throw; } - } - } -} diff --git a/DataBase/LearnDB.cs b/DataBase/LearnDB.cs new file mode 100644 index 0000000..4dccbf4 --- /dev/null +++ b/DataBase/LearnDB.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class Learn + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [ForeignKey("Chel")] + public int ChelId { get; set; } + public Chel Chel { get; set; } + public string NameSchool { get; set; } + public string Type { get; set; } + public string Spec { get; set; } + public string Curs { get; set; } + public string ProfPer { get; set; } + public DateTime End { get; set; } + } + + public static partial class FuncDB + { + public static void LearnCheckValid(Learn obj) + { + try + { + if (obj == null) throw new Exception("Ошибка инициализации."); + if (ChelGetById(obj.ChelId) == null) throw new Exception("Человек не указан."); + if (string.IsNullOrEmpty(obj.NameSchool)) throw new Exception("Обр. учр. не указано."); + if (string.IsNullOrEmpty(obj.Type)) throw new Exception("Уровень не указан."); + if (string.IsNullOrEmpty(obj.Spec)) throw new Exception("Специальность не указана."); + } + catch { throw; } + } + public static Learn LearnGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Learny + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static void LearnAdd(Learn obj) + { + try + { + LearnCheckValid(obj); + + using (var db = new MainDB()) + { + db.Learny.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void LearnChange(Learn obj) + { + try + { + LearnCheckValid(obj); + var localObj = LearnGetById(obj.Id); + if (localObj == null) + throw new Exception("Образование не указано."); + using (var db = new MainDB()) + { + db.Learny.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void LearnDelete(Learn obj) + { + try + { + if (obj == null) + return; + var localObj = LearnGetById(obj.Id); + if (localObj == null) + throw new Exception("Образование не существует."); + using (var db = new MainDB()) + { + db.Learny.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + + public static Learn[] LearnList(int chelId) + { + try + { + using (var db = new MainDB()) + { + var learns = ( + from a in db.Learny + where a.ChelId == chelId + select a + ).ToArray(); + return learns; + } + } + catch + { + throw; + } + } + + public static string[][] LearnListTableMain(int chelId) + { + try + { + return LearnListTableMain(LearnList(chelId)); + } + catch + { + throw; + } + } + public static string[][] LearnListTableMain(Learn[] data) + { + try + { + var result = new List(); + foreach (var learn in data) + result.Add( + new string[] + { + learn.Id.ToString(), + learn.NameSchool, + learn.Type, + learn.Spec, + learn.End.ToString("yyyy.MM.dd"), + learn.Curs, + learn.ProfPer + } + ); + return result.ToArray(); + } + catch + { + throw; + } + } + + } +} \ No newline at end of file diff --git a/DataBase/RabotinkDB.cs b/DataBase/RabotinkDB.cs new file mode 100644 index 0000000..8dd4247 --- /dev/null +++ b/DataBase/RabotinkDB.cs @@ -0,0 +1,448 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class Rabotnik + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [ForeignKey("Chel")] + public int ChelId { get; set; } + public Chel Chel { get; set; } + [ForeignKey("Shtat")] + public int? ShtatId { get; set; } + public Shtat Shtat { get; set; } + public string TabNum { get; set; } + public bool AnotherWork { get; set; } + public DateTime Start { get; set; } + public DateTime? End { get; set; } + public List RabotnikTypeStajy { get; set; } + } + + public static partial class FuncDB + { + public static void RabotnikCheckValid(Rabotnik obj) + { + try + { + if (obj == null) + throw new Exception("Ошибка инициализации сотрудника."); + if (string.IsNullOrEmpty(obj.TabNum) && !obj.AnotherWork) + throw new Exception("Пустой табельный номер."); + if ( + obj.Start > (obj.End.HasValue ? obj.End.Value : DateTime.Now) + ) + throw new Exception("Неверная дата."); + } + catch + { + throw; + } + } + + public static Rabotnik RabotnikGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Rabotniky + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static Rabotnik[] RabotnikHistoryById(int id) + { + try + { + var rabotnik = RabotnikGetById(id); + RabotnikCheckValid(rabotnik); + return + RabotnikHistoryByChelId( + rabotnik.ChelId + ); + } + catch + { + throw; + } + } + public static Rabotnik[] RabotnikHistoryByRabotingId(Rabotnik obj) + { + try + { + RabotnikCheckValid(obj); + return RabotnikHistoryByChelId( + obj.ChelId + ); + } + catch + { + throw; + } + } + public static Rabotnik[] RabotnikHistoryByChelId(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Rabotniky + where a.ChelId == id + orderby a.Start + select a; + return res.ToArray(); + } + } + catch + { + throw; + } + } + + public static bool RabotnikCheckDate(int chelId, DateTime start, DateTime? end, int rabotnikId = -1) + { + try + { + using (var db = new MainDB()) + { + var now = DateTime.Now; + var _end = end ?? now; + return ( + from a in db.Rabotniky + where + a.ChelId == chelId + && + (rabotnikId != -1 ? a.Id != rabotnikId : true) + && + ( + ( + a.Start >= start + && + a.Start <= _end + ) + || + ( + (a.End ?? now) >= start + && + (a.End ?? now) <= _end + ) + ) + select a + ).Count() == 0; + } + } + catch + { + throw; + } + } + + public static void RabotnikAdd(Rabotnik obj) + { + try + { + RabotnikCheckValid(obj); + if (!RabotnikCheckDate(obj.ChelId, obj.Start, obj.End)) + throw new Exception("Попадает в существующий временной интервал."); + using (var db = new MainDB()) + { + db.Rabotniky.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void RabotnikChange(Rabotnik obj) + { + try + { + RabotnikCheckValid(obj); + var localObjById = RabotnikGetById(obj.Id); + if (localObjById == null) + throw new Exception("Не существует запись о сотруднике."); + if (obj.ChelId != localObjById.ChelId) + throw new Exception("Нельзя менять человека."); + if (!RabotnikCheckDate(obj.ChelId, obj.Start, obj.End, obj.Id)) + throw new Exception("Пересекатеся с другими записями о работе."); + /*if (ShtatGetById(obj.ShtatId) == null) + throw new Exception("Должность не существует.");*/ + if (Program.IsDebug) + throw new Exception("НАДО ДОРАБОТАТЬ ПРОВЕРКУ ЗАПОЛНЕНИЯ ДОЛЖНОСТЕЙ"); + using (var db = new MainDB()) + { + db.Rabotniky.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void RabotnikDelete(Rabotnik obj) + { + try + { + if (obj == null) + return; + var localObj = RabotnikGetById(obj.Id); + if (localObj == null) + throw new Exception("Запись о сотруднике не существует."); + using (var db = new MainDB()) + { + var type = FuncDB.RabotnikTypeStajList(obj.Id); + foreach (var r in type) + FuncDB.RabotnikTypeStajDelete(r); + db.Rabotniky.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static Rabotnik[] RabotnikList(string filter = null) + { + try + { + using (var db = new MainDB()) + { + var _filter = string.IsNullOrEmpty(filter) ? null : filter.ToLower(); + var rabotnik = ( + from a in db.Rabotniky + select a + ); + return rabotnik.ToArray(); + + } + } + catch + { + throw; + } + } + public static Rabotnik[] RabotnikListLast(string filter = null) + { + try + { + using (var db = new MainDB()) + { + var _chel = FuncDB.ChelList(); + var rabotnik = new List(); + var _filter = string.IsNullOrEmpty(filter) ? null : filter.ToLower(); + foreach (var c in _chel) + { + var rab = ( + from a in db.Rabotniky + where a.End == null && a.ChelId == c.Id + select a + ).ToArray(); + if (rab.Length == 0) + { + rab = ( + from a in db.Rabotniky + where a.ChelId == c.Id + orderby a.End descending + select a + ).ToArray(); + } + if (rab.Length > 0) + rabotnik.Add(rab[0]); + } + return rabotnik.ToArray(); + } + } + catch + { + throw; + } + } + public static Rabotnik[] RabotnikListByChelId(int chelId) + { + try + { + using (var db = new MainDB()) + { + var rabotnik = ( + from a in db.Rabotniky + where a.ChelId == chelId + orderby a.Start + select a + ); + return rabotnik.ToArray(); + } + } + catch + { + throw; + } + } + + public static string[][] RabotnikTableMain(string filter = null) + { + try + { + return RabotnikTableMain(RabotnikListLast(filter)); + } + catch + { + throw; + } + } + public static string[][] RabotnikTableMain(Rabotnik[] data) + { + try + { + using (var db = new MainDB()) + { + var result = new List(); + foreach (var rabotnik in data) + { + result.Add( + new string[] + { + rabotnik.Id.ToString(), + rabotnik.TabNum, + ChelGetFIOShortById(rabotnik.ChelId), + rabotnik.AnotherWork ? + "Иное место" : + ShtatGetById(rabotnik.ShtatId.Value).Doljnost + } + ); + } + return result.ToArray(); + } + } + catch + { + throw; + } + + } + public static string[][] RabotnikByChelIdTable(int chelId) + { + try + { + return RabotnikByChelIdTable(RabotnikListByChelId(chelId)); + } + catch + { + throw; + } + } + public static string[][] RabotnikByChelIdTable(Rabotnik[] data) + { + try + { + using (var db = new MainDB()) + { + var result = new List(); + foreach (var rabotnik in data) + { + result.Add( + new string[] + { + rabotnik.Id.ToString(), + rabotnik.TabNum, + rabotnik.AnotherWork ? + "Иное место" : + ShtatGetById(rabotnik.ShtatId.Value).Doljnost, + rabotnik.Start.ToString("yyyy.MM.dd"), + rabotnik.End.HasValue ? rabotnik.End.Value.ToString("yyyy.MM.dd") : "По настоящее время" + } + ); + } + return result.ToArray(); + } + } + catch + { + throw; + } + } + public static (int year, int month, int day) RabotnikGetTotalTime(Rabotnik obj, DateTime? onDate = null) + { + if (!onDate.HasValue) + onDate = DateTime.Now; + var year = 0; + var month = 0; + var day = 0; + + if (obj == null) + return (year, month, day); + var cursor = + obj.End.HasValue ? + obj.End.Value <= onDate ? + obj.End.Value : + onDate.Value : + onDate.Value; + var finish = obj.Start; + if (cursor <= finish) + return (year, month, day); + while (finish.Year < cursor.Year) + { + year++; + cursor = cursor.AddYears(-1); + } + if (finish.Month > cursor.Month) + { + year--; + cursor = cursor.AddYears(1); + } + while (finish.Month != cursor.Month) + { + month++; + cursor = cursor.AddMonths(-1); + } + if (finish.Day > cursor.Day) + { + month--; + cursor = cursor.AddMonths(1); + } + while (finish.Day != cursor.Day) + { + day++; + cursor = cursor.AddDays(-1); + } + while (day < 0) + { + day += 30; + month--; + } + + while (month < 0) + { + month += 12; + year--; + } + return (year, month, day); + } + } +} diff --git a/DataBase/RabotnikTypeStajDB.cs b/DataBase/RabotnikTypeStajDB.cs new file mode 100644 index 0000000..411a3d7 --- /dev/null +++ b/DataBase/RabotnikTypeStajDB.cs @@ -0,0 +1,188 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class RabotnikTypeStaj + { + public int Id { get; set; } + [ForeignKey("Rabotnik")] + public int RabitnikId { get; set; } + [ForeignKey("TypeStaj")] + public int TypeStajId { get; set; } + } + public static partial class FuncDB + { + public static void RabotnikTypeStajCheckValid(RabotnikTypeStaj obj) + { + try + { + if (obj == null) + throw new Exception("Ошибка инициализации стажа сотрудника."); + } + catch + { + throw; + } + } + public static RabotnikTypeStaj RabotnikTypeStajGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.RabotnikTypeStajy + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + public static RabotnikTypeStaj RabotnikTypeStajGetByTypeStajIdRabotnikId(int typeStajId, int rabotnikId) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.RabotnikTypeStajy + where a.RabitnikId == rabotnikId && + a.TypeStajId == typeStajId + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static void RabotnikTypeStajAdd(RabotnikTypeStaj obj) + { + try + { + RabotnikTypeStajCheckValid(obj); + if (RabotnikTypeStajGetByTypeStajIdRabotnikId(obj.TypeStajId, obj.RabitnikId) != null ) + throw new Exception("Тип стажа сотрудника существует."); + using (var db = new MainDB()) + { + db.RabotnikTypeStajy.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void RabotnikTypeStajDelete(RabotnikTypeStaj obj) + { + try + { + if (obj == null) + return; + var localObj = RabotnikTypeStajGetById(obj.Id); + if (localObj == null) + throw new Exception("Тип стажа сотрудника не существует."); + using (var db = new MainDB()) + { + db.RabotnikTypeStajy.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + + public static RabotnikTypeStaj[] RabotnikTypeStajList(int rabId) + { + try + { + using (var db = new MainDB()) + { + var res = ( + from a in db.RabotnikTypeStajy + where a.RabitnikId == rabId + select a + ).ToList(); + return res.ToArray(); + } + } + catch + { + throw; + } + } + public static string[][] RabotnikTypeStajListString(int rabId) + { + try + { + var rts = RabotnikTypeStajList(rabId); + var res = new List(); + foreach (var r in rts) + { + res.Add( + new string[] + { + r.Id.ToString(), + TypeStajGetById(r.TypeStajId).Name + } + ); + } + return res.ToArray(); + } + catch + { + throw; + } + } + + public static RabotnikTypeStaj[] RabotnikTypeStajListByTypeStaj(int typeStaj) + { + try + { + using (var db = new MainDB()) + { + var res = ( + from a in db.RabotnikTypeStajy + where a.TypeStajId == typeStaj + select a + ).ToList(); + return res.ToArray(); + } + } + catch + { + throw; + } + } + + + } +} diff --git a/DataBase/ShtatDB.cs b/DataBase/ShtatDB.cs new file mode 100644 index 0000000..26330f1 --- /dev/null +++ b/DataBase/ShtatDB.cs @@ -0,0 +1,310 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore; + +namespace Diplom_O.DataBase +{ + public class Shtat + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + public string Doljnost { get; set; } + public int Size { get; set; } + public bool Active { get; set; } + public List Rabotniky { get; set; } + } + + public static partial class FuncDB + { + public static void ShtatCheckValid(Shtat obj) + { + try + { + if (obj == null) + throw new Exception("Ошибка инициализации должности."); + if (string.IsNullOrEmpty(obj.Doljnost)) + throw new Exception("Пустая должность."); + if (obj.Size <= 0) + throw new Exception("Количество мест <= 0."); + } + catch + { + throw; + } + } + private static void ShtatClear() + { + try + { + using (var db = new MainDB()) + { + var shtat = ( + from a in db.Shtat + where !a.Active + select a).ToArray(); + for (var i = 0; i < shtat.Length; i++) + if(ShtatFreeSpaceByShtat(shtat[i]) == shtat[i].Size) + { + db.Shtat.Remove(shtat[i]); + db.SaveChanges(); + } + } + } + catch + { + return; + } + } + + public static Shtat ShtatGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Shtat + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + public static Shtat ShtatGetByDoljnost(string doljnost) + { + try + { + using (var db = new MainDB()) + { + var chkDolj = + from a in db.Shtat + where a.Doljnost == doljnost && a.Active + select a; + try + { + return chkDolj.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static int ShtatFreeSpaceById(int id) + { + try + { + return + ShtatFreeSpaceByShtat( + ShtatGetById(id) + ); + } + catch + { + throw; + } + } + public static int ShtatFreeSpaceByShtat(Shtat obj) + { + try + { + ShtatCheckValid(obj); + using (var db = new MainDB()) + { + var now = DateTime.Now; + var res = ( + from a in db.Rabotniky + where + a.ShtatId == obj.Id + && + ( + !a.End.HasValue + || + ( + now >= a.Start + && + now <= a.End.Value + ) + ) + select a).Count(); + return obj.Size - res; + } + } + catch + { + throw; + } + } + + public static void ShtatAdd(Shtat obj) + { + try + { + ShtatCheckValid(obj); + if (ShtatGetByDoljnost(obj.Doljnost) != null) + throw new Exception("Должность существует."); + using (var db = new MainDB()) + { + obj.Active = true; + db.Shtat.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void ShtatChange(Shtat obj) + { + try + { + ShtatCheckValid(obj); + var localObjById = ShtatGetById(obj.Id); + var localObjByDoljnost = ShtatGetByDoljnost(obj.Doljnost); + if (localObjById == null) + throw new Exception("Должность не существует."); + if (localObjByDoljnost != null && + localObjByDoljnost != localObjById) + throw new Exception("Должность существует."); + if (localObjById.Size - ShtatFreeSpaceByShtat(localObjById) > obj.Size ) + throw new Exception("Занятых мест больше > указанных."); + using (var db = new MainDB()) + { + db.Shtat.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void ShtatDelete(Shtat obj) + { + try + { + if (obj == null) + return; + var localObj = ShtatGetById(obj.Id); + if (localObj == null) + throw new Exception("Должность не существует."); + if (ShtatFreeSpaceByShtat(localObj) != localObj.Size) + throw new Exception("Есть занятые места."); + localObj.Active = false; + using (var db = new MainDB()) + { + db.Shtat.Update(localObj); + db.SaveChanges(); + } + ShtatClear(); + } + catch + { + throw; + } + } + + public static (Shtat shtat, int free)[] ShtatList(string filter = null, bool isActual = false) + { + try + { + using (var db = new MainDB()) + { + var shtat = ( + from a in db.Shtat + where a.Active + select a + ).ToList(); + var res = new List<(Shtat shtat, int free)>(); + for (var i = 0; i < shtat.Count; i++) + { + var free = ShtatFreeSpaceByShtat(shtat[i]); + if (isActual && free <= 0) + continue; + res.Add(( + shtat[i], + free + )); + } + + if (string.IsNullOrEmpty(filter)) + return res.ToArray(); + + filter = filter.ToLower(); + for (var i = 0; i < res.Count;) + { + var dolj = res[i].shtat.Doljnost.ToLower(); + if (!dolj.Contains(filter)) + res.RemoveAt(i); + else + i++; + } + return res.ToArray(); + } + } + catch + { + throw; + } + } + public static string[][] ShtatListTableMain(string filter = null, bool isActual = false) + { + try + { + return ShtatListTableMain(ShtatList(filter, isActual)); + } + catch + { + throw; + } + } + public static string[][] ShtatListTableMain((Shtat shtat, int free)[] data) + { + try + { + var result = new List(); + foreach (var (shtat, free) in data) + result.Add( + new string[] + { + shtat.Id.ToString(), + shtat.Doljnost, + shtat.Size.ToString(), + free.ToString() + } + ); + return result.ToArray(); + } + catch + { + throw; + } + + } + + + } +} diff --git a/DataBase/TypeStajDB.cs b/DataBase/TypeStajDB.cs new file mode 100644 index 0000000..cb6604e --- /dev/null +++ b/DataBase/TypeStajDB.cs @@ -0,0 +1,194 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class TypeStaj + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + public string Name { get; set; } + public List CorrStajy { get; set; } + public List RabotnikTypeStajy { get; set; } + } + + public static partial class FuncDB + { + public static void TypeStajCheckValid(TypeStaj obj) + { + try + { + if (obj == null) + throw new Exception("Ошибка инициализации стажа."); + if (string.IsNullOrEmpty(obj.Name)) + throw new Exception("Пустой стаж."); + } + catch + { + throw; + } + } + + public static TypeStaj TypeStajGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.TypeStajy + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + public static TypeStaj TypeStajGetByName(string name) + { + try + { + using (var db = new MainDB()) + { + var chkTypeStaj = + from a in db.TypeStajy + where a.Name == name + select a; + try + { + return chkTypeStaj.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + + public static void TypeStajAdd(TypeStaj obj) + { + try + { + TypeStajCheckValid(obj); + if (TypeStajGetByName(obj.Name) != null) + throw new Exception("Тип стажа существует."); + using (var db = new MainDB()) + { + db.TypeStajy.Add(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void TypeStajChange(TypeStaj obj) + { + try + { + TypeStajCheckValid(obj); + var localObjById = TypeStajGetById(obj.Id); + var localObjByName = TypeStajGetByName(obj.Name); + if (localObjById == null) + throw new Exception("Тип стажа не существует."); + if (localObjByName != null && + localObjByName != localObjById) + throw new Exception("Тип стажа существует."); + using (var db = new MainDB()) + { + db.TypeStajy.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void TypeStajDelete(TypeStaj obj) + { + try + { + if (obj == null) + return; + var localObj = TypeStajGetById(obj.Id); + if (localObj == null) + throw new Exception("Тип стажа не существует."); + if (RabotnikTypeStajListByTypeStaj(localObj.Id).Length > 0) + throw new Exception("Тип стажа используется."); + using (var db = new MainDB()) + { + db.TypeStajy.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + + public static TypeStaj[] TypeStajList(int[] filter = null) + { + try + { + using (var db = new MainDB()) + { + var res = ( + from a in db.TypeStajy + where filter == null || filter.Contains(a.Id) + select a + ).ToList(); + return res.ToArray(); + } + } + catch + { + throw; + } + } + public static string[] TypeStajListString(int[] filter = null) + { + try + { + using (var db = new MainDB()) + { + var res = ( + from a in db.TypeStajy + where filter == null || filter.Contains(a.Id) + select a.Name + ).ToList(); + res.Remove("Общий"); + return res.ToArray(); + } + } + catch + { + throw; + } + } + } + + +} diff --git a/DataBase/UserDB.cs b/DataBase/UserDB.cs new file mode 100644 index 0000000..1ff06a0 --- /dev/null +++ b/DataBase/UserDB.cs @@ -0,0 +1,209 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace Diplom_O.DataBase +{ + public class User + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + public string Login { get; set; } + public string Pass { get; set; } + public bool Hide { get; set; } + public int Default { get; set; } + public List Accessy { get; set; } + } + + public static partial class FuncDB + { + public static void UserCheckValid(User obj) + { + try + { + if (obj == null) throw new Exception("Ошибка инициализации."); + if (string.IsNullOrEmpty(obj.Login)) throw new Exception("Логин не указан."); + if (string.IsNullOrEmpty(obj.Pass)) throw new Exception("Пароль не указан."); + if (obj.Default < 0 || obj.Default > 7) throw new Exception("Форма не существует."); + } + catch { throw; } + } + public static User UserGetById(int id) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Usery + where a.Id == id + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + } + public static User UserGetByLogin(string login) + { + try + { + using (var db = new MainDB()) + { + var res = + from a in db.Usery + where a.Login == login + select a; + try + { + return res.Single(); + } + catch + { + return null; + } + } + } + catch + { + throw; + } + + } + public static void UserAdd(User obj) + { + try + { + UserCheckValid(obj); + if (UserGetByLogin(obj.Login) != null) + throw new Exception("Пользователь существует."); + using (var db = new MainDB()) + { + db.Usery.Add(obj); + db.SaveChanges(); + } + var user = UserGetByLogin(obj.Login); + for (var i = 0; i < FormArray.formAccess.Length; i++) + { + var access = new Access() + { + UserId = user.Id, + FormId = user.Default, + FormatAccess = i + }; + AccessAdd(access); + } + } + catch + { + throw; + } + } + public static void UserChange(User obj) + { + try + { + UserCheckValid(obj); + var localObj = UserGetById(obj.Id); + if (localObj == null) + throw new Exception("Пользователь не указан."); + var localObjByLogin = UserGetByLogin(obj.Login); + if (localObjByLogin != null && + localObjByLogin.Id != localObj.Id) + throw new Exception("Логин существует."); + if (AccessGetByUserIdFormIdAccessId(localObj.Id, obj.Default, 0) == null) + throw new Exception("Сначала нужен доступ к форме."); + using (var db = new MainDB()) + { + db.Usery.Update(obj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + public static void UserDelete(User obj) + { + try + { + if (obj == null) + return; + var localObj = UserGetById(obj.Id); + if (localObj == null) + throw new Exception("Пользователь не существует."); + var acessy = AccessList(localObj.Id); + foreach (var a in acessy) + AccessDelete(a); + using (var db = new MainDB()) + { + db.Usery.Remove(localObj); + db.SaveChanges(); + } + } + catch + { + throw; + } + } + + public static User[] UserList(bool showHide = false) + { + try + { + using (var db = new MainDB()) + { + var user = ( + from a in db.Usery + where (showHide || !a.Hide) + select a + ).ToArray(); + return user; + } + } + catch + { + throw; + } + } + public static string[][] UserListTable(bool showHide = false) + { + try + { + using (var db = new MainDB()) + { + var list = UserList(showHide); + var subres = new List(); + foreach (var r in list) + { + subres.Add( + new string[]{ + r.Login + }); + } + return subres.ToArray(); + } + } + catch + { + throw; + } + + } + } +} \ No newline at end of file diff --git a/Diplom O.csproj b/Diplom O.csproj index d4873b8..3755f2e 100644 --- a/Diplom O.csproj +++ b/Diplom O.csproj @@ -14,6 +14,21 @@ true + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true AnyCPU @@ -255,6 +270,18 @@ + + + + + + + + + + + + Form @@ -262,13 +289,42 @@ ChelForm.cs - + + Form + + + LoginForm.cs + + + Form + + + SettingsForm.cs + Form OtpForm.cs + + Form + + + LearnForm.cs + + + Form + + + StajForm.cs + + + Form + + + ChildForm.cs + Form @@ -283,11 +339,35 @@ - + Form - - SelectChelForm.cs + + LoginForm.cs + + + Form + + + ChildForm.cs + + + Form + + + OptForm.cs + + + Form + + + LearnForm.cs + + + Form + + + WorkerForm.cs Form @@ -304,6 +384,27 @@ ChelForm.cs + + LoginForm.cs + + + SettingsForm.cs + + + OtpForm.cs + + + LearnForm.cs + + + StajForm.cs + + + ChildForm.cs + + + RabForm.cs + ShtatForm.cs @@ -316,8 +417,20 @@ True Resources.resx - - SelectChelForm.cs + + LoginForm.cs + + + ChildForm.cs + + + OptForm.cs + + + LearnForm.cs + + + WorkerForm.cs WorkChelForm.cs @@ -325,6 +438,16 @@ WorkShtatForm.cs + + + + + + + + + + SettingsSingleFileGenerator @@ -339,6 +462,18 @@ + + + False + Microsoft .NET Framework 4.7.2 %28x86 и x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + diff --git a/Diplom O.csproj.user b/Diplom O.csproj.user new file mode 100644 index 0000000..9d9e44c --- /dev/null +++ b/Diplom O.csproj.user @@ -0,0 +1,13 @@ + + + + + + + + + + ru-RU + false + + \ No newline at end of file diff --git a/Diplom O.sln b/Diplom O.sln index 2ed3228..c5358e4 100644 --- a/Diplom O.sln +++ b/Diplom O.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.31424.327 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diplom O", "Diplom O.csproj", "{4AC6A26F-1F0F-40E0-AE87-AD533985C10D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestFunctons", "..\TestFunctons\TestFunctons.csproj", "{E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {4AC6A26F-1F0F-40E0-AE87-AD533985C10D}.Debug|Any CPU.Build.0 = Debug|Any CPU {4AC6A26F-1F0F-40E0-AE87-AD533985C10D}.Release|Any CPU.ActiveCfg = Release|Any CPU {4AC6A26F-1F0F-40E0-AE87-AD533985C10D}.Release|Any CPU.Build.0 = Release|Any CPU + {E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/GlobalFormFunc.cs b/GlobalFormFunc.cs new file mode 100644 index 0000000..bfa70ac --- /dev/null +++ b/GlobalFormFunc.cs @@ -0,0 +1,283 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O +{ + public static class FormExtention + { + public static User user = null; + public static User GetUser(this Form form) + { + return user; + } + public static void SetUser(this Form form, User usr) + { + user = usr; + } + + public static int nextForm = -1; + public static int GetNextForm(this Form form) + { + return nextForm; + } + public static void SetNextForm(this Form form, int value) + { + nextForm = value; + } + + public static void correctUpperMenu(this Form form, MenuStrip upMenu, int value) + { + var items = upMenu.Items; + for (var i = 0; i < items.Count; i++) + { + if (user == null) + { + items[i].Enabled = false; + continue; + } + var access = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, i, 0); + if (access == null) + { + items[i].Enabled = false; + continue; + } + items[i].Enabled = (i != value); + } + } + public static void upperMenuClicked(this Form form, MenuStrip upMenu) + { + var menuItems = upMenu.Items; + for (var i = 0; i < menuItems.Count; i++) + if (menuItems[i].Selected) + nextForm = i; + } + + private static int countErr = 0; + private static int currTurnErr = 0; + private static bool flagfollow = false; + public static async void ShowError(this Form form, ToolStripStatusLabel errorLabel, string msg = null) + { + try + { + int ticket = countErr; + countErr = (countErr == int.MaxValue) ? 0 : countErr + 1; + while (flagfollow && (currTurnErr != ticket)) + await Task.Delay(1000); + Action func = () => + { + errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg; + errorLabel.Visible = true; + }; + if (form.InvokeRequired) + form.Invoke(func); + else + func.Invoke(); + await Task.Delay(5000); + func = () => + { + errorLabel.Visible = false; + }; + if (currTurnErr == ticket) + if (form.InvokeRequired) + form.Invoke(func); + else + func.Invoke(); + } + catch + { + return; + } + finally + { + currTurnErr = (currTurnErr == int.MaxValue) ? 0 : currTurnErr + 1; + } + } + + private static int countFind = 0; + public delegate void resetTableFind(); + public static async void FindOnChanged(this Form form, resetTableFind func) + { + var flag = ++countFind; + await Task.Delay(1000); + Action lFunc = () => + { + func?.Invoke(); + }; + if (flag == countFind) + if (form.InvokeRequired) + form.Invoke(lFunc); + else + lFunc.Invoke(); + } + + public static async void ResetTable(this Form form, DataGridView table, ColumnConf[] columns, string[][] data) + { + try + { + var currSelected = new List<(int col, int row)>(); + var tmpCells = table.SelectedCells; + for (var i = 0; i < tmpCells.Count; i++) + currSelected.Add(( + tmpCells[i].ColumnIndex, + tmpCells[i].RowIndex + )); + ClearTable(form, table, columns); + FillTable(form, table, data); + for (var i = currSelected.Count - 1; i >= 0; i--) + { + var col = currSelected[i].col; + var row = currSelected[i].row; + if (row >= 0 && row < table.Rows.Count && col >= 0 && col < table.Columns.Count) + table[col, row].Selected = true; + } + } + catch + { + throw; + await Task.Delay(1000); + } + } + public static async void ClearTable(this Form form, DataGridView table, ColumnConf[] columns) + { + Action func = () => + { + table.Rows.Clear(); + table.Columns.Clear(); + var c = table.Columns; + for (var i = 0; i < columns.Length; i++) + { + c.Add(columns[i].name, columns[i].name); + c[i].Width = columns[i].size; + if (columns[i].warp) + c[i].DefaultCellStyle.WrapMode = DataGridViewTriState.True; + } + }; + if (form.InvokeRequired) + form.Invoke(func); + else + func.Invoke(); + return; + await Task.Delay(1000); + } + public static async void FillTable(this Form form, DataGridView table, string[][] data) + { + if (data == null || data.Length == 0) + return; + try + { + if (table.Columns.Count != data[0].Length) + throw new Exception("Количество элементов данных (" + data[0].Length + + ") не соответствует колчиству столбцов (" + table.Columns.Count + ")"); + foreach (var lRow in data) + table.Rows.Add(lRow); + } + catch + { + throw; + await Task.Delay(1000); + } + } + + } + public static class FormArray + { + public static readonly string[] formName = { + "Актуальные вакансии", + "Люди", + "Сотрудники", + "Стаж", + "Образование", + "Отпуск/Больничный", + "Дети", + "Настройки" + }; + public static readonly string[] formAccess = { + "Чтение", + "Удаление", + "Изменение", + "Добавление" + }; + + public static int GetNameInt(string name) + { + var result = -1; + for (var i = 0; i < formName.Length; i++) + if (name.CompareTo(formName[i]) == 0) + result = i; + return result; + } + public static string GetNameString(int id) + { + var result = "Ошибка"; + if (id >= 0 && id < formName.Length) + result = formName[id]; + return result; + } + public static int GetAccessInt(string name) + { + var result = -1; + for (var i = 0; i < formAccess.Length; i++) + if (name.CompareTo(formAccess[i]) == 0) + result = i; + return result; + } + public static string GetAccessString(int id) + { + var result = "Ошибка"; + if (id >= 0 && id < formAccess.Length) + result = formAccess[id]; + return result; + } + } + public static class TableColumnssss + { + public static readonly ColumnConf Id = new ColumnConf(name: "№"); + public static readonly ColumnConf Free = new ColumnConf(name: "Своб."); + public static readonly ColumnConf KolVo = new ColumnConf(name: "Кол-во"); + public static readonly ColumnConf Male = new ColumnConf(name: "Пол"); + + public static readonly ColumnConf TabNum = new ColumnConf(name: "Таб. №", size: 80); + public static readonly ColumnConf BDay = new ColumnConf(name: "Дата рождения", size: 80); + public static readonly ColumnConf INN = new ColumnConf(name: "ИНН", size: 100); + public static readonly ColumnConf SNILS = new ColumnConf(name: "СНИЛС", size: 100); + public static readonly ColumnConf Dolj = new ColumnConf(name: "Должность", size: 140); + public static readonly ColumnConf TypeStaj = new ColumnConf(name: "Тип стажа", size: 140); + public static readonly ColumnConf FIO = new ColumnConf(name: "Фамилия И.О.", size: 140); + + public static readonly ColumnConf Adress = new ColumnConf(name: "Адрес", size: 140, warp: true); + public static readonly ColumnConf Pasport = new ColumnConf(name: "Паспорт", size: 140, warp: true); + + } + + public struct ColumnConf + { + public string name; + public int size; + public bool warp; + public ColumnConf(string name = "ErNO", int size = 60, bool warp = false) + { + this.name = name; + this.size = size; + this.warp = warp; + } + } + + public struct CopyOfColumnConf + { + public string name; + public int size; + public bool warp; + public CopyOfColumnConf(string name = "ErNO", int size = 60, bool warp = false) + { + this.name = name; + this.size = size; + this.warp = warp; + } + } + +} diff --git a/MainForms/ChelForm.Designer.cs b/MainForms/ChelForm.Designer.cs index c8ca0b8..83044b0 100644 --- a/MainForms/ChelForm.Designer.cs +++ b/MainForms/ChelForm.Designer.cs @@ -31,17 +31,15 @@ namespace Diplom_O { this.menuStrip = new System.Windows.Forms.MenuStrip(); this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); - this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); - this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.stajMI = new System.Windows.Forms.ToolStripMenuItem(); + this.learnMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.rodGridView = new System.Windows.Forms.DataGridView(); - this.comboBox1 = new System.Windows.Forms.ComboBox(); - this.chelRodLabel = new System.Windows.Forms.LinkLabel(); - this.delRodButton = new System.Windows.Forms.Button(); - this.addRodButton = new System.Windows.Forms.Button(); this.chelGridView = new System.Windows.Forms.DataGridView(); this.delButton = new System.Windows.Forms.Button(); this.changeButton = new System.Windows.Forms.Button(); @@ -50,10 +48,9 @@ namespace Diplom_O this.dropFindButton = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); this.findBox = new System.Windows.Forms.TextBox(); + this.selectButton = new System.Windows.Forms.Button(); this.menuStrip.SuspendLayout(); this.statusStrip1.SuspendLayout(); - this.groupBox1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.rodGridView)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.chelGridView)).BeginInit(); this.SuspendLayout(); // @@ -61,26 +58,49 @@ namespace Diplom_O // this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.shtatMI, + this.chelRodMI, this.rabitnikiMI, + this.stajMI, + this.learnMI, this.otpBolMI, - this.chelRodMI}); + this.детиToolStripMenuItem, + this.настройкиToolStripMenuItem}); this.menuStrip.Location = new System.Drawing.Point(0, 0); this.menuStrip.Name = "menuStrip"; - this.menuStrip.Size = new System.Drawing.Size(1186, 24); + this.menuStrip.Size = new System.Drawing.Size(1328, 24); this.menuStrip.TabIndex = 1; this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); // // shtatMI // this.shtatMI.Name = "shtatMI"; - this.shtatMI.Size = new System.Drawing.Size(46, 20); - this.shtatMI.Text = "Штат"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; // // rabitnikiMI // this.rabitnikiMI.Name = "rabitnikiMI"; - this.rabitnikiMI.Size = new System.Drawing.Size(78, 20); - this.rabitnikiMI.Text = "Работники"; + this.rabitnikiMI.Size = new System.Drawing.Size(85, 20); + this.rabitnikiMI.Text = "Сотрудники"; + // + // stajMI + // + this.stajMI.Name = "stajMI"; + this.stajMI.Size = new System.Drawing.Size(47, 20); + this.stajMI.Text = "Стаж"; + // + // learnMI + // + this.learnMI.Name = "learnMI"; + this.learnMI.Size = new System.Drawing.Size(92, 20); + this.learnMI.Text = "Образование"; // // otpBolMI // @@ -88,11 +108,17 @@ namespace Diplom_O this.otpBolMI.Size = new System.Drawing.Size(100, 20); this.otpBolMI.Text = "Отпуск/Больн."; // - // chelRodMI + // детиToolStripMenuItem // - this.chelRodMI.Name = "chelRodMI"; - this.chelRodMI.Size = new System.Drawing.Size(95, 20); - this.chelRodMI.Text = "Люди/Родств."; + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // настройкиToolStripMenuItem + // + this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem"; + this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20); + this.настройкиToolStripMenuItem.Text = "Настройки"; // // errorLabel // @@ -107,85 +133,12 @@ namespace Diplom_O // this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.errorLabel}); - this.statusStrip1.Location = new System.Drawing.Point(0, 386); + this.statusStrip1.Location = new System.Drawing.Point(0, 772); this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(1186, 22); + this.statusStrip1.Size = new System.Drawing.Size(1328, 22); this.statusStrip1.TabIndex = 16; this.statusStrip1.Text = "statusStrip1"; // - // groupBox1 - // - this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox1.Controls.Add(this.rodGridView); - this.groupBox1.Controls.Add(this.comboBox1); - this.groupBox1.Controls.Add(this.chelRodLabel); - this.groupBox1.Controls.Add(this.delRodButton); - this.groupBox1.Controls.Add(this.addRodButton); - this.groupBox1.Location = new System.Drawing.Point(844, 27); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(330, 356); - this.groupBox1.TabIndex = 26; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Родственники"; - // - // rodGridView - // - this.rodGridView.AllowUserToAddRows = false; - this.rodGridView.AllowUserToDeleteRows = false; - this.rodGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.rodGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.rodGridView.Location = new System.Drawing.Point(6, 85); - this.rodGridView.MultiSelect = false; - this.rodGridView.Name = "rodGridView"; - this.rodGridView.ReadOnly = true; - this.rodGridView.RowHeadersVisible = false; - this.rodGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.rodGridView.Size = new System.Drawing.Size(318, 265); - this.rodGridView.TabIndex = 12; - // - // comboBox1 - // - this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBox1.FormattingEnabled = true; - this.comboBox1.Items.AddRange(new object[] { - "Родственная связь"}); - this.comboBox1.Location = new System.Drawing.Point(168, 21); - this.comboBox1.Name = "comboBox1"; - this.comboBox1.Size = new System.Drawing.Size(156, 21); - this.comboBox1.TabIndex = 7; - // - // chelRodLabel - // - this.chelRodLabel.AutoSize = true; - this.chelRodLabel.Location = new System.Drawing.Point(6, 24); - this.chelRodLabel.Name = "chelRodLabel"; - this.chelRodLabel.Size = new System.Drawing.Size(81, 13); - this.chelRodLabel.TabIndex = 6; - this.chelRodLabel.TabStop = true; - this.chelRodLabel.Text = "Фамилия И.О."; - this.chelRodLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.chelRodLabel_Clicked); - // - // delRodButton - // - this.delRodButton.Location = new System.Drawing.Point(87, 56); - this.delRodButton.Name = "delRodButton"; - this.delRodButton.Size = new System.Drawing.Size(75, 23); - this.delRodButton.TabIndex = 10; - this.delRodButton.Text = "Удалить"; - this.delRodButton.UseVisualStyleBackColor = true; - // - // addRodButton - // - this.addRodButton.Location = new System.Drawing.Point(6, 56); - this.addRodButton.Name = "addRodButton"; - this.addRodButton.Size = new System.Drawing.Size(75, 23); - this.addRodButton.TabIndex = 8; - this.addRodButton.Text = "Добавить"; - this.addRodButton.UseVisualStyleBackColor = true; - // // chelGridView // this.chelGridView.AllowUserToAddRows = false; @@ -200,12 +153,13 @@ namespace Diplom_O this.chelGridView.ReadOnly = true; this.chelGridView.RowHeadersVisible = false; this.chelGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.chelGridView.Size = new System.Drawing.Size(826, 298); + this.chelGridView.Size = new System.Drawing.Size(1304, 684); this.chelGridView.TabIndex = 11; // // delButton // - this.delButton.Location = new System.Drawing.Point(174, 27); + this.delButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.delButton.Location = new System.Drawing.Point(1241, 27); this.delButton.Name = "delButton"; this.delButton.Size = new System.Drawing.Size(75, 23); this.delButton.TabIndex = 2; @@ -215,7 +169,8 @@ namespace Diplom_O // // changeButton // - this.changeButton.Location = new System.Drawing.Point(93, 27); + this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.changeButton.Location = new System.Drawing.Point(1160, 27); this.changeButton.Name = "changeButton"; this.changeButton.Size = new System.Drawing.Size(75, 23); this.changeButton.TabIndex = 1; @@ -225,7 +180,8 @@ namespace Diplom_O // // addButton // - this.addButton.Location = new System.Drawing.Point(12, 27); + this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addButton.Location = new System.Drawing.Point(1079, 27); this.addButton.Name = "addButton"; this.addButton.Size = new System.Drawing.Size(75, 23); this.addButton.TabIndex = 0; @@ -238,18 +194,18 @@ namespace Diplom_O this.showWorkerCheckBox.AutoSize = true; this.showWorkerCheckBox.Checked = true; this.showWorkerCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.showWorkerCheckBox.Location = new System.Drawing.Point(255, 31); + this.showWorkerCheckBox.Location = new System.Drawing.Point(15, 31); this.showWorkerCheckBox.Name = "showWorkerCheckBox"; - this.showWorkerCheckBox.Size = new System.Drawing.Size(204, 17); + this.showWorkerCheckBox.Size = new System.Drawing.Size(165, 17); this.showWorkerCheckBox.TabIndex = 3; - this.showWorkerCheckBox.Text = "Поrазать/скрыть трудоустроенных"; + this.showWorkerCheckBox.Text = "Показать трудоустроенных"; this.showWorkerCheckBox.UseVisualStyleBackColor = true; - this.showWorkerCheckBox.CheckedChanged += new System.EventHandler(this.checkBox_CheckedChanged); + this.showWorkerCheckBox.CheckedChanged += new System.EventHandler(this.showWorker_CheckedChanged); // // dropFindButton // this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.dropFindButton.Location = new System.Drawing.Point(763, 360); + this.dropFindButton.Location = new System.Drawing.Point(1241, 746); this.dropFindButton.Name = "dropFindButton"; this.dropFindButton.Size = new System.Drawing.Size(75, 23); this.dropFindButton.TabIndex = 5; @@ -261,7 +217,7 @@ namespace Diplom_O // this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 365); + this.label1.Location = new System.Drawing.Point(12, 751); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(39, 13); this.label1.TabIndex = 28; @@ -271,17 +227,29 @@ namespace Diplom_O // this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.findBox.Location = new System.Drawing.Point(57, 362); + this.findBox.Location = new System.Drawing.Point(57, 748); this.findBox.Name = "findBox"; - this.findBox.Size = new System.Drawing.Size(700, 20); + this.findBox.Size = new System.Drawing.Size(1178, 20); this.findBox.TabIndex = 4; this.findBox.TextChanged += new System.EventHandler(this.findBox_TextChanged); // + // selectButton + // + this.selectButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.selectButton.Location = new System.Drawing.Point(998, 27); + this.selectButton.Name = "selectButton"; + this.selectButton.Size = new System.Drawing.Size(75, 23); + this.selectButton.TabIndex = 29; + this.selectButton.Text = "Выбрать"; + this.selectButton.UseVisualStyleBackColor = true; + this.selectButton.Click += new System.EventHandler(this.selectButton_Click); + // // ChelForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1186, 408); + this.ClientSize = new System.Drawing.Size(1328, 794); + this.Controls.Add(this.selectButton); this.Controls.Add(this.chelGridView); this.Controls.Add(this.delButton); this.Controls.Add(this.changeButton); @@ -290,18 +258,15 @@ namespace Diplom_O this.Controls.Add(this.dropFindButton); this.Controls.Add(this.label1); this.Controls.Add(this.findBox); - this.Controls.Add(this.groupBox1); this.Controls.Add(this.statusStrip1); this.Controls.Add(this.menuStrip); this.Name = "ChelForm"; - this.Text = "Люди / Родственники"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Люди"; this.menuStrip.ResumeLayout(false); this.menuStrip.PerformLayout(); this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.rodGridView)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.chelGridView)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -317,12 +282,6 @@ namespace Diplom_O private System.Windows.Forms.ToolStripMenuItem chelRodMI; private System.Windows.Forms.ToolStripStatusLabel errorLabel; private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.DataGridView rodGridView; - private System.Windows.Forms.ComboBox comboBox1; - private System.Windows.Forms.LinkLabel chelRodLabel; - private System.Windows.Forms.Button delRodButton; - private System.Windows.Forms.Button addRodButton; private System.Windows.Forms.DataGridView chelGridView; private System.Windows.Forms.Button delButton; private System.Windows.Forms.Button changeButton; @@ -331,5 +290,10 @@ namespace Diplom_O private System.Windows.Forms.Button dropFindButton; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox findBox; - } + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.Button selectButton; + private System.Windows.Forms.ToolStripMenuItem stajMI; + private System.Windows.Forms.ToolStripMenuItem learnMI; + private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem; + } } \ No newline at end of file diff --git a/MainForms/ChelForm.cs b/MainForms/ChelForm.cs index d406aaf..d0967c2 100644 --- a/MainForms/ChelForm.cs +++ b/MainForms/ChelForm.cs @@ -13,113 +13,86 @@ namespace Diplom_O { public partial class ChelForm : Form { - private Task errDrop; - private void ShowError(string msg = null) - { - errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg; - errorLabel.Visible = true; - errDrop = new Task(() => - { - var fd = errDrop.Id; - Task.Delay(5000).Wait(); - if (errDrop.Id == fd) - if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; })); - else errorLabel.Visible = false; - }); - errDrop.Start(); - } - - private Task filterDrop; + private readonly ColumnConf[] tableColumns = { + new ColumnConf(name: "№"), + new ColumnConf("Фамилия", 140), + new ColumnConf("Имя", 140), + new ColumnConf("Отчество", 140), + new ColumnConf(name: "Пол"), + new ColumnConf(name: "Дата рождения", size: 80), + new ColumnConf(name: "Адрес", size: 140, warp: true), + new ColumnConf(name: "Телефон", size: 100), + new ColumnConf(name: "ИНН", size: 100), + new ColumnConf(name: "СНИЛС", size: 100), + new ColumnConf(name: "Паспорт", size: 140, warp: true), + new ColumnConf(name: "Пенсионер", size: 100) + }; private void findBox_TextChanged(object sender, EventArgs e) { - filterDrop = new Task(() => - { - var fd = filterDrop.Id; - Task.Delay(1000).Wait(); - if (filterDrop.Id == fd) - if (InvokeRequired) Invoke((Action)(() => { resetChelTable(); })); - else resetChelTable(); - }); - filterDrop.Start(); + this.FindOnChanged(resetChelTable); } private void dropFindButton_Click(object sender, EventArgs e) { findBox.Text = ""; - filterDrop = new Task(() => { return; }); + this.FindOnChanged(null); resetChelTable(); } private void resetChelTable() { try { - { - chelGridView.Rows.Clear(); - chelGridView.Columns.Clear(); - var c = chelGridView.Columns; - c.Add("Id", "№"); - c.Add("FIO", "Фамилия И.О."); - c.Add("Male", "Пол"); - c.Add("Birthday", "Дата рождения"); - c.Add("Adress", "Адрес"); - c.Add("INN", "ИНН"); - c.Add("SNILS", "СНИЛС"); - c.Add("Pasport", "Паспорт"); - c[0].Width = 40; - c[1].Width = 120; - c[2].Width = 40; - c[3].Width = 80; - c[4].Width = 140; - c[5].Width = 90; - c[6].Width = 100; - c[7].Width = 140; - c[4].DefaultCellStyle.WrapMode = DataGridViewTriState.True; - c[7].DefaultCellStyle.WrapMode = DataGridViewTriState.True; - } - { - var arr = FuncDB.ListChel(findBox.Text); - var r = chelGridView.Rows; - foreach (var chel in arr) - if (showWorkerCheckBox.Checked || !FuncDB.HaveChelRabotnik(chel.Id)) - r.Add(new object[] { - chel.Id, - chel.FName + - (string.IsNullOrEmpty(chel.SName) ? "" : (" " + chel.SName[0] + ".")) + - (string.IsNullOrEmpty(chel.TName) ? "" : (" " + chel.TName[0] + ".")), - chel.Male ? "Муж" : "Жен", - chel.Birthday.ToString("yyyy.MM.dd"), - chel.Address, - chel.INN, - chel.SNILS, - chel.Pasport - }); - } - if (chelGridView.Rows.Count > 0) - chelGridView.Rows[0].Selected = true; + var tmp = FuncDB.ChelListTableMain(findBox.Text, showWorkerCheckBox.Checked); + var res = new List(); + this.ResetTable( + chelGridView, + tableColumns, + tmp + ); } - catch (Exception e) { ShowError(e.Message); } + catch (Exception e) { this.ShowError(errorLabel, e.Message); } } private Chel selectedChel() { try { - if (chelGridView.SelectedRows.Count != 1) throw new Exception("Человек не выбран."); - var chel = FuncDB.GetChel((int)chelGridView.SelectedRows[0].Cells[0].Value); - return chel; + if (chelGridView.SelectedRows.Count != 1) + throw new Exception("Человек не выбран."); + if (int.TryParse((string)chelGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.ChelGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; } - catch (Exception e) { ShowError(e.Message); return null; } } - - public ChelForm() + public bool isCanceled = true; + public Chel formResult = null; + public ChelForm(bool select = false) { try { InitializeComponent(); - chelRodMI.Enabled = false; + selectButton.Visible = select; + menuStrip.Enabled = !select; + this.correctUpperMenu(menuStrip, 1); resetChelTable(); + + addButton.Enabled = + changeButton.Enabled = + delButton.Enabled = false; + var user = this.GetUser(); + if (user == null) + return; + delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 1, 1) != null; + changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 1, 2) != null; + addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 1, 3) != null; + } catch { this.Close(); } } - private void addButton_Click(object sender, EventArgs e) { var res = new SupportForms.WorkChelForm(); @@ -130,7 +103,8 @@ namespace Diplom_O private void changeButton_Click(object sender, EventArgs e) { var chel = selectedChel(); - if (chel == null) { ShowError("Человек не выбран."); return; } + if (chel == null) + return; var res = new SupportForms.WorkChelForm(chel); res.ShowDialog(); if (!res.isCanceled) @@ -139,49 +113,35 @@ namespace Diplom_O private void delButton_Click(object sender, EventArgs e) { var chel = selectedChel(); - if (chel == null) { ShowError("Человек не выбран."); return; } - if (FuncDB.HaveChelToChel(chel.Id)) { ShowError("Человек есть в таблице родственников."); return; } + if (chel == null) + return; try { - FuncDB.DelChel(chel); + FuncDB.ChelDelete(chel); resetChelTable(); } - catch (Exception ex) { ShowError(ex.Message); } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } } - public void MI_Click(object sender, EventArgs e) + private void selectButton_Click(object sender, EventArgs e) { - object form = null; - var idxMenu = -1; - try { idxMenu = menuStrip.Items.IndexOf((ToolStripMenuItem)sender); } - catch { }; - switch (idxMenu) - { - case 0: form = new ShtatForm(); break; - case 1: form = new RabForm(); break; - case 2: form = new OtpForm(); break; - case 3: form = new ChelForm(); break; - } - if (form != null) - { - this.Hide(); - ((Form)form).Closed += (s, args) => this.Close(); - ((Form)form).Show(); - return; - } - ShowError("Ошибка перехода на новую форму."); + formResult = selectedChel(); + isCanceled = false; + this.Close(); } - private void checkBox_CheckedChanged(object sender, EventArgs e) + private void showWorker_CheckedChanged(object sender, EventArgs e) { resetChelTable(); } + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } - private Chel chelRod = null; - private void chelRodLabel_Clicked(object sender, LinkLabelLinkClickedEventArgs e) - { - var chelForm = new SupportForms.SelectChelForm(); - chelForm.ShowDialog(); - if(chelForm.isCanceled) - } } } diff --git a/MainForms/ChildForm.Designer.cs b/MainForms/ChildForm.Designer.cs new file mode 100644 index 0000000..52c8b26 --- /dev/null +++ b/MainForms/ChildForm.Designer.cs @@ -0,0 +1,393 @@ + +namespace Diplom_O +{ + partial class ChildForm + { + ///

+ /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.stajMI = new System.Windows.Forms.ToolStripMenuItem(); + this.learnMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.childGridView = new System.Windows.Forms.DataGridView(); + this.addButton = new System.Windows.Forms.Button(); + this.dropFindButton = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.findBox = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.changeButton = new System.Windows.Forms.Button(); + this.delButton = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.lableChildCountFemale = new System.Windows.Forms.Label(); + this.lableChildCountMale = new System.Windows.Forms.Label(); + this.lableChildCount = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.childGridView)).BeginInit(); + this.statusStrip1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shtatMI, + this.rabitnikiMI, + this.stajMI, + this.learnMI, + this.otpBolMI, + this.chelRodMI, + this.детиToolStripMenuItem, + this.настройкиToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(1059, 24); + this.menuStrip.TabIndex = 30; + this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); + // + // shtatMI + // + this.shtatMI.Name = "shtatMI"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // rabitnikiMI + // + this.rabitnikiMI.Name = "rabitnikiMI"; + this.rabitnikiMI.Size = new System.Drawing.Size(85, 20); + this.rabitnikiMI.Text = "Сотрудники"; + // + // stajMI + // + this.stajMI.Name = "stajMI"; + this.stajMI.Size = new System.Drawing.Size(47, 20); + this.stajMI.Text = "Стаж"; + // + // learnMI + // + this.learnMI.Name = "learnMI"; + this.learnMI.Size = new System.Drawing.Size(92, 20); + this.learnMI.Text = "Образование"; + // + // otpBolMI + // + this.otpBolMI.Name = "otpBolMI"; + this.otpBolMI.Size = new System.Drawing.Size(100, 20); + this.otpBolMI.Text = "Отпуск/Больн."; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; + // + // детиToolStripMenuItem + // + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(137, 17); + this.errorLabel.Text = "Отображение ошибки"; + this.errorLabel.Visible = false; + // + // childGridView + // + this.childGridView.AllowUserToAddRows = false; + this.childGridView.AllowUserToDeleteRows = false; + this.childGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.childGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.childGridView.Location = new System.Drawing.Point(12, 56); + this.childGridView.MultiSelect = false; + this.childGridView.Name = "childGridView"; + this.childGridView.ReadOnly = true; + this.childGridView.RowHeadersVisible = false; + this.childGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.childGridView.Size = new System.Drawing.Size(688, 376); + this.childGridView.TabIndex = 36; + // + // addButton + // + this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addButton.Location = new System.Drawing.Point(463, 27); + this.addButton.Name = "addButton"; + this.addButton.Size = new System.Drawing.Size(75, 23); + this.addButton.TabIndex = 29; + this.addButton.Text = "Добавить"; + this.addButton.UseVisualStyleBackColor = true; + this.addButton.Click += new System.EventHandler(this.addButton_Click); + // + // dropFindButton + // + this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.dropFindButton.Location = new System.Drawing.Point(625, 438); + this.dropFindButton.Name = "dropFindButton"; + this.dropFindButton.Size = new System.Drawing.Size(75, 23); + this.dropFindButton.TabIndex = 35; + this.dropFindButton.Text = "Сбросить"; + this.dropFindButton.UseVisualStyleBackColor = true; + this.dropFindButton.Click += new System.EventHandler(this.dropFindButton_Click); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 443); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(39, 13); + this.label1.TabIndex = 38; + this.label1.Text = "Поиск"; + // + // findBox + // + this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.findBox.Location = new System.Drawing.Point(57, 440); + this.findBox.Name = "findBox"; + this.findBox.Size = new System.Drawing.Size(562, 20); + this.findBox.TabIndex = 34; + this.findBox.TextChanged += new System.EventHandler(this.findBox_TextChanged); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 464); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(1059, 22); + this.statusStrip1.TabIndex = 37; + this.statusStrip1.Text = "statusStrip1"; + // + // changeButton + // + this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.changeButton.Location = new System.Drawing.Point(544, 27); + this.changeButton.Name = "changeButton"; + this.changeButton.Size = new System.Drawing.Size(75, 23); + this.changeButton.TabIndex = 39; + this.changeButton.Text = "Изменить"; + this.changeButton.UseVisualStyleBackColor = true; + this.changeButton.Click += new System.EventHandler(this.changeButton_Click); + // + // delButton + // + this.delButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.delButton.Location = new System.Drawing.Point(625, 27); + this.delButton.Name = "delButton"; + this.delButton.Size = new System.Drawing.Size(75, 23); + this.delButton.TabIndex = 40; + this.delButton.Text = "Удалить"; + this.delButton.UseVisualStyleBackColor = true; + this.delButton.Click += new System.EventHandler(this.delButton_Click); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.lableChildCountFemale); + this.groupBox1.Controls.Add(this.lableChildCountMale); + this.groupBox1.Controls.Add(this.lableChildCount); + this.groupBox1.Controls.Add(this.button1); + this.groupBox1.Controls.Add(this.dateTimePicker1); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Location = new System.Drawing.Point(706, 27); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(341, 433); + this.groupBox1.TabIndex = 41; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Расчет"; + // + // lableChildCountFemale + // + this.lableChildCountFemale.AutoSize = true; + this.lableChildCountFemale.Location = new System.Drawing.Point(122, 100); + this.lableChildCountFemale.Name = "lableChildCountFemale"; + this.lableChildCountFemale.Size = new System.Drawing.Size(13, 13); + this.lableChildCountFemale.TabIndex = 20; + this.lableChildCountFemale.Text = "0"; + // + // lableChildCountMale + // + this.lableChildCountMale.AutoSize = true; + this.lableChildCountMale.Location = new System.Drawing.Point(122, 74); + this.lableChildCountMale.Name = "lableChildCountMale"; + this.lableChildCountMale.Size = new System.Drawing.Size(13, 13); + this.lableChildCountMale.TabIndex = 19; + this.lableChildCountMale.Text = "0"; + // + // lableChildCount + // + this.lableChildCount.AutoSize = true; + this.lableChildCount.Location = new System.Drawing.Point(122, 48); + this.lableChildCount.Name = "lableChildCount"; + this.lableChildCount.Size = new System.Drawing.Size(13, 13); + this.lableChildCount.TabIndex = 18; + this.lableChildCount.Text = "0"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(270, 17); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(65, 23); + this.button1.TabIndex = 17; + this.button1.Text = "Расчет"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // dateTimePicker1 + // + this.dateTimePicker1.Location = new System.Drawing.Point(125, 19); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.Size = new System.Drawing.Size(139, 20); + this.dateTimePicker1.TabIndex = 16; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(65, 100); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(54, 13); + this.label5.TabIndex = 15; + this.label5.Text = "Девочек:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(53, 74); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(66, 13); + this.label4.TabIndex = 14; + this.label4.Text = "Мальчиков:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(6, 48); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(113, 13); + this.label3.TabIndex = 13; + this.label3.Text = "Общее кол-во детей:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(34, 22); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(85, 13); + this.label2.TabIndex = 12; + this.label2.Text = "Расчет на дату:"; + // + // настройкиToolStripMenuItem + // + this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem"; + this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20); + this.настройкиToolStripMenuItem.Text = "Настройки"; + // + // ChildForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1059, 486); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.delButton); + this.Controls.Add(this.changeButton); + this.Controls.Add(this.menuStrip); + this.Controls.Add(this.childGridView); + this.Controls.Add(this.addButton); + this.Controls.Add(this.dropFindButton); + this.Controls.Add(this.label1); + this.Controls.Add(this.findBox); + this.Controls.Add(this.statusStrip1); + this.Name = "ChildForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Дети"; + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.childGridView)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem shtatMI; + private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; + private System.Windows.Forms.ToolStripMenuItem otpBolMI; + private System.Windows.Forms.ToolStripMenuItem chelRodMI; + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.DataGridView childGridView; + private System.Windows.Forms.Button addButton; + private System.Windows.Forms.Button dropFindButton; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox findBox; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.Button changeButton; + private System.Windows.Forms.Button delButton; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.DateTimePicker dateTimePicker1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label lableChildCountFemale; + private System.Windows.Forms.Label lableChildCountMale; + private System.Windows.Forms.Label lableChildCount; + private System.Windows.Forms.ToolStripMenuItem stajMI; + private System.Windows.Forms.ToolStripMenuItem learnMI; + private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem; + } +} \ No newline at end of file diff --git a/MainForms/ChildForm.cs b/MainForms/ChildForm.cs new file mode 100644 index 0000000..0cc40ae --- /dev/null +++ b/MainForms/ChildForm.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O +{ + public partial class ChildForm : Form + { + private readonly ColumnConf[] tableMainColumns = { + new ColumnConf(name: "№"), + new ColumnConf(name: "Фамилия И.О.", size: 140), + new ColumnConf(name: "Пол", size: 80), + new ColumnConf(name: "Дата рождения", size: 80), + new ColumnConf(name: "Род 1", size: 140), + new ColumnConf(name: "Род 2", size: 140) + }; + + private void resetChildTable() + { + try + { + var res = FuncDB.ChildTableMain(findBox.Text); + this.ResetTable( + childGridView, + tableMainColumns, + res + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private Child selectedChildTable() + { + try + { + if (childGridView.SelectedRows.Count != 1) + throw new Exception("Ребонок не выбран."); + if (int.TryParse((string)childGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.ChildGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; + } + } + + private void resetChildCount() + { + try + { + lableChildCount.Text = FuncDB.ChildCount(dateTimePicker1.Value).ToString(); + lableChildCountMale.Text = FuncDB.ChildCount(dateTimePicker1.Value, true).ToString(); + lableChildCountFemale.Text = FuncDB.ChildCount(dateTimePicker1.Value, false).ToString(); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + + public ChildForm() + { + InitializeComponent(); + this.correctUpperMenu(menuStrip, 6); + resetChildTable(); + dateTimePicker1.Value = DateTime.Now; + resetChildCount(); + + addButton.Enabled = + changeButton.Enabled = + delButton.Enabled = false; + + var user = this.GetUser(); + if (user == null) + return; + delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 6, 1) != null; + changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 6, 2) != null; + addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 6, 3) != null; + } + + private void addButton_Click(object sender, EventArgs e) + { + try + { + var form = new SupportForms.ChildForm(); + form.ShowDialog(); + if (!form.isCanceled) + resetChildTable(); + resetChildCount(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + + private void changeButton_Click(object sender, EventArgs e) + { + try + { + var form = new SupportForms.ChildForm(selectedChildTable()); + form.ShowDialog(); + if (!form.isCanceled) + resetChildTable(); + resetChildCount(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + + private void delButton_Click(object sender, EventArgs e) + { + try + { + var res = selectedChildTable(); + FuncDB.ChildDelete(res); + resetChildTable(); + resetChildCount(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } + + private void button1_Click(object sender, EventArgs e) + { + resetChildCount(); + } + private void findBox_TextChanged(object sender, EventArgs e) + { + this.FindOnChanged(resetChildTable); + } + private void dropFindButton_Click(object sender, EventArgs e) + { + findBox.Text = ""; + this.FindOnChanged(null); + resetChildTable(); + } + } +} diff --git a/MainForms/ChildForm.resx b/MainForms/ChildForm.resx new file mode 100644 index 0000000..9a1181c --- /dev/null +++ b/MainForms/ChildForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 364, 17 + + + 472, 17 + + \ No newline at end of file diff --git a/MainForms/ChildrenForm.Designer.cs b/MainForms/ChildrenForm.Designer.cs new file mode 100644 index 0000000..adc395d --- /dev/null +++ b/MainForms/ChildrenForm.Designer.cs @@ -0,0 +1,210 @@ + +namespace Diplom_O +{ + partial class ChildrenForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.workerGridView = new System.Windows.Forms.DataGridView(); + this.addWorkerButton = new System.Windows.Forms.Button(); + this.dropFindButton = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.findBox = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.menuStrip.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.workerGridView)).BeginInit(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shtatMI, + this.rabitnikiMI, + this.otpBolMI, + this.chelRodMI, + this.детиToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(983, 24); + this.menuStrip.TabIndex = 30; + this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); + // + // shtatMI + // + this.shtatMI.Name = "shtatMI"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // rabitnikiMI + // + this.rabitnikiMI.Name = "rabitnikiMI"; + this.rabitnikiMI.Size = new System.Drawing.Size(78, 20); + this.rabitnikiMI.Text = "Сотрудник"; + // + // otpBolMI + // + this.otpBolMI.Name = "otpBolMI"; + this.otpBolMI.Size = new System.Drawing.Size(100, 20); + this.otpBolMI.Text = "Отпуск/Больн."; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; + // + // детиToolStripMenuItem + // + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(137, 17); + this.errorLabel.Text = "Отображение ошибки"; + this.errorLabel.Visible = false; + // + // workerGridView + // + this.workerGridView.AllowUserToAddRows = false; + this.workerGridView.AllowUserToDeleteRows = false; + this.workerGridView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.workerGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.workerGridView.Location = new System.Drawing.Point(12, 56); + this.workerGridView.MultiSelect = false; + this.workerGridView.Name = "workerGridView"; + this.workerGridView.ReadOnly = true; + this.workerGridView.RowHeadersVisible = false; + this.workerGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.workerGridView.Size = new System.Drawing.Size(459, 694); + this.workerGridView.TabIndex = 36; + this.workerGridView.SelectionChanged += new System.EventHandler(this.workerGridView_SelectionChanged); + // + // addWorkerButton + // + this.addWorkerButton.Location = new System.Drawing.Point(396, 27); + this.addWorkerButton.Name = "addWorkerButton"; + this.addWorkerButton.Size = new System.Drawing.Size(75, 23); + this.addWorkerButton.TabIndex = 29; + this.addWorkerButton.Text = "Добавить"; + this.addWorkerButton.UseVisualStyleBackColor = true; + this.addWorkerButton.Click += new System.EventHandler(this.addWorkerButton_Click); + // + // dropFindButton + // + this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.dropFindButton.Location = new System.Drawing.Point(396, 756); + this.dropFindButton.Name = "dropFindButton"; + this.dropFindButton.Size = new System.Drawing.Size(75, 23); + this.dropFindButton.TabIndex = 35; + this.dropFindButton.Text = "Сбросить"; + this.dropFindButton.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 761); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(39, 13); + this.label1.TabIndex = 38; + this.label1.Text = "Поиск"; + // + // findBox + // + this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.findBox.Location = new System.Drawing.Point(57, 758); + this.findBox.Name = "findBox"; + this.findBox.Size = new System.Drawing.Size(333, 20); + this.findBox.TabIndex = 34; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 782); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(983, 22); + this.statusStrip1.TabIndex = 37; + this.statusStrip1.Text = "statusStrip1"; + // + // ChildrenForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(983, 804); + this.Controls.Add(this.menuStrip); + this.Controls.Add(this.workerGridView); + this.Controls.Add(this.addWorkerButton); + this.Controls.Add(this.dropFindButton); + this.Controls.Add(this.label1); + this.Controls.Add(this.findBox); + this.Controls.Add(this.statusStrip1); + this.Name = "ChildrenForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "ChildrenForm"; + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.workerGridView)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem shtatMI; + private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; + private System.Windows.Forms.ToolStripMenuItem otpBolMI; + private System.Windows.Forms.ToolStripMenuItem chelRodMI; + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.DataGridView workerGridView; + private System.Windows.Forms.Button addWorkerButton; + private System.Windows.Forms.Button dropFindButton; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox findBox; + private System.Windows.Forms.StatusStrip statusStrip1; + } +} \ No newline at end of file diff --git a/MainForms/ChildrenForm.cs b/MainForms/ChildrenForm.cs new file mode 100644 index 0000000..a6b605b --- /dev/null +++ b/MainForms/ChildrenForm.cs @@ -0,0 +1,237 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O +{ + public partial class ChildrenForm : Form + { + private readonly ColumnConf[] tableMainColumns = { + new ColumnConf(name: "№"), + new ColumnConf(name: "Таб. №", size: 80), + new ColumnConf(name: "Фамилия И.О.", size: 140), + new ColumnConf(name: "Должность", size: 140) + }; + private readonly ColumnConf[] tableHistoryColumns = + { + new ColumnConf(name: "№"), + new ColumnConf(name: "Таб. №", size: 80), + new ColumnConf(name: "Должность", size: 140), + new ColumnConf(name: "Дата начала", size: 80), + new ColumnConf(name: "Дата конца", size: 80) + }; + private readonly ColumnConf[] tableStajColumns = + { + new ColumnConf(name: "№"), + new ColumnConf(name: "Тип стажа", size: 120), + }; + + private void resetRabotnikTable() + { + try + { + var res = FuncDB.RabotnikTableMain(findBox.Text); + this.ResetTable( + workerGridView, + tableMainColumns, + res + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private Rabotnik selectedRabotnikTable() + { + try + { + if (workerGridView.SelectedRows.Count != 1) + throw new Exception("Человек не выбран."); + if (int.TryParse((string)workerGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.RabotnikGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; + } + } + private void workerGridView_SelectionChanged(object sender, EventArgs e) + { + resetHistoryWorkTable(); + } + + private void resetHistoryWorkTable() + { + try + { + var rabotnik = selectedRabotnikTable(); + var res = (rabotnik == null) ? Array.Empty() : FuncDB.RabotnikByChelIdTable(rabotnik.ChelId); + this.ResetTable( + historyWorkGridView, + tableHistoryColumns, + res + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private Rabotnik selectedHistoryWorkTable() + { + try + { + if (historyWorkGridView.SelectedRows.Count != 1) + throw new Exception("Человек не выбран."); + if (int.TryParse((string)historyWorkGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.RabotnikGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; + } + } + private void historyWorkGridView_SelectionChanged(object sender, EventArgs e) + { + resetRabotnikStajTable(); + } + + private void resetRabotnikStajTable() + { + try + { + var rabotnik = selectedHistoryWorkTable(); + var res = (rabotnik == null) ? Array.Empty() : + FuncDB.RabotnikTypeStajListString(rabotnik.Id); + this.ResetTable( + stajGridView, + tableStajColumns, + res + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private RabotnikTypeStaj selectedRabotnikStajTable() + { + try + { + if (stajGridView.SelectedRows.Count != 1) + throw new Exception("Стаж сотрудника не выбран."); + if (int.TryParse((string)stajGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.RabotnikTypeStajGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; + } + } + + private void resetTypeStajComboBox() + { + try + { + var list = FuncDB.TypeStajListString(); + comboBox1.Items.Clear(); + comboBox1.Items.AddRange(list); + comboBox1.SelectedIndex = -1; + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + + public RabForm() + { + InitializeComponent(); + this.correctUpperMenu(menuStrip, 1); + resetRabotnikTable(); + resetTypeStajComboBox(); + } + + private void addWorkerButton_Click(object sender, EventArgs e) + { + var form = new SupportForms.WorkerForm(); + form.ShowDialog(); + if (!form.isCanceled) + resetRabotnikTable(); + } + private void addWorkPlaceButton_Click(object sender, EventArgs e) + { + var form = new SupportForms.WorkerForm(selectedHistoryWorkTable(), true); + form.ShowDialog(); + if (!form.isCanceled) + resetRabotnikTable(); + } + private void addTypeStajButton_Click(object sender, EventArgs e) + { + try + { + var typestaj = FuncDB.TypeStajGetByName(comboBox1.Text); + if (typestaj == null) + { + FuncDB.TypeStajAdd(new TypeStaj() { Name = comboBox1.Text }); + typestaj = FuncDB.TypeStajGetByName(comboBox1.Text); + } + var rabotnik = selectedHistoryWorkTable(); + if (rabotnik == null) + throw new Exception("Не выбран сотрудник"); + FuncDB.RabotnikTypeStajAdd(new RabotnikTypeStaj() { RabitnikId = rabotnik.Id, TypeStajId = typestaj.Id }); + resetTypeStajComboBox(); + resetRabotnikStajTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void changeWorkPlaceButton_Click(object sender, EventArgs e) + { + var form = new SupportForms.WorkerForm(selectedHistoryWorkTable()); + form.ShowDialog(); + if (!form.isCanceled) + resetRabotnikTable(); + } + private void delWorkPlaceButton_Click(object sender, EventArgs e) + { + var res = selectedHistoryWorkTable(); + FuncDB.RabotnikDelete(res); + resetHistoryWorkTable(); + } + private void delTypeStajButton_Click(object sender, EventArgs e) + { + var res = selectedRabotnikStajTable(); + FuncDB.RabotnikTypeStajDelete(res); + resetRabotnikStajTable(); + } + + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } + + + } +} diff --git a/MainForms/ChildrenForm.resx b/MainForms/ChildrenForm.resx new file mode 100644 index 0000000..9a1181c --- /dev/null +++ b/MainForms/ChildrenForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 364, 17 + + + 472, 17 + + \ No newline at end of file diff --git a/MainForms/LearnForm.Designer.cs b/MainForms/LearnForm.Designer.cs new file mode 100644 index 0000000..75cdfb6 --- /dev/null +++ b/MainForms/LearnForm.Designer.cs @@ -0,0 +1,269 @@ + +namespace Diplom_O +{ + partial class LearnForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); + this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.stajMI = new System.Windows.Forms.ToolStripMenuItem(); + this.learnMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.group = new System.Windows.Forms.GroupBox(); + this.learnGridView = new System.Windows.Forms.DataGridView(); + this.linkRabLabel = new System.Windows.Forms.LinkLabel(); + this.label2 = new System.Windows.Forms.Label(); + this.addButton = new System.Windows.Forms.Button(); + this.changeButton = new System.Windows.Forms.Button(); + this.delButton = new System.Windows.Forms.Button(); + this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.group.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.learnGridView)).BeginInit(); + this.SuspendLayout(); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shtatMI, + this.chelRodMI, + this.rabitnikiMI, + this.stajMI, + this.learnMI, + this.otpBolMI, + this.детиToolStripMenuItem, + this.настройкиToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(918, 24); + this.menuStrip.TabIndex = 30; + this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); + // + // shtatMI + // + this.shtatMI.Name = "shtatMI"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; + // + // rabitnikiMI + // + this.rabitnikiMI.Name = "rabitnikiMI"; + this.rabitnikiMI.Size = new System.Drawing.Size(78, 20); + this.rabitnikiMI.Text = "Сотрудник"; + // + // stajMI + // + this.stajMI.Name = "stajMI"; + this.stajMI.Size = new System.Drawing.Size(47, 20); + this.stajMI.Text = "Стаж"; + // + // learnMI + // + this.learnMI.Name = "learnMI"; + this.learnMI.Size = new System.Drawing.Size(92, 20); + this.learnMI.Text = "Образование"; + // + // otpBolMI + // + this.otpBolMI.Name = "otpBolMI"; + this.otpBolMI.Size = new System.Drawing.Size(100, 20); + this.otpBolMI.Text = "Отпуск/Больн."; + // + // детиToolStripMenuItem + // + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(137, 17); + this.errorLabel.Text = "Отображение ошибки"; + this.errorLabel.Visible = false; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 423); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(918, 22); + this.statusStrip1.TabIndex = 37; + this.statusStrip1.Text = "statusStrip1"; + // + // group + // + this.group.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.group.Controls.Add(this.learnGridView); + this.group.Location = new System.Drawing.Point(15, 56); + this.group.Name = "group"; + this.group.Size = new System.Drawing.Size(891, 364); + this.group.TabIndex = 39; + this.group.TabStop = false; + this.group.Text = "Образование"; + // + // learnGridView + // + this.learnGridView.AllowUserToAddRows = false; + this.learnGridView.AllowUserToDeleteRows = false; + this.learnGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.learnGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.learnGridView.Location = new System.Drawing.Point(6, 19); + this.learnGridView.MultiSelect = false; + this.learnGridView.Name = "learnGridView"; + this.learnGridView.ReadOnly = true; + this.learnGridView.RowHeadersVisible = false; + this.learnGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.learnGridView.Size = new System.Drawing.Size(879, 339); + this.learnGridView.TabIndex = 37; + // + // linkRabLabel + // + this.linkRabLabel.AutoSize = true; + this.linkRabLabel.Location = new System.Drawing.Point(76, 32); + this.linkRabLabel.Name = "linkRabLabel"; + this.linkRabLabel.Size = new System.Drawing.Size(121, 13); + this.linkRabLabel.TabIndex = 41; + this.linkRabLabel.TabStop = true; + this.linkRabLabel.Text = "Выбрать сотрудника..."; + this.linkRabLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRabLabel_LinkClicked); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 32); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(63, 13); + this.label2.TabIndex = 42; + this.label2.Text = "Сотрудник:"; + // + // addButton + // + this.addButton.Location = new System.Drawing.Point(669, 27); + this.addButton.Name = "addButton"; + this.addButton.Size = new System.Drawing.Size(75, 23); + this.addButton.TabIndex = 43; + this.addButton.Text = "Добавить"; + this.addButton.UseVisualStyleBackColor = true; + this.addButton.Click += new System.EventHandler(this.addButton_Click); + // + // changeButton + // + this.changeButton.Location = new System.Drawing.Point(750, 27); + this.changeButton.Name = "changeButton"; + this.changeButton.Size = new System.Drawing.Size(75, 23); + this.changeButton.TabIndex = 44; + this.changeButton.Text = "Изменить"; + this.changeButton.UseVisualStyleBackColor = true; + this.changeButton.Click += new System.EventHandler(this.changeButton_Click); + // + // delButton + // + this.delButton.Location = new System.Drawing.Point(831, 27); + this.delButton.Name = "delButton"; + this.delButton.Size = new System.Drawing.Size(75, 23); + this.delButton.TabIndex = 45; + this.delButton.Text = "Удалить"; + this.delButton.UseVisualStyleBackColor = true; + this.delButton.Click += new System.EventHandler(this.delButton_Click); + // + // настройкиToolStripMenuItem + // + this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem"; + this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20); + this.настройкиToolStripMenuItem.Text = "Настройки"; + // + // LearnForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(918, 445); + this.Controls.Add(this.delButton); + this.Controls.Add(this.changeButton); + this.Controls.Add(this.addButton); + this.Controls.Add(this.label2); + this.Controls.Add(this.linkRabLabel); + this.Controls.Add(this.group); + this.Controls.Add(this.menuStrip); + this.Controls.Add(this.statusStrip1); + this.Name = "LearnForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Образование"; + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.group.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.learnGridView)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem shtatMI; + private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; + private System.Windows.Forms.ToolStripMenuItem otpBolMI; + private System.Windows.Forms.ToolStripMenuItem chelRodMI; + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripMenuItem stajMI; + private System.Windows.Forms.GroupBox group; + private System.Windows.Forms.DataGridView learnGridView; + private System.Windows.Forms.LinkLabel linkRabLabel; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button addButton; + private System.Windows.Forms.Button changeButton; + private System.Windows.Forms.Button delButton; + private System.Windows.Forms.ToolStripMenuItem learnMI; + private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem; + } +} \ No newline at end of file diff --git a/MainForms/LearnForm.cs b/MainForms/LearnForm.cs new file mode 100644 index 0000000..be889bc --- /dev/null +++ b/MainForms/LearnForm.cs @@ -0,0 +1,165 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O +{ + public partial class LearnForm : Form + { + private readonly ColumnConf[] tableMainColumns = { + new ColumnConf(name: "№"), + new ColumnConf(name: "Название обр. учр.", size: 140, warp: true), + new ColumnConf(name: "Уровень", size: 140), + new ColumnConf(name: "Специальность", size: 140), + new ColumnConf(name: "Дата окончания", size: 80), + new ColumnConf(name: "Курсы", size: 140, warp: true), + new ColumnConf(name: "Проф. переподготовка", size: 140, warp: true) + }; + + private Rabotnik rabotnik = null; + private void linkRabLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var form = new RabForm(true); + form.ShowDialog(); + if (form.isCanceled) + rabotnik = null; + else + rabotnik = form.formResult; + ResetLinkRabotnik(); + resetLearnTable(); + } + private void ResetLinkRabotnik() + { + if (rabotnik == null) + { + linkRabLabel.Text = "Выбрать сотрудника..."; + return; + } + var chel = FuncDB.ChelGetById(rabotnik.ChelId); + if (chel == null) + { + linkRabLabel.Text = "Выбрать сотрудника..."; + return; + } + var res = chel.FName.ToString() + " " + + chel.SName[0].ToString() + "." + + ((!string.IsNullOrEmpty(chel.TName)) ? + chel.TName[0].ToString() + "." : ""); + linkRabLabel.Text = res; + } + + private void resetLearnTable() + { + try + { + var res = rabotnik == null ? Array.Empty() : FuncDB.LearnListTableMain(rabotnik.ChelId); + this.ResetTable( + learnGridView, + tableMainColumns, + res + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private Learn selectedLearnTable() + { + try + { + if (learnGridView.SelectedRows.Count != 1) + throw new Exception("Образование не выбрано."); + if (int.TryParse((string)learnGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.LearnGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; + } + } + + public LearnForm() + { + InitializeComponent(); + this.correctUpperMenu(menuStrip, 4); + ResetLinkRabotnik(); + resetLearnTable(); + + linkRabLabel.Enabled = + addButton.Enabled = + changeButton.Enabled = + delButton.Enabled = false; + + var user = this.GetUser(); + if (user == null) + return; + linkRabLabel.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 4, 0) != null; + delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 4, 1) != null; + changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 4, 2) != null; + addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 4, 3) != null; + } + + private void addButton_Click(object sender, EventArgs e) + { + try + { + if (rabotnik == null) + throw new Exception("Не выбран сотрудник."); + var form = new SupportForms.LearnForm(chelId: rabotnik.ChelId); + form.ShowDialog(); + if (!form.isCanceled) + { + resetLearnTable(); + } + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void changeButton_Click(object sender, EventArgs e) + { + try + { + var form = new SupportForms.LearnForm(selectedLearnTable()); + form.ShowDialog(); + if (!form.isCanceled) + resetLearnTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void delButton_Click(object sender, EventArgs e) + { + try + { + FuncDB.LearnDelete(selectedLearnTable()); + resetLearnTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } + } +} diff --git a/MainForms/LearnForm.resx b/MainForms/LearnForm.resx new file mode 100644 index 0000000..9a1181c --- /dev/null +++ b/MainForms/LearnForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 364, 17 + + + 472, 17 + + \ No newline at end of file diff --git a/MainForms/LoginForm.Designer.cs b/MainForms/LoginForm.Designer.cs new file mode 100644 index 0000000..d55c75a --- /dev/null +++ b/MainForms/LoginForm.Designer.cs @@ -0,0 +1,151 @@ + +namespace Diplom_O +{ + partial class LoginForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.workButton = new System.Windows.Forms.Button(); + this.canceledButton = new System.Windows.Forms.Button(); + this.loginBox = new System.Windows.Forms.ComboBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 98); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(332, 22); + this.statusStrip1.TabIndex = 2; + this.statusStrip1.Text = "statusStrip1"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(57, 17); + this.errorLabel.Text = "Ошибка."; + this.errorLabel.Visible = false; + // + // workButton + // + this.workButton.Location = new System.Drawing.Point(245, 65); + this.workButton.Name = "workButton"; + this.workButton.Size = new System.Drawing.Size(75, 23); + this.workButton.TabIndex = 9; + this.workButton.Text = "Войти"; + this.workButton.UseVisualStyleBackColor = true; + this.workButton.Click += new System.EventHandler(this.workButton_Click); + // + // canceledButton + // + this.canceledButton.Location = new System.Drawing.Point(164, 65); + this.canceledButton.Name = "canceledButton"; + this.canceledButton.Size = new System.Drawing.Size(75, 23); + this.canceledButton.TabIndex = 10; + this.canceledButton.Text = "Отмена"; + this.canceledButton.UseVisualStyleBackColor = true; + this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click); + // + // loginBox + // + this.loginBox.FormattingEnabled = true; + this.loginBox.Location = new System.Drawing.Point(66, 12); + this.loginBox.Name = "loginBox"; + this.loginBox.Size = new System.Drawing.Size(254, 21); + this.loginBox.TabIndex = 11; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(66, 39); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(254, 20); + this.textBox1.TabIndex = 12; + this.textBox1.UseSystemPasswordChar = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(19, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 13); + this.label1.TabIndex = 13; + this.label1.Text = "Логин:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 42); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(48, 13); + this.label2.TabIndex = 14; + this.label2.Text = "Пароль:"; + // + // LoginForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(332, 120); + this.ControlBox = false; + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.loginBox); + this.Controls.Add(this.canceledButton); + this.Controls.Add(this.workButton); + this.Controls.Add(this.statusStrip1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "LoginForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Вход"; + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.Button workButton; + private System.Windows.Forms.Button canceledButton; + private System.Windows.Forms.ComboBox loginBox; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + } +} \ No newline at end of file diff --git a/MainForms/LoginForm.cs b/MainForms/LoginForm.cs new file mode 100644 index 0000000..dce827e --- /dev/null +++ b/MainForms/LoginForm.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; +using System.Security.Cryptography; + +namespace Diplom_O +{ + public partial class LoginForm : Form + { + public bool isCanceled = false; + public LoginForm() + { + InitializeComponent(); + try + { + loginBox.Items.Clear(); + var userList = FuncDB.UserList(); + foreach (var usr in userList) + loginBox.Items.Add(usr.Login); + if (loginBox.Items.Count > 0) + loginBox.SelectedIndex = 0; + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + workButton.Enabled = false; + } + } + + private void workButton_Click(object sender, EventArgs e) + { + try + { + var _user = FuncDB.UserGetByLogin((string)loginBox.Text); + if (_user == null) + throw new Exception("Пользователя не существует."); + if (_user.Pass != textBox1.Text) + throw new Exception("Не верный пароль."); + byte[] pass_bytes = Encoding.ASCII.GetBytes(textBox1.Text); + var pass_hash_bytes = new MD5CryptoServiceProvider().ComputeHash(pass_bytes); + _user.Pass = Encoding.ASCII.GetString(pass_hash_bytes); + this.SetUser(_user); + this.SetNextForm(_user.Default); + this.Close(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void canceledButton_Click(object sender, EventArgs e) + { + isCanceled = true; + this.Close(); + } + } +} diff --git a/SupportForms/SelectChelForm.resx b/MainForms/LoginForm.resx similarity index 100% rename from SupportForms/SelectChelForm.resx rename to MainForms/LoginForm.resx diff --git a/MainForms/OtpForm.Designer.cs b/MainForms/OtpForm.Designer.cs index 41ee0a8..42fb0c7 100644 --- a/MainForms/OtpForm.Designer.cs +++ b/MainForms/OtpForm.Designer.cs @@ -1,40 +1,442 @@  namespace Diplom_O { - partial class OtpForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; + partial class OtpForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "OtpForm"; - } + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); + this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.stajMI = new System.Windows.Forms.ToolStripMenuItem(); + this.learnMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.group = new System.Windows.Forms.GroupBox(); + this.freeGridView = new System.Windows.Forms.DataGridView(); + this.linkRabLabel = new System.Windows.Forms.LinkLabel(); + this.label2 = new System.Windows.Forms.Label(); + this.addButton = new System.Windows.Forms.Button(); + this.changeButton = new System.Windows.Forms.Button(); + this.delButton = new System.Windows.Forms.Button(); + this.groupBox = new System.Windows.Forms.GroupBox(); + this.otherDaysLabel = new System.Windows.Forms.Label(); + this.bolDaysLabel = new System.Windows.Forms.Label(); + this.otpDaysLabel = new System.Windows.Forms.Label(); + this.totalDaysLabel = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); + this.dateTimePicker2 = new System.Windows.Forms.DateTimePicker(); + this.updateButton = new System.Windows.Forms.Button(); + this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.group.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.freeGridView)).BeginInit(); + this.groupBox.SuspendLayout(); + this.SuspendLayout(); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shtatMI, + this.chelRodMI, + this.rabitnikiMI, + this.stajMI, + this.learnMI, + this.otpBolMI, + this.детиToolStripMenuItem, + this.настройкиToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(918, 24); + this.menuStrip.TabIndex = 30; + this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); + // + // shtatMI + // + this.shtatMI.Name = "shtatMI"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; + // + // rabitnikiMI + // + this.rabitnikiMI.Name = "rabitnikiMI"; + this.rabitnikiMI.Size = new System.Drawing.Size(85, 20); + this.rabitnikiMI.Text = "Сотрудники"; + // + // stajMI + // + this.stajMI.Name = "stajMI"; + this.stajMI.Size = new System.Drawing.Size(47, 20); + this.stajMI.Text = "Стаж"; + // + // learnMI + // + this.learnMI.Name = "learnMI"; + this.learnMI.Size = new System.Drawing.Size(92, 20); + this.learnMI.Text = "Образование"; + // + // otpBolMI + // + this.otpBolMI.Name = "otpBolMI"; + this.otpBolMI.Size = new System.Drawing.Size(100, 20); + this.otpBolMI.Text = "Отпуск/Больн."; + // + // детиToolStripMenuItem + // + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(137, 17); + this.errorLabel.Text = "Отображение ошибки"; + this.errorLabel.Visible = false; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 462); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(918, 22); + this.statusStrip1.TabIndex = 37; + this.statusStrip1.Text = "statusStrip1"; + // + // group + // + this.group.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.group.Controls.Add(this.freeGridView); + this.group.Location = new System.Drawing.Point(15, 82); + this.group.Name = "group"; + this.group.Size = new System.Drawing.Size(478, 377); + this.group.TabIndex = 39; + this.group.TabStop = false; + this.group.Text = "Образование"; + // + // freeGridView + // + this.freeGridView.AllowUserToAddRows = false; + this.freeGridView.AllowUserToDeleteRows = false; + this.freeGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.freeGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.freeGridView.Location = new System.Drawing.Point(6, 19); + this.freeGridView.MultiSelect = false; + this.freeGridView.Name = "freeGridView"; + this.freeGridView.ReadOnly = true; + this.freeGridView.RowHeadersVisible = false; + this.freeGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.freeGridView.Size = new System.Drawing.Size(466, 352); + this.freeGridView.TabIndex = 37; + // + // linkRabLabel + // + this.linkRabLabel.AutoSize = true; + this.linkRabLabel.Location = new System.Drawing.Point(76, 32); + this.linkRabLabel.Name = "linkRabLabel"; + this.linkRabLabel.Size = new System.Drawing.Size(121, 13); + this.linkRabLabel.TabIndex = 41; + this.linkRabLabel.TabStop = true; + this.linkRabLabel.Text = "Выбрать сотрудника..."; + this.linkRabLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRabLabel_LinkClicked); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 32); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(63, 13); + this.label2.TabIndex = 42; + this.label2.Text = "Сотрудник:"; + // + // addButton + // + this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addButton.Location = new System.Drawing.Point(669, 27); + this.addButton.Name = "addButton"; + this.addButton.Size = new System.Drawing.Size(75, 23); + this.addButton.TabIndex = 43; + this.addButton.Text = "Добавить"; + this.addButton.UseVisualStyleBackColor = true; + this.addButton.Click += new System.EventHandler(this.addButton_Click); + // + // changeButton + // + this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.changeButton.Location = new System.Drawing.Point(750, 27); + this.changeButton.Name = "changeButton"; + this.changeButton.Size = new System.Drawing.Size(75, 23); + this.changeButton.TabIndex = 44; + this.changeButton.Text = "Изменить"; + this.changeButton.UseVisualStyleBackColor = true; + this.changeButton.Click += new System.EventHandler(this.changeButton_Click); + // + // delButton + // + this.delButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.delButton.Location = new System.Drawing.Point(831, 27); + this.delButton.Name = "delButton"; + this.delButton.Size = new System.Drawing.Size(75, 23); + this.delButton.TabIndex = 45; + this.delButton.Text = "Удалить"; + this.delButton.UseVisualStyleBackColor = true; + this.delButton.Click += new System.EventHandler(this.delButton_Click); + // + // groupBox + // + this.groupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox.Controls.Add(this.otherDaysLabel); + this.groupBox.Controls.Add(this.bolDaysLabel); + this.groupBox.Controls.Add(this.otpDaysLabel); + this.groupBox.Controls.Add(this.totalDaysLabel); + this.groupBox.Controls.Add(this.label7); + this.groupBox.Controls.Add(this.label6); + this.groupBox.Controls.Add(this.label5); + this.groupBox.Controls.Add(this.label4); + this.groupBox.Location = new System.Drawing.Point(499, 82); + this.groupBox.Name = "groupBox"; + this.groupBox.Size = new System.Drawing.Size(407, 371); + this.groupBox.TabIndex = 46; + this.groupBox.TabStop = false; + this.groupBox.Text = "Расчет"; + // + // otherDaysLabel + // + this.otherDaysLabel.AutoSize = true; + this.otherDaysLabel.Location = new System.Drawing.Point(120, 100); + this.otherDaysLabel.Name = "otherDaysLabel"; + this.otherDaysLabel.Size = new System.Drawing.Size(81, 13); + this.otherDaysLabel.TabIndex = 23; + this.otherDaysLabel.Text = "otherDaysLabel"; + // + // bolDaysLabel + // + this.bolDaysLabel.AutoSize = true; + this.bolDaysLabel.Location = new System.Drawing.Point(120, 74); + this.bolDaysLabel.Name = "bolDaysLabel"; + this.bolDaysLabel.Size = new System.Drawing.Size(71, 13); + this.bolDaysLabel.TabIndex = 22; + this.bolDaysLabel.Text = "bolDaysLabel"; + // + // otpDaysLabel + // + this.otpDaysLabel.AutoSize = true; + this.otpDaysLabel.Location = new System.Drawing.Point(120, 48); + this.otpDaysLabel.Name = "otpDaysLabel"; + this.otpDaysLabel.Size = new System.Drawing.Size(72, 13); + this.otpDaysLabel.TabIndex = 21; + this.otpDaysLabel.Text = "otpDaysLabel"; + // + // totalDaysLabel + // + this.totalDaysLabel.AutoSize = true; + this.totalDaysLabel.Location = new System.Drawing.Point(120, 22); + this.totalDaysLabel.Name = "totalDaysLabel"; + this.totalDaysLabel.Size = new System.Drawing.Size(77, 13); + this.totalDaysLabel.TabIndex = 20; + this.totalDaysLabel.Text = "totalDaysLabel"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(78, 100); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(36, 13); + this.label7.TabIndex = 17; + this.label7.Text = "Иное:"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(42, 74); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(72, 13); + this.label6.TabIndex = 16; + this.label6.Text = "Больничный:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(68, 48); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(46, 13); + this.label5.TabIndex = 15; + this.label5.Text = "Отпуск:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(6, 22); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(108, 13); + this.label4.TabIndex = 14; + this.label4.Text = "Общее кол-во дней:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 59); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(74, 13); + this.label1.TabIndex = 12; + this.label1.Text = "Дата начала:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(245, 59); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(69, 13); + this.label3.TabIndex = 13; + this.label3.Text = "Дата конца:"; + // + // dateTimePicker1 + // + this.dateTimePicker1.Location = new System.Drawing.Point(92, 56); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.Size = new System.Drawing.Size(147, 20); + this.dateTimePicker1.TabIndex = 18; + // + // dateTimePicker2 + // + this.dateTimePicker2.Location = new System.Drawing.Point(320, 56); + this.dateTimePicker2.Name = "dateTimePicker2"; + this.dateTimePicker2.Size = new System.Drawing.Size(147, 20); + this.dateTimePicker2.TabIndex = 19; + // + // updateButton + // + this.updateButton.Location = new System.Drawing.Point(473, 54); + this.updateButton.Name = "updateButton"; + this.updateButton.Size = new System.Drawing.Size(75, 23); + this.updateButton.TabIndex = 47; + this.updateButton.Text = "Обновить"; + this.updateButton.UseVisualStyleBackColor = true; + this.updateButton.Click += new System.EventHandler(this.updateButton_Click); + // + // настройкиToolStripMenuItem + // + this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem"; + this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20); + this.настройкиToolStripMenuItem.Text = "Настройки"; + // + // OtpForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(918, 484); + this.Controls.Add(this.updateButton); + this.Controls.Add(this.groupBox); + this.Controls.Add(this.delButton); + this.Controls.Add(this.changeButton); + this.Controls.Add(this.dateTimePicker2); + this.Controls.Add(this.addButton); + this.Controls.Add(this.dateTimePicker1); + this.Controls.Add(this.label2); + this.Controls.Add(this.linkRabLabel); + this.Controls.Add(this.group); + this.Controls.Add(this.label3); + this.Controls.Add(this.menuStrip); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.label1); + this.Name = "OtpForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Отпуск/Больничный"; + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.group.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.freeGridView)).EndInit(); + this.groupBox.ResumeLayout(false); + this.groupBox.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); - #endregion - } + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem shtatMI; + private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; + private System.Windows.Forms.ToolStripMenuItem otpBolMI; + private System.Windows.Forms.ToolStripMenuItem chelRodMI; + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripMenuItem stajMI; + private System.Windows.Forms.GroupBox group; + private System.Windows.Forms.DataGridView freeGridView; + private System.Windows.Forms.LinkLabel linkRabLabel; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button addButton; + private System.Windows.Forms.Button changeButton; + private System.Windows.Forms.Button delButton; + private System.Windows.Forms.ToolStripMenuItem learnMI; + private System.Windows.Forms.GroupBox groupBox; + private System.Windows.Forms.Label otherDaysLabel; + private System.Windows.Forms.Label bolDaysLabel; + private System.Windows.Forms.Label otpDaysLabel; + private System.Windows.Forms.Label totalDaysLabel; + private System.Windows.Forms.DateTimePicker dateTimePicker2; + private System.Windows.Forms.DateTimePicker dateTimePicker1; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button updateButton; + private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem; + } } \ No newline at end of file diff --git a/MainForms/OtpForm.cs b/MainForms/OtpForm.cs index 42fb2f4..ab7d6f4 100644 --- a/MainForms/OtpForm.cs +++ b/MainForms/OtpForm.cs @@ -7,14 +7,201 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using Diplom_O.DataBase; namespace Diplom_O { public partial class OtpForm : Form { + private readonly ColumnConf[] tableMainColumns = { + new ColumnConf(name: "№"), + new ColumnConf(name: "Тип", size: 140, warp: true), + new ColumnConf(name: "Дата начала", size: 80), + new ColumnConf(name: "Дата конца", size: 80), + new ColumnConf(name: "Общее кол-во дней", size: 100) + }; + + private Rabotnik rabotnik = null; + private void linkRabLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var form = new RabForm(true); + form.ShowDialog(); + if (form.isCanceled) + rabotnik = null; + else + rabotnik = form.formResult; + ResetLinkRabotnik(); + resetFreeTable(); + resetFreeDays(); + } + private void ResetLinkRabotnik() + { + if (rabotnik == null) + { + linkRabLabel.Text = "Выбрать сотрудника..."; + return; + } + var chel = FuncDB.ChelGetById(rabotnik.ChelId); + if (chel == null) + { + linkRabLabel.Text = "Выбрать сотрудника..."; + return; + } + var res = chel.FName.ToString() + " " + + chel.SName[0].ToString() + "." + + ((!string.IsNullOrEmpty(chel.TName)) ? + chel.TName[0].ToString() + "." : ""); + linkRabLabel.Text = res; + } + + private void resetFreeTable() + { + try + { + var res = rabotnik == null ? Array.Empty() : FuncDB.FreeListTable(rabotnik.ChelId, dateTimePicker1.Value, dateTimePicker2.Value); + this.ResetTable( + freeGridView, + tableMainColumns, + res + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private void resetFreeDays() + { + try + { + var res = rabotnik == null ? new Dictionary() : FuncDB.FreeListDays(rabotnik.ChelId, dateTimePicker1.Value, dateTimePicker2.Value); + if (res.ContainsKey("Общее")) + totalDaysLabel.Text = res["Общее"].ToString(); + else + totalDaysLabel.Text = "0"; + if (res.ContainsKey("Отпуск")) + otpDaysLabel.Text = res["Отпуск"].ToString(); + else + otpDaysLabel.Text = "0"; + if (res.ContainsKey("Больничный")) + bolDaysLabel.Text = res["Больничный"].ToString(); + else + bolDaysLabel.Text = "0"; + if (res.ContainsKey("Иное")) + otherDaysLabel.Text = res["Иное"].ToString(); + else + otherDaysLabel.Text = "0"; + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + + private Free selectedFreeTable() + { + try + { + if (freeGridView.SelectedRows.Count != 1) + throw new Exception("Отстранение не выбрано."); + if (int.TryParse((string)freeGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.FreeGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; + } + } + public OtpForm() { InitializeComponent(); + this.correctUpperMenu(menuStrip, 5); + DateTime d = DateTime.Now; + dateTimePicker1.Value = new DateTime(d.Year, 1, 1, 0, 0, 0); + dateTimePicker2.Value = new DateTime(d.Year + 1, 1, 1, 0, 0, 0); + ResetLinkRabotnik(); + resetFreeTable(); + resetFreeDays(); + + linkRabLabel.Enabled = + addButton.Enabled = + changeButton.Enabled = + delButton.Enabled = false; + + var user = this.GetUser(); + if (user == null) + return; + linkRabLabel.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 0) != null; + delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 1) != null; + changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 2) != null; + addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 3) != null; } - } + + private void addButton_Click(object sender, EventArgs e) + { + try + { + if (rabotnik == null) + throw new Exception("Не выбран сотрудник."); + var form = new SupportForms.OptForm(chelId: rabotnik.ChelId); + form.ShowDialog(); + if (!form.isCanceled) + { + resetFreeTable(); + resetFreeDays(); + } + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void changeButton_Click(object sender, EventArgs e) + { + try + { + var form = new SupportForms.OptForm(selectedFreeTable()); + form.ShowDialog(); + if (!form.isCanceled) + { + resetFreeTable(); + resetFreeDays(); + } + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void delButton_Click(object sender, EventArgs e) + { + try + { + FuncDB.FreeDelete(selectedFreeTable()); + resetFreeTable(); + resetFreeDays(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } + + private void updateButton_Click(object sender, EventArgs e) + { + resetFreeTable(); + resetFreeDays(); + } + } } diff --git a/MainForms/OtpForm.resx b/MainForms/OtpForm.resx new file mode 100644 index 0000000..9a1181c --- /dev/null +++ b/MainForms/OtpForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 364, 17 + + + 472, 17 + + \ No newline at end of file diff --git a/MainForms/RabForm.Designer.cs b/MainForms/RabForm.Designer.cs index 0586dd6..1835408 100644 --- a/MainForms/RabForm.Designer.cs +++ b/MainForms/RabForm.Designer.cs @@ -29,12 +29,398 @@ namespace Diplom_O /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "RabForm"; + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); + this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.stajMI = new System.Windows.Forms.ToolStripMenuItem(); + this.learnMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.workerGridView = new System.Windows.Forms.DataGridView(); + this.addWorkerButton = new System.Windows.Forms.Button(); + this.dropFindButton = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.findBox = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.addWorkPlaceButton = new System.Windows.Forms.Button(); + this.historyWorkGridView = new System.Windows.Forms.DataGridView(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.stajGridView = new System.Windows.Forms.DataGridView(); + this.addTypeStajButton = new System.Windows.Forms.Button(); + this.delTypeStajButton = new System.Windows.Forms.Button(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.changeWorkPlaceButton = new System.Windows.Forms.Button(); + this.delWorkPlaceButton = new System.Windows.Forms.Button(); + this.fioLabel = new System.Windows.Forms.Label(); + this.selectButton = new System.Windows.Forms.Button(); + this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.workerGridView)).BeginInit(); + this.statusStrip1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.historyWorkGridView)).BeginInit(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.stajGridView)).BeginInit(); + this.SuspendLayout(); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shtatMI, + this.chelRodMI, + this.rabitnikiMI, + this.stajMI, + this.learnMI, + this.otpBolMI, + this.детиToolStripMenuItem, + this.настройкиToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(983, 24); + this.menuStrip.TabIndex = 30; + this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); + // + // shtatMI + // + this.shtatMI.Name = "shtatMI"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; + // + // rabitnikiMI + // + this.rabitnikiMI.Name = "rabitnikiMI"; + this.rabitnikiMI.Size = new System.Drawing.Size(85, 20); + this.rabitnikiMI.Text = "Сотрудники"; + // + // stajMI + // + this.stajMI.Name = "stajMI"; + this.stajMI.Size = new System.Drawing.Size(47, 20); + this.stajMI.Text = "Стаж"; + // + // learnMI + // + this.learnMI.Name = "learnMI"; + this.learnMI.Size = new System.Drawing.Size(92, 20); + this.learnMI.Text = "Образование"; + // + // otpBolMI + // + this.otpBolMI.Name = "otpBolMI"; + this.otpBolMI.Size = new System.Drawing.Size(100, 20); + this.otpBolMI.Text = "Отпуск/Больн."; + // + // детиToolStripMenuItem + // + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(137, 17); + this.errorLabel.Text = "Отображение ошибки"; + this.errorLabel.Visible = false; + // + // workerGridView + // + this.workerGridView.AllowUserToAddRows = false; + this.workerGridView.AllowUserToDeleteRows = false; + this.workerGridView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.workerGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.workerGridView.Location = new System.Drawing.Point(12, 56); + this.workerGridView.MultiSelect = false; + this.workerGridView.Name = "workerGridView"; + this.workerGridView.ReadOnly = true; + this.workerGridView.RowHeadersVisible = false; + this.workerGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.workerGridView.Size = new System.Drawing.Size(459, 694); + this.workerGridView.TabIndex = 36; + this.workerGridView.SelectionChanged += new System.EventHandler(this.workerGridView_SelectionChanged); + // + // addWorkerButton + // + this.addWorkerButton.Location = new System.Drawing.Point(396, 27); + this.addWorkerButton.Name = "addWorkerButton"; + this.addWorkerButton.Size = new System.Drawing.Size(75, 23); + this.addWorkerButton.TabIndex = 29; + this.addWorkerButton.Text = "Добавить"; + this.addWorkerButton.UseVisualStyleBackColor = true; + this.addWorkerButton.Click += new System.EventHandler(this.addWorkerButton_Click); + // + // dropFindButton + // + this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.dropFindButton.Location = new System.Drawing.Point(396, 756); + this.dropFindButton.Name = "dropFindButton"; + this.dropFindButton.Size = new System.Drawing.Size(75, 23); + this.dropFindButton.TabIndex = 35; + this.dropFindButton.Text = "Сбросить"; + this.dropFindButton.UseVisualStyleBackColor = true; + this.dropFindButton.TextChanged += new System.EventHandler(this.dropFindButton_Click); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 761); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(39, 13); + this.label1.TabIndex = 38; + this.label1.Text = "Поиск"; + // + // findBox + // + this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.findBox.Location = new System.Drawing.Point(57, 758); + this.findBox.Name = "findBox"; + this.findBox.Size = new System.Drawing.Size(333, 20); + this.findBox.TabIndex = 34; + this.findBox.TextChanged += new System.EventHandler(this.findBox_TextChanged); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 782); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(983, 22); + this.statusStrip1.TabIndex = 37; + this.statusStrip1.Text = "statusStrip1"; + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.addWorkPlaceButton); + this.groupBox1.Controls.Add(this.historyWorkGridView); + this.groupBox1.Controls.Add(this.groupBox2); + this.groupBox1.Controls.Add(this.changeWorkPlaceButton); + this.groupBox1.Controls.Add(this.delWorkPlaceButton); + this.groupBox1.Controls.Add(this.fioLabel); + this.groupBox1.Location = new System.Drawing.Point(477, 31); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(494, 747); + this.groupBox1.TabIndex = 39; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "История"; + // + // addWorkPlaceButton + // + this.addWorkPlaceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addWorkPlaceButton.Location = new System.Drawing.Point(251, 19); + this.addWorkPlaceButton.Name = "addWorkPlaceButton"; + this.addWorkPlaceButton.Size = new System.Drawing.Size(75, 23); + this.addWorkPlaceButton.TabIndex = 43; + this.addWorkPlaceButton.Text = "Добавить"; + this.addWorkPlaceButton.UseVisualStyleBackColor = true; + this.addWorkPlaceButton.Click += new System.EventHandler(this.addWorkPlaceButton_Click); + // + // historyWorkGridView + // + this.historyWorkGridView.AllowUserToAddRows = false; + this.historyWorkGridView.AllowUserToDeleteRows = false; + this.historyWorkGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.historyWorkGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.historyWorkGridView.Location = new System.Drawing.Point(9, 48); + this.historyWorkGridView.MultiSelect = false; + this.historyWorkGridView.Name = "historyWorkGridView"; + this.historyWorkGridView.ReadOnly = true; + this.historyWorkGridView.RowHeadersVisible = false; + this.historyWorkGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.historyWorkGridView.Size = new System.Drawing.Size(479, 332); + this.historyWorkGridView.TabIndex = 42; + this.historyWorkGridView.SelectionChanged += new System.EventHandler(this.historyWorkGridView_SelectionChanged); + // + // groupBox2 + // + this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.stajGridView); + this.groupBox2.Controls.Add(this.addTypeStajButton); + this.groupBox2.Controls.Add(this.delTypeStajButton); + this.groupBox2.Controls.Add(this.comboBox1); + this.groupBox2.Location = new System.Drawing.Point(9, 386); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(479, 355); + this.groupBox2.TabIndex = 41; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Типы стажа"; + // + // stajGridView + // + this.stajGridView.AllowUserToAddRows = false; + this.stajGridView.AllowUserToDeleteRows = false; + this.stajGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.stajGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.stajGridView.Location = new System.Drawing.Point(6, 48); + this.stajGridView.MultiSelect = false; + this.stajGridView.Name = "stajGridView"; + this.stajGridView.ReadOnly = true; + this.stajGridView.RowHeadersVisible = false; + this.stajGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.stajGridView.Size = new System.Drawing.Size(467, 301); + this.stajGridView.TabIndex = 37; + // + // addTypeStajButton + // + this.addTypeStajButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addTypeStajButton.Location = new System.Drawing.Point(317, 19); + this.addTypeStajButton.Name = "addTypeStajButton"; + this.addTypeStajButton.Size = new System.Drawing.Size(75, 23); + this.addTypeStajButton.TabIndex = 2; + this.addTypeStajButton.Text = "Добавить"; + this.addTypeStajButton.UseVisualStyleBackColor = true; + this.addTypeStajButton.Click += new System.EventHandler(this.addTypeStajButton_Click); + // + // delTypeStajButton + // + this.delTypeStajButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.delTypeStajButton.Location = new System.Drawing.Point(398, 19); + this.delTypeStajButton.Name = "delTypeStajButton"; + this.delTypeStajButton.Size = new System.Drawing.Size(75, 23); + this.delTypeStajButton.TabIndex = 1; + this.delTypeStajButton.Text = "Удалить"; + this.delTypeStajButton.UseVisualStyleBackColor = true; + this.delTypeStajButton.Click += new System.EventHandler(this.delTypeStajButton_Click); + // + // comboBox1 + // + this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(6, 21); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(305, 21); + this.comboBox1.TabIndex = 0; + // + // changeWorkPlaceButton + // + this.changeWorkPlaceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.changeWorkPlaceButton.Location = new System.Drawing.Point(332, 19); + this.changeWorkPlaceButton.Name = "changeWorkPlaceButton"; + this.changeWorkPlaceButton.Size = new System.Drawing.Size(75, 23); + this.changeWorkPlaceButton.TabIndex = 3; + this.changeWorkPlaceButton.Text = "Изменить"; + this.changeWorkPlaceButton.UseVisualStyleBackColor = true; + this.changeWorkPlaceButton.Click += new System.EventHandler(this.changeWorkPlaceButton_Click); + // + // delWorkPlaceButton + // + this.delWorkPlaceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.delWorkPlaceButton.Location = new System.Drawing.Point(413, 19); + this.delWorkPlaceButton.Name = "delWorkPlaceButton"; + this.delWorkPlaceButton.Size = new System.Drawing.Size(75, 23); + this.delWorkPlaceButton.TabIndex = 1; + this.delWorkPlaceButton.Text = "Удалить"; + this.delWorkPlaceButton.UseVisualStyleBackColor = true; + this.delWorkPlaceButton.Click += new System.EventHandler(this.delWorkPlaceButton_Click); + // + // fioLabel + // + this.fioLabel.AutoSize = true; + this.fioLabel.Location = new System.Drawing.Point(6, 24); + this.fioLabel.Name = "fioLabel"; + this.fioLabel.Size = new System.Drawing.Size(114, 13); + this.fioLabel.TabIndex = 0; + this.fioLabel.Text = "Таб№ Фамилия И.О."; + // + // selectButton + // + this.selectButton.Location = new System.Drawing.Point(315, 27); + this.selectButton.Name = "selectButton"; + this.selectButton.Size = new System.Drawing.Size(75, 23); + this.selectButton.TabIndex = 40; + this.selectButton.Text = "Выбрать"; + this.selectButton.UseVisualStyleBackColor = true; + this.selectButton.Click += new System.EventHandler(this.selectButton_Click); + // + // настройкиToolStripMenuItem + // + this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem"; + this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20); + this.настройкиToolStripMenuItem.Text = "Настройки"; + // + // RabForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(983, 804); + this.Controls.Add(this.selectButton); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.menuStrip); + this.Controls.Add(this.workerGridView); + this.Controls.Add(this.addWorkerButton); + this.Controls.Add(this.dropFindButton); + this.Controls.Add(this.label1); + this.Controls.Add(this.findBox); + this.Controls.Add(this.statusStrip1); + this.Name = "RabForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Сотрудники"; + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.workerGridView)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.historyWorkGridView)).EndInit(); + this.groupBox2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.stajGridView)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + } - #endregion - } + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem shtatMI; + private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; + private System.Windows.Forms.ToolStripMenuItem otpBolMI; + private System.Windows.Forms.ToolStripMenuItem chelRodMI; + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.DataGridView workerGridView; + private System.Windows.Forms.Button addWorkerButton; + private System.Windows.Forms.Button dropFindButton; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox findBox; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button changeWorkPlaceButton; + private System.Windows.Forms.Button delWorkPlaceButton; + private System.Windows.Forms.Label fioLabel; + private System.Windows.Forms.DataGridView historyWorkGridView; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.DataGridView stajGridView; + private System.Windows.Forms.Button addTypeStajButton; + private System.Windows.Forms.Button delTypeStajButton; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Button addWorkPlaceButton; + private System.Windows.Forms.ToolStripMenuItem stajMI; + private System.Windows.Forms.Button selectButton; + private System.Windows.Forms.ToolStripMenuItem learnMI; + private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem; + } } \ No newline at end of file diff --git a/MainForms/RabForm.cs b/MainForms/RabForm.cs index 1d2adbc..51b86d7 100644 --- a/MainForms/RabForm.cs +++ b/MainForms/RabForm.cs @@ -7,14 +7,286 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using Diplom_O.DataBase; namespace Diplom_O { public partial class RabForm : Form { - public RabForm() + private readonly ColumnConf[] tableMainColumns = { + new ColumnConf(name: "№"), + new ColumnConf(name: "Таб. №", size: 80), + new ColumnConf(name: "Фамилия И.О.", size: 140), + new ColumnConf(name: "Должность", size: 140) + }; + private readonly ColumnConf[] tableHistoryColumns = + { + new ColumnConf(name: "№"), + new ColumnConf(name: "Таб. №", size: 80), + new ColumnConf(name: "Должность", size: 140), + new ColumnConf(name: "Дата начала", size: 80), + new ColumnConf(name: "Дата конца", size: 80) + }; + private readonly ColumnConf[] tableStajColumns = + { + new ColumnConf(name: "№"), + new ColumnConf(name: "Тип стажа", size: 120), + }; + + private void resetRabotnikTable() + { + try + { + var rab = FuncDB.RabotnikTableMain(findBox.Text); + var res = new List(); + foreach (var r in rab) + { + bool flag_add = false; + foreach (var a in r) + if (a.Contains(findBox.Text) && !flag_add) + { + res.Add(r); + flag_add = true; + } + } + this.ResetTable( + workerGridView, + tableMainColumns, + res.ToArray() + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private Rabotnik selectedRabotnikTable() + { + try + { + if (workerGridView.RowCount == 0) + return null; + if (workerGridView.SelectedRows.Count != 1) + throw new Exception("Человек не выбран."); + if (int.TryParse((string)workerGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.RabotnikGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + //this.ShowError(errorLabel, e.Message); + return null; + } + } + private void workerGridView_SelectionChanged(object sender, EventArgs e) + { + resetHistoryWorkTable(); + } + + private void resetHistoryWorkTable() + { + try + { + var rabotnik = selectedRabotnikTable(); + var res = (rabotnik == null) ? Array.Empty() : FuncDB.RabotnikByChelIdTable(rabotnik.ChelId); + this.ResetTable( + historyWorkGridView, + tableHistoryColumns, + res + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private Rabotnik selectedHistoryWorkTable() + { + try + { + if (historyWorkGridView.RowCount == 0) + return null; + if (historyWorkGridView.SelectedRows.Count != 1) + throw new Exception("Человек не выбран."); + if (int.TryParse((string)historyWorkGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.RabotnikGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + //this.ShowError(errorLabel, e.Message); + return null; + } + } + private void historyWorkGridView_SelectionChanged(object sender, EventArgs e) + { + resetRabotnikStajTable(); + } + + private void resetRabotnikStajTable() + { + try + { + var rabotnik = selectedHistoryWorkTable(); + var res = (rabotnik == null) ? Array.Empty() : + FuncDB.RabotnikTypeStajListString(rabotnik.Id); + this.ResetTable( + stajGridView, + tableStajColumns, + res + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private RabotnikTypeStaj selectedRabotnikStajTable() + { + try + { + if (stajGridView.SelectedRows.Count != 1) + throw new Exception("Стаж сотрудника не выбран."); + if (int.TryParse((string)stajGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.RabotnikTypeStajGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + //this.ShowError(errorLabel, e.Message); + return null; + } + } + + private void resetTypeStajComboBox() + { + try + { + var list = FuncDB.TypeStajListString(); + comboBox1.Items.Clear(); + comboBox1.Items.AddRange(list); + comboBox1.SelectedIndex = -1; + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + + public bool isCanceled = true; + public Rabotnik formResult = null; + public RabForm(bool select = false) { InitializeComponent(); + selectButton.Visible = select; + menuStrip.Enabled = !select; + this.correctUpperMenu(menuStrip, 2); + resetRabotnikTable(); + resetTypeStajComboBox(); + + addTypeStajButton.Enabled = + delTypeStajButton.Enabled = + delWorkPlaceButton.Enabled = + changeWorkPlaceButton.Enabled = + addWorkPlaceButton.Enabled = + addWorkerButton.Enabled = false; + var user = this.GetUser(); + if (user == null) + return; + + delWorkPlaceButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 2, 1) != null; + changeWorkPlaceButton.Enabled = + delTypeStajButton.Enabled = + addTypeStajButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 2, 2) != null; + addWorkerButton.Enabled = + addWorkPlaceButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 2, 3) != null; + } + + private void addWorkerButton_Click(object sender, EventArgs e) + { + var form = new SupportForms.WorkerForm(); + form.ShowDialog(); + if (!form.isCanceled) + resetRabotnikTable(); + } + private void addWorkPlaceButton_Click(object sender, EventArgs e) + { + var form = new SupportForms.WorkerForm(selectedHistoryWorkTable(), true); + form.ShowDialog(); + if (!form.isCanceled) + resetRabotnikTable(); + } + private void addTypeStajButton_Click(object sender, EventArgs e) + { + try + { + var typestaj = FuncDB.TypeStajGetByName(comboBox1.Text); + if (typestaj == null) + { + FuncDB.TypeStajAdd(new TypeStaj() { Name = comboBox1.Text }); + typestaj = FuncDB.TypeStajGetByName(comboBox1.Text); + } + var rabotnik = selectedHistoryWorkTable(); + if (rabotnik == null) + throw new Exception("Не выбран сотрудник"); + FuncDB.RabotnikTypeStajAdd(new RabotnikTypeStaj() { RabitnikId = rabotnik.Id, TypeStajId = typestaj.Id }); + resetTypeStajComboBox(); + resetRabotnikStajTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void changeWorkPlaceButton_Click(object sender, EventArgs e) + { + var form = new SupportForms.WorkerForm(selectedHistoryWorkTable()); + form.ShowDialog(); + if (!form.isCanceled) + resetRabotnikTable(); + } + private void delWorkPlaceButton_Click(object sender, EventArgs e) + { + var res = selectedHistoryWorkTable(); + FuncDB.RabotnikDelete(res); + resetHistoryWorkTable(); + } + private void delTypeStajButton_Click(object sender, EventArgs e) + { + var res = selectedRabotnikStajTable(); + FuncDB.RabotnikTypeStajDelete(res); + resetRabotnikStajTable(); + } + + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } + + private void selectButton_Click(object sender, EventArgs e) + { + formResult = selectedRabotnikTable(); + isCanceled = false; + this.Close(); + } + + private void findBox_TextChanged(object sender, EventArgs e) + { + this.FindOnChanged(resetRabotnikTable); + } + private void dropFindButton_Click(object sender, EventArgs e) + { + findBox.Text = ""; + this.FindOnChanged(null); + resetRabotnikTable(); + } + + } } diff --git a/MainForms/RabForm.resx b/MainForms/RabForm.resx new file mode 100644 index 0000000..9a1181c --- /dev/null +++ b/MainForms/RabForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 364, 17 + + + 472, 17 + + \ No newline at end of file diff --git a/MainForms/SettingsForm.Designer.cs b/MainForms/SettingsForm.Designer.cs new file mode 100644 index 0000000..f7b8724 --- /dev/null +++ b/MainForms/SettingsForm.Designer.cs @@ -0,0 +1,378 @@ + +namespace Diplom_O +{ + partial class SettingsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); + this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.stajMI = new System.Windows.Forms.ToolStripMenuItem(); + this.learnMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.group = new System.Windows.Forms.GroupBox(); + this.userGridView = new System.Windows.Forms.DataGridView(); + this.delUserButton = new System.Windows.Forms.Button(); + this.addUserButton = new System.Windows.Forms.Button(); + this.changeUserButton = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.accessGridView = new System.Windows.Forms.DataGridView(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.typeStajGridView = new System.Windows.Forms.DataGridView(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.menuStrip.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.group.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.userGridView)).BeginInit(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.accessGridView)).BeginInit(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.typeStajGridView)).BeginInit(); + this.SuspendLayout(); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shtatMI, + this.chelRodMI, + this.rabitnikiMI, + this.stajMI, + this.learnMI, + this.otpBolMI, + this.детиToolStripMenuItem, + this.настройкиToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(1079, 24); + this.menuStrip.TabIndex = 30; + this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); + // + // shtatMI + // + this.shtatMI.Name = "shtatMI"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; + // + // rabitnikiMI + // + this.rabitnikiMI.Name = "rabitnikiMI"; + this.rabitnikiMI.Size = new System.Drawing.Size(85, 20); + this.rabitnikiMI.Text = "Сотрудники"; + // + // stajMI + // + this.stajMI.Name = "stajMI"; + this.stajMI.Size = new System.Drawing.Size(47, 20); + this.stajMI.Text = "Стаж"; + // + // learnMI + // + this.learnMI.Name = "learnMI"; + this.learnMI.Size = new System.Drawing.Size(92, 20); + this.learnMI.Text = "Образование"; + // + // otpBolMI + // + this.otpBolMI.Name = "otpBolMI"; + this.otpBolMI.Size = new System.Drawing.Size(100, 20); + this.otpBolMI.Text = "Отпуск/Больн."; + // + // детиToolStripMenuItem + // + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // настройкиToolStripMenuItem + // + this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem"; + this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20); + this.настройкиToolStripMenuItem.Text = "Настройки"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(137, 17); + this.errorLabel.Text = "Отображение ошибки"; + this.errorLabel.Visible = false; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 421); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(1079, 22); + this.statusStrip1.TabIndex = 37; + this.statusStrip1.Text = "statusStrip1"; + // + // group + // + this.group.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.group.Controls.Add(this.userGridView); + this.group.Controls.Add(this.delUserButton); + this.group.Controls.Add(this.addUserButton); + this.group.Controls.Add(this.changeUserButton); + this.group.Location = new System.Drawing.Point(267, 27); + this.group.Name = "group"; + this.group.Size = new System.Drawing.Size(249, 391); + this.group.TabIndex = 39; + this.group.TabStop = false; + this.group.Text = "Пользователи"; + // + // userGridView + // + this.userGridView.AllowUserToAddRows = false; + this.userGridView.AllowUserToDeleteRows = false; + this.userGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.userGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.userGridView.Location = new System.Drawing.Point(6, 50); + this.userGridView.MultiSelect = false; + this.userGridView.Name = "userGridView"; + this.userGridView.ReadOnly = true; + this.userGridView.RowHeadersVisible = false; + this.userGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.userGridView.Size = new System.Drawing.Size(237, 335); + this.userGridView.TabIndex = 37; + this.userGridView.SelectionChanged += new System.EventHandler(this.userGridView_SelectionChanged); + // + // delUserButton + // + this.delUserButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.delUserButton.Location = new System.Drawing.Point(168, 21); + this.delUserButton.Name = "delUserButton"; + this.delUserButton.Size = new System.Drawing.Size(75, 23); + this.delUserButton.TabIndex = 45; + this.delUserButton.Text = "Удалить"; + this.delUserButton.UseVisualStyleBackColor = true; + this.delUserButton.Click += new System.EventHandler(this.delUserButton_Click); + // + // addUserButton + // + this.addUserButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addUserButton.Location = new System.Drawing.Point(6, 21); + this.addUserButton.Name = "addUserButton"; + this.addUserButton.Size = new System.Drawing.Size(75, 23); + this.addUserButton.TabIndex = 43; + this.addUserButton.Text = "Добавить"; + this.addUserButton.UseVisualStyleBackColor = true; + this.addUserButton.Click += new System.EventHandler(this.addUserButton_Click); + // + // changeUserButton + // + this.changeUserButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.changeUserButton.Location = new System.Drawing.Point(87, 21); + this.changeUserButton.Name = "changeUserButton"; + this.changeUserButton.Size = new System.Drawing.Size(75, 23); + this.changeUserButton.TabIndex = 44; + this.changeUserButton.Text = "Изменить"; + this.changeUserButton.UseVisualStyleBackColor = true; + this.changeUserButton.Click += new System.EventHandler(this.changeUserButton_Click); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.accessGridView); + this.groupBox1.Location = new System.Drawing.Point(522, 26); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(545, 391); + this.groupBox1.TabIndex = 40; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Доступ"; + // + // accessGridView + // + this.accessGridView.AllowUserToAddRows = false; + this.accessGridView.AllowUserToDeleteRows = false; + this.accessGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.accessGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.accessGridView.Location = new System.Drawing.Point(6, 22); + this.accessGridView.MultiSelect = false; + this.accessGridView.Name = "accessGridView"; + this.accessGridView.ReadOnly = true; + this.accessGridView.RowHeadersVisible = false; + this.accessGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.accessGridView.Size = new System.Drawing.Size(533, 363); + this.accessGridView.TabIndex = 37; + this.accessGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.accessGridView_CellClick); + // + // groupBox2 + // + this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.groupBox2.Controls.Add(this.textBox1); + this.groupBox2.Controls.Add(this.typeStajGridView); + this.groupBox2.Controls.Add(this.button1); + this.groupBox2.Controls.Add(this.button2); + this.groupBox2.Controls.Add(this.button3); + this.groupBox2.Location = new System.Drawing.Point(12, 27); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(249, 391); + this.groupBox2.TabIndex = 41; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Типы стажа"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(6, 48); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(237, 20); + this.textBox1.TabIndex = 46; + // + // typeStajGridView + // + this.typeStajGridView.AllowUserToAddRows = false; + this.typeStajGridView.AllowUserToDeleteRows = false; + this.typeStajGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.typeStajGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.typeStajGridView.Location = new System.Drawing.Point(6, 74); + this.typeStajGridView.MultiSelect = false; + this.typeStajGridView.Name = "typeStajGridView"; + this.typeStajGridView.ReadOnly = true; + this.typeStajGridView.RowHeadersVisible = false; + this.typeStajGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.typeStajGridView.Size = new System.Drawing.Size(237, 311); + this.typeStajGridView.TabIndex = 37; + this.typeStajGridView.SelectionChanged += new System.EventHandler(this.typeStajGridView_SelectionChanged); + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(168, 19); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 45; + this.button1.Text = "Удалить"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.delTypeButton_Click); + // + // button2 + // + this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button2.Location = new System.Drawing.Point(6, 19); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 23); + this.button2.TabIndex = 43; + this.button2.Text = "Добавить"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.addTypeStajButton_Click); + // + // button3 + // + this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button3.Location = new System.Drawing.Point(87, 19); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(75, 23); + this.button3.TabIndex = 44; + this.button3.Text = "Изменить"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.changeTypeStajButton_Click); + // + // SettingsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1079, 443); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.group); + this.Controls.Add(this.menuStrip); + this.Controls.Add(this.statusStrip1); + this.Name = "SettingsForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Отпуск/Больничный"; + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.group.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.userGridView)).EndInit(); + this.groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.accessGridView)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.typeStajGridView)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem shtatMI; + private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; + private System.Windows.Forms.ToolStripMenuItem otpBolMI; + private System.Windows.Forms.ToolStripMenuItem chelRodMI; + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripMenuItem stajMI; + private System.Windows.Forms.GroupBox group; + private System.Windows.Forms.DataGridView userGridView; + private System.Windows.Forms.Button addUserButton; + private System.Windows.Forms.Button changeUserButton; + private System.Windows.Forms.Button delUserButton; + private System.Windows.Forms.ToolStripMenuItem learnMI; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.DataGridView accessGridView; + private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.DataGridView typeStajGridView; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.TextBox textBox1; + } +} \ No newline at end of file diff --git a/MainForms/SettingsForm.cs b/MainForms/SettingsForm.cs new file mode 100644 index 0000000..5316134 --- /dev/null +++ b/MainForms/SettingsForm.cs @@ -0,0 +1,364 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O +{ + public partial class SettingsForm : Form + { + private readonly ColumnConf[] tableUserColumns = { + new ColumnConf(name: "Логин", size: 140) + }; + private readonly ColumnConf[] tableAccessColumns = { + new ColumnConf(name: "Форма", size: 140), + new ColumnConf(name: "Просм.", size: 80), + new ColumnConf(name: "Удал.", size: 80), + new ColumnConf(name: "Изм.", size: 80), + new ColumnConf(name: "Доб.", size: 80) + }; + private readonly ColumnConf[] tableTypeStajColumns = { + new ColumnConf(name: "Название", size: 140) + }; + + private void resetTypeStajTable() + { + try + { + var res = new List(); + var subres = FuncDB.TypeStajListString(); + foreach (var a in subres) + res.Add(new string[] { a }); + this.ResetTable( + typeStajGridView, + tableTypeStajColumns, + res.ToArray() + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private TypeStaj selectedTypeStajTable() + { + try + { + if (typeStajGridView.SelectedRows.Count != 1) + return null; + return FuncDB.TypeStajGetByName((string)typeStajGridView.SelectedRows[0].Cells[0].Value); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; + } + } + private void typeStajGridView_SelectionChanged(object sender, EventArgs e) + { + var type_staj = selectedTypeStajTable(); + textBox1.Text = type_staj == null ? "" : type_staj.Name; + } + + private void resetUserTable() + { + try + { + this.ResetTable( + userGridView, + tableUserColumns, + FuncDB.UserListTable(true) + ); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + private User selectedUserTable() + { + try + { + if (userGridView.SelectedRows.Count != 1) + return null; + return FuncDB.UserGetByLogin((string)userGridView.SelectedRows[0].Cells[0].Value); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; + } + } + private void userGridView_SelectionChanged(object sender, EventArgs e) + { + resetAccessTable(); + } + + private void initAccessTable() + { + try + { + accessGridView.Rows.Clear(); + accessGridView.Columns.Clear(); + var c = accessGridView.Columns; + for (var i = 0; i < tableAccessColumns.Length; i++) + { + if (i != 0) + c.Add(new DataGridViewCheckBoxColumn() + { + FalseValue = false, + TrueValue = true, + HeaderText = tableAccessColumns[i].name + }); + else + c.Add(tableAccessColumns[i].name, tableAccessColumns[i].name); + c[i].Width = tableAccessColumns[i].size; + if (tableAccessColumns[i].warp) + c[i].DefaultCellStyle.WrapMode = DataGridViewTriState.True; + } + foreach (var formName in FormArray.formName) + { + accessGridView.Rows.Add(); + var row = accessGridView.Rows[accessGridView.Rows.Count - 1]; + row.Cells[0].Value = formName; + for (var i = 0; i < FormArray.formAccess.Length; i++) + ((DataGridViewCheckBoxCell)row.Cells[i + 1]).Value = false; + } + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void accessGridView_CellClick(object sender, DataGridViewCellEventArgs e) + { + try + { + if (accessGridView.SelectedCells.Count != 1) + return; + var cell = accessGridView.SelectedCells[0]; + var accessId = cell.ColumnIndex; + if (accessId == 0) + return; + else + accessId--; + var formId = cell.RowIndex; + ((DataGridViewCheckBoxCell)accessGridView.SelectedCells[0]).Value = + !(bool)((DataGridViewCheckBoxCell)accessGridView.SelectedCells[0]).Value; + var user = selectedUserTable(); + if (user == null) + throw new Exception("Пользователь не выбран."); + + var access = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, formId, accessId); + if ( + (access == null && !(bool)cell.Value) || + (access != null && (bool)cell.Value) + ) + return; + if ((bool)cell.Value) + { + if (FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, formId, 0) == null) + FuncDB.AccessAdd(new Access() + { + UserId = user.Id, + FormId = formId, + FormatAccess = 0 + }); + FuncDB.AccessAdd(new Access() + { + UserId = user.Id, + FormId = formId, + FormatAccess = accessId + }); + } + else + { + if (formId == 7 && FuncDB.AccessToSettingsFullCountWithoutUserId(user) == 0) + throw new Exception("Должен хотя бы 1 польз. иметь полн. дост. к настр."); + if (formId == user.Default && accessId == 0) + throw new Exception("Нельзя снять разрешение для окна по умолчанию."); + if (accessId == 0) + { + var list = FuncDB.AccessGetByUserIdFormId(user.Id, formId); + foreach (var l in list) + FuncDB.AccessDelete(l); + } + else + { + FuncDB.AccessDelete(access); + } + } + resetAccessTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + resetAccessTable(); + } + + } + + private void resetAccessTable() + { + try + { + var user = selectedUserTable(); + var res = new bool[FormArray.formName.Length, FormArray.formAccess.Length]; + if (user != null) + res = FuncDB.AccessListTable(user.Id); + for (var i = 0; i < FormArray.formName.Length; i++) + for (var j = 0; j < FormArray.formAccess.Length; j++) + ((DataGridViewCheckBoxCell)accessGridView.Rows[i].Cells[j + 1]).Value = res[i, j]; + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + + public SettingsForm() + { + InitializeComponent(); + this.correctUpperMenu(menuStrip, 7); + initAccessTable(); + resetTypeStajTable(); + resetUserTable(); + + addUserButton.Enabled = + changeUserButton.Enabled = + delUserButton.Enabled = + accessGridView.Enabled = + button2.Enabled = + button1.Enabled = + button3.Enabled = + false; + var user = this.GetUser(); + if (user == null) + return; + accessGridView.Enabled = + FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 2) != null || + FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 3) != null; + + delUserButton.Enabled = + button1.Enabled = + FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 1) != null; + changeUserButton.Enabled = + button3.Enabled = + FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 2) != null; + addUserButton.Enabled = + button2.Enabled = + FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 3) != null; + } + + private void addTypeStajButton_Click(object sender, EventArgs e) + { + try + { + var type = new TypeStaj() + { + Name = textBox1.Text + }; + FuncDB.TypeStajAdd(type); + resetTypeStajTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void changeTypeStajButton_Click(object sender, EventArgs e) + { + try + { + var type = selectedTypeStajTable(); + if (type == null) + throw new Exception("Не вбран тип стажа."); + type.Name = textBox1.Text; + FuncDB.TypeStajChange(type); + resetTypeStajTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void delTypeButton_Click(object sender, EventArgs e) + { + try + { + var type = selectedTypeStajTable(); + if (type == null) + throw new Exception("Не вбран тип стажа."); + FuncDB.TypeStajDelete(type); + resetTypeStajTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + + private void addUserButton_Click(object sender, EventArgs e) + { + try + { + var form = new SupportForms.LoginForm(); + form.ShowDialog(); + if (!form.isCanceled) + resetUserTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void changeUserButton_Click(object sender, EventArgs e) + { + try + { + if (selectedUserTable() == null) + throw new Exception("Не выбран пользователь."); + var form = new SupportForms.LoginForm(selectedUserTable()); + form.ShowDialog(); + if (!form.isCanceled) + resetUserTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void delUserButton_Click(object sender, EventArgs e) + { + try + { + var user = selectedUserTable(); + if (user == null) + throw new Exception("Не выбран пользователь."); + if (FuncDB.AccessToSettingsFullCountWithoutUserId(user) == 0) + throw new Exception("Должен хотя бы 1 польз. иметь полн. дост. к настр."); + FuncDB.UserDelete(selectedUserTable()); + resetUserTable(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } + + + } +} diff --git a/MainForms/SettingsForm.resx b/MainForms/SettingsForm.resx new file mode 100644 index 0000000..9a1181c --- /dev/null +++ b/MainForms/SettingsForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 364, 17 + + + 472, 17 + + \ No newline at end of file diff --git a/MainForms/ShtatForm.Designer.cs b/MainForms/ShtatForm.Designer.cs index 6365f19..fb661dc 100644 --- a/MainForms/ShtatForm.Designer.cs +++ b/MainForms/ShtatForm.Designer.cs @@ -29,75 +29,38 @@ namespace Diplom_O /// private void InitializeComponent() { - this.menuStrip = new System.Windows.Forms.MenuStrip(); - this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); - this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); - this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); - this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); this.findBox = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.dropFindButton = new System.Windows.Forms.Button(); this.freeShtatCheckBox = new System.Windows.Forms.CheckBox(); - this.addButton = new System.Windows.Forms.Button(); - this.changeButton = new System.Windows.Forms.Button(); - this.delButton = new System.Windows.Forms.Button(); this.selectButton = new System.Windows.Forms.Button(); this.shtatGridView = new System.Windows.Forms.DataGridView(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); - this.menuStrip.SuspendLayout(); + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); + this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.stajMI = new System.Windows.Forms.ToolStripMenuItem(); + this.learnMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.delButton = new System.Windows.Forms.Button(); + this.changeButton = new System.Windows.Forms.Button(); + this.addButton = new System.Windows.Forms.Button(); + this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.shtatGridView)).BeginInit(); this.statusStrip1.SuspendLayout(); + this.menuStrip.SuspendLayout(); this.SuspendLayout(); // - // menuStrip - // - this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.shtatMI, - this.rabitnikiMI, - this.otpBolMI, - this.chelRodMI}); - this.menuStrip.Location = new System.Drawing.Point(0, 0); - this.menuStrip.Name = "menuStrip"; - this.menuStrip.Size = new System.Drawing.Size(342, 24); - this.menuStrip.TabIndex = 8; - this.menuStrip.Text = "menuStrip1"; - // - // shtatMI - // - this.shtatMI.Name = "shtatMI"; - this.shtatMI.Size = new System.Drawing.Size(46, 20); - this.shtatMI.Text = "Штат"; - this.shtatMI.Click += new System.EventHandler(this.MI_Click); - // - // rabitnikiMI - // - this.rabitnikiMI.Name = "rabitnikiMI"; - this.rabitnikiMI.Size = new System.Drawing.Size(78, 20); - this.rabitnikiMI.Text = "Работники"; - this.rabitnikiMI.Click += new System.EventHandler(this.MI_Click); - // - // otpBolMI - // - this.otpBolMI.Name = "otpBolMI"; - this.otpBolMI.Size = new System.Drawing.Size(100, 20); - this.otpBolMI.Text = "Отпуск/Больн."; - this.otpBolMI.Click += new System.EventHandler(this.MI_Click); - // - // chelRodMI - // - this.chelRodMI.Name = "chelRodMI"; - this.chelRodMI.Size = new System.Drawing.Size(95, 20); - this.chelRodMI.Text = "Люди/Родств."; - this.chelRodMI.Click += new System.EventHandler(this.MI_Click); - // // findBox // this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.findBox.Location = new System.Drawing.Point(57, 490); + this.findBox.Location = new System.Drawing.Point(57, 613); this.findBox.Name = "findBox"; - this.findBox.Size = new System.Drawing.Size(192, 20); + this.findBox.Size = new System.Drawing.Size(505, 20); this.findBox.TabIndex = 5; this.findBox.TextChanged += new System.EventHandler(this.findBox_TextChanged); // @@ -105,7 +68,7 @@ namespace Diplom_O // this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 493); + this.label1.Location = new System.Drawing.Point(12, 616); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(39, 13); this.label1.TabIndex = 3; @@ -114,66 +77,39 @@ namespace Diplom_O // dropFindButton // this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.dropFindButton.Location = new System.Drawing.Point(255, 488); + this.dropFindButton.Location = new System.Drawing.Point(568, 611); this.dropFindButton.Name = "dropFindButton"; this.dropFindButton.Size = new System.Drawing.Size(75, 23); this.dropFindButton.TabIndex = 6; this.dropFindButton.Text = "Сбросить"; this.dropFindButton.UseVisualStyleBackColor = true; this.dropFindButton.TextChanged += new System.EventHandler(this.dropFindButton_Click); + this.dropFindButton.Click += new System.EventHandler(this.dropFindButton_Click); // // freeShtatCheckBox // this.freeShtatCheckBox.AutoSize = true; this.freeShtatCheckBox.Checked = true; this.freeShtatCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.freeShtatCheckBox.Location = new System.Drawing.Point(12, 56); + this.freeShtatCheckBox.Location = new System.Drawing.Point(12, 31); this.freeShtatCheckBox.Name = "freeShtatCheckBox"; - this.freeShtatCheckBox.Size = new System.Drawing.Size(218, 17); + this.freeShtatCheckBox.Size = new System.Drawing.Size(177, 17); this.freeShtatCheckBox.TabIndex = 4; - this.freeShtatCheckBox.Text = "Поrазать/скрыть занятые должности"; + this.freeShtatCheckBox.Text = "Только актуальные вакансии"; this.freeShtatCheckBox.UseVisualStyleBackColor = true; this.freeShtatCheckBox.CheckedChanged += new System.EventHandler(this.checkBox_CheckedChanged); // - // addButton - // - this.addButton.Location = new System.Drawing.Point(93, 27); - this.addButton.Name = "addButton"; - this.addButton.Size = new System.Drawing.Size(75, 23); - this.addButton.TabIndex = 1; - this.addButton.Text = "Добавить"; - this.addButton.UseVisualStyleBackColor = true; - this.addButton.Click += new System.EventHandler(this.addButton_Click); - // - // changeButton - // - this.changeButton.Location = new System.Drawing.Point(174, 27); - this.changeButton.Name = "changeButton"; - this.changeButton.Size = new System.Drawing.Size(75, 23); - this.changeButton.TabIndex = 2; - this.changeButton.Text = "Изменить"; - this.changeButton.UseVisualStyleBackColor = true; - this.changeButton.Click += new System.EventHandler(this.changeButton_Click); - // - // delButton - // - this.delButton.Location = new System.Drawing.Point(255, 27); - this.delButton.Name = "delButton"; - this.delButton.Size = new System.Drawing.Size(75, 23); - this.delButton.TabIndex = 3; - this.delButton.Text = "Удалить"; - this.delButton.UseVisualStyleBackColor = true; - this.delButton.Click += new System.EventHandler(this.delButton_Click); - // // selectButton // - this.selectButton.Location = new System.Drawing.Point(12, 27); + this.selectButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.selectButton.Location = new System.Drawing.Point(325, 27); this.selectButton.Name = "selectButton"; this.selectButton.Size = new System.Drawing.Size(75, 23); this.selectButton.TabIndex = 0; this.selectButton.Text = "Выбрать"; this.selectButton.UseVisualStyleBackColor = true; this.selectButton.Visible = false; + this.selectButton.Click += new System.EventHandler(this.selectButton_Click); // // shtatGridView // @@ -183,22 +119,22 @@ namespace Diplom_O | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.shtatGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.shtatGridView.Location = new System.Drawing.Point(12, 79); + this.shtatGridView.Location = new System.Drawing.Point(12, 56); this.shtatGridView.MultiSelect = false; this.shtatGridView.Name = "shtatGridView"; this.shtatGridView.ReadOnly = true; this.shtatGridView.RowHeadersVisible = false; this.shtatGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.shtatGridView.Size = new System.Drawing.Size(318, 403); + this.shtatGridView.Size = new System.Drawing.Size(631, 549); this.shtatGridView.TabIndex = 7; // // statusStrip1 // this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.errorLabel}); - this.statusStrip1.Location = new System.Drawing.Point(0, 514); + this.statusStrip1.Location = new System.Drawing.Point(0, 637); this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(342, 22); + this.statusStrip1.Size = new System.Drawing.Size(655, 22); this.statusStrip1.TabIndex = 15; this.statusStrip1.Text = "statusStrip1"; // @@ -211,54 +147,155 @@ namespace Diplom_O this.errorLabel.Text = "Отображение ошибки"; this.errorLabel.Visible = false; // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shtatMI, + this.chelRodMI, + this.rabitnikiMI, + this.stajMI, + this.learnMI, + this.otpBolMI, + this.детиToolStripMenuItem, + this.настройкиToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(655, 24); + this.menuStrip.TabIndex = 16; + this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); + // + // shtatMI + // + this.shtatMI.Name = "shtatMI"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; + // + // rabitnikiMI + // + this.rabitnikiMI.Name = "rabitnikiMI"; + this.rabitnikiMI.Size = new System.Drawing.Size(85, 20); + this.rabitnikiMI.Text = "Сотрудники"; + // + // stajMI + // + this.stajMI.Name = "stajMI"; + this.stajMI.Size = new System.Drawing.Size(47, 20); + this.stajMI.Text = "Стаж"; + // + // learnMI + // + this.learnMI.Name = "learnMI"; + this.learnMI.Size = new System.Drawing.Size(92, 20); + this.learnMI.Text = "Образование"; + // + // otpBolMI + // + this.otpBolMI.Name = "otpBolMI"; + this.otpBolMI.Size = new System.Drawing.Size(100, 20); + this.otpBolMI.Text = "Отпуск/Больн."; + // + // детиToolStripMenuItem + // + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // delButton + // + this.delButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.delButton.Location = new System.Drawing.Point(568, 27); + this.delButton.Name = "delButton"; + this.delButton.Size = new System.Drawing.Size(75, 23); + this.delButton.TabIndex = 17; + this.delButton.Text = "Удалить"; + this.delButton.UseVisualStyleBackColor = true; + this.delButton.Click += new System.EventHandler(this.delButton_Click); + // + // changeButton + // + this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.changeButton.Location = new System.Drawing.Point(487, 27); + this.changeButton.Name = "changeButton"; + this.changeButton.Size = new System.Drawing.Size(75, 23); + this.changeButton.TabIndex = 18; + this.changeButton.Text = "Изменить"; + this.changeButton.UseVisualStyleBackColor = true; + this.changeButton.Click += new System.EventHandler(this.changeButton_Click); + // + // addButton + // + this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addButton.Location = new System.Drawing.Point(406, 27); + this.addButton.Name = "addButton"; + this.addButton.Size = new System.Drawing.Size(75, 23); + this.addButton.TabIndex = 19; + this.addButton.Text = "Добавить"; + this.addButton.UseVisualStyleBackColor = true; + this.addButton.Click += new System.EventHandler(this.addButton_Click); + // + // настройкиToolStripMenuItem + // + this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem"; + this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20); + this.настройкиToolStripMenuItem.Text = "Настройки"; + // // ShtatForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(342, 536); + this.ClientSize = new System.Drawing.Size(655, 659); + this.Controls.Add(this.addButton); + this.Controls.Add(this.changeButton); + this.Controls.Add(this.delButton); + this.Controls.Add(this.menuStrip); this.Controls.Add(this.statusStrip1); this.Controls.Add(this.shtatGridView); this.Controls.Add(this.selectButton); - this.Controls.Add(this.delButton); - this.Controls.Add(this.changeButton); - this.Controls.Add(this.addButton); this.Controls.Add(this.freeShtatCheckBox); this.Controls.Add(this.dropFindButton); this.Controls.Add(this.label1); this.Controls.Add(this.findBox); - this.Controls.Add(this.menuStrip); - this.MainMenuStrip = this.menuStrip; this.Name = "ShtatForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Штат"; - this.menuStrip.ResumeLayout(false); - this.menuStrip.PerformLayout(); + this.Text = "Вакансии"; ((System.ComponentModel.ISupportInitialize)(this.shtatGridView)).EndInit(); this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion - - private System.Windows.Forms.MenuStrip menuStrip; - private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; private System.Windows.Forms.TextBox findBox; private System.Windows.Forms.Label label1; private System.Windows.Forms.Button dropFindButton; private System.Windows.Forms.CheckBox freeShtatCheckBox; - private System.Windows.Forms.Button addButton; - private System.Windows.Forms.Button changeButton; - private System.Windows.Forms.Button delButton; private System.Windows.Forms.Button selectButton; private System.Windows.Forms.DataGridView shtatGridView; private System.Windows.Forms.StatusStrip statusStrip1; private System.Windows.Forms.ToolStripStatusLabel errorLabel; - private System.Windows.Forms.ToolStripMenuItem shtatMI; - private System.Windows.Forms.ToolStripMenuItem otpBolMI; - private System.Windows.Forms.ToolStripMenuItem chelRodMI; - } + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem shtatMI; + private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; + private System.Windows.Forms.ToolStripMenuItem otpBolMI; + private System.Windows.Forms.ToolStripMenuItem chelRodMI; + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.Button delButton; + private System.Windows.Forms.Button changeButton; + private System.Windows.Forms.Button addButton; + private System.Windows.Forms.ToolStripMenuItem stajMI; + private System.Windows.Forms.ToolStripMenuItem learnMI; + private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem; + } } diff --git a/MainForms/ShtatForm.cs b/MainForms/ShtatForm.cs index 3d54d3e..5a3eb2c 100644 --- a/MainForms/ShtatForm.cs +++ b/MainForms/ShtatForm.cs @@ -13,39 +13,22 @@ namespace Diplom_O { public partial class ShtatForm : Form { - private Task errDrop; - private void ShowError(string msg = null) + private readonly ColumnConf[] tableColumns = { - errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg; - errorLabel.Visible = true; - errDrop = new Task(() => - { - var fd = errDrop.Id; - Task.Delay(5000).Wait(); - if (errDrop.Id == fd) - if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; })); - else errorLabel.Visible = false; - }); - errDrop.Start(); - } + new ColumnConf("№"), + new ColumnConf("Должность", 140), + new ColumnConf(name: "Кол-во"), + new ColumnConf(name: "Своб.") + }; - private Task filterDrop; private void findBox_TextChanged(object sender, EventArgs e) { - filterDrop = new Task(() => - { - var fd = filterDrop.Id; - Task.Delay(1000).Wait(); - if (filterDrop.Id == fd) - if (InvokeRequired) Invoke((Action)(() => { resetShatTable(); })); - else resetShatTable(); - }); - filterDrop.Start(); + this.FindOnChanged(resetShatTable); } private void dropFindButton_Click(object sender, EventArgs e) { findBox.Text = ""; - filterDrop = new Task(() => { return; }); + this.FindOnChanged(null); resetShatTable(); } @@ -53,64 +36,68 @@ namespace Diplom_O { try { - { - shtatGridView.Rows.Clear(); - shtatGridView.Columns.Clear(); - var c = shtatGridView.Columns; - c.Add("Id", "№"); - c.Add("Dolj", "Должность"); - c.Add("Kolvo", "Кол-во"); - c.Add("Free", "Своб."); - c[0].Width = 40; - c[1].Width = 120; - c[2].Width = 40; - c[3].Width = 40; - } - { - var arr = FuncDB.ListShtat(findBox.Text); - var r = shtatGridView.Rows; - foreach (var shtat in arr) - if (shtat.ost != 0) - r.Add(new object[] { - shtat.shtat.Id, - shtat.shtat.Doljnost, - shtat.shtat.Size, - shtat.ost - }); - } - if (shtatGridView.Rows.Count > 0) - shtatGridView.Rows[0].Selected = true; + var tmp = FuncDB.ShtatListTableMain(findBox.Text, freeShtatCheckBox.Checked); + var res = new List(); + foreach (var i in tmp) + if (int.TryParse(i[0], out int t) && t != 0) + res.Add(i); + this.ResetTable( + shtatGridView, + tableColumns, + freeShtatCheckBox.Checked ? + tmp : + res.ToArray() + ); + } + catch ( Exception e ) + { + this.ShowError( errorLabel, e.Message ); } - catch (Exception e) { ShowError(e.Message); } } private Shtat selectedShtat() { try { - if (shtatGridView.SelectedRows.Count != 1) throw new Exception("Должность не выбрана."); - var shtat = FuncDB.GetShtat((int)shtatGridView.SelectedRows[0].Cells[0].Value); - return shtat; + if ( shtatGridView.SelectedRows.Count != 1 ) + throw new Exception("Должность не выбрана."); + if (int.TryParse((string)shtatGridView.SelectedRows[0].Cells[0].Value, out int value)) + return FuncDB.ShtatGetById(value); + else + throw new Exception("Ошибка в таблице."); + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + return null; } - catch (Exception e) { ShowError(e.Message); return null; } } - + + public bool isCanceled = true; public Shtat formResult = null; public ShtatForm(bool select = false) { try { InitializeComponent(); - Init(select); + selectButton.Visible = select; + shtatMI.Enabled = !select; + this.correctUpperMenu(menuStrip, 0); resetShatTable(); + + addButton.Enabled = + changeButton.Enabled = + delButton.Enabled = false; + var user = this.GetUser(); + if (user == null) + return; + delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 0, 1) != null; + changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 0, 2) != null; + addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 0, 3) != null; + } catch { this.Close(); } } - public void Init(bool s) - { - if (s) selectButton.Visible = true; - shtatMI.Enabled = false; - } - + private void addButton_Click(object sender, EventArgs e) { var res = new SupportForms.WorkShtatForm(); @@ -121,7 +108,8 @@ namespace Diplom_O private void changeButton_Click(object sender, EventArgs e) { var shtat = selectedShtat(); - if (shtat == null) { ShowError("Должность не выбрана."); return; } + if (shtat == null) + return; var res = new SupportForms.WorkShtatForm(shtat); res.ShowDialog(); if (!res.isCanceled) @@ -130,40 +118,37 @@ namespace Diplom_O private void delButton_Click(object sender, EventArgs e) { var shtat = selectedShtat(); - if (shtat == null) { ShowError("Должность не выбрана."); return; } + if (shtat == null) + return; try { - FuncDB.DelShtat(shtat); + FuncDB.ShtatDelete(shtat); resetShatTable(); } - catch (Exception ex) { ShowError(ex.Message); } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } } - public void MI_Click(object sender, EventArgs e) + private void selectButton_Click(object sender, EventArgs e) { - object form = null; - var idxMenu = -1; - try { idxMenu = menuStrip.Items.IndexOf((ToolStripMenuItem)sender); } - catch { }; - switch (idxMenu) - { - case 0: form = new ShtatForm(); break; - case 1: form = new RabForm(); break; - case 2: form = new OtpForm(); break; - case 3: form = new ChelForm(); break; - } - if (form != null) - { - this.Hide(); - ((Form)form).Closed += (s, args) => this.Close(); - ((Form)form).Show(); - return; - } - ShowError("Ошибка перехода на новую форму."); + formResult = selectedShtat(); + isCanceled = false; + this.Close(); } private void checkBox_CheckedChanged(object sender, EventArgs e) { resetShatTable(); } - } + + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } + + + } } diff --git a/MainForms/ShtatForm.resx b/MainForms/ShtatForm.resx index 92a5a53..f30cde8 100644 --- a/MainForms/ShtatForm.resx +++ b/MainForms/ShtatForm.resx @@ -117,10 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - 132, 17 + + 24, 19 + \ No newline at end of file diff --git a/MainForms/StajForm.Designer.cs b/MainForms/StajForm.Designer.cs new file mode 100644 index 0000000..1fee6fb --- /dev/null +++ b/MainForms/StajForm.Designer.cs @@ -0,0 +1,397 @@ + +namespace Diplom_O +{ + partial class StajForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.shtatMI = new System.Windows.Forms.ToolStripMenuItem(); + this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem(); + this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem(); + this.stajMI = new System.Windows.Forms.ToolStripMenuItem(); + this.learnMI = new System.Windows.Forms.ToolStripMenuItem(); + this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem(); + this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.stajGridView = new System.Windows.Forms.DataGridView(); + this.linkRabLabel = new System.Windows.Forms.LinkLabel(); + this.label2 = new System.Windows.Forms.Label(); + this.addStajButton = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.dayTB = new System.Windows.Forms.TextBox(); + this.monthTB = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.yearTB = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.addRadioButton = new System.Windows.Forms.RadioButton(); + this.delRadioButton = new System.Windows.Forms.RadioButton(); + this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); + this.button1 = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.stajGridView)).BeginInit(); + this.SuspendLayout(); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shtatMI, + this.chelRodMI, + this.rabitnikiMI, + this.stajMI, + this.learnMI, + this.otpBolMI, + this.детиToolStripMenuItem, + this.настройкиToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(705, 24); + this.menuStrip.TabIndex = 30; + this.menuStrip.Text = "menuStrip1"; + this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked); + // + // shtatMI + // + this.shtatMI.Name = "shtatMI"; + this.shtatMI.Size = new System.Drawing.Size(139, 20); + this.shtatMI.Text = "Актуальные вакансии"; + // + // chelRodMI + // + this.chelRodMI.Name = "chelRodMI"; + this.chelRodMI.Size = new System.Drawing.Size(50, 20); + this.chelRodMI.Text = "Люди"; + // + // rabitnikiMI + // + this.rabitnikiMI.Name = "rabitnikiMI"; + this.rabitnikiMI.Size = new System.Drawing.Size(85, 20); + this.rabitnikiMI.Text = "Сотрудники"; + // + // stajMI + // + this.stajMI.Name = "stajMI"; + this.stajMI.Size = new System.Drawing.Size(47, 20); + this.stajMI.Text = "Стаж"; + // + // learnMI + // + this.learnMI.Name = "learnMI"; + this.learnMI.Size = new System.Drawing.Size(92, 20); + this.learnMI.Text = "Образование"; + // + // otpBolMI + // + this.otpBolMI.Name = "otpBolMI"; + this.otpBolMI.Size = new System.Drawing.Size(100, 20); + this.otpBolMI.Text = "Отпуск/Больн."; + // + // детиToolStripMenuItem + // + this.детиToolStripMenuItem.Name = "детиToolStripMenuItem"; + this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.детиToolStripMenuItem.Text = "Дети"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(137, 17); + this.errorLabel.Text = "Отображение ошибки"; + this.errorLabel.Visible = false; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 432); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(705, 22); + this.statusStrip1.TabIndex = 37; + this.statusStrip1.Text = "statusStrip1"; + // + // groupBox2 + // + this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.stajGridView); + this.groupBox2.Location = new System.Drawing.Point(13, 113); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(678, 316); + this.groupBox2.TabIndex = 40; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Стаж"; + // + // stajGridView + // + this.stajGridView.AllowUserToAddRows = false; + this.stajGridView.AllowUserToDeleteRows = false; + this.stajGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.stajGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.stajGridView.Location = new System.Drawing.Point(6, 19); + this.stajGridView.MultiSelect = false; + this.stajGridView.Name = "stajGridView"; + this.stajGridView.ReadOnly = true; + this.stajGridView.RowHeadersVisible = false; + this.stajGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.stajGridView.Size = new System.Drawing.Size(666, 291); + this.stajGridView.TabIndex = 37; + // + // linkRabLabel + // + this.linkRabLabel.AutoSize = true; + this.linkRabLabel.Location = new System.Drawing.Point(76, 32); + this.linkRabLabel.Name = "linkRabLabel"; + this.linkRabLabel.Size = new System.Drawing.Size(121, 13); + this.linkRabLabel.TabIndex = 41; + this.linkRabLabel.TabStop = true; + this.linkRabLabel.Text = "Выбрать сотрудника..."; + this.linkRabLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRabLabel_LinkClicked); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 32); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(69, 13); + this.label2.TabIndex = 42; + this.label2.Text = "Сотрудники:"; + // + // addStajButton + // + this.addStajButton.Location = new System.Drawing.Point(616, 53); + this.addStajButton.Name = "addStajButton"; + this.addStajButton.Size = new System.Drawing.Size(75, 51); + this.addStajButton.TabIndex = 47; + this.addStajButton.Text = "Установить"; + this.addStajButton.UseVisualStyleBackColor = true; + this.addStajButton.Click += new System.EventHandler(this.addStajButton_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(10, 60); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(63, 13); + this.label3.TabIndex = 48; + this.label3.Text = "Тип стажа:"; + // + // comboBox1 + // + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(79, 57); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(530, 21); + this.comboBox1.TabIndex = 49; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.typeStajChanged); + this.comboBox1.SelectedValueChanged += new System.EventHandler(this.typeStajChanged); + // + // dayTB + // + this.dayTB.Location = new System.Drawing.Point(308, 86); + this.dayTB.Name = "dayTB"; + this.dayTB.Size = new System.Drawing.Size(75, 20); + this.dayTB.TabIndex = 50; + // + // monthTB + // + this.monthTB.Location = new System.Drawing.Point(187, 86); + this.monthTB.Name = "monthTB"; + this.monthTB.Size = new System.Drawing.Size(75, 20); + this.monthTB.TabIndex = 51; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(268, 89); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(37, 13); + this.label4.TabIndex = 52; + this.label4.Text = "Дней:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(126, 89); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(55, 13); + this.label5.TabIndex = 53; + this.label5.Text = "Месяцев:"; + // + // yearTB + // + this.yearTB.Location = new System.Drawing.Point(45, 86); + this.yearTB.Name = "yearTB"; + this.yearTB.Size = new System.Drawing.Size(75, 20); + this.yearTB.TabIndex = 54; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(10, 89); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(29, 13); + this.label6.TabIndex = 55; + this.label6.Text = "Лет:"; + // + // addRadioButton + // + this.addRadioButton.AutoSize = true; + this.addRadioButton.Location = new System.Drawing.Point(389, 87); + this.addRadioButton.Name = "addRadioButton"; + this.addRadioButton.Size = new System.Drawing.Size(80, 17); + this.addRadioButton.TabIndex = 56; + this.addRadioButton.TabStop = true; + this.addRadioButton.Text = "Прибавить"; + this.addRadioButton.UseVisualStyleBackColor = true; + // + // delRadioButton + // + this.delRadioButton.AutoSize = true; + this.delRadioButton.Location = new System.Drawing.Point(475, 87); + this.delRadioButton.Name = "delRadioButton"; + this.delRadioButton.Size = new System.Drawing.Size(68, 17); + this.delRadioButton.TabIndex = 57; + this.delRadioButton.TabStop = true; + this.delRadioButton.Text = "Вычесть"; + this.delRadioButton.UseVisualStyleBackColor = true; + // + // dateTimePicker1 + // + this.dateTimePicker1.Location = new System.Drawing.Point(458, 29); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.Size = new System.Drawing.Size(151, 20); + this.dateTimePicker1.TabIndex = 58; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(616, 28); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 59; + this.button1.Text = "Расчитать"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(367, 33); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(85, 13); + this.label1.TabIndex = 60; + this.label1.Text = "Расчет на дату:"; + // + // настройкиToolStripMenuItem + // + this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem"; + this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20); + this.настройкиToolStripMenuItem.Text = "Настройки"; + // + // StajForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(705, 454); + this.Controls.Add(this.label1); + this.Controls.Add(this.button1); + this.Controls.Add(this.dateTimePicker1); + this.Controls.Add(this.delRadioButton); + this.Controls.Add(this.addRadioButton); + this.Controls.Add(this.label6); + this.Controls.Add(this.yearTB); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.monthTB); + this.Controls.Add(this.dayTB); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.addStajButton); + this.Controls.Add(this.label2); + this.Controls.Add(this.linkRabLabel); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.menuStrip); + this.Controls.Add(this.statusStrip1); + this.Name = "StajForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Стаж"; + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.stajGridView)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem shtatMI; + private System.Windows.Forms.ToolStripMenuItem rabitnikiMI; + private System.Windows.Forms.ToolStripMenuItem otpBolMI; + private System.Windows.Forms.ToolStripMenuItem chelRodMI; + private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripMenuItem stajMI; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.DataGridView stajGridView; + private System.Windows.Forms.LinkLabel linkRabLabel; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button addStajButton; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.TextBox dayTB; + private System.Windows.Forms.TextBox monthTB; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox yearTB; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.RadioButton addRadioButton; + private System.Windows.Forms.RadioButton delRadioButton; + private System.Windows.Forms.ToolStripMenuItem learnMI; + private System.Windows.Forms.DateTimePicker dateTimePicker1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem; + } +} \ No newline at end of file diff --git a/MainForms/StajForm.cs b/MainForms/StajForm.cs new file mode 100644 index 0000000..c52146a --- /dev/null +++ b/MainForms/StajForm.cs @@ -0,0 +1,298 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O +{ + public partial class StajForm : Form + { + private readonly ColumnConf[] tableStajColumns = { + new ColumnConf(name: "№"), + new ColumnConf(name: "Названиe", size: 140, warp: true), + new ColumnConf(name: "Лет", size: 60), + new ColumnConf(name: "Месяцев", size: 60), + new ColumnConf(name: "Дней", size: 60) + }; + + private Rabotnik rabotnik = null; + private void linkRabLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var form = new RabForm(true); + form.ShowDialog(); + if (form.isCanceled) + rabotnik = null; + else + rabotnik = form.formResult; + ResetLinkRabotnik(); + resetStajTable(); + } + private void ResetLinkRabotnik() + { + if (rabotnik == null) + { + linkRabLabel.Text = "Выбрать сотрудника..."; + return; + } + var chel = FuncDB.ChelGetById(rabotnik.ChelId); + if (chel == null) + { + linkRabLabel.Text = "Выбрать сотрудника..."; + return; + } + var res = chel.FName.ToString() + " " + + chel.SName[0].ToString() + "." + + ((!string.IsNullOrEmpty(chel.TName)) ? + chel.TName[0].ToString() + "." : ""); + linkRabLabel.Text = res; + } + private void resetStajTable() + { + (int year, int month, int day) Sum( + (int year, int month, int day) t1, + (int year, int month, int day) t2 + ) + { + var year = t1.year + t2.year; + var month = t1.month + t2.month; + var day = t1.day + t2.day; + + month += day / 30; + day %= 30; + year += month / 12; + month %= 12; + + return (year, month, day); + } + (int year, int month, int day) Sub( + (int year, int month, int day) t1, + (int year, int month, int day) t2 + ) + { + var year = t1.year - t2.year; + var month = t1.month - t2.month; + var day = t1.day - t2.day; + while (day < 0) + { + day += 30; + month--; + } + while (month < 0) + { + month += 12; + year--; + } + month += day / 30; + day %= 30; + year += month / 12; + month %= 12; + return (year, month, day); + } + + try + { + var res = new List(); + if (rabotnik == null) + { + this.ResetTable( + stajGridView, + tableStajColumns, + res.ToArray() + ); + return; + } + + var count = new Dictionary(); + var listRab = FuncDB.RabotnikHistoryByChelId(rabotnik.ChelId); + foreach (var rab in listRab) + { + var size = FuncDB.RabotnikGetTotalTime(rab, dateTimePicker1.Value); + var staj = FuncDB.RabotnikTypeStajList(rab.Id); + if (count.ContainsKey(-1)) + count[-1] = Sum(count[-1], size); + else + count[-1] = size; + foreach(var st in staj) + if (count.ContainsKey(st.TypeStajId)) + count[st.TypeStajId] = Sum(count[st.TypeStajId], size); + else + count[st.TypeStajId] = size; + } + + var listCorrStaj = FuncDB.CorrStajList(rabotnik.ChelId); + foreach (var corr in listCorrStaj) + { + var ts = FuncDB.TypeStajGetById(corr.TypeStajId); + if (ts != null && ts.Name.CompareTo("Общий") == 0) + corr.TypeStajId = -1; + var size = (corr.Year, corr.Month, corr.Day); + if (!count.ContainsKey(corr.TypeStajId)) + count[corr.TypeStajId] = (0, 0, 0); + if (corr.AddFlag) + count[corr.TypeStajId] = Sum(count[corr.TypeStajId], size); + else + count[corr.TypeStajId] = Sub(count[corr.TypeStajId], size); + } + + foreach (var r in count) + { + if (r.Value.year < 0 || r.Value.year + r.Value.month + r.Value.day == 0) + continue; + var sr = new List(); + sr.Add(r.Key.ToString()); + if (r.Key == -1) + sr.Add("Общий"); + else + sr.Add(FuncDB.TypeStajGetById(r.Key).Name); + sr.Add(r.Value.year.ToString()); + sr.Add(r.Value.month.ToString()); + sr.Add(r.Value.day.ToString()); + res.Add(sr.ToArray()); + } + + this.ResetTable( + stajGridView, + tableStajColumns, + res.ToArray() + ); + + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + + public StajForm() + { + InitializeComponent(); + this.correctUpperMenu(menuStrip, 3); + dateTimePicker1.Value = DateTime.Now; + ResetLinkRabotnik(); + resetTypeStajComboBox(); + + linkRabLabel.Enabled = false; + addStajButton.Enabled = false; + var user = this.GetUser(); + if (user == null) + return; + linkRabLabel.Enabled = + FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 3, 0) != null; + addStajButton.Enabled = + FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 3, 2) != null || + FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 3, 3) != null; + + } + + private void resetTypeStajComboBox() + { + try + { + var list = new List(); + list.Add("Общий"); + list.AddRange(FuncDB.TypeStajListString()); + comboBox1.Items.Clear(); + comboBox1.Items.AddRange(list.ToArray()); + comboBox1.SelectedIndex = -1; + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + } + } + + private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) + { + this.upperMenuClicked((MenuStrip)sender); + if (this.GetNextForm() != -1) + Close(); + } + + private void typeStajChanged(object sender, EventArgs e) + { + try + { + addRadioButton.Checked = ! (delRadioButton.Checked = false); + yearTB.Text = monthTB.Text = dayTB.Text = ""; + if (rabotnik == null) + return; + var staj = FuncDB.TypeStajGetByName(comboBox1.Text); + if (staj == null) + return; + var corrStaj = FuncDB.CorrStaj(rabotnik.ChelId, staj.Name); + if (corrStaj == null) + return; + yearTB.Text = corrStaj.Year.ToString(); + monthTB.Text = corrStaj.Month.ToString(); + dayTB.Text = corrStaj.Day.ToString(); + delRadioButton.Checked = !(addRadioButton.Checked = corrStaj.AddFlag); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void addStajButton_Click(object sender, EventArgs e) + { + try + { + if (rabotnik == null) + throw new Exception("Не выбран сотрудник."); + if (!int.TryParse(yearTB.Text, out int year) || year < 0) + throw new Exception("Не верно указан год."); + if (!int.TryParse(monthTB.Text, out int month) || month < 0) + throw new Exception("Не верно указан месяц."); + if (!int.TryParse(dayTB.Text, out int day) || day < 0) + throw new Exception("Не верно указан день."); + + var typeStaj = FuncDB.TypeStajGetByName(comboBox1.Text); + if(typeStaj == null) + { + FuncDB.TypeStajAdd(new TypeStaj() { Name = comboBox1.Text }); + typeStaj = FuncDB.TypeStajGetByName(comboBox1.Text); + } + + var corrStaj = FuncDB.CorrStaj(rabotnik.ChelId, typeStaj.Name); + if (corrStaj == null) + { + FuncDB.CorrStajAdd(new CorrStaj() + { + Year = year, + Month = month, + Day = day, + ChelId = rabotnik.ChelId, + TypeStajId = typeStaj.Id, + AddFlag = addRadioButton.Checked + }); + } + else + { + corrStaj.ChelId = rabotnik.ChelId; + corrStaj.TypeStajId = typeStaj.Id; + corrStaj.AddFlag = addRadioButton.Checked; + corrStaj.Year = year; + corrStaj.Month = month; + corrStaj.Day = day; + FuncDB.CorrStajChange(corrStaj); + } + resetStajTable(); + resetTypeStajComboBox(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + + private void button1_Click(object sender, EventArgs e) + { + resetStajTable(); + } + } +} diff --git a/MainForms/StajForm.resx b/MainForms/StajForm.resx new file mode 100644 index 0000000..9a1181c --- /dev/null +++ b/MainForms/StajForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 364, 17 + + + 472, 17 + + \ No newline at end of file diff --git a/Program.cs b/Program.cs index 558bb09..991a7ca 100644 --- a/Program.cs +++ b/Program.cs @@ -3,11 +3,14 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; +using Diplom_O.DataBase; namespace Diplom_O { static class Program { + public static bool IsDebug = false; + /// /// Главная точка входа для приложения. /// @@ -16,7 +19,87 @@ namespace Diplom_O { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new ShtatForm()); + int nextForm = 0; + FuncDB.InitDB(); + { + var form = new LoginForm(); + Application.Run(form); + if (form.isCanceled) + return; + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + while (nextForm >= 0 && nextForm < FormArray.formName.Length) + { + switch (nextForm) + { + case 0: + { + var form = new ShtatForm(); + Application.Run(form); + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + break; + case 1: + { + var form = new ChelForm(); + Application.Run(form); + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + break; + case 2: + { + var form = new RabForm(); + Application.Run(form); + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + break; + case 3: + { + var form = new StajForm(); + Application.Run(form); + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + break; + case 4: + { + var form = new LearnForm(); + Application.Run(form); + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + break; + case 5: + { + var form = new OtpForm(); + Application.Run(form); + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + break; + case 6: + { + var form = new ChildForm(); + Application.Run(form); + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + break; + case 7: + { + var form = new SettingsForm(); + Application.Run(form); + nextForm = form.GetNextForm(); + form.SetNextForm(-1); + } + break; + } + } } } + } diff --git a/SupportForms/ChildForm.Designer.cs b/SupportForms/ChildForm.Designer.cs new file mode 100644 index 0000000..480960e --- /dev/null +++ b/SupportForms/ChildForm.Designer.cs @@ -0,0 +1,274 @@ + +namespace Diplom_O.SupportForms +{ + partial class ChildForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.fNameBox = new System.Windows.Forms.TextBox(); + this.sNameBox = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.workButton = new System.Windows.Forms.Button(); + this.canceledButton = new System.Windows.Forms.Button(); + this.tNameBox = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.maleBox = new System.Windows.Forms.ComboBox(); + this.birthdayBox = new System.Windows.Forms.DateTimePicker(); + this.linkRod1 = new System.Windows.Forms.LinkLabel(); + this.linkRod2 = new System.Windows.Forms.LinkLabel(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // fNameBox + // + this.fNameBox.Location = new System.Drawing.Point(104, 12); + this.fNameBox.Name = "fNameBox"; + this.fNameBox.Size = new System.Drawing.Size(216, 20); + this.fNameBox.TabIndex = 0; + // + // sNameBox + // + this.sNameBox.Location = new System.Drawing.Point(104, 38); + this.sNameBox.Name = "sNameBox"; + this.sNameBox.Size = new System.Drawing.Size(216, 20); + this.sNameBox.TabIndex = 1; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 225); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(332, 22); + this.statusStrip1.TabIndex = 2; + this.statusStrip1.Text = "statusStrip1"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(57, 17); + this.errorLabel.Text = "Ошибка."; + this.errorLabel.Visible = false; + // + // workButton + // + this.workButton.Location = new System.Drawing.Point(245, 194); + this.workButton.Name = "workButton"; + this.workButton.Size = new System.Drawing.Size(75, 23); + this.workButton.TabIndex = 9; + this.workButton.Text = "Добавить"; + this.workButton.UseVisualStyleBackColor = true; + this.workButton.Click += new System.EventHandler(this.workButton_Click); + // + // canceledButton + // + this.canceledButton.Location = new System.Drawing.Point(164, 194); + this.canceledButton.Name = "canceledButton"; + this.canceledButton.Size = new System.Drawing.Size(75, 23); + this.canceledButton.TabIndex = 10; + this.canceledButton.Text = "Отмена"; + this.canceledButton.UseVisualStyleBackColor = true; + this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click); + // + // tNameBox + // + this.tNameBox.Location = new System.Drawing.Point(104, 64); + this.tNameBox.Name = "tNameBox"; + this.tNameBox.Size = new System.Drawing.Size(216, 20); + this.tNameBox.TabIndex = 2; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(42, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(56, 13); + this.label1.TabIndex = 29; + this.label1.Text = "Фамилия"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(69, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(29, 13); + this.label2.TabIndex = 30; + this.label2.Text = "Имя"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(44, 67); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(54, 13); + this.label3.TabIndex = 31; + this.label3.Text = "Отчество"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(71, 93); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(27, 13); + this.label4.TabIndex = 32; + this.label4.Text = "Пол"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(12, 119); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(86, 13); + this.label5.TabIndex = 33; + this.label5.Text = "Дата рождения"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(34, 145); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(64, 13); + this.label6.TabIndex = 34; + this.label6.Text = "Родитель 1"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(34, 171); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(64, 13); + this.label7.TabIndex = 35; + this.label7.Text = "Родитель 2"; + // + // maleBox + // + this.maleBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.maleBox.FormattingEnabled = true; + this.maleBox.Items.AddRange(new object[] { + "Мужчина", + "Женщина"}); + this.maleBox.Location = new System.Drawing.Point(104, 90); + this.maleBox.Name = "maleBox"; + this.maleBox.Size = new System.Drawing.Size(216, 21); + this.maleBox.TabIndex = 3; + // + // birthdayBox + // + this.birthdayBox.CustomFormat = "yyyy.MM.dd"; + this.birthdayBox.Location = new System.Drawing.Point(104, 116); + this.birthdayBox.Name = "birthdayBox"; + this.birthdayBox.Size = new System.Drawing.Size(216, 20); + this.birthdayBox.TabIndex = 4; + // + // linkRod1 + // + this.linkRod1.AutoSize = true; + this.linkRod1.Location = new System.Drawing.Point(104, 145); + this.linkRod1.Name = "linkRod1"; + this.linkRod1.Size = new System.Drawing.Size(110, 13); + this.linkRod1.TabIndex = 40; + this.linkRod1.TabStop = true; + this.linkRod1.Text = "Выбрать человека..."; + this.linkRod1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRod1_LinkClicked); + // + // linkRod2 + // + this.linkRod2.AutoSize = true; + this.linkRod2.Location = new System.Drawing.Point(104, 171); + this.linkRod2.Name = "linkRod2"; + this.linkRod2.Size = new System.Drawing.Size(110, 13); + this.linkRod2.TabIndex = 41; + this.linkRod2.TabStop = true; + this.linkRod2.Text = "Выбрать человека..."; + this.linkRod2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRod2_LinkClicked); + // + // ChildForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(332, 247); + this.ControlBox = false; + this.Controls.Add(this.linkRod2); + this.Controls.Add(this.linkRod1); + this.Controls.Add(this.birthdayBox); + this.Controls.Add(this.maleBox); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.tNameBox); + this.Controls.Add(this.canceledButton); + this.Controls.Add(this.workButton); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.sNameBox); + this.Controls.Add(this.fNameBox); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ChildForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Ребенок"; + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox fNameBox; + private System.Windows.Forms.TextBox sNameBox; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.Button workButton; + private System.Windows.Forms.Button canceledButton; + private System.Windows.Forms.TextBox tNameBox; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.ComboBox maleBox; + private System.Windows.Forms.DateTimePicker birthdayBox; + private System.Windows.Forms.LinkLabel linkRod1; + private System.Windows.Forms.LinkLabel linkRod2; + } +} \ No newline at end of file diff --git a/SupportForms/ChildForm.cs b/SupportForms/ChildForm.cs new file mode 100644 index 0000000..752046d --- /dev/null +++ b/SupportForms/ChildForm.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O.SupportForms +{ + public partial class ChildForm : Form + { + private int? rod1Id = null; + private void linkRod1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var form = new ChelForm(true); + form.ShowDialog(); + if (form.isCanceled) + rod1Id = null; + else + rod1Id = form.formResult.Id; + linkRod1_changeName(); + } + private void linkRod1_changeName() + { + linkRod1.Text = rod1Id.HasValue ? + FuncDB.ChelGetFIOShortById(rod1Id.Value) : + "Выбрать человека..."; + } + + private int? rod2Id = null; + private void linkRod2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var form = new ChelForm(true); + form.ShowDialog(); + if (form.isCanceled) + rod2Id = null; + else + rod2Id = form.formResult.Id; + linkRod2_changeName(); + } + private void linkRod2_changeName() + { + linkRod2.Text = rod2Id.HasValue ? + FuncDB.ChelGetFIOShortById(rod2Id.Value) : + "Выбрать человека..."; + } + + public bool isCanceled = false; + private Child child = null; + public ChildForm(Child child = null) + { + InitializeComponent(); + maleBox.SelectedIndex = 0; + birthdayBox.Value = DateTime.Now; + try + { + if (child != null) + { + this.child = child; + workButton.Text = "Изменить"; + fNameBox.Text = child.FName; + sNameBox.Text = child.SName; + tNameBox.Text = child.TName; + maleBox.SelectedIndex = child.Male ? 0 : 1; + birthdayBox.Value = child.Birthday; + rod1Id = child.Parent1Id; + rod2Id = child.Parent2Id; + linkRod1_changeName(); + linkRod2_changeName(); + } + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + workButton.Enabled = false; + } + } + + private void workButton_Click(object sender, EventArgs e) + { + try + { + if (maleBox.SelectedIndex == -1) + throw new Exception("Пол не указан."); + var _child = new Child(); + _child.FName = fNameBox.Text; + _child.SName = sNameBox.Text; + _child.TName = tNameBox.Text; + _child.Male = maleBox.SelectedIndex == 0; + _child.Birthday = birthdayBox.Value; + _child.Parent1Id = rod1Id; + _child.Parent2Id = rod2Id; + + FuncDB.ChildCheckValid(_child); + if (child == null) + FuncDB.ChildAdd(_child); + else + { + _child.Id = child.Id; + FuncDB.ChildChange(_child); + } + this.Close(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void canceledButton_Click(object sender, EventArgs e) + { + isCanceled = true; + this.Close(); + } + + } +} diff --git a/SupportForms/ChildForm.resx b/SupportForms/ChildForm.resx new file mode 100644 index 0000000..42dfef1 --- /dev/null +++ b/SupportForms/ChildForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + True + + \ No newline at end of file diff --git a/SupportForms/LearnForm.Designer.cs b/SupportForms/LearnForm.Designer.cs new file mode 100644 index 0000000..a0b7473 --- /dev/null +++ b/SupportForms/LearnForm.Designer.cs @@ -0,0 +1,239 @@ + +namespace Diplom_O.SupportForms +{ + partial class LearnForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.nameBox = new System.Windows.Forms.TextBox(); + this.typeBox = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.workButton = new System.Windows.Forms.Button(); + this.canceledButton = new System.Windows.Forms.Button(); + this.specBox = new System.Windows.Forms.TextBox(); + this.label = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.dateBox = new System.Windows.Forms.DateTimePicker(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // nameBox + // + this.nameBox.Location = new System.Drawing.Point(104, 12); + this.nameBox.Name = "nameBox"; + this.nameBox.Size = new System.Drawing.Size(216, 20); + this.nameBox.TabIndex = 0; + // + // typeBox + // + this.typeBox.Location = new System.Drawing.Point(104, 38); + this.typeBox.Name = "typeBox"; + this.typeBox.Size = new System.Drawing.Size(216, 20); + this.typeBox.TabIndex = 1; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 202); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(332, 22); + this.statusStrip1.TabIndex = 2; + this.statusStrip1.Text = "statusStrip1"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(57, 17); + this.errorLabel.Text = "Ошибка."; + this.errorLabel.Visible = false; + // + // workButton + // + this.workButton.Location = new System.Drawing.Point(245, 168); + this.workButton.Name = "workButton"; + this.workButton.Size = new System.Drawing.Size(75, 23); + this.workButton.TabIndex = 9; + this.workButton.Text = "Добавить"; + this.workButton.UseVisualStyleBackColor = true; + this.workButton.Click += new System.EventHandler(this.workButton_Click); + // + // canceledButton + // + this.canceledButton.Location = new System.Drawing.Point(164, 168); + this.canceledButton.Name = "canceledButton"; + this.canceledButton.Size = new System.Drawing.Size(75, 23); + this.canceledButton.TabIndex = 10; + this.canceledButton.Text = "Отмена"; + this.canceledButton.UseVisualStyleBackColor = true; + this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click); + // + // specBox + // + this.specBox.Location = new System.Drawing.Point(104, 64); + this.specBox.Name = "specBox"; + this.specBox.Size = new System.Drawing.Size(216, 20); + this.specBox.TabIndex = 2; + // + // label + // + this.label.AutoSize = true; + this.label.Location = new System.Drawing.Point(43, 15); + this.label.Name = "label"; + this.label.Size = new System.Drawing.Size(55, 13); + this.label.TabIndex = 29; + this.label.Text = "Обр. учр.:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(44, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(54, 13); + this.label2.TabIndex = 30; + this.label2.Text = "Уровень:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(60, 67); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(38, 13); + this.label3.TabIndex = 31; + this.label3.Text = "Спец.:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(6, 145); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(92, 13); + this.label5.TabIndex = 33; + this.label5.Text = "Дата окончания:"; + // + // dateBox + // + this.dateBox.CustomFormat = "yyyy.MM.dd"; + this.dateBox.Location = new System.Drawing.Point(104, 142); + this.dateBox.Name = "dateBox"; + this.dateBox.Size = new System.Drawing.Size(216, 20); + this.dateBox.TabIndex = 4; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(104, 90); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(216, 20); + this.textBox1.TabIndex = 34; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(104, 116); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(216, 20); + this.textBox2.TabIndex = 35; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(64, 93); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(34, 13); + this.label1.TabIndex = 36; + this.label1.Text = "Курс:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(21, 119); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(77, 13); + this.label4.TabIndex = 37; + this.label4.Text = "Проф. переп.:"; + // + // LearnForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(332, 224); + this.ControlBox = false; + this.Controls.Add(this.label4); + this.Controls.Add(this.label1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.dateBox); + this.Controls.Add(this.label5); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label); + this.Controls.Add(this.specBox); + this.Controls.Add(this.canceledButton); + this.Controls.Add(this.workButton); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.typeBox); + this.Controls.Add(this.nameBox); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "LearnForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Образование"; + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox nameBox; + private System.Windows.Forms.TextBox typeBox; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.Button workButton; + private System.Windows.Forms.Button canceledButton; + private System.Windows.Forms.TextBox specBox; + private System.Windows.Forms.Label label; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.DateTimePicker dateBox; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label4; + } +} \ No newline at end of file diff --git a/SupportForms/LearnForm.cs b/SupportForms/LearnForm.cs new file mode 100644 index 0000000..d93bb0d --- /dev/null +++ b/SupportForms/LearnForm.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O.SupportForms +{ + public partial class LearnForm : Form + { + public bool isCanceled = false; + private int chelId = 0; + private Learn learn = null; + public LearnForm(Learn learn = null, int? chelId = null) + { + InitializeComponent(); + if (learn == null && chelId == null) + throw new Exception("Не выбран сотрудник."); + dateBox.Value = DateTime.Now; + try + { + if (learn != null) + { + this.learn = learn; + this.chelId = learn.ChelId; + nameBox.Text = learn.NameSchool; + typeBox.Text = learn.Type; + specBox.Text = learn.Spec; + dateBox.Value = learn.End; + workButton.Text = "Изменить"; + } + else + { + this.chelId = chelId.Value; + } + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + workButton.Enabled = false; + } + } + + private void workButton_Click(object sender, EventArgs e) + { + try + { + var _learn = new Learn(); + _learn.NameSchool = nameBox.Text; + _learn.Type = typeBox.Text; + _learn.Spec = specBox.Text; + _learn.Curs = textBox1.Text; + _learn.ProfPer = textBox2.Text; + _learn.ChelId = chelId; + _learn.End = dateBox.Value; + FuncDB.LearnCheckValid(_learn); + if (learn == null) + FuncDB.LearnAdd(_learn); + else + { + _learn.Id = learn.Id; + FuncDB.LearnChange(_learn); + } + this.Close(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void canceledButton_Click(object sender, EventArgs e) + { + isCanceled = true; + this.Close(); + } + } +} diff --git a/SupportForms/LearnForm.resx b/SupportForms/LearnForm.resx new file mode 100644 index 0000000..42dfef1 --- /dev/null +++ b/SupportForms/LearnForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + True + + \ No newline at end of file diff --git a/SupportForms/LoginForm.Designer.cs b/SupportForms/LoginForm.Designer.cs new file mode 100644 index 0000000..f6fe8b7 --- /dev/null +++ b/SupportForms/LoginForm.Designer.cs @@ -0,0 +1,188 @@ + +namespace Diplom_O.SupportForms +{ + partial class LoginForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.loginBox = new System.Windows.Forms.TextBox(); + this.passBox = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.workButton = new System.Windows.Forms.Button(); + this.canceledButton = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.formBox = new System.Windows.Forms.ComboBox(); + this.hideBox = new System.Windows.Forms.CheckBox(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // loginBox + // + this.loginBox.Location = new System.Drawing.Point(128, 12); + this.loginBox.Name = "loginBox"; + this.loginBox.Size = new System.Drawing.Size(216, 20); + this.loginBox.TabIndex = 0; + // + // passBox + // + this.passBox.Location = new System.Drawing.Point(128, 38); + this.passBox.Name = "passBox"; + this.passBox.Size = new System.Drawing.Size(216, 20); + this.passBox.TabIndex = 1; + this.passBox.UseSystemPasswordChar = true; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 155); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(352, 22); + this.statusStrip1.TabIndex = 2; + this.statusStrip1.Text = "statusStrip1"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(57, 17); + this.errorLabel.Text = "Ошибка."; + this.errorLabel.Visible = false; + // + // workButton + // + this.workButton.Location = new System.Drawing.Point(269, 121); + this.workButton.Name = "workButton"; + this.workButton.Size = new System.Drawing.Size(75, 23); + this.workButton.TabIndex = 9; + this.workButton.Text = "Добавить"; + this.workButton.UseVisualStyleBackColor = true; + this.workButton.Click += new System.EventHandler(this.workButton_Click); + // + // canceledButton + // + this.canceledButton.Location = new System.Drawing.Point(188, 121); + this.canceledButton.Name = "canceledButton"; + this.canceledButton.Size = new System.Drawing.Size(75, 23); + this.canceledButton.TabIndex = 10; + this.canceledButton.Text = "Отмена"; + this.canceledButton.UseVisualStyleBackColor = true; + this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(81, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 13); + this.label1.TabIndex = 29; + this.label1.Text = "Логин:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(74, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(48, 13); + this.label2.TabIndex = 30; + this.label2.Text = "Пароль:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(12, 67); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(110, 13); + this.label4.TabIndex = 32; + this.label4.Text = "Окно по умолчанию:"; + // + // formBox + // + this.formBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.formBox.FormattingEnabled = true; + this.formBox.Location = new System.Drawing.Point(128, 64); + this.formBox.Name = "formBox"; + this.formBox.Size = new System.Drawing.Size(216, 21); + this.formBox.TabIndex = 3; + // + // hideBox + // + this.hideBox.AutoSize = true; + this.hideBox.Location = new System.Drawing.Point(128, 92); + this.hideBox.Name = "hideBox"; + this.hideBox.Size = new System.Drawing.Size(76, 17); + this.hideBox.TabIndex = 42; + this.hideBox.Text = "Скрывать"; + this.hideBox.UseVisualStyleBackColor = true; + // + // LoginForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(352, 177); + this.ControlBox = false; + this.Controls.Add(this.hideBox); + this.Controls.Add(this.formBox); + this.Controls.Add(this.label4); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.canceledButton); + this.Controls.Add(this.workButton); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.passBox); + this.Controls.Add(this.loginBox); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "LoginForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Штатное место"; + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox loginBox; + private System.Windows.Forms.TextBox passBox; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.Button workButton; + private System.Windows.Forms.Button canceledButton; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox formBox; + private System.Windows.Forms.CheckBox hideBox; + } +} \ No newline at end of file diff --git a/SupportForms/LoginForm.cs b/SupportForms/LoginForm.cs new file mode 100644 index 0000000..d1f4250 --- /dev/null +++ b/SupportForms/LoginForm.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O.SupportForms +{ + public partial class LoginForm : Form + { + public bool isCanceled = false; + private User user = null; + public LoginForm(User user = null) + { + InitializeComponent(); + formBox.Items.Clear(); + for (var i = 0; i < 8; i++) + formBox.Items.Add(FormArray.GetNameString(i)); + formBox.SelectedIndex = 0; + hideBox.Checked = false; + try + { + if (user != null) + { + this.user = user; + workButton.Text = "Изменить"; + loginBox.Text = user.Login; + passBox.Text = user.Pass; + formBox.SelectedIndex = user.Default; + hideBox.Checked = user.Hide; + } + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + workButton.Enabled = false; + } + } + + private void workButton_Click(object sender, EventArgs e) + { + try + { + var _user = new User(); + _user.Login = loginBox.Text; + _user.Pass = passBox.Text; + _user.Hide = hideBox.Checked; + _user.Default = formBox.SelectedIndex; + + FuncDB.UserCheckValid(_user); + if (user == null) + FuncDB.UserAdd(_user); + else + { + _user.Id = user.Id; + if (FuncDB.AccessGetByUserIdFormIdAccessId(_user.Id, _user.Default, 0) == null) + throw new Exception("Необходим сначала доступ к форме."); + FuncDB.UserChange(_user); + } + this.Close(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void canceledButton_Click(object sender, EventArgs e) + { + isCanceled = true; + this.Close(); + } + + } +} diff --git a/SupportForms/LoginForm.resx b/SupportForms/LoginForm.resx new file mode 100644 index 0000000..42dfef1 --- /dev/null +++ b/SupportForms/LoginForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + True + + \ No newline at end of file diff --git a/SupportForms/OptForm.Designer.cs b/SupportForms/OptForm.Designer.cs new file mode 100644 index 0000000..f2eacba --- /dev/null +++ b/SupportForms/OptForm.Designer.cs @@ -0,0 +1,193 @@ + +namespace Diplom_O.SupportForms +{ + partial class OptForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.workButton = new System.Windows.Forms.Button(); + this.canceledButton = new System.Windows.Forms.Button(); + this.label = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.dateBox = new System.Windows.Forms.DateTimePicker(); + this.dateBox2 = new System.Windows.Forms.DateTimePicker(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 152); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(332, 22); + this.statusStrip1.TabIndex = 2; + this.statusStrip1.Text = "statusStrip1"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(57, 17); + this.errorLabel.Text = "Ошибка."; + this.errorLabel.Visible = false; + // + // workButton + // + this.workButton.Location = new System.Drawing.Point(245, 116); + this.workButton.Name = "workButton"; + this.workButton.Size = new System.Drawing.Size(75, 23); + this.workButton.TabIndex = 9; + this.workButton.Text = "Добавить"; + this.workButton.UseVisualStyleBackColor = true; + this.workButton.Click += new System.EventHandler(this.workButton_Click); + // + // canceledButton + // + this.canceledButton.Location = new System.Drawing.Point(164, 116); + this.canceledButton.Name = "canceledButton"; + this.canceledButton.Size = new System.Drawing.Size(75, 23); + this.canceledButton.TabIndex = 10; + this.canceledButton.Text = "Отмена"; + this.canceledButton.UseVisualStyleBackColor = true; + this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click); + // + // label + // + this.label.AutoSize = true; + this.label.Location = new System.Drawing.Point(57, 15); + this.label.Name = "label"; + this.label.Size = new System.Drawing.Size(29, 13); + this.label.TabIndex = 29; + this.label.Text = "Тип:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(74, 13); + this.label2.TabIndex = 30; + this.label2.Text = "Дата начала:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(17, 93); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(69, 13); + this.label3.TabIndex = 31; + this.label3.Text = "Дата конца:"; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(104, 66); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(121, 17); + this.checkBox1.TabIndex = 38; + this.checkBox1.Text = "По текущее время"; + this.checkBox1.UseVisualStyleBackColor = true; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // dateBox + // + this.dateBox.CustomFormat = "yyyy.MM.dd"; + this.dateBox.Location = new System.Drawing.Point(104, 38); + this.dateBox.Name = "dateBox"; + this.dateBox.Size = new System.Drawing.Size(216, 20); + this.dateBox.TabIndex = 39; + // + // dateBox2 + // + this.dateBox2.CustomFormat = "yyyy.MM.dd"; + this.dateBox2.Location = new System.Drawing.Point(104, 90); + this.dateBox2.Name = "dateBox2"; + this.dateBox2.Size = new System.Drawing.Size(216, 20); + this.dateBox2.TabIndex = 40; + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "Отпуск", + "Больничный", + "Иное"}); + this.comboBox1.Location = new System.Drawing.Point(104, 12); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(216, 21); + this.comboBox1.TabIndex = 41; + // + // OptForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(332, 174); + this.ControlBox = false; + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.dateBox2); + this.Controls.Add(this.dateBox); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label); + this.Controls.Add(this.canceledButton); + this.Controls.Add(this.workButton); + this.Controls.Add(this.statusStrip1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "OptForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Образование"; + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.Button workButton; + private System.Windows.Forms.Button canceledButton; + private System.Windows.Forms.Label label; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.DateTimePicker dateBox; + private System.Windows.Forms.DateTimePicker dateBox2; + private System.Windows.Forms.ComboBox comboBox1; + } +} \ No newline at end of file diff --git a/SupportForms/OptForm.cs b/SupportForms/OptForm.cs new file mode 100644 index 0000000..a71520b --- /dev/null +++ b/SupportForms/OptForm.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O.SupportForms +{ + public partial class OptForm : Form + { + public bool isCanceled = false; + private int chelId = 0; + private Free free = null; + public OptForm(Free free = null, int? chelId = null) + { + InitializeComponent(); + if (free == null && chelId == null) + throw new Exception("Не выбран сотрудник."); + dateBox.Value = DateTime.Now; + dateBox2.Value = DateTime.Now; + comboBox1.SelectedIndex = 0; + try + { + if (free != null) + { + this.free = free; + this.chelId = free.ChelId; + dateBox.Value = free.Start; + comboBox1.Text = free.Type; + if (free.End.HasValue) + { + checkBox1.Checked = false; + dateBox2.Enabled = true; + dateBox2.Value = free.End.Value; + } + else + { + checkBox1.Checked = true; + dateBox2.Enabled = false; + } + workButton.Text = "Изменить"; + } + else + { + this.chelId = chelId.Value; + } + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + workButton.Enabled = false; + } + } + + private void workButton_Click(object sender, EventArgs e) + { + try + { + var _free = new Free(); + _free.ChelId = chelId; + _free.Type = comboBox1.Text; + _free.Start = dateBox.Value; + if (checkBox1.Checked) + _free.End = null; + else + _free.End = dateBox2.Value; + FuncDB.FreeCheckValid(_free); + if (free == null) + FuncDB.FreeAdd(_free); + else + { + _free.Id = free.Id; + FuncDB.FreeChange(_free); + } + this.Close(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void canceledButton_Click(object sender, EventArgs e) + { + isCanceled = true; + this.Close(); + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + dateBox2.Enabled = !checkBox1.Checked; + } + } +} diff --git a/SupportForms/OptForm.resx b/SupportForms/OptForm.resx new file mode 100644 index 0000000..42dfef1 --- /dev/null +++ b/SupportForms/OptForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + True + + \ No newline at end of file diff --git a/SupportForms/SelectChelForm.Designer.cs b/SupportForms/SelectChelForm.Designer.cs deleted file mode 100644 index 5472a77..0000000 --- a/SupportForms/SelectChelForm.Designer.cs +++ /dev/null @@ -1,165 +0,0 @@ - -namespace Diplom_O.SupportForms -{ - partial class SelectChelForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); - this.chelGridView = new System.Windows.Forms.DataGridView(); - this.dropFindButton = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); - this.findBox = new System.Windows.Forms.TextBox(); - this.button1 = new System.Windows.Forms.Button(); - this.canceledButton = new System.Windows.Forms.Button(); - this.statusStrip1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.chelGridView)).BeginInit(); - this.SuspendLayout(); - // - // statusStrip1 - // - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.errorLabel}); - this.statusStrip1.Location = new System.Drawing.Point(0, 529); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(352, 22); - this.statusStrip1.TabIndex = 2; - this.statusStrip1.Text = "statusStrip1"; - // - // errorLabel - // - this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); - this.errorLabel.ForeColor = System.Drawing.Color.Red; - this.errorLabel.Name = "errorLabel"; - this.errorLabel.Size = new System.Drawing.Size(57, 17); - this.errorLabel.Text = "Ошибка."; - this.errorLabel.Visible = false; - // - // chelGridView - // - this.chelGridView.AllowUserToAddRows = false; - this.chelGridView.AllowUserToDeleteRows = false; - this.chelGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.chelGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.chelGridView.Location = new System.Drawing.Point(12, 41); - this.chelGridView.MultiSelect = false; - this.chelGridView.Name = "chelGridView"; - this.chelGridView.ReadOnly = true; - this.chelGridView.RowHeadersVisible = false; - this.chelGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.chelGridView.Size = new System.Drawing.Size(328, 456); - this.chelGridView.TabIndex = 4; - // - // dropFindButton - // - this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.dropFindButton.Location = new System.Drawing.Point(265, 503); - this.dropFindButton.Name = "dropFindButton"; - this.dropFindButton.Size = new System.Drawing.Size(75, 23); - this.dropFindButton.TabIndex = 3; - this.dropFindButton.Text = "Сбросить"; - this.dropFindButton.UseVisualStyleBackColor = true; - // - // label1 - // - this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 508); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(39, 13); - this.label1.TabIndex = 37; - this.label1.Text = "Поиск"; - // - // findBox - // - this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.findBox.Location = new System.Drawing.Point(57, 505); - this.findBox.Name = "findBox"; - this.findBox.Size = new System.Drawing.Size(202, 20); - this.findBox.TabIndex = 2; - // - // button1 - // - this.button1.Location = new System.Drawing.Point(12, 12); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(75, 23); - this.button1.TabIndex = 0; - this.button1.Text = "Выбрать"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.workButton_Click); - // - // canceledButton - // - this.canceledButton.Location = new System.Drawing.Point(93, 12); - this.canceledButton.Name = "canceledButton"; - this.canceledButton.Size = new System.Drawing.Size(75, 23); - this.canceledButton.TabIndex = 1; - this.canceledButton.Text = "Отмена"; - this.canceledButton.UseVisualStyleBackColor = true; - this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click); - // - // SelectChelForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(352, 551); - this.ControlBox = false; - this.Controls.Add(this.canceledButton); - this.Controls.Add(this.button1); - this.Controls.Add(this.chelGridView); - this.Controls.Add(this.dropFindButton); - this.Controls.Add(this.label1); - this.Controls.Add(this.findBox); - this.Controls.Add(this.statusStrip1); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "SelectChelForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Человек"; - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.chelGridView)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.ToolStripStatusLabel errorLabel; - private System.Windows.Forms.DataGridView chelGridView; - private System.Windows.Forms.Button dropFindButton; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox findBox; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.Button canceledButton; - } -} \ No newline at end of file diff --git a/SupportForms/SelectChelForm.cs b/SupportForms/SelectChelForm.cs deleted file mode 100644 index 39bd180..0000000 --- a/SupportForms/SelectChelForm.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using Diplom_O.DataBase; - -namespace Diplom_O.SupportForms -{ - public partial class SelectChelForm : Form - { - private Task errDrop; - private void ShowError(string msg = null) - { - errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg; - errorLabel.Visible = true; - errDrop = new Task(() => - { - var fd = errDrop.Id; - Task.Delay(5000).Wait(); - if (errDrop.Id == fd) - if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; })); - else errorLabel.Visible = false; - }); - errDrop.Start(); - } - - private void resetChelTable() - { - try - { - { - chelGridView.Rows.Clear(); - chelGridView.Columns.Clear(); - var c = chelGridView.Columns; - c.Add("Id", "№"); - c.Add("FName", "Фамилия"); - c.Add("SName", "Имя"); - c.Add("TName", "Отчество"); - c.Add("Birthday", "Дата рождения"); - c.Add("Male", "Пол"); - c[0].Width = 40; - c[1].Width = 120; - c[1].Width = 120; - c[1].Width = 120; - c[4].Width = 80; - c[5].Width = 80; - } - { - var arr = FuncDB.ListChel(findBox.Text); - var r = chelGridView.Rows; - foreach (var chel in arr) - r.Add(new object[] { - chel.Id, - chel.FName, - chel.SName, - chel.TName, - chel.Birthday.ToString("yyyy.MM.dd"), - chel.Male ? "Муж" : "Жен" - }); - } - if (chelGridView.Rows.Count > 0) - chelGridView.Rows[0].Selected = true; - } - catch (Exception e) { ShowError(e.Message); } - } - private Chel selectedChel() - { - try - { - if (chelGridView.SelectedRows.Count != 1) throw new Exception("Человек не выбран."); - var chel = FuncDB.GetChel((int)chelGridView.SelectedRows[0].Cells[0].Value); - return chel; - } - catch (Exception e) { ShowError(e.Message); return null; } - } - - public bool isCanceled = false; - private Chel chel = null; - public SelectChelForm(Chel chel = null) - { - InitializeComponent(); - resetChelTable(); - } - - private void workButton_Click(object sender, EventArgs e) - { - try - { - chel = selectedChel(); - this.Close(); - } - catch (Exception ex) { - chel = null; - ShowError(ex.Message); - } - } - private void canceledButton_Click(object sender, EventArgs e) - { - isCanceled = true; - this.Close(); - } - } -} diff --git a/SupportForms/WorkChelForm.Designer.cs b/SupportForms/WorkChelForm.Designer.cs index d186be6..2e9a584 100644 --- a/SupportForms/WorkChelForm.Designer.cs +++ b/SupportForms/WorkChelForm.Designer.cs @@ -51,6 +51,9 @@ namespace Diplom_O.SupportForms this.birthdayBox = new System.Windows.Forms.DateTimePicker(); this.snilsBox = new System.Windows.Forms.MaskedTextBox(); this.innBox = new System.Windows.Forms.MaskedTextBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.phoneBox = new System.Windows.Forms.MaskedTextBox(); + this.label10 = new System.Windows.Forms.Label(); this.statusStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -72,7 +75,7 @@ namespace Diplom_O.SupportForms // this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.errorLabel}); - this.statusStrip1.Location = new System.Drawing.Point(0, 428); + this.statusStrip1.Location = new System.Drawing.Point(0, 485); this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.Size = new System.Drawing.Size(332, 22); this.statusStrip1.TabIndex = 2; @@ -89,7 +92,7 @@ namespace Diplom_O.SupportForms // // workButton // - this.workButton.Location = new System.Drawing.Point(245, 402); + this.workButton.Location = new System.Drawing.Point(245, 451); this.workButton.Name = "workButton"; this.workButton.Size = new System.Drawing.Size(75, 23); this.workButton.TabIndex = 9; @@ -99,7 +102,7 @@ namespace Diplom_O.SupportForms // // canceledButton // - this.canceledButton.Location = new System.Drawing.Point(164, 402); + this.canceledButton.Location = new System.Drawing.Point(164, 451); this.canceledButton.Name = "canceledButton"; this.canceledButton.Size = new System.Drawing.Size(75, 23); this.canceledButton.TabIndex = 10; @@ -162,7 +165,7 @@ namespace Diplom_O.SupportForms // label6 // this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(12, 145); + this.label6.Location = new System.Drawing.Point(60, 145); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(38, 13); this.label6.TabIndex = 34; @@ -171,7 +174,7 @@ namespace Diplom_O.SupportForms // label7 // this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(12, 249); + this.label7.Location = new System.Drawing.Point(67, 275); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(31, 13); this.label7.TabIndex = 35; @@ -180,7 +183,7 @@ namespace Diplom_O.SupportForms // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(12, 275); + this.label8.Location = new System.Drawing.Point(53, 301); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(45, 13); this.label8.TabIndex = 36; @@ -189,7 +192,7 @@ namespace Diplom_O.SupportForms // label9 // this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(12, 301); + this.label9.Location = new System.Drawing.Point(48, 327); this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(50, 13); this.label9.TabIndex = 37; @@ -205,7 +208,7 @@ namespace Diplom_O.SupportForms // // pasportBox // - this.pasportBox.Location = new System.Drawing.Point(104, 298); + this.pasportBox.Location = new System.Drawing.Point(104, 324); this.pasportBox.Name = "pasportBox"; this.pasportBox.Size = new System.Drawing.Size(216, 98); this.pasportBox.TabIndex = 8; @@ -233,7 +236,7 @@ namespace Diplom_O.SupportForms // // snilsBox // - this.snilsBox.Location = new System.Drawing.Point(104, 272); + this.snilsBox.Location = new System.Drawing.Point(104, 298); this.snilsBox.Mask = "000-000-000 00"; this.snilsBox.Name = "snilsBox"; this.snilsBox.Size = new System.Drawing.Size(216, 20); @@ -241,18 +244,48 @@ namespace Diplom_O.SupportForms // // innBox // - this.innBox.Location = new System.Drawing.Point(104, 246); + this.innBox.Location = new System.Drawing.Point(104, 272); this.innBox.Mask = "000000000000"; this.innBox.Name = "innBox"; this.innBox.Size = new System.Drawing.Size(216, 20); this.innBox.TabIndex = 6; // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(104, 428); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(82, 17); + this.checkBox1.TabIndex = 38; + this.checkBox1.Text = "Пенсионер"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // phoneBox + // + this.phoneBox.Location = new System.Drawing.Point(104, 246); + this.phoneBox.Mask = "+7(000)000-00-00"; + this.phoneBox.Name = "phoneBox"; + this.phoneBox.Size = new System.Drawing.Size(216, 20); + this.phoneBox.TabIndex = 39; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(46, 249); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(52, 13); + this.label10.TabIndex = 40; + this.label10.Text = "Телефон"; + // // WorkChelForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(332, 450); + this.ClientSize = new System.Drawing.Size(332, 507); this.ControlBox = false; + this.Controls.Add(this.label10); + this.Controls.Add(this.phoneBox); + this.Controls.Add(this.checkBox1); this.Controls.Add(this.innBox); this.Controls.Add(this.snilsBox); this.Controls.Add(this.birthdayBox); @@ -310,5 +343,8 @@ namespace Diplom_O.SupportForms private System.Windows.Forms.DateTimePicker birthdayBox; private System.Windows.Forms.MaskedTextBox snilsBox; private System.Windows.Forms.MaskedTextBox innBox; - } + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.MaskedTextBox phoneBox; + private System.Windows.Forms.Label label10; + } } \ No newline at end of file diff --git a/SupportForms/WorkChelForm.cs b/SupportForms/WorkChelForm.cs index 2f40f03..0681142 100644 --- a/SupportForms/WorkChelForm.cs +++ b/SupportForms/WorkChelForm.cs @@ -13,22 +13,6 @@ namespace Diplom_O.SupportForms { public partial class WorkChelForm : Form { - private Task errDrop; - private void ShowError(string msg = null) - { - errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg; - errorLabel.Visible = true; - errDrop = new Task(() => - { - var fd = errDrop.Id; - Task.Delay(5000).Wait(); - if (errDrop.Id == fd) - if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; })); - else errorLabel.Visible = false; - }); - errDrop.Start(); - } - public bool isCanceled = false; private Chel chel = null; public WorkChelForm(Chel chel = null) @@ -48,14 +32,16 @@ namespace Diplom_O.SupportForms maleBox.SelectedIndex = chel.Male ? 0 : 1; birthdayBox.Value = chel.Birthday; addressBox.Text = chel.Address; + phoneBox.Text = chel.Phone; innBox.Text = chel.INN; snilsBox.Text = chel.SNILS; pasportBox.Text = chel.Pasport; + checkBox1.Checked = chel.Pensia; } } catch (Exception e) { - ShowError(e.Message); + this.ShowError(errorLabel, e.Message); workButton.Enabled = false; } } @@ -64,39 +50,34 @@ namespace Diplom_O.SupportForms { try { - if (maleBox.SelectedIndex == -1) throw new Exception("Пол не указан."); + if (maleBox.SelectedIndex == -1) + throw new Exception("Пол не указан."); + var _chel = new Chel(); + _chel.FName = fNameBox.Text; + _chel.SName = sNameBox.Text; + _chel.TName = tNameBox.Text; + _chel.Male = maleBox.SelectedIndex == 0; + _chel.Birthday = birthdayBox.Value; + _chel.Address = addressBox.Text; + _chel.Phone = phoneBox.Text; + _chel.INN = innBox.Text; + _chel.SNILS = snilsBox.Text; + _chel.Pasport = pasportBox.Text; + _chel.Pensia = checkBox1.Checked; + FuncDB.ChelCheckValid(_chel); if (chel == null) - { - var s = new Chel() - { - FName = fNameBox.Text, - SName = sNameBox.Text, - TName = tNameBox.Text, - Male = maleBox.SelectedIndex == 0, - Birthday = birthdayBox.Value, - Address = addressBox.Text, - INN = innBox.Text, - SNILS = snilsBox.Text, - Pasport = pasportBox.Text - }; - FuncDB.AddChel(s); - } + FuncDB.ChelAdd(_chel); else - { - chel.FName = fNameBox.Text; - chel.SName = sNameBox.Text; - chel.TName = tNameBox.Text; - chel.Male = maleBox.SelectedIndex == 0; - chel.Birthday = birthdayBox.Value; - chel.Address = addressBox.Text; - chel.INN = innBox.Text; - chel.SNILS = snilsBox.Text; - chel.Pasport = pasportBox.Text; - FuncDB.ChangeChel(chel); + { + _chel.Id = chel.Id; + FuncDB.ChelChange(_chel); } this.Close(); } - catch (Exception ex) { ShowError(ex.Message); } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } } private void canceledButton_Click(object sender, EventArgs e) { diff --git a/SupportForms/WorkShtatForm.Designer.cs b/SupportForms/WorkShtatForm.Designer.cs index 7a2f73c..38b6afd 100644 --- a/SupportForms/WorkShtatForm.Designer.cs +++ b/SupportForms/WorkShtatForm.Designer.cs @@ -60,7 +60,7 @@ namespace Diplom_O.SupportForms this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.errorLabel, this.busySizeLabel}); - this.statusStrip1.Location = new System.Drawing.Point(0, 90); + this.statusStrip1.Location = new System.Drawing.Point(0, 94); this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.Size = new System.Drawing.Size(262, 22); this.statusStrip1.TabIndex = 2; @@ -102,7 +102,7 @@ namespace Diplom_O.SupportForms // // workButton // - this.workButton.Location = new System.Drawing.Point(175, 64); + this.workButton.Location = new System.Drawing.Point(174, 64); this.workButton.Name = "workButton"; this.workButton.Size = new System.Drawing.Size(75, 23); this.workButton.TabIndex = 2; @@ -112,7 +112,7 @@ namespace Diplom_O.SupportForms // // canceledButton // - this.canceledButton.Location = new System.Drawing.Point(94, 64); + this.canceledButton.Location = new System.Drawing.Point(93, 64); this.canceledButton.Name = "canceledButton"; this.canceledButton.Size = new System.Drawing.Size(75, 23); this.canceledButton.TabIndex = 3; @@ -124,7 +124,7 @@ namespace Diplom_O.SupportForms // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(262, 112); + this.ClientSize = new System.Drawing.Size(262, 116); this.ControlBox = false; this.Controls.Add(this.canceledButton); this.Controls.Add(this.workButton); @@ -156,5 +156,5 @@ namespace Diplom_O.SupportForms private System.Windows.Forms.Button workButton; private System.Windows.Forms.Button canceledButton; private System.Windows.Forms.ToolStripStatusLabel busySizeLabel; - } + } } \ No newline at end of file diff --git a/SupportForms/WorkShtatForm.cs b/SupportForms/WorkShtatForm.cs index 6420713..f9f957b 100644 --- a/SupportForms/WorkShtatForm.cs +++ b/SupportForms/WorkShtatForm.cs @@ -13,24 +13,9 @@ namespace Diplom_O.SupportForms { public partial class WorkShtatForm : Form { - private Task errDrop; - private void ShowError(string msg = null) - { - errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg; - errorLabel.Visible = true; - errDrop = new Task(() => - { - var fd = errDrop.Id; - Task.Delay(5000).Wait(); - if (errDrop.Id == fd) - if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; })); - else errorLabel.Visible = false; - }); - errDrop.Start(); - } - public bool isCanceled = false; private Shtat shtat = null; + public WorkShtatForm(Shtat shtat = null) { InitializeComponent(); @@ -42,12 +27,13 @@ namespace Diplom_O.SupportForms workButton.Text = "Изменить"; doljBox.Text = shtat.Doljnost; kolvoBox.Text = shtat.Size.ToString(); - busySizeLabel.Text = "Занято: " + FuncDB.BusySizeShtat(shtat.Id); + busySizeLabel.Text = "Занято: " + (shtat.Size - FuncDB.ShtatFreeSpaceById(shtat.Id)); + busySizeLabel.Visible = true; } } catch (Exception e) { - ShowError(e.Message); + this.ShowError(errorLabel, e.Message); workButton.Enabled = false; } } @@ -56,21 +42,24 @@ namespace Diplom_O.SupportForms { try { - if (!int.TryParse(kolvoBox.Text, out int kolvo)) throw new Exception("Ошибка указания количества."); + if (string.IsNullOrEmpty(doljBox.Text)) + throw new Exception("Ошибка указания должности."); + if (!int.TryParse(kolvoBox.Text, out int kolvo)) + throw new Exception("Ошибка указания количества."); if (shtat == null) { var s = new Shtat() { Doljnost = doljBox.Text, Size = kolvo }; - FuncDB.AddShtat(s); + FuncDB.ShtatAdd(s); } else { shtat.Doljnost = doljBox.Text; shtat.Size = kolvo; - FuncDB.ChangeShtat(shtat); + FuncDB.ShtatChange(shtat); } this.Close(); } - catch (Exception ex) { ShowError(ex.Message); } + catch (Exception ex) { this.ShowError(errorLabel, ex.Message); } } private void canceledButton_Click(object sender, EventArgs e) { diff --git a/SupportForms/WorkerForm.Designer.cs b/SupportForms/WorkerForm.Designer.cs new file mode 100644 index 0000000..c4367e3 --- /dev/null +++ b/SupportForms/WorkerForm.Designer.cs @@ -0,0 +1,252 @@ + +namespace Diplom_O.SupportForms +{ + partial class WorkerForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.workButton = new System.Windows.Forms.Button(); + this.canceledButton = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.linkSelectFIO = new System.Windows.Forms.LinkLabel(); + this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); + this.dateTimePicker2 = new System.Windows.Forms.DateTimePicker(); + this.tabNumBox = new System.Windows.Forms.TextBox(); + this.linkDolj = new System.Windows.Forms.LinkLabel(); + this.label3 = new System.Windows.Forms.Label(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 253); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(332, 22); + this.statusStrip1.TabIndex = 2; + this.statusStrip1.Text = "statusStrip1"; + // + // errorLabel + // + this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.errorLabel.ForeColor = System.Drawing.Color.Red; + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Size = new System.Drawing.Size(57, 17); + this.errorLabel.Text = "Ошибка."; + this.errorLabel.Visible = false; + // + // workButton + // + this.workButton.Location = new System.Drawing.Point(248, 191); + this.workButton.Name = "workButton"; + this.workButton.Size = new System.Drawing.Size(75, 23); + this.workButton.TabIndex = 9; + this.workButton.Text = "Добавить"; + this.workButton.UseVisualStyleBackColor = true; + this.workButton.Click += new System.EventHandler(this.workButton_Click); + // + // canceledButton + // + this.canceledButton.Location = new System.Drawing.Point(167, 191); + this.canceledButton.Name = "canceledButton"; + this.canceledButton.Size = new System.Drawing.Size(75, 23); + this.canceledButton.TabIndex = 10; + this.canceledButton.Text = "Отмена"; + this.canceledButton.UseVisualStyleBackColor = true; + this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(17, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(81, 13); + this.label1.TabIndex = 29; + this.label1.Text = "Фамилия И.О."; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(23, 93); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(78, 13); + this.label2.TabIndex = 30; + this.label2.Text = "Табельный №"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(39, 145); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(62, 13); + this.label4.TabIndex = 32; + this.label4.Text = "Конец раб."; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(33, 116); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(68, 13); + this.label5.TabIndex = 33; + this.label5.Text = "Начало раб."; + // + // linkSelectFIO + // + this.linkSelectFIO.AutoSize = true; + this.linkSelectFIO.Location = new System.Drawing.Point(104, 15); + this.linkSelectFIO.Name = "linkSelectFIO"; + this.linkSelectFIO.Size = new System.Drawing.Size(110, 13); + this.linkSelectFIO.TabIndex = 38; + this.linkSelectFIO.TabStop = true; + this.linkSelectFIO.Text = "Выбрать человека..."; + this.linkSelectFIO.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkSelectFIO_LinkClicked); + // + // dateTimePicker1 + // + this.dateTimePicker1.CustomFormat = "yyyy.MM.dd"; + this.dateTimePicker1.Location = new System.Drawing.Point(107, 116); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.Size = new System.Drawing.Size(216, 20); + this.dateTimePicker1.TabIndex = 40; + // + // dateTimePicker2 + // + this.dateTimePicker2.CustomFormat = "yyyy.MM.dd"; + this.dateTimePicker2.Location = new System.Drawing.Point(107, 142); + this.dateTimePicker2.Name = "dateTimePicker2"; + this.dateTimePicker2.Size = new System.Drawing.Size(216, 20); + this.dateTimePicker2.TabIndex = 41; + // + // tabNumBox + // + this.tabNumBox.Location = new System.Drawing.Point(107, 90); + this.tabNumBox.Name = "tabNumBox"; + this.tabNumBox.Size = new System.Drawing.Size(216, 20); + this.tabNumBox.TabIndex = 1; + // + // linkDolj + // + this.linkDolj.AutoSize = true; + this.linkDolj.Location = new System.Drawing.Point(104, 67); + this.linkDolj.Name = "linkDolj"; + this.linkDolj.Size = new System.Drawing.Size(118, 13); + this.linkDolj.TabIndex = 43; + this.linkDolj.TabStop = true; + this.linkDolj.Text = "Выбрать должность..."; + this.linkDolj.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkDolj_LinkClicked); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(33, 67); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(65, 13); + this.label3.TabIndex = 44; + this.label3.Text = "Должность"; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(189, 168); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(134, 17); + this.checkBox1.TabIndex = 45; + this.checkBox1.Text = "По настоящее время"; + this.checkBox1.UseVisualStyleBackColor = true; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Location = new System.Drawing.Point(194, 40); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(126, 17); + this.checkBox2.TabIndex = 49; + this.checkBox2.Text = "Иное место работы"; + this.checkBox2.UseVisualStyleBackColor = true; + this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged); + // + // WorkerForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(332, 275); + this.ControlBox = false; + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.linkDolj); + this.Controls.Add(this.dateTimePicker2); + this.Controls.Add(this.dateTimePicker1); + this.Controls.Add(this.linkSelectFIO); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.canceledButton); + this.Controls.Add(this.workButton); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.tabNumBox); + this.MaximizeBox = false; + this.Name = "WorkerForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Сотрудник"; + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel errorLabel; + private System.Windows.Forms.Button workButton; + private System.Windows.Forms.Button canceledButton; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.LinkLabel linkSelectFIO; + private System.Windows.Forms.DateTimePicker dateTimePicker1; + private System.Windows.Forms.DateTimePicker dateTimePicker2; + private System.Windows.Forms.TextBox tabNumBox; + private System.Windows.Forms.LinkLabel linkDolj; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox2; + } +} \ No newline at end of file diff --git a/SupportForms/WorkerForm.cs b/SupportForms/WorkerForm.cs new file mode 100644 index 0000000..0c138f3 --- /dev/null +++ b/SupportForms/WorkerForm.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Diplom_O.DataBase; + +namespace Diplom_O.SupportForms +{ + public partial class WorkerForm : Form + { + private Chel chel = null; + private void ResetLinkFIO() + { + if (chel == null) + { + linkSelectFIO.Text = "Выбрать человека..."; + return; + } + var res = chel.FName.ToString() + " " + + chel.SName[0].ToString() + "." + + ((!string.IsNullOrEmpty(chel.TName)) ? + chel.TName[0].ToString() + "." : ""); + linkSelectFIO.Text = res; + } + + private int? shtatId = null; + private void ResetLinkShtat() + { + if (shtatId == null) + { + linkDolj.Text = "Выбрать должность..."; + return; + } + var res = FuncDB.ShtatGetById(shtatId.Value)?.Doljnost; + linkDolj.Text = res; + } + + public bool isCanceled = false; + private Rabotnik rabotnik = null; + public WorkerForm(Rabotnik rabotnik = null, bool create = false) + { + InitializeComponent(); + try + { + ResetLinkFIO(); + ResetLinkShtat(); + tabNumBox.Text = ""; + dateTimePicker1.Value = DateTime.Now; + dateTimePicker2.Value = DateTime.Now; + + if (rabotnik == null) return; + + + chel = FuncDB.ChelGetById(rabotnik.ChelId); + ResetLinkFIO(); + linkSelectFIO.Enabled = false; + + if (create) + return; + + this.rabotnik = rabotnik; + workButton.Text = "Изменить"; + chel = FuncDB.ChelGetById(rabotnik.ChelId); + ResetLinkFIO(); + if (checkBox2.Checked) + shtatId = null; + else + shtatId = FuncDB.ShtatGetById(rabotnik.ShtatId.Value).Id; + ResetLinkShtat(); + tabNumBox.Text = rabotnik.TabNum; + dateTimePicker1.Value = rabotnik.Start; + if (rabotnik.End.HasValue) + { + checkBox1.Checked = false; + dateTimePicker2.Value = rabotnik.End.Value; + } + else + checkBox1.Checked = true; + } + catch (Exception e) + { + this.ShowError(errorLabel, e.Message); + workButton.Enabled = false; + } + } + + private void linkSelectFIO_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var form = new ChelForm(true); + form.ShowDialog(); + if (form.isCanceled) + chel = null; + else + chel = form.formResult; + ResetLinkFIO(); + } + private void linkDolj_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var form = new ShtatForm(true); + form.ShowDialog(); + if (form.isCanceled) + shtatId = null; + else + shtatId = form.formResult.Id; + ResetLinkShtat(); + } + private void workButton_Click(object sender, EventArgs e) + { + try + { + if (chel == null) + throw new Exception("Не выбран человек."); + if (!checkBox2.Checked && !shtatId.HasValue) + throw new Exception("Не выбрана должность."); + DateTime start = dateTimePicker1.Value; + start = new DateTime(start.Year, start.Month, start.Day, 0, 0, 0); + DateTime? end = null; + if (!checkBox1.Checked) + { + end = dateTimePicker2.Value; + end = new DateTime(end.Value.Year, end.Value.Month, end.Value.Day, 23, 59, 59); + } + + var _rabotnik = new Rabotnik() + { + ChelId = chel.Id, + ShtatId = checkBox2.Checked ? null : shtatId, + AnotherWork = checkBox2.Checked, + TabNum = checkBox2.Checked ? "" : tabNumBox.Text, + Start = start, + End = end + }; + if (rabotnik == null) + FuncDB.RabotnikAdd(_rabotnik); + else + { + _rabotnik.Id = rabotnik.Id; + FuncDB.RabotnikChange(_rabotnik); + } + this.Close(); + } + catch (Exception ex) + { + this.ShowError(errorLabel, ex.Message); + } + } + private void canceledButton_Click(object sender, EventArgs e) + { + isCanceled = true; + this.Close(); + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + dateTimePicker2.Enabled = !checkBox1.Checked; + } + + private void checkBox2_CheckedChanged(object sender, EventArgs e) + { + linkDolj.Enabled = !checkBox2.Checked; + tabNumBox.Enabled = !checkBox2.Checked; + } + } +} diff --git a/SupportForms/WorkerForm.resx b/SupportForms/WorkerForm.resx new file mode 100644 index 0000000..174ebc7 --- /dev/null +++ b/SupportForms/WorkerForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/bin/Debug/Diplom O.exe b/bin/Debug/Diplom O.exe deleted file mode 100644 index 518aec5226e90c3131b0ac94a8d657f0bf66b8da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58880 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

?x`7q#1%^xFd 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

cKp4 zAGjaP2MfRh;6bnuJOq9Oehe0Y#b62e30Ml2f&T&zgXQ26umU^^R)SUFG4NBc8hi*o z0w04$YK$jPQaWiozR&2!b%~Jm?eO#^`>;Ic86y?|9JRxNvFx`$^g> z#eNf}j;HFA-%dQ0zLaLhei&P$P1qm+0SG_<0uXr40=rTyxjZ8tNVP`Q{4l?@Q#Nii ztw!zr{T+SRGOT>nYZ%X!)oev2d2LnQB67cTWm43L?2VAg1=*QJR?M+jGD9Pc_D0I> znsr|w=^25#r}l~CbSQhVSn|rOc<`bdhILe$Y`?$5_UU}p*EH4>%h&0i-wo&MV2L?% z$;#fjQzE7U5o4!Dq~{Ne$oiD~%4jS(Gb4Wfs%6}$o1V9KaL$QQ$zCg{!GcVV6S~PP zL|&_?>uQ;3#R}1`7YZa-)bvU@OWTQD+BjJXGAWhwo7wU<*-*Dh_Ijn5*Jy-IRjXWd z=3^TD=5+hj1`SwIx4Z!xhGpJrwrcxEsJ&U$n^r5>STY-JerEVByVJX?tS2Y$1j}ey z-ATQCoj!loYrd>`^}B0^Wwur02YQzn=3iAeasU z5P$##AOHafKmY;|fB*y_&|lzIWI{NfnVXXm%K3%Pq5Y(D&^b(9dHuD8#mfunWs+K4 zNvBuR%l0?+WBbT{Y9HH=Q|V0TXMw(E50XlIC;A51KXpDcMka)r%=Db3DAUv4@bqFj z#Us(7G*V_|G3E7z4^D!1!(~z=_(t^TgpkN2=A?Ngk)Wf!$(NiomX_F@nKa+C9eV_S ze3^86C|fC!rIRK?lb+aIT3lYrq%VhN>b~rmkNs^v68}Sp|4Db)AOHafKmY;|fB*y_ z009U<00I#Bp9@HlXj0_g{D?{-J>*|-7-9GS(fA`F{(Jma`h*Pv5P$##AOHafKmY;| zfB*y_0D=F4z{}B5L0S;)@9anRapzv=3;Jz_2li3)l?ZLWD%oGtuSNVq>>p|KJ^P9M zGyM_;JS9FyZ@*E=pP#dAOHafKmY;|fB*y_009U<00KiSfcyU;E-q4o z00bZa0SG_<0uX=z1Rwwb2si@lKl#Vs|FIk(009U<00Izz00bZa0SG_<0>dqU`~Tst zFS3IG1Rwwb2tWV=5P$##AOHafFag~EV;w*M0uX=z1Rwwb2tWV=5P$##hF<{p|HEHn YWC#HWKmY;|fB*y_009U<00I#B8>FP@qyPW_ diff --git a/bin/Release/Diplom O.exe b/bin/Release/Diplom O.exe new file mode 100644 index 0000000000000000000000000000000000000000..ad704487d706b679c5390d8c4a34aafa67be601b GIT binary patch literal 155648 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

_Vr04b`VpxlaWkKldq= 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 literal 0 HcmV?d00001 diff --git a/bin/Debug/Diplom O.exe.config b/bin/Release/Diplom O.exe.config similarity index 100% rename from bin/Debug/Diplom O.exe.config rename to bin/Release/Diplom O.exe.config diff --git a/bin/Release/Diplom O.pdb b/bin/Release/Diplom O.pdb new file mode 100644 index 0000000000000000000000000000000000000000..21d203935f9638d4b34901595e78f9384d4f93a0 GIT binary patch literal 359936 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

7_pP~hJKo(!n2oLxyS6&sU75|{ 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 K9{Atxf&T)*#Dd@e literal 0 HcmV?d00001 diff --git a/bin/Release/Diplom_O.db b/bin/Release/Diplom_O.db new file mode 100644 index 0000000000000000000000000000000000000000..71d5cc60feecb3b8e6052de17ad2fe060350ea4f GIT binary patch literal 106496 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 MAOHafEP}xQ0pwG{lK=n! literal 0 HcmV?d00001 diff --git a/bin/Debug/Microsoft.Data.Sqlite.dll b/bin/Release/Microsoft.Data.Sqlite.dll similarity index 100% rename from bin/Debug/Microsoft.Data.Sqlite.dll rename to bin/Release/Microsoft.Data.Sqlite.dll diff --git a/bin/Debug/Microsoft.Data.Sqlite.xml b/bin/Release/Microsoft.Data.Sqlite.xml similarity index 100% rename from bin/Debug/Microsoft.Data.Sqlite.xml rename to bin/Release/Microsoft.Data.Sqlite.xml diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Relational.Design.dll b/bin/Release/Microsoft.EntityFrameworkCore.Relational.Design.dll similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.Relational.Design.dll rename to bin/Release/Microsoft.EntityFrameworkCore.Relational.Design.dll diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Relational.Design.xml b/bin/Release/Microsoft.EntityFrameworkCore.Relational.Design.xml similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.Relational.Design.xml rename to bin/Release/Microsoft.EntityFrameworkCore.Relational.Design.xml diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Relational.dll b/bin/Release/Microsoft.EntityFrameworkCore.Relational.dll similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.Relational.dll rename to bin/Release/Microsoft.EntityFrameworkCore.Relational.dll diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Relational.xml b/bin/Release/Microsoft.EntityFrameworkCore.Relational.xml similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.Relational.xml rename to bin/Release/Microsoft.EntityFrameworkCore.Relational.xml diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.Design.dll b/bin/Release/Microsoft.EntityFrameworkCore.Sqlite.Design.dll similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.Design.dll rename to bin/Release/Microsoft.EntityFrameworkCore.Sqlite.Design.dll diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.Design.xml b/bin/Release/Microsoft.EntityFrameworkCore.Sqlite.Design.xml similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.Design.xml rename to bin/Release/Microsoft.EntityFrameworkCore.Sqlite.Design.xml diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.dll b/bin/Release/Microsoft.EntityFrameworkCore.Sqlite.dll similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.dll rename to bin/Release/Microsoft.EntityFrameworkCore.Sqlite.dll diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.xml b/bin/Release/Microsoft.EntityFrameworkCore.Sqlite.xml similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.xml rename to bin/Release/Microsoft.EntityFrameworkCore.Sqlite.xml diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.dll b/bin/Release/Microsoft.EntityFrameworkCore.dll similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.dll rename to bin/Release/Microsoft.EntityFrameworkCore.dll diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.xml b/bin/Release/Microsoft.EntityFrameworkCore.xml similarity index 100% rename from bin/Debug/Microsoft.EntityFrameworkCore.xml rename to bin/Release/Microsoft.EntityFrameworkCore.xml diff --git a/bin/Debug/Microsoft.Extensions.Caching.Abstractions.dll b/bin/Release/Microsoft.Extensions.Caching.Abstractions.dll similarity index 100% rename from bin/Debug/Microsoft.Extensions.Caching.Abstractions.dll rename to bin/Release/Microsoft.Extensions.Caching.Abstractions.dll diff --git a/bin/Debug/Microsoft.Extensions.Caching.Abstractions.xml b/bin/Release/Microsoft.Extensions.Caching.Abstractions.xml similarity index 100% rename from bin/Debug/Microsoft.Extensions.Caching.Abstractions.xml rename to bin/Release/Microsoft.Extensions.Caching.Abstractions.xml diff --git a/bin/Debug/Microsoft.Extensions.Caching.Memory.dll b/bin/Release/Microsoft.Extensions.Caching.Memory.dll similarity index 100% rename from bin/Debug/Microsoft.Extensions.Caching.Memory.dll rename to bin/Release/Microsoft.Extensions.Caching.Memory.dll diff --git a/bin/Debug/Microsoft.Extensions.Caching.Memory.xml b/bin/Release/Microsoft.Extensions.Caching.Memory.xml similarity index 100% rename from bin/Debug/Microsoft.Extensions.Caching.Memory.xml rename to bin/Release/Microsoft.Extensions.Caching.Memory.xml diff --git a/bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/bin/Release/Microsoft.Extensions.DependencyInjection.Abstractions.dll similarity index 100% rename from bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.dll rename to bin/Release/Microsoft.Extensions.DependencyInjection.Abstractions.dll diff --git a/bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.xml b/bin/Release/Microsoft.Extensions.DependencyInjection.Abstractions.xml similarity index 100% rename from bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.xml rename to bin/Release/Microsoft.Extensions.DependencyInjection.Abstractions.xml diff --git a/bin/Debug/Microsoft.Extensions.DependencyInjection.dll b/bin/Release/Microsoft.Extensions.DependencyInjection.dll similarity index 100% rename from bin/Debug/Microsoft.Extensions.DependencyInjection.dll rename to bin/Release/Microsoft.Extensions.DependencyInjection.dll diff --git a/bin/Debug/Microsoft.Extensions.DependencyInjection.xml b/bin/Release/Microsoft.Extensions.DependencyInjection.xml similarity index 100% rename from bin/Debug/Microsoft.Extensions.DependencyInjection.xml rename to bin/Release/Microsoft.Extensions.DependencyInjection.xml diff --git a/bin/Debug/Microsoft.Extensions.Logging.Abstractions.dll b/bin/Release/Microsoft.Extensions.Logging.Abstractions.dll similarity index 100% rename from bin/Debug/Microsoft.Extensions.Logging.Abstractions.dll rename to bin/Release/Microsoft.Extensions.Logging.Abstractions.dll diff --git a/bin/Debug/Microsoft.Extensions.Logging.Abstractions.xml b/bin/Release/Microsoft.Extensions.Logging.Abstractions.xml similarity index 100% rename from bin/Debug/Microsoft.Extensions.Logging.Abstractions.xml rename to bin/Release/Microsoft.Extensions.Logging.Abstractions.xml diff --git a/bin/Debug/Microsoft.Extensions.Logging.dll b/bin/Release/Microsoft.Extensions.Logging.dll similarity index 100% rename from bin/Debug/Microsoft.Extensions.Logging.dll rename to bin/Release/Microsoft.Extensions.Logging.dll diff --git a/bin/Debug/Microsoft.Extensions.Logging.xml b/bin/Release/Microsoft.Extensions.Logging.xml similarity index 100% rename from bin/Debug/Microsoft.Extensions.Logging.xml rename to bin/Release/Microsoft.Extensions.Logging.xml diff --git a/bin/Debug/Microsoft.Extensions.Options.dll b/bin/Release/Microsoft.Extensions.Options.dll similarity index 100% rename from bin/Debug/Microsoft.Extensions.Options.dll rename to bin/Release/Microsoft.Extensions.Options.dll diff --git a/bin/Debug/Microsoft.Extensions.Options.xml b/bin/Release/Microsoft.Extensions.Options.xml similarity index 100% rename from bin/Debug/Microsoft.Extensions.Options.xml rename to bin/Release/Microsoft.Extensions.Options.xml diff --git a/bin/Debug/Microsoft.Extensions.Primitives.dll b/bin/Release/Microsoft.Extensions.Primitives.dll similarity index 100% rename from bin/Debug/Microsoft.Extensions.Primitives.dll rename to bin/Release/Microsoft.Extensions.Primitives.dll diff --git a/bin/Debug/Microsoft.Extensions.Primitives.xml b/bin/Release/Microsoft.Extensions.Primitives.xml similarity index 100% rename from bin/Debug/Microsoft.Extensions.Primitives.xml rename to bin/Release/Microsoft.Extensions.Primitives.xml diff --git a/bin/Debug/Remotion.Linq.dll b/bin/Release/Remotion.Linq.dll similarity index 100% rename from bin/Debug/Remotion.Linq.dll rename to bin/Release/Remotion.Linq.dll diff --git a/bin/Debug/Remotion.Linq.xml b/bin/Release/Remotion.Linq.xml similarity index 100% rename from bin/Debug/Remotion.Linq.xml rename to bin/Release/Remotion.Linq.xml diff --git a/bin/Debug/SQLitePCLRaw.batteries_v2.dll b/bin/Release/SQLitePCLRaw.batteries_v2.dll similarity index 100% rename from bin/Debug/SQLitePCLRaw.batteries_v2.dll rename to bin/Release/SQLitePCLRaw.batteries_v2.dll diff --git a/bin/Debug/SQLitePCLRaw.core.dll b/bin/Release/SQLitePCLRaw.core.dll similarity index 100% rename from bin/Debug/SQLitePCLRaw.core.dll rename to bin/Release/SQLitePCLRaw.core.dll diff --git a/bin/Debug/SQLitePCLRaw.nativelibrary.dll b/bin/Release/SQLitePCLRaw.nativelibrary.dll similarity index 100% rename from bin/Debug/SQLitePCLRaw.nativelibrary.dll rename to bin/Release/SQLitePCLRaw.nativelibrary.dll diff --git a/bin/Debug/SQLitePCLRaw.provider.dynamic_cdecl.dll b/bin/Release/SQLitePCLRaw.provider.dynamic_cdecl.dll similarity index 100% rename from bin/Debug/SQLitePCLRaw.provider.dynamic_cdecl.dll rename to bin/Release/SQLitePCLRaw.provider.dynamic_cdecl.dll diff --git a/bin/Debug/System.Buffers.dll b/bin/Release/System.Buffers.dll similarity index 100% rename from bin/Debug/System.Buffers.dll rename to bin/Release/System.Buffers.dll diff --git a/bin/Debug/System.Buffers.xml b/bin/Release/System.Buffers.xml similarity index 100% rename from bin/Debug/System.Buffers.xml rename to bin/Release/System.Buffers.xml diff --git a/bin/Debug/System.Collections.Immutable.dll b/bin/Release/System.Collections.Immutable.dll similarity index 100% rename from bin/Debug/System.Collections.Immutable.dll rename to bin/Release/System.Collections.Immutable.dll diff --git a/bin/Debug/System.Collections.Immutable.xml b/bin/Release/System.Collections.Immutable.xml similarity index 100% rename from bin/Debug/System.Collections.Immutable.xml rename to bin/Release/System.Collections.Immutable.xml diff --git a/bin/Debug/System.Diagnostics.DiagnosticSource.dll b/bin/Release/System.Diagnostics.DiagnosticSource.dll similarity index 100% rename from bin/Debug/System.Diagnostics.DiagnosticSource.dll rename to bin/Release/System.Diagnostics.DiagnosticSource.dll diff --git a/bin/Debug/System.Diagnostics.DiagnosticSource.xml b/bin/Release/System.Diagnostics.DiagnosticSource.xml similarity index 100% rename from bin/Debug/System.Diagnostics.DiagnosticSource.xml rename to bin/Release/System.Diagnostics.DiagnosticSource.xml diff --git a/bin/Debug/System.Interactive.Async.dll b/bin/Release/System.Interactive.Async.dll similarity index 100% rename from bin/Debug/System.Interactive.Async.dll rename to bin/Release/System.Interactive.Async.dll diff --git a/bin/Debug/System.Interactive.Async.xml b/bin/Release/System.Interactive.Async.xml similarity index 100% rename from bin/Debug/System.Interactive.Async.xml rename to bin/Release/System.Interactive.Async.xml diff --git a/bin/Debug/System.Memory.dll b/bin/Release/System.Memory.dll similarity index 100% rename from bin/Debug/System.Memory.dll rename to bin/Release/System.Memory.dll diff --git a/bin/Debug/System.Memory.xml b/bin/Release/System.Memory.xml similarity index 100% rename from bin/Debug/System.Memory.xml rename to bin/Release/System.Memory.xml diff --git a/bin/Debug/System.Numerics.Vectors.dll b/bin/Release/System.Numerics.Vectors.dll similarity index 100% rename from bin/Debug/System.Numerics.Vectors.dll rename to bin/Release/System.Numerics.Vectors.dll diff --git a/bin/Debug/System.Numerics.Vectors.xml b/bin/Release/System.Numerics.Vectors.xml similarity index 100% rename from bin/Debug/System.Numerics.Vectors.xml rename to bin/Release/System.Numerics.Vectors.xml diff --git a/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll b/bin/Release/System.Runtime.CompilerServices.Unsafe.dll similarity index 100% rename from bin/Debug/System.Runtime.CompilerServices.Unsafe.dll rename to bin/Release/System.Runtime.CompilerServices.Unsafe.dll diff --git a/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml b/bin/Release/System.Runtime.CompilerServices.Unsafe.xml similarity index 100% rename from bin/Debug/System.Runtime.CompilerServices.Unsafe.xml rename to bin/Release/System.Runtime.CompilerServices.Unsafe.xml diff --git a/bin/Debug/runtimes/win-arm/native/e_sqlite3.dll b/bin/Release/runtimes/win-arm/native/e_sqlite3.dll similarity index 100% rename from bin/Debug/runtimes/win-arm/native/e_sqlite3.dll rename to bin/Release/runtimes/win-arm/native/e_sqlite3.dll diff --git a/bin/Debug/runtimes/win-x64/native/e_sqlite3.dll b/bin/Release/runtimes/win-x64/native/e_sqlite3.dll similarity index 100% rename from bin/Debug/runtimes/win-x64/native/e_sqlite3.dll rename to bin/Release/runtimes/win-x64/native/e_sqlite3.dll diff --git a/bin/Debug/runtimes/win-x86/native/e_sqlite3.dll b/bin/Release/runtimes/win-x86/native/e_sqlite3.dll similarity index 100% rename from bin/Debug/runtimes/win-x86/native/e_sqlite3.dll rename to bin/Release/runtimes/win-x86/native/e_sqlite3.dll diff --git a/Книга1.xlsx b/Книга1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..01fd6830779bdf89e60bc5c90358316d5880abdd GIT binary patch literal 11519 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