home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.unix.bsd
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!malgudi.oar.net!caen!hellgate.utah.edu!fcom.cc.utah.edu!cs.weber.edu!terry
- From: terry@cs.weber.edu (A Wizard of Earth C)
- Subject: Re: 386BSD install problem -- can't mount /
- Message-ID: <1993Jan13.042201.28353@fcom.cc.utah.edu>
- Sender: news@fcom.cc.utah.edu
- Organization: Weber State University (Ogden, UT)
- References: <1993Jan11.022758.10164@cs.wright.edu> <1993Jan11.224035.2823@fcom.cc.utah.edu> <1993Jan12.005906.13693@Princeton.EDU>
- Date: Wed, 13 Jan 93 04:22:01 GMT
- Lines: 762
-
- In article <1993Jan12.005906.13693@Princeton.EDU> bkc@ernie.Princeton.EDU (Bruce Caruthers) writes:
- >In article <1993Jan11.224035.2823@fcom.cc.utah.edu> terry@cs.weber.edu (A Wizard of Earth C) writes:
- >>
- >>386BSD asks the controller about the drive geometry instead of believing
- >>the CMOS settings. If your CMOS settings don't match what the controller
- >>says, you have "translated drive" problems.
- >
- >Is there any way to tell 386BSD what the drive is set for? The settings
- >for my drive are significantly different (manually configured long ago)
- >from what Seagate reports when you call their number. It does, however,
- >still fit a "type" listed in the BIOS (42, if I remember correctly). I
- >am fairly certain that the current settings are *not* what the IDE
- >controller reports. If I were to change the settings, it would require a
- >lot of work re-doing the DOS partition and such.
- >
- >Thanks for any help (at least I know what is probably the problem, now, and can
- >change it if I get desperate enough),
-
-
- OK... I am going to put ide_conf.exe on ref.tfs.com; in the meanwhile, for
- those of you who can't wait, I am reposting the original article by Frank
- Maclachlan (Message-ID: <1992Oct18.153007.28120@crash>)
-
-
- > Given the numerous inquiries about untranslated geometry on various
- > IDE hard drives, I wrote a quickie program which can be used under
- > MSDOS to report the "default" drive geometry. The command used to
- > query the drive (identify drive, 0xec) is the same command used by
- > the 386BSD 0.1 wd.c driver.
- >
- > The program does the following:
- >
- > 1. Reports the drive configuration as reported by the system ROM BIOS.
- > 2. Queries the drive for its configuration and prints the geometry
- > given by the configuration.
- > 3. Resets the drive/controller and delays approximately 1 second.
- > 4. Again queries the drive for its configuration and prints the
- > geometry given by the configuration.
- > 5. Asks user to reboot system since translation may have changed.
- >
- > Steps 3 and 4 were added because I wanted to know if the identify
- > drive command would return the sames values after the controller/drive
- > was reset. I tested the program on a Fujitsu M2612ET IDE drive (90 mb,
- > 1334 cyls, 4 hds, 33 sec/trk) and found that the "default" geometry
- > was 667 cyls, 8 hds, 33 sec/trk. Note that some (albeit simple) trans-
- > lation occurs on this drive in the "default" state; this was no doubt
- > done to avoid exceeding the 1024 cylinder limit imposed by the system
- > BIOS. Also, the "default" geometry didn't change after a reset (it
- > really shouldn't); the drive's translation mode, however, did change
- > after a reset (see below).
- >
- > I noticed some other things while playing with the Fujitsu drive.
- > The drive is installed in a system w/ an old Mylex 386/20 MB.
- > The AMI BIOS does not support a type 47 user configurable drive
- > type, so I chose a drive type having 1024 cyls, 9 hds, 17 sec/trk.
- > I didn't really believe that the translation was performed in
- > software (most IDE interface boards don't have an on-board ROM),
- > so I wrote a program which scanned the disk by talking directly
- > to the controller registers. The drive looked like it had 9 heads,
- > 17 secs/trk and 1150 cyls. The drive's notion of its geometry
- > (translation) is determined by the 'Initialize Drive Parameters'
- > command (0x91). This command sets the number of sectors from the
- > sector count register and the number of heads from the head
- > address field in the SDH register. The drive then computes how
- > many translated cylinders it can support with the specified head
- > and sector count (that's why I could read 1150 cyls even though the
- > BIOS configuration indicated 1024 cyls). The translation was cleared
- > after a controller/drive reset; the drive then behaved as though it
- > had 667 cyls, 8 hds, 33 secs/trk.
- >
- > Also, data transfers from this drive averaged about 300 kb/sec when
- > the drive was set up in translated mode and about 660 kb/sec when
- > set up in its "default" mode. This was probably partially caused
- > by the use of 17 secs/trk rather than the native 33 secs/trk; the
- > 80C31 microprocessor has to work harder to translate addresses.
- >
- > For those IDE drive users with a modern BIOS supporting user configurable
- > drive types (type 47 on an AMI BIOS), I suggest configuring the drive
- > or drives to the default geometry given by step 4 above. This results
- > in the geometry remaining constant throughout the 386BSD's handling of
- > an IDE drive and possibly better performance.
- >
- > I am enclosing the program (a .c file and a .h file) and an .exe file
- > (for those of you who don't have an MSDOS C compiler) in a shell archive.
- >
- > Hope this helps!
- >
- #!/bin/sh
- # shar: Shell Archiver (v1.22)
- #
- # Run the following text with /bin/sh to create:
- # ide_conf.c
- # wddefs.h
- # ide_conf.exe
- #
- sed 's/^X//' << 'SHAR_EOF' > ide_conf.c &&
- X/*------------------------------------------------------+
- X| |
- X| Name: |
- X| ide_conf |
- X| |
- X| Usage: |
- X| ide_conf [drive number] |
- X| |
- X| Description: |
- X| Displays IDE drive configuration under MSDOS. |
- X| Optional drive parameter selects drive for query. |
- X| Legal values are 0..3 where 0 and 1 are drives 0 |
- X| and 1 attached to a primary controller while 2 and |
- X| 3 are drives 0 and 1 attached to a controller at |
- X| the alternate controller address (0x170 - has not |
- X| been tested). If omitted, drive 0 is checked. |
- X| |
- X| Author: |
- X| Frank P. MacLachlan |
- X| |
- X| Date: |
- X| 18-Oct-92 |
- X| |
- X| Compilation using MSC 6.0: |
- X| cl ide_conf.c |
- X| |
- X+------------------------------------------------------*/
- X
- X#include <stdio.h>
- X#include <sys/types.h>
- X#include "wddefs.h"
- X
- X#define TPS 18 /* ticks/second (really 18.2) */
- X
- Xtypedef unsigned long ulong;
- Xtypedef unsigned int uint;
- Xtypedef unsigned short ushort;
- Xtypedef unsigned char uchar;
- X
- X/*
- X** The following structure corresponds to the ROM BIOS
- X** disk parameter table:
- X*/
- X#pragma pack(1)
- Xtypedef struct parms {
- X uint ncyls;
- X uchar nheads;
- X uint res0;
- X uint wpc;
- X uchar ebl;
- X uchar ctlb;
- X uchar res1[3];
- X uint lzc;
- X uchar nsecs;
- X uchar res2;
- X} BIOS_PARMS;
- X#pragma pack()
- X
- X/*
- X** The following structure corresponds to the values as returned
- X** by the ESDI/IDE identify drive command.
- X*/
- Xtypedef struct {
- X ushort gcfg; /* general configuration */
- X ushort fcyl; /* number of fixed cyls */
- X ushort rcyl; /* number of removable cyls */
- X ushort hds; /* number of heads */
- X ushort bpt; /* bytes/track */
- X ushort bps; /* bytes/sector */
- X ushort spt; /* sectors/track */
- X ushort isg; /* inter-sector gap */
- X ushort plo; /* PLO sync field */
- X ushort vsw; /* vendor status word */
- X} ID_PARMS;
- X
- X/*
- X** Used to manipulate identify drive data.
- X*/
- Xunion {
- X ID_PARMS id_parms;
- X unsigned short id_data[256];
- X} id_buf;
- X
- X/* pointer to low word of system time value at 0040:006c */
- Xushort far *TimePtr = (ushort far *)0x0040006cL;
- X
- Xint drive = 0; /* drive number */
- Xint wd_base = WDP_BASE0; /* base I/O port addr of HDC */
- Xchar *my_name;
- X
- Xvoid reboot(void);
- Xvoid chk_drv(void);
- Xvoid dsp_bios_cfg(void);
- Xvoid dsp_hw_cfg(void);
- Xvoid reset_hdc(void);
- Xvoid delay(int);
- Xvoid sel_drv(uint, uint);
- Xvoid bsy_chk(void);
- Xvoid usage(void);
- Xvoid io_delay(void);
- Xvoid test_hdc(uint, uint, uint);
- X
- X
- X/*-----------------------------------------------
- X |
- X | Main program
- X |
- X +----------------------------------------------*/
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X my_name = argv[0];
- X if (argc > 1) {
- X if ( sscanf(argv[1], "%d", &drive) < 1
- X || drive < 0
- X || drive > 3)
- X usage();
- X if (drive > 1) {
- X drive &= 1;
- X wd_base = WDP_BASE1;
- X }
- X }
- X chk_drv(); /* make sure controller, drive present */
- X dsp_bios_cfg(); /* display BIOS drive config */
- X dsp_hw_cfg(); /* display H/W drive config */
- X reset_hdc(); /* reset the controller */
- X dsp_hw_cfg(); /* display H/W drive config */
- X reboot(); /* ask user to reboot system */
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Ask user to reboot system.
- X |
- X +----------------------------------------------*/
- Xvoid reboot()
- X{
- X fprintf(stderr, "Please reboot system!\n");
- X while (1)
- X ;
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Check if controller, drive present.
- X |
- X +----------------------------------------------*/
- Xvoid chk_drv()
- X{
- X#define MASK (WDM_BSY|WDM_RDY|WDM_WTF|WDM_SKC)
- X#define EXP (WDM_RDY|WDM_SKC)
- X
- X test_hdc(wd_base+WDP_CL, 0x55, 0xff);
- X test_hdc(wd_base+WDP_CL, 0xaa, 0xff);
- X test_hdc(wd_base+WDP_CH, 0x55, 0x01);
- X test_hdc(wd_base+WDP_CH, 0xaa, 0x01);
- X sel_drv(drive, 0);
- X if ((inp(wd_base+WDP_CSR) & MASK) != EXP) {
- X fprintf(stderr, "Drive missing or status hosed\n");
- X exit(2);
- X }
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Display BIOS configuration info for this drive.
- X |
- X +----------------------------------------------*/
- Xvoid dsp_bios_cfg()
- X{
- X /*
- X * Array of pointers to HD parameter table entries indexed
- X * by drive number
- X */
- X static BIOS_PARMS far * far *dskptr[2] = {
- X (BIOS_PARMS far * far *)(4*0x41L),
- X (BIOS_PARMS far * far *)(4*0x46L)
- X };
- X BIOS_PARMS far *bpp = *dskptr[drive];
- X
- X printf("BIOS reports drive has %u cyls, %u hds, %u secs/trk\n\n",
- X bpp->ncyls, bpp->nheads, bpp->nsecs);
- X}
- X
- X
- X/*-----------------------------------------------
- X |
- X | Ask the drive to identify itself.
- X |
- X +----------------------------------------------*/
- Xvoid dsp_hw_cfg()
- X{
- X int n;
- X
- X /* select drive */
- X sel_drv(drive, 0);
- X
- X /* Issue Get Drive Parameters cmd */
- X outp(wd_base+WDP_CSR, WDC_GDP);
- X
- X /* Wait for Busy status to be asserted */
- X for (n = 1000; n > 0 && (inp(wd_base+WDP_CSR) & WDM_BSY) == 0; n--)
- X ;
- X
- X /* Now wait for Busy status to be negated */
- X bsy_chk();
- X
- X /* Print error msg and bail out if error */
- X if ((n = inp(wd_base+WDP_CSR)) & WDM_HER) {
- X fprintf(stderr,
- X "Identify drive cmd failed: csr=0x%02x, err=0x%02x\n",
- X n, inp(wd_base+WDP_ERR) );
- X reboot();
- X }
- X
- X /* Wait for Data request to be asserted */
- X while ((inp(wd_base+WDP_CSR) & WDM_DRQ) == 0)
- X ;
- X
- X /* Input parameter info from controller */
- X for (n = 0; n < sizeof(id_buf.id_data)/sizeof(id_buf.id_data[0]); n++)
- X id_buf.id_data[n] = inpw(wd_base+WDP_DAT);
- X
- X /* Print parameter info */
- X printf("Controller reports drive has %u cyls, %u hds, %u secs/trk\n\n",
- X id_buf.id_parms.fcyl, id_buf.id_parms.hds, id_buf.id_parms.spt);
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Reset hard disk controller (or drive if IDE).
- X |
- X +----------------------------------------------*/
- Xvoid reset_hdc()
- X{
- X printf("Resetting controller/drive\n\n");
- X outp(wd_base+WDP_DCR, WDM_RSTGO);
- X delay(2);
- X outp(wd_base+WDP_DCR, WDM_RSTNO|WDM_HS3);
- X delay(1*TPS);
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Delay n system timer ticks. 18.2 ticks = 1 sec.
- X |
- X +----------------------------------------------*/
- Xvoid delay(n)
- Xint n;
- X{
- X int cur_lsb = *TimePtr & 1;
- X
- X while (n-- > 0) {
- X while ((*TimePtr & 1) == cur_lsb)
- X ;
- X cur_lsb = 1 - cur_lsb;
- X }
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Select drive.
- X |
- X +----------------------------------------------*/
- Xvoid sel_drv(drv, head)
- Xuint drv, head;
- X{
- X outp(wd_base+WDP_SDH, WDM_ECC|WDM_512|(drv<<4)|head);
- X bsy_chk();
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Wait for Busy status to be reset.
- X |
- X +----------------------------------------------*/
- Xvoid bsy_chk()
- X{
- X while (inp(wd_base+WDP_CSR) & WDM_BSY)
- X ;
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Display usage message, abort.
- X |
- X +----------------------------------------------*/
- Xvoid usage()
- X{
- X static char msg[] =
- X "Usage: %s [drive]\n"
- X "Drive may be 0..3 (2,3 => drives on alternate controller)\n"
- X "Default is 0\n";
- X
- X fprintf(stderr, msg, my_name);
- X exit(2);
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Delay a bit between back to back I/O operations.
- X | The delay results from the call/return overhead.
- X |
- X +----------------------------------------------*/
- Xvoid io_delay()
- X{
- X}
- X
- X/*-----------------------------------------------
- X |
- X | Check if hard disk controller is present and
- X | probably register compatible with the standard
- X | AT controller. Abort if not.
- X |
- X +----------------------------------------------*/
- Xvoid test_hdc(reg, pat, msk)
- Xuint reg;
- Xuint pat;
- Xuint msk;
- X{
- X outp(reg, pat);
- X io_delay();
- X io_delay();
- X io_delay();
- X io_delay();
- X io_delay();
- X io_delay();
- X if ((inp(reg)&msk) != (pat&msk)) {
- X fprintf(stderr,
- X "Non-compatible or missing Hard Disk Controller!\n");
- X exit(2);
- X }
- X}
- SHAR_EOF
- chmod 0644 ide_conf.c || echo "restore of ide_conf.c fails"
- sed 's/^X//' << 'SHAR_EOF' > wddefs.h &&
- X/*------------------------------------------------------+
- X | Definitions for WD100x hard disk controllers |
- X +------------------------------------------------------*/
- X
- X/*
- X** Port definitions:
- X*/
- X#define WDP_BASE0 0x1f0 /* base address of primary controller */
- X#define WDP_BASE1 0x170 /* base address of alternate controller */
- X#define WDP_DAT 0 /* offset to data reg (R/W) */
- X#define WDP_ERR 1 /* offset to error reg (R) */
- X#define WDP_WPC 1 /* offset to write precompensation reg (W) */
- X#define WDP_SC 2 /* offset to sector count reg (R/W) */
- X#define WDP_SEC 3 /* offset to sector address reg (R/W) */
- X#define WDP_CL 4 /* offset to cyl addr reg - low byte (R/W) */
- X#define WDP_CH 5 /* offset to cyl addr reg - high byte (R/W) */
- X#define WDP_SDH 6 /* offset to size/drive/head reg (R/W) */
- X#define WDP_CSR 7 /* offset to control/status reg (R/W) */
- X#define WDP_ASR 0x206 /* offset to alternate status reg (R) */
- X#define WDP_DCR 0x206 /* offset to device control reg (W) */
- X#define WDP_DAR 0x207 /* offset to device addr reg (R) */
- X
- X/*
- X** Controller command definitions:
- X*/
- X#define WDC_HOM 0x10 /* restore drv to trk 0 */
- X#define WDC_SEK 0x70 /* seek */
- X#define WDC_RD 0x20 /* read sectors */
- X#define WDC_WRT 0x30 /* write sectors */
- X#define WDC_RVS 0x40 /* read verify sectors */
- X#define WDC_FMT 0x50 /* format track */
- X#define WDC_TST 0x90 /* perform self test */
- X#define WDC_IDP 0x91 /* init drive parms */
- X#define WDC_GDP 0xec /* get drive parameters */
- X#define WDC_SDP 0x91 /* set drive parameters */
- X
- X/*
- X** SDH register mask definitions:
- X*/
- X#define WDM_ECC 0x80 /* enable ECC */
- X#define WDM_128 0x60 /* 128 bytes/sector */
- X#define WDM_256 0x00 /* 256 bytes/sector */
- X#define WDM_512 0x20 /* 512 bytes/sector */
- X#define WDM_1024 0x40 /* 1024 bytes/sector */
- X
- X/*
- X** Command/status register mask definitions:
- X*/
- X#define WDM_HER 0x01 /* hard error (R) */
- X#define WDM_IDX 0x02 /* index pulse status from drive (R) */
- X#define WDM_CER 0x04 /* corrected error (R) */
- X#define WDM_DRQ 0x08 /* data request (R) */
- X#define WDM_SKC 0x10 /* seek complete (R) */
- X#define WDM_WTF 0x20 /* write fault (R) */
- X#define WDM_RDY 0x40 /* ready (R) */
- X#define WDM_BSY 0x80 /* busy (R) */
- X#define WDM_DRT 0x01 /* disable retries (W) */
- X
- X/*
- X** Error register mask definitions:
- X*/
- X#define WDM_DAE 0x01 /* data address mark not found */
- X#define WDM_T0E 0x02 /* track 0 error */
- X#define WDM_CAE 0x04 /* aborted command */
- X#define WDM_NIE 0x10 /* ID not found */
- X#define WDM_ICE 0x20 /* CRC error - ID field */
- X#define WDM_DCE 0x40 /* CRC error - data field */
- X#define WDM_BBE 0x80 /* bad block detected */
- X
- X#define WDM_HS3 0x08 /* use reduced write current line for HS3 */
- X#define WDM_RSTGO 0x04 /* start controller reset */
- X#define WDM_RSTNO 0x00 /* end controller reset */
- X#define WDM_IEN 0x02 /* interrupt enable */
- X
- SHAR_EOF
- chmod 0644 wddefs.h || echo "restore of wddefs.h fails"
- sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp &&
- Xbegin 600 ide_conf.exe
- XM35K!`10`!0`@`,(`__^>`@`(^\MB`P``'@````$`#@!,`G`#``!)!`````#X
- XM`?\!_0$`````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````58OL,\#H^`6+7@:+
- XM!Z-`"(-^!`%^.+A*`%"Y0@!1_W<"Z#X>B^4]`0!\#H,^2@``?`>#/DH``WX#
- XMZ)P"@SY*``%^"X,F2@`!QP9,`'`!Z"D`Z+X`Z/4`Z+P!Z.\`Z`0`B^5=PS/`
- XMZ)<%N$X`4+AX`E#HK`B#Q`3K_I`SP.B!!;C_`%"Y50!1BQ9,`(/"!%+H;@*#
- XMQ`:X_P!0N*H`4(L.3`"#P011Z%@"@\0&N`$`4+E5`%&+#DP`@\$%4>A"`H/$
- XM!K@!`%"XJ@!0H4P`!04`4.@M`H/$!BO`4/\V2@#HN`Q`2A3``%!P!0Z*\=
- XM@\0")?``/5``=!BX90!0N'@"4.@="(/$!+@"`%#H_0.#Q`+#D%6+[+@$`.CE
- XM!(L>2@#1X]'CQ)^Z`":+!R:+5P*.PHO8)HI/#BKM42:*3P)1)O\WN(0`4.@.
- XM"(OE7<-5B^RX`@#HJP0KP%#_-DH`Z#D!@\0$N.P`4*%,``4'`%#H.AV#Q`3'
- XM1O[H`^L#_T[^@W[^`'X1H4P`!0<`4.@/'8/$`JB`=.;H*0&A3``%!P!0Z/L<
- XM@\0"B4;^J`%T(*%,`$!0Z.D<@\0"4/]V_KC"`%"X>`)0Z%L'@\0(Z)G^H4P`
- XM!0<`4.C''(/$`J@(=._'1OX``/\V3`#H_AR#Q`*+7O[1XXF'0`;_1OZ!?OX`
- XM`7+C_S9,!O\V1@;_-D(&N/4`4.A%!XOE7<.0,\#HY0.X,0%0Z#0'@\0"N`0`
- XM4*%,``4&`E#H=QR#Q`2X`@!0Z!\`@\0"N`@`4*%,``4&`E#H7!R#Q`2X$@!0
- XMZ`0`@\0"PU6+[+@$`.B;`\0>1@`FB@<E`0#K%I#$'D8`)HH')0$`.T;^=/&X
- XM`0`K1OZ)1OZ+1@3_3@0+P'_>B^5=PU6+[#/`Z&`#L02+1@0,"M/@"T8&4*%,
- XM``4&`%#H\QN+Y>@$`(OE7<,SP.@[`Z%,``4'`%#HS1N#Q`*H@'7OPY`SP.@C
- XM`_\V0`BX3@%0N'@"4.@T!H/$!K@"`%#H%`*#Q`+#,\#H`0/#58OL,\#H^`+_
- XM=@;_=@3HF1N+Y>CD_^CA_^C>_^C;_^C8_^C5__]V!.AQ&XOE(T8(BTX((TX&
- XM.\%T%+BH`5"X>`)0Z-L%B^6X`@!0Z+P!B^5=P[0PS2$\`G,%,\`&4,N_^0&+
- XM-@(`*_>!_@`0<@.^`!#ZCM>!Q$X*^W,0%A_H6@(SP%#HZP2X_TS-(8O&L033
- XMX$@VH]X!N^`!-HP7@^3^-HEG!+C^_U`VB6<*]]!0-HEG!C:)9P@VB2;:`0/W
- XMB38"`(S#*][WV[1*S2$VC!X:`A8'_+\R!KE0"BO/,\#SJA8?BPXP!>,"_]'H
- XMW`/H2P(S[>A(`!8?_S8[`O\V.0+_-C<"Z/O[4.@!`<,NH4D$CMBX`P`VQP;<
- XM`1H%4.B\`>A0!#:!/C(%UM9U!UA0-O\6-@6X_P!0_Q;<`?D!`+@`-<TAB1X&
- XM`HP&"`(.'[@`);H:!,TA%A^#/D(%`'0VC`Y$!8P.3`6.!AH")HLV+`#%!D8%
- XMC-HSVS;_'D(%<P46'^EY`3;%!DH%C-J[`P`V_QY"!18?C@8:`B:+#BP`XSZ.
- XMP3/_)H`]`'0TN0T`OO@!\Z9T"[G_?S/`\JYU(>OE!AX''XOWOR,"L02L+$%R
- XM#=+@DJPL07(%"L*JZ^X6'[L$`("G(P*_N`!$S2%R"O;"@'0%@(\C`D!+>>>^
- XM3@6_3@7HQP"^3@6_3@7HKP##58OL,\GK&E6+[+D!`.L258OL5E>Y``'K"%6+
- XM[%97N0$!40K)=1Z^.@:_.@;H?P"^3@6_4`7H=@"!/C(%UM9U!/\6.`6^4`6_
- XM4`7H80"^4`6_4`7H9P#HM0`+P'016`KD4'4+@WX$`'4%QT8$_P#H$`!8"N1U
- XM!XM&!+1,S2%?7EW#BPY$!>,'NP(`_QY"!1[%%@8"N``ES2$?@#Y$`@!T#1Z@
- XM10+%%D8"M"7-(1_#._=S"D]/BPWC]O_1Z_+#._=S#H/O!(L%"T4"=/+_'>ON
- XMPU6+[+C\`%#HC0*#/DH"`'0$_Q9*`KC_`%#H>P*+Y5W#N`(`Z1K^68O<*]AR
- XM"CL>3@)R!(OC_^%1,\#I`_X`5C/VN4(`,N3\K#+@XON`]%5T#>BL_[@!`%#H
- XM/`*X`0!>PX\&4`*T,,TAHQP"N@$`/`)T*8X&&@(FC@8L`(P&/P(SP)FY`(`S
- XM__*NKG7[1T>)/CT"N?__\J[WT8O1OP$`OH$`CAX:`JP\('3[/`ET]SP-=&\*
- XMP'1K1TZL/"!TZ#P)=.0\#71<"L!T6#PB="0\7'0#0NOD,\E!K#Q<=/H\(G0$
- XM`]'KTXO!T>D3T:@!=<KK`4ZL/`UT*PK`="<\(G2Z/%QT`T+K[#/)0:P\7'3Z
- XM/")T!`/1Z]N+P='I$]&H`772ZY<6'XD^-P(#UT?1YP/70H#B_BOBB\2C.0*+
- XMV`/[%@<VB3]#0\4V/0*LJ@K`=?HVCAX:`KZ!`.L#,\"JK#P@=/L\"73W/`UT
- XM?`K`='@VB3]#0TZL/"!TX3P)=-T\#71B"L!T7CPB="<\7'0#JNOD,\E!K#Q<
- XM=/H\(G0&L%SSJNO1L%S1Z?.J<P:P(JKKQ4ZL/`UT+@K`="H\(G2W/%QT`ZKK
- XM[#/)0:P\7'3Z/")T!K!<\ZKKV;!<T>GSJG.6L"*JZ\TSP*H6'\<'``#_)E`"
- XM58OL'HX&&@(FBQXL`([#,\`S]C/_N?__"]MT#B:`/@```'0&\JY&KG7ZB\=`
- XM)/Y&B_[1YKD)`.BD`%"+QNB>`*,[`@8>!Q^+SXO8,_9?2>,FBP0V.P;X`740
- XM4597O_@!N08`\Z=?7EET!2:)/T-#K*H*P'7ZXMHFB0\?7<,`58OL5E<>!XM6
- XM!+Y8!:T[PG000)9T#)<SP+G___*NB_?KZY9?7HOE7<("`%6+[%?_=@3HR_\+
- XMP'0@DHOZ,\"Y___RKO?12;L"`($^,@76UG4$_Q8T!;1`S2%?B^5=P@(`4P91
- XMN0`$APX:!%%0Z,D36X\&&@19C-H+P'0#!UO#B\'I4?L`<A4SP(OE7<-S^%#H
- XM&@!8,N2+Y5W#<P?H#@"X__^9B^5=PS+DZ`$`PZ(?`@KD=2*`/AP"`W(,/")S
- XM##P@<@2P!>L&/!-V`K`3NU("UYBC%`+#BL3K]P!5B^R#[`175HMV!%;H&0*#
- XMQ`*+^(U&"%#_=@96Z%4+@\0&B4;\5E?H;P*#Q`2+1OQ>7XOE7<-5B^R#[`17
- XM5KYP`E;HXPQ`*+^(U&!E#_=@2X<`)0Z!P+@\0&B4;\N'`"4%?H,P*#Q`2+
- XM1OQ>7XOE7<-5B^Q65XMV!(I$!JB#=%BH0'54J`)U00P!B$0&B_Z![V@"@<<(
- XM`Z@,=0KV!0%U!5;H00%8BT0$B03_=0)0,]N*7`=3Z&P0@\0&"\!T$3W__W4:
- XM@$P&(.L*@$P&(.L)@$P&$,=$`@``N/__ZR2*OR,"@.>"@/^"=0N*?`;VQX)U
- XM`X`-($B)1`*+'#/`B@=#B1Q?7EW#58OL5E>+=@:*1`:H@G1HJ$!U9,=$`@``
- XMJ`%T"Z@0=%>+3`2)#"3^#`(D[XA$!HO^@>]H`H''"`,SVXI<!Z@(=4RH!'4>
- XM]@4!=4.!_G`"=`R!_G@"=`:!_H@"=23VAR,"0'0=N0$`48U^!%=3Z)D0@\0&
- XMN0$`ZSZX__^`3`8@ZUQ35NA;`%M;]D0&"'36BPR+5`0KRD*)%(M5`DJ)5`+C
- XM(%%1_W0$4^A?$(/$!EF+?`2+5@2(%3O!=;XSP(I&!.L<,\#VAR,"('3DN0(`
- XM45!04^C1#H/$"#/`B\CKT5]>7<-5B^Q6BW8$N``"4.AJ$5F+WH'K:`*!PP@#
- XM"\!T"X!,!@C'1P(``NL,@$P&!,='`@$`C4<!B02)1`3'1`(``%Y=PP!5B^Q6
- XM5XMV!+NJ`X'^<`)T$KNL`X'^>`)T";NN`X'^B`)U2(O^@>]H`H''"`/V1`8,
- XM=3CV!0%U,XL'"\!T&XE$!(D$QT0"``+'10(``H!,!@+&!1&X`0#K%%.X``)0
- XMZ-406UL+P'0$B0?KTS/`7UY=PU6+[%97BW8&B_Z![V@"@<<(`_8%$'0C,]N*
- XM7`?VAR,"0'075N@8`%B#?@0`=`PSP(@%B44"B02)1`1?7EW#`%6+[(/L`E=6
- XM*_\Y?@1U"2O`4.AE`.M5D(MV!(I$!HO()`,\`G4Z]L$(=0V+WH'K:`+VAP@#
- XM`70HBP0K1`2)1OX+P'X<4/]T!(I,!RKM4>CE#H/$!CE&_G0'@$P&(+___XM$
- XM!(D$QT0"``"+QUY?B^5=P[@!`%#H`0##58OL@^P"5U:^:`(K_XE^_NL(QT;^
- XM__^#Q@@Y-J@#<A3V1`:#=/%6Z%S_@\0"0'3B1^ODD(-^!`%U!(O'ZP.+1OY>
- XM7XOE7<("`)!5B^RXK@'H._E75L9&N@`KP(E&ZHE&R(M>!H`_`'4#Z08'BA\J
- XM__:'+P0(="7_3NJ-1NI0_W8$Z&P'4/]V!.A-!_]&!HM>!HH?*O_VAR\$"'7O
- XMBUX&@#\E=`/IIP;&1L(`*L"(1L"(1KB(1O2(1OB(1O"(AE3^*\")1NR)1KR)
- XM1OZ)1L:)1L3K8Y#_1@:+7@:*!RKDB_CVA2\$!'0;_T:\BT;^B\C1X-'@`\'1
- XMX`/'+3``B4;^ZS60/6P`=!AW*3Q,=`]_&RPJ=!$L''4;_D;`ZQK^1OC^1OCK
- XM$OY&\.L-D"Q.=`@L&G0$_H94_H"^5/X`=)>`?O``=2J`?L``=!6+7@B#1@@$
- XMBP>+5P*)1OJ)5OSK$)"+7@B#1@@"BP>)1OJ,7OS&AE3^`(M>!HH'#"`JY(OX
- XM@_]N="_V-T$8/_>W0,C4;J4/]V!.A:!NL)_T;J_W8$Z`T&B_"#?KP`=`F#
- XM?OX`=0/I*06+Q^E-!9"#?KP`=0;_1KS_1O['1KZV`^L=D,=&OK`#ZQ60_T8&
- XMBUX&B5Z^@#]>=0F-1P&)1K[^3KBX(`!0*\!0C4;*4.A-$(/$!H/_>W0#Z:P`
- XMBUZ^@#]==`/IH0#&1L)=_T:^QD;5(.F3`)"*!XA&]O]&OCPM=0Z`?L(`=`B+
- XM7KZ`/UUU(HI>]HA>PK`!BLN`X0>+T8K*TN"Q`]+K*O^-3LH#V0@'ZU;_1KZ*
- XM!XA&]CI&PG8%B$;RZPR*1L*(1O**1O:(1L**1L*(1O;K((I>]K`!BLN`X0>+
- XMT8K*TN"Q`]+K*O^-3LH#V0@'_D;VBD;RF(I.]BKM.\%]TXANPHM>OH`_770#
- XMZ6/_@#\`=0/IKP2#_WMU!8O#B48&BT;ZBU;\B896_HF66/Z#?KP`=`J+1O[_
- XM3OX+P'1+@_[_=$:+WK$#T_N-1LH#V(H',D:XF+H!`(O.B]F`X0?3XH7"="6`
- XM?O``=0V+QL1>^O]&^B:(!^L$_X96_O]&ZO]V!.A]!(OPZZ:0_T[J5O]V!.B8
- XM!(M&^HM6_#F&5OYU"3F66/YU`^D=!(!^\`!T`^GH`_]&R(/_8W4#Z=T#CL*+
- XMV";&!P#IT@._9`"#_BUU!OY&].L&D(/^*W4<_T[^=0R#?KP`=`;^AE3^ZPO_
- XM1NK_=@3H#02+\(/^,'0#Z3T!_T;J_W8$Z/H#B_`\>'0$/%AU$O]&ZO]V!.CG
- XM`XOPOW@`Z1D!D/]&[(/_>'0&OV\`Z0H!_T[J5O]V!.CP`[XP`.GZ`(!^^`!T
- XM`[]&`(/^+74&_D;TZPF0@_XK=`/IW@#_3OYT`^F1`(-^O`!U`^F(`/Z&5/[I
- XMQ@"#_WAT"H/_<'0%@_]&=7_VA"\$@'04L`10C4;$4.B:#E;H2@.+\.LWD)"#
- XM_T9U+(-^[`!T)H/^.G4<BT;$B4;N*\")1L:)1L3'1NS__[]P`+XP`.L*D,=&
- XM[```_H94_H"^5/X`=5;_1NR-1-"9`4;$$5;&@WZ\`'0(_T[^=0/I>/__1NK_
- XM=@3H`@.+\.LX]H0O!`1TQH/_;W42@_XX?;RP`U"-1L10Z!$.Z[20N`H`F5)0
- XMC4;$4.CA#>NDD/].ZE;_=@3H\`*`OE3^`'4#Z3#_@_]P=0^`?O@`=`F+1NZ+
- XM3L2)1L:`?O0`=`KW7L2#5L8`]U[&@_]&=07'1NP``(-^[`!U`^E)`H!^\`!T
- XM`^D4`O]&R(!^^`!T$XM&Q(M6QL1>^B:)!R:)5P+I^`&+1L3$7OHFB0?I[`&+
- XM1NJ9B4;$B5;&Z\^-AEK^B4:^@_XM=0[&AEK^+8V&6_Z)1K[K!8/^*W4._T[^
- XM_T;J_W8$Z!T"B_"#?KP`=`>!?OY=`7XJQT;^70'K(Y"+1O[_3OX+P'0?_T;L
- XMB\:+7K[_1KZ(!_]&ZO]V!.CF`8OP]H0O!`1UUX/^+G4_BT;^_T[^"\!T-8M>
- XMOO]&OL8'+NL8D(M&_O]._@O`=!__1NR+QHM>OO]&OH@'_T;J_W8$Z*(!B_#V
- XMA"\$!'77@W[L`'1VB\8\970$/$5U;(M&_O]._@O`=&*+7K[_1K[&!V7_1NK_
- XM=@3H;0&+\(/^+74,BUZ^_T:^Q@<MZP:0@_XK=3&+1O[_3OX+P'4<_T;^ZR*+
- XM1O[_3OX+P'0?_T;LB\:+7K[_1KZ(!_]&ZO]V!.@F`8OP]H0O!`1UU_].ZE;_
- XM=@3H/0?NP`=0/IS@"`?O``=`/IF0#_1LB+7K[&!P"-AEK^4/]V_/]V^HI&
- XM^)A0_Q8@!(/$".MWD(M>!HH'*N0[QG0-_T[J5O]V!.CS`.F*`/Y.NH!^\`!U
- XM58!^P`!T!X-N"`3K29"#;@@"ZT(M8P`]&`!WQ-'@DR[_IY83.@YY$.@1Z!'H
- XM$5(3]@]2$U(34A-2$]P1>1!P$%(34A-.#E(3>1!2$U(3^0]2$U(35@[^1KK_
- XM1@;K'/]&ZO]V!.A7`(OPBUX&_T8&B@<JY#OP=`/I<?^#_O]T`^GO^(/^_W4,
- XM@W[(`'4&@'ZZ`'0%BT;(ZP*+QEY?B^5=PU6+[(M>!/:'+P0$=`6+P^L(D(O#
- XM)-\M!P!=P@(`D%6+[(/L`E:+=@3_3`)X#8L$_P2+V(H'*N3K")!6Z%+U@\0"
- XM7HOE7<("`%6+[(-^!O]T"?]V!/]V!N@.!8OE7<($`%6+[%=6BW8&_P3_=@3H
- XMKO^+^/:%+P0(=>]>7XOE7<($`)#Z%`45&15-%7D5@16J%=P558OLN'$!Z&/Q
- XM5E<SP(E&^(A&^XMV!JR)=@:(1OX*P'0&@W[X`'T&BT;XZ:($N[@#+"`\6'<%
- XMUR0/ZP*P`+$#TN`"1OO7_L'2Z(A&^YB+V-'C+O^GE!2*5OZY`0#H(P3KLC/`
- XMB4;PB4;VB4;NB4;\2(E&].N>BD;^/"UU!H!._`3KD3PK=0:`3OP!ZX<\('4'
- XM@$[\`NE\_SPC=0>`3OR`Z7'_@$[\".EJ_XI._H#Y*G4/Z%8#"\!Y%_?8@$[\
- XM!.L/@.DP,NV+1O:["@#WXP/!B4;VZ3[_QT;T``#I-O^*3OZ`^2IU#.@B`PO`
- XM>12X___K#X#I,#+MBT;TNPH`]^,#P8E&].D-_XI&_CQL=0:`3OP0ZR(\1G4&
- XM@$[\(.L8/$YU!H!._1#K#CQ,=0:`3OT$ZP2`3OT(Z=O^BD;^/&1U`^F.`3QI
- XM=0/IAP$\=74#Z80!/%AU`^F#`3QX=0/I@@$\;W4#Z9P!/&-T&CQS="<\;G11
- XM/'!T8#Q%=`<\1W0#Z;L`Z;4`Z(0"C;Z/_A8'JD^Y`0#IZP'HAP(+_W42C,`+
- XMP'4,'@>_$02+#A<$Z=(!5XM.].,',L#RKG4!3UDK^8?/Z;T!Z%D"BT;XJ_9&
- XM_!!T`S/`J^D^_O9&_#!U!>@L`NLYZ"\"]D;]&'4PQD;_![D0`!8'4C/2C;Z7
- XM_KX$`.B?`KD0`(V^DOY8,]*^!`#HCP+&AI/^.KD)`.L8QD;_![D0`!8',]*-
- XMOI+^O@0`Z'`"N00`C;Z/_NE'`?]&[H!._$"*1OX,()B+\(-^]`!_$W0'QT;T
- XM!@#K"CUG`'4%QT;T`0"-OH_^_W;N_W;T5E?_=@CV1OT$=`K_%B8$@T8("NL(
- XM_Q8<!(-&"`B#Q`KV1OR`=`Z#?O0`=0A7_Q8B!(/$`H/^9W4/]T;\@`!U"%?_
- XM%AX$@\0"%@<F@#TM=05'@$[]`;G__U>P`/*N3UDK^8?/Z:\`@$[\0,9&^@KK
- XM-<9&_P?K!,9&_R?V1OR`=!''1O`"`,9&\C"R40)6_XA6\\9&^A#K#O9&_(!T
- XM!(!._0+&1OH(]D;\$'0%Z/H`ZP[H[0#V1OQ`=`.9ZP(STO9&_$!T#PO2?0N`
- XM3OT!]]B#T@#WVH-^]`!]!\=&]`$`ZP2`9OSWB]@+VG4%QT;P``"-?NL6!XI.
- XM^C+MBW;TZ#4!]D;]`G0.XP8F@#TP=`9/)L8%,$'K`/9&_$!T,?9&_0%T"\9&
- XM\BW'1O`!`.L@]D;\`70+QD;R*\=&\`$`ZP_V1OP"=`G&1O(@QT;P`0"+1O8K
- XMP2M&\'T",\`&5U'V1OP,=0>+R+(@Z+``4!8'C7[RBT[PZ(8`6/9&_`AT#?9&
- XM_`1U!XO(LC#HD`!97P=0Z&L`6/9&_`1T!XO(LB#H>P#I"?R+=@BMB78(PXMV
- XM"*V+T*V2B78(P_9&_"!T".CK_X["B_C#Z-O_B_@+P'4#CL##'@?#F%>+7@3_
- XM3P)X"HL__P>(!3/`7\,&45)34.@[\8/$!%I9!SW__W7IZ^GC&XOW`4[X5S/_
- XM)JSHR/\+^.+W"_]?=`7'1OC__\/C&0%.^%<S_XK"Z*S_"_CB]PO_7W0%QT;X
- XM___#_5>3"_9_"@O;=08+TG4"ZQJ2,]+W\9/W\9*'TP0P/#EV`P)&_ZJ+PD[K
- XMV%DKST?\PU]>B^5=PP!5B^Q75HMV!(M^!H/^_W02]D4&`742]D4&@'0&]D4&
- XM`G0&N/__ZS*0@WT$`'4'5^AJ\8/$`HL%.44$=0B#?0(`=>#_!?]%`HO&_PV+
- XM'8@'@&4&[X!-!@$JY%Y?B^5=PY!5B^R#[`2+7@0['B$"<@6X``GK*O=&"`"`
- XM=$B#?@H`=!HSR8O1N`%"S2%R2_=&"@(`=0X#1@835@AY*+@`%OGK-HE6_HE&
- XM_(O1N`)"S2$#1@835@AY#8M._HM6_+@`0LTAZ]B+5@:+3@B*1@JT0LTA<@6`
- XMIR,"_>F;[E6+[(/L`HM>!#L>(0)R!OFX``GK:#/`BTX(XV'VAR,"`G5:@3XR
- XM!=;6=03_%C0%BTX(BU8&M#_-(7,$M`GK/O:'(P*`=#>`IR,"^U97_(ORB_J+
- XMR.,EM`V`/`IU!8"/(P($K#K$=!D\&G4'@(\C`@+K!8@%1^+KB\<KPE]>Z1ON
- XM@_D!=`>`/`ITZ^OF]H<C`D!T&+@`1,TA]\(@`'4)C5;_M#_-(7+4L`KK+,9&
- XM_P"-5O^T/\TA<L,+P'09@WX(`70?N?__B]&X`4+-(;D!`(!^_PIT![`-BU8&
- XMZY:+5@;KE(!^_PIUV^N^`%6+[(/L"(M>!#L>(0)R![@`"?GIF^V!/C(%UM9U
- XM!/\6-`7VAR,"('0+N`)",\F+T<TA<M_VAR,"@'1NBU8&'@<SP(E&_HE&_/Q7
- XM5HOZB_*)9OB+3@CC.+`*\JYU2NC>`#VH`'9&@^P"B]RZ``(]*`)S`[J``"OB
- XMB]2+^A8'BTX(K#P*=`P[^W09JN+TZ"(`ZVJP#3O[=0/H%P"JL`K_1OSKX^@,
- XM`.OB7E_K7KC\_^@AZE!348O/*\KC$E&+7@2T0,TA67(-`4;^.\AW!EE;6(OZ
- XMPY^#Q`B#?OX`=1^><P2T">L>]H<C`D!T"XM>!H`_&G4#^.L,^;@`'.L&BT;^
- XM*T;\BV;X7E_IJ.R+3@@+R74%B\'IG.R+5@:T0,TA<P2T">OD"\!UX/:'(P)`
- XM=`J+VH`_&G4#^.O/^;@`'.O)`%FA3@([Q',&*\3WV/_A,\#K^NDB``!5B^Q6
- XMBUX$ON`!.5P&<PU+2X`/`3E<"'8#B5P(7HOE7<-5B^Q65XM.!(/YZ'<2N^`!
- XMZ!8`<P_HC0!R!>@,`',%,\"9ZP!?7EW#`$&`X?Y3_(MW"(M?"C/_ZR.+PUNH
- XM`75"4XMW!HM?"#O>=#9+,__K#)"-5/X[TW/A`_!R(ZVH`73PB_Y(.\%S(P/P
- XM<A.+T*VH`73>`\(%`@"+]XE$_NODB\!;BT<&B4<(^>L96XE,_G0)`_DKP4B)
- XM!2OY`_F)?PB+QHS:^,-15_9'`@%T8^C2`(O^BP2H`70#*\A)04&+=P0+]G1,
- XM`\YS"3/`NO#_XS#K/Q8')J$:!#T`('06N@"`.]!R!M'J=?CK(H/Z"'(=T>*+
- XMPDB+T`/!<P(SP/?2(\)2Z"X`6G,-@_KP=`6X$`#KXOGK&XO0*U<$B4<$B7\(
- XMBW<*2HD40@/RQP3^_XEW"E]9PXO0]D<"!'0/2HMW!$X[UG(%.5?^<S9"4U&,
- XMWH[&L033Z'4#N``0]D<"!'0*`\:+'AH"*\..PXO8M$K-(5E;<A"+PO9'`@1T
- XM!$J)5_[XZP'YPU>+=P@[=PIU`XMW!JT]_O]T"(O^)/X#\.OR3T^+]U_#`%6+
- XM[(O7C-B.P(M^!#/`N?__\J[WT4F1B_I=PP!5B^R#[`175HMV!,8&.`9)B38V
- XM!K\R!HDU5NC'_X/$`J,T!HU&"%#_=@:X,@90Z"GN@\0&7E^+Y5W#58OLBU8$
- XM[#+DB^5=PP!5B^R+5@2*1@;NM`!=PU6+[(O7C-B.P(M^!(O?BTX(XQ6*1@:*
- XMX/?'`0!T`JI)T>GSJQ/)\ZJ+^I-=PP!5B^R+5@3M7<,`58OLBT8&BTX*"\B+
- XM3@AU"8M&!/?A7<((`%/WX8O8BT8$]V8*`]B+1@3WX0/36UW""``R[>,&T>#1
- XMTN+ZPP!5B^Q3BUX$_W8(_W8&_W<"_S?HK?^)!XE7`EM=P@8``%6+[%.+7@2+
- XM!XM7`HM.!NC"_XD'B5<"6UW"!`````````#Y`0``````````````````````
- XM``````!-4R!2=6XM5&EM92!,:6)R87)Y("T@0V]P>7)I9VAT("AC*2`Q.3DP
- XM+"!-:6-R;W-O9G0@0V]R<!@`)60``&P`0````/`!4&QE87-E(')E8F]O="!S
- XM>7-T96TA"@!$<FEV92!M:7-S:6YG(&]R('-T871U<R!H;W-E9`H`0DE/4R!R
- XM97!O<G1S(&1R:79E(&AA<R`E=2!C>6QS+"`E=2!H9',L("5U('-E8W,O=')K
- XM"@H`!`$``!@!``!)9&5N=&EF>2!D<FEV92!C;60@9F%I;&5D.B!C<W(],'@E
- XM,#)X+"!E<G(],'@E,#)X"@!#;VYT<F]L;&5R(')E<&]R=',@9')I=F4@:&%S
- XM("5U(&-Y;',L("5U(&AD<RP@)74@<V5C<R]T<FL*"@!297-E='1I;F<@8V]N
- XM=')O;&QE<B]D<FEV90H*`%5S86=E.B`E<R!;9')I=F5="D1R:79E(&UA>2!B
- XM92`P+BXS("@R+#,@/3X@9')I=F5S(&]N(&%L=&5R;F%T92!C;VYT<F]L;&5R
- XM*0I$969A=6QT(&ES(#`*`$YO;BUC;VUP871I8FQE(&]R(&UI<W-I;F<@2&%R
- XM9"!$:7-K($-O;G1R;VQL97(A"@`````A!0`````%````````````````````
- XM````````7T-?1DE,15])3D9//0``````````````````````````````````
- XM```4`(&!@0$!````````````````````````````00+Y`0``````````````
- XM__]0"P```!8"`A@-"0P,#`<(%A;_`@T2`O\``$((``!""`$``````````@$`
- XM```````"`@```````(0#`````````@0`````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM```````````!```"````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM``````````````````````````````````````````````,````````@"2T-
- XM70!=``8```8``0``$``#!@`&`A`$145%!04%!04U,`!0`````"`@,%!8!P@`
- XM,#`P5U`'```@(```````"&!@8&!@8```<'!X>'AX"`<(```'``@("```"``(
- XM```(*&YU;&PI!@```"`*!@H&"@8*!@H&"@8`````````("`@("`@("`@*"@H
- XM*"@@("`@("`@("`@("`@("`@("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$
- XMA!`0$!`0$!"!@8&!@8$!`0$!`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"
- XM@@("`@("`@("`@("`@("`@("`@("$!`0$"``````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````&009!!D$`````/@!````````````
- XM``````!Z##P\3DU31SX^``!2-C`P,`T*+2!S=&%C:R!O=F5R9FQO=PT*``,`
- XM4C8P,#,-"BT@:6YT96=E<B!D:79I9&4@8GD@,`T*``D`4C8P,#D-"BT@;F]T
- XM(&5N;W5G:"!S<&%C92!F;W(@96YV:7)O;FUE;G0-"@#\``T*`/\`<G5N+71I
- XM;64@97)R;W(@``(`4C8P,#(-"BT@9FQO871I;F<M<&]I;G0@<W5P<&]R="!N
- XM;W0@;&]A9&5D#0H``0!2-C`P,0T*+2!N=6QL('!O:6YT97(@87-S:6=N;65N
- X'=`T*`/___V5D
- X`
- Xend
- SHAR_EOF
- uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp &&
- chmod 0644 ide_conf.exe || echo "restore of ide_conf.exe fails"
- exit 0
- > --
- > UUCP: {hplabs!hp-sdd ucsd nosc}!crash!fpm
- > ARPA: crash!fpm@nosc.mil
- > INET: fpm@crash.cts.com
-
-
-
- Terry Lambert
- terry@icarus.weber.edu
- terry_lambert@novell.com
- ---
- Any opinions in this posting are my own and not those of my present
- or previous employers.
- --
- -------------------------------------------------------------------------------
- "I have an 8 user poetic license" - me
- Get the 386bsd FAQ from agate.berkeley.edu:/pub/386BSD/386bsd-0.1/unofficial
- -------------------------------------------------------------------------------
-