Crypt base class for initial revew
| From: | Tim Thorpe | Date: | Sun, 16 Feb 2003 10:07:24 +0000 |
| Subject: | Crypt base class for initial revew | ||
| Groups: | php.pear.dev | ||
| Request: | Send a blank email to pear-dev+get-13364@lists.php.net to get a copy of this message | ||
Here we go,
There are three files in the zip, in a directory structure. In the
Ciphers folder there is my DES algorithm implemented as a module for the
Crypt base class, as well as a skeleton class for others to use as a
framework. Check the usage in the comments of crypt.php and give it a
whirl. Comments, questions, etc please.
Enjoy!
Tim
begin 666 crypt.zip
M4$L#!!0```
(",B4"Z!PT
Y.0H`!0G`)```8W)Y<'0N<&AP[5E;;]LZ
M$GXOT/\P"+*(G3IVMJ? HDG=;>.3=H.S;8HD[:M!273$C4SJ4)1=G[;_?6=(
MZFK9N6R*OJR (!9%?G/AS#=#Z=4_/_WKT],GHWU8B/D19-P_YHR&1D6/YE
M1J7C%Y#%8F:6(C+Q^,41[(]PQ0B>'3S*]<R"?0=4!+YPG0DEX04\\/K^,S2;
MJ'2EQ75LH!?VX>\O7_[CX/GAX6]P%7.K]7NM\O27:'85BPPRE>N0PTPD'.@V
M#_[#0P-&P<*[\_GP$-0,C-<W$2&7&1\T-/N.CYDA@""74<(C6
H3XR".I"R\
M8=>(+BV&E?3OL\GIQ\O36"PT*H6&%LPD; )R*HB=%#U[%=O%0ZB0XPEOC!
MD@?T=/-5@,7&I$>CT7*Y'*9Q.I3<C+P-H^?3P^=#\]4,M\ TP<YFL%(Y1"("
MJ0QH'G*Q0#4AQ&WN<),UD&D.N;3VH%\K,!48AEX1VVP<0)IPAD 9)R22ZE%:
MFGF!;[R-N+&PY! R"7-TIM7::RGF<QX)9GBR:AO^4^+L;6YBI8_@2LPQYI1.
M.;P*DMS2PAM45<B,-'X-VZ["S,N4AX(E,-%H@SG:NF;C58 !?!!AS'@")YH;
MP_5-(GC -;R:N_$W06-\&*KYFIJ/[S,+N'L6[98W[[GD6H00)BS+> 8SI8'+
M4*]20RDZRV5(/U@BS.KI$Z+D_:=/]N&TG#**>#E[J5F:HI$;0#):.1,Z,Q#&
M/+S)8&[GV/DLN58:4WL^H%B5,!Q-Z-EH(M(8^6)DU](\B:7 8$ 2LM7:,\0<
MPWG.I<ELK)=PN(Z67IW_?HY[>E;,@LG)9 "3=R>.*<[?G9#&*A+R&N8<PRK*
M\$F2@$(T#:G2I064= ''?5L@&V'"!$@]>9*L:LX:>JF?,^2G(W^S>\-7,(:=
M^0KPU\XQC6G^9RXTGRH9\MZ>]09QR5[_F)R-:R+<DS%(O@3KCMX.#NP,8(>'
MP4[_N)AR\!I+Y!]\U2,9?MB"*5SL)OC]Z)'X.<](L0K /D)KVI,]B)O'PUC5
M)A\[L^A)0>B[%WPAZ-<1' Y?PBX]>\/"$,5!F@=()':DX&UKD9MC$_G6/+9S
M0YN?#\DO7#ZJQS"JO<)"@CMN(\C6E$0$FND51 H=C_<NI"/ 2NK+C-7:1=[0
M(;HH=./?GCZAU+4BZ,<^EFF9&9V'1FD_5#YQ28";E'%D9XPSWHQ=K'48@1A?
MJ#VI.=,*TT/,D-CWJ**F%)8\*O""%:GO<XJ G&+H/<.D(5[.D*F+)$6Q;BI2
M]9F'Q!I0@)7H`U=<?6RCJDQC]F9K">JR$S!Z7266;%ZIQF:&1-: "JDX6489
M*(F%'^\:RM9M*$M\6GQG=>GI<=HT"';+9UA@<J<6&U#1#0L&LDB$ZT+K<&
MWF#8Y%K"0HE"^9'[7WI@XE/#VCV W;F*>-_-\;M/EW^.*66TF/=0ME&)6G)=
MK.SWCP$)>()%6%)X627=&K*BAD0"NG"LX X4.[^)@3'3*VESFB@6\:BWY_9_
MK]^';Q:$XK$(1UQ1!1,EAEU3(5K-2K\32;FYTT1DM0W)>D[!]]@X,*!GU,N4
MP04U!(IN#](40\HSK=EJZH*OYOMJ>1_&XS%N>))Q;\ZELX(\0C3+LX8\K"*H
MC(VL+IG6/ JWC^A'8NUFL'L-B*MWK'TGN4BHBTH9=:?8(5'X+56.@P$O`I":
M,E\>6S6J+9I,)NE3IV6O5&737CDKLSPQ1!16"PR)R+(+J^5-^VH4H$J*M>E,
MADD>\5;FM:]=FZ$--TV]>QJND8"\HU6J*;=]6C>#M(%*;'SP>LKE-?K,E\!*
ME->OY JB#D;LEJ@0>SAESQKKR#^ 8WS4T[1^88)=7W,]M830V_DL;Z1:RE$N
MJW"M=37E[AT5N8YU^73Z^?+T8GIZ<7%^X9SX$6F6&<N8,X5'F(%EGP[5FD.;
M->WTC'/[AZ)J-ZAIS5>6(UQB^V+0DMW*<D*A!&]*/GA]S<T'>N13_&UV8Z$+
MS51YX-.<W =4/4I/6M#;\IPF>3.V)[@7Z>&S5M+3^G5'MK;[A+F)F%$)ZLVC
M(R>X<U<G3.X9;!(P[@9X9N,8=WF4K!ZVA[9[(T_V:AMVR4V-S-72%30\>%%0
MTO^8X?$0R^;&O?,_?U#+0S]J/<D5N[&]`%83VU=X0N*-;I[:5>J-4W<R$'8K
M*V=[K+)PMOH\/YHRS>:%'-L!$X*_1[R<3K*D"CXJ%]U>@^OMKGM4+[WKWJUZ
M8_+M)W=JX-9$;U01M:X!"?F]G2>DP/1*Q%_,:KC@MM5X9 >*Q0;_23@;?AG>
MSX-G7WH(>"?_^:E-[YU]^9^=A[U
B'4*&>&KV>:KUI'R(:ZS<JY(3M.#'K7M
M.C=A@_.J\U$!NNY%A]-K.[-C:46?A1_;:MW1DY;V[^3**LT?Y$HKJ,.7'O9>
MOO1K>C74.SNS:VVG-QN*H3>M0VOGMNFIF_JM=/0(+ISRM9+O"F%5PX+56CJ7
M9E7%<3V_BH)JBUW/G^6MS+?2#3:;9#>_E\6VGPR5D*' JF /,+Z04R>5]=<=
MYDKG<<T>6U"H$6^'5JOFU"+&'D.1:5HF-JO69C/]KCUFNW#?5J&[7:[W!^X=
M=>-$75R/U"A4H-V-01'<_KAG,<M6`+/8MK;U'F.MP%>O\WS0EGLU:+\?<WN#
M4=8FU7MQ7(8A&,;0JZON/7ZBL1#$M(F%N*:U(;UZMJ%_1--/R95:2=1]0O:?
M*'6SH6_;33!B,/+'$'*1T(D8!^IJPJCT98!.N[D4?Z%6^^N#+BVH*[=*>ES_
MKEW(-#?V2.W84R(\A@O,Z8R%OBSF632_MD/9JNR,B0>G*8MJN@X*:P80QKIW
M^/7PL%]4V:BFAM?!?>[9)(N('<LT"CH\QE8!7A7@]N[9N,LKKI$VG-X<5%\*
MBIHB"_,8G=Z-V'A:LP:=V*EC^M2#`$TKQ:!#NGLSH.F;7N'(3?B6WPL!#:33
M1IS:*0[8/VAD7@>HW9OAN"'#KK]B**RJGBHWN!/K4#_6AWS9:Y2E.@43W S[
MQ2RF(M)M=J YNSGNRIDP"%W.N)<1X+PRB1DBTMOKSJ2ADRAW[ZM+)@!RX[TD
MSX*&Y'>$>$)N^HE"52'TW&[
SQ2ZA5!]`U'28XLL[]3$_&*V+(FR&93K2ZBX
M]HIU?^MB#:RNAU[S+^B>&?5!S&PD44%]:B=O9@C7G9V/0F:-_O3.;$97BW%*
M2BM]=SNGL6V,YF346;,!]7LSGFJLYI]L9+4*N"*V4LQ]>(VN#FZCJ^*WLN;>
ME][N]29N4AUL[ AV,W*!1^T(*'ZZ^RZ%N8^,>">^_C_7_DJNM72+2&\A\Y_@
M_8F@^KJ[AP02FIS:W]H7+**(\AM%\SCGWH16Q[GFQYL-+TK7"+M(R?)3CE]P
MO#ZET;27IK6$W^FME?M*3',VXFPY6_IS7_U;S-Q-[6]3:^LY[IXFWO9:22P(
M12PV8G2</#:;6$YN[-6@[LX!-%K1FCF#FE);'-15W3=K5,[>KE&]DMQ!I1__
M!5!+P0*````!H'5
N``````````````#@``$-R>7!T+T-I<&AE<G,O
M4$L#!!0```(#0B4"XFDZG-&1,`)E#`5```0W)Y<'0O0VEP:&5R<R]D
M97,N<&APQ5MK;]Q&LOT>(/^A80AWI9BRI_D:CE^;V!%VC4VRAN4U[L+Q-?CH
MT=":(0<D1[(V\7_?4]W5).<AD=[K8,<A,B+[5%5759\J-CE/_OSJKZ^^_>;A
M=^(J7ST2M6J$^K2.BZR)$X&C;LKU4U_4BWS>7.=9LWCJ/Q+?/03BH;A_^E4^
M][6PWP4,$6]55>=E(7SQ'WY^_R,L>U&N;ZK\8M&(X_1$R-EL>NI.)IYXLU#:
MZK]4Y6;]7['LS2*O15UNJE2)>;Y4@O[<)!]5VHBF%%?L3O?!1)1ST;"]RSQ5
M1:V<+<M^Q^6X(0')ILB6*A/7>;/ 29Q9Q^EE? 'IA9:A-?WT\L79+^=GCD"R
M$&I'6'P5Y\LXP4 (;1;PT,5"@Z_+:IF=(I?4Z;5*Z.KM'RMLT33K1P\?7E]?
M/U@OU@\*U3SD.3QT/TS<!\VGYL$=8K:%O9R+FW(CLCP31=F(2J4JOX*9(D68
M#[A)3S"NE-@4>C[P:R>L3)H87LGOFJ,CUDL50U"M2!)I92D[EK'"[WF."*RX
M5B*-"[&",[75;&6^6JDLCQNUO-F=^!^29S]LFD59/1)O\A5RKJS62CQ)EAM-
M"]_#U+RHR>)GXJZ/G>;Y6J5YO!0O*LRA>70GYM:/%2;$SWFZB-52/*]4TZCJ
M<IFK1%7BR<J<_S[9.O\@+5=[9GY]GVF!1R^SH_:/LT\-@DNK,5W&=<VK;874
M6*FBJ<6/9^???O/M-YF:YX4Z_M.+U_]\]>8#3N+0W__DB,G)XT,#SGZQ`R0-
MT-I>5#=K4'EQ@;%W*327]&B2!?*'E9D]<V;POWW[#7GI*J[$T8=+=7.>_TN)
MIR)Z+*#I595?(1'I:J[7QPKK)6[*ZD;,RTK$RR6;4?>E),LRO=R2\V/>-&5_
M2'YUZ+H9@;]_;M6L-PE6CIAOBK0A_V)I41VCA0AC#:"]B"M_4S?'1[AR8B[Q
M[.B3S\5QW51+59@!XAE\+GXC=2\6*KTT,RJ$6JV;FTZX_1 &]D+"AW6<'8.(
M\55+0NP<<41<>OK,>O!D[XPCTD5U//DTF9R<Z#G_I9L&S8J^FCI48_2.[DX4
M3""=6L(Y2UASE.AR&RD62<*R`[-AB9@&/%:35#ZSBB_5^28!HC9^TJI>E 7J
MS9;!M1D$QKO6+%HW<:T9<M6I^BS4LE;]*-A/@[E>J.J#JJJR.KYW5J24E!1$
M$@]:)/I.E(G&/4><??C'^=GK#V>O7__]M3$):WV]!#_WM)FOG[\TD?(B;\!9
M^;]B?>4*!1:I4"B5P764%76Y4K9XS'$Z0<D4JS*S:=]/P)=OCX_RJ[O3#]?O
MSKZ7;P^'*[\ZD(+YU58&FJ5ULGMB+__T`J09O7P+7U8HE<VRER6'0[<3MI?;
MGGMK//?5HF>+R5[LB.WB]1JL7XOI:9EEIQ)]3)4W[5*Z0-DOR%5Y<2'6*!E$
M@#7D[43,H.#$8KUI]J.&I&Z@^:@H7QGQ\/^]7^%$'!*'B\/#X>,(<(0XIC@B
M'#,<,8X$1XHCPZ%PS'_])(&7P$O@)? 2> F\!%X"+X&7P$O@)? 2> F\!%X"
M[P+ON\"[P+ON\"[P+ON\"[P+ON\"[P+ON\"[P+O>\![P'O`>\![P'O
M>\![P'O>\![P'O>\![P'O>\#[P/O^\#[P/O^\#[P/O^\#[P/O^\#
M[P/O^\#'P?!\'P?!\'P?!\'P?!\'P?!\'P?A\"'P(?
MA\"'P(?A\"'P(?A\"'P(?A\"'P(?`C\%?@K\%/@I\%/@I\!/@9\"/P5^
M"OP4^"GP4^"GP$^!GP(?1\!'P$?1\!'P$?1\!'P$?1\!'P$?`1\!'P$?
M3\#?@;\#/@9\#/@9\#/@)\!/P-^!OP,^!GP,^!GP,^ GP$?Q\#'P,?`Q\#
M'P,?Q\#'P,?Q\#'P,?Q\#'P,?Y\GP"?)\GP"?)\GP"?)\`GP"?
M)\GP"?)\GP*?I\"GP*?I\"GP*?I\"GP*?I\"GP*?I\"GP*?9\!
MGP&?9\!GP&?9\!GP&?9\!GP&?9\!GP&?:^ 5\
KX!7P"G@%O )>:^
M5\ KX!7P"G@%O )>`3\'?@[\'/@Y\'/@Y\#/@9\#/P=^#OP<^#GP<^#GP,^!
MG\_O&?XTW(*R4((4\P(\=14O-[8F]-D#!,7T8=A#]MC#9?;PF3DL>T3,' DS
M1\;LH9@])LP<'C-'P.P1,G-8]HB9/5+#'"U[3)@Y/&:.@-DC9.:P[!$S>Z2&
M.31[R!Y[N,P>/C.'98^(F2-AYK#LH9@])LP<'C-'P.P1,G-8]HB9/5+#')H]
M9(\]7&8/GYG#LD?$S)$P<UCV4,P<DMG#9?;PF3DL>T3,' DS1\;LH9@])LP<
M'C-'P.P1,G-8]HB9/5+#'"U[3)@Y/&:.@-DC9.:P[!$S>Z2&.31[R!Y[N,P>
M/C.'98^(F2-AYK#LH9@Y)+.'R^SA,W-8]HB8.1)FCHS90S%[3)@Y/&:.@-DC
M9.:P[!$S>Z2&.31[R!Y[N,P>/C.'98^(F2-AYLB8/12SQX29PV/F")@]0F8.
MRQXQLT=JF*-ECPDSA\?,$3![A,P<ECUB9H_4,(=F#]EC#Y?9PV?FL.P1,7,D
MS!R6/=0N>W#?LLL=N+'=5 6UC+K'H_;$Z?H0IT<JW,_]J%ORNLF;#74V]9W-
M,-\Q;'=4#5K_6L1"W[^1:>E2Q56#VT;=X"O3H]<B;W::*'/'QSW\\9&&O0%L
MOY_B6=G65.->H)'N@1RQ=_?+,WQ!]YO4W-E>+I_WN\*\H 8:;6%58GXTO>OX
MYFMX(5\O5.>&3-WMAA^5=8/&?;$?6E3?$;Q/\%4=0>!VR\ T\/NRC$M@:]W>
M^^4%>FQ24%6QWE-#V@E]*QC7]JXIN3%;$-O^V;NWW/,+WV6W?LF;^DWY_*91
MS>C"!<-:BH5]VX_;?U=IQ)"M;W'P=01_@R'=(3G.<(-'"%Q3LR<[5N=O0\
M080#]UJ^"[ /< AP- "4`@F@-(,2'5@]:W>D0$ )@ @A)
0GQH]<(!
M8 A `T^YN5!B <A+L[)8&B.(1D*K3XF)N'^7K0[+I#I@(@``C)2=#D0[L'
M8>Z05UT`) ""' )M+K1)6"!\L]UEQW6A=-M0DE(*'?G()0.DEC,P1<\H@B^T
MQ=J R9"5Y+R9M<S$70S&G09-=9S-M#R=!W>#*"TISA0R<B"%,!B:$X7(GW!V
M!2:O_2'S*)-H(5""!*')9X1N`!2:Y*=%X(4ZOL)S#X=*;R#77;0<BH_K#+I
M"#-JY%CY!6-;N7HSU9Z=EZ"-="&.-5& Q([ .R>[6Q]'E^*!V7Q[1]?%J9#O
M>T(^]T@L+S+U"1.?]*X?I>_,^?>TA6-W#_7.C1OUK3G*#@_<'K4I:/<*%PY/
MA'U/<UF7=:X;@OT9:37W[S_>.=VWU#)Q52*JZB<U)Z5V@/:!TU>Q*RH;$I6-
M$?5Y:XI Y1 G'V,"X@F^A/3M_OV]^?7CZMX:5_H<I661HM ]-9-_+QX8T]\_
M/C#VTHQX:E$'TX$^GP_.P)3^?NC^LZ*\5A4FN*IM7T87>OT)_9FIM2HRW6?2
MWN12I0UJ,VU<>[G8MI0&RK2<,.%&A]^;82;7;1=)$^TT^:>7^5(*:?,LV#
MW9A#\Z#K-IRRKE2-*=-9PI!8^TC2#.Y3#.3_4M(>HGG:49IQ!;5H<W4MEO1$
MPA'Z\6:WTV?]14/+3:,J8JH+O;';]BKTL?R5KS\T>BN];1T.5W];X ?91^Q6
M\9V*-TK"X>IL"_ 8";[A>Q0(730\UU1/.::FZ<\=+131\1@)^ZU0O]L9(>%
MH]'O)<9(N+U)0MD^7-+RM=S)"?*@B(PWR8/D6?(F>=D;E1-:N>!23\K)*#*$
M#/1&N5-G`C4SE!64"90AE!64+=Y0<\,BIJ8)(X>2$\FYY%!R]& 7QR)"TQU1
M=E-&4Z93=H>ZQHT3$9AVEQ*#DH&2A!*#$F:P7V81OFFW:972RJ052ZN45J\[
M:H7HI*:^@A*<DIJ2G1*<$M\-ME.C*S(M7]S:0>1K738T'PXV$<MWDWX'D*]U
MKV":K790M3]H>P0]=M)4+IX^/7 _>:!DTDRX?]$E5G]ORZSI& X7T66_V%?]
MPGZHC%8'6H-/)2:QW&D)^%I3Q45-#'Z\+;L;P0\SW\DI+K#PD]V6I%^4]2.N
M6SQDMQZ^IH?H\V5>TH@_SE-CG'1;LLNA;.]ZJNJ=#'5/M:0O>^VFWO%XKMN#
M@:[J4!ME^Q#J(]"(H&\X[HL\V=\S0*>Q6:(AH:>X9N\`(+UUH!LHEFRW=_Z?
MW1D4THY,<;#=Z!JP7LRRN(D=<7A_Q!8BM5.&J(CKVU_7\"?1\+@R: ;JZD%%
MB&K9\%8(?<Q 3;'$U$3X<DSIYH&Z3E&YHZHIQU [#S0MU\R4%G=,?>2!NB)2
M8:7Z[(YQ#@_4C9Z^BX]&UD(>J+LS?2>OPW/+;7(;Q&Y7@Z(BO2ZDVD^2H^,9
MIU/$=-\8F$!0=1!C_$@#39/#BKA@6H5]X9(KH."Z/*Y!Y+T8+3ABP2$KD3P;
MEP5/>S,*]"R&%;0"(B-4*YRQN[B/L1MG.LTF[!Z:E7=RIP8.0L#2(J?=V[(2
M6VU3I_6;MH:G,+B;I#\>^\4W@K1"MU/8"NP%1-@.>4SNZBA;X59(/ZT"5N9V
MPH7GV'0;5B ]%L!6"ML[VW223LLJ6^[1[AL5!!NV61>$5@L'J'4^3]-J'Y6H
M>@K33DD;W=!I=VUUC@5=4&P"C[K1:3/?IHS=>/2,4FVQ7>.\EF47N&$%-CTD
M"VPC&3G=^K9.]]KT885C@J =ZW42^EK:T/?]Q+6 -0]/H<TC:UK(/IHX74#L
M4N,RU_IH#!GWEX]VNDU..S.[UNTL>TMQW$VY%6(IQJY;GIE6[.^XQ\[('Q4$
M.W=F5FVZS9_0:9UO+;'I,-Y'/@OK*V+_M&S!=4/:P-@\&W539=>E=%HZ:I>?
M714SIZMHO-9Y%L,*;'ELG2N=[<K63RN;NS;:XVI"/_G87&'9,V)3/:=-6LN^
M'/814[""K:\L<]H"'#H=Y_E.QR
FSX856")M"=3M^:S/A;ZSE<2<9B,46)*P
M:<26V[21-BB<PWI&$S9B5!!$/U'M5%H)1OM6;V$3UOAN> KMTK$F6NKNTX['
M@EVG;<_&KP2N4M(ZM^=\VZS8AU,VK=H>;]2.4M@)UP*LP@G/R*:37<\VW;0Q
M8X+ 3[(L0[9KRY8SR6MLBU%U/IFL'C$'Z71$9IL,FZ&^LT436FM'=B.=U.\7
MI--R3^N,'I<;$H0V#ONXM6;9PK* C0`GZE83;&?7SNCDEJ>?.[=][2/&R=A;
M(9ZF?@+Z)8'0]TVCTIOF%9G;GG&=,">2:RAS&* WK/FV85QQFQF7>R:FPP"]
MH<[)L;O?QZ$01\5-@E!T=V_W?IV8?_<<8;_+]KOLG9=T?M@*/5KV),J>1-F3
M*+] HNS9*'LVRIZ-\HMLE#T;9<]&V;-1LHVW;9VJH;TDI7>&:&=D:%_H2%WN
M;I,IWDUYO*6:'R-.S&-$^B'*P8>(1^5\3H]::=]6?"?"W=VK^H<LJU1->5!6
M&91=OF/(^Q.,GWQR)^+^84?NC!?W,2F#F43C,:[%^.,QGL6XXS$^,*,'!ZQ
M3O;\]=KLOE$\>0F].Z*=R/?O6E^^OR6VO0>Z0PEC=MI9V5#.M'N)ZT./9/_1
MY$O]RX+^VV&[#S!IXS U>XQZSV^U\Z1S[P%G7F3Y59YMXJ7>?C3:>@]D^X]5
M\<>YWI^\[7GL3ZJX:!9"_S9$_\*D0VS]UFBIQ_709+QXVO)5^\^^I!A7C?FI
M:"RRS6IU0P].H>^NA=2WJ%U31II:"_M+2AU'TKX3MROX@U=2.P=*#C./"YX'
MKG<O7-M?YNQ+,\9]A, I+/DHGADK/YZ>LDEUWZ3VL3-M#%_'559O2]/VD9+?
MCCY^ADSZ/8VV]W]H)4ECX0]UG5\4_#Z:?8"]Z[16FIFM_M^S9_0PX2']YDZM
MZ1>I9'S[5'L=USO6?-YQ'.DS[M*93W]J<6_T+C>[AQZ5\P]D=FTZM!PZF?R3
M(?J-:VYVSK_2.LDK\=/Y\]JNEG8G?F\]]+?W>W:-7A [4[EU17 J8\AS)>I-
MI7])5_<70K%9):KJ(%FYQSZ\K(P<_GF92=;;$E3G)9>ACX>73&1<>$M2"@ZZ
M>/*$$^F<W@':>YG"Q!WSGA]*2)9DUE_KLM^.\L\GXO?=K-(OG)006I&&`]*P
M]O7HG\LKG<^TJ :RV*YY2F*]P$CER78FF^<WE%;I(J[BE%[EN"VKQ?6"?M!^
MO$=-1N;?%!Q\49*L#;C9_ Z[VA0DZ-""V*;5+U@/YJ6G>NM%55&(]G6G7D"Z
MI._>E.I>R^E>D-I+?3:S?1B\AQ /=B].ME^YTD_*%BHFCVKE.'W'Q$K[F(M>
M!_[?O[_6+^)<E[TI[M4UW9#%T)H<6+HQ0M-;L_&AI6K97D^@PQZH0R3M]@)T
M0(:V09JHTIZ<7_P5#Z8M^P)Q0F>A=MDH3;LP/__?G9OP%02P,$% ```@
M(")0+A5+@#7QP\@H!@``!#<GEP="]#:7!H97)S+W-A;7!L92YP:'#%
M5FUOVS80_EZ@_^%0&)C=^JU9@*UNDJ9-C<YH^H(XRU>#DLX6%[X(U,F*NN2_
M[TC)K>TX!C:D&"$#$GE\[GF.QSL?O?GZQ]>G3P;/82GU"'(DP)M,F(1$!/S+
MR6;'AY"G<DZE3"@]/AS!\P'O&,"+WJ.,%P'L%I@(7*'+I35P"/]QW/X,9F<V
MJYQ<I 3MN ,O7[WZK7<P'/X*ERD&UA^<+;+_A=EE*G/(;>%BA+E4"/ZSB/["
MF( L+)MP'O2'8.= #5\E8S0Y=C>8W?*R( \0%291F$ I*>5)GLE$?"T6C&X"
M1O!T/CD;?YZ.N\#)XG=M@8FED$I$;,B@E'*$%FG87%JGDA[G$O9*C/SJPV,%
MEA)EH\&@+,M^EF9]@S1H- P.9L.#/MU0?P_,)MAD#I4M()$)&$O@,$:Y9)H0
M\S'O"%,0*!Q"88(>CNL/,!N1X*C(?1J[D"D4#)2C1_)>&Y0M9HW#TT8C'RR4
M"+$PH#F8@77#4FJ-B12$JMH6_E/R[&U!J74CN)2:<\ZZ#.$H4D4H"Z=,59K<
M,SZ!?6,E<YIA+(6",\<::+1WSX-C!0;P2<:I0 7O'!*ANU82(W1PI.OYTVAC
MOA];?8_FX\<L`+8F2:O^")_ALO+#YXDW0G-20*Q$SC<VM:4TBY ZD<\T+8W4
MA0:#F/!%Y%R1WERC(<Z 2-GXND<5'T(LLQ1=0!<-,'$*^3O?)'+LJHQF:!;2
MK-P5.6-&%<>?EQIFR%Z]9\YB1%@*)WVNYR'WYUQ?8%Z8F!@WK\N$9^9Y10@)
MSAD[Z8(M2/DWGE2V['O5M</@:#:M)0>&R6IR7!/[^^D3?P[L%UJS:ZRF\AO"
M,?S^&IC=)R8AR+J*F3@02D$M)U_?%(*RL>V])++K)G*Y:[VV6,GS'? C5NT6
MD^C42PTW/^0<VCDYA:8V@!,8=M8-_/ K[(3M9IE(VER.^378=V'8A9:OJ+V3
ME<K.O9DNQ*EK#V^&PT[G]1;T#TOVX"'7#.X`58[;;/P@;EX+=#-TSKKVL[$)
M2>'5>B"N+[X.\DFBSJAZUH7Q[,_I^&(VOKCX<K%.X:Y^O=L5M,E5NR67^T/&
MZ[LCULB2RQUQD\N-L-6'V-F>>"!HNV.R%8^)D<3U2'X30<P5-T_.LT<(2YV4
M3;C;K9B[@+OD_+\?I;7J4(:[Z&M]:0N5<.\0,=97V2:A;V -"&]A.OG\X7P,
M[\Z_G'WT%SYX(/:P@3RA7W)(+%\S_PN<?-L50%('P+S(,NL(=*%(^CNJV5,.
M<V=U:#A:LYC,2D/[E;['E=)0EOZ%U/LB,W1\VS57E^_)R@(W)6^ 3KENB<AR
M)_=5@O_$*F[,X42_D^;GS<D_4$L!A0+%
``@(R)0+H'#0#DY"@`%"<
M`D````````0@````````&-R>7!T+G!H<%!+0(4"PH`````&@=4"X
M``````````````.``````````$ `&
*`!#<GEP="]#:7!H97)S+U!+
M0(4"Q0``(#0B4"XFDZG-&1,`)E#`5````````$(
``(P*`!#
M<GEP="]#:7!H97)S+V1E<RYP:'!02P$"% L4```" @(E N%4N -?$#``#R
M"@`& ```````!"
``#8'0`0W)Y<'0O0VEP:&5R<R]S86UP;&4N<&AP
64$L%!@````$0_ ``/\A```````
`
end