Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com Message-ID: <372BA0F8.6D84A26D@cityweb.de> Date: Sun, 02 May 1999 02:48:56 +0200 From: Corinna Vinschen X-Mailer: Mozilla 4.51 [en] (WinNT; I) X-Accept-Language: de,en MIME-Version: 1.0 To: Chris Faylor CC: cygwin-developers AT sourceware DOT cygnus DOT com Subject: Patch, Version 4: Unix-like permissions on objects [was Re: b21 -- various small issues] References: <19990420200651 DOT B16325 AT cygnus DOT com> <19990430084531 DOT B598 AT cygnus DOT com> <3729BD53 DOT 1C8A7FE8 AT cityweb DOT de> <19990430103351 DOT B10725 AT cygnus DOT com> Content-Type: multipart/mixed; boundary="------------FAB8F90A3B16C7C580462DAD" This is a multi-part message in MIME format. --------------FAB8F90A3B16C7C580462DAD Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Chris Faylor wrote: > > On Fri, Apr 30, 1999 at 04:25:23PM +0200, Corinna Vinschen wrote: > >Has anybody fixed the chown/new headers problem in the meantime??? > > The last I remember, Anders didn't see any difference between the > old/new headers. > > I would very much like to get your changes into B21, though. I don't > have much time for cygwin right now, though, so debugging this problem > is not feasible for me, unfortunately. > > -chris Hi Chris, I have rewritten my security change. The remaining problem with chown is solved, it was a stricter security behaviour in SP4 vs SP3, and not Anders headers, as I suspected (sorry Anders!) The file security.cc is now very different relative to the older version because BackupRead()/BackupWrite() is used instead of GetFileSecurity()/ SetFileSecurity(). The function chown() in syscalls.cc is exclusively implemented by calls to get_file_attributes()/set_file_attributes() now. Another problem is also removed in this version. The function GetFileSecurity() crashes on FAT and Samba file systems. The use of BackupRead() prevents this. The current version works ok, samba refuses (correctly!) the setting of owner/group/file modes. I have carefully integrated the change into winsup-990430, I send the patch file as bzip2ed attachment, because it's more than 40KB. The NT security is coupled to the new CYGWIN option [no]ntsec. The option [no]ntea is yet legal and does still work! So everyone can decide self, how much UNIX-like security he/she wants. As alread written in January: Well formed /etc/passwd and /etc/group files are essential, to get the expected results. Especially the attachment of users to their primary group is very helpful! Example: /etc/passwd: ============ everyone:*:0:0::/tmp:/bin/true system:*:18:18::/tmp:/bin/true administrator::500:544::/home/root:/bin/sh guest:*:501:546::/tmp:/bin/true administrators:*:544:544::/home/root:/bin/sh corinna::1000:547:Corinna Vinschen:/home/corinna:/bin/tcsh ftp::1001:545:anonymous ftp login:/home/ftp:/bin/true /etc/group: =========== everyone::0: system::18: none::513: administrators::544: users::545: guests::546: powerusers::547: Best Regards, Corinna ChangeLog: ========== Sun May 2 2:00:00 Corinna Vinschen * security.cc (ReadSD): New function. * security.cc (WriteSD): Ditto. * security.cc (get_admin_sid): Moved from shared.cc. * security.cc (set_process_privileges): Moved from syscalls.cc, shortened, changed return typ to int. Sets errno now. * security.cc (set_file_attributes): Return type changed to int. * security.cc (get_file_attributes): Ditto. * security.cc (set_nt_attributes): Ditto. Cares for setting of S_ISVTX now. * security.cc (get_nt_attributes): Ditto. * syscalls.cc (rel2abssd): #if 0'ed. * syscalls.cc (set_process_privileges): Moved to security.cc. * syscalls.cc (chown): Rewritten. * syscalls.cc (chmod): Changed call order of the functions set_file_attributes() and SetFileAttributesA(). * fhandler.cc (fhandler_base::fstat): Changed check for return value of get_file_attributes(). * ntea.cc (NTReadEA): returns TRUE now, if allow_ntea is unset. * ntea.cc (NTWriteEA): returns TRUE now, if allow_ntea is unset. * shared.cc (get_admin_sid): Moved to security.cc. * path.cc (symlink_check_one): Changed check for return value of get_file_attributes(). Sat Mar 6 18:30:00 Corinna Vinschen * security.cc (get_world_sid): Rewritten. * security.cc (world_full_access): Deleted. * grp.cc: Use gid 0 as default gid. * grp.cc (read_etc_group): Look for account name of world group. * fhandler.cc (fhandler_base::open): Call `set_file_attribute' only in case of disk file. Fri Feb 26 00:44:00 Corinna Vinschen * security.cc (get_file_attribute): Patched incorrect test for symlink. * security.cc (set_file_attribute): ditto. Sat Jan 30 02:12:00 Corinna Vinschen * security.cc: Special handling for user and/or administrators permissions to write (extended) attributes. Fri Jan 29 02:12:00 Corinna Vinschen * security.cc: Don't allow 513(none) as user or group. Thu Jan 28 11:00:00 Corinna Vinschen * security.cc: new functions `set_nt_attribute()', `get_nt_attribute()' and `set_file_attribute()' with additional parameters `uid' and `gid', to support real NT security. * winsup.h: Prototype for `set_file_attribute()' with four parameters. * dir.cc (mkdir): Calls `set_file_attribute()' now. * syscalls.cc (chown): ditto. * syscalls.cc (chmod): ditto, with correct uid/gid. 21 Jan 12:30:00 1999 Corinna Vinschen * shared.cc: New function `get_admin_sid()' to get a SID of the administrators group or of administrator. New functions `sec_user()' and `sec_user_nih()' to get SECURITY_ATTRIBUTES with all permissions for the user and the administtrator group. * shared.h: Prototypes for the above new functions `sec_user()' and `sec_user_nih()'. * sigproc.cc (getsem): Create process semaphore with permissions set by `sec_user()'. --------------FAB8F90A3B16C7C580462DAD Content-Type: application/x-bzip2; name="ntsec-patch.bz2" Content-Transfer-Encoding: x-uuencode Content-Disposition: inline; filename="ntsec-patch.bz2" begin 644 ntsec-patch.bz2 M0EIH.3%!62936?2FFF, )H!_@']]]:Q[_________O____]@,O[P'O.X'T6P M=F ?8WO-#WO>W>+WN;9[[G=*?7T*H5MPY][5ATWO=WNE[N:&7,^O>T]GW MC>JVL>VH4ZT!J-UN,[QN]M]QWWOJ>,T>O9E?1O AT DB30 "-)A-#332GIH2;-3 M8FBCU!D::!H:!D&@T -!A*:$!!!-)HVIII!3;0U3]-4?JGM4T;32#0- #U M !H8@)$4*:GI,@>D>H#)B,AM30,CTT)Z@:!A,@T/4- &F@ $FDB0C2F4WI*? MDI^FJ?BF]4RGY4\4>H>H:/4 : #0&1H>H - (DB(F1J;TIM-"I^3%1O2GE/ M4VU390]3U/28Q)H::#31M0 P@,F1D$21 0$ C$RGH$Q&F@:%!H:/4>IZF0 T M T#0 9TVP@,(2*"DB2("!" BP2'K/AC!)%50F.& -L0C$DLEEDC(PF)<*RP M$H AT C92 ,9(6,6YERC()#,(6"(3 91H)(I%"LH)"A912)4I!8JPK()%@*DC;) M*(%:);"E96J4I&,#*7++0LH6,:T;:BR/K_#/9\A\L^8_%^[)_4B AT HLZ=C.K> ML%%!JKF$R$@0AJ$-%[*,']LS/ZVR.C&;[*-VI1AZG^BK$XA.HA*/>BC4Y4_Q6[G?]G-;#5!8/''EU0 M2=EH;0IQ *3$461C!K**J"(BPBO*V,% 56+%')#S(!7^1DDJR?&PVD!/]J?? MV=OB^]T\T[CGVLL\R0UDIA:B'6R32LM[-4T(BAIS!H;<2&F&W<#3K":[&CIE M8IW)N8 L.6;F(G+6!D;C@;ZXD8.F-*AR!SCSG=NA)WUG;\TRTX&\C&A5/%24 M6YAC%BB,6!ES(>*9B9--TE5I:4H=N;PV)'@]S)NZIBW9ZLU.=EW2K$54=NIE M#]@I AT X14673O79]JFF7=GMCY+Z6HOW?BN98/1 AT WM Q I#I;0'Z()O\/R=G-A MG!H'GVX68)$9E6)\F:VTQ AT 1DO U#/+<%30I6#IPEPIB[G:CD+5X,.WQ<\>EV MYSF9F->ET. Q-7B[Z3H[$*RSDQ13SV%1V646*H(HB AT I$0= <&Z5#T;#SZG8& M$GKMG3RKOGH*)K1<9MQF)@EFD#1FL*#C<9C0EV]^L^IF^5"=L7OWS'?//:<, MV$+Y_#]K-O1>GT/6TQPPX\^OA1I"I;LY:,,I4^C-(3!!'26FS MA*DFWT[5+H,AI+C(H555[Q*=R!8Q#9L<,8.2BXM&@K&Q"Y2I$8*<-Z;TZ'8% M2QJ AT P64M+0VY%BHL444DQ"8.#2B*(B-F.5"QF5&5BRN)"M+2F(%I;+BU M+ MH#D,N!D2I*U+A3#*88>'R,!?>\?C$3KH,0@/- RT0E6*";_.89T-Y6.B! M),]*H6UC+23Y1(Y[ _/G*W;]?7;$P#2&8") D(.[$ VV"DW$VQX 9M&8/*X&I7/ HB%F*MU4"#ERUAN'T.P):@= M AT MR.*"B8/R:;!QZ88UK_"0-IRNQ["HBE67)"%J6$&$N4M+7HH8$Q5%B'HPI. MI;#N+#J:.F]'\_?AYY&?HCW])+DV>NS3RK9=G+E5KQBM*E8,.$0-$(B+J)G@ MQZQX.E2I?MBD#^0WUV>HR5+VQ;S!_?[/"#\I!0DD\DL2=6$7%<_##0-ZC^S[ M.$8]$0?0N.O)1%9UT AT 6&Y*#NENWAY/%Y>V5#WSK7?U%VP=I_B0C]]PYQ$ MKWEU6V51DU67KCUA(^.R4)#VROW?9[)Q^:#L7E2%_7PN;VXZ#73Q=EGK+6). M_2-00LKE_U3Q*>933E/FA)(2$C^"#460338IB?-CN.XOW);D"7S>FPUT*"BR M*P0-^'T?$,R;4P M:D-A31:8%);&/&B8%[\']SNG$8G<\ON;V1ZZ-:^R[/C! M"Z9:G\Z<3\FP9VE[CDTHF8O(NXDUYTF AT O?"EMR "E9[;#R&Y.$B)^W65^121 MB*\.'&65C:Y/+:&:$VV=)QCFPJ$OKJMZ$2%$CT>V+&3:]G-WWL04#+L18I G MJS:Z^KY#W?-!'SU=GAAXX[FBQKP.S>!/VBW+638H9#>.,$> =PLF@)LK+0>3 MA\&^^KH&4O$OVGL-U\$3 Q(R0(S>J%Y5WDH816S5#'(GY7Z'=.1KBHR'M&R0 MJ6.!IHS25"D%02E[ICP9-(VHG^GH&3V\CIZ?S>"54VPLN,.#"%J[N/O!$LV1 M!1(ZLOK+KEG_5L[ ^/,R)NHV,T*($*:.IF^'5XJ!S^;F<%0I60G9F2)R"&,,T=6R6*PBJ"'%GMFRF@,C9K('%X/]&#R8[[:=>/,*4K;OT;@3)QTSD"T+-.SKX[QLJ)KB)L<=BU7.H%>C)"I-F-5( M%]]]^&&ZXY3/A AT E5555%6%[3W/BO"GV,4Y$*9#,5E+)N8GMD+":D MJHFT?-8K#7L1GJUZMQM6F#YJ1TSG HPTTN$('(3Y['37+W8<\3X'.)(9O&W% MJG3O#(G&A:,3L&U0;,K97TT>L@]%NW+58"1SL"-8E44"R)8K(\=_)D;\9L== M#IVX\V:S:=9\306,#)7>.,C,&;SXF.)CY3SWX^2MFOGU?!W?:FZW,+594+0<5 M1'P<#SJ_R:%- 2(?TT0%8R2T#-?XDCN/+/[O#APX1$1C.#7'UY'-6[O*8$0QUD2BBEID2CYX^.K3$=]6DYH--1NW;MW463--M.>327S9 AT TOCH-+5L& M!YT&\5:.H9U_,\IY/GP'/K;PN0.PN5(/%V,LZZ<4LS';SC/9KUDV/Y4N5DD(I",B+ :U=:%"V)B6VP M-/UFT2 AT 5YA>->! 4L7"!UBD23ZNQN<%*E2%[P^N_#?B#82![& (R*,15D8R+ ML$D^Q[;"<G>F+H)3&BY\Q\5=GV>B*(2]R!9CE.WU4&\ M2G5O,^F)_ AT Y683(] CB'[W78J9-:D4VZ+BR$YYR1P2#+I$I(86K^_R. MT\)7R*Q\.*]HKT_W0Y>8;S\GT6Q:I1S+XZ!+*3P[7/V>!3 M8X1"R;M/WB"E^[?65>G$5+.A MPB6.4:2\AS=ZFT1YZ\^+)_&(.D1RR(OGG'/Q79V>L_;$PB#(K$%@+T94(P2, M2))/ST AT 3Y_J?W\.]G].OIM$;:-;AH25).J!C'\2(+(BJ!$/@G]"I/)5G=8$& M$,!(I%*9%2 %$&11W]/?T^SR>MZ.KQ&AY?9Y8-QO&&]WDY(!1GOG7C1 AT 7WSLU+U9$KU*Y+%T18BW627C M3=Q^B%47XAA/8XUML,C2:U.5L,Q;5=-F2*\2($I:=]5D3S6$X;),+%P$PV![ M),67BU#)E2&."-])\3L-0MJ(]/"YP>S5JV&:FDDD$:V^GIV?*5;)I.*'>_7S M^[#29-3&=*UW#R%U7NLWFN.[O+V91CE$::.G>_9BJI^ S]NF,TZ+HHSM+51H MD+7C$DL%MY/5O_3R0BTD(NWR7\))IF(_)-%KRJ)AC:V)>]\\?+Y%ZX3V (!\ M<44(GXT/ZTT6(I :#HBB\ZD.;8KW1(\G%B^K5AC#-YC S$0SLPFCY$=<>FSW M^Z3]DNK$IDJ_86GV!?>3[TY13M=JD4)71,Z>Z'\D(%(=MKF^S=NU/&_9X]BJ M4BU*VK*>LTM:ME:UK6M6RM:UK6CYCV^C17,9$D#/R$)($DZZHQ*KKUDVY2;Q M>M!D\U)"N\AB&8K6=HQK,AW(A)L*+L2_"X8H0+Q*GPSRXU:':%/ *N <,[,D/BA4#&NO$0#B4P4ZE,,+ :F&=B%-[Y=X MJ;XWM>BJWVMDFHIQ4O: LB2,T")S $\<.'5RX%VT^G/9PNIOB$DT0PTQLM;+ MWPE9;1X"23;#358TB0NH&)8?%^.B):$6-9JD(:2M(O/* -CX(@A$"K3D2F?* M5#NS.#N^1?F<0UKE^BF$Q6T,P^3 M%(AIFRO6M5^IH.5Y_W0[6[XBIMPQ77+K,C,L]3B4JS:F*_&IIF[JFBO NYL_ M7&/$]*M62Z,[N>;QX-"(J_D4WK2E>VL"^ZKJLP=RMU6^97LP\-V^I\V=B]7; MR]SPB4I?P1F2 AT UT:6F$I*H#6[XT7R!(,(*<'4&*/?ET-[W0SRI%#(*#V.4'X M:/^^;\=RR=VJCJK>_X*$G?S:ZQ?C'2WLAKVY6SF AT A3A'*J0O8.5E>Q+ MI9Q:K=<%%E"#?IQV^8H!=7'1WI^V M2]:0U$6.LM#3Y5F"\3#=B3>=+O>&0M.UAVVP4PLQF'>HT5=J*4.=TP+HG8OB MCS+1MVZ':7QEI)'G/1"B+TB!3(X2VH AT 3D4B4J08XP"@U AT 48T2!DR0/I-63Z$ MD_+89 AT 2C]XP$]Q2R 9:D;AG%3NGMXJ7$_B"DSBD1.+(X4Z=QH\ $)VPYRWS& MY^/V6BRO^4.^ER-T,QF$Q8!TAH'J'X#Y0,8$0/]40H-ZYKD/V(F)F%C95M AT X M ;#/9HX(9D\;G%>I'PJ0=D($3X_PISIV!Z?;'AKP.HUH4RG#\PZ\$7%29%_@ M'I"!)P&1U,G97#/"_$ \X&!?*,2;Y.!4.SI0?0AO$HTAR-"N8+">@!\BFH,5 M%@!@AI)"/YI^BP54I@;#MDK*#RL#@NLV8WM:SP,S,:0IB8L <_11F8HDX6I./'0D9(;Y73"H_OW'9J M88S?)>*HHJ%HR2!-.V$N=1S< 78S_<- !\!OO#_E.::E@= /8O(ES0,$VAI/ MV$;99I'^PQ" >(Q,RD?:!V\YP;INR" 0AT2C8 V4YC>L!X"8M@=I2%!'(*0( M9XEQP"A8;F"!3D>.8&P9.IXT7UPB!6!\,.U #L18,^(\=?2211L6I7(, A-] M.!V!^?>!Q\WPR$600HZ )>'JTI+#R!W ;@.X,Q[T/B7J%/&?2GT'P]1Y8 Z!$,V! MM/D3B.;CQ=6DS0^$.T%*D"IVH[MH3HH!@.J YN MP"$8N]P*!N ?6YB&X&J\ C=0V01"E,CD:>"9$#T=J96KTI'<<"!Z'''WCFZ# MVA>6UL&P1V'8AWV"@@L@=07&6)13$H" IS!M/A#H#8@;0L#L3HZUL"F 1=4Q M(G:)&"D@! .QI#Q&5&H=0%HPZLR(:(%FYJ3$WU-:/;\9PV'._=DDFV,CQ,HG MBZE.I>LZPH.NDY0[W!*>S#JLNIL](FJ9B]21H,UM1DB^@,!HL0T#%I,8/N/92G8# #('$A D G4!XX^43G<0Z#S@>@3@*= M1W)L0)SMD[A\HIKR\M8F":@G4BP^$:#4.Q+G"/J.2V))5:#U&QT2![8'DAU' MEC!D1S$LG6Z(=A]QZ7@>,+Y$*-X.9?T0*(P?3118I"@#L =C21T,T\!/E#Y8 M2>7@> =(X$7&!<$Y>4"6/2;5?!2"D)% 4GD28(O0 DOT 0ABO AT XV%P,!+.9B Q'! M'$!YU#,Y2*I# #6#2,./<.M3#0HE@:,=E+23E7 ^+J\3][T9 <5(^8AG!\LN M$Z" //R,DT!*E&_P/*B&T[6$@;_Q7;<2$( G>F!]__C"X2@(&P 3UXH]0GF/ MLE/7[#B)S*9KZ#$+%C5,"[1XD.D# D3ZX(PP-^W/ 0S)'+L'X; V#=J4<[?9&'$\-("?CP$K,$YRN\D]TH"R9:XDD[_BI"P[ M1XR<@UF$R3D'JU3B=A"'^5>@$Q/90>9C9 M: >[ 1-3?\R&Q1L_2W'E( MM@:F8?8=X/<=O6];[N@((CZ!T>BP 6Y5GZUY4 M<;!@ +,NRRQV9QG]A$58"XA58+%[@50: 7,"XP-*TJ@)S$4P.O9WW?L1=@8L M$Q(GN^6XJ->-BM5,R.."89A TP9C#=E M4>'SKW%JE ]K64L?.&.1EWWL;0-*T(T:'""$\30Q ,\PP(8QMI% LDQPSYG+'$0VW52BJ@?E\P AT I+C MORFM(!^RAK@[],!'Z, K=H6=R0+AG1>HTT$II1;UDAH.ST0V9!=,7,Q MY!\8 =9S5B,7YY8!VIR0$VYMZFX AT IIQ%O!@)N(,4Y0E$:RE@@6R9)$A>%$52 MU]/JM($8<0UL]@%W"=$ZCJ;1> OANSSHB2E"1!2QF"\[#T #+E2JHE'^K"! MHAK05!L51)3]TO-T+D7G1>]XQL6 2YD!0;&7IVH<(?4G&LF*^FPX!/C2CT/F M9]:.&TW:2R-2)E",2[RQ\Y'C+1Q39L#OT (OR AT 0D(QA%& 17M;&)$,C2#\8I MYH03=YKI1:%4JG8Y%BR!F;8B](FTU#W(Y!@W(><$V.K MB[3."XH:<[R9H'%_,.+(X?2BD<$&U)T1&@A,A@>SQ5;HR2QP1B%!2# W.B0? M0O/-FXWM[(2PF&D6 HJ,B03,I1Q(B4D%T+T.IA343'2%+" 8%Q2"4!N7[^XI MZX-MB'D1[SH>9C#8=AH0>D\#1PR\(B$'NAQ-Z.?(FK9V:B800!<@$$B4 AT Y\: M1J,O#9*''0.-ZFKR*A"=+ -#<);(?3^,_V+.V%R>A.Q*2,"AC_%!*K;4$"5- ML$M\0W'_^B"6'8HH<%*[AIUBZ4L$\YY AT H"Y=<1..)0Q2 0&Y>Q4CE!JM!1)& MK>V7RPSN%&+IV$&I5K>OWTIH.5*PX<%?\%=9"YI)IE2&RQH5?ZB(QJL J6LR MFP^Q%2Z-40TZ4G-=588,<"*_360OQA#NP5+G/=TT0Y#5>2*!12["HZ5.!)5J M--HEW2>B:S+6B*B.K=70RXW,F&!8%9!TR03G,$LLVX02F1G08(U5-&"[0,T# MT2D?F1: :63)T5?9M-J,:E0H7@!!D9B_!N8IY6BG>!@9;'0+N#@*41PI=JE! MHNZG$W0T*>9;JQ=\#U4BC8-L0#.A0.!FXBD$N\BA!HH%-E_YT>:40F2%OADY MKR;7AW\9">EL:4I -5ADQ@[AP8UJRL%I['-07D"&B8#G.AQS31T?B8>!/7"< M7'3(W[L"'9VB4/+HH!IFL&:T:%D%02:"B%B9D\&) S1_Z>H1RUDE:P[^? /) MN$*8T4<0,#0:=#+/K#>NKFZ;T_A;AH33*(T8I088W+A0#O AT PFS5-NS$0V:@V M3M]VSD 3J"82@+XJX !Y ";MWIX()"O1<<@-8Q:2]*')M&PQSF%X7?#KOC?" M]@LY@(">9=@0 AT 00N9_"*M /0F1"B#(1#[D.\(P$6(JJBLF@-#(@"HQ8BC%& MJH"L"*B7';3G:KDH$A([K(W<\56G,JF(9+5?(1:MH AT HEH,0H[Z]=%C3Z4[Z:%8T2HEB>CKOE,)$YT]R_'<.B&[P- MPX<4,D1WD AT 3HA#'!TZNVR-SR9OI AT 5(,C%5%#XT*(+$#T M640(JB(Q%%](S,>XD2PH2-'NGN^HUJY9J&1 MB")#Y0>:0) BD" 1BQ)%& 01[06)L\ ]8:'C2;H%I+/O+X*_@(@X+[:< ,:C MMT ,EUCIU3L> 6(=$O ZC>$38;Y?AL&U2!"$(F&LB(=KA,4?'U<":$Y(PD@$@;)93&N9U M*F AT T^NX4!N*^(O5Y AT X6=8H6%X71LH&L%#.*EP0D]A\'*'VCO#VJB,5011((Q M AT 1A(;T:H@+LV&X;"<[GN"UB=RWJ]Q\9::DC) V=P%@=&2*%',"FD M*B6A9J 0 C.#Z AU8A-!'YPX*D&$3PQ$- MW$#9\W/!3! M]%"^\WA2'8XP.!4$$N&@UV3O AT YZ8$8'(P9](4T%XQ&"1B#GR->^HRZAR M28!@P+H!>"64LJ8%[C(A><-WOHJ6D0\I8M+%JHYENYIR[Y0! W0(!5>4J]N9 M2C 0+\0$U:\*=&<@(4IQG$AQDA"26R0#.!IJ)2&PK@"7W& 8(TE)#%*<]H ] MTK;&O_0U0.%_=&T^?U*SU4C[.EW5A-,2C?-4L AT V$#F"Y2&4$*(EB@<&@=H8G M&G4/PT9F")!$S#.Q=R@&!E4XEC"8E!$U3NZX05-T.\+$]8DAF#1$5$Y/I?2W MLWX=!D!@_K0(4JSO1,3<(\$>(8 ?+X?M_I@'%7C[C<>/@XN AT F:[4 T4MRFTWTG/W M.RU';$^52!?WY873N(C]\$]<%R8!":Q4WD4,GCY-YL_IHJ2+YSC4L;;!>X!P M[P3N['\4($R;GG.EOLR.$[CD=+YAM1>,!O%3YRFEAWI I7Y6]MB=Z5&&66Q( M49W>20#1,ODI]HXJWO/,>"&AF?C3+NO.0JI,I4 AT L9#&%!"Y(T5: )9H$N48T M+!"MH402EI+&@+,$*K"*2ZL*"0*JJJ )Z9#6:9:R66A*D23Q AT C%+&+>R:U+A MP&!2']L0L3%A".@R($5MR[DG,1 AT H$' #GO%14@.\7M"7FL*5JSO2N_S\OK?- MCKB:CP=%F1,T'I1.;#S*!W=ZGS?K 08D9$/-I)!"$6$4= 7WC%@ED Q6ZB18 MLD" LC!@SL$&JP7!C&06+SITIU*9A'2>P&N0(21 AT 2#(,C(R1 TZ72(/UT8 AT 9 M(0C"$<$LYSA"29AHC0/+Y'MB]Q$[^R2U,E,HN,^ Q#)W9(PR=D"0[)N)M AT T/ M=_Y4A;F+&Y-$;.Z+*8==LTD)-:D:B"$4IO:2M'$98. (U-PR-#AEQO6HE\*E MAS2HW(RWYP*SL)_ >J'1!2=D9V6F-'M75"C+3173%ZL7!C AT WJ5FV* M;YKW2P:KR<>%$%-N AT V@QT*S9NY[40!^R;-X,$Z%A5C$=^ M*Y%&",7..,T\UF^DR%C2)-0R%/.AU][W)#T&W?G[%C*%J**"/;H+'8FD@,Z* M-<;S '1TVW.*]KR^I3RJ8BJB$JF!BU F!T+8.@/6!XJBEC6QL1*6>M[\ OO& MCX.<^RW,$C">^@J$O6S-XC8PVZO*H>4*$HW$%1:)@XJP&?6_09 F3?&"/::[ M@+W97X$F<+0PEE]/TVRXGJH,D&JOMHS+UBUB(FCGRM4([+M0TP7( @1BA0BD M#W938?7\NT&MXHP2)H<<(G)0980I:('K!PT9AV[NM DOT AT G")S*!D(AS$(:)-T" M:%@&!* A: M*.\HQSP;BT(&8O6"8)XX(O# V>XRD*",%*6:(.)C"CZM"8+,8^U#;L-OE AT W- M.$SRD<.6 AT OD41R4=)#32H&WNBG$"1&,BZJ!@.B8FZYH9:?#L7E!. M W]'OO<@,D(,D0 AT P@D=L TB+TG-[S]4/4'3Y(GL@;>72W-6( 70*:,=H6*#NW%IZX/)G4*X%8%F/J4@>)KPV: _$DDC"#( MI$Q,]#UQ+,FW*@88HTJ!M!5O#"RAW+)82)!B8T"SV+Q,GRQ(]O<%'F+4#A"B M$G;A8J7RP,O!K'$QL,O"D7S/1+V$+17PH3Q!C)&ZE3%($ B=JR_X4 AT 9H A" 2E(;0.9PP >7<-J&J))S