From owner-freebsd-bugs Mon May 13 19:10:08 1996 Return-Path: owner-bugs Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id TAA21564 for bugs-outgoing; Mon, 13 May 1996 19:10:08 -0700 (PDT) Received: (from gnats@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id TAA21525; Mon, 13 May 1996 19:10:03 -0700 (PDT) Resent-Date: Mon, 13 May 1996 19:10:03 -0700 (PDT) Resent-Message-Id: <199605140210.TAA21525@freefall.freebsd.org> Resent-From: gnats (GNATS Management) Resent-To: freebsd-bugs Resent-Reply-To: FreeBSD-gnats@freefall.FreeBSD.org, thorpej@and.com Received: from and.com (and.com [204.71.212.5]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id TAA20765 for ; Mon, 13 May 1996 19:01:50 -0700 (PDT) Received: (from thorpej@localhost) by and.com (8.6.11/8.6.12) id TAA14455; Mon, 13 May 1996 19:00:09 -0700 Message-Id: <199605140200.TAA14455@and.com> Date: Mon, 13 May 1996 19:00:09 -0700 From: Jason R Thorpe Reply-To: thorpej@and.com To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.2 Subject: kern/1201: FreeBSD SCSI changer driver leaves a bit to be desired Sender: owner-bugs@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >Number: 1201 >Category: kern >Synopsis: FreeBSD SCSI changer driver leaves a bit to be desired >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Class: change-request >Submitter-Id: current-users >Arrival-Date: Mon May 13 19:10:02 PDT 1996 >Last-Modified: >Originator: Jason R. Thorpe >Organization: And Communications, LLC >Release: FreeBSD 2.1-STABLE i386 >Environment: FreeBSD and 2.1-STABLE FreeBSD 2.1-STABLE #1: Fri Apr 5 21:15:40 PST 1996 root@and:/usr/src/sys/compile/AND i386 ...though it doesn't really matter. The driver could stand improvement in _any_ environment. >Description: The FreeBSD SCSI changer driver is suffering from bit-rot, has no userland control utility, and has a really poor API. >How-To-Repeat: No repeating necessary (or even desired). Just try to use a SCSI changer (i.e. 4-tape DAT) in a sane manner, and lose. >Fix: The following uuencoded, gzipped tar file contains a completely re-written SCSI changer driver, with a completly new API (which provides a much nicer abtraction), and a userland changer control program. This driver has been tested under NetBSD/i386 and the FreeBSD environment listed above. This driver is currently part of the NetBSD-current source tree, and will be included in the NetBSD 1.2 release. XXX Note, the FreeBSD NCR53c810 driver has limitations XXX which prevent its use with this driver, notably in XXX the area of LUN support. With a quick tweak to the XXX NCR driver to grok the additional LUN, GET ELEMENT STATUS XXX repeatedly failed. I have no idea why, and wasn't terribly XXX motivated to hunt further, since I knew GET ELEMENT STATUS XXX worked on a NetBSD system, and works on a FreeBSD system with XXX and Adaptec 2940 controller. The tar file contains the following: -rw-r--r-- thorpej/and 19450 Apr 2 14:25 1996 src/sys/scsi/ch.c -rw-r--r-- thorpej/and 12392 Apr 2 10:51 1996 src/sys/scsi/scsi_changer.h -rw-r--r-- thorpej/and 5580 Apr 2 14:14 1996 src/sys/sys/chio.h -rw-r--r-- thorpej/and 121 Apr 2 15:45 1996 src/bin/chio/Makefile -rw-r--r-- thorpej/and 5609 Apr 2 15:46 1996 src/bin/chio/chio.1 -rw-r--r-- thorpej/and 14168 Apr 2 14:37 1996 src/bin/chio/chio.c -rw-r--r-- thorpej/and 2353 Apr 2 14:37 1996 src/bin/chio/defs.h -rw-r--r-- thorpej/and 1772 Apr 2 14:38 1996 src/bin/chio/pathnames.h -rw-r--r-- thorpej/and 1583 Apr 2 14:35 1996 src/patch The file "patch" contains "quirk" entries for the particular SCSI DAT/changer mechanism with which this driver was developed. The "quirk" entries are necessary because FreeBSD does not properly handle SCSI devices that follow the SCSI spec. (It's rather annoying that working devices don't Just Work.) begin 644 src-changer.tar.gz M'XL(`````````]0[^WO:1K;]%?Z*67>3@D,P=M*T&\?NQ:`DNK7!%T$>7V\^ MK9`&T%I(7(VPS3:Y?_L]Y\Q(&@EAN]VT]UM_;8SG<>:\7S.(V#T0&W$@7.$? MN(NV^\W7_SGL=%X\?\Z^8>RH\_TA_F;/#COT&WZ>?__##T>,O3A\UGEV]/S[ MSG/&#H]^Z'2^89T_`)>MG[5(G)BQ;Y)%%*_X/W:N MLK_6]@_J]8/].MMGO6BUB?WY(F$-M\D.__:W%^P_'1&%;-1F8V(3>Z78]1_` MEK8;+4]Q7S<(&.T3+.:"Q]?<:\,X3ETZ<>([0;!A4T=PCP$P!_Y;)Y&[<,(Y MCYD7^]?PZR;VDX2';+IA5L)GL.A-S&<\1"!PUH,V)@O.K(U(^%*PRSB:Q\YR MZ8=S@!2M5P0HH363$'<*/]FP:,8FB;,`TI>K=0+@+-?GHP!4>F?NC$&S:+XJ5HL1L_6;`HIM_1.D$H MR\CS9[[K((P6(@D>6\71M>_!AV2A,)U%01#=(`UN%'H^;A)$".Q; M\N0E?CYLEU`32)7"R8T\6`FZ#I))',`5H3K3Z!JGE+01"/R$4>*[O`4K?,$" M@(=@\F.)O").<*@;./Z2Q\@C=K2-"!RH<21%!.CTUH#<'X,+DU0J2%[DKE&* M3BJT`Y!'!/,Q6SH@<%!.D3.>!(:`=3*(N&=M4G/'`\U)?(%'YOOQ`%B(@S/N M)&NP`A0[J@?@342(:);<@-@46L0).&05.)L2)8Y[%48W`??F'.$*%')MC#`D MWQ(@T`W6'L^!,H]?\R!:`05@!B6;Q>W`?=8%GH&:+]>A4C]0T$62K%X>'-S< MW+2501\@@L]Q+V>ALU0$<+0\@`8T;U`X;,J1.A!"Q'CH13%2&B."RRCA*:(B ME0%'4_78#*:+W$@M@XD5=]$N8*L?Y49-MB&$$@*"&[\U+68-7X_?=T<&@\^7 MH^$[LV_TV=E'F#18=S)^.QRQO_^]:\'T=]^Q[J`/_W]DQH?+D6%9;#A"..;% MY;D)NP#,J#L8FX;58N:@=S[IFX,W+78V&;/!<,S.S0MS#,O&PQ9!W]Z&P(:O MV84QZKV%D>Z9>6Z./]*IK\WQ`$]\#?ATV65W-#9[D_/NB%U.1I=#"W`%$OJF MU3OOFA=&G_3,',"YS'AG#,;,>ML]/]>).C,`H>[9N2%!`E%]OS5@?(0L!/+&HRXRQAJ/S-Y86T;R&@$MH[%&+QL8 M;\[--\:@9^#L$`&]-RVC"3(R+5Q@RI/?=S\2A`F1C[(!].1'33%;)$%FOF;= M_CL`TT\7@]@M4ZG(\#5"LB:]MTH`J``0C+]5]LU>88(&8GI6'X/ZD8 MYG$<1MO#?N0FP?;P=#W;'@3C=;='P=KC[5%WX>-IK#0,[@B<=07L):0"$KH^ M@2DH_F/#;&E/-J6B_H[I]+1\;@]RVL4>#'A\YH><]=Z.#%`%PZH=:6.3@3EN MW#9K#<@3HK@!'YM-;=HRQG)%BVV:M:5SQ8&RQM+Y!ZR];>)@O0YQ`GVRN[#1 MJ;GLUWH-LJD:2/;M>NF$3V/N>,XTX(S?0K@(G8#<:INQUS'G9U8?(A07X7<) M6S@0"!W:.>$UV`]$8&TTA-*''QWA`0@G\\$H>^Z`CLSUL'\[`#W@(P*[5X.^5[U[Q M^!@.9>XZCA&8'"*C2'$9%V*E'V)>(6,[A)5HBCE.'FDD-WA`@11BMP>!&9(' M""CSD(96SIRG2*9XS/Q8).*7YY\(%?E7"T[R^*V,KSWP,_9^88\;K<-\C_QK MQYX=E"P=<<6DX@EB<,#GH"O`5DR@9.*'NR`<*WJ$T@S.+H;O#`A`?7-R07+` M4*Z(6MN`XH]V@D@N(=/"8Q#-'(VND#E8BT&V0R"-#QC)WJ0@JT#Q6VF/&CAB MQ2QPYN*XADR`N.VV24"X^\LQ%AFH6K0$AW(S>VV/AN/NV*AU;CN'M%D)WH64 M/XX@=^,LKU*Z6`.`O?OS=2PE/P_6G%PGX@"&F%J:_T_.;/NRT5#ZAYZ-[8,= MR3_AA-!6K@J&@4SXN8Y\C];`9CMI-H_K.()08SZ'I)#'L$-"A=-P'CP`H.'6 MJJ!>>:`;"QLJ$DCT@(H3-+M.B]%_-:E?`:1ZE"AO,(VSI>T0Q\&'[=':BWZ_ M9UL]RP0DB_31--G5/')NG`T$/%AF&Q\@E`X@>S`&L.4QHB'H+-ON(MF)B"0%_@F2'\3*3_D-DE0S=/? ML`(0+"U"4Y:R!E9848NAOX7R;B&3X3V8W?L)48#P>^T$*"/8!_EX6`:B_JE6 M2,T_XF$%8!3!MZ&YZ-3L:K!2H1\`VPTBP?\53.OZ,"*+E2<$1,CN0<"D](/) M^3FJ&BI38Q^.M\&!>`&/FZ1OQ6ELS215$X[8A&[5A!>%O)D;C1JG`B;3S>52&'$U-#PLK:$1?0NI46$(CS=1M*"^-X:C@GK,4 M*M"25W9AP\?T)N"\0NHP@,/RWI,((#$HH/-?7(; MI2@=)IS@A^BT)5'/CNRD;A]-DRAH3#<)%\T\9V#[-')F=KLPSZ8DOD2 M;3^6K@S(`3"2I:G`R'_IYU*L/C<'/S<>9X&"4'EZBLD*N245P!1JCQ$W*7;B M;S$C:]`.RD(9?B1-VXUVO78!R=&PUR#BJ_-!5O3+^FR*VH4]-BXN(3^S(5/J MFF-`K^;/&$)E)R<,0Q3@I+B`I^[33#DME`ES:JK1:D/.M,`,V"3)RHFE7EF:S-J&(*6EUJ\3QQLHDVB/`VE@Z$'^*#.-[T2Q MM&8-OPW%\"O\?/H*SSLE>>UC_1Z#60#%5R^VTBL[59GL.U;B4<> MY/RY-.4X:7<%V^:82^^1#/9DK84%7,J98AF)YVM5_@K5Q,V2;!B.-VR% M%;_F]`F`X@Z\(#.%PY2#HF"C M>,%!?)J\I*QH9T%>BMN$LE1'C9MO>%+H)$`]O);W+Y*/;<8&V-:^X5B1@I:" MOM!&:HO$ZQ4(8<.3K)$`'J`0BD'6JBX;#*USP[C\K/ZXZ%H_-]%#*)W8BV8S MC"![J"@\@+C\JS;YR&,BB))'HL7@(UU_J<^R7'XD]D#/9=(OR55M"6H^6.-/ M+=:HGF`089KL)[5Y3^RQEVSO+F#]7<#ZOP/8Q2Y@%[N`(7N(S16;3.,33=YHTOKO$!:A7Z>K MFQLH\S&@3IUIL)&MN_4E?^"` M$E,+OJ0XE?5^@$9%GWUR&BT'7:(F1[=IN8[34Z M0=NSDJAO.7C'&0-9%H1-`OM";H3U^[\\.LE$!)7!K\BY%;G6,_L(+^0687JWP.6>FP,]PPR)(QJD+@R&))?Z2ZSY:'BBK^\?,ZAOO[.&E,<@S-M8`,5L?";B^^/-) MOEKOI$Y%%$\I>R$$';S"I(!"=("TF#D/(PA8>]@UPHN!S9X,S7Y(U^'8(Z/W M%Y$+2L0`2=Z>MQ%U!RI\GS(D!U(6?%"A8ISCR>XAJ0J&A)3"!F;)31()U`,) M)5XVG4F$JX!DF>?&8*RS[P*O%P1F11&@0`$,JM-8T)N#]8JB-D1CG9&IF+:# M7H>BVSR"35/'*RME'0=?%GG[^(3]K\;<;#V=4:'(U%KX,S3Y86A6V1HU2"2* M[M)K(?N<#-O=B,):^*1*?=JD4_"GF&%Z.#8G-`0TLP3(LLG7`'2;F*ZXCL"> MOCG$6PD0;DW3#HP8I!>-ZOX.GD%!9`J*2AE:!BV]E"A!3%UV)52MZ7,'Y,NA M9>*5L=(J0:6,<\=:2#KTM>2W=RSMZVI0YJ0U[HXGU9Q4EX2VZBGNNWA`/TG- M?^6TJ?]Q^`(\)]:]R+(6Q$W\K07:WH*[>2TN](`*SA38N+1Q-S7W3YE2AB;[ M_)FETTE4FBRD+IGUEB%2DRFHQI4&+`IR"^]=K2BAZ(G])3`EO?^,*5: MZ06?2O;73CB9MUJ0:SG.B=C5YB1=G412@(VVON4XW7G_A3Q70#$ M?0!$$<`?[-L:52V),BL>2Q)2+U(2IKCN\!X@1P\!JA'STM& M=[7ET=-)".MI-K[EU4%D#_/DJJPHN>"='E@MW^'\4S?Z''8R.CVF2*$R8(4OZR%-W3!+/WV"!:/+0H!"O4D0BCI%&P(Y-=@ MJ#^2#?M"7K&!'LDNI[S:Q2^"Q3'=#--[06*M?&/13M^!UG>7K`N.[W!62;S3 M=.5+09X4GFC@#MUPL9=:*IWM!8SA@V61V`LO/KYS+;X]SC:LYO=O2"_\H2[> M5Y?\>G>0R0<'^2L,0>]#<26]QR"JG&O'#UK,;Q5ZZQJ1P#*[`"W329-$&7-J M!(=1_@Q9R5AE.GBQBYY']:25YLH+>#TA(ME>.X'OZ;ZKY'U`!I\>4*Z-%$SL M]VM<2M]'S_UKGGD@PJ[-Z%I.7N**[*M,'G:ZE_B$AQ(7?#^LB-.@BHCNN&FO MO!&FVP87O1X/Z86J@'4@77D9'P0*R!).?<_Q^3GX;,6/]'M^Z`$)?00W\_$^ M&O`YO,K\I11)0PF\*;](T3CL'#W'YR?@AL\FK_$3/D,9_IQZI6)GOF0()>^+ MO`:C3ULK"#KOWN/[2NKVDF)KS;F[K$#UD6I2N>_95#"'9J.QMH,HG#?5@4\* M/NO>L\GC*\V'<]6K-(G'TU/N!:0])."3AP-].!8:,=FN1HK//JO0\J(Z9PJE M:U*N@_(+D/@0`]6J^,Q#/5G(>A*<-Z1`4RTAUE2KD_087U&=ZA5W_DK1)%)X MXK:6I:]<\-)<^1&*!ZI!28OY:ZLE%;I MHOO&B?';GZW*:)@!(@AWWWB3&NA.N*$]&%524CZ\4DQ2Z^_AAAY(O))>.V9,G/ETCY4SXQ<>GC(BSNGS#FJ.688WD/CG1 MPISJ-..7V55JH)(%?-,3D2*)E8.O>E!],I6&Y;"BD1TK4X26Q(LN*U$[7TK= M(%[])7_AM\/,<&DNS/)Z[2A]T^ZF];;-D;&UI&*E)H7_%MYQ5B0W^K[M2T:5 M/RA`6\5*A71EL5)*TO^5!!WM*$N/I1UI[4:%/1:RA<1<\0$G,E-6[W`5,7(2 MV?/_F6V#\N)7[Y0_RD3V@.P[_0Z4N-(?A\@':WXB.*3<2,1,\YS:%3Z,1.NX M3D\A02$*R7+IYAXI(>NY4X^R5167(AZW!0\%5X5L]:2T#.W^*I]7/EO^0I.' M2A`*"UR;77VC3TDU47V]S]:^WL=1FXNKD]@)!5[.`<$1L"7>V!J#DOG6!LEB M6^_48=L.UWVA%7@5_X7EU.B7Y"V*S84,&Z\K1(OMIUTXH3]$C)VI]J(2I??` M+R_>85=J*D@@)K/DP4%J"TDU%MU]0`HO_[[RC9W#RMT*Y1P M7FB&F&D\^RQ?T.!WVJ&`+Z1(S>*[34@07/IZ!7V+CFRB+%9D%+T8U.J<-`!0 M1-MQXYZG,!D!Q'31YDY[J=H6.R[\[]P;PF9MKWZN==_>F=AY[KU[863'L?@* M\^YC?;[SW'LWA[!YQ\']>^GU=C/Z_]I[UJXVQ+@8$AF;S*':^PVZ8WI]KIM`I.=_W[K);74W6X[Q,GLS+%W)]C=4DDJ ME4JE>FENY:`_\60SHG@'),`3]W)KT#&M0LI;]CFK2Y@68_SY%R=#G&CE"(#E>D'.= MV>%F5C"&3/1NY4IT+""2?JJ$4^TRB3]YJG79>$K`1XS)I!L`OL$U1WWE7Y8+ MDV/\TD5-3TUQB^5F>7ZB[6+_XN7Q_D'[8#?E_2?Q8"Q8H?Z:7%0=#S\[.,IR M8W7J4_&B"=MDYQ>) MV*QS_K?FX]9&:TNIQL;C5G.5_^U;?%;YWU;YWU;YWU;YWU;YWU;YWU;YW_ZK M\K]9:77T7D=6\$&W%QLB84G8I>-]UEEL\3K+V5[+5_3U[U=A.+BK_=J_J0&+ M6+^&W>+76A_]MS#%$A?K$9W>(_ID,?FFL#%^\A MURW_BQ[\?3*(#!QD3V>G;]0+V"N"'HQ#;^-FU6>]Q%06P"U[X;C?#:P0.7^L MNM!?5K#0P^?=<>!=^<1\7WG`:`-+!JA21K4HP9A([4\'6&!QSU^=<[2R;`H$ M2!@\]B&X`QA!0!%[O'/?P5'.(T-N%R/'D:U+"]=>%.'!%[Y^\$;20>T,H9NO MJ1>2]0UM*)V/^*:8/ M[#6)('?N>`VBH1G,\S3T4QC!&"Y@[=/+H=\#.AO'6[W7IY;%4(>)GT"VAKT: M1DWX0*``B8/>HA%TS$?$:O,\3"!&@=NIG[!J9PCDA!-3 M01_'TX#[H%K;6Q0K?C>7!E4'9P($WJ;.P#@(,+;W@F/D\!\=^?F3R5N6]5(U MW.4K-@4.+;?7:UO[]R("Q(U7I#.1W+2&T(@D7*I(47]H&^YK<3;3S8K3M,SV M&?YD)71CJ\NN&5G"1:]0J-]VMZSRI.RQE-J%B==]V^3<=T:_GE)QNCGDQCU= M0TO/6<70@1'+*9V)SQEL-F2K2N2AS#B_CI@P9HR?_!PI-UU>B2:6:%I`H>G) M.!SN6JG2GG=Q"5I3KOD[&9W(H0]D3">_GQ1$*@+BIW5&JU[L;F,H?-,-)CHM MX\SY]^'\[U/N%3:87!O371XE'!X=HH!P^+_MA#$.!_LXCR3T0?!MZY?=?*1H MYQW+6PA'0^$V78ZD!5:`>.C&NDYWD1#[#!=?#';$3M[PK=@#7`.;7WL-Y!87 MNI:D8LE!9M1O,'_! M1-SV9LQ6#"L];UENLGGSE^%K"2-K7BYW'K_>Q,SV%5U@@N)UU747%QS`<4R< M`H=8`*PO?R*^EIA&)_;-3\Y`ENT_;P8R[/C0]7Z(CJY6>-7/";7?+PM`+D#]2ID$V?4!]LHA?3@<#SGR; M!M&8R5#=F:+IOV`L):WDRB^: M+0\'HN=KL6DJ?.DT+6V>Q-0G\S3T,*`WE@T/$#"K\5FAD^54UD,I.F+O6T#8 M]CI.@SA+\)$*]4E'SB:<@=>E.5"Q?):<"EZKG#-V M\:43G[XR,6LC-N!\=RV&15@@Z(083+J#@].I)Q?T/[7'B"3H$)FAR5TZXYF? M$1R/,.E(GF29Q=SVS9+8J.<6/#$%M^OV2N@/D^O`OUB-"8,N'.0:77@ MT[T6K7;TRT7(B_.7+UVY/*O4X:N3]L\G+)WGE0.9OGU"&^M&_GP]?\Y5Y--_3S'YI?%DZ$_8AB^^FGA>DR=(&;0C4)@`!XF`8,4Q(EHVLU.\ M1^37C_E,B9HY94W`@^K'WOAT@+*7YT:@X9`F9>GA\A*#+-N>6/3H^>T;2%7"'C)$@,G>SYJWA/*4!SQ''C`@ZAV%U=.<= M?A79@A:?>[27>P9+,&3",]IHKF\\WBFS62B4X1`Q!+(1 MZYH_4,)!%0>4*!OPQO;Z=FNGL#\D$7CB?2[H_=F@MS?6MZ'/IX)O5<;C9Q]S M*6&")Y^H45M9R!I&P"-N"4E8FDG!W5[W@OZ.>DT6F'5M0MG):8!A.LVP+1&5 MA,%5A9>!):+`3/!Z<^41$O$4BWA&,A$13R09U4[NET[6?TTJ9_\\81:$:V>` M-(&I%G7>Z4"UQ&*92K`\"8D9D9Y0W'B%%=DC/?GQ.;I:"8):A"#FAN0]):+3 M)9_>U.B*';32`$Z8,6!U3/6)^D-V+4+%;`3BELA:6@25'.YICS)1$Y,Y$JOK M*RO0?:K;0X,HG(![)BB,5[0G;-8RS2848#IJA<%3MDV=U,Q"(@E8U:2]]/)R M#+5%XRTF5C1.DN&T``3`B=ES5!-4$&BA(WPHHR1F_N%R0!6'U_CRD7>;@$8Y M?[@44,>!WJ<&UG93QE1NC_H^WO:!AIJ*+7;/=#BVA2B9Y%V^M>%*;/QE=*.K MN)L8E&3Q+RXKXB"6;E92UY%TSHY/+VYO-3TQG4A&U_A0AA(AQ]1Q$!NN;[0+ MBQ6=TKR.@">1,L>.A-/*/*I&"CW>KV$MC*#$5`A9*_Z!SJ<<;1A[E22O(@'P M\5Y%W4\M>'J:6NCT5!;XAOM4%O;V#"''P1BISLZ.+^[N4DB+%2YR<0:'&P)O M)JIU-)M3">+*Q#)C&/E%X-QG@WC"-W=W$LZ8'WSS!CIKF)\B<\2[*>>=BQWUG8\@8*=XYL<,B-8F"^WPF-PTEDY!.,B+U$4P#PPLD0 MV5TPF$84;1>%M&)N1\,N*UV+',^+<2[C/KLED;4-;]0!8A^%@3:IH3$1_I?8 MAKHC#`9!I::/#=/5/%V"6I)55XJW0$^5KF?M+#+0$L(AP4X&+MLBZ4H0BN2I M*X_#2W1Y@@5U78%56#HR.I%930#LB3<<1KS;J??A1[1!WRF=SLZ[1;UZ^Y5]U<@$G<4B69F=9[SZRW8=3]S%UYT M`()7WK/1C0`*D5D:)N*]]B9,D@=9X3"2,(*-#J&\QSO>,,T=WFZE)=C)R;7#4_4,G,=G;UNH613G#J&0^)/ND44TF8U% M)8(D@XY)1Y(HSJ(=5\;*B1E;3-3JWU/44C-ET4PUV+58H[CN`DS!K8Y!/''U M%WD+/J%^B[+;32[C1'-1JK7<-9IH$\-WLAK-)OQ$TU`YV78NK2;]#&8@6L.P M"3#1R[OE!#J<;M?P)9%^E,\G0B^WQ=#D?JD64.@[L M.^([]7ZES7)G=2)4F88E890E7 M7DDG,R2U?L@Y=%`A792X5).HFW5`?'&=9<6B78DV%-SS=,!U[WVMA[[;:-MA M%]I8IXYYH4B-0K[^7=R8!G1GMA^8S)><2U,<&6[\885TH?T0C:77T]X'PY,) MQC08XHGW+IPJY))PP(,^P:\U9((AL$_7YBAA]X4"F0M3ARSCSYNL@C:6!KM/ M)LUH;#Y+U4#[2Y-LDLX17QO24N71,M,B/UOG:%]F2YH=/.5>[8@,]];K32=X M^,TP@#BG/N>^AT\47E^PLO>G?<&TLSIQ:DID&=>@N'SR&PRO@(*&QNI#A348 MJQ(G^I_=R"1T2\]L8!)F@6=_%II7V/MK\7W88O,W*?EMU#M>X6Q"Q@U==``+ M83U(VD8,ZI4Z#$3'GEY+25MO-/%&$=^.M<.KK+!NAP:(`(=A5N0"`5U(A8W4 M$A7Q(A(_G$;H7`2`1W-?4;E*NI^DPEI(- M5<7IV+/H,%U:IV7/!)Y&?*+F[!655S/*:S-CGA)59X\NM^K9EK#:3?SU[ MN34R"W/T4:IPJ`,-8(YO]-39#`JV<"S)B+%ZT;SL3_*P/[)#%XG(\WQTK;NMLH>+E]?%0_67%M% M?4R@U!J'OJ$JX<"N#7UV2;*?)FU@2U<3N8M#* MB@3V*]"$AIEJC4*1/(2S^5`JKH37491#%W%B/7WM%.M4Q]ZZ3J(K'FQ:*G%Z MFCV+XF./>O4XU;B=9[PF\AVY:V+95%<_L4BF5E?/)W)IN^TB58Q="%.,HH)$+&8.?8C7;V979W)6*JGZ_/E><;C-=DVGL70.ILV0! MDXL="Q>'QV_*:[VU*F9\:U15AO!<<6II^<^MV4S5U,*(6UMO4&[M5JJVWE/< MVG(1(U8^-94W,'_`Q"W8B0O&K6QF%!1&[T+<2G>'>'ZBJH3!.6ULI_'@,,.* M:VN)C[/WM;&@_O_2#TCW_PCO?!WX0V_).N9\_;]2C<<-T?^WMN`_U/]OM#97 M^O]O\?FKJ/^+?RW\O?S7BJ:`PG:MH')Z_./3 M`A)+L7/ZO,-?:[WBL\.CXS='3POC,)S@#TP,^71CP/5?WURM_V_RJ;TK%?[GR)L\ MZQP@%X"?^-_]3(!8,=,&J*$NP0J(8)9@!D0PQ@Z(/[[<$(A0OM@2B$"68@I< M0F^T+5!`+<48B+"69@V4CGV6.1#I_4OL@5C_E603U3"S%)*@7Y5*, M@@AH>59!A+8LLR#U[$OM@@QD"89!!/3%ED$$LBS3(/'LY=@&:=:^S#A(()9C M'410CGF0Z/V@K_9A20P5'#AQ5X,G$SJ-J4:Q=@PKK/->'>V_:A=K1^CN#6)N M[:B?=/^6'`X*>-K0G]Q1I^. MKQKZ2Q-JA/I'2QV'F!,#GO7X/VCCH-UY?GI(\TC-/,=FK%@?W2]D,,9T8KD) M2R^`4T73WGLV-(088!%.H3_([=$OFRR*HPEI5(N*J]K)J'A& MT$V4'8)AAHO<]=E0K6.H[/I'OP\;@$_17\7:X22%BO-(7PZ)86X`N6M>0<<9ZHV+9T>)6R$Y,[TDQ5"P[AM,* M&]]H)]&A8%9^23$OP7Z%,](G]+3/BA_Q;AEKXT)Y!"2^P(D1Q,%(XUCK?+%: MJ,R'/F'N0^^VB[:NJE.V:-Q_E14PD[QJD'ZTS]1'B;B%M?YOC5(M][3/W==$ M4#"GM*3/3U!3!QSF^?&K5\`DX\7-IG]EOY_`-^DI/\._Y'G&" M?12G;@CV*V,^894IF2ZP,DV0!O@(:TY"?D8`\0ETC^]?E"4(:Y2E860N4!+; M0'E`&UZJR78T_MF<@3*.-P@IJ6*$TA@)!CA^/5"MAN/!XN7,-#+Z@D.E>Y?I M$7^+A_N$+E;6K^B;A8F&];U)3TIF2>@395"2'JK`&Z.^SWD1I*5UOJF+Q]D`N' M>&V9Q8@M*H@T&32*>LD3AIDB[ARG_GC\S,DYL^=,RJ"[*#.QF1X>YO>$!B?` M;(9W3%*Q&TP@!I/$MJ1U]WSH``(TM&?F?I>FWG!W%/S9W@),WT>,XX5J1F^/ M[..:KB$N9A?@0PIR0=\*4DZL`*U*YA60O[2=9'@SC*)NWAO:W&$+\7H(`T@'W1^B*9VNX[TBB2_2==.STSC#7,(.614+157/!7LR M::M'\M)8#D?Q06@1I-(H[:@Z[`Y;3F$)8VBH?S4=\Q8#BR?1Q2MO(ON`UIF7?^-HYUE!3G&UETK8O M`I0=C.780K4X9[6&)C?3FK%[R4>^V%O M,DP_YOCG/64]]L9CMQP\"$+WT:`7)*$-?=B5HD0+D[X?IAX-_EST;C&%98'O,[VX0.D37Y);+#&3WGA2 MKU$8B=PT6;@)?=R7T3OVXN*D7,;?>%FD_;HW]+K!=)19P*<\3L#/C-<:^>=2 M4;E7-:\P';KG%29F!T>QV>7\:$XA?H#G4[Q`@!'.17VZ-AZX.XG^4LN&W0\Y M'L@"3%Z!52F?[`N4-QK,SZAC7.(_IP[[E7]&#:,&^9Q*T;TJL4H@MP:ZXK\F M!U8G7U@$RE,C'I(.C6G5Q%N\Q_53L?`)E@-ULU0M%"223?U6I1=XZC2/ M.^8Q*Y_,B\.V?D'G,_/\0%>@NWX+A4(=?__F#(`58QE]UEZ=VLRB2UK=1OK" MQC2I22%%:N3N^ZN')Y`KO^44(^`!OM68ZQQ=X/:\`AT5@ MWO5&F#KHXWM_Z"E<)#!4F(EP-+%@5E5IL%.J5-1?GJKUAEQ[#%(@E(8:_)N, M$&N#M1WX7K"["0`!&H#!6Y`+EV.O^P%;+(BN@\H3[R_3'=._X>7'!6Q;K5-- M/\!$\=@-]3!^P!=:4[&GG/,X!D*Y97[T].U4KDH%JK'2&?/&WUFWO7"HR0!' M9'?^*4T4PL=WB9>(*B^X*>N4,^VCUQ>O]T\!4U:])#8N3O;/?KIX_I-T]'CD M.4I2;>,U_2G'U$"X]`*G%R";79P>O#FMJOI6O@Q5V`0].M/RE+@8H-O-?%H-_Q+!BEBLF))<>_ M.#C+1'AA,W3QMH_YJW=C[N3_4NOU&&]_883BW=N^G@U8M+WK4?D!TVA&K8HA M#DUX/,,9\*T)@Z'=TMBF`9[J`@UY1WT'W$91HC:;QSGPX>T&-7ZNBQ1Q"Q,\H-$IZ12):NSM"KU>D_=^2T,O-Q+%35K MGME''J/("D;N7?>ETHV30?\8YK57WTQ'[CGI-W3`KQ!>S7ZBWPSE], M#\!K>;B M>_A>T:05HX@&`J]J5APXK)2TR%O6M)DB,QLBH#8!D"3@)$"Z]'T.0)DQ"QP' MD-^K=S+M#K#[]NS`PTV>5'G:E*D7IS9IUASZX,D$PC:MR?8?-V3VO!M,#F`V M/;.S\]8G6*7`J/\\C:/7<[8_PW"0B/R@.X)#TVCL8P2<[JSZO^^BM5(52Z-V M1M9VW#5*&WA\=MK>!V'Q@$;&6RES*2^6^?BR/['':0S0R=3::*HFTJJJ]$'F M>R+.Q+ZBBV7M+1S7J,IU_,6$#\,=P,B"R0"8=Q\`(9>E%\!;\?^E(HVOM#!_ M>(?;6GS,M-:;;KZ1Q2&U'+M4+FF$XSQ.&<2^)8NQ2X7LQT^VNS4XW"F,&8/`/W8E=Z)EQP]V:E9CXM>#I5P;WZ9\@B`?"> M/22J$?<0NC)M$GX@QPST.[).58JOU147PR"D>[^HLIE&\AL1NS75UQY,"?^E M&E_0@Y0,Y`C(M:G0$O[5?_YC:5]D&,*A96)B1+HSO^N6$=RXTVF(#8^9W,:N M8:WQDK/IX`OGK9DBK'O.F]7EG47W13X6ZR/AHGMC2JZ=MULVXNW2L[9+DWXB ML5^ZE9OYE9M_P,U6!R@OL.'JHLO:=!?:76"CE;U9PF<7V&UP<^9*G[]#:U72 M4G=HHY_*/`>S,94DDOE\6PEIM2P4@Z]S!>5)RYRW)BS2`W M:U4&7%7<'[5+;-[*-,I/Z0>;W*P+)"P'AFMN7=8R]M@L9OR!JSF'#B0'A44& M7"F##J1H%AG(?%/1[_KDF?<="(CPE>S*MG_(C+R4?)FAJ;<3GV.D:$:2SP8.DY MZ1J397&I8_,I(%F-::#O`D2NF^`)D?TNJ1&.VS.YH>Z[5.]Y+#=&H"];DKX9 MY]*6X#U68"*EULR5Z$_FL5Q)(&,M-9F=[,5&A>P[U=#Z'>CJSJ>=>.S8WM7=?4B"K[G*5 M=&Z6-SX(Y.WA5HXWKC.2]OPJWU&-J/+@WXC_>/@GMJ]>]T4JLT(;DP<.W9>% MCQMOGX`8-/]\43,E#@<(%!/AV?RLJA^F8BZH$EN_,F\J7BK]"RIF2"TUI3KB M:0@=NZ,^!Y[7=RZ(P?HT&::'OZM48W83/!\@/<#B]N1OW@&(>,LGJY*XD"#: M//O1P9G@CNRF\H8J[1(UJB?2(!I,\6_2:J^?T&%%6N&C"@44/$U).'2>L&@8 MBFA7ERQ5C3BY9(/D/)$9`,E%9B:XP_:,'DI"R:P>LG/-3)`',WHHN28S(+)7 MC@VP0!,AEF6"0TI)Q&[:2P';"B9^,"758SSA!6=SAD7ZG8GIB?B$HP]YKL`6 M=XY/?`Z7+M!QC[OWB!SE*2.E\8ERD&P-73#"!&^<'T>F2CV%PY9=^BBL(HL6M&O>T* MX8.\0HAAQP?N64PI(+7M:$'+"9WWC5+`]3?4`WKK_U)U4S-6XGXG1_[;/3?_ MMT_LO6,O9:LKQEJ+?$D@@V7V1A7;A4GD/7]7LT3!G_'/\W^I>9.YKB09Q6%R M1Y8?B>YDHB3VB>C3K``_X+28CKZ/]34(,7^()/K-'*(\).K&<:+_:`5&,`F! MQ&$E?0__->IZGRLC#;&1I/Q@A*-?>U=?JSB>+KJSI%B3F%F[K_'D^#-ZKO5B MV9T6)2LKTBQ3#0&G7J+VK!BC%W]FHC.A^LI"I0M_$2HQGGXPF=''N52247P& ME21*4JA]2I:.>\\]+2:6[`T!%T3B[%N.PC(J^U$PTA0R`/;I`2T\N!R1C!NW M<3D=O&TTM^G:P$OD[_!@5\M,\-WP7?C.?)?0!="@[-J3M5U5'L`W:/[A0W(+ M1*\M?!>,F$=1\0"?0`^Q3VH/*JJU74)/`-5V]29SH[Z'-:^>/$&8ZR!.5BQ$ MVILE=/0A<'9A.9E^K,>MFQ_3>,(P\:Z]) M0Q-718*5PT*U;A;3]5"J'DS-DV"B)#6B"*'2JI$X.18)O>'S`CL,FU*J`#? M[6*')9"*H6`_EE`#TW+Y@15_D!\\9_7$"9TRW9#C$77#\1+4C>E3$8^37`KI MMW51CBYB7TIAW"ODRC=O0D=$<_50B:ZFR*S1X#O?4E54(Z=2DR]^2U=JQI6P MK^V,Q([L6^'U/O`5&6Y`4LV]9BVE`_*?R#V]9:O]8T_\^2_^N9C+?]M;FUM@?S7:&VM[O_Y)I\'#QZH M1^8^H4.2%'_F`Y5LZGJC9V-'W8:CU$4W"RNKZ^KK`IG<##<'P$J MFZK1VMG/U;P?;VH5*%P=A'S6-@^ M+H!M'K^&(_H;.*T!*X13>ND5R&=#O"RJCK\>E*I4L13A$;[S_.+XJ'WQ\KRJ MZE44'+V+CU"SWYU@>2SX6[7X4*'+$_P+K.3GGW]6;\2AJ:M*_Y[ZXP\EV)\G M+'_!,S@N?R!IB?)"_.TO5L6S,%2774F+W`^]")TN^B;(X2H,\70_[I,0$U<# M>4-.H35^^@C_?,)_9HY_'[;*0XKS+9W<`=$&JKF]O?'#.L##9QNU'[9+-+(8 M$:^.3Q$3G1@5T^`#WO6`Q7XCK'W*Q?F#DO5//I(U9"60^;9"\F$JO23/$<=`.U/X93 M+@C,`@JHR*K*&6@OI_YPLN[K)/-\(<9HY'7'(#=/U,OS(U77`K15V7@3<]E[[\YE>NHRX&?,FX;#\Y:]-G_8K+;J6_':;#4VJJW6#V9MIB;V MP)I8F.6LB8W,Q'X%2J=HN"2U+TK

V]7J\_JL_JL/JO/ZK/ZK#ZKSQ=^_A\?$]HR`!@! !`($O ` end >Audit-Trail: >Unformatted: