Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Mar 2007 10:57:45 GMT
From:      Paolo Pisati <piso@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 115591 for review
Message-ID:  <200703091057.l29Avj42008991@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=115591

Change 115591 by piso@piso_newluxor on 2007/03/09 10:56:46

	IFC@115590

Affected files ...

.. //depot/projects/soc2006/intr_filter/amd64/amd64/trap.c#8 integrate
.. //depot/projects/soc2006/intr_filter/dev/ata/ata-all.h#4 integrate
.. //depot/projects/soc2006/intr_filter/dev/ata/ata-chipset.c#13 integrate
.. //depot/projects/soc2006/intr_filter/dev/bge/if_bge.c#14 integrate
.. //depot/projects/soc2006/intr_filter/dev/bge/if_bgereg.h#12 integrate
.. //depot/projects/soc2006/intr_filter/dev/mxge/eth_z8e.dat.gz.uu#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/mxge/ethp_z8e.dat.gz.uu#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/sound/pci/maestro3.c#3 integrate
.. //depot/projects/soc2006/intr_filter/i386/i386/trap.c#7 integrate
.. //depot/projects/soc2006/intr_filter/ia64/ia64/trap.c#6 integrate
.. //depot/projects/soc2006/intr_filter/kern/kern_jail.c#8 integrate
.. //depot/projects/soc2006/intr_filter/kern/kern_thread.c#7 integrate
.. //depot/projects/soc2006/intr_filter/netgraph/ng_eiface.c#3 integrate
.. //depot/projects/soc2006/intr_filter/netinet/udp_usrreq.c#8 integrate
.. //depot/projects/soc2006/intr_filter/nfsclient/nfs_socket.c#9 integrate
.. //depot/projects/soc2006/intr_filter/nfsclient/nfs_subs.c#3 integrate
.. //depot/projects/soc2006/intr_filter/nfsclient/nfs_vnops.c#7 integrate
.. //depot/projects/soc2006/intr_filter/nfsclient/nfsnode.h#3 integrate
.. //depot/projects/soc2006/intr_filter/powerpc/powerpc/trap.c#5 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/trap.c#4 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/hcall.S#4 integrate
.. //depot/projects/soc2006/intr_filter/sys/proc.h#9 integrate

Differences ...

==== //depot/projects/soc2006/intr_filter/amd64/amd64/trap.c#8 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.313 2006/12/17 06:48:39 kmacy Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.314 2007/03/09 04:02:36 mohans Exp $");
 
 /*
  * AMD64 Trap and System call handling
@@ -813,6 +813,8 @@
 	CTR4(KTR_SYSC, "syscall enter thread %p pid %d proc %s code %d", td,
 	    td->td_proc->p_pid, td->td_proc->p_comm, code);
 
+	td->td_syscalls++;
+
 	if (error == 0) {
 		td->td_retval[0] = 0;
 		td->td_retval[1] = frame->tf_rdx;

==== //depot/projects/soc2006/intr_filter/dev/ata/ata-all.h#4 (text+ko) ====

@@ -23,7 +23,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.120 2007/02/21 19:07:18 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.121 2007/03/08 16:39:25 sos Exp $
  */
 
 /* ATA register defines */
@@ -491,6 +491,7 @@
 #define         ATA_ATA_SLAVE           0x02
 #define         ATA_ATAPI_MASTER        0x04
 #define         ATA_ATAPI_SLAVE         0x08
+#define         ATA_PORTMULTIPLIER      0x10
 
     struct mtx                  state_mtx;      /* state lock */
     int                         state;          /* ATA channel state */

==== //depot/projects/soc2006/intr_filter/dev/ata/ata-chipset.c#13 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.186 2007/03/01 21:18:27 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.188 2007/03/08 20:21:42 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -55,10 +55,11 @@
 static int ata_generic_chipinit(device_t dev);
 static void ata_generic_intr(void *data);
 static void ata_generic_setmode(device_t dev, int mode);
-static void ata_sata_phy_reset(device_t dev);
+static int ata_sata_phy_reset(device_t dev);
 static void ata_sata_phy_event(void *context, int dummy);
 static int ata_sata_connect(struct ata_channel *ch);
 static void ata_sata_setmode(device_t dev, int mode);
+static int ata_request2fis_h2d(struct ata_request *request, u_int8_t *fis);
 static int ata_ahci_chipinit(device_t dev);
 static int ata_ahci_allocate(device_t dev);
 static int ata_ahci_status(device_t dev);
@@ -97,6 +98,7 @@
 static int ata_intel_31244_allocate(device_t dev);
 static int ata_intel_31244_status(device_t dev);
 static int ata_intel_31244_command(struct ata_request *request);
+static void ata_intel_31244_reset(device_t dev);
 static int ata_ite_chipinit(device_t dev);
 static void ata_ite_setmode(device_t dev, int mode);
 static int ata_jmicron_chipinit(device_t dev);
@@ -122,6 +124,7 @@
 static int ata_nvidia_chipinit(device_t dev);
 static int ata_nvidia_allocate(device_t dev);
 static int ata_nvidia_status(device_t dev);
+static void ata_nvidia_reset(device_t dev);
 static int ata_promise_chipinit(device_t dev);
 static int ata_promise_allocate(device_t dev);
 static int ata_promise_status(device_t dev);
@@ -157,6 +160,7 @@
 static void ata_sii_setmode(device_t dev, int mode);
 static int ata_sis_chipinit(device_t dev);
 static int ata_sis_allocate(device_t dev);
+static void ata_sis_reset(device_t dev);
 static void ata_sis_setmode(device_t dev, int mode);
 static int ata_via_chipinit(device_t dev);
 static int ata_via_allocate(device_t dev);
@@ -227,39 +231,6 @@
  * SATA support functions
  */
 static void
-ata_sata_phy_reset(device_t dev)
-{
-    struct ata_channel *ch = device_get_softc(dev);
-    int loop, retry;
-
-    if ((ATA_IDX_INL(ch, ATA_SCONTROL) & ATA_SC_DET_MASK) == ATA_SC_DET_IDLE) {
-	ata_sata_connect(ch);
-	return;
-    }
-
-    for (retry = 0; retry < 10; retry++) {
-	for (loop = 0; loop < 10; loop++) {
-	    ATA_IDX_OUTL(ch, ATA_SCONTROL, ATA_SC_DET_RESET);
-	    ata_udelay(100);
-	    if ((ATA_IDX_INL(ch, ATA_SCONTROL) &
-		 ATA_SC_DET_MASK) == ATA_SC_DET_RESET)
-		break;
-	}
-	ata_udelay(5000);
-	for (loop = 0; loop < 10; loop++) {
-	    ATA_IDX_OUTL(ch, ATA_SCONTROL, ATA_SC_DET_IDLE |
-					   ATA_SC_IPM_DIS_PARTIAL |
-					   ATA_SC_IPM_DIS_SLUMBER);
-	    ata_udelay(100);
-	    if ((ATA_IDX_INL(ch, ATA_SCONTROL) & ATA_SC_DET_MASK) == 0) {
-		ata_sata_connect(ch);
-		return;
-	    }
-	}
-    }
-}
-
-static void
 ata_sata_phy_event(void *context, int dummy)
 {
     struct ata_connect_task *tp = (struct ata_connect_task *)context;
@@ -271,7 +242,7 @@
     if (tp->action == ATA_C_ATTACH) {
 	if (bootverbose)
 	    device_printf(tp->dev, "CONNECTED\n");
-	ata_sata_connect(ch);
+	ATA_RESET(tp->dev);
 	ata_identify(tp->dev);
     }
     if (tp->action == ATA_C_DETACH) {
@@ -292,6 +263,36 @@
 }
 
 static int
+ata_sata_phy_reset(device_t dev)
+{
+    struct ata_channel *ch = device_get_softc(dev);
+    int loop, retry;
+
+    if ((ATA_IDX_INL(ch, ATA_SCONTROL) & ATA_SC_DET_MASK) == ATA_SC_DET_IDLE)
+	return ata_sata_connect(ch);
+
+    for (retry = 0; retry < 10; retry++) {
+	for (loop = 0; loop < 10; loop++) {
+	    ATA_IDX_OUTL(ch, ATA_SCONTROL, ATA_SC_DET_RESET);
+	    ata_udelay(100);
+	    if ((ATA_IDX_INL(ch, ATA_SCONTROL) &
+		 ATA_SC_DET_MASK) == ATA_SC_DET_RESET)
+		break;
+	}
+	ata_udelay(5000);
+	for (loop = 0; loop < 10; loop++) {
+	    ATA_IDX_OUTL(ch, ATA_SCONTROL, ATA_SC_DET_IDLE |
+					   ATA_SC_IPM_DIS_PARTIAL |
+					   ATA_SC_IPM_DIS_SLUMBER);
+	    ata_udelay(100);
+	    if ((ATA_IDX_INL(ch, ATA_SCONTROL) & ATA_SC_DET_MASK) == 0)
+		return ata_sata_connect(ch);
+	}
+    }
+    return 0;
+}
+
+static int
 ata_sata_connect(struct ata_channel *ch)
 {
     u_int32_t status;
@@ -310,37 +311,12 @@
 	    device_printf(ch->dev, "SATA connect status=%08x\n", status);
 	return 0;
     }
+    if (bootverbose)
+	device_printf(ch->dev, "SATA connect time=%dms\n", timeout * 10);
 
     /* clear SATA error register */
     ATA_IDX_OUTL(ch, ATA_SERROR, ATA_IDX_INL(ch, ATA_SERROR));
 
-    /* poll 31 seconds for device ready */
-    /* XXX SOS 10 secs for now as I have little patience */
-    for (timeout = 0; timeout < 1000; timeout++) {
-	if (ATA_IDX_INB(ch, ATA_STATUS) & ATA_S_BUSY) 
-	    DELAY(10000);
-	else
-	    break;
-    }
-    if (bootverbose)
-	device_printf(ch->dev, "SATA connect ready time=%dms\n", timeout * 10);
-
-    /* if we have legacy resources an old fashioned reset might be needed */
-    if (ch->r_io[ATA_DATA].res)
-	ata_generic_reset(ch->dev);
-
-    /* register device type from signature */
-    ch->devices = 0;
-    if (timeout < 1000) {
-	if ((ATA_IDX_INB(ch, ATA_CYL_LSB) == ATAPI_MAGIC_LSB) &&
-	    (ATA_IDX_INB(ch, ATA_CYL_MSB) == ATAPI_MAGIC_MSB))
-	    ch->devices = ATA_ATAPI_MASTER;
-	else
-	    ch->devices = ATA_ATA_MASTER;
-    }
-    if (bootverbose)
-	device_printf(ch->dev, "sata_connect devices=0x%b\n",
-		      ch->devices, "\20\3ATAPI_MASTER\1ATA_MASTER");
     return 1;
 }
 
@@ -378,6 +354,49 @@
     }
 }
 
+static int
+ata_request2fis_h2d(struct ata_request *request, u_int8_t *fis)
+{
+    struct ata_device *atadev = device_get_softc(request->dev);
+
+    if (request->flags & ATA_R_ATAPI) {
+	fis[0] = 0x27;  /* host to device */
+	fis[1] = 0x80;  /* command FIS (note PM goes here) */
+	fis[2] = ATA_PACKET_CMD;
+	if (request->flags & ATA_R_DMA)
+	    fis[3] = ATA_F_DMA;
+	else {
+	    fis[5] = request->transfersize;
+	    fis[6] = request->transfersize >> 8;
+	}
+	fis[7] = ATA_D_LBA | atadev->unit;
+	fis[15] = ATA_A_4BIT;
+	return 20;
+    }
+    else {
+	ata_modify_if_48bit(request);
+	fis[0] = 0x27;  /* host to device */
+	fis[1] = 0x80;  /* command FIS (note PM goes here) */
+	fis[2] = request->u.ata.command;
+	fis[3] = request->u.ata.feature;
+	fis[4] = request->u.ata.lba;
+	fis[5] = request->u.ata.lba >> 8;
+	fis[6] = request->u.ata.lba >> 16;
+	fis[7] = ATA_D_LBA | atadev->unit;
+	if (!(atadev->flags & ATA_D_48BIT_ACTIVE))
+	    fis[7] |= (request->u.ata.lba >> 24 & 0x0f);
+	fis[8] = request->u.ata.lba >> 24;
+	fis[9] = request->u.ata.lba >> 32; 
+	fis[10] = request->u.ata.lba >> 40; 
+	fis[11] = request->u.ata.feature >> 8;
+	fis[12] = request->u.ata.count;
+	fis[13] = request->u.ata.count >> 8;
+	fis[15] = ATA_A_4BIT;
+	return 20;
+    }
+    return 0;
+}
+
 
 /*
  * AHCI v1.x compliant SATA chipset support functions
@@ -440,17 +459,6 @@
     struct ata_channel *ch = device_get_softc(dev);
     int offset = ch->unit << 7;
 
-    /* setup legacy cruft we need */
-    ch->r_io[ATA_DATA].res = NULL;
-    ch->r_io[ATA_CYL_LSB].res = ctlr->r_res2;
-    ch->r_io[ATA_CYL_LSB].offset = ATA_AHCI_P_SIG + 2 + offset;
-    ch->r_io[ATA_CYL_MSB].res = ctlr->r_res2;
-    ch->r_io[ATA_CYL_MSB].offset = ATA_AHCI_P_SIG + 3 + offset;
-    ch->r_io[ATA_STATUS].res = ctlr->r_res2;
-    ch->r_io[ATA_STATUS].offset = ATA_AHCI_P_TFD + offset;
-    ch->r_io[ATA_ALTSTAT].res = ctlr->r_res2;
-    ch->r_io[ATA_ALTSTAT].offset = ATA_AHCI_P_TFD + offset;
-
     /* set the SATA resources */
     ch->r_io[ATA_SSTATUS].res = ctlr->r_res2;
     ch->r_io[ATA_SSTATUS].offset = ATA_AHCI_P_SSTS + offset;
@@ -495,62 +503,48 @@
 {
     struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));
     struct ata_channel *ch = device_get_softc(dev);
-    struct ata_connect_task *tp;
-    u_int32_t action, istatus, sstatus, error, issued;
+    u_int32_t action = ATA_INL(ctlr->r_res2, ATA_AHCI_IS);
     int offset = ch->unit << 7;
     int tag = 0;
 
-    action = ATA_INL(ctlr->r_res2, ATA_AHCI_IS);
     if (action & (1 << ch->unit)) {
-	istatus = ATA_INL(ctlr->r_res2, ATA_AHCI_P_IS + offset);
-	issued = ATA_INL(ctlr->r_res2, ATA_AHCI_P_CI + offset);
-	sstatus = ATA_INL(ctlr->r_res2, ATA_AHCI_P_SSTS + offset);
-	error = ATA_INL(ctlr->r_res2, ATA_AHCI_P_SERR + offset);
+	u_int32_t istatus = ATA_INL(ctlr->r_res2, ATA_AHCI_P_IS + offset);
+	u_int32_t status = ATA_IDX_INL(ch, ATA_SSTATUS);
+	u_int32_t error = ATA_IDX_INL(ch, ATA_SERROR);
 
 	/* clear interrupt(s) */
-	ATA_OUTL(ctlr->r_res2, ATA_AHCI_IS, action);
+	ATA_OUTL(ctlr->r_res2, ATA_AHCI_IS, action & (1 << ch->unit));
 	ATA_OUTL(ctlr->r_res2, ATA_AHCI_P_IS + offset, istatus);
-	ATA_OUTL(ctlr->r_res2, ATA_AHCI_P_SERR + offset, error);
+	ATA_IDX_OUTL(ch, ATA_SERROR, error);
 
-	/* do we have cold connect surprise */
-	if (istatus & ATA_AHCI_P_IX_CPD) {
-	    printf("ata_ahci_status status=%08x sstatus=%08x error=%08x\n",
-		   istatus, sstatus, error);
-	}
+	if (error) {
+	    struct ata_connect_task *tp;
 
-	/* check for and handle connect events */
-	if ((istatus & ATA_AHCI_P_IX_PC) &&
-	    (tp = (struct ata_connect_task *)
-		  malloc(sizeof(struct ata_connect_task),
-			 M_ATA, M_NOWAIT | M_ZERO))) {
+	    /* if we have a connection event deal with it */
+	    if ((error & ATA_SE_PHY_CHANGED) &&
+		(tp = (struct ata_connect_task *)
+		      malloc(sizeof(struct ata_connect_task),
+			     M_ATA, M_NOWAIT | M_ZERO))) {
 
-	    if (bootverbose)
-		device_printf(ch->dev, "CONNECT requested\n");
-	    tp->action = ATA_C_ATTACH;
-	    tp->dev = ch->dev;
-	    TASK_INIT(&tp->task, 0, ata_sata_phy_event, tp);
-	    taskqueue_enqueue(taskqueue_thread, &tp->task);
+		if (((status & ATA_SS_CONWELL_MASK) == ATA_SS_CONWELL_GEN1) ||
+		    ((status & ATA_SS_CONWELL_MASK) == ATA_SS_CONWELL_GEN2)) {
+		    if (bootverbose)
+			device_printf(ch->dev, "CONNECT requested\n");
+		    tp->action = ATA_C_ATTACH;
+		}
+		else {
+		    if (bootverbose)
+			device_printf(ch->dev, "DISCONNECT requested\n");
+		    tp->action = ATA_C_DETACH;
+		}
+		tp->dev = ch->dev;
+		TASK_INIT(&tp->task, 0, ata_sata_phy_event, tp);
+		taskqueue_enqueue(taskqueue_thread, &tp->task);
+	    }
 	}
 
-	/* check for and handle disconnect events */
-	else if ((istatus & ATA_AHCI_P_IX_PRC) && 
-	    !((sstatus & ATA_SS_CONWELL_MASK) == ATA_SS_CONWELL_GEN1 ||
-	      (sstatus & ATA_SS_CONWELL_MASK) == ATA_SS_CONWELL_GEN2) &&
-	    (tp = (struct ata_connect_task *)
-		  malloc(sizeof(struct ata_connect_task),
-		       M_ATA, M_NOWAIT | M_ZERO))) {
-
-	    if (bootverbose)
-		device_printf(ch->dev, "DISCONNECT requested\n");
-	    tp->action = ATA_C_DETACH;
-	    tp->dev = ch->dev;
-	    TASK_INIT(&tp->task, 0, ata_sata_phy_event, tp);
-	    taskqueue_enqueue(taskqueue_thread, &tp->task);
-	}
-
 	/* do we have any device action ? */
-	if (!(issued & (1 << tag)))
-	    return 1;
+	return (!(ATA_INL(ctlr->r_res2, ATA_AHCI_P_CI + offset) & (1 << tag)));
     }
     return 0;
 }
@@ -667,8 +661,9 @@
 
     if (!(ATA_INL(ctlr->r_res2, ATA_AHCI_PI) & (1 << ch->unit))) {
 	device_printf(dev, "port not implemented\n");
-	ch->devices = 0;
+	return;
     }
+    ch->devices = 0;
 
     /* kill off all activity on this channel */
     cmd = ATA_INL(ctlr->r_res2, ATA_AHCI_P_CMD + offset);
@@ -704,12 +699,22 @@
     ATA_OUTL(ctlr->r_res2, ATA_AHCI_P_CMD + offset, ATA_AHCI_P_CMD_SUD);
 
     /* enable interface */
-    ata_sata_phy_reset(dev);
-
-    /* no ATAPI yet */
-    if (ch->devices & ATA_ATAPI_MASTER) {
-	device_printf(ch->dev, "AHCI SATA ATAPI devices not supported yet\n");
-	ch->devices = 0;
+    if (ata_sata_phy_reset(dev)) {
+	switch (ATA_INL(ctlr->r_res2, ATA_AHCI_P_SIG + offset)) {
+	case 0xeb140101:
+	    ch->devices = ATA_ATAPI_MASTER;
+	    device_printf(ch->dev, "SATA ATAPI devices not supported yet\n");
+	    ch->devices = 0;
+	    break;
+	case 0x96690101:
+	    ch->devices = ATA_PORTMULTIPLIER;
+	    device_printf(ch->dev, "Portmultipliers not supported yet\n");
+	    ch->devices = 0;
+	    break;
+	case 0x00000101:
+	    ch->devices = ATA_ATA_MASTER;
+	    break;
+	}
     }
 
     /* clear any interrupts pending on this channel */
@@ -754,47 +759,12 @@
 static int
 ata_ahci_setup_fis(struct ata_ahci_cmd_tab *ctp, struct ata_request *request)
 {
-    struct ata_device *atadev = device_get_softc(request->dev);
-
     bzero(ctp->cfis, 64);
     if (request->flags & ATA_R_ATAPI) {
-	ctp->cfis[0] = 0x27;  /* host to device */
-	ctp->cfis[1] = 0x80;  /* command FIS (note PM goes here) */
-	ctp->cfis[2] = ATA_PACKET_CMD;
-	if (request->flags & ATA_R_DMA)
-	    ctp->cfis[3] = ATA_F_DMA;
-	else {
-	    ctp->cfis[5] = request->transfersize;
-	    ctp->cfis[6] = request->transfersize >> 8;
-	}
-	ctp->cfis[7] = ATA_D_LBA | atadev->unit;
-	ctp->cfis[15] = ATA_A_4BIT;
 	bzero(ctp->acmd, 32);
 	bcopy(request->u.atapi.ccb, ctp->acmd, 12);
-	return 20;
     }
-    else {
-	ata_modify_if_48bit(request);
-	ctp->cfis[0] = 0x27;  /* host to device */
-	ctp->cfis[1] = 0x80;  /* command FIS (note PM goes here) */
-	ctp->cfis[2] = request->u.ata.command;
-	ctp->cfis[3] = request->u.ata.feature;
-	ctp->cfis[4] = request->u.ata.lba;
-	ctp->cfis[5] = request->u.ata.lba >> 8;
-	ctp->cfis[6] = request->u.ata.lba >> 16;
-	ctp->cfis[7] = ATA_D_LBA | atadev->unit;
-	if (!(atadev->flags & ATA_D_48BIT_ACTIVE))
-	    ctp->cfis[7] |= (request->u.ata.lba >> 24 & 0x0f);
-	ctp->cfis[8] = request->u.ata.lba >> 24;
-	ctp->cfis[9] = request->u.ata.lba >> 32; 
-	ctp->cfis[10] = request->u.ata.lba >> 40; 
-	ctp->cfis[11] = request->u.ata.feature >> 8;
-	ctp->cfis[12] = request->u.ata.count;
-	ctp->cfis[13] = request->u.ata.count >> 8;
-	ctp->cfis[15] = ATA_A_4BIT;
-	return 20;
-    }
-    return 0;
+    return ata_request2fis_h2d(request, &ctp->cfis[0]);
 }
 
 
@@ -1362,6 +1332,7 @@
     }
 }
 
+
 /*
  * Cyrix chipset support functions
  */
@@ -1751,7 +1722,7 @@
 		return ENXIO;
 	    ctlr->channels = 4;
 	    ctlr->allocate = ata_intel_31244_allocate;
-	    ctlr->reset = ata_sata_phy_reset;
+	    ctlr->reset = ata_intel_31244_reset;
 	}
 	ctlr->setmode = ata_sata_setmode;
     }
@@ -2042,6 +2013,13 @@
     return 0;
 }
 
+static void
+ata_intel_31244_reset(device_t dev)
+{
+    if (ata_sata_phy_reset(dev))
+	ata_generic_reset(dev);
+}
+
 
 /*
  * Integrated Technology Express Inc. (ITE) chipset support functions
@@ -2694,9 +2672,6 @@
 	u_int32_t rsp_in, rsp_out;
 	int slot;
 
-	/* unload SG list */
-	ch->dma->unload(ch->dev);
-
 	/* stop timeout */
 	callout_stop(&request->callout);
 
@@ -2720,6 +2695,10 @@
 	if (!(request->status & ATA_S_ERROR) &&
 	    !(request->flags & ATA_R_TIMEOUT))
 	    request->donecount = request->bytecount;
+
+	/* unload SG list */
+	ch->dma->unload(ch->dev);
+
 	res = ATA_OP_FINISHED;
     }
 
@@ -2754,7 +2733,8 @@
     ATA_OUTL(ctlr->r_res1, 0x0200c + ATA_MV_EDMA_BASE(ch), ~0x0);
 
     /* enable channel and test for devices */
-    ata_sata_phy_reset(dev);
+    if (ata_sata_phy_reset(dev))
+	ata_generic_reset(dev);
 
     /* enable EDMA machinery */
     ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000001);
@@ -2773,8 +2753,8 @@
 
     for (i = 0; i < nsegs; i++) {
 	prd[i].addrlo = htole32(segs[i].ds_addr);
-	prd[i].addrhi = 0;
 	prd[i].count = htole32(segs[i].ds_len);
+	prd[i].addrhi = htole32((u_int64_t)segs[i].ds_addr >> 32);
     }
     prd[i - 1].count |= htole32(ATA_DMA_EOT);
 }
@@ -2866,6 +2846,7 @@
     }
 }
 
+
 /*
  * NetCell chipset support functions
  */
@@ -2909,6 +2890,7 @@
     return 0;
 }
 
+
 /*
  * nVidia chipset support functions
  */
@@ -2971,7 +2953,7 @@
 	    int offset = ctlr->chip->cfg2 & NV4 ? 0x0440 : 0x0010;
 
 	    ctlr->allocate = ata_nvidia_allocate;
-	    ctlr->reset = ata_sata_phy_reset;
+	    ctlr->reset = ata_nvidia_reset;
 
 	    /* enable control access */
 	    pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1);
@@ -3086,6 +3068,13 @@
     return (status & (0x01 << shift));
 }
 
+static void
+ata_nvidia_reset(device_t dev)
+{
+    if (ata_sata_phy_reset(dev))
+	ata_generic_reset(dev);
+}
+
 
 /*
  * Promise chipset support functions
@@ -3755,7 +3744,8 @@
 	if ((ctlr->chip->cfg2 == PRSATA) ||
 	    ((ctlr->chip->cfg2 == PRCMBO) && (ch->unit < 2))) {
 
-	    ata_sata_phy_reset(dev);
+	    if (ata_sata_phy_reset(dev))
+		ata_generic_reset(dev);
 
 	    /* reset and enable plug/unplug intr */
 	    ATA_OUTL(ctlr->r_res2, 0x06c, (0x00000011 << ch->unit));
@@ -3790,7 +3780,8 @@
 		     (ATA_INL(ctlr->r_res2, 0x414 + (ch->unit << 8)) &
 		     ~0x00000003) | 0x00000001);
 
-	    ata_sata_phy_reset(dev);
+	    if (ata_sata_phy_reset(dev))
+		ata_generic_reset(dev);
 
 	    /* reset and enable plug/unplug intr */
 	    ATA_OUTL(ctlr->r_res2, 0x060, (0x00000011 << ch->unit));
@@ -4527,7 +4518,8 @@
     ATA_OUTL(ctlr->r_res2, 0x48,
 	     ATA_INL(ctlr->r_res2, 0x48) & ~(0xc0 >> ch->unit));
 
-    ata_sata_phy_reset(dev);
+    if (ata_sata_phy_reset(dev))
+	ata_generic_reset(dev);
 
     /* enable PHY state change interrupt */
     ATA_OUTL(ctlr->r_res2, 0x148 + offset, (1 << 16));
@@ -4713,7 +4705,7 @@
 	if ((ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2,
 						   &ctlr->r_rid2, RF_ACTIVE))) {
 	    ctlr->allocate = ata_sis_allocate;
-	    ctlr->reset = ata_sata_phy_reset;
+	    ctlr->reset = ata_sis_reset;
 
 	    /* enable PCI interrupt */
 	    pci_write_config(dev, PCIR_COMMAND,
@@ -4753,6 +4745,13 @@
 }
 
 static void
+ata_sis_reset(device_t dev)
+{
+    if (ata_sata_phy_reset(dev))
+	ata_generic_reset(dev);
+}
+
+static void
 ata_sis_setmode(device_t dev, int mode)
 {
     device_t gparent = GRANDPARENT(dev);
@@ -5008,9 +5007,10 @@
     struct ata_channel *ch = device_get_softc(dev);
 
     if ((ctlr->chip->cfg2 & VIABAR) && (ch->unit > 1))
-	ata_generic_reset(dev);
+        ata_generic_reset(dev);
     else
-	ata_sata_phy_reset(dev);
+	if (ata_sata_phy_reset(dev))
+	    ata_generic_reset(dev);
 }
 
 static void

==== //depot/projects/soc2006/intr_filter/dev/bge/if_bge.c#14 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.183 2007/03/08 00:49:26 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.184 2007/03/09 01:30:23 jkim Exp $");
 
 /*
  * Broadcom BCM570x family gigabit ethernet driver for FreeBSD.
@@ -256,6 +256,10 @@
 	{ BGE_CHIPID_BCM5714_B3,	"BCM5714 B3" },
 	{ BGE_CHIPID_BCM5715_A0,	"BCM5715 A0" },
 	{ BGE_CHIPID_BCM5715_A1,	"BCM5715 A1" },
+	{ BGE_CHIPID_BCM5715_A3,	"BCM5715 A3" },
+	{ BGE_CHIPID_BCM5755_A0,	"BCM5755 A0" },
+	{ BGE_CHIPID_BCM5755_A1,	"BCM5755 A1" },
+	{ BGE_CHIPID_BCM5755_A2,	"BCM5755 A2" },
 	/* 5754 and 5787 share the same ASIC ID */
 	{ BGE_CHIPID_BCM5787_A0,	"BCM5754/5787 A0" }, 
 	{ BGE_CHIPID_BCM5787_A1,	"BCM5754/5787 A1" },

==== //depot/projects/soc2006/intr_filter/dev/bge/if_bgereg.h#12 (text+ko) ====

@@ -30,7 +30,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.70 2007/02/12 23:58:52 jkim Exp $
+ * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.71 2007/03/09 01:30:23 jkim Exp $
  */
 
 /*
@@ -273,6 +273,7 @@
 #define	BGE_CHIPID_BCM5714_B3		0x80030000
 #define	BGE_CHIPID_BCM5715_A0		0x90000000
 #define	BGE_CHIPID_BCM5715_A1		0x90010000
+#define	BGE_CHIPID_BCM5715_A3		0x90030000
 #define	BGE_CHIPID_BCM5755_A0		0xa0000000
 #define	BGE_CHIPID_BCM5755_A1		0xa0010000
 #define	BGE_CHIPID_BCM5755_A2		0xa0020000

==== //depot/projects/soc2006/intr_filter/dev/mxge/eth_z8e.dat.gz.uu#3 (text+ko) ====

@@ -29,866 +29,986 @@
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
 
-$FreeBSD: src/sys/dev/mxge/eth_z8e.dat.gz.uu,v 1.3 2006/09/15 19:24:45 gallatin Exp $
+$FreeBSD: src/sys/dev/mxge/eth_z8e.dat.gz.uu,v 1.4 2007/03/08 17:49:06 gallatin Exp $
 ***************************************************************************/
 
 begin 644 eth_z8e.dat.gz
-M'XL("-3I"D4``V5T:%]Z.&4N9&%T`.Q:?6Q45W8_\V:,QQ.6F1@#8V-@,#;8
-MQH`#5H(JLW%WC4I4B"D?K5?0X%3.UDEI,DF\=&"-9WAX*QL1[!(KH0W@62V1
-MVHALJ,I*J43*9/%*J01^1*(J*Z7*K,M:LY%))GC`@_WFW?[.>_/LF?$SR6XB
-M]1]&NGKOWGO.N>?KGG/N?4/T#7Z2^YM@/_P]_#W\/?P]_#W\/?S]/_WN2`[Z
-M91_1N.ST1NF=^C=?%RJ&;5%R>OF9;G02XU(?.5_U"BU83`YQ3-JHR8*40))\
-M)10<)F<@(1&=.$3.H%\DE<`H#<5'*1@7,46]2YUWR:FHMZGS9?(.=OR6CBP$
-MO2(B^0V1-&EKDJ!@*>/>HJ'3MRAX.ALWN(2\U]`7,KG;3PEMT*>2ZI(V=KQ-
-MCN!RDJZU1LBWDGDI:&!>NEX@Y\]^&)'$,=?&GT\DI:.?D>.*MY&N>#\AY=0F
-M4A(JG7B!YEY)U)/2I1'34_;7XWD7,*/D>X5HA`IJ^T$G:M"TC<L%]1_ZB5A/
-MW+>2H\Q#GM<7BE$!'H[B.;!0Q%;T4Q'@/<#OB-HFDXS?B_%U_>2YV!EW]+XA
-M1MT!LOD.49Y;)1MD>'8`8RN*=)P+4=IRD7'$HCU?:HOVQ+4W]]P1;^X92[VY
-M)Q$\2,[4HCUWA_RZKCQ#?N@J1<[#M\GSS,NPD?H_=/AY\FH%SKBB_A<]TT%"
-M*RC(LL&.S7^^B;;]\?<WT?:_V+%IVMZ0Q:'=T^CL&R(AQK>0KY-U\LAF]@O(
-MEAB374[(Y1B77;NB-M6;EBNAA(FNH-D#Y#!P7)<,^5U3\L.'6A+!-CO3P7@_
-M\*,F_F"@@=QAL@WPNC_;8DO3J#=\\Y'&C/6_DU[_AKG^T?3ZF"MT>\WU']'Y
-MO!)@7W^$8,^M#!LE5Q?3PEB1B7_BC0S^VZ?X[P*^"W#U)O^,FR@H;+#R@0FI
-MZ$/(][V)8"5-RN3$>\.DJ"31+6U?C<JY.D0%BGJ1FE210INL(GI44<_32J+E
-MBMH/F[7RW.7RD,V&9W!%2+(IZE9:00X\ZVG+3\2XHM8![CC]29[X=%^*/$_]
-M1`05M1UCIZDII8FFU'VT<;0OQ+:\RWA^*K;^)"@4]09@KI+HD;:K\%&V@PH[
-M@+>6>S()X9+\BKJ?]J4DAFE1?XRY8])+.HQ+>E'O=TLAX93\:T*4SW)HT*VB
-M8E^IOZ6F@W'!LBB!&S3O",>(JQC_@.8ER"T*F/8HTPV!UN$TK3#@XCS/M$PZ
-M3"/Y72$87E&[&">L%DA]:!?0HN#I#NL7=.*3DZQ;.][MG@GL2UVW*<H7/7;8
-MFQK')UD&>ZTNPS'[N@E=%OM:0S;[&AY79<K#^W95Z'--P-NEXW7;MPNGO07V
-MMS>E1(CU"WV'0'N[$F@D46!O40OL?N#*JLZ/O6_"H-L+&GO'F9[3W@<ZX93L
-M@WY$<M]!DII4FZH$CNO[4PFT8YP*0?\RZ/7Q&J`?!JTSH-'*?&@R>4#S@F;P
-M]]ZJ$`72_%W7G/;H.O+;,GU*MX'N2[=)Z[;',>9A'V+_>3HAU*$$S]?1TWZ5
-M)F0*[5.=-.1_FU).>T11$S24Z$?_79V_H40KX.)'4MWV"\"]##ZU9_P.^M,\
-M$1_R)YA>$&.I;6TB.OGW1-?:K@&';2`FW3;5[@Z$\JZ-7L38!S3WB%#9;Z^U
-MM:(!]Z[JOC;Z`3WC]]/<6T'XJ?B"_5C,"]&VVYH8\E\%S*2`/JYSC-OV_)AX
-M^NZXV'8[8DOUV"^D"NP1K<`>U7KL<7',T0)]%>@Z=SGV&?9U/(.Q4L,.#K_H
-M=L"''"$EL!^V<^B^+GH<?8#O2\.'#3^9\SW`P=<<$=W/G',:1/><L!*XJ.]/
-M)?`![5/)IP2Z:-_!DA#O4T5]%S0!US,'MG,.)W[,?NF,JHBWJAY_+^I[P?!G
-M9S0S=A@9V8&6YR2:@Y;O-./)N.R^&*4?;N&X@_=(E/[:DWZ_&J4=[7H\16SQ
-M=]*"S\@32LE$>)^+]ZZFJLM"ZZZ/0:_CO.>%7,=[HF%\O,TIQBOG"I?KK)CT
-M<LYPHS\/^;4<S\(S]Z@(S7M&UD(<(_%>*_[.ZSIQ@&K<"7(.R%JS^XB'D*^*
-M^%W(N[H'[I&#\YA6@/4";B%>K:2!5Q#_9*H<D,6%U'BEQ'R:O#!OX',)^.S?
-M?;"!?H7X;!5/QV7/E/RSS-\P=3++?,+4TRPYV\'[*'5`Q'M?(-:%-ZB*_X4>
-M0YTI6M)T<)E01D5$"=RF`<QW=@A-]+BZQ@X(]0SRA5;@ZAZ7'VV.4EF]80O[
-M]=<P/N9T=8'6HTSK&O!3/:[C@`M%Z:6VV7@!;ER[)V*]!Z;X^$W304WPNQ)(
-MT0#&>5W0^<A<;W:97*>,_%58*5"O19:J_%[%]L0^"(UA/W"MP'D6M5UR7"XL
-MC9(WH.=ASH/J9MX;H5GH%TW37^!-T^P3SL*N3H/O9&="Q)AVI/,.W0(,ZHBX
-MZ"X,<(Z-')C@L6+XAC#X6E`\)M$BY/]XY-`$C720G6L@\(3Z9\T-YFE,IG?&
-MI-V[,388I;5Z'@;.`O1O3,&`!OJW,G!VCTG5[V`LF8TSWYF-,]]K]L'?J.\`
-MRU7T:^"'T4+&NO/K<VALS:&Q=R:O\_TY.*$<G+Z9O,X_EX-S,0=GT.P;=1#5
-M8NQF#DXL!R>9T9\_+A=-R<^V1GX1H$/!P^R##K^1=^_2JQTB"1_P`WZC2=_T
-M'1W>\)^8X3]%>Z=@4#X,^A($7<9@TU$EL9E0W[).P^Q3YIKN#L-ON(XUUXS"
-M5S@F9_CG+5XKO4;$7`.T;['_Z+4[Z*?QTK8JBF7KHRB9K8\%SDP='H5O1FG^
-M5?9CRWWIM(>#]VEI4!/#\-4S\'L[/R&#O2D)>9WSKO*Y1^FXRS4!P\X'["W`
-MO):&Y:<C_<SG)_+Y&?!\+L[YQEG88/8%^GCN%3WSKEK'LP6#9CS3D)-2]\1H
-M[XNPQ5U:A%ILV34:IFL=_QT*_H[FH]X8Y[B!LT&Q$AJ&GD1H`+"(7Z>-.++0
-M\Z`X`MM$P*\T0@L/LPV&:6$;RX-FP]@/Q#VQ%S;@.(%]NK`?SXC>9&I)]R\`
-M;HO`.8+',=8B9!O'L$M8^WB4*LBHIQ<V,ZU9>+C`YRF.(Z!UU]=I8S[^4X\Y
-MH#4@&3E*`Z]G9:T-^:A-.^8)Z^_I.>9#P_J6]*=BT**?IN-86',Z(NGX&X.L
-M!<.T*(R^)*1%C3_7XM*'[7K"QOEX4=BB[4?K0.M.]_MU&<9:<7Y9%-904W`?
-M[^UBK%PRWP>^Y+/,HC!T$9[5'E.\>O\R@]<+&;PZA\F[-\UK/)M7[UZT2K0&
-MM.WI?F8K&I>]/JQ?:MB$Q[`&Z^)+G-$GF_5ZDL=9GSRNH79`OP[S'O:57LWP
-MA>S:QKJNX1SU.L<O/1YY3^7$--0IWO/F'FY?3MYVGX@]X,R=>!U[N!^QYDJI
-MCAN;RF5\'I<-_[E%Q9M8)LXS'+>X7L$9/6Z<#8LS\Q_'K<3%0TD'X_.YW,#W
-MJK/%"/`Q%_FM;>@TT9`/=?#I!N3<"6+>AJFX2_?A%R>(WY6./R(%,$9,++XT
-MB/4Y)@[Z[^#L"AN_PKY>_+LK'7'FZV+4EO(:-BF.\?ICW84M9UD&EC>QD6$0
-M_[T14]X3"SF>%??E\KIY\YKG6S?Y:@,5`5?FW0YX]QIQL<27G</R$$M+ZK)C
-M:4EC=BPMV96=PR3DL)*V')Q`#DYW!DY?>IW3.3CG<W`N9?0A<\E5TUYC^OU,
-MR2<9?0F^$,=8W!Q#K-;O,MA'#'J+Y^;X'.`7^[)Y6%R;S</BAJF\"?JPWR]'
-MJ%2O?_@>!_NOB?N@=0KPT,/BG/R_."?_+^[+Z'O0#V?(X+%[R0;_B6'\?7.<
-MZR?P&POJ=V,-?`=7.$R+W^9:*TWS5J:>TG+EU#^E.?5/J3=#KH3["/V96]WQ
-M`Z[%(%><:R+XB!/U@1?K>OCN;Z2=[$H@1@.%J#4+7$DA%2?P#KN4MD9M$X[<
-M&+;]^T^MV=&TS;?_N1<W5;3ZGFU/NV&&#Y:.N0KUN@+G;1_HG#=]&N^0O\1A
-MW!VY202;3T'WR$%+?F7$P<(NWL_(X[$51337N!<J'<W8$PG?H2?%,"WYF._5
-MN"[A6O1*(HZ8]AFQG)B[;N`M*<_`B_.^9'B>6Z>2@W%`HTBO4T'O"O8Y<)I-
-M',#J..YV<JSM($?DT+!..^TC,9P-1I6.&'+Q33X_.2*=PTSGNCUIQ!!-+O6/
-M]12VG#F)^'B2G*F>PK:S)UFO2RZ9>HVFZ6G=A?"GTAOP:\O8:)E#)'+WRMI-
-M14OPNJJ1'UT!(5]N1NZ\:5US+$7]MR1NU'^N`/Q\8H26?HSG))Z_,&E&.IGF
-M4IPS;3N95LYX&_QJPJV&FBWFNH1LWV$Q?AJQ>R)*2Z\SCQGC%X4\;Q?#1WD]
-MX%C7#J[`J\7D!9_W1VC9\Z@A8P;/RS[(7F>9PYKG9:7@^;XUS\LVZKJ3P+<T
-M8VX7^+ZOZS5[?'_P'Y$K)=)Q=G9,VR,]?]Q]BK9;K'5.R/D[H[3L$]V/IL<O
-M&3Q`%Q+K`G(`;S8[FCF7]3`N^Q#_EGYBG@%0Z\=95^FYRIRY9,9<8];<X:GQ
-MO>;X5]@"^E]N8YQL&7W=UC;PA6&#26L;^"Y9^XWOACA)5K2X%IADN[`=9NI_
-M^5Q3_U\A0PJPOYCVIS);#IU=UK(LWP]94M:R+.^VEF5Y&#RG9OK2\O<Q;@5_
-M7<B6]&.H$9$/RTJY7IP>+Z/IO02^@<.U9*1S/3$_(SZ2'J0/R/\%:'RH2;9S
-MABY6O)R];EF+M2[*`M#%%]:Z*.NWUD79><C\Q4Q=E`V:ND">=XNW]HFU?N2K
-M%'EPQG0:<*,,-^I.&O;UO4+.SZGL$]"QB;?VB'EQRF=X)?!%1$&$Y=HK>XT5
-ME=9[<T4#>#UI,=YL?+-8<3Q[SZ[P3^L;N@%.QO>V![8'VZ#\64/_Y9MS^(A:
-MZW]%<G;]EQ=9Z[^\AO4?I?*6['A<WC@M$]8#CI#GS.?^UY7-;*!O&_@GG"-D
-MV_(_!'^VUE=B?;_H6XH\*G$=7E$!W[F)/LZ[*Z]ILM21UNVGF/NIH=N5[V;K
-MHZ+>6K<5NZ#;3ZUU6^&?/6]4'(?\G\[T[XIS!@X=91SC^^3*!0QC^'%%BN?9
-MYS-P;H)6\[2O5]Q(T\BDJ[KC5CZ]LDBGE^!OL]1\EM<\0/0YK7R>X7A\A3?3
-MIU<VFG`<8]*P]>*M-F*X'-II^?-W#J3A&2X'IM_8.RMO9N^=E>>S\QWT#SQ-
-MMIW#>SEX^-K^\H"]!'NO>M>P]ZI_R.9K58VUO5<USF[O52W6>VE5@&T=I57G
-ML_?2JK[IO83U]+U$C_X^>P&UPJQ[S]Q?7U<GV`_@J5*O=5";;V0=#>'$`_T$
-M,?[O?-XV=%7UHVSY*INM=57IAZZ"UKJJ/&ZMJTK4/Q2<N2\J+W'<!X_\3>+F
-MYU3U'3W^C^T3\#N+^%\Y'?]+>$]4ZO64&$/\/T7YG`NF<T"M10ZHJK'.`56-
-MUCF@:J_AQU5]V7Y<U3YM8^CIV\D!O2-4_13R<,BP1_7]'%YBUO:H1O%,O=;V
-MJ"ZUMD=U'?3>.],>U5N_7AZN;L_.P]6M7S\/5U^PMD'U1]8VJ(X:-EA=E&V#
-MZN2T#:IBW]0&&MO@``V,T.J/\83^UQS)YF-UF[7^5X>@_P%K_:\^/7NN6/V^
-M?@:4:4`SZMG"G1W1G'IV]2>FKL#3>R-4\[=IWI[+AJMQ&.O8=LY<I\8'_MZS
-MYJ^FWMH_:G:E<\U[HB#71VI0_UC5YC7=:9QFG0?X3R^>D4-\WUFCYS_P(92D
-MRO[0W([SB@7<U4PX_@[%L(.^%%G`)G-I6L.M\67#Y>_4OTM@GN&S95BSU?"U
-M->%L7UO3.NUK-8X<G%!V3H.??#OQX/((K=UMQ(*U_Y*S9L+:%]?.A9R7K6V]
-MMM+:UFM1_])E,>6##?DY\RW6^W5M8!9Z?88.UPYFZW#M/T_K$/Q_.SI21FC=
-M84-'M<]F\['.:ZVC=;70D6*MHW5;9]^OZ[#_29D9,]>%@F?T.P%][^U4$4MD
-M<YYCY3H^_PEW*6U73JG\S<W#</LZ].\![B[VTS+VTW4?&?E=D#LP!>LT87-H
-M\AV?,.&,NXA03NRH]5K;K;;6VFZU6PR[U8:R[5;;DNW?T.OO8;MVGXA;VN_H
-MGIO^3EKZ&3VV1*>/_KPC-OY?AB2._LU--]X'9)'LE<3U7EE<5]0[7*?,'Z;:
-MVP9_(FGHHO86PX[+CY6:=URSK<?_KV':#[I;`9U6Z.!]\UX9_7;S&QO>0U%Z
-MK/(!W^V=YK<,P)[/I'/4&(N8W\SP?O4K:)G\)++Y6>]`OALT:*SW/(@&V\GP
-M+[;C^LJONAOA.X,1VE!L[*?U.?7'^C;C[LO(,<^HN?ZVOMN=L/*W]6'3WU"S
-M,=U?Y\Q'#+_;X!TKR*RCU^OUKR@T]E44<#EXR6R_7-_VH'O$M&S_:LA6EW,N
-MV-#X8-DVM%K+MJ$C6[:ZG+N3#7K^'YN10S=<-.LL7QG73W5Y>KTUL$^4^ZSJ
-MK0VWINHM'7Z#<18<0+T5SJU[&^B*FEMSU96[3UOQ7U>?CG<G9\:[NO3]1]V%
-M['A0Y\^VRX;3.7A]V7;9T/B'QGH^Y-CM=LENDVQV3$-,RK<[['EH<]+/?,DN
-M.=#RTL\Y.?U\QD5SI)]Y.?TY7S&?GU[77-^1T\_[BODYWQ"?9O2SO\?^U4LO
-MM>][Y3E^5%:T5N5^%YS+,4E(CSOYV\[KA69,>7R+^2V"[X!AGR?Y?X/PH468
-M:_VPX[!^OOR-$TO.DG\Y)H\5;*SE;W>B9U,?\$Y'Z?'2!]P?AU+'"J]CG_#_
-M5*1_.W13XN^RG7@_(8N/^!U\".;C/^[<E$;H\3AR+>+MX[$9?K'D=MAA%Y(0
-MPB:,'SG2+W8T2=AT3=G!??X<![GGS74N6UKJ??*[]1N#G1T!H:E)MYC6D^A^
-MXOKNJI"1>WJ>N&[%_VNR\/,W2,VUR1/\$4GO342E>0FRH1Z7^'^6P_3$X<L8
-M0[X*B.Y-'F,O//&!=FR39YJ^@YC^J\4DG2N)2<;9_/_8^_ZPN(MSW]EE@\N&
-ML"NE<8VQKFV\=T\/*FU3H2TQ:%"C)@$UK:A1,":*,2:8("$$EF4A9$$"J"1%
-MPZ]H[(F:*.?4]N2<:]N-$"\J8>FYZ7UH'[Q=4XP44=>P"0B[._?SSGR_[+)9
-M4E/[G-M[G_O'/-_O_'[GG7?>>6?FG7=2?T?MZX1_%CP7`"^,RL'X=99_P;2*
-MOKGV4Y;Z1:<M>KXQ0T*O/(=/6XPUJD7T]<RY5#O$TM*0[CVDTR+=&C5=U/51
-M$1]NV,)8X"P?2JAPD2[L1;G;648[PAH^9:0C'$,Z0*17V?YI]+TZ7KOV7LSI
-M+H*#G_WS<+LM>CJCQK6;G^5IQN+[M93&6`%_$5]L],,_";^,3XF(3PZ+;T5\
-M#N*9$M^*^-6(9V'QV1'Q*R+BET?$9T;$9T3$IZOQ8T5\S;CC!X?4>7HFWB_J
-M'V(_Z!3MT[CF&8O+U#;,DVTL4]LP3[9Q1GQR6/SELHUE*@R7RS:6L;#X[(CX
-M%1'QRR/B,R/B,R+BT]5XV<8?-L[>QA\V*6V$/)NAMH')-F:H;6"RC3/BD\/B
-M3;*-&2H,)MG&#!86GQT1OR(B?GE$?&9$?$9$?+H:+]OXH\+9V_BCXDC>E+WL
-MUILLCVZU/%DPXVP\'N6\Z6&_E'I?I/-5Q!AX8B?M76>A%-(-%3RP!F%QJ8UP
-M_:3C==,_E'/DG9C63XVY;UC)IZ'[-K3'DEL,]H=\/.:QX7%'^B(/2Y7W,1QB
-M_6R7O"A]?T+%][Z7X/O>]]J$+)J^PL/2#BGZ?O9VK9AO2:[NIS-PTD43>[LQ
-M]PVX_:C'/DGZ9RZJMP_^+'!1TJE%G0-4#WBC7<HJZ1E"YM&R;-31"9E\4-9A
-M1MIOWRE@K[R/]FLT;L@I?3X?Z;-U/N!CL9")=,'*QX;!(QN_K+P0-,RU)%28
-M6)LVF)/@T]C;',&<1E5O#'&DYPPY),?HU]C;P^(@KW@:M,$)S#TFFG.(=Y$.
-MQKACR3H5+Z)=`G]#:->2G93OM$/'/.Q'A[Z9)'@SVJUALMU+[A'E@D;H3@3:
-M<D5Y,?!(^)OP@S]RKYL!AX7C=MK#[4/8J@(>I#L_0<(AZO;&?#L/:R+-"%MB
-M)=B5?HXG>IBFC=KX#J,&[24=[F*T21O6)FW04^]`F[1H$_J&X',7?TCS^GRA
-M?RSF_NLSH[?O^O71V@>9F$GZN?X'%%^OP$EG!*-LB5_`4V$GVET&WMY(,*NP
-M1NLON6ZC\I;JD2\/\)R8!9XSY\?W]>]0?H(%M*0W^B$\`$^`P1FMW@1-AZ9-
-M&SV.TWBT2=ULC"6.\<B)'XP[EA:HXRZAPA)#\WT;VABM#*.FD=;MRS".HL:C
-MSRV\\A^_"?QT)&C84F_,/QH2"OSBCA+@*C[%,GY!>D]2%VKIL(?=W$CU>N,,
-M'5)?:BE&^FW.D/Y41KR'=<BQ%7/9\[PVH3/H,')+B9&CK'>"W*KEAH3.$/U+
-M77^55I!_172\9SQ^?KQGW$#QA/=S^6&&W`.LO.QYBTW`8248/"RC%S"O0)TN
-MM5T>H$#H-\GP@6D^`?H1^N_:'S4;`TR3Y6>DHR1XQ+CC!J;*K=RQ)`Y]?9#J
-M.WNMF8T!!WNTP8,$]]G*!0=W7<-T;R]8RPJ^RY(JKM.QC].8EMJB1=G1^/6Z
-MS=LV77GE#)ZM$W`X;EC>+O1W;BA5ZZ8RX*\#?@[,OM^PX,95Y23?W7@5W6GD
-MEX'_.2Z2^YH!1K*O,0O\%3SB#,ER2*?I:YY@?+*<DW[]27:#V.>XQF=GUVPA
-M7:D;.KL*&?KDQD6BO'TY6M#.(N2[,D;S`8LQZS!7W6B!O"STS,YSQQ'R;D(_
-MZ3.?9)EVJ6MZXYJ9NJ8W8HUW8QUCR]8QEKD0SJ[4L1UU5*EU>!"NCFGPK801
-M=N-^8X6%]FWL2`?YYX9F2H<U*_"06<'I;@3H'?PQ"%[-Z2X5Z5WG%M<R_.O:
-M;>K]B!N'U7$7(;,:AMB-HZ1_#)D5-+S,I.ZGH.R#]4$AGPZ3/C7\A^I1GNT,
-MNXQD5;K/@#HZ;`7\3WT%PXSTJ(-Q"2=D?<M"]S\@"U.[>$U"?U@]Q>'U4!LP
-MAQ]J.(NUS'9V&?IP..A,.$%W16A.<Q7Y17O%79"S)&?P('@USPW06L''Z+Y6
-M5H#'P)_1?E;J-9(>JP++D`H+\5JAPX8T=$>+\E)Z6D]XXQ+ZL_SC7-[A('A3
-M^PENDA="_9'Y'6/%E4I_9*;_]?V16:S"Y&'+2&=<%XVV$BJT3*YI,G_7#:HA
-M.)[5!O.?=<#A2W-L:*[B$PKL)[I1)_CJQ&QZN;2.D3KG=$]@NA_L#;*_![$V
-M&0`=Z^C."?5]_6E&9P>GLK8OY0BC^W-!NO>#--\0\R#2K,)\W.?[D/(/M'VJ
-MMO.F/+6=8]_<U3%V-LBZ6KZ+L7\3VI]9)\*+.!NKU;`F,9?>U*B&`X;!!M2[
-MFV0GE$GRG>UQ]@W2%\P*+.5T+](VRH<@-WEI;J;T[:<%'0V0[$<ZC@2#N_@F
-M99Z^:52%I0K^:+AIQ'IPW,%BQRLWE(P[;EX(?IXO]P5OMN+_A/*_6.7S0057
-M1$^TEIN'L9H;<+%6X![SGI%HB]9S$A<W;SS?W8*QN-0CL^ESTUQ"^PQ8ZX.O
-M+5])NL[T?Y+=4H4O>-DM3TI^,J<"]9Q0^0G^/1YF$+K28[%IH-F;O9@OBN6\
-M$-M(.*(U.-:8=$^OD71;Y5VDY2_Q.$,S-VC3&B9!+^"/A6>86)_+?;];5G0U
-M@R[H?E+12:2_Q8RY&KQC^4',K\U5)4R/,2CN>X\[;EEWM%3>$Z=[WJ0[ZV&W
-M+!;SFM-P@&0;P'0"\]$!J9=*]T-N[J;V<+HO#-D5Z0Z1G!R,,ZARVR&,UUX:
-ML_SL)QT8<[2>]B94>""S&)J(;A)\5W#PDGFY?A-3[](0?<B^N&5:_@\6(?]I
-M%H^Q8T>[+R:XB,:)3Q!N7$6DYW[S[^C>,B_ZI+,>XUC(+;;P]B^W`BX3M4-I
-MUT$%SH/CCN60?^=F*_3B5>$&GAJ]!"NM4P"WT6_D[F)_V)VVY2TA'B'+)=Q&
-MHY%`$>_%_,7J1QC=*?7&#QGICEQ\GZ\7ZX$`:QL1\YMFE<]KQ/CLI[$=%JYM
-M4,8OPA=F;2<XY)BF.-)MR-KN)1TX_W2>L9P8@A'IDZ;3CN7HZ'XSU1L6-B>K
-M&'E1GQHV[KBU\/QW;-*'7;9[06.W+:*[FP']7-.UPTQC`\]Q%?T!X;?^RNT#
-M/PIRR$.W=LX;A:PX2OM,<Y/$OHXAS>.>&&:]]C^P7K_;_N9IKT[N[^@@`]SZ
-M6XHK'^;!W$`'\?'HLB7F`_"X/TI^>MLBF@MH'O@+\);R6L->SLTL6#O?"UBP
-MT+2R:TMH_7';:M!,AE+N9TJYI><KEV2E7HPQV:;YG@#*#A@NL6!\E)=_P6)/
-ML=N/HQY/G[]?K%G;@BPY^)F9*7M9Y9^RVPY#9C5!;B)YOMSR,&,TW]D"+-9=
-M2.,D?1AE'#TV07/[)QT!;M;^ZJR'T1R`M;J>9,Z$"K:4:XUB#S%80_N'2ZS>
-MN/0)N7]F>"-L[RSF4W;[]VGOC.L-52VTIHE+<WGC4CMYW%S3N./V?`^[U4Y]
-M7H<X@@5U_\X;ETAG$`S]K`D6!3H;/E=M#-S^B[[1<1=W)KKHCHU2AQ%U[.0U
-MB9!Y;U?&F?COH'C_E!5SV>VFEDFR47';F]QQA6M,G^BZRVP'S=T^[-%<=T*1
-M1\3]V]GV8?D^L\&-0C#?)XVP5?=,0GZ9`N^9U#(3QD-\_0*6@K@%(VS%$BR1
-MDN!,WLORXU!N!LGPQT^3K+*B5<S)S[-%091':X>&!6P1K1L09LT-8`T1MG:H
-M7,"29]:[8I$\*U@ES@RV>=DW"JZGNW8KS=P1PR'[:N5=F94:8[.DP02L&8GV
-M:!VKK$\@ZQLYU@L=?,JJ%6%8YQ*?%G`H=YD#E=^F\VAQASGW0;FVH7O.'K9"
-M[,74/<_BGWJ>F8X_3.U:F2+R:'6,X`TZ:<R!/@`WU2?NROL_<Y478JQN.(WQ
-MMO()UY9#+&O(+_AO[AKF;4=Y[0N8"665N3<*.?Z;KBUO4-E/NS:-L-W`#WV'
-MV*I,]\0`.XZQCG5]@,I!FG=$>_>9+;D!N\`AP3N]9E3:X3XMRAMTYV%N4]JD
-MXEK2UZI+75L.,.H?2@^_WCV*M)_,[!=*@[@?H-Q4VA.A.+EF#:5I07N`J])]
-MP)'+-D)M?HE@];"5!]R%?XB^;PL^`+JOZ!/K]E5[5OF#7-ZQS5H>%')GUG+B
-M"X*W7$/W*K)N-6ID_U);D#<C6A^'K4UI;WNZC[D^?3A(>PP+@.\I,Y/TQQM1
-M[@^4^<JKS%?>L;BY"_D.,U/WV#%^S;GR+,%*_`KK\4Y)FUG+E;RC<@[/PEQM
-M&(W:WACP(`=8-MI#<QSDB5@.WN4N3G6Y?9-,WAW)$F.&CX?@0YE>N;;..NAA
-M_RCNO',]<(=U.=USI3TS6M_G3C`[R2.^N'0OCTOMEV,C:]`;M\0B\%@CVX)R
-M(/^D"IGN0M:XLZ[[U':)MO@9]1=DCECU#LTIEOWTA:ZG/>S.?(G7=*]K`95Q
-MY]?%F1#Z`[SADA&6/<1CJSO^NC*76/;071SE_MXI=D<`/-TB9&74!]H(XT%W
-M-%$?77.(94@:O*.F3=ZU@BQ]1QIH7JX;IL]B-.(L)IR__E4P&J[K\+`[K"2S
-M$[S;_"KON\.JKJ_$OM)VD]AC;A=[KW=,W_\7][,<O(?296W_3.P[8=W40WUB
-ML<5\=)+=\;[83T5[J1YE;U4W[K@S7CUO\[!L<0](GO?<N4BE&;0M5NJ69._O
-M2F:BO\>XV?"M%J+1.U>$XR3+'RR7O.:.Y7(M><?RORQ#W+E?E3\D3DW@(W?U
-M"+PZ8[+)+H7-QC\XQ>YZT%^;V!C0DZT50QOF;F;9P.@.FC;7Q[1(-X]_9(U7
-MY1&NC[&332F$F;@C@[YZT*F)]E-)9P;^Q+[B(;(;DV=[@E&<&>M\+>UUEF'Z
-M[2OL8?=#S@I\9$T(Q"4>@`SC!Q],PMK&#)DZ*5B3"%DVL4FV^S-E#2WA)O@E
-M+U-M<MQU-`#8">X@P68`C,1O:#_O,VNB@.\SJYYL<^`;C_`DS/F-@(?T?C5\
-ML]44C$L\&/S,FH#O`92?B?@F^L+?&/7,[S66AGK>H+V93IM7N_,UEOQ5QS^M
-MQ:D<M"EQA*U>KNS3.+]JN7\+V';O%;I0Y?5[(:>!]W>924\///.`CVUM1?]^
-MPN:Y_2NQ%D]A;5C[\#%KXK/HQU!?Q/`^'_)LM9H:]JHRV8]7EH(F+)O$_XI,
-M"_<W:8/Y+8Y@/C>DDDR1K]I'$7-9,=,&QLR&W5M8,N@DQ>B5<[/DS3\N!7PF
-MQ6:*2;&9D@):TBGQAP.03T6Y6]BBEM/@*9C7<C^4<S#)_"M'C3SPL96UCH1L
-MJGBW6K5M#FZ>;=^C8;[8@XQW-XL]4#W\K.D9IB.=[>X.N2_:A9'?;:9Q_Q.L
-M_U=WS[Y.27-=*^;,--=7[2\JB_K];U6>L%7FE+)U,!9ROW?<)??0[A;VW4+R
-M]$\^H#@*(QMP&:*?[[:2C*VL57YCF0Z3:Q7:"VB7]X,3QAUW9WA8OFK#S2?O
-MC=^]VJ-)FQ5OZOUTL3<O]@+OKE+Y*Y5!^[Q;M[.%=UU*>WJ,[HL/2QY_]R%U
-MW\58D2'H@/83A"RK!;_?*^ZPCTI>?UKA]7>_$U;/Z#0?1QUT+YS*E_/@W1U4
-M!\GPDK_?W3';^@#P6PFW067=XA[]2.*VF,5<G<3,O]G@T244`+];F/$DRUE"
-M\30&7=?0O=:<Y]S)(M\5?"HGOB\X2&%.R@=_XJ]')G0-)2R9[L@B7.@%>2]Y
-M;/Q;B/]6$[...W(Z/9I4(0>)^FN79%R+N-<G/7-D/]VS$F597Q]1_3E_5O:3
-MP8?O64%Z!/1/Z_V@,_4(X4G*K/>LE/+G/2N[4&OK7GZB;3[O'W?<8_&PN_/$
-MWBG\@J9(_JHF6?\CUVZDHSV!W&*6(67%U'[,!:ZP]O\;QFK4O4W(WDSDJ4DE
-M.5S':Y9VX`L9,JT'WWB$T]>$KPM?S`%+[$236"N1/*H?B[MN8C;=$J)_VCMP
-M5_V$9!D-[6&,L/L.'<=Z@Z3,K7X^:?D&N^@DPKCVWOCR5J:=N5]_+WKIW@RX
-M)KANQNY#\'THY;Y#<'GCCGLA_]R3+V6%^\0=G`:2K>/F]\NV+&'PZWG<DA2E
-M+0/PFRSEF./B4BDNB<<M[<!:TDPP!./2>L)U9JA,:AO6SP.$)_[-71TJKB@=
-M\NDH71!ER#D6Z5&&FGX:KPO([A'Z"^EV`QY5'P?P3QS-9TR%WX>\P"O&[GTF
-M]=Z[VJY*M(?BVH3<=U_*M+T9^"E?PVFQ1T?[G_%4#_PF27OW'9;KA'OM<N]*
-MPD;SQPSXXL+Z?0&5D7A$Z7>]TM8DV=;4SE/LWE&"_ZOR1]N5D&U:/+2WDAZL
-M3?42WW4O]#%W2Y`=GQAFJX+<=8JM6<DG[>S"9-C[Q7F=N_2[PI;%I^S^[6ZO
-M.&>A?W$>3/OVRER9WZ;,E\$2.K.4MEK<HU[B;=-QO/:Z88G/^[\CY!_`[/;?
-MXB)X@\[KA@GV<M(=\(^[:"Q:BFA?[/YYH',>K+EN^*^!O]S//_7&73=,\E*#
-M;8Y^60MWC1E2P8/O3SE:+.GFKRF7VMZFM-W#UHB]MVN;Q3H>_OOS9]V3`1W0
-M_(CYZ`L%%T?4^>BKS[W394_)LA](^EN6#3ZDZ[,1GW^@=<J0EG%A>,NS"/IP
-MI@Y(_IP7-^FXWSOE7,+$_2\ML[L'_<ROG]_?.X%U=-&[;(@](/3?>GVT/EF2
-M0K@E&6V?Q+V@J3[?N\R]IH>Y_3T8ATM2P*=8$#RJ?(@'!`X@NUG6TIW35`O-
-M78I]B^FUQ;B#98^/Y>LA-\9C_=\2V)%C*1OBP96C,5RL4<Y('3YWP3!#FH3`
-M5FMBRQ:6M&^2)6'=8*+Y`[)>"M\*^?`T2U9E0Z&#<0+_D`,#->G#^Q39;U^8
-M[$>RB["GM]E*^\DS9+\P'JJ[4#ZAXMJO3V53SJ4=O:.,H;^PKLS5`>=-T?I7
-M/8LC.5C=#SJZ2,XA*"_[/#*$/K2WD_>+"U\KK]7+?9$\%V2M)+GF3'-U?S-`
-MY=GE65K>H(>ME^M11[G8+^%%GW0TE0A;>(V2UA_\LSAG<1J:CA?3V=DGG6+O
-MU\'L^,;3.5E?*2.[HAD-DPS".=.XOGF2M9]ANB'VH(7V$L7]R1'3&N">[)0(
-MF0C^;`X<TIXN_E<#MAY\<ZC-O-PL[`9R?:++/7J+2Y1)]XI`7Y9ODLSPX!-M
-MGY.M73XDST9<M$:($?M&6/?3^<BXX\$CH3L$#W:K<N&8/K5GS)GJ\NF7V'W.
-MZR80YT$_),OY3.*,SH5CS'%W(\ZOGI,U"/M`>>>S941WE)CM"\Q#6$>^?M:C
-M[9I@3-H"6_MH:`]\[56A\X.`L@Y>6R?GZ+5U8AU<F]KQ8M&$5IY)KK5[V"/9
-MJNR+-)E43G2;:\!=[7R/ZQJ25Q\R]V&\J_M/A!O:=W*5C(@X21MKI_N_RT(X
-M6POY]\:4O]'>ET[9C\)Z?MT_DSR/_ROP_QS5C7\S_I]4_B_#__W*_P+\WZ3\
-M?PW_5RO_2?C_NO+_C1'V4$#YGX__#Y7_2_%_7-G#U9]BZWID.Q]"_^>MDWT\
-M'3;@83_I5O=B/.RA3LJ#</3SVJ2P\`Z9?AW&U`,KPL*;E'#(OVN;P\*=2GA:
-MR-:H""]5PK/5<PXEO$`)Q_QV6TI8^#HA,PH;14;>54IV2-?5>5BV-2Q-CI+W
-M@(=EK0X+7Z&$O^EA^\/;DG&A?"1:WRZ*9WG1PC7-T<-I/4TVI,3YM-"#>'@)
-MW=<QMO*3%AOG)]G#BQ0>4T5GO_)\^>%Y%$;C3NCG"'M#Z\5>Z;7%=EI?>NOE
-M&>PHR6`AFT3K_XW&(95#:SUWH;3'1',<A9&-.\(I^:?W^TLD3$'P+\4&7CZ-
-M-4I/9X'A:3WL87%_`_R!CSL>7AC2RUE?J(0'$;XX+#QO=IE%F\WU6OO46>[S
-MG^43]?\+<#\L;$1^(^#4-I*."]DS]1=Q+\:N#N%S5_F\;%7!.-^-N;?/=X;U
-M%018^2C93S=RTNLL^X3%DXWAMH<I_GVV,M_+CN<'6!O*;EVKGAL_?")D>U5+
-M>X9DI_$#X$",*;K;A;7606,%`VT_@GGR.H]T2P_.U@XY)A_)D+PMALFQ_D@&
-M?X'TIQ[)!']KAGP?]6RZ#&LK/_',3UU:R0_S4X):?06M(^D\@-<:NE_]=$)[
-MO&2([;B4F==,:)'FD7].*"3]]M0.K'.U/]\TH?WU)I?6+_AH?HI8/T#N(%G#
-M/1`@'9YXKC<T\:U6?6!;?N+46/[<5JQ'('<D/7N6I:DV?EN+('.,FPV85Y*%
-M?JO&Q+!63:+_H/:NP;8BIA/G(&2SE\Y5IJQ,F0^ES=YM5BWI(1`LT=I:A[52
-M0-%+LWW(YA<\S+0)9[AK9"/3VGQ\Q+9>R.]SCN?[F;OX#\RVA?HE?R>=*9'M
-M,*0WC;#\/<8)IH73N#:0?)#_,LVK:/<HZ:"YMMQ(8<?*/Q1G+TZIVY;?07[0
-MTT?<D&!Y;7)BCI07\]7]Y$;TV4*4/>N^!M;#2:<VLAA\XT^Q#1^(L2/V^AZ]
-M&F%7D!W?W`"MTV+Z3[)'=P9I+:*/Z>?.6/NW6ACDQ-C&/M]25^YVVAOX!#06
-M:^\Z3?J-&[P\+J:_H(1H9H-7V6]/&7<\6JK.?1XE'&45N`N7NJ0^ZX;?'2\D
-M&3:F/P`:0-TZJAMIR+Z5IJ]XJ8OK8_,$39'M-?^'X!%#LKZ:V&S9_@W?H38@
-M'=T9O<+=(LZ,/*2+$#S;R%Q;!'Q7\[C8#CH;P[^87^0:/K93KDMC77(-'TM[
-M#Z:QN%B/Q,N&)RT;L)X&?!*W&[SE?X8?M$Y[";+^1S=V#3.FC*%+1N#/#62@
-M+Q_=2#:?4<8O4(8&7WGV-9U.E@6\K*#RE#HP!C?<JH17*6.Q7]J,G@XOI?+P
-MC1\S7-Q!\:CK`.G)4=ET9@I_$M4=50=I6C_O,?.T7I@S84".V\<V0B8[R,_R
-M-T@OD!?Q(_4EPL[J`M)KMQ7PD;Z"">#:,`BZ]&`-8+"1CC;HFO03>!S":PP>
-M*D/1U??9MK/$H-,P!/ZW`/F'P1,_Z!,VZ#Q8CQB&I%V7C>`O!A_I']*9#N@H
-M9H0]-BS*(7W!8OXG\('+R$:3>(-#Z`]M_#[AYR3;2/O)1FD;[[$S"LX@`VS,
-MRPI@@),M>'S)3^\&(-]52(OU\V/#:MJP>'N$/R/";U'L"UK&'1MSU'U1#WOL
-M`,$.VHUZ;Y?V0VG>)%V/4^SQ_;T+&=M-^R)Z0TM"!2M`O\:@;1^2C=F^X5&2
-M\XS<D<+<PWXY1V#-?W(1TOR9S4>Z$<M_$>4<N^^,@04?R9G+M8N'0;?ZPY.>
-M.;178'N.D;VK^>B;(:[]/LU!HR].#L]Q^__`"D#/(^SQ([I2IFLXQ4QTSM/E

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200703091057.l29Avj42008991>