From 1400f42989fc3d1aeef8d7bf8201b324d24ca1ac Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 5 Feb 2011 01:00:55 +0530 Subject: [PATCH] Misc. forgot all changes Working on Cashier Checkout --- Include/Ninject/Ninject.dll | Bin 0 -> 96256 bytes Include/Ninject/Ninject.xml | 4026 +++++++++++++++++ .../CommonServiceLocator.NinjectAdapter.dll | Bin 0 -> 5120 bytes .../Microsoft.Practices.ServiceLocation.dll | Bin 0 -> 29760 bytes .../Ninject/lib/System.Web.Abstractions.dll | Bin 0 -> 84800 bytes Include/Ninject/lib/System.Web.Mvc.dll | Bin 0 -> 187200 bytes Include/Ninject/lib/System.Web.Routing.dll | Bin 0 -> 68416 bytes Include/Tanshu.Common.dll | Bin 34304 -> 34816 bytes .../Attributes/NotNullAttribute.cs | 2 +- .../Data Contracts/InventoryBO.cs | 9 +- .../Data Contracts/InventoryModifierBO.cs | 2 - .../Data Contracts/ModifierBO.cs | 1 - .../Data Contracts/SaleVoucherBO.cs | 1 + Tanshu.Accounts.PointOfSale/App.config | 1 - .../Controllers/BillController.cs | 1 + Tanshu.Accounts.PointOfSale/Program.cs | 2 +- .../Reports/CheckoutForm.Designer.cs | 112 +- .../Reports/CheckoutForm.cs | 25 +- .../Sales/SalesForm.cs | 4 +- .../Tanshu.Accounts.PointOfSale.csproj | 5 +- Tanshu.Accounts.Print/Thermal.cs | 7 +- .../BusinessLayer/AdvanceBI.cs | 21 +- .../BusinessLayer/CheckoutBI.cs | 298 +- .../BusinessLayer/FoodTableBI.cs | 40 +- .../Fluent/AllowNullConvention.cs | 33 + Tanshu.Accounts.SqlDAO/Fluent/Fixtures.cs | 120 +- .../Fluent/NotNullConvention.cs | 42 +- Tanshu.Accounts.SqlDAO/Fluent/QueryStore.cs | 4 +- Tanshu.Accounts.SqlDAO/Fluent/SetupStore.cs | 3 +- Tanshu.Accounts.SqlDAO/Ninject/QueryStore.cs | 24 + .../Ninject/SessionRepository.cs | 48 + .../Tanshu.Accounts.Repository.csproj | 15 +- 32 files changed, 4591 insertions(+), 255 deletions(-) create mode 100644 Include/Ninject/Ninject.dll create mode 100644 Include/Ninject/Ninject.xml create mode 100644 Include/Ninject/extensions/CommonServiceLocator.NinjectAdapter.dll create mode 100644 Include/Ninject/lib/Microsoft.Practices.ServiceLocation.dll create mode 100644 Include/Ninject/lib/System.Web.Abstractions.dll create mode 100644 Include/Ninject/lib/System.Web.Mvc.dll create mode 100644 Include/Ninject/lib/System.Web.Routing.dll create mode 100644 Tanshu.Accounts.SqlDAO/Fluent/AllowNullConvention.cs create mode 100644 Tanshu.Accounts.SqlDAO/Ninject/QueryStore.cs create mode 100644 Tanshu.Accounts.SqlDAO/Ninject/SessionRepository.cs diff --git a/Include/Ninject/Ninject.dll b/Include/Ninject/Ninject.dll new file mode 100644 index 0000000000000000000000000000000000000000..35fdfc41b1451c298d22aac9dfb25c9be134ee25 GIT binary patch literal 96256 zcmb@v2Ygh;_6I(9?(W@^Y{I4o0!gTsY!Z6!RYgTnL_tIZq*%C^1w@v_1O*WR!GemY zsGwp+<)NTpgIKU&eW+NU#)dvCcKmg+kK#(dfgJwlpcd?m;%ymXbLgegM~&lNDjhw2M!aNJl{2mCtn*7IpEYx) zGrMHc*(FtTW|qvDSu*s5lS|Hbrkq_FiG*8g)h7-U;yA+;=j>X1tee}1LYAf(K_O-t zLRgAAas}cgh_AzytfRP8b|c32(^Y&3KIrFsX`oyK7YWgX|0S;)vak?8E;q!f6o=k# z$q|SCo-{=Ip|t-6mk5Cpc)uX<(H;__a`xHtW&@9&346igvcm4vUx^SCE34vFlR;$L zU?Uf_3fGk1Kscnb>g@9z2(qoPnS3DT9ws+9B^gIMl3(#7+obS|wF`wfEzJ-irY3_E zON6LR!oQ7Gu5Vd0@XR&Gm-$wXdZFgAZSVFUlGnZD!`m|Y&DpcEd-lkT;#o6>=G?UZ zz-8~u>G8;x_ukmu`?364AAg+IYy3rze17-M)gwB!>wC)NXxH!dmv=s9=WBxoU47rI zaUZ2$aPF>XuS?F@x9;clzfFJfgK58Yjvcu31N+-kyGSybz&~l5ZjH9Pr9u8!}L~ab%K|3FPfF z?OgC@=OL?V!evPYXsL{;(uN6^NiATO9W`LCX=kY7p?szo1goF|HR>!E4EkePQ6q)CYe>4Ubc3G>~PS=t+FFA(15J6uq@kQ zRu#L6{8b&?sOj^|gBD6>#S39YhA+b(e~psBNf?WilQ;tJQIUy(u|P36(mhkyO{o~o z5R}~^6DWYM2C}}2XwE^aBk3*ztCmPix8b!|nJ`g*W>z_FrUBCz?+x*4N~nt0CY@_l0n@1g*MWP(0aosmAo_kFsH)I(7J)qn zMU$xXEGux(`WYF;OCjW>DKm5(cNQ&9RCP>!^2C?yO_=;Ae9#doUX)Lh#=kMOC%Vgo)|073^?71cMF1S z-}|khtsT-E9Wq0%mWP%Y8_3;bb6t>K2lC)&?3Ua@7(E63U*B)8hm9VU=zf`5e2ocUZ zXq2s%HRuhh@pXa#i`Ei}>71yo*D7GhDzMC?hm;|(fowquY3hr{f77;*Fl*h4U$YbUKxPXD@#uF#pJ-^S9s_835xy1hlj3FB3JdrR7ADHuqoHRxKo6H&Kq zaU=1Xx#_^MVRB*u4Ooo@9036{pCWJs1PoA$z>zhoH==WPBlSMJ2VGPjiNjrCyB7$g z8Kb>Q$C1Tmd7kdy88VRxUODlx8UWxr zV#IU6a8O8eQ%Eq|OnQHilr!d5~LL4SFp5B3u#55;n%4@QkwDvI&wE zvZty^zZxyeD)(U8Yi4684AV5=c!f8ezMw55uGi+_Tv!?A$(bXV&QO@JS#?D+ojrg= zx=VW?aU6J>XHGaxCFDqNl@PTF2NK^Ns^yTOsy&V%NBBVzI06FZT1DW<0o5+dsvBGr zd{wu*QGeCLZWLLKCg=L>F?8|Ur{Ut2Y_3dP1+_LN49mF?j+BY3flX%?;$u6cAnj9tq~=sp?sp-u$5ZSq zsB~%(OG!u*cB~?*DE41q#@9h?eyRxUL4OV%wEhGqJ`9ev!ywt{X)z4xM}q+7L1G?5 zOmw&yEeB%h0q0l{f=&e%CZ2C5V0fp6O5z%n$r*@b_HmG+Hs}+RP<|+n#{U96E#Rvr zp_FzM;8az++-fkLIw~JpU<~sarcWzAl59W|kI~!&!z&^xk?9PD&N7TDOUa!2l!b`2 zPbLSQh?Esrxe-7QqKoN_0?|1MfmeWsWa3(~%2_~(HbAKpMNX+W3phTO)Ns9;yv~Hb zqH*kPFqg<`(qOTks@L7ZU>uiJ0%RO6gQb)stwFq;N0>6Pn!I)k<&5?Ruc>y^4OjR* z8aG+LubRYC{HE6i8&GoO;-g&9Qo^)IjWtq#U1RlBC!`zI8IAk3Zjw1%_Z>>Nb(n6{ zDHVZd>9VVQHF-$ROS0);#L<1iwM1gNlcNoC6WvaAhD7;pqH`$``c=4=NKAKf8z)lh ztnP5u^$=0jjxsbuSzx+AV~OUZ#{)2wdKk%sSTfnQd{v*hm7-YO%N&>)bI{Sl*}hoc zsLw$Shr^aL4wqm>1f3vAg{MxC9^`J2W;y8HVO3!P?i5a6_z7v-fnM<#mM}gnVSH){ zgEb4$+FmM|p-+Th!px>mf^HThvdRh%u*sAj8P(7T1~mK`VGC_m2; zV_)|CjFuNJ8)?$68FSRp za#)a}Wrx$^X;ct@)E{7{SCdLub`T3(lx7A*sCUQgA_VEdiUQN20XypFylshMsIfRG zZOo%q(CI{^G88o;%}}!Z*}hPU17IS1KrNDcJAeK4SL1cEE_<=K{*lII_Xg%0VQ9+0 z?2gMApp`RA6-6u-$?RT#P`C%dDmGxQr&c6-A^z z567r>G#|x}pNI6dL}I#A0wvU*w`pNyrGyinFp+8~aD`Q0Lcf6-s^4$~1el}<90399 z6@eoll)40tfY8z?iyz^I_IkO+=SK3Qo8u)L8uwpsFiXtg(%q&(QIXdua%U;1U7{)9aaPIIVBG{<<)J8Srj`Bj6wkr}#{nmtBhszAwc-~b=_oC(BJYmUBfE7lLucqY0x?T<;!@>P?Z#c7fgs?GlKN;)uy_wnd0=3U#-ln95<(s%WpRolPPxCD-XQ0Wpl0zwCuz!4BSx&)4Z(8(om1cc5mfg>PvaS0p& zp{q;a2%k-1-s7L!|BK!JpK^YNs@o2qp+oPYi(mEJXDN=J`zl@In6bn5^AydqcQeOt zzr1=@G&}kQG&Rb%gWFDgsYiH_@=hL~B5i6Kv!9^2Pg&)+pCROT24k?+ z7CJ*H&iU)5MK=_k*MkH|S?{e7liQR1(IOkDyq5qBwlO>}pwiz8E| z{Wb*6s$-Df(PD7v)Y1w(Cpl8O_(T!kFrGwR8xgrkZ@WoBg?R>5yNs6V@4RL2A7I2-Us7gULTAUdI^;1K`Ac=Q!A;Z zs5bysO{S&yCT}D_k~QCVBQZR8+PZJzV6G%~jLfVk=F2 zwil*DKN#I5;9QD`w#1@i#Be#zo~Uq^vlxhtb_th(&^Dk}cDvpW2g)(vQepSGs+W*} zUf(nq1IE)CVmGK)xg<^{5{o08yb;lY%>KW3z6U0esj-7G>yQO;V#%DenDk5 zouz=~JxvGGR2at-qj1SvgJnM^)Npyp9v_alIEm#fCrXA4*pyemPN$yc8om%b8*2bs z2d1000bYCsX!EhqwSSJmkHrZoo&8brw7@VE1V8?6z#kfn=y?qS znX9xXNI^>Nsw}v*NaoQYuBzzjJ0U9bIbCcZZgLRjny<#3=mUWaQ>kQvNDh^`dL2;< zI9Y!9{We;IPTmgMD;~xi2J`c9$}Q~z#P-2cw6=%e#g;AVOcA3hX)0?PzYb~UbNj@? zMl|)x8n*Js4wE1m`mc=ik>=$6o&q78Hr9s;G>0m{R1Qg2Nj23-*-Xz4=09M9tDdh?=#t9^(_;4MJP#2~&JQ z2UB}Ehy(WYNXTx2)=7u$*bQ-C6QYgic#24ePmQ*cGg~o(`;ku!ge^s6i-T1`xTZI> z@euzDnS!}ITuUUT+we@xZjXTW1{jf08@d-@{FL!qAYDy^myEBYC|RcO1);nsH@c^2 zj=bV%z8D9qaOZE9bWVmA>6{Ic9YEAU-GKKzcxDO}4G`3EQp|GDt`VJ`jN+icr9SON z9n?`c?R~5;Eq(tXik;$tnUFY4#ecGA()6S~7@qzId-i)q z{15gd0!Of?>Qhj)?VEyLv{%TD9?4+X=KAoG%UzrOV#^^m{{|(J_vA@OO1{S?ZC|n} z^$dG?Vdz5BNpUTw{u}?kj&z5r*R5hrnya#^OS%{R(u*FsP;Qyl-|d#kC+ZF<(+v^I zl=f_??czO9eM~S_|De4}_XHkJ_mT^(byfy%xiiPL&o5RUV&DJh z^9zufs&#GY|LF53Q8!)HbzbyH=DNPDxzx4Q6k`vubwU<=nd-(nKrmAXhkG%Z|B*6< zemCEvj!))$Xx~08-^tl-sSeNaH;-3!UydtQW#oF%WUo1rNv=Jqefyk4{BY#4rXE@7 z_K?~m{-!hh<{5M(E0TUWZG!6;pEwG3wD87znHFnfRZYngvjUD<_%Fj^%m~-d1Q&Ur?hy+sRx4TKYyHz!&u`~^A;aCf+YT1$KR{S2Y=O5Wy$vXMVZ-ikj z&%xtyP0mBofdZ?dz^ZzU^(W^e&bQR6`o1w;C9o~{jVcRE7pka3rdhX5jyTb+C!fF? zhTN;?e(4ON70kUzn;y)sObfQCY#JVe=7CmT0*KPcD>yS|k))F{AU_ zShG9?Ed^r>oQIXR{hpLE9{0aCgG1-=g=2?dMUC4M>Jc{D7v|s(%V%!UZE?k+iRg?! ztjR=w{0+t52>hLhKWY+V@E03b^(`_ftNM*YUm?YtaM+Z?wj6flurG(hIXscW@f=R) za4v_7IlP`i{S#^&ywD2lyP zATQnu8vs;90`16Gjh3wTOGTh!zvLIFC%s>yBq{r)C1A|NU(ZVrU>Cp|Wr8#uZeI-c z@piZx`e>I#(y?CH6cJXtB(yHtCDFy+ibBm92))&4X|z2edA&X2j8wXI5UbcG?bfhX zZI4Q6J3|{u>OVeMwqb*}pCMI$vp*u8N8TTi>c80^vA*Q~i0w+*ACcF2f0Q(s_D5V` z8-}a;io!;!FYJ$WO;l4&SY_|*q4M*#TB>bzOWX&b0ymYs@vg{{HID&1k0Z!AXwc(0 zd1Y;-neS|8_1H`M#Q^AU1^s&l!6&S(>JBs}I#CMeFGmwM(gJzrZ2{*A5W-eY{_+55 z>A^gCThMtDv^j*y)+6fL^ncS;@}G1)`G3=e5e0V9vs=_LTl4tx6b!~OQNVc`k+5m; z>99Ub`7-q|MW3GpMAK4toH9iP^t53;&rtF`s2lCFmtk6QYiB2^4`5u`g@{v+z?wf; z;xMD?AOzyif-t{qjI^Iaq&&TEIAAT!G^aM)5a*oHr3@ zg7X&QI9q47^UqYUm%z3|)%uo=#H3d>+RMhI(?8toeTT&9-i_qx9EjwNOFEPku|tzKHg+hTkCH#zu|L1(d}TE`#wr^j<2X_b zS5vRjH@3n#G-52k0=29u&rP`e1UCAII{$?#QF9b#96qta!@^el0Qj{;VtVZmiXH7r zwD%;4#Pr&s6g$S1DDxzU#Pr%>6dU16#5@TiF}-#;Vsuc88Ht7!o^LM2)kZn(UP!P9 z9ZikKYTCjSwPy@k8qaCB1@q%L_(L5yICMiZGVSh26R7zW$aH?=@IHjj?+D7Hfto*( zq(2c2)Ep%4UkI!{IDb}FKqW<=@f(eG&Y!^>%-grPd5L(L;uER z?Prs1G9Bz`!h1Z&RHg-La2%=2lfGcb*04Dz9d51&)R1pt zezqblFFn=~x0Mr^s)>5G42QEs6&@Yp z+hlkSjntxzH>2+8w)O5Zu@!CKi3izrz3RAT(a~vX&(b@+9MIx9FIgi0G$XF&x1fMk(h47 z6*1>-w0@Y!^GRP^JHWo=Vp}G5K%DLmZO2vLAEKz*;|%0-$OH=Mt9}9jd$1R%n1f95 z4)k?|K9xEW%BxHd74}&TYR@eQF#oVB`ve$QjU^^+Q%H-0hYG^gJBg6bBC+$pA?!3I z&eMp+n<0kx91;YaB7gwRWTeG%nv)dPn!fkVw(ob835wci&{laX$PjW`kjUeR$wJN| zKOKT9H=Pw`f^fxUcsv`$QHt$iB+5&t+dKV1+=pWyeop{zUI}}FFsA_eP_S2D_2xFp zq0!ui`C4@He1Zdpv3#e@06C05y7K)a$~8H^6$#m*vCicFNcj+JD0NG(nre*qN6cWi z(f)|thfyD$ism}3!MU!nKhm{W{Uj1vWi?foQpYMmQJqo*D%O%>tq`cTV$%It+O$XW zmtzhx!d70@y-0SORm<%Zt8FZARr}@05gYEQs1dKrq2G=pjOSBYQ{HVTvk|6q6o@jh z3)<*~7`nyEXGM?V+J*dRkAZ-CkQRL_7B*{6fGjuqGr)k6`I~~cf-oTR+VLF!S zh$}sbfCu@)6%l(pxYF(n&;+w;7h;kQ)G+H%)z%ecU4z{aO$+cAsv-z=loC$~Q<_qw z>4tohH{-)r{0Zn!!)$Oq-yQNP4?&wOk3n9^Tl5M>tkL~_=Nu@a=e3Yi zOxj2v!&@&VlX1UpI&skk0%{CTjDmZ4_~Qr~#o5%rCsX@H<2uRZa%6Z0924ypzgt<`cu7&EW+I+Z+r`#U+lV0M-L!X^u^a;VGC-5~eeW@Kt8= zp*fdvHW*47-ozpIu0Dbgsdt62{=(#d=V@7Uyf>vm=}vY_#}N=ly9ADaaEeRdh&$zh zQBMq7Q?*2$!v1J{D4J&&4?Ph_nwV`c-l(;x-@cqm@`73%raX7ztJh43gz9UsBXL|R7 zaTPh`P6U|tIHv?DaF(J)_gYD0I>*3s3{1U(8v7uWw|pKZERRGd7c@yKNdnGb2sv1L zgsWdAUOwxlU0Z@MJs4CE`rV2zqpt|E~qlJ`8L+zvYA?@Q0h*A4^9ar5xD5~1W7!-oecCoK2@k&kL0q$*`kJ`0R7_>0kFADoR$kSduVB`J0ME)nxt zgzK2Fs^hnbBNKF?eJa&4DbjV!Iuk7I*72#ZO4adbs*=>R-Q~-@IwnF~!yDHz)fehm*MzDBvzjUabxi(G)-i@fI9JUk90B1} zm%tGaPICzy!C3z=1{i(%3-(x-%@GjBxde`YaJoz22ngd{0!KhN!zFM8gb6NzBOsjV z5;%gVbK=dgJhz{uu@23H&fZ`z|J*?v?OmNy`jXEGVzj-7hE1P+A6?=@FbLS&I69P~ zk0+x$C|WZF`Pz>nddSHB50Fe}7}6ZVc!U`|l!O%aY=%xV%=*B)+E;tNO!iEIh;&(0Lk(jYW{u*`IWd z1BuE_d`~Bq!iVW>s&(R!kJ^Lj+`^UK=$TS1lKEsHhvtVBCf`vmFH~1`oA*9&&@~~) zw|TgHv_~62wqSd}wh-I1%n_a z3YoxOB58`}o55tuxnNQIA(2#D2sgGR*o=I`s*YgGd5}MnEf1N_-LRp&rMjxmCR~qN zQV(V)uwM%6cfU|=UVp(58;#Edk8C3uizRIb(Y9XO!ZxN+rstTc0{qyy=`_KZA#o_p zwOBJ0W4CiVH+`2x!}%d33|xnjh9^m07gBnrD%Jcd4?Y{Qf(nPN4?e(g2tRr%-~PSP~;sOfWZxU6nF7$FnbjD^h&*>o!;jwtpzJ~|tuhX$f??Bm$K zB&79hfF87TYzo8ixd@yKiRX1cXq*Q^szz03q!Uhy#<6K+og}7p-l25P2jvi*XVW-? z0eCWe%ez;OV7tV(6SI&`CMJPrIte6JW4=kxxC+z;_R~o*GfN!IrAfx3*XCnoTT+=R zIx3_O_xqI21<5;*dWo}SgM z(JQ;ZV4e%*y5WCE9{4xYI*2QehY4ie6;yl;W92rc{Ib&;x=c?^ilm%|v`)HfX zwQ{~I%Mm1==@K|HQL9?c6-v(!i?kTR$5ag95)e1K)~u$~pIUS)h9|3mJMwvx#pNG?9 z#X;u^MAA&0M0Nl(;B-XOink`=@d$$IHHWv~4+qNuXyu$-kJ}=4vbr}9+b?i!=LiT@ zE`cNetuS4Y84A-K7c^!n3zpB~m_y6b1$D^93kH@?{NuZq`!7^fQhyIqsUw5fEm(1djZ-GW14PC_`UdQpzym&@%J_UzZ_) zsDn{al>vjGDnlQTt>k;Q|EDrwyi^^KBPaugNk!lY)=O7`U|&sCfNKa`OTdKBC&K6S za~IJQ-B#pN9d@RR(JNLX5lVXf4&S@YQj9GB~% zht}O;=Qaf8rBVS*X6jbbdPFRKXU4K4XkvKci=~%BWqFkb7}dgf>XI3w5YJna9@taq zuB|GY2KJy^tA$o&B(TSF0S*a*CQV^sytNPIK|6!82<*X~043ffv#~^(RN1Ih^sNcI=f-4^ESb&S=gb-rO%Q|89=yX2~9-Ws${GBJK1gvwyS z{kSTC?12dK4oWhWF&51+0wii< z)ygv&s#8rP9JxcrvB?fsCqQ*)ltOoNjD9?X^qxn#r`GFNkao(6O7%Je^>YH%&ukpX z;KMk{G9*Z?={$-Yuv^z?E18TFU&nz0daeWKPb_C8SnoFQrF|}#w4j2@_+y~hSb4>i z1a8+P^DyI6$&TJ~Pr&U6*kSP;fj&r&pfvtg#9gijeNIax)HmlhAEVpNfIyWGt_f%HN-V8hzX$>RT~mKpzy0*8=L<@;sUHoTu|72`|r! z{(GKJ!Xo5(8RhvDS%=oh^-rq{6|N z-^PMTohaRA*_V@hTA~-;%Vv1>OTW9zV=daQD zOWL-V53}u+q;09XQ?rFxsjT7B%<&v~>=A45J2X*MgUUzkVF%XP(ReMlVP7=~@V&h{ zYQHpJ`rWEwjmX1y7$wJZ4;sf2+RgV~u2e6S=UB>fq0W=ooaZH8o^H8#MZ{=v(Recc-QjidZ7)%g*h^ILRieway7JXbN&x$Ow$LSIZT(ld9;?dnD!Kk)hK zi=j>!LoMCF4$+W{cKRyZNFC9BjUsJnBl)@)dxK&aOfQ91Ji2lOgheiaBlyzY0jP_A zi9VXgBZ2)i^=9nCJ-Vq#y%h<$ump{dYfu)nxu}f4iR`K|!Qu5)jxOZrTSUEtqJ00` ztjcqX>Z>YuqyDP?ZWQDA%h{r2;?U^1Y&01HBKI_xydyXbEW;0FKKBxY|%Sl(P+9jr0&dM#Z3d$pR8st}M zrSAjHM}rvc<);KK=L2x`p~9BNhYHH(EHQGT`@Fy87kqH0fju8pzk?+xs@-%>qJ0t7 zaVOY$CfVtH2)${s?11wTBItZJD#zlcr8obdHro6noyspDirc#RnW8V~6S>@nx+_a? z5$UrCzonM&6t9G)^D(k+%X4Eb^qj?dM!H?bm-3Ziej^SmU@lY?g~E4!IF7Y!EL}Y@ z6Ok51^E~HO6g=A}qxibkUW(F(yiz`*$e#|%4n*;s>N?mJ4P;yR`YcwZcTi8DK2;1` zxKCAiwlwNRCVi?mx%i)pP2G>ES#HuY@e`u-zM17*MNWq<8c(oN5tC59_+kv9c$T-C z#PF$LN*LfY$!|jG%tmqD;VWF1(Wv_`xXL~WB>KEza?0o|9UKx^6*3=pD#((bDSK=f z=~f^E)7ebc=F!(HG4NqyK_Vvm2E!<88ubAf&5NUo!9SPUi4|@ zrIhk>N_i?$)?DUh_AX@xPlRiU#B};}XpEjlLUT|X)Regm(_&8Q*Ra)7;FC~8zaYJC zE9m+@)l4R7I?pZ%qN`z%+7F%W-G=KF)J;wrzJPcIY@{zBk{G@*N(w`qCTWQtPW6YL z6;d+%Y)eJ2#*K_Wg1C%|PVEfOs!>Z*pGI6x)E=PX(}+DlZKP{3=!bs3S&tLl#aY+6 z-^Gff%VK41O7)x-_X$b&TIsvRjpiFnHPkflCXITmjUIc)xN13D(4+(T4$dAdJZ-9; zb<4-cK-GI=?M(F^S+VJ$I>QzD=AL2h*0&P(CoxR$x1H&>5bos%#6Vo>mvRT)m-18@ zj(XJiLi47M(y*hWH0s1}q%!rEX3Fhke2}PWBF3*hSVHM@ps^6e^J`2t?JrQcvU6k= zzK1ufm9n7!K>G`7Zdh@}usC6sxvYY$XKAFp8`AmoxmgwO#Z7izGKzNOQgJ5+QC@FuMp5uB7u5$G z(7g$FR#N_gWV9+7jVGhC5rsnrpF9HNgmOqad@{FlWyi{H9eZ@fa6&KG!y1u}A-q+M z5c6<-aya5A&#sy=a~hQ4(Y=?1sBI3~DJP3Zzf}M4N2{YwIc6w$&jGJ20dMem4t&Tz ziLP;K@s_ku3&7uuE_4u1xud88bD=;p5U5;%kw$!hIO>%bG+5G6n-L)MAL)M(e+8g- z#PxRkkscrZy5kSEBTz(o7Zty-E}@10SmM{PCDJ*}<*)%01bw(y~N;POG#GaZxVo$tT<1Dl)V~Ir^%Cm2N`?$?V|p6@(e0Pi2Qn zl)3|Pf9*h&Q5}i0u_HP}_(t@}6NcI-j)nw}JX*pujKy(r#+!$H07O-qQgdI^yb zDz8y}s0N$#CC?P~C4ctfa1e)yzLYkzABC^=r!afKAN_F}Fo5E#2Atm=|6$JnD%aPD zXNhM9-8U#p>_cdYtA>$G|KY!esbx}|rO*(!;+n_LsS~QhTX#nTg%Fp_8_Va`^nav~ zY(6Njj zVw8o`cd~OAPzYbUJejq;Wng-N2PUwVp!^cH7>)Ka&oC8whfx%08F=q9Dq&s^@d4-1*`yllAwFc@ zaG-RcFGMXid1KA<%n)kfS4OKeG7aM0W^gFHA-qilo9UI#=UqbOjsLZd>KT*H$6MNd2D9|DLZkP#2bL4n&fD7?o=@fF=8B$sw%eRR6g+Ejd;k#k>R%X*q^@ ztC=@aoWy9oMkll6!z?*cjA7oBeoW6|lsMC7SpEcu!Ld*pYr zxR|y0t?&IIpoNSwfeMTNL8RC2zo?5=mai zyvKn;KzB25r$u&76gwHcrqOeZK5B%1)MyX$LIIWT9Y#eOeZZ)*MjtXdN}~ow<23r5 zQB5Osb0hS)hp6?u86c}C3YD$_h<4hUSb#MVKQnKV$dxFd2n27lN-=8}Nor@g!IGd5 z=KxVX^aTnrqI9PN^+x}0$yzP~>W|e!8%9^LA@1hhD!oO$m8wFatS^edwa zL>ER`A>zeFFHTnx>J}1Wju^nXj|2(<4P(hufd=ENc&9L$1~eS#G)^}+v;gTY5~nj- zuF*u6Tn!WgZxW*$fm&m(IhQ4G4{brZYJ5S5%Ko}W7qH}KK&`>6Vq}B~)rdJPSrl%I zIiyBh$h@9F#H*Hd7z+l4f0ZFoCzdc8qtP;Hlr$0N0?}A~3v0O;2t8Ze&S-^3>lv-q zXcMD5HQLI4c?c*SJ>xOXeLGM{ED`${y+k~5x%i6FM?l{i%ft`Tgk>Y}@IXi`69*XG z$7qH4g;Asf@m7l87&XVjE`%3E{$R9-(KX^PMxjo`yH*$`>FmvDwJ;ftXLOzLGg4Zv z7Xd~}%MBvLNNHIk(io}SZxj(mO6OXU$w=wE85?5CuNv!-kXR?O8I8eOIVA29MT{J* zB0~88o!T&3(d$-xH*d2jXQXs)6E!rJ0O;%Nd6+OV5GeJn^<8QVr}|1%-zi*zas1%`4i!SNTE?G zUWoL^U}t8`G@>F{IX@#R-l?3J85KP{P&m88qD(`?Gp>isvW&F|@61?-RBt0R#P1nf z5uTL!G{T!Re?a(ZW;XiQ_$Fr~tZFg?;T270O47V4O5wfHQML6=E(X0Qx)Jp4oqSnQ z@k6IvguzOGHc|Z9hPW(iG;F>lYb?S?vnC*XHES}$&$6Z?G_x;2*e07wq;gkzQ7H_u zBzqaS2XaiGA=c-TCEIgJ&%RtL#qYW2f}Wi>3!&21A#Xn7C*)m%aB3duT*%?tyv07U z%7;V!ck?!2?NFBgI>JHu??aL-jEe5vpUE-A1BH}oYax}rp>UVKRD_zo<+rS?W|#QJ z)HZE4(Hc`*%3&G8?xIVx*$De_coc{4$=Me9fx@~z6#j$5FA#PT9f}GAZjQmq`g}LO zz0>6dl;@s$YgF1`Wb z+B}j}K6$bDc2NG!q4GcJFBR98Zo;`g>32(aQ|Z#+nA+Xx6yC=1EtwR*2XX8ZT7C-o zqLyDEoZ2!oOq2l#RV`54P%S~Vlf&bs;+2*Y!=>WgmJU*lZ*>>K*{zao?Aca7fcs4= zD~)QrT^iNbj3T#sJK^m`Xy?Kre*M?mQ?gq8H&SKU8p^;>`LwPMue1OJO_Jl*8FZ) z(*Grge|4RQ*7$puL~djGc4domEs@ug!qz=W-j#GUlg^QOmbj$XScHFdot8&>#v-JA zUG81IiTiNxX$WsB%fy~>W7%!_mKfH4Guq_uUH(FtYUk5s;R5Vu`%~Dze-z>9{#4#G z`;#RP_s#=l+yJ87W|JkqccGr1sv#IFiC}>?h{A1ngv$~cgD7mqVVgk{*#CDHqIL$| zi-)fMcMZ4bw9g{#UtRA-7>$wU7O~Q%RH7eHU$@!WpzP;-J25vk+}oZkzqS2#$g6Nz zdy>Cr$X@Kt-yHHj!dKca3R>d4*ksswXGikY!l9cHss%ac9r*@(nAwc#f*m41096B(z-met5vw(#bQ$6SmRt;5e!%}*^dh5rK~^^rf4HuVn!x!mmCuHewk`G&PbAv`T3S5wB3(pb_y3 z#chm~Uz#c<(6Tzx!tjuPU8H3S+88OL|Dck8_5Mwfjs}hKl!-npxk|iTIW99Mp3|tj!??_H@tsCzc5pH)#1_`FIM_VnLZedb zP&$L{GZp|nt9jir78)JIE1EYX<1(PVns;W#a-*a8Q1fPFTm|%n;=wO14J^X>SMPs0 z<6#{1y6BCJEjUwZ(vI-rpv>HEbQJ}R>VoN+4+E7lQmw9=7|N)@AT8a+N{vWM53yCH z6M324j2_|_je2FaFnS95^f_|iUe%ML_|->dWbOt}{p$TynPor&S+YJvyk6osMhyn> zu$1TDPX9%jZyLSD+00WdvX3}ltdt_s@*J;(A6q1!?Ig z?$GJBX9i_|alcOYY-R-L5ieat4iNPz=?03I88xt-gTz}p-8Y#)skVC{Tnpf1M8xR^0e&nUTa;R9qsGiGylvq&4Jkh?%(eh~VrAD2b zjFKb7=os-Es zVuhAGzSD;28Dd|G_*T^X%hi+Sl#q8Z_;tiHuC64d(XLJU}P2#N*pLEK|I!7#J zNu}jn@rXv`m-EFwrG;C$BNj3uEeEq4@qk9NJ0HxNMGEn&kDMIcDlbp~XhQUf6m(8> zR|=XN-JOCij=q|LmPGeT+*smYedN06$0_LE=tkl3{4Yj7PxAbGqhF_>XVM9M!ge-< z$g(Q2pV8uANmij*C4SO8vNJCJ)Vx?$i5VAItmD@ZBCBVM3`UECJ+j)FvqiqrpplcE0D4HH zM0Op}YYK78x|A}*uRii{_SL3`xW6Y6waCRv5Rxxt?>3fr=6^0==TGWaA2~MX!4xzOyvse_H1Is+pPlohxzy!x z`@F(K3v!+{uMqFBCmKRj_7&n|Ms>l@a{dkUmFJ~j%`1i7m6A5_ShrFv(}?_Xm3Tv; z5c%aAv5!$*Fe|r6UL!u$Jo3`D;%m)oky~P3D-LKL`E0c~sCgZ87XSsiaeg84;B_LC zQC)CwZkq2pQJ{I`&+A2r<{h7#<-14Wg6gQ4hF5^wvD`^%^l)^Ty}4@U0QY zY94w1Msc#{Il1k9H;VC^NA<8)OwowyVXZh{BdUj+#2k&N9&Qr!Ur}Kk4A$mW`fe7B z8Px@^%IyxcQt{9R2l#FgLAtTaWAf>~4dQJ^4F=WUMsYwR>K%8}Q;7IA7*v0Ei$7V* zD)DsZKcn{%1HXFI`?bFNMRS%^GZ4<~7^zYJ0a2k)@cF#8z6V4%Ms>m0^40j_2$HbEwjR)E;j_XU3 ztHjLwZ+%aQ>lvwfcuG8|B|qu5I_D`dP)ind-=6cdc$CptapynzZ0DaiD{C<+ECbb3Lt z|0S_fql*jL`CkzwgB9KgEvW3N;iA^Y0Z)j#lWGf@A$}iw%rciE!bm{&&Pa&1+V8hW}mhxkh&3 z+5Y!L*JD(=9)&agABb9wjwzhy|46*3(dfd3{(p&_5lXVE@M{03;&_dg6t3|%hzS~9 zU%1ZyxtPspagf%nUy8LFJz02%|4Xr+QC;w*!UurvQ#|zB2mD`&#~G~-zEil>zn?P0 zuRcPv_SXvN-to2AsdYAK`icK*VH`{B#lga+|Mq_)GBj%0^cSFJ3W)=Ge(M`?oJJK* zBi6U#MvZdwbFJ^iR*iOGm-U0F*QjgLTwtKCB%zOt zxlK!f_A*i}@_@Jj&+e*`Xp1-?e2i8VOzd-Yfq%4@S!>|{%R}oe z9QS$XUduGrvz@fFS!?->t|tneD0xpEz7um6!BJxjm_KFoTsu?LS;m{91w?rIij939T5pvYMJH2A;@xYN8iN@rJ6p0A zYLP!T69EtTGmC;iBa~#2)~2nDlNi5LlK&I+UNsmji4iaG}>jma9_TV(n>7_}O0 zD|*H1X!PTBWOZ#pM`M^qa|f9IPM&4Ei+Tn+r=TGzXiw2*Ul)(Jr>ICK(La%{tH=9i z(U27Meo;HKo5%YCsJpS5Eo(3+zaGXX9vT7^J&j7#U{HQNy>ygcPotIQQGUIQP97Qp zM5$<%K>79d5ariLqn-Yri$(_e8iP2UT0!(Pj!{~8FVoK$rFh(4`WfRG)rYA5`Ww?2 zEe@tPA0Oy%(Eosryv0o!9(O@GwmdhuoL_>@ojCKkt(NI?>x3gg$I;HtW;URzfCS}GjV;HAv z;1Uftj%TD+NW+aWnn&r5GA3x=oaPS#O=Gk;cvZ)m;(Xo=#X>^B6C zF}8SUUEnz53q}nF<$i+U8>h-}PxFq(iAI@54>fOLj53BWYB26;eqUgeF_jVZ_Z@+g zj0-%pGcej%;GrFXF~(&c+8H>_EjvzM_XNfnwc{zj27}Oe;~qw844Gg|nULg7Fs@{z zcoSVMydz4YaEpdO68)LIKLriW{XPZdx7aAo^0c&V@n8z-2Hqr(cT|gC14(pB3tupa zCbwu3oa{-?YtbwP)#hFrnBwuS%3YCyXpeBV$6MZ_T`-AmPes`2cS-WFlPWW&y6Ldm z-j3&Ju2Wv(J3h`i(&tr^t?X(#0v6`Dsrn`Lyr zS`dsI&!}|R_jd`-G4^RhzMgCRq!Ic0LeKL#CA*Dz9-`inL`5ZQeMv<9D2dvX+#kHi zOIKdDGd`&_j2Zv10Z>&hmI?) z3$60dSfHznf{Elpbt-nXQNpN>PsOe_+G`%IX09>y4EjdM$W^@rg#%3f34sCn-s41veUV zHKJCq)>xzwwSt?BogOL#I-n7?f}4%tWTk~#!Occfji?peY>d~4TEWf6eowM6bc-=> zib_YVV4ab3wnEejZZ%HQi0bb)<9v;%P26tOYD8_~cH?S|s7>5%+@TS*iQA2>8d00L z-FQwTY6a_!k3BRgbcgYWM$`)KGV-P>TZ&63h3+;wYDBHzUSp_6)C%r1W@|*P-~r<~ zji?oDGX7%plsUb0xACCy_C(UTN_;mc(DXsKz3}}0kca48!$bb%r8kBic6t8d{B@zt zDd^77KRmRmbVuM3BQTAv=9R!!BU2;Nxz#98$RM5DjIJ7y&c}@L9=bF1xUp0t(z(M} z&q&RpPa2OX6x>|;bm&Rr2}X6nr%Im%dQS6RE`2HVl(9$i-YI zB3s%4-LH9cCb!$zqIq;Cx7&C^@u0IZ{G#zLqn*Z;EqjDt_WZfF<*V`)<6l|}-Lu(a ze5JL}J)1qokD5pKA6_;7(1`9oylVJoQ2EGbBf_s4T^ThPr1K49li~$Q=bOf(jOv1< z^G)L^%_E&}8P97(I^Qy0Q;2o`)4+q6_$i%l8?zZLW}WXC3m7S#?-+|Tk959kEZ2y1 zzH6*jh;{BWb}~{r@wP4h)V(^qVXG0Xnv>{(mZQT-L}#2yL?@6Q@^5QdW_)1uJeSlo zgecvI#z00m!)zi|m8Y7_T`_Z!PoB)>7%q)2{a z-04aFBm7OH(*D~;IIDatoJ7k@=bGPoyfv*7DTq!4Js$2HJRSCs|JGJ70zJt2sXLnA z8Cx0E1?i6FcgEAomf*%#?}xuPUeLTpTYV1ny5gZkMe+yZ7e;h)`B?ZzBkGVR8Zg?- zHGeWnH6qJ?GAcD9%YHKYD1>wUr^7!PLm1Jyel+bT<2Xj-v!b*E#xk9btp3?BW>F41 zjh}#i@yhOR-7)P~52dy4mG-;Qnk5?y;{9QqcmbtTb0uj|?m>A*6`9>&Q0^i5 zsz#K1Se7%Y6K4)xnUyBjX|#UmKZ?@jABHtQbsqXCEl>W-L*JwoO57e~of{)>rWMJ79{MP)g}lT=-=vkw+cj#H zFVkDgeICk6Z!4S5QCeE%w@Pm>yJ=LM-zU9XPVvxD=^f+^9vYqAMc$*)#z>#^9&)dT zj!N$>BXeELMyL0e#TvEBpPoKg9_^ud>BHna4_%&qj9kKKl^EFO*7W1$Zbqt|oh)DX z&^q7Aa-WBGq>q*jjA)eFl|II6A*=ii=FJrJSeqL| zNnYFLAEb|UwfNgM4+h4ipfA%;_fV|)Iv+l4sPgmgYV%|I86Ki1WzO`_i*5c)pXi~z zZ9j7idJa8JE8KN|I`GwruU8FVpA9*&0!8&XtcdsyC=MFO)|o z*cO9o^CG!cBYKW(z8ttf@#s0Sgq&Zk5Isk>Kb*{`tx-Ix_l0sjBXwrAPA-7~(+=@I-q8Z8bZ`QSIG97*VKLxsITTxYrRsA(1=>= zmGTUQa0l+r&`MdW5w+H<$tSZZSwT8q~z^#vO?nej^XI-vM841t(UD8 z5=EW51lP;eDZCBxX3aak(}d^-`BMt-4*93%IpEzPpD9o3yi@L02+!~=ZE~l4u_DR4 zOMa%1xWChlp}XWSl}R2xhSq_RXxe#Y)<*fGLKxY%h`Z$8(Mzhrh z)yfu`t`U`Ji)?ZV^FsUj`3knk0)@ClTV#nwRH7|%ik74jZIS0OQYG3VuVAD~^oZ;> zCTZCt@+5`ClmQnNJR;|fP4XU^^j0~Pk+OQLoXn_B^dGcEY?GUnq(QlFlR0N7 zTPXK!vPdJ!eVg2)P>6EhCiiL{wX<#VLyai+ZL(y7vXgwaP108}R86<{ZIeeaQtj+9 znSYkc+k$uZiWL%aaF^g?vL=Q1xLmAx+2B1cUrym|mv3oaYw)(qmXne?cgQk@L>KUO z$m>#gPsm#|@6^HD#S^le&*W5#d{TB*NL&iulk%w)-c#~<&AS)8r{pL;y;JF)mSYtX zZ-V!t?xzIYIaiROERXA z@DIDz_mbR^!h2cPYhF9>UY1AANv3;6o}iF83cOe3_7vV8xl8k=fVW4M^Lkg=@~Z5r zkXQuXt1_NQ>U@pAri<1pHV=EF`D^mq6yEF7zknshu3=A_ugg{%y*@0x#T)XL>ZF!8 z<(&!%|L`}OzbT*8D1Uf6^DX&BZBp`|@}NRu;_!zJ`p$@fcTXt1i^GRf!fl94@ianH zyoAsv_9FC)e<5^JskDcO`&s7yi_RaQLE=3o%8TNL@ME1~hzt%@jyZ@+(VQtNum7B? zJxg}s(5xhF^9~CSFH5Sp2b%32jF$zdtnRQ;(ksr2I@FU2T?rWl)& zR#`HMDO5WK-uZI#P4(6PAMsV44%K`(McEwx4>p+Mk`%78d;r#e#{bjayTDg&=4(Pot9qULRXj_X? zo3vC#v9`6Xc1mk%>G;C&)&Az^ST#%;b(}itZ#s^Sb>{c|uD#FW<_1Ll{C@NKfBwI~ zS!bQKUu&sO!qCAfP4=T1=o=7-fQHvaX z9uoXqT=`39J{H~-W6qxh9>BYGUOvxUa6bM#FC5S9n=hioJn5nNriYR%TR7Cb1r_61 zB7w0u|3p1QzbSDvC;wA$KjjBP@k1R`_XR)Q!)^5wH`Q3U)`SIDu=HOeCX5nh9TwhP zBlKG&-CrnqTTMiqfMQQ^`W;L3=daV+c=OTAN2k^K=$v({>3lAgm>OzIJt(#*Ws%@Z zCC>SAtwq;J%r;4->*B|?+-{OMI|S}_p>1q3DSq5ixpA(LewqvSNLp=q_DRl!wql6^ z#ZXJ#FYrNu#|7&6xs)dnYOALuj>dINjcZx?OQck7rOWm3fRrB0Dm^!qmW)nCe5_Qt z9DYf7(`nh?Eu|?MYWbg*I672Ae|#PKs>Jz$K#kwAjJauh>xbF`cy=H=jz3i6x-5T* zng^X{ZhWn!{!|)gU9?sN)ISKHn(|BF4n?Q^PYJcf-g>EY&$1QcJGeh*O)o?$Z9Ob? zEB9wl-x_>sowTKM;_5EXG z>iBFUTW!f{uLmJ*Ki$FolGIjOr)`%U5(52kwn_flSNZcpwf^|?*F5Zza;Z_a+AFw* zeu_>@ea4&7fEL~XC$7_K_#R2C?W(^NP0^v6u00J+*O2|fRyq#3(&M8;(Q!0g=ipDP zaes+-NL@bSvlP#++UhZhPl~Oc@!>BC{3d;&+ajWU%a4fo?&;PC*Jl?W>!taXw32pU#!G9*Wwxz78W!g@+ znr<&m&y&{FwIl9~cUoJt1vr;A&~da@{6b39_-_O!C1A?co+Rbwc&d72{9}3Z`;E-) z+%s8!SsK@nIoLjL+2KdaO4sQ8@LVzp%wg@k{$i=Un1{k&lG&)H=gP_-$3JhqM*Mc| z$Ljv5Ew+E$(V<#~+SAi9hv$y%*S^hFh9gq zh${~t;Gcr46jueVLR>m#k&37y;Nx%~hx>SZwO~B(@xY65FUGw@Ex;AQm4_S}R5`8+ zJXhek62E*@3A_?GzHp4MF+_0XspOMONflZYWi#k2 z!RabhVXeZw1>r3Szedfpt^s}x@N0oz3;bH(Yw`WU^=dJ$ui)#Jr%{^*yzRai*H?g_ zRvYoW5zia(yb;fv@Vp7noAA5|&#icF#d9m3Tk+h6=QcdI;kgaZoAJCE&zteQ8P8kr z&5bSiBIXwSviuf&*J2B#vjuUsAkG%V*@8G*5xy1STM@n$;ad^D72#VEz7^ruA?!MY zU5Bvi5Oy8Hu0z;$2-^nwHqf_$z76zkpl<{HdUXk|x8Vxms>3x2*L+-4ab1C{7S~0% z8m#M)?s}xV9_emW39DW0v$o^vgv>f2vo3YW>H^*cJO(@lJO+FR@EyQ+0N;t$+@+3M zyKql{mH=(HI$?FI$8kkeH=dKYCvoq=y$AO_>ZG*?_#WWBYS`)p-U~d1dkXhHb=v9! z-UoaD?L7c(96;*=$CU?-J8SI+eLv{?K?ja24`1Q?sr4ST^j*rf?t*U4`9DKV{s?v{eXkP!-5|Xd`RGNflmm0 z7Vru6qQI{L&JKPX@EP?zfoBB%ll9PLOG4WtY-nsHW%?C)K+zT^qDuDY${7(x%^pHR36RoycsrzGtu#rOH1!n=CK z_7f5cJwh#BQSYuRw4YVK$9w8!>M!diOf0hRuM17Al0C2@d{5;W^_s+gR#|h8tFtEO zqjR4@%umcc3;3D2s`L#*e|m03=~L=5yxI3GC=0DJo4maUyuS2B_2s!&0y58M)r!i6 zR^0mAxywuA*5A!t3HbWl^`%2R$zgXIE$2e>b^ zDQmyvU#31?GhyP55~oXGLSpvmm_jMCpPqYTXrm=>lG&fGxgTGI<9h-_>gxFqg$_#m zLlXa96MxJ6;nJgmA2XEO=ZDLS><`SJUp}NhIR7~MaBuuje|w4V~r zPfGj~fX^V#{S)?=p8|bP=`l#M&|ZQzy1Tqe4*eD-nn9e-_!H%O{r&smYg9wzDs1 z9ajjx>GF3LZ$s&W!Jth^E`d%~=TERH&nhd4U9~FY{Bt{sIM1lK{mF%yin#sP3u~=C zLK#qRE&RH*O_f}6w4wr(1Nl+Z=r-^`4u{lDSDda03;nFr{j|UVNt?0nzT#&UgfA2j z4hG8<-^C#QjLO&#fkMd8ha~1hSJ;(@CGAG*8&^!K+-SXa1?nP{*>>TgODbpE6^q_p zIb_!^ng@9CqFRJrHg$33kXo{6dF5}_%0>TR&lG;BO zU`Rc@_-N%G#q+2`>WRh2D&y+8#hCzBRnYWz3r@ciC*;F1u>#;z?aLwdF=o&gSj6XE4v>iiQLhiC3lTd3?`9BH#6>=Ci`2_F-`M(9Mp8Q+; zZ4H-9wgOi-%$dBzTHi2l@{nq4z*ofrU50WcLU$Rw3GovR*MO1+WutXR!`Ce<@Dbn{ z^)T>^`dq_1C&$&W&`-{vgP7kmX}f^`58&I>8Oi_Wz^%ZqP3T_WzY|K{RdXg+1uCw( z9WWgEz~tF>_^Nx5zrEz+ct81)ninRY6#h?%4xAR5ydwB(f;WnWH(Jjx9SpWum((np z@>}(_rNJpJcpq^Y;Ln!M!5e+yWj6p{yeta1cG=D;O9J=ftBB2U8xK|KOCf zQpy_wi|pZLU!L-&l=7C85)6E08SHII0( zkVdh6QsSHpaF=}!xIK`6TH?GSabA(oR|4E;e@$fj8f3et^tAx{`)d+1bMo@Ey%AIwjtFssx8Rx8QvJ= zw+-8ZJT1^Ac^26v%{PW_lsKnEk~ao<&fuV8DFce5`9ak8J>w1u<&fZg5`TY?+FoRz zDqa#kD3pUiYVyG#rF{^gdHIK=6zY5#M$9?Q^h0jC;&Aw0p%1B3%`b+J3eHjEe}s$d zsnx@!$AY2>lIID7^TfeZf}a%nNrUsW!70H{3;ndgdD0*%E%<)$44)QoFi7~q1j3gm zG)w3!lBzktk-a%U3*QV~$^*_XKfEF}dL<}cMDUX?p^0W|h$5?)$3R>?1EVPn<_X_0!p&S*;p!J2KLUqh~9`HBTZT5703;bRAb@*ko z_DCJ(D8yUUHsGBq26(gT27J5FXQ=0<)v3$XtAOuN#h^E-X_4iULx;eqz>L5b1)dRT z;hR$L!q*Q78wExMW&{oj91=Jz(6S}Iz(#>lff<2A0*3{@DDaHHNI+5vTrRLtU{qj6 z;E=!<1)dRT1tpchMu8myqXIjFUk}`0o)$bK@HSAMFCP;8MS(8~<&5A~p5!L5QD9RZ zr5Y8yQ}B%7w+TKZ_#=Y9DELc)pAr0Z!BsxrhXg*7|46~R@`nX~QQ(L`Rlrgr0;daX6gVhwNZ_!*GljxWk3r@*wp+XM~@d_>@|z?TG$ z2z*_j3Q1W4BLZg#TrRLlV28j?foXxa2^Jku93|3QK3V&V~j%LR65%52h?3si3-J}huV;NaVZA}~@X zF$Jat4r)q0=^X;o0tW>S3mg%+e4)empk z@U*~#LKzgiV=MVg3mg><~C8a9H5dk{e6@xn$PFwu$kH(@I-Qe^WZY?7Fh|mfc?V_hr4ImqY&+y0*Nh zd~f-Til&OTiuYCAS@FS&$1DD^;#U>FsTfxouDrVPp2}w{zgzk9$|ooNX40m~iOKJs zeE;O5lOLP>g~>CgteUcMO5c>ys+CpORBftyZ`JKp&s3eRnmqNgsmrEroZ30Hf9m_D z9+~>-sXv_h%c)lNmDQW8_f{XS{zmn8s*A(naA&wTd?ftY@N?nU!v7vFt9g6P!kTx~ zG}dgcxxQv^&7Cz5*F0A9Y|Vewbky#tJyxrxdoq}km>{2tvQ60cOmxO z*l{_GnD?r8<6W}-*u^`bK8BEE2>Cd6Nj{0tPhmIY1a?0j!*0jpkjl*yKI6ho#g?U1 zs<_;Rr;7P)u2=At9K6vd_$TaRz+Wgi4)~Rl#{j2Ue*^gS3Ey(zGZTLg{HGHqL-?Bh z(V`Ua#p4D5uPS>Cu&E3`>#oj};WtRt5A1&jJemJ{!29vTK}cIx1o*FI<$%EuIlSd~Sd5#=3-Kt)ek6&i2z6Nl7bt_wWo!f=vpxa&7S97T0!i#=Ugx|uu=uN=eE-D|V)WVCJ0d;$6UD8@~ zE?n!L&h0A~U5~W7m35nH%3tBtb4M~dzCVsm>(58y8h)w#738V$*Jr#1TvMK$xo3#4g}t`06Mrf2 zZdh^~miO(T^Z?qhotFU~z$>3P(*}!ftM|g5Td=;D1J8g*TipuoY;_y>vhk~y{N2tw z0Bx+TT?PEF0Bu<3Wxx*s+Sp%i1b!Ew4SS4V27pB-{2)dH8}LCxB7KR>x6S8@7Hc;HPn}z=qAg0q`^G zCcwuq#@P4;wJ7p=0xMuPMuJY@pTk&#cNheI9^(yutqRb_uWiPGKM!cD7clNv>WhH3 z8phaTsTTop@(J>@)JpoI%of7yr7?&*kdK%$ZF`C)xD}a{zIz}~HeNEtLj9HfY z2B59}7NeY{z6ofnZ=nV7TUmg%`aW6!zj_5|s}ZySe*Z<_&(H!ke!G*f+`1jG!s2g? zRs!1i9nJRxR#_haoNC<(SdG&IwhH5{05r$?5MT?=2w3VGK!YA= z1;n{Y>p|eXfVN6m4*~XBL!k5nLN}~O0Mpi^fVWzo0R1*VTOG8H1HT>6R)1-I8u(<03WbE3wXrhZ`phV&{iL{J_r0LpsgOXo(BAw#os-BNZ^q5EGUD3_?;)~Ip7Zq z#40E7N3Aace%yKy@Ke@Hi1TTIpRryB<%Gb;tS^K9SwOV7^;O_cT3-kLguu^P-vH$) zfzMdq1pR41=z#TY;GY-xto2<`{ucp1 z3jv?D7a`R%fM`d13GkBwU$EZ+%JTwWv#$dE2LgX&F9ZFDfarJl)+zd+z<;otKzSX| zR%h*%!2c1@RzJ2^1OEx2ttJIp0ILGm0!|C81-vM*9`KUDM!?yDR=~>wn*r+sTLBva z+W?mZZUAfv+yuBL&@>+W}{OY)}yzAb+} zD0A{>0I$ox7_dHnBPjFpFGcTPoSy`|67la=4TyQSTAIHH_;SR&TdhFMyHzt{-lMKT z=sju;^0`N?L+Cwf148dnn-F?fU7!Cd;B|;|Slx)w!|I&~J*+wqdY{5?uL1Vv&&BTz z>_wdW)V}~Y7p^{sD}~rh&qOtN7Tm=^N9K+VjfYSLd${-Br4;^uwj6OJ|p@ zFWXtRyX;8W(`8>R`*zv1P+h1wv?jDU^oh`CLthBJ5h^KfD&JZjFaOK(v*o`npIA{< zF|T4l#XBl)s_3kExZ*n%TPxcucUGRN{CcIDR5+<>(u_&3p0sz;p-GQUdSTMP zOe&o`W%9Qtzdre&C%as5zoryaT~`&YN><%c^?|AnRh_K*PSy9T zeq8lmRTHOPJay63mZ>*P-97caQx8vlWa`sXU!MAnsjp1^>D2$2nqNJo`l9Mp)oZJF zR(Dt5TK)d&2df{g{#^B6SAV(sU#fpy{h!s7!?VKk!p-3u!XFQRHT;wCFTz$$QB8Ht zjGEOoAFBCC%};9P)-J2Py7q5se^UF~+F+XJW%VDNH1*+P{*J3dA>C5HgwK~v8&oSN zkVc=#`NQv+2`xLV{(bTZ@QBj5GPrKVbsM~&gSc+T^_Q4&z7N+O@OIu059+UQeE`=X zH67l>bZWi28~(~Y@SG0g`XEkYehAmSxbDN8^M3dmAI3cM0qDRH_zoX|9()wnQCtt= z`WUWMy2Qipy~_Pzb3bP8A2;_; zn)|2B{e-zcX6}!h`;+GWl)1m4zAELspuR2nf6LG#mM%YH>GCf!&lj2J1(xRL3Ugm< z?pK<7gSjs?_vPlk!rYt8z1iGXn)@nqUv2JJoBK7E=JOg$^SQ>**O~hkbHC2quQ&IX zt^bhExW8=WO{ToRZ0KJ%_ivc{_e{L+nRwqf^dFh~8FQaz>w16D++Q;HFPr-}&HcOP z{&(j7BXj?~xqm32`T20*$_V*-B+xDQPXun0`*Cysw7LJl#6M%=|J=m?l?ne>bN@GU zuL~? zhf80;b*Fl^^lo*y6u($gdXsvy^rLD<*$ucJ!u2()30F&5t$j<`Dr*qe^JOmtUqbk- z(0yuA=!M|Y(95bjbb}fWy^8Cj>c_x;9C`@XDr-{t_Yv<0a=o*>)_!MsxwXFHRq%74 z`c%c8>hFP%RJ@F5ln2`PC$F`;L#M4zP1&ZNo6>4OH{}NPsVT4G`k}qP;)nK|rQgB* zZ*kSy@v13#>nlDAe133!#eHf{^-XF)^{e22YoH+f3TV3n>nkv4srV?aAE!!}V0nY3oeQHudY8sESv8 zHSlKXHv)@mZvcLu+Eja=y1w>Xc{3({EAJ`X{~A{}Wb&)pT6;syDJy^4DQhCGDY&NN zdK<3GaW&vtiEAycHe5I0+KwxZs|VLDxYD@ZkL!cDK8ovMT*q-eIW2@4V+H1dm*PGf z_qXAyg9V%m+dCKcdR+5x&Bt{)t_7ekz;jiwF=j2(5?pU z8sOLBT7zpXo;Tr~cPp+oT$^!i!L=3FbsU!X*RVF()t`thRqNv2?}~Ny)paEjs--!e z>Pe=e+Y_<%+evjpTe^4jMpJ#g{hfXNy|FqIFQIZ0v}}r{l8OGlc(Qv_GU;W|I?&x0 z-KSdCCHvw#2Da{sb?cfj`nVk?u<1h z6A8!&Z2JRSHuNU<#=8*Bk*t@$a>6?1p@>9cd$jXrA1OCMofDc;P08+5U$nc=p&*M^ zJa5rxQluL04BC_6Syt}Wludg@0y}!?Gbfwww(WAR#UEbsR9@ajZ z@F?KP=opzorfA_YNGtbs#w6{kWbf{1U!PA8M)jcPSw)XpXy8QcI)8kNmkx1E4%x5$9mZSqmp|8>vyze zhqXm}cgFf!y7wkKrQ^EQRx7(xun?}=WizT)_0xVpcU!KG?u{8$(+}6idb?u@wYERe z7vCN2>6oufJFZGZccxrrZ|#I0Ii1IJ3!0^5uWr($*YR9cQ!P%|swiU)sOEw0=H&S1m?#Vq^VycAAzA(OxLFUkhDIO1Y>uE?SC>y*r@}u%u44w?q^D=w(hJ zH1B(TTD>6=?e2!Xs522#but1VN=mKoiFL1zp{K+YQv%{Z{nH6Hq^2jiJ!du4rG>5#8u#-J3c5_tG5g^}4SseK#nj{M`el$_-f&O~ue_ zwbk|YNPnDjCU(`$?X+&bu=PgA+(E|aQ%-`&d*vHsq8sxRJ| za%>!=?Gjz1nVXf<|6Flg4(cN=KoNIRbQJt?!O)i1nJ$!dOeEekSMLDM&C8->zB*Qhl-Aeot2! zSGP^M10`JPEhc82=jEm9j4e~XArp;$ZEQenhk=#_)}xF?BA`2 zyiT~+&1l!1aN7`NPe1xAhGZ`bPccm=5?Qoqg;s6OP?X*Ob|l>%2lSi{fvdL|u9Lp5 zhzDPzwZ?k)#yewBYVF{fx^0bZ#|Yln*JDHv$Dq9><+=ABn#v9_QPiq9JgxY`7j-_v&bBQ-8Nw9qVH@$$mJ$YvYMTJQeFqc6X&zgQUx0mBomLYIQVP>C9(@3)6$i zhCv(jJts30%sjPM#xxphkXud)FPbpHlrm;Q08H!Pq`Rh_0q(=7IkF^)`cC_TEcsYFOQbxs+rZl4sS#b;xamQmNE@QkS zd);XrA6@rhGsrl8xF$mTV4A^UtScvcbqVK{+RiteWWpF)s0;$FVz%aaV6 zEQmUlA?{R0>fmM1$DATaJYO*lx{MqN!z9R@J~zOWo*O{9jzM)9%ncjOZElS7u$~i{ zZR>Vx*4uq(!7__pX-RftIB(hEgdhOAmclAdXKsIS0#wTyICx0M0*o6=bMHeXM32pm zLZOp7ZN^YNIQi|k@kkj6GW<*~lh9x6yxEi`z0aAVYb|WX(#9?+q9x_5kcb`eJu=6Z z)aLFu8qkE9hqci@EW2R>ECX}XF3eKkPl`)H$JxhnHoJyZADg3C(`@;8$SU6_s0I(u zX+JiZ!wvCljy#GZL{bcAM19=xaTJFnX)eV%F^%b8$?yhB&yE^)a#%Gk$T|B+miTg0 zYp!$YUKMh~vg?x@E|tqAdu=jSnAVHj5V2s67;=KMLPZ%lO&0kH(mTFH zXa}D;Ye1vZ1y2xu63r+tqU~6V>XFGvb6l20qrC(0F5zeBj+;U*JLRAYjU%782$b*XhpZ;BP`V$8N(u~sY>#&^VHT~Zx5fQc?F zsB1YU1`H#Pfp&sNlLtBz@Q@N{vRHQ)7E@tOnlVIl_Hiw~doNsZZy}UJ`Q}s%>$xUZ zRH6%0wtc&+1p%WN|y*ZUL8lx50^+Vf6J+JRw zxx1%tK(+6RrnDQ@j`o3JrImGhh^W5%knCxvTE{!%ee_B7CPPklZ~~ymm=0^}-olA7 zGsc8gQ=~{LIQs=BmR$EvA=t$=Q_g&tUNn#MBZadY?foXb4h-fxpx@?tO$*i?nH2RdU~3ZyP+;-xNnPL_oNrL z(+gPN&0^L1?#3F;_-+ohNOY&68Ot6_q!nl=LO{LHIM=H8|9qzT^Z*My1EEPGth=t&55)c zOB-BE!Udk*F%6Fsp&ZMA-VQQC7>x0 zO{Jj8s?8f^nQE=9cQJrZ+DCPsbaGl8dMMgL!~E)*ZcDdonO%Y``8ZF;Pj(*lU1vs% zCA^Q?`yw6nlx;uhE=nlQWKy1-hK2$28UPP|Q9Dc3b$Z9BE^Et*Ba#T5)og{wsmFHW zkh&{oSGMdB&Z2{KB=>Vcl$`x7n2EJ{1p6hHzKtg!KQb?YZxO?+m-APUw(!w zH%njHG|OYr{hFwg=g7-+h^)HgL~1jW1T>G#P~@N!9A_N1@m8F%PRuptI?Uho`52im zWj%>j!_3BT3ZZ)^>Sm6)m|ZdB;5#QyWb}7DD_9G|gsv!6#dSf%&(vq5+}V}!?&U0j zXLGrV-P(iwMrm>`e{=O4%)nw}QN|4J^niTMALF`@t=NR<+~s&_48ly&^JVF!!TeLL zAX6zuKdno4Z|L8S8H&${c{KMdm7kSSY@CCI^A$h3==Sa0DBvEWgXztH_T9z}rY8AB z2$$0Lq&Je*#<76hz0(L^HlkWmG~T4hT-YpindUX_KK56$_R%;F7!upkL7}qdz)>nk z4LvpY8dMk_s~s6IN`NGtLx>DIpCHX@q+Ym9Den8hrRR!*G&47Lxs2G`w>H`x#iVB^ zo{~N8gF8CLoYfI_^QL~RY-4{8nK{dr&_K*{yW~J3bLlmwyi#Vxu+y{nJ>ID1v;A>r z5fZ_iwIP9YvR-!w3v*dndsQi}#Hk)<^Q_a6B6dl7uqeU0#T4?uY(v5n(t(1JlalK6kcT??yuS zEF5*@Hjp?kG3UUWLWT9op-!{vpmxYxjrd%t4a%83;b#fl4GiJ35 zW#|)xI)bBds!MM{iL0QTCT6RfBV*V>r)sDaU5~h#7IwMkYP>m zYm78oPy~eHrE%6y%vdX(2=U zv2NIfkM0x9S6wsOOQrha+v5pH%FErgvL4AP!7TFlkDabf!hFJbtmGK1RyWCF40=V% zJtDDkAMC4pP6Sy&gK=(?ryCl3F`DW1!UjF?I6DN}+uQ3^14n2%Gq6;iv2~3DwyiT8 zmM&@6JKCA?Q(b`5gm}Z-Q^%HXm5vmj_oby z90QA-kGFq~W24PITxfHcz^rk!(#B&mOdhdDzBjfmhEu>fMO?v*%v^ZHf;mQgIF_d`L|(`dV;aPb{vt;%n9q(2OFOULILH_= z2RIdmhi+D#RU;^L+pxr^mvvRsE*$*DOewlg8z3zHitN}~+1zc(zGx!rn1az(S~2a! z(B?~59efx5mo~Ihj{9iN>;u+l|7N`c#?O{&nBH4s` zwa+(Z7?;_dz-1SJlT8<*geb$$7G5~GkW^q5R(gz65n2GcHN@26*de@nh!|#`V;#pK zX2M@eO7VwX2uwK`1Vsq?R+#Wo!{P$0bQKp zF;bf9x;ruujV~C>cI>Xo zOjz%)wBVe89NY9CqxADv=Vz#4>E)=O>jF1q`@l;Vwzs3lE?v~#eoJq(2bOK=?)G*W zUK0bCk5$eE$m0TKF)CVfJi4E0X<8bXLLHuH^d9qoxk(KOvqyP8DC;7 z29y zQa`f{0U61#p&4L-h6QKuXH7JPgM3}Fed~9?*V>K>bCkk_7UPv-1 zn;&1fPw%B^M%b~lx0nB@K5mlM=}B3t&N&XPpD&=(kEN=ADAS$3zARlQ>dg5X`cP@z zU&iQue@agWN&MH!O@5?a$b#XG1xf;tB~azhko( zW!db-|GmsQjLMl%PY>!k^-*?x*Io)d783bzf!-L@z)N$1ejfzorMdjVO!gvK#-o=- z3z_w996O%>Ji_`OnnAwWCFT%=3l~%5*aF+FMITdP7gj5h`!Mihjww?IXELd_B;#Fb z4c=Sb3Gat#nq!@bDDAGK(joeUoN+A&Bmj({&-%JN^6u}|$B@@_b+)%GK(1Vw;;D3F zSY%w6S8eykd%+3jP2%XGz*LHd29o>QIjdUT51vpLxkC2JPT%oOf}dt3#&*WV*yf^lqNL7c%D1=q)2 z(1Y|VygBLsUvrd#%yU;UaR3%x2I{iXO^$g{@|GAj&i0~naBsb3b#JntM-g%SP|y{6 zk`GhMlzO^|6EPwV5LTf%1b0Iija2S)vOvB)s<%2J^o1^4!0k<*W|r4>b#u!Cn~e!<(w~LR>V;uQD}GZSDu`Wg@&DdU3yqUWt|IWbX=`DU=U3cw^6~0Qfvu zdT#KJa2V5+O~9Nen}Gh@W)65T0Zg5D%!35X=SQ1El)|$cdaF$z{b0;4d|4_d?mQI8 z$j)&PM#S1zZanb8c-qmz-ls$y!xqm2hm5GF`c6c;4Wrg4=YexZ#Eb`vrtBbHlIIf6 zJ$T+MH$|6f@E`J!=$*Oo=7az2^B)p(hcil;RS2#Qc+)LL(c>WeU^!%pPP)>!!4h?L z9xxj5D1!Eiu^i$%bD%Sk6`sZI?f8fWPK-fD=Zij1xfyd^UtCo79-UQ#>_%uD{J6^; z;6cw0y;UC=T;1X@g-kFHA8h)Ak?QePNE1nq=vkZn%!V#7M)OWH;^%}fpfNLPbDLrw zRv$SV(>1_)?r1GozzF)~I>s48p%$4exKe`{V`vf-$rQ09w*csjm;D&ZLS;v4lRIXg z&S8P9EeoB6UfjiLUgzaUG6en|6RgGMdjhk*Cv+j-(;{bCR?1&tw!xVrxCBRj3c9ZI zzCX1VL#Djzwj!Ct@;G`5cYB$#US6rh!B%JY*0}LhE7(XIM(9vL1x@;3HHMgE=GyI@H%EYzaB@m@Sttn=K37+p#g_2E0E%u`M5LB3I>V$R5; zj65Z9bs~o(DaCLyao-6V@+|KGo|G^*k8;*)2QFPxsY~(A^2}TlC}q3w-X(A+YRdZK z4Oc*TGN9tX6Fv*=msV4DU5dI9n{`lSx+YQ7gXyE-iS^!%`mpv!)@xTHe{$N3ZxSVN zXMDgV!Ovh}Qnm;eAtHK|qb+BE)QV5HJDTqOe@%pF#A zbIw6HnN1-bC3n8+G0$$qJ6E-$qsmgP{K;yzn-(0?JFUW>9;O((MIhUS?zHgO{8Dou zjsd@FGJSS^M%UI;&nv+T8;Tm#54ljMvP*KbXl$*q(#OxG8%~3G8o_=Z6Whc}rp~Jc z*-TKxejV|YJdS+GytZcSeT>K6%f6~@4z-Os^FB{!veh`3)jzDfosvD;FuF_KGaQX&y%axX11A=D%&LLzOQ*=r^F}W zAo3{sKg9$-rZMv%ZmTs5e7B&tDdH6>*iPi zhb^bYZ$Z`A&ZA|{a8^6JH|N?luN|EdvOC`Sdw)b)nU>Wv-=lP0ce=~R7&~$m$7zLg zj~IVOr%Qj4GF|Y0ZNzZoNtNQ5q;0Fyw>*_(Pr(T<*xZV@%f_D@q{mtX!WSdpe<35c)wVu@6YH@TOZFO`@u+niD8oI7H--wG& zFU^kQ2YD57JTBUF$I)h|{jk?*n~XHH*TW(ypWVi)IGxv#-DsKkyA>PPc6$OXN1hkkl2){?`xj=qlksmaFlfQeiRam|jUN0~`OBijw zvlUVuXv45eKE3hD86fE|c{SHcuKO^1v96=;>a)beWshsrB3&zLBvbd{ANksjda{90 zgV>+a4QbGDDA(}j>7U>K^6JBGBHB2X=k7U*qenA6RIss~fM_0fr=eYNW#!`UvK2xp(>d|jI$r~5gvox6V)t~;UEW#=es8GDiE+-tk8wW|DLx87gu;Oh+yKgSNJ|9-DN`=i9!y--rluY<7nwAgerHMm_|~Mu!?Bvz8F0PA`Ez!5^1H1a087*SntFW6yFNxl!I(vRk4T!~L59 zj@ffs#pBdJjZ=&Ma7w>q+}5f(mp-d1r^L~&t_u8xQh6NdRNw%%6}F@Glh7np#2GYa zd1`zLZ9agyVd);>1_PB_5uDGcV!BrDQ-PL*D(Z*UP$sH~V;jd>HJ(fM4!%Qhnm1M4 z1*#tUxuro#Q@7b;!An^)?kvAeXoykF)^!|xRn&xVQq;sY7V~)xQc39C zcF?s&Vs5QS!Nrf8kuT%ZGa}8+w}$z0V}<($dL^Ihx2yxWntQ%b%A37~rS%{+cq!m$ zg!_2EHa3HzZ2^0;U-y_^1=cBbX|^Z8HA-jeV-0ZbGq7i>qB>y0S+!RJc_eMS)bD2O zJ8VTuagb>ORS!y6%UxAFA!~(ej+F)|c{B|JJ`#6N} zw?p$n>DLUpFqHl&Qw>_7tIWNz@bP8s?=5?E+?9cdvIDb}9gN`T`tV@c`F4K9vP0?g zxQIoj!$7A*@&H2{D?^*@P$prM4&H4$56ME?f)N!e6|^*vAKHeiG&oC0DwO#tvP0yb z=7Ey=X)qrE2~m1axf&0S9lQukYwEaJZUiJQS1h_*1@g-kveA#Bjd{p6^SGAH zyoPHe-wBYpuPiWpw6tV7AYMOvh%4_;X<;$+X`(cBuhl3 zW=Eaogj!4O_MqT;utD{k5DAFhOA|7fA(}r^e7bHWYw0Qgj`Ux~hVN zy1tTAy;0>P97>uqJ(wTjZSiU6n@wba^hXd~*Qjljln$c&v5TFBA{h(*vP z5h;Y9yr#)vkg`ic8K|}jDyyU<9{>`}y%2o#wf5DMelp(VP|nh@F@g@)1@7rUKUX{lvP!dldaYJg0wQ2PCO%C^EK zge4`S68-3#y48rGG+OBNDcsnCq=~{1DVBOW796ce0xUs&pd%(uWyFkm^-d>%o@yJOK!cWL`q<5JbF4`^ZM!`lxI^vn(G zQpuZ`5xtH@SEvLn0)FV_l!VJX+(d*BOelt@iSj_liNa+MhfvUF7(vhrOY)&nwW_4B zo`$caR=WCtT@nsL(^Zfiiz7FCEc$mohq}yB^b-tCnWNBY-eg3#@-XgXj&fYL@;Sf( zNB^G3grRxT67<9{QqQ9cp(zXDkcky|L&k>m8xpTElzxL^H3h?YygK}|@%p&37I zhUWBfp&l?qNa4 zX{SP$g{~5&8zqm-K4}q*UztO~)CpKw>YY&B9=K2UERMkYoF2H(?ScEKVlqx-PUwh| zTBEe+hnPla;JA>3EIk6~`*DgVb5gT%(k*USbO9+b)HrCPhb}~qgv>H0T@IK4LLz^| z#i9Wx^;j~@zH!oFdAOhy-U4)EoT8STMKdZffZLzZmVQFC^{BLijKp3OnxPZa1Jt@Oxt2c8crcOd z4O2vCk0O(@^wYor9S^q`uFuANr+(O;$VIcnm0Q)}ZqxGM_okNVfQE}r|^ zkG}u#k6#Jj@u{1-t~r)|>6YZ$cQ3QIx2}G4*)Jx2?%smNSvTy=?@OPq{rio-I{xJ5 z(^vkl*Zw_q@%HNP{kr*wA1g0=^gF+KzP@eiRmXc?TDT){)#2g)Y>vG8__QPMn*Z39 z&HwSrk-ndQ0Uxlq>uc9_58ggB)Iaq32fM$rzW~}K|wfF4|fg!!(I+fO13le!5E0S9;9+>P+UM6?mc2*r9v-<#?@z4bV{x$ zbgaoaRoC?DQp2L;M#qst5O%GyaoIu*)lYJJxWq8AZPu$E=E15lN!iolpp65~NT9SJ zP=gwI6)vJvpD79#7Usc77Z%dLdm5I<#tr}BvKOQJzzP(kR+gbB%2flj7Q}#=D0H2U zD9BtyK)b8~rBEAGD9zD4aFt2x=(tajnr3L8{LI%{`QxBU=|Y$~H^?M98lF6+cubn3 z;lMa6Tvj0V2U*}hhMrp|fDPmrrV^BtFk4+-s75#no6N&@A+$P!1f?8qs16eTxWLn< znxO{KfeP(a!u>%X04yRDtN`jtibR_t5GAAg=W&EYBjlMI8!1m4h7pbe2+E8=(c~^= zjtD#m8ZFsDa6o0w9IPqG10)st3fX6lg6W78%8q&m@&&!ZxLPo%Ai%tNgc4Kh3R?=P za2`uU`V}QYy~7lJhg0+&;B&KGVzZaJJ&6ixL-HjxtRY#g;0?vy0lsD$zU~l<*;uFo zXoRv%6=Yl!YAlPHBFKQ$j;m3qQ==$xV^u)`Vj)KYW;e@;rW-XPd`1lS7{S?uk;u{khTG9dB-(>S_2Ucj!l8YkebC~1X(`N9(R!G@ zqg^-Xw%Z_0T`zEfGX-~g2mB-O3+H_LC6-DT@dxPJ>|(rVlDx(Fs=3u>7nyHV$GR*; z8^Nq9HyYCUqM_b;5GR>a5IT6hO{CQgLE6+NZM~B z>dm&;I3D3x0uUS(hB1br#he*EL$nXk5vG?lh;R%Xq{t;jo`NH^Pz16#SOAj}D6n8# zFo3|#gP+QkK(zE#;XHKstHKkY)$`C_BbXtx#}vX4{klhU%AFT9tN- z(%6_%=uort!c;K)zC~nA1IjXc++2|Pt;;2?Rz8LxNmd+6N^&3vzO2R&X9iXknEX$fXH4|0ZjJDo?|^bCmz z8ialJcD4`PAan<4)&WF!TF$0F#FWq{=rb`V6Y4#lQFK}6PAFLk*Lz9;NxoBb;cDmx zRz3n28(k=CK+zp$1GF!MqJ}7Ubb<6x=m4r{umW@dQnU`Hhl~y)wxfgTA@;=~sofCQ z;9!qQc~quphpiIvhlixpHtEbVokIXC%YyScW~Cn;hrWZN(nB^YsZn;vPzFmbfJY`M zP#=Y{zYh=Sjx|`N!Pt|2vrs!k7;&WvSjGSkEFJ?$37ivW0KqaJdUEMwUaG^F3OFEgW4`b}RF6A8tKZoST* zJYU&Z3o3!#LRK_`q09nGE3<&Yrf*NDkV8tn3@Lo#9FKQdB@)rzC`mY^(N@$uwgRh0 zj;)Y2MM~CroIW?gznIoBXIVD#x_*v~{nChj?`0|-T&LH@w`M~@egBllg z@Okz*4WuSqDlt-eTnaH#`dkVzQuetNVx;VMDa1%gyA)!i9CRtfNV&tM z5Cer$tYBMl&4e)y;cgz$1)TLFsRn}>|^dT)AMhG%BSTXS=rs(rNB&F>4agu=K^oSrKvv?wsIYfiVA4C2`3fsx>#O%HWg^O+geQ>$Yb z5FtOw_mdKTp?HYMexW#o3-d~4YlZeUgFO}*8*e>fDt>}2i((L?C>}QHS!J=lXhSxrJ#J;^M!lyEblbF|YJn zS|Mn*sZ0l`5C;s-2)c~@m5?HOKDL`+ZMe9Atuky7!VdgW))%3VTt%EIQk|)nhcj@q zgYL2t) z0;N|Pz=miicil1r1sD~v6L;2(irAf-W!M8I?BNb6!!FN~=KGe&05`sCG_n&eY;VTq5bU8mAHV|-8bX2C37Nc`nqtGZi%H9xF7e8 zeCc>(etrF-%jVb5tB?32M)3Q*5xioqKee3f#Q}*t8DIc$$8b|9!%Zz8+w4hO@dZD8 zIo|!)3qFX4uVFAn_%1y#G5S*C5n{Q2^}cvsD84S!+nh+O#YYyD{Bm?GR@a4ZB=GOQ zE>@A{g8e`6|3wK{suXNbQ7WCyy>?~l$DlLb)wr%3wA8)aFEM}j1{MIr4~46Cz?Etf zuoksmt;2H*;40w!dp`J!|KwsTXW05r-;DjYoG(H$Ps;hQr2 zo5}TCb3Bemmw05%IgTn3)Z@W7QH%wiyn}POIekmw)Z?J5{U$sDKR zv8Vym$b2UN;XHDDvv3!e)6r{CioE|LTw!_A<+>T1r*LG5$ESGU&Kxj8yzIkF5h;yF zzanxla63}4_OL_vt4GiG^4x-0-WwqdpN}I?_3owAVuh0cR4<cfdK#5-4A?ogMbE*p?uA57%2JWm3n)A1E}9>~2BCn^^ literal 0 HcmV?d00001 diff --git a/Include/Ninject/Ninject.xml b/Include/Ninject/Ninject.xml new file mode 100644 index 0000000..d9cf2f2 --- /dev/null +++ b/Include/Ninject/Ninject.xml @@ -0,0 +1,4026 @@ + + + + Ninject + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + An object that notifies when it is disposed. + + + + + An object that can report whether or not it is disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases resources held by the object. + + + + + Releases resources before the object is reclaimed by garbage collection. + + + + + Gets a value indicating whether this instance is disposed. + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + Provides a path to resolve instances. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + An object that fires an event when it is disposed. + + + + + Occurs when the object is disposed. + + + + + Initializes a new instance of the class. + + The parent resolution root. + + + + Releases resources held by the object. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets or sets the parent resolution root (usually the kernel). + + + + + Occurs when the object is disposed. + + + + + Tracks instances for re-use in certain scopes. + + + + + A component that contributes to the internals of Ninject. + + + + + A component that contributes to the internals of Ninject. + + + + + Gets or sets the settings. + + + + + Gets or sets the settings. + + + + + Tracks instances for re-use in certain scopes. + + + + + Stores the specified instance in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets the number of entries currently stored in the cache. + + + + + Initializes a new instance of the class. + + The pipeline component. + The cache pruner component. + + + + Releases resources held by the object. + + + + + Stores the specified context in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets or sets the pipeline component. + + + + + Gets the number of entries currently stored in the cache. + + + + + Uses a and some magic to poll + the garbage collector to see if it has run. + + + + + Prunes instances from an based on environmental information. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + Releases resources held by the object. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + Gets the cache that is being pruned. + + + + + A provider that delegates to a callback method to create instances. + + The type of instances the provider creates. + + + + A simple abstract provider for instances of a specific type. + + The type of instances the provider creates. + + + + Creates instances of services. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Initializes a new instance of the CallbackProvider<T> class. + + The callback method that will be called to create instances. + + + + Invokes the callback method to create an instance. + + The context. + The created instance. + + + + Gets the callback method used by the provider. + + + + + A provider that always returns the same constant value. + + The type of value that is returned. + + + + Initializes a new instance of the ConstantProvider<T> class. + + The value that the provider should return. + + + + Creates an instance within the specified context. + + The context. + The constant value this provider returns. + + + + Gets the value that the provider will return. + + + + + The standard provider for types, which activates instances via a . + + + + + Initializes a new instance of the class. + + The type (or prototype) of instances the provider creates. + The planner component. + The selector component. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the implementation type that the provider will activate an instance of + for the specified service. + + The service in question. + The implementation type that will be activated. + + + + Gets a callback that creates an instance of the + for the specified type. + + The prototype the provider instance will create. + The created callback. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Gets or sets the planner component. + + + + + Gets or sets the selector component. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Executes actions defined on the binding during activation and deactivation. + + + + + Calls the activation actions defined on the binding. + + The context. + A reference to the instance being activated. + + + + Calls the deactivation actions defined on the binding. + + The context. + A reference to the instance being deactivated. + + + + During deactivation, disposes instances that implement . + + + + + Disposes the specified instance. + + The context. + A reference to the instance being deactivated. + + + + During activation, initializes instances that implement . + + + + + Initializes the specified instance. + + The context. + A reference to the instance being activated. + + + + Injects methods on an instance during activation. + + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Injects properties on an instance during activation. + + + + + Initializes a new instance of the class. + + The injector factory component. + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Applies user supplied override values to instance properties. + + The context. + A reference to the instance being activated. + The parameter ovverride value accessors. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the injector factory component. + + + + + Starts instances that implement during activation, + and stops them during deactivation. + + + + + Starts the specified instance. + + The context. + A reference to the instance being activated. + + + + Stops the specified instance. + + The context. + A reference to the instance being deactivated. + + + + Contains information about the activation of a single instance. + + + + + Contains information about the activation of a single instance. + + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Resolves this instance for this context. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Initializes a new instance of the class. + + The kernel managing the resolution. + The context's request. + The context's binding. + The cache component. + The planner component. + The pipeline component. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Resolves the instance associated with this hook. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Gets or sets the cache component. + + + + + Gets or sets the planner component. + + + + + Gets or sets the pipeline component. + + + + + Holds an instance during activation or after it has been cached. + + + + + Returns a value indicating whether the instance is of the specified type. + + The type in question. + if the instance is of the specified type, otherwise . + + + + Returns the instance as the specified type. + + The requested type. + The instance. + + + + Executes the specified action if the instance if of the specified type. + + The type in question. + The action to execute. + + + + Gets or sets the instance. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Determines whether the specified binding satisfies the constraint defined on this request. + + The binding. + True if the binding satisfies the constraint; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request should return a unique result. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Initializes a new instance of the class. + + The strategies to execute during activation and deactivation. + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Initializes a new instance of the class. + + The service that was requested. + The constraint that will be applied to filter the bindings used for the request. + The parameters that affect the resolution. + The scope callback, if an external scope was specified. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + + + + Initializes a new instance of the class. + + The parent context. + The service that was requested. + The target that will receive the injection. + The scope callback, if an external scope was specified. + + + + Determines whether the specified binding satisfies the constraints defined on this request. + + The binding. + True if the binding satisfies the constraints; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request is for a single service. + + + + + Gets the callback that resolves the scope for the request, if an external scope was provided. + + + + + Defines a constraint on the decorated member. + + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Indicates that the decorated member should be injected. + + + + + Indicates that the decorated member should only be injected using binding(s) registered + with the specified name. + + + + + Initializes a new instance of the class. + + The name of the binding(s) to use. + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Gets the binding name. + + + + + Indicates that the decorated member represents an optional dependency. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component's type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Releases resources held by the object. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Represents a future value. + + The type of value. + + + + Initializes a new instance of the Future<T> class. + + The callback that will be triggered to read the value. + + + + Gets the value from the future. + + The future. + The future value. + + + + Gets the value, resolving it if necessary. + + + + + Gets the callback that will be called to resolve the value. + + + + + Indicates the object has a reference to a . + + + + + Gets the binding. + + + + + Indicates that the object has a reference to an . + + + + + Gets the kernel. + + + + + A data structure that contains multiple values for a each key. + + The type of key. + The type of value. + + + + Adds the specified value for the specified key. + + The key. + The value. + + + + Removes the specified value for the specified key. + + The key. + The value. + True if such a value existed and was removed; otherwise false. + + + + Removes all values for the specified key. + + The key. + True if any such values existed; otherwise false. + + + + Removes all values. + + + + + Determines whether the multimap contains any values for the specified key. + + The key. + True if the multimap has one or more values for the specified key; otherwise, false. + + + + Determines whether the multimap contains the specified value for the specified key. + + The key. + The value. + True if the multimap contains such a value; otherwise, false. + + + + Returns an enumerator that iterates through a the multimap. + + An object that can be used to iterate through the multimap. + + + + Gets the collection of values stored under the specified key. + + The key. + + + + Gets the collection of keys. + + + + + Gets the collection of collections of values. + + + + + Defines the style of request (single or multi-injection, whether it is optional, etc.) + + + + + Indicates a request for a single instance of a service. + + + + + Indicates a request for multiple instances of a service. + + + + + Indicates that null should be returned (instead of throwing) if the service cannot be resolved. + + + + + Scope callbacks for standard scopes. + + + + + Gets the callback for transient scope. + + + + + Gets the callback for singleton scope. + + + + + Gets the callback for thread scope. + + + + + Gets the callback for request scope. + + + + + A delegate that can inject values into a constructor. + + + + + Creates injectors for members via s. + + + + + Creates injectors from members. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + A delegate that can inject values into a method. + + + + + A delegate that can inject values into a property. + + + + + Creates injectors from members via reflective invocation. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Loads modules from compiled assemblies. + + + + + Loads modules at runtime by searching external files. + + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets the file extensions that the plugin understands how to load. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + Gets the file extensions that the plugin understands how to load. + + + + + Finds modules defined in external files. + + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + A pluggable unit that can be loaded into an . + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Gets the module's name. + + + + + Automatically finds and loads modules from assemblies. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + A loadable unit that defines bindings for your application. + + + + + Provides a path to register bindings. + + + + + Provides a path to register bindings. + + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding from the service to itself. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Initializes a new instance of the class. + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Loads the module into the kernel. + + + + + Unloads the module from the kernel. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Gets the kernel that the module is loaded into. + + + + + Gets the module's name. Only a single module with a given name can be loaded at one time. + + + + + Gets the bindings that were registered by the module. + + + + + Overrides the injected value of a constructor argument. + + + + + Modifies an activation process in some way. + + + + + Modifies an activation process in some way. + + + + + Gets the value for the parameter within the specified context. + + The context. + The value for the parameter. + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Initializes a new instance of the class. + + The name of the parameter. + The value of the parameter. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Gets the value for the parameter within the specified context. + + The context. + The value for the parameter. + + + + Determines whether the object equals the specified object. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Serves as a hash function for a particular type. + + A hash code for the object. + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Gets or sets the callback that will be triggered to get the parameter's value. + + + + + Initializes a new instance of the class. + + The name of the argument to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Overrides the injected value of a property. + + + + + Initializes a new instance of the class. + + The name of the property to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Contains logic about which bindings to use for a given service request. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Resolves bindings for open generic types. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Resolves bindings that have been registered directly for the service. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains information about a service registration. + + + + + Contains information about a service registration. + + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the condition defined on the binding, + if one was defined. + + The request. + True if the request satisfies the condition; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + The binding's metadata container. + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the conditions defined on this binding. + + The request. + True if the request satisfies the conditions; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Provides a root for the fluent syntax associated with an . + + + + + Used to define the target of a binding. + + The service being bound. + + + + Used to define a basic binding syntax builder. + + + + + A hack to hide methods defined on for IntelliSense + on fluent interfaces. Credit to Daniel Cazzulino. + + + + + + + + + + + + + + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Used to set the condition, scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to define the conditions under which a binding should be used. + + The service being bound. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Used to define the scope in which instances activated via a binding should be re-used. + + The service being bound. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used within the same + HTTP request. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Used to define the name of a binding. + + The service being bound. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Used to add additional information to a binding. + + The service being bound. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Used to add additional actions to be performed during activation or deactivation of instances via a binding. + + The service being bound. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Used to set the scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to set the name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to add additional information or actions to a binding. + + The service being bound. + + + + Initializes a new instance of the BindingBuilder<T> class. + + The binding to build. + The kernel. + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used within the same + HTTP request. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Provides a root for the fluent syntax associated with an . + + + + + Gets the binding being built. + + + + + Gets the kernel. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Describes the target of a binding. + + + + + Indicates that the binding is from a type to itself. + + + + + Indicates that the binding is from one type to another. + + + + + Indicates that the binding is from a type to a provider. + + + + + Indicates that the binding is from a type to a callback method. + + + + + Indicates that the binding is from a type to a constant value. + + + + + Describes the injection of a constructor. + + + + + Describes the injection of a method or constructor. + + + + + A piece of information used in an . (Just a marker.) + + + + + Initializes a new instance of the MethodInjectionDirectiveBase<TMethod, TInjector> class. + + The method this directive represents. + The injector that will be triggered. + + + + Creates targets for the parameters of the method. + + The method. + The targets for the method's parameters. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the targets for the directive. + + + + + Initializes a new instance of the class. + + The constructor described by the directive. + The injector that will be triggered. + + + + The base .ctor definition. + + + + + Describes the injection of a method. + + + + + Initializes a new instance of the class. + + The method described by the directive. + The injector that will be triggered. + + + + Describes the injection of a property. + + + + + Initializes a new instance of the class. + + The member the directive describes. + The injector that will be triggered. + + + + Creates a target for the property. + + The property. + The target for the property. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the injection target for the directive. + + + + + Adds a directive to plans indicating which constructor should be injected during activation. + + + + + Contributes to the generation of a . + + + + + Contributes to the specified plan. + + The plan that is being generated. + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for the constructor + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which methods should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each method + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which properties should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each property + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Represents a site on a type where a value will be injected. + + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the type of the target. + + + + + Gets the name of the target. + + + + + Gets the member that contains the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Represents an injection target for a . + + + + + Represents a site on a type where a value can be injected. + + The type of site this represents. + + + + Initializes a new instance of the Target<T> class. + + The member that contains the target. + The site represented by the target. + + + + Returns an array of custom attributes of a specified type defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes of the specified type. + + + + Returns an array of custom attributes defined on the target. + + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes. + + + + Returns a value indicating whether an attribute of the specified type is defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + True if such an attribute is defined; otherwise false. + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the value(s) that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + A series of values that are available for injection. + + + + Reads whether the target represents an optional dependency. + + if it is optional; otherwise . + + + + Reads the resolution constraint from target. + + The resolution constraint. + + + + Gets the member that contains the target. + + + + + Gets or sets the site (property, parameter, etc.) represented by the target. + + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Initializes a new instance of the class. + + The method that defines the parameter. + The parameter that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Represents an injection target for a . + + + + + Initializes a new instance of the class. + + The property that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Describes the means by which a type should be activated. + + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Generates plans for how to activate instances. + + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Describes the means by which a type should be activated. + + + + + Initializes a new instance of the class. + + The type the plan describes. + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Gets the directives defined in the plan. + + + + + Generates plans for how to activate instances. + + + + + Initializes a new instance of the class. + + The strategies to execute during planning. + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Creates an empty plan for the specified type. + + The type for which a plan should be created. + The created plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Generates scores for constructors, to determine which is the best one to call during activation. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Scores constructors by either looking for the existence of an injection marker + attribute, or by counting the number of parameters. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation by checking + if they are decorated with an injection marker attribute. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Selects members for injection. + + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the heuristics used to determine which members should be injected. + + + + + Selects members for injection. + + + + + Initializes a new instance of the class. + + The constructor scorer. + The injection heuristics. + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the property injection heuristics. + + + + + Extension methods that enhance module loading. + + + + + Creates a new instance of the module and loads it into the kernel. + + The type of the module. + The kernel. + + + + Loads the module(s) into the kernel. + + The kernel. + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The kernel. + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The kernel. + The assemblies to search. + + + + Extensions that enhance resolution of services. + + + + + Gets an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Indicates that an error occured during activation of an instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The exception message. + + + + Initializes a new instance of the class. + + The exception message. + The inner exception. + + + + Initializes a new instance of the class. + + The serialized object data. + The serialization context. + + + + A service that requires initialization after it is activated. + + + + + Initializes the instance. Called during activation. + + + + + A super-factory that can create objects of all kinds, following hints provided by s. + + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets the attribute that indicates that a member should be injected. + + + + + Gets the interval at which the cache should be pruned. + + + + + Gets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + A service that is started when activated, and stopped when deactivated. + + + + + Starts this instance. Called during activation. + + + + + Stops this instance. Called during deactivation. + + + + + The base implementation of an . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The component container to use. + The configuration to use. + The modules to load into the kernel. + + + + Releases resources held by the object. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Adds components to the kernel during startup. + + + + + Attempts to handle a missing binding for a service. + + The service. + True if the missing binding can be handled; otherwise false. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Creates a context for the specified request and binding. + + The request. + The binding. + The created context. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets or sets the attribute that indicates that a member should be injected. + + + + + Gets or sets the interval at which the GC should be polled. + + + + + Gets or sets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets or sets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Provides callbacks to more aggressively collect objects scoped to HTTP requests. + + + + + Initializes the module. + + The whose instances will be managed. + + + + Start managing instances for the specified kernel. + + The kernel. + + + + Stops managing instances for the specified kernel. + + The kernel. + + + + Deactivates instances owned by the current . + + + + + The standard implementation of a kernel. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Adds components to the kernel during startup. + + + + diff --git a/Include/Ninject/extensions/CommonServiceLocator.NinjectAdapter.dll b/Include/Ninject/extensions/CommonServiceLocator.NinjectAdapter.dll new file mode 100644 index 0000000000000000000000000000000000000000..414464f363fe03d8b30772216c12989a80d74312 GIT binary patch literal 5120 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 literal 0 HcmV?d00001 diff --git a/Include/Ninject/lib/System.Web.Abstractions.dll b/Include/Ninject/lib/System.Web.Abstractions.dll new file mode 100644 index 0000000000000000000000000000000000000000..317242e723fb2db3e16792d11c106eff0192f6cb GIT binary patch literal 84800 zcmeFa34ByV+V*|dIY~$YgiU1)Nn}ePqzOAJO9&uQ_OObIouq-5BptgG78NBbE~BF8 zFp7KJ0MT&}0oPI7TV)(nT*h%h$8q0A9k+4(uKPZBcULFiGw=I7@ALV4Kcie-|EfB5 zYOgv~b-Je>cPY6wOxcq+ducF|TNe&3 z3HxhuEB&>#q59m4KyJ99HaA$CJ7IcxZcV5vP}H_hZyRC&;R%@mxxmk`%BLyiYE}3MfHJ|_4qvJYY5yVtrAZ* zdw;n^Cl!Sw;Yy&y4RPeOQG0w^f8!9#qHv%(1dkk7j;8W0?Z2;iu{C_sTz zoLAm0(v>Ll)L-C7Pba?{qSim`q2LCyLM)1+=4JX;)x1quYEO#d| zuF8gh4U279V#87!f;OCN!!jGHZK$!K)`pM`bvB%0L)eCh4cHt=B(A}RXHe6xDl{Rd&;VK)hw&5BZuC?Jh8?LwE1{<1exY352 zY`EEmTWq+MA>IdUN}|n4w8g&cHXF7k`NNPQlQ!x9QbKnmIsTsM7e5$V1K?QW&F0bV zB?drO2SEM|-N{M9R9fH)y~kWh8{do z)l#&o@n`4>&O1ET2|Njibiw?LD}&fPr5VlOhN4U{r>AXr#)fBY*ki+=7*Jom;GVOc z{%phEgTnK+%L_KV$Pi1(K0xFrq&{x*65E{VST--S%_nR_M4bk?gp`vZ>Y!rJ;pIHObxxytQm#SvrDiwU#orX^q6# zn5dDdS|j;0^by}4`6=+R4Lxnhu_2d1%CIZS5W@t@kgs<`pTH$nh);5TfIF9UbAO*U z_lNwG5K=;)ao`8K=JV#)93<>7n){2T4v~>U^rHF?ro?RvlN^hf{)0lX8vhfT)#$<# zS)Ha?&7Yw!IZ#AK;42%xw&9-)sB7%a4SmD(AH?KWFaHbA$C_DI>HS+v54}{P^jdN0 zq3QBx=vx#-1al$jn8fBgEj5AfZTP{4f7$S(4ga>`CmYZ)N>!1djSY?sE(59xdvil6 zwo|GNX-WQC*-q&;WH7`MoC%2B#f=zsRwB}xo#VG_V_(_UhAbP}*?^-_iF9?ap`#6* zY{1d3#5GtCPrzX|bhe=jLp-KkZKrNFbhn|04cRvIv?0d^oZ(8uCyyb1*Ta*jR}%G3 zqCQL*GNc$&QbT>2W0~HM0sWNc7|Lh-wXy%NH}?OZ~?_*#@P4sE$+^3;# z@n@)jD-$X#gB$9v)lQrSBsmo_p<@uIfq=+3?HI(SD9N*rDRv7S)U<96rz4Y`jguYGcUrJ~}lH+m7jti3m!If<4rq2u?`pBk!8a;-_C+Gc)3Nv?HCbP7`Kk;?H~Cww4Ad7HA!HF4J$Rv*u@R4vYk#%a>9nO)ELj>=}Cl5 zWy|dhCKQ_ZObMNtjB6NCRXo?!P-8Pbiy1Z3yU*Fl7oU^lxHj4G+$6{Ik{!=aa=akf z@i$417bZJi#E2n7BaG+Xi<7*sOZI+AlH;Yxj_Z>gFJnT>x?Deh%b)-ERamR04#0W{ zkK`D66E!tcYbt++HfRnpxS`)MdFKlTJ#vF6Gh)zi=ID2cWER9w%c$w15(c} zZfJ+?w9|%N3`o5AO9|a$yWPtW597Whx}PZ)S6Sy7f;Abej(0et4Q_cz{zLFkm>Wi) zQuk*p_c{3w!y>dB5_trYnYM=giRb>^&S(oWf?Fe>2nc^zRi{5a{n;O}PDt4Kq3ZHg zk@`SQ(X2ou)DW%=MB=7d0e@8>T$o!EsSJgygB69ja|7W>FjPBwaM2+CuQ0c?p}M{y z92i|2Xs8eSs|#~yG*navD~}DVnjKmes2yD~VuXKK<*?z!qlOF(3>rDASIe6<)Yb=U z0p2)o~H;Y>3jioeNoX7bP&D)WkMi(B=_jg86_uAEu z&Fk}7A1q+q)1S4?0M@kwY6fJ{;e|B=GHHGx-(__nhksk)#==axa|oyC^`U?!!EuwD^e`I(j{Zq92 zh@W5{A-Z71q!CA(8r0HEI(-EDxdxg>&yV03emR0e&K$|HIvkosGe?dbnMP-fTs$(9 zHjJD!B9rbK$ydEDe$1%R!_sKrsLrF(XcCm`l2?T4gYS1{O;!KC* zvR>RWXpgvU0!_x*%}>PbVR6f(wk}_{4>SXLT>%s zCOIAOCZXS5W7^X~wAK!&RRN);LhY0qgxV{u5$d3Hu}~L~p@x*RkjEXnx=7ts-RGJ- zT9tDYV!R>eBxqsoO6XU;4SYUba5D7G{&%=}G^Frlm^b8n=yss{3jYaxqVNZ|e9aqa zIVs7SIgoAIi}nyL5cPZx5%c7MAHmN8F)tB4RrDg!4Wc)QZge=bU1HuN`j+U2qCbir zTEu<|MaPQH6Rj1!O!QXK-J;KnzA5^RXloyb&{cG>XsKwq=;@*tiryf4o9M%$`$Rt% zO&i4FbQ2vaIzjX#(Njdv7TqX%zvy$K?}`2>+M$@k=`T83bRP82x!k6n$T-&Rgc5vN zX`b5!^oB?2Rc5f6$$X0s99S`cQ6vZ7fXh58bP~!)CM6bGKsN1&T9Ho?$`Jm&K+NKOa+o)9PkTM4C=VYOCx^xi=3!Mu(7jBn$ zKGQirJJ2;soSz-&dL_=!4s^Q`=Vu4HS8099MW82?ICneH3rd{39cX`?il`%fro_41 ziTqHZ)#iF3C*RVi`qcBin? zUsBfN?de7(&g-7EPU-!Wji76kIOlWdHYLvaT-v3?IiE|9D{;=}(Thr)^Sx-lM;Sk* z*$rN4-3U8*!rd|sh+toXc6sj}4r@Og{UX{|Pc zZdY0-*KJq2LFhiEXT;}jr8ioY&|&nU*OfX7{Y|Nl&__zc z(s#k3CLYNd3cP?pk`^apU=p-T6qbIf`u?G@^!^r=vPrIZZ5 zd$H1?8GQGVO8ql9l(9-9geECX6Pl_N6q>Dcj?hA-CZP(YhcY-{f=cfR)hV^gWVaPc z{e;d?nk2MVsY>V~rL~zH&&!o=6t}CCqC!nd?+a~K%52T|yHlyR&`zaeg&tH|D)gAr z`9jYqZ4!E3=^3F{l|C1GOQ}N}zTbOF!-PInnk)3R(&=ru9R8(ri4eL}sRg$QWhy-; z)IsSrp)N{aNSHZF?c4I*`zrMn8mKfvXsFUWp(B;5g~ltLE>xzpUTB8WCZTys&kCKW z^tMny=^LSHr8Zd{vxrh}p;MJc3pFau5jtOKnb0LlX9)dH=@y}Dl^znhS?L|2tx66C z^FDN!Qnt{&O2tACD@_!7QfW@RhjHDXlq%bC9o(l>Ek6IMv{vXHrOU+Uhf3GA$1_A*r7zn(P5tN)rS$e=FuU)rl-GVQ=y0V$ z?Oz5JC>_!MuT(&Tl*-^XfJO*;vxGt#E5x&eR;G}S_k5=F2sDs_O56(%q~%K7pADq5 zmAEbqq)U}JwFBu|B_0h2(rrpS8V;mgN<114q{ozaG#p5Km3TB9NN*_d_&1O~QsVJ% zAbqREZruy-$2Sy;_+`F6)N%gH;_gt@%T58CMogwH;~Gec>Ehk zCn@pxH;`(Sc>Ehkrz-LIH;~R(;_NfBVG~pR^kz_hz2Y1i07lR zN<8BEXo?b#cs^R7#3P=M7Ax_H=c9-ck8wU)qr_vJk1kf?G0sO>ZsOF>2N<6ChsJ9Z2YCbAf;!({9H6LB1#G{&zHY)L`=A&DccvSPzb|oIwe6o_tY2Z=K zM|;$bM>QY)MTti>AHAofMM^x54W?=(9>)gLsY*PK4WSE^cpMu>S9p|hWY@N4I9;by z)3qb$7NrecJA-cb$UM}w2WY#}zOLn1>$*?r!>+x|DB7*mqg%c?f}V;~kvWo{Q!4CM zjuqyYl!kU2Lu2T5r3KxFnKAS?r7F-^`beoBKF85Nl$yF7X~xlaN?YMp;w@NX?Ej-s zD_*_^MTN4IUhUS)l+d9{A0U+R)I%w&dxT)cPG<19uep6WV&35bN3i(QsUe_mhM#I z+?_%X#;M3mrDv5mcc;@|lsI>1(0fXpyEEu(CC=TM7DM2;r4r_AG$9C?NBQ0af&&P9#AUnu^jZM(#bte2R*HHR*$nl zdzCH{pRXug+2cI8y{U9_k33pPe^+`?=o6(Eg}zeysK-t4`GeBe2y-DhKFRBh{Oon0 z45gvjzXi2d8kfBh)LCh2_I041O7pXC0`*aOuHCjq*los|Zry!jdr+wyRS{J9+Of_wY)7vIQ*C;LN`Jsu>O+sFatEa6( z+~P`{dV0$9na=g4f%YkJeQBWgl(@b$&{s-aUmD06B&Cwh^<_D=Q{wuvoO&p6eOXQg zN?c!-({LrOFUzS^iR;U9nyJL~Wd)t6#PwwbEmPw9vVvABaeY}qYn8aZtf0%3xW25Q z>y@~^te|a5Twhkuqe@&~R?sU-Twhkuzm&MXte}iyFST4>R#0apt}iR8w-VQvl~k<6 z^<^cEQR4ctlBRe>TwhkvaY|fYPNgMETwhM5x;Q;+PN!3qxW1f8XUFMT?3Y}u#P#JI zx>||r%UaqJr+wyJx+hMrne*wXIK6Eyq`xR}eYu3*_efU3FQv~sl6CJ(>7VMx>$I2B zk4n5Udnu(1_FC#Xcd~OSwT{y?XFYZF$nXm5WzP~ZhOSy5H>};TZ9?AOk@2E)K zc!l+MG)%~=$yd;5A+E^*=L$N`^C@f1SJDzCUR}PD>XkUwS5l)AuP$Fn>y$VRSJE{~ zoQ5muu{ce0Hqr+k5vSoQ`c{e4a1G`1Ry{_9D6YGfCMxkN@pUvyiPLZ$outI8#Me_u ziPwdjXthTfO*z?gBb}qPJ!doMLZwHAE>n6rr`oxZHhN^<%PEJ?8-%=Ex`{RmaW1WP zZlcFMpXq#uo9THazQfJ*rV`)bX8Kr(?{G7H=MnK8Zl+d4y^Q}8 zw$j&W*EpMKp;C{$&9sRsltu{!l_urg2%mLIGxDlIE0h-IZ33O4bZXx3oz1jX>1>3u znJ!Y|T-r>RD_xeC2e+$~ZWU@$x=U!Y(yMuQ07luQXcdRi(*7Zz;_`yd0str?m9&-#c6AQ>D`n&!#Q(wbCVr-v_sUDP1At4)e-= z6T;j=nMykj?*!_g^rX0TQF=`%N9kj^Utgtfg$63|41Nm@^~j|6df2&*j#TQ@>j`Ho zjaTZ|>v6iB%Hs5_a|g{(^7R@+f1r6v@8#?>f1neEy!LPx_WU^w+#b^0yXb7sC)S?M zakkS2B`$~UbfXfN!*;q;iEGbxdO(R&w4I_#oTBaYk`lL$?evZkw~p=fxe~XI?ewD( zw~pa4`=VLQ$rcy8Ptw$orGZVz|USS4-`cheLlZVz|UaZ21CcF+7O<1v zR^k@0lRi`87O<24rNp&-CuPXFo+r||mhYs)l(?4fq+Uu~%XiWsC9dT=X|xj8@||?7 z64&xwG+&8p`7R15aV_6PVI{8RyXZ_MuI0PvA|64A|a*fiNeddGCQ@XIvX7ePi zQ@Xy-Fwh1iuAfiQHA-ARpQ4+TxHU%UHl^)-Hh{J%J<;b9=V`h}=~d*?)AW$iXF^XX zwdvc@eVXt0mK@4Fe-y{0s}Z#n2~rCD%$hCWa_0dCLG=SoZaX5%EyH%cq| z&IkQl>0Dg5hf?J{&l4Hf;JQ83M(HkG_b2M4^cb%D6LnL1sc#-VM|nyg_U&b!qkN@* z!|l)HQ|j8Um-#ad_s9(GS5A9rw9>KtI=j!)gg9lpFVL|{_5FIeFVZZf^KjihTA;KM z*S$n1#VOl;nU*Ns(QknJ3e_q-(y!S43pFS`2e;Sgbfv!{%-88`rT699EMGha}4oW{6cQtvp;a{oyKlD4?s<}srdz4i3xDxj$spfel?om?BTT0xcq?u2YxJOAdKPYjJ(#oVC<>dtT zD6Pz4O5CHQn_f!XqokW+CGJr&%oru^Q8LUFCGJr&%>pIvQ8LXECGJsLn|dYgQCgd` zJRS5v6OJxVuogcA2C-ObTT+@o|ivz53<>2CZ= z+@o|iwMyKhbT_9dagWm7oUg<^N_VqCiF=gp<|ZZXQF@qdaoT6H&BIFEqvV*Ul(pU{N$}!w* zP-@e^2y{)HJ~SiDO-fziHqzXtR&w4P*Z&fCnrWj{i8RbGo#M35%rrP$&1GaN`(NRfn>?im?mo}pptHC|`Y(6q z8=ul@xE*JP$7#8{(2Q0(4{j%z2}&FKH@PR8W0h|1zsX%>W(j#?z)9vfAsz$na!)cV zJfFn5 z^(LsqrHS=IB`(bs=G-`y(<<}ZI9=kNYHm{E(mdU4i_<={+B_VmE8H{9^GaNrXPdX; zwA?+%e5S;ud9L{}PRrf%OdD**aN4;vFEHJdxHNxb4p-vRywLRbDB~afv*{vJtn^d= z`Jj#) z-(^l!;&|R|&Qs!e-fcE0aXfdJn}p6r%*No|sN01uPsgrx%1-l<(uaja zQ+is8y#zzGadjxt!n_JLj{3CyAJ`lV;Yg;0^{mXXEA4s9&Rb` zxELBJ>X`?Nd93I}(RrdLivG{s%gzVeTq|){33X&A$56uT(#7Js!E#NQW3El&=Z?5K zbeEVPm8+hGy0q_rHYv1U?7tNKNz{&;ZT{uN)2^khv5#}`7StZDu{P+{>Yw-DvPJZg z5DG;-vz;fl*=rX^iq8^JE-AbL1$Af!Y+PCt567W;F`q4Jhhv-n_rkP8_&;a9L}GrW zr8kP%%cV!f?5W)&?Gbz1=0&mb^6D>Q_Ts!>%&ZQ*D`u~Tdm(stVRh&Ws7v39pPxiI z9IsZmz2H#zL( zz-YgBR`uHm zoli~BF|T8@#0=t-CuPJ>Rb|9aQ)R?Y zQDww$9F`HkX_zN*i#q&%M%3Z=GNKN@j}dkFJ&dTs?_We6e(xgc@cR}~hu^b^I{bb` z)ZzCkq7J`L5q0=Iim1cyPedJlZzAgO`w~%y-;;+$bA?on^4pE2SbBH?penZsZ_Zp%Ozt0eL_&tWGGfvF>-a^#j_Z6b}wm*(Jzn>6w zZV=`75uy&ihY)r6{e!5(?;S)Pe%~PK@OuVPhu<%VI{aQi)ZzCDq7J`D5Ow(dfvCgp z4MZJ&Um)u6dje61-w%j7{9XXklEHrXJ%Fgg=l`P)pZkwGeBM9m@Hzje!{_^>4xj6f zI((i#>hL-KsKe*?qYj_jk2-u_KkD!~{iws|^P>)*%a1yI9zW{vIsB-@=kKEqpSwps zi}E@9sKe*$qYj^|k2-vwKI-r}dX$|gpPP?5d|nhL-9sKe*WqYj@dk2(`Y`5ZaQ6sN+Y4xbxG&WQ3k@u=l{lq7F_Y>!)GFk4WET9Hbb*>5azh-KG3Pz1EBM>i=lkR zvDon0#$v-~8jB5|Wh^#)h7obV*~MZxpknMwxZ)lmgZTP+qGUWujt^iaqyKWrk0o>b6i__R)=;Zr(|hEL}-8s4>QG<+JT(eNppM#HCX8V#SiX*7J= zrqS>zn?}PskBx?R92@0cjdHI>!~2YlhW8g64WE{2G?VfIxEJpgHX7a|Y&3itrqS>z zm_~_Jqv2C8jfPLVG#WnT(rEZ}OQYdaEscgxvosn$#nNc_^h%@QQ!9;zPpdQ6X!!I=qv2C0jfPK~G$P*~hw|x?M#HB{8V#>#vpx$mpB`yM zF6}c-*b>d7Cc}HWO@{Y!n+)&aHlao>D`+yjXWL|WueQnX9&MB1z1b$onI_4ZCdrc~ z$&)6@lP1G^txbmaSep#*tu`6nQ*Dy`K{&{tCMks`!+WL(0ehuQhWALD4DXF1KG+jQ ze6Saa_+Y=X$?)E1li@wjCc}H3O@{Y4n+)%5HW}X2Y%;u;*<^SRv&rz@Ws~7O%O=Bn zl}(2CD4PuLO*Y9XhbF^&k*wKJ-g|5^yyw_tc(0L_?Rjsp$?%>cQY~iQLu@j=hq>hc~1{<5c~T4 zF);Jq9qU9fA0vuWpoaJ6SozxX#OHbWv*5~mZ(9uS(rhujJF~^`uFMw0yD?j&ZEi8V z`@;Gm{P1qe7Q?$NtjlpN@2aq_7V}yt@1C%-EAN)DvYG4B7VKlO|KlVC-qYHG{VEQv zQtWx}YK!4r4pzR3cQshq%)1y{%!d9A1zXI`{ZA{{ZFseNx8YUp-GE-fejO zdbi;f%iV_OIlB$7Q|~ssKE2!Uy7X?t>(RRn&vSMgUVq+gc-?t7T0sGn*O}Q|B<3Md zUQgaF-=wiy%5Jye8P0CQGo0OqXE?j1&%s^L7wtAY%i3*tezn{1I_F-o-z%}&E3SJb z{Jn-LN0;WW`B1&#FC$fuy0qyAj*D(0Lo z6?_NRzZGQRjiAF*vgjx(hK>`RK;vMZEILJW2Cab2Y;m1WFQ%l^@$@NdPNFZNRiaDj zkkl-E8`d0X9eo0=rwh}vXeE`l%A(WhW#}5ZI6Vtz#Ybmk(fRZ$^diwq>3f)eOQ*NV zqANwOp=)8jfpYMjN;lINP_)4ISvY&??~sL4maRKx;e_EG(0eG*DT^MU&WB{-T-yE6 z$Ee}ZEP9G^4$HzxrzfF*rcIr*=tY{^C5v96pP+xGtGj05#LdiZSvXCT+8y8eL{CCL zrZe%aPoGmUzE$cg`U3hbU5)RP`WKy$lZ9o8jNB|rF}tAYW?3G-2g)3IcoxnPd;mSf zWcJF!{{J7LJxp!yEXp2yZMC{9suGiUSwWQp$rKOGiP=>3C=*t%oiXjo@v;B03Fk2^P`W63&HmAIz82 z`~6FCb}qA^QuJ)mn?y^E*o!_Y`i|(?4%^=(`l#qTqOSW<+Zp{__e;@t+BO!P)2%gP z`?oyS;OOpI9~E36nvQQ;>N6k>&p~bTTZyJo8!>y@9_BQBKMT9!*$8G&yNHdaJ;dJA zT(M_OquyfnG+%63TT!8yJsl)AtZ6h<%$|-E8&8iCdr!xSJ!>nPAZAY|iw$cUO%XF| z8s5%gpR8$U5o~5nqxoWHO+)Kod)5&J z7Y?mJbgbwi(Njg&i#CaF6TPR)ckn+$O7Ib}d0F(0G|r{Bx^Vt~DmGt$QcA(nll{wONfIvS{-Oyn~fMwO*szQ(ogbO zmhky$4)=ur%HcjFJ(smZZWtjP%zkt)9$U+LvCjpf0nrQFzksVQ==BQp>RxX&3*osA ze}m0d@%fnOo?aiq=7nB-ufO#A4EmT=QR#dS+>PQ@-UKPmd6`2VYDtmotu*?06}Zu>k~ zZu}?t@V}P>|Gla9Qu>N3G3hWH+0XqlZ_1qoW6Q2&gr;$7HTzaY$q^d$6LibBuBJ6;afQT9MDz}r|3{RZz=IY`wD z(2MZCl!LUr3|&XBLNB4$pqJ9?(Dn2t^fK%VI7sa~(BIO#&<*q+^mp_D^a}b2dL?}V z-H11W9K3n{1@vnA5_%1N4ZRjmu@2rW{|J9U8GO`V`S=uqfR>I~h5_b42!^mK>bOWDx-@Wz6J z{K|tqK)s+365d6iKT<#FLsS5L7;hOk$iacoN62RkR)&gUepK{vJZn2R@r<`|kf$S{ zPhl6pLCziteVRr?pP{kPXQ>3bhf1M;qKVMwa8BPKughTmv*`15EX*(99KM5frs>dq zG!yy~l|x^qInY;dzTQDeEP(!n7D8Xc$$1BBQH!9j<5atYH_$4fZ{lpaLvPU%=za=9 z-=<~Icc=#XHwr=DrBk4P#~E`6W!3T zL0PVaeop5>zrY%UL;s))pZOQ2ul8?PPuC(b!LDB}&#Z*g|nK}m0fevebe z4$Avl=)Z94)8X{4>fzC zhnW|koy|UI7xOZ-t9cdL&AbNfZeEA>FmFP$&3|8oI!I13k`shq|#4iayHx06oF{2tCpK1YKl|gFec*jzM|5 zFjtsVXr*Zdtuh(VfN2d~Y}!JXn0C;mrUNu+Izdl1heDT`&d_Sp72(uC(MOr?(2&W7 z%_$}a<~q?eCJ*LD(+hf*=>ylZq3BOcKj>Oh06o_XfSzXtLeDoo__+Xz{=^hRFEm4- z7nxzui_Hk=Ix`A-i8&H_sTmE$x1&QZGbPZ=O)2!ZW+KAb07ZXdj)q=g%Ai-8V`0A$ z>fpQEr$RTG>Cnw)CUlD_hu&u9K)0HC(Cuac^lq~dy2G3R-DwsH4c%+bgg$Q? z5ziOR*)YE#y3eeI`6Y86>|chWMVkwtubK;?e=!$BUo)4$^>woz=D&)*VJ?UHO|t>| zmbn7D-)w}wZLWsCW3Gk%&0G(C*EB)@Zf=6UXKsPMZ#F?cFk7G>nyt`}%pC~-V<=j* zxfA-S*#`a0Y=?esc0j){yP*Ft_d>rk_d~xj4?@2-4?+KFc0<20k3z|L9BP~=p^g)U zy3RAu6lV`K)p-t@=In*Ga$bO@JNuv+&dbnD=T&HH=QYHq4HPZZc^#VNya}6jP_$5I zKeU7M4z#25F0_;L9$XKBqJ=siKo4_1f_8R3fp&2|gLZYkfOd1fgm!nnhW2p2fo413 zL3=tsKy#cQp}Eda2rUna8IgnLM7zS9<3;IxDGcRE0e zoldTy!BEVjoI_zA3dKCi=?wD-rz_0EMMpZ_VKWMf8I+R^^AS+YqnsR=M?*1>a`K>K zonEjRCpzBg1Dg`jQl}s6CqOZeatdIceEoQW`> z4Mm^e91UITl)>g)DEb74f4AU#DCQW>RG5DQMW5hIhxsBX`UGbtbe&TUn@gbR6P!6P zuZN;faOS~$ITU?@vjDomSqPioLD45TCqS=s7C|>Ue&|(BCG=`106*7=Ugs=<&9zWN zH#k9m)hN8VY5tyHI8esmD=x5Ffm_K(` z!Tt*<>acqn%vn&3GVW?^?{Z332z?TUM2;r1Erzr>VPCL?lalizF(PusxLr!pj5UIrW@Pi4-T!|- zg|oCgkg!bhjIs+>POmr_$&VZ$8#t5$xW|I9t48eCpdwZ^i2p2AgeJ`&Jg6iR3Di_n zuL2AiWKBz%SL0W;B4RG(s#jYd1N?%PSeHf0SJhT74Towa1$-4-%nF6n9Y6C$5!jZo zL7eR(p^~a9DyFI z!ZA}l;b*;QPOW$r069%PJ5~uw-HE zH^{tS9xFm_OQA~#gqT`XR=YSv_zkguzXm@eCUIR^&l%tq=mdYgpQhJN2t@3Q%26Jjd|?+=&yQ z{h3!nQ-Tq%WYtzHguk{lR8tYG4NMA!Ya(TcAIgR=F7?-z)uMkyA3HaM3Rdbz8L7jp zKrO0T$zsH(thTP9etNh(z#ZAd>Oc+ZTC%r^HFfo?JoorLy#VCe62#rUI5IngyDZh3 zj97Snrv_IB)MK+yrq>3Rfuzy9h zrh7tQu^&+=Z>XpV){k$fujfd>C>|$P*7(aS!@;_GJE%!v^g>=pN2AbI_*YH!pBzfM zTg*OKdq8_Tw8?&qix!AvPGwD*ReKC)d|h z&&K#SFC0V_k&J0(#TBWnO2U;|Fnd*9z$0#jX!GJBGBt!jIxrz1T^(B;<6rLQDL_Cw zv}0Q4LyJ^T^{))pG}KHE2Nq8W)Gn!CDuJu5SGxjLGyF>e<>(4+xAM^9`elJtQ~VWy zYWvFO**Dd)@P0(l3&o23RDW&5V$5am`-fiI?37{d6Y%QO)ba_T8oL;#HPloD!qXRP zRJ`JyQSGl^jOHqLL8V_D2!{hzWi?2`RQx<*vbC2$^hiJB6wm#5U^-`*SX&vY!nMtV z^d<{QuHJnju8y`UQ0`qFBy%vO~DTOSd*#08Yg>cp27Um_cr8~kY!BC}@;(+cg zg2y!zLM4@zfx3EhYSrl9?3>49hCzR7ptd2=9dNpX$jqteLudP!@W4LTU)>P9S{x%K z_4uX8iiUcgzhT1DfO%@LUPfiTiRVp+E6!XEu7xvNjm($I(5=WsDapr#@ulUZOZ_|t z)>@;{i*S~e@PL3JV`4ZQ!o;916t0hzRLt8H{3s{vxNb|iB!xaLBz9%B-1GbETUT+@mIVsyE(o3yg(5V`->1;8joLBC2GtmYaOiEp(1FHyBtU$!u0(ylk3N8^nB- z=e0BZ^-Iee7B3F2ObW&Gz)3D$iqWYew33S@R$J^q*pF0&19%8m%iYn^F$OFS2CA#1 zV7*|_iv$9-e$*0w zv-uGsLh%kAeV7iyoEvfLIgx-i>_C-N9L#m)`nlu10o4QV7ktG$Z%Apgp=n;Qws^Sb z7OWjIn4bt@6Hac2*7&b;=(6c#S(aj;s1G#rIUyL~1hkCX(SiEX_{<5DV~jKM9FOOY znmT`&yAPQhPh5`P8sU0OocH#mTKY_$MDql?#pGEg&ar^w(`3x~4lqTAZOiF#d@_0P zsd3y((zG~kE4|mjr^Io8Nz>uD?SC;9j{8fV2FI=c%PBB?#;3nYGu=|mauel)Lh)v` zr8=WM=xny-Ojc*Hv6-qpgN@l)vn^7)*pw-G*7_gLSTPTkY?szirt{CT%I!}vvNX*e}8=0Tk7BV-BS=jTk zxSc&Gi(6Xru_Qa0i^Xlcc~}g8W)7C@B{u(x*&b}}6>~qpyesC^Y|a(4j?K4X9Gh#! z=2`LS)d6Qz@!3@J?8%!sK{0DO$i4$Ds?Z4zdyx7u7b}6|@gyM2xv>t`o0T5KsoABI z@iZ7)K=iJN*);Pw1CN|FcF1aBd8-aq@$AiCTg59@nEGMv&sJD0ZYdq#hM7h{r!PzGOaNI2=ZKonNAj0lQ?0 zgg7n4i|)LMRJoKNxe*eq5PNl<9ro8oc!5T4IvvY)oZWZ=4zpLR)UU+SoCFq6?5qGL zu9|`DsX3R!5x0`G#MYh>Ds1P}VuQv?qt=B6)t=ZHdI%+c!&8T&wbtWsXW zcmVcQ95v1$?PiBC10BDr9u;X$I4FsW1&2=@ z1PEYY@iuNaA(#i~E+^9zf9;Y6EU|mp&Nh=#ThYy7){$%%U-XPky!hVMq?N`8YcW%p zg^3zX_1DQP8*3?H4E-p82-``Db+Uyn5UZV7x|?9i`12a)svXL_}2Pi*M;Ww zAgK=ED-o=6Pn3Cbc{eZX7)v?F%GfSn&WKnqE;Fkba77r8tq&b2)tIpL9?E618R%CgL55rhR+>lcv~{nL1jj^Nc!x@Eu}ax!%YK?=^C7MLllGK6%fnAtI?( zW5TwS_X7Az&qXldic=c0zs}R#geTip{5DirSBt+S8_!Q&9rpv;jJ(jWU|`#^zu9;| zz~rnfXwNXcxF5s`9gLJb&l%zmKdbmztfe(S6N&8sJSJOlleJ!+ zIq}1u4eH5rnH@rNmig5xSa6%v2eGhrda_O79Vv?Cl}r%5P!Rp<5Kj8(2Enm`aBZMk zQbZGLt7uYnLu4t<2v$aLjL54AdY;IuKJgskXDf}QJf-2;j8jbB-9?4HhUzU@+8ey_ zhgw!IK=5CZr8kqD7{jEpIz`Qj&3z(i1oPW-_KP`knF*R5 zS{A5HcoS4tJ6Tv0#9^FRk~lxS!DWtjcGAm~WGl`I?sRx>UNRvLe7RReWsS`9$aBIt zqGm`t!!Ya3FUlg*u)_|DJ(hD#@mEc+#gRw8eo853zns%zu%0pPDoT2YnQ$qf@Xiv{jwY9fNPC}O2|8jgU4y?u0y zAgC5veZ2XUv{hbv@lNXnDA~INZ69v5Cf}M@sL=9Q%H4}+!hs%?T$s?0iwihz)(2F{ z`sV(nIK2m0uh`WbyJmK<9^H}MCUx_yq&n#5N2j_~VL6Dvb00ppfg<-;$M(M_;9%OS z@eRT1DsQugc!O<5Lj_i4c!xKMq%tR4O=`dyzp0VRP`El+p%343ZqdsIHcrP{0G<+M zKvy5Lyt9#fpi>T!c%Jo1faia)let(t#eNo!ibZg+DiN!eR$kOv+DrV((TxVGrUWYz zA+)seLTG94g&=3ldFL2MSZaAiFi_2DE2*u;a{%XPEXL@%7YCO#guRJ|m#`!|StUTG zX$A%Asza-4_~9UC5y4Tp7|5PK);PH*z=_J(O(tNM6jLCSx#ich(<>+9c{yAc4n_ja zF7;}mb;GG>6n^Mj;Gu+cOb|S%D=D)&4Ms zS2RxU60J~XVa!S74la&oXuP(~4MrOLIF{8=6$~Y+t8JT9wdWqgwG2Hr`tsNr?2_^s zx~h#`@<^hdCfiTKxh`JuPTaZNOB%YBgq;-|L^t68(2Pj5_i!pYr@lcU?ri5 z0)+Ku9BcE-;q9duaxg24t=;kzAOOEO&s?d?LlItE4-*b4k#0=LGtLTHERT7``Z-uX z#gRizWP`VS&-2Hnx@%CyC!(>Ws5=ALHVCbtN`A>Aw$v}jvmJmD#2<;S?g!mjR z)=d)&<`JxeONyE;hgW*5;2aT|iRltH9_B+hxXj6`_D3SzGse1cHdktwygV4LM@^9D z$B4JSA?d2a6ag1h_#@g6iVtLjw|d0R5;zv0V<&;QtM~d$o?U8)(!yk!LL#U+U4=zg zVhi?ZjYJ&26db!*%VCvr7Cy*_KPU02Hi;s~ZLSyn3BfQ))|R5*ji8jVh)~B(0E@NN z4OM~I{F;M}&5fiGBrCWyV2B{=t?d@^K~zM@8#HQ!$pHWkmQuE(h!_t)g=1){+-l z4XZ93T7qdwJs%;il=E$udp!W!3uON|IrBljz{K1%xlk2hLq}qiQ#rt9`QioO` zvvCT)x_Z^@Fsd`3*TSl7IB^Iyb`@5sVk@_?H&|pckqAC!jeaBcbbBC2Ie9MAjh3z) zX@9MCQZW`L`o5}$N-Hffhxm-8WnemMY3aaK|DcWsn)oDwC`Uh0jTe@@^$+y0Ey9@= zXs8b-b_^o1<-0@}v8YeLLh-6{49YE?&?Y#N2?uW!EzKHAzzP^+9=Q&MJSsCq|>B_w}eGQa3G7&kLdGYYr55oz|kI zo?iPgJfJY~ z1FhP`s+>GC#33GGd!|YgtAdy}$jF*pu+1F2Vcg0h^uFFxOj1!LY|&lnQw|j@#do9B z<9ky|@UITvs}jUFviM;W#5by7LJJd90AF4i^En>htP;Zar$k^I#`n+oah;zka0Oq@ zSK>jJC@1EheN^I`T(HB5>%2Rx!q+V(-1$y?kCjmB6SJQrAqH>i<=cNiU&a?es z$qsjGmPaEJKD>P6+?n1}PyYE!RcrvRdV)@CT=$N5_&>6ba&kNUma84d(miOH5#H5Q_`gZ6wP$mdPwL zAcz7?hyv^Sl(dd(HhS^ch|oI@;*9AyC_Ob_%&h6`=UUItwG#0rxweVzZ}IGJ;RLo9 z$1S3Fc=mS)Y-87a&!$Oic8K09`XKI@otn;?jvC-{LOHVSAvuW5u03e7=TBC)s+XKYq>DhIL8 z3t}IV-(k(GqOWtz(t991Y{U9G``qvO)Q@-B>I2W}12%ucvLTgFlAnlfNFz?#hSYSi zV%^}RWn~RUCo?GiFKY;l!{Rvnz#Y}WIwkz5uXNqVZ^8GYO+|lMDPsrsX^YX@m|2;t<4p1ip4{6fBDgzu1zJ zfp3k=t$^hSggy*+A4bFB#NW3z6k!a)_pgnjaf4v^`TvIgtoxeZ;SFj89zx`Ju&BUS zUgzR#(m0Z_L1HxGW#=pVC`HF!jbw569>ABp)j}J=CFSFzQ3n}Tl?Ktto zp+Ryii0MQC^^PY8HK;kOy{^oaohTZG?iF#5ejS2q;>UxG#@xv~9l zxgy~s`TAi9ZJ6|=#n566$qqke7yBGR6X0(WdiG(6V=3-eg72)HfIfH4 zOl+Z?4V19urC>Ui!*K%fLELdjK`IP`J2B4&p2vn~kZ{DBz@8|08VAbaNP~AEUN!&& z2PFI&!8Jm`+96aD&JZsS;6VZm4wUBbV3N%?$F9HZ1tsK)N-YV=M7%ht$MeLpUNv{IZA_($<*w3{&12VudZjuNS-d9v1u~ zW@eDfgu9FY62fOf3f9O3;2>s*7gFB{u8n!m#F`rtbYv0_U`<1~0S97tU{C~sL$M*G zbUlj>11zx8*xbk_*!0-ECU8VHLpH+ZG=yqlqafi>g}@piVfajhU4R9R!Y4mA4w47+ zkRgnD<+1sZQH^-Hd@>>|gvMt_Lx9hOd?wt1%!{~Tnl%NJlxHoG!1voOe=166ehcHDgsKPHtMqXECPMa zw%QriU7%m?Y0s$wtZjiyQN{&A|MP6olz$SOOaBv`QP2POc-;k5@1Pk8sLme~`7)v_ z@cynvx`V`M#T%D?Q9Bmc%RATQx`5Ih<|E(2xGO0B-T7Y!-9vys&SUvY_TE3sX!4a_ ziMDH;s|J8H34uBO9G6ex>Yo-@#QHdtoRC8M)ZrVDUB`=8*9P9Ml0UAg-49i2OO0xyKr3|>DB z2KyP`62{l_a1M@kv5=pH`mi2i3Ifgxj(p>-2hVuOPcs7pSj--4U>ZkI{X6q#f^Dr( zP4w8|8ybETOMM6D{LWd*xt)sgwMM{Y@z#ZXtkHkJ0R0`7In+76I9dO)+Y0=iI-_+L z;9lGr?trU8g8c;G__mlMr!c@T-3muI@J3YVGmW-WrQj%Z4a-f3$B%t^zY(`l8{9 z1~*OLLF-f=GPmcK$fk=MXxA(_6jUMqY4VCowZ`|xu$OUc#Ov=`#Oo+q=2yI0yD(^7 z`J3U6f39=&`a>m+Q}=S_Kt09bdB?oGj>c2#btcR_n$om_WK3= zgU=P^0W62Mkfaba+)+&s;8X>!Qs@T;j)`zu#yeK?j_7vzTQ?GD-* zoZ94gdFa~)7d*E}@GgXVHX*=SH1M&K6D4>)T?G1c4W$r<&DC!8$8`yU*V{5+>w6H_ z7u^5BV;DD3@LY6xd;GjZ#G5G%*g`BQH8pX9qG+uUI~yMrJD10R@Xtf#37`UO7%M?( zj@%-OJPHxrfa4%)8ll>j>K!AmKACqJm zF+#b3i!y+1t*1VZ0uaIuB7EXU18Lzx?Sbz)2B+^9H**&VlMxY0iCM>>#Kbq>E^xhX z>#N`5z~70#yFOhI3*;Z@CUO)Ps$|Q{VEDBlM!j1x0&9U1#Rz`Kp|Zz85IH&9I`^tl ze>_Aj-Fg?tbGKvz(JLUe=2st`m> z`=|4!P+&v*G9AmIQa%YLSjx24yOe3Dp`+bpIvhFRi0=$;YhwuqxE={dJ2=Nr3GHbU z8U;il{w9TxoFn)bMA1Z$sPDJ^*un(`pyINKVCN&c#QA_d2S5GL&Hx)m(D?`#)^Gtu z;0D1fK|zlmVXzYc)|ei8N*vDLx|Wa!9c&(y;B77 zZ|=duI`e6cn|IK)4Y>(15zvV541g{9ckAdv^oBa}mm9pmevH=nZ}Ue!OiLM1h6BBT z4wzt1KyHfQS@pq8Kn&)!V|$n#Tk~seX$IB=3b+m9LL@qJ;YO{w@SLyR&$qoJrGy_L z1%wn3Qb0%nAq9jK5K=%$0U-s16zEb4z&fN1AP{5RrC10bE~J2v0zwK1DIlbPkOD#q z2q_?>fRF-03J576q=1kD{~`s3sseB-l_29(jl?7eCX7gUBTEsdrpKvjLy{(yLSagi zl47EIaw62;q69fZOiE9TLZif)QYp0bDdZ&5uuY0QsVzbw(&?ERF>0{Hh+ljOFuwK@ z-)V?TzgGAqHQT_XDKE5p@@(dt8MQu*&%~E(8~lD{_6OhexE=$^IGQ3EM}40zLZwit z@T;^|?Np7r})x*5zHspp^xYWLQl$xNHlosz(aAM{>53MWegX`oetLxVu zKQhQ?lGWDeD#UtZ61xsR%m_K$& zcF6yfJufiKVV6qPT1j0^V&Y0SKhvVoisFMOe4hGYtB;gK)`i#!6QAz4_@zf|1g-Y< z;ry7Crrl?vuVnWQaUEP){7hm?U$Q`KQAGhgLTS-0DzGPIOYC+sb{iR+3GJ&+p~Y?_ zW7oxWn|eO@sb9!ut#MJxd+b+yKAjQrB}$eYaN zmTBFB{fn9u$Ex_1emrk;S78c$>_dzQf~I_#aH_^YVMt% z&LuV4z3m)Y`4mGluDzP9N1;^avWu5phS;4^8=n>zlZC8J3*|C{poIGA`pdPcY z85v;E&&vDAS*=3p5rxsSZ*odl3L)gYK~9p`cT<~T`!I|(hrVR zT<&>V{~C+atD$JrS_?;Km9swM=H}!jmQS!si*sDe75&|~Y<|BICm+iV4pn+lhTQn! zV%3|^k4m6&6Ns&)iMO1arNVnM_6@0oLP47*LrRHBz(^-5DlQ`Ozac8*5pyL9Sx1=;HkTw*B*D+IL?-_#n$r~DUI3kG#U)932nL#PsYsOnIAPu z=f&A#hp@~^{lf;%E=c&ab4>Ca!u~u!YD-)~UI#(S{E13}V%+q#< zEzz*HeB))c1JY@|WRtJfYUB-A@bpPmXl_y+dxhnC|6;Si3yXJYeY*AFil5}F#U)L5 zh$5rLH<9nUDKbPK4OqKo*i7A7g=R^&#bqm|%{WsMV?EPndr@K03Zu#wBHbeAy}EFF z*sb|Zckbjiy}or>wjlV*>bqn2n`K50x@39XNZP}cnilJ?wdA#{XVUH|MeM6?%f`p| zHhg8VK0Qt*bNbQ({lbiGr+3!U_a7m9Eut&S4lH(hX?^<_^6qL~zr?cOKN_=lo{bq6 z5-tZa#vf#iQ?rb5m!D(LQ^G{rj;^90XS%RggZ9A_IEEw%62}k(4#_4#_>iO_UXo$| zioj`Bn?$}MkiIKxGOtT5KXl|e%EG@2` zrvJfYf<||}{3O|%%3HX)W1@QuvCdsS^mn_(ve#mh^VW%-pJ*HI`tbQjxj&-Awiuoc z`}65t_lzi!LeA&QR*IK*SNCE1T|{<@21FDuL|UR2+6@5;lkdhGX@_C(>9 zd4uNErMqH6k8$p%EQxUY?S5WFndx#vWdo(_9u@h$cZ^-{n|F!MCTHDV?rZnQNwt@< zj$zgY^`ia!HD`|8z54hb_Nigp0$o)`?M%A5VxiR>so^zS_rz-*`{TuYpWjD?mFQTH zPIXsyb0Ev(8qZ4yM>dSNkGLQ)K0LNr*1RQSU-5*!x;*w+=!9aWZ8~hD=Fk<9W5uor@+^Qq{F+DrAqC&bzrS7U)B>BrQmGx@o#`f*}TjGB+^r3<+Qa z3W60fJc9xaf@k_+ssY5C!ca${1~$$xd@vx193hZ~6bfxHX-=96u1RWwelx&`h=|Sr zLWKENNMRj15Kr0+ofzcoyP3Ywh$8n_&(VYP9@WG~H^|Nnix|6ZxJo0@-7o68$I8r4 zz8R_abO*d2e|1BXd}*4UAm7mTtdffqU7l0 zXA)J1?77eW7@??Zyi_yf*7W_m{1p2oH#{(sydK33S}o;NIdII#9F~4UeMZ$Zo#Nub zx2Nt|D1FFSZEQSe_~)YJjLG6V*4~^`GBJ8vwnNp6ywr`>f1GyhXLTdmXt=}cbLI0l zJ=$N9>Z$C!D{te|t4GeIXY5R=oTrzlUwZ1=#{iMqBW8Ket6h8blrMc#8I#pbqW8^} zTK9KnjInySTR~@zT$%pCtus$04F+km38c*;fwUR!bciQyXdQ_41Emc{B@GR8hrmhA zIs{4^6Ozp|A(_S?Vo<$d@-A5&&5ZoE^+< z&8*pjZ0u}o1{s^OZJ5mkMU*sJr)%vh(HyAiy8`OBz#9qU>RA@1=4-Y0oC|7j-)DV6 z#bU~)IlhP9_PHi8e)Zz0yVlO{AM3g_?W=7Hwn*teBFZM6WuOx~>IF4CqP$|q+f2<# zQL-hJ+I}aSY!yU}%_-X-x=0!7CtirME~uBhw)^ni4cb}7+E1=tTygznVW8?r>Ax-> zOXN1#RYW%iKDxh9W4p86kjj2he??a4f0(PR%PAdeGSj(tc0$4Zk9W$_#z|f;-d5C9 znJD?Xkk#w(ol)b8iz9ROQ~cM3J`9W^dX-jexhem={DDiQ!si=v23V=*PAa{AE9XYOx9Y`B#lCF?RI3ItR%OYr7b=N4 zCm&CimH!lZysU3b9dCjxkUc^54nx)*G}<{jA*nd^VXlR>&B^oReKm4_FoFFR4$x;XySuQznr(Q$tfJN zzt(-}taFzZT%ON8vbS;yx$0J}l-w5MG;Mc>QdXGWJh9{uB3EV8=s!2>oiKOF-Rf48 z{pPpmYdZp;*v>q3Nz2L%O>gPso zTw`L`albzg23L*t-Xd4brI#CSUDj&i`lfb;FeVVOROEQL|La&yKKiE`7gK`H()VNO7!F`NAhw zhSx?iSL^Oy<#oG{WBj3`qpPDu-#(pvc26mS$-RsV4>dWNGB2~rP3*Dg z?gYcax5-oEt>Y&xO6KnFqd%f5DAne+e|@yhikWfz6b0s#y2jPKP>*MN!g>Q2f@=gX{#?(oxQoD^v;oiXCfb0eE5=idw)VwFs*S;XyTyk-Q?Gfy8&y{;61Jv5lq*xU>4vU*M_UV3s?A)n)oz|1n@&P|H`~`GMVK;etmZVZM7LVirI~VM+uZJ?R_l#4 zCd}q#*KbpmVeZLZlUtH&(YpCee05a4YS`}zP4rC+TlkV z8l9(BX(q3>*DHS ztEHK;=7i6t+h>+7&*CmV7CqqDson#ote#r2Qj|S6=hB+{d*8ZN?oe?k(8xC$%A$@s z6s;K%5iWmk`_yHzoV!VEnx>P+!hYBN)lTlrPR@v<_JQ>W)mHk8G2^H*kRweX)PQ=VrnV6xb_d|?dwdq*Z)@u9M2*aad} zZ@74^jKZwxF1h8t9maWNkwq@~bTwA+B$rE}S|(WqL#OVum6^dlQ1-f@hw-qw#W&Bz z^?H26c)0uTS(Z8HiwQ_a3>IsE-Hk=ma1)h;Fy zIpg-;E6G3Txzi?V%mn+G>+X}4uUx9BKPIx~iPxgaJi7+!gU1P1_bWNy%dJpYeJ;bf zVT$F1h^sR~YZenP4{tlT_rQ!0!+x}rt3J(GyeG4$S}SYJ+1+R7*%(fqmrRS^75#qU zPPO>xKFO&$HH=1u1v^K|(w##0Xw>f0;^bMZqw8CSXiTNByg8Nzb9>fE#*|w`U0BW> eX|Lz>`*8pJGCN(a>O4*LzCk%;Qd<%|B#~l1TtKD36QWQEV3hu?7PZp&>(QJJ3&p;Lj(cA z5Cm6HT%w?eq9Q7&AfTe4Lfl0$iaYKbDx%?if2Z#4B^m#J-{-x7bXA=?b?Vfqs#B-d z`-0Qn;AK3|%kuBJ=REIjT>b55zyI^k8lp$$eR{;ZtN68T?;bevYuldivK7tw7d7IS zHqN?W{yAq|cwxM9{@KgtH&$IZf5nCK4?6nz`4_}5S-xm^INUxVeayk0cjQ3E`_jN` z4oh?UvFC3)I8gAsPx_vRqrZ243;%pPKgRW*KEwQY#kc-a*PBmifS>VbhH~w9h38GT z|GRDybjiFUp?kFa(2Y7o2;c8}`^{BE#v9`I3*Yp;trYxk|K@jCw-g1!&+kdQXyx)( ztt9-uyOMILto+~mH{bKlT-0bb&H-q=!J`)txVs;5KhN85QDgb}F^J+-JR7b1w!k~U zqI-VUNUr>eH{Z*7YiI)peQUrg8Wi|O&)a=l&pT$m=dDR#|C4iqH}l_TUU0&@g0o+K z(vo%Od^s*ZJ^!!wZgt%EK782YAE}(RcI(np&ptBk^Y?%Evx~!jzwn)JFV@G#gLj>{ zL!}lWpz*N=|YPDi3v2LoG?2h1P+cke{)ne%7c} zw((n}%vKionYMZE^IK$`tqu; z4q%=G{1!EqRk@?BvJjPg1?jN#$doMQV6fH8;MR`8c?o0Gy355pWQ#N%z&rrxNDg40 zv|0V4+c0kKlF!83Lstz?&5EWLL^LM(Bl)RnlLkU^B+Wz7rU6jVChHQiiY7>f7?jp# zF@jKOqdPl2L@ku&O}~~h4uq2<#0Bvphy>A2{0`4LDifZxG(l*7Dl;1|CZ;WjgBz0yRu)Gm=O|+H97sTa?#>x+ z75UNjOPOd1scO@sQ^9E5COPd2V6`7n&L9jj@oofHUJCDn#???E-`ZWE)qrA&4!|BA zfVc#(CxBZJ=zwuw7|m`h3>Q`2V0B5N@dl8Q=gsquIL|9k2?LVBQ9x)fB`Jb#jWw4- zYpCGrs;#W?tFGG06~F3pt@3Is*Fxx658`EnkZ#%>7DbdKSR+YEGSOZ{cOnn*TL%w# zS(QDA=+B{eRNto3q{d6l%aG4#ZgL;u!l1dYXg3~4T+#FJ#{21KfBhW5Pve)8fY+QV@a9X=1DOw?&)p&52TtAB?!lstehq@4|K*;fO%-z=!VVuvml-R+^b?v?9Jf? zw|uiE*P{G za3Je~3RaHtqf>};t$0pEQx7YPtXnqE7SE&f$&b<2@=5!TJL1gPXc8Yyiuf3Q8m}iR zJ{DgX)P{rjIDD=X2hocmMb|wI$3?_wkYKQv1QJR}oPckrFh$aWr5es#FDu%wfy#-8887a1!Cf4J#82(b36}w~j`+6A;5tx64rnXgOCY<}rP_3>g#>89cDL3@8_c zZhTz=cp-j2I+tu~LxJ#qBEc!ZV*=vI1i2uIM_Uss3AW-3um}Inyv0xEM;#R z&E-qkwQo>iX-i>r4nLzoDJbRQmne)l!qI%8l#daY6wfJAL&bF~7C+#}F9lS~j8ze0 z{IU*qp;Yh-(F(!~M~kDyQZYUc|Ax1u0$sAGRGf9~I)bAkrIB*5zBDqP=SQYTbu=u6 z@%iA74weR^)hceO*sTo5&roS7Auz2pO$4Tiz%=Q!>gaH3IKBV^YEdTXef`!UXi22E z26AH++DgWoLt6=@n_o-c4FkU|lwebEg}O3|JE$Djsh}$e`q6a)QZ*B4)tCps4k^Gq z02ohP<(WrgW?=mjlcUt6F@?0LSVhcLkDQTsmEU)ls>yz7&iX`H3$U60~SPVg2@vBQtWF$|%aY@v8tl;S!%f;@K{7zLYO# z*O&6+e)L+371IPmg0m21UP8CAMq;qBOyjNZjd-WNlpp>iKh&D$ASLzIwU9uB(d%%n ziH32Tq?sV1U15sElZ1u}2U9&ZUCH8B!?8-f9Ag`V6+fSit^srPNvX)&mjU;)?aLL7 zL=}{4Ve9KBLSwii&!Djz?L4L|h{~a_Md{CtsX8Ey6MJJtWG%YA6Z`URtPQ~xXse8S z;ZopIW)-bvE*f*E=t|N$`hhVOUj?8xuA&1M<-mU9tMOLKuB|PD&NS%EU-g&UZV%`0 zc;bn-1gG_oiYa_}N++UAD}KF2m~ynHe6jCupj@uQkH-i;TsaTkn%643w85{>_^l&o z&aK1vNxX-f_eg$YdR`d64SBnAW<9Jz&7MombxB`P;vmx&cF?jkH2#p@ah-Yxl^RAF zs*ntgSW1V+=aocfEog)JOk4Tqvu(>;AvuhtZpGtzT`ReLDfh zZwFT1G(bIppgy4b%6W7qZwBRXon!tO{Vje6v0(t?NH1vKOeiXl>7btnhV*-25p5#y z^S+fhDyj_Cv6$15z8!m2!Stc+K~UU;AYQH)Ruy4L7eB68gK8Yl~#{+){Q%U<#-$x}~g< z-!MCsP}0OuY;%VS>sHjKF<3Yb-Ut2a4uxWUq?Fwh+@LDE1rUZhTCR$1(ThkPrkJir zF$KMfDKOPg-r3JrD38-K+j&=fK;6#skN|2XtZ2@0CgCyFNvnq7X2!P?;kWAeGc&yS z{e)`SU~uEU8;2Z5`~g5uWSW;FDG*(v+q#K@_=5yUk>cMj{Cs5q#o(ja$_v~Qi|_64 zm5y`%i~Z(@z-o(_-~6z=Vjvl2Qf{&J76I+rddFcD3c~Qd9&Xw@;g?0Y^A=cwq*!#y zbd5m$3ftM{Hm^WexkZjldaOm0=zZhHyLw|qwVEj?{uFkhZmyEz{}K-}bF+KTCLbU@I2 z5YQTd3?9*OtCNs$7^sAxiHZu>2xRbRnlN@vF`ynazaR{O3?5Af1EpTVVV%NpV!bBy ztBEJm2Kv!%gu1;=t1E)2hwZ*aj38BC zG%#v0i0CGrESDP?Mc5B!$&@TneEs0-4E%}BzzgFqQ}*#w<8Mq_7IZw zvHC(MulGXGH5~Myzdjhxn6bG&FoV0|)&`Mz&U+r|x9+CjCDZsjX&cY-6F;IFa0Cak zDM3{LjW88`LMt^O7Ga~0H8SwKyR`WSPGq$_CiR`U|7?Qsm9A!T%J}wR-lUMNR*p!|7P`{lrh}jJ_v7^wf_SgS~C7 zEgB;s3>#;;pf8CfSKGz>a_w(y%=GKje3V^#^8*U+*iao`NZJMD)vd@d$i>Ves)5yK z#wsb;tUiN=>NES_)aPJ6=&8@VtIv~Eajs0wM-f`|3l;zLE)*8k{T%!NtL7fWPQ6<) z?9{9kIoE@7S_jxi>X2Trr52*Ac)EU0U#Z>UNQ$O#qB?`bs_*b3L z*hE!V8q0F}U87%raK?bC^5`+@PV>2p_hN9-S*2(Lpe8*v4E@>*eD%{XrhA6N)oqJ0 zeKTBnxDCC2Oiv1jf_(fP+(P_aev2{PAgq6P<5+RkI9QtU)tI`u)gbF1Zmu=Qs~@Uq zmHJE8gP^xiZTJgtmnb7YdK^;mWl~1n7X4)q(iZ&<{Mp7&`0XmAplqs#j;MZ!PPg&Q zmysX1(JRw29Xg}dBEKFq?^6TzS^Kqa9adH+b1wQjOSW)FFK#}8)BYhpGUd!Q*{vj> z3CX`D>~xN(c+C+v;xb1Z-gunme8O;Z#BBT{{A|~{M7I%eL^Ct|BvD~_W}Q&GZfJFw4e(;QQfboO|VOgOL(-U3UI6zdRSAwmW{w_s@=_{n&? z!A}G~nc8S(-HO^s#_!G^s{`X zklZ96HjYf$Fwc2@>-hk*GjbiRudRRs+0KZ9;{C8Rk$EojTeM;(AHE;`n{1nBVJ5T% zauJqPL2bMoAxy~sjX7sq0S7W11=-?Z&7U^cJyuXO+oQm*%pt#-C68#6%E!DT&O7*c zTfF$u&s0@6`O%HU_wSXyI!J9As$xW`D9H|FKcIGc2xWOCBV=h4;t4& zE@JH~@Mi^$w{`+^g2sC~fo<6K?F8mc4;r6JLqYs2qpr4;j_;Bt^M%g(MV=x!L+B~X zG@3zfLAOzv#VPd~Mzd6s3_6w;V}GtIiQ)rf=~hH^TH*0dNJj(y-3cMStyGq5G*3=0 znj?xx{peIS<^ga_3NX)NKiUS&_&A!N(2q@H%_Ec8G58ym_Ck$m#w$CeO3}n14cos{ z9BIw%CfQyb{6Chdrov>So#f;qc2I&!W0G+$>xR#;v31_NXpH~{g$oOan^V)0n1}9g z3V_Z&qyi3PO;SN6!m@NN$vg;W5m|PG^TISX@r*^gh$FRulc+V?8v6y&zQDr9wlJ2A zF>xDFHR=Ewd+-zg9(m;*P#wi>TJ`|7=NdSy*>0RUDd}E;n?+@!KS<<+Mlz!Msj0gW17Q6%T!py8PfVsAC3@4 zn97WVZKZFyVgWuFh3HSft+v1 zoJb}-so{{>xv0H_4nN{ocK<#-{9@Yl#CMq~C)}#teFTiU+Fev7<$v4`AI#Ur{Afo| z^0p~%yVzm%kcj$Z{n%oHcozag)*K7XrxCTPU_AaCzEXC$HwSu082_E0V*C$&gC=HS zFv_l5_f$?PpRp4#rTl2l(Pzt58E9uuYpeq{cU>gju_x1YsRHGx4mA#@pHysKnEVR= z0OEE^@N@W;M))KA8{^*`{#CbWyui|`r&Stf*zYUsx841fO_Gr^cd}GiS4aPoG>KZ5y6#i!&nga`Xs+ykOcHM~WsjayP8{pQ zkR0H5$xIIF;m+H%WY90S<@LjAzTC{Xr z*?9QFC!w4Y;aDDV@xLfg8*3!=XBpO>?+}jP5-7&b3fmYlApki;GyG^8ZhN|5E&aw= zEeS8?-Q^4icdX2f8TiB65u|rX#IxbWSTJE5BZS2I9WKsWv?y1c_rfLHB$+whXD7UG zj1mSD*1iX8%T9Rix#xTtPhmOS$hKS=-xE@L`?FvnG3sxBB&UDaB=$$WN-7-f7{^)7 z{KD7#-u7`_9fZNGQ>|N)N=G=oiij(lC!p=-SF=2Sjw6Z9FM4bDXE~KgO)`^lHPvk| zZ8aC#TUv#ZZ;h#m$@x_jhOyMQb&XwV3-dNLv5VA#+N_Cb(tuGzyOFIpN>`8Q^i_C~ zje$vRe?C^x9yIjiplst%{4thM*jRxt+8SSdp&w)OgtfWObvP%Gdl!c-({YxATBjqy znC7SREUgz4kO8p+8lkO#1DOG#U?;)0N|2^rpn&Nc>HFQRjf<>Q&3431$keusIKe?D z?513(!0t(0JfTn*bBA6`45J=Q)O=5<(w`0;V<(Qr<5TJIm1|^TUey&?CR^vg3!3K$ zVx!Z9l1}R=gPX_EtV-_4#YK$PZlbF--_{w->D>N6vgj+Fne~{sdApOQ`99FKZ!SDn zth}X3BvJE&iUY7qev4*=n15mP1mX@kGVD)eE1X5NDyb8(_F%QOj(o7xdPF-GW*JXShLo@^a>=~)oo>R{#Hb6~XLR7SwsVj}riN6SP9Uu_Ro$A)m2;FR+@R!XtuzD&3?c~bMmSGVH)I0LC|~= zH9ng6*~iaE7eKN!lVe#kOEXJj>vS&5WiyB^5u?(=Q4VC)&L|b)0~9D%_nJ|T4wSbz zqZl0|Pl)GWc{p>GH*0xxs5Dp_%DbF~{Zd#Owwy@HL8-9*S$6Wvo63jM!kl%wMcED& zJ@vNq%_@?uw-5<;*3(MG$YA))Gtjhjk+Sv zqKLCfvr6L>@pI`}fg8N%f8Wd-uT%BUC*N*EI832#Lr@#))Ri@JIxnu9hcWis9}ODQ zDd?ZBYI6DZjvmnD@|I3$M3JBB1hEoY)Cz}KIrwjfSTDtusc=@>EzASp>=a-g0OzCt z^Bmx}UIL(hcT*54og-D4ccunC+a5;&@JE8i!*CKGO~B4sx0eh5>|A^d5R{OD&13P$ z$MGXV$2+%mt`OB}&2t$CSYW$0o~E>5f65b*lrK$FnunCv^ruv?Kjn!^iL}+%KZmpjqNCW*80S^Qedt*oCCAvZRO9%VZ4E~v%~ zJz?eC^1Nx~=1cId5mU{(h*|RrWd^(G_ps7%t_aSgYSVi{(YcC5jv9xtQM`SSXQH#; z1M@c44f>|Qh6ek*Yt@d}dg;8BB4*=V7?9$Z;dT55 z@e2I)X+eA*t}7wM=;p=Y&u#$qOs?Fbi9Y4{X{}0|iFvG<#69P^bHa{333BW!#ZA<$ z^mU&o4->n)ChhMt3E@|!gw2C?y%<2hb``{Ak@3z)7W*Z#c%UbL8^BM4G?sVtX|chI z2<`E+c%7curTKCSK3sIL_85*hlOd*x)m|f($J8Q>XXZRd*$*_LiE)sQS_|6kA%UV ziX8S--Y*S>!5T&@MTs`KO>*ifbp=X#$DQex#buN>^4peA*f1&%>;Y8av(CKUB6hGY$wbBM!)(YB|%kKW# z!>R4DO#?QhnGPjC?;zzlHWtlf`pIy{tR)k_nk)x7=UoQIiP>?S=4xQkEPT;yeun&l zOEO&4T&Cd0Q_639@_zh73U7yW8O**yJDe*cE3C~9%7LvF7|?vD#+ML-hUve?@uaHe zf4au8#l?-Z@;~WEKP9pHMdiOA=$DCgb3M&J(NuGWYr|iCD#6L*&Y%+-%b7Arrqw_{&_a!0%c( z=?T8gf*GnEk00e29+#SR>h5ITHmoNyfBt>C=JXpJc>&QP|J=x%RauQ4WE2$cb#i4qnfiKgtr?b@A3!ze z>~^*-T%F+-c7K!MlAj_e+B}`an?SIueIpp3g+F9!xGA_zD($tBCTkE?tk$iqV?}>g zF&*-s5#w;tU63wl?q&zV;fM1w1D7Jn!tnlNe(&sAX^|Q;gwy&$e=?w*CCt};arDs&Ik_` zdI{Iga)g7JIZIeS-m!c!l;=8@bzLT9IT(jtFe_y=m>tB})LeiG=A>nD>odc}-aIs` zR0Vb#zY8UepTo2#AWYXsv)=ot+rzC7DT&>V+Q2%zv$&IE^~cep=p90sGEVm1HdNr` z8)#eBiSxAL=GE}JMj(Sn%s8sieATnvLK`j=c93XvLcE|7GY<;I11(yUd8>r1uCQ=PkWKhw z!Kr-EzhoUUaj~3aKa1EVbuT4T6p?izLbs{1p3a*O9 zxwq(NFuzt#EuYE9*ArK8r)s{lF)Y*q>pHCTx^>>Xw`ezKmsmf7_R*r9$(EZ^WmK~C z50f~vf`#)(aE`J3Ukao3{k!-0+*LZen^Ld1cKiyY=S+v;A}2kI^o*C0$}J@pox$M8 zH^5_UkxS9+q_Ay5-}TdOqNI0L+;zYZ?Nc5NswZiA=_U--H$tk;CC-;9mp6&-ZjNpP zx;=NupvxVy9%i^h#%`oL{XDdBI@i-qakmNAtysK%tWsc_@+X?i8fj9^$*9y&dhW!I zx<-TEpvYzZcsz{IIO#zCmCO9r^?>W+%v0s@Tf%C@q;pp{7bN&vh`v#nSeQQ`eOmzs zGWD!rr%7MKa)_FA{7;yw&G1`H2ea`WB+JBaRkqyVa&yB+agU|Gnjb;}!^Lb{n8l(? zz~!?bdK>s%8!Nt%pxIb$cdF_7meW)WE)%xr?$Az_dIkFi;Oz~ zWI89JgTXSb%jDy?!`;%m%=-?!LmPHs2(Y8>Br`>oNP$jiN+>E7LO{vJilRWL7^MQ+q?uB#5N%KV$_JG(I$g8l0yAw^ zAws*5%O-2U<;Iw`fv}XX1a+PI%o{^tenXhD9&H5`-A%1s%>C4NgRG0E<(pUm4aaX9 z9dfL*Vi`Ejr}c79pv(ERyyF~TmvaJL&Zmtcl+v&kR3k(kXjQb5m&SKubi7P2O<($E zq|B12*nySOhM^QCk@R?Jyj&`+FO8e1M`x5~xbd!bhU1qd;Dq0qz5EjB@;fu(7hsoP z0$qM*j*i0bXsKkP9vv%b0V2!EBY5xVZ}o@c)n;UCb!_5tvKHWG!RI=vjupL>QLP`J zjq8x99cBzOA+RQAGREKG5`U**=& zS8?>B^+f3YpA&riUV>7|;6*cphPuZt(;SA8Px?FF8ZZ{{H_=l=)tQB!lb6KiC*tf-xt8{E8F5QF2;!|ur3#5)DOSxQZ$*p@4(~(~(H=NHD;}1i2RLg!W zU&Y%(rdCb@3kW3M`FP!YCd2?_wFX>e;i@(l|IPfWvRr%?zh;Hi*tu6A5q?+hdwmE2 zBsDDUQk&aHEvc(nBxN(xg*NLgjHEAzwS>lOFgZcvy3KGgz6F}2MD}pVcqe+Jxh?t> zOLJweP#0X6LZuWO^TlGJ#EB{r72u(VR1bSP(NTGeAKz;2h|71TENi-k*DdW5g5!3F zkr|G6vSi2IdMn(}#$nUWza}&`w9#YED|ED{}D% za0h!7+LBotmZa@EXQHqIh1Gp}G|i$p`EL0a4d*vt?Ypk9q})~Oy~zVDB)YXh#tHba zz0HSceT_>Qdb{fxy3b4QsrgZe3?=pW5z$J9owo4p9iM7pQ}8im^)aILu8t;CRh;IX0BqcJ=NezA z`ZOiB>Wc`I<&JHG_~YQDTLv?F8&5v|jhJC=T{iPU@bjWA((jsRg!rx=D)Z8w_8mlT zx&r>yC<_Tm%_q^YwpOwQE_y|{5SA+7h|Gkzurt%_A86g1vqzsGsy0wbGz^bBvA`N` zTtM2*wA7%Z#;G>7+l`*tz?=5wWd-ZTVS zK=Nm?+dE_Pa=1bvPSf8_mW#uoG6hkoidHIF=#4kiL#$p|2gthXh8ht@6OQ3Z$x%*+zh*aX3i~C6WNxE&R}Ep2Fu{;S*Dgv7%IPrN`sc;7UiE zM>Vjrj5fS?r94c*Ow2&LVovJG?9bBhXfdC`$TBe}EwRJ}jS{mlN;olNkj;@WVu?O1 zlm=rK(Zk~SDZ_g{zUjH=3h}-DGUvQuwlq?RDx}1Ua_gM5IcxVh3<0;YFq;#Ye+H#C z61|jOj3E$M&r_RA6_B%icP8zb)Y;@s2-cZd?lxU~A31a5->JBv0!J+itQ!=xOdn3z z91{KHG0kKSc|WjB?dS~a?y?giXD1|+$@<`o%%+(rp1H+p5V)zO-#4Y)uyM?p4r&VB ziy9O!IY%_z+x4LIo<`304UOlw!}BaN!jl_-nf3WC_=e~4To2zFj~SLds zcer|BG5$QBaE2Fs0oUKC#G7v zANG!Zk((oL+`#PEP4^o&)9&X*(U(ZPMpe)g^>9y=N=nVO-Yr+FY~}&*o)lmn=6*K= z&{|!cnrJKFK$b{B%@5z{aGF1&iL@1PAj45mIjxtgoXkU_cezB9@4#&<;6R3>pc1hl z>k^pg&?Kb4nB69iY$*@2@5qWxy-87&d6a(R03wBq0Oo=(QFab z=2Sz4I@_FAf#Bi_^#hr?J*ouD+&a=~w6fEzS|2DUX;&f@O!4vLkQ{>%*|Cl4&JjQ~ zKZeyGKL(*{QT})XUMbDd{Kox8bB^|_yR@0$_tP$RXuD-Iw>Z`OI%HNeiaUMld9U~8 z-|p=vTV{eglkSMK8*4B!z2%Y%twlE$lGd`Yo}cieGpGdZ32WAqiOyA(Xud~R^v<0^ zmTM);teZ2Ok&U&w!X>KRFs$gTZaD)}p*p)z^f7U0a$!C?2cq$}@M?@KI?Tlz3rt~M z+-NpG?iNC{mX38J+)}O*)V6lW4fhmiRiH5bHTdwSdB z&VzqHuF~v#&aZtND(qa3o8pKrQ}UD8_{-Rh)C9Ux&;tbR1$6G3_5x4RY;%gV+7fbE z7_m;;To3THPFn7iO2b8ldx*e&5Fr|Zz+dS@Ou;Vc**z3T99u2|ndEgh&SauH%YM8A za!I69WF;}VlAc^uHn|+<_lsqX#Ii5Iq+}L83e6(kdtp{u@!1R1-TU5fnlLH45$hyO z#FXSH5u1EcBnu^Sk5Z%r=)xv4vCt8jp_v@8N=*(K?o4kXhrX-QCI-^@_NGf=v-X5} zgtgVPo}08ibda|I-2diYbvAk)^)Mb^&E`^XTNUm8>(iUZy4%$1>(P~}7_A76MOU~w zlEkc`yiVa|YCjgdNjlc$yukMg5(-w zb)Y=BxfIyQGbwx*Db%L%z@BSnu~% zn7mlB>AauY<+FP?F642FTL5EGCIi-5RmRMp#5PMy^2rNuaT z0C`lB40!vIwF+@L7JUnJS+cISd&3>1Y(G-2H>|N@Cc;0D`o?Jc5QXG{s!T9m9*gc! zn@O7W`{nOz)&?;hyG8o3p7gFc-lF6^&GA-+cV~E^Bj;R3%lw=|to~TO@H8cFqCKAQ z=4ju(8Ep$Y+US^snCzS@q4{#kImY815?+m^Il1ll#O*t>1Dat6)NR=(JD{^10cX-V0vJ3UX{ z+DF)qUU&Zg(9d;FwpqKN8U{;0 zLqQ=?a@S2bzdxjhQHNM@ScP8ajV8VDUY)#~eq~1qK0=Y2kJH`O2xM?Q+g;^VU#8Mw z^ZP^%H-EtIDC^Zv$Q`ck%iF4)!{SN;JH1SaebUiB#TQy^B59oZ9NmeK*`XM?k{ZI5mnDiyoRjp<49P=pZFwos1>N@>h^7bf{PxR!+uEGCnelk(A0k2Y7mYA=y(o-w@ zQ$2a1`n_!_TdutGbSqeNKB~YytTvJr@No*&1MC&TwB-KxW2)A!2&QGXD8KPDrYEF~ zAvaFnPu}GJAJ1qvo+4|z!_GLJb>lR1Wd;l$p&Hja{Z%L?9&19G)HqewO)k_9BqLzH zx0UpcfPQA`5jXk?mCA@aGQohGW59K$mX0ch@mg__G%o4pBPq+)l!fn0=-`hGk2)_{ zDNxC18lSQIyt>@RgQ3q-1M!Rb37t}V5i;NM!4_+mpHXFXjbc7Uk~X1x zXy&EuW<6HUyjU_u7d|U-nl9|=N16Edq!WjIz@GzTvxQR+>RZ);F}4I*&X)a9E3*Ip zGdw_9i6CWT+E7wa!$tQfQ?W4{&?GyVoRdUUMR!rXp2=48g&?{InkK@uf9gG&2LLjr zy4h{?phD8~8Sl50;Ubf5r&{Bm60NOe(`#X4VakBkNu*Qqjsdm<9Rodui+`!ye@+27 zl5;*<=@)p13a)wlQs6v_I3NEC?{IOGluSDjxo&oP@p zx|!x95|t+RV{RhV13kS9O{e3AeSm}8MAZPu-JYt8ETkOV9IA(wP1qAEsVXt-jr|jX z?qgCtQ+79ZbXmVfw;=&AvtoZW8uY*ADc?!afP^|8;imp#}FA zL$@nED#{i#F?>V8p6;}v8@BjwDJ;PlU&)l!5@BNUyjx@lr!n}U$ZH-!yUxO^TYdItp5Fw;;k`$PEW4;{svllQ8&E?Y&!33=&@XjJj`0$3`g~H zXs2E>@gE^NSe>7bIZ)1up`NMrmn1$g0B!-1Pda+u&&Kaw(?ybpAWG{4=O)1Twh3EK}`} z`HRR?Mf=Rj z7)ya7S*Z1q<|dqwP15KWc+l0;l1k|l=1(?Hug6TPlb=gv`%ls~|4q(o1TuKEi)5=Y za-XEVWH{E8wuiZCd+2Wp#zfK-ez;jvNZP`nx5HxB7CPeIr1Ez{&nblNG-)FbSnH_^ zRbxlS1N43M`3GRyc16qs;C=zP2G3XPg0=$5IcS*xzKkfkpR&v}vz-vzGy{T~X_Qe_ z>iU%8B|N5Y9pOiTV(DYdP7!_Q5?WLcoa`S=`7sZG&!+(M0C-pcys<3UuxgqxmnRJ*l`3Rz2R0fgcc^{s! zq_bBX$Z!;AXCh`H-c<=-?2adVW#au_)LACHnb7a|X1AGtD8SAj8RzMgYWo z(}1a}9}OuG632H=ngN94?JXwxsN8ePdA>nn@(!@+_m|`LMYPr&=SkEPwnD_5WbXxz z$DB$JX#g8Kb!0M6-nGuqXP{+&-DA?-29!uXdHQXIbgd0yIkN)OZ*ukAEXqW);F-o) zmXnLdaMaAcs+!WSsd)fkOgMmf06dxk%wu;-ALyycyyT%`&%d6!vSLElZe&)@Q**qk zI}o@JUS&WQN+CI`heR8aMD}=}0uE$}6x8d7U&mG3 zwe>lR5kxWHNMhW3VJf~LbSCwsn~?g&Nt^AK)Q@&RWKO(g=2~iIwkaMDQjSQihlQ_b zTim*~CM$S!t#bqBa;IBfV9`sdV=3Ad#ew zPm=YW%2)G`oOd<+Ry9sV3rPW@80~w3j4OCH5&8f7_?XK`R|__Ofh--fck&h->-01n zSK$hs;OpLl_e#mv3d~mW5CW_ZMz5mJCCh&XYP^en)xgOQ)E877l*TPQ{ixctV@Rj?^EGy-HWr$)Hw5c zapq5rv#oHDz3LZ*=Dj-UKV6;g1k^m1R={D+=c$1|U$w>vyMV-PiO-MrQX@&|Xm4?~ zwd;dHq~Cysy|}6TW!jgUl5!bm=;Zv%s8_sjht!;hcpl9J%(2CODgePZM8b z%JqjyuD=GNr*p|wzm}_cHqTY+Z3>EYm3YgH)GJ*^8(l`t#S(!6eoMcWk$I?!AEf~E zY|iu@j%hQYE>dA_MKXScyw<+9rd_mX7tP-Q;;vczb6m{nr{v_~U&_JS8;_g#lKVsH zTFvRCoo8+8ISS|`>__K;7{3wC>PIid+g0ndx)&Rfe}f&wbMdom7Q}osAlNv|*UMe~ zMBW6E?)zWk-lBu;xh~I@;bM}xd#xq-xI}#<+q|Dz)zixN;--atl@QZ8NZaADQ@I7+ z>R!A_hsWu?9z62V+w2$zW*^Rf6N9uf0#8TXb`Ef7bPYYyksUW_O{~F1)az>X>1m|D z6#C5-lvpxnLmO_bk|xE3E8wM$AK&))*9iYFK!pD%TPxnedJ5@EJ%x0oZjgSd8z_}} z8ZfD+0h77~I#Rcg>;KGDyvx-FlXXn15tfs7ak}6Pbb(voXYs11>@4ww$;Rwp-q~g} zcv@BbQ8h$)GpU!x*75Q#Xo8@AVqRw(>;oUKg^yg?U)}4THW%yk*Q`yy{&Tlgw~X%; z12!H=2Z-k8IzaO~(UkH1pNV1o$FC7Bc`i#mm#3cBrk*QP&lU2}mIrA~8d{%pBc2=3 z6>uOM@e~x!PaMwVk8#@yIFR8eXu4kG+7+s!?j7VXaCeXk8TO`kqh&kWDB~>x_e#l; z1HId*v*%XLU_EeQefES6i#(g!ef!u3$b6_VP&#uiX|Ez}GNF~yXPo;i#R}rDsf(~k zss4xw;Jr?A&E&M1i!7bI_XEzHgF_Rs1_MWi16Jwg!&iyM3y(PP z&c~1P%RRhh6q^%WTr!j|{tD3QQHhiX;J!9Jnera3F>V9VqV+{wT}UigbCTE}5ro^n z1#47@e3r<44d}$iT_!fo88tzwVXRks8dSeL@nRq^k zwXJ#f1meN?SQDek6p-NYY<_}Dd2o!zN{b4IHtsu-pq3pfFW|(xLTJ;R;qk#Vs%TWw zs6t$ZjEc3<%VUYU1iCk9<=NRQF7;-+^58$tTd4A+uQtuG1e8d0kIl&3jy1YzvjA zA%qrW+e%KO{InY79#U=M?*h`?pfsNZ%zMsl@lwdO#b*IKKzo9CdZ^o{z(DtLIKtJmGEURki9 zAyXsA;h|m+7H&Bl<0jl*(BiX`s!2s6N=5Qn(0F&N$)WKujVkm-<>SLabTz3tg-c*< z%hlxquUJj%68}N{b$N&1;z9uxc(MJyl3(j!y?}(7&IFYzTW#2{;aG;TDps*}S9QeX=9HJ2K)e*x9X3X@7!|%6qHm=9-u&B8-BDFy}8Bbc}Ej zDJ2Ad-A|CTZjWl3H)lsjlc$jmARS-lVRW6~*$Xap1Z#e*p+4dtKtFDLO2GMs_QFA7L=E$^!NSoFBEhEsmQFK~A1sER$9fs>PE9TrS z#BI1)I}mykxXt^KGX_#yae-kl68x!SP5adJ1F8!48pF2eb_iNOkuCRj%kvTlxIIzq z0`^3sWKZ-=Qg_Tsza_N9n(WyQHQ7N*`=NTE1^w&#;5)?Qg9(pH8yE$6oH?BCBy3QI zw!`5f-NtX#S+!?(vgdxBi%-5z=qO;Su-8E;Ki^-;$`#k^_sY6>y+186)+^a6;p-mL?9 zJ*$7W`jfw*47MZsQ%c(8XkEBQAcLFj5>dN69(c2>n0}Yq(@9{_El-6c^~Jca&#*7UsQ4D% zm5(BIj@q0I5}$a|=1_c!`I!RpY~4mNayvab+K-&$Q;8xaD~77UnWdcj+7@O=_wWoA z>Gb*bUa{^CJw^sT*2SSOa-Zao?vWkw?k;cEzB1gcI}P%+muG8xX5$y)rCrUOk&Rx2 zm(P6_bUrII766`(zy6br`*K6G%P^iq@Ee*PPpHPk8mc zZM_8tx_0Js3xBIsuKoSOukGr`XF!Lq2w1zbH}}$q`26@xaZ%c^AnlU8hk$6Xw^-v{ zh_9_ildP7al736bWfQ|9DJ82+PRvzlkaJr9I&>R3_d5b9^1IdVCA znmG00ti5Hr9-j36fA;}g+b!vdUP@hXgeIygG{&@nm z8NZZpvQPhwjitObejf2;kbD)<>DyS5xA-*o_K6PB>DwMUmVtcS=k3~mMu5J%iu+f2 zlMV4mAN>&T8SgX5^S$Eze@ms}^d37288nBg^9%9I;1o5btT=0M5FHrjU>rLYnhfe3 zJLxi?v2}JkxH4RwU$lcOY}9G-osahYP80^*!Ih_&U?umSq0oK%g;~MBz)s5HbouUH z?QCZs`0P^E-sk*m5Q(#R1zc*k$O1I-Zs0t{(AfS0nypg|YswEm66>rJzfUr<)H!vFz^0NLl)s~vq zu0(LCAet_==_5Hi55l;jI}rtdtVAW>Zc3(~L%knevO}oc&PQ7hXe3VtaUFLtS;eri z_E6Mbm$RWhJ}(lV+T}F?b{Uq8ItA5OfGh#g-b|L6sARlVoDFax@LSV5l{Ovp}2(Y%jI`h^k0j&`tl^A%zL(k?fq7Vy`2U_p`$WpvdP$)&)ZaXK1XByNKXOx zNWk>tbjvFS?boa3mI55iAol@JVzS3C9!j8uJzn=`cN5pGuuP2=vR>-+AO+l%2d z(LHW0oQ#e7oXNk7J~vt4d-&*3 zG(o^AD$I(VlndYYlXFt1C#+)lS@;)Tl9D~WAjfu86V(t~-pTy6@&FGG3 zd)0%|+Vv;o#tJ=yv|(?Q(Q<^6xN-CbXnt5U`3x@;8owYM*Eh+!`5FNZ z0Knmn198+>O*Ybl?yaoeviq%TrY!2!R@BQNmX=cKvvwBl4wds;Nja4~-@F{ew$da; zEazL@kTD#;7L=X>!0)%k?-kqgciQvJbJKsEzWC8@q$tN%k)`eUMz)pvPM1;dInlkq^X+(>y92RL zlGAf(PUazN7Pps6L$Rx8|n#_Ta{eWXRTad2RJvzDh%V-Q;x<{sBmT*52HG2+Xt)A zsdKSa=JehoWd|ra%4Ama^NcA6OB~;(4xO6PO;c_7z-JE@W2QoCi(0=ycX%I%KR-GY zs2?3D8b5%B1Mn)$4+(IVa4k%2emf%6?TGkVVmikl*AZYrWh)kVuEX2&0oIi&+H3il zNZ0Is(7$Hq?1Xa=bMk_XOg6-v(=kZ*IJs-^&Tc=-+wqmD-9BLU;$4!n&6XLvSgY1- z8Oz~E6kv@t;8b-sx^_XgouX7umtexOHkJe0xBBw8NZeMyfvk5Z$ZBy>4j=wa+*YWt zdXIT7j$R10`pk^=$jJhclX-sPH%MG>*>Ek5%UwRc9zc8pKg~Dt6TOL_S@E0sb^5}$ zGeVSwwfRp{BK4HB#i-R^i~9S7>Ms+Y0T7b>S~F@eT3lpjXi?Lr3i=(&!cb-?oQna( zHNNC2?6W#zr%UAByY1WtU*CK8n@@ilbq29uV}X^j10cbnELR^d@kSc>4wk>edvESmCTE1KU9cZ~2lNkcK| z(HjeN&V5+O@v#a%KD7lOG?^Ygvdx!4tNAvv<=B9oIErr+GszXPgfnhDZ$FY-x1zku z*6tCp_$H8o`0f0f8sKouBlKlGw)YOj$OLcRj4u*tePG2*;fs?Z$rOH7Pw~uut~;O- zwTLj|SQhVUVWG@9ap797dCV@DLHV|_@-c02Dwit_{`#Qu{iO5sDYV^G6{%W(EoA*@ z169#{r?{L^<(Os)XtQQhP` z8h&yX(cTr%jZ`%0yI`fZwI6k0na06z9oX}!_T&I6v>WLlZ*h9NzLnoN4CIWxxavoj zQlj_~3K;2U_7+LRnXSTkSkpW+(Ku-gyS@J(Mw1dtoNNg%mtqP>gTIqou$1w|=?O}=NG8JcmUyjz9KI*4awedh%`}gD?B8L&63iYe!!X@t z!-_+=qC*O0nULb+0ghDi-2jLAb}*B7{be*Hxcaz zH6;(po?6v9GUqwsMKToppg!cx53$Cwy9;~}vPO~hr4Ehe?SfkAS}IfgA;J_yYt!dK z_p{LTUCf7xDerQ!-x9X%+6-2=qYG)%hUuMByN5Aoz?K0Y*&=EJ6x+i27W;q$y<0f? z+=el-6I_$0>pOG2oey{WGikwXJ=e;bv2oa~U(%-EMWt!oWsDiVQNmREE=6|CWa2xN zeNWtz(%{Bu8h1^?ffj<3VoCr>8BG=}2#ZNR_C*A0KM8$Ap_D@{(pC<46`4@{s6g*@ zgfj8R2u-9}Cjm!QBGNLmg|fD?-65N!ES*5m8(^Bzjj`qQE(s+q_-f%n6xvB5 zWjz!^ryzqKt8 z-KEBp!HSDMA>Y|{0JcB3d&QOXMBd(VxL5s|GVpfQNMWQHDVi5{z6l#V4WM~#ov*C^ z4ju@8kfswRx9*0pRTRC96H(g(=7e1@O@uvjC*qQE@ z)tQjo4P-c1oEse_lnU=p1E_D+_!AlD<4+SX-5q^KzMsNIHD^oeLvycPty!HEc}};p zCO-=Xo>?RIfhLCQ>>N|%_X5XElYZ2k_&$wIyu#vUcl$#z$5&+!(_)oh8`0|r7^j-$ z4^{^i3gY_|-~kEV3&V$w(HZsV0g2Om4>})nIfH4SAB#ROU}D~WL4LJ|dE~D@nq>~d z(3)d!C6!&%VeAO){A!9zLu1V8Hn9W`yZm$F2#YJaU!K#|W1d#CG1D7H^q$9*@COCg znGeA5=iML(O3F6i3-iHN{FRw@+QZyS6}Ar zD(&4by}|j@Im>a3C$C2r@R2iq$Kw-}wjWq_KsSGQDKfYp88pAc#7k$pl(@hb)8rT> zW%E4Pyw=!UXTR6+ zJ071Xl&PZ1E(%^X_tHMy1LFDdglAELXOZGqnrIb_`ev*vzK`|iI%)=Pzn^j|)_;%& zx~%t1)=Se;dC>eG6Vp9Py!#PpHObw2QNIoOfZQ=hb)ON62*5JFxWFvz3rHRb*dy1q?{3eDd&pODPLZB8zzv@D4CD&cR z`aMt#t&HA^VKwHT3SLR@+ZKF^p!JXX5X2OUze7Z2koGp4`qm%Fek4hImt>6E6)wAc`sOAyA$Bu*j*@G)#ZK-qP$H_c8 zgh^GzM59_?VBZ2u)}&|l;50XpUHpVfp~<-ftqNx*$!4g0KU5Ur-I$`72f&X~fO)9k z9|LghiW+;8fNJa~0=gO#s9R%q_>q+~trWHA=%@U2s!2^Z`k4~3CgNJ9NH8&x6N#u8 z{Fhu>UJcg!Tb>|{V>z8s-|~LA9~Gq%zC!YJ`1=2JOZ>&qO;!ioTyh7Rt?ZD^Z;89P z%x>O-c>!{ZVTpO)Z@lfzEq3NQXti0 z7BDS#8aL5Mw6H!j;YS8GeWtb`IHq_sR~)oBVrxA;opJZYEU7AFFGda(R=tMay0AWdBHz^J`EZdJ#&C-|yKaR=& z+`O2+4G3n3`=0a#HenyVUqOY{#rPRY){~DrIj6qx6bQVhV|~Im9guN-oA&Zs;(A(? zjUR%!7`3S1^<&u3A()F%i~2nw*Tp;S;tznVSDVN>Jyl?Os+`DT;BKBuhvwKTX-aML z0N6VPm%@KYRg0?bdhnm2qOU!z=L@RqgW0+CgHMPAUBlg= zzkonLDC!+6?@Ow~K0B-5#Ohjy$%`5+in`qZzKq4DE)*Nr!bLXU_&iRI6^*69c%{@P zPWixDzdo0Pb_MP?zb1XCvJ`D^?#us6{#_Gq^ZdEb#PJ8^|4rpzXgrHEqVt1dfKU3d zsjS%Cbl561cEKTbz+y+UMc3yz2<{l2nM@pqv2>r0I!@Wde@Z8Dg{q@Zd}Z$8c85}J{z%|TSwJ;(nbGX>9kk8r^pW70e1R3v zQ`jh3w_@@8-Fda$$@?qhokbyVp9)I#nF${p6x95e)zj?y{IR`66Pl@xnF$Rh<|W^) zA%wxa$wfghZzmoO)2FFS|CMmHUzgo{zizSnR{R>(klWYTPlB0p*Wr1zjn1yaA)vW^ zd*e4cNXh8Z&x4Rm2HOEwz=5nwD=5{mpInU=<^jMY-2u#FJm3J7myZB#QP| z&e6gAc8_$$r=as0S(1mL))3igO%AuONd;!fGxaU%gA>me>%ppbGak@v02QLc1ad9& zH62>E6p>Kt8>K$UMlM*cuM9DfS1A59U6{4ROQ`<%&(1HEU%9gvdoa2bTsNGi$TNZ9 z-x|l&pW6p`RCOFJ2I|kUrhzhR97~;`#u}HJ8||prIcdXbd|c4{c;koW&T8aK3eRrr zVQ#dOu$^{@s>+S}JAkU_)Sm(lWYwi0x6HOGd5=Ewhx?>puIJzR$G^I{a`^>|j$7W0S2fOA-t72} zTYlC{mN#niFKC_5CA%))dC#TWZJF7s3s#G}n_{n!Y{p5?@_xE3Z;ilVuwQ~PI{Py239{BSazwy1(f3wxVvK#*q-2Iu8i#G?= zX>T}skJ4Lfzn!)J$1a^SdD)-0x^LYtwm$Y(Yv*6~+xA3w&6&|{#gnU_KJo*#mrUNc z^OJ|ycmL@HpWfr&XPtEX|6%P+;IgQ?27d3%GYk8U?7O=ls3>l^?;8j%si_DED1x#G zu7N1-3u&fly;)jnR%%+BmZn5zX=bLDX4#@;t7&E>^__F>Wq2@q-`?;0=;vwv_ndp~ zx$E4SXP$Y6jX6Ip&efwN?TZU@-gSj{-NL^wb$EBH!PqVM80xZ(G1!i=t}cu{3F*H$ z!+UukeVZeE;sA9Y0M-5gKHY-*vurllCPA8)3CHmNAz+^c$AdusIN0q0pAEpq6Y_5b zKkyPqwiG^=z777*ga22-7A^r9eC?mXX^OoF>0d*>2*{U)0|5TY!R`$>?hWP7hFIa= z1ZxYMrrzCH8oVGj8(!|63mTmk8rnH~7-`1hCA62NUw( zUjf*sf_)nPs0{oK{{L~60`DZ73I*d6G4-Mw3W@1Ze!h$fxd6;^Ack@9V$D2wa2(?* zg!H<|Fi!=z>fQ}1h!yP(M)^>Q43IP6w`lU!T}3jBxdHIDTIIo-_Pje|J{VyeV)hyE{7NdA=2FJ)kb3V3 zUI$0_)pt}^4^e7e1BpgVgaYgf`W{>~y4%IQ!*+u4Hy%x~Q_xEeHF7@OpeUjSPp9z5 zK@;VZJ|C)qJukW@7dr4>xv{%&JYyHnV3|-z|9hF;T}b_GIIs#KjC=?Vhfi&Lod5Kk%f3$E+l?lj=i!8I<|b(0sz^E4<#ES>4B9GncT@1%Bh83>W3L0PrS zA1)oZzGr~L!5}lGZaN&NfJ5xuWEfMpz^n(igL}dEC2=_6swP&@TG!nm1*dv8R8}m~ zV$sfpDSmgJ+J^cVT;A6kvfvtz)w-7xTu4QwhmhkTFmQ)bM7YSi!pStDFJzwrPWnPZ zj$9eX!NjniruHYio>a|L)&VjPym#gla8&|syFux=Dv8xv40jRhy`m`whn?>2a0EEQ zayHpdYcvv!SbS5AxTd3)nVrx`gA}gN<EI&`~OVaL(pbg!J) zoCQ$R2{aqinG;;3^sZ}!yB%S@>o)K9k>j=rgGzw`pAS~WY$&+u|4&_E2iv<74S}Z^ zjIR*>9R_zjYtKrx6}{JJ7+0^;>Q=?t4r~wCRQJ_7!YdB+kIjx}T zzSiP-aFJN+Vi-8U?DaPQfA6F=_Pg8G7q0KR{%@VuMz#~2j2Z#)OpsShcv&O%@_3n( z3CFl1;Fj`UQQJ>toB%i~?VHF8zR)@NpSZ6r6dMK43b-A|DaGZI!xC@^V;pzVsOC=QnE6_(u(r)Gja>V@-wCtWfT;KP0Y&=OHC_;+ah6&XT{EG90mtz zdAWu8c{w>5`C)}Kre=U54iwo1VX0FlWM>xT6%~X{$S5q%$jA*V1eX)RG_N>2H?!8! zl#Ifxy!3(&vs%sJZr~Jsk|XfL69(sn<>wU@W`t#n>;ei?C*)*=O-U_G%gQJqw*^I0 zr{-j5q=!vU&4Ey3_g;?-ONHAm(GYuPM*fVjLcCcMR-9T8mYY`?X61vLVOn-B zILJw73HSK zgrR9&6XxWlQE>%f#Toe-VFekf`OqTi9kA(|lh^#bsTui&Gip8lT?m2qsIAo$qexj7 z7et<2SOCor_tNsA|Nk#h=7DdB9GgBhH!LGRADpM5XliYsI;@_-GgK$Q5&(6hm`9G~low3SxL!z!T>Ms@c1==kVBkszM<195h z7uIL^ydoPGo3PZv!u)KgFAUOb(Z9I3QWy7tB`I%;o#$?~wlTb*hd5i%G{u>go>7pN zpFI_pQ5tDbMqz4h8mujJ2A7kh_UtXT0R`D;P*__*t7-*B6Vh^0VQubVt?u1Z3t-91 zs4X-VPLcOo_3H09?k>ez_#qnTM;wGxp%_@EC(M93G!X_S1Qf%Q{`bYe>;SK+VVN1Z zFjdlI?PK@{96Q1apa9M#v{OojGnUmSsp8xZ%Ri)we^W23KV=2!9RBa>_7AHA4QbbUv=H30gpAa*thy@0x<4JZc2*O>t_ar~ z+HKL20^7o)|E4x|y_8$K4}>$x-}O|z?!f+m9V!hvu}QOwzs|2*+3MCB=)D%S6yX%H z0d`>z$NvM}{Y*!YoL(8$I&Ok7L2kYu$i=u8!do zyV03;5N*j5Q{kE<4dTqpg$*4{cc=*Lxo|E(zj#iO2l=bA6nrkK`S^RW#o&A zad+n0(>$C`@Y*WXDi}V32M={sYJrzbsZaziU3Ynj;i;kp?8Ev?6UZX|x0UbJt@fIS z_QJBh(7pvzGt#mr;?-wymb}cJ4xx+l#9tzf#*s;Sx~7BEb8Q3KZ|KEY7pBcL%iJ=g zCc9U^i6+Ay6upMcf1gOSYZz+CyTY=wkAaVgllyn);;}6HLe_MA2qHeVU8{ER;V;wR z1_WcypE4FX7kSX0PVV9nvEE4C~hu{=W=( zUsvGnIe8O+@ee*ybRRM9Nhb%m^T2-Nt(mWQDC~Q{H{c(935vm&nAj?~-Q68cAVUlI ze=+?36Zk(oBL;U@;2+q9L0VHd-U0sr>7}~(f3%0EaN*Mr{BxAG)7e1hUe1ney7Odb zSGLBv!dYj}K#D8d1t~gv&-oC@YmlNd(*=*cT=2NBOSFs5hSTwAI?g6pLUO%Jg^MfO z;!**Ao+EjXnzK)pQ|rhh6wh zb=(i*sSLzYx&}qN__EfaMXrv_I|AG7%LvTn9f|EQJ_>7*7ggcn$yP>{MtQP-k$e%P zE4$qgCMbM+xPj8bw*ZkV=on$BLIhMs?!b`Flc^0BPG`SJO0 z@-gsuy3Qu&WBO8%0c;ycPj)aLYxHaW$N4Zm3ovg;0ot^uH0iR7!K{ebLmfz;tka%j_tWPgwWthi`gQ2?6< zQfE&TVNIW<^j(yGg5=kv)u&@`Move|-qSJf06Jbd-R%4(wLFYENY~kh;&`anOC(Q_ z{I)pS1>Pqx1IOp_8Cc5o8ECn0=IKt3?8lkd%jztwS0j+n+Ou(%&6$m(dE{c;t%O8_M!NEPnP)*+LVIC^%+-el=z=F{61StIP2iC3SYyz4>S(I zE~Fa*Iupp1D1*q61wdwZ_{}=Z=fWZ&hdcaw43Z~{X64|1E2L@63(g7X6W+D~cHZ#I zb6DPS^5V@Bh(00mfhV6)_al)Xd^m)pb1XdwZpW7a1p|4o5ct$)6a3P7G!T9-XawWj zn{@|D02;}7xHn4&@`1Rx0kS-G6=?`)4Ac}$y0aU2NQTP`O zzhF6w=(HsGMiy9pNtTURIeGaF$OF!SYe?s(V0kUzw<$2{RzM!`7~(oAeK1f0(4$1D z$`nO|-^t(g8Ayi@Bd$|z50lRx>;|>ONgzD)-l6h7 z0%{0ULzZ6y<*-4_nPV%}0O5xl?i^d!Q^h!kum(iIK^Y!b@No-_ z9iS?pe$Yb|M4tf-f=`2%Ko7XHUxAX~bGsEB`^XiZk{JfiE^XjACW36(5>tV&yp}-t z&6LN8`U2e#pCfJN*efG|Jb<=>7k36P$zq?v2R_@$%PR6x#GWJFW1z#|pm?6Vyi7ie z*iMS<14+9{_YF`2Snj0~6b;AObhe*#EhuL1Ss&m)C- zvkPRoi;X7BAINeq%TjO*{zg&nljLAv9rm$u()ml;NE9dO38L;q``J#SVMGVmexgZ| zjzW3fY=+SiM#uqnj&v)4G`$Uoq&ouNjKui?x_NadPxc* z%K<kR=omA}i>+saZ6n2&+kxp?ypXXSz`UJ%50t79<;44R98A!SdY!vxy z3A7A!4^X}ir2CY;LNt`{}H_NF`bR#BP%A z1xdHm1>offJo=%rpP9SO3Fr*aG$0=vw)N*=X;Xe-zC^dl=P$6%pw8xqHM-5hh`fPt z)onu*N%RLxuwe_f2ZCjscO%_E%Ex&R(q)iN=R=7~B&Cq$e6rN}2%?olPJE&bN94bN z;1LL(ZNvKQmb%F{Z25N_8Jh#T0?PL(==>BXUPSZ_SvvFCHk?(rh&up zILbc)f^#az-+A?Bw~4y&E<`qG7+Fep4sXDKGl{Qrq%*vEk0+APD!8`RST8=0C=*^^ zr?K9AK5UHKnP)LlA6`K^CwQ@?#`^JPL?J{2_zI#>_`0FS2Juxyt%wHmO7b!cUVN#s zM82AIqJ*J*J<$VmP?yX%*y+ac&2}`NKW#^;d@GTNC5>+<+CCq>WbhqC7ZxC8^5=<~ zRv=~ZokTSYk+S)2qQ;AmCi6XZ`EvM6L@>mIS1Raa?Dv!4y<%-8Zo>c1Q`4RVE zNuHmfjptR650E_XiD$hKuMnjzd&mpUPh?-~-`?k6OF_?^ed2|si{n4MK7z7ZdZT|) zN_+2<;PXvLiDOs1;rzggeEPxaw9f~B#&TiYaiJ4lBaRgF0d_eaZSB-{GW z2m4-hJc8tSk~t)cNzNnr5Xhv`)IgL4Aj4Vvp!bY$8N>V_^tn6;OW#1po9Wmw7}MJa zN5IQd2L)qmj16uK$5VpiKxT&IfP5zeZG1zI!tu+Y?(k;X^PxTCD+%aGYG~(xkU@91CcY2r0vxU^^^sg8o@klw+C}L;5B-PAaWx`Vpl3+4KqL z+EN-dd)9e)X-krANp>OG3nXXrgRtE;fDC6P&0d9+h0V}si{>|+!!Znkii-2Aq) z2WwOwA05Y@YVPC0*()H!+5640A3tdx04YB=4+V*1566rKZ_jwY#WK)-+@j2-Hj>|4 zRJaT;{gb3E8jnqqZXlrzqgT1av7nZDY8;Cv`9#abuF$6~F`gqWE8+Mgr92snE$~+C zAxQZ&7RUMTv5ifPaItF~yFcy&NcU=mHqosxZx4{QF{HKn!*zJ+B$5RrXMzl86|ELQ zwCh@_Zs57qtI*mGt%Kp%kL2Fg=;wphhg@s@{N7@O8`fon8`jseRZ?kb8=RrbK|)>P z-E47GBOEyocwuZ~T6?e#3zxU%>{$GJUKrKaAjLXhYg-p#%eM1v!%N$d>s?IU^wzBksEO`~HR1C7{w-LLXS>@3JQcCmXacn9H|J>mUP$G!24faxA=LvLI$o(Ac`D*E7v z650)Y54k3l9_x!U?n9E_lT`a*N-#)R=V@(eL&w+qO%3AArT=hL;A|3 z$3bFG)vknFlAf~cXC$GAl}YH~og~bAC=qkLort;kP+U2MH`k#;TffAl(xs4|RJwuW zZj#4A#<5R^;_B_2+&7f7wJCV~D#@=?a2<0VhAE=WzZ{01`EZn&;sKABo(c6}V}=L2 z>1_PO>)|>(FmZ8YI2%yhFe;qo6*q-Ddaq^Vm^%A?BFq$)RI&?FQcGU4(tFP=X{58A z6Z6z?wsaQe+A<4sVG4}2IZc{Do6NGxnm$QAQo z6G-nsDLo(T3CE)z>;p1B+s&r43lmW;DSs92{jHq%7UX)Yq&TKF<<%Kh~Yx>wSl+P{0);K`N z?}7|x*Op`JDJ!t`{>XLq#}aR}$Ky=6WEaOG+Q+ldgE&4i1&==lc`6JpRak}J6K^=`@zaVN|Z}z%HTj3h+CQ-Em#@T?~k%VzJU|OW8`=cH&aX;oF z=>?BNK)ys3CYI;VLL^~%{;aVeDldSwwCEZSVA;}gisz3!kWG^`*Yg(8Oi3#}Yv6Sf zOC_!IJ+BQU=ViZKM`-nsd5v)H^ z8Pt8G62Ybttz}Ppja4GqFGSVskk=&^$^MX3MWi*V^BKupEcy&AeFaflN3jq|*w#_3 zv1NG)?!dORC|haB1`$;|;8<$RhDpM))R>JGmNb@{u!)jzEHz{R%ubb(u}=ERPBJ{I)+tC!f_qL-j#&0v}ETbVJvWui%5*?SoW19j3t&`mzEey z9Q#!g#uCSr#&vDhiaA;|S82tX2r}RD%H(ZWtfVtulY!b3RXd>1c-Bo4`iy7&rKRRw z0oPzdCAoPo0m>u7b?FkLkIkX@YAw`zwbG8wm6kYm6WB^gICc}*I-+v3m-lI7-=Ig;4HAOFC z2K2;3_^Wog1^Mbo^U+j`v=ARBpcu+m%^UeNP z=~9>M(+X&^r13tTfEE*pIt*a5iNtIiz$%F_&Ozz`wnLElpiiG zScuO^br5@psFFSAld2A3&do8LO18}>OHHK6RH}Q4nk1>3pMiYI7Txlhs}8eB@m;Ro zUoYP%OLxX+jXK66%s18|#rH9F0&7L3V;wfDX{?VR)7f{sn$Ct0m6@Twn}J43T`S)g z)C@LW>U#O^1Q zHH{6E`Mxf>7M0IJrRAa-MK1KH33#d2er=FoD`b0O(WmI!>Fgj;1sm>{Xq(P@#-UD( zLAX^$f7RLqzY(@#Hi2{^-%K`1Sek46YWPexOVZCKUjyAj<}B%i|6YQT7UD{FI$*7B727K5YoLeN4IcNZ7g@SR z4fXwOg+;CP!|Vx*y6e^KrbQ$46D+EIZ7f;(IaVU+>A+I`GSfQ<-P3_f_0O4yMUUuL zSg=K#^=quTMZ5JMSUZbe*Ke?17M;~^v!ND!uHRwfExN9AzQ`hG7<`>Y?uIk}K+;Z# z#gkvQ=n>tA|7g)>-Jg4R6jARC+^vW3FpFN-BlsAiN_Hr)kkHGJi($oqZ=P$(JZ4kPqpYhZ2&K^=wmIBS6XyU z8_qXdbXyzES?Ai)ml>&iJke@)Ch#d^65mWz$*u)%HzxBie0%}sv}4d-BZrqrY7lhP zn984$)GX+@kK2D&Qghv2^EJZ^Sl@K<5-kYpeaNnRo2%yQmBQdmd^ zP&`o;$H?Y$%*9xh79Da4J_8skb?rlf_yTy)6m^$*PoN4uiAeO(LOz2CTOQU{{)8a& zm5>^~h;Jn-GmnOFWf9*+RL$@Vw3r{Z@+~u$@sk#nyrxZsFI6)|#(}>B?4a&~|aH`AOJdhppU= zNYr5)Z$KpKu#JZii5>NJ-cb_nsJHW;G9T9OSw2wa!}>kThe;jQZwH?s3G26mPm-2c zza6|l=-`=%8vY!gZBeqrbNrH|ny_St=lM;GMmoH}jb79e%q2Y8VJ8o^Xr#j~9!pft zyg|2{_mvbH9&EnI#}ln)&BGsX*u(D-t%Vh3lEce9tT*~ZDswo*`w~^Mj^P^|j`N*T zml*z%!&!dHqPHC`@|#3uYyy<`CEwXcc$pXexx*Fysid{x*Bq|$*uJPMXWPQBJAB2{ ziH@oV!*4rW<1YPBCwA1|^JpT`@89!I7F{%dqKGE&DdybiBd8mGozL zsN>K4j-;rF7LLF0l!0h@#bIbfg>svx5>=REB6>RB=CdW`M)U_-AT3KHGWoCkAxSGE zk{o~KPe@u9F$(BaNt+@jIR3`pk+eNxvf~~8p&-6Dq6p}!MH3ur_$^8MBQCK&Ia~^0 zWc*OXJjXw|hooZ>D;=2C23{Edec?eA!%KN2Uxx( zX;Xxslbdp0()NfjClBRILD0I*fNogi=LGLlAAl5RvKIt3^>L}hGG!t5MX!y77ZO6niQm4?bGLDaX6l=C7Vn-%q(QzHc) zmV>`)Ru%QCQwznPNJJf{gcFsUAA-*~rKzOr;4@BXWtXp&l5Cf+oibXG*}Y*6Z>OY5 zN^Z!Nb_%?5#VRjBS#FoFv$9U=jx_whsk4$!m%o+lY{QS8x+trNs@b)MpE-3^PDyfX z^p#ULB`$@0nxTy{c@L$HAQs(drDG4JourP9est=obddBwquWlsmClk18U>qum9B!! zC5lkN&fx?c$xUK`6Lc-}3FNa#i@6?VD@loe8kwS7RTl!Ub%r>wTKoS*;jmA`#Y)D;bJ9f+90FG^ybe6(^!H^Vud`nW%V6 z-2u>LDh(x_0$rvOOC;`DWy!i%X}6k;b1yXfWxUMyW7G9OId=Jqlv7r|OKiIGqafD5*lZ5tL}K(5D_x0j3?6YVR(1+Y6MdE_XCYn zHV5)8RgRF)O7_RRsOY8es&({P#>SR!j9x}{uf4ChToT?_yyLvmqFX+S%PNZ$Usspa z$}{8zYt+zXjk1TR9H^zsBTBOeC~6b$%x+LxNy0m`8PO3y6R zm9s6;ue%&lMr9+xr(V$~T#hKEl0Jxj-{q*Xj|k$7{?z47r7L{VfWh|!eu@6Z<+w6U zl4HzT+dIk*qDmGPbKM1gr)n}~J})ESFRqqq&|@R!LeI{v__*Uyx7MCI(`m``24P{vO|%X0R8OuXw=<$Nwu zCHpg`yX!ZKV;&Or!zK2E;!U)c4Q`q2`h${4RLRD-9PRp(a!l$ut6%u6jZ`ESZQl5V%04D^8{&)BuDzbhY03W|Lc=!&F9u{HdT!lzMW zW}8^9+)*4Qb&vg*YmL%SQc~;|pcqNxW4Eh+C~YO>#%>1cB58K)4%a`GQIb~1?gdJd zg!ep{I$09l^I+-*LDVi>EhZA@cdix+V(ThCcH$~ViK{7owyUU5k*?Zda@TMhLZk%+}m{~!|mXQ+BUma&$- z8F$6iQ2ivGjr+mXR6ixEFt5gCau@Y0NjKvr16`NITh(w^^;b!bt+?WLrL;$z2V!$aHg8?skN zsm_#^*k)epLP^+WUg{b_wDNhWPg)eLdaJu6VVn7?hlxa+`KiZlG z>jbwDHKB;wjID0n-7Q@0NmR{Ox9;l}p_UNAr(R$gr8b?8mZCQss|iH#Np|2Ex5jFg zMHy~Q)VUVrxiwQ)S~Sb8g}T|I3b&T(D;7QE)>?hrq9@$ish?W(yjw^07mHqX>#8~w zV=P$uNw;2Vm_;AE^;cV2blq);I?y8SK1?l@v@Lr18YLpKoq@yLbJYeGWw__7Ei5Wn$qrxT$WjXpzTlb)QAM-D}hj zEn4sKr}~9OTRjxpO^fz<=r(1ph^%v)6CRE>Z%O^3wr;j~i`K(0Jax5btB1EO(V~4G zezx&M@HuRo&pm={Hzkd4bKN7vHuXU)p^{B&bK4`-mMZD93YS)mYzNCk>5oBqjcwHy zop5hzJ8#ih_ZGHh^J*>gJX+e~E%NbfW$SBEsApT-V;04DcChWSsDo!$TWq@v9 zJbT;jNZQ*b({qq5WxgokG{iE*HrApO?n$;O7Ug-Q*h(z&@f=}WWYJmo(Y7@fg?f&) zby*;Me$i%{=LB0{i%LAxY$Giy^~|v4R0zw8z&wvkTbV^Zo|9~kShUpTl= zhb`LdS!_FL(Mz7QZJ%3o*t67j$D(&UD{O5R)|U5)=Q7)Pi@x`K*tSj5@j#fVwtW`a zyf)e1w8+PEv+bNk>pZvGu3B`%eTVIiMQ&a@ZRR3T-toZYo_lPe7H#(2Z%eT#%Q&Ns%=$7c;?!yp0qVzj9x0tTWz+h@7h`um6=-nW}r?))pUR2lx-u?TG%J|@H%DN zOthMHjPD0@hp3Vz$M^6$ZEL&)eTp;CXwViGNt+__yw2FhNZKAz>~+?bEeP&vmH`!8 zl;?HMRzXz3=EVP^d}w>rqEhDzw&$fK-sAk(c0kghh~-`%+uo9d_c$-v&Ph5GvEJ(w z+Z9PSBA)TOY`aZV#+Jrs0rgmhb*NzfiVrqFv(1*YBYunP=eF}ic>i;`*B7=c76qGM z+HOkA-SK`-S8VEXY6)&ezU=jt&6DUd-Ce$ByFzVN$=ntWYkkcYP5CNW_`x*zzoz z&VR7Yu;@3hA8n6V#Fd|HF9%}-LM^&y3gWk_)Xg}sk;%+6@1G* z{#9#hSK! zAGVfK_c7@Huq8+x*8NXgSE<9g|7q(-B<_4MEmv4l>0HCou%I@GR)J88j^-f71b_#t~DQ9t-P9sN~lAGYh`?V_C| zo!DQyYUhcn80uWL(ub%7Y6&;1CBA7l%)5?mw;S*6t}PcIku)*8c(sfPPE&yGm7A$Ek=%TdNlAZxwl-5nsKF~GPMo2max`tX7Q8mLh zYot9Ybkx(0wVf8d=iONQoT!S8=x~WO(S8v+b61Byy_;x%N;=xX(Wi-KJS-x+*ufjf zP15xap+F4;Q3>!voN^TO>UiCuj`BJV^J%6HAj`{qA?TWEDUyzWu7x(*&Pxj|O_15N zQwHefO6u5YGSEUIaepaVdr}hKUy9bAm6rIddyIBO65f%B(cYCbs8haAjCMuR{hdmH zYKY3|Ie{3>Z!K1$oSqYi(ZY!;OneT$rIsLRcBi>MEwv$%Hg=j1G*QylPD_BwB)!^c z70?n%F9bZ|6RSNW>E(dOfHp|_rPF4gIBhr40>(OT2RdlcE}vG~F`_r%nVkJTZM5q| z;+|YPjXi=ExXu+g2n z`i|DRTGYpPj5frgA--d^Q5N0rJ6_AMDAjj@Rzma!AKiJ9Z-%y4>T)_4`DSTHEt>6{ zt(~x_tM4T3oJD)T-rzZ%hxks>Zc5$k&I^3=H2qPGdI6i=d71B2&CjAWzWG`+ ziyreW)H+%8jBl|v#G)5{XK7cujqR)NHwI?k4*>|BfX@e+zX=jH9 z%e2`Rxi?s@t+2?i!Ak83i^3aJYP&6J-e8UPhDGfftkX_g)Vsl>+9wtbZ}6D*twos) zp3v@CG^4?0ZNNqmOH9=A2HUjZ7Oe(Kwdm0X+qE2vHZ^!wE4FA`gXgsQL~rnzs9gp4PMj&9>el3^G7;A?7dfulvLe$gZE2X3rROSuU1~x;w3e?Px0QT z-6tvKzD?fywLX%{?|a7k6)llSoZ}8?BZ#G zKu-`=vI$+h{a)4HA*zCB=_36OY3Ab?broOPCED+Z7AxtGX7PSUwZ4)%_;mGyXGMw1 z*fU-F`yJEvN!?3blKtM&(*GsA9P2X1?``c1qDpq5OSaz$&HV|~Rdd{Dozz-v5|-a} zDe^m|B@)3&u-wtS zCt8)HvaTonKGTA>2;Ii6m;AoerV_!YY#~4TeWfiW64y>&YYz$?-4p*>TT@T>Hql!1 zdRK4%ueH-cXV!EL0J0XkTz!Ya_@+pSQJ6lF;XE zt(PS9`KvZa68ijA8!oAB_qDFSX=5dI>Ha8C7Lh3LckOGTqw?-(*NN7$GZD-D?`U@{ zTIc_VHh)K5WL#fv(W9ywBo*re{y`@8DPEV}IPrhgzUZ$w=6 z_t39O;*oCy{cKUN>8YzPV4PJv5BkANcP6?5SI|HEd+UKj;tJYVZ$h*d%5wc^ zvXbr|0e*VQF7#5#R&;L=5TF-I+6uZred=zZI}8-8zeI#%zSKEXueRtC3)fFt6cG@v zU$iL0jL^Rn1ijKEAX5KHQc!FJ5PK0zsA5=$D19u^YV&IMb^#6b3?ebI8tMf^V#YPn zGl|5UZluq$bUgwZ=?g6C7tmO*v?wW{ss5Nn_Xo7lPYE(>y4Ubn{X9{b>DGfQvHE4H z3-1BXFX>-PT^rEF=|4$bpB`xet@PidE~!TkAaxJcsKOi#y4JcAQJI+wy4Jck5j;f` zkrmKJ4<~~6r}ZcRI2VWAjjVS76q)O<&xnMb%Nc3%6eJtgxWQi+WTD8?D zOE1$_XdT+=!^slc48HlL&kb1@zMQNqV-|5dU8K>yi%kIvLPg zKP~BWuQNawBz@KELO>t=TS=_NS$^`?q~{b3etxF_wOM3eg+fulH90 z1N5L*PzSq`-aiHm)DIGsv97&u1q{;X9}xL4>LL1bL}KhF>YIqf*iEdhp9|iRs3W{1 zVUgB6+&eI-))MY4gaoEow6b^8z>)f1tArpvNPCLgVTKvZsGyNuROE8^>##+%%_j8 zjMK*xRq>{MItGr@XG_bbU^!m*eici&?2ynWlc(xIg7`SFOw}6_iFTQwcOBYK*o2m00Ub$X$s z$^E#pPM;%b2I$u73y5I$gKoXPO6XW6(4+b%k{$!vpqqy=mNK>#@@>>N5>>E+{YsrT z>d#ozC+Kng6G?CP8yvJr|JI_>K~L&guQT|A=bFLiW_>zQHTw#DZqZAn?yG*;L0j~s zBV|*nR~&E$@thti2=)vw`oExel!Uv4UHVu_xG&hH=MYt}js0H? z+O5x&1W#iJy{IoFs^WY5f2X{tKPvO_$Y67?enb+U?O)R0Bf9KxwEuc@pMFV_`+)ua z`}A)F@o@vL0^OFnj|OD&eY*ArMtzwNANT?2yd@nU_`3fqdc35LgWmQ(p!blp3+SMp zE(xFhepR0)so~)7lvnjxM6lNwa>C`1zJmzoLl8f#zhV&!eqH}o5WV-{sD6`3tS?9P z8mYtYj8y4bHO48vZ&9VY5>>FdLy{fd&;u-T46fFjTjU;mOmAn=W&h)P4~zVQ-_cVn z3Jrc&A8%2U;M4jti(-S%>U$)y&dClJbp9sBQbFITxTrf2m9YgwItG8NM-iJ@xh z4?2dHNcRVSqh}ITu*xAL9e&cMSu`p5hCa)pWQUvj0*f4jf7Vx7=FP)* z2OGv$l0IyAAlSi}@HXnOH{S?$HXgL-WUz~|OOUyH$oXJ5V?R-ud2GlVKu4qw@5s9w z$E6PM$h#ZwOWma*p9Xsv7o_gHAy3E^H%r}9i4B2v z38J?4H1Yy2r_n)>^wM4GM2-4Ox|%o#yd+D) z`gs|nCH+bELcoWvDxW3D7@2_IvrBy0&EW1S>y2_NGLNq9HZ$Jizb z+r`(|B?-T`L9slzeR#CVLT zih8Vxv6W~(>p1ihYihJPjgeKd{zKmiX=;oi68+xH*g>?KjT`!2NOR*eBGJ>)#x;vB zghU&E2%^4?F~Z&#wZ-0yF}h2_{);h&NW%V$F&>bF{TE|QBoaN=(kK-=YWY}Wk+cj< z9uyjDtdbO;yxNR4)=L@!x;SH#q+HO&8QUc-PaYcD%GfRGspOGB2PEx>e65Y6lHP-S zt&Mkx=9^z9j|**MT$RLAGJt**M3KcCQD?BWWz0V%Cp6x`W0+%Flazwc1dBSP%nt2f zOd!iD-YX@@yR$Ks2v>dYz%Is*lJH8SyRr2H^iswWQz}Ax8;NHHjZ9e^I@oweQeMjD z&=kY{9O^3B!jzAlMjCC1sySYv+;1ca9o^>}ZHy(t{^QDMBg>*v=P|~=h{{d8#v5zA zA_=eY#u`V3rMYNW4IgK`O$6U28^)D!#u=%58g%20i&FO@=*Amg5mj^iWI5GXdtTJx z@UX+7X-1W#cZVGh%`k2fiIJ6QjQbERMJ$=dOi36^rcq8*#jtg=jAfFrbtf6?Bw_1L zG46(AgTFSEFo6X2%_YM zXes8yRAaOtcCH{2EN?Wk*ZnSt&73|`ooZ}pQL77%$~O)OGRGG;2`Ds;7`;nz8FV3{C@Po9fDyGmM1R4Ogso4eL^ma&`&+iVHMvV*9MWjuI^ z%{E34s*7y4kuHcmQVQRGGR}{**L^C8CBn<0XB&AB*z1Y~u{GsKqGuZ&$JgoR7(E2B zAItAJ&oNxn>U47rUqP&Tey};$SUjmt_n=WJh<(3crQ?IfH9K9Y@srebs^}eCYRrGM zE?=3kOc3*26l|6myZ%+Dn`i77#Cn5no^fYWovz%lJxRnW7Ilg*H>OJ3zNi~eKS8v5 zFEEm%?sKqQU>tj@&dUPhlpxk-@z+AMsIT>L%I9Xrc~hE3|0gXKcw)|NUi3ynVn zvBQfa{TCX2p0?K|3S!@r?wuDTuL6UIvEHr#}k_HHx7#l@^64(P&@D4&3t}5rlcNST3>UhAD^*S+%OuawAw$2G9!Q89U3B#tTw63v?@u*~ z5v0nlP|9^m5y$Yu9ANWTiFp;KgH~k?K-yT?-&oq`wa?Y;Z|pn%O}g;YjkJj*h2?lU z7IhIeqLi?|@guYup#5i&*V*5z9diCsiik?2&jhW)9weKEmQSYiKdt_ze` z#A7e7LAnBOf<@1wc7HtQmIwD;-Ch22M<#c^*sPNDR1AXRD;8_W8e^g>97H~9ZY zt zlVP+D6s_Zbh~%H=wXZvlZM9x&h!iZheqZ06uGNd@Zf$LA+?{@}T-ZwYDodo-^?QAv zcWdj93Q_LeHvf%>{Sa0CmJum`ZJE2%>(}vaZEXy9r`OMQ)GFOpubstA{A&z%r`Pv( zx3)HhyVLKL3*)TcJ0e$I`oGWh_u9Yqti9(tZT+6Tw@v*TiP-*$2b?t;!x;x})dp$M zj5BFQILMYi3F(|&B#EUf>~oM}Y}ED+&MAd`M>b-9{YJ-X7N#2@YtM9lU75vt>jpL| zyulkSF@-bS)!ge0Ztp?Z*vr=BLD>BDT$4arA%zVd!^>hos%#`k8%wpbu|I!JCd*>d z)*Y*CF{Ri?C64QCIIBCZwXaLLm-esT>{HhNO^Lz=+Z=u^&@Rr$;aFwQQ;OItV$3ST z-n20sEgGHO;O*#eTssEDdFr3o<0vv|6gki+a->n@B*)MH)q^uT`fnr0ab7z|{;sUQ zJ3ELviuM#cmWxytww}VS&@r~2!ft_7*`FY7vL*k04{F(%%N->A3WMEo14_BOrxdwk z4<)TAUD(v6a27>=nvqSsB^B1i?l_5#?Q^N{N|##yIG$_g6qX{!Nv*anS8a-jMC>!` zwDlvgPrth?g)M`4RBAmNtEAZMN3#9#qo7sTCbEA4q>b$X3BTk9QfG%ia`q-jg`ESb zvQI(U*ta0zcfLT@*6aUn<2VUR@dL?OB*_*e6DYkK9b*if^`?}elroBr^XPaENpYnn z+PUsnWvfWLk)&vWI&JOs9pQ}1 zg`Kjq5$SlZ<6h~%|4sS@x~9-4W4n2SR9FN^mBmoXzIm7~YJ|HNevfM?`)e!V?VsC6 zm7`B_C1QV_g&u0l#cM0I-nA9li>o1(B~YCI!`qjDS5;kY?{n_C2@xD9AObxz4pBK+G`JIpS~PREhFFGl69)|{7&+# z=X%b3Cpb6s=j$TMZ}7z>_3n?|z!xzj%^G!iCMn-Z)G5(vco21=wU(1d;hYE^Qr9vx ze>h(vNBSndc>&r~j{`$W_?E3L{qkBzi4HW?FX&g(dVK#iL-;-Up05*6n`P@v&#zAN zzvI8jc;D+2Z%E0f-TkqL)DUniCAYMs=2s-0Sk44(D(RsiHHDHwn>H;Wm<%DrQ2<}Y zrHmdCH0^IW$EWYzEh#yE`;pNQ-)v&LmC-z;N)e;Q5jkv+q`_EpE0xtDM~fammSxP> zdBBj0GDpEMg|EjEtW$BU(Je>Nw0#9-ni!g($u#3zO95JP7ox4=xOyC&)Bg=$kNY~7 zzTt%Jb&UV5tAy!T{z1RTchz>g$T(I_Foc0*bnR<-KP@(%Qzk-(Qp$E9j=y9)87rks zj?b46oH>F{m6jifFKO1{rfbe(o*?JM zQYbcjh%ss{jju8zJ!yKT*R{HYwV|AQQh_N~L$IlTwr zr*a+y$5O}R2TLp%LXgv6ndrEJZPiP||L?dArRN2@Y$exDjYt~8>M>xN`Z>^973|wb zQga&2OOVqy1gDkuFWFzY>DK!@rto>Da3H_Omy!17w7pjt&WAuJrx{H$x`_qlAc#^3r z6(Zw=tYh&@`s4DiW9WV=w+%VAv5ry4rD;J^X^uw4RA~(EIr{n9ueQ~7kMsN0w12lz z%jnf7xfc@O%w_4xtlvptFa&=%Iy5g#XV#a}F9__g5+IfuO$PT8#eM~1k z!qK#o9$B$8)QOa>wmp8#kOfVyMq;N`rXc zge)9~)~OP7Ry#E<>-qRrvda(Q8=d`eEPKsgOFqrK_c?#vP7cLkKrZ8njU^t#z7gka*UtP=iYUubj45lPEF zL7`)*pv>`oX&Ei=h2zAoIpdigy-L4~Vb&4beJFj$R9BF5gAa3eN?tT-zQ0s8t+nnz ze7$zGhhchjNZm<}v^u?;;OKd8M03VOZ$t}nQb)u48K$7A9wzPi^}_e|4j!kZ_SNH~ z{T!X1U(;2u^8KFl%Rt?m@C|Fy{u0n-@)7xhCccL&@|r$5A#ETN801*Cq(3x2ty7{? zsQEgNT4!pGj@{FBj%M?Rxj*_5hbDGHCO5BbX;+#Fx^>PLIemdCSy;vN}R;R}wn&Zps%X%kKugTxS zSp4YstJiG3He>d)->r4Hwjy-N2Wj2%HD73F1@hl>EG6@Z)HQ91Mf3H1#8BPLg>D1d zK9P|1DzP)G3i1bNZV1eXXkLVUGdV@5`x%!hVs)o92w;u z`$vbb)1XIxf4g<)(^Q!nu12X${N|{uRiQcw|EJ*pQ}{1eQ`G7BAC3Pr@n5cHsl#fX zdK1!b;_0xO59)0AU#c!v%fVX(dYzhx|4H~S!hgBisO~bFR7`DFJw}`QIsTtAI#e&d zwfl4Ym#OXWyB#vy!M{{JV00mtE;Seb^YLGfH@g?$zg%6ba`9c*c69^7x>0rDixso* zKNtV=@n4SrE_IhGG`sPCx0+_&qaHLKR3EAb;r5{V2mar||HZ0DEjN3>>rt!m`wo6D zMriM6|MsM}l-$qpmXdoi-cxeVMO^L4{&8kp-Jku-%pH(9oY|)2o})J0p!5>xhqJSB zx&Du`Uk7dEyq;O~xwHYl#tJ4EU1T z4BTXNkkduH2KdpqJAl`kdx0;huM_tH_m0m{!Z`pMcWxTpr{0@&kgi#V+yz+x4(N)pPZe+nObua>0?>xfT3vp)5$^ zEmh!I*~P%lAz5}Ve${qs_E05vS{^k1*!HFDO6v>RcV|~y@-2vihS7e1_CEE6?3#>K zIt2PE0KQ`i8pOYwLzUcvSzyYYTLtF$cEen&=Ct=@N350YKhKU?x3?e8zK4E0tVJVU z2j|K5cYrUoe~?{j%9kHv)+I@ma}V1|hjp}lgR$2dx<&YNwhYdRS>>cJ*fKWf0adpp zfAmAd15DN9Xm5AsJgMHR$R8auzqIA$ac_m*to~-sUhBv3wN@S8@`-W4IAoCDU| zTONa?yjk*nCEudiYsoiA4~5LFKg;PtNgC!;$nU#3kE@KW9|PsCwa38;=RSwHX6L@e z7!Rv+w@$zdtBI`zxd*J*wyq*xnEST+*VZKPS8bQ&en9#I(r@F9kvqT<+-u3#l`OY0vzO(>*f#QHZ(Y@x6w@=I) z8h(2F24iSg%JZo8qwK=Gz2+<1#}2Ax$VaWWx93h674AND-k1WjHgk2}DD?dc^0LAs zFU=oP06to2_^eAW&b!FC?$Qal7a8|nT9A7vRJ7w0qY)vD&22Q~?X^RpIXj-ui!;nN z;to6f`8x{pW9H%=FOQQ}VVDQ33wP`WuHSL3c_=h>){#;BAo;~p4jR&fgnmiwB6eAC zR^O4I5#GF`Vxn+fNG}avzvI6AwWjF0=g|9ZKV_Bqe%`n8E1A1phLpy0hP0yU@FP2Z zntwfgU2jY|qXJ))l@P8sN;40o-^!A_3tykgAAKu*4Plwz1DS21A^a+FH8~G}Q&I2` z?p?_q{SfGv)I-Mn9jgnF+EJevYs34iA_b32$b+5)Mh87^Od4OD@f5?X4u6O=#LSZ} zla@dBvMUP?*x%8*}W zm~YeX2lV@#aTDIGiiJ<@teX@IXLas2j~S1D_V>myV;@m;=`rKjXXi~iW`tvcLoR;< zuBXKW<;}oj#u=AS$hAyqQA1GUV{?xgZ(o)V{--Zr0xY^bf6@?hW@rBBW5!(gJrt5! zI}|GKylT>+(Ak}PAX9aD6;R&$J7&n6UYn7lm(*~CcC9(wl-P%x60fwe?@c;rh`u@$ z+SvKupxZj{&+cFeWSY{KGdU_{ntQU}oRrB_Wtvi(ndbf3|Cp4?zL04?Ope@olgTkF z)BHI`u1t<)xrldLC=+et^vRhV%Q8(F(K5k*NtFO!NH3w@C}CVBjH`rkl`yUn##O?& zN*GrO!!J=1V+ms{VO(V#N%yJyI+u;xr}lT2PcAU-&%SH)KGf0oGRw^OD$bo;#nP)X z_kLB-kI5!p+nDeiYFLa)J#qEVv3~ecE zs*1g=)D*o`YPMhT{lYBOdBu+kp9?>I#dC!hnbJ2KDS0UL@)gqR-n?SelsGv@tz|nu zGv#q5JuzZku=Dm)M0=0KH}#|q>>^%Ij4Ns3Yt?`4+@G1D_V2tOn*6DqSrhNF!+CRO zR?!2bBUbjVTZ^Q4FXzgOre4D~e~o!KyK(ATReEK7 zY9Z5E8ouz#?@S$)wh`~Bt}?e${%Ydw4B@N9?}3w*wzB=>sfR*O?Hn}iZN~C8Vn1Wr zS~X;MeCkna^zL!fL|ZPKcGOz4d(E^DbV`7mrxm2dc7I|NAce3WOtA)6naSPHOg;uz z^kwGs7*lA`)*1rDm>7~0utL&XE7gwO$EI~yheue&FPPFhhKJZILsDY7At|vTA<-T~ zLel;VL(-SmsvCF5ibcc!$k@kQCHJAl?jKcZO5F*L1+efm=7 zVi)^tEz?#N5{q{!b0ikXs@z@B@MCjJ(?VCJLCZb0^LDF|*2P84Q6qgdGK4tkVtff} zY$%tlbO*wJA$=G5*E84GGuJy1{@C0dEU{YZoLiZy9U;+jJ3`Vjcd%r3ghb2LQuFL! zN!C)^>Jt9z8cxH#HNLkJn^}fTD+wMC|x#hltEwD1}XIK4sMwfc}D#Lt^x7a_Yes|TO;SV7f zFR90gPZFOZR;MkRH@2iYEio^*WT=uG+zXJe1to_=r*5pb4u`UUFHrIYa$c}G@<#Wo zq5WN-FL^s8+U9M@h^3c)O>*W3HhuavUz~Z2uE)r+FkZt#u%w+2x1^nClFlW4(D=?Z zFDYqtFQgZucjS*QqUb9x+bS>;F z`i-T1_1X#O(GOhPGdoUB8}X?1(6vM6#L^DHbq6>Yf7716Ha@i@?E~NrOYGzlOWIf! zTF&k{yBOE?m`A*uvx{-9RsXzJ^wQw#&{|Bnv-cY6v1`&~)^l^(p6qAl+>s`>R$NIt zj4SEIw=$evhUkG^hP32ew5E1p1pEhR(F42C6JO8Vh0*Zz$-B@uU(dXY`MrmJ4~5RZ zVNeqV>Cy+RKf<_vz%p+v$bATT91E1U z!5^~Z4e_eb=WfJYfTi&y@hRB1uV+5R(s;@e*Tdu=O1lL2&BCTCzjN*Z>RRIsXgQ7ZBCOp%X3H@T4q}I zo(c1gq`g_)QhHPs?YUv}F-tV$QMA3Y=N(mNgL71^AxiiMpkY?bdyge-L7T0g_Y})* zNSJLY%(fJk+RqG&&U}hxm`m3}x|YzjgsyAx-Q@Q/%9p0u}*bE>E}s;F(Mpn0VH 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 literal 0 HcmV?d00001 diff --git a/Include/Ninject/lib/System.Web.Routing.dll b/Include/Ninject/lib/System.Web.Routing.dll new file mode 100644 index 0000000000000000000000000000000000000000..93f0ff81bf4a2c3ed8602c12fd02add89a07493f GIT binary patch literal 68416 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 literal 0 HcmV?d00001 diff --git a/Include/Tanshu.Common.dll b/Include/Tanshu.Common.dll index 063d73d2a5d07d3353c23e20c994c24ead08672e..6a6bd1bd44bf224531c17ee09e4308e8b9bcfefc 100644 GIT binary patch delta 16263 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 delta 16100 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 ProductGroupModifiers { get; set; } public override int GetHashCode() diff --git a/Tanshu.Accounts.Contracts/Data Contracts/SaleVoucherBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/SaleVoucherBO.cs index 5bc98b6..12399ac 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/SaleVoucherBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/SaleVoucherBO.cs @@ -13,6 +13,7 @@ namespace Tanshu.Accounts.Entities public virtual Customer Customer { get; set; } public virtual SettleOption Settled { get; set; } public virtual bool Void { get; set; } + [AllowNull] public virtual string VoidReason { get; set; } public virtual bool Printed { get; set; } public virtual string KotID { get; set; } diff --git a/Tanshu.Accounts.PointOfSale/App.config b/Tanshu.Accounts.PointOfSale/App.config index 77c1433..bbd28be 100644 --- a/Tanshu.Accounts.PointOfSale/App.config +++ b/Tanshu.Accounts.PointOfSale/App.config @@ -1,7 +1,6 @@  - diff --git a/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs b/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs index 92a4e46..377d640 100644 --- a/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs +++ b/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs @@ -368,6 +368,7 @@ namespace Tanshu.Accounts.PointOfSale } } bill.Remove(new BillItemKey(billInventory.ProductID, billInventory.Printed == 0)); + bill.ReCompact(); ShowAmount(); } diff --git a/Tanshu.Accounts.PointOfSale/Program.cs b/Tanshu.Accounts.PointOfSale/Program.cs index ce46de7..c248b8b 100644 --- a/Tanshu.Accounts.PointOfSale/Program.cs +++ b/Tanshu.Accounts.PointOfSale/Program.cs @@ -5,6 +5,7 @@ using System.Windows.Forms; using System.Threading; using Tanshu.Accounts.Helpers; using Tanshu.Accounts.Repository; +using Tanshu.Accounts.Entities; namespace Tanshu.Accounts.PointOfSale { @@ -17,7 +18,6 @@ namespace Tanshu.Accounts.PointOfSale { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - //log.Warn("Application Started"); Application.Run(new MainForm()); //log.Warn("Application Closed"); diff --git a/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.Designer.cs index 211b40d..d3c48f7 100644 --- a/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.Designer.cs +++ b/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.Designer.cs @@ -65,12 +65,16 @@ this.txtAdvanceReceived = new System.Windows.Forms.TextBox(); this.txtReceipts = new System.Windows.Forms.TextBox(); this.txtOpening = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.NC = new System.Windows.Forms.Label(); + this.txtBillToCompany = new System.Windows.Forms.TextBox(); + this.txtNC = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // label18 // this.label18.AutoSize = true; - this.label18.Location = new System.Drawing.Point(12, 380); + this.label18.Location = new System.Drawing.Point(12, 432); this.label18.Name = "label18"; this.label18.Size = new System.Drawing.Size(68, 13); this.label18.TabIndex = 71; @@ -78,9 +82,10 @@ // // txtClosingCash // - this.txtClosingCash.Location = new System.Drawing.Point(99, 377); + this.txtClosingCash.Location = new System.Drawing.Point(99, 429); this.txtClosingCash.Name = "txtClosingCash"; this.txtClosingCash.ReadOnly = true; + this.txtClosingCash.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtClosingCash.Size = new System.Drawing.Size(200, 20); this.txtClosingCash.TabIndex = 55; // @@ -103,7 +108,7 @@ // label17 // this.label17.AutoSize = true; - this.label17.Location = new System.Drawing.Point(12, 276); + this.label17.Location = new System.Drawing.Point(12, 328); this.label17.Name = "label17"; this.label17.Size = new System.Drawing.Size(85, 13); this.label17.TabIndex = 67; @@ -112,7 +117,7 @@ // label16 // this.label16.AutoSize = true; - this.label16.Location = new System.Drawing.Point(12, 302); + this.label16.Location = new System.Drawing.Point(12, 354); this.label16.Name = "label16"; this.label16.Size = new System.Drawing.Size(81, 13); this.label16.TabIndex = 68; @@ -121,7 +126,7 @@ // label15 // this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(12, 354); + this.label15.Location = new System.Drawing.Point(12, 406); this.label15.Name = "label15"; this.label15.Size = new System.Drawing.Size(53, 13); this.label15.TabIndex = 70; @@ -130,7 +135,7 @@ // label14 // this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(12, 406); + this.label14.Location = new System.Drawing.Point(12, 458); this.label14.Name = "label14"; this.label14.Size = new System.Drawing.Size(82, 13); this.label14.TabIndex = 72; @@ -139,7 +144,7 @@ // label13 // this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(12, 432); + this.label13.Location = new System.Drawing.Point(12, 484); this.label13.Name = "label13"; this.label13.Size = new System.Drawing.Size(37, 13); this.label13.TabIndex = 73; @@ -148,7 +153,7 @@ // label12 // this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(12, 328); + this.label12.Location = new System.Drawing.Point(12, 380); this.label12.Name = "label12"; this.label12.Size = new System.Drawing.Size(62, 13); this.label12.TabIndex = 69; @@ -156,7 +161,7 @@ // // btnCalculate // - this.btnCalculate.Location = new System.Drawing.Point(12, 455); + this.btnCalculate.Location = new System.Drawing.Point(12, 507); this.btnCalculate.Name = "btnCalculate"; this.btnCalculate.Size = new System.Drawing.Size(287, 23); this.btnCalculate.TabIndex = 39; @@ -166,7 +171,7 @@ // // btnPrint // - this.btnPrint.Location = new System.Drawing.Point(12, 484); + this.btnPrint.Location = new System.Drawing.Point(12, 536); this.btnPrint.Name = "btnPrint"; this.btnPrint.Size = new System.Drawing.Size(287, 23); this.btnPrint.TabIndex = 40; @@ -176,7 +181,7 @@ // // txtStatus // - this.txtStatus.Location = new System.Drawing.Point(99, 429); + this.txtStatus.Location = new System.Drawing.Point(99, 481); this.txtStatus.Name = "txtStatus"; this.txtStatus.ReadOnly = true; this.txtStatus.Size = new System.Drawing.Size(200, 20); @@ -184,25 +189,28 @@ // // txtSales // - this.txtSales.Location = new System.Drawing.Point(99, 351); + this.txtSales.Location = new System.Drawing.Point(99, 403); this.txtSales.Name = "txtSales"; this.txtSales.ReadOnly = true; + this.txtSales.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtSales.Size = new System.Drawing.Size(200, 20); this.txtSales.TabIndex = 54; this.txtSales.TextChanged += new System.EventHandler(this.txtSales_TextChanged); // // txtDeposited // - this.txtDeposited.Location = new System.Drawing.Point(99, 403); + this.txtDeposited.Location = new System.Drawing.Point(99, 455); this.txtDeposited.Name = "txtDeposited"; + this.txtDeposited.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtDeposited.Size = new System.Drawing.Size(200, 20); this.txtDeposited.TabIndex = 38; // // txtPending // - this.txtPending.Location = new System.Drawing.Point(99, 325); + this.txtPending.Location = new System.Drawing.Point(99, 377); this.txtPending.Name = "txtPending"; this.txtPending.ReadOnly = true; + this.txtPending.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtPending.Size = new System.Drawing.Size(200, 20); this.txtPending.TabIndex = 53; // @@ -237,7 +245,7 @@ // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(12, 250); + this.label8.Location = new System.Drawing.Point(12, 302); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(81, 13); this.label8.TabIndex = 66; @@ -246,7 +254,7 @@ // label7 // this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(12, 224); + this.label7.Location = new System.Drawing.Point(12, 276); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(82, 13); this.label7.TabIndex = 65; @@ -255,7 +263,7 @@ // label6 // this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(12, 198); + this.label6.Location = new System.Drawing.Point(12, 250); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(53, 13); this.label6.TabIndex = 64; @@ -264,7 +272,7 @@ // label5 // this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(12, 172); + this.label5.Location = new System.Drawing.Point(12, 224); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(73, 13); this.label5.TabIndex = 63; @@ -308,17 +316,19 @@ // // txtPayments // - this.txtPayments.Location = new System.Drawing.Point(99, 195); + this.txtPayments.Location = new System.Drawing.Point(99, 247); this.txtPayments.Name = "txtPayments"; this.txtPayments.ReadOnly = true; + this.txtPayments.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtPayments.Size = new System.Drawing.Size(200, 20); this.txtPayments.TabIndex = 48; // // txtAdvanceAdjusted // - this.txtAdvanceAdjusted.Location = new System.Drawing.Point(99, 169); + this.txtAdvanceAdjusted.Location = new System.Drawing.Point(99, 221); this.txtAdvanceAdjusted.Name = "txtAdvanceAdjusted"; this.txtAdvanceAdjusted.ReadOnly = true; + this.txtAdvanceAdjusted.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtAdvanceAdjusted.Size = new System.Drawing.Size(200, 20); this.txtAdvanceAdjusted.TabIndex = 47; // @@ -327,38 +337,43 @@ this.txtCCReceipts.Location = new System.Drawing.Point(99, 143); this.txtCCReceipts.Name = "txtCCReceipts"; this.txtCCReceipts.ReadOnly = true; + this.txtCCReceipts.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtCCReceipts.Size = new System.Drawing.Size(200, 20); this.txtCCReceipts.TabIndex = 46; // // txtAdditionalVoids // - this.txtAdditionalVoids.Location = new System.Drawing.Point(99, 221); + this.txtAdditionalVoids.Location = new System.Drawing.Point(99, 273); this.txtAdditionalVoids.Name = "txtAdditionalVoids"; this.txtAdditionalVoids.ReadOnly = true; + this.txtAdditionalVoids.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtAdditionalVoids.Size = new System.Drawing.Size(200, 20); this.txtAdditionalVoids.TabIndex = 49; // // txtVoidsInSystem // - this.txtVoidsInSystem.Location = new System.Drawing.Point(99, 247); + this.txtVoidsInSystem.Location = new System.Drawing.Point(99, 299); this.txtVoidsInSystem.Name = "txtVoidsInSystem"; this.txtVoidsInSystem.ReadOnly = true; + this.txtVoidsInSystem.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtVoidsInSystem.Size = new System.Drawing.Size(200, 20); this.txtVoidsInSystem.TabIndex = 50; // // txtDiscounts // - this.txtDiscounts.Location = new System.Drawing.Point(99, 273); + this.txtDiscounts.Location = new System.Drawing.Point(99, 325); this.txtDiscounts.Name = "txtDiscounts"; this.txtDiscounts.ReadOnly = true; + this.txtDiscounts.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtDiscounts.Size = new System.Drawing.Size(200, 20); this.txtDiscounts.TabIndex = 51; // // txtRates // - this.txtRates.Location = new System.Drawing.Point(99, 299); + this.txtRates.Location = new System.Drawing.Point(99, 351); this.txtRates.Name = "txtRates"; this.txtRates.ReadOnly = true; + this.txtRates.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtRates.Size = new System.Drawing.Size(200, 20); this.txtRates.TabIndex = 52; // @@ -367,6 +382,7 @@ this.txtAdvanceReceived.Location = new System.Drawing.Point(99, 117); this.txtAdvanceReceived.Name = "txtAdvanceReceived"; this.txtAdvanceReceived.ReadOnly = true; + this.txtAdvanceReceived.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtAdvanceReceived.Size = new System.Drawing.Size(200, 20); this.txtAdvanceReceived.TabIndex = 45; // @@ -375,6 +391,7 @@ this.txtReceipts.Location = new System.Drawing.Point(99, 91); this.txtReceipts.Name = "txtReceipts"; this.txtReceipts.ReadOnly = true; + this.txtReceipts.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtReceipts.Size = new System.Drawing.Size(200, 20); this.txtReceipts.TabIndex = 44; // @@ -383,14 +400,55 @@ this.txtOpening.Location = new System.Drawing.Point(99, 65); this.txtOpening.Name = "txtOpening"; this.txtOpening.ReadOnly = true; + this.txtOpening.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.txtOpening.Size = new System.Drawing.Size(200, 20); this.txtOpening.TabIndex = 43; // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(12, 198); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(79, 13); + this.label11.TabIndex = 77; + this.label11.Text = "Bill to Company"; + // + // NC + // + this.NC.AutoSize = true; + this.NC.Location = new System.Drawing.Point(12, 172); + this.NC.Name = "NC"; + this.NC.Size = new System.Drawing.Size(58, 13); + this.NC.TabIndex = 76; + this.NC.Text = "No Charge"; + // + // txtBillToCompany + // + this.txtBillToCompany.Location = new System.Drawing.Point(99, 195); + this.txtBillToCompany.Name = "txtBillToCompany"; + this.txtBillToCompany.ReadOnly = true; + this.txtBillToCompany.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.txtBillToCompany.Size = new System.Drawing.Size(200, 20); + this.txtBillToCompany.TabIndex = 75; + // + // txtNC + // + this.txtNC.Location = new System.Drawing.Point(99, 169); + this.txtNC.Name = "txtNC"; + this.txtNC.ReadOnly = true; + this.txtNC.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.txtNC.Size = new System.Drawing.Size(200, 20); + this.txtNC.TabIndex = 74; + // // Cashier_Checkout_Form // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(311, 519); + this.ClientSize = new System.Drawing.Size(311, 571); + this.Controls.Add(this.label11); + this.Controls.Add(this.NC); + this.Controls.Add(this.txtBillToCompany); + this.Controls.Add(this.txtNC); this.Controls.Add(this.label18); this.Controls.Add(this.txtClosingCash); this.Controls.Add(this.dtpFinish); @@ -477,5 +535,9 @@ private System.Windows.Forms.TextBox txtAdvanceReceived; private System.Windows.Forms.TextBox txtReceipts; private System.Windows.Forms.TextBox txtOpening; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label NC; + private System.Windows.Forms.TextBox txtBillToCompany; + private System.Windows.Forms.TextBox txtNC; } } \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.cs b/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.cs index bc84994..5164b22 100644 --- a/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.cs +++ b/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.cs @@ -47,17 +47,20 @@ namespace Tanshu.Accounts.PointOfSale dtpFinish.Value = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 23:59:59", dtpFinish.Value)); coProxy = new CheckoutBI((int)cmbCashier.SelectedValue, dtpStart.Value, dtpFinish.Value); - txtOpening.Text = coProxy.Opening.ToString(); - txtReceipts.Text = coProxy.Receipts.ToString(); - txtAdvanceReceived.Text = coProxy.AdvanceReceipts.ToString(); - txtCCReceipts.Text = coProxy.CCReceipts.ToString(); - txtAdvanceAdjusted.Text = coProxy.AdvanceAdjusted.ToString(); - txtPayments.Text = coProxy.CashPayments.ToString(); - txtAdditionalVoids.Text = coProxy.AdditionalVoids.ToString(); - txtVoidsInSystem.Text = coProxy.VoidsInSystem.ToString(); - txtPending.Text = coProxy.PendingBills.ToString(); - txtSales.Text = coProxy.NetSales.ToString(); - txtClosingCash.Text = coProxy.ClosingBalance.ToString(); + txtOpening.Text = string.Format("{0:#,##0.00}", coProxy); + txtReceipts.Text = string.Format("{0:#,##0.00}", coProxy.Receipts); + txtAdvanceReceived.Text = string.Format("{0:#,##0.00}", coProxy.AdvanceReceipts); + txtCCReceipts.Text = string.Format("{0:#,##0.00}", coProxy.CCReceipts); + txtNC.Text = string.Format("{0:#,##0.00}", coProxy.NCReceipts); + txtBillToCompany.Text = string.Format("{0:#,##0.00}", coProxy.BTCReceipts); + txtAdvanceAdjusted.Text = string.Format("{0:#,##0.00}", coProxy.AdvanceAdjusted); + txtPayments.Text = string.Format("{0:#,##0.00}", coProxy.CashPayments); + txtAdditionalVoids.Text = string.Format("{0:#,##0.00}", coProxy.AdditionalVoids); + txtVoidsInSystem.Text = string.Format("{0:#,##0.00}", coProxy.VoidsInSystem); + txtPending.Text = string.Format("{0:#,##0.00}", coProxy.PendingBills); + txtSales.Text = string.Format("{0:#,##0.00}", coProxy.NetSales); + txtClosingCash.Text = string.Format("{0:#,##0.00}", coProxy.ClosingBalance + ); txtStatus.Text = coProxy.Status; } diff --git a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs index 2c271b3..bb742ec 100644 --- a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs +++ b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs @@ -170,7 +170,7 @@ namespace Tanshu.Accounts.PointOfSale } else { - ControlFactory.GenerateTables(ref flpMain, ref buttonHeads, new Point(75, 75), 0, new FoodTableBI().GetFoodTables(), new ButtonClickDelegate(tableButton_Click)); + ControlFactory.GenerateTables(ref flpMain, ref buttonHeads, new Point(75, 75), 0, new FoodTableBI().List(), new ButtonClickDelegate(tableButton_Click)); } } @@ -223,7 +223,7 @@ namespace Tanshu.Accounts.PointOfSale int start = item.FoodTableID; if (start < 0) start = 0; - var list = new FoodTableBI().GetFoodTables(); + var list = new FoodTableBI().List(); ControlFactory.GenerateTables(ref flpMain, ref buttonHeads, new Point(75, 75), start, list, new ButtonClickDelegate(tableButton_Click)); } else diff --git a/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj b/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj index 26f0bf7..ee2fcf0 100644 --- a/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj +++ b/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj @@ -55,6 +55,10 @@ False ..\Include\Fluent\Castle.Core.dll + + False + ..\Include\Windsor\Castle.Windsor.dll + False ..\Include\Fluent\FluentNHibernate.dll @@ -101,7 +105,6 @@ False ..\Include\Tanshu.Common.dll - False ..\Include\Tanshu.Data.dll diff --git a/Tanshu.Accounts.Print/Thermal.cs b/Tanshu.Accounts.Print/Thermal.cs index 031a94b..ad12b36 100644 --- a/Tanshu.Accounts.Print/Thermal.cs +++ b/Tanshu.Accounts.Print/Thermal.cs @@ -162,6 +162,10 @@ namespace Tanshu.Accounts.Print private static bool PrintRAW(PrintLocation printer, string Text, string DocumentName) { +#if (DEBUG) + System.Windows.Forms.MessageBox.Show(Text); + return true; +#else try { Text += printer.CutCode; @@ -176,6 +180,7 @@ namespace Tanshu.Accounts.Print throw ex; } return true; +#endif } #region Print Cash Total @@ -278,7 +283,7 @@ namespace Tanshu.Accounts.Print string BillText; try { - BillText = FormatText(string.Format("{0} Checkout By {1}", details.Cashier, details.Manager), 42, false, Align.Centre); + BillText = FormatText(string.Format("{0} Checkout By {1}", details.Cashier.Name, details.Manager), 42, false, Align.Centre); BillText += string.Format("{0:dd-MMM-yy} To {1:dd-MMM-yy} @ {2:dd-MMM-yyyy HH:mm}", details.StartDate, details.FinishDate, DateTime.Now); BillText += DrawLine; BillText += string.Format("\n\rOpening : {0,26:#,##0.00}", details.Opening); diff --git a/Tanshu.Accounts.SqlDAO/BusinessLayer/AdvanceBI.cs b/Tanshu.Accounts.SqlDAO/BusinessLayer/AdvanceBI.cs index a1651be..9d0acef 100644 --- a/Tanshu.Accounts.SqlDAO/BusinessLayer/AdvanceBI.cs +++ b/Tanshu.Accounts.SqlDAO/BusinessLayer/AdvanceBI.cs @@ -7,6 +7,7 @@ using Tanshu.Data.DAO; using Tanshu.Accounts.Entities; using Tanshu.Accounts.SqlDAO; using Tanshu.Accounts.Entities.Auth; +using NHibernate; namespace Tanshu.Accounts.Repository { @@ -29,14 +30,20 @@ namespace Tanshu.Accounts.Repository finishDate = finishDate.Date.AddHours(23).AddMinutes(59).AddSeconds(59); using (var session = SessionManager.Session) { - var ab = from ad in session.QueryOver() - where ad.DateIn >= startDate && ad.DateIn <= finishDate - select ad; + var query = from ad in session.QueryOver() + where ad.DateIn >= startDate && ad.DateIn <= finishDate + select ad; if (!all) - ab = from a in ab - where a.CashierOut == null - select a; - return ab.List(); + query = from a in query + where a.CashierOut == null + select a; + var list = query.List(); + foreach (var item in list) + { + NHibernateUtil.Initialize(item.CashierIn); + NHibernateUtil.Initialize(item.CashierOut); + } + return list; } } public void Adjust(int advanceID, int userID) diff --git a/Tanshu.Accounts.SqlDAO/BusinessLayer/CheckoutBI.cs b/Tanshu.Accounts.SqlDAO/BusinessLayer/CheckoutBI.cs index 6599e34..4dd00e1 100644 --- a/Tanshu.Accounts.SqlDAO/BusinessLayer/CheckoutBI.cs +++ b/Tanshu.Accounts.SqlDAO/BusinessLayer/CheckoutBI.cs @@ -1,12 +1,14 @@ using System; using System.Collections.Generic; -//using System.Linq; +using System.Linq; using System.Text; using System.Threading; using System.Data.SqlClient; using Tanshu.Data.DAO; using Tanshu.Accounts.SqlDAO; using Tanshu.Accounts.Entities; +using Tanshu.Accounts.Entities.Auth; +using NHibernate.Criterion; namespace Tanshu.Accounts.Repository { @@ -17,6 +19,8 @@ namespace Tanshu.Accounts.Repository public decimal Receipts { get; private set; } public decimal AdvanceReceipts { get; private set; } public decimal CCReceipts { get; private set; } + public decimal NCReceipts { get; private set; } + public decimal BTCReceipts { get; private set; } public decimal AdvanceAdjusted { get; private set; } public decimal CashPayments { get; private set; } public decimal AdditionalVoids { get; private set; } @@ -29,36 +33,21 @@ namespace Tanshu.Accounts.Repository public decimal Excess { get; private set; } // public string Status { get; private set; } // public string Cashiers { get; private set; } // - public int CashierID { get; private set; } // - public string Cashier { get; private set; } // + public User Cashier { get; private set; } public decimal OldPending { get; private set; } public decimal OldReceipts { get; private set; } public decimal OldVoided { get; private set; } - public DateTime StartDate { get; private set; } // - public DateTime FinishDate { get; private set; } // + public DateTime StartDate { get; private set; } + public DateTime FinishDate { get; private set; } - private string pendingString; - public string PendingString - { - get { return pendingString; } - } - private string cCString; - public string CCString - { - get { return cCString; } - } - private string voidsString; - public string VoidsString - { - get { return voidsString; } - } - private string discountString; - public string DiscountString - { - get { return discountString; } - } + public string PendingString { get; private set; } + public string CCString { get; private set; } + public string NCString { get; private set; } + public string BTCString { get; private set; } + public string VoidsString { get; private set; } + public string DiscountString { get; private set; } //public string PendingString { get; private set; } // //public string CCString { get; private set; } // @@ -77,21 +66,29 @@ namespace Tanshu.Accounts.Repository using (var session = SessionManager.Session) { //Actual Closing - this.CashierID = cashier; + this.Cashier = UserBI.GetUser(cashier); this.StartDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 00:00:00", startDate)); this.FinishDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 23:59:59", finishDate)); - Cashier = UserBI.GetUser(CashierID).Name; - //PendingBills = dao.GetPending(ref pendingString); - // CCReceipts = dao.GetCreditCard(ref cCString); - // VoidsInSystem = dao.GetVoids(ref voidsString); + string info; + PendingBills = GetPending(out info); + PendingString = info; + CCReceipts = GetCreditCard(out info); + CCString = info; + NCReceipts = GetNoCharge(out info); + NCString = info; + BTCReceipts = GetBillToCompany(out info); + BTCString = info; + VoidsInSystem = GetVoids(out info); + VoidsString = info; // Opening = dao.GetOpenings(); - // Receipts = dao.GetReceipts(); + // Receipts = GetReceipts(); // CashPayments = dao.GetPayments(); // AdditionalVoids = dao.GetAdditionalVoids(); // RetainedOvernight = dao.GetRetainedOvernight(); - // AdvanceReceipts = dao.GetAdvancesReceived(); - // AdvanceAdjusted = dao.GetAdvancesAdjusted(); + + AdvanceReceipts = GetAdvancesReceived(); + AdvanceAdjusted = GetAdvancesAdjusted(); // PaymentString = dao.GetPaymentString(); // OldPending = dao.GetOldPending(); @@ -99,17 +96,42 @@ namespace Tanshu.Accounts.Repository // OldVoided = dao.GetOldVoided(); - // Cashiers = dao.GetActiveCashiers(); - // NetSales = dao.GetNetSales(); - // dao.GetDiscountsBills(ref discountString); - // ClosingBalance = Opening - // + Receipts - // + AdvanceReceipts - // - CCReceipts - // - AdvanceAdjusted - // - CashPayments - // - AdditionalVoids - // + NetSales; + //Cashiers = GetActiveCashiers(); + NetSales = GetNetSales(); + GetDiscountBills(.1M, out info); + DiscountString = info; + ClosingBalance = Opening + + Receipts + + AdvanceReceipts + - CCReceipts + - AdvanceAdjusted + - CashPayments + - AdditionalVoids + + NetSales; + } + } + + private decimal GetAdvancesAdjusted() + { + using (var session = SessionManager.Session) + { + var amt = session.QueryOver() + .Where(i => i.DateOut >= StartDate && i.DateOut <= FinishDate && i.CashierOut == Cashier) + .SelectList(k => k.SelectSum(j => j.Amount)) + .SingleOrDefault(); + return amt; + } + } + + private decimal GetAdvancesReceived() + { + using (var session = SessionManager.Session) + { + var amt = session.QueryOver() + .Where(i => i.DateIn >= StartDate && i.DateIn <= FinishDate && i.CashierIn == Cashier) + .SelectList(k => k.SelectSum(j => j.Amount)) + .SingleOrDefault(); + return amt; } } public void Calculate(decimal cashDeposited, decimal retainedOvernight) @@ -119,49 +141,155 @@ namespace Tanshu.Accounts.Repository Excess = CashDeposited - ClosingBalance; Status = string.Format("{0:Extra Cash Rs #,##0.00; Cash Short Rs #,##0.00;Cash Perfect}", Excess); } -// public decimal GetPending(ref string info) -// { -// using (var session = SessionManager.Session) -// { -// var a = from i in session.QueryOver() -// where i.LastEditDate >= StartDate && i.LastEditDate <= FinishDate && i.User.UserID == userid -// } -// decimal amount = 0; -// info = ""; -// string query = @" -//SELECT t.Date, s.BillID, c.Name, SUM(i.Amount) AS Amount, SUM(Quantity * Rate * Discount) AS Discount FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID -//INNER JOIN Inventory i ON t.VoucherID = i.VoucherID -//INNER JOIN Customers c ON s.CustomerID = c.CustomerID -//WHERE t.Type = 'S' -//AND t.LastEditDate BETWEEN @StartDate AND @FinishDate AND t.UserID = @UserID -//AND s.Void = 0 AND s.Paid = 0 -//GROUP BY t.Date, c.Name, s.BillID -//"; -// using (SqlCommand cmd = new SqlCommand(query)) -// { -// cmd.Parameters.AddWithValue("@StartDate", startDate); -// cmd.Parameters.AddWithValue("@FinishDate", finishDate); -// cmd.Parameters.AddWithValue("@UserID", userID); + private decimal GetPending(out string info) + { + using (var session = SessionManager.Session) + { + decimal amount; + info = "\n\r--- Pending Bills ------------------------"; + var list = (from i in session.QueryOver() + where i.LastEditDate >= StartDate && + i.LastEditDate <= FinishDate && + i.User == Cashier && + i.Void == false && + i.Settled == SettleOptionFactory.OUnsettled + select i).List(); + GetInfo(list, out amount, ref info); + return amount; + } + } + private decimal GetNoCharge(out string info) + { + using (var session = SessionManager.Session) + { + decimal amount; + info = "\n\r--- No Charge ----------------------------"; + var list = (from i in session.QueryOver() + where i.LastEditDate >= StartDate && + i.LastEditDate <= FinishDate && + i.User == Cashier && + i.Void == false && + i.Settled == SettleOptionFactory.ONoCharge + select i).List(); + GetInfo(list, out amount, ref info); + return amount; + } + } + private decimal GetBillToCompany(out string info) + { + using (var session = SessionManager.Session) + { + decimal amount; + info = "\n\r--- Bill To Company ----------------------"; + var list = (from i in session.QueryOver() + where i.LastEditDate >= StartDate && + i.LastEditDate <= FinishDate && + i.User == Cashier && + i.Void == false && + i.Settled == SettleOptionFactory.OBillToCompany + select i).List(); + GetInfo(list, out amount, ref info); + return amount; + } + } + private decimal GetCreditCard(out string info) + { + using (var session = SessionManager.Session) + { + decimal amount; + info = "\n\r--- Credit Card Bills --------------------"; + var list = (from i in session.QueryOver() + where i.LastEditDate >= StartDate && + i.LastEditDate <= FinishDate && + i.User == Cashier && + i.Void == false && + i.Settled == SettleOptionFactory.OCreditCard + select i).List(); + GetInfo(list, out amount, ref info); + return amount; + } + } + private decimal GetVoids(out string info) + { + using (var session = SessionManager.Session) + { + decimal amount; + info = "\n\r--- Void Bills ---------------------------"; + var list = (from i in session.QueryOver() + where i.LastEditDate >= StartDate && + i.LastEditDate <= FinishDate && + i.User == Cashier && + i.Void == true + select i).List(); + GetInfo(list, out amount, ref info); + return amount; + } + } + private decimal GetDiscountBills(decimal disount, out string info) + { + using (var session = SessionManager.Session) + { + decimal amount; + info = "\n\r--- High Discount Bills ------------------"; + string query = @" +select v from SaleVoucher v +inner join v.Inventories i +where v.Date >= :startDate and v.Date <= :finishDate and v.User = :cashierID and v.Void = false and v.Settled != :unSettled and v.Settled != :noCharge +and i.Discount >= :discount"; + var list = session.CreateQuery(query) + .SetParameter("startDate", StartDate) + .SetParameter("finishDate", FinishDate) + .SetParameter("cashierID", Cashier.UserID) + .SetParameter("unSettled", SettleOptionFactory.Unsettled) + .SetParameter("noCharge", SettleOptionFactory.NoCharge) + .SetParameter("discount", disount) + .List(); -// using (IDataReader dr = connection.ExecuteReader(cmd)) -// { -// if (dr.Read()) -// { -// info = "\n\r--- Pending Bills ------------------------"; + GetInfo(list, out amount, ref info); + return amount; + } + } -// do -// { -// amount += dr.GetDecimal(3); -// info += string.Format("\n\r{0:dd-MMM-yyyy HH:mm:ss} {1} {2}", dr.GetDateTime(0), dr.GetString(1), dr.GetString(2)); -// info += string.Format("\n\rAmount: {0:#0.00} :: Discount: {1:#0.00}", dr.GetDecimal(3), dr.GetDecimal(4)); -// info += "\n\r------------------------------------------"; -// } while (dr.Read()); -// } -// } -// } -// return amount; -// } + private decimal GetNetSales() + { + using (var session = SessionManager.Session) + { + decimal amount = 0; + string query = @" +select sum(i.Amount) from SaleVoucher v +inner join v.Inventories i +where v.Date >= :startDate and v.Date <= :finishDate and v.User = :cashierID and v.Void = false and v.Settled != :unSettled and v.Settled != :noCharge"; + amount = session.CreateQuery(query) + .SetParameter("startDate", StartDate) + .SetParameter("finishDate", FinishDate) + .SetParameter("cashierID", Cashier.UserID) + .SetParameter("unSettled", SettleOptionFactory.Unsettled) + .SetParameter("noCharge", SettleOptionFactory.NoCharge) + .UniqueResult(); + return amount; + } + } + + private void GetInfo(IList list, out decimal amount, ref string info) + { + amount = 0; + if (list.Count == 0) + { + info = string.Empty; + return; + } + + foreach (var item in list) + { + decimal amt, disc; + amt = item.Inventories.Sum(x => x.Amount); + disc = item.Inventories.Sum(x => x.Quantity * x.Rate * (1 + x.Tax) * (1 + x.ServiceCharge) * x.Discount); + info += string.Format("\n\r{0:dd-MMM-yyyy HH:mm:ss} {1} {2}", item.Date, item.BillID, item.Customer.Name); + info += string.Format("\n\rAmount: {0:#0.00} :: Discount: {1:#0.00}", amt, disc); + info += "\n\r------------------------------------------"; + amount += amt; + } + } } - } diff --git a/Tanshu.Accounts.SqlDAO/BusinessLayer/FoodTableBI.cs b/Tanshu.Accounts.SqlDAO/BusinessLayer/FoodTableBI.cs index 4688497..4781d0c 100644 --- a/Tanshu.Accounts.SqlDAO/BusinessLayer/FoodTableBI.cs +++ b/Tanshu.Accounts.SqlDAO/BusinessLayer/FoodTableBI.cs @@ -6,45 +6,41 @@ using System.Data.SqlClient; using Tanshu.Data.DAO; using Tanshu.Accounts.Entities; using Tanshu.Accounts.SqlDAO; +using NHibernate; namespace Tanshu.Accounts.Repository { public class FoodTableBI { + ISession session; + public FoodTableBI() + { + this.session = SessionManager.Session; + } + public void Insert(FoodTable foodTable) { - using (var session = SessionManager.Session) - { - session.Save(foodTable); - } + session.Save(foodTable); } public void Update(FoodTable foodTable) { - using (var session = SessionManager.Session) - { - session.Update(foodTable); - } + session.Update(foodTable); } public void Delete(int foodTableID) { - using (var session = SessionManager.Session) - { - session.Delete(new FoodTable() { FoodTableID = foodTableID }); - } + session.Delete(new FoodTable() { FoodTableID = foodTableID }); } - public FoodTable GetFoodTable(int foodTableID) + public FoodTable Get(int foodTableID) { - using (var session = SessionManager.Session) - { - return session.Get(foodTableID); - } + return session.Get(foodTableID); } - public IList GetFoodTables() + public IList List() { - using (var session = SessionManager.Session) - { - return session.CreateCriteria().List(); - } + return session.CreateCriteria().List(); + } + public void Dispose() + { + session.Dispose(); } } } diff --git a/Tanshu.Accounts.SqlDAO/Fluent/AllowNullConvention.cs b/Tanshu.Accounts.SqlDAO/Fluent/AllowNullConvention.cs new file mode 100644 index 0000000..32dbcbc --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/Fluent/AllowNullConvention.cs @@ -0,0 +1,33 @@ +//using System; +//using FluentNHibernate.Conventions; +//using System.Reflection; +//using FluentNHibernate; +//using FluentNHibernate.Conventions.Instances; +//using FluentNHibernate.Conventions.Inspections; +//using FluentNHibernate.Conventions.AcceptanceCriteria; +//using Tanshu.Accounts.Contracts; + +//namespace Tanshu.Accounts.Conventions +//{ +// public class AllowNullConvention : IPropertyConvention, IPropertyConventionAcceptance +// { +// public void Accept(IAcceptanceCriteria criteria) +// { +// criteria.Expect( +// x => !this.IsNullableProperty(x) +// || x.Property.MemberInfo.GetCustomAttributes(typeof(AllowNullAttribute), true).Length > 0); +// } + +// public void Apply(IPropertyInstance instance) +// { +// instance.Nullable(); +// } + +// private bool IsNullableProperty(IExposedThroughPropertyInspector target) +// { +// var type = target.Property.PropertyType; + +// return type.Equals(typeof(string)) || (type.IsGenericType && type.GetGenericTypeDefinition().Equals(typeof(Nullable<>))); +// } +// } +//} diff --git a/Tanshu.Accounts.SqlDAO/Fluent/Fixtures.cs b/Tanshu.Accounts.SqlDAO/Fluent/Fixtures.cs index fd30972..31e7b88 100644 --- a/Tanshu.Accounts.SqlDAO/Fluent/Fixtures.cs +++ b/Tanshu.Accounts.SqlDAO/Fluent/Fixtures.cs @@ -360,66 +360,66 @@ namespace Tanshu.Accounts.Repository { using (var session = SessionManager.StatelessSession) { - session.Insert(new FoodTable() { Name = "1" }); - session.Insert(new FoodTable() { Name = "2" }); - session.Insert(new FoodTable() { Name = "3" }); - session.Insert(new FoodTable() { Name = "4" }); - session.Insert(new FoodTable() { Name = "5" }); - session.Insert(new FoodTable() { Name = "6" }); - session.Insert(new FoodTable() { Name = "7" }); - session.Insert(new FoodTable() { Name = "8" }); - session.Insert(new FoodTable() { Name = "9" }); - session.Insert(new FoodTable() { Name = "10" }); - session.Insert(new FoodTable() { Name = "11" }); - session.Insert(new FoodTable() { Name = "12" }); - session.Insert(new FoodTable() { Name = "13" }); - session.Insert(new FoodTable() { Name = "14" }); - session.Insert(new FoodTable() { Name = "15" }); - session.Insert(new FoodTable() { Name = "16" }); - session.Insert(new FoodTable() { Name = "17" }); - session.Insert(new FoodTable() { Name = "18" }); - session.Insert(new FoodTable() { Name = "19" }); - session.Insert(new FoodTable() { Name = "20" }); - session.Insert(new FoodTable() { Name = "21" }); - session.Insert(new FoodTable() { Name = "22" }); - session.Insert(new FoodTable() { Name = "23" }); - session.Insert(new FoodTable() { Name = "24" }); - session.Insert(new FoodTable() { Name = "25" }); - session.Insert(new FoodTable() { Name = "26" }); - session.Insert(new FoodTable() { Name = "27" }); - session.Insert(new FoodTable() { Name = "28" }); - session.Insert(new FoodTable() { Name = "29" }); - session.Insert(new FoodTable() { Name = "30" }); - session.Insert(new FoodTable() { Name = "31" }); - session.Insert(new FoodTable() { Name = "32" }); - session.Insert(new FoodTable() { Name = "33" }); - session.Insert(new FoodTable() { Name = "34" }); - session.Insert(new FoodTable() { Name = "35" }); - session.Insert(new FoodTable() { Name = "36" }); - session.Insert(new FoodTable() { Name = "37" }); - session.Insert(new FoodTable() { Name = "38" }); - session.Insert(new FoodTable() { Name = "39" }); - session.Insert(new FoodTable() { Name = "40" }); - session.Insert(new FoodTable() { Name = "41" }); - session.Insert(new FoodTable() { Name = "42" }); - session.Insert(new FoodTable() { Name = "43" }); - session.Insert(new FoodTable() { Name = "44" }); - session.Insert(new FoodTable() { Name = "45" }); - session.Insert(new FoodTable() { Name = "46" }); - session.Insert(new FoodTable() { Name = "47" }); - session.Insert(new FoodTable() { Name = "48" }); - session.Insert(new FoodTable() { Name = "49" }); - session.Insert(new FoodTable() { Name = "50" }); - session.Insert(new FoodTable() { Name = "51" }); - session.Insert(new FoodTable() { Name = "52" }); - session.Insert(new FoodTable() { Name = "53" }); - session.Insert(new FoodTable() { Name = "54" }); - session.Insert(new FoodTable() { Name = "55" }); - session.Insert(new FoodTable() { Name = "56" }); - session.Insert(new FoodTable() { Name = "57" }); - session.Insert(new FoodTable() { Name = "58" }); - session.Insert(new FoodTable() { Name = "59" }); - session.Insert(new FoodTable() { Name = "60" }); + session.Insert(new FoodTable() { Location = "", Name = "1" }); + session.Insert(new FoodTable() { Location = "", Name = "2" }); + session.Insert(new FoodTable() { Location = "", Name = "3" }); + session.Insert(new FoodTable() { Location = "", Name = "4" }); + session.Insert(new FoodTable() { Location = "", Name = "5" }); + session.Insert(new FoodTable() { Location = "", Name = "6" }); + session.Insert(new FoodTable() { Location = "", Name = "7" }); + session.Insert(new FoodTable() { Location = "", Name = "8" }); + session.Insert(new FoodTable() { Location = "", Name = "9" }); + session.Insert(new FoodTable() { Location = "", Name = "10" }); + session.Insert(new FoodTable() { Location = "", Name = "11" }); + session.Insert(new FoodTable() { Location = "", Name = "12" }); + session.Insert(new FoodTable() { Location = "", Name = "13" }); + session.Insert(new FoodTable() { Location = "", Name = "14" }); + session.Insert(new FoodTable() { Location = "", Name = "15" }); + session.Insert(new FoodTable() { Location = "", Name = "16" }); + session.Insert(new FoodTable() { Location = "", Name = "17" }); + session.Insert(new FoodTable() { Location = "", Name = "18" }); + session.Insert(new FoodTable() { Location = "", Name = "19" }); + session.Insert(new FoodTable() { Location = "", Name = "20" }); + session.Insert(new FoodTable() { Location = "", Name = "21" }); + session.Insert(new FoodTable() { Location = "", Name = "22" }); + session.Insert(new FoodTable() { Location = "", Name = "23" }); + session.Insert(new FoodTable() { Location = "", Name = "24" }); + session.Insert(new FoodTable() { Location = "", Name = "25" }); + session.Insert(new FoodTable() { Location = "", Name = "26" }); + session.Insert(new FoodTable() { Location = "", Name = "27" }); + session.Insert(new FoodTable() { Location = "", Name = "28" }); + session.Insert(new FoodTable() { Location = "", Name = "29" }); + session.Insert(new FoodTable() { Location = "", Name = "30" }); + session.Insert(new FoodTable() { Location = "", Name = "31" }); + session.Insert(new FoodTable() { Location = "", Name = "32" }); + session.Insert(new FoodTable() { Location = "", Name = "33" }); + session.Insert(new FoodTable() { Location = "", Name = "34" }); + session.Insert(new FoodTable() { Location = "", Name = "35" }); + session.Insert(new FoodTable() { Location = "", Name = "36" }); + session.Insert(new FoodTable() { Location = "", Name = "37" }); + session.Insert(new FoodTable() { Location = "", Name = "38" }); + session.Insert(new FoodTable() { Location = "", Name = "39" }); + session.Insert(new FoodTable() { Location = "", Name = "40" }); + session.Insert(new FoodTable() { Location = "", Name = "41" }); + session.Insert(new FoodTable() { Location = "", Name = "42" }); + session.Insert(new FoodTable() { Location = "", Name = "43" }); + session.Insert(new FoodTable() { Location = "", Name = "44" }); + session.Insert(new FoodTable() { Location = "", Name = "45" }); + session.Insert(new FoodTable() { Location = "", Name = "46" }); + session.Insert(new FoodTable() { Location = "", Name = "47" }); + session.Insert(new FoodTable() { Location = "", Name = "48" }); + session.Insert(new FoodTable() { Location = "", Name = "49" }); + session.Insert(new FoodTable() { Location = "", Name = "50" }); + session.Insert(new FoodTable() { Location = "", Name = "51" }); + session.Insert(new FoodTable() { Location = "", Name = "52" }); + session.Insert(new FoodTable() { Location = "", Name = "53" }); + session.Insert(new FoodTable() { Location = "", Name = "54" }); + session.Insert(new FoodTable() { Location = "", Name = "55" }); + session.Insert(new FoodTable() { Location = "", Name = "56" }); + session.Insert(new FoodTable() { Location = "", Name = "57" }); + session.Insert(new FoodTable() { Location = "", Name = "58" }); + session.Insert(new FoodTable() { Location = "", Name = "59" }); + session.Insert(new FoodTable() { Location = "", Name = "60" }); } } #endregion diff --git a/Tanshu.Accounts.SqlDAO/Fluent/NotNullConvention.cs b/Tanshu.Accounts.SqlDAO/Fluent/NotNullConvention.cs index 58dda6e..6bf6dfd 100644 --- a/Tanshu.Accounts.SqlDAO/Fluent/NotNullConvention.cs +++ b/Tanshu.Accounts.SqlDAO/Fluent/NotNullConvention.cs @@ -1,24 +1,20 @@ -using System; -using FluentNHibernate.Conventions; -using System.Reflection; -using FluentNHibernate; -using FluentNHibernate.Conventions.Instances; -using FluentNHibernate.Conventions.Inspections; -using FluentNHibernate.Conventions.AcceptanceCriteria; -using Tanshu.Accounts.Contracts; +//using System; +//using FluentNHibernate.Conventions; +//using System.Reflection; +//using FluentNHibernate; +//using FluentNHibernate.Conventions.Instances; +//using FluentNHibernate.Conventions.Inspections; +//using FluentNHibernate.Conventions.AcceptanceCriteria; +//using Tanshu.Accounts.Contracts; -namespace Tanshu.Accounts.Conventions -{ - public class NotNullConvention : IPropertyConvention - { - public void Apply(IPropertyInstance instance) - { - if (!HasAttribute(instance.Property.MemberInfo)) return; - instance.Not.Nullable(); - } - bool HasAttribute(ICustomAttributeProvider provider) - { - return provider.GetCustomAttributes(typeof(NotNullAttribute), false).Length == 1; - } - } -} +//namespace Tanshu.Accounts.Conventions +//{ +// public class NotNullConvention : IPropertyConvention +// { +// public void Apply(IPropertyInstance instance) +// { +// instance.Not.Nullable(); +// } +// } + +//} diff --git a/Tanshu.Accounts.SqlDAO/Fluent/QueryStore.cs b/Tanshu.Accounts.SqlDAO/Fluent/QueryStore.cs index 58c17c2..caa2cb2 100644 --- a/Tanshu.Accounts.SqlDAO/Fluent/QueryStore.cs +++ b/Tanshu.Accounts.SqlDAO/Fluent/QueryStore.cs @@ -29,9 +29,7 @@ namespace Tanshu.Accounts.SqlDAO public class NHSQLInterceptor : EmptyInterceptor, IInterceptor { - SqlString - IInterceptor.OnPrepareStatement - (SqlString sql) + SqlString IInterceptor.OnPrepareStatement(SqlString sql) { QueryStore.Query = sql.ToString(); return sql; diff --git a/Tanshu.Accounts.SqlDAO/Fluent/SetupStore.cs b/Tanshu.Accounts.SqlDAO/Fluent/SetupStore.cs index 2b90e44..08bc0d7 100644 --- a/Tanshu.Accounts.SqlDAO/Fluent/SetupStore.cs +++ b/Tanshu.Accounts.SqlDAO/Fluent/SetupStore.cs @@ -51,7 +51,8 @@ namespace Tanshu.Accounts.Repository c.Add(); c.Add(); c.Add(); - c.Add(); + //c.Add(); + //c.Add(); //c.Add(DefaultLazy.Never()); //c.Add(); }); diff --git a/Tanshu.Accounts.SqlDAO/Ninject/QueryStore.cs b/Tanshu.Accounts.SqlDAO/Ninject/QueryStore.cs new file mode 100644 index 0000000..a8010ad --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/Ninject/QueryStore.cs @@ -0,0 +1,24 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using FluentNHibernate.Conventions; +//using FluentNHibernate.Conventions.Instances; +//using NHibernate; +//using NHibernate.SqlCommand; +//using System.Diagnostics; +//using Ninject.Modules; + +//namespace Tanshu.Accounts.Repository +//{ +// public class RepositoryModule : NinjectModule +// { +// public override void Load() +// { +// Bind().ToMethod(m => SessionRepository.GetSessionFactory()).InSingletonScope(); +// Bind().ToMethod (m=>m.Kernel. +// Bind().To(); +// Bind().ToSelf(); +// } +// } +//} diff --git a/Tanshu.Accounts.SqlDAO/Ninject/SessionRepository.cs b/Tanshu.Accounts.SqlDAO/Ninject/SessionRepository.cs new file mode 100644 index 0000000..af4b6a0 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/Ninject/SessionRepository.cs @@ -0,0 +1,48 @@ +//using FluentNHibernate.Automapping; +//using FluentNHibernate.Cfg; +//using FluentNHibernate.Cfg.Db; +//using NHibernate; +//using NHibernate.Cfg; +//using Tanshu.Accounts.Conventions; +//using Tanshu.Accounts.Entities; +//using Tanshu.Accounts.SqlDAO; + +//namespace Tanshu.Accounts.Repository +//{ +// public class SessionRepository +// { +// public static Configuration GetConfiguration() +// { +// var storeConfiguration = new StoreConfiguration(); +// var persistenceModel = AutoMap.AssemblyOf(storeConfiguration) +// .Conventions.Setup(c => +// { +// c.Add(); +// c.Add(); +// c.Add(); +// c.Add(); +// c.Add(); +// //c.Add(DefaultLazy.Never()); +// //c.Add(); +// }); + +// return Fluently.Configure() +// .Database(MsSqlConfiguration.MsSql2005.ConnectionString(p => p.FromConnectionStringWithKey("FluentCon"))) +// .Mappings(m => m.AutoMappings.Add(persistenceModel)) +// .BuildConfiguration() +// .SetInterceptor(new NHSQLInterceptor()); +// } +// public static ISessionFactory GetSessionFactory() +// { +// return GetConfiguration().BuildSessionFactory(); +// } +// public static ISession GetSession(ISessionFactory factory) +// { +// return factory.OpenSession(); +// } +// public static IStatelessSession GetStatelessSession(ISessionFactory factory) +// { +// return factory.OpenStatelessSession(); +// } +// } +//} \ No newline at end of file diff --git a/Tanshu.Accounts.SqlDAO/Tanshu.Accounts.Repository.csproj b/Tanshu.Accounts.SqlDAO/Tanshu.Accounts.Repository.csproj index 23302b2..682d24f 100644 --- a/Tanshu.Accounts.SqlDAO/Tanshu.Accounts.Repository.csproj +++ b/Tanshu.Accounts.SqlDAO/Tanshu.Accounts.Repository.csproj @@ -40,9 +40,9 @@ False ..\Include\Fluent\Castle.Core.dll - + False - ..\Include\Fluent\Castle.DynamicProxy2.dll + ..\Include\Windsor\Castle.Windsor.dll False @@ -52,10 +52,6 @@ False ..\Include\Fluent\Iesi.Collections.dll - - False - ..\Include\Fluent\log4net.dll - False ..\Include\Fluent\NHibernate.dll @@ -64,6 +60,10 @@ False ..\Include\Fluent\NHibernate.ByteCode.Castle.dll + + False + ..\Include\Ninject\Ninject.dll + @@ -96,6 +96,8 @@ + + @@ -121,6 +123,7 @@ +