From mboxrd@z Thu Jan 1 00:00:00 1970 From: Luben Tuikov Subject: [patch 24/28] Sync up drivers/scsi/aic7xxx Date: Tue, 28 Sep 2004 09:07:32 -0400 Sender: linux-scsi-owner@vger.kernel.org Message-ID: <41596214.4050609@adaptec.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from magic.adaptec.com ([216.52.22.17]:38859 "EHLO magic.adaptec.com") by vger.kernel.org with ESMTP id S267770AbUI1NHl (ORCPT ); Tue, 28 Sep 2004 09:07:41 -0400 Received: from redfish.adaptec.com (redfish.adaptec.com [162.62.50.11]) by magic.adaptec.com (8.11.6/8.11.6) with ESMTP id i8SD7eW03329 for ; Tue, 28 Sep 2004 06:07:40 -0700 Received: from rtpe2k01.adaptec.com (rtpe2k01.adaptec.com [10.110.12.40]) by redfish.adaptec.com (8.11.6/8.11.6) with ESMTP id i8SD7dm31373 for ; Tue, 28 Sep 2004 06:07:39 -0700 List-Id: linux-scsi@vger.kernel.org To: SCSI Mailing List Sync up drivers/scsi/aic7xxx/. (3367-3707) Signed-off-by: Luben Tuikov ==== //depot/aic7xxx/aic7xxx/aic79xx.h#106 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.h ==== --- /tmp/tmp.27211.0 2004-09-27 13:36:51.779634848 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.h 2004-04-29 12:52:06.000000000 -0400 @@ -37,7 +37,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#106 $ + * $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#107 $ * * $FreeBSD$ */ @@ -1065,7 +1065,6 @@ { uint16_t tag; uint8_t sg_status; - uint8_t pad[4]; uint8_t valid_tag; }; ==== //depot/aic7xxx/aic7xxx/aic79xx.reg#75 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.reg ==== --- /tmp/tmp.27211.1 2004-09-27 13:36:52.572514312 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.reg 2004-04-29 13:04:55.000000000 -0400 @@ -39,7 +39,7 @@ * * $FreeBSD$ */ -VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#75 $" +VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $" /* * This file is processed by the aic7xxx_asm utility for use in assembling @@ -3968,6 +3968,7 @@ const SG_SIZEOF download const PKT_OVERRUN_BUFOFFSET download const SCB_TRANSFER_SIZE download +const CACHELINE_MASK download /* * BIOS SCB offsets ==== //depot/aic7xxx/aic7xxx/aic79xx.seq#118 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.seq ==== --- /tmp/tmp.27211.2 2004-09-27 13:36:53.336398184 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.seq 2004-05-07 15:48:50.000000000 -0400 @@ -40,7 +40,7 @@ * $FreeBSD$ */ -VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#118 $" +VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $" PATCH_ARG_LIST = "struct ahd_softc *ahd" PREFIX = "ahd_" @@ -364,11 +364,11 @@ bmov COMPLETE_SCB_DMAINPROG_HEAD, COMPLETE_SCB_HEAD, 2; mvi CCSCBCTL, CCSCBRESET; bmov SCBHADDR, QOUTFIFO_NEXT_ADDR, 4; + mov A, QOUTFIFO_NEXT_ADDR; bmov SCBPTR, COMPLETE_SCB_HEAD, 2; fill_qoutfifo_loop: bmov CCSCBRAM, SCBPTR, 2; mov CCSCBRAM, SCB_SGPTR[0]; - bmov CCSCBRAM, ALLZEROS, 4; mov CCSCBRAM, QOUTFIFO_ENTRY_VALID_TAG; mov NONE, SDSCB_QOFF; inc INT_COALESCING_CMDCOUNT; @@ -377,6 +377,18 @@ cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL je fill_qoutfifo_done; cmp CCSCBADDR, CCSCBADDR_MAX je fill_qoutfifo_done; test QOFF_CTLSTA, SDSCB_ROLLOVR jnz fill_qoutfifo_done; + /* + * Don't cross an ADB or Cachline boundary when DMA'ing + * completion entries. In PCI mode, at least in 32/33 + * configurations, the SCB DMA engine may lose its place + * in the data-stream should the target force a retry on + * something other than an 8byte aligned boundary. In + * PCI-X mode, we do this to avoid split transactions since + * many chipsets seem to be unable to format proper split + * completions to continue the data transfer. + */ + add SINDEX, A, CCSCBADDR; + test SINDEX, CACHELINE_MASK jz fill_qoutfifo_done; bmov SCBPTR, SCB_NEXT_COMPLETE, 2; jmp fill_qoutfifo_loop; fill_qoutfifo_done: ==== //depot/aic7xxx/aic7xxx/aic79xx.c#242 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_core.c ==== --- /tmp/tmp.27211.3 2004-09-27 13:37:00.423320808 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_core.c 2004-05-07 15:45:35.000000000 -0400 @@ -37,7 +37,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#242 $ + * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#245 $ */ #ifdef __linux__ @@ -225,7 +225,7 @@ static void ahd_download_instr(struct ahd_softc *ahd, u_int instrptr, uint8_t *dconsts); static int ahd_probe_stack_size(struct ahd_softc *ahd); -static void ahd_other_scb_timeout(struct ahd_softc *ahd, +static int ahd_other_scb_timeout(struct ahd_softc *ahd, struct scb *scb, struct scb *other_scb); static int ahd_scb_active_in_fifo(struct ahd_softc *ahd, @@ -1635,7 +1635,7 @@ CAM_LUN_WILDCARD, CAM_SEL_TIMEOUT, "Selection Timeout", - /*verbose_level*/0); + /*verbose_level*/1); } ahd_outb(ahd, CLRINT, CLRSCSIINT); ahd_iocell_first_selection(ahd); @@ -6025,22 +6025,6 @@ hscb = (struct hardware_scb *)hscb_map->vaddr; hscb_busaddr = hscb_map->busaddr; scb_data->scbs_left = PAGE_SIZE / sizeof(*hscb); - if (ahd->next_queued_hscb == NULL) { - /* - * We need one HSCB to serve as the "next HSCB". Since - * the tag identifier in this HSCB will never be used, - * there is no point in using a valid SCB from the - * free pool for it. So, we allocate this "sentinel" - * specially. - */ - ahd->next_queued_hscb = hscb; - ahd->next_queued_hscb_map = hscb_map; - memset(hscb, 0, sizeof(*hscb)); - hscb->hscb_busaddr = aic_htole32(hscb_busaddr); - hscb++; - hscb_busaddr += sizeof(*hscb); - scb_data->scbs_left--; - } } if (scb_data->sgs_left != 0) { @@ -6300,7 +6284,8 @@ * for the target mode role, we must additionally provide space for * the incoming target command fifo. */ - driver_data_size = AHD_SCB_MAX * sizeof(*ahd->qoutfifo); + driver_data_size = AHD_SCB_MAX * sizeof(*ahd->qoutfifo) + + sizeof(struct hardware_scb); if ((ahd->features & AHD_TARGETMODE) != 0) driver_data_size += AHD_TMODE_CMDS * sizeof(struct target_cmd); if ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0) @@ -6350,6 +6335,17 @@ next_baddr += PKT_OVERRUN_BUFSIZE; } + /* + * We need one SCB to serve as the "next SCB". Since the + * tag identifier in this SCB will never be used, there is + * no point in using a valid HSCB tag from an SCB pulled from + * the standard free pool. So, we allocate this "sentinel" + * specially from the DMA safe memory chunk used for the QOUTFIFO. + */ + ahd->next_queued_hscb = (struct hardware_scb *)next_vaddr; + ahd->next_queued_hscb_map = &ahd->shared_data_map; + ahd->next_queued_hscb->hscb_busaddr = aic_htole32(next_baddr); + ahd->init_level++; /* Allocate SCB data now that buffer_dmat is initialized */ @@ -8478,13 +8474,14 @@ u_int sg_prefetch_cnt_limit; u_int sg_prefetch_align; u_int sg_size; + u_int cacheline_mask; uint8_t download_consts[DOWNLOAD_CONST_COUNT]; if (bootverbose) printf("%s: Downloading Sequencer Program...", ahd_name(ahd)); -#if DOWNLOAD_CONST_COUNT != 7 +#if DOWNLOAD_CONST_COUNT != 8 #error "Download Const Mismatch" #endif /* @@ -8520,6 +8517,9 @@ /* Round down to the nearest power of 2. */ while (powerof2(sg_prefetch_align) == 0) sg_prefetch_align--; + + cacheline_mask = sg_prefetch_align - 1; + /* * If the cacheline boundary is greater than half our prefetch RAM * we risk not being able to fetch even a single complete S/G @@ -8560,6 +8560,7 @@ download_consts[PKT_OVERRUN_BUFOFFSET] = (ahd->overrun_buf - (uint8_t *)ahd->qoutfifo) / 256; download_consts[SCB_TRANSFER_SIZE] = SCB_TRANSFER_SIZE_1BYTE_LUN; + download_consts[CACHELINE_MASK] = cacheline_mask; cur_patch = patches; downloaded = 0; skip_addr = 0; @@ -9239,13 +9240,18 @@ if (active_scb != NULL) { if (active_scb != scb) { + /* * If the active SCB is not us, assume that * the active SCB has a longer timeout than * the timedout SCB, and wait for the active - * SCB to timeout. + * SCB to timeout. As a safeguard, only + * allow this deferral to continue if some + * untimed-out command is outstanding. */ - ahd_other_scb_timeout(ahd, scb, active_scb); + if (ahd_other_scb_timeout(ahd, scb, + active_scb) != 0) + goto bus_reset; continue; } @@ -9283,7 +9289,8 @@ * some other command. Reset the timer * and go on. */ - ahd_other_scb_timeout(ahd, scb, scb); + if (ahd_other_scb_timeout(ahd, scb, NULL) != 0) + goto bus_reset; } else { /* * This SCB is for a disconnected transaction @@ -9379,20 +9386,55 @@ ahd_unlock(ahd, &s); } -static void +/* + * Re-schedule a timeout for the passed in SCB if we determine that some + * other SCB is in the process of recovery or an SCB with a longer + * timeout is still pending. Limit our search to just "other_scb" + * if it is non-NULL. + */ +static int ahd_other_scb_timeout(struct ahd_softc *ahd, struct scb *scb, struct scb *other_scb) { u_int newtimeout; + int found; ahd_print_path(ahd, scb); printf("Other SCB Timeout%s", (scb->flags & SCB_OTHERTCL_TIMEOUT) != 0 ? " again\n" : "\n"); + + newtimeout = aic_get_timeout(scb); scb->flags |= SCB_OTHERTCL_TIMEOUT; - newtimeout = MAX(aic_get_timeout(other_scb), - aic_get_timeout(scb)); - aic_scb_timer_reset(scb, newtimeout); + found = 0; + if (other_scb != NULL) { + if ((other_scb->flags + & (SCB_OTHERTCL_TIMEOUT|SCB_TIMEDOUT)) == 0 + || (other_scb->flags & SCB_RECOVERY_SCB) != 0) { + found++; + newtimeout = MAX(aic_get_timeout(other_scb), + newtimeout); + } + } else { + LIST_FOREACH(other_scb, &ahd->pending_scbs, pending_links) { + if ((other_scb->flags + & (SCB_OTHERTCL_TIMEOUT|SCB_TIMEDOUT)) == 0 + || (other_scb->flags & SCB_RECOVERY_SCB) != 0) { + found++; + newtimeout = MAX(aic_get_timeout(other_scb), + newtimeout); + } + } + } + + if (found != 0) + aic_scb_timer_reset(scb, newtimeout); + else { + ahd_print_path(ahd, scb); + printf("No other SCB worth waiting for...\n"); + } + + return (found != 0); } /**************************** Flexport Logic **********************************/ ==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#208 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.c ==== --- /tmp/tmp.27211.4 2004-09-27 13:37:01.441166072 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.c 2004-04-09 12:57:15.000000000 -0400 @@ -1,7 +1,7 @@ /* * Adaptec AIC79xx device driver for Linux. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#208 $ + * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#209 $ * * -------------------------------------------------------------------------- * Copyright (c) 1994-2000 Justin T. Gibbs. @@ -4904,7 +4904,21 @@ new_status = DID_BAD_TARGET; break; case CAM_SEL_TIMEOUT: +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + /* + * The 2.4.X SCSI layer will not offline + * devices in response to DID_NO_CONNECT. + * Return a command timeout here instead + * so that for commands other than inquiry + * and request sense commands (which the + * mid-layer special cases) recovery will + * take place and persistently missing + * devices are eventually offlined. + */ + new_status = DID_TIME_OUT; +#else new_status = DID_NO_CONNECT; +#endif break; case CAM_SCSI_BUS_RESET: case CAM_BDR_SENT: ==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#159 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.h ==== --- /tmp/tmp.27211.5 2004-09-27 13:37:01.511155432 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.h 2004-04-09 16:48:02.000000000 -0400 @@ -36,7 +36,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#159 $ + * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#161 $ * */ #ifndef _AIC79XX_LINUX_H_ @@ -94,7 +94,7 @@ #include #endif -#define AIC79XX_DRIVER_VERSION "2.0.8" +#define AIC79XX_DRIVER_VERSION "2.0.10" /********************* Definitions Required by the Core ***********************/ /* ==== //depot/aic7xxx/aic7xxx/aic79xx_pci.c#87 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_pci.c ==== --- /tmp/tmp.27211.6 2004-09-27 13:37:01.709125336 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_pci.c 2004-04-09 17:09:51.000000000 -0400 @@ -38,7 +38,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#87 $ + * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#88 $ */ #ifdef __linux__ @@ -83,6 +83,7 @@ #define ID_AHA_29320 0x8012900500429005ull #define ID_AHA_29320B 0x8013900500439005ull #define ID_AHA_39320_B 0x8015900500409005ull +#define ID_AHA_39320_B_DELL 0x8015900501681028ull #define ID_AHA_39320A 0x8016900500409005ull #define ID_AHA_39320D 0x8011900500419005ull #define ID_AHA_39320D_B 0x801C900500419005ull @@ -168,6 +169,12 @@ ahd_aic7902_setup }, { + ID_AHA_39320_B_DELL, + ID_ALL_MASK, + "Adaptec (Dell OEM) 39320 Ultra320 SCSI adapter", + ahd_aic7902_setup + }, + { ID_AHA_39320A, ID_ALL_MASK, "Adaptec 39320A Ultra320 SCSI adapter", ==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_reg.h#85 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped ==== --- /tmp/tmp.27211.7 2004-09-27 13:37:02.484007536 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped 2004-05-04 18:25:30.000000000 -0400 @@ -3788,6 +3788,7 @@ /* Downloaded Constant Definitions */ +#define CACHELINE_MASK 0x07 #define SCB_TRANSFER_SIZE 0x06 #define PKT_OVERRUN_BUFOFFSET 0x05 #define SG_SIZEOF 0x04 @@ -3795,9 +3796,9 @@ #define SG_PREFETCH_ALIGN_MASK 0x02 #define SG_PREFETCH_CNT_LIMIT 0x01 #define SG_PREFETCH_CNT 0x00 -#define DOWNLOAD_CONST_COUNT 0x07 +#define DOWNLOAD_CONST_COUNT 0x08 /* Exported Labels */ -#define LABEL_seq_isr 0x283 -#define LABEL_timer_isr 0x27f +#define LABEL_seq_isr 0x285 +#define LABEL_timer_isr 0x281 ==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_seq.h#86 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped ==== --- /tmp/tmp.27211.8 2004-09-27 13:37:02.617987168 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped 2004-05-04 18:25:30.000000000 -0400 @@ -7,12 +7,12 @@ */ static uint8_t seqprog[] = { 0xff, 0x02, 0x06, 0x78, - 0x00, 0xea, 0x60, 0x59, + 0x00, 0xea, 0x64, 0x59, 0x01, 0xea, 0x04, 0x30, 0xff, 0x04, 0x0c, 0x78, - 0x19, 0xea, 0x60, 0x59, + 0x19, 0xea, 0x64, 0x59, 0x19, 0xea, 0x04, 0x00, - 0x33, 0xea, 0x5a, 0x59, + 0x33, 0xea, 0x5e, 0x59, 0x33, 0xea, 0x00, 0x00, 0x60, 0x3a, 0x3a, 0x68, 0x04, 0x4d, 0x35, 0x78, @@ -33,15 +33,15 @@ 0xff, 0xea, 0x62, 0x02, 0x00, 0xe2, 0x3a, 0x40, 0xff, 0x21, 0x3b, 0x70, - 0x40, 0x4b, 0xa6, 0x69, - 0x00, 0xe2, 0x64, 0x59, - 0x40, 0x4b, 0xa6, 0x69, - 0x20, 0x4b, 0x92, 0x69, + 0x40, 0x4b, 0xaa, 0x69, + 0x00, 0xe2, 0x68, 0x59, + 0x40, 0x4b, 0xaa, 0x69, + 0x20, 0x4b, 0x96, 0x69, 0xfc, 0x42, 0x44, 0x78, 0x10, 0x40, 0x44, 0x78, - 0x00, 0xe2, 0xf8, 0x5d, + 0x00, 0xe2, 0xfc, 0x5d, 0x20, 0x4d, 0x48, 0x78, - 0x00, 0xe2, 0xf8, 0x5d, + 0x00, 0xe2, 0xfc, 0x5d, 0x30, 0x3f, 0xc0, 0x09, 0x30, 0xe0, 0x50, 0x60, 0x7f, 0x4a, 0x94, 0x08, @@ -51,7 +51,7 @@ 0x00, 0xe2, 0x76, 0x58, 0x00, 0xe2, 0x86, 0x58, 0x00, 0xe2, 0x06, 0x40, - 0x33, 0xea, 0x5a, 0x59, + 0x33, 0xea, 0x5e, 0x59, 0x33, 0xea, 0x00, 0x00, 0x01, 0x52, 0x84, 0x78, 0x02, 0x58, 0x50, 0x31, @@ -59,21 +59,21 @@ 0xff, 0x97, 0x6f, 0x78, 0x50, 0x4b, 0x6a, 0x68, 0xbf, 0x3a, 0x74, 0x08, - 0x14, 0xea, 0x60, 0x59, + 0x14, 0xea, 0x64, 0x59, 0x14, 0xea, 0x04, 0x00, 0x08, 0x92, 0x25, 0x03, 0xff, 0x90, 0x5f, 0x68, - 0x00, 0xe2, 0x72, 0x5b, + 0x00, 0xe2, 0x76, 0x5b, 0x00, 0xe2, 0x5e, 0x40, - 0x00, 0xea, 0x5a, 0x59, + 0x00, 0xea, 0x5e, 0x59, 0x01, 0xea, 0x00, 0x30, 0x80, 0xf9, 0x7e, 0x68, - 0x00, 0xe2, 0x58, 0x59, - 0x11, 0xea, 0x5a, 0x59, + 0x00, 0xe2, 0x5c, 0x59, + 0x11, 0xea, 0x5e, 0x59, 0x11, 0xea, 0x00, 0x00, - 0x80, 0xf9, 0x58, 0x79, + 0x80, 0xf9, 0x5c, 0x79, 0xff, 0xea, 0xd4, 0x0d, - 0x22, 0xea, 0x5a, 0x59, + 0x22, 0xea, 0x5e, 0x59, 0x22, 0xea, 0x00, 0x00, 0x10, 0x16, 0x90, 0x78, 0x10, 0x16, 0x2c, 0x00, @@ -144,35 +144,37 @@ 0x02, 0xa0, 0x40, 0x32, 0x02, 0xa0, 0x44, 0x36, 0x04, 0x4d, 0x17, 0x69, - 0x40, 0x16, 0x44, 0x69, - 0xff, 0x2d, 0x49, 0x61, + 0x40, 0x16, 0x48, 0x69, + 0xff, 0x2d, 0x4d, 0x61, 0xff, 0x29, 0x85, 0x70, 0x02, 0x28, 0x55, 0x32, 0x01, 0xea, 0x5a, 0x01, 0x04, 0x44, 0xf9, 0x30, + 0x01, 0x44, 0xc1, 0x31, 0x02, 0x28, 0x51, 0x31, 0x02, 0xa8, 0x60, 0x31, 0x01, 0xa4, 0x61, 0x31, - 0x04, 0xea, 0x60, 0x31, 0x01, 0x3d, 0x61, 0x31, 0x01, 0x14, 0xd4, 0x31, 0x01, 0x56, 0xad, 0x1a, 0xff, 0x54, 0xa9, 0x1a, 0xff, 0x55, 0xab, 0x22, - 0xff, 0x8d, 0x3d, 0x71, - 0x80, 0xac, 0x3c, 0x71, - 0x20, 0x16, 0x3c, 0x69, + 0xff, 0x8d, 0x41, 0x71, + 0x80, 0xac, 0x40, 0x71, + 0x20, 0x16, 0x40, 0x69, + 0x00, 0xac, 0xc4, 0x19, + 0x07, 0xe2, 0x40, 0xf9, 0x02, 0x8c, 0x51, 0x31, - 0x00, 0xe2, 0x22, 0x41, + 0x00, 0xe2, 0x24, 0x41, 0x01, 0xac, 0x08, 0x31, 0x09, 0xea, 0x5a, 0x01, 0x02, 0x8c, 0x51, 0x32, 0xff, 0xea, 0x1a, 0x07, 0x04, 0x24, 0xf9, 0x30, - 0x1d, 0xea, 0x4e, 0x41, + 0x1d, 0xea, 0x52, 0x41, 0x02, 0x2c, 0x51, 0x31, 0x04, 0xa8, 0xf9, 0x30, - 0x19, 0xea, 0x4e, 0x41, + 0x19, 0xea, 0x52, 0x41, 0x06, 0xea, 0x08, 0x81, 0x01, 0xe2, 0x5a, 0x35, 0x02, 0xf2, 0xf0, 0x31, @@ -188,27 +190,27 @@ 0x02, 0x20, 0xb9, 0x30, 0x02, 0x20, 0x51, 0x31, 0x4c, 0x93, 0xd7, 0x28, - 0x10, 0x92, 0x73, 0x79, + 0x10, 0x92, 0x77, 0x79, 0x01, 0x6b, 0xc0, 0x30, 0x02, 0x64, 0xc8, 0x00, 0x40, 0x3a, 0x74, 0x04, 0x00, 0xe2, 0x76, 0x58, - 0x33, 0xea, 0x5a, 0x59, + 0x33, 0xea, 0x5e, 0x59, 0x33, 0xea, 0x00, 0x00, 0x30, 0x3f, 0xc0, 0x09, - 0x30, 0xe0, 0x74, 0x61, - 0x20, 0x3f, 0x8a, 0x69, - 0x10, 0x3f, 0x74, 0x79, + 0x30, 0xe0, 0x78, 0x61, + 0x20, 0x3f, 0x8e, 0x69, + 0x10, 0x3f, 0x78, 0x79, 0x02, 0xea, 0x7e, 0x00, - 0x00, 0xea, 0x5a, 0x59, + 0x00, 0xea, 0x5e, 0x59, 0x01, 0xea, 0x00, 0x30, 0x02, 0x4e, 0x51, 0x35, 0x01, 0xea, 0x7e, 0x00, - 0x11, 0xea, 0x5a, 0x59, + 0x11, 0xea, 0x5e, 0x59, 0x11, 0xea, 0x00, 0x00, 0x02, 0x4e, 0x51, 0x35, 0xc0, 0x4a, 0x94, 0x00, - 0x04, 0x41, 0x98, 0x79, + 0x04, 0x41, 0x9c, 0x79, 0x08, 0xea, 0x98, 0x00, 0x08, 0x57, 0xae, 0x00, 0x08, 0x3c, 0x78, 0x00, @@ -216,12 +218,12 @@ 0x0f, 0x67, 0xc0, 0x09, 0x00, 0x3a, 0x75, 0x02, 0x20, 0xea, 0x96, 0x00, - 0x00, 0xe2, 0x10, 0x42, + 0x00, 0xe2, 0x14, 0x42, 0xc0, 0x4a, 0x94, 0x00, - 0x40, 0x3a, 0xc4, 0x69, + 0x40, 0x3a, 0xc8, 0x69, 0x02, 0x55, 0x06, 0x68, - 0x02, 0x56, 0xc4, 0x69, - 0xff, 0x5b, 0xc4, 0x61, + 0x02, 0x56, 0xc8, 0x69, + 0xff, 0x5b, 0xc8, 0x61, 0x02, 0x20, 0x51, 0x31, 0x80, 0xea, 0xb2, 0x01, 0x44, 0xea, 0x00, 0x00, @@ -229,40 +231,40 @@ 0x33, 0xea, 0x00, 0x00, 0xff, 0xea, 0xb2, 0x09, 0xff, 0xe0, 0xc0, 0x19, - 0xff, 0xe0, 0xc6, 0x79, + 0xff, 0xe0, 0xca, 0x79, 0x02, 0xac, 0x51, 0x31, - 0x00, 0xe2, 0xbc, 0x41, + 0x00, 0xe2, 0xc0, 0x41, 0x02, 0x5e, 0x50, 0x31, 0x02, 0xa8, 0xb8, 0x30, 0x02, 0x5c, 0x50, 0x31, - 0xff, 0xad, 0xd7, 0x71, + 0xff, 0xad, 0xdb, 0x71, 0x02, 0xac, 0x41, 0x31, 0x02, 0x22, 0x51, 0x31, 0x02, 0xa0, 0x5c, 0x33, 0x02, 0xa0, 0x44, 0x32, - 0x00, 0xe2, 0xe0, 0x41, - 0x10, 0x92, 0xe1, 0x69, + 0x00, 0xe2, 0xe4, 0x41, + 0x10, 0x92, 0xe5, 0x69, 0x3d, 0x93, 0xc9, 0x29, 0x01, 0xe4, 0xc8, 0x01, 0x01, 0xea, 0xca, 0x01, 0xff, 0xea, 0xda, 0x01, 0x02, 0x20, 0x51, 0x31, 0x02, 0xae, 0x41, 0x32, - 0xff, 0x21, 0xe9, 0x61, + 0xff, 0x21, 0xed, 0x61, 0xff, 0xea, 0x46, 0x02, 0x02, 0x5c, 0x50, 0x31, 0x40, 0xea, 0x96, 0x00, - 0x02, 0x56, 0x00, 0x6e, - 0x01, 0x55, 0x00, 0x6e, - 0x10, 0x92, 0xf5, 0x79, - 0x10, 0x40, 0xfe, 0x69, - 0x01, 0x56, 0xfe, 0x79, + 0x02, 0x56, 0x04, 0x6e, + 0x01, 0x55, 0x04, 0x6e, + 0x10, 0x92, 0xf9, 0x79, + 0x10, 0x40, 0x02, 0x6a, + 0x01, 0x56, 0x02, 0x7a, 0xff, 0x97, 0x07, 0x78, - 0x13, 0xea, 0x60, 0x59, + 0x13, 0xea, 0x64, 0x59, 0x13, 0xea, 0x04, 0x00, 0x00, 0xe2, 0x06, 0x40, 0xbf, 0x3a, 0x74, 0x08, - 0x04, 0x41, 0x04, 0x7a, + 0x04, 0x41, 0x08, 0x7a, 0x08, 0xea, 0x98, 0x00, 0x08, 0x57, 0xae, 0x00, 0x01, 0x93, 0x75, 0x32, @@ -270,108 +272,108 @@ 0x40, 0xea, 0x72, 0x02, 0x08, 0x3c, 0x78, 0x00, 0x80, 0xea, 0x6e, 0x02, - 0x00, 0xe2, 0xde, 0x5b, + 0x00, 0xe2, 0xe2, 0x5b, 0x01, 0x3c, 0xc1, 0x31, - 0x9f, 0xe0, 0x80, 0x7c, - 0x80, 0xe0, 0x24, 0x72, - 0xa0, 0xe0, 0x60, 0x72, - 0xc0, 0xe0, 0x56, 0x72, - 0xe0, 0xe0, 0x90, 0x72, - 0x01, 0xea, 0x60, 0x59, + 0x9f, 0xe0, 0x84, 0x7c, + 0x80, 0xe0, 0x28, 0x72, + 0xa0, 0xe0, 0x64, 0x72, + 0xc0, 0xe0, 0x5a, 0x72, + 0xe0, 0xe0, 0x94, 0x72, + 0x01, 0xea, 0x64, 0x59, 0x01, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0x10, 0x42, - 0x80, 0x39, 0x2b, 0x7a, - 0x03, 0xea, 0x60, 0x59, + 0x00, 0xe2, 0x14, 0x42, + 0x80, 0x39, 0x2f, 0x7a, + 0x03, 0xea, 0x64, 0x59, 0x03, 0xea, 0x04, 0x00, - 0xee, 0x00, 0x32, 0x6a, + 0xee, 0x00, 0x36, 0x6a, 0x05, 0xea, 0xb4, 0x00, - 0x33, 0xea, 0x5a, 0x59, + 0x33, 0xea, 0x5e, 0x59, 0x33, 0xea, 0x00, 0x00, 0x02, 0xa8, 0x9c, 0x32, - 0x00, 0xe2, 0x7a, 0x59, + 0x00, 0xe2, 0x7e, 0x59, 0xef, 0x96, 0xd5, 0x19, - 0x00, 0xe2, 0x42, 0x52, + 0x00, 0xe2, 0x46, 0x52, 0x09, 0x80, 0xe1, 0x30, 0x02, 0xea, 0x36, 0x00, 0xa8, 0xea, 0x32, 0x00, - 0x00, 0xe2, 0x48, 0x42, + 0x00, 0xe2, 0x4c, 0x42, 0x01, 0x96, 0xd1, 0x30, 0x10, 0x80, 0x89, 0x31, 0x20, 0xea, 0x32, 0x00, 0xbf, 0x39, 0x73, 0x0a, - 0x10, 0x4c, 0x52, 0x6a, - 0x20, 0x19, 0x4a, 0x6a, + 0x10, 0x4c, 0x56, 0x6a, 0x20, 0x19, 0x4e, 0x6a, - 0x02, 0x4d, 0x10, 0x6a, + 0x20, 0x19, 0x52, 0x6a, + 0x02, 0x4d, 0x14, 0x6a, 0x40, 0x39, 0x73, 0x02, - 0x00, 0xe2, 0x10, 0x42, - 0x80, 0x39, 0xd1, 0x6a, + 0x00, 0xe2, 0x14, 0x42, + 0x80, 0x39, 0xd5, 0x6a, 0x01, 0x44, 0x10, 0x33, 0x08, 0x92, 0x25, 0x03, - 0x00, 0xe2, 0x10, 0x42, + 0x00, 0xe2, 0x14, 0x42, 0x10, 0xea, 0x80, 0x00, 0x01, 0x37, 0xc5, 0x31, - 0x80, 0xe2, 0x7c, 0x62, - 0x10, 0x92, 0xa1, 0x6a, + 0x80, 0xe2, 0x80, 0x62, + 0x10, 0x92, 0xa5, 0x6a, 0xc0, 0x94, 0xc5, 0x01, - 0x40, 0x92, 0x6d, 0x6a, + 0x40, 0x92, 0x71, 0x6a, 0xbf, 0xe2, 0xc4, 0x09, - 0x20, 0x92, 0x81, 0x7a, + 0x20, 0x92, 0x85, 0x7a, 0x01, 0xe2, 0x88, 0x30, - 0x00, 0xe2, 0xde, 0x5b, - 0xa0, 0x3c, 0x89, 0x62, + 0x00, 0xe2, 0xe2, 0x5b, + 0xa0, 0x3c, 0x8d, 0x62, 0x23, 0x92, 0x89, 0x08, - 0x00, 0xe2, 0xde, 0x5b, - 0xa0, 0x3c, 0x89, 0x62, - 0x00, 0xa8, 0x80, 0x42, - 0xff, 0xe2, 0x80, 0x62, - 0x00, 0xe2, 0xa0, 0x42, + 0x00, 0xe2, 0xe2, 0x5b, + 0xa0, 0x3c, 0x8d, 0x62, + 0x00, 0xa8, 0x84, 0x42, + 0xff, 0xe2, 0x84, 0x62, + 0x00, 0xe2, 0xa4, 0x42, 0x40, 0xea, 0x98, 0x00, 0x01, 0xe2, 0x88, 0x30, - 0x00, 0xe2, 0xde, 0x5b, - 0xa0, 0x3c, 0x5f, 0x72, + 0x00, 0xe2, 0xe2, 0x5b, + 0xa0, 0x3c, 0x63, 0x72, 0x40, 0xea, 0x98, 0x00, 0x01, 0x37, 0x95, 0x32, 0x08, 0xea, 0x6e, 0x02, - 0x00, 0xe2, 0x10, 0x42, - 0xe0, 0xea, 0xfa, 0x5b, - 0x80, 0xe0, 0xdc, 0x6a, - 0x04, 0xe0, 0x8e, 0x73, - 0x02, 0xe0, 0xc0, 0x73, - 0x00, 0xea, 0x3a, 0x73, - 0x03, 0xe0, 0xd0, 0x73, - 0x23, 0xe0, 0xb2, 0x72, - 0x08, 0xe0, 0xd8, 0x72, - 0x00, 0xe2, 0xde, 0x5b, - 0x07, 0xea, 0x60, 0x59, + 0x00, 0xe2, 0x14, 0x42, + 0xe0, 0xea, 0xfe, 0x5b, + 0x80, 0xe0, 0xe0, 0x6a, + 0x04, 0xe0, 0x92, 0x73, + 0x02, 0xe0, 0xc4, 0x73, + 0x00, 0xea, 0x3e, 0x73, + 0x03, 0xe0, 0xd4, 0x73, + 0x23, 0xe0, 0xb6, 0x72, + 0x08, 0xe0, 0xdc, 0x72, + 0x00, 0xe2, 0xe2, 0x5b, + 0x07, 0xea, 0x64, 0x59, 0x07, 0xea, 0x04, 0x00, - 0x08, 0x48, 0x11, 0x72, - 0x04, 0x48, 0xaf, 0x62, + 0x08, 0x48, 0x15, 0x72, + 0x04, 0x48, 0xb3, 0x62, 0x01, 0x49, 0x89, 0x30, - 0x00, 0xe2, 0xa0, 0x42, + 0x00, 0xe2, 0xa4, 0x42, 0x01, 0x44, 0xd4, 0x31, - 0x00, 0xe2, 0xa0, 0x42, + 0x00, 0xe2, 0xa4, 0x42, 0x01, 0x00, 0x6c, 0x32, - 0x33, 0xea, 0x5a, 0x59, + 0x33, 0xea, 0x5e, 0x59, 0x33, 0xea, 0x00, 0x00, 0x4c, 0x3a, 0xc1, 0x28, 0x01, 0x64, 0xc0, 0x31, - 0x00, 0x36, 0x5b, 0x59, + 0x00, 0x36, 0x5f, 0x59, 0x01, 0x36, 0x01, 0x30, - 0x01, 0xe0, 0xd6, 0x7a, - 0xa0, 0xea, 0xf0, 0x5b, - 0x01, 0xa0, 0xd6, 0x62, - 0x01, 0x84, 0xcb, 0x7a, - 0x01, 0x95, 0xd9, 0x6a, - 0x05, 0xea, 0x60, 0x59, + 0x01, 0xe0, 0xda, 0x7a, + 0xa0, 0xea, 0xf4, 0x5b, + 0x01, 0xa0, 0xda, 0x62, + 0x01, 0x84, 0xcf, 0x7a, + 0x01, 0x95, 0xdd, 0x6a, + 0x05, 0xea, 0x64, 0x59, 0x05, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0xd8, 0x42, - 0x03, 0xea, 0x60, 0x59, + 0x00, 0xe2, 0xdc, 0x42, + 0x03, 0xea, 0x64, 0x59, 0x03, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0xd8, 0x42, - 0x07, 0xea, 0x02, 0x5c, + 0x00, 0xe2, 0xdc, 0x42, + 0x07, 0xea, 0x06, 0x5c, 0x01, 0x44, 0xd4, 0x31, - 0x00, 0xe2, 0x10, 0x42, + 0x00, 0xe2, 0x14, 0x42, 0x3f, 0xe0, 0x76, 0x0a, 0xc0, 0x3a, 0xc1, 0x09, 0x00, 0x3b, 0x51, 0x01, @@ -382,54 +384,54 @@ 0x01, 0xea, 0xc6, 0x01, 0x02, 0xe2, 0xc8, 0x31, 0x02, 0xec, 0x40, 0x31, - 0xff, 0xa1, 0xf8, 0x72, + 0xff, 0xa1, 0xfc, 0x72, 0x02, 0xe8, 0xda, 0x31, 0x02, 0xa0, 0x50, 0x31, - 0x00, 0xe2, 0x1a, 0x43, + 0x00, 0xe2, 0x1e, 0x43, 0x80, 0x39, 0x73, 0x02, 0x01, 0x44, 0xd4, 0x31, - 0x00, 0xe2, 0xde, 0x5b, + 0x00, 0xe2, 0xe2, 0x5b, 0x01, 0x39, 0x73, 0x02, - 0xe0, 0x3c, 0x35, 0x63, + 0xe0, 0x3c, 0x39, 0x63, 0x02, 0x39, 0x73, 0x02, - 0x20, 0x46, 0x2e, 0x63, + 0x20, 0x46, 0x32, 0x63, 0xff, 0xea, 0x52, 0x09, - 0xa8, 0xea, 0xf0, 0x5b, - 0x04, 0x92, 0x15, 0x7b, + 0xa8, 0xea, 0xf4, 0x5b, + 0x04, 0x92, 0x19, 0x7b, 0x01, 0x3a, 0xc1, 0x31, - 0x00, 0x93, 0x15, 0x63, + 0x00, 0x93, 0x19, 0x63, 0x01, 0x3b, 0xc1, 0x31, - 0x00, 0x94, 0x1f, 0x73, + 0x00, 0x94, 0x23, 0x73, 0x01, 0xa9, 0x52, 0x11, - 0xff, 0xa9, 0x0a, 0x6b, - 0x00, 0xe2, 0x2e, 0x43, + 0xff, 0xa9, 0x0e, 0x6b, + 0x00, 0xe2, 0x32, 0x43, 0x10, 0x39, 0x73, 0x02, - 0x04, 0x92, 0x2f, 0x7b, + 0x04, 0x92, 0x33, 0x7b, 0xfb, 0x92, 0x25, 0x0b, 0xff, 0xea, 0x72, 0x0a, - 0x01, 0xa4, 0x29, 0x6b, + 0x01, 0xa4, 0x2d, 0x6b, 0x02, 0xa8, 0x9c, 0x32, - 0x00, 0xe2, 0x7a, 0x59, - 0x10, 0x92, 0xd9, 0x7a, - 0xff, 0xea, 0x02, 0x5c, - 0x00, 0xe2, 0xd8, 0x42, - 0x04, 0xea, 0x60, 0x59, + 0x00, 0xe2, 0x7e, 0x59, + 0x10, 0x92, 0xdd, 0x7a, + 0xff, 0xea, 0x06, 0x5c, + 0x00, 0xe2, 0xdc, 0x42, + 0x04, 0xea, 0x64, 0x59, 0x04, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0xd8, 0x42, - 0x04, 0xea, 0x60, 0x59, + 0x00, 0xe2, 0xdc, 0x42, + 0x04, 0xea, 0x64, 0x59, 0x04, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0x10, 0x42, - 0x08, 0x92, 0xd1, 0x7a, - 0xc0, 0x39, 0x45, 0x7b, - 0x80, 0x39, 0xd1, 0x6a, - 0xff, 0x88, 0x45, 0x6b, - 0x40, 0x39, 0xd1, 0x6a, - 0x10, 0x92, 0x4b, 0x7b, - 0x0a, 0xea, 0x60, 0x59, + 0x00, 0xe2, 0x14, 0x42, + 0x08, 0x92, 0xd5, 0x7a, + 0xc0, 0x39, 0x49, 0x7b, + 0x80, 0x39, 0xd5, 0x6a, + 0xff, 0x88, 0x49, 0x6b, + 0x40, 0x39, 0xd5, 0x6a, + 0x10, 0x92, 0x4f, 0x7b, + 0x0a, 0xea, 0x64, 0x59, 0x0a, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0x6a, 0x5b, - 0x00, 0xe2, 0xaa, 0x43, - 0x50, 0x4b, 0x52, 0x6b, + 0x00, 0xe2, 0x6e, 0x5b, + 0x00, 0xe2, 0xae, 0x43, + 0x50, 0x4b, 0x56, 0x6b, 0xbf, 0x3a, 0x74, 0x08, 0x01, 0xe0, 0xf4, 0x31, 0xff, 0xea, 0xc0, 0x09, @@ -439,31 +441,31 @@ 0x01, 0xfa, 0xc0, 0x35, 0x02, 0xa8, 0x90, 0x32, 0x02, 0xea, 0xb4, 0x00, - 0x33, 0xea, 0x5a, 0x59, + 0x33, 0xea, 0x5e, 0x59, 0x33, 0xea, 0x00, 0x00, 0x02, 0x48, 0x51, 0x31, 0xff, 0x90, 0x85, 0x68, - 0xff, 0x88, 0x77, 0x6b, - 0x01, 0xa4, 0x73, 0x6b, - 0x02, 0xa4, 0x7b, 0x6b, - 0x01, 0x84, 0x7b, 0x7b, + 0xff, 0x88, 0x7b, 0x6b, + 0x01, 0xa4, 0x77, 0x6b, + 0x02, 0xa4, 0x7f, 0x6b, + 0x01, 0x84, 0x7f, 0x7b, 0x02, 0x28, 0x19, 0x33, 0x02, 0xa8, 0x50, 0x36, - 0xff, 0x88, 0x7b, 0x73, - 0x00, 0xe2, 0x4e, 0x5b, + 0xff, 0x88, 0x7f, 0x73, + 0x00, 0xe2, 0x52, 0x5b, 0x02, 0xa8, 0x20, 0x33, 0x04, 0xa4, 0x49, 0x03, 0xff, 0xea, 0x1a, 0x03, - 0xff, 0x2d, 0x87, 0x63, + 0xff, 0x2d, 0x8b, 0x63, 0x02, 0xa8, 0x58, 0x32, 0x02, 0xa8, 0x5c, 0x36, 0x02, 0xa8, 0x40, 0x31, 0x02, 0x2e, 0x51, 0x31, 0x02, 0xa0, 0x18, 0x33, 0x02, 0xa0, 0x5c, 0x36, - 0xc0, 0x39, 0xd1, 0x6a, + 0xc0, 0x39, 0xd5, 0x6a, 0x04, 0x92, 0x25, 0x03, - 0x20, 0x92, 0xab, 0x6b, + 0x20, 0x92, 0xaf, 0x6b, 0x02, 0xa8, 0x40, 0x31, 0xc0, 0x3a, 0xc1, 0x09, 0x00, 0x3b, 0x51, 0x01, @@ -478,60 +480,60 @@ 0xf7, 0x57, 0xae, 0x08, 0x08, 0xea, 0x98, 0x00, 0x01, 0x44, 0xd4, 0x31, - 0xee, 0x00, 0xb4, 0x6b, + 0xee, 0x00, 0xb8, 0x6b, 0x02, 0xea, 0xb4, 0x00, 0xc0, 0xea, 0x72, 0x02, - 0x09, 0x4c, 0xb6, 0x7b, + 0x09, 0x4c, 0xba, 0x7b, 0x01, 0xea, 0x78, 0x02, 0x08, 0x4c, 0x06, 0x68, - 0x0b, 0xea, 0x60, 0x59, + 0x0b, 0xea, 0x64, 0x59, 0x0b, 0xea, 0x04, 0x00, 0x01, 0x44, 0xd4, 0x31, - 0x20, 0x39, 0x11, 0x7a, - 0x00, 0xe2, 0xc8, 0x5b, - 0x00, 0xe2, 0x10, 0x42, - 0x01, 0x84, 0xcd, 0x7b, + 0x20, 0x39, 0x15, 0x7a, + 0x00, 0xe2, 0xcc, 0x5b, + 0x00, 0xe2, 0x14, 0x42, + 0x01, 0x84, 0xd1, 0x7b, 0x01, 0xa4, 0x49, 0x07, 0x08, 0x60, 0x30, 0x33, 0x08, 0x80, 0x41, 0x37, 0xdf, 0x39, 0x73, 0x0a, - 0xee, 0x00, 0xda, 0x6b, + 0xee, 0x00, 0xde, 0x6b, 0x05, 0xea, 0xb4, 0x00, - 0x33, 0xea, 0x5a, 0x59, + 0x33, 0xea, 0x5e, 0x59, 0x33, 0xea, 0x00, 0x00, - 0x00, 0xe2, 0x7a, 0x59, - 0x00, 0xe2, 0xd8, 0x42, - 0xff, 0x42, 0xea, 0x6b, - 0x01, 0x41, 0xde, 0x6b, - 0x02, 0x41, 0xde, 0x7b, - 0xff, 0x42, 0xea, 0x6b, - 0x01, 0x41, 0xde, 0x6b, - 0x02, 0x41, 0xde, 0x7b, - 0xff, 0x42, 0xea, 0x7b, - 0x04, 0x4c, 0xde, 0x6b, + 0x00, 0xe2, 0x7e, 0x59, + 0x00, 0xe2, 0xdc, 0x42, + 0xff, 0x42, 0xee, 0x6b, + 0x01, 0x41, 0xe2, 0x6b, + 0x02, 0x41, 0xe2, 0x7b, + 0xff, 0x42, 0xee, 0x6b, + 0x01, 0x41, 0xe2, 0x6b, + 0x02, 0x41, 0xe2, 0x7b, + 0xff, 0x42, 0xee, 0x7b, + 0x04, 0x4c, 0xe2, 0x6b, 0xe0, 0x41, 0x78, 0x0e, 0x01, 0x44, 0xd4, 0x31, - 0xff, 0x42, 0xf2, 0x7b, - 0x04, 0x4c, 0xf2, 0x6b, + 0xff, 0x42, 0xf6, 0x7b, + 0x04, 0x4c, 0xf6, 0x6b, 0xe0, 0x41, 0x78, 0x0a, - 0xe0, 0x3c, 0x11, 0x62, + 0xe0, 0x3c, 0x15, 0x62, 0xff, 0xea, 0xca, 0x09, 0x01, 0xe2, 0xc8, 0x31, 0x01, 0x46, 0xda, 0x35, 0x01, 0x44, 0xd4, 0x35, 0x10, 0xea, 0x80, 0x00, 0x01, 0xe2, 0x6e, 0x36, - 0x04, 0xa6, 0x0a, 0x7c, + 0x04, 0xa6, 0x0e, 0x7c, 0xff, 0xea, 0x5a, 0x09, 0xff, 0xea, 0x4c, 0x0d, - 0x01, 0xa6, 0x36, 0x6c, + 0x01, 0xa6, 0x3a, 0x6c, 0x10, 0xad, 0x84, 0x78, - 0x80, 0xad, 0x2e, 0x6c, + 0x80, 0xad, 0x32, 0x6c, 0x08, 0xad, 0x84, 0x68, - 0x20, 0x19, 0x22, 0x7c, + 0x20, 0x19, 0x26, 0x7c, 0x80, 0xea, 0xb2, 0x01, 0x11, 0x00, 0x00, 0x10, - 0x02, 0xa6, 0x1e, 0x7c, + 0x02, 0xa6, 0x22, 0x7c, 0xff, 0xea, 0xb2, 0x0d, 0x11, 0x00, 0x00, 0x10, 0xff, 0xea, 0xb2, 0x09, @@ -559,7 +561,7 @@ 0x00, 0x86, 0x0d, 0x23, 0x00, 0x87, 0x0f, 0x23, 0x01, 0x84, 0xc5, 0x31, - 0x80, 0x83, 0x59, 0x7c, + 0x80, 0x83, 0x5d, 0x7c, 0x02, 0xe2, 0xc4, 0x01, 0xff, 0xea, 0x4c, 0x09, 0x01, 0xe2, 0x36, 0x30, @@ -570,75 +572,75 @@ 0xfe, 0xa6, 0x4c, 0x0d, 0x0b, 0x98, 0xe1, 0x30, 0xfd, 0xa4, 0x49, 0x09, - 0x80, 0xa3, 0x6d, 0x7c, + 0x80, 0xa3, 0x71, 0x7c, 0x02, 0xa4, 0x48, 0x01, 0x01, 0xa4, 0x36, 0x30, 0xa8, 0xea, 0x32, 0x00, 0xfd, 0xa4, 0x49, 0x0b, 0x05, 0xa3, 0x07, 0x33, - 0x80, 0x83, 0x79, 0x6c, + 0x80, 0x83, 0x7d, 0x6c, 0x02, 0xea, 0x4c, 0x05, 0xff, 0xea, 0x4c, 0x0d, - 0x00, 0xe2, 0x52, 0x59, - 0x02, 0xa6, 0x0c, 0x6c, + 0x00, 0xe2, 0x56, 0x59, + 0x02, 0xa6, 0x10, 0x6c, 0x80, 0xf9, 0xf2, 0x05, - 0xc0, 0x39, 0x87, 0x7c, - 0x03, 0xea, 0x60, 0x59, + 0xc0, 0x39, 0x8b, 0x7c, + 0x03, 0xea, 0x64, 0x59, 0x03, 0xea, 0x04, 0x00, - 0x20, 0x39, 0xab, 0x7c, - 0x01, 0x84, 0x91, 0x6c, - 0x06, 0xea, 0x60, 0x59, + 0x20, 0x39, 0xaf, 0x7c, + 0x01, 0x84, 0x95, 0x6c, + 0x06, 0xea, 0x64, 0x59, 0x06, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0xae, 0x44, + 0x00, 0xe2, 0xb2, 0x44, 0x01, 0x00, 0x6c, 0x32, - 0xee, 0x00, 0x9a, 0x6c, + 0xee, 0x00, 0x9e, 0x6c, 0x05, 0xea, 0xb4, 0x00, - 0x33, 0xea, 0x5a, 0x59, + 0x33, 0xea, 0x5e, 0x59, 0x33, 0xea, 0x00, 0x00, 0x80, 0x3d, 0x7a, 0x00, - 0xfc, 0x42, 0x9c, 0x7c, + 0xfc, 0x42, 0xa0, 0x7c, 0x7f, 0x3d, 0x7a, 0x08, - 0x00, 0x36, 0x5b, 0x59, + 0x00, 0x36, 0x5f, 0x59, 0x01, 0x36, 0x01, 0x30, - 0x09, 0xea, 0x60, 0x59, + 0x09, 0xea, 0x64, 0x59, 0x09, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0x10, 0x42, - 0x01, 0xa4, 0x91, 0x6c, - 0x00, 0xe2, 0x64, 0x5c, + 0x00, 0xe2, 0x14, 0x42, + 0x01, 0xa4, 0x95, 0x6c, + 0x00, 0xe2, 0x68, 0x5c, 0x20, 0x39, 0x73, 0x02, 0x01, 0x00, 0x6c, 0x32, - 0x02, 0xa6, 0xb6, 0x7c, - 0x00, 0xe2, 0x7a, 0x5c, + 0x02, 0xa6, 0xba, 0x7c, + 0x00, 0xe2, 0x7e, 0x5c, 0x00, 0xe2, 0x76, 0x58, 0x00, 0xe2, 0x86, 0x58, 0x00, 0xe2, 0x5a, 0x58, - 0x00, 0x36, 0x5b, 0x59, + 0x00, 0x36, 0x5f, 0x59, 0x01, 0x36, 0x01, 0x30, - 0x20, 0x19, 0xb6, 0x6c, - 0x00, 0xe2, 0xe6, 0x5c, - 0x04, 0x19, 0xd0, 0x6c, + 0x20, 0x19, 0xba, 0x6c, + 0x00, 0xe2, 0xea, 0x5c, + 0x04, 0x19, 0xd4, 0x6c, 0x02, 0x19, 0x32, 0x00, - 0x01, 0x84, 0xd1, 0x7c, - 0x01, 0x1b, 0xca, 0x7c, - 0x01, 0x1a, 0xd0, 0x6c, - 0x00, 0xe2, 0x80, 0x44, - 0x80, 0x4b, 0xd6, 0x6c, - 0x01, 0x4c, 0xd2, 0x7c, - 0x03, 0x42, 0x80, 0x6c, - 0x00, 0xe2, 0x06, 0x5c, + 0x01, 0x84, 0xd5, 0x7c, + 0x01, 0x1b, 0xce, 0x7c, + 0x01, 0x1a, 0xd4, 0x6c, + 0x00, 0xe2, 0x84, 0x44, + 0x80, 0x4b, 0xda, 0x6c, + 0x01, 0x4c, 0xd6, 0x7c, + 0x03, 0x42, 0x84, 0x6c, + 0x00, 0xe2, 0x0a, 0x5c, 0x80, 0xf9, 0xf2, 0x01, - 0x04, 0x39, 0x11, 0x7a, - 0x00, 0xe2, 0x10, 0x42, - 0x08, 0x5d, 0xee, 0x6c, + 0x04, 0x39, 0x15, 0x7a, + 0x00, 0xe2, 0x14, 0x42, + 0x08, 0x5d, 0xf2, 0x6c, 0x00, 0xe2, 0x76, 0x58, - 0x00, 0x36, 0x5b, 0x59, + 0x00, 0x36, 0x5f, 0x59, 0x01, 0x36, 0x01, 0x30, - 0x02, 0x1b, 0xde, 0x7c, - 0x08, 0x5d, 0xec, 0x7c, + 0x02, 0x1b, 0xe2, 0x7c, + 0x08, 0x5d, 0xf0, 0x7c, 0x03, 0x68, 0x00, 0x37, 0x01, 0x84, 0x09, 0x07, - 0x80, 0x1b, 0xf8, 0x7c, - 0x80, 0x84, 0xf9, 0x6c, + 0x80, 0x1b, 0xfc, 0x7c, + 0x80, 0x84, 0xfd, 0x6c, 0xff, 0x85, 0x0b, 0x1b, 0xff, 0x86, 0x0d, 0x23, 0xff, 0x87, 0x0f, 0x23, @@ -650,161 +652,161 @@ 0xf9, 0xd9, 0xb2, 0x0d, 0x01, 0xd9, 0xb2, 0x05, 0x01, 0x52, 0x48, 0x31, - 0x20, 0xa4, 0x22, 0x7d, - 0x20, 0x5b, 0x22, 0x7d, - 0x80, 0xf9, 0x30, 0x7d, + 0x20, 0xa4, 0x26, 0x7d, + 0x20, 0x5b, 0x26, 0x7d, + 0x80, 0xf9, 0x34, 0x7d, 0x02, 0xea, 0xb4, 0x00, 0x11, 0x00, 0x00, 0x10, - 0x04, 0x19, 0x3c, 0x7d, + 0x04, 0x19, 0x40, 0x7d, 0xdf, 0x19, 0x32, 0x08, - 0x60, 0x5b, 0x3c, 0x6d, - 0x01, 0x4c, 0x16, 0x7d, + 0x60, 0x5b, 0x40, 0x6d, + 0x01, 0x4c, 0x1a, 0x7d, 0x20, 0x19, 0x32, 0x00, 0x01, 0xd9, 0xb2, 0x05, 0x02, 0xea, 0xb4, 0x00, 0x01, 0xd9, 0xb2, 0x05, - 0x10, 0x5b, 0x34, 0x6d, - 0x08, 0x5b, 0x3e, 0x6d, - 0x20, 0x5b, 0x2e, 0x6d, - 0x02, 0x5b, 0x5e, 0x6d, - 0x0e, 0xea, 0x60, 0x59, + 0x10, 0x5b, 0x38, 0x6d, + 0x08, 0x5b, 0x42, 0x6d, + 0x20, 0x5b, 0x32, 0x6d, + 0x02, 0x5b, 0x62, 0x6d, + 0x0e, 0xea, 0x64, 0x59, 0x0e, 0xea, 0x04, 0x00, - 0x80, 0xf9, 0x1e, 0x6d, + 0x80, 0xf9, 0x22, 0x6d, 0xdf, 0x5c, 0xb8, 0x08, 0x01, 0xd9, 0xb2, 0x05, - 0x01, 0xa4, 0x19, 0x6e, - 0x00, 0xe2, 0x64, 0x5c, - 0x00, 0xe2, 0x68, 0x5d, + 0x01, 0xa4, 0x1d, 0x6e, + 0x00, 0xe2, 0x68, 0x5c, + 0x00, 0xe2, 0x6c, 0x5d, 0x01, 0x90, 0x21, 0x1b, 0x01, 0xd9, 0xb2, 0x05, - 0x00, 0xe2, 0x4e, 0x5b, + 0x00, 0xe2, 0x52, 0x5b, 0xf3, 0x96, 0xd5, 0x19, - 0x00, 0xe2, 0x4c, 0x55, - 0x80, 0x96, 0x4d, 0x6d, - 0x0f, 0xea, 0x60, 0x59, + 0x00, 0xe2, 0x50, 0x55, + 0x80, 0x96, 0x51, 0x6d, + 0x0f, 0xea, 0x64, 0x59, 0x0f, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0x54, 0x45, + 0x00, 0xe2, 0x58, 0x45, 0x04, 0x8c, 0xe1, 0x30, 0x01, 0xea, 0xf2, 0x00, 0x02, 0xea, 0x36, 0x00, 0xa8, 0xea, 0x32, 0x00, - 0xff, 0x97, 0x5b, 0x7d, - 0x14, 0xea, 0x60, 0x59, + 0xff, 0x97, 0x5f, 0x7d, + 0x14, 0xea, 0x64, 0x59, 0x14, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0xca, 0x5d, + 0x00, 0xe2, 0xce, 0x5d, 0x01, 0xd9, 0xb2, 0x05, 0x09, 0x80, 0xe1, 0x30, 0x02, 0xea, 0x36, 0x00, 0xa8, 0xea, 0x32, 0x00, - 0x00, 0xe2, 0xc2, 0x5d, + 0x00, 0xe2, 0xc6, 0x5d, 0x01, 0xd9, 0xb2, 0x05, - 0x02, 0xa6, 0x78, 0x7d, - 0x00, 0xe2, 0x52, 0x59, - 0x20, 0x5b, 0x86, 0x6d, - 0xfc, 0x42, 0x72, 0x7d, - 0x10, 0x40, 0x74, 0x6d, - 0x20, 0x4d, 0x76, 0x7d, - 0x08, 0x5d, 0x86, 0x6d, - 0x02, 0xa6, 0x0c, 0x6c, - 0x00, 0xe2, 0x52, 0x59, - 0x20, 0x5b, 0x86, 0x6d, - 0x01, 0x1b, 0xa6, 0x6d, - 0xfc, 0x42, 0x82, 0x7d, - 0x10, 0x40, 0x84, 0x6d, + 0x02, 0xa6, 0x7c, 0x7d, + 0x00, 0xe2, 0x56, 0x59, + 0x20, 0x5b, 0x8a, 0x6d, + 0xfc, 0x42, 0x76, 0x7d, + 0x10, 0x40, 0x78, 0x6d, + 0x20, 0x4d, 0x7a, 0x7d, + 0x08, 0x5d, 0x8a, 0x6d, + 0x02, 0xa6, 0x10, 0x6c, + 0x00, 0xe2, 0x56, 0x59, + 0x20, 0x5b, 0x8a, 0x6d, + 0x01, 0x1b, 0xaa, 0x6d, + 0xfc, 0x42, 0x86, 0x7d, + 0x10, 0x40, 0x88, 0x6d, 0x20, 0x4d, 0x84, 0x78, 0x08, 0x5d, 0x84, 0x78, 0x02, 0x19, 0x32, 0x00, 0x01, 0x5b, 0x40, 0x31, - 0x00, 0xe2, 0xe6, 0x5c, - 0x00, 0xe2, 0xc8, 0x5b, + 0x00, 0xe2, 0xea, 0x5c, + 0x00, 0xe2, 0xcc, 0x5b, 0x20, 0xea, 0xb6, 0x00, - 0x00, 0xe2, 0x06, 0x5c, + 0x00, 0xe2, 0x0a, 0x5c, 0x20, 0x5c, 0xb8, 0x00, - 0x04, 0x19, 0x9c, 0x6d, - 0x01, 0x1a, 0x9c, 0x6d, - 0x00, 0xe2, 0x52, 0x59, + 0x04, 0x19, 0xa0, 0x6d, + 0x01, 0x1a, 0xa0, 0x6d, + 0x00, 0xe2, 0x56, 0x59, 0x01, 0x1a, 0x84, 0x78, 0x80, 0xf9, 0xf2, 0x01, - 0x20, 0xa0, 0x00, 0x7e, + 0x20, 0xa0, 0x04, 0x7e, 0xff, 0x90, 0x21, 0x1b, - 0x08, 0x92, 0x5f, 0x6b, + 0x08, 0x92, 0x63, 0x6b, 0x02, 0xea, 0xb4, 0x04, 0x01, 0xa4, 0x49, 0x03, - 0x40, 0x5b, 0xb6, 0x6d, - 0x00, 0xe2, 0x52, 0x59, - 0x40, 0x5b, 0xb6, 0x6d, - 0x04, 0x5d, 0x1a, 0x7e, - 0x01, 0x1a, 0x1a, 0x7e, + 0x40, 0x5b, 0xba, 0x6d, + 0x00, 0xe2, 0x56, 0x59, + 0x40, 0x5b, 0xba, 0x6d, + 0x04, 0x5d, 0x1e, 0x7e, + 0x01, 0x1a, 0x1e, 0x7e, 0x20, 0x4d, 0x84, 0x78, - 0x40, 0x5b, 0x00, 0x7e, - 0x04, 0x5d, 0x1a, 0x7e, - 0x01, 0x1a, 0x1a, 0x7e, + 0x40, 0x5b, 0x04, 0x7e, + 0x04, 0x5d, 0x1e, 0x7e, + 0x01, 0x1a, 0x1e, 0x7e, 0x80, 0xf9, 0xf2, 0x01, 0xff, 0x90, 0x21, 0x1b, - 0x08, 0x92, 0x5f, 0x6b, + 0x08, 0x92, 0x63, 0x6b, 0x02, 0xea, 0xb4, 0x04, - 0x00, 0xe2, 0x52, 0x59, + 0x00, 0xe2, 0x56, 0x59, 0x01, 0x1b, 0x84, 0x78, 0x80, 0xf9, 0xf2, 0x01, 0x02, 0xea, 0xb4, 0x04, - 0x00, 0xe2, 0x52, 0x59, - 0x01, 0x1b, 0xde, 0x6d, - 0x40, 0x5b, 0xec, 0x7d, - 0x01, 0x1b, 0xde, 0x6d, + 0x00, 0xe2, 0x56, 0x59, + 0x01, 0x1b, 0xe2, 0x6d, + 0x40, 0x5b, 0xf0, 0x7d, + 0x01, 0x1b, 0xe2, 0x6d, 0x02, 0x19, 0x32, 0x00, 0x01, 0x1a, 0x84, 0x78, 0x80, 0xf9, 0xf2, 0x01, 0xff, 0xea, 0x10, 0x03, 0x08, 0x92, 0x25, 0x03, - 0x00, 0xe2, 0x5e, 0x43, - 0x01, 0x1a, 0xe8, 0x7d, - 0x40, 0x5b, 0xe4, 0x7d, - 0x01, 0x1a, 0xd2, 0x6d, + 0x00, 0xe2, 0x62, 0x43, + 0x01, 0x1a, 0xec, 0x7d, + 0x40, 0x5b, 0xe8, 0x7d, + 0x01, 0x1a, 0xd6, 0x6d, 0xfc, 0x42, 0x84, 0x78, - 0x01, 0x1a, 0xec, 0x6d, - 0x10, 0xea, 0x60, 0x59, + 0x01, 0x1a, 0xf0, 0x6d, + 0x10, 0xea, 0x64, 0x59, 0x10, 0xea, 0x04, 0x00, 0xfc, 0x42, 0x84, 0x78, - 0x10, 0x40, 0xf2, 0x6d, + 0x10, 0x40, 0xf6, 0x6d, 0x20, 0x4d, 0x84, 0x78, - 0x40, 0x5b, 0xd2, 0x6d, + 0x40, 0x5b, 0xd6, 0x6d, 0x01, 0x1a, 0x84, 0x78, 0x01, 0x90, 0x21, 0x1b, 0x30, 0x3f, 0xc0, 0x09, 0x30, 0xe0, 0x84, 0x60, 0x40, 0x4b, 0x84, 0x68, 0xff, 0xea, 0x52, 0x01, - 0xee, 0x00, 0x08, 0x6e, + 0xee, 0x00, 0x0c, 0x6e, 0x80, 0xf9, 0xf2, 0x01, 0xff, 0x90, 0x21, 0x1b, 0x02, 0xea, 0xb4, 0x00, 0x20, 0xea, 0x9a, 0x00, - 0xf3, 0x42, 0x12, 0x6e, - 0x12, 0xea, 0x60, 0x59, + 0xf3, 0x42, 0x16, 0x6e, + 0x12, 0xea, 0x64, 0x59, 0x12, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0x10, 0x42, - 0x0d, 0xea, 0x60, 0x59, + 0x00, 0xe2, 0x14, 0x42, + 0x0d, 0xea, 0x64, 0x59, 0x0d, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0x10, 0x42, + 0x00, 0xe2, 0x14, 0x42, 0x01, 0x90, 0x21, 0x1b, - 0x11, 0xea, 0x60, 0x59, + 0x11, 0xea, 0x64, 0x59, 0x11, 0xea, 0x04, 0x00, - 0x00, 0xe2, 0x4e, 0x5b, + 0x00, 0xe2, 0x52, 0x5b, 0x08, 0x5a, 0xb4, 0x00, - 0x00, 0xe2, 0x40, 0x5e, + 0x00, 0xe2, 0x44, 0x5e, 0xa8, 0xea, 0x32, 0x00, - 0x00, 0xe2, 0x52, 0x59, - 0x80, 0x1a, 0x2e, 0x7e, - 0x00, 0xe2, 0x40, 0x5e, + 0x00, 0xe2, 0x56, 0x59, + 0x80, 0x1a, 0x32, 0x7e, + 0x00, 0xe2, 0x44, 0x5e, 0x80, 0x19, 0x32, 0x00, - 0x40, 0x5b, 0x34, 0x6e, - 0x08, 0x5a, 0x34, 0x7e, + 0x40, 0x5b, 0x38, 0x6e, + 0x08, 0x5a, 0x38, 0x7e, 0x20, 0x4d, 0x84, 0x78, 0x02, 0x84, 0x09, 0x03, - 0x40, 0x5b, 0x00, 0x7e, + 0x40, 0x5b, 0x04, 0x7e, 0xff, 0x90, 0x21, 0x1b, 0x80, 0xf9, 0xf2, 0x01, - 0x08, 0x92, 0x5f, 0x6b, + 0x08, 0x92, 0x63, 0x6b, 0x02, 0xea, 0xb4, 0x04, 0x01, 0x40, 0xe1, 0x30, 0x05, 0x41, 0xe3, 0x98, @@ -1038,116 +1040,116 @@ { ahd_patch2_func, 67, 1, 2 }, { ahd_patch0_func, 68, 1, 1 }, { ahd_patch4_func, 116, 1, 1 }, - { ahd_patch2_func, 173, 3, 1 }, - { ahd_patch1_func, 176, 2, 1 }, - { ahd_patch5_func, 178, 1, 1 }, - { ahd_patch2_func, 187, 1, 2 }, - { ahd_patch0_func, 188, 1, 1 }, - { ahd_patch6_func, 189, 2, 2 }, - { ahd_patch0_func, 191, 6, 3 }, - { ahd_patch2_func, 194, 1, 2 }, - { ahd_patch0_func, 195, 1, 1 }, - { ahd_patch2_func, 198, 1, 2 }, - { ahd_patch0_func, 199, 1, 1 }, - { ahd_patch3_func, 201, 1, 1 }, - { ahd_patch7_func, 202, 3, 1 }, - { ahd_patch3_func, 211, 1, 1 }, - { ahd_patch5_func, 212, 16, 2 }, - { ahd_patch0_func, 228, 1, 1 }, - { ahd_patch8_func, 248, 2, 1 }, - { ahd_patch1_func, 252, 1, 2 }, - { ahd_patch0_func, 253, 1, 1 }, - { ahd_patch7_func, 256, 3, 1 }, - { ahd_patch1_func, 271, 1, 2 }, - { ahd_patch0_func, 272, 1, 1 }, - { ahd_patch1_func, 275, 1, 2 }, - { ahd_patch0_func, 276, 1, 1 }, - { ahd_patch2_func, 279, 1, 2 }, - { ahd_patch0_func, 280, 1, 1 }, - { ahd_patch9_func, 293, 2, 2 }, - { ahd_patch0_func, 295, 1, 1 }, - { ahd_patch1_func, 337, 1, 2 }, - { ahd_patch0_func, 338, 1, 1 }, - { ahd_patch2_func, 346, 1, 2 }, - { ahd_patch0_func, 347, 1, 1 }, - { ahd_patch2_func, 350, 1, 2 }, - { ahd_patch0_func, 351, 1, 1 }, - { ahd_patch1_func, 357, 1, 2 }, - { ahd_patch0_func, 358, 1, 1 }, - { ahd_patch1_func, 360, 1, 2 }, - { ahd_patch0_func, 361, 1, 1 }, - { ahd_patch10_func, 380, 1, 1 }, - { ahd_patch10_func, 383, 1, 1 }, + { ahd_patch2_func, 175, 3, 1 }, + { ahd_patch1_func, 178, 2, 1 }, + { ahd_patch5_func, 180, 1, 1 }, + { ahd_patch2_func, 189, 1, 2 }, + { ahd_patch0_func, 190, 1, 1 }, + { ahd_patch6_func, 191, 2, 2 }, + { ahd_patch0_func, 193, 6, 3 }, + { ahd_patch2_func, 196, 1, 2 }, + { ahd_patch0_func, 197, 1, 1 }, + { ahd_patch2_func, 200, 1, 2 }, + { ahd_patch0_func, 201, 1, 1 }, + { ahd_patch3_func, 203, 1, 1 }, + { ahd_patch7_func, 204, 3, 1 }, + { ahd_patch3_func, 213, 1, 1 }, + { ahd_patch5_func, 214, 16, 2 }, + { ahd_patch0_func, 230, 1, 1 }, + { ahd_patch8_func, 250, 2, 1 }, + { ahd_patch1_func, 254, 1, 2 }, + { ahd_patch0_func, 255, 1, 1 }, + { ahd_patch7_func, 258, 3, 1 }, + { ahd_patch1_func, 273, 1, 2 }, + { ahd_patch0_func, 274, 1, 1 }, + { ahd_patch1_func, 277, 1, 2 }, + { ahd_patch0_func, 278, 1, 1 }, + { ahd_patch2_func, 281, 1, 2 }, + { ahd_patch0_func, 282, 1, 1 }, + { ahd_patch9_func, 295, 2, 2 }, + { ahd_patch0_func, 297, 1, 1 }, + { ahd_patch1_func, 339, 1, 2 }, + { ahd_patch0_func, 340, 1, 1 }, + { ahd_patch2_func, 348, 1, 2 }, + { ahd_patch0_func, 349, 1, 1 }, + { ahd_patch2_func, 352, 1, 2 }, + { ahd_patch0_func, 353, 1, 1 }, + { ahd_patch1_func, 359, 1, 2 }, + { ahd_patch0_func, 360, 1, 1 }, + { ahd_patch1_func, 362, 1, 2 }, + { ahd_patch0_func, 363, 1, 1 }, + { ahd_patch10_func, 382, 1, 1 }, { ahd_patch10_func, 385, 1, 1 }, - { ahd_patch10_func, 397, 1, 1 }, - { ahd_patch1_func, 407, 1, 2 }, - { ahd_patch0_func, 408, 1, 1 }, - { ahd_patch1_func, 410, 1, 2 }, - { ahd_patch0_func, 411, 1, 1 }, - { ahd_patch1_func, 419, 1, 2 }, - { ahd_patch0_func, 420, 1, 1 }, - { ahd_patch2_func, 433, 1, 2 }, - { ahd_patch0_func, 434, 1, 1 }, - { ahd_patch11_func, 470, 1, 1 }, - { ahd_patch1_func, 478, 1, 2 }, - { ahd_patch0_func, 479, 1, 1 }, - { ahd_patch2_func, 491, 1, 2 }, - { ahd_patch0_func, 492, 1, 1 }, - { ahd_patch12_func, 495, 6, 2 }, - { ahd_patch0_func, 501, 1, 1 }, - { ahd_patch13_func, 522, 7, 1 }, - { ahd_patch14_func, 531, 1, 1 }, - { ahd_patch15_func, 540, 1, 1 }, - { ahd_patch16_func, 541, 1, 2 }, - { ahd_patch0_func, 542, 1, 1 }, - { ahd_patch17_func, 545, 1, 1 }, - { ahd_patch16_func, 546, 1, 1 }, - { ahd_patch18_func, 557, 1, 2 }, - { ahd_patch0_func, 558, 1, 1 }, - { ahd_patch1_func, 577, 1, 2 }, - { ahd_patch0_func, 578, 1, 1 }, - { ahd_patch1_func, 581, 1, 2 }, - { ahd_patch0_func, 582, 1, 1 }, - { ahd_patch2_func, 587, 1, 2 }, - { ahd_patch0_func, 588, 1, 1 }, - { ahd_patch2_func, 592, 1, 2 }, - { ahd_patch0_func, 593, 1, 1 }, - { ahd_patch1_func, 594, 1, 2 }, + { ahd_patch10_func, 387, 1, 1 }, + { ahd_patch10_func, 399, 1, 1 }, + { ahd_patch1_func, 409, 1, 2 }, + { ahd_patch0_func, 410, 1, 1 }, + { ahd_patch1_func, 412, 1, 2 }, + { ahd_patch0_func, 413, 1, 1 }, + { ahd_patch1_func, 421, 1, 2 }, + { ahd_patch0_func, 422, 1, 1 }, + { ahd_patch2_func, 435, 1, 2 }, + { ahd_patch0_func, 436, 1, 1 }, + { ahd_patch11_func, 472, 1, 1 }, + { ahd_patch1_func, 480, 1, 2 }, + { ahd_patch0_func, 481, 1, 1 }, + { ahd_patch2_func, 493, 1, 2 }, + { ahd_patch0_func, 494, 1, 1 }, + { ahd_patch12_func, 497, 6, 2 }, + { ahd_patch0_func, 503, 1, 1 }, + { ahd_patch13_func, 524, 7, 1 }, + { ahd_patch14_func, 533, 1, 1 }, + { ahd_patch15_func, 542, 1, 1 }, + { ahd_patch16_func, 543, 1, 2 }, + { ahd_patch0_func, 544, 1, 1 }, + { ahd_patch17_func, 547, 1, 1 }, + { ahd_patch16_func, 548, 1, 1 }, + { ahd_patch18_func, 559, 1, 2 }, + { ahd_patch0_func, 560, 1, 1 }, + { ahd_patch1_func, 579, 1, 2 }, + { ahd_patch0_func, 580, 1, 1 }, + { ahd_patch1_func, 583, 1, 2 }, + { ahd_patch0_func, 584, 1, 1 }, + { ahd_patch2_func, 589, 1, 2 }, + { ahd_patch0_func, 590, 1, 1 }, + { ahd_patch2_func, 594, 1, 2 }, { ahd_patch0_func, 595, 1, 1 }, - { ahd_patch2_func, 606, 1, 2 }, - { ahd_patch0_func, 607, 1, 1 }, - { ahd_patch19_func, 611, 1, 1 }, - { ahd_patch20_func, 616, 1, 1 }, - { ahd_patch21_func, 617, 2, 1 }, - { ahd_patch20_func, 621, 1, 2 }, - { ahd_patch0_func, 622, 1, 1 }, - { ahd_patch2_func, 625, 1, 2 }, - { ahd_patch0_func, 626, 1, 1 }, - { ahd_patch2_func, 641, 1, 2 }, - { ahd_patch0_func, 642, 1, 1 }, - { ahd_patch13_func, 643, 14, 1 }, - { ahd_patch1_func, 661, 1, 2 }, - { ahd_patch0_func, 662, 1, 1 }, - { ahd_patch13_func, 663, 1, 1 }, - { ahd_patch1_func, 675, 1, 2 }, - { ahd_patch0_func, 676, 1, 1 }, - { ahd_patch1_func, 683, 1, 2 }, - { ahd_patch0_func, 684, 1, 1 }, - { ahd_patch19_func, 707, 1, 1 }, - { ahd_patch19_func, 745, 1, 1 }, - { ahd_patch1_func, 756, 1, 2 }, - { ahd_patch0_func, 757, 1, 1 }, - { ahd_patch1_func, 774, 1, 2 }, - { ahd_patch0_func, 775, 1, 1 }, - { ahd_patch1_func, 777, 1, 2 }, - { ahd_patch0_func, 778, 1, 1 }, - { ahd_patch1_func, 781, 1, 2 }, - { ahd_patch0_func, 782, 1, 1 }, - { ahd_patch22_func, 784, 1, 2 }, - { ahd_patch0_func, 785, 2, 1 }, - { ahd_patch23_func, 788, 4, 2 }, - { ahd_patch0_func, 792, 1, 1 }, - { ahd_patch23_func, 800, 11, 1 } + { ahd_patch1_func, 596, 1, 2 }, + { ahd_patch0_func, 597, 1, 1 }, + { ahd_patch2_func, 608, 1, 2 }, + { ahd_patch0_func, 609, 1, 1 }, + { ahd_patch19_func, 613, 1, 1 }, + { ahd_patch20_func, 618, 1, 1 }, + { ahd_patch21_func, 619, 2, 1 }, + { ahd_patch20_func, 623, 1, 2 }, + { ahd_patch0_func, 624, 1, 1 }, + { ahd_patch2_func, 627, 1, 2 }, + { ahd_patch0_func, 628, 1, 1 }, + { ahd_patch2_func, 643, 1, 2 }, + { ahd_patch0_func, 644, 1, 1 }, + { ahd_patch13_func, 645, 14, 1 }, + { ahd_patch1_func, 663, 1, 2 }, + { ahd_patch0_func, 664, 1, 1 }, + { ahd_patch13_func, 665, 1, 1 }, + { ahd_patch1_func, 677, 1, 2 }, + { ahd_patch0_func, 678, 1, 1 }, + { ahd_patch1_func, 685, 1, 2 }, + { ahd_patch0_func, 686, 1, 1 }, + { ahd_patch19_func, 709, 1, 1 }, + { ahd_patch19_func, 747, 1, 1 }, + { ahd_patch1_func, 758, 1, 2 }, + { ahd_patch0_func, 759, 1, 1 }, + { ahd_patch1_func, 776, 1, 2 }, + { ahd_patch0_func, 777, 1, 1 }, + { ahd_patch1_func, 779, 1, 2 }, + { ahd_patch0_func, 780, 1, 1 }, + { ahd_patch1_func, 783, 1, 2 }, + { ahd_patch0_func, 784, 1, 1 }, + { ahd_patch22_func, 786, 1, 2 }, + { ahd_patch0_func, 787, 2, 1 }, + { ahd_patch23_func, 790, 4, 2 }, + { ahd_patch0_func, 794, 1, 1 }, + { ahd_patch23_func, 802, 11, 1 } }; static struct cs { @@ -1161,14 +1163,14 @@ { 65, 66 }, { 72, 92 }, { 110, 137 }, - { 138, 173 }, - { 178, 186 }, - { 211, 262 }, - { 423, 431 }, - { 441, 443 }, - { 446, 455 }, - { 707, 737 }, - { 747, 751 } + { 138, 175 }, + { 180, 188 }, + { 213, 264 }, + { 425, 433 }, + { 443, 445 }, + { 448, 457 }, + { 709, 739 }, + { 749, 753 } }; static const int num_critical_sections = sizeof(critical_sections) ==== //depot/aic7xxx/aic7xxx/aic7xxx.c#153 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_core.c ==== --- /tmp/tmp.27211.9 2004-09-27 13:37:03.641831520 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_core.c 2004-04-09 16:46:42.000000000 -0400 @@ -37,7 +37,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#153 $ + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#155 $ */ #ifdef __linux__ @@ -231,6 +231,9 @@ u_int start_instr, u_int *skip_addr); static void ahc_download_instr(struct ahc_softc *ahc, u_int instrptr, uint8_t *dconsts); +static int ahc_other_scb_timeout(struct ahc_softc *ahc, + struct scb *scb, + struct scb *other_scb); #ifdef AHC_TARGET_MODE static void ahc_queue_lstate_event(struct ahc_softc *ahc, struct ahc_tmode_lstate *lstate, @@ -1200,7 +1203,7 @@ ahc_handle_devreset(ahc, &devinfo, CAM_SEL_TIMEOUT, "Selection Timeout", - /*verbose_level*/0); + /*verbose_level*/1); } ahc_outb(ahc, CLRINT, CLRSCSIINT); ahc_restart(ahc); @@ -6864,6 +6867,58 @@ } /* + * Re-schedule a timeout for the passed in SCB if we determine that some + * other SCB is in the process of recovery or an SCB with a longer + * timeout is still pending. Limit our search to just "other_scb" + * if it is non-NULL. + */ +static int +ahc_other_scb_timeout(struct ahc_softc *ahc, struct scb *scb, + struct scb *other_scb) +{ + u_int newtimeout; + int found; + + ahc_print_path(ahc, scb); + printf("Other SCB Timeout%s", + (scb->flags & SCB_OTHERTCL_TIMEOUT) != 0 + ? " again\n" : "\n"); + + newtimeout = aic_get_timeout(scb); + scb->flags |= SCB_OTHERTCL_TIMEOUT; + found = 0; + if (other_scb != NULL) { + if ((other_scb->flags + & (SCB_OTHERTCL_TIMEOUT|SCB_TIMEDOUT)) == 0 + || (other_scb->flags & SCB_RECOVERY_SCB) != 0) { + found++; + newtimeout = MAX(aic_get_timeout(other_scb), + newtimeout); + } + } else { + LIST_FOREACH(other_scb, &ahc->pending_scbs, pending_links) { + if ((other_scb->flags + & (SCB_OTHERTCL_TIMEOUT|SCB_TIMEDOUT)) == 0 + || (other_scb->flags & SCB_RECOVERY_SCB) != 0) { + found++; + newtimeout = + MAX(aic_get_timeout(other_scb), + newtimeout); + } + } + } + + if (found != 0) + aic_scb_timer_reset(scb, newtimeout); + else { + ahc_print_path(ahc, scb); + printf("No other SCB worth waiting for...\n"); + } + + return (found != 0); +} + +/* * ahc_recover_commands determines if any of the commands that have currently * timedout are the root cause for this timeout. Innocent commands are given * a new timeout while we wait for the command executing on the bus to timeout. @@ -6990,17 +7045,9 @@ */ active_scb = ahc_lookup_scb(ahc, active_scb_index); if (active_scb != scb) { - u_int newtimeout; - - ahc_print_path(ahc, scb); - printf("Other SCB Timeout%s", - (scb->flags & SCB_OTHERTCL_TIMEOUT) != 0 - ? " again\n" : "\n"); - scb->flags |= SCB_OTHERTCL_TIMEOUT; - newtimeout = - MAX(aic_get_timeout(active_scb), - aic_get_timeout(scb)); - aic_scb_timer_reset(scb, newtimeout); + if (ahc_other_scb_timeout(ahc, scb, + active_scb) != 0) + goto bus_reset; continue; } ==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#270 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.c ==== --- /tmp/tmp.27211.10 2004-09-27 13:37:08.994017864 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.c 2004-04-09 12:57:10.000000000 -0400 @@ -1,7 +1,7 @@ /* * Adaptec AIC7xxx device driver for Linux. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#270 $ + * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#271 $ * * Copyright (c) 1994 John Aycock * The University of Calgary Department of Computer Science. @@ -4563,7 +4563,21 @@ new_status = DID_BAD_TARGET; break; case CAM_SEL_TIMEOUT: +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + /* + * The 2.4.X SCSI layer will not offline + * devices in response to DID_NO_CONNECT. + * Return a command timeout here instead + * so that for commands other than inquiry + * and request sense commands (which the + * mid-layer special cases) recovery will + * take place and persistently missing + * devices are eventually offlined. + */ + new_status = DID_TIME_OUT; +#else new_status = DID_NO_CONNECT; +#endif break; case CAM_SCSI_BUS_RESET: case CAM_BDR_SENT: ==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#170 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.h ==== --- /tmp/tmp.27211.11 2004-09-27 13:37:09.297971656 -0400 +++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.h 2004-04-09 16:48:09.000000000 -0400 @@ -53,7 +53,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#170 $ + * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#172 $ * */ #ifndef _AIC7XXX_LINUX_H_ @@ -113,7 +113,7 @@ #include #endif -#define AIC7XXX_DRIVER_VERSION "6.3.6" +#define AIC7XXX_DRIVER_VERSION "6.3.8" /********************* Definitions Required by the Core ***********************/ /*