]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/advansys.c
[SCSI] advansys: Use DRV_NAME
[linux-2.6-omap-h63xx.git] / drivers / scsi / advansys.c
index dc9dca37c25838a198bec0c0a278f8e0ab4ab1da..0303fc7dacd35238c6c04ebe879620f3e58d1bf5 100644 (file)
@@ -1,3 +1,4 @@
+#define DRV_NAME "advansys"
 #define ASC_VERSION "3.4"      /* AdvanSys Driver Version */
 
 /*
  * On June 18, 2001 Initio Corp. acquired ConnectCom's SCSI assets
  */
 
-/*
-
-  Documentation for the AdvanSys Driver
-
-  A. Linux Kernels Supported by this Driver
-  B. Adapters Supported by this Driver
-  C. Linux source files modified by AdvanSys Driver
-  D. Source Comments
-  E. Driver Compile Time Options and Debugging
-  F. Driver LILO Option
-  G. Tests to run before releasing new driver
-  H. Release History
-  I. Known Problems/Fix List
-  J. Credits (Chronological Order)
-
-  A. Linux Kernels Supported by this Driver
-
-     This driver has been tested in the following Linux kernels: v2.2.18
-     v2.4.0. The driver is supported on v2.2 and v2.4 kernels and on x86,
-     alpha, and PowerPC platforms.
-
-  B. Adapters Supported by this Driver
-
-     AdvanSys (Advanced System Products, Inc.) manufactures the following
-     RISC-based, Bus-Mastering, Fast (10 Mhz) and Ultra (20 Mhz) Narrow
-     (8-bit transfer) SCSI Host Adapters for the ISA, EISA, VL, and PCI
-     buses and RISC-based, Bus-Mastering, Ultra (20 Mhz) Wide (16-bit
-     transfer) SCSI Host Adapters for the PCI bus.
-
-     The CDB counts below indicate the number of SCSI CDB (Command
-     Descriptor Block) requests that can be stored in the RISC chip
-     cache and board LRAM. A CDB is a single SCSI command. The driver
-     detect routine will display the number of CDBs available for each
-     adapter detected. The number of CDBs used by the driver can be
-     lowered in the BIOS by changing the 'Host Queue Size' adapter setting.
-
-     Laptop Products:
-        ABP-480 - Bus-Master CardBus (16 CDB) (2.4 kernel and greater)
-
-     Connectivity Products:
-        ABP510/5150 - Bus-Master ISA (240 CDB)
-        ABP5140 - Bus-Master ISA PnP (16 CDB)
-        ABP5142 - Bus-Master ISA PnP with floppy (16 CDB)
-        ABP902/3902 - Bus-Master PCI (16 CDB)
-        ABP3905 - Bus-Master PCI (16 CDB)
-        ABP915 - Bus-Master PCI (16 CDB)
-        ABP920 - Bus-Master PCI (16 CDB)
-        ABP3922 - Bus-Master PCI (16 CDB)
-        ABP3925 - Bus-Master PCI (16 CDB)
-        ABP930 - Bus-Master PCI (16 CDB)
-        ABP930U - Bus-Master PCI Ultra (16 CDB)
-        ABP930UA - Bus-Master PCI Ultra (16 CDB)
-        ABP960 - Bus-Master PCI MAC/PC (16 CDB)
-        ABP960U - Bus-Master PCI MAC/PC Ultra (16 CDB)
-
-     Single Channel Products:
-        ABP542 - Bus-Master ISA with floppy (240 CDB)
-        ABP742 - Bus-Master EISA (240 CDB)
-        ABP842 - Bus-Master VL (240 CDB)
-        ABP940 - Bus-Master PCI (240 CDB)
-        ABP940U - Bus-Master PCI Ultra (240 CDB)
-        ABP940UA/3940UA - Bus-Master PCI Ultra (240 CDB)
-        ABP970 - Bus-Master PCI MAC/PC (240 CDB)
-        ABP970U - Bus-Master PCI MAC/PC Ultra (240 CDB)
-        ABP3960UA - Bus-Master PCI MAC/PC Ultra (240 CDB)
-        ABP940UW/3940UW - Bus-Master PCI Ultra-Wide (253 CDB)
-        ABP970UW - Bus-Master PCI MAC/PC Ultra-Wide (253 CDB)
-        ABP3940U2W - Bus-Master PCI LVD/Ultra2-Wide (253 CDB)
-
-     Multi-Channel Products:
-        ABP752 - Dual Channel Bus-Master EISA (240 CDB Per Channel)
-        ABP852 - Dual Channel Bus-Master VL (240 CDB Per Channel)
-        ABP950 - Dual Channel Bus-Master PCI (240 CDB Per Channel)
-        ABP950UW - Dual Channel Bus-Master PCI Ultra-Wide (253 CDB Per Channel)
-        ABP980 - Four Channel Bus-Master PCI (240 CDB Per Channel)
-        ABP980U - Four Channel Bus-Master PCI Ultra (240 CDB Per Channel)
-        ABP980UA/3980UA - Four Channel Bus-Master PCI Ultra (16 CDB Per Chan.)
-        ABP3950U2W - Bus-Master PCI LVD/Ultra2-Wide and Ultra-Wide (253 CDB)
-        ABP3950U3W - Bus-Master PCI Dual LVD2/Ultra3-Wide (253 CDB)
-
-  C. Linux source files modified by AdvanSys Driver
-
-     This section for historical purposes documents the changes
-     originally made to the Linux kernel source to add the advansys
-     driver. As Linux has changed some of these files have also
-     been modified.
-
-     1. linux/arch/i386/config.in:
-
-          bool 'AdvanSys SCSI support' CONFIG_SCSI_ADVANSYS y
-
-     2. linux/drivers/scsi/hosts.c:
-
-          #ifdef CONFIG_SCSI_ADVANSYS
-          #include "advansys.h"
-          #endif
-
-        and after "static struct scsi_host_template builtin_scsi_hosts[] =":
-
-          #ifdef CONFIG_SCSI_ADVANSYS
-          ADVANSYS,
-          #endif
-
-     3. linux/drivers/scsi/Makefile:
-
-          ifdef CONFIG_SCSI_ADVANSYS
-          SCSI_SRCS := $(SCSI_SRCS) advansys.c
-          SCSI_OBJS := $(SCSI_OBJS) advansys.o
-          else
-          SCSI_MODULE_OBJS := $(SCSI_MODULE_OBJS) advansys.o
-          endif
-
-     4. linux/init/main.c:
-
-          extern void advansys_setup(char *str, int *ints);
-
-        and add the following lines to the bootsetups[] array.
-
-          #ifdef CONFIG_SCSI_ADVANSYS
-             { "advansys=", advansys_setup },
-          #endif
-
-  D. Source Comments
-
-     1. Use tab stops set to 4 for the source files. For vi use 'se tabstops=4'.
-
-     2. This driver should be maintained in multiple files. But to make
-        it easier to include with Linux and to follow Linux conventions,
-        the whole driver is maintained in the source files advansys.h and
-        advansys.c. In this file logical sections of the driver begin with
-        a comment that contains '---'. The following are the logical sections
-        of the driver below.
-
-           --- Linux Version
-           --- Linux Include File
-           --- Driver Options
-           --- Debugging Header
-           --- Asc Library Constants and Macros
-           --- Adv Library Constants and Macros
-           --- Driver Constants and Macros
-           --- Driver Structures
-           --- Driver Data
-           --- Driver Function Prototypes
-           --- Linux 'struct scsi_host_template' and advansys_setup() Functions
-           --- Loadable Driver Support
-           --- Miscellaneous Driver Functions
-           --- Functions Required by the Asc Library
-           --- Functions Required by the Adv Library
-           --- Tracing and Debugging Functions
-           --- Asc Library Functions
-           --- Adv Library Functions
-
-     3. The string 'XXX' is used to flag code that needs to be re-written
-        or that contains a problem that needs to be addressed.
-
-     4. I have stripped comments from and reformatted the source for the
-        Asc Library and Adv Library to reduce the size of this file. This
-        source can be found under the following headings. The Asc Library
-        is used to support Narrow Boards. The Adv Library is used to
-        support Wide Boards.
-
-           --- Asc Library Constants and Macros
-           --- Adv Library Constants and Macros
-           --- Asc Library Functions
-           --- Adv Library Functions
-
-  E. Driver Compile Time Options and Debugging
-
-     In this source file the following constants can be defined. They are
-     defined in the source below. Both of these options are enabled by
-     default.
-
-     1. ADVANSYS_ASSERT - Enable driver assertions (Def: Enabled)
-
-        Enabling this option adds assertion logic statements to the
-        driver. If an assertion fails a message will be displayed to
-        the console, but the system will continue to operate. Any
-        assertions encountered should be reported to the person
-        responsible for the driver. Assertion statements may proactively
-        detect problems with the driver and facilitate fixing these
-        problems. Enabling assertions will add a small overhead to the
-        execution of the driver.
-
-     2. ADVANSYS_DEBUG - Enable driver debugging (Def: Disabled)
-
-        Enabling this option adds tracing functions to the driver and
-        the ability to set a driver tracing level at boot time. This
-        option will also export symbols not required outside the driver to
-        the kernel name space. This option is very useful for debugging
-        the driver, but it will add to the size of the driver execution
-        image and add overhead to the execution of the driver.
-
-        The amount of debugging output can be controlled with the global
-        variable 'asc_dbglvl'. The higher the number the more output. By
-        default the debug level is 0.
-
-        If the driver is loaded at boot time and the LILO Driver Option
-        is included in the system, the debug level can be changed by
-        specifying a 5th (ASC_NUM_IOPORT_PROBE + 1) I/O Port. The
-        first three hex digits of the pseudo I/O Port must be set to
-        'deb' and the fourth hex digit specifies the debug level: 0 - F.
-        The following command line will look for an adapter at 0x330
-        and set the debug level to 2.
-
-           linux advansys=0x330,0,0,0,0xdeb2
-
-        If the driver is built as a loadable module this variable can be
-        defined when the driver is loaded. The following insmod command
-        will set the debug level to one.
-
-           insmod advansys.o asc_dbglvl=1
-
-        Debugging Message Levels:
-           0: Errors Only
-           1: High-Level Tracing
-           2-N: Verbose Tracing
-
-        To enable debug output to console, please make sure that:
-
-        a. System and kernel logging is enabled (syslogd, klogd running).
-        b. Kernel messages are routed to console output. Check
-           /etc/syslog.conf for an entry similar to this:
-
-                kern.*                  /dev/console
-
-        c. klogd is started with the appropriate -c parameter
-           (e.g. klogd -c 8)
-
-        This will cause printk() messages to be be displayed on the
-        current console. Refer to the klogd(8) and syslogd(8) man pages
-        for details.
-
-        Alternatively you can enable printk() to console with this
-        program. However, this is not the 'official' way to do this.
-        Debug output is logged in /var/log/messages.
-
-          main()
-          {
-                  syscall(103, 7, 0, 0);
-          }
-
-        Increasing LOG_BUF_LEN in kernel/printk.c to something like
-        40960 allows more debug messages to be buffered in the kernel
-        and written to the console or log file.
-
-     3. ADVANSYS_STATS - Enable statistics (Def: Enabled >= v1.3.0)
-
-        Enabling this option adds statistics collection and display
-        through /proc to the driver. The information is useful for
-        monitoring driver and device performance. It will add to the
-        size of the driver execution image and add minor overhead to
-        the execution of the driver.
-
-        Statistics are maintained on a per adapter basis. Driver entry
-        point call counts and transfer size counts are maintained.
-        Statistics are only available for kernels greater than or equal
-        to v1.3.0 with the CONFIG_PROC_FS (/proc) file system configured.
-
-        AdvanSys SCSI adapter files have the following path name format:
-
-           /proc/scsi/advansys/{0,1,2,3,...}
-
-        This information can be displayed with cat. For example:
-
-           cat /proc/scsi/advansys/0
-
-        When ADVANSYS_STATS is not defined the AdvanSys /proc files only
-        contain adapter and device configuration information.
-
-  F. Driver LILO Option
-
-     If init/main.c is modified as described in the 'Directions for Adding
-     the AdvanSys Driver to Linux' section (B.4.) above, the driver will
-     recognize the 'advansys' LILO command line and /etc/lilo.conf option.
-     This option can be used to either disable I/O port scanning or to limit
-     scanning to 1 - 4 I/O ports. Regardless of the option setting EISA and
-     PCI boards will still be searched for and detected. This option only
-     affects searching for ISA and VL boards.
-
-     Examples:
-       1. Eliminate I/O port scanning:
-            boot: linux advansys=
-              or
-            boot: linux advansys=0x0
-       2. Limit I/O port scanning to one I/O port:
-            boot: linux advansys=0x110
-       3. Limit I/O port scanning to four I/O ports:
-            boot: linux advansys=0x110,0x210,0x230,0x330
-
-     For a loadable module the same effect can be achieved by setting
-     the 'asc_iopflag' variable and 'asc_ioport' array when loading
-     the driver, e.g.
-
-           insmod advansys.o asc_iopflag=1 asc_ioport=0x110,0x330
-
-     If ADVANSYS_DEBUG is defined a 5th (ASC_NUM_IOPORT_PROBE + 1)
-     I/O Port may be added to specify the driver debug level. Refer to
-     the 'Driver Compile Time Options and Debugging' section above for
-     more information.
-
-  G. Tests to run before releasing new driver
-
-     1. In the supported kernels verify there are no warning or compile
-        errors when the kernel is built as both a driver and as a module
-        and with the following options:
-
-        ADVANSYS_DEBUG - enabled and disabled
-        CONFIG_SMP - enabled and disabled
-        CONFIG_PROC_FS - enabled and disabled
-
-     2. Run tests on an x86, alpha, and PowerPC with at least one narrow
-        card and one wide card attached to a hard disk and CD-ROM drive:
-        fdisk, mkfs, fsck, bonnie, copy/compare test from the
-        CD-ROM to the hard drive.
-
-  H. Release History
-
-     BETA-1.0 (12/23/95):
-         First Release
-
-     BETA-1.1 (12/28/95):
-         1. Prevent advansys_detect() from being called twice.
-         2. Add LILO 0xdeb[0-f] option to set 'asc_dbglvl'.
-
-     1.2 (1/12/96):
-         1. Prevent re-entrancy in the interrupt handler which
-            resulted in the driver hanging Linux.
-         2. Fix problem that prevented ABP-940 cards from being
-            recognized on some PCI motherboards.
-         3. Add support for the ABP-5140 PnP ISA card.
-         4. Fix check condition return status.
-         5. Add conditionally compiled code for Linux v1.3.X.
-
-     1.3 (2/23/96):
-         1. Fix problem in advansys_biosparam() that resulted in the
-            wrong drive geometry being returned for drives > 1GB with
-            extended translation enabled.
-         2. Add additional tracing during device initialization.
-         3. Change code that only applies to ISA PnP adapter.
-         4. Eliminate 'make dep' warning.
-         5. Try to fix problem with handling resets by increasing their
-            timeout value.
-
-     1.4 (5/8/96):
-         1. Change definitions to eliminate conflicts with other subsystems.
-         2. Add versioning code for the shared interrupt changes.
-         3. Eliminate problem in asc_rmqueue() with iterating after removing
-            a request.
-         4. Remove reset request loop problem from the "Known Problems or
-            Issues" section. This problem was isolated and fixed in the
-            mid-level SCSI driver.
-
-     1.5 (8/8/96):
-         1. Add support for ABP-940U (PCI Ultra) adapter.
-         2. Add support for IRQ sharing by setting the IRQF_SHARED flag for
-            request_irq and supplying a dev_id pointer to both request_irq()
-            and free_irq().
-         3. In AscSearchIOPortAddr11() restore a call to check_region() which
-            should be used before I/O port probing.
-         4. Fix bug in asc_prt_hex() which resulted in the displaying
-            the wrong data.
-         5. Incorporate miscellaneous Asc Library bug fixes and new microcode.
-         6. Change driver versioning to be specific to each Linux sub-level.
-         7. Change statistics gathering to be per adapter instead of global
-            to the driver.
-         8. Add more information and statistics to the adapter /proc file:
-            /proc/scsi/advansys[0...].
-         9. Remove 'cmd_per_lun' from the "Known Problems or Issues" list.
-            This problem has been addressed with the SCSI mid-level changes
-            made in v1.3.89. The advansys_select_queue_depths() function
-            was added for the v1.3.89 changes.
-
-     1.6 (9/10/96):
-         1. Incorporate miscellaneous Asc Library bug fixes and new microcode.
-
-     1.7 (9/25/96):
-         1. Enable clustering and optimize the setting of the maximum number
-            of scatter gather elements for any particular board. Clustering
-            increases CPU utilization, but results in a relatively larger
-            increase in I/O throughput.
-         2. Improve the performance of the request queuing functions by
-            adding a last pointer to the queue structure.
-         3. Correct problems with reset and abort request handling that
-            could have hung or crashed Linux.
-         4. Add more information to the adapter /proc file:
-            /proc/scsi/advansys[0...].
-         5. Remove the request timeout issue form the driver issues list.
-         6. Miscellaneous documentation additions and changes.
-
-     1.8 (10/4/96):
-         1. Make changes to handle the new v2.1.0 kernel memory mapping
-            in which a kernel virtual address may not be equivalent to its
-            bus or DMA memory address.
-         2. Change abort and reset request handling to make it yet even
-            more robust.
-         3. Try to mitigate request starvation by sending ordered requests
-            to heavily loaded, tag queuing enabled devices.
-         4. Maintain statistics on request response time.
-         5. Add request response time statistics and other information to
-            the adapter /proc file: /proc/scsi/advansys[0...].
-
-     1.9 (10/21/96):
-         1. Add conditionally compiled code (ASC_QUEUE_FLOW_CONTROL) to
-            make use of mid-level SCSI driver device queue depth flow
-            control mechanism. This will eliminate aborts caused by a
-            device being unable to keep up with requests and eliminate
-            repeat busy or QUEUE FULL status returned by a device.
-         2. Incorporate miscellaneous Asc Library bug fixes.
-         3. To allow the driver to work in kernels with broken module
-            support set 'cmd_per_lun' if the driver is compiled as a
-            module. This change affects kernels v1.3.89 to present.
-         4. Remove PCI BIOS address from the driver banner. The PCI BIOS
-            is relocated by the motherboard BIOS and its new address can
-            not be determined by the driver.
-         5. Add mid-level SCSI queue depth information to the adapter
-            /proc file: /proc/scsi/advansys[0...].
-
-     2.0 (11/14/96):
-         1. Change allocation of global structures used for device
-            initialization to guarantee they are in DMA-able memory.
-            Previously when the driver was loaded as a module these
-            structures might not have been in DMA-able memory, causing
-            device initialization to fail.
-
-     2.1 (12/30/96):
-         1. In advansys_reset(), if the request is a synchronous reset
-            request, even if the request serial number has changed, then
-            complete the request.
-         2. Add Asc Library bug fixes including new microcode.
-         3. Clear inquiry buffer before using it.
-         4. Correct ifdef typo.
-
-     2.2 (1/15/97):
-         1. Add Asc Library bug fixes including new microcode.
-         2. Add synchronous data transfer rate information to the
-            adapter /proc file: /proc/scsi/advansys[0...].
-         3. Change ADVANSYS_DEBUG to be disabled by default. This
-            will reduce the size of the driver image, eliminate execution
-            overhead, and remove unneeded symbols from the kernel symbol
-            space that were previously added by the driver.
-         4. Add new compile-time option ADVANSYS_ASSERT for assertion
-            code that used to be defined within ADVANSYS_DEBUG. This
-            option is enabled by default.
-
-     2.8 (5/26/97):
-         1. Change version number to 2.8 to synchronize the Linux driver
-            version numbering with other AdvanSys drivers.
-         2. Reformat source files without tabs to present the same view
-            of the file to everyone regardless of the editor tab setting
-            being used.
-         3. Add Asc Library bug fixes.
-
-     3.1A (1/8/98):
-         1. Change version number to 3.1 to indicate that support for
-            Ultra-Wide adapters (ABP-940UW) is included in this release.
-         2. Add Asc Library (Narrow Board) bug fixes.
-         3. Report an underrun condition with the host status byte set
-            to DID_UNDERRUN. Currently DID_UNDERRUN is defined to 0 which
-            causes the underrun condition to be ignored. When Linux defines
-            its own DID_UNDERRUN the constant defined in this file can be
-            removed.
-         4. Add patch to AscWaitTixISRDone().
-         5. Add support for up to 16 different AdvanSys host adapter SCSI
-            channels in one system. This allows four cards with four channels
-            to be used in one system.
-
-     3.1B (1/9/98):
-         1. Handle that PCI register base addresses are not always page
-            aligned even though ioremap() requires that the address argument
-            be page aligned.
-
-     3.1C (1/10/98):
-         1. Update latest BIOS version checked for from the /proc file.
-         2. Don't set microcode SDTR variable at initialization. Instead
-            wait until device capabilities have been detected from an Inquiry
-            command.
-
-     3.1D (1/21/98):
-         1. Improve performance when the driver is compiled as module by
-            allowing up to 64 scatter-gather elements instead of 8.
-
-     3.1E (5/1/98):
-         1. Set time delay in AscWaitTixISRDone() to 1000 ms.
-         2. Include SMP locking changes.
-         3. For v2.1.93 and newer kernels use CONFIG_PCI and new PCI BIOS
-            access functions.
-         4. Update board serial number printing.
-         5. Try allocating an IRQ both with and without the IRQF_DISABLED
-            flag set to allow IRQ sharing with drivers that do not set
-            the IRQF_DISABLED flag. Also display a more descriptive error
-            message if request_irq() fails.
-         6. Update to latest Asc and Adv Libraries.
-
-     3.2A (7/22/99):
-         1. Update Adv Library to 4.16 which includes support for
-            the ASC38C0800 (Ultra2/LVD) IC.
-
-     3.2B (8/23/99):
-         1. Correct PCI compile time option for v2.1.93 and greater
-            kernels, advansys_info() string, and debug compile time
-            option.
-         2. Correct DvcSleepMilliSecond() for v2.1.0 and greater
-            kernels. This caused an LVD detection/BIST problem problem
-            among other things.
-         3. Sort PCI cards by PCI Bus, Slot, Function ascending order
-            to be consistent with the BIOS.
-         4. Update to Asc Library S121 and Adv Library 5.2.
-
-     3.2C (8/24/99):
-         1. Correct PCI card detection bug introduced in 3.2B that
-            prevented PCI cards from being detected in kernels older
-            than v2.1.93.
-
-     3.2D (8/26/99):
-         1. Correct /proc device synchronous speed information display.
-            Also when re-negotiation is pending for a target device
-            note this condition with an * and footnote.
-         2. Correct initialization problem with Ultra-Wide cards that
-            have a pre-3.2 BIOS. A microcode variable changed locations
-            in 3.2 and greater BIOSes which caused WDTR to be attempted
-            erroneously with drives that don't support WDTR.
-
-     3.2E (8/30/99):
-         1. Fix compile error caused by v2.3.13 PCI structure change.
-         2. Remove field from ASCEEP_CONFIG that resulted in an EEPROM
-            checksum error for ISA cards.
-         3. Remove ASC_QUEUE_FLOW_CONTROL conditional code. The mid-level
-            SCSI changes that it depended on were never included in Linux.
-
-     3.2F (9/3/99):
-         1. Handle new initial function code added in v2.3.16 for all
-            driver versions.
-
-     3.2G (9/8/99):
-         1. Fix PCI board detection in v2.3.13 and greater kernels.
-         2. Fix comiple errors in v2.3.X with debugging enabled.
-
-     3.2H (9/13/99):
-         1. Add 64-bit address, long support for Alpha and UltraSPARC.
-            The driver has been verified to work on an Alpha system.
-         2. Add partial byte order handling support for Power PC and
-            other big-endian platforms. This support has not yet been
-            completed or verified.
-         3. For wide boards replace block zeroing of request and
-            scatter-gather structures with individual field initialization
-            to improve performance.
-         4. Correct and clarify ROM BIOS version detection.
-
-     3.2I (10/8/99):
-         1. Update to Adv Library 5.4.
-         2. Add v2.3.19 underrun reporting to asc_isr_callback() and
-            adv_isr_callback().  Remove DID_UNDERRUN constant and other
-            no longer needed code that previously documented the lack
-            of underrun handling.
-
-     3.2J (10/14/99):
-         1. Eliminate compile errors for v2.0 and earlier kernels.
-
-     3.2K (11/15/99):
-         1. Correct debug compile error in asc_prt_adv_scsi_req_q().
-         2. Update Adv Library to 5.5.
-         3. Add ifdef handling for /proc changes added in v2.3.28.
-         4. Increase Wide board scatter-gather list maximum length to
-            255 when the driver is compiled into the kernel.
-
-     3.2L (11/18/99):
-         1. Fix bug in adv_get_sglist() that caused an assertion failure
-            at line 7475. The reqp->sgblkp pointer must be initialized
-            to NULL in adv_get_sglist().
-
-     3.2M (11/29/99):
-         1. Really fix bug in adv_get_sglist().
-         2. Incorporate v2.3.29 changes into driver.
-
-     3.2N (4/1/00):
-         1. Add CONFIG_ISA ifdef code.
-         2. Include advansys_interrupts_enabled name change patch.
-         3. For >= v2.3.28 use new SCSI error handling with new function
-            advansys_eh_bus_reset(). Don't include an abort function
-            because of base library limitations.
-         4. For >= v2.3.28 use per board lock instead of io_request_lock.
-         5. For >= v2.3.28 eliminate advansys_command() and
-            advansys_command_done().
-         6. Add some changes for PowerPC (Big Endian) support, but it isn't
-            working yet.
-         7. Fix "nonexistent resource free" problem that occurred on a module
-            unload for boards with an I/O space >= 255. The 'n_io_port' field
-            is only one byte and can not be used to hold an ioport length more
-            than 255.
-
-     3.3A (4/4/00):
-         1. Update to Adv Library 5.8.
-         2. For wide cards add support for CDBs up to 16 bytes.
-         3. Eliminate warnings when CONFIG_PROC_FS is not defined.
-
-     3.3B (5/1/00):
-         1. Support for PowerPC (Big Endian) wide cards. Narrow cards
-            still need work.
-         2. Change bitfields to shift and mask access for endian
-            portability.
-
-     3.3C (10/13/00):
-         1. Update for latest 2.4 kernel.
-         2. Test ABP-480 CardBus support in 2.4 kernel - works!
-         3. Update to Asc Library S123.
-         4. Update to Adv Library 5.12.
-
-     3.3D (11/22/00):
-         1. Update for latest 2.4 kernel.
-         2. Create patches for 2.2 and 2.4 kernels.
-
-     3.3E (1/9/01):
-         1. Now that 2.4 is released remove ifdef code for kernel versions
-            less than 2.2. The driver is now only supported in kernels 2.2,
-            2.4, and greater.
-         2. Add code to release and acquire the io_request_lock in
-            the driver entrypoint functions: advansys_detect and
-            advansys_queuecommand. In kernel 2.4 the SCSI mid-level driver
-            still holds the io_request_lock on entry to SCSI low-level drivers.
-            This was supposed to be removed before 2.4 was released but never
-            happened. When the mid-level SCSI driver is changed all references
-            to the io_request_lock should be removed from the driver.
-         3. Simplify error handling by removing advansys_abort(),
-            AscAbortSRB(), AscResetDevice(). SCSI bus reset requests are
-            now handled by resetting the SCSI bus and fully re-initializing
-            the chip. This simple method of error recovery has proven to work
-            most reliably after attempts at different methods. Also now only
-            support the "new" error handling method and remove the obsolete
-            error handling interface.
-         4. Fix debug build errors.
-
-     3.3F (1/24/01):
-         1. Merge with ConnectCom version from Andy Kellner which
-            updates Adv Library to 5.14.
-         2. Make PowerPC (Big Endian) work for narrow cards and
-            fix problems writing EEPROM for wide cards.
-         3. Remove interrupts_enabled assertion function.
-
-     3.3G (2/16/01):
-         1. Return an error from narrow boards if passed a 16 byte
-            CDB. The wide board can already handle 16 byte CDBs.
-
-     3.3GJ (4/15/02):
-        1. hacks for lk 2.5 series (D. Gilbert)
-
-     3.3GJD (10/14/02):
-         1. change select_queue_depths to slave_configure
-        2. make cmd_per_lun be sane again
-
-     3.3K [2004/06/24]:
-         1. continuing cleanup for lk 2.6 series
-         2. Fix problem in lk 2.6.7-bk2 that broke PCI wide cards
-         3. Fix problem that oopsed ISA cards
-
-  I. Known Problems/Fix List (XXX)
-
-     1. Need to add memory mapping workaround. Test the memory mapping.
-        If it doesn't work revert to I/O port access. Can a test be done
-        safely?
-     2. Handle an interrupt not working. Keep an interrupt counter in
-        the interrupt handler. In the timeout function if the interrupt
-        has not occurred then print a message and run in polled mode.
-     3. Allow bus type scanning order to be changed.
-     4. Need to add support for target mode commands, cf. CAM XPT.
-
-  J. Credits (Chronological Order)
-
-     Bob Frey <bfrey@turbolinux.com.cn> wrote the AdvanSys SCSI driver
-     and maintained it up to 3.3F. He continues to answer questions
-     and help maintain the driver.
-
-     Nathan Hartwell <mage@cdc3.cdc.net> provided the directions and
-     basis for the Linux v1.3.X changes which were included in the
-     1.2 release.
-
-     Thomas E Zerucha <zerucha@shell.portal.com> pointed out a bug
-     in advansys_biosparam() which was fixed in the 1.3 release.
-
-     Erik Ratcliffe <erik@caldera.com> has done testing of the
-     AdvanSys driver in the Caldera releases.
-
-     Rik van Riel <H.H.vanRiel@fys.ruu.nl> provided a patch to
-     AscWaitTixISRDone() which he found necessary to make the
-     driver work with a SCSI-1 disk.
-
-     Mark Moran <mmoran@mmoran.com> has helped test Ultra-Wide
-     support in the 3.1A driver.
-
-     Doug Gilbert <dgilbert@interlog.com> has made changes and
-     suggestions to improve the driver and done a lot of testing.
-
-     Ken Mort <ken@mort.net> reported a DEBUG compile bug fixed
-     in 3.2K.
-
-     Tom Rini <trini@kernel.crashing.org> provided the CONFIG_ISA
-     patch and helped with PowerPC wide and narrow board support.
-
-     Philip Blundell <philb@gnu.org> provided an
-     advansys_interrupts_enabled patch.
-
-     Dave Jones <dave@denial.force9.co.uk> reported the compiler
-     warnings generated when CONFIG_PROC_FS was not defined in
-     the 3.2M driver.
-
-     Jerry Quinn <jlquinn@us.ibm.com> fixed PowerPC support (endian
-     problems) for wide cards.
-
-     Bryan Henderson <bryanh@giraffe-data.com> helped debug narrow
-     card error handling.
-
-     Manuel Veloso <veloso@pobox.com> worked hard on PowerPC narrow
-     board support and fixed a bug in AscGetEEPConfig().
-
-     Arnaldo Carvalho de Melo <acme@conectiva.com.br> made
-     save_flags/restore_flags changes.
-
-     Andy Kellner <AKellner@connectcom.net> continues the Advansys SCSI
-     driver development for ConnectCom (Version > 3.3F).
-
-  K. ConnectCom (AdvanSys) Contact Information
-
-     Mail:                   ConnectCom Solutions, Inc.
-                             1150 Ringwood Court
-                             San Jose, CA 95131
-     Operator/Sales:         1-408-383-9400
-     FAX:                    1-408-383-9612
-     Tech Support:           1-408-467-2930
-     Tech Support E-Mail:    linux@connectcom.net
-     FTP Site:               ftp.connectcom.net (login: anonymous)
-     Web Site:               http://www.connectcom.net
-
-*/
-
-/*
- * --- Linux Include Files
- */
-
 #include <linux/module.h>
 #include <linux/string.h>
 #include <linux/kernel.h>
 #include <scsi/scsi.h>
 #include <scsi/scsi_host.h>
 
-/* FIXME: (by jejb@steeleye.com)
- *
- * Although all of the necessary command mapping places have the
- * appropriate dma_map.. APIs, the driver still processes its internal
- * queue using bus_to_virt() and virt_to_bus() which are illegal under
- * the API.  The entire queue processing structure will need to be
- * altered to fix this.
+/* FIXME:
+ *
+ *  1. Although all of the necessary command mapping places have the
+ *     appropriate dma_map.. APIs, the driver still processes its internal
+ *     queue using bus_to_virt() and virt_to_bus() which are illegal under
+ *     the API.  The entire queue processing structure will need to be
+ *     altered to fix this.
+ *  2. Need to add memory mapping workaround. Test the memory mapping.
+ *     If it doesn't work revert to I/O port access. Can a test be done
+ *     safely?
+ *  3. Handle an interrupt not working. Keep an interrupt counter in
+ *     the interrupt handler. In the timeout function if the interrupt
+ *     has not occurred then print a message and run in polled mode.
+ *  4. Need to add support for target mode commands, cf. CAM XPT.
+ *  5. check DMA mapping functions for failure
+ *  6. Use scsi_transport_spi
+ *  7. advansys_info is not safe against multiple simultaneous callers
+ *  8. Kill boardp->id
+ *  9. Add module_param to override ISA/VLB ioport array
  */
 #warning this driver is still not properly converted to the DMA API
 
-/*
- * --- Driver Options
- */
-
-/* Enable driver assertions. */
-#define ADVANSYS_ASSERT
-
 /* Enable driver /proc statistics. */
 #define ADVANSYS_STATS
 
 /* Enable driver tracing. */
 /* #define ADVANSYS_DEBUG */
 
-/*
- * --- Asc Library Constants and Macros
- */
-
 #define ASC_LIB_VERSION_MAJOR  1
 #define ASC_LIB_VERSION_MINOR  24
 #define ASC_LIB_SERIAL_NUMBER  123
@@ -850,16 +115,9 @@ typedef unsigned char uchar;
 #define FALSE    (0)
 #endif
 
-#define EOF      (-1)
 #define ERR      (-1)
 #define UW_ERR   (uint)(0xFFFF)
 #define isodd_word(val)   ((((uint)val) & (uint)0x0001) != 0)
-#define ASC_PCI_ID2FUNC(id)   (((id) >> 8) & 0x7)
-#define ASC_PCI_MKID(bus, dev, func) ((((dev) & 0x1F) << 11) | (((func) & 0x7) << 8) | ((bus) & 0xFF))
-
-#define  ASC_DVCLIB_CALL_DONE     (1)
-#define  ASC_DVCLIB_CALL_FAILED   (0)
-#define  ASC_DVCLIB_CALL_ERROR    (-1)
 
 #define PCI_VENDOR_ID_ASP              0x10cd
 #define PCI_DEVICE_ID_ASP_1200A                0x1100
@@ -898,11 +156,10 @@ typedef unsigned char uchar;
 #define ASC_IS_PCMCIA       (0x0008)
 #define ASC_IS_MCA          (0x0020)
 #define ASC_IS_VL           (0x0040)
-#define ASC_ISA_PNP_PORT_ADDR  (0x279)
-#define ASC_ISA_PNP_PORT_WRITE (ASC_ISA_PNP_PORT_ADDR+0x800)
 #define ASC_IS_WIDESCSI_16  (0x0100)
 #define ASC_IS_WIDESCSI_32  (0x0200)
 #define ASC_IS_BIG_ENDIAN   (0x8000)
+
 #define ASC_CHIP_MIN_VER_VL      (0x01)
 #define ASC_CHIP_MAX_VER_VL      (0x07)
 #define ASC_CHIP_MIN_VER_PCI     (0x09)
@@ -921,16 +178,9 @@ typedef unsigned char uchar;
 #define ASC_CHIP_MAX_VER_EISA (0x47)
 #define ASC_CHIP_VER_EISA_BIT (0x40)
 #define ASC_CHIP_LATEST_VER_EISA   ((ASC_CHIP_MIN_VER_EISA - 1) + 3)
-#define ASC_MAX_LIB_SUPPORTED_ISA_CHIP_VER   0x21
-#define ASC_MAX_LIB_SUPPORTED_PCI_CHIP_VER   0x0A
-#define ASC_MAX_VL_DMA_ADDR     (0x07FFFFFFL)
 #define ASC_MAX_VL_DMA_COUNT    (0x07FFFFFFL)
-#define ASC_MAX_PCI_DMA_ADDR    (0xFFFFFFFFL)
 #define ASC_MAX_PCI_DMA_COUNT   (0xFFFFFFFFL)
-#define ASC_MAX_ISA_DMA_ADDR    (0x00FFFFFFL)
 #define ASC_MAX_ISA_DMA_COUNT   (0x00FFFFFFL)
-#define ASC_MAX_EISA_DMA_ADDR   (0x07FFFFFFL)
-#define ASC_MAX_EISA_DMA_COUNT  (0x07FFFFFFL)
 
 #define ASC_SCSI_ID_BITS  3
 #define ASC_SCSI_TIX_TYPE     uchar
@@ -941,27 +191,15 @@ typedef unsigned char uchar;
 #define ASC_SCSI_WIDTH_BIT_SET  0xFF
 #define ASC_MAX_SENSE_LEN   32
 #define ASC_MIN_SENSE_LEN   14
-#define ASC_MAX_CDB_LEN     12
 #define ASC_SCSI_RESET_HOLD_TIME_US  60
 
 /*
- * Inquiry SPC-2 SPI Byte 1 EVPD (Enable Vital Product Data)
- * and CmdDt (Command Support Data) field bit definitions.
+ * Narrow boards only support 12-byte commands, while wide boards
+ * extend to 16-byte commands.
  */
-#define ADV_INQ_RTN_VPD_AND_CMDDT           0x3
-#define ADV_INQ_RTN_CMDDT_FOR_OP_CODE       0x2
-#define ADV_INQ_RTN_VPD_FOR_PG_CODE         0x1
-#define ADV_INQ_RTN_STD_INQUIRY_DATA        0x0
-
-#define ASC_SCSIDIR_NOCHK    0x00
-#define ASC_SCSIDIR_T2H      0x08
-#define ASC_SCSIDIR_H2T      0x10
-#define ASC_SCSIDIR_NODATA   0x18
-#define SCSI_ASC_NOMEDIA          0x3A
-#define ASC_SRB_HOST(x)  ((uchar)((uchar)(x) >> 4))
-#define ASC_SRB_TID(x)   ((uchar)((uchar)(x) & (uchar)0x0F))
-#define ASC_SRB_LUN(x)   ((uchar)((uint)(x) >> 13))
-#define PUT_CDB1(x)   ((uchar)((uint)(x) >> 8))
+#define ASC_MAX_CDB_LEN     12
+#define ADV_MAX_CDB_LEN     16
+
 #define MS_SDTR_LEN    0x03
 #define MS_WDTR_LEN    0x02
 
@@ -1145,19 +383,6 @@ typedef struct asc_sg_head {
        ASC_SG_LIST sg_list[ASC_MAX_SG_LIST];
 } ASC_SG_HEAD;
 
-#define ASC_MIN_SG_LIST   2
-
-typedef struct asc_min_sg_head {
-       ushort entry_cnt;
-       ushort queue_cnt;
-       ushort entry_to_copy;
-       ushort res;
-       ASC_SG_LIST sg_list[ASC_MIN_SG_LIST];
-} ASC_MIN_SG_HEAD;
-
-#define QCX_SORT        (0x0001)
-#define QCX_COALEASE    (0x0002)
-
 typedef struct asc_scsi_q {
        ASC_SCSIQ_1 q1;
        ASC_SCSIQ_2 q2;
@@ -1214,45 +439,12 @@ typedef struct asc_risc_sg_list_q {
        ASC_SG_LIST sg_list[7];
 } ASC_RISC_SG_LIST_Q;
 
-#define ASC_EXE_SCSI_IO_MAX_IDLE_LOOP  0x1000000UL
-#define ASC_EXE_SCSI_IO_MAX_WAIT_LOOP  1024
-#define ASCQ_ERR_NO_ERROR             0
-#define ASCQ_ERR_IO_NOT_FOUND         1
-#define ASCQ_ERR_LOCAL_MEM            2
-#define ASCQ_ERR_CHKSUM               3
-#define ASCQ_ERR_START_CHIP           4
-#define ASCQ_ERR_INT_TARGET_ID        5
-#define ASCQ_ERR_INT_LOCAL_MEM        6
-#define ASCQ_ERR_HALT_RISC            7
-#define ASCQ_ERR_GET_ASPI_ENTRY       8
-#define ASCQ_ERR_CLOSE_ASPI           9
-#define ASCQ_ERR_HOST_INQUIRY         0x0A
-#define ASCQ_ERR_SAVED_SRB_BAD        0x0B
-#define ASCQ_ERR_QCNTL_SG_LIST        0x0C
 #define ASCQ_ERR_Q_STATUS             0x0D
-#define ASCQ_ERR_WR_SCSIQ             0x0E
-#define ASCQ_ERR_PC_ADDR              0x0F
-#define ASCQ_ERR_SYN_OFFSET           0x10
-#define ASCQ_ERR_SYN_XFER_TIME        0x11
-#define ASCQ_ERR_LOCK_DMA             0x12
-#define ASCQ_ERR_UNLOCK_DMA           0x13
-#define ASCQ_ERR_VDS_CHK_INSTALL      0x14
-#define ASCQ_ERR_MICRO_CODE_HALT      0x15
-#define ASCQ_ERR_SET_LRAM_ADDR        0x16
 #define ASCQ_ERR_CUR_QNG              0x17
 #define ASCQ_ERR_SG_Q_LINKS           0x18
-#define ASCQ_ERR_SCSIQ_PTR            0x19
 #define ASCQ_ERR_ISR_RE_ENTRY         0x1A
 #define ASCQ_ERR_CRITICAL_RE_ENTRY    0x1B
 #define ASCQ_ERR_ISR_ON_CRITICAL      0x1C
-#define ASCQ_ERR_SG_LIST_ODD_ADDRESS  0x1D
-#define ASCQ_ERR_XFER_ADDRESS_TOO_BIG 0x1E
-#define ASCQ_ERR_SCSIQ_NULL_PTR       0x1F
-#define ASCQ_ERR_SCSIQ_BAD_NEXT_PTR   0x20
-#define ASCQ_ERR_GET_NUM_OF_FREE_Q    0x21
-#define ASCQ_ERR_SEND_SCSI_Q          0x22
-#define ASCQ_ERR_HOST_REQ_RISC_HALT   0x23
-#define ASCQ_ERR_RESET_SDTR           0x24
 
 /*
  * Warning code values are set in ASC_DVC_VAR  'warn_code'.
@@ -1265,7 +457,6 @@ typedef struct asc_risc_sg_list_q {
 #define ASC_WARN_CMD_QNG_CONFLICT     0x0010
 #define ASC_WARN_EEPROM_RECOVER       0x0020
 #define ASC_WARN_CFG_MSW_RECOVER      0x0040
-#define ASC_WARN_SET_PCI_CONFIG_SPACE 0x0080
 
 /*
  * Error code values are set in ASC_DVC_VAR  'err_code'.
@@ -1285,27 +476,21 @@ typedef struct asc_risc_sg_list_q {
 #define ASC_IERR_SET_SDTR             0x1000
 #define ASC_IERR_RW_LRAM              0x8000
 
-#define ASC_DEF_IRQ_NO  10
 #define ASC_MAX_IRQ_NO  15
 #define ASC_MIN_IRQ_NO  10
-#define ASC_MIN_REMAIN_Q        (0x02)
 #define ASC_DEF_MAX_TOTAL_QNG   (0xF0)
 #define ASC_MIN_TAG_Q_PER_DVC   (0x04)
-#define ASC_DEF_TAG_Q_PER_DVC   (0x04)
-#define ASC_MIN_FREE_Q        ASC_MIN_REMAIN_Q
+#define ASC_MIN_FREE_Q        (0x02)
 #define ASC_MIN_TOTAL_QNG     ((ASC_MAX_SG_QUEUE)+(ASC_MIN_FREE_Q))
 #define ASC_MAX_TOTAL_QNG 240
 #define ASC_MAX_PCI_ULTRA_INRAM_TOTAL_QNG 16
 #define ASC_MAX_PCI_ULTRA_INRAM_TAG_QNG   8
 #define ASC_MAX_PCI_INRAM_TOTAL_QNG  20
 #define ASC_MAX_INRAM_TAG_QNG   16
-#define ASC_IOADR_TABLE_MAX_IX  11
 #define ASC_IOADR_GAP   0x10
-#define ASC_LIB_SCSIQ_WK_SP        256
 #define ASC_MAX_SYN_XFER_NO        16
 #define ASC_SYN_MAX_OFFSET         0x0F
 #define ASC_DEF_SDTR_OFFSET        0x0F
-#define ASC_DEF_SDTR_INDEX         0x00
 #define ASC_SDTR_ULTRA_PCI_10MB_INDEX  0x02
 #define SYN_XFER_NS_0  25
 #define SYN_XFER_NS_1  30
@@ -1378,15 +563,12 @@ typedef struct asc_dvc_cfg {
        uchar max_tag_qng[ASC_MAX_TID + 1];
        uchar *overrun_buf;
        uchar sdtr_period_offset[ASC_MAX_TID + 1];
-       ushort pci_slot_info;
        uchar adapter_info[6];
-       struct device *dev;
 } ASC_DVC_CFG;
 
 #define ASC_DEF_DVC_CNTL       0xFFFF
 #define ASC_DEF_CHIP_SCSI_ID   7
 #define ASC_DEF_ISA_DMA_SPEED  4
-#define ASC_INIT_STATE_NULL          0x0000
 #define ASC_INIT_STATE_BEG_GET_CFG   0x0001
 #define ASC_INIT_STATE_END_GET_CFG   0x0002
 #define ASC_INIT_STATE_BEG_SET_CFG   0x0004
@@ -1405,17 +587,12 @@ typedef struct asc_dvc_cfg {
 
 struct asc_dvc_var;            /* Forward Declaration. */
 
-typedef void (*ASC_ISR_CALLBACK) (struct asc_dvc_var *, ASC_QDONE_INFO *);
-typedef int (*ASC_EXE_CALLBACK) (struct asc_dvc_var *, ASC_SCSI_Q *);
-
 typedef struct asc_dvc_var {
        PortAddr iop_base;
        ushort err_code;
        ushort dvc_cntl;
        ushort bug_fix_cntl;
        ushort bus_type;
-       ASC_ISR_CALLBACK isr_callback;
-       ASC_EXE_CALLBACK exe_callback;
        ASC_SCSI_BIT_ID_TYPE init_sdtr;
        ASC_SCSI_BIT_ID_TYPE sdtr_done;
        ASC_SCSI_BIT_ID_TYPE use_tagged_qng;
@@ -1483,12 +660,7 @@ typedef struct asc_cap_info_array {
 #define ASC_EEP_MAX_DVC_ADDR_VL   15
 #define ASC_EEP_DVC_CFG_BEG      32
 #define ASC_EEP_MAX_DVC_ADDR     45
-#define ASC_EEP_DEFINED_WORDS    10
-#define ASC_EEP_MAX_ADDR         63
-#define ASC_EEP_RES_WORDS         0
 #define ASC_EEP_MAX_RETRY        20
-#define ASC_MAX_INIT_BUSY_RETRY   8
-#define ASC_EEP_ISA_PNP_WSIZE    16
 
 /*
  * These macros keep the chip SCSI id and ISA DMA speed
@@ -1524,17 +696,11 @@ typedef struct asceep_config {
        ushort chksum;
 } ASCEEP_CONFIG;
 
-#define ASC_PCI_CFG_LSW_SCSI_PARITY  0x0800
-#define ASC_PCI_CFG_LSW_BURST_MODE   0x0080
-#define ASC_PCI_CFG_LSW_INTR_ABLE    0x0020
-
 #define ASC_EEP_CMD_READ          0x80
 #define ASC_EEP_CMD_WRITE         0x40
 #define ASC_EEP_CMD_WRITE_ABLE    0x30
 #define ASC_EEP_CMD_WRITE_DISABLE 0x00
 #define ASC_OVERRUN_BSIZE  0x00000048UL
-#define ASC_CTRL_BREAK_ONCE        0x0001
-#define ASC_CTRL_BREAK_STAY_IDLE   0x0002
 #define ASCV_MSGOUT_BEG         0x0000
 #define ASCV_MSGOUT_SDTR_PERIOD (ASCV_MSGOUT_BEG+3)
 #define ASCV_MSGOUT_SDTR_OFFSET (ASCV_MSGOUT_BEG+4)
@@ -1831,7 +997,6 @@ static void AscMemDWordCopyPtrToLram(PortAddr, ushort, uchar *, int);
 static void AscMemWordCopyPtrFromLram(PortAddr, ushort, uchar *, int);
 static ushort AscInitAscDvcVar(ASC_DVC_VAR *);
 static ushort AscInitFromEEP(ASC_DVC_VAR *);
-static ushort AscInitFromAscDvcVar(ASC_DVC_VAR *);
 static ushort AscInitMicroCodeVar(ASC_DVC_VAR *);
 static int AscTestExternalLram(ASC_DVC_VAR *);
 static uchar AscMsgOutSDTR(ASC_DVC_VAR *, uchar, uchar);
@@ -1849,7 +1014,6 @@ static int AscPutReadySgListQueue(ASC_DVC_VAR *, ASC_SCSI_Q *, uchar);
 static int AscSetChipSynRegAtID(PortAddr, uchar, uchar);
 static int AscSetRunChipSynRegAtID(PortAddr, uchar, uchar);
 static ushort AscInitLram(ASC_DVC_VAR *);
-static ushort AscInitQLinkVar(ASC_DVC_VAR *);
 static int AscSetLibErrorCode(ASC_DVC_VAR *, ushort);
 static int AscIsrChipHalted(ASC_DVC_VAR *);
 static uchar _AscCopyLramScsiDoneQ(PortAddr, ushort,
@@ -1862,10 +1026,6 @@ static uchar AscGetChipScsiCtrl(PortAddr);
 static uchar AscGetChipVersion(PortAddr, ushort);
 static ASC_DCNT AscLoadMicroCode(PortAddr, ushort, uchar *, ushort);
 static void AscToggleIRQAct(PortAddr);
-static inline ulong DvcEnterCritical(void);
-static inline void DvcLeaveCritical(ulong);
-static void DvcSleepMilliSecond(ASC_DCNT);
-static void DvcDelayNanoSecond(ASC_DVC_VAR *, ASC_DCNT);
 static void DvcPutScsiQ(PortAddr, ushort, uchar *, int);
 static void DvcGetQinfo(PortAddr, ushort, uchar *, int);
 static ushort AscInitAsc1000Driver(ASC_DVC_VAR *);
@@ -1879,10 +1039,6 @@ static void AscEnableIsaDma(uchar);
 #endif /* CONFIG_ISA */
 static const char *advansys_info(struct Scsi_Host *shost);
 
-/*
- * --- Adv Library Constants and Macros
- */
-
 #define ADV_LIB_VERSION_MAJOR  5
 #define ADV_LIB_VERSION_MINOR  14
 
@@ -1928,12 +1084,6 @@ static const char *advansys_info(struct Scsi_Host *shost);
 
 #define ADV_CARRIER_COUNT (ASC_DEF_MAX_HOST_QNG + 15)
 
-/*
- * For wide  boards a CDB length maximum of 16 bytes
- * is supported.
- */
-#define ADV_MAX_CDB_LEN     16
-
 /*
  * Define total number of simultaneous maximum element scatter-gather
  * request blocks per wide adapter. ASC_DEF_MAX_HOST_QNG (253) is the
@@ -2269,10 +1419,6 @@ typedef struct adveep_38C1600_config {
  * EEPROM Commands
  */
 #define ASC_EEP_CMD_DONE             0x0200
-#define ASC_EEP_CMD_DONE_ERR         0x0001
-
-/* cfg_word */
-#define EEP_CFG_WORD_BIG_ENDIAN      0x8000
 
 /* bios_ctrl */
 #define BIOS_CTRL_BIOS               0x0001
@@ -2289,10 +1435,8 @@ typedef struct adveep_38C1600_config {
 #define BIOS_CTRL_AIPP_DIS           0x2000
 
 #define ADV_3550_MEMSIZE   0x2000      /* 8 KB Internal Memory */
-#define ADV_3550_IOLEN     0x40        /* I/O Port Range in bytes */
 
 #define ADV_38C0800_MEMSIZE  0x4000    /* 16 KB Internal Memory */
-#define ADV_38C0800_IOLEN    0x100     /* I/O Port Range in bytes */
 
 /*
  * XXX - Since ASC38C1600 Rev.3 has a local RAM failure issue, there is
@@ -2302,8 +1446,6 @@ typedef struct adveep_38C1600_config {
  * #define ADV_38C1600_MEMSIZE  0x8000L   * 32 KB Internal Memory *
  */
 #define ADV_38C1600_MEMSIZE  0x4000    /* 16 KB Internal Memory */
-#define ADV_38C1600_IOLEN    0x100     /* I/O Port Range 256 bytes */
-#define ADV_38C1600_MEMLEN   0x1000    /* Memory Range 4KB bytes */
 
 /*
  * Byte I/O register address from base of 'iop_base'.
@@ -2433,8 +1575,6 @@ typedef struct adveep_38C1600_config {
 #define ADV_CHIP_ID_BYTE         0x25
 #define ADV_CHIP_ID_WORD         0x04C1
 
-#define ADV_SC_SCSI_BUS_RESET    0x2000
-
 #define ADV_INTR_ENABLE_HOST_INTR                   0x01
 #define ADV_INTR_ENABLE_SEL_INTR                    0x02
 #define ADV_INTR_ENABLE_DPR_INTR                    0x04
@@ -2474,8 +1614,6 @@ typedef struct adveep_38C1600_config {
 #define ADV_TICKLE_B                        0x02
 #define ADV_TICKLE_C                        0x03
 
-#define ADV_SCSI_CTRL_RSTOUT        0x2000
-
 #define AdvIsIntPending(port) \
     (AdvReadWordRegister(port, IOPW_CTRL_REG) & ADV_CTRL_REG_HOST_INTR)
 
@@ -2628,14 +1766,11 @@ typedef struct adveep_38C1600_config {
  */
 #define INTAB           0x01
 
-/* a_advlib.h */
-
 /*
  * Adv Library Status Definitions
  */
 #define ADV_TRUE        1
 #define ADV_FALSE       0
-#define ADV_NOERROR     1
 #define ADV_SUCCESS     1
 #define ADV_BUSY        0
 #define ADV_ERROR       (-1)
@@ -2646,7 +1781,6 @@ typedef struct adveep_38C1600_config {
 #define ASC_WARN_BUSRESET_ERROR         0x0001 /* SCSI Bus Reset error */
 #define ASC_WARN_EEPROM_CHKSUM          0x0002 /* EEP check sum error */
 #define ASC_WARN_EEPROM_TERMINATION     0x0004 /* EEP termination bad field */
-#define ASC_WARN_SET_PCI_CONFIG_SPACE   0x0080 /* PCI config space set error */
 #define ASC_WARN_ERROR                  0xFFFF /* ADV_ERROR return */
 
 #define ADV_MAX_TID                     15     /* max. target identifier */
@@ -2825,24 +1959,14 @@ typedef struct adv_dvc_cfg {
        ushort control_flag;    /* Microcode Control Flag */
        ushort mcode_date;      /* Microcode date */
        ushort mcode_version;   /* Microcode version */
-       ushort pci_slot_info;   /* high byte device/function number */
-       /* bits 7-3 device num., bits 2-0 function num. */
-       /* low byte bus num. */
        ushort serial1;         /* EEPROM serial number word 1 */
        ushort serial2;         /* EEPROM serial number word 2 */
        ushort serial3;         /* EEPROM serial number word 3 */
-       struct device *dev;     /* pointer to the pci dev structure for this board */
 } ADV_DVC_CFG;
 
 struct adv_dvc_var;
 struct adv_scsi_req_q;
 
-typedef void (*ADV_ISR_CALLBACK)
- (struct adv_dvc_var *, struct adv_scsi_req_q *);
-
-typedef void (*ADV_ASYNC_CALLBACK)
- (struct adv_dvc_var *, uchar);
-
 /*
  * Adapter operation variable structure.
  *
@@ -2859,8 +1983,6 @@ typedef struct adv_dvc_var {
        AdvPortAddr iop_base;   /* I/O port address */
        ushort err_code;        /* fatal error code */
        ushort bios_ctrl;       /* BIOS control word, EEPROM word 12 */
-       ADV_ISR_CALLBACK isr_callback;
-       ADV_ASYNC_CALLBACK async_callback;
        ushort wdtr_able;       /* try WDTR for a device */
        ushort sdtr_able;       /* try SDTR for a device */
        ushort ultra_able;      /* try SDTR Ultra speed for a device */
@@ -2976,10 +2098,8 @@ typedef struct adv_scsi_req_q {
 /*
  * Wait loop time out values.
  */
-#define SCSI_WAIT_10_SEC             10UL      /* 10 seconds */
 #define SCSI_WAIT_100_MSEC           100UL     /* 100 milliseconds */
 #define SCSI_US_PER_MSEC             1000      /* microseconds per millisecond */
-#define SCSI_MS_PER_SEC              1000UL    /* milliseconds per second */
 #define SCSI_MAX_RETRY               10        /* retry count */
 
 #define ADV_ASYNC_RDMA_FAILURE          0x01   /* Fatal RDMA failure. */
@@ -2989,22 +2109,14 @@ typedef struct adv_scsi_req_q {
 
 #define ADV_HOST_SCSI_BUS_RESET      0x80      /* Host Initiated SCSI Bus Reset. */
 
-/*
- * Device drivers must define the following functions.
- */
-static inline ulong DvcEnterCritical(void);
-static inline void DvcLeaveCritical(ulong);
-static void DvcSleepMilliSecond(ADV_DCNT);
 static ADV_PADDR DvcGetPhyAddr(ADV_DVC_VAR *, ADV_SCSI_REQ_Q *,
                               uchar *, ASC_SDCNT *, int);
-static void DvcDelayMicroSecond(ADV_DVC_VAR *, ushort);
 
 /*
  * Adv Library functions available to drivers.
  */
 static int AdvExeScsiQueue(ADV_DVC_VAR *, ADV_SCSI_REQ_Q *);
 static int AdvISR(ADV_DVC_VAR *);
-static int AdvInitGetConfig(ADV_DVC_VAR *);
 static int AdvInitAsc3550Driver(ADV_DVC_VAR *);
 static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *);
 static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *);
@@ -3194,13 +2306,6 @@ do { \
 #define QHSTA_M_FROZEN_TIDQ         0x46       /* TID Queue frozen. */
 #define QHSTA_M_SGBACKUP_ERROR      0x47       /* Scatter-Gather backup error */
 
-/*
- * Default EEPROM Configuration structure defined in a_init.c.
- */
-static ADVEEP_3550_CONFIG Default_3550_EEPROM_Config;
-static ADVEEP_38C0800_CONFIG Default_38C0800_EEPROM_Config;
-static ADVEEP_38C1600_CONFIG Default_38C1600_EEPROM_Config;
-
 /*
  * DvcGetPhyAddr() flag arguments
  */
@@ -3228,10 +2333,6 @@ static ADVEEP_38C1600_CONFIG Default_38C1600_EEPROM_Config;
          (sizeof(ADV_SG_BLOCK) * \
           ((ADV_MAX_SG_LIST + (NO_OF_SG_PER_BLOCK - 1))/NO_OF_SG_PER_BLOCK))
 
-/*
- * --- Driver Constants and Macros
- */
-
 /* Reference Scsi_Host hostdata */
 #define ASC_BOARDP(host) ((asc_board_t *) &((host)->hostdata))
 
@@ -3276,64 +2377,6 @@ static ADVEEP_38C1600_CONFIG Default_38C1600_EEPROM_Config;
 #define HOST_BYTE(byte)     ((byte) << 16)
 #define DRIVER_BYTE(byte)   ((byte) << 24)
 
-/*
- * The following definitions and macros are OS independent interfaces to
- * the queue functions:
- *  REQ - SCSI request structure
- *  REQP - pointer to SCSI request structure
- *  REQPTID(reqp) - reqp's target id
- *  REQPNEXT(reqp) - reqp's next pointer
- *  REQPNEXTP(reqp) - pointer to reqp's next pointer
- *  REQPTIME(reqp) - reqp's time stamp value
- *  REQTIMESTAMP() - system time stamp value
- */
-typedef struct scsi_cmnd REQ, *REQP;
-#define REQPNEXT(reqp)       ((REQP) ((reqp)->host_scribble))
-#define REQPNEXTP(reqp)      ((REQP *) &((reqp)->host_scribble))
-#define REQPTID(reqp)        ((reqp)->device->id)
-#define REQPTIME(reqp)       ((reqp)->SCp.this_residual)
-#define REQTIMESTAMP()       (jiffies)
-
-#define REQTIMESTAT(function, ascq, reqp, tid) \
-{ \
-    /*
-     * If the request time stamp is less than the system time stamp, then \
-     * maybe the system time stamp wrapped. Set the request time to zero.\
-     */ \
-    if (REQPTIME(reqp) <= REQTIMESTAMP()) { \
-        REQPTIME(reqp) = REQTIMESTAMP() - REQPTIME(reqp); \
-    } else { \
-        /* Indicate an error occurred with the assertion. */ \
-        ASC_ASSERT(REQPTIME(reqp) <= REQTIMESTAMP()); \
-        REQPTIME(reqp) = 0; \
-    } \
-    /* Handle first minimum time case without external initialization. */ \
-    if (((ascq)->q_tot_cnt[tid] == 1) ||  \
-        (REQPTIME(reqp) < (ascq)->q_min_tim[tid])) { \
-            (ascq)->q_min_tim[tid] = REQPTIME(reqp); \
-            ASC_DBG3(1, "%s: new q_min_tim[%d] %u\n", \
-                (function), (tid), (ascq)->q_min_tim[tid]); \
-        } \
-    if (REQPTIME(reqp) > (ascq)->q_max_tim[tid]) { \
-        (ascq)->q_max_tim[tid] = REQPTIME(reqp); \
-        ASC_DBG3(1, "%s: new q_max_tim[%d] %u\n", \
-            (function), tid, (ascq)->q_max_tim[tid]); \
-    } \
-    (ascq)->q_tot_tim[tid] += REQPTIME(reqp); \
-    /* Reset the time stamp field. */ \
-    REQPTIME(reqp) = 0; \
-}
-
-/* asc_enqueue() flags */
-#define ASC_FRONT       1
-#define ASC_BACK        2
-
-/* asc_dequeue_list() argument */
-#define ASC_TID_ALL        (-1)
-
-/* Return non-zero, if the queue is empty. */
-#define ASC_QUEUE_EMPTY(ascq)    ((ascq)->q_tidmask == 0)
-
 #ifndef ADVANSYS_STATS
 #define ASC_STATS(shost, counter)
 #define ASC_STATS_ADD(shost, counter, count)
@@ -3499,24 +2542,6 @@ typedef struct scsi_cmnd REQ, *REQP;
         ASC_DBG_PRT_HEX((lvl), "INQUIRY", (uchar *) (inq), (len));
 #endif /* ADVANSYS_DEBUG */
 
-#ifndef ADVANSYS_ASSERT
-#define ASC_ASSERT(a)
-#else /* ADVANSYS_ASSERT */
-
-#define ASC_ASSERT(a) \
-    { \
-        if (!(a)) { \
-            printk("ASC_ASSERT() Failure: file %s, line %d\n", \
-                __FILE__, __LINE__); \
-        } \
-    }
-
-#endif /* ADVANSYS_ASSERT */
-
-/*
- * --- Driver Structures
- */
-
 #ifdef ADVANSYS_STATS
 
 /* Per board statistics structure */
@@ -3545,23 +2570,6 @@ struct asc_stats {
 };
 #endif /* ADVANSYS_STATS */
 
-/*
- * Request queuing structure
- */
-typedef struct asc_queue {
-       ADV_SCSI_BIT_ID_TYPE q_tidmask; /* queue mask */
-       REQP q_first[ADV_MAX_TID + 1];  /* first queued request */
-       REQP q_last[ADV_MAX_TID + 1];   /* last queued request */
-#ifdef ADVANSYS_STATS
-       short q_cur_cnt[ADV_MAX_TID + 1];       /* current queue count */
-       short q_max_cnt[ADV_MAX_TID + 1];       /* maximum queue count */
-       ADV_DCNT q_tot_cnt[ADV_MAX_TID + 1];    /* total enqueue count */
-       ADV_DCNT q_tot_tim[ADV_MAX_TID + 1];    /* total time queued */
-       ushort q_max_tim[ADV_MAX_TID + 1];      /* maximum time queued */
-       ushort q_min_tim[ADV_MAX_TID + 1];      /* minimum time queued */
-#endif                         /* ADVANSYS_STATS */
-} asc_queue_t;
-
 /*
  * Adv Library Request Structures
  *
@@ -3601,6 +2609,7 @@ typedef struct adv_req {
  * field. It is guaranteed to be allocated from DMA-able memory.
  */
 typedef struct asc_board {
+       struct device *dev;
        int id;                 /* Board Id */
        uint flags;             /* Board flags */
        union {
@@ -3612,9 +2621,6 @@ typedef struct asc_board {
                ADV_DVC_CFG adv_dvc_cfg;        /* Wide board */
        } dvc_cfg;
        ushort asc_n_io_port;   /* Number I/O ports. */
-       asc_queue_t active;     /* Active command queue */
-       asc_queue_t waiting;    /* Waiting command queue */
-       asc_queue_t done;       /* Done command queue */
        ADV_SCSI_BIT_ID_TYPE init_tidmask;      /* Target init./valid mask */
        struct scsi_device *device[ADV_MAX_TID + 1];    /* Mid-Level Scsi Device */
        ushort reqcnt[ADV_MAX_TID + 1]; /* Starvation request count */
@@ -3652,6 +2658,10 @@ typedef struct asc_board {
        ushort bios_codelen;    /* BIOS Code Segment Length. */
 } asc_board_t;
 
+#define adv_dvc_to_board(adv_dvc) container_of(adv_dvc, struct asc_board, \
+                                                       dvc_var.adv_dvc_var)
+#define adv_dvc_to_pdev(adv_dvc) to_pci_dev(adv_dvc_to_board(adv_dvc)->dev)
+
 /* Number of boards detected in system. */
 static int asc_board_count;
 
@@ -3668,24 +2678,11 @@ static ASC_SG_HEAD asc_sg_head = { 0 };
 static int asc_dbglvl = 3;
 #endif /* ADVANSYS_DEBUG */
 
-/*
- * --- Driver Function Prototypes
- */
-
 static int advansys_slave_configure(struct scsi_device *);
-static void asc_scsi_done_list(struct scsi_cmnd *);
 static int asc_execute_scsi_cmnd(struct scsi_cmnd *);
 static int asc_build_req(asc_board_t *, struct scsi_cmnd *);
 static int adv_build_req(asc_board_t *, struct scsi_cmnd *, ADV_SCSI_REQ_Q **);
 static int adv_get_sglist(asc_board_t *, adv_req_t *, struct scsi_cmnd *, int);
-static void asc_isr_callback(ASC_DVC_VAR *, ASC_QDONE_INFO *);
-static void adv_isr_callback(ADV_DVC_VAR *, ADV_SCSI_REQ_Q *);
-static void adv_async_callback(ADV_DVC_VAR *, uchar);
-static void asc_enqueue(asc_queue_t *, REQP, int);
-static REQP asc_dequeue(asc_queue_t *, int);
-static REQP asc_dequeue_list(asc_queue_t *, REQP *, int);
-static int asc_rmqueue(asc_queue_t *, REQP);
-static void asc_execute_queue(asc_queue_t *);
 #ifdef CONFIG_PROC_FS
 static int asc_proc_copy(off_t, off_t, char *, int, char *, int);
 static int asc_prt_board_devices(struct Scsi_Host *, char *, int);
@@ -3703,7 +2700,6 @@ static int asc_prt_line(char *, int, char *fmt, ...);
 #ifdef ADVANSYS_STATS
 #ifdef CONFIG_PROC_FS
 static int asc_prt_board_stats(struct Scsi_Host *, char *, int);
-static int asc_prt_target_stats(struct Scsi_Host *, int, char *, int);
 #endif /* CONFIG_PROC_FS */
 #endif /* ADVANSYS_STATS */
 
@@ -3755,9 +2751,6 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
        int leftlen;
        char *curbuf;
        off_t advoffset;
-#ifdef ADVANSYS_STATS
-       int tgt_id;
-#endif /* ADVANSYS_STATS */
 
        ASC_DBG(1, "advansys_proc_info: begin\n");
 
@@ -3806,7 +2799,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
        if (ASC_WIDE_BOARD(boardp)) {
                cp = boardp->prtbuf;
                cplen = asc_prt_adv_bios(shost, cp, ASC_PRTBUF_SIZE);
-               ASC_ASSERT(cplen < ASC_PRTBUF_SIZE);
+               BUG_ON(cplen >= ASC_PRTBUF_SIZE);
                cnt = asc_proc_copy(advoffset, offset, curbuf, leftlen, cp,
                                  cplen);
                totcnt += cnt;
@@ -3824,7 +2817,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
         */
        cp = boardp->prtbuf;
        cplen = asc_prt_board_devices(shost, cp, ASC_PRTBUF_SIZE);
-       ASC_ASSERT(cplen < ASC_PRTBUF_SIZE);
+       BUG_ON(cplen >= ASC_PRTBUF_SIZE);
        cnt = asc_proc_copy(advoffset, offset, curbuf, leftlen, cp, cplen);
        totcnt += cnt;
        leftlen -= cnt;
@@ -3844,7 +2837,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
        } else {
                cplen = asc_prt_adv_board_eeprom(shost, cp, ASC_PRTBUF_SIZE);
        }
-       ASC_ASSERT(cplen < ASC_PRTBUF_SIZE);
+       BUG_ON(cplen >= ASC_PRTBUF_SIZE);
        cnt = asc_proc_copy(advoffset, offset, curbuf, leftlen, cp, cplen);
        totcnt += cnt;
        leftlen -= cnt;
@@ -3860,7 +2853,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
         */
        cp = boardp->prtbuf;
        cplen = asc_prt_driver_conf(shost, cp, ASC_PRTBUF_SIZE);
-       ASC_ASSERT(cplen < ASC_PRTBUF_SIZE);
+       BUG_ON(cplen >= ASC_PRTBUF_SIZE);
        cnt = asc_proc_copy(advoffset, offset, curbuf, leftlen, cp, cplen);
        totcnt += cnt;
        leftlen -= cnt;
@@ -3877,7 +2870,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
         */
        cp = boardp->prtbuf;
        cplen = asc_prt_board_stats(shost, cp, ASC_PRTBUF_SIZE);
-       ASC_ASSERT(cplen <= ASC_PRTBUF_SIZE);
+       BUG_ON(cplen >= ASC_PRTBUF_SIZE);
        cnt = asc_proc_copy(advoffset, offset, curbuf, leftlen, cp, cplen);
        totcnt += cnt;
        leftlen -= cnt;
@@ -3887,26 +2880,6 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
        }
        advoffset += cplen;
        curbuf += cnt;
-
-       /*
-        * Display driver statistics for each target.
-        */
-       for (tgt_id = 0; tgt_id <= ADV_MAX_TID; tgt_id++) {
-               cp = boardp->prtbuf;
-               cplen = asc_prt_target_stats(shost, tgt_id, cp,
-                                            ASC_PRTBUF_SIZE);
-               ASC_ASSERT(cplen <= ASC_PRTBUF_SIZE);
-               cnt = asc_proc_copy(advoffset, offset, curbuf, leftlen, cp,
-                                   cplen);
-               totcnt += cnt;
-               leftlen -= cnt;
-               if (leftlen == 0) {
-                       ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt);
-                       return totcnt;
-               }
-               advoffset += cplen;
-               curbuf += cnt;
-       }
 #endif /* ADVANSYS_STATS */
 
        /*
@@ -3919,7 +2892,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
        } else {
                cplen = asc_prt_adv_board_info(shost, cp, ASC_PRTBUF_SIZE);
        }
-       ASC_ASSERT(cplen < ASC_PRTBUF_SIZE);
+       BUG_ON(cplen >= ASC_PRTBUF_SIZE);
        cnt = asc_proc_copy(advoffset, offset, curbuf, leftlen, cp, cplen);
        totcnt += cnt;
        leftlen -= cnt;
@@ -3952,7 +2925,6 @@ static const char *advansys_info(struct Scsi_Host *shost)
        ASC_DVC_VAR *asc_dvc_varp;
        ADV_DVC_VAR *adv_dvc_varp;
        char *busname;
-       int iolen;
        char *widename = NULL;
 
        boardp = ASC_BOARDP(shost);
@@ -3966,13 +2938,12 @@ static const char *advansys_info(struct Scsi_Host *shost)
                        } else {
                                busname = "ISA";
                        }
-                       /* Don't reference 'shost->n_io_port'; It may be truncated. */
                        sprintf(info,
                                "AdvanSys SCSI %s: %s: IO 0x%lX-0x%lX, IRQ 0x%X, DMA 0x%X",
                                ASC_VERSION, busname,
                                (ulong)shost->io_port,
-                               (ulong)shost->io_port + boardp->asc_n_io_port -
-                               1, shost->irq, shost->dma_channel);
+                               (ulong)shost->io_port + ASC_IOADR_GAP - 1,
+                               shost->irq, shost->dma_channel);
                } else {
                        if (asc_dvc_varp->bus_type & ASC_IS_VL) {
                                busname = "VL";
@@ -3991,12 +2962,11 @@ static const char *advansys_info(struct Scsi_Host *shost)
                                           "bus type %d\n", boardp->id,
                                           asc_dvc_varp->bus_type);
                        }
-                       /* Don't reference 'shost->n_io_port'; It may be truncated. */
                        sprintf(info,
                                "AdvanSys SCSI %s: %s: IO 0x%lX-0x%lX, IRQ 0x%X",
                                ASC_VERSION, busname, (ulong)shost->io_port,
-                               (ulong)shost->io_port + boardp->asc_n_io_port -
-                               1, shost->irq);
+                               (ulong)shost->io_port + ASC_IOADR_GAP - 1,
+                               shost->irq);
                }
        } else {
                /*
@@ -4008,25 +2978,39 @@ static const char *advansys_info(struct Scsi_Host *shost)
                 */
                adv_dvc_varp = &boardp->dvc_var.adv_dvc_var;
                if (adv_dvc_varp->chip_type == ADV_CHIP_ASC3550) {
-                       iolen = ADV_3550_IOLEN;
                        widename = "Ultra-Wide";
                } else if (adv_dvc_varp->chip_type == ADV_CHIP_ASC38C0800) {
-                       iolen = ADV_38C0800_IOLEN;
                        widename = "Ultra2-Wide";
                } else {
-                       iolen = ADV_38C1600_IOLEN;
                        widename = "Ultra3-Wide";
                }
                sprintf(info,
                        "AdvanSys SCSI %s: PCI %s: PCIMEM 0x%lX-0x%lX, IRQ 0x%X",
                        ASC_VERSION, widename, (ulong)adv_dvc_varp->iop_base,
-                       (ulong)adv_dvc_varp->iop_base + iolen - 1, shost->irq);
+                       (ulong)adv_dvc_varp->iop_base + boardp->asc_n_io_port - 1, shost->irq);
        }
-       ASC_ASSERT(strlen(info) < ASC_INFO_SIZE);
+       BUG_ON(strlen(info) >= ASC_INFO_SIZE);
        ASC_DBG(1, "advansys_info: end\n");
        return info;
 }
 
+static void asc_scsi_done(struct scsi_cmnd *scp)
+{
+       struct asc_board *boardp = ASC_BOARDP(scp->device->host);
+
+       if (scp->use_sg)
+               dma_unmap_sg(boardp->dev,
+                            (struct scatterlist *)scp->request_buffer,
+                            scp->use_sg, scp->sc_data_direction);
+       else if (scp->request_bufflen)
+               dma_unmap_single(boardp->dev, scp->SCp.dma_handle,
+                                scp->request_bufflen, scp->sc_data_direction);
+
+       ASC_STATS(scp->device->host, done);
+
+       scp->scsi_done(scp);
+}
+
 /*
  * advansys_queuecommand() - interrupt-driven I/O entrypoint.
  *
@@ -4034,82 +3018,37 @@ static const char *advansys_info(struct Scsi_Host *shost)
  * in the 'scp' result field.
  */
 static int
-advansys_queuecommand(struct scsi_cmnd *scp, void (*done) (struct scsi_cmnd *))
+advansys_queuecommand(struct scsi_cmnd *scp, void (*done)(struct scsi_cmnd *))
 {
-       struct Scsi_Host *shost;
-       asc_board_t *boardp;
-       ulong flags;
-       struct scsi_cmnd *done_scp;
+       struct Scsi_Host *shost = scp->device->host;
+       asc_board_t *boardp = ASC_BOARDP(shost);
+       unsigned long flags;
+       int asc_res, result = 0;
 
-       shost = scp->device->host;
-       boardp = ASC_BOARDP(shost);
        ASC_STATS(shost, queuecommand);
-
-       /* host_lock taken by mid-level prior to call but need to protect */
-       /* against own ISR */
-       spin_lock_irqsave(&boardp->lock, flags);
-
-       /*
-        * Block new commands while handling a reset or abort request.
-        */
-       if (boardp->flags & ASC_HOST_IN_RESET) {
-               ASC_DBG1(1,
-                        "advansys_queuecommand: scp 0x%lx blocked for reset request\n",
-                        (ulong)scp);
-               scp->result = HOST_BYTE(DID_RESET);
-
-               /*
-                * Add blocked requests to the board's 'done' queue. The queued
-                * requests will be completed at the end of the abort or reset
-                * handling.
-                */
-               asc_enqueue(&boardp->done, scp, ASC_BACK);
-               spin_unlock_irqrestore(&boardp->lock, flags);
-               return 0;
-       }
+       scp->scsi_done = done;
 
        /*
-        * Attempt to execute any waiting commands for the board.
+        * host_lock taken by mid-level prior to call, but need
+        * to protect against own ISR
         */
-       if (!ASC_QUEUE_EMPTY(&boardp->waiting)) {
-               ASC_DBG(1,
-                       "advansys_queuecommand: before asc_execute_queue() waiting\n");
-               asc_execute_queue(&boardp->waiting);
-       }
+       spin_lock_irqsave(&boardp->lock, flags);
+       asc_res = asc_execute_scsi_cmnd(scp);
+       spin_unlock_irqrestore(&boardp->lock, flags);
 
-       /*
-        * Save the function pointer to Linux mid-level 'done' function
-        * and attempt to execute the command.
-        *
-        * If ASC_NOERROR is returned the request has been added to the
-        * board's 'active' queue and will be completed by the interrupt
-        * handler.
-        *
-        * If ASC_BUSY is returned add the request to the board's per
-        * target waiting list. This is the first time the request has
-        * been tried. Add it to the back of the waiting list. It will be
-        * retried later.
-        *
-        * If an error occurred, the request will have been placed on the
-        * board's 'done' queue and must be completed before returning.
-        */
-       scp->scsi_done = done;
-       switch (asc_execute_scsi_cmnd(scp)) {
+       switch (asc_res) {
        case ASC_NOERROR:
                break;
        case ASC_BUSY:
-               asc_enqueue(&boardp->waiting, scp, ASC_BACK);
+               result = SCSI_MLQUEUE_HOST_BUSY;
                break;
        case ASC_ERROR:
        default:
-               done_scp = asc_dequeue_list(&boardp->done, NULL, ASC_TID_ALL);
-               /* Interrupts could be enabled here. */
-               asc_scsi_done_list(done_scp);
+               asc_scsi_done(scp);
                break;
        }
-       spin_unlock_irqrestore(&boardp->lock, flags);
 
-       return 0;
+       return result;
 }
 
 /*
@@ -4128,8 +3067,6 @@ static int advansys_reset(struct scsi_cmnd *scp)
        ASC_DVC_VAR *asc_dvc_varp;
        ADV_DVC_VAR *adv_dvc_varp;
        ulong flags;
-       struct scsi_cmnd *done_scp = NULL, *last_scp = NULL;
-       struct scsi_cmnd *tscp, *new_last_scp;
        int status;
        int ret = SUCCESS;
 
@@ -4220,67 +3157,6 @@ static int advansys_reset(struct scsi_cmnd *scp)
        }
        /* Board lock is held. */
 
-       /*
-        * Dequeue all board 'done' requests. A pointer to the last request
-        * is returned in 'last_scp'.
-        */
-       done_scp = asc_dequeue_list(&boardp->done, &last_scp, ASC_TID_ALL);
-
-       /*
-        * Dequeue all board 'active' requests for all devices and set
-        * the request status to DID_RESET. A pointer to the last request
-        * is returned in 'last_scp'.
-        */
-       if (done_scp == NULL) {
-               done_scp = asc_dequeue_list(&boardp->active, &last_scp,
-                                           ASC_TID_ALL);
-               for (tscp = done_scp; tscp; tscp = REQPNEXT(tscp)) {
-                       tscp->result = HOST_BYTE(DID_RESET);
-               }
-       } else {
-               /* Append to 'done_scp' at the end with 'last_scp'. */
-               ASC_ASSERT(last_scp != NULL);
-               last_scp->host_scribble =
-                   (unsigned char *)asc_dequeue_list(&boardp->active,
-                                                     &new_last_scp,
-                                                     ASC_TID_ALL);
-               if (new_last_scp != NULL) {
-                       ASC_ASSERT(REQPNEXT(last_scp) != NULL);
-                       for (tscp = REQPNEXT(last_scp); tscp;
-                            tscp = REQPNEXT(tscp)) {
-                               tscp->result = HOST_BYTE(DID_RESET);
-                       }
-                       last_scp = new_last_scp;
-               }
-       }
-
-       /*
-        * Dequeue all 'waiting' requests and set the request status
-        * to DID_RESET.
-        */
-       if (done_scp == NULL) {
-               done_scp = asc_dequeue_list(&boardp->waiting, &last_scp,
-                                           ASC_TID_ALL);
-               for (tscp = done_scp; tscp; tscp = REQPNEXT(tscp)) {
-                       tscp->result = HOST_BYTE(DID_RESET);
-               }
-       } else {
-               /* Append to 'done_scp' at the end with 'last_scp'. */
-               ASC_ASSERT(last_scp != NULL);
-               last_scp->host_scribble =
-                   (unsigned char *)asc_dequeue_list(&boardp->waiting,
-                                                     &new_last_scp,
-                                                     ASC_TID_ALL);
-               if (new_last_scp != NULL) {
-                       ASC_ASSERT(REQPNEXT(last_scp) != NULL);
-                       for (tscp = REQPNEXT(last_scp); tscp;
-                            tscp = REQPNEXT(tscp)) {
-                               tscp->result = HOST_BYTE(DID_RESET);
-                       }
-                       last_scp = new_last_scp;
-               }
-       }
-
        /* Save the time of the most recently completed reset. */
        boardp->last_reset = jiffies;
 
@@ -4288,12 +3164,6 @@ static int advansys_reset(struct scsi_cmnd *scp)
        boardp->flags &= ~ASC_HOST_IN_RESET;
        spin_unlock_irqrestore(&boardp->lock, flags);
 
-       /*
-        * Complete all the 'done_scp' requests.
-        */
-       if (done_scp)
-               asc_scsi_done_list(done_scp);
-
        ASC_DBG1(1, "advansys_reset: ret %d\n", ret);
 
        return ret;
@@ -4344,11 +3214,11 @@ advansys_biosparam(struct scsi_device *sdev, struct block_device *bdev,
 }
 
 static struct scsi_host_template advansys_template = {
-       .proc_name = "advansys",
+       .proc_name = DRV_NAME,
 #ifdef CONFIG_PROC_FS
        .proc_info = advansys_proc_info,
 #endif
-       .name = "advansys",
+       .name = DRV_NAME,
        .info = advansys_info,
        .queuecommand = advansys_queuecommand,
        .eh_bus_reset_handler = advansys_reset,
@@ -4370,24 +3240,14 @@ static struct scsi_host_template advansys_template = {
        .use_clustering = ENABLE_CLUSTERING,
 };
 
-/*
- * --- Miscellaneous Driver Functions
- */
-
 /*
  * First-level interrupt handler.
  *
- * 'dev_id' is a pointer to the interrupting adapter's asc_board_t. Because
- * all boards are currently checked for interrupts on each interrupt, 'dev_id'
- * is not referenced. 'dev_id' could be used to identify an interrupt passed
- * to the AdvanSys driver which is for a device sharing an interrupt with
- * an AdvanSys adapter.
+ * 'dev_id' is a pointer to the interrupting adapter's Scsi_Host.
  */
 static irqreturn_t advansys_interrupt(int irq, void *dev_id)
 {
        unsigned long flags;
-       struct scsi_cmnd *done_scp = NULL, *last_scp = NULL;
-       struct scsi_cmnd *new_last_scp;
        struct Scsi_Host *shost = dev_id;
        asc_board_t *boardp = ASC_BOARDP(shost);
        irqreturn_t result = IRQ_NONE;
@@ -4395,9 +3255,6 @@ static irqreturn_t advansys_interrupt(int irq, void *dev_id)
        ASC_DBG1(2, "advansys_interrupt: boardp 0x%p\n", boardp);
        spin_lock_irqsave(&boardp->lock, flags);
        if (ASC_NARROW_BOARD(boardp)) {
-               /*
-                * Narrow Board
-                */
                if (AscIsIntPending(shost->io_port)) {
                        result = IRQ_HANDLED;
                        ASC_STATS(shost, interrupt);
@@ -4405,66 +3262,14 @@ static irqreturn_t advansys_interrupt(int irq, void *dev_id)
                        AscISR(&boardp->dvc_var.asc_dvc_var);
                }
        } else {
-               /*
-                * Wide Board
-                */
                ASC_DBG(1, "advansys_interrupt: before AdvISR()\n");
                if (AdvISR(&boardp->dvc_var.adv_dvc_var)) {
                        result = IRQ_HANDLED;
                        ASC_STATS(shost, interrupt);
                }
        }
-
-       /*
-        * Start waiting requests and create a list of completed requests.
-        *
-        * If a reset request is being performed for the board, the reset
-        * handler will complete pending requests after it has completed.
-        */
-       if ((boardp->flags & ASC_HOST_IN_RESET) == 0) {
-               ASC_DBG2(1, "advansys_interrupt: done_scp 0x%p, "
-                        "last_scp 0x%p\n", done_scp, last_scp);
-
-               /* Start any waiting commands for the board. */
-               if (!ASC_QUEUE_EMPTY(&boardp->waiting)) {
-                       ASC_DBG(1, "advansys_interrupt: before "
-                               "asc_execute_queue()\n");
-                       asc_execute_queue(&boardp->waiting);
-               }
-
-               /*
-                * Add to the list of requests that must be completed.
-                *
-                * 'done_scp' will always be NULL on the first iteration of
-                * this loop. 'last_scp' is set at the same time as 'done_scp'.
-                */
-               if (done_scp == NULL) {
-                       done_scp = asc_dequeue_list(&boardp->done,
-                                               &last_scp, ASC_TID_ALL);
-               } else {
-                       ASC_ASSERT(last_scp != NULL);
-                       last_scp->host_scribble =
-                           (unsigned char *)asc_dequeue_list(&boardp->
-                                                             done,
-                                                             &new_last_scp,
-                                                             ASC_TID_ALL);
-                       if (new_last_scp != NULL) {
-                               ASC_ASSERT(REQPNEXT(last_scp) != NULL);
-                               last_scp = new_last_scp;
-                       }
-               }
-       }
        spin_unlock_irqrestore(&boardp->lock, flags);
 
-       /*
-        * If interrupts were enabled on entry, then they
-        * are now enabled here.
-        *
-        * Complete all requests on the done list.
-        */
-
-       asc_scsi_done_list(done_scp);
-
        ASC_DBG(1, "advansys_interrupt: end\n");
        return result;
 }
@@ -4669,52 +3474,6 @@ static int advansys_slave_configure(struct scsi_device *sdev)
        return 0;
 }
 
-/*
- * Complete all requests on the singly linked list pointed
- * to by 'scp'.
- *
- * Interrupts can be enabled on entry.
- */
-static void asc_scsi_done_list(struct scsi_cmnd *scp)
-{
-       struct scsi_cmnd *tscp;
-
-       ASC_DBG(2, "asc_scsi_done_list: begin\n");
-       while (scp != NULL) {
-               asc_board_t *boardp;
-               struct device *dev;
-
-               ASC_DBG1(3, "asc_scsi_done_list: scp 0x%lx\n", (ulong)scp);
-               tscp = REQPNEXT(scp);
-               scp->host_scribble = NULL;
-
-               boardp = ASC_BOARDP(scp->device->host);
-
-               if (ASC_NARROW_BOARD(boardp))
-                       dev = boardp->dvc_cfg.asc_dvc_cfg.dev;
-               else
-                       dev = boardp->dvc_cfg.adv_dvc_cfg.dev;
-
-               if (scp->use_sg)
-                       dma_unmap_sg(dev,
-                                    (struct scatterlist *)scp->request_buffer,
-                                    scp->use_sg, scp->sc_data_direction);
-               else if (scp->request_bufflen)
-                       dma_unmap_single(dev, scp->SCp.dma_handle,
-                                        scp->request_bufflen,
-                                        scp->sc_data_direction);
-
-               ASC_STATS(scp->device->host, done);
-               ASC_ASSERT(scp->scsi_done != NULL);
-
-               scp->scsi_done(scp);
-
-               scp = tscp;
-       }
-       ASC_DBG(2, "asc_scsi_done_list: done\n");
-       return;
-}
-
 /*
  * Execute a single 'Scsi_Cmnd'.
  *
@@ -4751,15 +3510,14 @@ static void asc_scsi_done_list(struct scsi_cmnd *scp)
  *    scsi_done - used to save caller's done function
  *    host_scribble - used for pointer to another struct scsi_cmnd
  *
- * If this function returns ASC_NOERROR the request has been enqueued
- * on the board's 'active' queue and will be completed from the
- * interrupt handler.
+ * If this function returns ASC_NOERROR the request will be completed
+ * from the interrupt handler.
  *
- * If this function returns ASC_NOERROR the request has been enqueued
- * on the board's 'done' queue and must be completed by the caller.
+ * If this function returns ASC_ERROR the host error code has been set,
+ * and the called must call asc_scsi_done.
  *
- * If ASC_BUSY is returned the request will be enqueued by the
- * caller on the target's waiting queue and re-tried later.
+ * If ASC_BUSY is returned the request will be returned to the midlayer
+ * and re-tried later.
  */
 static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
 {
@@ -4798,10 +3556,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                        return ASC_ERROR;
                }
 
-               /*
-                * Execute the command. If there is no error, add the command
-                * to the active queue.
-                */
                switch (ret = AscExeScsiQueue(asc_dvc_varp, &asc_scsi_q)) {
                case ASC_NOERROR:
                        ASC_STATS(scp->device->host, exe_noerror);
@@ -4810,15 +3564,10 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                         * successful request counter. Wrapping doesn't matter.
                         */
                        boardp->reqcnt[scp->device->id]++;
-                       asc_enqueue(&boardp->active, scp, ASC_BACK);
                        ASC_DBG(1, "asc_execute_scsi_cmnd: AscExeScsiQueue(), "
                                "ASC_NOERROR\n");
                        break;
                case ASC_BUSY:
-                       /*
-                        * Caller will enqueue request on the target's waiting
-                        * queue and retry later.
-                        */
                        ASC_STATS(scp->device->host, exe_busy);
                        break;
                case ASC_ERROR:
@@ -4827,7 +3576,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                                boardp->id, asc_dvc_varp->err_code);
                        ASC_STATS(scp->device->host, exe_error);
                        scp->result = HOST_BYTE(DID_ERROR);
-                       asc_enqueue(&boardp->done, scp, ASC_BACK);
                        break;
                default:
                        ASC_PRINT2("asc_execute_scsi_cmnd: board %d: "
@@ -4835,7 +3583,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                                boardp->id, asc_dvc_varp->err_code);
                        ASC_STATS(scp->device->host, exe_unknown);
                        scp->result = HOST_BYTE(DID_ERROR);
-                       asc_enqueue(&boardp->done, scp, ASC_BACK);
                        break;
                }
        } else {
@@ -4859,10 +3606,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                        ASC_DBG(1, "asc_execute_scsi_cmnd: adv_build_req "
                                "ASC_BUSY\n");
                        /*
-                        * If busy is returned the request has not been
-                        * enqueued.  It will be enqueued by the caller on the
-                        * target's waiting queue and retried later.
-                        *
                         * The asc_stats fields 'adv_build_noreq' and
                         * 'adv_build_nosg' count wide board busy conditions.
                         * They are updated in adv_build_req and
@@ -4870,11 +3613,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                         */
                        return ASC_BUSY;
                case ASC_ERROR:
-                       /* 
-                        * If an error is returned, then the request has been
-                        * queued on the board done queue. It will be completed
-                        * by the caller.
-                        */
                default:
                        ASC_DBG(1, "asc_execute_scsi_cmnd: adv_build_req "
                                "ASC_ERROR\n");
@@ -4882,10 +3620,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                        return ASC_ERROR;
                }
 
-               /*
-                * Execute the command. If there is no error, add the command
-                * to the active queue.
-                */
                switch (ret = AdvExeScsiQueue(adv_dvc_varp, adv_scsiqp)) {
                case ASC_NOERROR:
                        ASC_STATS(scp->device->host, exe_noerror);
@@ -4894,15 +3628,10 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                         * successful request counter. Wrapping doesn't matter.
                         */
                        boardp->reqcnt[scp->device->id]++;
-                       asc_enqueue(&boardp->active, scp, ASC_BACK);
                        ASC_DBG(1, "asc_execute_scsi_cmnd: AdvExeScsiQueue(), "
                                "ASC_NOERROR\n");
                        break;
                case ASC_BUSY:
-                       /*
-                        * Caller will enqueue request on the target's waiting
-                        * queue and retry later.
-                        */
                        ASC_STATS(scp->device->host, exe_busy);
                        break;
                case ASC_ERROR:
@@ -4911,7 +3640,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                                boardp->id, adv_dvc_varp->err_code);
                        ASC_STATS(scp->device->host, exe_error);
                        scp->result = HOST_BYTE(DID_ERROR);
-                       asc_enqueue(&boardp->done, scp, ASC_BACK);
                        break;
                default:
                        ASC_PRINT2("asc_execute_scsi_cmnd: board %d: "
@@ -4919,7 +3647,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
                                boardp->id, adv_dvc_varp->err_code);
                        ASC_STATS(scp->device->host, exe_unknown);
                        scp->result = HOST_BYTE(DID_ERROR);
-                       asc_enqueue(&boardp->done, scp, ASC_BACK);
                        break;
                }
        }
@@ -4934,13 +3661,10 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
  * The global structures 'asc_scsi_q' and 'asc_sg_head' are
  * used to build the request.
  *
- * If an error occurs, then queue the request on the board done
- * queue and return ASC_ERROR.
+ * If an error occurs, then return ASC_ERROR.
  */
 static int asc_build_req(asc_board_t *boardp, struct scsi_cmnd *scp)
 {
-       struct device *dev = boardp->dvc_cfg.asc_dvc_cfg.dev;
-
        /*
         * Mutually exclusive access is required to 'asc_scsi_q' and
         * 'asc_sg_head' until after the request is started.
@@ -4954,18 +3678,7 @@ static int asc_build_req(asc_board_t *boardp, struct scsi_cmnd *scp)
 
        /*
         * Build the ASC_SCSI_Q request.
-        *
-        * For narrow boards a CDB length maximum of 12 bytes
-        * is supported.
         */
-       if (scp->cmd_len > ASC_MAX_CDB_LEN) {
-               ASC_PRINT3("asc_build_req: board %d: cmd_len %d > "
-                       "ASC_MAX_CDB_LEN %d\n", boardp->id, scp->cmd_len,
-                       ASC_MAX_CDB_LEN);
-               scp->result = HOST_BYTE(DID_ERROR);
-               asc_enqueue(&boardp->done, scp, ASC_BACK);
-               return ASC_ERROR;
-       }
        asc_scsi_q.cdbptr = &scp->cmnd[0];
        asc_scsi_q.q2.cdb_len = scp->cmd_len;
        asc_scsi_q.q1.target_id = ASC_TID_TO_TARGET_ID(scp->device->id);
@@ -5004,7 +3717,7 @@ static int asc_build_req(asc_board_t *boardp, struct scsi_cmnd *scp)
                 */
                ASC_STATS(scp->device->host, cont_cnt);
                scp->SCp.dma_handle = scp->request_bufflen ?
-                   dma_map_single(dev, scp->request_buffer,
+                   dma_map_single(boardp->dev, scp->request_buffer,
                                   scp->request_bufflen,
                                   scp->sc_data_direction) : 0;
                asc_scsi_q.q1.data_addr = cpu_to_le32(scp->SCp.dma_handle);
@@ -5022,18 +3735,16 @@ static int asc_build_req(asc_board_t *boardp, struct scsi_cmnd *scp)
                struct scatterlist *slp;
 
                slp = (struct scatterlist *)scp->request_buffer;
-               use_sg =
-                   dma_map_sg(dev, slp, scp->use_sg, scp->sc_data_direction);
+               use_sg = dma_map_sg(boardp->dev, slp, scp->use_sg,
+                                   scp->sc_data_direction);
 
                if (use_sg > scp->device->host->sg_tablesize) {
-                       ASC_PRINT3
-                           ("asc_build_req: board %d: use_sg %d > sg_tablesize %d\n",
-                            boardp->id, use_sg,
-                            scp->device->host->sg_tablesize);
-                       dma_unmap_sg(dev, slp, scp->use_sg,
+                       ASC_PRINT3("asc_build_req: board %d: use_sg %d > "
+                                  "sg_tablesize %d\n", boardp->id, use_sg,
+                                  scp->device->host->sg_tablesize);
+                       dma_unmap_sg(boardp->dev, slp, scp->use_sg,
                                     scp->sc_data_direction);
                        scp->result = HOST_BYTE(DID_ERROR);
-                       asc_enqueue(&boardp->done, scp, ASC_BACK);
                        return ASC_ERROR;
                }
 
@@ -5091,7 +3802,6 @@ adv_build_req(asc_board_t *boardp, struct scsi_cmnd *scp,
        ADV_SCSI_REQ_Q *scsiqp;
        int i;
        int ret;
-       struct device *dev = boardp->dvc_cfg.adv_dvc_cfg.dev;
 
        /*
         * Allocate an adv_req_t structure from the board to execute
@@ -5131,19 +3841,7 @@ adv_build_req(asc_board_t *boardp, struct scsi_cmnd *scp,
         * Build the ADV_SCSI_REQ_Q request.
         */
 
-       /*
-        * Set CDB length and copy it to the request structure.
-        * For wide  boards a CDB length maximum of 16 bytes
-        * is supported.
-        */
-       if (scp->cmd_len > ADV_MAX_CDB_LEN) {
-               ASC_PRINT3
-                   ("adv_build_req: board %d: cmd_len %d > ADV_MAX_CDB_LEN  %d\n",
-                    boardp->id, scp->cmd_len, ADV_MAX_CDB_LEN);
-               scp->result = HOST_BYTE(DID_ERROR);
-               asc_enqueue(&boardp->done, scp, ASC_BACK);
-               return ASC_ERROR;
-       }
+       /* Set CDB length and copy it to the request structure.  */
        scsiqp->cdb_len = scp->cmd_len;
        /* Copy first 12 CDB bytes to cdb[]. */
        for (i = 0; i < scp->cmd_len && i < 12; i++) {
@@ -5178,7 +3876,7 @@ adv_build_req(asc_board_t *boardp, struct scsi_cmnd *scp,
                if (scp->request_bufflen) {
                        scsiqp->vdata_addr = scp->request_buffer;
                        scp->SCp.dma_handle =
-                           dma_map_single(dev, scp->request_buffer,
+                           dma_map_single(boardp->dev, scp->request_buffer,
                                           scp->request_bufflen,
                                           scp->sc_data_direction);
                } else {
@@ -5199,22 +3897,20 @@ adv_build_req(asc_board_t *boardp, struct scsi_cmnd *scp,
                int use_sg;
 
                slp = (struct scatterlist *)scp->request_buffer;
-               use_sg =
-                   dma_map_sg(dev, slp, scp->use_sg, scp->sc_data_direction);
+               use_sg = dma_map_sg(boardp->dev, slp, scp->use_sg,
+                                   scp->sc_data_direction);
 
                if (use_sg > ADV_MAX_SG_LIST) {
-                       ASC_PRINT3
-                           ("adv_build_req: board %d: use_sg %d > ADV_MAX_SG_LIST %d\n",
-                            boardp->id, use_sg,
-                            scp->device->host->sg_tablesize);
-                       dma_unmap_sg(dev, slp, scp->use_sg,
+                       ASC_PRINT3("adv_build_req: board %d: use_sg %d > "
+                                  "ADV_MAX_SG_LIST %d\n", boardp->id, use_sg,
+                                  scp->device->host->sg_tablesize);
+                       dma_unmap_sg(boardp->dev, slp, scp->use_sg,
                                     scp->sc_data_direction);
                        scp->result = HOST_BYTE(DID_ERROR);
-                       asc_enqueue(&boardp->done, scp, ASC_BACK);
 
                        /*
-                        * Free the 'adv_req_t' structure by adding it back to the
-                        * board free list.
+                        * Free the 'adv_req_t' structure by adding it back
+                        * to the board free list.
                         */
                        reqp->next_reqp = boardp->adv_reqp;
                        boardp->adv_reqp = reqp;
@@ -5222,12 +3918,11 @@ adv_build_req(asc_board_t *boardp, struct scsi_cmnd *scp,
                        return ASC_ERROR;
                }
 
-               if ((ret =
-                    adv_get_sglist(boardp, reqp, scp,
-                                   use_sg)) != ADV_SUCCESS) {
+               ret = adv_get_sglist(boardp, reqp, scp, use_sg);
+               if (ret != ADV_SUCCESS) {
                        /*
-                        * Free the adv_req_t structure by adding it back to the
-                        * board free list.
+                        * Free the adv_req_t structure by adding it back to
+                        * the board free list.
                         */
                        reqp->next_reqp = boardp->adv_reqp;
                        boardp->adv_reqp = reqp;
@@ -5277,7 +3972,7 @@ adv_get_sglist(asc_board_t *boardp, adv_req_t *reqp, struct scsi_cmnd *scp,
        prev_sg_block = NULL;
        reqp->sgblkp = NULL;
 
-       do {
+       for (;;) {
                /*
                 * Allocate a 'adv_sgblk_t' structure from the board free
                 * list. One 'adv_sgblk_t' structure holds NO_OF_SG_PER_BLOCK
@@ -5288,8 +3983,8 @@ adv_get_sglist(asc_board_t *boardp, adv_req_t *reqp, struct scsi_cmnd *scp,
                        ASC_STATS(scp->device->host, adv_build_nosg);
 
                        /*
-                        * Allocation failed. Free 'adv_sgblk_t' structures already
-                        * allocated for the request.
+                        * Allocation failed. Free 'adv_sgblk_t' structures
+                        * already allocated for the request.
                         */
                        while ((sgblkp = reqp->sgblkp) != NULL) {
                                /* Remove 'sgblkp' from the request list. */
@@ -5300,53 +3995,50 @@ adv_get_sglist(asc_board_t *boardp, adv_req_t *reqp, struct scsi_cmnd *scp,
                                boardp->adv_sgblkp = sgblkp;
                        }
                        return ASC_BUSY;
-               } else {
-                       /* Complete 'adv_sgblk_t' board allocation. */
-                       boardp->adv_sgblkp = sgblkp->next_sgblkp;
-                       sgblkp->next_sgblkp = NULL;
+               }
+
+               /* Complete 'adv_sgblk_t' board allocation. */
+               boardp->adv_sgblkp = sgblkp->next_sgblkp;
+               sgblkp->next_sgblkp = NULL;
+
+               /*
+                * Get 8 byte aligned virtual and physical addresses
+                * for the allocated ADV_SG_BLOCK structure.
+                */
+               sg_block = (ADV_SG_BLOCK *)ADV_8BALIGN(&sgblkp->sg_block);
+               sg_block_paddr = virt_to_bus(sg_block);
+
+               /*
+                * Check if this is the first 'adv_sgblk_t' for the
+                * request.
+                */
+               if (reqp->sgblkp == NULL) {
+                       /* Request's first scatter-gather block. */
+                       reqp->sgblkp = sgblkp;
 
                        /*
-                        * Get 8 byte aligned virtual and physical addresses for
-                        * the allocated ADV_SG_BLOCK structure.
+                        * Set ADV_SCSI_REQ_T ADV_SG_BLOCK virtual and physical
+                        * address pointers.
                         */
-                       sg_block =
-                           (ADV_SG_BLOCK *)ADV_8BALIGN(&sgblkp->sg_block);
-                       sg_block_paddr = virt_to_bus(sg_block);
+                       scsiqp->sg_list_ptr = sg_block;
+                       scsiqp->sg_real_addr = cpu_to_le32(sg_block_paddr);
+               } else {
+                       /* Request's second or later scatter-gather block. */
+                       sgblkp->next_sgblkp = reqp->sgblkp;
+                       reqp->sgblkp = sgblkp;
 
                        /*
-                        * Check if this is the first 'adv_sgblk_t' for the request.
+                        * Point the previous ADV_SG_BLOCK structure to
+                        * the newly allocated ADV_SG_BLOCK structure.
                         */
-                       if (reqp->sgblkp == NULL) {
-                               /* Request's first scatter-gather block. */
-                               reqp->sgblkp = sgblkp;
-
-                               /*
-                                * Set ADV_SCSI_REQ_T ADV_SG_BLOCK virtual and physical
-                                * address pointers.
-                                */
-                               scsiqp->sg_list_ptr = sg_block;
-                               scsiqp->sg_real_addr =
-                                   cpu_to_le32(sg_block_paddr);
-                       } else {
-                               /* Request's second or later scatter-gather block. */
-                               sgblkp->next_sgblkp = reqp->sgblkp;
-                               reqp->sgblkp = sgblkp;
-
-                               /*
-                                * Point the previous ADV_SG_BLOCK structure to
-                                * the newly allocated ADV_SG_BLOCK structure.
-                                */
-                               ASC_ASSERT(prev_sg_block != NULL);
-                               prev_sg_block->sg_ptr =
-                                   cpu_to_le32(sg_block_paddr);
-                       }
+                       prev_sg_block->sg_ptr = cpu_to_le32(sg_block_paddr);
                }
 
                for (i = 0; i < NO_OF_SG_PER_BLOCK; i++) {
                        sg_block->sg_list[i].sg_addr =
-                           cpu_to_le32(sg_dma_address(slp));
+                                       cpu_to_le32(sg_dma_address(slp));
                        sg_block->sg_list[i].sg_count =
-                           cpu_to_le32(sg_dma_len(slp));
+                                       cpu_to_le32(sg_dma_len(slp));
                        ASC_STATS_ADD(scp->device->host, sg_xfer,
                                      ASC_CEILING(sg_dma_len(slp), 512));
 
@@ -5360,8 +4052,6 @@ adv_get_sglist(asc_board_t *boardp, adv_req_t *reqp, struct scsi_cmnd *scp,
                sg_block->sg_cnt = NO_OF_SG_PER_BLOCK;
                prev_sg_block = sg_block;
        }
-       while (1);
-       /* NOTREACHED */
 }
 
 /*
@@ -5396,19 +4086,8 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep)
        ASC_STATS(shost, callback);
        ASC_DBG1(1, "asc_isr_callback: shost 0x%lx\n", (ulong)shost);
 
-       /*
-        * If the request isn't found on the active queue, it may
-        * have been removed to handle a reset request.
-        * Display a message and return.
-        */
        boardp = ASC_BOARDP(shost);
-       ASC_ASSERT(asc_dvc_varp == &boardp->dvc_var.asc_dvc_var);
-       if (asc_rmqueue(&boardp->active, scp) == ASC_FALSE) {
-               ASC_PRINT2
-                   ("asc_isr_callback: board %d: scp 0x%lx not on active queue\n",
-                    boardp->id, (ulong)scp);
-               return;
-       }
+       BUG_ON(asc_dvc_varp != &boardp->dvc_var.asc_dvc_var);
 
        /*
         * 'qdonep' contains the command's ending status.
@@ -5443,14 +4122,16 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep)
                                ASC_DBG_PRT_SENSE(2, scp->sense_buffer,
                                                  sizeof(scp->sense_buffer));
                                /*
-                                * Note: The 'status_byte()' macro used by target drivers
-                                * defined in scsi.h shifts the status byte returned by
-                                * host drivers right by 1 bit. This is why target drivers
-                                * also use right shifted status byte definitions. For
-                                * instance target drivers use CHECK_CONDITION, defined to
-                                * 0x1, instead of the SCSI defined check condition value
-                                * of 0x2. Host drivers are supposed to return the status
-                                * byte as it is defined by SCSI.
+                                * Note: The 'status_byte()' macro used by
+                                * target drivers defined in scsi.h shifts the
+                                * status byte returned by host drivers right
+                                * by 1 bit.  This is why target drivers also
+                                * use right shifted status byte definitions.
+                                * For instance target drivers use
+                                * CHECK_CONDITION, defined to 0x1, instead of
+                                * the SCSI defined check condition value of
+                                * 0x2. Host drivers are supposed to return
+                                * the status byte as it is defined by SCSI.
                                 */
                                scp->result = DRIVER_BYTE(DRIVER_SENSE) |
                                    STATUS_BYTE(qdonep->d3.scsi_stat);
@@ -5497,13 +4178,7 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep)
                boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id);
        }
 
-       /*
-        * Because interrupts may be enabled by the 'struct scsi_cmnd' done
-        * function, add the command to the end of the board's done queue.
-        * The done function for the command will be called from
-        * advansys_interrupt().
-        */
-       asc_enqueue(&boardp->done, scp, ASC_BACK);
+       asc_scsi_done(scp);
 
        return;
 }
@@ -5559,21 +4234,8 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp)
        ASC_STATS(shost, callback);
        ASC_DBG1(1, "adv_isr_callback: shost 0x%lx\n", (ulong)shost);
 
-       /*
-        * If the request isn't found on the active queue, it may have been
-        * removed to handle a reset request. Display a message and return.
-        *
-        * Note: Because the structure may still be in use don't attempt
-        * to free the adv_req_t and adv_sgblk_t, if any, structures.
-        */
        boardp = ASC_BOARDP(shost);
-       ASC_ASSERT(adv_dvc_varp == &boardp->dvc_var.adv_dvc_var);
-       if (asc_rmqueue(&boardp->active, scp) == ASC_FALSE) {
-               ASC_PRINT2
-                   ("adv_isr_callback: board %d: scp 0x%lx not on active queue\n",
-                    boardp->id, (ulong)scp);
-               return;
-       }
+       BUG_ON(adv_dvc_varp != &boardp->dvc_var.adv_dvc_var);
 
        /*
         * 'done_status' contains the command's ending status.
@@ -5609,14 +4271,16 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp)
                                ASC_DBG_PRT_SENSE(2, scp->sense_buffer,
                                                  sizeof(scp->sense_buffer));
                                /*
-                                * Note: The 'status_byte()' macro used by target drivers
-                                * defined in scsi.h shifts the status byte returned by
-                                * host drivers right by 1 bit. This is why target drivers
-                                * also use right shifted status byte definitions. For
-                                * instance target drivers use CHECK_CONDITION, defined to
-                                * 0x1, instead of the SCSI defined check condition value
-                                * of 0x2. Host drivers are supposed to return the status
-                                * byte as it is defined by SCSI.
+                                * Note: The 'status_byte()' macro used by
+                                * target drivers defined in scsi.h shifts the
+                                * status byte returned by host drivers right
+                                * by 1 bit.  This is why target drivers also
+                                * use right shifted status byte definitions.
+                                * For instance target drivers use
+                                * CHECK_CONDITION, defined to 0x1, instead of
+                                * the SCSI defined check condition value of
+                                * 0x2. Host drivers are supposed to return
+                                * the status byte as it is defined by SCSI.
                                 */
                                scp->result = DRIVER_BYTE(DRIVER_SENSE) |
                                    STATUS_BYTE(scsiqp->scsi_status);
@@ -5659,13 +4323,7 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp)
                boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id);
        }
 
-       /*
-        * Because interrupts may be enabled by the 'struct scsi_cmnd' done
-        * function, add the command to the end of the board's done queue.
-        * The done function for the command will be called from
-        * advansys_interrupt().
-        */
-       asc_enqueue(&boardp->done, scp, ASC_BACK);
+       asc_scsi_done(scp);
 
        /*
         * Free all 'adv_sgblk_t' structures allocated for the request.
@@ -5728,297 +4386,6 @@ static void adv_async_callback(ADV_DVC_VAR *adv_dvc_varp, uchar code)
        }
 }
 
-/*
- * Add a 'REQP' to the end of specified queue. Set 'tidmask'
- * to indicate a command is queued for the device.
- *
- * 'flag' may be either ASC_FRONT or ASC_BACK.
- *
- * 'REQPNEXT(reqp)' returns reqp's next pointer.
- */
-static void asc_enqueue(asc_queue_t *ascq, REQP reqp, int flag)
-{
-       int tid;
-
-       ASC_DBG3(3, "asc_enqueue: ascq 0x%lx, reqp 0x%lx, flag %d\n",
-                (ulong)ascq, (ulong)reqp, flag);
-       ASC_ASSERT(reqp != NULL);
-       ASC_ASSERT(flag == ASC_FRONT || flag == ASC_BACK);
-       tid = REQPTID(reqp);
-       ASC_ASSERT(tid >= 0 && tid <= ADV_MAX_TID);
-       if (flag == ASC_FRONT) {
-               reqp->host_scribble = (unsigned char *)ascq->q_first[tid];
-               ascq->q_first[tid] = reqp;
-               /* If the queue was empty, set the last pointer. */
-               if (ascq->q_last[tid] == NULL) {
-                       ascq->q_last[tid] = reqp;
-               }
-       } else {                /* ASC_BACK */
-               if (ascq->q_last[tid] != NULL) {
-                       ascq->q_last[tid]->host_scribble =
-                           (unsigned char *)reqp;
-               }
-               ascq->q_last[tid] = reqp;
-               reqp->host_scribble = NULL;
-               /* If the queue was empty, set the first pointer. */
-               if (ascq->q_first[tid] == NULL) {
-                       ascq->q_first[tid] = reqp;
-               }
-       }
-       /* The queue has at least one entry, set its bit. */
-       ascq->q_tidmask |= ADV_TID_TO_TIDMASK(tid);
-#ifdef ADVANSYS_STATS
-       /* Maintain request queue statistics. */
-       ascq->q_tot_cnt[tid]++;
-       ascq->q_cur_cnt[tid]++;
-       if (ascq->q_cur_cnt[tid] > ascq->q_max_cnt[tid]) {
-               ascq->q_max_cnt[tid] = ascq->q_cur_cnt[tid];
-               ASC_DBG2(2, "asc_enqueue: new q_max_cnt[%d] %d\n",
-                        tid, ascq->q_max_cnt[tid]);
-       }
-       REQPTIME(reqp) = REQTIMESTAMP();
-#endif /* ADVANSYS_STATS */
-       ASC_DBG1(3, "asc_enqueue: reqp 0x%lx\n", (ulong)reqp);
-       return;
-}
-
-/*
- * Return first queued 'REQP' on the specified queue for
- * the specified target device. Clear the 'tidmask' bit for
- * the device if no more commands are left queued for it.
- *
- * 'REQPNEXT(reqp)' returns reqp's next pointer.
- */
-static REQP asc_dequeue(asc_queue_t *ascq, int tid)
-{
-       REQP reqp;
-
-       ASC_DBG2(3, "asc_dequeue: ascq 0x%lx, tid %d\n", (ulong)ascq, tid);
-       ASC_ASSERT(tid >= 0 && tid <= ADV_MAX_TID);
-       if ((reqp = ascq->q_first[tid]) != NULL) {
-               ASC_ASSERT(ascq->q_tidmask & ADV_TID_TO_TIDMASK(tid));
-               ascq->q_first[tid] = REQPNEXT(reqp);
-               /* If the queue is empty, clear its bit and the last pointer. */
-               if (ascq->q_first[tid] == NULL) {
-                       ascq->q_tidmask &= ~ADV_TID_TO_TIDMASK(tid);
-                       ASC_ASSERT(ascq->q_last[tid] == reqp);
-                       ascq->q_last[tid] = NULL;
-               }
-#ifdef ADVANSYS_STATS
-               /* Maintain request queue statistics. */
-               ascq->q_cur_cnt[tid]--;
-               ASC_ASSERT(ascq->q_cur_cnt[tid] >= 0);
-               REQTIMESTAT("asc_dequeue", ascq, reqp, tid);
-#endif /* ADVANSYS_STATS */
-       }
-       ASC_DBG1(3, "asc_dequeue: reqp 0x%lx\n", (ulong)reqp);
-       return reqp;
-}
-
-/*
- * Return a pointer to a singly linked list of all the requests queued
- * for 'tid' on the 'asc_queue_t' pointed to by 'ascq'.
- *
- * If 'lastpp' is not NULL, '*lastpp' will be set to point to the
- * the last request returned in the singly linked list.
- *
- * 'tid' should either be a valid target id or if it is ASC_TID_ALL,
- * then all queued requests are concatenated into one list and
- * returned.
- *
- * Note: If 'lastpp' is used to append a new list to the end of
- * an old list, only change the old list last pointer if '*lastpp'
- * (or the function return value) is not NULL, i.e. use a temporary
- * variable for 'lastpp' and check its value after the function return
- * before assigning it to the list last pointer.
- *
- * Unfortunately collecting queuing time statistics adds overhead to
- * the function that isn't inherent to the function's algorithm.
- */
-static REQP asc_dequeue_list(asc_queue_t *ascq, REQP *lastpp, int tid)
-{
-       REQP firstp, lastp;
-       int i;
-
-       ASC_DBG2(3, "asc_dequeue_list: ascq 0x%lx, tid %d\n", (ulong)ascq, tid);
-       ASC_ASSERT((tid == ASC_TID_ALL) || (tid >= 0 && tid <= ADV_MAX_TID));
-
-       /*
-        * If 'tid' is not ASC_TID_ALL, return requests only for
-        * the specified 'tid'. If 'tid' is ASC_TID_ALL, return all
-        * requests for all tids.
-        */
-       if (tid != ASC_TID_ALL) {
-               /* Return all requests for the specified 'tid'. */
-               if ((ascq->q_tidmask & ADV_TID_TO_TIDMASK(tid)) == 0) {
-                       /* List is empty; Set first and last return pointers to NULL. */
-                       firstp = lastp = NULL;
-               } else {
-                       firstp = ascq->q_first[tid];
-                       lastp = ascq->q_last[tid];
-                       ascq->q_first[tid] = ascq->q_last[tid] = NULL;
-                       ascq->q_tidmask &= ~ADV_TID_TO_TIDMASK(tid);
-#ifdef ADVANSYS_STATS
-                       {
-                               REQP reqp;
-                               ascq->q_cur_cnt[tid] = 0;
-                               for (reqp = firstp; reqp; reqp = REQPNEXT(reqp)) {
-                                       REQTIMESTAT("asc_dequeue_list", ascq,
-                                                   reqp, tid);
-                               }
-                       }
-#endif /* ADVANSYS_STATS */
-               }
-       } else {
-               /* Return all requests for all tids. */
-               firstp = lastp = NULL;
-               for (i = 0; i <= ADV_MAX_TID; i++) {
-                       if (ascq->q_tidmask & ADV_TID_TO_TIDMASK(i)) {
-                               if (firstp == NULL) {
-                                       firstp = ascq->q_first[i];
-                                       lastp = ascq->q_last[i];
-                               } else {
-                                       ASC_ASSERT(lastp != NULL);
-                                       lastp->host_scribble =
-                                           (unsigned char *)ascq->q_first[i];
-                                       lastp = ascq->q_last[i];
-                               }
-                               ascq->q_first[i] = ascq->q_last[i] = NULL;
-                               ascq->q_tidmask &= ~ADV_TID_TO_TIDMASK(i);
-#ifdef ADVANSYS_STATS
-                               ascq->q_cur_cnt[i] = 0;
-#endif /* ADVANSYS_STATS */
-                       }
-               }
-#ifdef ADVANSYS_STATS
-               {
-                       REQP reqp;
-                       for (reqp = firstp; reqp; reqp = REQPNEXT(reqp)) {
-                               REQTIMESTAT("asc_dequeue_list", ascq, reqp,
-                                           reqp->device->id);
-                       }
-               }
-#endif /* ADVANSYS_STATS */
-       }
-       if (lastpp) {
-               *lastpp = lastp;
-       }
-       ASC_DBG1(3, "asc_dequeue_list: firstp 0x%lx\n", (ulong)firstp);
-       return firstp;
-}
-
-/*
- * Remove the specified 'REQP' from the specified queue for
- * the specified target device. Clear the 'tidmask' bit for the
- * device if no more commands are left queued for it.
- *
- * 'REQPNEXT(reqp)' returns reqp's the next pointer.
- *
- * Return ASC_TRUE if the command was found and removed,
- * otherwise return ASC_FALSE.
- */
-static int asc_rmqueue(asc_queue_t *ascq, REQP reqp)
-{
-       REQP currp, prevp;
-       int tid;
-       int ret = ASC_FALSE;
-
-       ASC_DBG2(3, "asc_rmqueue: ascq 0x%lx, reqp 0x%lx\n",
-                (ulong)ascq, (ulong)reqp);
-       ASC_ASSERT(reqp != NULL);
-
-       tid = REQPTID(reqp);
-       ASC_ASSERT(tid >= 0 && tid <= ADV_MAX_TID);
-
-       /*
-        * Handle the common case of 'reqp' being the first
-        * entry on the queue.
-        */
-       if (reqp == ascq->q_first[tid]) {
-               ret = ASC_TRUE;
-               ascq->q_first[tid] = REQPNEXT(reqp);
-               /* If the queue is now empty, clear its bit and the last pointer. */
-               if (ascq->q_first[tid] == NULL) {
-                       ascq->q_tidmask &= ~ADV_TID_TO_TIDMASK(tid);
-                       ASC_ASSERT(ascq->q_last[tid] == reqp);
-                       ascq->q_last[tid] = NULL;
-               }
-       } else if (ascq->q_first[tid] != NULL) {
-               ASC_ASSERT(ascq->q_last[tid] != NULL);
-               /*
-                * Because the case of 'reqp' being the first entry has been
-                * handled above and it is known the queue is not empty, if
-                * 'reqp' is found on the queue it is guaranteed the queue will
-                * not become empty and that 'q_first[tid]' will not be changed.
-                *
-                * Set 'prevp' to the first entry, 'currp' to the second entry,
-                * and search for 'reqp'.
-                */
-               for (prevp = ascq->q_first[tid], currp = REQPNEXT(prevp);
-                    currp; prevp = currp, currp = REQPNEXT(currp)) {
-                       if (currp == reqp) {
-                               ret = ASC_TRUE;
-                               prevp->host_scribble =
-                                   (unsigned char *)REQPNEXT(currp);
-                               reqp->host_scribble = NULL;
-                               if (ascq->q_last[tid] == reqp) {
-                                       ascq->q_last[tid] = prevp;
-                               }
-                               break;
-                       }
-               }
-       }
-#ifdef ADVANSYS_STATS
-       /* Maintain request queue statistics. */
-       if (ret == ASC_TRUE) {
-               ascq->q_cur_cnt[tid]--;
-               REQTIMESTAT("asc_rmqueue", ascq, reqp, tid);
-       }
-       ASC_ASSERT(ascq->q_cur_cnt[tid] >= 0);
-#endif /* ADVANSYS_STATS */
-       ASC_DBG2(3, "asc_rmqueue: reqp 0x%lx, ret %d\n", (ulong)reqp, ret);
-       return ret;
-}
-
-/*
- * Execute as many queued requests as possible for the specified queue.
- *
- * Calls asc_execute_scsi_cmnd() to execute a REQP/struct scsi_cmnd.
- */
-static void asc_execute_queue(asc_queue_t *ascq)
-{
-       ADV_SCSI_BIT_ID_TYPE scan_tidmask;
-       REQP reqp;
-       int i;
-
-       ASC_DBG1(1, "asc_execute_queue: ascq 0x%lx\n", (ulong)ascq);
-       /*
-        * Execute queued commands for devices attached to
-        * the current board in round-robin fashion.
-        */
-       scan_tidmask = ascq->q_tidmask;
-       do {
-               for (i = 0; i <= ADV_MAX_TID; i++) {
-                       if (scan_tidmask & ADV_TID_TO_TIDMASK(i)) {
-                               if ((reqp = asc_dequeue(ascq, i)) == NULL) {
-                                       scan_tidmask &= ~ADV_TID_TO_TIDMASK(i);
-                               } else
-                                   if (asc_execute_scsi_cmnd
-                                       ((struct scsi_cmnd *)reqp)
-                                       == ASC_BUSY) {
-                                       scan_tidmask &= ~ADV_TID_TO_TIDMASK(i);
-                                       /*
-                                        * The request returned ASC_BUSY. Enqueue at the front of
-                                        * target's waiting list to maintain correct ordering.
-                                        */
-                                       asc_enqueue(ascq, reqp, ASC_FRONT);
-                               }
-                       }
-               }
-       } while (scan_tidmask);
-       return;
-}
-
 #ifdef CONFIG_PROC_FS
 /*
  * asc_prt_board_devices()
@@ -6700,10 +5067,7 @@ static int asc_prt_driver_conf(struct Scsi_Host *shost, char *cp, int cplen)
                           boardp->asc_n_io_port);
        ASC_PRT_NEXT();
 
-       /* 'shost->n_io_port' may be truncated because it is only one byte. */
-       len = asc_prt_line(cp, leftlen,
-                          " io_port 0x%x, n_io_port 0x%x\n",
-                          shost->io_port, shost->n_io_port);
+       len = asc_prt_line(cp, leftlen, " io_port 0x%x\n", shost->io_port);
        ASC_PRT_NEXT();
 
        if (ASC_NARROW_BOARD(boardp)) {
@@ -7203,7 +5567,7 @@ static int asc_prt_line(char *buf, int buflen, char *fmt, ...)
 
        va_start(args, fmt);
        ret = vsprintf(s, fmt, args);
-       ASC_ASSERT(ret < ASC_PRTLINE_SIZE);
+       BUG_ON(ret >= ASC_PRTLINE_SIZE);
        if (buf == NULL) {
                (void)printk(s);
                ret = 0;
@@ -7216,40 +5580,6 @@ static int asc_prt_line(char *buf, int buflen, char *fmt, ...)
 }
 #endif /* CONFIG_PROC_FS */
 
-/*
- * --- Functions Required by the Asc Library
- */
-
-/*
- * Delay for 'n' milliseconds. Don't use the 'jiffies'
- * global variable which is incremented once every 5 ms
- * from a timer interrupt, because this function may be
- * called when interrupts are disabled.
- */
-static void DvcSleepMilliSecond(ADV_DCNT n)
-{
-       ASC_DBG1(4, "DvcSleepMilliSecond: %lu\n", (ulong)n);
-       mdelay(n);
-}
-
-/*
- * Currently and inline noop but leave as a placeholder.
- * Leave DvcEnterCritical() as a noop placeholder.
- */
-static inline ulong DvcEnterCritical(void)
-{
-       return 0;
-}
-
-/*
- * Critical sections are all protected by the board spinlock.
- * Leave DvcLeaveCritical() as a noop placeholder.
- */
-static inline void DvcLeaveCritical(ulong flags)
-{
-       return;
-}
-
 /*
  * void
  * DvcPutScsiQ(PortAddr iop_base, ushort s_addr, uchar *outbuf, int words)
@@ -7342,10 +5672,6 @@ AscGetChipBiosAddress(PortAddr iop_base, unsigned short bus_type)
        return bios_addr;
 }
 
-/*
- * --- Functions Required by the Adv Library
- */
-
 /*
  * DvcGetPhyAddr()
  *
@@ -7373,10 +5699,6 @@ DvcGetPhyAddr(ADV_DVC_VAR *asc_dvc, ADV_SCSI_REQ_Q *scsiq,
        return paddr;
 }
 
-/*
- * --- Tracing and Debugging Functions
- */
-
 #ifdef ADVANSYS_STATS
 #ifdef CONFIG_PROC_FS
 /*
@@ -7481,103 +5803,6 @@ static int asc_prt_board_stats(struct Scsi_Host *shost, char *cp, int cplen)
 
        return totlen;
 }
-
-/*
- * asc_prt_target_stats()
- *
- * Note: no single line should be greater than ASC_PRTLINE_SIZE,
- * cf. asc_prt_line().
- *
- * This is separated from asc_prt_board_stats because a full set
- * of targets will overflow ASC_PRTBUF_SIZE.
- *
- * Return the number of characters copied into 'cp'. No more than
- * 'cplen' characters will be copied to 'cp'.
- */
-static int
-asc_prt_target_stats(struct Scsi_Host *shost, int tgt_id, char *cp, int cplen)
-{
-       int leftlen;
-       int totlen;
-       int len;
-       struct asc_stats *s;
-       ushort chip_scsi_id;
-       asc_board_t *boardp;
-       asc_queue_t *active;
-       asc_queue_t *waiting;
-
-       leftlen = cplen;
-       totlen = len = 0;
-
-       boardp = ASC_BOARDP(shost);
-       s = &boardp->asc_stats;
-
-       active = &ASC_BOARDP(shost)->active;
-       waiting = &ASC_BOARDP(shost)->waiting;
-
-       if (ASC_NARROW_BOARD(boardp)) {
-               chip_scsi_id = boardp->dvc_cfg.asc_dvc_cfg.chip_scsi_id;
-       } else {
-               chip_scsi_id = boardp->dvc_var.adv_dvc_var.chip_scsi_id;
-       }
-
-       if ((chip_scsi_id == tgt_id) ||
-           ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(tgt_id)) == 0)) {
-               return 0;
-       }
-
-       do {
-               if (active->q_tot_cnt[tgt_id] > 0
-                   || waiting->q_tot_cnt[tgt_id] > 0) {
-                       len = asc_prt_line(cp, leftlen, " target %d\n", tgt_id);
-                       ASC_PRT_NEXT();
-
-                       len = asc_prt_line(cp, leftlen,
-                                          "   active: cnt [cur %d, max %d, tot %u], time [min %d, max %d, avg %lu.%01lu]\n",
-                                          active->q_cur_cnt[tgt_id],
-                                          active->q_max_cnt[tgt_id],
-                                          active->q_tot_cnt[tgt_id],
-                                          active->q_min_tim[tgt_id],
-                                          active->q_max_tim[tgt_id],
-                                          (active->q_tot_cnt[tgt_id] ==
-                                           0) ? 0 : (active->
-                                                     q_tot_tim[tgt_id] /
-                                                     active->
-                                                     q_tot_cnt[tgt_id]),
-                                          (active->q_tot_cnt[tgt_id] ==
-                                           0) ? 0 : ASC_TENTHS(active->
-                                                               q_tot_tim
-                                                               [tgt_id],
-                                                               active->
-                                                               q_tot_cnt
-                                                               [tgt_id]));
-                       ASC_PRT_NEXT();
-
-                       len = asc_prt_line(cp, leftlen,
-                                          "   waiting: cnt [cur %d, max %d, tot %u], time [min %u, max %u, avg %lu.%01lu]\n",
-                                          waiting->q_cur_cnt[tgt_id],
-                                          waiting->q_max_cnt[tgt_id],
-                                          waiting->q_tot_cnt[tgt_id],
-                                          waiting->q_min_tim[tgt_id],
-                                          waiting->q_max_tim[tgt_id],
-                                          (waiting->q_tot_cnt[tgt_id] ==
-                                           0) ? 0 : (waiting->
-                                                     q_tot_tim[tgt_id] /
-                                                     waiting->
-                                                     q_tot_cnt[tgt_id]),
-                                          (waiting->q_tot_cnt[tgt_id] ==
-                                           0) ? 0 : ASC_TENTHS(waiting->
-                                                               q_tot_tim
-                                                               [tgt_id],
-                                                               waiting->
-                                                               q_tot_cnt
-                                                               [tgt_id]));
-                       ASC_PRT_NEXT();
-               }
-       } while (0);
-
-       return totlen;
-}
 #endif /* CONFIG_PROC_FS */
 #endif /* ADVANSYS_STATS */
 
@@ -7595,8 +5820,8 @@ static void asc_prt_scsi_host(struct Scsi_Host *s)
        printk(" host_busy %u, host_no %d, last_reset %d,\n",
               s->host_busy, s->host_no, (unsigned)s->last_reset);
 
-       printk(" base 0x%lx, io_port 0x%lx, n_io_port %u, irq 0x%x,\n",
-              (ulong)s->base, (ulong)s->io_port, s->n_io_port, s->irq);
+       printk(" base 0x%lx, io_port 0x%lx, irq 0x%x,\n",
+              (ulong)s->base, (ulong)s->io_port, s->irq);
 
        printk(" dma_channel %d, this_id %d, can_queue %d,\n",
               s->dma_channel, s->this_id, s->can_queue);
@@ -7652,9 +5877,8 @@ static void asc_prt_asc_dvc_var(ASC_DVC_VAR *h)
        printk(" iop_base 0x%x, err_code 0x%x, dvc_cntl 0x%x, bug_fix_cntl "
               "%d,\n", h->iop_base, h->err_code, h->dvc_cntl, h->bug_fix_cntl);
 
-       printk(" bus_type %d, isr_callback 0x%p, exe_callback 0x%p, "
-              "init_sdtr 0x%x,\n", h->bus_type, h->isr_callback,
-              h->exe_callback, (unsigned)h->init_sdtr);
+       printk(" bus_type %d, init_sdtr 0x%x,\n", h->bus_type,
+               (unsigned)h->init_sdtr);
 
        printk(" sdtr_done 0x%x, use_tagged_qng 0x%x, unit_not_ready 0x%x, "
               "chip_no 0x%x,\n", (unsigned)h->sdtr_done,
@@ -7809,8 +6033,7 @@ static void asc_prt_adv_dvc_cfg(ADV_DVC_CFG *h)
        printk("  mcode_version 0x%x, pci_device_id 0x%x, lib_version %u\n",
               h->mcode_version, to_pci_dev(h->dev)->device, h->lib_version);
 
-       printk("  control_flag 0x%x, pci_slot_info 0x%x\n",
-              h->control_flag, h->pci_slot_info);
+       printk("  control_flag 0x%x\n", h->control_flag);
 }
 
 /*
@@ -7881,10 +6104,9 @@ static void asc_prt_adv_sgblock(int sgblockno, ADV_SG_BLOCK *b)
               (ulong)b, sgblockno);
        printk("  sg_cnt %u, sg_ptr 0x%lx\n",
               b->sg_cnt, (ulong)le32_to_cpu(b->sg_ptr));
-       ASC_ASSERT(b->sg_cnt <= NO_OF_SG_PER_BLOCK);
-       if (b->sg_ptr != 0) {
-               ASC_ASSERT(b->sg_cnt == NO_OF_SG_PER_BLOCK);
-       }
+       BUG_ON(b->sg_cnt > NO_OF_SG_PER_BLOCK);
+       if (b->sg_ptr != 0)
+               BUG_ON(b->sg_cnt != NO_OF_SG_PER_BLOCK);
        for (i = 0; i < b->sg_cnt; i++) {
                printk("  [%u]: sg_addr 0x%lx, sg_count 0x%lx\n",
                       i, (ulong)b->sg_list[i].sg_addr,
@@ -7950,10 +6172,6 @@ static void asc_prt_hex(char *f, uchar *s, int l)
 }
 #endif /* ADVANSYS_DEBUG */
 
-/*
- * --- Asc Library Functions
- */
-
 static ushort __devinit AscGetEisaChipCfg(PortAddr iop_base)
 {
        PortAddr eisa_cfg_iop;
@@ -8001,34 +6219,6 @@ AscGetChipVersion(PortAddr iop_base, unsigned short bus_type)
        return AscGetChipVerNo(iop_base);
 }
 
-static ushort __devinit AscGetChipBusType(PortAddr iop_base)
-{
-       ushort chip_ver;
-
-       chip_ver = AscGetChipVerNo(iop_base);
-       if ((chip_ver >= ASC_CHIP_MIN_VER_VL)
-           && (chip_ver <= ASC_CHIP_MAX_VER_VL)
-           ) {
-               if (((iop_base & 0x0C30) == 0x0C30)
-                   || ((iop_base & 0x0C50) == 0x0C50)
-                   ) {
-                       return (ASC_IS_EISA);
-               }
-               return (ASC_IS_VL);
-       }
-       if ((chip_ver >= ASC_CHIP_MIN_VER_ISA) &&
-           (chip_ver <= ASC_CHIP_MAX_VER_ISA)) {
-               if (chip_ver >= ASC_CHIP_MIN_VER_ISA_PNP) {
-                       return (ASC_IS_ISAPNP);
-               }
-               return (ASC_IS_ISA);
-       } else if ((chip_ver >= ASC_CHIP_MIN_VER_PCI) &&
-                  (chip_ver <= ASC_CHIP_MAX_VER_PCI)) {
-               return (ASC_IS_PCI);
-       }
-       return (0);
-}
-
 static ASC_DCNT
 AscLoadMicroCode(PortAddr iop_base,
                 ushort s_addr, uchar *mcode_buf, ushort mcode_size)
@@ -8182,7 +6372,7 @@ static int AscIsrChipHalted(ASC_DVC_VAR *asc_dvc)
        uchar scsi_status;
        asc_board_t *boardp;
 
-       ASC_ASSERT(asc_dvc->drv_ptr != NULL);
+       BUG_ON(!asc_dvc->drv_ptr);
        boardp = asc_dvc->drv_ptr;
 
        iop_base = asc_dvc->iop_base;
@@ -8193,8 +6383,7 @@ static int AscIsrChipHalted(ASC_DVC_VAR *asc_dvc)
        target_ix = AscReadLramByte(iop_base,
                                    (ushort)(halt_q_addr +
                                             (ushort)ASC_SCSIQ_B_TARGET_IX));
-       q_cntl =
-           AscReadLramByte(iop_base,
+       q_cntl = AscReadLramByte(iop_base,
                            (ushort)(halt_q_addr + (ushort)ASC_SCSIQ_B_CNTL));
        tid_no = ASC_TIX_TO_TID(target_ix);
        target_id = (uchar)ASC_TID_TO_TARGET_ID(tid_no);
@@ -8218,7 +6407,6 @@ static int AscIsrChipHalted(ASC_DVC_VAR *asc_dvc)
                AscWriteLramWord(iop_base, ASCV_HALTCODE_W, 0);
                return (0);
        } else if (int_halt_code == ASC_HALT_EXTMSG_IN) {
-
                AscMemWordCopyPtrFromLram(iop_base,
                                          ASCV_MSGIN_BEG,
                                          (uchar *)&ext_msg,
@@ -8449,9 +6637,9 @@ static int AscIsrChipHalted(ASC_DVC_VAR *asc_dvc)
                                                         cur_dvc_qng);
 
                                        /*
-                                        * Set the device queue depth to the number of
-                                        * active requests when the QUEUE FULL condition
-                                        * was encountered.
+                                        * Set the device queue depth to the
+                                        * number of active requests when the
+                                        * QUEUE FULL condition was encountered.
                                         */
                                        boardp->queue_full |= target_id;
                                        boardp->queue_full_cnt[tid_no] =
@@ -8477,9 +6665,8 @@ static int AscIsrChipHalted(ASC_DVC_VAR *asc_dvc)
                int i;
 
                q_no = AscReadLramByte(iop_base, (ushort)ASCV_REQ_SG_LIST_QP);
-               if (q_no == ASC_QLINK_END) {
-                       return (0);
-               }
+               if (q_no == ASC_QLINK_END)
+                       return 0;
 
                q_addr = ASC_QNO_TO_QADDR(q_no);
 
@@ -8531,8 +6718,8 @@ static int AscIsrChipHalted(ASC_DVC_VAR *asc_dvc)
                        sg_entry_cnt = ASC_MAX_SG_LIST - 1;
 
                        /*
-                        * Keep track of remaining number of SG elements that will
-                        * need to be handled on the next interrupt.
+                        * Keep track of remaining number of SG elements that
+                        * will need to be handled on the next interrupt.
                         */
                        scsiq->remain_sg_entry_cnt -= (ASC_MAX_SG_LIST - 1);
                } else {
@@ -8687,10 +6874,8 @@ static int AscIsrQDone(ASC_DVC_VAR *asc_dvc)
        ASC_QDONE_INFO scsiq_buf;
        ASC_QDONE_INFO *scsiq;
        int false_overrun;
-       ASC_ISR_CALLBACK asc_isr_callback;
 
        iop_base = asc_dvc->iop_base;
-       asc_isr_callback = asc_dvc->isr_callback;
        n_q_used = 1;
        scsiq = (ASC_QDONE_INFO *)&scsiq_buf;
        done_q_tail = (uchar)AscGetVarDoneQTail(iop_base);
@@ -8793,7 +6978,7 @@ static int AscIsrQDone(ASC_DVC_VAR *asc_dvc)
                                        AscSetChipControl(iop_base,
                                                          (uchar)(CC_SCSI_RESET
                                                                  | CC_HALT));
-                                       DvcDelayNanoSecond(asc_dvc, 60000);
+                                       udelay(60);
                                        AscSetChipControl(iop_base, CC_HALT);
                                        AscSetChipStatus(iop_base,
                                                         CIW_CLR_SCSI_RESET_INT);
@@ -8802,7 +6987,7 @@ static int AscIsrQDone(ASC_DVC_VAR *asc_dvc)
                                }
                        }
                        if ((scsiq->cntl & QC_NO_CALLBACK) == 0) {
-                               (*asc_isr_callback) (asc_dvc, scsiq);
+                               asc_isr_callback(asc_dvc, scsiq);
                        } else {
                                if ((AscReadLramByte(iop_base,
                                                     (ushort)(q_addr + (ushort)
@@ -8820,7 +7005,7 @@ static int AscIsrQDone(ASC_DVC_VAR *asc_dvc)
                        AscSetLibErrorCode(asc_dvc, ASCQ_ERR_Q_STATUS);
  FATAL_ERR_QDONE:
                        if ((scsiq->cntl & QC_NO_CALLBACK) == 0) {
-                               (*asc_isr_callback) (asc_dvc, scsiq);
+                               asc_isr_callback(asc_dvc, scsiq);
                        }
                        return (0x80);
                }
@@ -8846,9 +7031,7 @@ static int AscISR(ASC_DVC_VAR *asc_dvc)
                return int_pending;
        }
 
-       if (((asc_dvc->init_state & ASC_INIT_STATE_END_LOAD_MC) == 0)
-           || (asc_dvc->isr_callback == 0)
-           ) {
+       if ((asc_dvc->init_state & ASC_INIT_STATE_END_LOAD_MC) == 0) {
                return (ERR);
        }
        if (asc_dvc->in_critical_cnt != 0) {
@@ -8872,7 +7055,7 @@ static int AscISR(ASC_DVC_VAR *asc_dvc)
                        saved_ctrl_reg &= (uchar)(~CC_HALT);
                        while ((AscGetChipStatus(iop_base) &
                                CSW_SCSI_RESET_ACTIVE) && (i-- > 0)) {
-                               DvcSleepMilliSecond(100);
+                               mdelay(100);
                        }
                        AscSetChipControl(iop_base, (CC_CHIP_RESET | CC_HALT));
                        AscSetChipControl(iop_base, CC_HALT);
@@ -8926,293 +7109,197 @@ static int AscISR(ASC_DVC_VAR *asc_dvc)
 /* Microcode buffer is kept after initialization for error recovery. */
 static uchar _asc_mcode_buf[] = {
        0x01, 0x03, 0x01, 0x19, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00,
-       0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0xC3, 0x12, 0x0D, 0x05, 0x01, 0x00, 0x00, 0x00,
-       0x00, 0xFF, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x12, 0x0D, 0x05,
+       0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+       0xFF, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xFF,
-       0x00, 0x00, 0x00, 0x00,
-       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x88,
-       0x00, 0x00, 0x00, 0x00,
-       0x80, 0x73, 0x48, 0x04, 0x36, 0x00, 0x00, 0xA2, 0xC2, 0x00, 0x80, 0x73,
-       0x03, 0x23, 0x36, 0x40,
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0xE4, 0x88, 0x00, 0x00, 0x00, 0x00, 0x80, 0x73, 0x48, 0x04,
+       0x36, 0x00, 0x00, 0xA2, 0xC2, 0x00, 0x80, 0x73, 0x03, 0x23, 0x36, 0x40,
        0xB6, 0x00, 0x36, 0x00, 0x05, 0xD6, 0x0C, 0xD2, 0x12, 0xDA, 0x00, 0xA2,
-       0xC2, 0x00, 0x92, 0x80,
-       0x1E, 0x98, 0x50, 0x00, 0xF5, 0x00, 0x48, 0x98, 0xDF, 0x23, 0x36, 0x60,
-       0xB6, 0x00, 0x92, 0x80,
-       0x4F, 0x00, 0xF5, 0x00, 0x48, 0x98, 0xEF, 0x23, 0x36, 0x60, 0xB6, 0x00,
-       0x92, 0x80, 0x80, 0x62,
+       0xC2, 0x00, 0x92, 0x80, 0x1E, 0x98, 0x50, 0x00, 0xF5, 0x00, 0x48, 0x98,
+       0xDF, 0x23, 0x36, 0x60, 0xB6, 0x00, 0x92, 0x80, 0x4F, 0x00, 0xF5, 0x00,
+       0x48, 0x98, 0xEF, 0x23, 0x36, 0x60, 0xB6, 0x00, 0x92, 0x80, 0x80, 0x62,
        0x92, 0x80, 0x00, 0x46, 0x15, 0xEE, 0x13, 0xEA, 0x02, 0x01, 0x09, 0xD8,
-       0xCD, 0x04, 0x4D, 0x00,
-       0x00, 0xA3, 0xD6, 0x00, 0xA6, 0x97, 0x7F, 0x23, 0x04, 0x61, 0x84, 0x01,
-       0xE6, 0x84, 0xD2, 0xC1,
-       0x80, 0x73, 0xCD, 0x04, 0x4D, 0x00, 0x00, 0xA3, 0xDA, 0x01, 0xA6, 0x97,
-       0xC6, 0x81, 0xC2, 0x88,
+       0xCD, 0x04, 0x4D, 0x00, 0x00, 0xA3, 0xD6, 0x00, 0xA6, 0x97, 0x7F, 0x23,
+       0x04, 0x61, 0x84, 0x01, 0xE6, 0x84, 0xD2, 0xC1, 0x80, 0x73, 0xCD, 0x04,
+       0x4D, 0x00, 0x00, 0xA3, 0xDA, 0x01, 0xA6, 0x97, 0xC6, 0x81, 0xC2, 0x88,
        0x80, 0x73, 0x80, 0x77, 0x00, 0x01, 0x01, 0xA1, 0xFE, 0x00, 0x4F, 0x00,
-       0x84, 0x97, 0x07, 0xA6,
-       0x08, 0x01, 0x00, 0x33, 0x03, 0x00, 0xC2, 0x88, 0x03, 0x03, 0x01, 0xDE,
-       0xC2, 0x88, 0xCE, 0x00,
-       0x69, 0x60, 0xCE, 0x00, 0x02, 0x03, 0x4A, 0x60, 0x00, 0xA2, 0x78, 0x01,
-       0x80, 0x63, 0x07, 0xA6,
+       0x84, 0x97, 0x07, 0xA6, 0x08, 0x01, 0x00, 0x33, 0x03, 0x00, 0xC2, 0x88,
+       0x03, 0x03, 0x01, 0xDE, 0xC2, 0x88, 0xCE, 0x00, 0x69, 0x60, 0xCE, 0x00,
+       0x02, 0x03, 0x4A, 0x60, 0x00, 0xA2, 0x78, 0x01, 0x80, 0x63, 0x07, 0xA6,
        0x24, 0x01, 0x78, 0x81, 0x03, 0x03, 0x80, 0x63, 0xE2, 0x00, 0x07, 0xA6,
-       0x34, 0x01, 0x00, 0x33,
-       0x04, 0x00, 0xC2, 0x88, 0x03, 0x07, 0x02, 0x01, 0x04, 0xCA, 0x0D, 0x23,
-       0x68, 0x98, 0x4D, 0x04,
-       0x04, 0x85, 0x05, 0xD8, 0x0D, 0x23, 0x68, 0x98, 0xCD, 0x04, 0x15, 0x23,
-       0xF8, 0x88, 0xFB, 0x23,
+       0x34, 0x01, 0x00, 0x33, 0x04, 0x00, 0xC2, 0x88, 0x03, 0x07, 0x02, 0x01,
+       0x04, 0xCA, 0x0D, 0x23, 0x68, 0x98, 0x4D, 0x04, 0x04, 0x85, 0x05, 0xD8,
+       0x0D, 0x23, 0x68, 0x98, 0xCD, 0x04, 0x15, 0x23, 0xF8, 0x88, 0xFB, 0x23,
        0x02, 0x61, 0x82, 0x01, 0x80, 0x63, 0x02, 0x03, 0x06, 0xA3, 0x62, 0x01,
-       0x00, 0x33, 0x0A, 0x00,
-       0xC2, 0x88, 0x4E, 0x00, 0x07, 0xA3, 0x6E, 0x01, 0x00, 0x33, 0x0B, 0x00,
-       0xC2, 0x88, 0xCD, 0x04,
-       0x36, 0x2D, 0x00, 0x33, 0x1A, 0x00, 0xC2, 0x88, 0x50, 0x04, 0x88, 0x81,
-       0x06, 0xAB, 0x82, 0x01,
+       0x00, 0x33, 0x0A, 0x00, 0xC2, 0x88, 0x4E, 0x00, 0x07, 0xA3, 0x6E, 0x01,
+       0x00, 0x33, 0x0B, 0x00, 0xC2, 0x88, 0xCD, 0x04, 0x36, 0x2D, 0x00, 0x33,
+       0x1A, 0x00, 0xC2, 0x88, 0x50, 0x04, 0x88, 0x81, 0x06, 0xAB, 0x82, 0x01,
        0x88, 0x81, 0x4E, 0x00, 0x07, 0xA3, 0x92, 0x01, 0x50, 0x00, 0x00, 0xA3,
-       0x3C, 0x01, 0x00, 0x05,
-       0x7C, 0x81, 0x46, 0x97, 0x02, 0x01, 0x05, 0xC6, 0x04, 0x23, 0xA0, 0x01,
-       0x15, 0x23, 0xA1, 0x01,
-       0xBE, 0x81, 0xFD, 0x23, 0x02, 0x61, 0x82, 0x01, 0x0A, 0xDA, 0x4A, 0x00,
-       0x06, 0x61, 0x00, 0xA0,
+       0x3C, 0x01, 0x00, 0x05, 0x7C, 0x81, 0x46, 0x97, 0x02, 0x01, 0x05, 0xC6,
+       0x04, 0x23, 0xA0, 0x01, 0x15, 0x23, 0xA1, 0x01, 0xBE, 0x81, 0xFD, 0x23,
+       0x02, 0x61, 0x82, 0x01, 0x0A, 0xDA, 0x4A, 0x00, 0x06, 0x61, 0x00, 0xA0,
        0xB4, 0x01, 0x80, 0x63, 0xCD, 0x04, 0x36, 0x2D, 0x00, 0x33, 0x1B, 0x00,
-       0xC2, 0x88, 0x06, 0x23,
-       0x68, 0x98, 0xCD, 0x04, 0xE6, 0x84, 0x06, 0x01, 0x00, 0xA2, 0xD4, 0x01,
-       0x57, 0x60, 0x00, 0xA0,
-       0xDA, 0x01, 0xE6, 0x84, 0x80, 0x23, 0xA0, 0x01, 0xE6, 0x84, 0x80, 0x73,
-       0x4B, 0x00, 0x06, 0x61,
+       0xC2, 0x88, 0x06, 0x23, 0x68, 0x98, 0xCD, 0x04, 0xE6, 0x84, 0x06, 0x01,
+       0x00, 0xA2, 0xD4, 0x01, 0x57, 0x60, 0x00, 0xA0, 0xDA, 0x01, 0xE6, 0x84,
+       0x80, 0x23, 0xA0, 0x01, 0xE6, 0x84, 0x80, 0x73, 0x4B, 0x00, 0x06, 0x61,
        0x00, 0xA2, 0x00, 0x02, 0x04, 0x01, 0x0C, 0xDE, 0x02, 0x01, 0x03, 0xCC,
-       0x4F, 0x00, 0x84, 0x97,
-       0xFC, 0x81, 0x08, 0x23, 0x02, 0x41, 0x82, 0x01, 0x4F, 0x00, 0x62, 0x97,
-       0x48, 0x04, 0x84, 0x80,
-       0xF0, 0x97, 0x00, 0x46, 0x56, 0x00, 0x03, 0xC0, 0x01, 0x23, 0xE8, 0x00,
-       0x81, 0x73, 0x06, 0x29,
+       0x4F, 0x00, 0x84, 0x97, 0xFC, 0x81, 0x08, 0x23, 0x02, 0x41, 0x82, 0x01,
+       0x4F, 0x00, 0x62, 0x97, 0x48, 0x04, 0x84, 0x80, 0xF0, 0x97, 0x00, 0x46,
+       0x56, 0x00, 0x03, 0xC0, 0x01, 0x23, 0xE8, 0x00, 0x81, 0x73, 0x06, 0x29,
        0x03, 0x42, 0x06, 0xE2, 0x03, 0xEE, 0x6B, 0xEB, 0x11, 0x23, 0xF8, 0x88,
-       0x04, 0x98, 0xF0, 0x80,
-       0x80, 0x73, 0x80, 0x77, 0x07, 0xA4, 0x2A, 0x02, 0x7C, 0x95, 0x06, 0xA6,
-       0x34, 0x02, 0x03, 0xA6,
-       0x4C, 0x04, 0x46, 0x82, 0x04, 0x01, 0x03, 0xD8, 0xB4, 0x98, 0x6A, 0x96,
-       0x46, 0x82, 0xFE, 0x95,
+       0x04, 0x98, 0xF0, 0x80, 0x80, 0x73, 0x80, 0x77, 0x07, 0xA4, 0x2A, 0x02,
+       0x7C, 0x95, 0x06, 0xA6, 0x34, 0x02, 0x03, 0xA6, 0x4C, 0x04, 0x46, 0x82,
+       0x04, 0x01, 0x03, 0xD8, 0xB4, 0x98, 0x6A, 0x96, 0x46, 0x82, 0xFE, 0x95,
        0x80, 0x67, 0x83, 0x03, 0x80, 0x63, 0xB6, 0x2D, 0x02, 0xA6, 0x6C, 0x02,
-       0x07, 0xA6, 0x5A, 0x02,
-       0x06, 0xA6, 0x5E, 0x02, 0x03, 0xA6, 0x62, 0x02, 0xC2, 0x88, 0x7C, 0x95,
-       0x48, 0x82, 0x60, 0x96,
-       0x48, 0x82, 0x04, 0x23, 0xA0, 0x01, 0x14, 0x23, 0xA1, 0x01, 0x3C, 0x84,
-       0x04, 0x01, 0x0C, 0xDC,
+       0x07, 0xA6, 0x5A, 0x02, 0x06, 0xA6, 0x5E, 0x02, 0x03, 0xA6, 0x62, 0x02,
+       0xC2, 0x88, 0x7C, 0x95, 0x48, 0x82, 0x60, 0x96, 0x48, 0x82, 0x04, 0x23,
+       0xA0, 0x01, 0x14, 0x23, 0xA1, 0x01, 0x3C, 0x84, 0x04, 0x01, 0x0C, 0xDC,
        0xE0, 0x23, 0x25, 0x61, 0xEF, 0x00, 0x14, 0x01, 0x4F, 0x04, 0xA8, 0x01,
-       0x6F, 0x00, 0xA5, 0x01,
-       0x03, 0x23, 0xA4, 0x01, 0x06, 0x23, 0x9C, 0x01, 0x24, 0x2B, 0x1C, 0x01,
-       0x02, 0xA6, 0xAA, 0x02,
-       0x07, 0xA6, 0x5A, 0x02, 0x06, 0xA6, 0x5E, 0x02, 0x03, 0xA6, 0x20, 0x04,
-       0x01, 0xA6, 0xB4, 0x02,
+       0x6F, 0x00, 0xA5, 0x01, 0x03, 0x23, 0xA4, 0x01, 0x06, 0x23, 0x9C, 0x01,
+       0x24, 0x2B, 0x1C, 0x01, 0x02, 0xA6, 0xAA, 0x02, 0x07, 0xA6, 0x5A, 0x02,
+       0x06, 0xA6, 0x5E, 0x02, 0x03, 0xA6, 0x20, 0x04, 0x01, 0xA6, 0xB4, 0x02,
        0x00, 0xA6, 0xB4, 0x02, 0x00, 0x33, 0x12, 0x00, 0xC2, 0x88, 0x00, 0x0E,
-       0x80, 0x63, 0x00, 0x43,
-       0x00, 0xA0, 0x8C, 0x02, 0x4D, 0x04, 0x04, 0x01, 0x0B, 0xDC, 0xE7, 0x23,
-       0x04, 0x61, 0x84, 0x01,
-       0x10, 0x31, 0x12, 0x35, 0x14, 0x01, 0xEC, 0x00, 0x6C, 0x38, 0x00, 0x3F,
-       0x00, 0x00, 0xEA, 0x82,
+       0x80, 0x63, 0x00, 0x43, 0x00, 0xA0, 0x8C, 0x02, 0x4D, 0x04, 0x04, 0x01,
+       0x0B, 0xDC, 0xE7, 0x23, 0x04, 0x61, 0x84, 0x01, 0x10, 0x31, 0x12, 0x35,
+       0x14, 0x01, 0xEC, 0x00, 0x6C, 0x38, 0x00, 0x3F, 0x00, 0x00, 0xEA, 0x82,
        0x18, 0x23, 0x04, 0x61, 0x18, 0xA0, 0xE2, 0x02, 0x04, 0x01, 0xA2, 0xC8,
-       0x00, 0x33, 0x1F, 0x00,
-       0xC2, 0x88, 0x08, 0x31, 0x0A, 0x35, 0x0C, 0x39, 0x0E, 0x3D, 0x7E, 0x98,
-       0xB6, 0x2D, 0x01, 0xA6,
-       0x14, 0x03, 0x00, 0xA6, 0x14, 0x03, 0x07, 0xA6, 0x0C, 0x03, 0x06, 0xA6,
-       0x10, 0x03, 0x03, 0xA6,
+       0x00, 0x33, 0x1F, 0x00, 0xC2, 0x88, 0x08, 0x31, 0x0A, 0x35, 0x0C, 0x39,
+       0x0E, 0x3D, 0x7E, 0x98, 0xB6, 0x2D, 0x01, 0xA6, 0x14, 0x03, 0x00, 0xA6,
+       0x14, 0x03, 0x07, 0xA6, 0x0C, 0x03, 0x06, 0xA6, 0x10, 0x03, 0x03, 0xA6,
        0x20, 0x04, 0x02, 0xA6, 0x6C, 0x02, 0x00, 0x33, 0x33, 0x00, 0xC2, 0x88,
-       0x7C, 0x95, 0xEE, 0x82,
-       0x60, 0x96, 0xEE, 0x82, 0x82, 0x98, 0x80, 0x42, 0x7E, 0x98, 0x64, 0xE4,
-       0x04, 0x01, 0x2D, 0xC8,
-       0x31, 0x05, 0x07, 0x01, 0x00, 0xA2, 0x54, 0x03, 0x00, 0x43, 0x87, 0x01,
-       0x05, 0x05, 0x86, 0x98,
+       0x7C, 0x95, 0xEE, 0x82, 0x60, 0x96, 0xEE, 0x82, 0x82, 0x98, 0x80, 0x42,
+       0x7E, 0x98, 0x64, 0xE4, 0x04, 0x01, 0x2D, 0xC8, 0x31, 0x05, 0x07, 0x01,
+       0x00, 0xA2, 0x54, 0x03, 0x00, 0x43, 0x87, 0x01, 0x05, 0x05, 0x86, 0x98,
        0x7E, 0x98, 0x00, 0xA6, 0x16, 0x03, 0x07, 0xA6, 0x4C, 0x03, 0x03, 0xA6,
-       0x3C, 0x04, 0x06, 0xA6,
-       0x50, 0x03, 0x01, 0xA6, 0x16, 0x03, 0x00, 0x33, 0x25, 0x00, 0xC2, 0x88,
-       0x7C, 0x95, 0x32, 0x83,
-       0x60, 0x96, 0x32, 0x83, 0x04, 0x01, 0x10, 0xCE, 0x07, 0xC8, 0x05, 0x05,
-       0xEB, 0x04, 0x00, 0x33,
+       0x3C, 0x04, 0x06, 0xA6, 0x50, 0x03, 0x01, 0xA6, 0x16, 0x03, 0x00, 0x33,
+       0x25, 0x00, 0xC2, 0x88, 0x7C, 0x95, 0x32, 0x83, 0x60, 0x96, 0x32, 0x83,
+       0x04, 0x01, 0x10, 0xCE, 0x07, 0xC8, 0x05, 0x05, 0xEB, 0x04, 0x00, 0x33,
        0x00, 0x20, 0xC0, 0x20, 0x81, 0x62, 0x72, 0x83, 0x00, 0x01, 0x05, 0x05,
-       0xFF, 0xA2, 0x7A, 0x03,
-       0xB1, 0x01, 0x08, 0x23, 0xB2, 0x01, 0x2E, 0x83, 0x05, 0x05, 0x15, 0x01,
-       0x00, 0xA2, 0x9A, 0x03,
-       0xEC, 0x00, 0x6E, 0x00, 0x95, 0x01, 0x6C, 0x38, 0x00, 0x3F, 0x00, 0x00,
-       0x01, 0xA6, 0x96, 0x03,
+       0xFF, 0xA2, 0x7A, 0x03, 0xB1, 0x01, 0x08, 0x23, 0xB2, 0x01, 0x2E, 0x83,
+       0x05, 0x05, 0x15, 0x01, 0x00, 0xA2, 0x9A, 0x03, 0xEC, 0x00, 0x6E, 0x00,
+       0x95, 0x01, 0x6C, 0x38, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xA6, 0x96, 0x03,
        0x00, 0xA6, 0x96, 0x03, 0x10, 0x84, 0x80, 0x42, 0x7E, 0x98, 0x01, 0xA6,
-       0xA4, 0x03, 0x00, 0xA6,
-       0xBC, 0x03, 0x10, 0x84, 0xA8, 0x98, 0x80, 0x42, 0x01, 0xA6, 0xA4, 0x03,
-       0x07, 0xA6, 0xB2, 0x03,
-       0xD4, 0x83, 0x7C, 0x95, 0xA8, 0x83, 0x00, 0x33, 0x2F, 0x00, 0xC2, 0x88,
-       0xA8, 0x98, 0x80, 0x42,
+       0xA4, 0x03, 0x00, 0xA6, 0xBC, 0x03, 0x10, 0x84, 0xA8, 0x98, 0x80, 0x42,
+       0x01, 0xA6, 0xA4, 0x03, 0x07, 0xA6, 0xB2, 0x03, 0xD4, 0x83, 0x7C, 0x95,
+       0xA8, 0x83, 0x00, 0x33, 0x2F, 0x00, 0xC2, 0x88, 0xA8, 0x98, 0x80, 0x42,
        0x00, 0xA6, 0xBC, 0x03, 0x07, 0xA6, 0xCA, 0x03, 0xD4, 0x83, 0x7C, 0x95,
-       0xC0, 0x83, 0x00, 0x33,
-       0x26, 0x00, 0xC2, 0x88, 0x38, 0x2B, 0x80, 0x32, 0x80, 0x36, 0x04, 0x23,
-       0xA0, 0x01, 0x12, 0x23,
-       0xA1, 0x01, 0x10, 0x84, 0x07, 0xF0, 0x06, 0xA4, 0xF4, 0x03, 0x80, 0x6B,
-       0x80, 0x67, 0x05, 0x23,
+       0xC0, 0x83, 0x00, 0x33, 0x26, 0x00, 0xC2, 0x88, 0x38, 0x2B, 0x80, 0x32,
+       0x80, 0x36, 0x04, 0x23, 0xA0, 0x01, 0x12, 0x23, 0xA1, 0x01, 0x10, 0x84,
+       0x07, 0xF0, 0x06, 0xA4, 0xF4, 0x03, 0x80, 0x6B, 0x80, 0x67, 0x05, 0x23,
        0x83, 0x03, 0x80, 0x63, 0x03, 0xA6, 0x0E, 0x04, 0x07, 0xA6, 0x06, 0x04,
-       0x06, 0xA6, 0x0A, 0x04,
-       0x00, 0x33, 0x17, 0x00, 0xC2, 0x88, 0x7C, 0x95, 0xF4, 0x83, 0x60, 0x96,
-       0xF4, 0x83, 0x20, 0x84,
-       0x07, 0xF0, 0x06, 0xA4, 0x20, 0x04, 0x80, 0x6B, 0x80, 0x67, 0x05, 0x23,
-       0x83, 0x03, 0x80, 0x63,
+       0x06, 0xA6, 0x0A, 0x04, 0x00, 0x33, 0x17, 0x00, 0xC2, 0x88, 0x7C, 0x95,
+       0xF4, 0x83, 0x60, 0x96, 0xF4, 0x83, 0x20, 0x84, 0x07, 0xF0, 0x06, 0xA4,
+       0x20, 0x04, 0x80, 0x6B, 0x80, 0x67, 0x05, 0x23, 0x83, 0x03, 0x80, 0x63,
        0xB6, 0x2D, 0x03, 0xA6, 0x3C, 0x04, 0x07, 0xA6, 0x34, 0x04, 0x06, 0xA6,
-       0x38, 0x04, 0x00, 0x33,
-       0x30, 0x00, 0xC2, 0x88, 0x7C, 0x95, 0x20, 0x84, 0x60, 0x96, 0x20, 0x84,
-       0x1D, 0x01, 0x06, 0xCC,
-       0x00, 0x33, 0x00, 0x84, 0xC0, 0x20, 0x00, 0x23, 0xEA, 0x00, 0x81, 0x62,
-       0xA2, 0x0D, 0x80, 0x63,
+       0x38, 0x04, 0x00, 0x33, 0x30, 0x00, 0xC2, 0x88, 0x7C, 0x95, 0x20, 0x84,
+       0x60, 0x96, 0x20, 0x84, 0x1D, 0x01, 0x06, 0xCC, 0x00, 0x33, 0x00, 0x84,
+       0xC0, 0x20, 0x00, 0x23, 0xEA, 0x00, 0x81, 0x62, 0xA2, 0x0D, 0x80, 0x63,
        0x07, 0xA6, 0x5A, 0x04, 0x00, 0x33, 0x18, 0x00, 0xC2, 0x88, 0x03, 0x03,
-       0x80, 0x63, 0xA3, 0x01,
-       0x07, 0xA4, 0x64, 0x04, 0x23, 0x01, 0x00, 0xA2, 0x86, 0x04, 0x0A, 0xA0,
-       0x76, 0x04, 0xE0, 0x00,
-       0x00, 0x33, 0x1D, 0x00, 0xC2, 0x88, 0x0B, 0xA0, 0x82, 0x04, 0xE0, 0x00,
-       0x00, 0x33, 0x1E, 0x00,
+       0x80, 0x63, 0xA3, 0x01, 0x07, 0xA4, 0x64, 0x04, 0x23, 0x01, 0x00, 0xA2,
+       0x86, 0x04, 0x0A, 0xA0, 0x76, 0x04, 0xE0, 0x00, 0x00, 0x33, 0x1D, 0x00,
+       0xC2, 0x88, 0x0B, 0xA0, 0x82, 0x04, 0xE0, 0x00, 0x00, 0x33, 0x1E, 0x00,
        0xC2, 0x88, 0x42, 0x23, 0xF8, 0x88, 0x00, 0x23, 0x22, 0xA3, 0xE6, 0x04,
-       0x08, 0x23, 0x22, 0xA3,
-       0xA2, 0x04, 0x28, 0x23, 0x22, 0xA3, 0xAE, 0x04, 0x02, 0x23, 0x22, 0xA3,
-       0xC4, 0x04, 0x42, 0x23,
-       0xF8, 0x88, 0x4A, 0x00, 0x06, 0x61, 0x00, 0xA0, 0xAE, 0x04, 0x45, 0x23,
-       0xF8, 0x88, 0x04, 0x98,
+       0x08, 0x23, 0x22, 0xA3, 0xA2, 0x04, 0x28, 0x23, 0x22, 0xA3, 0xAE, 0x04,
+       0x02, 0x23, 0x22, 0xA3, 0xC4, 0x04, 0x42, 0x23, 0xF8, 0x88, 0x4A, 0x00,
+       0x06, 0x61, 0x00, 0xA0, 0xAE, 0x04, 0x45, 0x23, 0xF8, 0x88, 0x04, 0x98,
        0x00, 0xA2, 0xC0, 0x04, 0xB4, 0x98, 0x00, 0x33, 0x00, 0x82, 0xC0, 0x20,
-       0x81, 0x62, 0xE8, 0x81,
-       0x47, 0x23, 0xF8, 0x88, 0x04, 0x01, 0x0B, 0xDE, 0x04, 0x98, 0xB4, 0x98,
-       0x00, 0x33, 0x00, 0x81,
-       0xC0, 0x20, 0x81, 0x62, 0x14, 0x01, 0x00, 0xA0, 0x00, 0x02, 0x43, 0x23,
-       0xF8, 0x88, 0x04, 0x23,
+       0x81, 0x62, 0xE8, 0x81, 0x47, 0x23, 0xF8, 0x88, 0x04, 0x01, 0x0B, 0xDE,
+       0x04, 0x98, 0xB4, 0x98, 0x00, 0x33, 0x00, 0x81, 0xC0, 0x20, 0x81, 0x62,
+       0x14, 0x01, 0x00, 0xA0, 0x00, 0x02, 0x43, 0x23, 0xF8, 0x88, 0x04, 0x23,
        0xA0, 0x01, 0x44, 0x23, 0xA1, 0x01, 0x80, 0x73, 0x4D, 0x00, 0x03, 0xA3,
-       0xF4, 0x04, 0x00, 0x33,
-       0x27, 0x00, 0xC2, 0x88, 0x04, 0x01, 0x04, 0xDC, 0x02, 0x23, 0xA2, 0x01,
-       0x04, 0x23, 0xA0, 0x01,
-       0x04, 0x98, 0x26, 0x95, 0x4B, 0x00, 0xF6, 0x00, 0x4F, 0x04, 0x4F, 0x00,
-       0x00, 0xA3, 0x22, 0x05,
+       0xF4, 0x04, 0x00, 0x33, 0x27, 0x00, 0xC2, 0x88, 0x04, 0x01, 0x04, 0xDC,
+       0x02, 0x23, 0xA2, 0x01, 0x04, 0x23, 0xA0, 0x01, 0x04, 0x98, 0x26, 0x95,
+       0x4B, 0x00, 0xF6, 0x00, 0x4F, 0x04, 0x4F, 0x00, 0x00, 0xA3, 0x22, 0x05,
        0x00, 0x05, 0x76, 0x00, 0x06, 0x61, 0x00, 0xA2, 0x1C, 0x05, 0x0A, 0x85,
-       0x46, 0x97, 0xCD, 0x04,
-       0x24, 0x85, 0x48, 0x04, 0x84, 0x80, 0x02, 0x01, 0x03, 0xDA, 0x80, 0x23,
-       0x82, 0x01, 0x34, 0x85,
-       0x02, 0x23, 0xA0, 0x01, 0x4A, 0x00, 0x06, 0x61, 0x00, 0xA2, 0x40, 0x05,
-       0x1D, 0x01, 0x04, 0xD6,
+       0x46, 0x97, 0xCD, 0x04, 0x24, 0x85, 0x48, 0x04, 0x84, 0x80, 0x02, 0x01,
+       0x03, 0xDA, 0x80, 0x23, 0x82, 0x01, 0x34, 0x85, 0x02, 0x23, 0xA0, 0x01,
+       0x4A, 0x00, 0x06, 0x61, 0x00, 0xA2, 0x40, 0x05, 0x1D, 0x01, 0x04, 0xD6,
        0xFF, 0x23, 0x86, 0x41, 0x4B, 0x60, 0xCB, 0x00, 0xFF, 0x23, 0x80, 0x01,
-       0x49, 0x00, 0x81, 0x01,
-       0x04, 0x01, 0x02, 0xC8, 0x30, 0x01, 0x80, 0x01, 0xF7, 0x04, 0x03, 0x01,
-       0x49, 0x04, 0x80, 0x01,
-       0xC9, 0x00, 0x00, 0x05, 0x00, 0x01, 0xFF, 0xA0, 0x60, 0x05, 0x77, 0x04,
-       0x01, 0x23, 0xEA, 0x00,
+       0x49, 0x00, 0x81, 0x01, 0x04, 0x01, 0x02, 0xC8, 0x30, 0x01, 0x80, 0x01,
+       0xF7, 0x04, 0x03, 0x01, 0x49, 0x04, 0x80, 0x01, 0xC9, 0x00, 0x00, 0x05,
+       0x00, 0x01, 0xFF, 0xA0, 0x60, 0x05, 0x77, 0x04, 0x01, 0x23, 0xEA, 0x00,
        0x5D, 0x00, 0xFE, 0xC7, 0x00, 0x62, 0x00, 0x23, 0xEA, 0x00, 0x00, 0x63,
-       0x07, 0xA4, 0xF8, 0x05,
-       0x03, 0x03, 0x02, 0xA0, 0x8E, 0x05, 0xF4, 0x85, 0x00, 0x33, 0x2D, 0x00,
-       0xC2, 0x88, 0x04, 0xA0,
-       0xB8, 0x05, 0x80, 0x63, 0x00, 0x23, 0xDF, 0x00, 0x4A, 0x00, 0x06, 0x61,
-       0x00, 0xA2, 0xA4, 0x05,
+       0x07, 0xA4, 0xF8, 0x05, 0x03, 0x03, 0x02, 0xA0, 0x8E, 0x05, 0xF4, 0x85,
+       0x00, 0x33, 0x2D, 0x00, 0xC2, 0x88, 0x04, 0xA0, 0xB8, 0x05, 0x80, 0x63,
+       0x00, 0x23, 0xDF, 0x00, 0x4A, 0x00, 0x06, 0x61, 0x00, 0xA2, 0xA4, 0x05,
        0x1D, 0x01, 0x06, 0xD6, 0x02, 0x23, 0x02, 0x41, 0x82, 0x01, 0x50, 0x00,
-       0x62, 0x97, 0x04, 0x85,
-       0x04, 0x23, 0x02, 0x41, 0x82, 0x01, 0x04, 0x85, 0x08, 0xA0, 0xBE, 0x05,
-       0xF4, 0x85, 0x03, 0xA0,
-       0xC4, 0x05, 0xF4, 0x85, 0x01, 0xA0, 0xCE, 0x05, 0x88, 0x00, 0x80, 0x63,
-       0xCC, 0x86, 0x07, 0xA0,
+       0x62, 0x97, 0x04, 0x85, 0x04, 0x23, 0x02, 0x41, 0x82, 0x01, 0x04, 0x85,
+       0x08, 0xA0, 0xBE, 0x05, 0xF4, 0x85, 0x03, 0xA0, 0xC4, 0x05, 0xF4, 0x85,
+       0x01, 0xA0, 0xCE, 0x05, 0x88, 0x00, 0x80, 0x63, 0xCC, 0x86, 0x07, 0xA0,
        0xEE, 0x05, 0x5F, 0x00, 0x00, 0x2B, 0xDF, 0x08, 0x00, 0xA2, 0xE6, 0x05,
-       0x80, 0x67, 0x80, 0x63,
-       0x01, 0xA2, 0x7A, 0x06, 0x7C, 0x85, 0x06, 0x23, 0x68, 0x98, 0x48, 0x23,
-       0xF8, 0x88, 0x07, 0x23,
-       0x80, 0x00, 0x06, 0x87, 0x80, 0x63, 0x7C, 0x85, 0x00, 0x23, 0xDF, 0x00,
-       0x00, 0x63, 0x4A, 0x00,
+       0x80, 0x67, 0x80, 0x63, 0x01, 0xA2, 0x7A, 0x06, 0x7C, 0x85, 0x06, 0x23,
+       0x68, 0x98, 0x48, 0x23, 0xF8, 0x88, 0x07, 0x23, 0x80, 0x00, 0x06, 0x87,
+       0x80, 0x63, 0x7C, 0x85, 0x00, 0x23, 0xDF, 0x00, 0x00, 0x63, 0x4A, 0x00,
        0x06, 0x61, 0x00, 0xA2, 0x36, 0x06, 0x1D, 0x01, 0x16, 0xD4, 0xC0, 0x23,
-       0x07, 0x41, 0x83, 0x03,
-       0x80, 0x63, 0x06, 0xA6, 0x1C, 0x06, 0x00, 0x33, 0x37, 0x00, 0xC2, 0x88,
-       0x1D, 0x01, 0x01, 0xD6,
-       0x20, 0x23, 0x63, 0x60, 0x83, 0x03, 0x80, 0x63, 0x02, 0x23, 0xDF, 0x00,
-       0x07, 0xA6, 0x7C, 0x05,
+       0x07, 0x41, 0x83, 0x03, 0x80, 0x63, 0x06, 0xA6, 0x1C, 0x06, 0x00, 0x33,
+       0x37, 0x00, 0xC2, 0x88, 0x1D, 0x01, 0x01, 0xD6, 0x20, 0x23, 0x63, 0x60,
+       0x83, 0x03, 0x80, 0x63, 0x02, 0x23, 0xDF, 0x00, 0x07, 0xA6, 0x7C, 0x05,
        0xEF, 0x04, 0x6F, 0x00, 0x00, 0x63, 0x4B, 0x00, 0x06, 0x41, 0xCB, 0x00,
-       0x52, 0x00, 0x06, 0x61,
-       0x00, 0xA2, 0x4E, 0x06, 0x1D, 0x01, 0x03, 0xCA, 0xC0, 0x23, 0x07, 0x41,
-       0x00, 0x63, 0x1D, 0x01,
-       0x04, 0xCC, 0x00, 0x33, 0x00, 0x83, 0xC0, 0x20, 0x81, 0x62, 0x80, 0x23,
-       0x07, 0x41, 0x00, 0x63,
+       0x52, 0x00, 0x06, 0x61, 0x00, 0xA2, 0x4E, 0x06, 0x1D, 0x01, 0x03, 0xCA,
+       0xC0, 0x23, 0x07, 0x41, 0x00, 0x63, 0x1D, 0x01, 0x04, 0xCC, 0x00, 0x33,
+       0x00, 0x83, 0xC0, 0x20, 0x81, 0x62, 0x80, 0x23, 0x07, 0x41, 0x00, 0x63,
        0x80, 0x67, 0x08, 0x23, 0x83, 0x03, 0x80, 0x63, 0x00, 0x63, 0x01, 0x23,
-       0xDF, 0x00, 0x06, 0xA6,
-       0x84, 0x06, 0x07, 0xA6, 0x7C, 0x05, 0x80, 0x67, 0x80, 0x63, 0x00, 0x33,
-       0x00, 0x40, 0xC0, 0x20,
-       0x81, 0x62, 0x00, 0x63, 0x00, 0x00, 0xFE, 0x95, 0x83, 0x03, 0x80, 0x63,
-       0x06, 0xA6, 0x94, 0x06,
+       0xDF, 0x00, 0x06, 0xA6, 0x84, 0x06, 0x07, 0xA6, 0x7C, 0x05, 0x80, 0x67,
+       0x80, 0x63, 0x00, 0x33, 0x00, 0x40, 0xC0, 0x20, 0x81, 0x62, 0x00, 0x63,
+       0x00, 0x00, 0xFE, 0x95, 0x83, 0x03, 0x80, 0x63, 0x06, 0xA6, 0x94, 0x06,
        0x07, 0xA6, 0x7C, 0x05, 0x00, 0x00, 0x01, 0xA0, 0x14, 0x07, 0x00, 0x2B,
-       0x40, 0x0E, 0x80, 0x63,
-       0x01, 0x00, 0x06, 0xA6, 0xAA, 0x06, 0x07, 0xA6, 0x7C, 0x05, 0x40, 0x0E,
-       0x80, 0x63, 0x00, 0x43,
-       0x00, 0xA0, 0xA2, 0x06, 0x06, 0xA6, 0xBC, 0x06, 0x07, 0xA6, 0x7C, 0x05,
-       0x80, 0x67, 0x40, 0x0E,
+       0x40, 0x0E, 0x80, 0x63, 0x01, 0x00, 0x06, 0xA6, 0xAA, 0x06, 0x07, 0xA6,
+       0x7C, 0x05, 0x40, 0x0E, 0x80, 0x63, 0x00, 0x43, 0x00, 0xA0, 0xA2, 0x06,
+       0x06, 0xA6, 0xBC, 0x06, 0x07, 0xA6, 0x7C, 0x05, 0x80, 0x67, 0x40, 0x0E,
        0x80, 0x63, 0x07, 0xA6, 0x7C, 0x05, 0x00, 0x23, 0xDF, 0x00, 0x00, 0x63,
-       0x07, 0xA6, 0xD6, 0x06,
-       0x00, 0x33, 0x2A, 0x00, 0xC2, 0x88, 0x03, 0x03, 0x80, 0x63, 0x89, 0x00,
-       0x0A, 0x2B, 0x07, 0xA6,
-       0xE8, 0x06, 0x00, 0x33, 0x29, 0x00, 0xC2, 0x88, 0x00, 0x43, 0x00, 0xA2,
-       0xF4, 0x06, 0xC0, 0x0E,
+       0x07, 0xA6, 0xD6, 0x06, 0x00, 0x33, 0x2A, 0x00, 0xC2, 0x88, 0x03, 0x03,
+       0x80, 0x63, 0x89, 0x00, 0x0A, 0x2B, 0x07, 0xA6, 0xE8, 0x06, 0x00, 0x33,
+       0x29, 0x00, 0xC2, 0x88, 0x00, 0x43, 0x00, 0xA2, 0xF4, 0x06, 0xC0, 0x0E,
        0x80, 0x63, 0xDE, 0x86, 0xC0, 0x0E, 0x00, 0x33, 0x00, 0x80, 0xC0, 0x20,
-       0x81, 0x62, 0x04, 0x01,
-       0x02, 0xDA, 0x80, 0x63, 0x7C, 0x85, 0x80, 0x7B, 0x80, 0x63, 0x06, 0xA6,
-       0x8C, 0x06, 0x00, 0x33,
-       0x2C, 0x00, 0xC2, 0x88, 0x0C, 0xA2, 0x2E, 0x07, 0xFE, 0x95, 0x83, 0x03,
-       0x80, 0x63, 0x06, 0xA6,
+       0x81, 0x62, 0x04, 0x01, 0x02, 0xDA, 0x80, 0x63, 0x7C, 0x85, 0x80, 0x7B,
+       0x80, 0x63, 0x06, 0xA6, 0x8C, 0x06, 0x00, 0x33, 0x2C, 0x00, 0xC2, 0x88,
+       0x0C, 0xA2, 0x2E, 0x07, 0xFE, 0x95, 0x83, 0x03, 0x80, 0x63, 0x06, 0xA6,
        0x2C, 0x07, 0x07, 0xA6, 0x7C, 0x05, 0x00, 0x33, 0x3D, 0x00, 0xC2, 0x88,
-       0x00, 0x00, 0x80, 0x67,
-       0x83, 0x03, 0x80, 0x63, 0x0C, 0xA0, 0x44, 0x07, 0x07, 0xA6, 0x7C, 0x05,
-       0xBF, 0x23, 0x04, 0x61,
-       0x84, 0x01, 0xE6, 0x84, 0x00, 0x63, 0xF0, 0x04, 0x01, 0x01, 0xF1, 0x00,
-       0x00, 0x01, 0xF2, 0x00,
+       0x00, 0x00, 0x80, 0x67, 0x83, 0x03, 0x80, 0x63, 0x0C, 0xA0, 0x44, 0x07,
+       0x07, 0xA6, 0x7C, 0x05, 0xBF, 0x23, 0x04, 0x61, 0x84, 0x01, 0xE6, 0x84,
+       0x00, 0x63, 0xF0, 0x04, 0x01, 0x01, 0xF1, 0x00, 0x00, 0x01, 0xF2, 0x00,
        0x01, 0x05, 0x80, 0x01, 0x72, 0x04, 0x71, 0x00, 0x81, 0x01, 0x70, 0x04,
-       0x80, 0x05, 0x81, 0x05,
-       0x00, 0x63, 0xF0, 0x04, 0xF2, 0x00, 0x72, 0x04, 0x01, 0x01, 0xF1, 0x00,
-       0x70, 0x00, 0x81, 0x01,
-       0x70, 0x04, 0x71, 0x00, 0x81, 0x01, 0x72, 0x00, 0x80, 0x01, 0x71, 0x04,
-       0x70, 0x00, 0x80, 0x01,
+       0x80, 0x05, 0x81, 0x05, 0x00, 0x63, 0xF0, 0x04, 0xF2, 0x00, 0x72, 0x04,
+       0x01, 0x01, 0xF1, 0x00, 0x70, 0x00, 0x81, 0x01, 0x70, 0x04, 0x71, 0x00,
+       0x81, 0x01, 0x72, 0x00, 0x80, 0x01, 0x71, 0x04, 0x70, 0x00, 0x80, 0x01,
        0x70, 0x04, 0x00, 0x63, 0xF0, 0x04, 0xF2, 0x00, 0x72, 0x04, 0x00, 0x01,
-       0xF1, 0x00, 0x70, 0x00,
-       0x80, 0x01, 0x70, 0x04, 0x71, 0x00, 0x80, 0x01, 0x72, 0x00, 0x81, 0x01,
-       0x71, 0x04, 0x70, 0x00,
-       0x81, 0x01, 0x70, 0x04, 0x00, 0x63, 0x00, 0x23, 0xB3, 0x01, 0x83, 0x05,
-       0xA3, 0x01, 0xA2, 0x01,
+       0xF1, 0x00, 0x70, 0x00, 0x80, 0x01, 0x70, 0x04, 0x71, 0x00, 0x80, 0x01,
+       0x72, 0x00, 0x81, 0x01, 0x71, 0x04, 0x70, 0x00, 0x81, 0x01, 0x70, 0x04,
+       0x00, 0x63, 0x00, 0x23, 0xB3, 0x01, 0x83, 0x05, 0xA3, 0x01, 0xA2, 0x01,
        0xA1, 0x01, 0x01, 0x23, 0xA0, 0x01, 0x00, 0x01, 0xC8, 0x00, 0x03, 0xA1,
-       0xC4, 0x07, 0x00, 0x33,
-       0x07, 0x00, 0xC2, 0x88, 0x80, 0x05, 0x81, 0x05, 0x04, 0x01, 0x11, 0xC8,
-       0x48, 0x00, 0xB0, 0x01,
-       0xB1, 0x01, 0x08, 0x23, 0xB2, 0x01, 0x05, 0x01, 0x48, 0x04, 0x00, 0x43,
-       0x00, 0xA2, 0xE4, 0x07,
+       0xC4, 0x07, 0x00, 0x33, 0x07, 0x00, 0xC2, 0x88, 0x80, 0x05, 0x81, 0x05,
+       0x04, 0x01, 0x11, 0xC8, 0x48, 0x00, 0xB0, 0x01, 0xB1, 0x01, 0x08, 0x23,
+       0xB2, 0x01, 0x05, 0x01, 0x48, 0x04, 0x00, 0x43, 0x00, 0xA2, 0xE4, 0x07,
        0x00, 0x05, 0xDA, 0x87, 0x00, 0x01, 0xC8, 0x00, 0xFF, 0x23, 0x80, 0x01,
-       0x05, 0x05, 0x00, 0x63,
-       0xF7, 0x04, 0x1A, 0x09, 0xF6, 0x08, 0x6E, 0x04, 0x00, 0x02, 0x80, 0x43,
-       0x76, 0x08, 0x80, 0x02,
-       0x77, 0x04, 0x00, 0x63, 0xF7, 0x04, 0x1A, 0x09, 0xF6, 0x08, 0x6E, 0x04,
-       0x00, 0x02, 0x00, 0xA0,
+       0x05, 0x05, 0x00, 0x63, 0xF7, 0x04, 0x1A, 0x09, 0xF6, 0x08, 0x6E, 0x04,
+       0x00, 0x02, 0x80, 0x43, 0x76, 0x08, 0x80, 0x02, 0x77, 0x04, 0x00, 0x63,
+       0xF7, 0x04, 0x1A, 0x09, 0xF6, 0x08, 0x6E, 0x04, 0x00, 0x02, 0x00, 0xA0,
        0x14, 0x08, 0x16, 0x88, 0x00, 0x43, 0x76, 0x08, 0x80, 0x02, 0x77, 0x04,
-       0x00, 0x63, 0xF3, 0x04,
-       0x00, 0x23, 0xF4, 0x00, 0x74, 0x00, 0x80, 0x43, 0xF4, 0x00, 0xCF, 0x40,
-       0x00, 0xA2, 0x44, 0x08,
-       0x74, 0x04, 0x02, 0x01, 0xF7, 0xC9, 0xF6, 0xD9, 0x00, 0x01, 0x01, 0xA1,
-       0x24, 0x08, 0x04, 0x98,
+       0x00, 0x63, 0xF3, 0x04, 0x00, 0x23, 0xF4, 0x00, 0x74, 0x00, 0x80, 0x43,
+       0xF4, 0x00, 0xCF, 0x40, 0x00, 0xA2, 0x44, 0x08, 0x74, 0x04, 0x02, 0x01,
+       0xF7, 0xC9, 0xF6, 0xD9, 0x00, 0x01, 0x01, 0xA1, 0x24, 0x08, 0x04, 0x98,
        0x26, 0x95, 0x24, 0x88, 0x73, 0x04, 0x00, 0x63, 0xF3, 0x04, 0x75, 0x04,
-       0x5A, 0x88, 0x02, 0x01,
-       0x04, 0xD8, 0x46, 0x97, 0x04, 0x98, 0x26, 0x95, 0x4A, 0x88, 0x75, 0x00,
-       0x00, 0xA3, 0x64, 0x08,
-       0x00, 0x05, 0x4E, 0x88, 0x73, 0x04, 0x00, 0x63, 0x80, 0x7B, 0x80, 0x63,
-       0x06, 0xA6, 0x76, 0x08,
+       0x5A, 0x88, 0x02, 0x01, 0x04, 0xD8, 0x46, 0x97, 0x04, 0x98, 0x26, 0x95,
+       0x4A, 0x88, 0x75, 0x00, 0x00, 0xA3, 0x64, 0x08, 0x00, 0x05, 0x4E, 0x88,
+       0x73, 0x04, 0x00, 0x63, 0x80, 0x7B, 0x80, 0x63, 0x06, 0xA6, 0x76, 0x08,
        0x00, 0x33, 0x3E, 0x00, 0xC2, 0x88, 0x80, 0x67, 0x83, 0x03, 0x80, 0x63,
-       0x00, 0x63, 0x38, 0x2B,
-       0x9C, 0x88, 0x38, 0x2B, 0x92, 0x88, 0x32, 0x09, 0x31, 0x05, 0x92, 0x98,
-       0x05, 0x05, 0xB2, 0x09,
-       0x00, 0x63, 0x00, 0x32, 0x00, 0x36, 0x00, 0x3A, 0x00, 0x3E, 0x00, 0x63,
-       0x80, 0x32, 0x80, 0x36,
+       0x00, 0x63, 0x38, 0x2B, 0x9C, 0x88, 0x38, 0x2B, 0x92, 0x88, 0x32, 0x09,
+       0x31, 0x05, 0x92, 0x98, 0x05, 0x05, 0xB2, 0x09, 0x00, 0x63, 0x00, 0x32,
+       0x00, 0x36, 0x00, 0x3A, 0x00, 0x3E, 0x00, 0x63, 0x80, 0x32, 0x80, 0x36,
        0x80, 0x3A, 0x80, 0x3E, 0xB4, 0x3D, 0x00, 0x63, 0x38, 0x2B, 0x40, 0x32,
-       0x40, 0x36, 0x40, 0x3A,
-       0x40, 0x3E, 0x00, 0x63, 0x5A, 0x20, 0xC9, 0x40, 0x00, 0xA0, 0xB4, 0x08,
-       0x5D, 0x00, 0xFE, 0xC3,
-       0x00, 0x63, 0x80, 0x73, 0xE6, 0x20, 0x02, 0x23, 0xE8, 0x00, 0x82, 0x73,
-       0xFF, 0xFD, 0x80, 0x73,
+       0x40, 0x36, 0x40, 0x3A, 0x40, 0x3E, 0x00, 0x63, 0x5A, 0x20, 0xC9, 0x40,
+       0x00, 0xA0, 0xB4, 0x08, 0x5D, 0x00, 0xFE, 0xC3, 0x00, 0x63, 0x80, 0x73,
+       0xE6, 0x20, 0x02, 0x23, 0xE8, 0x00, 0x82, 0x73, 0xFF, 0xFD, 0x80, 0x73,
        0x13, 0x23, 0xF8, 0x88, 0x66, 0x20, 0xC0, 0x20, 0x04, 0x23, 0xA0, 0x01,
-       0xA1, 0x23, 0xA1, 0x01,
-       0x81, 0x62, 0xE2, 0x88, 0x80, 0x73, 0x80, 0x77, 0x68, 0x00, 0x00, 0xA2,
-       0x80, 0x00, 0x03, 0xC2,
-       0xF1, 0xC7, 0x41, 0x23, 0xF8, 0x88, 0x11, 0x23, 0xA1, 0x01, 0x04, 0x23,
-       0xA0, 0x01, 0xE6, 0x84,
+       0xA1, 0x23, 0xA1, 0x01, 0x81, 0x62, 0xE2, 0x88, 0x80, 0x73, 0x80, 0x77,
+       0x68, 0x00, 0x00, 0xA2, 0x80, 0x00, 0x03, 0xC2, 0xF1, 0xC7, 0x41, 0x23,
+       0xF8, 0x88, 0x11, 0x23, 0xA1, 0x01, 0x04, 0x23, 0xA0, 0x01, 0xE6, 0x84,
 };
 
 static ushort _asc_mcode_size = sizeof(_asc_mcode_buf);
@@ -9241,13 +7328,11 @@ static uchar _syn_offset_one_disable_cmd[ASC_SYN_OFFSET_ONE_DISABLE_LIST] = {
 static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq)
 {
        PortAddr iop_base;
-       ulong last_int_level;
        int sta;
        int n_q_required;
        int disable_syn_offset_one_fix;
        int i;
        ASC_PADDR addr;
-       ASC_EXE_CALLBACK asc_exe_callback;
        ushort sg_entry_cnt = 0;
        ushort sg_entry_cnt_minus_one = 0;
        uchar target_ix;
@@ -9261,13 +7346,8 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq)
 
        iop_base = asc_dvc->iop_base;
        sg_head = scsiq->sg_head;
-       asc_exe_callback = asc_dvc->exe_callback;
        if (asc_dvc->err_code != 0)
                return (ERR);
-       if (scsiq == (ASC_SCSI_Q *)0L) {
-               AscSetLibErrorCode(asc_dvc, ASCQ_ERR_SCSIQ_NULL_PTR);
-               return (ERR);
-       }
        scsiq->q1.q_no = 0;
        if ((scsiq->q2.tag_code & ASC_TAG_FLAG_EXTRA_BYTES) == 0) {
                scsiq->q1.extra_bytes = 0;
@@ -9291,9 +7371,7 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq)
                        scsiq->q1.cntl |= (QC_MSG_OUT | QC_URGENT);
                }
        }
-       last_int_level = DvcEnterCritical();
        if (asc_dvc->in_critical_cnt != 0) {
-               DvcLeaveCritical(last_int_level);
                AscSetLibErrorCode(asc_dvc, ASCQ_ERR_CRITICAL_RE_ENTRY);
                return (ERR);
        }
@@ -9301,13 +7379,11 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq)
        if ((scsiq->q1.cntl & QC_SG_HEAD) != 0) {
                if ((sg_entry_cnt = sg_head->entry_cnt) == 0) {
                        asc_dvc->in_critical_cnt--;
-                       DvcLeaveCritical(last_int_level);
                        return (ERR);
                }
 #if !CC_VERY_LONG_SG_LIST
                if (sg_entry_cnt > ASC_MAX_SG_LIST) {
                        asc_dvc->in_critical_cnt--;
-                       DvcLeaveCritical(last_int_level);
                        return (ERR);
                }
 #endif /* !CC_VERY_LONG_SG_LIST */
@@ -9422,10 +7498,6 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq)
                             AscSendScsiQueue(asc_dvc, scsiq,
                                              n_q_required)) == 1) {
                                asc_dvc->in_critical_cnt--;
-                               if (asc_exe_callback != 0) {
-                                       (*asc_exe_callback) (asc_dvc, scsiq);
-                               }
-                               DvcLeaveCritical(last_int_level);
                                return (sta);
                        }
                }
@@ -9470,16 +7542,11 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq)
                        if ((sta = AscSendScsiQueue(asc_dvc, scsiq,
                                                    n_q_required)) == 1) {
                                asc_dvc->in_critical_cnt--;
-                               if (asc_exe_callback != 0) {
-                                       (*asc_exe_callback) (asc_dvc, scsiq);
-                               }
-                               DvcLeaveCritical(last_int_level);
                                return (sta);
                        }
                }
        }
        asc_dvc->in_critical_cnt--;
-       DvcLeaveCritical(last_int_level);
        return (sta);
 }
 
@@ -9499,36 +7566,28 @@ AscSendScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq, uchar n_q_required)
        sta = 0;
        free_q_head = (uchar)AscGetVarFreeQHead(iop_base);
        if (n_q_required > 1) {
-               if ((next_qp = AscAllocMultipleFreeQueue(iop_base,
-                                                        free_q_head, (uchar)
-                                                        (n_q_required)))
-                   != (uchar)ASC_QLINK_END) {
+               next_qp = AscAllocMultipleFreeQueue(iop_base, free_q_head,
+                                                   (uchar)n_q_required);
+               if (next_qp != ASC_QLINK_END) {
                        asc_dvc->last_q_shortage = 0;
                        scsiq->sg_head->queue_cnt = n_q_required - 1;
                        scsiq->q1.q_no = free_q_head;
-                       if ((sta = AscPutReadySgListQueue(asc_dvc, scsiq,
-                                                         free_q_head)) == 1) {
-                               AscPutVarFreeQHead(iop_base, next_qp);
-                               asc_dvc->cur_total_qng += (uchar)(n_q_required);
-                               asc_dvc->cur_dvc_qng[tid_no]++;
-                       }
-                       return (sta);
+                       sta = AscPutReadySgListQueue(asc_dvc, scsiq,
+                                                    free_q_head);
                }
        } else if (n_q_required == 1) {
-               if ((next_qp = AscAllocFreeQueue(iop_base,
-                                                free_q_head)) !=
-                   ASC_QLINK_END) {
+               next_qp = AscAllocFreeQueue(iop_base, free_q_head);
+               if (next_qp != ASC_QLINK_END) {
                        scsiq->q1.q_no = free_q_head;
-                       if ((sta = AscPutReadyQueue(asc_dvc, scsiq,
-                                                   free_q_head)) == 1) {
-                               AscPutVarFreeQHead(iop_base, next_qp);
-                               asc_dvc->cur_total_qng++;
-                               asc_dvc->cur_dvc_qng[tid_no]++;
-                       }
-                       return (sta);
+                       sta = AscPutReadyQueue(asc_dvc, scsiq, free_q_head);
                }
        }
-       return (sta);
+       if (sta == 1) {
+               AscPutVarFreeQHead(iop_base, next_qp);
+               asc_dvc->cur_total_qng += (uchar)(n_q_required);
+               asc_dvc->cur_dvc_qng[tid_no]++;
+       }
+       return sta;
 }
 
 static int AscSgListToQueue(int sg_list)
@@ -9848,7 +7907,7 @@ static ushort AscInitLram(ASC_DVC_VAR *asc_dvc)
        return (warn_code);
 }
 
-static ushort AscInitQLinkVar(ASC_DVC_VAR *asc_dvc)
+static void AscInitQLinkVar(ASC_DVC_VAR *asc_dvc)
 {
        PortAddr iop_base;
        int i;
@@ -9875,7 +7934,6 @@ static ushort AscInitQLinkVar(ASC_DVC_VAR *asc_dvc)
        for (i = 0; i < 32; i++, lram_addr += 2) {
                AscWriteLramWord(iop_base, lram_addr, 0);
        }
-       return (0);
 }
 
 static int AscSetLibErrorCode(ASC_DVC_VAR *asc_dvc, ushort err_code)
@@ -10012,7 +8070,7 @@ static int AscHostReqRiscHalt(PortAddr iop_base)
                        sta = 1;
                        break;
                }
-               DvcSleepMilliSecond(100);
+               mdelay(100);
        } while (count++ < 20);
        AscWriteLramByte(iop_base, ASCV_STOP_CODE_B, saved_stop_code);
        return (sta);
@@ -10030,22 +8088,12 @@ static int AscStopQueueExe(PortAddr iop_base)
                            ASC_STOP_ACK_RISC_STOP) {
                                return (1);
                        }
-                       DvcSleepMilliSecond(100);
+                       mdelay(100);
                } while (count++ < 20);
        }
        return (0);
 }
 
-static void DvcDelayMicroSecond(ADV_DVC_VAR *asc_dvc, ushort micro_sec)
-{
-       udelay(micro_sec);
-}
-
-static void DvcDelayNanoSecond(ASC_DVC_VAR *asc_dvc, ASC_DCNT nano_sec)
-{
-       udelay((nano_sec + 999) / 1000);
-}
-
 static int AscStartChip(PortAddr iop_base)
 {
        AscSetChipControl(iop_base, 0);
@@ -10164,16 +8212,16 @@ static int AscResetChipAndScsiBus(ASC_DVC_VAR *asc_dvc)
        iop_base = asc_dvc->iop_base;
        while ((AscGetChipStatus(iop_base) & CSW_SCSI_RESET_ACTIVE)
               && (i-- > 0)) {
-               DvcSleepMilliSecond(100);
+               mdelay(100);
        }
        AscStopChip(iop_base);
        AscSetChipControl(iop_base, CC_CHIP_RESET | CC_SCSI_RESET | CC_HALT);
-       DvcDelayNanoSecond(asc_dvc, 60000);
+       udelay(60);
        AscSetChipIH(iop_base, INS_RFLAG_WTM);
        AscSetChipIH(iop_base, INS_HALT);
        AscSetChipControl(iop_base, CC_CHIP_RESET | CC_HALT);
        AscSetChipControl(iop_base, CC_HALT);
-       DvcSleepMilliSecond(200);
+       mdelay(200);
        AscSetChipStatus(iop_base, CIW_CLR_SCSI_RESET_INT);
        AscSetChipStatus(iop_base, 0);
        return (AscIsChipHalted(iop_base));
@@ -10182,10 +8230,10 @@ static int AscResetChipAndScsiBus(ASC_DVC_VAR *asc_dvc)
 static ASC_DCNT __devinit AscGetMaxDmaCount(ushort bus_type)
 {
        if (bus_type & ASC_IS_ISA)
-               return (ASC_MAX_ISA_DMA_COUNT);
+               return ASC_MAX_ISA_DMA_COUNT;
        else if (bus_type & (ASC_IS_EISA | ASC_IS_VL))
-               return (ASC_MAX_VL_DMA_COUNT);
-       return (ASC_MAX_PCI_DMA_COUNT);
+               return ASC_MAX_VL_DMA_COUNT;
+       return ASC_MAX_PCI_DMA_COUNT;
 }
 
 #ifdef CONFIG_ISA
@@ -10240,13 +8288,14 @@ static uchar __devinit AscGetIsaDmaSpeed(PortAddr iop_base)
 }
 #endif /* CONFIG_ISA */
 
-static ushort __devinit AscInitGetConfig(ASC_DVC_VAR *asc_dvc)
+static int __devinit AscInitGetConfig(asc_board_t *boardp)
 {
+       ASC_DVC_VAR *asc_dvc = &boardp->dvc_var.asc_dvc_var;
        unsigned short warn_code = 0;
 
        asc_dvc->init_state = ASC_INIT_STATE_BEG_GET_CFG;
        if (asc_dvc->err_code != 0)
-               return (UW_ERR);
+               return asc_dvc->err_code;
 
        if (AscFindSignature(asc_dvc->iop_base)) {
                warn_code |= AscInitAscDvcVar(asc_dvc);
@@ -10257,36 +8306,63 @@ static ushort __devinit AscInitGetConfig(ASC_DVC_VAR *asc_dvc)
        } else {
                asc_dvc->err_code = ASC_IERR_BAD_SIGNATURE;
        }
-       return warn_code;
+
+       switch (warn_code) {
+       case 0: /* No error */
+               break;
+       case ASC_WARN_IO_PORT_ROTATE:
+               ASC_PRINT1("AscInitGetConfig: board %d: I/O port address "
+                          "modified\n", boardp->id);
+               break;
+       case ASC_WARN_AUTO_CONFIG:
+               ASC_PRINT1("AscInitGetConfig: board %d: I/O port increment "
+                          "switch enabled\n", boardp->id);
+               break;
+       case ASC_WARN_EEPROM_CHKSUM:
+               ASC_PRINT1("AscInitGetConfig: board %d: EEPROM checksum "
+                          "error\n", boardp->id);
+               break;
+       case ASC_WARN_IRQ_MODIFIED:
+               ASC_PRINT1("AscInitGetConfig: board %d: IRQ modified\n",
+                          boardp->id);
+               break;
+       case ASC_WARN_CMD_QNG_CONFLICT:
+               ASC_PRINT1("AscInitGetConfig: board %d: tag queuing enabled "
+                          "w/o disconnects\n", boardp->id);
+               break;
+       default:
+               ASC_PRINT2("AscInitGetConfig: board %d: unknown warning: "
+                          "0x%x\n", boardp->id, warn_code);
+               break;
+       }
+
+       if (asc_dvc->err_code != 0) {
+               ASC_PRINT3("AscInitGetConfig: board %d error: init_state 0x%x, "
+                          "err_code 0x%x\n", boardp->id, asc_dvc->init_state,
+                          asc_dvc->err_code);
+       }
+
+       return asc_dvc->err_code;
 }
 
-static ushort __devinit AscInitSetConfig(ASC_DVC_VAR *asc_dvc)
+static int __devinit AscInitSetConfig(struct pci_dev *pdev, asc_board_t *boardp)
 {
-       ushort warn_code = 0;
+       ASC_DVC_VAR *asc_dvc = &boardp->dvc_var.asc_dvc_var;
+       PortAddr iop_base = asc_dvc->iop_base;
+       unsigned short cfg_msw;
+       unsigned short warn_code = 0;
 
        asc_dvc->init_state |= ASC_INIT_STATE_BEG_SET_CFG;
        if (asc_dvc->err_code != 0)
-               return (UW_ERR);
-       if (AscFindSignature(asc_dvc->iop_base)) {
-               warn_code |= AscInitFromAscDvcVar(asc_dvc);
-               asc_dvc->init_state |= ASC_INIT_STATE_END_SET_CFG;
-       } else {
+               return asc_dvc->err_code;
+       if (!AscFindSignature(asc_dvc->iop_base)) {
                asc_dvc->err_code = ASC_IERR_BAD_SIGNATURE;
+               return asc_dvc->err_code;
        }
-       return (warn_code);
-}
 
-static ushort __devinit AscInitFromAscDvcVar(ASC_DVC_VAR *asc_dvc)
-{
-       PortAddr iop_base;
-       ushort cfg_msw;
-       ushort warn_code;
-
-       iop_base = asc_dvc->iop_base;
-       warn_code = 0;
        cfg_msw = AscGetChipCfgMsw(iop_base);
        if ((cfg_msw & ASC_CFG_MSW_CLR_MASK) != 0) {
-               cfg_msw &= (~(ASC_CFG_MSW_CLR_MASK));
+               cfg_msw &= ~ASC_CFG_MSW_CLR_MASK;
                warn_code |= ASC_WARN_CFG_MSW_RECOVER;
                AscSetChipCfgMsw(iop_base, cfg_msw);
        }
@@ -10306,7 +8382,6 @@ static ushort __devinit AscInitFromAscDvcVar(ASC_DVC_VAR *asc_dvc)
        }
 #ifdef CONFIG_PCI
        if (asc_dvc->bus_type & ASC_IS_PCI) {
-               struct pci_dev *pdev = to_pci_dev(asc_dvc->cfg->dev);
                cfg_msw &= 0xFFC0;
                AscSetChipCfgMsw(iop_base, cfg_msw);
                if ((asc_dvc->bus_type & ASC_IS_PCI_ULTRA) == ASC_IS_PCI_ULTRA) {
@@ -10336,21 +8411,59 @@ static ushort __devinit AscInitFromAscDvcVar(ASC_DVC_VAR *asc_dvc)
                AscSetIsaDmaSpeed(iop_base, asc_dvc->cfg->isa_dma_speed);
        }
 #endif /* CONFIG_ISA */
-       return (warn_code);
-}
 
-static ushort AscInitAsc1000Driver(ASC_DVC_VAR *asc_dvc)
-{
-       ushort warn_code;
-       PortAddr iop_base;
+       asc_dvc->init_state |= ASC_INIT_STATE_END_SET_CFG;
 
-       iop_base = asc_dvc->iop_base;
-       warn_code = 0;
-       if ((asc_dvc->dvc_cntl & ASC_CNTL_RESET_SCSI) &&
+       switch (warn_code) {
+       case 0: /* No error. */
+               break;
+       case ASC_WARN_IO_PORT_ROTATE:
+               ASC_PRINT1("AscInitSetConfig: board %d: I/O port address "
+                          "modified\n", boardp->id);
+               break;
+       case ASC_WARN_AUTO_CONFIG:
+               ASC_PRINT1("AscInitSetConfig: board %d: I/O port increment "
+                          "switch enabled\n", boardp->id);
+               break;
+       case ASC_WARN_EEPROM_CHKSUM:
+               ASC_PRINT1("AscInitSetConfig: board %d: EEPROM checksum "
+                          "error\n", boardp->id);
+               break;
+       case ASC_WARN_IRQ_MODIFIED:
+               ASC_PRINT1("AscInitSetConfig: board %d: IRQ modified\n",
+                          boardp->id);
+               break;
+       case ASC_WARN_CMD_QNG_CONFLICT:
+               ASC_PRINT1("AscInitSetConfig: board %d: tag queuing w/o "
+                          "disconnects\n",
+                    boardp->id);
+               break;
+       default:
+               ASC_PRINT2("AscInitSetConfig: board %d: unknown warning: "
+                          "0x%x\n", boardp->id, warn_code);
+               break;
+       }
+
+       if (asc_dvc->err_code != 0) {
+               ASC_PRINT3("AscInitSetConfig: board %d error: init_state 0x%x, "
+                          "err_code 0x%x\n", boardp->id, asc_dvc->init_state,
+                          asc_dvc->err_code);
+       }
+
+       return asc_dvc->err_code;
+}
+
+static ushort AscInitAsc1000Driver(ASC_DVC_VAR *asc_dvc)
+{
+       ushort warn_code;
+       PortAddr iop_base;
+
+       iop_base = asc_dvc->iop_base;
+       warn_code = 0;
+       if ((asc_dvc->dvc_cntl & ASC_CNTL_RESET_SCSI) &&
            !(asc_dvc->init_state & ASC_INIT_RESET_SCSI_DONE)) {
                AscResetChipAndScsiBus(asc_dvc);
-               DvcSleepMilliSecond((ASC_DCNT)
-                                   ((ushort)asc_dvc->scsi_reset_wait * 1000));
+               mdelay(asc_dvc->scsi_reset_wait * 1000); /* XXX: msleep? */
        }
        asc_dvc->init_state |= ASC_INIT_STATE_BEG_LOAD_MC;
        if (asc_dvc->err_code != 0)
@@ -10468,12 +8581,12 @@ static ushort __devinit AscInitAscDvcVar(ASC_DVC_VAR *asc_dvc)
        }
 
        asc_dvc->cfg->isa_dma_speed = ASC_DEF_ISA_DMA_SPEED;
-       if (AscGetChipBusType(iop_base) == ASC_IS_ISAPNP) {
-               AscSetChipIFC(iop_base, IFC_INIT_DEFAULT);
-               asc_dvc->bus_type = ASC_IS_ISAPNP;
-       }
 #ifdef CONFIG_ISA
        if ((asc_dvc->bus_type & ASC_IS_ISA) != 0) {
+               if (chip_version >= ASC_CHIP_MIN_VER_ISA_PNP) {
+                       AscSetChipIFC(iop_base, IFC_INIT_DEFAULT);
+                       asc_dvc->bus_type = ASC_IS_ISAPNP;
+               }
                asc_dvc->cfg->isa_dma_channel =
                    (uchar)AscGetIsaDmaChannel(iop_base);
        }
@@ -10507,8 +8620,7 @@ static ushort __devinit AscInitFromEEP(ASC_DVC_VAR *asc_dvc)
            (AscGetChipScsiCtrl(iop_base) != 0)) {
                asc_dvc->init_state |= ASC_INIT_RESET_SCSI_DONE;
                AscResetChipAndScsiBus(asc_dvc);
-               DvcSleepMilliSecond((ASC_DCNT)
-                                   ((ushort)asc_dvc->scsi_reset_wait * 1000));
+               mdelay(asc_dvc->scsi_reset_wait * 1000); /* XXX: msleep? */
        }
        if (AscIsChipHalted(iop_base) == FALSE) {
                asc_dvc->err_code |= ASC_IERR_START_STOP_CHIP;
@@ -10523,7 +8635,7 @@ static ushort __devinit AscInitFromEEP(ASC_DVC_VAR *asc_dvc)
        cfg_msw = AscGetChipCfgMsw(iop_base);
        cfg_lsw = AscGetChipCfgLsw(iop_base);
        if ((cfg_msw & ASC_CFG_MSW_CLR_MASK) != 0) {
-               cfg_msw &= (~(ASC_CFG_MSW_CLR_MASK));
+               cfg_msw &= ~ASC_CFG_MSW_CLR_MASK;
                warn_code |= ASC_WARN_CFG_MSW_RECOVER;
                AscSetChipCfgMsw(iop_base, cfg_msw);
        }
@@ -10722,7 +8834,7 @@ static int __devinit AscTestExternalLram(ASC_DVC_VAR *asc_dvc)
        saved_word = AscReadLramWord(iop_base, q_addr);
        AscSetChipLramAddr(iop_base, q_addr);
        AscSetChipLramData(iop_base, 0x55AA);
-       DvcSleepMilliSecond(10);
+       mdelay(10);
        AscSetChipLramAddr(iop_base, q_addr);
        if (AscGetChipLramData(iop_base) == 0x55AA) {
                sta = 1;
@@ -10739,7 +8851,7 @@ static int __devinit AscWriteEEPCmdReg(PortAddr iop_base, uchar cmd_reg)
        retry = 0;
        while (TRUE) {
                AscSetChipEEPCmd(iop_base, cmd_reg);
-               DvcSleepMilliSecond(1);
+               mdelay(1);
                read_back = AscGetChipEEPCmd(iop_base);
                if (read_back == cmd_reg) {
                        return (1);
@@ -10758,7 +8870,7 @@ static int __devinit AscWriteEEPDataReg(PortAddr iop_base, ushort data_reg)
        retry = 0;
        while (TRUE) {
                AscSetChipEEPData(iop_base, data_reg);
-               DvcSleepMilliSecond(1);
+               mdelay(1);
                read_back = AscGetChipEEPData(iop_base);
                if (read_back == data_reg) {
                        return (1);
@@ -10771,13 +8883,13 @@ static int __devinit AscWriteEEPDataReg(PortAddr iop_base, ushort data_reg)
 
 static void __devinit AscWaitEEPRead(void)
 {
-       DvcSleepMilliSecond(1);
+       mdelay(1);
        return;
 }
 
 static void __devinit AscWaitEEPWrite(void)
 {
-       DvcSleepMilliSecond(20);
+       mdelay(20);
        return;
 }
 
@@ -10984,26 +9096,22 @@ static void AscAsyncFix(ASC_DVC_VAR *asc_dvc, struct scsi_device *sdev)
        char type = sdev->type;
        ASC_SCSI_BIT_ID_TYPE tid_bits = 1 << sdev->id;
 
-       if (asc_dvc->bug_fix_cntl & ASC_BUG_FIX_ASYN_USE_SYN) {
-               if (!(asc_dvc->init_sdtr & tid_bits)) {
-                       if ((type == TYPE_ROM) &&
-                           (strncmp(sdev->vendor, "HP ", 3) == 0)) {
-                               asc_dvc->pci_fix_asyn_xfer_always |= tid_bits;
-                       }
-                       asc_dvc->pci_fix_asyn_xfer |= tid_bits;
-                       if ((type == TYPE_PROCESSOR) ||
-                           (type == TYPE_SCANNER) || (type == TYPE_ROM) ||
-                           (type == TYPE_TAPE)) {
-                               asc_dvc->pci_fix_asyn_xfer &= ~tid_bits;
-                       }
+       if (!(asc_dvc->bug_fix_cntl & ASC_BUG_FIX_ASYN_USE_SYN))
+               return;
+       if (asc_dvc->init_sdtr & tid_bits)
+               return;
+
+       if ((type == TYPE_ROM) && (strncmp(sdev->vendor, "HP ", 3) == 0))
+               asc_dvc->pci_fix_asyn_xfer_always |= tid_bits;
+
+       asc_dvc->pci_fix_asyn_xfer |= tid_bits;
+       if ((type == TYPE_PROCESSOR) || (type == TYPE_SCANNER) ||
+           (type == TYPE_ROM) || (type == TYPE_TAPE))
+               asc_dvc->pci_fix_asyn_xfer &= ~tid_bits;
 
-                       if (asc_dvc->pci_fix_asyn_xfer & tid_bits) {
-                               AscSetRunChipSynRegAtID(asc_dvc->iop_base,
-                                       sdev->id,
+       if (asc_dvc->pci_fix_asyn_xfer & tid_bits)
+               AscSetRunChipSynRegAtID(asc_dvc->iop_base, sdev->id,
                                        ASYN_SDTR_DATA_FIX_PCI_REV_AB);
-                       }
-               }
-       }
 }
 
 static uchar AscReadLramByte(PortAddr iop_base, ushort addr)
@@ -11165,642 +9273,427 @@ AscMemWordSetLram(PortAddr iop_base, ushort s_addr, ushort set_wval, int words)
        return;
 }
 
-/*
- * --- Adv Library Functions
- */
-
-/* a_mcode.h */
-
 /* Microcode buffer is kept after initialization for error recovery. */
 static unsigned char _adv_asc3550_buf[] = {
        0x00, 0x00, 0x00, 0xf2, 0x00, 0xf0, 0x00, 0x16, 0x18, 0xe4, 0x00, 0xfc,
-       0x01, 0x00, 0x48, 0xe4,
-       0xbe, 0x18, 0x18, 0x80, 0x03, 0xf6, 0x02, 0x00, 0x00, 0xfa, 0xff, 0xff,
-       0x28, 0x0e, 0x9e, 0xe7,
-       0xff, 0x00, 0x82, 0xe7, 0x00, 0xea, 0x00, 0xf6, 0x01, 0xe6, 0x09, 0xe7,
-       0x55, 0xf0, 0x01, 0xf6,
+       0x01, 0x00, 0x48, 0xe4, 0xbe, 0x18, 0x18, 0x80, 0x03, 0xf6, 0x02, 0x00,
+       0x00, 0xfa, 0xff, 0xff, 0x28, 0x0e, 0x9e, 0xe7, 0xff, 0x00, 0x82, 0xe7,
+       0x00, 0xea, 0x00, 0xf6, 0x01, 0xe6, 0x09, 0xe7, 0x55, 0xf0, 0x01, 0xf6,
        0x01, 0xfa, 0x08, 0x00, 0x03, 0x00, 0x04, 0x00, 0x18, 0xf4, 0x10, 0x00,
-       0x00, 0xec, 0x85, 0xf0,
-       0xbc, 0x00, 0xd5, 0xf0, 0x8e, 0x0c, 0x38, 0x54, 0x00, 0xe6, 0x1e, 0xf0,
-       0x86, 0xf0, 0xb4, 0x00,
-       0x98, 0x57, 0xd0, 0x01, 0x0c, 0x1c, 0x3e, 0x1c, 0x0c, 0x00, 0xbb, 0x00,
-       0xaa, 0x18, 0x02, 0x80,
+       0x00, 0xec, 0x85, 0xf0, 0xbc, 0x00, 0xd5, 0xf0, 0x8e, 0x0c, 0x38, 0x54,
+       0x00, 0xe6, 0x1e, 0xf0, 0x86, 0xf0, 0xb4, 0x00, 0x98, 0x57, 0xd0, 0x01,
+       0x0c, 0x1c, 0x3e, 0x1c, 0x0c, 0x00, 0xbb, 0x00, 0xaa, 0x18, 0x02, 0x80,
        0x32, 0xf0, 0x01, 0xfc, 0x88, 0x0c, 0xc6, 0x12, 0x02, 0x13, 0x18, 0x40,
-       0x00, 0x57, 0x01, 0xea,
-       0x3c, 0x00, 0x6c, 0x01, 0x6e, 0x01, 0x04, 0x12, 0x3e, 0x57, 0x00, 0x80,
-       0x03, 0xe6, 0xb6, 0x00,
-       0xc0, 0x00, 0x01, 0x01, 0x3e, 0x01, 0xda, 0x0f, 0x22, 0x10, 0x08, 0x12,
-       0x02, 0x4a, 0xb9, 0x54,
+       0x00, 0x57, 0x01, 0xea, 0x3c, 0x00, 0x6c, 0x01, 0x6e, 0x01, 0x04, 0x12,
+       0x3e, 0x57, 0x00, 0x80, 0x03, 0xe6, 0xb6, 0x00, 0xc0, 0x00, 0x01, 0x01,
+       0x3e, 0x01, 0xda, 0x0f, 0x22, 0x10, 0x08, 0x12, 0x02, 0x4a, 0xb9, 0x54,
        0x03, 0x58, 0x1b, 0x80, 0x30, 0xe4, 0x4b, 0xe4, 0x20, 0x00, 0x32, 0x00,
-       0x3e, 0x00, 0x80, 0x00,
-       0x24, 0x01, 0x3c, 0x01, 0x68, 0x01, 0x6a, 0x01, 0x70, 0x01, 0x72, 0x01,
-       0x74, 0x01, 0x76, 0x01,
-       0x78, 0x01, 0x62, 0x0a, 0x92, 0x0c, 0x2c, 0x10, 0x2e, 0x10, 0x06, 0x13,
-       0x4c, 0x1c, 0xbb, 0x55,
+       0x3e, 0x00, 0x80, 0x00, 0x24, 0x01, 0x3c, 0x01, 0x68, 0x01, 0x6a, 0x01,
+       0x70, 0x01, 0x72, 0x01, 0x74, 0x01, 0x76, 0x01, 0x78, 0x01, 0x62, 0x0a,
+       0x92, 0x0c, 0x2c, 0x10, 0x2e, 0x10, 0x06, 0x13, 0x4c, 0x1c, 0xbb, 0x55,
        0x3c, 0x56, 0x04, 0x80, 0x4a, 0xe4, 0x02, 0xee, 0x5b, 0xf0, 0xb1, 0xf0,
-       0x03, 0xf7, 0x06, 0xf7,
-       0x03, 0xfc, 0x0f, 0x00, 0x40, 0x00, 0xbe, 0x00, 0x00, 0x01, 0xb0, 0x08,
-       0x30, 0x13, 0x64, 0x15,
-       0x32, 0x1c, 0x38, 0x1c, 0x4e, 0x1c, 0x10, 0x44, 0x02, 0x48, 0x00, 0x4c,
-       0x04, 0xea, 0x5d, 0xf0,
+       0x03, 0xf7, 0x06, 0xf7, 0x03, 0xfc, 0x0f, 0x00, 0x40, 0x00, 0xbe, 0x00,
+       0x00, 0x01, 0xb0, 0x08, 0x30, 0x13, 0x64, 0x15, 0x32, 0x1c, 0x38, 0x1c,
+       0x4e, 0x1c, 0x10, 0x44, 0x02, 0x48, 0x00, 0x4c, 0x04, 0xea, 0x5d, 0xf0,
        0x04, 0xf6, 0x02, 0xfc, 0x05, 0x00, 0x34, 0x00, 0x36, 0x00, 0x98, 0x00,
-       0xcc, 0x00, 0x20, 0x01,
-       0x4e, 0x01, 0x4e, 0x0b, 0x1e, 0x0e, 0x0c, 0x10, 0x0a, 0x12, 0x04, 0x13,
-       0x40, 0x13, 0x30, 0x1c,
-       0x00, 0x4e, 0xbd, 0x56, 0x06, 0x83, 0x00, 0xdc, 0x05, 0xf0, 0x09, 0xf0,
-       0x59, 0xf0, 0xa7, 0xf0,
+       0xcc, 0x00, 0x20, 0x01, 0x4e, 0x01, 0x4e, 0x0b, 0x1e, 0x0e, 0x0c, 0x10,
+       0x0a, 0x12, 0x04, 0x13, 0x40, 0x13, 0x30, 0x1c, 0x00, 0x4e, 0xbd, 0x56,
+       0x06, 0x83, 0x00, 0xdc, 0x05, 0xf0, 0x09, 0xf0, 0x59, 0xf0, 0xa7, 0xf0,
        0xb8, 0xf0, 0x0e, 0xf7, 0x06, 0x00, 0x19, 0x00, 0x33, 0x00, 0x9b, 0x00,
-       0xa4, 0x00, 0xb5, 0x00,
-       0xba, 0x00, 0xd0, 0x00, 0xe1, 0x00, 0xe7, 0x00, 0xde, 0x03, 0x56, 0x0a,
-       0x14, 0x0e, 0x02, 0x10,
-       0x04, 0x10, 0x0a, 0x10, 0x36, 0x10, 0x0a, 0x13, 0x12, 0x13, 0x52, 0x13,
-       0x10, 0x15, 0x14, 0x15,
+       0xa4, 0x00, 0xb5, 0x00, 0xba, 0x00, 0xd0, 0x00, 0xe1, 0x00, 0xe7, 0x00,
+       0xde, 0x03, 0x56, 0x0a, 0x14, 0x0e, 0x02, 0x10, 0x04, 0x10, 0x0a, 0x10,
+       0x36, 0x10, 0x0a, 0x13, 0x12, 0x13, 0x52, 0x13, 0x10, 0x15, 0x14, 0x15,
        0xac, 0x16, 0x20, 0x1c, 0x34, 0x1c, 0x36, 0x1c, 0x08, 0x44, 0x38, 0x44,
-       0x91, 0x44, 0x0a, 0x45,
-       0x48, 0x46, 0x01, 0x48, 0x68, 0x54, 0x83, 0x55, 0xb0, 0x57, 0x01, 0x58,
-       0x83, 0x59, 0x05, 0xe6,
-       0x0b, 0xf0, 0x0c, 0xf0, 0x5c, 0xf0, 0x4b, 0xf4, 0x04, 0xf8, 0x05, 0xf8,
-       0x02, 0xfa, 0x03, 0xfa,
+       0x91, 0x44, 0x0a, 0x45, 0x48, 0x46, 0x01, 0x48, 0x68, 0x54, 0x83, 0x55,
+       0xb0, 0x57, 0x01, 0x58, 0x83, 0x59, 0x05, 0xe6, 0x0b, 0xf0, 0x0c, 0xf0,
+       0x5c, 0xf0, 0x4b, 0xf4, 0x04, 0xf8, 0x05, 0xf8, 0x02, 0xfa, 0x03, 0xfa,
        0x04, 0xfc, 0x05, 0xfc, 0x07, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x1c, 0x00,
-       0x9e, 0x00, 0xa8, 0x00,
-       0xaa, 0x00, 0xb9, 0x00, 0xe0, 0x00, 0x22, 0x01, 0x26, 0x01, 0x79, 0x01,
-       0x7a, 0x01, 0xc0, 0x01,
-       0xc2, 0x01, 0x7c, 0x02, 0x5a, 0x03, 0xea, 0x04, 0xe8, 0x07, 0x68, 0x08,
-       0x69, 0x08, 0xba, 0x08,
+       0x9e, 0x00, 0xa8, 0x00, 0xaa, 0x00, 0xb9, 0x00, 0xe0, 0x00, 0x22, 0x01,
+       0x26, 0x01, 0x79, 0x01, 0x7a, 0x01, 0xc0, 0x01, 0xc2, 0x01, 0x7c, 0x02,
+       0x5a, 0x03, 0xea, 0x04, 0xe8, 0x07, 0x68, 0x08, 0x69, 0x08, 0xba, 0x08,
        0xe9, 0x09, 0x06, 0x0b, 0x3a, 0x0e, 0x00, 0x10, 0x1a, 0x10, 0xed, 0x10,
-       0xf1, 0x10, 0x06, 0x12,
-       0x0c, 0x13, 0x16, 0x13, 0x1e, 0x13, 0x82, 0x13, 0x42, 0x14, 0xd6, 0x14,
-       0x8a, 0x15, 0xc6, 0x17,
-       0xd2, 0x17, 0x6b, 0x18, 0x12, 0x1c, 0x46, 0x1c, 0x9c, 0x32, 0x00, 0x40,
-       0x0e, 0x47, 0x48, 0x47,
+       0xf1, 0x10, 0x06, 0x12, 0x0c, 0x13, 0x16, 0x13, 0x1e, 0x13, 0x82, 0x13,
+       0x42, 0x14, 0xd6, 0x14, 0x8a, 0x15, 0xc6, 0x17, 0xd2, 0x17, 0x6b, 0x18,
+       0x12, 0x1c, 0x46, 0x1c, 0x9c, 0x32, 0x00, 0x40, 0x0e, 0x47, 0x48, 0x47,
        0x41, 0x48, 0x89, 0x48, 0x80, 0x4c, 0x00, 0x54, 0x44, 0x55, 0xe5, 0x55,
-       0x14, 0x56, 0x77, 0x57,
-       0xbf, 0x57, 0x40, 0x5c, 0x06, 0x80, 0x08, 0x90, 0x03, 0xa1, 0xfe, 0x9c,
-       0xf0, 0x29, 0x02, 0xfe,
-       0xb8, 0x0c, 0xff, 0x10, 0x00, 0x00, 0xd0, 0xfe, 0xcc, 0x18, 0x00, 0xcf,
-       0xfe, 0x80, 0x01, 0xff,
+       0x14, 0x56, 0x77, 0x57, 0xbf, 0x57, 0x40, 0x5c, 0x06, 0x80, 0x08, 0x90,
+       0x03, 0xa1, 0xfe, 0x9c, 0xf0, 0x29, 0x02, 0xfe, 0xb8, 0x0c, 0xff, 0x10,
+       0x00, 0x00, 0xd0, 0xfe, 0xcc, 0x18, 0x00, 0xcf, 0xfe, 0x80, 0x01, 0xff,
        0x03, 0x00, 0x00, 0xfe, 0x93, 0x15, 0xfe, 0x0f, 0x05, 0xff, 0x38, 0x00,
-       0x00, 0xfe, 0x57, 0x24,
-       0x00, 0xfe, 0x48, 0x00, 0x4f, 0xff, 0x04, 0x00, 0x00, 0x10, 0xff, 0x09,
-       0x00, 0x00, 0xff, 0x08,
-       0x01, 0x01, 0xff, 0x08, 0xff, 0xff, 0xff, 0x27, 0x00, 0x00, 0xff, 0x10,
-       0xff, 0xff, 0xff, 0x0f,
+       0x00, 0xfe, 0x57, 0x24, 0x00, 0xfe, 0x48, 0x00, 0x4f, 0xff, 0x04, 0x00,
+       0x00, 0x10, 0xff, 0x09, 0x00, 0x00, 0xff, 0x08, 0x01, 0x01, 0xff, 0x08,
+       0xff, 0xff, 0xff, 0x27, 0x00, 0x00, 0xff, 0x10, 0xff, 0xff, 0xff, 0x0f,
        0x00, 0x00, 0xfe, 0x78, 0x56, 0xfe, 0x34, 0x12, 0xff, 0x21, 0x00, 0x00,
-       0xfe, 0x04, 0xf7, 0xcf,
-       0x2a, 0x67, 0x0b, 0x01, 0xfe, 0xce, 0x0e, 0xfe, 0x04, 0xf7, 0xcf, 0x67,
-       0x0b, 0x3c, 0x2a, 0xfe,
-       0x3d, 0xf0, 0xfe, 0x02, 0x02, 0xfe, 0x20, 0xf0, 0x9c, 0xfe, 0x91, 0xf0,
-       0xfe, 0xf0, 0x01, 0xfe,
+       0xfe, 0x04, 0xf7, 0xcf, 0x2a, 0x67, 0x0b, 0x01, 0xfe, 0xce, 0x0e, 0xfe,
+       0x04, 0xf7, 0xcf, 0x67, 0x0b, 0x3c, 0x2a, 0xfe, 0x3d, 0xf0, 0xfe, 0x02,
+       0x02, 0xfe, 0x20, 0xf0, 0x9c, 0xfe, 0x91, 0xf0, 0xfe, 0xf0, 0x01, 0xfe,
        0x90, 0xf0, 0xfe, 0xf0, 0x01, 0xfe, 0x8f, 0xf0, 0x9c, 0x05, 0x51, 0x3b,
-       0x02, 0xfe, 0xd4, 0x0c,
-       0x01, 0xfe, 0x44, 0x0d, 0xfe, 0xdd, 0x12, 0xfe, 0xfc, 0x10, 0xfe, 0x28,
-       0x1c, 0x05, 0xfe, 0xa6,
-       0x00, 0xfe, 0xd3, 0x12, 0x47, 0x18, 0xfe, 0xa6, 0x00, 0xb5, 0xfe, 0x48,
-       0xf0, 0xfe, 0x86, 0x02,
+       0x02, 0xfe, 0xd4, 0x0c, 0x01, 0xfe, 0x44, 0x0d, 0xfe, 0xdd, 0x12, 0xfe,
+       0xfc, 0x10, 0xfe, 0x28, 0x1c, 0x05, 0xfe, 0xa6, 0x00, 0xfe, 0xd3, 0x12,
+       0x47, 0x18, 0xfe, 0xa6, 0x00, 0xb5, 0xfe, 0x48, 0xf0, 0xfe, 0x86, 0x02,
        0xfe, 0x49, 0xf0, 0xfe, 0xa0, 0x02, 0xfe, 0x4a, 0xf0, 0xfe, 0xbe, 0x02,
-       0xfe, 0x46, 0xf0, 0xfe,
-       0x50, 0x02, 0xfe, 0x47, 0xf0, 0xfe, 0x56, 0x02, 0xfe, 0x43, 0xf0, 0xfe,
-       0x44, 0x02, 0xfe, 0x44,
-       0xf0, 0xfe, 0x48, 0x02, 0xfe, 0x45, 0xf0, 0xfe, 0x4c, 0x02, 0x17, 0x0b,
-       0xa0, 0x17, 0x06, 0x18,
+       0xfe, 0x46, 0xf0, 0xfe, 0x50, 0x02, 0xfe, 0x47, 0xf0, 0xfe, 0x56, 0x02,
+       0xfe, 0x43, 0xf0, 0xfe, 0x44, 0x02, 0xfe, 0x44, 0xf0, 0xfe, 0x48, 0x02,
+       0xfe, 0x45, 0xf0, 0xfe, 0x4c, 0x02, 0x17, 0x0b, 0xa0, 0x17, 0x06, 0x18,
        0x96, 0x02, 0x29, 0xfe, 0x00, 0x1c, 0xde, 0xfe, 0x02, 0x1c, 0xdd, 0xfe,
-       0x1e, 0x1c, 0xfe, 0xe9,
-       0x10, 0x01, 0xfe, 0x20, 0x17, 0xfe, 0xe7, 0x10, 0xfe, 0x06, 0xfc, 0xc7,
-       0x0a, 0x6b, 0x01, 0x9e,
-       0x02, 0x29, 0x14, 0x4d, 0x37, 0x97, 0x01, 0xfe, 0x64, 0x0f, 0x0a, 0x6b,
-       0x01, 0x82, 0xfe, 0xbd,
+       0x1e, 0x1c, 0xfe, 0xe9, 0x10, 0x01, 0xfe, 0x20, 0x17, 0xfe, 0xe7, 0x10,
+       0xfe, 0x06, 0xfc, 0xc7, 0x0a, 0x6b, 0x01, 0x9e, 0x02, 0x29, 0x14, 0x4d,
+       0x37, 0x97, 0x01, 0xfe, 0x64, 0x0f, 0x0a, 0x6b, 0x01, 0x82, 0xfe, 0xbd,
        0x10, 0x0a, 0x6b, 0x01, 0x82, 0xfe, 0xad, 0x10, 0xfe, 0x16, 0x1c, 0xfe,
-       0x58, 0x1c, 0x17, 0x06,
-       0x18, 0x96, 0x2a, 0x25, 0x29, 0xfe, 0x3d, 0xf0, 0xfe, 0x02, 0x02, 0x21,
-       0xfe, 0x94, 0x02, 0xfe,
-       0x5a, 0x1c, 0xea, 0xfe, 0x14, 0x1c, 0x14, 0xfe, 0x30, 0x00, 0x37, 0x97,
-       0x01, 0xfe, 0x54, 0x0f,
+       0x58, 0x1c, 0x17, 0x06, 0x18, 0x96, 0x2a, 0x25, 0x29, 0xfe, 0x3d, 0xf0,
+       0xfe, 0x02, 0x02, 0x21, 0xfe, 0x94, 0x02, 0xfe, 0x5a, 0x1c, 0xea, 0xfe,
+       0x14, 0x1c, 0x14, 0xfe, 0x30, 0x00, 0x37, 0x97, 0x01, 0xfe, 0x54, 0x0f,
        0x17, 0x06, 0x18, 0x96, 0x02, 0xd0, 0x1e, 0x20, 0x07, 0x10, 0x34, 0xfe,
-       0x69, 0x10, 0x17, 0x06,
-       0x18, 0x96, 0xfe, 0x04, 0xec, 0x20, 0x46, 0x3d, 0x12, 0x20, 0xfe, 0x05,
-       0xf6, 0xc7, 0x01, 0xfe,
-       0x52, 0x16, 0x09, 0x4a, 0x4c, 0x35, 0x11, 0x2d, 0x3c, 0x8a, 0x01, 0xe6,
-       0x02, 0x29, 0x0a, 0x40,
+       0x69, 0x10, 0x17, 0x06, 0x18, 0x96, 0xfe, 0x04, 0xec, 0x20, 0x46, 0x3d,
+       0x12, 0x20, 0xfe, 0x05, 0xf6, 0xc7, 0x01, 0xfe, 0x52, 0x16, 0x09, 0x4a,
+       0x4c, 0x35, 0x11, 0x2d, 0x3c, 0x8a, 0x01, 0xe6, 0x02, 0x29, 0x0a, 0x40,
        0x01, 0x0e, 0x07, 0x00, 0x5d, 0x01, 0x6f, 0xfe, 0x18, 0x10, 0xfe, 0x41,
-       0x58, 0x0a, 0x99, 0x01,
-       0x0e, 0xfe, 0xc8, 0x54, 0x64, 0xfe, 0x0c, 0x03, 0x01, 0xe6, 0x02, 0x29,
-       0x2a, 0x46, 0xfe, 0x02,
-       0xe8, 0x27, 0xf8, 0xfe, 0x9e, 0x43, 0xf7, 0xfe, 0x27, 0xf0, 0xfe, 0xdc,
-       0x01, 0xfe, 0x07, 0x4b,
+       0x58, 0x0a, 0x99, 0x01, 0x0e, 0xfe, 0xc8, 0x54, 0x64, 0xfe, 0x0c, 0x03,
+       0x01, 0xe6, 0x02, 0x29, 0x2a, 0x46, 0xfe, 0x02, 0xe8, 0x27, 0xf8, 0xfe,
+       0x9e, 0x43, 0xf7, 0xfe, 0x27, 0xf0, 0xfe, 0xdc, 0x01, 0xfe, 0x07, 0x4b,
        0xfe, 0x20, 0xf0, 0x9c, 0xfe, 0x40, 0x1c, 0x25, 0xd2, 0xfe, 0x26, 0xf0,
-       0xfe, 0x56, 0x03, 0xfe,
-       0xa0, 0xf0, 0xfe, 0x44, 0x03, 0xfe, 0x11, 0xf0, 0x9c, 0xfe, 0xef, 0x10,
-       0xfe, 0x9f, 0xf0, 0xfe,
-       0x64, 0x03, 0xeb, 0x0f, 0xfe, 0x11, 0x00, 0x02, 0x5a, 0x2a, 0xfe, 0x48,
-       0x1c, 0xeb, 0x09, 0x04,
+       0xfe, 0x56, 0x03, 0xfe, 0xa0, 0xf0, 0xfe, 0x44, 0x03, 0xfe, 0x11, 0xf0,
+       0x9c, 0xfe, 0xef, 0x10, 0xfe, 0x9f, 0xf0, 0xfe, 0x64, 0x03, 0xeb, 0x0f,
+       0xfe, 0x11, 0x00, 0x02, 0x5a, 0x2a, 0xfe, 0x48, 0x1c, 0xeb, 0x09, 0x04,
        0x1d, 0xfe, 0x18, 0x13, 0x23, 0x1e, 0x98, 0xac, 0x12, 0x98, 0x0a, 0x40,
-       0x01, 0x0e, 0xac, 0x75,
-       0x01, 0xfe, 0xbc, 0x15, 0x11, 0xca, 0x25, 0xd2, 0xfe, 0x01, 0xf0, 0xd2,
-       0xfe, 0x82, 0xf0, 0xfe,
-       0x92, 0x03, 0xec, 0x11, 0xfe, 0xe4, 0x00, 0x65, 0xfe, 0xa4, 0x03, 0x25,
-       0x32, 0x1f, 0xfe, 0xb4,
+       0x01, 0x0e, 0xac, 0x75, 0x01, 0xfe, 0xbc, 0x15, 0x11, 0xca, 0x25, 0xd2,
+       0xfe, 0x01, 0xf0, 0xd2, 0xfe, 0x82, 0xf0, 0xfe, 0x92, 0x03, 0xec, 0x11,
+       0xfe, 0xe4, 0x00, 0x65, 0xfe, 0xa4, 0x03, 0x25, 0x32, 0x1f, 0xfe, 0xb4,
        0x03, 0x01, 0x43, 0xfe, 0x06, 0xf0, 0xfe, 0xc4, 0x03, 0x8d, 0x81, 0xfe,
-       0x0a, 0xf0, 0xfe, 0x7a,
-       0x06, 0x02, 0x22, 0x05, 0x6b, 0x28, 0x16, 0xfe, 0xf6, 0x04, 0x14, 0x2c,
-       0x01, 0x33, 0x8f, 0xfe,
-       0x66, 0x02, 0x02, 0xd1, 0xeb, 0x2a, 0x67, 0x1a, 0xfe, 0x67, 0x1b, 0xf8,
-       0xf7, 0xfe, 0x48, 0x1c,
+       0x0a, 0xf0, 0xfe, 0x7a, 0x06, 0x02, 0x22, 0x05, 0x6b, 0x28, 0x16, 0xfe,
+       0xf6, 0x04, 0x14, 0x2c, 0x01, 0x33, 0x8f, 0xfe, 0x66, 0x02, 0x02, 0xd1,
+       0xeb, 0x2a, 0x67, 0x1a, 0xfe, 0x67, 0x1b, 0xf8, 0xf7, 0xfe, 0x48, 0x1c,
        0x70, 0x01, 0x6e, 0x87, 0x0a, 0x40, 0x01, 0x0e, 0x07, 0x00, 0x16, 0xd3,
-       0x0a, 0xca, 0x01, 0x0e,
-       0x74, 0x60, 0x59, 0x76, 0x27, 0x05, 0x6b, 0x28, 0xfe, 0x10, 0x12, 0x14,
-       0x2c, 0x01, 0x33, 0x8f,
-       0xfe, 0x66, 0x02, 0x02, 0xd1, 0xbc, 0x7d, 0xbd, 0x7f, 0x25, 0x22, 0x65,
-       0xfe, 0x3c, 0x04, 0x1f,
+       0x0a, 0xca, 0x01, 0x0e, 0x74, 0x60, 0x59, 0x76, 0x27, 0x05, 0x6b, 0x28,
+       0xfe, 0x10, 0x12, 0x14, 0x2c, 0x01, 0x33, 0x8f, 0xfe, 0x66, 0x02, 0x02,
+       0xd1, 0xbc, 0x7d, 0xbd, 0x7f, 0x25, 0x22, 0x65, 0xfe, 0x3c, 0x04, 0x1f,
        0xfe, 0x38, 0x04, 0x68, 0xfe, 0xa0, 0x00, 0xfe, 0x9b, 0x57, 0xfe, 0x4e,
-       0x12, 0x2b, 0xff, 0x02,
-       0x00, 0x10, 0x01, 0x08, 0x1f, 0xfe, 0xe0, 0x04, 0x2b, 0x01, 0x08, 0x1f,
-       0x22, 0x30, 0x2e, 0xd5,
-       0xfe, 0x4c, 0x44, 0xfe, 0x4c, 0x12, 0x60, 0xfe, 0x44, 0x48, 0x13, 0x2c,
-       0xfe, 0x4c, 0x54, 0x64,
+       0x12, 0x2b, 0xff, 0x02, 0x00, 0x10, 0x01, 0x08, 0x1f, 0xfe, 0xe0, 0x04,
+       0x2b, 0x01, 0x08, 0x1f, 0x22, 0x30, 0x2e, 0xd5, 0xfe, 0x4c, 0x44, 0xfe,
+       0x4c, 0x12, 0x60, 0xfe, 0x44, 0x48, 0x13, 0x2c, 0xfe, 0x4c, 0x54, 0x64,
        0xd3, 0x46, 0x76, 0x27, 0xfa, 0xef, 0xfe, 0x62, 0x13, 0x09, 0x04, 0x1d,
-       0xfe, 0x2a, 0x13, 0x2f,
-       0x07, 0x7e, 0xa5, 0xfe, 0x20, 0x10, 0x13, 0x2c, 0xfe, 0x4c, 0x54, 0x64,
-       0xd3, 0xfa, 0xef, 0x86,
-       0x09, 0x04, 0x1d, 0xfe, 0x08, 0x13, 0x2f, 0x07, 0x7e, 0x6e, 0x09, 0x04,
-       0x1d, 0xfe, 0x1c, 0x12,
+       0xfe, 0x2a, 0x13, 0x2f, 0x07, 0x7e, 0xa5, 0xfe, 0x20, 0x10, 0x13, 0x2c,
+       0xfe, 0x4c, 0x54, 0x64, 0xd3, 0xfa, 0xef, 0x86, 0x09, 0x04, 0x1d, 0xfe,
+       0x08, 0x13, 0x2f, 0x07, 0x7e, 0x6e, 0x09, 0x04, 0x1d, 0xfe, 0x1c, 0x12,
        0x14, 0x92, 0x09, 0x04, 0x06, 0x3b, 0x14, 0xc4, 0x01, 0x33, 0x8f, 0xfe,
-       0x70, 0x0c, 0x02, 0x22,
-       0x2b, 0x11, 0xfe, 0xe6, 0x00, 0xfe, 0x1c, 0x90, 0xf9, 0x03, 0x14, 0x92,
-       0x01, 0x33, 0x02, 0x29,
-       0xfe, 0x42, 0x5b, 0x67, 0x1a, 0xfe, 0x46, 0x59, 0xf8, 0xf7, 0xfe, 0x87,
-       0x80, 0xfe, 0x31, 0xe4,
+       0x70, 0x0c, 0x02, 0x22, 0x2b, 0x11, 0xfe, 0xe6, 0x00, 0xfe, 0x1c, 0x90,
+       0xf9, 0x03, 0x14, 0x92, 0x01, 0x33, 0x02, 0x29, 0xfe, 0x42, 0x5b, 0x67,
+       0x1a, 0xfe, 0x46, 0x59, 0xf8, 0xf7, 0xfe, 0x87, 0x80, 0xfe, 0x31, 0xe4,
        0x4f, 0x09, 0x04, 0x0b, 0xfe, 0x78, 0x13, 0xfe, 0x20, 0x80, 0x07, 0x1a,
-       0xfe, 0x70, 0x12, 0x49,
-       0x04, 0x06, 0xfe, 0x60, 0x13, 0x05, 0xfe, 0xa2, 0x00, 0x28, 0x16, 0xfe,
-       0x80, 0x05, 0xfe, 0x31,
-       0xe4, 0x6a, 0x49, 0x04, 0x0b, 0xfe, 0x4a, 0x13, 0x05, 0xfe, 0xa0, 0x00,
-       0x28, 0xfe, 0x42, 0x12,
+       0xfe, 0x70, 0x12, 0x49, 0x04, 0x06, 0xfe, 0x60, 0x13, 0x05, 0xfe, 0xa2,
+       0x00, 0x28, 0x16, 0xfe, 0x80, 0x05, 0xfe, 0x31, 0xe4, 0x6a, 0x49, 0x04,
+       0x0b, 0xfe, 0x4a, 0x13, 0x05, 0xfe, 0xa0, 0x00, 0x28, 0xfe, 0x42, 0x12,
        0x5e, 0x01, 0x08, 0x25, 0x32, 0xf1, 0x01, 0x08, 0x26, 0xfe, 0x98, 0x05,
-       0x11, 0xfe, 0xe3, 0x00,
-       0x23, 0x49, 0xfe, 0x4a, 0xf0, 0xfe, 0x6a, 0x05, 0xfe, 0x49, 0xf0, 0xfe,
-       0x64, 0x05, 0x83, 0x24,
-       0xfe, 0x21, 0x00, 0xa1, 0x24, 0xfe, 0x22, 0x00, 0xa0, 0x24, 0x4c, 0xfe,
-       0x09, 0x48, 0x01, 0x08,
+       0x11, 0xfe, 0xe3, 0x00, 0x23, 0x49, 0xfe, 0x4a, 0xf0, 0xfe, 0x6a, 0x05,
+       0xfe, 0x49, 0xf0, 0xfe, 0x64, 0x05, 0x83, 0x24, 0xfe, 0x21, 0x00, 0xa1,
+       0x24, 0xfe, 0x22, 0x00, 0xa0, 0x24, 0x4c, 0xfe, 0x09, 0x48, 0x01, 0x08,
        0x26, 0xfe, 0x98, 0x05, 0xfe, 0xe2, 0x08, 0x49, 0x04, 0xc5, 0x3b, 0x01,
-       0x86, 0x24, 0x06, 0x12,
-       0xcc, 0x37, 0xfe, 0x27, 0x01, 0x09, 0x04, 0x1d, 0xfe, 0x22, 0x12, 0x47,
-       0x01, 0xa7, 0x14, 0x92,
-       0x09, 0x04, 0x06, 0x3b, 0x14, 0xc4, 0x01, 0x33, 0x8f, 0xfe, 0x70, 0x0c,
-       0x02, 0x22, 0x05, 0xfe,
+       0x86, 0x24, 0x06, 0x12, 0xcc, 0x37, 0xfe, 0x27, 0x01, 0x09, 0x04, 0x1d,
+       0xfe, 0x22, 0x12, 0x47, 0x01, 0xa7, 0x14, 0x92, 0x09, 0x04, 0x06, 0x3b,
+       0x14, 0xc4, 0x01, 0x33, 0x8f, 0xfe, 0x70, 0x0c, 0x02, 0x22, 0x05, 0xfe,
        0x9c, 0x00, 0x28, 0xfe, 0x3e, 0x12, 0x05, 0x50, 0x28, 0xfe, 0x36, 0x13,
-       0x47, 0x01, 0xa7, 0x26,
-       0xfe, 0x08, 0x06, 0x0a, 0x06, 0x49, 0x04, 0x19, 0xfe, 0x02, 0x12, 0x5f,
-       0x01, 0xfe, 0xaa, 0x14,
-       0x1f, 0xfe, 0xfe, 0x05, 0x11, 0x9a, 0x01, 0x43, 0x11, 0xfe, 0xe5, 0x00,
-       0x05, 0x50, 0xb4, 0x0c,
+       0x47, 0x01, 0xa7, 0x26, 0xfe, 0x08, 0x06, 0x0a, 0x06, 0x49, 0x04, 0x19,
+       0xfe, 0x02, 0x12, 0x5f, 0x01, 0xfe, 0xaa, 0x14, 0x1f, 0xfe, 0xfe, 0x05,
+       0x11, 0x9a, 0x01, 0x43, 0x11, 0xfe, 0xe5, 0x00, 0x05, 0x50, 0xb4, 0x0c,
        0x50, 0x05, 0xc6, 0x28, 0xfe, 0x62, 0x12, 0x05, 0x3f, 0x28, 0xfe, 0x5a,
-       0x13, 0x01, 0xfe, 0x14,
-       0x18, 0x01, 0xfe, 0x66, 0x18, 0xfe, 0x43, 0x48, 0xb7, 0x19, 0x13, 0x6c,
-       0xff, 0x02, 0x00, 0x57,
-       0x48, 0x8b, 0x1c, 0x3d, 0x85, 0xb7, 0x69, 0x47, 0x01, 0xa7, 0x26, 0xfe,
-       0x72, 0x06, 0x49, 0x04,
+       0x13, 0x01, 0xfe, 0x14, 0x18, 0x01, 0xfe, 0x66, 0x18, 0xfe, 0x43, 0x48,
+       0xb7, 0x19, 0x13, 0x6c, 0xff, 0x02, 0x00, 0x57, 0x48, 0x8b, 0x1c, 0x3d,
+       0x85, 0xb7, 0x69, 0x47, 0x01, 0xa7, 0x26, 0xfe, 0x72, 0x06, 0x49, 0x04,
        0x1b, 0xdf, 0x89, 0x0a, 0x4d, 0x01, 0xfe, 0xd8, 0x14, 0x1f, 0xfe, 0x68,
-       0x06, 0x11, 0x9a, 0x01,
-       0x43, 0x11, 0xfe, 0xe5, 0x00, 0x05, 0x3f, 0xb4, 0x0c, 0x3f, 0x17, 0x06,
-       0x01, 0xa7, 0xec, 0x72,
-       0x70, 0x01, 0x6e, 0x87, 0x11, 0xfe, 0xe2, 0x00, 0x01, 0x08, 0x25, 0x32,
-       0xfe, 0x0a, 0xf0, 0xfe,
+       0x06, 0x11, 0x9a, 0x01, 0x43, 0x11, 0xfe, 0xe5, 0x00, 0x05, 0x3f, 0xb4,
+       0x0c, 0x3f, 0x17, 0x06, 0x01, 0xa7, 0xec, 0x72, 0x70, 0x01, 0x6e, 0x87,
+       0x11, 0xfe, 0xe2, 0x00, 0x01, 0x08, 0x25, 0x32, 0xfe, 0x0a, 0xf0, 0xfe,
        0xa6, 0x06, 0x8c, 0xfe, 0x5c, 0x07, 0xfe, 0x06, 0xf0, 0xfe, 0x64, 0x07,
-       0x8d, 0x81, 0x02, 0x22,
-       0x09, 0x04, 0x0b, 0xfe, 0x2e, 0x12, 0x15, 0x1a, 0x01, 0x08, 0x15, 0x00,
-       0x01, 0x08, 0x15, 0x00,
-       0x01, 0x08, 0x15, 0x00, 0x01, 0x08, 0xfe, 0x99, 0xa4, 0x01, 0x08, 0x15,
-       0x00, 0x02, 0xfe, 0x32,
+       0x8d, 0x81, 0x02, 0x22, 0x09, 0x04, 0x0b, 0xfe, 0x2e, 0x12, 0x15, 0x1a,
+       0x01, 0x08, 0x15, 0x00, 0x01, 0x08, 0x15, 0x00, 0x01, 0x08, 0x15, 0x00,
+       0x01, 0x08, 0xfe, 0x99, 0xa4, 0x01, 0x08, 0x15, 0x00, 0x02, 0xfe, 0x32,
        0x08, 0x61, 0x04, 0x1b, 0xfe, 0x38, 0x12, 0x09, 0x04, 0x1b, 0x6e, 0x15,
-       0xfe, 0x1b, 0x00, 0x01,
-       0x08, 0x15, 0x00, 0x01, 0x08, 0x15, 0x00, 0x01, 0x08, 0x15, 0x00, 0x01,
-       0x08, 0x15, 0x06, 0x01,
-       0x08, 0x15, 0x00, 0x02, 0xd9, 0x66, 0x4c, 0xfe, 0x3a, 0x55, 0x5f, 0xfe,
-       0x9a, 0x81, 0x4b, 0x1d,
+       0xfe, 0x1b, 0x00, 0x01, 0x08, 0x15, 0x00, 0x01, 0x08, 0x15, 0x00, 0x01,
+       0x08, 0x15, 0x00, 0x01, 0x08, 0x15, 0x06, 0x01, 0x08, 0x15, 0x00, 0x02,
+       0xd9, 0x66, 0x4c, 0xfe, 0x3a, 0x55, 0x5f, 0xfe, 0x9a, 0x81, 0x4b, 0x1d,
        0xba, 0xfe, 0x32, 0x07, 0x0a, 0x1d, 0xfe, 0x09, 0x6f, 0xaf, 0xfe, 0xca,
-       0x45, 0xfe, 0x32, 0x12,
-       0x62, 0x2c, 0x85, 0x66, 0x7b, 0x01, 0x08, 0x25, 0x32, 0xfe, 0x0a, 0xf0,
-       0xfe, 0x32, 0x07, 0x8d,
-       0x81, 0x8c, 0xfe, 0x5c, 0x07, 0x02, 0x22, 0x01, 0x43, 0x02, 0xfe, 0x8a,
-       0x06, 0x15, 0x19, 0x02,
+       0x45, 0xfe, 0x32, 0x12, 0x62, 0x2c, 0x85, 0x66, 0x7b, 0x01, 0x08, 0x25,
+       0x32, 0xfe, 0x0a, 0xf0, 0xfe, 0x32, 0x07, 0x8d, 0x81, 0x8c, 0xfe, 0x5c,
+       0x07, 0x02, 0x22, 0x01, 0x43, 0x02, 0xfe, 0x8a, 0x06, 0x15, 0x19, 0x02,
        0xfe, 0x8a, 0x06, 0xfe, 0x9c, 0xf7, 0xd4, 0xfe, 0x2c, 0x90, 0xfe, 0xae,
-       0x90, 0x77, 0xfe, 0xca,
-       0x07, 0x0c, 0x54, 0x18, 0x55, 0x09, 0x4a, 0x6a, 0x35, 0x1e, 0x20, 0x07,
-       0x10, 0xfe, 0x0e, 0x12,
-       0x74, 0xfe, 0x80, 0x80, 0x37, 0x20, 0x63, 0x27, 0xfe, 0x06, 0x10, 0xfe,
-       0x83, 0xe7, 0xc4, 0xa1,
+       0x90, 0x77, 0xfe, 0xca, 0x07, 0x0c, 0x54, 0x18, 0x55, 0x09, 0x4a, 0x6a,
+       0x35, 0x1e, 0x20, 0x07, 0x10, 0xfe, 0x0e, 0x12, 0x74, 0xfe, 0x80, 0x80,
+       0x37, 0x20, 0x63, 0x27, 0xfe, 0x06, 0x10, 0xfe, 0x83, 0xe7, 0xc4, 0xa1,
        0xfe, 0x03, 0x40, 0x09, 0x4a, 0x4f, 0x35, 0x01, 0xa8, 0xad, 0xfe, 0x1f,
-       0x40, 0x12, 0x58, 0x01,
-       0xa5, 0xfe, 0x08, 0x50, 0xfe, 0x8a, 0x50, 0xfe, 0x44, 0x51, 0xfe, 0xc6,
-       0x51, 0x83, 0xfb, 0xfe,
-       0x8a, 0x90, 0x0c, 0x52, 0x18, 0x53, 0xfe, 0x0c, 0x90, 0xfe, 0x8e, 0x90,
-       0xfe, 0x40, 0x50, 0xfe,
+       0x40, 0x12, 0x58, 0x01, 0xa5, 0xfe, 0x08, 0x50, 0xfe, 0x8a, 0x50, 0xfe,
+       0x44, 0x51, 0xfe, 0xc6, 0x51, 0x83, 0xfb, 0xfe, 0x8a, 0x90, 0x0c, 0x52,
+       0x18, 0x53, 0xfe, 0x0c, 0x90, 0xfe, 0x8e, 0x90, 0xfe, 0x40, 0x50, 0xfe,
        0xc2, 0x50, 0x0c, 0x39, 0x18, 0x3a, 0xfe, 0x4a, 0x10, 0x09, 0x04, 0x6a,
-       0xfe, 0x2a, 0x12, 0xfe,
-       0x2c, 0x90, 0xfe, 0xae, 0x90, 0x0c, 0x54, 0x18, 0x55, 0x09, 0x04, 0x4f,
-       0x85, 0x01, 0xa8, 0xfe,
-       0x1f, 0x80, 0x12, 0x58, 0xfe, 0x44, 0x90, 0xfe, 0xc6, 0x90, 0x0c, 0x56,
-       0x18, 0x57, 0xfb, 0xfe,
+       0xfe, 0x2a, 0x12, 0xfe, 0x2c, 0x90, 0xfe, 0xae, 0x90, 0x0c, 0x54, 0x18,
+       0x55, 0x09, 0x04, 0x4f, 0x85, 0x01, 0xa8, 0xfe, 0x1f, 0x80, 0x12, 0x58,
+       0xfe, 0x44, 0x90, 0xfe, 0xc6, 0x90, 0x0c, 0x56, 0x18, 0x57, 0xfb, 0xfe,
        0x8a, 0x90, 0x0c, 0x52, 0x18, 0x53, 0xfe, 0x40, 0x90, 0xfe, 0xc2, 0x90,
-       0x0c, 0x39, 0x18, 0x3a,
-       0x0c, 0x38, 0x18, 0x4e, 0x09, 0x4a, 0x19, 0x35, 0x2a, 0x13, 0xfe, 0x4e,
-       0x11, 0x65, 0xfe, 0x48,
-       0x08, 0xfe, 0x9e, 0xf0, 0xfe, 0x5c, 0x08, 0xb1, 0x16, 0x32, 0x2a, 0x73,
-       0xdd, 0xb8, 0xfe, 0x80,
+       0x0c, 0x39, 0x18, 0x3a, 0x0c, 0x38, 0x18, 0x4e, 0x09, 0x4a, 0x19, 0x35,
+       0x2a, 0x13, 0xfe, 0x4e, 0x11, 0x65, 0xfe, 0x48, 0x08, 0xfe, 0x9e, 0xf0,
+       0xfe, 0x5c, 0x08, 0xb1, 0x16, 0x32, 0x2a, 0x73, 0xdd, 0xb8, 0xfe, 0x80,
        0x08, 0xb9, 0xfe, 0x9e, 0x08, 0x8c, 0xfe, 0x74, 0x08, 0xfe, 0x06, 0xf0,
-       0xfe, 0x7a, 0x08, 0x8d,
-       0x81, 0x02, 0x22, 0x01, 0x43, 0xfe, 0xc9, 0x10, 0x15, 0x19, 0xfe, 0xc9,
-       0x10, 0x61, 0x04, 0x06,
-       0xfe, 0x10, 0x12, 0x61, 0x04, 0x0b, 0x45, 0x09, 0x04, 0x0b, 0xfe, 0x68,
-       0x12, 0xfe, 0x2e, 0x1c,
+       0xfe, 0x7a, 0x08, 0x8d, 0x81, 0x02, 0x22, 0x01, 0x43, 0xfe, 0xc9, 0x10,
+       0x15, 0x19, 0xfe, 0xc9, 0x10, 0x61, 0x04, 0x06, 0xfe, 0x10, 0x12, 0x61,
+       0x04, 0x0b, 0x45, 0x09, 0x04, 0x0b, 0xfe, 0x68, 0x12, 0xfe, 0x2e, 0x1c,
        0x02, 0xfe, 0x24, 0x0a, 0x61, 0x04, 0x06, 0x45, 0x61, 0x04, 0x0b, 0xfe,
-       0x52, 0x12, 0xfe, 0x2c,
-       0x1c, 0xfe, 0xaa, 0xf0, 0xfe, 0x1e, 0x09, 0xfe, 0xac, 0xf0, 0xfe, 0xbe,
-       0x08, 0xfe, 0x8a, 0x10,
-       0xaa, 0xfe, 0xf3, 0x10, 0xfe, 0xad, 0xf0, 0xfe, 0xca, 0x08, 0x02, 0xfe,
-       0x24, 0x0a, 0xab, 0xfe,
+       0x52, 0x12, 0xfe, 0x2c, 0x1c, 0xfe, 0xaa, 0xf0, 0xfe, 0x1e, 0x09, 0xfe,
+       0xac, 0xf0, 0xfe, 0xbe, 0x08, 0xfe, 0x8a, 0x10, 0xaa, 0xfe, 0xf3, 0x10,
+       0xfe, 0xad, 0xf0, 0xfe, 0xca, 0x08, 0x02, 0xfe, 0x24, 0x0a, 0xab, 0xfe,
        0xe7, 0x10, 0xfe, 0x2b, 0xf0, 0x9d, 0xe9, 0x1c, 0xfe, 0x00, 0xfe, 0xfe,
-       0x1c, 0x12, 0xb5, 0xfe,
-       0xd2, 0xf0, 0x9d, 0xfe, 0x76, 0x18, 0x1c, 0x1a, 0x16, 0x9d, 0x05, 0xcb,
-       0x1c, 0x06, 0x16, 0x9d,
-       0xb8, 0x6d, 0xb9, 0x6d, 0xaa, 0xab, 0xfe, 0xb1, 0x10, 0x70, 0x5e, 0x2b,
-       0x14, 0x92, 0x01, 0x33,
+       0x1c, 0x12, 0xb5, 0xfe, 0xd2, 0xf0, 0x9d, 0xfe, 0x76, 0x18, 0x1c, 0x1a,
+       0x16, 0x9d, 0x05, 0xcb, 0x1c, 0x06, 0x16, 0x9d, 0xb8, 0x6d, 0xb9, 0x6d,
+       0xaa, 0xab, 0xfe, 0xb1, 0x10, 0x70, 0x5e, 0x2b, 0x14, 0x92, 0x01, 0x33,
        0x0f, 0xfe, 0x35, 0x00, 0xfe, 0x01, 0xf0, 0x5a, 0x0f, 0x7c, 0x02, 0x5a,
-       0xfe, 0x74, 0x18, 0x1c,
-       0xfe, 0x00, 0xf8, 0x16, 0x6d, 0x67, 0x1b, 0x01, 0xfe, 0x44, 0x0d, 0x3b,
-       0x01, 0xe6, 0x1e, 0x27,
-       0x74, 0x67, 0x1a, 0x02, 0x6d, 0x09, 0x04, 0x0b, 0x21, 0xfe, 0x06, 0x0a,
-       0x09, 0x04, 0x6a, 0xfe,
+       0xfe, 0x74, 0x18, 0x1c, 0xfe, 0x00, 0xf8, 0x16, 0x6d, 0x67, 0x1b, 0x01,
+       0xfe, 0x44, 0x0d, 0x3b, 0x01, 0xe6, 0x1e, 0x27, 0x74, 0x67, 0x1a, 0x02,
+       0x6d, 0x09, 0x04, 0x0b, 0x21, 0xfe, 0x06, 0x0a, 0x09, 0x04, 0x6a, 0xfe,
        0x82, 0x12, 0x09, 0x04, 0x19, 0xfe, 0x66, 0x13, 0x1e, 0x58, 0xac, 0xfc,
-       0xfe, 0x83, 0x80, 0xfe,
-       0xc8, 0x44, 0xfe, 0x2e, 0x13, 0xfe, 0x04, 0x91, 0xfe, 0x86, 0x91, 0x63,
-       0x27, 0xfe, 0x40, 0x59,
-       0xfe, 0xc1, 0x59, 0x77, 0xd7, 0x05, 0x54, 0x31, 0x55, 0x0c, 0x7b, 0x18,
-       0x7c, 0xbe, 0x54, 0xbf,
+       0xfe, 0x83, 0x80, 0xfe, 0xc8, 0x44, 0xfe, 0x2e, 0x13, 0xfe, 0x04, 0x91,
+       0xfe, 0x86, 0x91, 0x63, 0x27, 0xfe, 0x40, 0x59, 0xfe, 0xc1, 0x59, 0x77,
+       0xd7, 0x05, 0x54, 0x31, 0x55, 0x0c, 0x7b, 0x18, 0x7c, 0xbe, 0x54, 0xbf,
        0x55, 0x01, 0xa8, 0xad, 0x63, 0x27, 0x12, 0x58, 0xc0, 0x38, 0xc1, 0x4e,
-       0x79, 0x56, 0x68, 0x57,
-       0xf4, 0xf5, 0xfe, 0x04, 0xfa, 0x38, 0xfe, 0x05, 0xfa, 0x4e, 0x01, 0xa5,
-       0xa2, 0x23, 0x0c, 0x7b,
-       0x0c, 0x7c, 0x79, 0x56, 0x68, 0x57, 0xfe, 0x12, 0x10, 0x09, 0x04, 0x19,
-       0x16, 0xd7, 0x79, 0x39,
+       0x79, 0x56, 0x68, 0x57, 0xf4, 0xf5, 0xfe, 0x04, 0xfa, 0x38, 0xfe, 0x05,
+       0xfa, 0x4e, 0x01, 0xa5, 0xa2, 0x23, 0x0c, 0x7b, 0x0c, 0x7c, 0x79, 0x56,
+       0x68, 0x57, 0xfe, 0x12, 0x10, 0x09, 0x04, 0x19, 0x16, 0xd7, 0x79, 0x39,
        0x68, 0x3a, 0x09, 0x04, 0xfe, 0xf7, 0x00, 0x35, 0x05, 0x52, 0x31, 0x53,
-       0xfe, 0x10, 0x58, 0xfe,
-       0x91, 0x58, 0xfe, 0x14, 0x59, 0xfe, 0x95, 0x59, 0x02, 0x6d, 0x09, 0x04,
-       0x19, 0x16, 0xd7, 0x09,
-       0x04, 0xfe, 0xf7, 0x00, 0x35, 0xfe, 0x3a, 0x55, 0xfe, 0x19, 0x81, 0x5f,
-       0xfe, 0x10, 0x90, 0xfe,
+       0xfe, 0x10, 0x58, 0xfe, 0x91, 0x58, 0xfe, 0x14, 0x59, 0xfe, 0x95, 0x59,
+       0x02, 0x6d, 0x09, 0x04, 0x19, 0x16, 0xd7, 0x09, 0x04, 0xfe, 0xf7, 0x00,
+       0x35, 0xfe, 0x3a, 0x55, 0xfe, 0x19, 0x81, 0x5f, 0xfe, 0x10, 0x90, 0xfe,
        0x92, 0x90, 0xfe, 0xd7, 0x10, 0x2f, 0x07, 0x9b, 0x16, 0xfe, 0xc6, 0x08,
-       0x11, 0x9b, 0x09, 0x04,
-       0x0b, 0xfe, 0x14, 0x13, 0x05, 0x39, 0x31, 0x3a, 0x77, 0xfe, 0xc6, 0x08,
-       0xfe, 0x0c, 0x58, 0xfe,
-       0x8d, 0x58, 0x02, 0x6d, 0x23, 0x47, 0xfe, 0x19, 0x80, 0xde, 0x09, 0x04,
-       0x0b, 0xfe, 0x1a, 0x12,
+       0x11, 0x9b, 0x09, 0x04, 0x0b, 0xfe, 0x14, 0x13, 0x05, 0x39, 0x31, 0x3a,
+       0x77, 0xfe, 0xc6, 0x08, 0xfe, 0x0c, 0x58, 0xfe, 0x8d, 0x58, 0x02, 0x6d,
+       0x23, 0x47, 0xfe, 0x19, 0x80, 0xde, 0x09, 0x04, 0x0b, 0xfe, 0x1a, 0x12,
        0xfe, 0x6c, 0x19, 0xfe, 0x19, 0x41, 0xe9, 0xb5, 0xfe, 0xd1, 0xf0, 0xd9,
-       0x14, 0x7a, 0x01, 0x33,
-       0x0f, 0xfe, 0x44, 0x00, 0xfe, 0x8e, 0x10, 0xfe, 0x6c, 0x19, 0xbe, 0x39,
-       0xfe, 0xed, 0x19, 0xbf,
-       0x3a, 0xfe, 0x0c, 0x51, 0xfe, 0x8e, 0x51, 0xe9, 0x1c, 0xfe, 0x00, 0xff,
-       0x34, 0xfe, 0x74, 0x10,
+       0x14, 0x7a, 0x01, 0x33, 0x0f, 0xfe, 0x44, 0x00, 0xfe, 0x8e, 0x10, 0xfe,
+       0x6c, 0x19, 0xbe, 0x39, 0xfe, 0xed, 0x19, 0xbf, 0x3a, 0xfe, 0x0c, 0x51,
+       0xfe, 0x8e, 0x51, 0xe9, 0x1c, 0xfe, 0x00, 0xff, 0x34, 0xfe, 0x74, 0x10,
        0xb5, 0xfe, 0xd2, 0xf0, 0xfe, 0xb2, 0x0a, 0xfe, 0x76, 0x18, 0x1c, 0x1a,
-       0x84, 0x05, 0xcb, 0x1c,
-       0x06, 0xfe, 0x08, 0x13, 0x0f, 0xfe, 0x16, 0x00, 0x02, 0x5a, 0xfe, 0xd1,
-       0xf0, 0xfe, 0xc4, 0x0a,
-       0x14, 0x7a, 0x01, 0x33, 0x0f, 0xfe, 0x17, 0x00, 0xfe, 0x42, 0x10, 0xfe,
-       0xce, 0xf0, 0xfe, 0xca,
+       0x84, 0x05, 0xcb, 0x1c, 0x06, 0xfe, 0x08, 0x13, 0x0f, 0xfe, 0x16, 0x00,
+       0x02, 0x5a, 0xfe, 0xd1, 0xf0, 0xfe, 0xc4, 0x0a, 0x14, 0x7a, 0x01, 0x33,
+       0x0f, 0xfe, 0x17, 0x00, 0xfe, 0x42, 0x10, 0xfe, 0xce, 0xf0, 0xfe, 0xca,
        0x0a, 0xfe, 0x3c, 0x10, 0xfe, 0xcd, 0xf0, 0xfe, 0xd6, 0x0a, 0x0f, 0xfe,
-       0x22, 0x00, 0x02, 0x5a,
-       0xfe, 0xcb, 0xf0, 0xfe, 0xe2, 0x0a, 0x0f, 0xfe, 0x24, 0x00, 0x02, 0x5a,
-       0xfe, 0xd0, 0xf0, 0xfe,
-       0xec, 0x0a, 0x0f, 0x93, 0xdc, 0xfe, 0xcf, 0xf0, 0xfe, 0xf6, 0x0a, 0x0f,
-       0x4c, 0xfe, 0x10, 0x10,
+       0x22, 0x00, 0x02, 0x5a, 0xfe, 0xcb, 0xf0, 0xfe, 0xe2, 0x0a, 0x0f, 0xfe,
+       0x24, 0x00, 0x02, 0x5a, 0xfe, 0xd0, 0xf0, 0xfe, 0xec, 0x0a, 0x0f, 0x93,
+       0xdc, 0xfe, 0xcf, 0xf0, 0xfe, 0xf6, 0x0a, 0x0f, 0x4c, 0xfe, 0x10, 0x10,
        0xfe, 0xcc, 0xf0, 0xd9, 0x61, 0x04, 0x19, 0x3b, 0x0f, 0xfe, 0x12, 0x00,
-       0x2a, 0x13, 0xfe, 0x4e,
-       0x11, 0x65, 0xfe, 0x0c, 0x0b, 0xfe, 0x9e, 0xf0, 0xfe, 0x20, 0x0b, 0xb1,
-       0x16, 0x32, 0x2a, 0x73,
-       0xdd, 0xb8, 0x22, 0xb9, 0x22, 0x2a, 0xec, 0x65, 0xfe, 0x2c, 0x0b, 0x25,
-       0x32, 0x8c, 0xfe, 0x48,
+       0x2a, 0x13, 0xfe, 0x4e, 0x11, 0x65, 0xfe, 0x0c, 0x0b, 0xfe, 0x9e, 0xf0,
+       0xfe, 0x20, 0x0b, 0xb1, 0x16, 0x32, 0x2a, 0x73, 0xdd, 0xb8, 0x22, 0xb9,
+       0x22, 0x2a, 0xec, 0x65, 0xfe, 0x2c, 0x0b, 0x25, 0x32, 0x8c, 0xfe, 0x48,
        0x0b, 0x8d, 0x81, 0xb8, 0xd4, 0xb9, 0xd4, 0x02, 0x22, 0x01, 0x43, 0xfe,
-       0xdb, 0x10, 0x11, 0xfe,
-       0xe8, 0x00, 0xaa, 0xab, 0x70, 0xbc, 0x7d, 0xbd, 0x7f, 0xfe, 0x89, 0xf0,
-       0x22, 0x30, 0x2e, 0xd8,
-       0xbc, 0x7d, 0xbd, 0x7f, 0x01, 0x08, 0x1f, 0x22, 0x30, 0x2e, 0xd6, 0xb1,
-       0x45, 0x0f, 0xfe, 0x42,
+       0xdb, 0x10, 0x11, 0xfe, 0xe8, 0x00, 0xaa, 0xab, 0x70, 0xbc, 0x7d, 0xbd,
+       0x7f, 0xfe, 0x89, 0xf0, 0x22, 0x30, 0x2e, 0xd8, 0xbc, 0x7d, 0xbd, 0x7f,
+       0x01, 0x08, 0x1f, 0x22, 0x30, 0x2e, 0xd6, 0xb1, 0x45, 0x0f, 0xfe, 0x42,
        0x00, 0x02, 0x5a, 0x78, 0x06, 0xfe, 0x81, 0x49, 0x16, 0xfe, 0x38, 0x0c,
-       0x09, 0x04, 0x0b, 0xfe,
-       0x44, 0x13, 0x0f, 0x00, 0x4b, 0x0b, 0xfe, 0x54, 0x12, 0x4b, 0xfe, 0x28,
-       0x00, 0x21, 0xfe, 0xa6,
-       0x0c, 0x0a, 0x40, 0x01, 0x0e, 0x07, 0x00, 0x5d, 0x3e, 0xfe, 0x28, 0x00,
-       0xfe, 0xe2, 0x10, 0x01,
+       0x09, 0x04, 0x0b, 0xfe, 0x44, 0x13, 0x0f, 0x00, 0x4b, 0x0b, 0xfe, 0x54,
+       0x12, 0x4b, 0xfe, 0x28, 0x00, 0x21, 0xfe, 0xa6, 0x0c, 0x0a, 0x40, 0x01,
+       0x0e, 0x07, 0x00, 0x5d, 0x3e, 0xfe, 0x28, 0x00, 0xfe, 0xe2, 0x10, 0x01,
        0xe7, 0x01, 0xe8, 0x0a, 0x99, 0x01, 0xfe, 0x32, 0x0e, 0x59, 0x11, 0x2d,
-       0x01, 0x6f, 0x02, 0x29,
-       0x0f, 0xfe, 0x44, 0x00, 0x4b, 0x0b, 0xdf, 0x3e, 0x0b, 0xfe, 0xb4, 0x10,
-       0x01, 0x86, 0x3e, 0x0b,
-       0xfe, 0xaa, 0x10, 0x01, 0x86, 0xfe, 0x19, 0x82, 0xfe, 0x34, 0x46, 0xa3,
-       0x3e, 0x0b, 0x0f, 0xfe,
+       0x01, 0x6f, 0x02, 0x29, 0x0f, 0xfe, 0x44, 0x00, 0x4b, 0x0b, 0xdf, 0x3e,
+       0x0b, 0xfe, 0xb4, 0x10, 0x01, 0x86, 0x3e, 0x0b, 0xfe, 0xaa, 0x10, 0x01,
+       0x86, 0xfe, 0x19, 0x82, 0xfe, 0x34, 0x46, 0xa3, 0x3e, 0x0b, 0x0f, 0xfe,
        0x43, 0x00, 0xfe, 0x96, 0x10, 0x09, 0x4a, 0x0b, 0x35, 0x01, 0xe7, 0x01,
-       0xe8, 0x59, 0x11, 0x2d,
-       0x01, 0x6f, 0x67, 0x0b, 0x59, 0x3c, 0x8a, 0x02, 0xfe, 0x2a, 0x03, 0x09,
-       0x04, 0x0b, 0x84, 0x3e,
-       0x0b, 0x0f, 0x00, 0xfe, 0x5c, 0x10, 0x61, 0x04, 0x1b, 0xfe, 0x58, 0x12,
-       0x09, 0x04, 0x1b, 0xfe,
+       0xe8, 0x59, 0x11, 0x2d, 0x01, 0x6f, 0x67, 0x0b, 0x59, 0x3c, 0x8a, 0x02,
+       0xfe, 0x2a, 0x03, 0x09, 0x04, 0x0b, 0x84, 0x3e, 0x0b, 0x0f, 0x00, 0xfe,
+       0x5c, 0x10, 0x61, 0x04, 0x1b, 0xfe, 0x58, 0x12, 0x09, 0x04, 0x1b, 0xfe,
        0x50, 0x13, 0xfe, 0x1c, 0x1c, 0xfe, 0x9d, 0xf0, 0xfe, 0x5c, 0x0c, 0xfe,
-       0x1c, 0x1c, 0xfe, 0x9d,
-       0xf0, 0xfe, 0x62, 0x0c, 0x09, 0x4a, 0x1b, 0x35, 0xfe, 0xa9, 0x10, 0x0f,
-       0xfe, 0x15, 0x00, 0xfe,
-       0x04, 0xe6, 0x0b, 0x5f, 0x5c, 0x0f, 0xfe, 0x13, 0x00, 0xfe, 0x10, 0x10,
-       0x0f, 0xfe, 0x47, 0x00,
+       0x1c, 0x1c, 0xfe, 0x9d, 0xf0, 0xfe, 0x62, 0x0c, 0x09, 0x4a, 0x1b, 0x35,
+       0xfe, 0xa9, 0x10, 0x0f, 0xfe, 0x15, 0x00, 0xfe, 0x04, 0xe6, 0x0b, 0x5f,
+       0x5c, 0x0f, 0xfe, 0x13, 0x00, 0xfe, 0x10, 0x10, 0x0f, 0xfe, 0x47, 0x00,
        0xa1, 0x0f, 0xfe, 0x41, 0x00, 0xa0, 0x0f, 0xfe, 0x24, 0x00, 0x87, 0xaa,
-       0xab, 0x70, 0x05, 0x6b,
-       0x28, 0x21, 0xd1, 0x5f, 0xfe, 0x04, 0xe6, 0x1b, 0xfe, 0x9d, 0x41, 0xfe,
-       0x1c, 0x42, 0x59, 0x01,
-       0xda, 0x02, 0x29, 0xea, 0x14, 0x0b, 0x37, 0x95, 0xa9, 0x14, 0xfe, 0x31,
-       0x00, 0x37, 0x97, 0x01,
+       0xab, 0x70, 0x05, 0x6b, 0x28, 0x21, 0xd1, 0x5f, 0xfe, 0x04, 0xe6, 0x1b,
+       0xfe, 0x9d, 0x41, 0xfe, 0x1c, 0x42, 0x59, 0x01, 0xda, 0x02, 0x29, 0xea,
+       0x14, 0x0b, 0x37, 0x95, 0xa9, 0x14, 0xfe, 0x31, 0x00, 0x37, 0x97, 0x01,
        0xfe, 0x54, 0x0f, 0x02, 0xd0, 0x3c, 0xfe, 0x06, 0xec, 0xc9, 0xee, 0x3e,
-       0x1d, 0xfe, 0xce, 0x45,
-       0x34, 0x3c, 0xfe, 0x06, 0xea, 0xc9, 0xfe, 0x47, 0x4b, 0x89, 0xfe, 0x75,
-       0x57, 0x05, 0x51, 0xfe,
-       0x98, 0x56, 0xfe, 0x38, 0x12, 0x0a, 0x42, 0x01, 0x0e, 0xfe, 0x44, 0x48,
-       0x46, 0x09, 0x04, 0x1d,
+       0x1d, 0xfe, 0xce, 0x45, 0x34, 0x3c, 0xfe, 0x06, 0xea, 0xc9, 0xfe, 0x47,
+       0x4b, 0x89, 0xfe, 0x75, 0x57, 0x05, 0x51, 0xfe, 0x98, 0x56, 0xfe, 0x38,
+       0x12, 0x0a, 0x42, 0x01, 0x0e, 0xfe, 0x44, 0x48, 0x46, 0x09, 0x04, 0x1d,
        0xfe, 0x1a, 0x13, 0x0a, 0x40, 0x01, 0x0e, 0x47, 0xfe, 0x41, 0x58, 0x0a,
-       0x99, 0x01, 0x0e, 0xfe,
-       0x49, 0x54, 0x8e, 0xfe, 0x2a, 0x0d, 0x02, 0xfe, 0x2a, 0x03, 0x0a, 0x51,
-       0xfe, 0xee, 0x14, 0xee,
-       0x3e, 0x1d, 0xfe, 0xce, 0x45, 0x34, 0x3c, 0xfe, 0xce, 0x47, 0xfe, 0xad,
-       0x13, 0x02, 0x29, 0x1e,
+       0x99, 0x01, 0x0e, 0xfe, 0x49, 0x54, 0x8e, 0xfe, 0x2a, 0x0d, 0x02, 0xfe,
+       0x2a, 0x03, 0x0a, 0x51, 0xfe, 0xee, 0x14, 0xee, 0x3e, 0x1d, 0xfe, 0xce,
+       0x45, 0x34, 0x3c, 0xfe, 0xce, 0x47, 0xfe, 0xad, 0x13, 0x02, 0x29, 0x1e,
        0x20, 0x07, 0x10, 0xfe, 0x9e, 0x12, 0x23, 0x12, 0x4d, 0x12, 0x94, 0x12,
-       0xce, 0x1e, 0x2d, 0x47,
-       0x37, 0x2d, 0xb1, 0xe0, 0xfe, 0xbc, 0xf0, 0xfe, 0xec, 0x0d, 0x13, 0x06,
-       0x12, 0x4d, 0x01, 0xfe,
-       0xe2, 0x15, 0x05, 0xfe, 0x38, 0x01, 0x31, 0xfe, 0x3a, 0x01, 0x77, 0xfe,
-       0xf0, 0x0d, 0xfe, 0x02,
+       0xce, 0x1e, 0x2d, 0x47, 0x37, 0x2d, 0xb1, 0xe0, 0xfe, 0xbc, 0xf0, 0xfe,
+       0xec, 0x0d, 0x13, 0x06, 0x12, 0x4d, 0x01, 0xfe, 0xe2, 0x15, 0x05, 0xfe,
+       0x38, 0x01, 0x31, 0xfe, 0x3a, 0x01, 0x77, 0xfe, 0xf0, 0x0d, 0xfe, 0x02,
        0xec, 0xce, 0x62, 0x00, 0x5d, 0xfe, 0x04, 0xec, 0x20, 0x46, 0xfe, 0x05,
-       0xf6, 0xfe, 0x34, 0x01,
-       0x01, 0xfe, 0x52, 0x16, 0xfb, 0xfe, 0x48, 0xf4, 0x0d, 0xfe, 0x18, 0x13,
-       0xaf, 0xfe, 0x02, 0xea,
-       0xce, 0x62, 0x7a, 0xfe, 0xc5, 0x13, 0x14, 0x1b, 0x37, 0x95, 0xa9, 0x5c,
-       0x05, 0xfe, 0x38, 0x01,
+       0xf6, 0xfe, 0x34, 0x01, 0x01, 0xfe, 0x52, 0x16, 0xfb, 0xfe, 0x48, 0xf4,
+       0x0d, 0xfe, 0x18, 0x13, 0xaf, 0xfe, 0x02, 0xea, 0xce, 0x62, 0x7a, 0xfe,
+       0xc5, 0x13, 0x14, 0x1b, 0x37, 0x95, 0xa9, 0x5c, 0x05, 0xfe, 0x38, 0x01,
        0x1c, 0xfe, 0xf0, 0xff, 0x0c, 0xfe, 0x60, 0x01, 0x05, 0xfe, 0x3a, 0x01,
-       0x0c, 0xfe, 0x62, 0x01,
-       0x3d, 0x12, 0x20, 0x24, 0x06, 0x12, 0x2d, 0x11, 0x2d, 0x8a, 0x13, 0x06,
-       0x03, 0x23, 0x03, 0x1e,
-       0x4d, 0xfe, 0xf7, 0x12, 0x1e, 0x94, 0xac, 0x12, 0x94, 0x07, 0x7a, 0xfe,
-       0x71, 0x13, 0xfe, 0x24,
+       0x0c, 0xfe, 0x62, 0x01, 0x3d, 0x12, 0x20, 0x24, 0x06, 0x12, 0x2d, 0x11,
+       0x2d, 0x8a, 0x13, 0x06, 0x03, 0x23, 0x03, 0x1e, 0x4d, 0xfe, 0xf7, 0x12,
+       0x1e, 0x94, 0xac, 0x12, 0x94, 0x07, 0x7a, 0xfe, 0x71, 0x13, 0xfe, 0x24,
        0x1c, 0x14, 0x1a, 0x37, 0x95, 0xa9, 0xfe, 0xd9, 0x10, 0xb6, 0xfe, 0x03,
-       0xdc, 0xfe, 0x73, 0x57,
-       0xfe, 0x80, 0x5d, 0x03, 0xb6, 0xfe, 0x03, 0xdc, 0xfe, 0x5b, 0x57, 0xfe,
-       0x80, 0x5d, 0x03, 0xfe,
-       0x03, 0x57, 0xb6, 0x23, 0xfe, 0x00, 0xcc, 0x03, 0xfe, 0x03, 0x57, 0xb6,
-       0x75, 0x03, 0x09, 0x04,
+       0xdc, 0xfe, 0x73, 0x57, 0xfe, 0x80, 0x5d, 0x03, 0xb6, 0xfe, 0x03, 0xdc,
+       0xfe, 0x5b, 0x57, 0xfe, 0x80, 0x5d, 0x03, 0xfe, 0x03, 0x57, 0xb6, 0x23,
+       0xfe, 0x00, 0xcc, 0x03, 0xfe, 0x03, 0x57, 0xb6, 0x75, 0x03, 0x09, 0x04,
        0x4c, 0xfe, 0x22, 0x13, 0xfe, 0x1c, 0x80, 0x07, 0x06, 0xfe, 0x1a, 0x13,
-       0xfe, 0x1e, 0x80, 0xe1,
-       0xfe, 0x1d, 0x80, 0xa4, 0xfe, 0x0c, 0x90, 0xfe, 0x0e, 0x13, 0xfe, 0x0e,
-       0x90, 0xa3, 0xfe, 0x3c,
-       0x90, 0xfe, 0x30, 0xf4, 0x0b, 0xfe, 0x3c, 0x50, 0xa0, 0x01, 0xfe, 0x82,
-       0x16, 0x2f, 0x07, 0x2d,
+       0xfe, 0x1e, 0x80, 0xe1, 0xfe, 0x1d, 0x80, 0xa4, 0xfe, 0x0c, 0x90, 0xfe,
+       0x0e, 0x13, 0xfe, 0x0e, 0x90, 0xa3, 0xfe, 0x3c, 0x90, 0xfe, 0x30, 0xf4,
+       0x0b, 0xfe, 0x3c, 0x50, 0xa0, 0x01, 0xfe, 0x82, 0x16, 0x2f, 0x07, 0x2d,
        0xe0, 0x01, 0xfe, 0xbc, 0x15, 0x09, 0x04, 0x1d, 0x45, 0x01, 0xe7, 0x01,
-       0xe8, 0x11, 0xfe, 0xe9,
-       0x00, 0x09, 0x04, 0x4c, 0xfe, 0x2c, 0x13, 0x01, 0xfe, 0x14, 0x16, 0xfe,
-       0x1e, 0x1c, 0xfe, 0x14,
-       0x90, 0xfe, 0x96, 0x90, 0x0c, 0xfe, 0x64, 0x01, 0x18, 0xfe, 0x66, 0x01,
-       0x09, 0x04, 0x4f, 0xfe,
+       0xe8, 0x11, 0xfe, 0xe9, 0x00, 0x09, 0x04, 0x4c, 0xfe, 0x2c, 0x13, 0x01,
+       0xfe, 0x14, 0x16, 0xfe, 0x1e, 0x1c, 0xfe, 0x14, 0x90, 0xfe, 0x96, 0x90,
+       0x0c, 0xfe, 0x64, 0x01, 0x18, 0xfe, 0x66, 0x01, 0x09, 0x04, 0x4f, 0xfe,
        0x12, 0x12, 0xfe, 0x03, 0x80, 0x74, 0xfe, 0x01, 0xec, 0x20, 0xfe, 0x80,
-       0x40, 0x12, 0x20, 0x63,
-       0x27, 0x11, 0xc8, 0x59, 0x1e, 0x20, 0xed, 0x76, 0x20, 0x03, 0xfe, 0x08,
-       0x1c, 0x05, 0xfe, 0xac,
-       0x00, 0xfe, 0x06, 0x58, 0x05, 0xfe, 0xae, 0x00, 0xfe, 0x07, 0x58, 0x05,
-       0xfe, 0xb0, 0x00, 0xfe,
+       0x40, 0x12, 0x20, 0x63, 0x27, 0x11, 0xc8, 0x59, 0x1e, 0x20, 0xed, 0x76,
+       0x20, 0x03, 0xfe, 0x08, 0x1c, 0x05, 0xfe, 0xac, 0x00, 0xfe, 0x06, 0x58,
+       0x05, 0xfe, 0xae, 0x00, 0xfe, 0x07, 0x58, 0x05, 0xfe, 0xb0, 0x00, 0xfe,
        0x08, 0x58, 0x05, 0xfe, 0xb2, 0x00, 0xfe, 0x09, 0x58, 0xfe, 0x0a, 0x1c,
-       0x24, 0x69, 0x12, 0xc9,
-       0x23, 0x0c, 0x50, 0x0c, 0x3f, 0x13, 0x40, 0x48, 0x5f, 0x17, 0x1d, 0xfe,
-       0x90, 0x4d, 0xfe, 0x91,
-       0x54, 0x21, 0xfe, 0x08, 0x0f, 0x3e, 0x10, 0x13, 0x42, 0x48, 0x17, 0x4c,
-       0xfe, 0x90, 0x4d, 0xfe,
+       0x24, 0x69, 0x12, 0xc9, 0x23, 0x0c, 0x50, 0x0c, 0x3f, 0x13, 0x40, 0x48,
+       0x5f, 0x17, 0x1d, 0xfe, 0x90, 0x4d, 0xfe, 0x91, 0x54, 0x21, 0xfe, 0x08,
+       0x0f, 0x3e, 0x10, 0x13, 0x42, 0x48, 0x17, 0x4c, 0xfe, 0x90, 0x4d, 0xfe,
        0x91, 0x54, 0x21, 0xfe, 0x1e, 0x0f, 0x24, 0x10, 0x12, 0x20, 0x78, 0x2c,
-       0x46, 0x1e, 0x20, 0xed,
-       0x76, 0x20, 0x11, 0xc8, 0xf6, 0xfe, 0xd6, 0xf0, 0xfe, 0x32, 0x0f, 0xea,
-       0x70, 0xfe, 0x14, 0x1c,
-       0xfe, 0x10, 0x1c, 0xfe, 0x18, 0x1c, 0x03, 0x3c, 0xfe, 0x0c, 0x14, 0xee,
-       0xfe, 0x07, 0xe6, 0x1d,
+       0x46, 0x1e, 0x20, 0xed, 0x76, 0x20, 0x11, 0xc8, 0xf6, 0xfe, 0xd6, 0xf0,
+       0xfe, 0x32, 0x0f, 0xea, 0x70, 0xfe, 0x14, 0x1c, 0xfe, 0x10, 0x1c, 0xfe,
+       0x18, 0x1c, 0x03, 0x3c, 0xfe, 0x0c, 0x14, 0xee, 0xfe, 0x07, 0xe6, 0x1d,
        0xfe, 0xce, 0x47, 0xfe, 0xf5, 0x13, 0x03, 0x01, 0x86, 0x78, 0x2c, 0x46,
-       0xfa, 0xef, 0xfe, 0x42,
-       0x13, 0x2f, 0x07, 0x2d, 0xfe, 0x34, 0x13, 0x0a, 0x42, 0x01, 0x0e, 0xb0,
-       0xfe, 0x36, 0x12, 0xf0,
-       0xfe, 0x45, 0x48, 0x01, 0xe3, 0xfe, 0x00, 0xcc, 0xb0, 0xfe, 0xf3, 0x13,
-       0x3d, 0x75, 0x07, 0x10,
+       0xfa, 0xef, 0xfe, 0x42, 0x13, 0x2f, 0x07, 0x2d, 0xfe, 0x34, 0x13, 0x0a,
+       0x42, 0x01, 0x0e, 0xb0, 0xfe, 0x36, 0x12, 0xf0, 0xfe, 0x45, 0x48, 0x01,
+       0xe3, 0xfe, 0x00, 0xcc, 0xb0, 0xfe, 0xf3, 0x13, 0x3d, 0x75, 0x07, 0x10,
        0xa3, 0x0a, 0x80, 0x01, 0x0e, 0xfe, 0x80, 0x5c, 0x01, 0x6f, 0xfe, 0x0e,
-       0x10, 0x07, 0x7e, 0x45,
-       0xf6, 0xfe, 0xd6, 0xf0, 0xfe, 0x6c, 0x0f, 0x03, 0xfe, 0x44, 0x58, 0x74,
-       0xfe, 0x01, 0xec, 0x97,
-       0xfe, 0x9e, 0x40, 0xfe, 0x9d, 0xe7, 0x00, 0xfe, 0x9c, 0xe7, 0x1b, 0x76,
-       0x27, 0x01, 0xda, 0xfe,
+       0x10, 0x07, 0x7e, 0x45, 0xf6, 0xfe, 0xd6, 0xf0, 0xfe, 0x6c, 0x0f, 0x03,
+       0xfe, 0x44, 0x58, 0x74, 0xfe, 0x01, 0xec, 0x97, 0xfe, 0x9e, 0x40, 0xfe,
+       0x9d, 0xe7, 0x00, 0xfe, 0x9c, 0xe7, 0x1b, 0x76, 0x27, 0x01, 0xda, 0xfe,
        0xdd, 0x10, 0x2a, 0xbc, 0x7d, 0xbd, 0x7f, 0x30, 0x2e, 0xd5, 0x07, 0x1b,
-       0xfe, 0x48, 0x12, 0x07,
-       0x0b, 0xfe, 0x56, 0x12, 0x07, 0x1a, 0xfe, 0x30, 0x12, 0x07, 0xc2, 0x16,
-       0xfe, 0x3e, 0x11, 0x07,
-       0xfe, 0x23, 0x00, 0x16, 0xfe, 0x4a, 0x11, 0x07, 0x06, 0x16, 0xfe, 0xa8,
-       0x11, 0x07, 0x19, 0xfe,
+       0xfe, 0x48, 0x12, 0x07, 0x0b, 0xfe, 0x56, 0x12, 0x07, 0x1a, 0xfe, 0x30,
+       0x12, 0x07, 0xc2, 0x16, 0xfe, 0x3e, 0x11, 0x07, 0xfe, 0x23, 0x00, 0x16,
+       0xfe, 0x4a, 0x11, 0x07, 0x06, 0x16, 0xfe, 0xa8, 0x11, 0x07, 0x19, 0xfe,
        0x12, 0x12, 0x07, 0x00, 0x16, 0x22, 0x14, 0xc2, 0x01, 0x33, 0x9f, 0x2b,
-       0x01, 0x08, 0x8c, 0x43,
-       0x03, 0x2b, 0xfe, 0x62, 0x08, 0x0a, 0xca, 0x01, 0xfe, 0x32, 0x0e, 0x11,
-       0x7e, 0x02, 0x29, 0x2b,
-       0x2f, 0x07, 0x9b, 0xfe, 0xd9, 0x13, 0x79, 0x39, 0x68, 0x3a, 0x77, 0xfe,
-       0xfc, 0x10, 0x09, 0x04,
+       0x01, 0x08, 0x8c, 0x43, 0x03, 0x2b, 0xfe, 0x62, 0x08, 0x0a, 0xca, 0x01,
+       0xfe, 0x32, 0x0e, 0x11, 0x7e, 0x02, 0x29, 0x2b, 0x2f, 0x07, 0x9b, 0xfe,
+       0xd9, 0x13, 0x79, 0x39, 0x68, 0x3a, 0x77, 0xfe, 0xfc, 0x10, 0x09, 0x04,
        0x6a, 0xfe, 0x72, 0x12, 0xc0, 0x38, 0xc1, 0x4e, 0xf4, 0xf5, 0x8e, 0xfe,
-       0xc6, 0x10, 0x1e, 0x58,
-       0xfe, 0x26, 0x13, 0x05, 0x7b, 0x31, 0x7c, 0x77, 0xfe, 0x82, 0x0c, 0x0c,
-       0x54, 0x18, 0x55, 0x23,
-       0x0c, 0x7b, 0x0c, 0x7c, 0x01, 0xa8, 0x24, 0x69, 0x73, 0x12, 0x58, 0x01,
-       0xa5, 0xc0, 0x38, 0xc1,
+       0xc6, 0x10, 0x1e, 0x58, 0xfe, 0x26, 0x13, 0x05, 0x7b, 0x31, 0x7c, 0x77,
+       0xfe, 0x82, 0x0c, 0x0c, 0x54, 0x18, 0x55, 0x23, 0x0c, 0x7b, 0x0c, 0x7c,
+       0x01, 0xa8, 0x24, 0x69, 0x73, 0x12, 0x58, 0x01, 0xa5, 0xc0, 0x38, 0xc1,
        0x4e, 0xfe, 0x04, 0x55, 0xfe, 0xa5, 0x55, 0xfe, 0x04, 0xfa, 0x38, 0xfe,
-       0x05, 0xfa, 0x4e, 0xfe,
-       0x91, 0x10, 0x05, 0x56, 0x31, 0x57, 0xfe, 0x40, 0x56, 0xfe, 0xe1, 0x56,
-       0x0c, 0x56, 0x18, 0x57,
-       0x83, 0xc0, 0x38, 0xc1, 0x4e, 0xf4, 0xf5, 0x05, 0x52, 0x31, 0x53, 0xfe,
-       0x00, 0x56, 0xfe, 0xa1,
+       0x05, 0xfa, 0x4e, 0xfe, 0x91, 0x10, 0x05, 0x56, 0x31, 0x57, 0xfe, 0x40,
+       0x56, 0xfe, 0xe1, 0x56, 0x0c, 0x56, 0x18, 0x57, 0x83, 0xc0, 0x38, 0xc1,
+       0x4e, 0xf4, 0xf5, 0x05, 0x52, 0x31, 0x53, 0xfe, 0x00, 0x56, 0xfe, 0xa1,
        0x56, 0x0c, 0x52, 0x18, 0x53, 0x09, 0x04, 0x6a, 0xfe, 0x1e, 0x12, 0x1e,
-       0x58, 0xfe, 0x1f, 0x40,
-       0x05, 0x54, 0x31, 0x55, 0xfe, 0x2c, 0x50, 0xfe, 0xae, 0x50, 0x05, 0x56,
-       0x31, 0x57, 0xfe, 0x44,
-       0x50, 0xfe, 0xc6, 0x50, 0x05, 0x52, 0x31, 0x53, 0xfe, 0x08, 0x50, 0xfe,
-       0x8a, 0x50, 0x05, 0x39,
+       0x58, 0xfe, 0x1f, 0x40, 0x05, 0x54, 0x31, 0x55, 0xfe, 0x2c, 0x50, 0xfe,
+       0xae, 0x50, 0x05, 0x56, 0x31, 0x57, 0xfe, 0x44, 0x50, 0xfe, 0xc6, 0x50,
+       0x05, 0x52, 0x31, 0x53, 0xfe, 0x08, 0x50, 0xfe, 0x8a, 0x50, 0x05, 0x39,
        0x31, 0x3a, 0xfe, 0x40, 0x50, 0xfe, 0xc2, 0x50, 0x02, 0x5c, 0x24, 0x06,
-       0x12, 0xcd, 0x02, 0x5b,
-       0x2b, 0x01, 0x08, 0x1f, 0x44, 0x30, 0x2e, 0xd5, 0x07, 0x06, 0x21, 0x44,
-       0x2f, 0x07, 0x9b, 0x21,
-       0x5b, 0x01, 0x6e, 0x1c, 0x3d, 0x16, 0x44, 0x09, 0x04, 0x0b, 0xe2, 0x79,
-       0x39, 0x68, 0x3a, 0xfe,
+       0x12, 0xcd, 0x02, 0x5b, 0x2b, 0x01, 0x08, 0x1f, 0x44, 0x30, 0x2e, 0xd5,
+       0x07, 0x06, 0x21, 0x44, 0x2f, 0x07, 0x9b, 0x21, 0x5b, 0x01, 0x6e, 0x1c,
+       0x3d, 0x16, 0x44, 0x09, 0x04, 0x0b, 0xe2, 0x79, 0x39, 0x68, 0x3a, 0xfe,
        0x0a, 0x55, 0x34, 0xfe, 0x8b, 0x55, 0xbe, 0x39, 0xbf, 0x3a, 0xfe, 0x0c,
-       0x51, 0xfe, 0x8e, 0x51,
-       0x02, 0x5b, 0xfe, 0x19, 0x81, 0xaf, 0xfe, 0x19, 0x41, 0x02, 0x5b, 0x2b,
-       0x01, 0x08, 0x25, 0x32,
-       0x1f, 0xa2, 0x30, 0x2e, 0xd8, 0x4b, 0x1a, 0xfe, 0xa6, 0x12, 0x4b, 0x0b,
-       0x3b, 0x02, 0x44, 0x01,
+       0x51, 0xfe, 0x8e, 0x51, 0x02, 0x5b, 0xfe, 0x19, 0x81, 0xaf, 0xfe, 0x19,
+       0x41, 0x02, 0x5b, 0x2b, 0x01, 0x08, 0x25, 0x32, 0x1f, 0xa2, 0x30, 0x2e,
+       0xd8, 0x4b, 0x1a, 0xfe, 0xa6, 0x12, 0x4b, 0x0b, 0x3b, 0x02, 0x44, 0x01,
        0x08, 0x25, 0x32, 0x1f, 0xa2, 0x30, 0x2e, 0xd6, 0x07, 0x1a, 0x21, 0x44,
-       0x01, 0x08, 0x1f, 0xa2,
-       0x30, 0x2e, 0xfe, 0xe8, 0x09, 0xfe, 0xc2, 0x49, 0x60, 0x05, 0xfe, 0x9c,
-       0x00, 0x28, 0x84, 0x49,
-       0x04, 0x19, 0x34, 0x9f, 0xfe, 0xbb, 0x45, 0x4b, 0x00, 0x45, 0x3e, 0x06,
-       0x78, 0x3d, 0xfe, 0xda,
+       0x01, 0x08, 0x1f, 0xa2, 0x30, 0x2e, 0xfe, 0xe8, 0x09, 0xfe, 0xc2, 0x49,
+       0x60, 0x05, 0xfe, 0x9c, 0x00, 0x28, 0x84, 0x49, 0x04, 0x19, 0x34, 0x9f,
+       0xfe, 0xbb, 0x45, 0x4b, 0x00, 0x45, 0x3e, 0x06, 0x78, 0x3d, 0xfe, 0xda,
        0x14, 0x01, 0x6e, 0x87, 0xfe, 0x4b, 0x45, 0xe2, 0x2f, 0x07, 0x9a, 0xe1,
-       0x05, 0xc6, 0x28, 0x84,
-       0x05, 0x3f, 0x28, 0x34, 0x5e, 0x02, 0x5b, 0xfe, 0xc0, 0x5d, 0xfe, 0xf8,
-       0x14, 0xfe, 0x03, 0x17,
-       0x05, 0x50, 0xb4, 0x0c, 0x50, 0x5e, 0x2b, 0x01, 0x08, 0x26, 0x5c, 0x01,
-       0xfe, 0xaa, 0x14, 0x02,
+       0x05, 0xc6, 0x28, 0x84, 0x05, 0x3f, 0x28, 0x34, 0x5e, 0x02, 0x5b, 0xfe,
+       0xc0, 0x5d, 0xfe, 0xf8, 0x14, 0xfe, 0x03, 0x17, 0x05, 0x50, 0xb4, 0x0c,
+       0x50, 0x5e, 0x2b, 0x01, 0x08, 0x26, 0x5c, 0x01, 0xfe, 0xaa, 0x14, 0x02,
        0x5c, 0x01, 0x08, 0x25, 0x32, 0x1f, 0x44, 0x30, 0x2e, 0xd6, 0x07, 0x06,
-       0x21, 0x44, 0x01, 0xfe,
-       0x8e, 0x13, 0xfe, 0x42, 0x58, 0xfe, 0x82, 0x14, 0xfe, 0xa4, 0x14, 0x87,
-       0xfe, 0x4a, 0xf4, 0x0b,
-       0x16, 0x44, 0xfe, 0x4a, 0xf4, 0x06, 0xfe, 0x0c, 0x12, 0x2f, 0x07, 0x9a,
-       0x85, 0x02, 0x5b, 0x05,
+       0x21, 0x44, 0x01, 0xfe, 0x8e, 0x13, 0xfe, 0x42, 0x58, 0xfe, 0x82, 0x14,
+       0xfe, 0xa4, 0x14, 0x87, 0xfe, 0x4a, 0xf4, 0x0b, 0x16, 0x44, 0xfe, 0x4a,
+       0xf4, 0x06, 0xfe, 0x0c, 0x12, 0x2f, 0x07, 0x9a, 0x85, 0x02, 0x5b, 0x05,
        0x3f, 0xb4, 0x0c, 0x3f, 0x5e, 0x2b, 0x01, 0x08, 0x26, 0x5c, 0x01, 0xfe,
-       0xd8, 0x14, 0x02, 0x5c,
-       0x13, 0x06, 0x65, 0xfe, 0xca, 0x12, 0x26, 0xfe, 0xe0, 0x12, 0x72, 0xf1,
-       0x01, 0x08, 0x23, 0x72,
-       0x03, 0x8f, 0xfe, 0xdc, 0x12, 0x25, 0xfe, 0xdc, 0x12, 0x1f, 0xfe, 0xca,
-       0x12, 0x5e, 0x2b, 0x01,
+       0xd8, 0x14, 0x02, 0x5c, 0x13, 0x06, 0x65, 0xfe, 0xca, 0x12, 0x26, 0xfe,
+       0xe0, 0x12, 0x72, 0xf1, 0x01, 0x08, 0x23, 0x72, 0x03, 0x8f, 0xfe, 0xdc,
+       0x12, 0x25, 0xfe, 0xdc, 0x12, 0x1f, 0xfe, 0xca, 0x12, 0x5e, 0x2b, 0x01,
        0x08, 0xfe, 0xd5, 0x10, 0x13, 0x6c, 0xff, 0x02, 0x00, 0x57, 0x48, 0x8b,
-       0x1c, 0xfe, 0xff, 0x7f,
-       0xfe, 0x30, 0x56, 0xfe, 0x00, 0x5c, 0x03, 0x13, 0x6c, 0xff, 0x02, 0x00,
-       0x57, 0x48, 0x8b, 0x1c,
-       0x3d, 0xfe, 0x30, 0x56, 0xfe, 0x00, 0x5c, 0x03, 0x13, 0x6c, 0xff, 0x02,
-       0x00, 0x57, 0x48, 0x8b,
+       0x1c, 0xfe, 0xff, 0x7f, 0xfe, 0x30, 0x56, 0xfe, 0x00, 0x5c, 0x03, 0x13,
+       0x6c, 0xff, 0x02, 0x00, 0x57, 0x48, 0x8b, 0x1c, 0x3d, 0xfe, 0x30, 0x56,
+       0xfe, 0x00, 0x5c, 0x03, 0x13, 0x6c, 0xff, 0x02, 0x00, 0x57, 0x48, 0x8b,
        0x03, 0x13, 0x6c, 0xff, 0x02, 0x00, 0x57, 0x48, 0x8b, 0xfe, 0x0b, 0x58,
-       0x03, 0x0a, 0x50, 0x01,
-       0x82, 0x0a, 0x3f, 0x01, 0x82, 0x03, 0xfc, 0x1c, 0x10, 0xff, 0x03, 0x00,
-       0x54, 0xfe, 0x00, 0xf4,
-       0x19, 0x48, 0xfe, 0x00, 0x7d, 0xfe, 0x01, 0x7d, 0xfe, 0x02, 0x7d, 0xfe,
-       0x03, 0x7c, 0x63, 0x27,
+       0x03, 0x0a, 0x50, 0x01, 0x82, 0x0a, 0x3f, 0x01, 0x82, 0x03, 0xfc, 0x1c,
+       0x10, 0xff, 0x03, 0x00, 0x54, 0xfe, 0x00, 0xf4, 0x19, 0x48, 0xfe, 0x00,
+       0x7d, 0xfe, 0x01, 0x7d, 0xfe, 0x02, 0x7d, 0xfe, 0x03, 0x7c, 0x63, 0x27,
        0x0c, 0x52, 0x18, 0x53, 0xbe, 0x56, 0xbf, 0x57, 0x03, 0xfe, 0x62, 0x08,
-       0xfe, 0x82, 0x4a, 0xfe,
-       0xe1, 0x1a, 0xfe, 0x83, 0x5a, 0x74, 0x03, 0x01, 0xfe, 0x14, 0x18, 0xfe,
-       0x42, 0x48, 0x5f, 0x60,
-       0x89, 0x01, 0x08, 0x1f, 0xfe, 0xa2, 0x14, 0x30, 0x2e, 0xd8, 0x01, 0x08,
-       0x1f, 0xfe, 0xa2, 0x14,
+       0xfe, 0x82, 0x4a, 0xfe, 0xe1, 0x1a, 0xfe, 0x83, 0x5a, 0x74, 0x03, 0x01,
+       0xfe, 0x14, 0x18, 0xfe, 0x42, 0x48, 0x5f, 0x60, 0x89, 0x01, 0x08, 0x1f,
+       0xfe, 0xa2, 0x14, 0x30, 0x2e, 0xd8, 0x01, 0x08, 0x1f, 0xfe, 0xa2, 0x14,
        0x30, 0x2e, 0xfe, 0xe8, 0x0a, 0xfe, 0xc1, 0x59, 0x05, 0xc6, 0x28, 0xfe,
-       0xcc, 0x12, 0x49, 0x04,
-       0x1b, 0xfe, 0xc4, 0x13, 0x23, 0x62, 0x1b, 0xe2, 0x4b, 0xc3, 0x64, 0xfe,
-       0xe8, 0x13, 0x3b, 0x13,
-       0x06, 0x17, 0xc3, 0x78, 0xdb, 0xfe, 0x78, 0x10, 0xff, 0x02, 0x83, 0x55,
-       0xa1, 0xff, 0x02, 0x83,
+       0xcc, 0x12, 0x49, 0x04, 0x1b, 0xfe, 0xc4, 0x13, 0x23, 0x62, 0x1b, 0xe2,
+       0x4b, 0xc3, 0x64, 0xfe, 0xe8, 0x13, 0x3b, 0x13, 0x06, 0x17, 0xc3, 0x78,
+       0xdb, 0xfe, 0x78, 0x10, 0xff, 0x02, 0x83, 0x55, 0xa1, 0xff, 0x02, 0x83,
        0x55, 0x62, 0x1a, 0xa4, 0xbb, 0xfe, 0x30, 0x00, 0x8e, 0xe4, 0x17, 0x2c,
-       0x13, 0x06, 0xfe, 0x56,
-       0x10, 0x62, 0x0b, 0xe1, 0xbb, 0xfe, 0x64, 0x00, 0x8e, 0xe4, 0x0a, 0xfe,
-       0x64, 0x00, 0x17, 0x93,
-       0x13, 0x06, 0xfe, 0x28, 0x10, 0x62, 0x06, 0xfe, 0x60, 0x13, 0xbb, 0xfe,
-       0xc8, 0x00, 0x8e, 0xe4,
+       0x13, 0x06, 0xfe, 0x56, 0x10, 0x62, 0x0b, 0xe1, 0xbb, 0xfe, 0x64, 0x00,
+       0x8e, 0xe4, 0x0a, 0xfe, 0x64, 0x00, 0x17, 0x93, 0x13, 0x06, 0xfe, 0x28,
+       0x10, 0x62, 0x06, 0xfe, 0x60, 0x13, 0xbb, 0xfe, 0xc8, 0x00, 0x8e, 0xe4,
        0x0a, 0xfe, 0xc8, 0x00, 0x17, 0x4d, 0x13, 0x06, 0x83, 0xbb, 0xfe, 0x90,
-       0x01, 0xba, 0xfe, 0x4e,
-       0x14, 0x89, 0xfe, 0x12, 0x10, 0xfe, 0x43, 0xf4, 0x94, 0xfe, 0x56, 0xf0,
-       0xfe, 0x60, 0x14, 0xfe,
-       0x04, 0xf4, 0x6c, 0xfe, 0x43, 0xf4, 0x93, 0xfe, 0xf3, 0x10, 0xf9, 0x01,
-       0xfe, 0x22, 0x13, 0x1c,
+       0x01, 0xba, 0xfe, 0x4e, 0x14, 0x89, 0xfe, 0x12, 0x10, 0xfe, 0x43, 0xf4,
+       0x94, 0xfe, 0x56, 0xf0, 0xfe, 0x60, 0x14, 0xfe, 0x04, 0xf4, 0x6c, 0xfe,
+       0x43, 0xf4, 0x93, 0xfe, 0xf3, 0x10, 0xf9, 0x01, 0xfe, 0x22, 0x13, 0x1c,
        0x3d, 0xfe, 0x10, 0x13, 0xfe, 0x00, 0x17, 0xfe, 0x4d, 0xe4, 0x69, 0xba,
-       0xfe, 0x9c, 0x14, 0xb7,
-       0x69, 0xfe, 0x1c, 0x10, 0xfe, 0x00, 0x17, 0xfe, 0x4d, 0xe4, 0x19, 0xba,
-       0xfe, 0x9c, 0x14, 0xb7,
-       0x19, 0x83, 0x60, 0x23, 0xfe, 0x4d, 0xf4, 0x00, 0xdf, 0x89, 0x13, 0x06,
-       0xfe, 0xb4, 0x56, 0xfe,
+       0xfe, 0x9c, 0x14, 0xb7, 0x69, 0xfe, 0x1c, 0x10, 0xfe, 0x00, 0x17, 0xfe,
+       0x4d, 0xe4, 0x19, 0xba, 0xfe, 0x9c, 0x14, 0xb7, 0x19, 0x83, 0x60, 0x23,
+       0xfe, 0x4d, 0xf4, 0x00, 0xdf, 0x89, 0x13, 0x06, 0xfe, 0xb4, 0x56, 0xfe,
        0xc3, 0x58, 0x03, 0x60, 0x13, 0x0b, 0x03, 0x15, 0x06, 0x01, 0x08, 0x26,
-       0xe5, 0x15, 0x0b, 0x01,
-       0x08, 0x26, 0xe5, 0x15, 0x1a, 0x01, 0x08, 0x26, 0xe5, 0x72, 0xfe, 0x89,
-       0x49, 0x01, 0x08, 0x03,
-       0x15, 0x06, 0x01, 0x08, 0x26, 0xa6, 0x15, 0x1a, 0x01, 0x08, 0x26, 0xa6,
-       0x15, 0x06, 0x01, 0x08,
+       0xe5, 0x15, 0x0b, 0x01, 0x08, 0x26, 0xe5, 0x15, 0x1a, 0x01, 0x08, 0x26,
+       0xe5, 0x72, 0xfe, 0x89, 0x49, 0x01, 0x08, 0x03, 0x15, 0x06, 0x01, 0x08,
+       0x26, 0xa6, 0x15, 0x1a, 0x01, 0x08, 0x26, 0xa6, 0x15, 0x06, 0x01, 0x08,
        0x26, 0xa6, 0xfe, 0x89, 0x49, 0x01, 0x08, 0x26, 0xa6, 0x72, 0xfe, 0x89,
-       0x4a, 0x01, 0x08, 0x03,
-       0x60, 0x03, 0x1e, 0xcc, 0x07, 0x06, 0xfe, 0x44, 0x13, 0xad, 0x12, 0xcc,
-       0xfe, 0x49, 0xf4, 0x00,
-       0x3b, 0x72, 0x9f, 0x5e, 0xfe, 0x01, 0xec, 0xfe, 0x27, 0x01, 0xf1, 0x01,
-       0x08, 0x2f, 0x07, 0xfe,
+       0x4a, 0x01, 0x08, 0x03, 0x60, 0x03, 0x1e, 0xcc, 0x07, 0x06, 0xfe, 0x44,
+       0x13, 0xad, 0x12, 0xcc, 0xfe, 0x49, 0xf4, 0x00, 0x3b, 0x72, 0x9f, 0x5e,
+       0xfe, 0x01, 0xec, 0xfe, 0x27, 0x01, 0xf1, 0x01, 0x08, 0x2f, 0x07, 0xfe,
        0xe3, 0x00, 0xfe, 0x20, 0x13, 0x1f, 0xfe, 0x5a, 0x15, 0x23, 0x12, 0xcd,
-       0x01, 0x43, 0x1e, 0xcd,
-       0x07, 0x06, 0x45, 0x09, 0x4a, 0x06, 0x35, 0x03, 0x0a, 0x42, 0x01, 0x0e,
-       0xed, 0x88, 0x07, 0x10,
-       0xa4, 0x0a, 0x80, 0x01, 0x0e, 0x88, 0x0a, 0x51, 0x01, 0x9e, 0x03, 0x0a,
-       0x80, 0x01, 0x0e, 0x88,
+       0x01, 0x43, 0x1e, 0xcd, 0x07, 0x06, 0x45, 0x09, 0x4a, 0x06, 0x35, 0x03,
+       0x0a, 0x42, 0x01, 0x0e, 0xed, 0x88, 0x07, 0x10, 0xa4, 0x0a, 0x80, 0x01,
+       0x0e, 0x88, 0x0a, 0x51, 0x01, 0x9e, 0x03, 0x0a, 0x80, 0x01, 0x0e, 0x88,
        0xfe, 0x80, 0xe7, 0x10, 0x07, 0x10, 0x84, 0xfe, 0x45, 0x58, 0x01, 0xe3,
-       0x88, 0x03, 0x0a, 0x42,
-       0x01, 0x0e, 0x88, 0x0a, 0x51, 0x01, 0x9e, 0x03, 0x0a, 0x42, 0x01, 0x0e,
-       0xfe, 0x80, 0x80, 0xf2,
-       0xfe, 0x49, 0xe4, 0x10, 0xa4, 0x0a, 0x80, 0x01, 0x0e, 0xf2, 0x0a, 0x51,
-       0x01, 0x82, 0x03, 0x17,
+       0x88, 0x03, 0x0a, 0x42, 0x01, 0x0e, 0x88, 0x0a, 0x51, 0x01, 0x9e, 0x03,
+       0x0a, 0x42, 0x01, 0x0e, 0xfe, 0x80, 0x80, 0xf2, 0xfe, 0x49, 0xe4, 0x10,
+       0xa4, 0x0a, 0x80, 0x01, 0x0e, 0xf2, 0x0a, 0x51, 0x01, 0x82, 0x03, 0x17,
        0x10, 0x71, 0x66, 0xfe, 0x60, 0x01, 0xfe, 0x18, 0xdf, 0xfe, 0x19, 0xde,
-       0xfe, 0x24, 0x1c, 0xfe,
-       0x1d, 0xf7, 0x1d, 0x90, 0xfe, 0xf6, 0x15, 0x01, 0xfe, 0xfc, 0x16, 0xe0,
-       0x91, 0x1d, 0x66, 0xfe,
-       0x2c, 0x01, 0xfe, 0x2f, 0x19, 0x03, 0xae, 0x21, 0xfe, 0xe6, 0x15, 0xfe,
-       0xda, 0x10, 0x17, 0x10,
+       0xfe, 0x24, 0x1c, 0xfe, 0x1d, 0xf7, 0x1d, 0x90, 0xfe, 0xf6, 0x15, 0x01,
+       0xfe, 0xfc, 0x16, 0xe0, 0x91, 0x1d, 0x66, 0xfe, 0x2c, 0x01, 0xfe, 0x2f,
+       0x19, 0x03, 0xae, 0x21, 0xfe, 0xe6, 0x15, 0xfe, 0xda, 0x10, 0x17, 0x10,
        0x71, 0x05, 0xfe, 0x64, 0x01, 0xfe, 0x00, 0xf4, 0x19, 0xfe, 0x18, 0x58,
-       0x05, 0xfe, 0x66, 0x01,
-       0xfe, 0x19, 0x58, 0x91, 0x19, 0xfe, 0x3c, 0x90, 0xfe, 0x30, 0xf4, 0x06,
-       0xfe, 0x3c, 0x50, 0x66,
-       0xfe, 0x38, 0x00, 0xfe, 0x0f, 0x79, 0xfe, 0x1c, 0xf7, 0x19, 0x90, 0xfe,
-       0x40, 0x16, 0xfe, 0xb6,
+       0x05, 0xfe, 0x66, 0x01, 0xfe, 0x19, 0x58, 0x91, 0x19, 0xfe, 0x3c, 0x90,
+       0xfe, 0x30, 0xf4, 0x06, 0xfe, 0x3c, 0x50, 0x66, 0xfe, 0x38, 0x00, 0xfe,
+       0x0f, 0x79, 0xfe, 0x1c, 0xf7, 0x19, 0x90, 0xfe, 0x40, 0x16, 0xfe, 0xb6,
        0x14, 0x34, 0x03, 0xae, 0x21, 0xfe, 0x18, 0x16, 0xfe, 0x9c, 0x10, 0x17,
-       0x10, 0x71, 0xfe, 0x83,
-       0x5a, 0xfe, 0x18, 0xdf, 0xfe, 0x19, 0xde, 0xfe, 0x1d, 0xf7, 0x38, 0x90,
-       0xfe, 0x62, 0x16, 0xfe,
-       0x94, 0x14, 0xfe, 0x10, 0x13, 0x91, 0x38, 0x66, 0x1b, 0xfe, 0xaf, 0x19,
-       0xfe, 0x98, 0xe7, 0x00,
+       0x10, 0x71, 0xfe, 0x83, 0x5a, 0xfe, 0x18, 0xdf, 0xfe, 0x19, 0xde, 0xfe,
+       0x1d, 0xf7, 0x38, 0x90, 0xfe, 0x62, 0x16, 0xfe, 0x94, 0x14, 0xfe, 0x10,
+       0x13, 0x91, 0x38, 0x66, 0x1b, 0xfe, 0xaf, 0x19, 0xfe, 0x98, 0xe7, 0x00,
        0x03, 0xae, 0x21, 0xfe, 0x56, 0x16, 0xfe, 0x6c, 0x10, 0x17, 0x10, 0x71,
-       0xfe, 0x30, 0xbc, 0xfe,
-       0xb2, 0xbc, 0x91, 0xc5, 0x66, 0x1b, 0xfe, 0x0f, 0x79, 0xfe, 0x1c, 0xf7,
-       0xc5, 0x90, 0xfe, 0x9a,
-       0x16, 0xfe, 0x5c, 0x14, 0x34, 0x03, 0xae, 0x21, 0xfe, 0x86, 0x16, 0xfe,
-       0x42, 0x10, 0xfe, 0x02,
+       0xfe, 0x30, 0xbc, 0xfe, 0xb2, 0xbc, 0x91, 0xc5, 0x66, 0x1b, 0xfe, 0x0f,
+       0x79, 0xfe, 0x1c, 0xf7, 0xc5, 0x90, 0xfe, 0x9a, 0x16, 0xfe, 0x5c, 0x14,
+       0x34, 0x03, 0xae, 0x21, 0xfe, 0x86, 0x16, 0xfe, 0x42, 0x10, 0xfe, 0x02,
        0xf6, 0x10, 0x71, 0xfe, 0x18, 0xfe, 0x54, 0xfe, 0x19, 0xfe, 0x55, 0xfc,
-       0xfe, 0x1d, 0xf7, 0x4f,
-       0x90, 0xfe, 0xc0, 0x16, 0xfe, 0x36, 0x14, 0xfe, 0x1c, 0x13, 0x91, 0x4f,
-       0x47, 0xfe, 0x83, 0x58,
-       0xfe, 0xaf, 0x19, 0xfe, 0x80, 0xe7, 0x10, 0xfe, 0x81, 0xe7, 0x10, 0x11,
-       0xfe, 0xdd, 0x00, 0x63,
+       0xfe, 0x1d, 0xf7, 0x4f, 0x90, 0xfe, 0xc0, 0x16, 0xfe, 0x36, 0x14, 0xfe,
+       0x1c, 0x13, 0x91, 0x4f, 0x47, 0xfe, 0x83, 0x58, 0xfe, 0xaf, 0x19, 0xfe,
+       0x80, 0xe7, 0x10, 0xfe, 0x81, 0xe7, 0x10, 0x11, 0xfe, 0xdd, 0x00, 0x63,
        0x27, 0x03, 0x63, 0x27, 0xfe, 0x12, 0x45, 0x21, 0xfe, 0xb0, 0x16, 0x14,
-       0x06, 0x37, 0x95, 0xa9,
-       0x02, 0x29, 0xfe, 0x39, 0xf0, 0xfe, 0x04, 0x17, 0x23, 0x03, 0xfe, 0x7e,
-       0x18, 0x1c, 0x1a, 0x5d,
-       0x13, 0x0d, 0x03, 0x71, 0x05, 0xcb, 0x1c, 0x06, 0xfe, 0xef, 0x12, 0xfe,
-       0xe1, 0x10, 0x78, 0x2c,
+       0x06, 0x37, 0x95, 0xa9, 0x02, 0x29, 0xfe, 0x39, 0xf0, 0xfe, 0x04, 0x17,
+       0x23, 0x03, 0xfe, 0x7e, 0x18, 0x1c, 0x1a, 0x5d, 0x13, 0x0d, 0x03, 0x71,
+       0x05, 0xcb, 0x1c, 0x06, 0xfe, 0xef, 0x12, 0xfe, 0xe1, 0x10, 0x78, 0x2c,
        0x46, 0x2f, 0x07, 0x2d, 0xfe, 0x3c, 0x13, 0xfe, 0x82, 0x14, 0xfe, 0x42,
-       0x13, 0x3c, 0x8a, 0x0a,
-       0x42, 0x01, 0x0e, 0xb0, 0xfe, 0x3e, 0x12, 0xf0, 0xfe, 0x45, 0x48, 0x01,
-       0xe3, 0xfe, 0x00, 0xcc,
-       0xb0, 0xfe, 0xf3, 0x13, 0x3d, 0x75, 0x07, 0x10, 0xa3, 0x0a, 0x80, 0x01,
-       0x0e, 0xf2, 0x01, 0x6f,
+       0x13, 0x3c, 0x8a, 0x0a, 0x42, 0x01, 0x0e, 0xb0, 0xfe, 0x3e, 0x12, 0xf0,
+       0xfe, 0x45, 0x48, 0x01, 0xe3, 0xfe, 0x00, 0xcc, 0xb0, 0xfe, 0xf3, 0x13,
+       0x3d, 0x75, 0x07, 0x10, 0xa3, 0x0a, 0x80, 0x01, 0x0e, 0xf2, 0x01, 0x6f,
        0xfe, 0x16, 0x10, 0x07, 0x7e, 0x85, 0xfe, 0x40, 0x14, 0xfe, 0x24, 0x12,
-       0xf6, 0xfe, 0xd6, 0xf0,
-       0xfe, 0x24, 0x17, 0x17, 0x0b, 0x03, 0xfe, 0x9c, 0xe7, 0x0b, 0x0f, 0xfe,
-       0x15, 0x00, 0x59, 0x76,
-       0x27, 0x01, 0xda, 0x17, 0x06, 0x03, 0x3c, 0x8a, 0x09, 0x4a, 0x1d, 0x35,
-       0x11, 0x2d, 0x01, 0x6f,
+       0xf6, 0xfe, 0xd6, 0xf0, 0xfe, 0x24, 0x17, 0x17, 0x0b, 0x03, 0xfe, 0x9c,
+       0xe7, 0x0b, 0x0f, 0xfe, 0x15, 0x00, 0x59, 0x76, 0x27, 0x01, 0xda, 0x17,
+       0x06, 0x03, 0x3c, 0x8a, 0x09, 0x4a, 0x1d, 0x35, 0x11, 0x2d, 0x01, 0x6f,
        0x17, 0x06, 0x03, 0xfe, 0x38, 0x90, 0xfe, 0xba, 0x90, 0x79, 0xc7, 0x68,
-       0xc8, 0xfe, 0x48, 0x55,
-       0x34, 0xfe, 0xc9, 0x55, 0x03, 0x1e, 0x98, 0x73, 0x12, 0x98, 0x03, 0x0a,
-       0x99, 0x01, 0x0e, 0xf0,
-       0x0a, 0x40, 0x01, 0x0e, 0xfe, 0x49, 0x44, 0x16, 0xfe, 0xf0, 0x17, 0x73,
-       0x75, 0x03, 0x0a, 0x42,
+       0xc8, 0xfe, 0x48, 0x55, 0x34, 0xfe, 0xc9, 0x55, 0x03, 0x1e, 0x98, 0x73,
+       0x12, 0x98, 0x03, 0x0a, 0x99, 0x01, 0x0e, 0xf0, 0x0a, 0x40, 0x01, 0x0e,
+       0xfe, 0x49, 0x44, 0x16, 0xfe, 0xf0, 0x17, 0x73, 0x75, 0x03, 0x0a, 0x42,
        0x01, 0x0e, 0x07, 0x10, 0x45, 0x0a, 0x51, 0x01, 0x9e, 0x0a, 0x40, 0x01,
-       0x0e, 0x73, 0x75, 0x03,
-       0xfe, 0x4e, 0xe4, 0x1a, 0x64, 0xfe, 0x24, 0x18, 0x05, 0xfe, 0x90, 0x00,
-       0xfe, 0x3a, 0x45, 0x5b,
-       0xfe, 0x4e, 0xe4, 0xc2, 0x64, 0xfe, 0x36, 0x18, 0x05, 0xfe, 0x92, 0x00,
-       0xfe, 0x02, 0xe6, 0x1b,
+       0x0e, 0x73, 0x75, 0x03, 0xfe, 0x4e, 0xe4, 0x1a, 0x64, 0xfe, 0x24, 0x18,
+       0x05, 0xfe, 0x90, 0x00, 0xfe, 0x3a, 0x45, 0x5b, 0xfe, 0x4e, 0xe4, 0xc2,
+       0x64, 0xfe, 0x36, 0x18, 0x05, 0xfe, 0x92, 0x00, 0xfe, 0x02, 0xe6, 0x1b,
        0xdc, 0xfe, 0x4e, 0xe4, 0xfe, 0x0b, 0x00, 0x64, 0xfe, 0x48, 0x18, 0x05,
-       0xfe, 0x94, 0x00, 0xfe,
-       0x02, 0xe6, 0x19, 0xfe, 0x08, 0x10, 0x05, 0xfe, 0x96, 0x00, 0xfe, 0x02,
-       0xe6, 0x2c, 0xfe, 0x4e,
-       0x45, 0xfe, 0x0c, 0x12, 0xaf, 0xff, 0x04, 0x68, 0x54, 0xde, 0x1c, 0x69,
-       0x03, 0x07, 0x7a, 0xfe,
+       0xfe, 0x94, 0x00, 0xfe, 0x02, 0xe6, 0x19, 0xfe, 0x08, 0x10, 0x05, 0xfe,
+       0x96, 0x00, 0xfe, 0x02, 0xe6, 0x2c, 0xfe, 0x4e, 0x45, 0xfe, 0x0c, 0x12,
+       0xaf, 0xff, 0x04, 0x68, 0x54, 0xde, 0x1c, 0x69, 0x03, 0x07, 0x7a, 0xfe,
        0x5a, 0xf0, 0xfe, 0x74, 0x18, 0x24, 0xfe, 0x09, 0x00, 0xfe, 0x34, 0x10,
-       0x07, 0x1b, 0xfe, 0x5a,
-       0xf0, 0xfe, 0x82, 0x18, 0x24, 0xc3, 0xfe, 0x26, 0x10, 0x07, 0x1a, 0x5d,
-       0x24, 0x2c, 0xdc, 0x07,
-       0x0b, 0x5d, 0x24, 0x93, 0xfe, 0x0e, 0x10, 0x07, 0x06, 0x5d, 0x24, 0x4d,
-       0x9f, 0xad, 0x03, 0x14,
+       0x07, 0x1b, 0xfe, 0x5a, 0xf0, 0xfe, 0x82, 0x18, 0x24, 0xc3, 0xfe, 0x26,
+       0x10, 0x07, 0x1a, 0x5d, 0x24, 0x2c, 0xdc, 0x07, 0x0b, 0x5d, 0x24, 0x93,
+       0xfe, 0x0e, 0x10, 0x07, 0x06, 0x5d, 0x24, 0x4d, 0x9f, 0xad, 0x03, 0x14,
        0xfe, 0x09, 0x00, 0x01, 0x33, 0xfe, 0x04, 0xfe, 0x7d, 0x05, 0x7f, 0xf9,
-       0x03, 0x25, 0xfe, 0xca,
-       0x18, 0xfe, 0x14, 0xf0, 0x08, 0x65, 0xfe, 0xc6, 0x18, 0x03, 0xff, 0x1a,
-       0x00, 0x00,
+       0x03, 0x25, 0xfe, 0xca, 0x18, 0xfe, 0x14, 0xf0, 0x08, 0x65, 0xfe, 0xc6,
+       0x18, 0x03, 0xff, 0x1a, 0x00, 0x00,
 };
 
 static unsigned short _adv_asc3550_size = sizeof(_adv_asc3550_buf);    /* 0x13AD */
@@ -11809,672 +9702,449 @@ static ADV_DCNT _adv_asc3550_chksum = 0x04D52DDDUL;  /* Expanded little-endian ch
 /* Microcode buffer is kept after initialization for error recovery. */
 static unsigned char _adv_asc38C0800_buf[] = {
        0x00, 0x00, 0x00, 0xf2, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x16, 0x18, 0xe4,
-       0x01, 0x00, 0x48, 0xe4,
-       0x18, 0x80, 0x03, 0xf6, 0x02, 0x00, 0xce, 0x19, 0x00, 0xfa, 0xff, 0xff,
-       0x1c, 0x0f, 0x00, 0xf6,
-       0x9e, 0xe7, 0xff, 0x00, 0x82, 0xe7, 0x00, 0xea, 0x01, 0xfa, 0x01, 0xe6,
-       0x09, 0xe7, 0x55, 0xf0,
+       0x01, 0x00, 0x48, 0xe4, 0x18, 0x80, 0x03, 0xf6, 0x02, 0x00, 0xce, 0x19,
+       0x00, 0xfa, 0xff, 0xff, 0x1c, 0x0f, 0x00, 0xf6, 0x9e, 0xe7, 0xff, 0x00,
+       0x82, 0xe7, 0x00, 0xea, 0x01, 0xfa, 0x01, 0xe6, 0x09, 0xe7, 0x55, 0xf0,
        0x01, 0xf6, 0x03, 0x00, 0x04, 0x00, 0x10, 0x00, 0x1e, 0xf0, 0x85, 0xf0,
-       0x18, 0xf4, 0x08, 0x00,
-       0xbc, 0x00, 0x38, 0x54, 0x00, 0xec, 0xd5, 0xf0, 0x82, 0x0d, 0x00, 0xe6,
-       0x86, 0xf0, 0xb1, 0xf0,
-       0x98, 0x57, 0x01, 0xfc, 0xb4, 0x00, 0xd4, 0x01, 0x0c, 0x1c, 0x3e, 0x1c,
-       0x3c, 0x00, 0xbb, 0x00,
+       0x18, 0xf4, 0x08, 0x00, 0xbc, 0x00, 0x38, 0x54, 0x00, 0xec, 0xd5, 0xf0,
+       0x82, 0x0d, 0x00, 0xe6, 0x86, 0xf0, 0xb1, 0xf0, 0x98, 0x57, 0x01, 0xfc,
+       0xb4, 0x00, 0xd4, 0x01, 0x0c, 0x1c, 0x3e, 0x1c, 0x3c, 0x00, 0xbb, 0x00,
        0x00, 0x10, 0xba, 0x19, 0x02, 0x80, 0x32, 0xf0, 0x7c, 0x0d, 0x02, 0x13,
-       0xba, 0x13, 0x18, 0x40,
-       0x00, 0x57, 0x01, 0xea, 0x02, 0xfc, 0x03, 0xfc, 0x3e, 0x00, 0x6c, 0x01,
-       0x6e, 0x01, 0x74, 0x01,
-       0x76, 0x01, 0xb9, 0x54, 0x3e, 0x57, 0x00, 0x80, 0x03, 0xe6, 0xb6, 0x00,
-       0xc0, 0x00, 0x01, 0x01,
+       0xba, 0x13, 0x18, 0x40, 0x00, 0x57, 0x01, 0xea, 0x02, 0xfc, 0x03, 0xfc,
+       0x3e, 0x00, 0x6c, 0x01, 0x6e, 0x01, 0x74, 0x01, 0x76, 0x01, 0xb9, 0x54,
+       0x3e, 0x57, 0x00, 0x80, 0x03, 0xe6, 0xb6, 0x00, 0xc0, 0x00, 0x01, 0x01,
        0x3e, 0x01, 0x7a, 0x01, 0xca, 0x08, 0xce, 0x10, 0x16, 0x11, 0x04, 0x12,
-       0x08, 0x12, 0x02, 0x4a,
-       0xbb, 0x55, 0x3c, 0x56, 0x03, 0x58, 0x1b, 0x80, 0x30, 0xe4, 0x4b, 0xe4,
-       0x5d, 0xf0, 0x02, 0xfa,
-       0x20, 0x00, 0x32, 0x00, 0x40, 0x00, 0x80, 0x00, 0x24, 0x01, 0x3c, 0x01,
-       0x68, 0x01, 0x6a, 0x01,
+       0x08, 0x12, 0x02, 0x4a, 0xbb, 0x55, 0x3c, 0x56, 0x03, 0x58, 0x1b, 0x80,
+       0x30, 0xe4, 0x4b, 0xe4, 0x5d, 0xf0, 0x02, 0xfa, 0x20, 0x00, 0x32, 0x00,
+       0x40, 0x00, 0x80, 0x00, 0x24, 0x01, 0x3c, 0x01, 0x68, 0x01, 0x6a, 0x01,
        0x70, 0x01, 0x72, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x62, 0x0a, 0x86, 0x0d,
-       0x06, 0x13, 0x4c, 0x1c,
-       0x04, 0x80, 0x4a, 0xe4, 0x02, 0xee, 0x5b, 0xf0, 0x03, 0xf7, 0x0c, 0x00,
-       0x0f, 0x00, 0x47, 0x00,
-       0xbe, 0x00, 0x00, 0x01, 0x20, 0x11, 0x5c, 0x16, 0x32, 0x1c, 0x38, 0x1c,
-       0x4e, 0x1c, 0x10, 0x44,
+       0x06, 0x13, 0x4c, 0x1c, 0x04, 0x80, 0x4a, 0xe4, 0x02, 0xee, 0x5b, 0xf0,
+       0x03, 0xf7, 0x0c, 0x00, 0x0f, 0x00, 0x47, 0x00, 0xbe, 0x00, 0x00, 0x01,
+       0x20, 0x11, 0x5c, 0x16, 0x32, 0x1c, 0x38, 0x1c, 0x4e, 0x1c, 0x10, 0x44,
        0x00, 0x4c, 0x04, 0xea, 0x5c, 0xf0, 0xa7, 0xf0, 0x04, 0xf6, 0x03, 0xfa,
-       0x05, 0x00, 0x34, 0x00,
-       0x36, 0x00, 0x98, 0x00, 0xcc, 0x00, 0x20, 0x01, 0x4e, 0x01, 0x4a, 0x0b,
-       0x42, 0x0c, 0x12, 0x0f,
-       0x0c, 0x10, 0x22, 0x11, 0x0a, 0x12, 0x04, 0x13, 0x30, 0x1c, 0x02, 0x48,
-       0x00, 0x4e, 0x42, 0x54,
+       0x05, 0x00, 0x34, 0x00, 0x36, 0x00, 0x98, 0x00, 0xcc, 0x00, 0x20, 0x01,
+       0x4e, 0x01, 0x4a, 0x0b, 0x42, 0x0c, 0x12, 0x0f, 0x0c, 0x10, 0x22, 0x11,
+       0x0a, 0x12, 0x04, 0x13, 0x30, 0x1c, 0x02, 0x48, 0x00, 0x4e, 0x42, 0x54,
        0x44, 0x55, 0xbd, 0x56, 0x06, 0x83, 0x00, 0xdc, 0x05, 0xf0, 0x09, 0xf0,
-       0x59, 0xf0, 0xb8, 0xf0,
-       0x4b, 0xf4, 0x06, 0xf7, 0x0e, 0xf7, 0x04, 0xfc, 0x05, 0xfc, 0x06, 0x00,
-       0x19, 0x00, 0x33, 0x00,
-       0x9b, 0x00, 0xa4, 0x00, 0xb5, 0x00, 0xba, 0x00, 0xd0, 0x00, 0xe1, 0x00,
-       0xe7, 0x00, 0xe2, 0x03,
+       0x59, 0xf0, 0xb8, 0xf0, 0x4b, 0xf4, 0x06, 0xf7, 0x0e, 0xf7, 0x04, 0xfc,
+       0x05, 0xfc, 0x06, 0x00, 0x19, 0x00, 0x33, 0x00, 0x9b, 0x00, 0xa4, 0x00,
+       0xb5, 0x00, 0xba, 0x00, 0xd0, 0x00, 0xe1, 0x00, 0xe7, 0x00, 0xe2, 0x03,
        0x08, 0x0f, 0x02, 0x10, 0x04, 0x10, 0x0a, 0x10, 0x0a, 0x13, 0x0c, 0x13,
-       0x12, 0x13, 0x24, 0x14,
-       0x34, 0x14, 0x04, 0x16, 0x08, 0x16, 0xa4, 0x17, 0x20, 0x1c, 0x34, 0x1c,
-       0x36, 0x1c, 0x08, 0x44,
-       0x38, 0x44, 0x91, 0x44, 0x0a, 0x45, 0x48, 0x46, 0x01, 0x48, 0x68, 0x54,
-       0x3a, 0x55, 0x83, 0x55,
+       0x12, 0x13, 0x24, 0x14, 0x34, 0x14, 0x04, 0x16, 0x08, 0x16, 0xa4, 0x17,
+       0x20, 0x1c, 0x34, 0x1c, 0x36, 0x1c, 0x08, 0x44, 0x38, 0x44, 0x91, 0x44,
+       0x0a, 0x45, 0x48, 0x46, 0x01, 0x48, 0x68, 0x54, 0x3a, 0x55, 0x83, 0x55,
        0xe5, 0x55, 0xb0, 0x57, 0x01, 0x58, 0x83, 0x59, 0x05, 0xe6, 0x0b, 0xf0,
-       0x0c, 0xf0, 0x04, 0xf8,
-       0x05, 0xf8, 0x07, 0x00, 0x0a, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x9e, 0x00,
-       0xa8, 0x00, 0xaa, 0x00,
-       0xb9, 0x00, 0xe0, 0x00, 0x22, 0x01, 0x26, 0x01, 0x79, 0x01, 0x7e, 0x01,
-       0xc4, 0x01, 0xc6, 0x01,
+       0x0c, 0xf0, 0x04, 0xf8, 0x05, 0xf8, 0x07, 0x00, 0x0a, 0x00, 0x1c, 0x00,
+       0x1e, 0x00, 0x9e, 0x00, 0xa8, 0x00, 0xaa, 0x00, 0xb9, 0x00, 0xe0, 0x00,
+       0x22, 0x01, 0x26, 0x01, 0x79, 0x01, 0x7e, 0x01, 0xc4, 0x01, 0xc6, 0x01,
        0x80, 0x02, 0x5e, 0x03, 0xee, 0x04, 0x9a, 0x06, 0xf8, 0x07, 0x62, 0x08,
-       0x68, 0x08, 0x69, 0x08,
-       0xd6, 0x08, 0xe9, 0x09, 0xfa, 0x0b, 0x2e, 0x0f, 0x12, 0x10, 0x1a, 0x10,
-       0xed, 0x10, 0xf1, 0x10,
-       0x2a, 0x11, 0x06, 0x12, 0x0c, 0x12, 0x3e, 0x12, 0x10, 0x13, 0x16, 0x13,
-       0x1e, 0x13, 0x46, 0x14,
+       0x68, 0x08, 0x69, 0x08, 0xd6, 0x08, 0xe9, 0x09, 0xfa, 0x0b, 0x2e, 0x0f,
+       0x12, 0x10, 0x1a, 0x10, 0xed, 0x10, 0xf1, 0x10, 0x2a, 0x11, 0x06, 0x12,
+       0x0c, 0x12, 0x3e, 0x12, 0x10, 0x13, 0x16, 0x13, 0x1e, 0x13, 0x46, 0x14,
        0x76, 0x14, 0x82, 0x14, 0x36, 0x15, 0xca, 0x15, 0x6b, 0x18, 0xbe, 0x18,
-       0xca, 0x18, 0xe6, 0x19,
-       0x12, 0x1c, 0x46, 0x1c, 0x9c, 0x32, 0x00, 0x40, 0x0e, 0x47, 0xfe, 0x9c,
-       0xf0, 0x2b, 0x02, 0xfe,
-       0xac, 0x0d, 0xff, 0x10, 0x00, 0x00, 0xd7, 0xfe, 0xe8, 0x19, 0x00, 0xd6,
-       0xfe, 0x84, 0x01, 0xff,
+       0xca, 0x18, 0xe6, 0x19, 0x12, 0x1c, 0x46, 0x1c, 0x9c, 0x32, 0x00, 0x40,
+       0x0e, 0x47, 0xfe, 0x9c, 0xf0, 0x2b, 0x02, 0xfe, 0xac, 0x0d, 0xff, 0x10,
+       0x00, 0x00, 0xd7, 0xfe, 0xe8, 0x19, 0x00, 0xd6, 0xfe, 0x84, 0x01, 0xff,
        0x03, 0x00, 0x00, 0xfe, 0x93, 0x15, 0xfe, 0x0f, 0x05, 0xff, 0x38, 0x00,
-       0x00, 0xfe, 0x57, 0x24,
-       0x00, 0xfe, 0x4c, 0x00, 0x5b, 0xff, 0x04, 0x00, 0x00, 0x11, 0xff, 0x09,
-       0x00, 0x00, 0xff, 0x08,
-       0x01, 0x01, 0xff, 0x08, 0xff, 0xff, 0xff, 0x27, 0x00, 0x00, 0xff, 0x10,
-       0xff, 0xff, 0xff, 0x11,
+       0x00, 0xfe, 0x57, 0x24, 0x00, 0xfe, 0x4c, 0x00, 0x5b, 0xff, 0x04, 0x00,
+       0x00, 0x11, 0xff, 0x09, 0x00, 0x00, 0xff, 0x08, 0x01, 0x01, 0xff, 0x08,
+       0xff, 0xff, 0xff, 0x27, 0x00, 0x00, 0xff, 0x10, 0xff, 0xff, 0xff, 0x11,
        0x00, 0x00, 0xfe, 0x78, 0x56, 0xfe, 0x34, 0x12, 0xff, 0x21, 0x00, 0x00,
-       0xfe, 0x04, 0xf7, 0xd6,
-       0x2c, 0x99, 0x0a, 0x01, 0xfe, 0xc2, 0x0f, 0xfe, 0x04, 0xf7, 0xd6, 0x99,
-       0x0a, 0x42, 0x2c, 0xfe,
-       0x3d, 0xf0, 0xfe, 0x06, 0x02, 0xfe, 0x20, 0xf0, 0xa7, 0xfe, 0x91, 0xf0,
-       0xfe, 0xf4, 0x01, 0xfe,
+       0xfe, 0x04, 0xf7, 0xd6, 0x2c, 0x99, 0x0a, 0x01, 0xfe, 0xc2, 0x0f, 0xfe,
+       0x04, 0xf7, 0xd6, 0x99, 0x0a, 0x42, 0x2c, 0xfe, 0x3d, 0xf0, 0xfe, 0x06,
+       0x02, 0xfe, 0x20, 0xf0, 0xa7, 0xfe, 0x91, 0xf0, 0xfe, 0xf4, 0x01, 0xfe,
        0x90, 0xf0, 0xfe, 0xf4, 0x01, 0xfe, 0x8f, 0xf0, 0xa7, 0x03, 0x5d, 0x4d,
-       0x02, 0xfe, 0xc8, 0x0d,
-       0x01, 0xfe, 0x38, 0x0e, 0xfe, 0xdd, 0x12, 0xfe, 0xfc, 0x10, 0xfe, 0x28,
-       0x1c, 0x03, 0xfe, 0xa6,
-       0x00, 0xfe, 0xd3, 0x12, 0x41, 0x14, 0xfe, 0xa6, 0x00, 0xc2, 0xfe, 0x48,
-       0xf0, 0xfe, 0x8a, 0x02,
+       0x02, 0xfe, 0xc8, 0x0d, 0x01, 0xfe, 0x38, 0x0e, 0xfe, 0xdd, 0x12, 0xfe,
+       0xfc, 0x10, 0xfe, 0x28, 0x1c, 0x03, 0xfe, 0xa6, 0x00, 0xfe, 0xd3, 0x12,
+       0x41, 0x14, 0xfe, 0xa6, 0x00, 0xc2, 0xfe, 0x48, 0xf0, 0xfe, 0x8a, 0x02,
        0xfe, 0x49, 0xf0, 0xfe, 0xa4, 0x02, 0xfe, 0x4a, 0xf0, 0xfe, 0xc2, 0x02,
-       0xfe, 0x46, 0xf0, 0xfe,
-       0x54, 0x02, 0xfe, 0x47, 0xf0, 0xfe, 0x5a, 0x02, 0xfe, 0x43, 0xf0, 0xfe,
-       0x48, 0x02, 0xfe, 0x44,
-       0xf0, 0xfe, 0x4c, 0x02, 0xfe, 0x45, 0xf0, 0xfe, 0x50, 0x02, 0x18, 0x0a,
-       0xaa, 0x18, 0x06, 0x14,
+       0xfe, 0x46, 0xf0, 0xfe, 0x54, 0x02, 0xfe, 0x47, 0xf0, 0xfe, 0x5a, 0x02,
+       0xfe, 0x43, 0xf0, 0xfe, 0x48, 0x02, 0xfe, 0x44, 0xf0, 0xfe, 0x4c, 0x02,
+       0xfe, 0x45, 0xf0, 0xfe, 0x50, 0x02, 0x18, 0x0a, 0xaa, 0x18, 0x06, 0x14,
        0xa1, 0x02, 0x2b, 0xfe, 0x00, 0x1c, 0xe7, 0xfe, 0x02, 0x1c, 0xe6, 0xfe,
-       0x1e, 0x1c, 0xfe, 0xe9,
-       0x10, 0x01, 0xfe, 0x18, 0x18, 0xfe, 0xe7, 0x10, 0xfe, 0x06, 0xfc, 0xce,
-       0x09, 0x70, 0x01, 0xa8,
-       0x02, 0x2b, 0x15, 0x59, 0x39, 0xa2, 0x01, 0xfe, 0x58, 0x10, 0x09, 0x70,
-       0x01, 0x87, 0xfe, 0xbd,
+       0x1e, 0x1c, 0xfe, 0xe9, 0x10, 0x01, 0xfe, 0x18, 0x18, 0xfe, 0xe7, 0x10,
+       0xfe, 0x06, 0xfc, 0xce, 0x09, 0x70, 0x01, 0xa8, 0x02, 0x2b, 0x15, 0x59,
+       0x39, 0xa2, 0x01, 0xfe, 0x58, 0x10, 0x09, 0x70, 0x01, 0x87, 0xfe, 0xbd,
        0x10, 0x09, 0x70, 0x01, 0x87, 0xfe, 0xad, 0x10, 0xfe, 0x16, 0x1c, 0xfe,
-       0x58, 0x1c, 0x18, 0x06,
-       0x14, 0xa1, 0x2c, 0x1c, 0x2b, 0xfe, 0x3d, 0xf0, 0xfe, 0x06, 0x02, 0x23,
-       0xfe, 0x98, 0x02, 0xfe,
-       0x5a, 0x1c, 0xf8, 0xfe, 0x14, 0x1c, 0x15, 0xfe, 0x30, 0x00, 0x39, 0xa2,
-       0x01, 0xfe, 0x48, 0x10,
+       0x58, 0x1c, 0x18, 0x06, 0x14, 0xa1, 0x2c, 0x1c, 0x2b, 0xfe, 0x3d, 0xf0,
+       0xfe, 0x06, 0x02, 0x23, 0xfe, 0x98, 0x02, 0xfe, 0x5a, 0x1c, 0xf8, 0xfe,
+       0x14, 0x1c, 0x15, 0xfe, 0x30, 0x00, 0x39, 0xa2, 0x01, 0xfe, 0x48, 0x10,
        0x18, 0x06, 0x14, 0xa1, 0x02, 0xd7, 0x22, 0x20, 0x07, 0x11, 0x35, 0xfe,
-       0x69, 0x10, 0x18, 0x06,
-       0x14, 0xa1, 0xfe, 0x04, 0xec, 0x20, 0x4f, 0x43, 0x13, 0x20, 0xfe, 0x05,
-       0xf6, 0xce, 0x01, 0xfe,
-       0x4a, 0x17, 0x08, 0x54, 0x58, 0x37, 0x12, 0x2f, 0x42, 0x92, 0x01, 0xfe,
-       0x82, 0x16, 0x02, 0x2b,
+       0x69, 0x10, 0x18, 0x06, 0x14, 0xa1, 0xfe, 0x04, 0xec, 0x20, 0x4f, 0x43,
+       0x13, 0x20, 0xfe, 0x05, 0xf6, 0xce, 0x01, 0xfe, 0x4a, 0x17, 0x08, 0x54,
+       0x58, 0x37, 0x12, 0x2f, 0x42, 0x92, 0x01, 0xfe, 0x82, 0x16, 0x02, 0x2b,
        0x09, 0x46, 0x01, 0x0e, 0x07, 0x00, 0x66, 0x01, 0x73, 0xfe, 0x18, 0x10,
-       0xfe, 0x41, 0x58, 0x09,
-       0xa4, 0x01, 0x0e, 0xfe, 0xc8, 0x54, 0x6b, 0xfe, 0x10, 0x03, 0x01, 0xfe,
-       0x82, 0x16, 0x02, 0x2b,
-       0x2c, 0x4f, 0xfe, 0x02, 0xe8, 0x2a, 0xfe, 0xbf, 0x57, 0xfe, 0x9e, 0x43,
-       0xfe, 0x77, 0x57, 0xfe,
+       0xfe, 0x41, 0x58, 0x09, 0xa4, 0x01, 0x0e, 0xfe, 0xc8, 0x54, 0x6b, 0xfe,
+       0x10, 0x03, 0x01, 0xfe, 0x82, 0x16, 0x02, 0x2b, 0x2c, 0x4f, 0xfe, 0x02,
+       0xe8, 0x2a, 0xfe, 0xbf, 0x57, 0xfe, 0x9e, 0x43, 0xfe, 0x77, 0x57, 0xfe,
        0x27, 0xf0, 0xfe, 0xe0, 0x01, 0xfe, 0x07, 0x4b, 0xfe, 0x20, 0xf0, 0xa7,
-       0xfe, 0x40, 0x1c, 0x1c,
-       0xd9, 0xfe, 0x26, 0xf0, 0xfe, 0x5a, 0x03, 0xfe, 0xa0, 0xf0, 0xfe, 0x48,
-       0x03, 0xfe, 0x11, 0xf0,
-       0xa7, 0xfe, 0xef, 0x10, 0xfe, 0x9f, 0xf0, 0xfe, 0x68, 0x03, 0xf9, 0x10,
-       0xfe, 0x11, 0x00, 0x02,
+       0xfe, 0x40, 0x1c, 0x1c, 0xd9, 0xfe, 0x26, 0xf0, 0xfe, 0x5a, 0x03, 0xfe,
+       0xa0, 0xf0, 0xfe, 0x48, 0x03, 0xfe, 0x11, 0xf0, 0xa7, 0xfe, 0xef, 0x10,
+       0xfe, 0x9f, 0xf0, 0xfe, 0x68, 0x03, 0xf9, 0x10, 0xfe, 0x11, 0x00, 0x02,
        0x65, 0x2c, 0xfe, 0x48, 0x1c, 0xf9, 0x08, 0x05, 0x1b, 0xfe, 0x18, 0x13,
-       0x21, 0x22, 0xa3, 0xb7,
-       0x13, 0xa3, 0x09, 0x46, 0x01, 0x0e, 0xb7, 0x78, 0x01, 0xfe, 0xb4, 0x16,
-       0x12, 0xd1, 0x1c, 0xd9,
-       0xfe, 0x01, 0xf0, 0xd9, 0xfe, 0x82, 0xf0, 0xfe, 0x96, 0x03, 0xfa, 0x12,
-       0xfe, 0xe4, 0x00, 0x27,
+       0x21, 0x22, 0xa3, 0xb7, 0x13, 0xa3, 0x09, 0x46, 0x01, 0x0e, 0xb7, 0x78,
+       0x01, 0xfe, 0xb4, 0x16, 0x12, 0xd1, 0x1c, 0xd9, 0xfe, 0x01, 0xf0, 0xd9,
+       0xfe, 0x82, 0xf0, 0xfe, 0x96, 0x03, 0xfa, 0x12, 0xfe, 0xe4, 0x00, 0x27,
        0xfe, 0xa8, 0x03, 0x1c, 0x34, 0x1d, 0xfe, 0xb8, 0x03, 0x01, 0x4b, 0xfe,
-       0x06, 0xf0, 0xfe, 0xc8,
-       0x03, 0x95, 0x86, 0xfe, 0x0a, 0xf0, 0xfe, 0x8a, 0x06, 0x02, 0x24, 0x03,
-       0x70, 0x28, 0x17, 0xfe,
-       0xfa, 0x04, 0x15, 0x6d, 0x01, 0x36, 0x7b, 0xfe, 0x6a, 0x02, 0x02, 0xd8,
-       0xf9, 0x2c, 0x99, 0x19,
+       0x06, 0xf0, 0xfe, 0xc8, 0x03, 0x95, 0x86, 0xfe, 0x0a, 0xf0, 0xfe, 0x8a,
+       0x06, 0x02, 0x24, 0x03, 0x70, 0x28, 0x17, 0xfe, 0xfa, 0x04, 0x15, 0x6d,
+       0x01, 0x36, 0x7b, 0xfe, 0x6a, 0x02, 0x02, 0xd8, 0xf9, 0x2c, 0x99, 0x19,
        0xfe, 0x67, 0x1b, 0xfe, 0xbf, 0x57, 0xfe, 0x77, 0x57, 0xfe, 0x48, 0x1c,
-       0x74, 0x01, 0xaf, 0x8c,
-       0x09, 0x46, 0x01, 0x0e, 0x07, 0x00, 0x17, 0xda, 0x09, 0xd1, 0x01, 0x0e,
-       0x8d, 0x51, 0x64, 0x79,
-       0x2a, 0x03, 0x70, 0x28, 0xfe, 0x10, 0x12, 0x15, 0x6d, 0x01, 0x36, 0x7b,
-       0xfe, 0x6a, 0x02, 0x02,
+       0x74, 0x01, 0xaf, 0x8c, 0x09, 0x46, 0x01, 0x0e, 0x07, 0x00, 0x17, 0xda,
+       0x09, 0xd1, 0x01, 0x0e, 0x8d, 0x51, 0x64, 0x79, 0x2a, 0x03, 0x70, 0x28,
+       0xfe, 0x10, 0x12, 0x15, 0x6d, 0x01, 0x36, 0x7b, 0xfe, 0x6a, 0x02, 0x02,
        0xd8, 0xc7, 0x81, 0xc8, 0x83, 0x1c, 0x24, 0x27, 0xfe, 0x40, 0x04, 0x1d,
-       0xfe, 0x3c, 0x04, 0x3b,
-       0xfe, 0xa0, 0x00, 0xfe, 0x9b, 0x57, 0xfe, 0x4e, 0x12, 0x2d, 0xff, 0x02,
-       0x00, 0x10, 0x01, 0x0b,
-       0x1d, 0xfe, 0xe4, 0x04, 0x2d, 0x01, 0x0b, 0x1d, 0x24, 0x33, 0x31, 0xde,
-       0xfe, 0x4c, 0x44, 0xfe,
+       0xfe, 0x3c, 0x04, 0x3b, 0xfe, 0xa0, 0x00, 0xfe, 0x9b, 0x57, 0xfe, 0x4e,
+       0x12, 0x2d, 0xff, 0x02, 0x00, 0x10, 0x01, 0x0b, 0x1d, 0xfe, 0xe4, 0x04,
+       0x2d, 0x01, 0x0b, 0x1d, 0x24, 0x33, 0x31, 0xde, 0xfe, 0x4c, 0x44, 0xfe,
        0x4c, 0x12, 0x51, 0xfe, 0x44, 0x48, 0x0f, 0x6f, 0xfe, 0x4c, 0x54, 0x6b,
-       0xda, 0x4f, 0x79, 0x2a,
-       0xfe, 0x06, 0x80, 0xfe, 0x48, 0x47, 0xfe, 0x62, 0x13, 0x08, 0x05, 0x1b,
-       0xfe, 0x2a, 0x13, 0x32,
-       0x07, 0x82, 0xfe, 0x52, 0x13, 0xfe, 0x20, 0x10, 0x0f, 0x6f, 0xfe, 0x4c,
-       0x54, 0x6b, 0xda, 0xfe,
+       0xda, 0x4f, 0x79, 0x2a, 0xfe, 0x06, 0x80, 0xfe, 0x48, 0x47, 0xfe, 0x62,
+       0x13, 0x08, 0x05, 0x1b, 0xfe, 0x2a, 0x13, 0x32, 0x07, 0x82, 0xfe, 0x52,
+       0x13, 0xfe, 0x20, 0x10, 0x0f, 0x6f, 0xfe, 0x4c, 0x54, 0x6b, 0xda, 0xfe,
        0x06, 0x80, 0xfe, 0x48, 0x47, 0xfe, 0x40, 0x13, 0x08, 0x05, 0x1b, 0xfe,
-       0x08, 0x13, 0x32, 0x07,
-       0x82, 0xfe, 0x30, 0x13, 0x08, 0x05, 0x1b, 0xfe, 0x1c, 0x12, 0x15, 0x9d,
-       0x08, 0x05, 0x06, 0x4d,
-       0x15, 0xfe, 0x0d, 0x00, 0x01, 0x36, 0x7b, 0xfe, 0x64, 0x0d, 0x02, 0x24,
-       0x2d, 0x12, 0xfe, 0xe6,
+       0x08, 0x13, 0x32, 0x07, 0x82, 0xfe, 0x30, 0x13, 0x08, 0x05, 0x1b, 0xfe,
+       0x1c, 0x12, 0x15, 0x9d, 0x08, 0x05, 0x06, 0x4d, 0x15, 0xfe, 0x0d, 0x00,
+       0x01, 0x36, 0x7b, 0xfe, 0x64, 0x0d, 0x02, 0x24, 0x2d, 0x12, 0xfe, 0xe6,
        0x00, 0xfe, 0x1c, 0x90, 0xfe, 0x40, 0x5c, 0x04, 0x15, 0x9d, 0x01, 0x36,
-       0x02, 0x2b, 0xfe, 0x42,
-       0x5b, 0x99, 0x19, 0xfe, 0x46, 0x59, 0xfe, 0xbf, 0x57, 0xfe, 0x77, 0x57,
-       0xfe, 0x87, 0x80, 0xfe,
-       0x31, 0xe4, 0x5b, 0x08, 0x05, 0x0a, 0xfe, 0x84, 0x13, 0xfe, 0x20, 0x80,
-       0x07, 0x19, 0xfe, 0x7c,
+       0x02, 0x2b, 0xfe, 0x42, 0x5b, 0x99, 0x19, 0xfe, 0x46, 0x59, 0xfe, 0xbf,
+       0x57, 0xfe, 0x77, 0x57, 0xfe, 0x87, 0x80, 0xfe, 0x31, 0xe4, 0x5b, 0x08,
+       0x05, 0x0a, 0xfe, 0x84, 0x13, 0xfe, 0x20, 0x80, 0x07, 0x19, 0xfe, 0x7c,
        0x12, 0x53, 0x05, 0x06, 0xfe, 0x6c, 0x13, 0x03, 0xfe, 0xa2, 0x00, 0x28,
-       0x17, 0xfe, 0x90, 0x05,
-       0xfe, 0x31, 0xe4, 0x5a, 0x53, 0x05, 0x0a, 0xfe, 0x56, 0x13, 0x03, 0xfe,
-       0xa0, 0x00, 0x28, 0xfe,
-       0x4e, 0x12, 0x67, 0xff, 0x02, 0x00, 0x10, 0x27, 0xfe, 0x48, 0x05, 0x1c,
-       0x34, 0xfe, 0x89, 0x48,
+       0x17, 0xfe, 0x90, 0x05, 0xfe, 0x31, 0xe4, 0x5a, 0x53, 0x05, 0x0a, 0xfe,
+       0x56, 0x13, 0x03, 0xfe, 0xa0, 0x00, 0x28, 0xfe, 0x4e, 0x12, 0x67, 0xff,
+       0x02, 0x00, 0x10, 0x27, 0xfe, 0x48, 0x05, 0x1c, 0x34, 0xfe, 0x89, 0x48,
        0xff, 0x02, 0x00, 0x10, 0x27, 0xfe, 0x56, 0x05, 0x26, 0xfe, 0xa8, 0x05,
-       0x12, 0xfe, 0xe3, 0x00,
-       0x21, 0x53, 0xfe, 0x4a, 0xf0, 0xfe, 0x76, 0x05, 0xfe, 0x49, 0xf0, 0xfe,
-       0x70, 0x05, 0x88, 0x25,
-       0xfe, 0x21, 0x00, 0xab, 0x25, 0xfe, 0x22, 0x00, 0xaa, 0x25, 0x58, 0xfe,
-       0x09, 0x48, 0xff, 0x02,
+       0x12, 0xfe, 0xe3, 0x00, 0x21, 0x53, 0xfe, 0x4a, 0xf0, 0xfe, 0x76, 0x05,
+       0xfe, 0x49, 0xf0, 0xfe, 0x70, 0x05, 0x88, 0x25, 0xfe, 0x21, 0x00, 0xab,
+       0x25, 0xfe, 0x22, 0x00, 0xaa, 0x25, 0x58, 0xfe, 0x09, 0x48, 0xff, 0x02,
        0x00, 0x10, 0x27, 0xfe, 0x86, 0x05, 0x26, 0xfe, 0xa8, 0x05, 0xfe, 0xe2,
-       0x08, 0x53, 0x05, 0xcb,
-       0x4d, 0x01, 0xb0, 0x25, 0x06, 0x13, 0xd3, 0x39, 0xfe, 0x27, 0x01, 0x08,
-       0x05, 0x1b, 0xfe, 0x22,
-       0x12, 0x41, 0x01, 0xb2, 0x15, 0x9d, 0x08, 0x05, 0x06, 0x4d, 0x15, 0xfe,
-       0x0d, 0x00, 0x01, 0x36,
+       0x08, 0x53, 0x05, 0xcb, 0x4d, 0x01, 0xb0, 0x25, 0x06, 0x13, 0xd3, 0x39,
+       0xfe, 0x27, 0x01, 0x08, 0x05, 0x1b, 0xfe, 0x22, 0x12, 0x41, 0x01, 0xb2,
+       0x15, 0x9d, 0x08, 0x05, 0x06, 0x4d, 0x15, 0xfe, 0x0d, 0x00, 0x01, 0x36,
        0x7b, 0xfe, 0x64, 0x0d, 0x02, 0x24, 0x03, 0xfe, 0x9c, 0x00, 0x28, 0xeb,
-       0x03, 0x5c, 0x28, 0xfe,
-       0x36, 0x13, 0x41, 0x01, 0xb2, 0x26, 0xfe, 0x18, 0x06, 0x09, 0x06, 0x53,
-       0x05, 0x1f, 0xfe, 0x02,
-       0x12, 0x50, 0x01, 0xfe, 0x9e, 0x15, 0x1d, 0xfe, 0x0e, 0x06, 0x12, 0xa5,
-       0x01, 0x4b, 0x12, 0xfe,
+       0x03, 0x5c, 0x28, 0xfe, 0x36, 0x13, 0x41, 0x01, 0xb2, 0x26, 0xfe, 0x18,
+       0x06, 0x09, 0x06, 0x53, 0x05, 0x1f, 0xfe, 0x02, 0x12, 0x50, 0x01, 0xfe,
+       0x9e, 0x15, 0x1d, 0xfe, 0x0e, 0x06, 0x12, 0xa5, 0x01, 0x4b, 0x12, 0xfe,
        0xe5, 0x00, 0x03, 0x5c, 0xc1, 0x0c, 0x5c, 0x03, 0xcd, 0x28, 0xfe, 0x62,
-       0x12, 0x03, 0x45, 0x28,
-       0xfe, 0x5a, 0x13, 0x01, 0xfe, 0x0c, 0x19, 0x01, 0xfe, 0x76, 0x19, 0xfe,
-       0x43, 0x48, 0xc4, 0xcc,
-       0x0f, 0x71, 0xff, 0x02, 0x00, 0x57, 0x52, 0x93, 0x1e, 0x43, 0x8b, 0xc4,
-       0x6e, 0x41, 0x01, 0xb2,
+       0x12, 0x03, 0x45, 0x28, 0xfe, 0x5a, 0x13, 0x01, 0xfe, 0x0c, 0x19, 0x01,
+       0xfe, 0x76, 0x19, 0xfe, 0x43, 0x48, 0xc4, 0xcc, 0x0f, 0x71, 0xff, 0x02,
+       0x00, 0x57, 0x52, 0x93, 0x1e, 0x43, 0x8b, 0xc4, 0x6e, 0x41, 0x01, 0xb2,
        0x26, 0xfe, 0x82, 0x06, 0x53, 0x05, 0x1a, 0xe9, 0x91, 0x09, 0x59, 0x01,
-       0xfe, 0xcc, 0x15, 0x1d,
-       0xfe, 0x78, 0x06, 0x12, 0xa5, 0x01, 0x4b, 0x12, 0xfe, 0xe5, 0x00, 0x03,
-       0x45, 0xc1, 0x0c, 0x45,
-       0x18, 0x06, 0x01, 0xb2, 0xfa, 0x76, 0x74, 0x01, 0xaf, 0x8c, 0x12, 0xfe,
-       0xe2, 0x00, 0x27, 0xdb,
+       0xfe, 0xcc, 0x15, 0x1d, 0xfe, 0x78, 0x06, 0x12, 0xa5, 0x01, 0x4b, 0x12,
+       0xfe, 0xe5, 0x00, 0x03, 0x45, 0xc1, 0x0c, 0x45, 0x18, 0x06, 0x01, 0xb2,
+       0xfa, 0x76, 0x74, 0x01, 0xaf, 0x8c, 0x12, 0xfe, 0xe2, 0x00, 0x27, 0xdb,
        0x1c, 0x34, 0xfe, 0x0a, 0xf0, 0xfe, 0xb6, 0x06, 0x94, 0xfe, 0x6c, 0x07,
-       0xfe, 0x06, 0xf0, 0xfe,
-       0x74, 0x07, 0x95, 0x86, 0x02, 0x24, 0x08, 0x05, 0x0a, 0xfe, 0x2e, 0x12,
-       0x16, 0x19, 0x01, 0x0b,
-       0x16, 0x00, 0x01, 0x0b, 0x16, 0x00, 0x01, 0x0b, 0x16, 0x00, 0x01, 0x0b,
-       0xfe, 0x99, 0xa4, 0x01,
+       0xfe, 0x06, 0xf0, 0xfe, 0x74, 0x07, 0x95, 0x86, 0x02, 0x24, 0x08, 0x05,
+       0x0a, 0xfe, 0x2e, 0x12, 0x16, 0x19, 0x01, 0x0b, 0x16, 0x00, 0x01, 0x0b,
+       0x16, 0x00, 0x01, 0x0b, 0x16, 0x00, 0x01, 0x0b, 0xfe, 0x99, 0xa4, 0x01,
        0x0b, 0x16, 0x00, 0x02, 0xfe, 0x42, 0x08, 0x68, 0x05, 0x1a, 0xfe, 0x38,
-       0x12, 0x08, 0x05, 0x1a,
-       0xfe, 0x30, 0x13, 0x16, 0xfe, 0x1b, 0x00, 0x01, 0x0b, 0x16, 0x00, 0x01,
-       0x0b, 0x16, 0x00, 0x01,
-       0x0b, 0x16, 0x00, 0x01, 0x0b, 0x16, 0x06, 0x01, 0x0b, 0x16, 0x00, 0x02,
-       0xe2, 0x6c, 0x58, 0xbe,
+       0x12, 0x08, 0x05, 0x1a, 0xfe, 0x30, 0x13, 0x16, 0xfe, 0x1b, 0x00, 0x01,
+       0x0b, 0x16, 0x00, 0x01, 0x0b, 0x16, 0x00, 0x01, 0x0b, 0x16, 0x00, 0x01,
+       0x0b, 0x16, 0x06, 0x01, 0x0b, 0x16, 0x00, 0x02, 0xe2, 0x6c, 0x58, 0xbe,
        0x50, 0xfe, 0x9a, 0x81, 0x55, 0x1b, 0x7a, 0xfe, 0x42, 0x07, 0x09, 0x1b,
-       0xfe, 0x09, 0x6f, 0xba,
-       0xfe, 0xca, 0x45, 0xfe, 0x32, 0x12, 0x69, 0x6d, 0x8b, 0x6c, 0x7f, 0x27,
-       0xfe, 0x54, 0x07, 0x1c,
-       0x34, 0xfe, 0x0a, 0xf0, 0xfe, 0x42, 0x07, 0x95, 0x86, 0x94, 0xfe, 0x6c,
-       0x07, 0x02, 0x24, 0x01,
+       0xfe, 0x09, 0x6f, 0xba, 0xfe, 0xca, 0x45, 0xfe, 0x32, 0x12, 0x69, 0x6d,
+       0x8b, 0x6c, 0x7f, 0x27, 0xfe, 0x54, 0x07, 0x1c, 0x34, 0xfe, 0x0a, 0xf0,
+       0xfe, 0x42, 0x07, 0x95, 0x86, 0x94, 0xfe, 0x6c, 0x07, 0x02, 0x24, 0x01,
        0x4b, 0x02, 0xdb, 0x16, 0x1f, 0x02, 0xdb, 0xfe, 0x9c, 0xf7, 0xdc, 0xfe,
-       0x2c, 0x90, 0xfe, 0xae,
-       0x90, 0x56, 0xfe, 0xda, 0x07, 0x0c, 0x60, 0x14, 0x61, 0x08, 0x54, 0x5a,
-       0x37, 0x22, 0x20, 0x07,
-       0x11, 0xfe, 0x0e, 0x12, 0x8d, 0xfe, 0x80, 0x80, 0x39, 0x20, 0x6a, 0x2a,
-       0xfe, 0x06, 0x10, 0xfe,
+       0x2c, 0x90, 0xfe, 0xae, 0x90, 0x56, 0xfe, 0xda, 0x07, 0x0c, 0x60, 0x14,
+       0x61, 0x08, 0x54, 0x5a, 0x37, 0x22, 0x20, 0x07, 0x11, 0xfe, 0x0e, 0x12,
+       0x8d, 0xfe, 0x80, 0x80, 0x39, 0x20, 0x6a, 0x2a, 0xfe, 0x06, 0x10, 0xfe,
        0x83, 0xe7, 0xfe, 0x48, 0x00, 0xab, 0xfe, 0x03, 0x40, 0x08, 0x54, 0x5b,
-       0x37, 0x01, 0xb3, 0xb8,
-       0xfe, 0x1f, 0x40, 0x13, 0x62, 0x01, 0xef, 0xfe, 0x08, 0x50, 0xfe, 0x8a,
-       0x50, 0xfe, 0x44, 0x51,
-       0xfe, 0xc6, 0x51, 0x88, 0xfe, 0x08, 0x90, 0xfe, 0x8a, 0x90, 0x0c, 0x5e,
-       0x14, 0x5f, 0xfe, 0x0c,
+       0x37, 0x01, 0xb3, 0xb8, 0xfe, 0x1f, 0x40, 0x13, 0x62, 0x01, 0xef, 0xfe,
+       0x08, 0x50, 0xfe, 0x8a, 0x50, 0xfe, 0x44, 0x51, 0xfe, 0xc6, 0x51, 0x88,
+       0xfe, 0x08, 0x90, 0xfe, 0x8a, 0x90, 0x0c, 0x5e, 0x14, 0x5f, 0xfe, 0x0c,
        0x90, 0xfe, 0x8e, 0x90, 0xfe, 0x40, 0x50, 0xfe, 0xc2, 0x50, 0x0c, 0x3d,
-       0x14, 0x3e, 0xfe, 0x4a,
-       0x10, 0x08, 0x05, 0x5a, 0xfe, 0x2a, 0x12, 0xfe, 0x2c, 0x90, 0xfe, 0xae,
-       0x90, 0x0c, 0x60, 0x14,
-       0x61, 0x08, 0x05, 0x5b, 0x8b, 0x01, 0xb3, 0xfe, 0x1f, 0x80, 0x13, 0x62,
-       0xfe, 0x44, 0x90, 0xfe,
+       0x14, 0x3e, 0xfe, 0x4a, 0x10, 0x08, 0x05, 0x5a, 0xfe, 0x2a, 0x12, 0xfe,
+       0x2c, 0x90, 0xfe, 0xae, 0x90, 0x0c, 0x60, 0x14, 0x61, 0x08, 0x05, 0x5b,
+       0x8b, 0x01, 0xb3, 0xfe, 0x1f, 0x80, 0x13, 0x62, 0xfe, 0x44, 0x90, 0xfe,
        0xc6, 0x90, 0x0c, 0x3f, 0x14, 0x40, 0xfe, 0x08, 0x90, 0xfe, 0x8a, 0x90,
-       0x0c, 0x5e, 0x14, 0x5f,
-       0xfe, 0x40, 0x90, 0xfe, 0xc2, 0x90, 0x0c, 0x3d, 0x14, 0x3e, 0x0c, 0x2e,
-       0x14, 0x3c, 0x21, 0x0c,
-       0x49, 0x0c, 0x63, 0x08, 0x54, 0x1f, 0x37, 0x2c, 0x0f, 0xfe, 0x4e, 0x11,
-       0x27, 0xdd, 0xfe, 0x9e,
+       0x0c, 0x5e, 0x14, 0x5f, 0xfe, 0x40, 0x90, 0xfe, 0xc2, 0x90, 0x0c, 0x3d,
+       0x14, 0x3e, 0x0c, 0x2e, 0x14, 0x3c, 0x21, 0x0c, 0x49, 0x0c, 0x63, 0x08,
+       0x54, 0x1f, 0x37, 0x2c, 0x0f, 0xfe, 0x4e, 0x11, 0x27, 0xdd, 0xfe, 0x9e,
        0xf0, 0xfe, 0x76, 0x08, 0xbc, 0x17, 0x34, 0x2c, 0x77, 0xe6, 0xc5, 0xfe,
-       0x9a, 0x08, 0xc6, 0xfe,
-       0xb8, 0x08, 0x94, 0xfe, 0x8e, 0x08, 0xfe, 0x06, 0xf0, 0xfe, 0x94, 0x08,
-       0x95, 0x86, 0x02, 0x24,
-       0x01, 0x4b, 0xfe, 0xc9, 0x10, 0x16, 0x1f, 0xfe, 0xc9, 0x10, 0x68, 0x05,
-       0x06, 0xfe, 0x10, 0x12,
+       0x9a, 0x08, 0xc6, 0xfe, 0xb8, 0x08, 0x94, 0xfe, 0x8e, 0x08, 0xfe, 0x06,
+       0xf0, 0xfe, 0x94, 0x08, 0x95, 0x86, 0x02, 0x24, 0x01, 0x4b, 0xfe, 0xc9,
+       0x10, 0x16, 0x1f, 0xfe, 0xc9, 0x10, 0x68, 0x05, 0x06, 0xfe, 0x10, 0x12,
        0x68, 0x05, 0x0a, 0x4e, 0x08, 0x05, 0x0a, 0xfe, 0x90, 0x12, 0xfe, 0x2e,
-       0x1c, 0x02, 0xfe, 0x18,
-       0x0b, 0x68, 0x05, 0x06, 0x4e, 0x68, 0x05, 0x0a, 0xfe, 0x7a, 0x12, 0xfe,
-       0x2c, 0x1c, 0xfe, 0xaa,
-       0xf0, 0xfe, 0xd2, 0x09, 0xfe, 0xac, 0xf0, 0xfe, 0x00, 0x09, 0x02, 0xfe,
-       0xde, 0x09, 0xfe, 0xb7,
+       0x1c, 0x02, 0xfe, 0x18, 0x0b, 0x68, 0x05, 0x06, 0x4e, 0x68, 0x05, 0x0a,
+       0xfe, 0x7a, 0x12, 0xfe, 0x2c, 0x1c, 0xfe, 0xaa, 0xf0, 0xfe, 0xd2, 0x09,
+       0xfe, 0xac, 0xf0, 0xfe, 0x00, 0x09, 0x02, 0xfe, 0xde, 0x09, 0xfe, 0xb7,
        0xf0, 0xfe, 0xfc, 0x08, 0xfe, 0x02, 0xf6, 0x1a, 0x50, 0xfe, 0x70, 0x18,
-       0xfe, 0xf1, 0x18, 0xfe,
-       0x40, 0x55, 0xfe, 0xe1, 0x55, 0xfe, 0x10, 0x58, 0xfe, 0x91, 0x58, 0xfe,
-       0x14, 0x59, 0xfe, 0x95,
-       0x59, 0x1c, 0x85, 0xfe, 0x8c, 0xf0, 0xfe, 0xfc, 0x08, 0xfe, 0xac, 0xf0,
-       0xfe, 0xf0, 0x08, 0xb5,
+       0xfe, 0xf1, 0x18, 0xfe, 0x40, 0x55, 0xfe, 0xe1, 0x55, 0xfe, 0x10, 0x58,
+       0xfe, 0x91, 0x58, 0xfe, 0x14, 0x59, 0xfe, 0x95, 0x59, 0x1c, 0x85, 0xfe,
+       0x8c, 0xf0, 0xfe, 0xfc, 0x08, 0xfe, 0xac, 0xf0, 0xfe, 0xf0, 0x08, 0xb5,
        0xfe, 0xcb, 0x10, 0xfe, 0xad, 0xf0, 0xfe, 0x0c, 0x09, 0x02, 0xfe, 0x18,
-       0x0b, 0xb6, 0xfe, 0xbf,
-       0x10, 0xfe, 0x2b, 0xf0, 0x85, 0xf4, 0x1e, 0xfe, 0x00, 0xfe, 0xfe, 0x1c,
-       0x12, 0xc2, 0xfe, 0xd2,
-       0xf0, 0x85, 0xfe, 0x76, 0x18, 0x1e, 0x19, 0x17, 0x85, 0x03, 0xd2, 0x1e,
-       0x06, 0x17, 0x85, 0xc5,
+       0x0b, 0xb6, 0xfe, 0xbf, 0x10, 0xfe, 0x2b, 0xf0, 0x85, 0xf4, 0x1e, 0xfe,
+       0x00, 0xfe, 0xfe, 0x1c, 0x12, 0xc2, 0xfe, 0xd2, 0xf0, 0x85, 0xfe, 0x76,
+       0x18, 0x1e, 0x19, 0x17, 0x85, 0x03, 0xd2, 0x1e, 0x06, 0x17, 0x85, 0xc5,
        0x4a, 0xc6, 0x4a, 0xb5, 0xb6, 0xfe, 0x89, 0x10, 0x74, 0x67, 0x2d, 0x15,
-       0x9d, 0x01, 0x36, 0x10,
-       0xfe, 0x35, 0x00, 0xfe, 0x01, 0xf0, 0x65, 0x10, 0x80, 0x02, 0x65, 0xfe,
-       0x98, 0x80, 0xfe, 0x19,
-       0xe4, 0x0a, 0xfe, 0x1a, 0x12, 0x51, 0xfe, 0x19, 0x82, 0xfe, 0x6c, 0x18,
-       0xfe, 0x44, 0x54, 0xbe,
+       0x9d, 0x01, 0x36, 0x10, 0xfe, 0x35, 0x00, 0xfe, 0x01, 0xf0, 0x65, 0x10,
+       0x80, 0x02, 0x65, 0xfe, 0x98, 0x80, 0xfe, 0x19, 0xe4, 0x0a, 0xfe, 0x1a,
+       0x12, 0x51, 0xfe, 0x19, 0x82, 0xfe, 0x6c, 0x18, 0xfe, 0x44, 0x54, 0xbe,
        0xfe, 0x19, 0x81, 0xfe, 0x74, 0x18, 0x8f, 0x90, 0x17, 0xfe, 0xce, 0x08,
-       0x02, 0x4a, 0x08, 0x05,
-       0x5a, 0xec, 0x03, 0x2e, 0x29, 0x3c, 0x0c, 0x3f, 0x14, 0x40, 0x9b, 0x2e,
-       0x9c, 0x3c, 0xfe, 0x6c,
-       0x18, 0xfe, 0xed, 0x18, 0xfe, 0x44, 0x54, 0xfe, 0xe5, 0x54, 0x3a, 0x3f,
-       0x3b, 0x40, 0x03, 0x49,
+       0x02, 0x4a, 0x08, 0x05, 0x5a, 0xec, 0x03, 0x2e, 0x29, 0x3c, 0x0c, 0x3f,
+       0x14, 0x40, 0x9b, 0x2e, 0x9c, 0x3c, 0xfe, 0x6c, 0x18, 0xfe, 0xed, 0x18,
+       0xfe, 0x44, 0x54, 0xfe, 0xe5, 0x54, 0x3a, 0x3f, 0x3b, 0x40, 0x03, 0x49,
        0x29, 0x63, 0x8f, 0xfe, 0xe3, 0x54, 0xfe, 0x74, 0x18, 0xfe, 0xf5, 0x18,
-       0x8f, 0xfe, 0xe3, 0x54,
-       0x90, 0xc0, 0x56, 0xfe, 0xce, 0x08, 0x02, 0x4a, 0xfe, 0x37, 0xf0, 0xfe,
-       0xda, 0x09, 0xfe, 0x8b,
-       0xf0, 0xfe, 0x60, 0x09, 0x02, 0x4a, 0x08, 0x05, 0x0a, 0x23, 0xfe, 0xfa,
-       0x0a, 0x3a, 0x49, 0x3b,
+       0x8f, 0xfe, 0xe3, 0x54, 0x90, 0xc0, 0x56, 0xfe, 0xce, 0x08, 0x02, 0x4a,
+       0xfe, 0x37, 0xf0, 0xfe, 0xda, 0x09, 0xfe, 0x8b, 0xf0, 0xfe, 0x60, 0x09,
+       0x02, 0x4a, 0x08, 0x05, 0x0a, 0x23, 0xfe, 0xfa, 0x0a, 0x3a, 0x49, 0x3b,
        0x63, 0x56, 0xfe, 0x3e, 0x0a, 0x0f, 0xfe, 0xc0, 0x07, 0x41, 0x98, 0x00,
-       0xad, 0xfe, 0x01, 0x59,
-       0xfe, 0x52, 0xf0, 0xfe, 0x0c, 0x0a, 0x8f, 0x7a, 0xfe, 0x24, 0x0a, 0x3a,
-       0x49, 0x8f, 0xfe, 0xe3,
-       0x54, 0x57, 0x49, 0x7d, 0x63, 0xfe, 0x14, 0x58, 0xfe, 0x95, 0x58, 0x02,
-       0x4a, 0x3a, 0x49, 0x3b,
+       0xad, 0xfe, 0x01, 0x59, 0xfe, 0x52, 0xf0, 0xfe, 0x0c, 0x0a, 0x8f, 0x7a,
+       0xfe, 0x24, 0x0a, 0x3a, 0x49, 0x8f, 0xfe, 0xe3, 0x54, 0x57, 0x49, 0x7d,
+       0x63, 0xfe, 0x14, 0x58, 0xfe, 0x95, 0x58, 0x02, 0x4a, 0x3a, 0x49, 0x3b,
        0x63, 0xfe, 0x14, 0x59, 0xfe, 0x95, 0x59, 0xbe, 0x57, 0x49, 0x57, 0x63,
-       0x02, 0x4a, 0x08, 0x05,
-       0x5a, 0xfe, 0x82, 0x12, 0x08, 0x05, 0x1f, 0xfe, 0x66, 0x13, 0x22, 0x62,
-       0xb7, 0xfe, 0x03, 0xa1,
-       0xfe, 0x83, 0x80, 0xfe, 0xc8, 0x44, 0xfe, 0x2e, 0x13, 0xfe, 0x04, 0x91,
-       0xfe, 0x86, 0x91, 0x6a,
+       0x02, 0x4a, 0x08, 0x05, 0x5a, 0xfe, 0x82, 0x12, 0x08, 0x05, 0x1f, 0xfe,
+       0x66, 0x13, 0x22, 0x62, 0xb7, 0xfe, 0x03, 0xa1, 0xfe, 0x83, 0x80, 0xfe,
+       0xc8, 0x44, 0xfe, 0x2e, 0x13, 0xfe, 0x04, 0x91, 0xfe, 0x86, 0x91, 0x6a,
        0x2a, 0xfe, 0x40, 0x59, 0xfe, 0xc1, 0x59, 0x56, 0xe0, 0x03, 0x60, 0x29,
-       0x61, 0x0c, 0x7f, 0x14,
-       0x80, 0x57, 0x60, 0x7d, 0x61, 0x01, 0xb3, 0xb8, 0x6a, 0x2a, 0x13, 0x62,
-       0x9b, 0x2e, 0x9c, 0x3c,
-       0x3a, 0x3f, 0x3b, 0x40, 0x90, 0xc0, 0xfe, 0x04, 0xfa, 0x2e, 0xfe, 0x05,
-       0xfa, 0x3c, 0x01, 0xef,
+       0x61, 0x0c, 0x7f, 0x14, 0x80, 0x57, 0x60, 0x7d, 0x61, 0x01, 0xb3, 0xb8,
+       0x6a, 0x2a, 0x13, 0x62, 0x9b, 0x2e, 0x9c, 0x3c, 0x3a, 0x3f, 0x3b, 0x40,
+       0x90, 0xc0, 0xfe, 0x04, 0xfa, 0x2e, 0xfe, 0x05, 0xfa, 0x3c, 0x01, 0xef,
        0xfe, 0x36, 0x10, 0x21, 0x0c, 0x7f, 0x0c, 0x80, 0x3a, 0x3f, 0x3b, 0x40,
-       0xe4, 0x08, 0x05, 0x1f,
-       0x17, 0xe0, 0x3a, 0x3d, 0x3b, 0x3e, 0x08, 0x05, 0xfe, 0xf7, 0x00, 0x37,
-       0x03, 0x5e, 0x29, 0x5f,
-       0xfe, 0x10, 0x58, 0xfe, 0x91, 0x58, 0x57, 0x49, 0x7d, 0x63, 0x02, 0xfe,
-       0xf4, 0x09, 0x08, 0x05,
+       0xe4, 0x08, 0x05, 0x1f, 0x17, 0xe0, 0x3a, 0x3d, 0x3b, 0x3e, 0x08, 0x05,
+       0xfe, 0xf7, 0x00, 0x37, 0x03, 0x5e, 0x29, 0x5f, 0xfe, 0x10, 0x58, 0xfe,
+       0x91, 0x58, 0x57, 0x49, 0x7d, 0x63, 0x02, 0xfe, 0xf4, 0x09, 0x08, 0x05,
        0x1f, 0x17, 0xe0, 0x08, 0x05, 0xfe, 0xf7, 0x00, 0x37, 0xbe, 0xfe, 0x19,
-       0x81, 0x50, 0xfe, 0x10,
-       0x90, 0xfe, 0x92, 0x90, 0xfe, 0xd3, 0x10, 0x32, 0x07, 0xa6, 0x17, 0xfe,
-       0x08, 0x09, 0x12, 0xa6,
-       0x08, 0x05, 0x0a, 0xfe, 0x14, 0x13, 0x03, 0x3d, 0x29, 0x3e, 0x56, 0xfe,
-       0x08, 0x09, 0xfe, 0x0c,
+       0x81, 0x50, 0xfe, 0x10, 0x90, 0xfe, 0x92, 0x90, 0xfe, 0xd3, 0x10, 0x32,
+       0x07, 0xa6, 0x17, 0xfe, 0x08, 0x09, 0x12, 0xa6, 0x08, 0x05, 0x0a, 0xfe,
+       0x14, 0x13, 0x03, 0x3d, 0x29, 0x3e, 0x56, 0xfe, 0x08, 0x09, 0xfe, 0x0c,
        0x58, 0xfe, 0x8d, 0x58, 0x02, 0x4a, 0x21, 0x41, 0xfe, 0x19, 0x80, 0xe7,
-       0x08, 0x05, 0x0a, 0xfe,
-       0x1a, 0x12, 0xfe, 0x6c, 0x19, 0xfe, 0x19, 0x41, 0xf4, 0xc2, 0xfe, 0xd1,
-       0xf0, 0xe2, 0x15, 0x7e,
-       0x01, 0x36, 0x10, 0xfe, 0x44, 0x00, 0xfe, 0x8e, 0x10, 0xfe, 0x6c, 0x19,
-       0x57, 0x3d, 0xfe, 0xed,
+       0x08, 0x05, 0x0a, 0xfe, 0x1a, 0x12, 0xfe, 0x6c, 0x19, 0xfe, 0x19, 0x41,
+       0xf4, 0xc2, 0xfe, 0xd1, 0xf0, 0xe2, 0x15, 0x7e, 0x01, 0x36, 0x10, 0xfe,
+       0x44, 0x00, 0xfe, 0x8e, 0x10, 0xfe, 0x6c, 0x19, 0x57, 0x3d, 0xfe, 0xed,
        0x19, 0x7d, 0x3e, 0xfe, 0x0c, 0x51, 0xfe, 0x8e, 0x51, 0xf4, 0x1e, 0xfe,
-       0x00, 0xff, 0x35, 0xfe,
-       0x74, 0x10, 0xc2, 0xfe, 0xd2, 0xf0, 0xfe, 0xa6, 0x0b, 0xfe, 0x76, 0x18,
-       0x1e, 0x19, 0x8a, 0x03,
-       0xd2, 0x1e, 0x06, 0xfe, 0x08, 0x13, 0x10, 0xfe, 0x16, 0x00, 0x02, 0x65,
-       0xfe, 0xd1, 0xf0, 0xfe,
+       0x00, 0xff, 0x35, 0xfe, 0x74, 0x10, 0xc2, 0xfe, 0xd2, 0xf0, 0xfe, 0xa6,
+       0x0b, 0xfe, 0x76, 0x18, 0x1e, 0x19, 0x8a, 0x03, 0xd2, 0x1e, 0x06, 0xfe,
+       0x08, 0x13, 0x10, 0xfe, 0x16, 0x00, 0x02, 0x65, 0xfe, 0xd1, 0xf0, 0xfe,
        0xb8, 0x0b, 0x15, 0x7e, 0x01, 0x36, 0x10, 0xfe, 0x17, 0x00, 0xfe, 0x42,
-       0x10, 0xfe, 0xce, 0xf0,
-       0xfe, 0xbe, 0x0b, 0xfe, 0x3c, 0x10, 0xfe, 0xcd, 0xf0, 0xfe, 0xca, 0x0b,
-       0x10, 0xfe, 0x22, 0x00,
-       0x02, 0x65, 0xfe, 0xcb, 0xf0, 0xfe, 0xd6, 0x0b, 0x10, 0xfe, 0x24, 0x00,
-       0x02, 0x65, 0xfe, 0xd0,
+       0x10, 0xfe, 0xce, 0xf0, 0xfe, 0xbe, 0x0b, 0xfe, 0x3c, 0x10, 0xfe, 0xcd,
+       0xf0, 0xfe, 0xca, 0x0b, 0x10, 0xfe, 0x22, 0x00, 0x02, 0x65, 0xfe, 0xcb,
+       0xf0, 0xfe, 0xd6, 0x0b, 0x10, 0xfe, 0x24, 0x00, 0x02, 0x65, 0xfe, 0xd0,
        0xf0, 0xfe, 0xe0, 0x0b, 0x10, 0x9e, 0xe5, 0xfe, 0xcf, 0xf0, 0xfe, 0xea,
-       0x0b, 0x10, 0x58, 0xfe,
-       0x10, 0x10, 0xfe, 0xcc, 0xf0, 0xe2, 0x68, 0x05, 0x1f, 0x4d, 0x10, 0xfe,
-       0x12, 0x00, 0x2c, 0x0f,
-       0xfe, 0x4e, 0x11, 0x27, 0xfe, 0x00, 0x0c, 0xfe, 0x9e, 0xf0, 0xfe, 0x14,
-       0x0c, 0xbc, 0x17, 0x34,
+       0x0b, 0x10, 0x58, 0xfe, 0x10, 0x10, 0xfe, 0xcc, 0xf0, 0xe2, 0x68, 0x05,
+       0x1f, 0x4d, 0x10, 0xfe, 0x12, 0x00, 0x2c, 0x0f, 0xfe, 0x4e, 0x11, 0x27,
+       0xfe, 0x00, 0x0c, 0xfe, 0x9e, 0xf0, 0xfe, 0x14, 0x0c, 0xbc, 0x17, 0x34,
        0x2c, 0x77, 0xe6, 0xc5, 0x24, 0xc6, 0x24, 0x2c, 0xfa, 0x27, 0xfe, 0x20,
-       0x0c, 0x1c, 0x34, 0x94,
-       0xfe, 0x3c, 0x0c, 0x95, 0x86, 0xc5, 0xdc, 0xc6, 0xdc, 0x02, 0x24, 0x01,
-       0x4b, 0xfe, 0xdb, 0x10,
-       0x12, 0xfe, 0xe8, 0x00, 0xb5, 0xb6, 0x74, 0xc7, 0x81, 0xc8, 0x83, 0xfe,
-       0x89, 0xf0, 0x24, 0x33,
+       0x0c, 0x1c, 0x34, 0x94, 0xfe, 0x3c, 0x0c, 0x95, 0x86, 0xc5, 0xdc, 0xc6,
+       0xdc, 0x02, 0x24, 0x01, 0x4b, 0xfe, 0xdb, 0x10, 0x12, 0xfe, 0xe8, 0x00,
+       0xb5, 0xb6, 0x74, 0xc7, 0x81, 0xc8, 0x83, 0xfe, 0x89, 0xf0, 0x24, 0x33,
        0x31, 0xe1, 0xc7, 0x81, 0xc8, 0x83, 0x27, 0xfe, 0x66, 0x0c, 0x1d, 0x24,
-       0x33, 0x31, 0xdf, 0xbc,
-       0x4e, 0x10, 0xfe, 0x42, 0x00, 0x02, 0x65, 0x7c, 0x06, 0xfe, 0x81, 0x49,
-       0x17, 0xfe, 0x2c, 0x0d,
-       0x08, 0x05, 0x0a, 0xfe, 0x44, 0x13, 0x10, 0x00, 0x55, 0x0a, 0xfe, 0x54,
-       0x12, 0x55, 0xfe, 0x28,
+       0x33, 0x31, 0xdf, 0xbc, 0x4e, 0x10, 0xfe, 0x42, 0x00, 0x02, 0x65, 0x7c,
+       0x06, 0xfe, 0x81, 0x49, 0x17, 0xfe, 0x2c, 0x0d, 0x08, 0x05, 0x0a, 0xfe,
+       0x44, 0x13, 0x10, 0x00, 0x55, 0x0a, 0xfe, 0x54, 0x12, 0x55, 0xfe, 0x28,
        0x00, 0x23, 0xfe, 0x9a, 0x0d, 0x09, 0x46, 0x01, 0x0e, 0x07, 0x00, 0x66,
-       0x44, 0xfe, 0x28, 0x00,
-       0xfe, 0xe2, 0x10, 0x01, 0xf5, 0x01, 0xf6, 0x09, 0xa4, 0x01, 0xfe, 0x26,
-       0x0f, 0x64, 0x12, 0x2f,
-       0x01, 0x73, 0x02, 0x2b, 0x10, 0xfe, 0x44, 0x00, 0x55, 0x0a, 0xe9, 0x44,
-       0x0a, 0xfe, 0xb4, 0x10,
+       0x44, 0xfe, 0x28, 0x00, 0xfe, 0xe2, 0x10, 0x01, 0xf5, 0x01, 0xf6, 0x09,
+       0xa4, 0x01, 0xfe, 0x26, 0x0f, 0x64, 0x12, 0x2f, 0x01, 0x73, 0x02, 0x2b,
+       0x10, 0xfe, 0x44, 0x00, 0x55, 0x0a, 0xe9, 0x44, 0x0a, 0xfe, 0xb4, 0x10,
        0x01, 0xb0, 0x44, 0x0a, 0xfe, 0xaa, 0x10, 0x01, 0xb0, 0xfe, 0x19, 0x82,
-       0xfe, 0x34, 0x46, 0xac,
-       0x44, 0x0a, 0x10, 0xfe, 0x43, 0x00, 0xfe, 0x96, 0x10, 0x08, 0x54, 0x0a,
-       0x37, 0x01, 0xf5, 0x01,
-       0xf6, 0x64, 0x12, 0x2f, 0x01, 0x73, 0x99, 0x0a, 0x64, 0x42, 0x92, 0x02,
-       0xfe, 0x2e, 0x03, 0x08,
+       0xfe, 0x34, 0x46, 0xac, 0x44, 0x0a, 0x10, 0xfe, 0x43, 0x00, 0xfe, 0x96,
+       0x10, 0x08, 0x54, 0x0a, 0x37, 0x01, 0xf5, 0x01, 0xf6, 0x64, 0x12, 0x2f,
+       0x01, 0x73, 0x99, 0x0a, 0x64, 0x42, 0x92, 0x02, 0xfe, 0x2e, 0x03, 0x08,
        0x05, 0x0a, 0x8a, 0x44, 0x0a, 0x10, 0x00, 0xfe, 0x5c, 0x10, 0x68, 0x05,
-       0x1a, 0xfe, 0x58, 0x12,
-       0x08, 0x05, 0x1a, 0xfe, 0x50, 0x13, 0xfe, 0x1c, 0x1c, 0xfe, 0x9d, 0xf0,
-       0xfe, 0x50, 0x0d, 0xfe,
-       0x1c, 0x1c, 0xfe, 0x9d, 0xf0, 0xfe, 0x56, 0x0d, 0x08, 0x54, 0x1a, 0x37,
-       0xfe, 0xa9, 0x10, 0x10,
+       0x1a, 0xfe, 0x58, 0x12, 0x08, 0x05, 0x1a, 0xfe, 0x50, 0x13, 0xfe, 0x1c,
+       0x1c, 0xfe, 0x9d, 0xf0, 0xfe, 0x50, 0x0d, 0xfe, 0x1c, 0x1c, 0xfe, 0x9d,
+       0xf0, 0xfe, 0x56, 0x0d, 0x08, 0x54, 0x1a, 0x37, 0xfe, 0xa9, 0x10, 0x10,
        0xfe, 0x15, 0x00, 0xfe, 0x04, 0xe6, 0x0a, 0x50, 0xfe, 0x2e, 0x10, 0x10,
-       0xfe, 0x13, 0x00, 0xfe,
-       0x10, 0x10, 0x10, 0x6f, 0xab, 0x10, 0xfe, 0x41, 0x00, 0xaa, 0x10, 0xfe,
-       0x24, 0x00, 0x8c, 0xb5,
-       0xb6, 0x74, 0x03, 0x70, 0x28, 0x23, 0xd8, 0x50, 0xfe, 0x04, 0xe6, 0x1a,
-       0xfe, 0x9d, 0x41, 0xfe,
+       0xfe, 0x13, 0x00, 0xfe, 0x10, 0x10, 0x10, 0x6f, 0xab, 0x10, 0xfe, 0x41,
+       0x00, 0xaa, 0x10, 0xfe, 0x24, 0x00, 0x8c, 0xb5, 0xb6, 0x74, 0x03, 0x70,
+       0x28, 0x23, 0xd8, 0x50, 0xfe, 0x04, 0xe6, 0x1a, 0xfe, 0x9d, 0x41, 0xfe,
        0x1c, 0x42, 0x64, 0x01, 0xe3, 0x02, 0x2b, 0xf8, 0x15, 0x0a, 0x39, 0xa0,
-       0xb4, 0x15, 0xfe, 0x31,
-       0x00, 0x39, 0xa2, 0x01, 0xfe, 0x48, 0x10, 0x02, 0xd7, 0x42, 0xfe, 0x06,
-       0xec, 0xd0, 0xfc, 0x44,
-       0x1b, 0xfe, 0xce, 0x45, 0x35, 0x42, 0xfe, 0x06, 0xea, 0xd0, 0xfe, 0x47,
-       0x4b, 0x91, 0xfe, 0x75,
+       0xb4, 0x15, 0xfe, 0x31, 0x00, 0x39, 0xa2, 0x01, 0xfe, 0x48, 0x10, 0x02,
+       0xd7, 0x42, 0xfe, 0x06, 0xec, 0xd0, 0xfc, 0x44, 0x1b, 0xfe, 0xce, 0x45,
+       0x35, 0x42, 0xfe, 0x06, 0xea, 0xd0, 0xfe, 0x47, 0x4b, 0x91, 0xfe, 0x75,
        0x57, 0x03, 0x5d, 0xfe, 0x98, 0x56, 0xfe, 0x38, 0x12, 0x09, 0x48, 0x01,
-       0x0e, 0xfe, 0x44, 0x48,
-       0x4f, 0x08, 0x05, 0x1b, 0xfe, 0x1a, 0x13, 0x09, 0x46, 0x01, 0x0e, 0x41,
-       0xfe, 0x41, 0x58, 0x09,
-       0xa4, 0x01, 0x0e, 0xfe, 0x49, 0x54, 0x96, 0xfe, 0x1e, 0x0e, 0x02, 0xfe,
-       0x2e, 0x03, 0x09, 0x5d,
+       0x0e, 0xfe, 0x44, 0x48, 0x4f, 0x08, 0x05, 0x1b, 0xfe, 0x1a, 0x13, 0x09,
+       0x46, 0x01, 0x0e, 0x41, 0xfe, 0x41, 0x58, 0x09, 0xa4, 0x01, 0x0e, 0xfe,
+       0x49, 0x54, 0x96, 0xfe, 0x1e, 0x0e, 0x02, 0xfe, 0x2e, 0x03, 0x09, 0x5d,
        0xfe, 0xee, 0x14, 0xfc, 0x44, 0x1b, 0xfe, 0xce, 0x45, 0x35, 0x42, 0xfe,
-       0xce, 0x47, 0xfe, 0xad,
-       0x13, 0x02, 0x2b, 0x22, 0x20, 0x07, 0x11, 0xfe, 0x9e, 0x12, 0x21, 0x13,
-       0x59, 0x13, 0x9f, 0x13,
-       0xd5, 0x22, 0x2f, 0x41, 0x39, 0x2f, 0xbc, 0xad, 0xfe, 0xbc, 0xf0, 0xfe,
-       0xe0, 0x0e, 0x0f, 0x06,
+       0xce, 0x47, 0xfe, 0xad, 0x13, 0x02, 0x2b, 0x22, 0x20, 0x07, 0x11, 0xfe,
+       0x9e, 0x12, 0x21, 0x13, 0x59, 0x13, 0x9f, 0x13, 0xd5, 0x22, 0x2f, 0x41,
+       0x39, 0x2f, 0xbc, 0xad, 0xfe, 0xbc, 0xf0, 0xfe, 0xe0, 0x0e, 0x0f, 0x06,
        0x13, 0x59, 0x01, 0xfe, 0xda, 0x16, 0x03, 0xfe, 0x38, 0x01, 0x29, 0xfe,
-       0x3a, 0x01, 0x56, 0xfe,
-       0xe4, 0x0e, 0xfe, 0x02, 0xec, 0xd5, 0x69, 0x00, 0x66, 0xfe, 0x04, 0xec,
-       0x20, 0x4f, 0xfe, 0x05,
-       0xf6, 0xfe, 0x34, 0x01, 0x01, 0xfe, 0x4a, 0x17, 0xfe, 0x08, 0x90, 0xfe,
-       0x48, 0xf4, 0x0d, 0xfe,
+       0x3a, 0x01, 0x56, 0xfe, 0xe4, 0x0e, 0xfe, 0x02, 0xec, 0xd5, 0x69, 0x00,
+       0x66, 0xfe, 0x04, 0xec, 0x20, 0x4f, 0xfe, 0x05, 0xf6, 0xfe, 0x34, 0x01,
+       0x01, 0xfe, 0x4a, 0x17, 0xfe, 0x08, 0x90, 0xfe, 0x48, 0xf4, 0x0d, 0xfe,
        0x18, 0x13, 0xba, 0xfe, 0x02, 0xea, 0xd5, 0x69, 0x7e, 0xfe, 0xc5, 0x13,
-       0x15, 0x1a, 0x39, 0xa0,
-       0xb4, 0xfe, 0x2e, 0x10, 0x03, 0xfe, 0x38, 0x01, 0x1e, 0xfe, 0xf0, 0xff,
-       0x0c, 0xfe, 0x60, 0x01,
-       0x03, 0xfe, 0x3a, 0x01, 0x0c, 0xfe, 0x62, 0x01, 0x43, 0x13, 0x20, 0x25,
-       0x06, 0x13, 0x2f, 0x12,
+       0x15, 0x1a, 0x39, 0xa0, 0xb4, 0xfe, 0x2e, 0x10, 0x03, 0xfe, 0x38, 0x01,
+       0x1e, 0xfe, 0xf0, 0xff, 0x0c, 0xfe, 0x60, 0x01, 0x03, 0xfe, 0x3a, 0x01,
+       0x0c, 0xfe, 0x62, 0x01, 0x43, 0x13, 0x20, 0x25, 0x06, 0x13, 0x2f, 0x12,
        0x2f, 0x92, 0x0f, 0x06, 0x04, 0x21, 0x04, 0x22, 0x59, 0xfe, 0xf7, 0x12,
-       0x22, 0x9f, 0xb7, 0x13,
-       0x9f, 0x07, 0x7e, 0xfe, 0x71, 0x13, 0xfe, 0x24, 0x1c, 0x15, 0x19, 0x39,
-       0xa0, 0xb4, 0xfe, 0xd9,
-       0x10, 0xc3, 0xfe, 0x03, 0xdc, 0xfe, 0x73, 0x57, 0xfe, 0x80, 0x5d, 0x04,
-       0xc3, 0xfe, 0x03, 0xdc,
+       0x22, 0x9f, 0xb7, 0x13, 0x9f, 0x07, 0x7e, 0xfe, 0x71, 0x13, 0xfe, 0x24,
+       0x1c, 0x15, 0x19, 0x39, 0xa0, 0xb4, 0xfe, 0xd9, 0x10, 0xc3, 0xfe, 0x03,
+       0xdc, 0xfe, 0x73, 0x57, 0xfe, 0x80, 0x5d, 0x04, 0xc3, 0xfe, 0x03, 0xdc,
        0xfe, 0x5b, 0x57, 0xfe, 0x80, 0x5d, 0x04, 0xfe, 0x03, 0x57, 0xc3, 0x21,
-       0xfe, 0x00, 0xcc, 0x04,
-       0xfe, 0x03, 0x57, 0xc3, 0x78, 0x04, 0x08, 0x05, 0x58, 0xfe, 0x22, 0x13,
-       0xfe, 0x1c, 0x80, 0x07,
-       0x06, 0xfe, 0x1a, 0x13, 0xfe, 0x1e, 0x80, 0xed, 0xfe, 0x1d, 0x80, 0xae,
-       0xfe, 0x0c, 0x90, 0xfe,
+       0xfe, 0x00, 0xcc, 0x04, 0xfe, 0x03, 0x57, 0xc3, 0x78, 0x04, 0x08, 0x05,
+       0x58, 0xfe, 0x22, 0x13, 0xfe, 0x1c, 0x80, 0x07, 0x06, 0xfe, 0x1a, 0x13,
+       0xfe, 0x1e, 0x80, 0xed, 0xfe, 0x1d, 0x80, 0xae, 0xfe, 0x0c, 0x90, 0xfe,
        0x0e, 0x13, 0xfe, 0x0e, 0x90, 0xac, 0xfe, 0x3c, 0x90, 0xfe, 0x30, 0xf4,
-       0x0a, 0xfe, 0x3c, 0x50,
-       0xaa, 0x01, 0xfe, 0x7a, 0x17, 0x32, 0x07, 0x2f, 0xad, 0x01, 0xfe, 0xb4,
-       0x16, 0x08, 0x05, 0x1b,
-       0x4e, 0x01, 0xf5, 0x01, 0xf6, 0x12, 0xfe, 0xe9, 0x00, 0x08, 0x05, 0x58,
-       0xfe, 0x2c, 0x13, 0x01,
+       0x0a, 0xfe, 0x3c, 0x50, 0xaa, 0x01, 0xfe, 0x7a, 0x17, 0x32, 0x07, 0x2f,
+       0xad, 0x01, 0xfe, 0xb4, 0x16, 0x08, 0x05, 0x1b, 0x4e, 0x01, 0xf5, 0x01,
+       0xf6, 0x12, 0xfe, 0xe9, 0x00, 0x08, 0x05, 0x58, 0xfe, 0x2c, 0x13, 0x01,
        0xfe, 0x0c, 0x17, 0xfe, 0x1e, 0x1c, 0xfe, 0x14, 0x90, 0xfe, 0x96, 0x90,
-       0x0c, 0xfe, 0x64, 0x01,
-       0x14, 0xfe, 0x66, 0x01, 0x08, 0x05, 0x5b, 0xfe, 0x12, 0x12, 0xfe, 0x03,
-       0x80, 0x8d, 0xfe, 0x01,
-       0xec, 0x20, 0xfe, 0x80, 0x40, 0x13, 0x20, 0x6a, 0x2a, 0x12, 0xcf, 0x64,
-       0x22, 0x20, 0xfb, 0x79,
+       0x0c, 0xfe, 0x64, 0x01, 0x14, 0xfe, 0x66, 0x01, 0x08, 0x05, 0x5b, 0xfe,
+       0x12, 0x12, 0xfe, 0x03, 0x80, 0x8d, 0xfe, 0x01, 0xec, 0x20, 0xfe, 0x80,
+       0x40, 0x13, 0x20, 0x6a, 0x2a, 0x12, 0xcf, 0x64, 0x22, 0x20, 0xfb, 0x79,
        0x20, 0x04, 0xfe, 0x08, 0x1c, 0x03, 0xfe, 0xac, 0x00, 0xfe, 0x06, 0x58,
-       0x03, 0xfe, 0xae, 0x00,
-
-       0xfe, 0x07, 0x58, 0x03, 0xfe, 0xb0, 0x00, 0xfe, 0x08, 0x58, 0x03, 0xfe,
-       0xb2, 0x00, 0xfe, 0x09,
-       0x58, 0xfe, 0x0a, 0x1c, 0x25, 0x6e, 0x13, 0xd0, 0x21, 0x0c, 0x5c, 0x0c,
-       0x45, 0x0f, 0x46, 0x52,
+       0x03, 0xfe, 0xae, 0x00, 0xfe, 0x07, 0x58, 0x03, 0xfe, 0xb0, 0x00, 0xfe,
+       0x08, 0x58, 0x03, 0xfe, 0xb2, 0x00, 0xfe, 0x09, 0x58, 0xfe, 0x0a, 0x1c,
+       0x25, 0x6e, 0x13, 0xd0, 0x21, 0x0c, 0x5c, 0x0c, 0x45, 0x0f, 0x46, 0x52,
        0x50, 0x18, 0x1b, 0xfe, 0x90, 0x4d, 0xfe, 0x91, 0x54, 0x23, 0xfe, 0xfc,
-       0x0f, 0x44, 0x11, 0x0f,
-       0x48, 0x52, 0x18, 0x58, 0xfe, 0x90, 0x4d, 0xfe, 0x91, 0x54, 0x23, 0xe4,
-       0x25, 0x11, 0x13, 0x20,
-       0x7c, 0x6f, 0x4f, 0x22, 0x20, 0xfb, 0x79, 0x20, 0x12, 0xcf, 0xfe, 0x14,
-       0x56, 0xfe, 0xd6, 0xf0,
+       0x0f, 0x44, 0x11, 0x0f, 0x48, 0x52, 0x18, 0x58, 0xfe, 0x90, 0x4d, 0xfe,
+       0x91, 0x54, 0x23, 0xe4, 0x25, 0x11, 0x13, 0x20, 0x7c, 0x6f, 0x4f, 0x22,
+       0x20, 0xfb, 0x79, 0x20, 0x12, 0xcf, 0xfe, 0x14, 0x56, 0xfe, 0xd6, 0xf0,
        0xfe, 0x26, 0x10, 0xf8, 0x74, 0xfe, 0x14, 0x1c, 0xfe, 0x10, 0x1c, 0xfe,
-       0x18, 0x1c, 0x04, 0x42,
-       0xfe, 0x0c, 0x14, 0xfc, 0xfe, 0x07, 0xe6, 0x1b, 0xfe, 0xce, 0x47, 0xfe,
-       0xf5, 0x13, 0x04, 0x01,
-       0xb0, 0x7c, 0x6f, 0x4f, 0xfe, 0x06, 0x80, 0xfe, 0x48, 0x47, 0xfe, 0x42,
-       0x13, 0x32, 0x07, 0x2f,
+       0x18, 0x1c, 0x04, 0x42, 0xfe, 0x0c, 0x14, 0xfc, 0xfe, 0x07, 0xe6, 0x1b,
+       0xfe, 0xce, 0x47, 0xfe, 0xf5, 0x13, 0x04, 0x01, 0xb0, 0x7c, 0x6f, 0x4f,
+       0xfe, 0x06, 0x80, 0xfe, 0x48, 0x47, 0xfe, 0x42, 0x13, 0x32, 0x07, 0x2f,
        0xfe, 0x34, 0x13, 0x09, 0x48, 0x01, 0x0e, 0xbb, 0xfe, 0x36, 0x12, 0xfe,
-       0x41, 0x48, 0xfe, 0x45,
-       0x48, 0x01, 0xf0, 0xfe, 0x00, 0xcc, 0xbb, 0xfe, 0xf3, 0x13, 0x43, 0x78,
-       0x07, 0x11, 0xac, 0x09,
-       0x84, 0x01, 0x0e, 0xfe, 0x80, 0x5c, 0x01, 0x73, 0xfe, 0x0e, 0x10, 0x07,
-       0x82, 0x4e, 0xfe, 0x14,
+       0x41, 0x48, 0xfe, 0x45, 0x48, 0x01, 0xf0, 0xfe, 0x00, 0xcc, 0xbb, 0xfe,
+       0xf3, 0x13, 0x43, 0x78, 0x07, 0x11, 0xac, 0x09, 0x84, 0x01, 0x0e, 0xfe,
+       0x80, 0x5c, 0x01, 0x73, 0xfe, 0x0e, 0x10, 0x07, 0x82, 0x4e, 0xfe, 0x14,
        0x56, 0xfe, 0xd6, 0xf0, 0xfe, 0x60, 0x10, 0x04, 0xfe, 0x44, 0x58, 0x8d,
-       0xfe, 0x01, 0xec, 0xa2,
-       0xfe, 0x9e, 0x40, 0xfe, 0x9d, 0xe7, 0x00, 0xfe, 0x9c, 0xe7, 0x1a, 0x79,
-       0x2a, 0x01, 0xe3, 0xfe,
-       0xdd, 0x10, 0x2c, 0xc7, 0x81, 0xc8, 0x83, 0x33, 0x31, 0xde, 0x07, 0x1a,
-       0xfe, 0x48, 0x12, 0x07,
+       0xfe, 0x01, 0xec, 0xa2, 0xfe, 0x9e, 0x40, 0xfe, 0x9d, 0xe7, 0x00, 0xfe,
+       0x9c, 0xe7, 0x1a, 0x79, 0x2a, 0x01, 0xe3, 0xfe, 0xdd, 0x10, 0x2c, 0xc7,
+       0x81, 0xc8, 0x83, 0x33, 0x31, 0xde, 0x07, 0x1a, 0xfe, 0x48, 0x12, 0x07,
        0x0a, 0xfe, 0x56, 0x12, 0x07, 0x19, 0xfe, 0x30, 0x12, 0x07, 0xc9, 0x17,
-       0xfe, 0x32, 0x12, 0x07,
-       0xfe, 0x23, 0x00, 0x17, 0xeb, 0x07, 0x06, 0x17, 0xfe, 0x9c, 0x12, 0x07,
-       0x1f, 0xfe, 0x12, 0x12,
-       0x07, 0x00, 0x17, 0x24, 0x15, 0xc9, 0x01, 0x36, 0xa9, 0x2d, 0x01, 0x0b,
-       0x94, 0x4b, 0x04, 0x2d,
+       0xfe, 0x32, 0x12, 0x07, 0xfe, 0x23, 0x00, 0x17, 0xeb, 0x07, 0x06, 0x17,
+       0xfe, 0x9c, 0x12, 0x07, 0x1f, 0xfe, 0x12, 0x12, 0x07, 0x00, 0x17, 0x24,
+       0x15, 0xc9, 0x01, 0x36, 0xa9, 0x2d, 0x01, 0x0b, 0x94, 0x4b, 0x04, 0x2d,
        0xdd, 0x09, 0xd1, 0x01, 0xfe, 0x26, 0x0f, 0x12, 0x82, 0x02, 0x2b, 0x2d,
-       0x32, 0x07, 0xa6, 0xfe,
-       0xd9, 0x13, 0x3a, 0x3d, 0x3b, 0x3e, 0x56, 0xfe, 0xf0, 0x11, 0x08, 0x05,
-       0x5a, 0xfe, 0x72, 0x12,
-       0x9b, 0x2e, 0x9c, 0x3c, 0x90, 0xc0, 0x96, 0xfe, 0xba, 0x11, 0x22, 0x62,
-       0xfe, 0x26, 0x13, 0x03,
+       0x32, 0x07, 0xa6, 0xfe, 0xd9, 0x13, 0x3a, 0x3d, 0x3b, 0x3e, 0x56, 0xfe,
+       0xf0, 0x11, 0x08, 0x05, 0x5a, 0xfe, 0x72, 0x12, 0x9b, 0x2e, 0x9c, 0x3c,
+       0x90, 0xc0, 0x96, 0xfe, 0xba, 0x11, 0x22, 0x62, 0xfe, 0x26, 0x13, 0x03,
        0x7f, 0x29, 0x80, 0x56, 0xfe, 0x76, 0x0d, 0x0c, 0x60, 0x14, 0x61, 0x21,
-       0x0c, 0x7f, 0x0c, 0x80,
-       0x01, 0xb3, 0x25, 0x6e, 0x77, 0x13, 0x62, 0x01, 0xef, 0x9b, 0x2e, 0x9c,
-       0x3c, 0xfe, 0x04, 0x55,
-       0xfe, 0xa5, 0x55, 0xfe, 0x04, 0xfa, 0x2e, 0xfe, 0x05, 0xfa, 0x3c, 0xfe,
-       0x91, 0x10, 0x03, 0x3f,
+       0x0c, 0x7f, 0x0c, 0x80, 0x01, 0xb3, 0x25, 0x6e, 0x77, 0x13, 0x62, 0x01,
+       0xef, 0x9b, 0x2e, 0x9c, 0x3c, 0xfe, 0x04, 0x55, 0xfe, 0xa5, 0x55, 0xfe,
+       0x04, 0xfa, 0x2e, 0xfe, 0x05, 0xfa, 0x3c, 0xfe, 0x91, 0x10, 0x03, 0x3f,
        0x29, 0x40, 0xfe, 0x40, 0x56, 0xfe, 0xe1, 0x56, 0x0c, 0x3f, 0x14, 0x40,
-       0x88, 0x9b, 0x2e, 0x9c,
-       0x3c, 0x90, 0xc0, 0x03, 0x5e, 0x29, 0x5f, 0xfe, 0x00, 0x56, 0xfe, 0xa1,
-       0x56, 0x0c, 0x5e, 0x14,
-       0x5f, 0x08, 0x05, 0x5a, 0xfe, 0x1e, 0x12, 0x22, 0x62, 0xfe, 0x1f, 0x40,
-       0x03, 0x60, 0x29, 0x61,
+       0x88, 0x9b, 0x2e, 0x9c, 0x3c, 0x90, 0xc0, 0x03, 0x5e, 0x29, 0x5f, 0xfe,
+       0x00, 0x56, 0xfe, 0xa1, 0x56, 0x0c, 0x5e, 0x14, 0x5f, 0x08, 0x05, 0x5a,
+       0xfe, 0x1e, 0x12, 0x22, 0x62, 0xfe, 0x1f, 0x40, 0x03, 0x60, 0x29, 0x61,
        0xfe, 0x2c, 0x50, 0xfe, 0xae, 0x50, 0x03, 0x3f, 0x29, 0x40, 0xfe, 0x44,
-       0x50, 0xfe, 0xc6, 0x50,
-       0x03, 0x5e, 0x29, 0x5f, 0xfe, 0x08, 0x50, 0xfe, 0x8a, 0x50, 0x03, 0x3d,
-       0x29, 0x3e, 0xfe, 0x40,
-       0x50, 0xfe, 0xc2, 0x50, 0x02, 0x89, 0x25, 0x06, 0x13, 0xd4, 0x02, 0x72,
-       0x2d, 0x01, 0x0b, 0x1d,
+       0x50, 0xfe, 0xc6, 0x50, 0x03, 0x5e, 0x29, 0x5f, 0xfe, 0x08, 0x50, 0xfe,
+       0x8a, 0x50, 0x03, 0x3d, 0x29, 0x3e, 0xfe, 0x40, 0x50, 0xfe, 0xc2, 0x50,
+       0x02, 0x89, 0x25, 0x06, 0x13, 0xd4, 0x02, 0x72, 0x2d, 0x01, 0x0b, 0x1d,
        0x4c, 0x33, 0x31, 0xde, 0x07, 0x06, 0x23, 0x4c, 0x32, 0x07, 0xa6, 0x23,
-       0x72, 0x01, 0xaf, 0x1e,
-       0x43, 0x17, 0x4c, 0x08, 0x05, 0x0a, 0xee, 0x3a, 0x3d, 0x3b, 0x3e, 0xfe,
-       0x0a, 0x55, 0x35, 0xfe,
-       0x8b, 0x55, 0x57, 0x3d, 0x7d, 0x3e, 0xfe, 0x0c, 0x51, 0xfe, 0x8e, 0x51,
-       0x02, 0x72, 0xfe, 0x19,
+       0x72, 0x01, 0xaf, 0x1e, 0x43, 0x17, 0x4c, 0x08, 0x05, 0x0a, 0xee, 0x3a,
+       0x3d, 0x3b, 0x3e, 0xfe, 0x0a, 0x55, 0x35, 0xfe, 0x8b, 0x55, 0x57, 0x3d,
+       0x7d, 0x3e, 0xfe, 0x0c, 0x51, 0xfe, 0x8e, 0x51, 0x02, 0x72, 0xfe, 0x19,
        0x81, 0xba, 0xfe, 0x19, 0x41, 0x02, 0x72, 0x2d, 0x01, 0x0b, 0x1c, 0x34,
-       0x1d, 0xe8, 0x33, 0x31,
-       0xe1, 0x55, 0x19, 0xfe, 0xa6, 0x12, 0x55, 0x0a, 0x4d, 0x02, 0x4c, 0x01,
-       0x0b, 0x1c, 0x34, 0x1d,
-       0xe8, 0x33, 0x31, 0xdf, 0x07, 0x19, 0x23, 0x4c, 0x01, 0x0b, 0x1d, 0xe8,
-       0x33, 0x31, 0xfe, 0xe8,
+       0x1d, 0xe8, 0x33, 0x31, 0xe1, 0x55, 0x19, 0xfe, 0xa6, 0x12, 0x55, 0x0a,
+       0x4d, 0x02, 0x4c, 0x01, 0x0b, 0x1c, 0x34, 0x1d, 0xe8, 0x33, 0x31, 0xdf,
+       0x07, 0x19, 0x23, 0x4c, 0x01, 0x0b, 0x1d, 0xe8, 0x33, 0x31, 0xfe, 0xe8,
        0x09, 0xfe, 0xc2, 0x49, 0x51, 0x03, 0xfe, 0x9c, 0x00, 0x28, 0x8a, 0x53,
-       0x05, 0x1f, 0x35, 0xa9,
-       0xfe, 0xbb, 0x45, 0x55, 0x00, 0x4e, 0x44, 0x06, 0x7c, 0x43, 0xfe, 0xda,
-       0x14, 0x01, 0xaf, 0x8c,
-       0xfe, 0x4b, 0x45, 0xee, 0x32, 0x07, 0xa5, 0xed, 0x03, 0xcd, 0x28, 0x8a,
-       0x03, 0x45, 0x28, 0x35,
+       0x05, 0x1f, 0x35, 0xa9, 0xfe, 0xbb, 0x45, 0x55, 0x00, 0x4e, 0x44, 0x06,
+       0x7c, 0x43, 0xfe, 0xda, 0x14, 0x01, 0xaf, 0x8c, 0xfe, 0x4b, 0x45, 0xee,
+       0x32, 0x07, 0xa5, 0xed, 0x03, 0xcd, 0x28, 0x8a, 0x03, 0x45, 0x28, 0x35,
        0x67, 0x02, 0x72, 0xfe, 0xc0, 0x5d, 0xfe, 0xf8, 0x14, 0xfe, 0x03, 0x17,
-       0x03, 0x5c, 0xc1, 0x0c,
-       0x5c, 0x67, 0x2d, 0x01, 0x0b, 0x26, 0x89, 0x01, 0xfe, 0x9e, 0x15, 0x02,
-       0x89, 0x01, 0x0b, 0x1c,
-       0x34, 0x1d, 0x4c, 0x33, 0x31, 0xdf, 0x07, 0x06, 0x23, 0x4c, 0x01, 0xf1,
-       0xfe, 0x42, 0x58, 0xf1,
+       0x03, 0x5c, 0xc1, 0x0c, 0x5c, 0x67, 0x2d, 0x01, 0x0b, 0x26, 0x89, 0x01,
+       0xfe, 0x9e, 0x15, 0x02, 0x89, 0x01, 0x0b, 0x1c, 0x34, 0x1d, 0x4c, 0x33,
+       0x31, 0xdf, 0x07, 0x06, 0x23, 0x4c, 0x01, 0xf1, 0xfe, 0x42, 0x58, 0xf1,
        0xfe, 0xa4, 0x14, 0x8c, 0xfe, 0x4a, 0xf4, 0x0a, 0x17, 0x4c, 0xfe, 0x4a,
-       0xf4, 0x06, 0xea, 0x32,
-       0x07, 0xa5, 0x8b, 0x02, 0x72, 0x03, 0x45, 0xc1, 0x0c, 0x45, 0x67, 0x2d,
-       0x01, 0x0b, 0x26, 0x89,
-       0x01, 0xfe, 0xcc, 0x15, 0x02, 0x89, 0x0f, 0x06, 0x27, 0xfe, 0xbe, 0x13,
-       0x26, 0xfe, 0xd4, 0x13,
+       0xf4, 0x06, 0xea, 0x32, 0x07, 0xa5, 0x8b, 0x02, 0x72, 0x03, 0x45, 0xc1,
+       0x0c, 0x45, 0x67, 0x2d, 0x01, 0x0b, 0x26, 0x89, 0x01, 0xfe, 0xcc, 0x15,
+       0x02, 0x89, 0x0f, 0x06, 0x27, 0xfe, 0xbe, 0x13, 0x26, 0xfe, 0xd4, 0x13,
        0x76, 0xfe, 0x89, 0x48, 0x01, 0x0b, 0x21, 0x76, 0x04, 0x7b, 0xfe, 0xd0,
-       0x13, 0x1c, 0xfe, 0xd0,
-       0x13, 0x1d, 0xfe, 0xbe, 0x13, 0x67, 0x2d, 0x01, 0x0b, 0xfe, 0xd5, 0x10,
-       0x0f, 0x71, 0xff, 0x02,
-       0x00, 0x57, 0x52, 0x93, 0x1e, 0xfe, 0xff, 0x7f, 0xfe, 0x30, 0x56, 0xfe,
-       0x00, 0x5c, 0x04, 0x0f,
+       0x13, 0x1c, 0xfe, 0xd0, 0x13, 0x1d, 0xfe, 0xbe, 0x13, 0x67, 0x2d, 0x01,
+       0x0b, 0xfe, 0xd5, 0x10, 0x0f, 0x71, 0xff, 0x02, 0x00, 0x57, 0x52, 0x93,
+       0x1e, 0xfe, 0xff, 0x7f, 0xfe, 0x30, 0x56, 0xfe, 0x00, 0x5c, 0x04, 0x0f,
        0x71, 0xff, 0x02, 0x00, 0x57, 0x52, 0x93, 0x1e, 0x43, 0xfe, 0x30, 0x56,
-       0xfe, 0x00, 0x5c, 0x04,
-       0x0f, 0x71, 0xff, 0x02, 0x00, 0x57, 0x52, 0x93, 0x04, 0x0f, 0x71, 0xff,
-       0x02, 0x00, 0x57, 0x52,
-       0x93, 0xfe, 0x0b, 0x58, 0x04, 0x09, 0x5c, 0x01, 0x87, 0x09, 0x45, 0x01,
-       0x87, 0x04, 0xfe, 0x03,
+       0xfe, 0x00, 0x5c, 0x04, 0x0f, 0x71, 0xff, 0x02, 0x00, 0x57, 0x52, 0x93,
+       0x04, 0x0f, 0x71, 0xff, 0x02, 0x00, 0x57, 0x52, 0x93, 0xfe, 0x0b, 0x58,
+       0x04, 0x09, 0x5c, 0x01, 0x87, 0x09, 0x45, 0x01, 0x87, 0x04, 0xfe, 0x03,
        0xa1, 0x1e, 0x11, 0xff, 0x03, 0x00, 0x54, 0xfe, 0x00, 0xf4, 0x1f, 0x52,
-       0xfe, 0x00, 0x7d, 0xfe,
-       0x01, 0x7d, 0xfe, 0x02, 0x7d, 0xfe, 0x03, 0x7c, 0x6a, 0x2a, 0x0c, 0x5e,
-       0x14, 0x5f, 0x57, 0x3f,
-       0x7d, 0x40, 0x04, 0xdd, 0xfe, 0x82, 0x4a, 0xfe, 0xe1, 0x1a, 0xfe, 0x83,
-       0x5a, 0x8d, 0x04, 0x01,
+       0xfe, 0x00, 0x7d, 0xfe, 0x01, 0x7d, 0xfe, 0x02, 0x7d, 0xfe, 0x03, 0x7c,
+       0x6a, 0x2a, 0x0c, 0x5e, 0x14, 0x5f, 0x57, 0x3f, 0x7d, 0x40, 0x04, 0xdd,
+       0xfe, 0x82, 0x4a, 0xfe, 0xe1, 0x1a, 0xfe, 0x83, 0x5a, 0x8d, 0x04, 0x01,
        0xfe, 0x0c, 0x19, 0xfe, 0x42, 0x48, 0x50, 0x51, 0x91, 0x01, 0x0b, 0x1d,
-       0xfe, 0x96, 0x15, 0x33,
-       0x31, 0xe1, 0x01, 0x0b, 0x1d, 0xfe, 0x96, 0x15, 0x33, 0x31, 0xfe, 0xe8,
-       0x0a, 0xfe, 0xc1, 0x59,
-       0x03, 0xcd, 0x28, 0xfe, 0xcc, 0x12, 0x53, 0x05, 0x1a, 0xfe, 0xc4, 0x13,
-       0x21, 0x69, 0x1a, 0xee,
+       0xfe, 0x96, 0x15, 0x33, 0x31, 0xe1, 0x01, 0x0b, 0x1d, 0xfe, 0x96, 0x15,
+       0x33, 0x31, 0xfe, 0xe8, 0x0a, 0xfe, 0xc1, 0x59, 0x03, 0xcd, 0x28, 0xfe,
+       0xcc, 0x12, 0x53, 0x05, 0x1a, 0xfe, 0xc4, 0x13, 0x21, 0x69, 0x1a, 0xee,
        0x55, 0xca, 0x6b, 0xfe, 0xdc, 0x14, 0x4d, 0x0f, 0x06, 0x18, 0xca, 0x7c,
-       0x30, 0xfe, 0x78, 0x10,
-       0xff, 0x02, 0x83, 0x55, 0xab, 0xff, 0x02, 0x83, 0x55, 0x69, 0x19, 0xae,
-       0x98, 0xfe, 0x30, 0x00,
-       0x96, 0xf2, 0x18, 0x6d, 0x0f, 0x06, 0xfe, 0x56, 0x10, 0x69, 0x0a, 0xed,
-       0x98, 0xfe, 0x64, 0x00,
+       0x30, 0xfe, 0x78, 0x10, 0xff, 0x02, 0x83, 0x55, 0xab, 0xff, 0x02, 0x83,
+       0x55, 0x69, 0x19, 0xae, 0x98, 0xfe, 0x30, 0x00, 0x96, 0xf2, 0x18, 0x6d,
+       0x0f, 0x06, 0xfe, 0x56, 0x10, 0x69, 0x0a, 0xed, 0x98, 0xfe, 0x64, 0x00,
        0x96, 0xf2, 0x09, 0xfe, 0x64, 0x00, 0x18, 0x9e, 0x0f, 0x06, 0xfe, 0x28,
-       0x10, 0x69, 0x06, 0xfe,
-       0x60, 0x13, 0x98, 0xfe, 0xc8, 0x00, 0x96, 0xf2, 0x09, 0xfe, 0xc8, 0x00,
-       0x18, 0x59, 0x0f, 0x06,
-       0x88, 0x98, 0xfe, 0x90, 0x01, 0x7a, 0xfe, 0x42, 0x15, 0x91, 0xe4, 0xfe,
-       0x43, 0xf4, 0x9f, 0xfe,
+       0x10, 0x69, 0x06, 0xfe, 0x60, 0x13, 0x98, 0xfe, 0xc8, 0x00, 0x96, 0xf2,
+       0x09, 0xfe, 0xc8, 0x00, 0x18, 0x59, 0x0f, 0x06, 0x88, 0x98, 0xfe, 0x90,
+       0x01, 0x7a, 0xfe, 0x42, 0x15, 0x91, 0xe4, 0xfe, 0x43, 0xf4, 0x9f, 0xfe,
        0x56, 0xf0, 0xfe, 0x54, 0x15, 0xfe, 0x04, 0xf4, 0x71, 0xfe, 0x43, 0xf4,
-       0x9e, 0xfe, 0xf3, 0x10,
-       0xfe, 0x40, 0x5c, 0x01, 0xfe, 0x16, 0x14, 0x1e, 0x43, 0xec, 0xfe, 0x00,
-       0x17, 0xfe, 0x4d, 0xe4,
-       0x6e, 0x7a, 0xfe, 0x90, 0x15, 0xc4, 0x6e, 0xfe, 0x1c, 0x10, 0xfe, 0x00,
-       0x17, 0xfe, 0x4d, 0xe4,
+       0x9e, 0xfe, 0xf3, 0x10, 0xfe, 0x40, 0x5c, 0x01, 0xfe, 0x16, 0x14, 0x1e,
+       0x43, 0xec, 0xfe, 0x00, 0x17, 0xfe, 0x4d, 0xe4, 0x6e, 0x7a, 0xfe, 0x90,
+       0x15, 0xc4, 0x6e, 0xfe, 0x1c, 0x10, 0xfe, 0x00, 0x17, 0xfe, 0x4d, 0xe4,
        0xcc, 0x7a, 0xfe, 0x90, 0x15, 0xc4, 0xcc, 0x88, 0x51, 0x21, 0xfe, 0x4d,
-       0xf4, 0x00, 0xe9, 0x91,
-       0x0f, 0x06, 0xfe, 0xb4, 0x56, 0xfe, 0xc3, 0x58, 0x04, 0x51, 0x0f, 0x0a,
-       0x04, 0x16, 0x06, 0x01,
-       0x0b, 0x26, 0xf3, 0x16, 0x0a, 0x01, 0x0b, 0x26, 0xf3, 0x16, 0x19, 0x01,
-       0x0b, 0x26, 0xf3, 0x76,
+       0xf4, 0x00, 0xe9, 0x91, 0x0f, 0x06, 0xfe, 0xb4, 0x56, 0xfe, 0xc3, 0x58,
+       0x04, 0x51, 0x0f, 0x0a, 0x04, 0x16, 0x06, 0x01, 0x0b, 0x26, 0xf3, 0x16,
+       0x0a, 0x01, 0x0b, 0x26, 0xf3, 0x16, 0x19, 0x01, 0x0b, 0x26, 0xf3, 0x76,
        0xfe, 0x89, 0x49, 0x01, 0x0b, 0x04, 0x16, 0x06, 0x01, 0x0b, 0x26, 0xb1,
-       0x16, 0x19, 0x01, 0x0b,
-       0x26, 0xb1, 0x16, 0x06, 0x01, 0x0b, 0x26, 0xb1, 0xfe, 0x89, 0x49, 0x01,
-       0x0b, 0x26, 0xb1, 0x76,
-       0xfe, 0x89, 0x4a, 0x01, 0x0b, 0x04, 0x51, 0x04, 0x22, 0xd3, 0x07, 0x06,
-       0xfe, 0x48, 0x13, 0xb8,
+       0x16, 0x19, 0x01, 0x0b, 0x26, 0xb1, 0x16, 0x06, 0x01, 0x0b, 0x26, 0xb1,
+       0xfe, 0x89, 0x49, 0x01, 0x0b, 0x26, 0xb1, 0x76, 0xfe, 0x89, 0x4a, 0x01,
+       0x0b, 0x04, 0x51, 0x04, 0x22, 0xd3, 0x07, 0x06, 0xfe, 0x48, 0x13, 0xb8,
        0x13, 0xd3, 0xfe, 0x49, 0xf4, 0x00, 0x4d, 0x76, 0xa9, 0x67, 0xfe, 0x01,
-       0xec, 0xfe, 0x27, 0x01,
-       0xfe, 0x89, 0x48, 0xff, 0x02, 0x00, 0x10, 0x27, 0xfe, 0x2e, 0x16, 0x32,
-       0x07, 0xfe, 0xe3, 0x00,
-       0xfe, 0x20, 0x13, 0x1d, 0xfe, 0x52, 0x16, 0x21, 0x13, 0xd4, 0x01, 0x4b,
-       0x22, 0xd4, 0x07, 0x06,
+       0xec, 0xfe, 0x27, 0x01, 0xfe, 0x89, 0x48, 0xff, 0x02, 0x00, 0x10, 0x27,
+       0xfe, 0x2e, 0x16, 0x32, 0x07, 0xfe, 0xe3, 0x00, 0xfe, 0x20, 0x13, 0x1d,
+       0xfe, 0x52, 0x16, 0x21, 0x13, 0xd4, 0x01, 0x4b, 0x22, 0xd4, 0x07, 0x06,
        0x4e, 0x08, 0x54, 0x06, 0x37, 0x04, 0x09, 0x48, 0x01, 0x0e, 0xfb, 0x8e,
-       0x07, 0x11, 0xae, 0x09,
-       0x84, 0x01, 0x0e, 0x8e, 0x09, 0x5d, 0x01, 0xa8, 0x04, 0x09, 0x84, 0x01,
-       0x0e, 0x8e, 0xfe, 0x80,
-       0xe7, 0x11, 0x07, 0x11, 0x8a, 0xfe, 0x45, 0x58, 0x01, 0xf0, 0x8e, 0x04,
-       0x09, 0x48, 0x01, 0x0e,
+       0x07, 0x11, 0xae, 0x09, 0x84, 0x01, 0x0e, 0x8e, 0x09, 0x5d, 0x01, 0xa8,
+       0x04, 0x09, 0x84, 0x01, 0x0e, 0x8e, 0xfe, 0x80, 0xe7, 0x11, 0x07, 0x11,
+       0x8a, 0xfe, 0x45, 0x58, 0x01, 0xf0, 0x8e, 0x04, 0x09, 0x48, 0x01, 0x0e,
        0x8e, 0x09, 0x5d, 0x01, 0xa8, 0x04, 0x09, 0x48, 0x01, 0x0e, 0xfe, 0x80,
-       0x80, 0xfe, 0x80, 0x4c,
-       0xfe, 0x49, 0xe4, 0x11, 0xae, 0x09, 0x84, 0x01, 0x0e, 0xfe, 0x80, 0x4c,
-       0x09, 0x5d, 0x01, 0x87,
-       0x04, 0x18, 0x11, 0x75, 0x6c, 0xfe, 0x60, 0x01, 0xfe, 0x18, 0xdf, 0xfe,
-       0x19, 0xde, 0xfe, 0x24,
+       0x80, 0xfe, 0x80, 0x4c, 0xfe, 0x49, 0xe4, 0x11, 0xae, 0x09, 0x84, 0x01,
+       0x0e, 0xfe, 0x80, 0x4c, 0x09, 0x5d, 0x01, 0x87, 0x04, 0x18, 0x11, 0x75,
+       0x6c, 0xfe, 0x60, 0x01, 0xfe, 0x18, 0xdf, 0xfe, 0x19, 0xde, 0xfe, 0x24,
        0x1c, 0xfe, 0x1d, 0xf7, 0x1b, 0x97, 0xfe, 0xee, 0x16, 0x01, 0xfe, 0xf4,
-       0x17, 0xad, 0x9a, 0x1b,
-       0x6c, 0xfe, 0x2c, 0x01, 0xfe, 0x2f, 0x19, 0x04, 0xb9, 0x23, 0xfe, 0xde,
-       0x16, 0xfe, 0xda, 0x10,
-       0x18, 0x11, 0x75, 0x03, 0xfe, 0x64, 0x01, 0xfe, 0x00, 0xf4, 0x1f, 0xfe,
-       0x18, 0x58, 0x03, 0xfe,
+       0x17, 0xad, 0x9a, 0x1b, 0x6c, 0xfe, 0x2c, 0x01, 0xfe, 0x2f, 0x19, 0x04,
+       0xb9, 0x23, 0xfe, 0xde, 0x16, 0xfe, 0xda, 0x10, 0x18, 0x11, 0x75, 0x03,
+       0xfe, 0x64, 0x01, 0xfe, 0x00, 0xf4, 0x1f, 0xfe, 0x18, 0x58, 0x03, 0xfe,
        0x66, 0x01, 0xfe, 0x19, 0x58, 0x9a, 0x1f, 0xfe, 0x3c, 0x90, 0xfe, 0x30,
-       0xf4, 0x06, 0xfe, 0x3c,
-       0x50, 0x6c, 0xfe, 0x38, 0x00, 0xfe, 0x0f, 0x79, 0xfe, 0x1c, 0xf7, 0x1f,
-       0x97, 0xfe, 0x38, 0x17,
-       0xfe, 0xb6, 0x14, 0x35, 0x04, 0xb9, 0x23, 0xfe, 0x10, 0x17, 0xfe, 0x9c,
-       0x10, 0x18, 0x11, 0x75,
+       0xf4, 0x06, 0xfe, 0x3c, 0x50, 0x6c, 0xfe, 0x38, 0x00, 0xfe, 0x0f, 0x79,
+       0xfe, 0x1c, 0xf7, 0x1f, 0x97, 0xfe, 0x38, 0x17, 0xfe, 0xb6, 0x14, 0x35,
+       0x04, 0xb9, 0x23, 0xfe, 0x10, 0x17, 0xfe, 0x9c, 0x10, 0x18, 0x11, 0x75,
        0xfe, 0x83, 0x5a, 0xfe, 0x18, 0xdf, 0xfe, 0x19, 0xde, 0xfe, 0x1d, 0xf7,
-       0x2e, 0x97, 0xfe, 0x5a,
-       0x17, 0xfe, 0x94, 0x14, 0xec, 0x9a, 0x2e, 0x6c, 0x1a, 0xfe, 0xaf, 0x19,
-       0xfe, 0x98, 0xe7, 0x00,
-       0x04, 0xb9, 0x23, 0xfe, 0x4e, 0x17, 0xfe, 0x6c, 0x10, 0x18, 0x11, 0x75,
-       0xfe, 0x30, 0xbc, 0xfe,
+       0x2e, 0x97, 0xfe, 0x5a, 0x17, 0xfe, 0x94, 0x14, 0xec, 0x9a, 0x2e, 0x6c,
+       0x1a, 0xfe, 0xaf, 0x19, 0xfe, 0x98, 0xe7, 0x00, 0x04, 0xb9, 0x23, 0xfe,
+       0x4e, 0x17, 0xfe, 0x6c, 0x10, 0x18, 0x11, 0x75, 0xfe, 0x30, 0xbc, 0xfe,
        0xb2, 0xbc, 0x9a, 0xcb, 0x6c, 0x1a, 0xfe, 0x0f, 0x79, 0xfe, 0x1c, 0xf7,
-       0xcb, 0x97, 0xfe, 0x92,
-       0x17, 0xfe, 0x5c, 0x14, 0x35, 0x04, 0xb9, 0x23, 0xfe, 0x7e, 0x17, 0xfe,
-       0x42, 0x10, 0xfe, 0x02,
-       0xf6, 0x11, 0x75, 0xfe, 0x18, 0xfe, 0x60, 0xfe, 0x19, 0xfe, 0x61, 0xfe,
-       0x03, 0xa1, 0xfe, 0x1d,
+       0xcb, 0x97, 0xfe, 0x92, 0x17, 0xfe, 0x5c, 0x14, 0x35, 0x04, 0xb9, 0x23,
+       0xfe, 0x7e, 0x17, 0xfe, 0x42, 0x10, 0xfe, 0x02, 0xf6, 0x11, 0x75, 0xfe,
+       0x18, 0xfe, 0x60, 0xfe, 0x19, 0xfe, 0x61, 0xfe, 0x03, 0xa1, 0xfe, 0x1d,
        0xf7, 0x5b, 0x97, 0xfe, 0xb8, 0x17, 0xfe, 0x36, 0x14, 0xfe, 0x1c, 0x13,
-       0x9a, 0x5b, 0x41, 0xfe,
-       0x83, 0x58, 0xfe, 0xaf, 0x19, 0xfe, 0x80, 0xe7, 0x11, 0xfe, 0x81, 0xe7,
-       0x11, 0x12, 0xfe, 0xdd,
-       0x00, 0x6a, 0x2a, 0x04, 0x6a, 0x2a, 0xfe, 0x12, 0x45, 0x23, 0xfe, 0xa8,
-       0x17, 0x15, 0x06, 0x39,
+       0x9a, 0x5b, 0x41, 0xfe, 0x83, 0x58, 0xfe, 0xaf, 0x19, 0xfe, 0x80, 0xe7,
+       0x11, 0xfe, 0x81, 0xe7, 0x11, 0x12, 0xfe, 0xdd, 0x00, 0x6a, 0x2a, 0x04,
+       0x6a, 0x2a, 0xfe, 0x12, 0x45, 0x23, 0xfe, 0xa8, 0x17, 0x15, 0x06, 0x39,
        0xa0, 0xb4, 0x02, 0x2b, 0xfe, 0x39, 0xf0, 0xfe, 0xfc, 0x17, 0x21, 0x04,
-       0xfe, 0x7e, 0x18, 0x1e,
-       0x19, 0x66, 0x0f, 0x0d, 0x04, 0x75, 0x03, 0xd2, 0x1e, 0x06, 0xfe, 0xef,
-       0x12, 0xfe, 0xe1, 0x10,
-       0x7c, 0x6f, 0x4f, 0x32, 0x07, 0x2f, 0xfe, 0x3c, 0x13, 0xf1, 0xfe, 0x42,
-       0x13, 0x42, 0x92, 0x09,
+       0xfe, 0x7e, 0x18, 0x1e, 0x19, 0x66, 0x0f, 0x0d, 0x04, 0x75, 0x03, 0xd2,
+       0x1e, 0x06, 0xfe, 0xef, 0x12, 0xfe, 0xe1, 0x10, 0x7c, 0x6f, 0x4f, 0x32,
+       0x07, 0x2f, 0xfe, 0x3c, 0x13, 0xf1, 0xfe, 0x42, 0x13, 0x42, 0x92, 0x09,
        0x48, 0x01, 0x0e, 0xbb, 0xeb, 0xfe, 0x41, 0x48, 0xfe, 0x45, 0x48, 0x01,
-       0xf0, 0xfe, 0x00, 0xcc,
-       0xbb, 0xfe, 0xf3, 0x13, 0x43, 0x78, 0x07, 0x11, 0xac, 0x09, 0x84, 0x01,
-       0x0e, 0xfe, 0x80, 0x4c,
-       0x01, 0x73, 0xfe, 0x16, 0x10, 0x07, 0x82, 0x8b, 0xfe, 0x40, 0x14, 0xfe,
-       0x24, 0x12, 0xfe, 0x14,
+       0xf0, 0xfe, 0x00, 0xcc, 0xbb, 0xfe, 0xf3, 0x13, 0x43, 0x78, 0x07, 0x11,
+       0xac, 0x09, 0x84, 0x01, 0x0e, 0xfe, 0x80, 0x4c, 0x01, 0x73, 0xfe, 0x16,
+       0x10, 0x07, 0x82, 0x8b, 0xfe, 0x40, 0x14, 0xfe, 0x24, 0x12, 0xfe, 0x14,
        0x56, 0xfe, 0xd6, 0xf0, 0xfe, 0x1c, 0x18, 0x18, 0x0a, 0x04, 0xfe, 0x9c,
-       0xe7, 0x0a, 0x10, 0xfe,
-       0x15, 0x00, 0x64, 0x79, 0x2a, 0x01, 0xe3, 0x18, 0x06, 0x04, 0x42, 0x92,
-       0x08, 0x54, 0x1b, 0x37,
-       0x12, 0x2f, 0x01, 0x73, 0x18, 0x06, 0x04, 0xfe, 0x38, 0x90, 0xfe, 0xba,
-       0x90, 0x3a, 0xce, 0x3b,
+       0xe7, 0x0a, 0x10, 0xfe, 0x15, 0x00, 0x64, 0x79, 0x2a, 0x01, 0xe3, 0x18,
+       0x06, 0x04, 0x42, 0x92, 0x08, 0x54, 0x1b, 0x37, 0x12, 0x2f, 0x01, 0x73,
+       0x18, 0x06, 0x04, 0xfe, 0x38, 0x90, 0xfe, 0xba, 0x90, 0x3a, 0xce, 0x3b,
        0xcf, 0xfe, 0x48, 0x55, 0x35, 0xfe, 0xc9, 0x55, 0x04, 0x22, 0xa3, 0x77,
-       0x13, 0xa3, 0x04, 0x09,
-       0xa4, 0x01, 0x0e, 0xfe, 0x41, 0x48, 0x09, 0x46, 0x01, 0x0e, 0xfe, 0x49,
-       0x44, 0x17, 0xfe, 0xe8,
-       0x18, 0x77, 0x78, 0x04, 0x09, 0x48, 0x01, 0x0e, 0x07, 0x11, 0x4e, 0x09,
-       0x5d, 0x01, 0xa8, 0x09,
+       0x13, 0xa3, 0x04, 0x09, 0xa4, 0x01, 0x0e, 0xfe, 0x41, 0x48, 0x09, 0x46,
+       0x01, 0x0e, 0xfe, 0x49, 0x44, 0x17, 0xfe, 0xe8, 0x18, 0x77, 0x78, 0x04,
+       0x09, 0x48, 0x01, 0x0e, 0x07, 0x11, 0x4e, 0x09, 0x5d, 0x01, 0xa8, 0x09,
        0x46, 0x01, 0x0e, 0x77, 0x78, 0x04, 0xfe, 0x4e, 0xe4, 0x19, 0x6b, 0xfe,
-       0x1c, 0x19, 0x03, 0xfe,
-       0x90, 0x00, 0xfe, 0x3a, 0x45, 0xfe, 0x2c, 0x10, 0xfe, 0x4e, 0xe4, 0xc9,
-       0x6b, 0xfe, 0x2e, 0x19,
-       0x03, 0xfe, 0x92, 0x00, 0xfe, 0x02, 0xe6, 0x1a, 0xe5, 0xfe, 0x4e, 0xe4,
-       0xfe, 0x0b, 0x00, 0x6b,
+       0x1c, 0x19, 0x03, 0xfe, 0x90, 0x00, 0xfe, 0x3a, 0x45, 0xfe, 0x2c, 0x10,
+       0xfe, 0x4e, 0xe4, 0xc9, 0x6b, 0xfe, 0x2e, 0x19, 0x03, 0xfe, 0x92, 0x00,
+       0xfe, 0x02, 0xe6, 0x1a, 0xe5, 0xfe, 0x4e, 0xe4, 0xfe, 0x0b, 0x00, 0x6b,
        0xfe, 0x40, 0x19, 0x03, 0xfe, 0x94, 0x00, 0xfe, 0x02, 0xe6, 0x1f, 0xfe,
-       0x08, 0x10, 0x03, 0xfe,
-       0x96, 0x00, 0xfe, 0x02, 0xe6, 0x6d, 0xfe, 0x4e, 0x45, 0xea, 0xba, 0xff,
-       0x04, 0x68, 0x54, 0xe7,
-       0x1e, 0x6e, 0xfe, 0x08, 0x1c, 0xfe, 0x67, 0x19, 0xfe, 0x0a, 0x1c, 0xfe,
-       0x1a, 0xf4, 0xfe, 0x00,
+       0x08, 0x10, 0x03, 0xfe, 0x96, 0x00, 0xfe, 0x02, 0xe6, 0x6d, 0xfe, 0x4e,
+       0x45, 0xea, 0xba, 0xff, 0x04, 0x68, 0x54, 0xe7, 0x1e, 0x6e, 0xfe, 0x08,
+       0x1c, 0xfe, 0x67, 0x19, 0xfe, 0x0a, 0x1c, 0xfe, 0x1a, 0xf4, 0xfe, 0x00,
        0x04, 0xea, 0xfe, 0x48, 0xf4, 0x19, 0x7a, 0xfe, 0x74, 0x19, 0x0f, 0x19,
-       0x04, 0x07, 0x7e, 0xfe,
-       0x5a, 0xf0, 0xfe, 0x84, 0x19, 0x25, 0xfe, 0x09, 0x00, 0xfe, 0x34, 0x10,
-       0x07, 0x1a, 0xfe, 0x5a,
-       0xf0, 0xfe, 0x92, 0x19, 0x25, 0xca, 0xfe, 0x26, 0x10, 0x07, 0x19, 0x66,
-       0x25, 0x6d, 0xe5, 0x07,
+       0x04, 0x07, 0x7e, 0xfe, 0x5a, 0xf0, 0xfe, 0x84, 0x19, 0x25, 0xfe, 0x09,
+       0x00, 0xfe, 0x34, 0x10, 0x07, 0x1a, 0xfe, 0x5a, 0xf0, 0xfe, 0x92, 0x19,
+       0x25, 0xca, 0xfe, 0x26, 0x10, 0x07, 0x19, 0x66, 0x25, 0x6d, 0xe5, 0x07,
        0x0a, 0x66, 0x25, 0x9e, 0xfe, 0x0e, 0x10, 0x07, 0x06, 0x66, 0x25, 0x59,
-       0xa9, 0xb8, 0x04, 0x15,
-       0xfe, 0x09, 0x00, 0x01, 0x36, 0xfe, 0x04, 0xfe, 0x81, 0x03, 0x83, 0xfe,
-       0x40, 0x5c, 0x04, 0x1c,
-       0xf7, 0xfe, 0x14, 0xf0, 0x0b, 0x27, 0xfe, 0xd6, 0x19, 0x1c, 0xf7, 0x7b,
-       0xf7, 0xfe, 0x82, 0xf0,
+       0xa9, 0xb8, 0x04, 0x15, 0xfe, 0x09, 0x00, 0x01, 0x36, 0xfe, 0x04, 0xfe,
+       0x81, 0x03, 0x83, 0xfe, 0x40, 0x5c, 0x04, 0x1c, 0xf7, 0xfe, 0x14, 0xf0,
+       0x0b, 0x27, 0xfe, 0xd6, 0x19, 0x1c, 0xf7, 0x7b, 0xf7, 0xfe, 0x82, 0xf0,
        0xfe, 0xda, 0x19, 0x04, 0xff, 0xcc, 0x00, 0x00,
 };
 
@@ -12484,802 +10154,538 @@ static ADV_DCNT _adv_asc38C0800_chksum = 0x050D3FD8UL;      /* Expanded little-endian
 /* Microcode buffer is kept after initialization for error recovery. */
 static unsigned char _adv_asc38C1600_buf[] = {
        0x00, 0x00, 0x00, 0xf2, 0x00, 0x16, 0x00, 0xfc, 0x00, 0x10, 0x00, 0xf0,
-       0x18, 0xe4, 0x01, 0x00,
-       0x04, 0x1e, 0x48, 0xe4, 0x03, 0xf6, 0xf7, 0x13, 0x2e, 0x1e, 0x02, 0x00,
-       0x07, 0x17, 0xc0, 0x5f,
-       0x00, 0xfa, 0xff, 0xff, 0x04, 0x00, 0x00, 0xf6, 0x09, 0xe7, 0x82, 0xe7,
-       0x85, 0xf0, 0x86, 0xf0,
+       0x18, 0xe4, 0x01, 0x00, 0x04, 0x1e, 0x48, 0xe4, 0x03, 0xf6, 0xf7, 0x13,
+       0x2e, 0x1e, 0x02, 0x00, 0x07, 0x17, 0xc0, 0x5f, 0x00, 0xfa, 0xff, 0xff,
+       0x04, 0x00, 0x00, 0xf6, 0x09, 0xe7, 0x82, 0xe7, 0x85, 0xf0, 0x86, 0xf0,
        0x4e, 0x10, 0x9e, 0xe7, 0xff, 0x00, 0x55, 0xf0, 0x01, 0xf6, 0x03, 0x00,
-       0x98, 0x57, 0x01, 0xe6,
-       0x00, 0xea, 0x00, 0xec, 0x01, 0xfa, 0x18, 0xf4, 0x08, 0x00, 0xf0, 0x1d,
-       0x38, 0x54, 0x32, 0xf0,
-       0x10, 0x00, 0xc2, 0x0e, 0x1e, 0xf0, 0xd5, 0xf0, 0xbc, 0x00, 0x4b, 0xe4,
-       0x00, 0xe6, 0xb1, 0xf0,
+       0x98, 0x57, 0x01, 0xe6, 0x00, 0xea, 0x00, 0xec, 0x01, 0xfa, 0x18, 0xf4,
+       0x08, 0x00, 0xf0, 0x1d, 0x38, 0x54, 0x32, 0xf0, 0x10, 0x00, 0xc2, 0x0e,
+       0x1e, 0xf0, 0xd5, 0xf0, 0xbc, 0x00, 0x4b, 0xe4, 0x00, 0xe6, 0xb1, 0xf0,
        0xb4, 0x00, 0x02, 0x13, 0x3e, 0x1c, 0xc8, 0x47, 0x3e, 0x00, 0xd8, 0x01,
-       0x06, 0x13, 0x0c, 0x1c,
-       0x5e, 0x1e, 0x00, 0x57, 0xc8, 0x57, 0x01, 0xfc, 0xbc, 0x0e, 0xa2, 0x12,
-       0xb9, 0x54, 0x00, 0x80,
-       0x62, 0x0a, 0x5a, 0x12, 0xc8, 0x15, 0x3e, 0x1e, 0x18, 0x40, 0xbd, 0x56,
-       0x03, 0xe6, 0x01, 0xea,
+       0x06, 0x13, 0x0c, 0x1c, 0x5e, 0x1e, 0x00, 0x57, 0xc8, 0x57, 0x01, 0xfc,
+       0xbc, 0x0e, 0xa2, 0x12, 0xb9, 0x54, 0x00, 0x80, 0x62, 0x0a, 0x5a, 0x12,
+       0xc8, 0x15, 0x3e, 0x1e, 0x18, 0x40, 0xbd, 0x56, 0x03, 0xe6, 0x01, 0xea,
        0x5c, 0xf0, 0x0f, 0x00, 0x20, 0x00, 0x6c, 0x01, 0x6e, 0x01, 0x04, 0x12,
-       0x04, 0x13, 0xbb, 0x55,
-       0x3c, 0x56, 0x3e, 0x57, 0x03, 0x58, 0x4a, 0xe4, 0x40, 0x00, 0xb6, 0x00,
-       0xbb, 0x00, 0xc0, 0x00,
-       0x00, 0x01, 0x01, 0x01, 0x3e, 0x01, 0x58, 0x0a, 0x44, 0x10, 0x0a, 0x12,
-       0x4c, 0x1c, 0x4e, 0x1c,
+       0x04, 0x13, 0xbb, 0x55, 0x3c, 0x56, 0x3e, 0x57, 0x03, 0x58, 0x4a, 0xe4,
+       0x40, 0x00, 0xb6, 0x00, 0xbb, 0x00, 0xc0, 0x00, 0x00, 0x01, 0x01, 0x01,
+       0x3e, 0x01, 0x58, 0x0a, 0x44, 0x10, 0x0a, 0x12, 0x4c, 0x1c, 0x4e, 0x1c,
        0x02, 0x4a, 0x30, 0xe4, 0x05, 0xe6, 0x0c, 0x00, 0x3c, 0x00, 0x80, 0x00,
-       0x24, 0x01, 0x3c, 0x01,
-       0x68, 0x01, 0x6a, 0x01, 0x70, 0x01, 0x72, 0x01, 0x74, 0x01, 0x76, 0x01,
-       0x78, 0x01, 0x7c, 0x01,
-       0xc6, 0x0e, 0x0c, 0x10, 0xac, 0x12, 0xae, 0x12, 0x16, 0x1a, 0x32, 0x1c,
-       0x6e, 0x1e, 0x02, 0x48,
+       0x24, 0x01, 0x3c, 0x01, 0x68, 0x01, 0x6a, 0x01, 0x70, 0x01, 0x72, 0x01,
+       0x74, 0x01, 0x76, 0x01, 0x78, 0x01, 0x7c, 0x01, 0xc6, 0x0e, 0x0c, 0x10,
+       0xac, 0x12, 0xae, 0x12, 0x16, 0x1a, 0x32, 0x1c, 0x6e, 0x1e, 0x02, 0x48,
        0x3a, 0x55, 0xc9, 0x57, 0x02, 0xee, 0x5b, 0xf0, 0x03, 0xf7, 0x06, 0xf7,
-       0x03, 0xfc, 0x06, 0x00,
-       0x1e, 0x00, 0xbe, 0x00, 0xe1, 0x00, 0x0c, 0x12, 0x18, 0x1a, 0x70, 0x1a,
-       0x30, 0x1c, 0x38, 0x1c,
-       0x10, 0x44, 0x00, 0x4c, 0xb0, 0x57, 0x40, 0x5c, 0x4d, 0xe4, 0x04, 0xea,
-       0x5d, 0xf0, 0xa7, 0xf0,
+       0x03, 0xfc, 0x06, 0x00, 0x1e, 0x00, 0xbe, 0x00, 0xe1, 0x00, 0x0c, 0x12,
+       0x18, 0x1a, 0x70, 0x1a, 0x30, 0x1c, 0x38, 0x1c, 0x10, 0x44, 0x00, 0x4c,
+       0xb0, 0x57, 0x40, 0x5c, 0x4d, 0xe4, 0x04, 0xea, 0x5d, 0xf0, 0xa7, 0xf0,
        0x04, 0xf6, 0x02, 0xfc, 0x05, 0x00, 0x09, 0x00, 0x19, 0x00, 0x32, 0x00,
-       0x33, 0x00, 0x34, 0x00,
-       0x36, 0x00, 0x98, 0x00, 0x9e, 0x00, 0xcc, 0x00, 0x20, 0x01, 0x4e, 0x01,
-       0x79, 0x01, 0x3c, 0x09,
-       0x68, 0x0d, 0x02, 0x10, 0x04, 0x10, 0x3a, 0x10, 0x08, 0x12, 0x0a, 0x13,
-       0x40, 0x16, 0x50, 0x16,
+       0x33, 0x00, 0x34, 0x00, 0x36, 0x00, 0x98, 0x00, 0x9e, 0x00, 0xcc, 0x00,
+       0x20, 0x01, 0x4e, 0x01, 0x79, 0x01, 0x3c, 0x09, 0x68, 0x0d, 0x02, 0x10,
+       0x04, 0x10, 0x3a, 0x10, 0x08, 0x12, 0x0a, 0x13, 0x40, 0x16, 0x50, 0x16,
        0x00, 0x17, 0x4a, 0x19, 0x00, 0x4e, 0x00, 0x54, 0x01, 0x58, 0x00, 0xdc,
-       0x05, 0xf0, 0x09, 0xf0,
-       0x59, 0xf0, 0xb8, 0xf0, 0x48, 0xf4, 0x0e, 0xf7, 0x0a, 0x00, 0x9b, 0x00,
-       0x9c, 0x00, 0xa4, 0x00,
-       0xb5, 0x00, 0xba, 0x00, 0xd0, 0x00, 0xe7, 0x00, 0xf0, 0x03, 0x69, 0x08,
-       0xe9, 0x09, 0x5c, 0x0c,
+       0x05, 0xf0, 0x09, 0xf0, 0x59, 0xf0, 0xb8, 0xf0, 0x48, 0xf4, 0x0e, 0xf7,
+       0x0a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0xb5, 0x00, 0xba, 0x00,
+       0xd0, 0x00, 0xe7, 0x00, 0xf0, 0x03, 0x69, 0x08, 0xe9, 0x09, 0x5c, 0x0c,
        0xb6, 0x12, 0xbc, 0x19, 0xd8, 0x1b, 0x20, 0x1c, 0x34, 0x1c, 0x36, 0x1c,
-       0x42, 0x1d, 0x08, 0x44,
-       0x38, 0x44, 0x91, 0x44, 0x0a, 0x45, 0x48, 0x46, 0x89, 0x48, 0x68, 0x54,
-       0x83, 0x55, 0x83, 0x59,
-       0x31, 0xe4, 0x02, 0xe6, 0x07, 0xf0, 0x08, 0xf0, 0x0b, 0xf0, 0x0c, 0xf0,
-       0x4b, 0xf4, 0x04, 0xf8,
+       0x42, 0x1d, 0x08, 0x44, 0x38, 0x44, 0x91, 0x44, 0x0a, 0x45, 0x48, 0x46,
+       0x89, 0x48, 0x68, 0x54, 0x83, 0x55, 0x83, 0x59, 0x31, 0xe4, 0x02, 0xe6,
+       0x07, 0xf0, 0x08, 0xf0, 0x0b, 0xf0, 0x0c, 0xf0, 0x4b, 0xf4, 0x04, 0xf8,
        0x05, 0xf8, 0x02, 0xfa, 0x03, 0xfa, 0x04, 0xfc, 0x05, 0xfc, 0x07, 0x00,
-       0xa8, 0x00, 0xaa, 0x00,
-       0xb9, 0x00, 0xe0, 0x00, 0xe5, 0x00, 0x22, 0x01, 0x26, 0x01, 0x60, 0x01,
-       0x7a, 0x01, 0x82, 0x01,
-       0xc8, 0x01, 0xca, 0x01, 0x86, 0x02, 0x6a, 0x03, 0x18, 0x05, 0xb2, 0x07,
-       0x68, 0x08, 0x10, 0x0d,
+       0xa8, 0x00, 0xaa, 0x00, 0xb9, 0x00, 0xe0, 0x00, 0xe5, 0x00, 0x22, 0x01,
+       0x26, 0x01, 0x60, 0x01, 0x7a, 0x01, 0x82, 0x01, 0xc8, 0x01, 0xca, 0x01,
+       0x86, 0x02, 0x6a, 0x03, 0x18, 0x05, 0xb2, 0x07, 0x68, 0x08, 0x10, 0x0d,
        0x06, 0x10, 0x0a, 0x10, 0x0e, 0x10, 0x12, 0x10, 0x60, 0x10, 0xed, 0x10,
-       0xf3, 0x10, 0x06, 0x12,
-       0x10, 0x12, 0x1e, 0x12, 0x0c, 0x13, 0x0e, 0x13, 0x10, 0x13, 0xfe, 0x9c,
-       0xf0, 0x35, 0x05, 0xfe,
-       0xec, 0x0e, 0xff, 0x10, 0x00, 0x00, 0xe9, 0xfe, 0x34, 0x1f, 0x00, 0xe8,
-       0xfe, 0x88, 0x01, 0xff,
+       0xf3, 0x10, 0x06, 0x12, 0x10, 0x12, 0x1e, 0x12, 0x0c, 0x13, 0x0e, 0x13,
+       0x10, 0x13, 0xfe, 0x9c, 0xf0, 0x35, 0x05, 0xfe, 0xec, 0x0e, 0xff, 0x10,
+       0x00, 0x00, 0xe9, 0xfe, 0x34, 0x1f, 0x00, 0xe8, 0xfe, 0x88, 0x01, 0xff,
        0x03, 0x00, 0x00, 0xfe, 0x93, 0x15, 0xfe, 0x0f, 0x05, 0xff, 0x38, 0x00,
-       0x00, 0xfe, 0x57, 0x24,
-       0x00, 0xfe, 0x4c, 0x00, 0x65, 0xff, 0x04, 0x00, 0x00, 0x1a, 0xff, 0x09,
-       0x00, 0x00, 0xff, 0x08,
-       0x01, 0x01, 0xff, 0x08, 0xff, 0xff, 0xff, 0x27, 0x00, 0x00, 0xff, 0x10,
-       0xff, 0xff, 0xff, 0x13,
+       0x00, 0xfe, 0x57, 0x24, 0x00, 0xfe, 0x4c, 0x00, 0x65, 0xff, 0x04, 0x00,
+       0x00, 0x1a, 0xff, 0x09, 0x00, 0x00, 0xff, 0x08, 0x01, 0x01, 0xff, 0x08,
+       0xff, 0xff, 0xff, 0x27, 0x00, 0x00, 0xff, 0x10, 0xff, 0xff, 0xff, 0x13,
        0x00, 0x00, 0xfe, 0x78, 0x56, 0xfe, 0x34, 0x12, 0xff, 0x21, 0x00, 0x00,
-       0xfe, 0x04, 0xf7, 0xe8,
-       0x37, 0x7d, 0x0d, 0x01, 0xfe, 0x4a, 0x11, 0xfe, 0x04, 0xf7, 0xe8, 0x7d,
-       0x0d, 0x51, 0x37, 0xfe,
-       0x3d, 0xf0, 0xfe, 0x0c, 0x02, 0xfe, 0x20, 0xf0, 0xbc, 0xfe, 0x91, 0xf0,
-       0xfe, 0xf8, 0x01, 0xfe,
+       0xfe, 0x04, 0xf7, 0xe8, 0x37, 0x7d, 0x0d, 0x01, 0xfe, 0x4a, 0x11, 0xfe,
+       0x04, 0xf7, 0xe8, 0x7d, 0x0d, 0x51, 0x37, 0xfe, 0x3d, 0xf0, 0xfe, 0x0c,
+       0x02, 0xfe, 0x20, 0xf0, 0xbc, 0xfe, 0x91, 0xf0, 0xfe, 0xf8, 0x01, 0xfe,
        0x90, 0xf0, 0xfe, 0xf8, 0x01, 0xfe, 0x8f, 0xf0, 0xbc, 0x03, 0x67, 0x4d,
-       0x05, 0xfe, 0x08, 0x0f,
-       0x01, 0xfe, 0x78, 0x0f, 0xfe, 0xdd, 0x12, 0x05, 0xfe, 0x0e, 0x03, 0xfe,
-       0x28, 0x1c, 0x03, 0xfe,
-       0xa6, 0x00, 0xfe, 0xd1, 0x12, 0x3e, 0x22, 0xfe, 0xa6, 0x00, 0xac, 0xfe,
-       0x48, 0xf0, 0xfe, 0x90,
+       0x05, 0xfe, 0x08, 0x0f, 0x01, 0xfe, 0x78, 0x0f, 0xfe, 0xdd, 0x12, 0x05,
+       0xfe, 0x0e, 0x03, 0xfe, 0x28, 0x1c, 0x03, 0xfe, 0xa6, 0x00, 0xfe, 0xd1,
+       0x12, 0x3e, 0x22, 0xfe, 0xa6, 0x00, 0xac, 0xfe, 0x48, 0xf0, 0xfe, 0x90,
        0x02, 0xfe, 0x49, 0xf0, 0xfe, 0xaa, 0x02, 0xfe, 0x4a, 0xf0, 0xfe, 0xc8,
-       0x02, 0xfe, 0x46, 0xf0,
-       0xfe, 0x5a, 0x02, 0xfe, 0x47, 0xf0, 0xfe, 0x60, 0x02, 0xfe, 0x43, 0xf0,
-       0xfe, 0x4e, 0x02, 0xfe,
-       0x44, 0xf0, 0xfe, 0x52, 0x02, 0xfe, 0x45, 0xf0, 0xfe, 0x56, 0x02, 0x1c,
-       0x0d, 0xa2, 0x1c, 0x07,
+       0x02, 0xfe, 0x46, 0xf0, 0xfe, 0x5a, 0x02, 0xfe, 0x47, 0xf0, 0xfe, 0x60,
+       0x02, 0xfe, 0x43, 0xf0, 0xfe, 0x4e, 0x02, 0xfe, 0x44, 0xf0, 0xfe, 0x52,
+       0x02, 0xfe, 0x45, 0xf0, 0xfe, 0x56, 0x02, 0x1c, 0x0d, 0xa2, 0x1c, 0x07,
        0x22, 0xb7, 0x05, 0x35, 0xfe, 0x00, 0x1c, 0xfe, 0xf1, 0x10, 0xfe, 0x02,
-       0x1c, 0xf5, 0xfe, 0x1e,
-       0x1c, 0xfe, 0xe9, 0x10, 0x01, 0x5f, 0xfe, 0xe7, 0x10, 0xfe, 0x06, 0xfc,
-       0xde, 0x0a, 0x81, 0x01,
-       0xa3, 0x05, 0x35, 0x1f, 0x95, 0x47, 0xb8, 0x01, 0xfe, 0xe4, 0x11, 0x0a,
-       0x81, 0x01, 0x5c, 0xfe,
+       0x1c, 0xf5, 0xfe, 0x1e, 0x1c, 0xfe, 0xe9, 0x10, 0x01, 0x5f, 0xfe, 0xe7,
+       0x10, 0xfe, 0x06, 0xfc, 0xde, 0x0a, 0x81, 0x01, 0xa3, 0x05, 0x35, 0x1f,
+       0x95, 0x47, 0xb8, 0x01, 0xfe, 0xe4, 0x11, 0x0a, 0x81, 0x01, 0x5c, 0xfe,
        0xbd, 0x10, 0x0a, 0x81, 0x01, 0x5c, 0xfe, 0xad, 0x10, 0xfe, 0x16, 0x1c,
-       0xfe, 0x58, 0x1c, 0x1c,
-       0x07, 0x22, 0xb7, 0x37, 0x2a, 0x35, 0xfe, 0x3d, 0xf0, 0xfe, 0x0c, 0x02,
-       0x2b, 0xfe, 0x9e, 0x02,
-       0xfe, 0x5a, 0x1c, 0xfe, 0x12, 0x1c, 0xfe, 0x14, 0x1c, 0x1f, 0xfe, 0x30,
-       0x00, 0x47, 0xb8, 0x01,
+       0xfe, 0x58, 0x1c, 0x1c, 0x07, 0x22, 0xb7, 0x37, 0x2a, 0x35, 0xfe, 0x3d,
+       0xf0, 0xfe, 0x0c, 0x02, 0x2b, 0xfe, 0x9e, 0x02, 0xfe, 0x5a, 0x1c, 0xfe,
+       0x12, 0x1c, 0xfe, 0x14, 0x1c, 0x1f, 0xfe, 0x30, 0x00, 0x47, 0xb8, 0x01,
        0xfe, 0xd4, 0x11, 0x1c, 0x07, 0x22, 0xb7, 0x05, 0xe9, 0x21, 0x2c, 0x09,
-       0x1a, 0x31, 0xfe, 0x69,
-       0x10, 0x1c, 0x07, 0x22, 0xb7, 0xfe, 0x04, 0xec, 0x2c, 0x60, 0x01, 0xfe,
-       0x1e, 0x1e, 0x20, 0x2c,
-       0xfe, 0x05, 0xf6, 0xde, 0x01, 0xfe, 0x62, 0x1b, 0x01, 0x0c, 0x61, 0x4a,
-       0x44, 0x15, 0x56, 0x51,
+       0x1a, 0x31, 0xfe, 0x69, 0x10, 0x1c, 0x07, 0x22, 0xb7, 0xfe, 0x04, 0xec,
+       0x2c, 0x60, 0x01, 0xfe, 0x1e, 0x1e, 0x20, 0x2c, 0xfe, 0x05, 0xf6, 0xde,
+       0x01, 0xfe, 0x62, 0x1b, 0x01, 0x0c, 0x61, 0x4a, 0x44, 0x15, 0x56, 0x51,
        0x01, 0xfe, 0x9e, 0x1e, 0x01, 0xfe, 0x96, 0x1a, 0x05, 0x35, 0x0a, 0x57,
-       0x01, 0x18, 0x09, 0x00,
-       0x36, 0x01, 0x85, 0xfe, 0x18, 0x10, 0xfe, 0x41, 0x58, 0x0a, 0xba, 0x01,
-       0x18, 0xfe, 0xc8, 0x54,
-       0x7b, 0xfe, 0x1c, 0x03, 0x01, 0xfe, 0x96, 0x1a, 0x05, 0x35, 0x37, 0x60,
-       0xfe, 0x02, 0xe8, 0x30,
+       0x01, 0x18, 0x09, 0x00, 0x36, 0x01, 0x85, 0xfe, 0x18, 0x10, 0xfe, 0x41,
+       0x58, 0x0a, 0xba, 0x01, 0x18, 0xfe, 0xc8, 0x54, 0x7b, 0xfe, 0x1c, 0x03,
+       0x01, 0xfe, 0x96, 0x1a, 0x05, 0x35, 0x37, 0x60, 0xfe, 0x02, 0xe8, 0x30,
        0xfe, 0xbf, 0x57, 0xfe, 0x9e, 0x43, 0xfe, 0x77, 0x57, 0xfe, 0x27, 0xf0,
-       0xfe, 0xe4, 0x01, 0xfe,
-       0x07, 0x4b, 0xfe, 0x20, 0xf0, 0xbc, 0xfe, 0x40, 0x1c, 0x2a, 0xeb, 0xfe,
-       0x26, 0xf0, 0xfe, 0x66,
-       0x03, 0xfe, 0xa0, 0xf0, 0xfe, 0x54, 0x03, 0xfe, 0x11, 0xf0, 0xbc, 0xfe,
-       0xef, 0x10, 0xfe, 0x9f,
+       0xfe, 0xe4, 0x01, 0xfe, 0x07, 0x4b, 0xfe, 0x20, 0xf0, 0xbc, 0xfe, 0x40,
+       0x1c, 0x2a, 0xeb, 0xfe, 0x26, 0xf0, 0xfe, 0x66, 0x03, 0xfe, 0xa0, 0xf0,
+       0xfe, 0x54, 0x03, 0xfe, 0x11, 0xf0, 0xbc, 0xfe, 0xef, 0x10, 0xfe, 0x9f,
        0xf0, 0xfe, 0x74, 0x03, 0xfe, 0x46, 0x1c, 0x19, 0xfe, 0x11, 0x00, 0x05,
-       0x70, 0x37, 0xfe, 0x48,
-       0x1c, 0xfe, 0x46, 0x1c, 0x01, 0x0c, 0x06, 0x28, 0xfe, 0x18, 0x13, 0x26,
-       0x21, 0xb9, 0xc7, 0x20,
-       0xb9, 0x0a, 0x57, 0x01, 0x18, 0xc7, 0x89, 0x01, 0xfe, 0xc8, 0x1a, 0x15,
-       0xe1, 0x2a, 0xeb, 0xfe,
+       0x70, 0x37, 0xfe, 0x48, 0x1c, 0xfe, 0x46, 0x1c, 0x01, 0x0c, 0x06, 0x28,
+       0xfe, 0x18, 0x13, 0x26, 0x21, 0xb9, 0xc7, 0x20, 0xb9, 0x0a, 0x57, 0x01,
+       0x18, 0xc7, 0x89, 0x01, 0xfe, 0xc8, 0x1a, 0x15, 0xe1, 0x2a, 0xeb, 0xfe,
        0x01, 0xf0, 0xeb, 0xfe, 0x82, 0xf0, 0xfe, 0xa4, 0x03, 0xfe, 0x9c, 0x32,
-       0x15, 0xfe, 0xe4, 0x00,
-       0x2f, 0xfe, 0xb6, 0x03, 0x2a, 0x3c, 0x16, 0xfe, 0xc6, 0x03, 0x01, 0x41,
-       0xfe, 0x06, 0xf0, 0xfe,
-       0xd6, 0x03, 0xaf, 0xa0, 0xfe, 0x0a, 0xf0, 0xfe, 0xa2, 0x07, 0x05, 0x29,
-       0x03, 0x81, 0x1e, 0x1b,
+       0x15, 0xfe, 0xe4, 0x00, 0x2f, 0xfe, 0xb6, 0x03, 0x2a, 0x3c, 0x16, 0xfe,
+       0xc6, 0x03, 0x01, 0x41, 0xfe, 0x06, 0xf0, 0xfe, 0xd6, 0x03, 0xaf, 0xa0,
+       0xfe, 0x0a, 0xf0, 0xfe, 0xa2, 0x07, 0x05, 0x29, 0x03, 0x81, 0x1e, 0x1b,
        0xfe, 0x24, 0x05, 0x1f, 0x63, 0x01, 0x42, 0x8f, 0xfe, 0x70, 0x02, 0x05,
-       0xea, 0xfe, 0x46, 0x1c,
-       0x37, 0x7d, 0x1d, 0xfe, 0x67, 0x1b, 0xfe, 0xbf, 0x57, 0xfe, 0x77, 0x57,
-       0xfe, 0x48, 0x1c, 0x75,
-       0x01, 0xa6, 0x86, 0x0a, 0x57, 0x01, 0x18, 0x09, 0x00, 0x1b, 0xec, 0x0a,
-       0xe1, 0x01, 0x18, 0x77,
+       0xea, 0xfe, 0x46, 0x1c, 0x37, 0x7d, 0x1d, 0xfe, 0x67, 0x1b, 0xfe, 0xbf,
+       0x57, 0xfe, 0x77, 0x57, 0xfe, 0x48, 0x1c, 0x75, 0x01, 0xa6, 0x86, 0x0a,
+       0x57, 0x01, 0x18, 0x09, 0x00, 0x1b, 0xec, 0x0a, 0xe1, 0x01, 0x18, 0x77,
        0x50, 0x40, 0x8d, 0x30, 0x03, 0x81, 0x1e, 0xf8, 0x1f, 0x63, 0x01, 0x42,
-       0x8f, 0xfe, 0x70, 0x02,
-       0x05, 0xea, 0xd7, 0x99, 0xd8, 0x9c, 0x2a, 0x29, 0x2f, 0xfe, 0x4e, 0x04,
-       0x16, 0xfe, 0x4a, 0x04,
-       0x7e, 0xfe, 0xa0, 0x00, 0xfe, 0x9b, 0x57, 0xfe, 0x54, 0x12, 0x32, 0xff,
-       0x02, 0x00, 0x10, 0x01,
+       0x8f, 0xfe, 0x70, 0x02, 0x05, 0xea, 0xd7, 0x99, 0xd8, 0x9c, 0x2a, 0x29,
+       0x2f, 0xfe, 0x4e, 0x04, 0x16, 0xfe, 0x4a, 0x04, 0x7e, 0xfe, 0xa0, 0x00,
+       0xfe, 0x9b, 0x57, 0xfe, 0x54, 0x12, 0x32, 0xff, 0x02, 0x00, 0x10, 0x01,
        0x08, 0x16, 0xfe, 0x02, 0x05, 0x32, 0x01, 0x08, 0x16, 0x29, 0x27, 0x25,
-       0xee, 0xfe, 0x4c, 0x44,
-       0xfe, 0x58, 0x12, 0x50, 0xfe, 0x44, 0x48, 0x13, 0x34, 0xfe, 0x4c, 0x54,
-       0x7b, 0xec, 0x60, 0x8d,
-       0x30, 0x01, 0xfe, 0x4e, 0x1e, 0xfe, 0x48, 0x47, 0xfe, 0x7c, 0x13, 0x01,
-       0x0c, 0x06, 0x28, 0xfe,
+       0xee, 0xfe, 0x4c, 0x44, 0xfe, 0x58, 0x12, 0x50, 0xfe, 0x44, 0x48, 0x13,
+       0x34, 0xfe, 0x4c, 0x54, 0x7b, 0xec, 0x60, 0x8d, 0x30, 0x01, 0xfe, 0x4e,
+       0x1e, 0xfe, 0x48, 0x47, 0xfe, 0x7c, 0x13, 0x01, 0x0c, 0x06, 0x28, 0xfe,
        0x32, 0x13, 0x01, 0x43, 0x09, 0x9b, 0xfe, 0x68, 0x13, 0xfe, 0x26, 0x10,
-       0x13, 0x34, 0xfe, 0x4c,
-       0x54, 0x7b, 0xec, 0x01, 0xfe, 0x4e, 0x1e, 0xfe, 0x48, 0x47, 0xfe, 0x54,
-       0x13, 0x01, 0x0c, 0x06,
-       0x28, 0xa5, 0x01, 0x43, 0x09, 0x9b, 0xfe, 0x40, 0x13, 0x01, 0x0c, 0x06,
-       0x28, 0xf9, 0x1f, 0x7f,
+       0x13, 0x34, 0xfe, 0x4c, 0x54, 0x7b, 0xec, 0x01, 0xfe, 0x4e, 0x1e, 0xfe,
+       0x48, 0x47, 0xfe, 0x54, 0x13, 0x01, 0x0c, 0x06, 0x28, 0xa5, 0x01, 0x43,
+       0x09, 0x9b, 0xfe, 0x40, 0x13, 0x01, 0x0c, 0x06, 0x28, 0xf9, 0x1f, 0x7f,
        0x01, 0x0c, 0x06, 0x07, 0x4d, 0x1f, 0xfe, 0x0d, 0x00, 0x01, 0x42, 0x8f,
-       0xfe, 0xa4, 0x0e, 0x05,
-       0x29, 0x32, 0x15, 0xfe, 0xe6, 0x00, 0x0f, 0xfe, 0x1c, 0x90, 0x04, 0xfe,
-       0x9c, 0x93, 0x3a, 0x0b,
-       0x0e, 0x8b, 0x02, 0x1f, 0x7f, 0x01, 0x42, 0x05, 0x35, 0xfe, 0x42, 0x5b,
-       0x7d, 0x1d, 0xfe, 0x46,
+       0xfe, 0xa4, 0x0e, 0x05, 0x29, 0x32, 0x15, 0xfe, 0xe6, 0x00, 0x0f, 0xfe,
+       0x1c, 0x90, 0x04, 0xfe, 0x9c, 0x93, 0x3a, 0x0b, 0x0e, 0x8b, 0x02, 0x1f,
+       0x7f, 0x01, 0x42, 0x05, 0x35, 0xfe, 0x42, 0x5b, 0x7d, 0x1d, 0xfe, 0x46,
        0x59, 0xfe, 0xbf, 0x57, 0xfe, 0x77, 0x57, 0x0f, 0xfe, 0x87, 0x80, 0x04,
-       0xfe, 0x87, 0x83, 0xfe,
-       0xc9, 0x47, 0x0b, 0x0e, 0xd0, 0x65, 0x01, 0x0c, 0x06, 0x0d, 0xfe, 0x98,
-       0x13, 0x0f, 0xfe, 0x20,
-       0x80, 0x04, 0xfe, 0xa0, 0x83, 0x33, 0x0b, 0x0e, 0x09, 0x1d, 0xfe, 0x84,
-       0x12, 0x01, 0x38, 0x06,
+       0xfe, 0x87, 0x83, 0xfe, 0xc9, 0x47, 0x0b, 0x0e, 0xd0, 0x65, 0x01, 0x0c,
+       0x06, 0x0d, 0xfe, 0x98, 0x13, 0x0f, 0xfe, 0x20, 0x80, 0x04, 0xfe, 0xa0,
+       0x83, 0x33, 0x0b, 0x0e, 0x09, 0x1d, 0xfe, 0x84, 0x12, 0x01, 0x38, 0x06,
        0x07, 0xfe, 0x70, 0x13, 0x03, 0xfe, 0xa2, 0x00, 0x1e, 0x1b, 0xfe, 0xda,
-       0x05, 0xd0, 0x54, 0x01,
-       0x38, 0x06, 0x0d, 0xfe, 0x58, 0x13, 0x03, 0xfe, 0xa0, 0x00, 0x1e, 0xfe,
-       0x50, 0x12, 0x5e, 0xff,
-       0x02, 0x00, 0x10, 0x2f, 0xfe, 0x90, 0x05, 0x2a, 0x3c, 0xcc, 0xff, 0x02,
-       0x00, 0x10, 0x2f, 0xfe,
+       0x05, 0xd0, 0x54, 0x01, 0x38, 0x06, 0x0d, 0xfe, 0x58, 0x13, 0x03, 0xfe,
+       0xa0, 0x00, 0x1e, 0xfe, 0x50, 0x12, 0x5e, 0xff, 0x02, 0x00, 0x10, 0x2f,
+       0xfe, 0x90, 0x05, 0x2a, 0x3c, 0xcc, 0xff, 0x02, 0x00, 0x10, 0x2f, 0xfe,
        0x9e, 0x05, 0x17, 0xfe, 0xf4, 0x05, 0x15, 0xfe, 0xe3, 0x00, 0x26, 0x01,
-       0x38, 0xfe, 0x4a, 0xf0,
-       0xfe, 0xc0, 0x05, 0xfe, 0x49, 0xf0, 0xfe, 0xba, 0x05, 0x71, 0x2e, 0xfe,
-       0x21, 0x00, 0xf1, 0x2e,
-       0xfe, 0x22, 0x00, 0xa2, 0x2e, 0x4a, 0xfe, 0x09, 0x48, 0xff, 0x02, 0x00,
-       0x10, 0x2f, 0xfe, 0xd0,
+       0x38, 0xfe, 0x4a, 0xf0, 0xfe, 0xc0, 0x05, 0xfe, 0x49, 0xf0, 0xfe, 0xba,
+       0x05, 0x71, 0x2e, 0xfe, 0x21, 0x00, 0xf1, 0x2e, 0xfe, 0x22, 0x00, 0xa2,
+       0x2e, 0x4a, 0xfe, 0x09, 0x48, 0xff, 0x02, 0x00, 0x10, 0x2f, 0xfe, 0xd0,
        0x05, 0x17, 0xfe, 0xf4, 0x05, 0xfe, 0xe2, 0x08, 0x01, 0x38, 0x06, 0xfe,
-       0x1c, 0x00, 0x4d, 0x01,
-       0xa7, 0x2e, 0x07, 0x20, 0xe4, 0x47, 0xfe, 0x27, 0x01, 0x01, 0x0c, 0x06,
-       0x28, 0xfe, 0x24, 0x12,
-       0x3e, 0x01, 0x84, 0x1f, 0x7f, 0x01, 0x0c, 0x06, 0x07, 0x4d, 0x1f, 0xfe,
-       0x0d, 0x00, 0x01, 0x42,
+       0x1c, 0x00, 0x4d, 0x01, 0xa7, 0x2e, 0x07, 0x20, 0xe4, 0x47, 0xfe, 0x27,
+       0x01, 0x01, 0x0c, 0x06, 0x28, 0xfe, 0x24, 0x12, 0x3e, 0x01, 0x84, 0x1f,
+       0x7f, 0x01, 0x0c, 0x06, 0x07, 0x4d, 0x1f, 0xfe, 0x0d, 0x00, 0x01, 0x42,
        0x8f, 0xfe, 0xa4, 0x0e, 0x05, 0x29, 0x03, 0xe6, 0x1e, 0xfe, 0xca, 0x13,
-       0x03, 0xb6, 0x1e, 0xfe,
-       0x40, 0x12, 0x03, 0x66, 0x1e, 0xfe, 0x38, 0x13, 0x3e, 0x01, 0x84, 0x17,
-       0xfe, 0x72, 0x06, 0x0a,
-       0x07, 0x01, 0x38, 0x06, 0x24, 0xfe, 0x02, 0x12, 0x4f, 0x01, 0xfe, 0x56,
-       0x19, 0x16, 0xfe, 0x68,
+       0x03, 0xb6, 0x1e, 0xfe, 0x40, 0x12, 0x03, 0x66, 0x1e, 0xfe, 0x38, 0x13,
+       0x3e, 0x01, 0x84, 0x17, 0xfe, 0x72, 0x06, 0x0a, 0x07, 0x01, 0x38, 0x06,
+       0x24, 0xfe, 0x02, 0x12, 0x4f, 0x01, 0xfe, 0x56, 0x19, 0x16, 0xfe, 0x68,
        0x06, 0x15, 0x82, 0x01, 0x41, 0x15, 0xe2, 0x03, 0x66, 0x8a, 0x10, 0x66,
-       0x03, 0x9a, 0x1e, 0xfe,
-       0x70, 0x12, 0x03, 0x55, 0x1e, 0xfe, 0x68, 0x13, 0x01, 0xc6, 0x09, 0x12,
-       0x48, 0xfe, 0x92, 0x06,
-       0x2e, 0x12, 0x01, 0xfe, 0xac, 0x1d, 0xfe, 0x43, 0x48, 0x62, 0x80, 0x13,
-       0x58, 0xff, 0x02, 0x00,
+       0x03, 0x9a, 0x1e, 0xfe, 0x70, 0x12, 0x03, 0x55, 0x1e, 0xfe, 0x68, 0x13,
+       0x01, 0xc6, 0x09, 0x12, 0x48, 0xfe, 0x92, 0x06, 0x2e, 0x12, 0x01, 0xfe,
+       0xac, 0x1d, 0xfe, 0x43, 0x48, 0x62, 0x80, 0x13, 0x58, 0xff, 0x02, 0x00,
        0x57, 0x52, 0xad, 0x23, 0x3f, 0x4e, 0x62, 0x49, 0x3e, 0x01, 0x84, 0x17,
-       0xfe, 0xea, 0x06, 0x01,
-       0x38, 0x06, 0x12, 0xf7, 0x45, 0x0a, 0x95, 0x01, 0xfe, 0x84, 0x19, 0x16,
-       0xfe, 0xe0, 0x06, 0x15,
-       0x82, 0x01, 0x41, 0x15, 0xe2, 0x03, 0x55, 0x8a, 0x10, 0x55, 0x1c, 0x07,
-       0x01, 0x84, 0xfe, 0xae,
+       0xfe, 0xea, 0x06, 0x01, 0x38, 0x06, 0x12, 0xf7, 0x45, 0x0a, 0x95, 0x01,
+       0xfe, 0x84, 0x19, 0x16, 0xfe, 0xe0, 0x06, 0x15, 0x82, 0x01, 0x41, 0x15,
+       0xe2, 0x03, 0x55, 0x8a, 0x10, 0x55, 0x1c, 0x07, 0x01, 0x84, 0xfe, 0xae,
        0x10, 0x03, 0x6f, 0x1e, 0xfe, 0x9e, 0x13, 0x3e, 0x01, 0x84, 0x03, 0x9a,
-       0x1e, 0xfe, 0x1a, 0x12,
-       0x01, 0x38, 0x06, 0x12, 0xfc, 0x01, 0xc6, 0x01, 0xfe, 0xac, 0x1d, 0xfe,
-       0x43, 0x48, 0x62, 0x80,
-       0xf0, 0x45, 0x0a, 0x95, 0x03, 0xb6, 0x1e, 0xf8, 0x01, 0x38, 0x06, 0x24,
-       0x36, 0xfe, 0x02, 0xf6,
+       0x1e, 0xfe, 0x1a, 0x12, 0x01, 0x38, 0x06, 0x12, 0xfc, 0x01, 0xc6, 0x01,
+       0xfe, 0xac, 0x1d, 0xfe, 0x43, 0x48, 0x62, 0x80, 0xf0, 0x45, 0x0a, 0x95,
+       0x03, 0xb6, 0x1e, 0xf8, 0x01, 0x38, 0x06, 0x24, 0x36, 0xfe, 0x02, 0xf6,
        0x07, 0x71, 0x78, 0x8c, 0x00, 0x4d, 0x62, 0x49, 0x3e, 0x2d, 0x93, 0x4e,
-       0xd0, 0x0d, 0x17, 0xfe,
-       0x9a, 0x07, 0x01, 0xfe, 0xc0, 0x19, 0x16, 0xfe, 0x90, 0x07, 0x26, 0x20,
-       0x9e, 0x15, 0x82, 0x01,
-       0x41, 0x15, 0xe2, 0x21, 0x9e, 0x09, 0x07, 0xfb, 0x03, 0xe6, 0xfe, 0x58,
-       0x57, 0x10, 0xe6, 0x05,
+       0xd0, 0x0d, 0x17, 0xfe, 0x9a, 0x07, 0x01, 0xfe, 0xc0, 0x19, 0x16, 0xfe,
+       0x90, 0x07, 0x26, 0x20, 0x9e, 0x15, 0x82, 0x01, 0x41, 0x15, 0xe2, 0x21,
+       0x9e, 0x09, 0x07, 0xfb, 0x03, 0xe6, 0xfe, 0x58, 0x57, 0x10, 0xe6, 0x05,
        0xfe, 0x2a, 0x06, 0x03, 0x6f, 0x8a, 0x10, 0x6f, 0x1c, 0x07, 0x01, 0x84,
-       0xfe, 0x9c, 0x32, 0x5f,
-       0x75, 0x01, 0xa6, 0x86, 0x15, 0xfe, 0xe2, 0x00, 0x2f, 0xed, 0x2a, 0x3c,
-       0xfe, 0x0a, 0xf0, 0xfe,
-       0xce, 0x07, 0xae, 0xfe, 0x96, 0x08, 0xfe, 0x06, 0xf0, 0xfe, 0x9e, 0x08,
-       0xaf, 0xa0, 0x05, 0x29,
+       0xfe, 0x9c, 0x32, 0x5f, 0x75, 0x01, 0xa6, 0x86, 0x15, 0xfe, 0xe2, 0x00,
+       0x2f, 0xed, 0x2a, 0x3c, 0xfe, 0x0a, 0xf0, 0xfe, 0xce, 0x07, 0xae, 0xfe,
+       0x96, 0x08, 0xfe, 0x06, 0xf0, 0xfe, 0x9e, 0x08, 0xaf, 0xa0, 0x05, 0x29,
        0x01, 0x0c, 0x06, 0x0d, 0xfe, 0x2e, 0x12, 0x14, 0x1d, 0x01, 0x08, 0x14,
-       0x00, 0x01, 0x08, 0x14,
-       0x00, 0x01, 0x08, 0x14, 0x00, 0x01, 0x08, 0xfe, 0x99, 0xa4, 0x01, 0x08,
-       0x14, 0x00, 0x05, 0xfe,
-       0xc6, 0x09, 0x01, 0x76, 0x06, 0x12, 0xfe, 0x3a, 0x12, 0x01, 0x0c, 0x06,
-       0x12, 0xfe, 0x30, 0x13,
+       0x00, 0x01, 0x08, 0x14, 0x00, 0x01, 0x08, 0x14, 0x00, 0x01, 0x08, 0xfe,
+       0x99, 0xa4, 0x01, 0x08, 0x14, 0x00, 0x05, 0xfe, 0xc6, 0x09, 0x01, 0x76,
+       0x06, 0x12, 0xfe, 0x3a, 0x12, 0x01, 0x0c, 0x06, 0x12, 0xfe, 0x30, 0x13,
        0x14, 0xfe, 0x1b, 0x00, 0x01, 0x08, 0x14, 0x00, 0x01, 0x08, 0x14, 0x00,
-       0x01, 0x08, 0x14, 0x00,
-       0x01, 0x08, 0x14, 0x07, 0x01, 0x08, 0x14, 0x00, 0x05, 0xef, 0x7c, 0x4a,
-       0x78, 0x4f, 0x0f, 0xfe,
-       0x9a, 0x81, 0x04, 0xfe, 0x9a, 0x83, 0xfe, 0xcb, 0x47, 0x0b, 0x0e, 0x2d,
-       0x28, 0x48, 0xfe, 0x6c,
+       0x01, 0x08, 0x14, 0x00, 0x01, 0x08, 0x14, 0x07, 0x01, 0x08, 0x14, 0x00,
+       0x05, 0xef, 0x7c, 0x4a, 0x78, 0x4f, 0x0f, 0xfe, 0x9a, 0x81, 0x04, 0xfe,
+       0x9a, 0x83, 0xfe, 0xcb, 0x47, 0x0b, 0x0e, 0x2d, 0x28, 0x48, 0xfe, 0x6c,
        0x08, 0x0a, 0x28, 0xfe, 0x09, 0x6f, 0xca, 0xfe, 0xca, 0x45, 0xfe, 0x32,
-       0x12, 0x53, 0x63, 0x4e,
-       0x7c, 0x97, 0x2f, 0xfe, 0x7e, 0x08, 0x2a, 0x3c, 0xfe, 0x0a, 0xf0, 0xfe,
-       0x6c, 0x08, 0xaf, 0xa0,
-       0xae, 0xfe, 0x96, 0x08, 0x05, 0x29, 0x01, 0x41, 0x05, 0xed, 0x14, 0x24,
-       0x05, 0xed, 0xfe, 0x9c,
+       0x12, 0x53, 0x63, 0x4e, 0x7c, 0x97, 0x2f, 0xfe, 0x7e, 0x08, 0x2a, 0x3c,
+       0xfe, 0x0a, 0xf0, 0xfe, 0x6c, 0x08, 0xaf, 0xa0, 0xae, 0xfe, 0x96, 0x08,
+       0x05, 0x29, 0x01, 0x41, 0x05, 0xed, 0x14, 0x24, 0x05, 0xed, 0xfe, 0x9c,
        0xf7, 0x9f, 0x01, 0xfe, 0xae, 0x1e, 0xfe, 0x18, 0x58, 0x01, 0xfe, 0xbe,
-       0x1e, 0xfe, 0x99, 0x58,
-       0xfe, 0x78, 0x18, 0xfe, 0xf9, 0x18, 0x8e, 0xfe, 0x16, 0x09, 0x10, 0x6a,
-       0x22, 0x6b, 0x01, 0x0c,
-       0x61, 0x54, 0x44, 0x21, 0x2c, 0x09, 0x1a, 0xf8, 0x77, 0x01, 0xfe, 0x7e,
-       0x1e, 0x47, 0x2c, 0x7a,
+       0x1e, 0xfe, 0x99, 0x58, 0xfe, 0x78, 0x18, 0xfe, 0xf9, 0x18, 0x8e, 0xfe,
+       0x16, 0x09, 0x10, 0x6a, 0x22, 0x6b, 0x01, 0x0c, 0x61, 0x54, 0x44, 0x21,
+       0x2c, 0x09, 0x1a, 0xf8, 0x77, 0x01, 0xfe, 0x7e, 0x1e, 0x47, 0x2c, 0x7a,
        0x30, 0xf0, 0xfe, 0x83, 0xe7, 0xfe, 0x3f, 0x00, 0x71, 0xfe, 0x03, 0x40,
-       0x01, 0x0c, 0x61, 0x65,
-       0x44, 0x01, 0xc2, 0xc8, 0xfe, 0x1f, 0x40, 0x20, 0x6e, 0x01, 0xfe, 0x6a,
-       0x16, 0xfe, 0x08, 0x50,
-       0xfe, 0x8a, 0x50, 0xfe, 0x44, 0x51, 0xfe, 0xc6, 0x51, 0xfe, 0x10, 0x10,
-       0x01, 0xfe, 0xce, 0x1e,
+       0x01, 0x0c, 0x61, 0x65, 0x44, 0x01, 0xc2, 0xc8, 0xfe, 0x1f, 0x40, 0x20,
+       0x6e, 0x01, 0xfe, 0x6a, 0x16, 0xfe, 0x08, 0x50, 0xfe, 0x8a, 0x50, 0xfe,
+       0x44, 0x51, 0xfe, 0xc6, 0x51, 0xfe, 0x10, 0x10, 0x01, 0xfe, 0xce, 0x1e,
        0x01, 0xfe, 0xde, 0x1e, 0x10, 0x68, 0x22, 0x69, 0x01, 0xfe, 0xee, 0x1e,
-       0x01, 0xfe, 0xfe, 0x1e,
-       0xfe, 0x40, 0x50, 0xfe, 0xc2, 0x50, 0x10, 0x4b, 0x22, 0x4c, 0xfe, 0x8a,
-       0x10, 0x01, 0x0c, 0x06,
-       0x54, 0xfe, 0x50, 0x12, 0x01, 0xfe, 0xae, 0x1e, 0x01, 0xfe, 0xbe, 0x1e,
-       0x10, 0x6a, 0x22, 0x6b,
+       0x01, 0xfe, 0xfe, 0x1e, 0xfe, 0x40, 0x50, 0xfe, 0xc2, 0x50, 0x10, 0x4b,
+       0x22, 0x4c, 0xfe, 0x8a, 0x10, 0x01, 0x0c, 0x06, 0x54, 0xfe, 0x50, 0x12,
+       0x01, 0xfe, 0xae, 0x1e, 0x01, 0xfe, 0xbe, 0x1e, 0x10, 0x6a, 0x22, 0x6b,
        0x01, 0x0c, 0x06, 0x65, 0x4e, 0x01, 0xc2, 0x0f, 0xfe, 0x1f, 0x80, 0x04,
-       0xfe, 0x9f, 0x83, 0x33,
-       0x0b, 0x0e, 0x20, 0x6e, 0x0f, 0xfe, 0x44, 0x90, 0x04, 0xfe, 0xc4, 0x93,
-       0x3a, 0x0b, 0xfe, 0xc6,
-       0x90, 0x04, 0xfe, 0xc6, 0x93, 0x79, 0x0b, 0x0e, 0x10, 0x6c, 0x22, 0x6d,
-       0x01, 0xfe, 0xce, 0x1e,
+       0xfe, 0x9f, 0x83, 0x33, 0x0b, 0x0e, 0x20, 0x6e, 0x0f, 0xfe, 0x44, 0x90,
+       0x04, 0xfe, 0xc4, 0x93, 0x3a, 0x0b, 0xfe, 0xc6, 0x90, 0x04, 0xfe, 0xc6,
+       0x93, 0x79, 0x0b, 0x0e, 0x10, 0x6c, 0x22, 0x6d, 0x01, 0xfe, 0xce, 0x1e,
        0x01, 0xfe, 0xde, 0x1e, 0x10, 0x68, 0x22, 0x69, 0x0f, 0xfe, 0x40, 0x90,
-       0x04, 0xfe, 0xc0, 0x93,
-       0x3a, 0x0b, 0xfe, 0xc2, 0x90, 0x04, 0xfe, 0xc2, 0x93, 0x79, 0x0b, 0x0e,
-       0x10, 0x4b, 0x22, 0x4c,
-       0x10, 0x64, 0x22, 0x34, 0x01, 0x0c, 0x61, 0x24, 0x44, 0x37, 0x13, 0xfe,
-       0x4e, 0x11, 0x2f, 0xfe,
+       0x04, 0xfe, 0xc0, 0x93, 0x3a, 0x0b, 0xfe, 0xc2, 0x90, 0x04, 0xfe, 0xc2,
+       0x93, 0x79, 0x0b, 0x0e, 0x10, 0x4b, 0x22, 0x4c, 0x10, 0x64, 0x22, 0x34,
+       0x01, 0x0c, 0x61, 0x24, 0x44, 0x37, 0x13, 0xfe, 0x4e, 0x11, 0x2f, 0xfe,
        0xde, 0x09, 0xfe, 0x9e, 0xf0, 0xfe, 0xf2, 0x09, 0xfe, 0x01, 0x48, 0x1b,
-       0x3c, 0x37, 0x88, 0xf5,
-       0xd4, 0xfe, 0x1e, 0x0a, 0xd5, 0xfe, 0x42, 0x0a, 0xd2, 0xfe, 0x1e, 0x0a,
-       0xd3, 0xfe, 0x42, 0x0a,
-       0xae, 0xfe, 0x12, 0x0a, 0xfe, 0x06, 0xf0, 0xfe, 0x18, 0x0a, 0xaf, 0xa0,
-       0x05, 0x29, 0x01, 0x41,
+       0x3c, 0x37, 0x88, 0xf5, 0xd4, 0xfe, 0x1e, 0x0a, 0xd5, 0xfe, 0x42, 0x0a,
+       0xd2, 0xfe, 0x1e, 0x0a, 0xd3, 0xfe, 0x42, 0x0a, 0xae, 0xfe, 0x12, 0x0a,
+       0xfe, 0x06, 0xf0, 0xfe, 0x18, 0x0a, 0xaf, 0xa0, 0x05, 0x29, 0x01, 0x41,
        0xfe, 0xc1, 0x10, 0x14, 0x24, 0xfe, 0xc1, 0x10, 0x01, 0x76, 0x06, 0x07,
-       0xfe, 0x14, 0x12, 0x01,
-       0x76, 0x06, 0x0d, 0x5d, 0x01, 0x0c, 0x06, 0x0d, 0xfe, 0x74, 0x12, 0xfe,
-       0x2e, 0x1c, 0x05, 0xfe,
-       0x1a, 0x0c, 0x01, 0x76, 0x06, 0x07, 0x5d, 0x01, 0x76, 0x06, 0x0d, 0x41,
-       0xfe, 0x2c, 0x1c, 0xfe,
+       0xfe, 0x14, 0x12, 0x01, 0x76, 0x06, 0x0d, 0x5d, 0x01, 0x0c, 0x06, 0x0d,
+       0xfe, 0x74, 0x12, 0xfe, 0x2e, 0x1c, 0x05, 0xfe, 0x1a, 0x0c, 0x01, 0x76,
+       0x06, 0x07, 0x5d, 0x01, 0x76, 0x06, 0x0d, 0x41, 0xfe, 0x2c, 0x1c, 0xfe,
        0xaa, 0xf0, 0xfe, 0xce, 0x0a, 0xfe, 0xac, 0xf0, 0xfe, 0x66, 0x0a, 0xfe,
-       0x92, 0x10, 0xc4, 0xf6,
-       0xfe, 0xad, 0xf0, 0xfe, 0x72, 0x0a, 0x05, 0xfe, 0x1a, 0x0c, 0xc5, 0xfe,
-       0xe7, 0x10, 0xfe, 0x2b,
-       0xf0, 0xbf, 0xfe, 0x6b, 0x18, 0x23, 0xfe, 0x00, 0xfe, 0xfe, 0x1c, 0x12,
-       0xac, 0xfe, 0xd2, 0xf0,
+       0x92, 0x10, 0xc4, 0xf6, 0xfe, 0xad, 0xf0, 0xfe, 0x72, 0x0a, 0x05, 0xfe,
+       0x1a, 0x0c, 0xc5, 0xfe, 0xe7, 0x10, 0xfe, 0x2b, 0xf0, 0xbf, 0xfe, 0x6b,
+       0x18, 0x23, 0xfe, 0x00, 0xfe, 0xfe, 0x1c, 0x12, 0xac, 0xfe, 0xd2, 0xf0,
        0xbf, 0xfe, 0x76, 0x18, 0x23, 0x1d, 0x1b, 0xbf, 0x03, 0xe3, 0x23, 0x07,
-       0x1b, 0xbf, 0xd4, 0x5b,
-       0xd5, 0x5b, 0xd2, 0x5b, 0xd3, 0x5b, 0xc4, 0xc5, 0xfe, 0xa9, 0x10, 0x75,
-       0x5e, 0x32, 0x1f, 0x7f,
-       0x01, 0x42, 0x19, 0xfe, 0x35, 0x00, 0xfe, 0x01, 0xf0, 0x70, 0x19, 0x98,
-       0x05, 0x70, 0xfe, 0x74,
+       0x1b, 0xbf, 0xd4, 0x5b, 0xd5, 0x5b, 0xd2, 0x5b, 0xd3, 0x5b, 0xc4, 0xc5,
+       0xfe, 0xa9, 0x10, 0x75, 0x5e, 0x32, 0x1f, 0x7f, 0x01, 0x42, 0x19, 0xfe,
+       0x35, 0x00, 0xfe, 0x01, 0xf0, 0x70, 0x19, 0x98, 0x05, 0x70, 0xfe, 0x74,
        0x18, 0x23, 0xfe, 0x00, 0xf8, 0x1b, 0x5b, 0x7d, 0x12, 0x01, 0xfe, 0x78,
-       0x0f, 0x4d, 0x01, 0xfe,
-       0x96, 0x1a, 0x21, 0x30, 0x77, 0x7d, 0x1d, 0x05, 0x5b, 0x01, 0x0c, 0x06,
-       0x0d, 0x2b, 0xfe, 0xe2,
-       0x0b, 0x01, 0x0c, 0x06, 0x54, 0xfe, 0xa6, 0x12, 0x01, 0x0c, 0x06, 0x24,
-       0xfe, 0x88, 0x13, 0x21,
+       0x0f, 0x4d, 0x01, 0xfe, 0x96, 0x1a, 0x21, 0x30, 0x77, 0x7d, 0x1d, 0x05,
+       0x5b, 0x01, 0x0c, 0x06, 0x0d, 0x2b, 0xfe, 0xe2, 0x0b, 0x01, 0x0c, 0x06,
+       0x54, 0xfe, 0xa6, 0x12, 0x01, 0x0c, 0x06, 0x24, 0xfe, 0x88, 0x13, 0x21,
        0x6e, 0xc7, 0x01, 0xfe, 0x1e, 0x1f, 0x0f, 0xfe, 0x83, 0x80, 0x04, 0xfe,
-       0x83, 0x83, 0xfe, 0xc9,
-       0x47, 0x0b, 0x0e, 0xfe, 0xc8, 0x44, 0xfe, 0x42, 0x13, 0x0f, 0xfe, 0x04,
-       0x91, 0x04, 0xfe, 0x84,
-       0x93, 0xfe, 0xca, 0x57, 0x0b, 0xfe, 0x86, 0x91, 0x04, 0xfe, 0x86, 0x93,
-       0xfe, 0xcb, 0x57, 0x0b,
+       0x83, 0x83, 0xfe, 0xc9, 0x47, 0x0b, 0x0e, 0xfe, 0xc8, 0x44, 0xfe, 0x42,
+       0x13, 0x0f, 0xfe, 0x04, 0x91, 0x04, 0xfe, 0x84, 0x93, 0xfe, 0xca, 0x57,
+       0x0b, 0xfe, 0x86, 0x91, 0x04, 0xfe, 0x86, 0x93, 0xfe, 0xcb, 0x57, 0x0b,
        0x0e, 0x7a, 0x30, 0xfe, 0x40, 0x59, 0xfe, 0xc1, 0x59, 0x8e, 0x40, 0x03,
-       0x6a, 0x3b, 0x6b, 0x10,
-       0x97, 0x22, 0x98, 0xd9, 0x6a, 0xda, 0x6b, 0x01, 0xc2, 0xc8, 0x7a, 0x30,
-       0x20, 0x6e, 0xdb, 0x64,
-       0xdc, 0x34, 0x91, 0x6c, 0x7e, 0x6d, 0xfe, 0x44, 0x55, 0xfe, 0xe5, 0x55,
-       0xfe, 0x04, 0xfa, 0x64,
+       0x6a, 0x3b, 0x6b, 0x10, 0x97, 0x22, 0x98, 0xd9, 0x6a, 0xda, 0x6b, 0x01,
+       0xc2, 0xc8, 0x7a, 0x30, 0x20, 0x6e, 0xdb, 0x64, 0xdc, 0x34, 0x91, 0x6c,
+       0x7e, 0x6d, 0xfe, 0x44, 0x55, 0xfe, 0xe5, 0x55, 0xfe, 0x04, 0xfa, 0x64,
        0xfe, 0x05, 0xfa, 0x34, 0x01, 0xfe, 0x6a, 0x16, 0xa3, 0x26, 0x10, 0x97,
-       0x10, 0x98, 0x91, 0x6c,
-       0x7e, 0x6d, 0xfe, 0x14, 0x10, 0x01, 0x0c, 0x06, 0x24, 0x1b, 0x40, 0x91,
-       0x4b, 0x7e, 0x4c, 0x01,
-       0x0c, 0x06, 0xfe, 0xf7, 0x00, 0x44, 0x03, 0x68, 0x3b, 0x69, 0xfe, 0x10,
-       0x58, 0xfe, 0x91, 0x58,
+       0x10, 0x98, 0x91, 0x6c, 0x7e, 0x6d, 0xfe, 0x14, 0x10, 0x01, 0x0c, 0x06,
+       0x24, 0x1b, 0x40, 0x91, 0x4b, 0x7e, 0x4c, 0x01, 0x0c, 0x06, 0xfe, 0xf7,
+       0x00, 0x44, 0x03, 0x68, 0x3b, 0x69, 0xfe, 0x10, 0x58, 0xfe, 0x91, 0x58,
        0xfe, 0x14, 0x59, 0xfe, 0x95, 0x59, 0x05, 0x5b, 0x01, 0x0c, 0x06, 0x24,
-       0x1b, 0x40, 0x01, 0x0c,
-       0x06, 0xfe, 0xf7, 0x00, 0x44, 0x78, 0x01, 0xfe, 0x8e, 0x1e, 0x4f, 0x0f,
-       0xfe, 0x10, 0x90, 0x04,
-       0xfe, 0x90, 0x93, 0x3a, 0x0b, 0xfe, 0x92, 0x90, 0x04, 0xfe, 0x92, 0x93,
-       0x79, 0x0b, 0x0e, 0xfe,
+       0x1b, 0x40, 0x01, 0x0c, 0x06, 0xfe, 0xf7, 0x00, 0x44, 0x78, 0x01, 0xfe,
+       0x8e, 0x1e, 0x4f, 0x0f, 0xfe, 0x10, 0x90, 0x04, 0xfe, 0x90, 0x93, 0x3a,
+       0x0b, 0xfe, 0x92, 0x90, 0x04, 0xfe, 0x92, 0x93, 0x79, 0x0b, 0x0e, 0xfe,
        0xbd, 0x10, 0x01, 0x43, 0x09, 0xbb, 0x1b, 0xfe, 0x6e, 0x0a, 0x15, 0xbb,
-       0x01, 0x0c, 0x06, 0x0d,
-       0xfe, 0x14, 0x13, 0x03, 0x4b, 0x3b, 0x4c, 0x8e, 0xfe, 0x6e, 0x0a, 0xfe,
-       0x0c, 0x58, 0xfe, 0x8d,
-       0x58, 0x05, 0x5b, 0x26, 0x3e, 0x0f, 0xfe, 0x19, 0x80, 0x04, 0xfe, 0x99,
-       0x83, 0x33, 0x0b, 0x0e,
+       0x01, 0x0c, 0x06, 0x0d, 0xfe, 0x14, 0x13, 0x03, 0x4b, 0x3b, 0x4c, 0x8e,
+       0xfe, 0x6e, 0x0a, 0xfe, 0x0c, 0x58, 0xfe, 0x8d, 0x58, 0x05, 0x5b, 0x26,
+       0x3e, 0x0f, 0xfe, 0x19, 0x80, 0x04, 0xfe, 0x99, 0x83, 0x33, 0x0b, 0x0e,
        0xfe, 0xe5, 0x10, 0x01, 0x0c, 0x06, 0x0d, 0xfe, 0x1a, 0x12, 0xfe, 0x6c,
-       0x19, 0xfe, 0x19, 0x41,
-       0xfe, 0x6b, 0x18, 0xac, 0xfe, 0xd1, 0xf0, 0xef, 0x1f, 0x92, 0x01, 0x42,
-       0x19, 0xfe, 0x44, 0x00,
-       0xfe, 0x90, 0x10, 0xfe, 0x6c, 0x19, 0xd9, 0x4b, 0xfe, 0xed, 0x19, 0xda,
-       0x4c, 0xfe, 0x0c, 0x51,
+       0x19, 0xfe, 0x19, 0x41, 0xfe, 0x6b, 0x18, 0xac, 0xfe, 0xd1, 0xf0, 0xef,
+       0x1f, 0x92, 0x01, 0x42, 0x19, 0xfe, 0x44, 0x00, 0xfe, 0x90, 0x10, 0xfe,
+       0x6c, 0x19, 0xd9, 0x4b, 0xfe, 0xed, 0x19, 0xda, 0x4c, 0xfe, 0x0c, 0x51,
        0xfe, 0x8e, 0x51, 0xfe, 0x6b, 0x18, 0x23, 0xfe, 0x00, 0xff, 0x31, 0xfe,
-       0x76, 0x10, 0xac, 0xfe,
-       0xd2, 0xf0, 0xfe, 0xba, 0x0c, 0xfe, 0x76, 0x18, 0x23, 0x1d, 0x5d, 0x03,
-       0xe3, 0x23, 0x07, 0xfe,
-       0x08, 0x13, 0x19, 0xfe, 0x16, 0x00, 0x05, 0x70, 0xfe, 0xd1, 0xf0, 0xfe,
-       0xcc, 0x0c, 0x1f, 0x92,
+       0x76, 0x10, 0xac, 0xfe, 0xd2, 0xf0, 0xfe, 0xba, 0x0c, 0xfe, 0x76, 0x18,
+       0x23, 0x1d, 0x5d, 0x03, 0xe3, 0x23, 0x07, 0xfe, 0x08, 0x13, 0x19, 0xfe,
+       0x16, 0x00, 0x05, 0x70, 0xfe, 0xd1, 0xf0, 0xfe, 0xcc, 0x0c, 0x1f, 0x92,
        0x01, 0x42, 0x19, 0xfe, 0x17, 0x00, 0x5c, 0xfe, 0xce, 0xf0, 0xfe, 0xd2,
-       0x0c, 0xfe, 0x3e, 0x10,
-       0xfe, 0xcd, 0xf0, 0xfe, 0xde, 0x0c, 0x19, 0xfe, 0x22, 0x00, 0x05, 0x70,
-       0xfe, 0xcb, 0xf0, 0xfe,
-       0xea, 0x0c, 0x19, 0xfe, 0x24, 0x00, 0x05, 0x70, 0xfe, 0xd0, 0xf0, 0xfe,
-       0xf4, 0x0c, 0x19, 0x94,
+       0x0c, 0xfe, 0x3e, 0x10, 0xfe, 0xcd, 0xf0, 0xfe, 0xde, 0x0c, 0x19, 0xfe,
+       0x22, 0x00, 0x05, 0x70, 0xfe, 0xcb, 0xf0, 0xfe, 0xea, 0x0c, 0x19, 0xfe,
+       0x24, 0x00, 0x05, 0x70, 0xfe, 0xd0, 0xf0, 0xfe, 0xf4, 0x0c, 0x19, 0x94,
        0xfe, 0x1c, 0x10, 0xfe, 0xcf, 0xf0, 0xfe, 0xfe, 0x0c, 0x19, 0x4a, 0xf3,
-       0xfe, 0xcc, 0xf0, 0xef,
-       0x01, 0x76, 0x06, 0x24, 0x4d, 0x19, 0xfe, 0x12, 0x00, 0x37, 0x13, 0xfe,
-       0x4e, 0x11, 0x2f, 0xfe,
-       0x16, 0x0d, 0xfe, 0x9e, 0xf0, 0xfe, 0x2a, 0x0d, 0xfe, 0x01, 0x48, 0x1b,
-       0x3c, 0x37, 0x88, 0xf5,
+       0xfe, 0xcc, 0xf0, 0xef, 0x01, 0x76, 0x06, 0x24, 0x4d, 0x19, 0xfe, 0x12,
+       0x00, 0x37, 0x13, 0xfe, 0x4e, 0x11, 0x2f, 0xfe, 0x16, 0x0d, 0xfe, 0x9e,
+       0xf0, 0xfe, 0x2a, 0x0d, 0xfe, 0x01, 0x48, 0x1b, 0x3c, 0x37, 0x88, 0xf5,
        0xd4, 0x29, 0xd5, 0x29, 0xd2, 0x29, 0xd3, 0x29, 0x37, 0xfe, 0x9c, 0x32,
-       0x2f, 0xfe, 0x3e, 0x0d,
-       0x2a, 0x3c, 0xae, 0xfe, 0x62, 0x0d, 0xaf, 0xa0, 0xd4, 0x9f, 0xd5, 0x9f,
-       0xd2, 0x9f, 0xd3, 0x9f,
-       0x05, 0x29, 0x01, 0x41, 0xfe, 0xd3, 0x10, 0x15, 0xfe, 0xe8, 0x00, 0xc4,
-       0xc5, 0x75, 0xd7, 0x99,
+       0x2f, 0xfe, 0x3e, 0x0d, 0x2a, 0x3c, 0xae, 0xfe, 0x62, 0x0d, 0xaf, 0xa0,
+       0xd4, 0x9f, 0xd5, 0x9f, 0xd2, 0x9f, 0xd3, 0x9f, 0x05, 0x29, 0x01, 0x41,
+       0xfe, 0xd3, 0x10, 0x15, 0xfe, 0xe8, 0x00, 0xc4, 0xc5, 0x75, 0xd7, 0x99,
        0xd8, 0x9c, 0xfe, 0x89, 0xf0, 0x29, 0x27, 0x25, 0xbe, 0xd7, 0x99, 0xd8,
-       0x9c, 0x2f, 0xfe, 0x8c,
-       0x0d, 0x16, 0x29, 0x27, 0x25, 0xbd, 0xfe, 0x01, 0x48, 0xa4, 0x19, 0xfe,
-       0x42, 0x00, 0x05, 0x70,
-       0x90, 0x07, 0xfe, 0x81, 0x49, 0x1b, 0xfe, 0x64, 0x0e, 0x01, 0x0c, 0x06,
-       0x0d, 0xfe, 0x44, 0x13,
+       0x9c, 0x2f, 0xfe, 0x8c, 0x0d, 0x16, 0x29, 0x27, 0x25, 0xbd, 0xfe, 0x01,
+       0x48, 0xa4, 0x19, 0xfe, 0x42, 0x00, 0x05, 0x70, 0x90, 0x07, 0xfe, 0x81,
+       0x49, 0x1b, 0xfe, 0x64, 0x0e, 0x01, 0x0c, 0x06, 0x0d, 0xfe, 0x44, 0x13,
        0x19, 0x00, 0x2d, 0x0d, 0xfe, 0x54, 0x12, 0x2d, 0xfe, 0x28, 0x00, 0x2b,
-       0xfe, 0xda, 0x0e, 0x0a,
-       0x57, 0x01, 0x18, 0x09, 0x00, 0x36, 0x46, 0xfe, 0x28, 0x00, 0xfe, 0xfa,
-       0x10, 0x01, 0xfe, 0xf4,
-       0x1c, 0x01, 0xfe, 0x00, 0x1d, 0x0a, 0xba, 0x01, 0xfe, 0x58, 0x10, 0x40,
-       0x15, 0x56, 0x01, 0x85,
+       0xfe, 0xda, 0x0e, 0x0a, 0x57, 0x01, 0x18, 0x09, 0x00, 0x36, 0x46, 0xfe,
+       0x28, 0x00, 0xfe, 0xfa, 0x10, 0x01, 0xfe, 0xf4, 0x1c, 0x01, 0xfe, 0x00,
+       0x1d, 0x0a, 0xba, 0x01, 0xfe, 0x58, 0x10, 0x40, 0x15, 0x56, 0x01, 0x85,
        0x05, 0x35, 0x19, 0xfe, 0x44, 0x00, 0x2d, 0x0d, 0xf7, 0x46, 0x0d, 0xfe,
-       0xcc, 0x10, 0x01, 0xa7,
-       0x46, 0x0d, 0xfe, 0xc2, 0x10, 0x01, 0xa7, 0x0f, 0xfe, 0x19, 0x82, 0x04,
-       0xfe, 0x99, 0x83, 0xfe,
-       0xcc, 0x47, 0x0b, 0x0e, 0xfe, 0x34, 0x46, 0xa5, 0x46, 0x0d, 0x19, 0xfe,
-       0x43, 0x00, 0xfe, 0xa2,
+       0xcc, 0x10, 0x01, 0xa7, 0x46, 0x0d, 0xfe, 0xc2, 0x10, 0x01, 0xa7, 0x0f,
+       0xfe, 0x19, 0x82, 0x04, 0xfe, 0x99, 0x83, 0xfe, 0xcc, 0x47, 0x0b, 0x0e,
+       0xfe, 0x34, 0x46, 0xa5, 0x46, 0x0d, 0x19, 0xfe, 0x43, 0x00, 0xfe, 0xa2,
        0x10, 0x01, 0x0c, 0x61, 0x0d, 0x44, 0x01, 0xfe, 0xf4, 0x1c, 0x01, 0xfe,
-       0x00, 0x1d, 0x40, 0x15,
-       0x56, 0x01, 0x85, 0x7d, 0x0d, 0x40, 0x51, 0x01, 0xfe, 0x9e, 0x1e, 0x05,
-       0xfe, 0x3a, 0x03, 0x01,
-       0x0c, 0x06, 0x0d, 0x5d, 0x46, 0x0d, 0x19, 0x00, 0xfe, 0x62, 0x10, 0x01,
-       0x76, 0x06, 0x12, 0xfe,
+       0x00, 0x1d, 0x40, 0x15, 0x56, 0x01, 0x85, 0x7d, 0x0d, 0x40, 0x51, 0x01,
+       0xfe, 0x9e, 0x1e, 0x05, 0xfe, 0x3a, 0x03, 0x01, 0x0c, 0x06, 0x0d, 0x5d,
+       0x46, 0x0d, 0x19, 0x00, 0xfe, 0x62, 0x10, 0x01, 0x76, 0x06, 0x12, 0xfe,
        0x5c, 0x12, 0x01, 0x0c, 0x06, 0x12, 0xfe, 0x52, 0x13, 0xfe, 0x1c, 0x1c,
-       0xfe, 0x9d, 0xf0, 0xfe,
-       0x8e, 0x0e, 0xfe, 0x1c, 0x1c, 0xfe, 0x9d, 0xf0, 0xfe, 0x94, 0x0e, 0x01,
-       0x0c, 0x61, 0x12, 0x44,
-       0xfe, 0x9f, 0x10, 0x19, 0xfe, 0x15, 0x00, 0xfe, 0x04, 0xe6, 0x0d, 0x4f,
-       0xfe, 0x2e, 0x10, 0x19,
+       0xfe, 0x9d, 0xf0, 0xfe, 0x8e, 0x0e, 0xfe, 0x1c, 0x1c, 0xfe, 0x9d, 0xf0,
+       0xfe, 0x94, 0x0e, 0x01, 0x0c, 0x61, 0x12, 0x44, 0xfe, 0x9f, 0x10, 0x19,
+       0xfe, 0x15, 0x00, 0xfe, 0x04, 0xe6, 0x0d, 0x4f, 0xfe, 0x2e, 0x10, 0x19,
        0xfe, 0x13, 0x00, 0xfe, 0x10, 0x10, 0x19, 0xfe, 0x47, 0x00, 0xf1, 0x19,
-       0xfe, 0x41, 0x00, 0xa2,
-       0x19, 0xfe, 0x24, 0x00, 0x86, 0xc4, 0xc5, 0x75, 0x03, 0x81, 0x1e, 0x2b,
-       0xea, 0x4f, 0xfe, 0x04,
-       0xe6, 0x12, 0xfe, 0x9d, 0x41, 0xfe, 0x1c, 0x42, 0x40, 0x01, 0xf4, 0x05,
-       0x35, 0xfe, 0x12, 0x1c,
+       0xfe, 0x41, 0x00, 0xa2, 0x19, 0xfe, 0x24, 0x00, 0x86, 0xc4, 0xc5, 0x75,
+       0x03, 0x81, 0x1e, 0x2b, 0xea, 0x4f, 0xfe, 0x04, 0xe6, 0x12, 0xfe, 0x9d,
+       0x41, 0xfe, 0x1c, 0x42, 0x40, 0x01, 0xf4, 0x05, 0x35, 0xfe, 0x12, 0x1c,
        0x1f, 0x0d, 0x47, 0xb5, 0xc3, 0x1f, 0xfe, 0x31, 0x00, 0x47, 0xb8, 0x01,
-       0xfe, 0xd4, 0x11, 0x05,
-       0xe9, 0x51, 0xfe, 0x06, 0xec, 0xe0, 0xfe, 0x0e, 0x47, 0x46, 0x28, 0xfe,
-       0xce, 0x45, 0x31, 0x51,
-       0xfe, 0x06, 0xea, 0xe0, 0xfe, 0x47, 0x4b, 0x45, 0xfe, 0x75, 0x57, 0x03,
-       0x67, 0xfe, 0x98, 0x56,
+       0xfe, 0xd4, 0x11, 0x05, 0xe9, 0x51, 0xfe, 0x06, 0xec, 0xe0, 0xfe, 0x0e,
+       0x47, 0x46, 0x28, 0xfe, 0xce, 0x45, 0x31, 0x51, 0xfe, 0x06, 0xea, 0xe0,
+       0xfe, 0x47, 0x4b, 0x45, 0xfe, 0x75, 0x57, 0x03, 0x67, 0xfe, 0x98, 0x56,
        0xfe, 0x38, 0x12, 0x0a, 0x5a, 0x01, 0x18, 0xfe, 0x44, 0x48, 0x60, 0x01,
-       0x0c, 0x06, 0x28, 0xfe,
-       0x18, 0x13, 0x0a, 0x57, 0x01, 0x18, 0x3e, 0xfe, 0x41, 0x58, 0x0a, 0xba,
-       0xfe, 0xfa, 0x14, 0xfe,
-       0x49, 0x54, 0xb0, 0xfe, 0x5e, 0x0f, 0x05, 0xfe, 0x3a, 0x03, 0x0a, 0x67,
-       0xfe, 0xe0, 0x14, 0xfe,
+       0x0c, 0x06, 0x28, 0xfe, 0x18, 0x13, 0x0a, 0x57, 0x01, 0x18, 0x3e, 0xfe,
+       0x41, 0x58, 0x0a, 0xba, 0xfe, 0xfa, 0x14, 0xfe, 0x49, 0x54, 0xb0, 0xfe,
+       0x5e, 0x0f, 0x05, 0xfe, 0x3a, 0x03, 0x0a, 0x67, 0xfe, 0xe0, 0x14, 0xfe,
        0x0e, 0x47, 0x46, 0x28, 0xfe, 0xce, 0x45, 0x31, 0x51, 0xfe, 0xce, 0x47,
-       0xfe, 0xad, 0x13, 0x05,
-       0x35, 0x21, 0x2c, 0x09, 0x1a, 0xfe, 0x98, 0x12, 0x26, 0x20, 0x96, 0x20,
-       0xe7, 0xfe, 0x08, 0x1c,
-       0xfe, 0x7c, 0x19, 0xfe, 0xfd, 0x19, 0xfe, 0x0a, 0x1c, 0x03, 0xe5, 0xfe,
-       0x48, 0x55, 0xa5, 0x3b,
+       0xfe, 0xad, 0x13, 0x05, 0x35, 0x21, 0x2c, 0x09, 0x1a, 0xfe, 0x98, 0x12,
+       0x26, 0x20, 0x96, 0x20, 0xe7, 0xfe, 0x08, 0x1c, 0xfe, 0x7c, 0x19, 0xfe,
+       0xfd, 0x19, 0xfe, 0x0a, 0x1c, 0x03, 0xe5, 0xfe, 0x48, 0x55, 0xa5, 0x3b,
        0xfe, 0x62, 0x01, 0xfe, 0xc9, 0x55, 0x31, 0xfe, 0x74, 0x10, 0x01, 0xfe,
-       0xf0, 0x1a, 0x03, 0xfe,
-       0x38, 0x01, 0x3b, 0xfe, 0x3a, 0x01, 0x8e, 0xfe, 0x1e, 0x10, 0xfe, 0x02,
-       0xec, 0xe7, 0x53, 0x00,
-       0x36, 0xfe, 0x04, 0xec, 0x2c, 0x60, 0xfe, 0x05, 0xf6, 0xfe, 0x34, 0x01,
-       0x01, 0xfe, 0x62, 0x1b,
+       0xf0, 0x1a, 0x03, 0xfe, 0x38, 0x01, 0x3b, 0xfe, 0x3a, 0x01, 0x8e, 0xfe,
+       0x1e, 0x10, 0xfe, 0x02, 0xec, 0xe7, 0x53, 0x00, 0x36, 0xfe, 0x04, 0xec,
+       0x2c, 0x60, 0xfe, 0x05, 0xf6, 0xfe, 0x34, 0x01, 0x01, 0xfe, 0x62, 0x1b,
        0x01, 0xfe, 0xce, 0x1e, 0xb2, 0x11, 0xfe, 0x18, 0x13, 0xca, 0xfe, 0x02,
-       0xea, 0xe7, 0x53, 0x92,
-       0xfe, 0xc3, 0x13, 0x1f, 0x12, 0x47, 0xb5, 0xc3, 0xfe, 0x2a, 0x10, 0x03,
-       0xfe, 0x38, 0x01, 0x23,
-       0xfe, 0xf0, 0xff, 0x10, 0xe5, 0x03, 0xfe, 0x3a, 0x01, 0x10, 0xfe, 0x62,
-       0x01, 0x01, 0xfe, 0x1e,
+       0xea, 0xe7, 0x53, 0x92, 0xfe, 0xc3, 0x13, 0x1f, 0x12, 0x47, 0xb5, 0xc3,
+       0xfe, 0x2a, 0x10, 0x03, 0xfe, 0x38, 0x01, 0x23, 0xfe, 0xf0, 0xff, 0x10,
+       0xe5, 0x03, 0xfe, 0x3a, 0x01, 0x10, 0xfe, 0x62, 0x01, 0x01, 0xfe, 0x1e,
        0x1e, 0x20, 0x2c, 0x15, 0x56, 0x01, 0xfe, 0x9e, 0x1e, 0x13, 0x07, 0x02,
-       0x26, 0x02, 0x21, 0x96,
-       0xc7, 0x20, 0x96, 0x09, 0x92, 0xfe, 0x79, 0x13, 0x1f, 0x1d, 0x47, 0xb5,
-       0xc3, 0xfe, 0xe1, 0x10,
-       0xcf, 0xfe, 0x03, 0xdc, 0xfe, 0x73, 0x57, 0xfe, 0x80, 0x5d, 0x02, 0xcf,
-       0xfe, 0x03, 0xdc, 0xfe,
+       0x26, 0x02, 0x21, 0x96, 0xc7, 0x20, 0x96, 0x09, 0x92, 0xfe, 0x79, 0x13,
+       0x1f, 0x1d, 0x47, 0xb5, 0xc3, 0xfe, 0xe1, 0x10, 0xcf, 0xfe, 0x03, 0xdc,
+       0xfe, 0x73, 0x57, 0xfe, 0x80, 0x5d, 0x02, 0xcf, 0xfe, 0x03, 0xdc, 0xfe,
        0x5b, 0x57, 0xfe, 0x80, 0x5d, 0x02, 0xfe, 0x03, 0x57, 0xcf, 0x26, 0xfe,
-       0x00, 0xcc, 0x02, 0xfe,
-       0x03, 0x57, 0xcf, 0x89, 0x02, 0x01, 0x0c, 0x06, 0x4a, 0xfe, 0x4e, 0x13,
-       0x0f, 0xfe, 0x1c, 0x80,
-       0x04, 0xfe, 0x9c, 0x83, 0x33, 0x0b, 0x0e, 0x09, 0x07, 0xfe, 0x3a, 0x13,
-       0x0f, 0xfe, 0x1e, 0x80,
+       0x00, 0xcc, 0x02, 0xfe, 0x03, 0x57, 0xcf, 0x89, 0x02, 0x01, 0x0c, 0x06,
+       0x4a, 0xfe, 0x4e, 0x13, 0x0f, 0xfe, 0x1c, 0x80, 0x04, 0xfe, 0x9c, 0x83,
+       0x33, 0x0b, 0x0e, 0x09, 0x07, 0xfe, 0x3a, 0x13, 0x0f, 0xfe, 0x1e, 0x80,
        0x04, 0xfe, 0x9e, 0x83, 0x33, 0x0b, 0x0e, 0xfe, 0x2a, 0x13, 0x0f, 0xfe,
-       0x1d, 0x80, 0x04, 0xfe,
-       0x9d, 0x83, 0xfe, 0xf9, 0x13, 0x0e, 0xfe, 0x1c, 0x13, 0x01, 0xfe, 0xee,
-       0x1e, 0xac, 0xfe, 0x14,
-       0x13, 0x01, 0xfe, 0xfe, 0x1e, 0xfe, 0x81, 0x58, 0xfa, 0x01, 0xfe, 0x0e,
-       0x1f, 0xfe, 0x30, 0xf4,
+       0x1d, 0x80, 0x04, 0xfe, 0x9d, 0x83, 0xfe, 0xf9, 0x13, 0x0e, 0xfe, 0x1c,
+       0x13, 0x01, 0xfe, 0xee, 0x1e, 0xac, 0xfe, 0x14, 0x13, 0x01, 0xfe, 0xfe,
+       0x1e, 0xfe, 0x81, 0x58, 0xfa, 0x01, 0xfe, 0x0e, 0x1f, 0xfe, 0x30, 0xf4,
        0x0d, 0xfe, 0x3c, 0x50, 0xa2, 0x01, 0xfe, 0x92, 0x1b, 0x01, 0x43, 0x09,
-       0x56, 0xfb, 0x01, 0xfe,
-       0xc8, 0x1a, 0x01, 0x0c, 0x06, 0x28, 0xa4, 0x01, 0xfe, 0xf4, 0x1c, 0x01,
-       0xfe, 0x00, 0x1d, 0x15,
-       0xfe, 0xe9, 0x00, 0x01, 0x0c, 0x06, 0x4a, 0xfe, 0x4e, 0x13, 0x01, 0xfe,
-       0x22, 0x1b, 0xfe, 0x1e,
+       0x56, 0xfb, 0x01, 0xfe, 0xc8, 0x1a, 0x01, 0x0c, 0x06, 0x28, 0xa4, 0x01,
+       0xfe, 0xf4, 0x1c, 0x01, 0xfe, 0x00, 0x1d, 0x15, 0xfe, 0xe9, 0x00, 0x01,
+       0x0c, 0x06, 0x4a, 0xfe, 0x4e, 0x13, 0x01, 0xfe, 0x22, 0x1b, 0xfe, 0x1e,
        0x1c, 0x0f, 0xfe, 0x14, 0x90, 0x04, 0xfe, 0x94, 0x93, 0x3a, 0x0b, 0xfe,
-       0x96, 0x90, 0x04, 0xfe,
-       0x96, 0x93, 0x79, 0x0b, 0x0e, 0x10, 0xfe, 0x64, 0x01, 0x22, 0xfe, 0x66,
-       0x01, 0x01, 0x0c, 0x06,
-       0x65, 0xf9, 0x0f, 0xfe, 0x03, 0x80, 0x04, 0xfe, 0x83, 0x83, 0x33, 0x0b,
-       0x0e, 0x77, 0xfe, 0x01,
+       0x96, 0x90, 0x04, 0xfe, 0x96, 0x93, 0x79, 0x0b, 0x0e, 0x10, 0xfe, 0x64,
+       0x01, 0x22, 0xfe, 0x66, 0x01, 0x01, 0x0c, 0x06, 0x65, 0xf9, 0x0f, 0xfe,
+       0x03, 0x80, 0x04, 0xfe, 0x83, 0x83, 0x33, 0x0b, 0x0e, 0x77, 0xfe, 0x01,
        0xec, 0x2c, 0xfe, 0x80, 0x40, 0x20, 0x2c, 0x7a, 0x30, 0x15, 0xdf, 0x40,
-       0x21, 0x2c, 0xfe, 0x00,
-       0x40, 0x8d, 0x2c, 0x02, 0xfe, 0x08, 0x1c, 0x03, 0xfe, 0xac, 0x00, 0xfe,
-       0x06, 0x58, 0x03, 0xfe,
-       0xae, 0x00, 0xfe, 0x07, 0x58, 0x03, 0xfe, 0xb0, 0x00, 0xfe, 0x08, 0x58,
-       0x03, 0xfe, 0xb2, 0x00,
+       0x21, 0x2c, 0xfe, 0x00, 0x40, 0x8d, 0x2c, 0x02, 0xfe, 0x08, 0x1c, 0x03,
+       0xfe, 0xac, 0x00, 0xfe, 0x06, 0x58, 0x03, 0xfe, 0xae, 0x00, 0xfe, 0x07,
+       0x58, 0x03, 0xfe, 0xb0, 0x00, 0xfe, 0x08, 0x58, 0x03, 0xfe, 0xb2, 0x00,
        0xfe, 0x09, 0x58, 0xfe, 0x0a, 0x1c, 0x2e, 0x49, 0x20, 0xe0, 0x26, 0x10,
-       0x66, 0x10, 0x55, 0x10,
-       0x6f, 0x13, 0x57, 0x52, 0x4f, 0x1c, 0x28, 0xfe, 0x90, 0x4d, 0xfe, 0x91,
-       0x54, 0x2b, 0xfe, 0x88,
-       0x11, 0x46, 0x1a, 0x13, 0x5a, 0x52, 0x1c, 0x4a, 0xfe, 0x90, 0x4d, 0xfe,
-       0x91, 0x54, 0x2b, 0xfe,
+       0x66, 0x10, 0x55, 0x10, 0x6f, 0x13, 0x57, 0x52, 0x4f, 0x1c, 0x28, 0xfe,
+       0x90, 0x4d, 0xfe, 0x91, 0x54, 0x2b, 0xfe, 0x88, 0x11, 0x46, 0x1a, 0x13,
+       0x5a, 0x52, 0x1c, 0x4a, 0xfe, 0x90, 0x4d, 0xfe, 0x91, 0x54, 0x2b, 0xfe,
        0x9e, 0x11, 0x2e, 0x1a, 0x20, 0x2c, 0x90, 0x34, 0x60, 0x21, 0x2c, 0xfe,
-       0x00, 0x40, 0x8d, 0x2c,
-       0x15, 0xdf, 0xfe, 0x14, 0x56, 0xfe, 0xd6, 0xf0, 0xfe, 0xb2, 0x11, 0xfe,
-       0x12, 0x1c, 0x75, 0xfe,
-       0x14, 0x1c, 0xfe, 0x10, 0x1c, 0xfe, 0x18, 0x1c, 0x02, 0x51, 0xfe, 0x0c,
-       0x14, 0xfe, 0x0e, 0x47,
+       0x00, 0x40, 0x8d, 0x2c, 0x15, 0xdf, 0xfe, 0x14, 0x56, 0xfe, 0xd6, 0xf0,
+       0xfe, 0xb2, 0x11, 0xfe, 0x12, 0x1c, 0x75, 0xfe, 0x14, 0x1c, 0xfe, 0x10,
+       0x1c, 0xfe, 0x18, 0x1c, 0x02, 0x51, 0xfe, 0x0c, 0x14, 0xfe, 0x0e, 0x47,
        0xfe, 0x07, 0xe6, 0x28, 0xfe, 0xce, 0x47, 0xfe, 0xf5, 0x13, 0x02, 0x01,
-       0xa7, 0x90, 0x34, 0x60,
-       0xfe, 0x06, 0x80, 0xfe, 0x48, 0x47, 0xfe, 0x42, 0x13, 0xfe, 0x02, 0x80,
-       0x09, 0x56, 0xfe, 0x34,
-       0x13, 0x0a, 0x5a, 0x01, 0x18, 0xcb, 0xfe, 0x36, 0x12, 0xfe, 0x41, 0x48,
-       0xfe, 0x45, 0x48, 0x01,
+       0xa7, 0x90, 0x34, 0x60, 0xfe, 0x06, 0x80, 0xfe, 0x48, 0x47, 0xfe, 0x42,
+       0x13, 0xfe, 0x02, 0x80, 0x09, 0x56, 0xfe, 0x34, 0x13, 0x0a, 0x5a, 0x01,
+       0x18, 0xcb, 0xfe, 0x36, 0x12, 0xfe, 0x41, 0x48, 0xfe, 0x45, 0x48, 0x01,
        0xfe, 0xb2, 0x16, 0xfe, 0x00, 0xcc, 0xcb, 0xfe, 0xf3, 0x13, 0x3f, 0x89,
-       0x09, 0x1a, 0xa5, 0x0a,
-       0x9d, 0x01, 0x18, 0xfe, 0x80, 0x5c, 0x01, 0x85, 0xf2, 0x09, 0x9b, 0xa4,
-       0xfe, 0x14, 0x56, 0xfe,
-       0xd6, 0xf0, 0xfe, 0xec, 0x11, 0x02, 0xfe, 0x44, 0x58, 0x77, 0xfe, 0x01,
-       0xec, 0xb8, 0xfe, 0x9e,
+       0x09, 0x1a, 0xa5, 0x0a, 0x9d, 0x01, 0x18, 0xfe, 0x80, 0x5c, 0x01, 0x85,
+       0xf2, 0x09, 0x9b, 0xa4, 0xfe, 0x14, 0x56, 0xfe, 0xd6, 0xf0, 0xfe, 0xec,
+       0x11, 0x02, 0xfe, 0x44, 0x58, 0x77, 0xfe, 0x01, 0xec, 0xb8, 0xfe, 0x9e,
        0x40, 0xfe, 0x9d, 0xe7, 0x00, 0xfe, 0x9c, 0xe7, 0x12, 0x8d, 0x30, 0x01,
-       0xf4, 0xfe, 0xdd, 0x10,
-       0x37, 0xd7, 0x99, 0xd8, 0x9c, 0x27, 0x25, 0xee, 0x09, 0x12, 0xfe, 0x48,
-       0x12, 0x09, 0x0d, 0xfe,
-       0x56, 0x12, 0x09, 0x1d, 0xfe, 0x30, 0x12, 0x09, 0xdd, 0x1b, 0xfe, 0xc4,
-       0x13, 0x09, 0xfe, 0x23,
+       0xf4, 0xfe, 0xdd, 0x10, 0x37, 0xd7, 0x99, 0xd8, 0x9c, 0x27, 0x25, 0xee,
+       0x09, 0x12, 0xfe, 0x48, 0x12, 0x09, 0x0d, 0xfe, 0x56, 0x12, 0x09, 0x1d,
+       0xfe, 0x30, 0x12, 0x09, 0xdd, 0x1b, 0xfe, 0xc4, 0x13, 0x09, 0xfe, 0x23,
        0x00, 0x1b, 0xfe, 0xd0, 0x13, 0x09, 0x07, 0x1b, 0xfe, 0x34, 0x14, 0x09,
-       0x24, 0xfe, 0x12, 0x12,
-       0x09, 0x00, 0x1b, 0x29, 0x1f, 0xdd, 0x01, 0x42, 0xa1, 0x32, 0x01, 0x08,
-       0xae, 0x41, 0x02, 0x32,
-       0xfe, 0x62, 0x08, 0x0a, 0xe1, 0x01, 0xfe, 0x58, 0x10, 0x15, 0x9b, 0x05,
-       0x35, 0x32, 0x01, 0x43,
+       0x24, 0xfe, 0x12, 0x12, 0x09, 0x00, 0x1b, 0x29, 0x1f, 0xdd, 0x01, 0x42,
+       0xa1, 0x32, 0x01, 0x08, 0xae, 0x41, 0x02, 0x32, 0xfe, 0x62, 0x08, 0x0a,
+       0xe1, 0x01, 0xfe, 0x58, 0x10, 0x15, 0x9b, 0x05, 0x35, 0x32, 0x01, 0x43,
        0x09, 0xbb, 0xfe, 0xd7, 0x13, 0x91, 0x4b, 0x7e, 0x4c, 0x8e, 0xfe, 0x80,
-       0x13, 0x01, 0x0c, 0x06,
-       0x54, 0xfe, 0x72, 0x12, 0xdb, 0x64, 0xdc, 0x34, 0xfe, 0x44, 0x55, 0xfe,
-       0xe5, 0x55, 0xb0, 0xfe,
-       0x4a, 0x13, 0x21, 0x6e, 0xfe, 0x26, 0x13, 0x03, 0x97, 0x3b, 0x98, 0x8e,
-       0xfe, 0xb6, 0x0e, 0x10,
+       0x13, 0x01, 0x0c, 0x06, 0x54, 0xfe, 0x72, 0x12, 0xdb, 0x64, 0xdc, 0x34,
+       0xfe, 0x44, 0x55, 0xfe, 0xe5, 0x55, 0xb0, 0xfe, 0x4a, 0x13, 0x21, 0x6e,
+       0xfe, 0x26, 0x13, 0x03, 0x97, 0x3b, 0x98, 0x8e, 0xfe, 0xb6, 0x0e, 0x10,
        0x6a, 0x22, 0x6b, 0x26, 0x10, 0x97, 0x10, 0x98, 0x01, 0xc2, 0x2e, 0x49,
-       0x88, 0x20, 0x6e, 0x01,
-       0xfe, 0x6a, 0x16, 0xdb, 0x64, 0xdc, 0x34, 0xfe, 0x04, 0x55, 0xfe, 0xa5,
-       0x55, 0xfe, 0x04, 0xfa,
-       0x64, 0xfe, 0x05, 0xfa, 0x34, 0xfe, 0x8f, 0x10, 0x03, 0x6c, 0x3b, 0x6d,
-       0xfe, 0x40, 0x56, 0xfe,
+       0x88, 0x20, 0x6e, 0x01, 0xfe, 0x6a, 0x16, 0xdb, 0x64, 0xdc, 0x34, 0xfe,
+       0x04, 0x55, 0xfe, 0xa5, 0x55, 0xfe, 0x04, 0xfa, 0x64, 0xfe, 0x05, 0xfa,
+       0x34, 0xfe, 0x8f, 0x10, 0x03, 0x6c, 0x3b, 0x6d, 0xfe, 0x40, 0x56, 0xfe,
        0xe1, 0x56, 0x10, 0x6c, 0x22, 0x6d, 0x71, 0xdb, 0x64, 0xdc, 0x34, 0xfe,
-       0x44, 0x55, 0xfe, 0xe5,
-       0x55, 0x03, 0x68, 0x3b, 0x69, 0xfe, 0x00, 0x56, 0xfe, 0xa1, 0x56, 0x10,
-       0x68, 0x22, 0x69, 0x01,
-       0x0c, 0x06, 0x54, 0xf9, 0x21, 0x6e, 0xfe, 0x1f, 0x40, 0x03, 0x6a, 0x3b,
-       0x6b, 0xfe, 0x2c, 0x50,
+       0x44, 0x55, 0xfe, 0xe5, 0x55, 0x03, 0x68, 0x3b, 0x69, 0xfe, 0x00, 0x56,
+       0xfe, 0xa1, 0x56, 0x10, 0x68, 0x22, 0x69, 0x01, 0x0c, 0x06, 0x54, 0xf9,
+       0x21, 0x6e, 0xfe, 0x1f, 0x40, 0x03, 0x6a, 0x3b, 0x6b, 0xfe, 0x2c, 0x50,
        0xfe, 0xae, 0x50, 0x03, 0x6c, 0x3b, 0x6d, 0xfe, 0x44, 0x50, 0xfe, 0xc6,
-       0x50, 0x03, 0x68, 0x3b,
-       0x69, 0xfe, 0x08, 0x50, 0xfe, 0x8a, 0x50, 0x03, 0x4b, 0x3b, 0x4c, 0xfe,
-       0x40, 0x50, 0xfe, 0xc2,
-       0x50, 0x05, 0x73, 0x2e, 0x07, 0x20, 0x9e, 0x05, 0x72, 0x32, 0x01, 0x08,
-       0x16, 0x3d, 0x27, 0x25,
+       0x50, 0x03, 0x68, 0x3b, 0x69, 0xfe, 0x08, 0x50, 0xfe, 0x8a, 0x50, 0x03,
+       0x4b, 0x3b, 0x4c, 0xfe, 0x40, 0x50, 0xfe, 0xc2, 0x50, 0x05, 0x73, 0x2e,
+       0x07, 0x20, 0x9e, 0x05, 0x72, 0x32, 0x01, 0x08, 0x16, 0x3d, 0x27, 0x25,
        0xee, 0x09, 0x07, 0x2b, 0x3d, 0x01, 0x43, 0x09, 0xbb, 0x2b, 0x72, 0x01,
-       0xa6, 0x23, 0x3f, 0x1b,
-       0x3d, 0x01, 0x0c, 0x06, 0x0d, 0xfe, 0x1e, 0x13, 0x91, 0x4b, 0x7e, 0x4c,
-       0xfe, 0x0a, 0x55, 0x31,
-       0xfe, 0x8b, 0x55, 0xd9, 0x4b, 0xda, 0x4c, 0xfe, 0x0c, 0x51, 0xfe, 0x8e,
-       0x51, 0x05, 0x72, 0x01,
+       0xa6, 0x23, 0x3f, 0x1b, 0x3d, 0x01, 0x0c, 0x06, 0x0d, 0xfe, 0x1e, 0x13,
+       0x91, 0x4b, 0x7e, 0x4c, 0xfe, 0x0a, 0x55, 0x31, 0xfe, 0x8b, 0x55, 0xd9,
+       0x4b, 0xda, 0x4c, 0xfe, 0x0c, 0x51, 0xfe, 0x8e, 0x51, 0x05, 0x72, 0x01,
        0xfe, 0x8e, 0x1e, 0xca, 0xfe, 0x19, 0x41, 0x05, 0x72, 0x32, 0x01, 0x08,
-       0x2a, 0x3c, 0x16, 0xc0,
-       0x27, 0x25, 0xbe, 0x2d, 0x1d, 0xc0, 0x2d, 0x0d, 0x83, 0x2d, 0x7f, 0x1b,
-       0xfe, 0x66, 0x15, 0x05,
-       0x3d, 0x01, 0x08, 0x2a, 0x3c, 0x16, 0xc0, 0x27, 0x25, 0xbd, 0x09, 0x1d,
-       0x2b, 0x3d, 0x01, 0x08,
+       0x2a, 0x3c, 0x16, 0xc0, 0x27, 0x25, 0xbe, 0x2d, 0x1d, 0xc0, 0x2d, 0x0d,
+       0x83, 0x2d, 0x7f, 0x1b, 0xfe, 0x66, 0x15, 0x05, 0x3d, 0x01, 0x08, 0x2a,
+       0x3c, 0x16, 0xc0, 0x27, 0x25, 0xbd, 0x09, 0x1d, 0x2b, 0x3d, 0x01, 0x08,
        0x16, 0xc0, 0x27, 0x25, 0xfe, 0xe8, 0x09, 0xfe, 0xc2, 0x49, 0x50, 0x03,
-       0xb6, 0x1e, 0x83, 0x01,
-       0x38, 0x06, 0x24, 0x31, 0xa1, 0xfe, 0xbb, 0x45, 0x2d, 0x00, 0xa4, 0x46,
-       0x07, 0x90, 0x3f, 0x01,
-       0xfe, 0xf8, 0x15, 0x01, 0xa6, 0x86, 0xfe, 0x4b, 0x45, 0xfe, 0x20, 0x13,
-       0x01, 0x43, 0x09, 0x82,
+       0xb6, 0x1e, 0x83, 0x01, 0x38, 0x06, 0x24, 0x31, 0xa1, 0xfe, 0xbb, 0x45,
+       0x2d, 0x00, 0xa4, 0x46, 0x07, 0x90, 0x3f, 0x01, 0xfe, 0xf8, 0x15, 0x01,
+       0xa6, 0x86, 0xfe, 0x4b, 0x45, 0xfe, 0x20, 0x13, 0x01, 0x43, 0x09, 0x82,
        0xfe, 0x16, 0x13, 0x03, 0x9a, 0x1e, 0x5d, 0x03, 0x55, 0x1e, 0x31, 0x5e,
-       0x05, 0x72, 0xfe, 0xc0,
-       0x5d, 0x01, 0xa7, 0xfe, 0x03, 0x17, 0x03, 0x66, 0x8a, 0x10, 0x66, 0x5e,
-       0x32, 0x01, 0x08, 0x17,
-       0x73, 0x01, 0xfe, 0x56, 0x19, 0x05, 0x73, 0x01, 0x08, 0x2a, 0x3c, 0x16,
-       0x3d, 0x27, 0x25, 0xbd,
+       0x05, 0x72, 0xfe, 0xc0, 0x5d, 0x01, 0xa7, 0xfe, 0x03, 0x17, 0x03, 0x66,
+       0x8a, 0x10, 0x66, 0x5e, 0x32, 0x01, 0x08, 0x17, 0x73, 0x01, 0xfe, 0x56,
+       0x19, 0x05, 0x73, 0x01, 0x08, 0x2a, 0x3c, 0x16, 0x3d, 0x27, 0x25, 0xbd,
        0x09, 0x07, 0x2b, 0x3d, 0x01, 0xfe, 0xbe, 0x16, 0xfe, 0x42, 0x58, 0xfe,
-       0xe8, 0x14, 0x01, 0xa6,
-       0x86, 0xfe, 0x4a, 0xf4, 0x0d, 0x1b, 0x3d, 0xfe, 0x4a, 0xf4, 0x07, 0xfe,
-       0x0e, 0x12, 0x01, 0x43,
-       0x09, 0x82, 0x4e, 0x05, 0x72, 0x03, 0x55, 0x8a, 0x10, 0x55, 0x5e, 0x32,
-       0x01, 0x08, 0x17, 0x73,
+       0xe8, 0x14, 0x01, 0xa6, 0x86, 0xfe, 0x4a, 0xf4, 0x0d, 0x1b, 0x3d, 0xfe,
+       0x4a, 0xf4, 0x07, 0xfe, 0x0e, 0x12, 0x01, 0x43, 0x09, 0x82, 0x4e, 0x05,
+       0x72, 0x03, 0x55, 0x8a, 0x10, 0x55, 0x5e, 0x32, 0x01, 0x08, 0x17, 0x73,
        0x01, 0xfe, 0x84, 0x19, 0x05, 0x73, 0x01, 0x08, 0x2a, 0x3c, 0x16, 0x3d,
-       0x27, 0x25, 0xbd, 0x09,
-       0x12, 0x2b, 0x3d, 0x01, 0xfe, 0xe8, 0x17, 0x8b, 0xfe, 0xaa, 0x14, 0xfe,
-       0xb6, 0x14, 0x86, 0xa8,
-       0xb2, 0x0d, 0x1b, 0x3d, 0xb2, 0x07, 0xfe, 0x0e, 0x12, 0x01, 0x43, 0x09,
-       0x82, 0x4e, 0x05, 0x72,
+       0x27, 0x25, 0xbd, 0x09, 0x12, 0x2b, 0x3d, 0x01, 0xfe, 0xe8, 0x17, 0x8b,
+       0xfe, 0xaa, 0x14, 0xfe, 0xb6, 0x14, 0x86, 0xa8, 0xb2, 0x0d, 0x1b, 0x3d,
+       0xb2, 0x07, 0xfe, 0x0e, 0x12, 0x01, 0x43, 0x09, 0x82, 0x4e, 0x05, 0x72,
        0x03, 0x6f, 0x8a, 0x10, 0x6f, 0x5e, 0x32, 0x01, 0x08, 0x17, 0x73, 0x01,
-       0xfe, 0xc0, 0x19, 0x05,
-       0x73, 0x13, 0x07, 0x2f, 0xfe, 0xcc, 0x15, 0x17, 0xfe, 0xe2, 0x15, 0x5f,
-       0xcc, 0x01, 0x08, 0x26,
-       0x5f, 0x02, 0x8f, 0xfe, 0xde, 0x15, 0x2a, 0xfe, 0xde, 0x15, 0x16, 0xfe,
-       0xcc, 0x15, 0x5e, 0x32,
+       0xfe, 0xc0, 0x19, 0x05, 0x73, 0x13, 0x07, 0x2f, 0xfe, 0xcc, 0x15, 0x17,
+       0xfe, 0xe2, 0x15, 0x5f, 0xcc, 0x01, 0x08, 0x26, 0x5f, 0x02, 0x8f, 0xfe,
+       0xde, 0x15, 0x2a, 0xfe, 0xde, 0x15, 0x16, 0xfe, 0xcc, 0x15, 0x5e, 0x32,
        0x01, 0x08, 0xfe, 0xd5, 0x10, 0x13, 0x58, 0xff, 0x02, 0x00, 0x57, 0x52,
-       0xad, 0x23, 0xfe, 0xff,
-       0x7f, 0xfe, 0x30, 0x56, 0xfe, 0x00, 0x5c, 0x02, 0x13, 0x58, 0xff, 0x02,
-       0x00, 0x57, 0x52, 0xad,
-       0x23, 0x3f, 0xfe, 0x30, 0x56, 0xfe, 0x00, 0x5c, 0x02, 0x13, 0x58, 0xff,
-       0x02, 0x00, 0x57, 0x52,
+       0xad, 0x23, 0xfe, 0xff, 0x7f, 0xfe, 0x30, 0x56, 0xfe, 0x00, 0x5c, 0x02,
+       0x13, 0x58, 0xff, 0x02, 0x00, 0x57, 0x52, 0xad, 0x23, 0x3f, 0xfe, 0x30,
+       0x56, 0xfe, 0x00, 0x5c, 0x02, 0x13, 0x58, 0xff, 0x02, 0x00, 0x57, 0x52,
        0xad, 0x02, 0x13, 0x58, 0xff, 0x02, 0x00, 0x57, 0x52, 0xfe, 0x00, 0x5e,
-       0x02, 0x13, 0x58, 0xff,
-       0x02, 0x00, 0x57, 0x52, 0xad, 0xfe, 0x0b, 0x58, 0x02, 0x0a, 0x66, 0x01,
-       0x5c, 0x0a, 0x55, 0x01,
-       0x5c, 0x0a, 0x6f, 0x01, 0x5c, 0x02, 0x01, 0xfe, 0x1e, 0x1f, 0x23, 0x1a,
-       0xff, 0x03, 0x00, 0x54,
+       0x02, 0x13, 0x58, 0xff, 0x02, 0x00, 0x57, 0x52, 0xad, 0xfe, 0x0b, 0x58,
+       0x02, 0x0a, 0x66, 0x01, 0x5c, 0x0a, 0x55, 0x01, 0x5c, 0x0a, 0x6f, 0x01,
+       0x5c, 0x02, 0x01, 0xfe, 0x1e, 0x1f, 0x23, 0x1a, 0xff, 0x03, 0x00, 0x54,
        0xfe, 0x00, 0xf4, 0x24, 0x52, 0x0f, 0xfe, 0x00, 0x7c, 0x04, 0xfe, 0x07,
-       0x7c, 0x3a, 0x0b, 0x0e,
-       0xfe, 0x00, 0x71, 0xfe, 0xf9, 0x18, 0xfe, 0x7a, 0x19, 0xfe, 0xfb, 0x19,
-       0xfe, 0x1a, 0xf7, 0x00,
-       0xfe, 0x1b, 0xf7, 0x00, 0x7a, 0x30, 0x10, 0x68, 0x22, 0x69, 0xd9, 0x6c,
-       0xda, 0x6d, 0x02, 0xfe,
+       0x7c, 0x3a, 0x0b, 0x0e, 0xfe, 0x00, 0x71, 0xfe, 0xf9, 0x18, 0xfe, 0x7a,
+       0x19, 0xfe, 0xfb, 0x19, 0xfe, 0x1a, 0xf7, 0x00, 0xfe, 0x1b, 0xf7, 0x00,
+       0x7a, 0x30, 0x10, 0x68, 0x22, 0x69, 0xd9, 0x6c, 0xda, 0x6d, 0x02, 0xfe,
        0x62, 0x08, 0xfe, 0x82, 0x4a, 0xfe, 0xe1, 0x1a, 0xfe, 0x83, 0x5a, 0x77,
-       0x02, 0x01, 0xc6, 0xfe,
-       0x42, 0x48, 0x4f, 0x50, 0x45, 0x01, 0x08, 0x16, 0xfe, 0xe0, 0x17, 0x27,
-       0x25, 0xbe, 0x01, 0x08,
-       0x16, 0xfe, 0xe0, 0x17, 0x27, 0x25, 0xfe, 0xe8, 0x0a, 0xfe, 0xc1, 0x59,
-       0x03, 0x9a, 0x1e, 0xfe,
+       0x02, 0x01, 0xc6, 0xfe, 0x42, 0x48, 0x4f, 0x50, 0x45, 0x01, 0x08, 0x16,
+       0xfe, 0xe0, 0x17, 0x27, 0x25, 0xbe, 0x01, 0x08, 0x16, 0xfe, 0xe0, 0x17,
+       0x27, 0x25, 0xfe, 0xe8, 0x0a, 0xfe, 0xc1, 0x59, 0x03, 0x9a, 0x1e, 0xfe,
        0xda, 0x12, 0x01, 0x38, 0x06, 0x12, 0xfe, 0xd0, 0x13, 0x26, 0x53, 0x12,
-       0x48, 0xfe, 0x08, 0x17,
-       0xd1, 0x12, 0x53, 0x12, 0xfe, 0x1e, 0x13, 0x2d, 0xb4, 0x7b, 0xfe, 0x26,
-       0x17, 0x4d, 0x13, 0x07,
-       0x1c, 0xb4, 0x90, 0x04, 0xfe, 0x78, 0x10, 0xff, 0x02, 0x83, 0x55, 0xf1,
-       0xff, 0x02, 0x83, 0x55,
+       0x48, 0xfe, 0x08, 0x17, 0xd1, 0x12, 0x53, 0x12, 0xfe, 0x1e, 0x13, 0x2d,
+       0xb4, 0x7b, 0xfe, 0x26, 0x17, 0x4d, 0x13, 0x07, 0x1c, 0xb4, 0x90, 0x04,
+       0xfe, 0x78, 0x10, 0xff, 0x02, 0x83, 0x55, 0xf1, 0xff, 0x02, 0x83, 0x55,
        0x53, 0x1d, 0xfe, 0x12, 0x13, 0xd6, 0xfe, 0x30, 0x00, 0xb0, 0xfe, 0x80,
-       0x17, 0x1c, 0x63, 0x13,
-       0x07, 0xfe, 0x56, 0x10, 0x53, 0x0d, 0xfe, 0x16, 0x13, 0xd6, 0xfe, 0x64,
-       0x00, 0xb0, 0xfe, 0x80,
-       0x17, 0x0a, 0xfe, 0x64, 0x00, 0x1c, 0x94, 0x13, 0x07, 0xfe, 0x28, 0x10,
-       0x53, 0x07, 0xfe, 0x60,
+       0x17, 0x1c, 0x63, 0x13, 0x07, 0xfe, 0x56, 0x10, 0x53, 0x0d, 0xfe, 0x16,
+       0x13, 0xd6, 0xfe, 0x64, 0x00, 0xb0, 0xfe, 0x80, 0x17, 0x0a, 0xfe, 0x64,
+       0x00, 0x1c, 0x94, 0x13, 0x07, 0xfe, 0x28, 0x10, 0x53, 0x07, 0xfe, 0x60,
        0x13, 0xd6, 0xfe, 0xc8, 0x00, 0xb0, 0xfe, 0x80, 0x17, 0x0a, 0xfe, 0xc8,
-       0x00, 0x1c, 0x95, 0x13,
-       0x07, 0x71, 0xd6, 0xfe, 0x90, 0x01, 0x48, 0xfe, 0x8c, 0x17, 0x45, 0xf3,
-       0xfe, 0x43, 0xf4, 0x96,
-       0xfe, 0x56, 0xf0, 0xfe, 0x9e, 0x17, 0xfe, 0x04, 0xf4, 0x58, 0xfe, 0x43,
-       0xf4, 0x94, 0xf6, 0x8b,
+       0x00, 0x1c, 0x95, 0x13, 0x07, 0x71, 0xd6, 0xfe, 0x90, 0x01, 0x48, 0xfe,
+       0x8c, 0x17, 0x45, 0xf3, 0xfe, 0x43, 0xf4, 0x96, 0xfe, 0x56, 0xf0, 0xfe,
+       0x9e, 0x17, 0xfe, 0x04, 0xf4, 0x58, 0xfe, 0x43, 0xf4, 0x94, 0xf6, 0x8b,
        0x01, 0xfe, 0x24, 0x16, 0x23, 0x3f, 0xfc, 0xa8, 0x8c, 0x49, 0x48, 0xfe,
-       0xda, 0x17, 0x62, 0x49,
-       0xfe, 0x1c, 0x10, 0xa8, 0x8c, 0x80, 0x48, 0xfe, 0xda, 0x17, 0x62, 0x80,
-       0x71, 0x50, 0x26, 0xfe,
-       0x4d, 0xf4, 0x00, 0xf7, 0x45, 0x13, 0x07, 0xfe, 0xb4, 0x56, 0xfe, 0xc3,
-       0x58, 0x02, 0x50, 0x13,
+       0xda, 0x17, 0x62, 0x49, 0xfe, 0x1c, 0x10, 0xa8, 0x8c, 0x80, 0x48, 0xfe,
+       0xda, 0x17, 0x62, 0x80, 0x71, 0x50, 0x26, 0xfe, 0x4d, 0xf4, 0x00, 0xf7,
+       0x45, 0x13, 0x07, 0xfe, 0xb4, 0x56, 0xfe, 0xc3, 0x58, 0x02, 0x50, 0x13,
        0x0d, 0x02, 0x50, 0x3e, 0x78, 0x4f, 0x45, 0x01, 0x08, 0x16, 0xa9, 0x27,
-       0x25, 0xbe, 0xfe, 0x03,
-       0xea, 0xfe, 0x7e, 0x01, 0x01, 0x08, 0x16, 0xa9, 0x27, 0x25, 0xfe, 0xe9,
-       0x0a, 0x01, 0x08, 0x16,
-       0xa9, 0x27, 0x25, 0xfe, 0xe9, 0x0a, 0xfe, 0x05, 0xea, 0xfe, 0x7f, 0x01,
-       0x01, 0x08, 0x16, 0xa9,
+       0x25, 0xbe, 0xfe, 0x03, 0xea, 0xfe, 0x7e, 0x01, 0x01, 0x08, 0x16, 0xa9,
+       0x27, 0x25, 0xfe, 0xe9, 0x0a, 0x01, 0x08, 0x16, 0xa9, 0x27, 0x25, 0xfe,
+       0xe9, 0x0a, 0xfe, 0x05, 0xea, 0xfe, 0x7f, 0x01, 0x01, 0x08, 0x16, 0xa9,
        0x27, 0x25, 0xfe, 0x69, 0x09, 0xfe, 0x02, 0xea, 0xfe, 0x80, 0x01, 0x01,
-       0x08, 0x16, 0xa9, 0x27,
-       0x25, 0xfe, 0xe8, 0x08, 0x47, 0xfe, 0x81, 0x01, 0x03, 0xb6, 0x1e, 0x83,
-       0x01, 0x38, 0x06, 0x24,
-       0x31, 0xa2, 0x78, 0xf2, 0x53, 0x07, 0x36, 0xfe, 0x34, 0xf4, 0x3f, 0xa1,
-       0x78, 0x03, 0x9a, 0x1e,
+       0x08, 0x16, 0xa9, 0x27, 0x25, 0xfe, 0xe8, 0x08, 0x47, 0xfe, 0x81, 0x01,
+       0x03, 0xb6, 0x1e, 0x83, 0x01, 0x38, 0x06, 0x24, 0x31, 0xa2, 0x78, 0xf2,
+       0x53, 0x07, 0x36, 0xfe, 0x34, 0xf4, 0x3f, 0xa1, 0x78, 0x03, 0x9a, 0x1e,
        0x83, 0x01, 0x38, 0x06, 0x12, 0x31, 0xf0, 0x4f, 0x45, 0xfe, 0x90, 0x10,
-       0xfe, 0x40, 0x5a, 0x23,
-       0x3f, 0xfb, 0x8c, 0x49, 0x48, 0xfe, 0xaa, 0x18, 0x62, 0x49, 0x71, 0x8c,
-       0x80, 0x48, 0xfe, 0xaa,
-       0x18, 0x62, 0x80, 0xfe, 0xb4, 0x56, 0xfe, 0x40, 0x5d, 0x01, 0xc6, 0x01,
-       0xfe, 0xac, 0x1d, 0xfe,
+       0xfe, 0x40, 0x5a, 0x23, 0x3f, 0xfb, 0x8c, 0x49, 0x48, 0xfe, 0xaa, 0x18,
+       0x62, 0x49, 0x71, 0x8c, 0x80, 0x48, 0xfe, 0xaa, 0x18, 0x62, 0x80, 0xfe,
+       0xb4, 0x56, 0xfe, 0x40, 0x5d, 0x01, 0xc6, 0x01, 0xfe, 0xac, 0x1d, 0xfe,
        0x02, 0x17, 0xfe, 0xc8, 0x45, 0xfe, 0x5a, 0xf0, 0xfe, 0xc0, 0x18, 0xfe,
-       0x43, 0x48, 0x2d, 0x93,
-       0x36, 0xfe, 0x34, 0xf4, 0xfe, 0x00, 0x11, 0xfe, 0x40, 0x10, 0x2d, 0xb4,
-       0x36, 0xfe, 0x34, 0xf4,
-       0x04, 0xfe, 0x34, 0x10, 0x2d, 0xfe, 0x0b, 0x00, 0x36, 0x46, 0x63, 0xfe,
-       0x28, 0x10, 0xfe, 0xc0,
+       0x43, 0x48, 0x2d, 0x93, 0x36, 0xfe, 0x34, 0xf4, 0xfe, 0x00, 0x11, 0xfe,
+       0x40, 0x10, 0x2d, 0xb4, 0x36, 0xfe, 0x34, 0xf4, 0x04, 0xfe, 0x34, 0x10,
+       0x2d, 0xfe, 0x0b, 0x00, 0x36, 0x46, 0x63, 0xfe, 0x28, 0x10, 0xfe, 0xc0,
        0x49, 0xff, 0x02, 0x00, 0x54, 0xb2, 0xfe, 0x90, 0x01, 0x48, 0xfe, 0xfa,
-       0x18, 0x45, 0xfe, 0x1c,
-       0xf4, 0x3f, 0xf3, 0xfe, 0x40, 0xf4, 0x96, 0xfe, 0x56, 0xf0, 0xfe, 0x0c,
-       0x19, 0xfe, 0x04, 0xf4,
-       0x58, 0xfe, 0x40, 0xf4, 0x94, 0xf6, 0x3e, 0x2d, 0x93, 0x4e, 0xd0, 0x0d,
-       0x21, 0xfe, 0x7f, 0x01,
+       0x18, 0x45, 0xfe, 0x1c, 0xf4, 0x3f, 0xf3, 0xfe, 0x40, 0xf4, 0x96, 0xfe,
+       0x56, 0xf0, 0xfe, 0x0c, 0x19, 0xfe, 0x04, 0xf4, 0x58, 0xfe, 0x40, 0xf4,
+       0x94, 0xf6, 0x3e, 0x2d, 0x93, 0x4e, 0xd0, 0x0d, 0x21, 0xfe, 0x7f, 0x01,
        0xfe, 0xc8, 0x46, 0xfe, 0x24, 0x13, 0x8c, 0x00, 0x5d, 0x26, 0x21, 0xfe,
-       0x7e, 0x01, 0xfe, 0xc8,
-       0x45, 0xfe, 0x14, 0x13, 0x21, 0xfe, 0x80, 0x01, 0xfe, 0x48, 0x45, 0xfa,
-       0x21, 0xfe, 0x81, 0x01,
-       0xfe, 0xc8, 0x44, 0x4e, 0x26, 0x02, 0x13, 0x07, 0x02, 0x78, 0x45, 0x50,
-       0x13, 0x0d, 0x02, 0x14,
+       0x7e, 0x01, 0xfe, 0xc8, 0x45, 0xfe, 0x14, 0x13, 0x21, 0xfe, 0x80, 0x01,
+       0xfe, 0x48, 0x45, 0xfa, 0x21, 0xfe, 0x81, 0x01, 0xfe, 0xc8, 0x44, 0x4e,
+       0x26, 0x02, 0x13, 0x07, 0x02, 0x78, 0x45, 0x50, 0x13, 0x0d, 0x02, 0x14,
        0x07, 0x01, 0x08, 0x17, 0xfe, 0x82, 0x19, 0x14, 0x0d, 0x01, 0x08, 0x17,
-       0xfe, 0x82, 0x19, 0x14,
-       0x1d, 0x01, 0x08, 0x17, 0xfe, 0x82, 0x19, 0x5f, 0xfe, 0x89, 0x49, 0x01,
-       0x08, 0x02, 0x14, 0x07,
-       0x01, 0x08, 0x17, 0xc1, 0x14, 0x1d, 0x01, 0x08, 0x17, 0xc1, 0x14, 0x07,
-       0x01, 0x08, 0x17, 0xc1,
+       0xfe, 0x82, 0x19, 0x14, 0x1d, 0x01, 0x08, 0x17, 0xfe, 0x82, 0x19, 0x5f,
+       0xfe, 0x89, 0x49, 0x01, 0x08, 0x02, 0x14, 0x07, 0x01, 0x08, 0x17, 0xc1,
+       0x14, 0x1d, 0x01, 0x08, 0x17, 0xc1, 0x14, 0x07, 0x01, 0x08, 0x17, 0xc1,
        0xfe, 0x89, 0x49, 0x01, 0x08, 0x17, 0xc1, 0x5f, 0xfe, 0x89, 0x4a, 0x01,
-       0x08, 0x02, 0x50, 0x02,
-       0x14, 0x07, 0x01, 0x08, 0x17, 0x74, 0x14, 0x7f, 0x01, 0x08, 0x17, 0x74,
-       0x14, 0x12, 0x01, 0x08,
-       0x17, 0x74, 0xfe, 0x89, 0x49, 0x01, 0x08, 0x17, 0x74, 0x14, 0x00, 0x01,
-       0x08, 0x17, 0x74, 0xfe,
+       0x08, 0x02, 0x50, 0x02, 0x14, 0x07, 0x01, 0x08, 0x17, 0x74, 0x14, 0x7f,
+       0x01, 0x08, 0x17, 0x74, 0x14, 0x12, 0x01, 0x08, 0x17, 0x74, 0xfe, 0x89,
+       0x49, 0x01, 0x08, 0x17, 0x74, 0x14, 0x00, 0x01, 0x08, 0x17, 0x74, 0xfe,
        0x89, 0x4a, 0x01, 0x08, 0x17, 0x74, 0xfe, 0x09, 0x49, 0x01, 0x08, 0x17,
-       0x74, 0x5f, 0xcc, 0x01,
-       0x08, 0x02, 0x21, 0xe4, 0x09, 0x07, 0xfe, 0x4c, 0x13, 0xc8, 0x20, 0xe4,
-       0xfe, 0x49, 0xf4, 0x00,
-       0x4d, 0x5f, 0xa1, 0x5e, 0xfe, 0x01, 0xec, 0xfe, 0x27, 0x01, 0xcc, 0xff,
-       0x02, 0x00, 0x10, 0x2f,
+       0x74, 0x5f, 0xcc, 0x01, 0x08, 0x02, 0x21, 0xe4, 0x09, 0x07, 0xfe, 0x4c,
+       0x13, 0xc8, 0x20, 0xe4, 0xfe, 0x49, 0xf4, 0x00, 0x4d, 0x5f, 0xa1, 0x5e,
+       0xfe, 0x01, 0xec, 0xfe, 0x27, 0x01, 0xcc, 0xff, 0x02, 0x00, 0x10, 0x2f,
        0xfe, 0x3e, 0x1a, 0x01, 0x43, 0x09, 0xfe, 0xe3, 0x00, 0xfe, 0x22, 0x13,
-       0x16, 0xfe, 0x64, 0x1a,
-       0x26, 0x20, 0x9e, 0x01, 0x41, 0x21, 0x9e, 0x09, 0x07, 0x5d, 0x01, 0x0c,
-       0x61, 0x07, 0x44, 0x02,
-       0x0a, 0x5a, 0x01, 0x18, 0xfe, 0x00, 0x40, 0xaa, 0x09, 0x1a, 0xfe, 0x12,
-       0x13, 0x0a, 0x9d, 0x01,
+       0x16, 0xfe, 0x64, 0x1a, 0x26, 0x20, 0x9e, 0x01, 0x41, 0x21, 0x9e, 0x09,
+       0x07, 0x5d, 0x01, 0x0c, 0x61, 0x07, 0x44, 0x02, 0x0a, 0x5a, 0x01, 0x18,
+       0xfe, 0x00, 0x40, 0xaa, 0x09, 0x1a, 0xfe, 0x12, 0x13, 0x0a, 0x9d, 0x01,
        0x18, 0xaa, 0x0a, 0x67, 0x01, 0xa3, 0x02, 0x0a, 0x9d, 0x01, 0x18, 0xaa,
-       0xfe, 0x80, 0xe7, 0x1a,
-       0x09, 0x1a, 0x5d, 0xfe, 0x45, 0x58, 0x01, 0xfe, 0xb2, 0x16, 0xaa, 0x02,
-       0x0a, 0x5a, 0x01, 0x18,
-       0xaa, 0x0a, 0x67, 0x01, 0xa3, 0x02, 0x0a, 0x5a, 0x01, 0x18, 0x01, 0xfe,
-       0x7e, 0x1e, 0xfe, 0x80,
+       0xfe, 0x80, 0xe7, 0x1a, 0x09, 0x1a, 0x5d, 0xfe, 0x45, 0x58, 0x01, 0xfe,
+       0xb2, 0x16, 0xaa, 0x02, 0x0a, 0x5a, 0x01, 0x18, 0xaa, 0x0a, 0x67, 0x01,
+       0xa3, 0x02, 0x0a, 0x5a, 0x01, 0x18, 0x01, 0xfe, 0x7e, 0x1e, 0xfe, 0x80,
        0x4c, 0xfe, 0x49, 0xe4, 0x1a, 0xfe, 0x12, 0x13, 0x0a, 0x9d, 0x01, 0x18,
-       0xfe, 0x80, 0x4c, 0x0a,
-       0x67, 0x01, 0x5c, 0x02, 0x1c, 0x1a, 0x87, 0x7c, 0xe5, 0xfe, 0x18, 0xdf,
-       0xfe, 0x19, 0xde, 0xfe,
-       0x24, 0x1c, 0xfe, 0x1d, 0xf7, 0x28, 0xb1, 0xfe, 0x04, 0x1b, 0x01, 0xfe,
-       0x2a, 0x1c, 0xfa, 0xb3,
+       0xfe, 0x80, 0x4c, 0x0a, 0x67, 0x01, 0x5c, 0x02, 0x1c, 0x1a, 0x87, 0x7c,
+       0xe5, 0xfe, 0x18, 0xdf, 0xfe, 0x19, 0xde, 0xfe, 0x24, 0x1c, 0xfe, 0x1d,
+       0xf7, 0x28, 0xb1, 0xfe, 0x04, 0x1b, 0x01, 0xfe, 0x2a, 0x1c, 0xfa, 0xb3,
        0x28, 0x7c, 0xfe, 0x2c, 0x01, 0xfe, 0x2f, 0x19, 0x02, 0xc9, 0x2b, 0xfe,
-       0xf4, 0x1a, 0xfe, 0xfa,
-       0x10, 0x1c, 0x1a, 0x87, 0x03, 0xfe, 0x64, 0x01, 0xfe, 0x00, 0xf4, 0x24,
-       0xfe, 0x18, 0x58, 0x03,
-       0xfe, 0x66, 0x01, 0xfe, 0x19, 0x58, 0xb3, 0x24, 0x01, 0xfe, 0x0e, 0x1f,
-       0xfe, 0x30, 0xf4, 0x07,
+       0xf4, 0x1a, 0xfe, 0xfa, 0x10, 0x1c, 0x1a, 0x87, 0x03, 0xfe, 0x64, 0x01,
+       0xfe, 0x00, 0xf4, 0x24, 0xfe, 0x18, 0x58, 0x03, 0xfe, 0x66, 0x01, 0xfe,
+       0x19, 0x58, 0xb3, 0x24, 0x01, 0xfe, 0x0e, 0x1f, 0xfe, 0x30, 0xf4, 0x07,
        0xfe, 0x3c, 0x50, 0x7c, 0xfe, 0x38, 0x00, 0xfe, 0x0f, 0x79, 0xfe, 0x1c,
-       0xf7, 0x24, 0xb1, 0xfe,
-       0x50, 0x1b, 0xfe, 0xd4, 0x14, 0x31, 0x02, 0xc9, 0x2b, 0xfe, 0x26, 0x1b,
-       0xfe, 0xba, 0x10, 0x1c,
-       0x1a, 0x87, 0xfe, 0x83, 0x5a, 0xfe, 0x18, 0xdf, 0xfe, 0x19, 0xde, 0xfe,
-       0x1d, 0xf7, 0x54, 0xb1,
+       0xf7, 0x24, 0xb1, 0xfe, 0x50, 0x1b, 0xfe, 0xd4, 0x14, 0x31, 0x02, 0xc9,
+       0x2b, 0xfe, 0x26, 0x1b, 0xfe, 0xba, 0x10, 0x1c, 0x1a, 0x87, 0xfe, 0x83,
+       0x5a, 0xfe, 0x18, 0xdf, 0xfe, 0x19, 0xde, 0xfe, 0x1d, 0xf7, 0x54, 0xb1,
        0xfe, 0x72, 0x1b, 0xfe, 0xb2, 0x14, 0xfc, 0xb3, 0x54, 0x7c, 0x12, 0xfe,
-       0xaf, 0x19, 0xfe, 0x98,
-       0xe7, 0x00, 0x02, 0xc9, 0x2b, 0xfe, 0x66, 0x1b, 0xfe, 0x8a, 0x10, 0x1c,
-       0x1a, 0x87, 0x8b, 0x0f,
-       0xfe, 0x30, 0x90, 0x04, 0xfe, 0xb0, 0x93, 0x3a, 0x0b, 0xfe, 0x18, 0x58,
-       0xfe, 0x32, 0x90, 0x04,
+       0xaf, 0x19, 0xfe, 0x98, 0xe7, 0x00, 0x02, 0xc9, 0x2b, 0xfe, 0x66, 0x1b,
+       0xfe, 0x8a, 0x10, 0x1c, 0x1a, 0x87, 0x8b, 0x0f, 0xfe, 0x30, 0x90, 0x04,
+       0xfe, 0xb0, 0x93, 0x3a, 0x0b, 0xfe, 0x18, 0x58, 0xfe, 0x32, 0x90, 0x04,
        0xfe, 0xb2, 0x93, 0x3a, 0x0b, 0xfe, 0x19, 0x58, 0x0e, 0xa8, 0xb3, 0x4a,
-       0x7c, 0x12, 0xfe, 0x0f,
-       0x79, 0xfe, 0x1c, 0xf7, 0x4a, 0xb1, 0xfe, 0xc6, 0x1b, 0xfe, 0x5e, 0x14,
-       0x31, 0x02, 0xc9, 0x2b,
-       0xfe, 0x96, 0x1b, 0x5c, 0xfe, 0x02, 0xf6, 0x1a, 0x87, 0xfe, 0x18, 0xfe,
-       0x6a, 0xfe, 0x19, 0xfe,
+       0x7c, 0x12, 0xfe, 0x0f, 0x79, 0xfe, 0x1c, 0xf7, 0x4a, 0xb1, 0xfe, 0xc6,
+       0x1b, 0xfe, 0x5e, 0x14, 0x31, 0x02, 0xc9, 0x2b, 0xfe, 0x96, 0x1b, 0x5c,
+       0xfe, 0x02, 0xf6, 0x1a, 0x87, 0xfe, 0x18, 0xfe, 0x6a, 0xfe, 0x19, 0xfe,
        0x6b, 0x01, 0xfe, 0x1e, 0x1f, 0xfe, 0x1d, 0xf7, 0x65, 0xb1, 0xfe, 0xee,
-       0x1b, 0xfe, 0x36, 0x14,
-       0xfe, 0x1c, 0x13, 0xb3, 0x65, 0x3e, 0xfe, 0x83, 0x58, 0xfe, 0xaf, 0x19,
-       0xfe, 0x80, 0xe7, 0x1a,
-       0xfe, 0x81, 0xe7, 0x1a, 0x15, 0xfe, 0xdd, 0x00, 0x7a, 0x30, 0x02, 0x7a,
-       0x30, 0xfe, 0x12, 0x45,
+       0x1b, 0xfe, 0x36, 0x14, 0xfe, 0x1c, 0x13, 0xb3, 0x65, 0x3e, 0xfe, 0x83,
+       0x58, 0xfe, 0xaf, 0x19, 0xfe, 0x80, 0xe7, 0x1a, 0xfe, 0x81, 0xe7, 0x1a,
+       0x15, 0xfe, 0xdd, 0x00, 0x7a, 0x30, 0x02, 0x7a, 0x30, 0xfe, 0x12, 0x45,
        0x2b, 0xfe, 0xdc, 0x1b, 0x1f, 0x07, 0x47, 0xb5, 0xc3, 0x05, 0x35, 0xfe,
-       0x39, 0xf0, 0x75, 0x26,
-       0x02, 0xfe, 0x7e, 0x18, 0x23, 0x1d, 0x36, 0x13, 0x11, 0x02, 0x87, 0x03,
-       0xe3, 0x23, 0x07, 0xfe,
-       0xef, 0x12, 0xfe, 0xe1, 0x10, 0x90, 0x34, 0x60, 0xfe, 0x02, 0x80, 0x09,
-       0x56, 0xfe, 0x3c, 0x13,
+       0x39, 0xf0, 0x75, 0x26, 0x02, 0xfe, 0x7e, 0x18, 0x23, 0x1d, 0x36, 0x13,
+       0x11, 0x02, 0x87, 0x03, 0xe3, 0x23, 0x07, 0xfe, 0xef, 0x12, 0xfe, 0xe1,
+       0x10, 0x90, 0x34, 0x60, 0xfe, 0x02, 0x80, 0x09, 0x56, 0xfe, 0x3c, 0x13,
        0xfe, 0x82, 0x14, 0xfe, 0x42, 0x13, 0x51, 0xfe, 0x06, 0x83, 0x0a, 0x5a,
-       0x01, 0x18, 0xcb, 0xfe,
-       0x3e, 0x12, 0xfe, 0x41, 0x48, 0xfe, 0x45, 0x48, 0x01, 0xfe, 0xb2, 0x16,
-       0xfe, 0x00, 0xcc, 0xcb,
-       0xfe, 0xf3, 0x13, 0x3f, 0x89, 0x09, 0x1a, 0xa5, 0x0a, 0x9d, 0x01, 0x18,
-       0xfe, 0x80, 0x4c, 0x01,
+       0x01, 0x18, 0xcb, 0xfe, 0x3e, 0x12, 0xfe, 0x41, 0x48, 0xfe, 0x45, 0x48,
+       0x01, 0xfe, 0xb2, 0x16, 0xfe, 0x00, 0xcc, 0xcb, 0xfe, 0xf3, 0x13, 0x3f,
+       0x89, 0x09, 0x1a, 0xa5, 0x0a, 0x9d, 0x01, 0x18, 0xfe, 0x80, 0x4c, 0x01,
        0x85, 0xfe, 0x16, 0x10, 0x09, 0x9b, 0x4e, 0xfe, 0x40, 0x14, 0xfe, 0x24,
-       0x12, 0xfe, 0x14, 0x56,
-       0xfe, 0xd6, 0xf0, 0xfe, 0x52, 0x1c, 0x1c, 0x0d, 0x02, 0xfe, 0x9c, 0xe7,
-       0x0d, 0x19, 0xfe, 0x15,
-       0x00, 0x40, 0x8d, 0x30, 0x01, 0xf4, 0x1c, 0x07, 0x02, 0x51, 0xfe, 0x06,
-       0x83, 0xfe, 0x18, 0x80,
+       0x12, 0xfe, 0x14, 0x56, 0xfe, 0xd6, 0xf0, 0xfe, 0x52, 0x1c, 0x1c, 0x0d,
+       0x02, 0xfe, 0x9c, 0xe7, 0x0d, 0x19, 0xfe, 0x15, 0x00, 0x40, 0x8d, 0x30,
+       0x01, 0xf4, 0x1c, 0x07, 0x02, 0x51, 0xfe, 0x06, 0x83, 0xfe, 0x18, 0x80,
        0x61, 0x28, 0x44, 0x15, 0x56, 0x01, 0x85, 0x1c, 0x07, 0x02, 0xfe, 0x38,
-       0x90, 0xfe, 0xba, 0x90,
-       0x91, 0xde, 0x7e, 0xdf, 0xfe, 0x48, 0x55, 0x31, 0xfe, 0xc9, 0x55, 0x02,
-       0x21, 0xb9, 0x88, 0x20,
-       0xb9, 0x02, 0x0a, 0xba, 0x01, 0x18, 0xfe, 0x41, 0x48, 0x0a, 0x57, 0x01,
-       0x18, 0xfe, 0x49, 0x44,
+       0x90, 0xfe, 0xba, 0x90, 0x91, 0xde, 0x7e, 0xdf, 0xfe, 0x48, 0x55, 0x31,
+       0xfe, 0xc9, 0x55, 0x02, 0x21, 0xb9, 0x88, 0x20, 0xb9, 0x02, 0x0a, 0xba,
+       0x01, 0x18, 0xfe, 0x41, 0x48, 0x0a, 0x57, 0x01, 0x18, 0xfe, 0x49, 0x44,
        0x1b, 0xfe, 0x1e, 0x1d, 0x88, 0x89, 0x02, 0x0a, 0x5a, 0x01, 0x18, 0x09,
-       0x1a, 0xa4, 0x0a, 0x67,
-       0x01, 0xa3, 0x0a, 0x57, 0x01, 0x18, 0x88, 0x89, 0x02, 0xfe, 0x4e, 0xe4,
-       0x1d, 0x7b, 0xfe, 0x52,
-       0x1d, 0x03, 0xfe, 0x90, 0x00, 0xfe, 0x3a, 0x45, 0xfe, 0x2c, 0x10, 0xfe,
-       0x4e, 0xe4, 0xdd, 0x7b,
+       0x1a, 0xa4, 0x0a, 0x67, 0x01, 0xa3, 0x0a, 0x57, 0x01, 0x18, 0x88, 0x89,
+       0x02, 0xfe, 0x4e, 0xe4, 0x1d, 0x7b, 0xfe, 0x52, 0x1d, 0x03, 0xfe, 0x90,
+       0x00, 0xfe, 0x3a, 0x45, 0xfe, 0x2c, 0x10, 0xfe, 0x4e, 0xe4, 0xdd, 0x7b,
        0xfe, 0x64, 0x1d, 0x03, 0xfe, 0x92, 0x00, 0xd1, 0x12, 0xfe, 0x1a, 0x10,
-       0xfe, 0x4e, 0xe4, 0xfe,
-       0x0b, 0x00, 0x7b, 0xfe, 0x76, 0x1d, 0x03, 0xfe, 0x94, 0x00, 0xd1, 0x24,
-       0xfe, 0x08, 0x10, 0x03,
-       0xfe, 0x96, 0x00, 0xd1, 0x63, 0xfe, 0x4e, 0x45, 0x83, 0xca, 0xff, 0x04,
-       0x68, 0x54, 0xfe, 0xf1,
+       0xfe, 0x4e, 0xe4, 0xfe, 0x0b, 0x00, 0x7b, 0xfe, 0x76, 0x1d, 0x03, 0xfe,
+       0x94, 0x00, 0xd1, 0x24, 0xfe, 0x08, 0x10, 0x03, 0xfe, 0x96, 0x00, 0xd1,
+       0x63, 0xfe, 0x4e, 0x45, 0x83, 0xca, 0xff, 0x04, 0x68, 0x54, 0xfe, 0xf1,
        0x10, 0x23, 0x49, 0xfe, 0x08, 0x1c, 0xfe, 0x67, 0x19, 0xfe, 0x0a, 0x1c,
-       0xfe, 0x1a, 0xf4, 0xfe,
-       0x00, 0x04, 0x83, 0xb2, 0x1d, 0x48, 0xfe, 0xaa, 0x1d, 0x13, 0x1d, 0x02,
-       0x09, 0x92, 0xfe, 0x5a,
-       0xf0, 0xfe, 0xba, 0x1d, 0x2e, 0x93, 0xfe, 0x34, 0x10, 0x09, 0x12, 0xfe,
-       0x5a, 0xf0, 0xfe, 0xc8,
+       0xfe, 0x1a, 0xf4, 0xfe, 0x00, 0x04, 0x83, 0xb2, 0x1d, 0x48, 0xfe, 0xaa,
+       0x1d, 0x13, 0x1d, 0x02, 0x09, 0x92, 0xfe, 0x5a, 0xf0, 0xfe, 0xba, 0x1d,
+       0x2e, 0x93, 0xfe, 0x34, 0x10, 0x09, 0x12, 0xfe, 0x5a, 0xf0, 0xfe, 0xc8,
        0x1d, 0x2e, 0xb4, 0xfe, 0x26, 0x10, 0x09, 0x1d, 0x36, 0x2e, 0x63, 0xfe,
-       0x1a, 0x10, 0x09, 0x0d,
-       0x36, 0x2e, 0x94, 0xf2, 0x09, 0x07, 0x36, 0x2e, 0x95, 0xa1, 0xc8, 0x02,
-       0x1f, 0x93, 0x01, 0x42,
-       0xfe, 0x04, 0xfe, 0x99, 0x03, 0x9c, 0x8b, 0x02, 0x2a, 0xfe, 0x1c, 0x1e,
-       0xfe, 0x14, 0xf0, 0x08,
+       0x1a, 0x10, 0x09, 0x0d, 0x36, 0x2e, 0x94, 0xf2, 0x09, 0x07, 0x36, 0x2e,
+       0x95, 0xa1, 0xc8, 0x02, 0x1f, 0x93, 0x01, 0x42, 0xfe, 0x04, 0xfe, 0x99,
+       0x03, 0x9c, 0x8b, 0x02, 0x2a, 0xfe, 0x1c, 0x1e, 0xfe, 0x14, 0xf0, 0x08,
        0x2f, 0xfe, 0x0c, 0x1e, 0x2a, 0xfe, 0x1c, 0x1e, 0x8f, 0xfe, 0x1c, 0x1e,
-       0xfe, 0x82, 0xf0, 0xfe,
-       0x10, 0x1e, 0x02, 0x0f, 0x3f, 0x04, 0xfe, 0x80, 0x83, 0x33, 0x0b, 0x0e,
-       0x02, 0x0f, 0xfe, 0x18,
-       0x80, 0x04, 0xfe, 0x98, 0x83, 0x33, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x02,
-       0x80, 0x04, 0xfe, 0x82,
+       0xfe, 0x82, 0xf0, 0xfe, 0x10, 0x1e, 0x02, 0x0f, 0x3f, 0x04, 0xfe, 0x80,
+       0x83, 0x33, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x18, 0x80, 0x04, 0xfe, 0x98,
+       0x83, 0x33, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x02, 0x80, 0x04, 0xfe, 0x82,
        0x83, 0x33, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x06, 0x80, 0x04, 0xfe, 0x86,
-       0x83, 0x33, 0x0b, 0x0e,
-       0x02, 0x0f, 0xfe, 0x1b, 0x80, 0x04, 0xfe, 0x9b, 0x83, 0x33, 0x0b, 0x0e,
-       0x02, 0x0f, 0xfe, 0x04,
-       0x80, 0x04, 0xfe, 0x84, 0x83, 0x33, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x80,
-       0x80, 0x04, 0xfe, 0x80,
+       0x83, 0x33, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x1b, 0x80, 0x04, 0xfe, 0x9b,
+       0x83, 0x33, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x04, 0x80, 0x04, 0xfe, 0x84,
+       0x83, 0x33, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x80, 0x80, 0x04, 0xfe, 0x80,
        0x83, 0xfe, 0xc9, 0x47, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x19, 0x81, 0x04,
-       0xfe, 0x99, 0x83, 0xfe,
-       0xca, 0x47, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x06, 0x83, 0x04, 0xfe, 0x86,
-       0x83, 0xfe, 0xce, 0x47,
-       0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x2c, 0x90, 0x04, 0xfe, 0xac, 0x93, 0x3a,
-       0x0b, 0x0e, 0x02, 0x0f,
+       0xfe, 0x99, 0x83, 0xfe, 0xca, 0x47, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x06,
+       0x83, 0x04, 0xfe, 0x86, 0x83, 0xfe, 0xce, 0x47, 0x0b, 0x0e, 0x02, 0x0f,
+       0xfe, 0x2c, 0x90, 0x04, 0xfe, 0xac, 0x93, 0x3a, 0x0b, 0x0e, 0x02, 0x0f,
        0xfe, 0xae, 0x90, 0x04, 0xfe, 0xae, 0x93, 0x79, 0x0b, 0x0e, 0x02, 0x0f,
-       0xfe, 0x08, 0x90, 0x04,
-       0xfe, 0x88, 0x93, 0x3a, 0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x8a, 0x90, 0x04,
-       0xfe, 0x8a, 0x93, 0x79,
-       0x0b, 0x0e, 0x02, 0x0f, 0xfe, 0x0c, 0x90, 0x04, 0xfe, 0x8c, 0x93, 0x3a,
-       0x0b, 0x0e, 0x02, 0x0f,
+       0xfe, 0x08, 0x90, 0x04, 0xfe, 0x88, 0x93, 0x3a, 0x0b, 0x0e, 0x02, 0x0f,
+       0xfe, 0x8a, 0x90, 0x04, 0xfe, 0x8a, 0x93, 0x79, 0x0b, 0x0e, 0x02, 0x0f,
+       0xfe, 0x0c, 0x90, 0x04, 0xfe, 0x8c, 0x93, 0x3a, 0x0b, 0x0e, 0x02, 0x0f,
        0xfe, 0x8e, 0x90, 0x04, 0xfe, 0x8e, 0x93, 0x79, 0x0b, 0x0e, 0x02, 0x0f,
-       0xfe, 0x3c, 0x90, 0x04,
-       0xfe, 0xbc, 0x93, 0x3a, 0x0b, 0x0e, 0x02, 0x8b, 0x0f, 0xfe, 0x03, 0x80,
-       0x04, 0xfe, 0x83, 0x83,
-       0x33, 0x0b, 0x77, 0x0e, 0xa8, 0x02, 0xff, 0x66, 0x00, 0x00,
+       0xfe, 0x3c, 0x90, 0x04, 0xfe, 0xbc, 0x93, 0x3a, 0x0b, 0x0e, 0x02, 0x8b,
+       0x0f, 0xfe, 0x03, 0x80, 0x04, 0xfe, 0x83, 0x83, 0x33, 0x0b, 0x77, 0x0e,
+       0xa8, 0x02, 0xff, 0x66, 0x00, 0x00,
 };
 
 static unsigned short _adv_asc38C1600_size = sizeof(_adv_asc38C1600_buf);      /* 0x1673 */
 static ADV_DCNT _adv_asc38C1600_chksum = 0x0604EF77UL; /* Expanded little-endian checksum. */
 
-/* a_init.c */
 /*
  * EEPROM Configuration.
  *
@@ -13632,6 +11038,7 @@ static ADVEEP_38C1600_CONFIG ADVEEP_38C1600_Config_Field_IsChar __devinitdata =
        0                       /* 63 reserved */
 };
 
+#ifdef CONFIG_PCI
 /*
  * Initialize the ADV_DVC_VAR structure.
  *
@@ -13640,11 +11047,12 @@ static ADVEEP_38C1600_CONFIG ADVEEP_38C1600_Config_Field_IsChar __devinitdata =
  * For a non-fatal error return a warning code. If there are no warnings
  * then 0 is returned.
  */
-static int __devinit AdvInitGetConfig(ADV_DVC_VAR *asc_dvc)
+static int __devinit
+AdvInitGetConfig(struct pci_dev *pdev, asc_board_t *boardp)
 {
+       ADV_DVC_VAR *asc_dvc = &boardp->dvc_var.adv_dvc_var;
        unsigned short warn_code = 0;
        AdvPortAddr iop_base = asc_dvc->iop_base;
-       struct pci_dev *pdev = to_pci_dev(asc_dvc->cfg->dev);
        u16 cmd;
        int status;
 
@@ -13696,7 +11104,7 @@ static int __devinit AdvInitGetConfig(ADV_DVC_VAR *asc_dvc)
                 */
                AdvWriteWordRegister(iop_base, IOPW_CTRL_REG,
                                     ADV_CTRL_REG_CMD_RESET);
-               DvcSleepMilliSecond(100);
+               mdelay(100);
                AdvWriteWordRegister(iop_base, IOPW_CTRL_REG,
                                     ADV_CTRL_REG_CMD_WR_IO_REG);
 
@@ -13710,7 +11118,140 @@ static int __devinit AdvInitGetConfig(ADV_DVC_VAR *asc_dvc)
                warn_code |= status;
        }
 
-       return warn_code;
+       if (warn_code != 0) {
+               ASC_PRINT2("AdvInitGetConfig: board %d: warning: 0x%x\n",
+                          boardp->id, warn_code);
+       }
+
+       if (asc_dvc->err_code) {
+               ASC_PRINT2("AdvInitGetConfig: board %d error: err_code 0x%x\n",
+                    boardp->id, asc_dvc->err_code);
+       }
+
+       return asc_dvc->err_code;
+}
+#endif
+
+static void AdvBuildCarrierFreelist(struct adv_dvc_var *asc_dvc)
+{
+       ADV_CARR_T *carrp;
+       ADV_SDCNT buf_size;
+       ADV_PADDR carr_paddr;
+
+       BUG_ON(!asc_dvc->carrier_buf);
+
+       carrp = (ADV_CARR_T *) ADV_16BALIGN(asc_dvc->carrier_buf);
+       asc_dvc->carr_freelist = NULL;
+       if (carrp == asc_dvc->carrier_buf) {
+               buf_size = ADV_CARRIER_BUFSIZE;
+       } else {
+               buf_size = ADV_CARRIER_BUFSIZE - sizeof(ADV_CARR_T);
+       }
+
+       do {
+               /* Get physical address of the carrier 'carrp'. */
+               ADV_DCNT contig_len = sizeof(ADV_CARR_T);
+               carr_paddr = cpu_to_le32(DvcGetPhyAddr(asc_dvc, NULL,
+                                                      (uchar *)carrp,
+                                                      (ADV_SDCNT *)&contig_len,
+                                                      ADV_IS_CARRIER_FLAG));
+
+               buf_size -= sizeof(ADV_CARR_T);
+
+               /*
+                * If the current carrier is not physically contiguous, then
+                * maybe there was a page crossing. Try the next carrier
+                * aligned start address.
+                */
+               if (contig_len < sizeof(ADV_CARR_T)) {
+                       carrp++;
+                       continue;
+               }
+
+               carrp->carr_pa = carr_paddr;
+               carrp->carr_va = cpu_to_le32(ADV_VADDR_TO_U32(carrp));
+
+               /*
+                * Insert the carrier at the beginning of the freelist.
+                */
+               carrp->next_vpa =
+                       cpu_to_le32(ADV_VADDR_TO_U32(asc_dvc->carr_freelist));
+               asc_dvc->carr_freelist = carrp;
+
+               carrp++;
+       } while (buf_size > 0);
+}
+
+/*
+ * Load the Microcode
+ *
+ * Write the microcode image to RISC memory starting at address 0.
+ *
+ * The microcode is stored compressed in the following format:
+ *
+ *  254 word (508 byte) table indexed by byte code followed
+ *  by the following byte codes:
+ *
+ *    1-Byte Code:
+ *      00: Emit word 0 in table.
+ *      01: Emit word 1 in table.
+ *      .
+ *      FD: Emit word 253 in table.
+ *
+ *    Multi-Byte Code:
+ *      FE WW WW: (3 byte code) Word to emit is the next word WW WW.
+ *      FF BB WW WW: (4 byte code) Emit BB count times next word WW WW.
+ *
+ * Returns 0 or an error if the checksum doesn't match
+ */
+static int AdvLoadMicrocode(AdvPortAddr iop_base, unsigned char *buf, int size,
+                           int memsize, int chksum)
+{
+       int i, j, end, len = 0;
+       ADV_DCNT sum;
+
+       AdvWriteWordRegister(iop_base, IOPW_RAM_ADDR, 0);
+
+       for (i = 253 * 2; i < size; i++) {
+               if (buf[i] == 0xff) {
+                       unsigned short word = (buf[i + 3] << 8) | buf[i + 2];
+                       for (j = 0; j < buf[i + 1]; j++) {
+                               AdvWriteWordAutoIncLram(iop_base, word);
+                               len += 2;
+                       }
+                       i += 3;
+               } else if (buf[i] == 0xfe) {
+                       unsigned short word = (buf[i + 2] << 8) | buf[i + 1];
+                       AdvWriteWordAutoIncLram(iop_base, word);
+                       i += 2;
+                       len += 2;
+               } else {
+                       unsigned char off = buf[i] * 2;
+                       unsigned short word = (buf[off + 1] << 8) | buf[off];
+                       AdvWriteWordAutoIncLram(iop_base, word);
+                       len += 2;
+               }
+       }
+
+       end = len;
+
+       while (len < memsize) {
+               AdvWriteWordAutoIncLram(iop_base, 0);
+               len += 2;
+       }
+
+       /* Verify the microcode checksum. */
+       sum = 0;
+       AdvWriteWordRegister(iop_base, IOPW_RAM_ADDR, 0);
+
+       for (len = 0; len < end; len += 2) {
+               sum += AdvReadWordAutoIncLram(iop_base);
+       }
+
+       if (sum != chksum)
+               return ASC_IERR_MCODE_CHKSUM;
+
+       return 0;
 }
 
 /*
@@ -13727,17 +11268,10 @@ static int AdvInitAsc3550Driver(ADV_DVC_VAR *asc_dvc)
 {
        AdvPortAddr iop_base;
        ushort warn_code;
-       ADV_DCNT sum;
        int begin_addr;
        int end_addr;
        ushort code_sum;
        int word;
-       int j;
-       int adv_asc3550_expanded_size;
-       ADV_CARR_T *carrp;
-       ADV_DCNT contig_len;
-       ADV_SDCNT buf_size;
-       ADV_PADDR carr_paddr;
        int i;
        ushort scsi_cfg1;
        uchar tid;
@@ -13746,15 +11280,14 @@ static int AdvInitAsc3550Driver(ADV_DVC_VAR *asc_dvc)
        uchar max_cmd[ADV_MAX_TID + 1];
 
        /* If there is already an error, don't continue. */
-       if (asc_dvc->err_code != 0) {
+       if (asc_dvc->err_code != 0)
                return ADV_ERROR;
-       }
 
        /*
         * The caller must set 'chip_type' to ADV_CHIP_ASC3550.
         */
        if (asc_dvc->chip_type != ADV_CHIP_ASC3550) {
-               asc_dvc->err_code |= ASC_IERR_BAD_CHIPTYPE;
+               asc_dvc->err_code = ASC_IERR_BAD_CHIPTYPE;
                return ADV_ERROR;
        }
 
@@ -13798,84 +11331,11 @@ static int AdvInitAsc3550Driver(ADV_DVC_VAR *asc_dvc)
                                max_cmd[tid]);
        }
 
-       /*
-        * Load the Microcode
-        *
-        * Write the microcode image to RISC memory starting at address 0.
-        */
-       AdvWriteWordRegister(iop_base, IOPW_RAM_ADDR, 0);
-       /* Assume the following compressed format of the microcode buffer:
-        *
-        *  254 word (508 byte) table indexed by byte code followed
-        *  by the following byte codes:
-        *
-        *    1-Byte Code:
-        *      00: Emit word 0 in table.
-        *      01: Emit word 1 in table.
-        *      .
-        *      FD: Emit word 253 in table.
-        *
-        *    Multi-Byte Code:
-        *      FE WW WW: (3 byte code) Word to emit is the next word WW WW.
-        *      FF BB WW WW: (4 byte code) Emit BB count times next word WW WW.
-        */
-       word = 0;
-       for (i = 253 * 2; i < _adv_asc3550_size; i++) {
-               if (_adv_asc3550_buf[i] == 0xff) {
-                       for (j = 0; j < _adv_asc3550_buf[i + 1]; j++) {
-                               AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                                   _adv_asc3550_buf
-                                                                   [i +
-                                                                    3] << 8) |
-                                                                  _adv_asc3550_buf
-                                                                  [i + 2]));
-                               word++;
-                       }
-                       i += 3;
-               } else if (_adv_asc3550_buf[i] == 0xfe) {
-                       AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                           _adv_asc3550_buf[i +
-                                                                            2]
-                                                           << 8) |
-                                                          _adv_asc3550_buf[i +
-                                                                           1]));
-                       i += 2;
-                       word++;
-               } else {
-                       AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                           _adv_asc3550_buf[(_adv_asc3550_buf[i] * 2) + 1] << 8) | _adv_asc3550_buf[_adv_asc3550_buf[i] * 2]));
-                       word++;
-               }
-       }
-
-       /*
-        * Set 'word' for later use to clear the rest of memory and save
-        * the expanded mcode size.
-        */
-       word *= 2;
-       adv_asc3550_expanded_size = word;
-
-       /*
-        * Clear the rest of ASC-3550 Internal RAM (8KB).
-        */
-       for (; word < ADV_3550_MEMSIZE; word += 2) {
-               AdvWriteWordAutoIncLram(iop_base, 0);
-       }
-
-       /*
-        * Verify the microcode checksum.
-        */
-       sum = 0;
-       AdvWriteWordRegister(iop_base, IOPW_RAM_ADDR, 0);
-
-       for (word = 0; word < adv_asc3550_expanded_size; word += 2) {
-               sum += AdvReadWordAutoIncLram(iop_base);
-       }
-
-       if (sum != _adv_asc3550_chksum) {
-               asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM;
+       asc_dvc->err_code = AdvLoadMicrocode(iop_base, _adv_asc3550_buf,
+                                       _adv_asc3550_size, ADV_3550_MEMSIZE,
+                                       _adv_asc3550_chksum);
+       if (asc_dvc->err_code)
                return ADV_ERROR;
-       }
 
        /*
         * Restore the RISC memory BIOS region.
@@ -14139,57 +11599,7 @@ static int AdvInitAsc3550Driver(ADV_DVC_VAR *asc_dvc)
        AdvWriteWordLram(iop_base, ASC_MC_DEFAULT_SEL_MASK,
                         ADV_TID_TO_TIDMASK(asc_dvc->chip_scsi_id));
 
-       /*
-        * Build carrier freelist.
-        *
-        * Driver must have already allocated memory and set 'carrier_buf'.
-        */
-       ASC_ASSERT(asc_dvc->carrier_buf != NULL);
-
-       carrp = (ADV_CARR_T *) ADV_16BALIGN(asc_dvc->carrier_buf);
-       asc_dvc->carr_freelist = NULL;
-       if (carrp == (ADV_CARR_T *) asc_dvc->carrier_buf) {
-               buf_size = ADV_CARRIER_BUFSIZE;
-       } else {
-               buf_size = ADV_CARRIER_BUFSIZE - sizeof(ADV_CARR_T);
-       }
-
-       do {
-               /*
-                * Get physical address of the carrier 'carrp'.
-                */
-               contig_len = sizeof(ADV_CARR_T);
-               carr_paddr =
-                   cpu_to_le32(DvcGetPhyAddr
-                               (asc_dvc, NULL, (uchar *)carrp,
-                                (ADV_SDCNT *)&contig_len,
-                                ADV_IS_CARRIER_FLAG));
-
-               buf_size -= sizeof(ADV_CARR_T);
-
-               /*
-                * If the current carrier is not physically contiguous, then
-                * maybe there was a page crossing. Try the next carrier aligned
-                * start address.
-                */
-               if (contig_len < sizeof(ADV_CARR_T)) {
-                       carrp++;
-                       continue;
-               }
-
-               carrp->carr_pa = carr_paddr;
-               carrp->carr_va = cpu_to_le32(ADV_VADDR_TO_U32(carrp));
-
-               /*
-                * Insert the carrier at the beginning of the freelist.
-                */
-               carrp->next_vpa =
-                   cpu_to_le32(ADV_VADDR_TO_U32(asc_dvc->carr_freelist));
-               asc_dvc->carr_freelist = carrp;
-
-               carrp++;
-       }
-       while (buf_size > 0);
+       AdvBuildCarrierFreelist(asc_dvc);
 
        /*
         * Set-up the Host->RISC Initiator Command Queue (ICQ).
@@ -14296,17 +11706,10 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc)
 {
        AdvPortAddr iop_base;
        ushort warn_code;
-       ADV_DCNT sum;
        int begin_addr;
        int end_addr;
        ushort code_sum;
        int word;
-       int j;
-       int adv_asc38C0800_expanded_size;
-       ADV_CARR_T *carrp;
-       ADV_DCNT contig_len;
-       ADV_SDCNT buf_size;
-       ADV_PADDR carr_paddr;
        int i;
        ushort scsi_cfg1;
        uchar byte;
@@ -14316,9 +11719,8 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc)
        uchar max_cmd[ADV_MAX_TID + 1];
 
        /* If there is already an error, don't continue. */
-       if (asc_dvc->err_code != 0) {
+       if (asc_dvc->err_code != 0)
                return ADV_ERROR;
-       }
 
        /*
         * The caller must set 'chip_type' to ADV_CHIP_ASC38C0800.
@@ -14386,19 +11788,19 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc)
         */
        for (i = 0; i < 2; i++) {
                AdvWriteByteRegister(iop_base, IOPB_RAM_BIST, PRE_TEST_MODE);
-               DvcSleepMilliSecond(10);        /* Wait for 10ms before reading back. */
+               mdelay(10);     /* Wait for 10ms before reading back. */
                byte = AdvReadByteRegister(iop_base, IOPB_RAM_BIST);
                if ((byte & RAM_TEST_DONE) == 0
                    || (byte & 0x0F) != PRE_TEST_VALUE) {
-                       asc_dvc->err_code |= ASC_IERR_BIST_PRE_TEST;
+                       asc_dvc->err_code = ASC_IERR_BIST_PRE_TEST;
                        return ADV_ERROR;
                }
 
                AdvWriteByteRegister(iop_base, IOPB_RAM_BIST, NORMAL_MODE);
-               DvcSleepMilliSecond(10);        /* Wait for 10ms before reading back. */
+               mdelay(10);     /* Wait for 10ms before reading back. */
                if (AdvReadByteRegister(iop_base, IOPB_RAM_BIST)
                    != NORMAL_VALUE) {
-                       asc_dvc->err_code |= ASC_IERR_BIST_PRE_TEST;
+                       asc_dvc->err_code = ASC_IERR_BIST_PRE_TEST;
                        return ADV_ERROR;
                }
        }
@@ -14411,105 +11813,24 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc)
         * err_code, and return an error.
         */
        AdvWriteByteRegister(iop_base, IOPB_RAM_BIST, RAM_TEST_MODE);
-       DvcSleepMilliSecond(10);        /* Wait for 10ms before checking status. */
+       mdelay(10);     /* Wait for 10ms before checking status. */
 
        byte = AdvReadByteRegister(iop_base, IOPB_RAM_BIST);
        if ((byte & RAM_TEST_DONE) == 0 || (byte & RAM_TEST_STATUS) != 0) {
                /* Get here if Done bit not set or Status not 0. */
                asc_dvc->bist_err_code = byte;  /* for BIOS display message */
-               asc_dvc->err_code |= ASC_IERR_BIST_RAM_TEST;
+               asc_dvc->err_code = ASC_IERR_BIST_RAM_TEST;
                return ADV_ERROR;
        }
 
        /* We need to reset back to normal mode after LRAM test passes. */
        AdvWriteByteRegister(iop_base, IOPB_RAM_BIST, NORMAL_MODE);
 
-       /*
-        * Load the Microcode
-        *
-        * Write the microcode image to RISC memory starting at address 0.
-        *
-        */
-       AdvWriteWordRegister(iop_base, IOPW_RAM_ADDR, 0);
-
-       /* Assume the following compressed format of the microcode buffer:
-        *
-        *  254 word (508 byte) table indexed by byte code followed
-        *  by the following byte codes:
-        *
-        *    1-Byte Code:
-        *      00: Emit word 0 in table.
-        *      01: Emit word 1 in table.
-        *      .
-        *      FD: Emit word 253 in table.
-        *
-        *    Multi-Byte Code:
-        *      FE WW WW: (3 byte code) Word to emit is the next word WW WW.
-        *      FF BB WW WW: (4 byte code) Emit BB count times next word WW WW.
-        */
-       word = 0;
-       for (i = 253 * 2; i < _adv_asc38C0800_size; i++) {
-               if (_adv_asc38C0800_buf[i] == 0xff) {
-                       for (j = 0; j < _adv_asc38C0800_buf[i + 1]; j++) {
-                               AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                                   _adv_asc38C0800_buf
-                                                                   [i +
-                                                                    3] << 8) |
-                                                                  _adv_asc38C0800_buf
-                                                                  [i + 2]));
-                               word++;
-                       }
-                       i += 3;
-               } else if (_adv_asc38C0800_buf[i] == 0xfe) {
-                       AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                           _adv_asc38C0800_buf
-                                                           [i +
-                                                            2] << 8) |
-                                                          _adv_asc38C0800_buf[i
-                                                                              +
-                                                                              1]));
-                       i += 2;
-                       word++;
-               } else {
-                       AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                           _adv_asc38C0800_buf[(_adv_asc38C0800_buf[i] * 2) + 1] << 8) | _adv_asc38C0800_buf[_adv_asc38C0800_buf[i] * 2]));
-                       word++;
-               }
-       }
-
-       /*
-        * Set 'word' for later use to clear the rest of memory and save
-        * the expanded mcode size.
-        */
-       word *= 2;
-       adv_asc38C0800_expanded_size = word;
-
-       /*
-        * Clear the rest of ASC-38C0800 Internal RAM (16KB).
-        */
-       for (; word < ADV_38C0800_MEMSIZE; word += 2) {
-               AdvWriteWordAutoIncLram(iop_base, 0);
-       }
-
-       /*
-        * Verify the microcode checksum.
-        */
-       sum = 0;
-       AdvWriteWordRegister(iop_base, IOPW_RAM_ADDR, 0);
-
-       for (word = 0; word < adv_asc38C0800_expanded_size; word += 2) {
-               sum += AdvReadWordAutoIncLram(iop_base);
-       }
-       ASC_DBG2(1, "AdvInitAsc38C0800Driver: word %d, i %d\n", word, i);
-
-       ASC_DBG2(1,
-                "AdvInitAsc38C0800Driver: sum 0x%lx, _adv_asc38C0800_chksum 0x%lx\n",
-                (ulong)sum, (ulong)_adv_asc38C0800_chksum);
-
-       if (sum != _adv_asc38C0800_chksum) {
-               asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM;
+       asc_dvc->err_code = AdvLoadMicrocode(iop_base, _adv_asc38C0800_buf,
+                                _adv_asc38C0800_size, ADV_38C0800_MEMSIZE,
+                                _adv_asc38C0800_chksum);
+       if (asc_dvc->err_code)
                return ADV_ERROR;
-       }
 
        /*
         * Restore the RISC memory BIOS region.
@@ -14647,16 +11968,18 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc)
        }
 
        /*
-        * All kind of combinations of devices attached to one of four connectors
-        * are acceptable except HVD device attached. For example, LVD device can
-        * be attached to SE connector while SE device attached to LVD connector.
-        * If LVD device attached to SE connector, it only runs up to Ultra speed.
+        * All kind of combinations of devices attached to one of four
+        * connectors are acceptable except HVD device attached. For example,
+        * LVD device can be attached to SE connector while SE device attached
+        * to LVD connector.  If LVD device attached to SE connector, it only
+        * runs up to Ultra speed.
         *
-        * If an HVD device is attached to one of LVD connectors, return an error.
-        * However, there is no way to detect HVD device attached to SE connectors.
+        * If an HVD device is attached to one of LVD connectors, return an
+        * error.  However, there is no way to detect HVD device attached to
+        * SE connectors.
         */
        if (scsi_cfg1 & HVD) {
-               asc_dvc->err_code |= ASC_IERR_HVD_DEVICE;
+               asc_dvc->err_code = ASC_IERR_HVD_DEVICE;
                return ADV_ERROR;
        }
 
@@ -14665,8 +11988,8 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc)
         * set the termination value based on a table listed in a_condor.h.
         *
         * If manual termination was specified with an EEPROM setting then
-        * 'termination' was set-up in AdvInitFrom38C0800EEPROM() and is ready to
-        * be 'ored' into SCSI_CFG1.
+        * 'termination' was set-up in AdvInitFrom38C0800EEPROM() and is ready
+        * to be 'ored' into SCSI_CFG1.
         */
        if ((asc_dvc->cfg->termination & TERM_SE) == 0) {
                /* SE automatic termination control is enabled. */
@@ -14712,9 +12035,9 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc)
        scsi_cfg1 |= (~asc_dvc->cfg->termination & 0xF0);
 
        /*
-        * Clear BIG_ENDIAN, DIS_TERM_DRV, Terminator Polarity and HVD/LVD/SE bits
-        * and set possibly modified termination control bits in the Microcode
-        * SCSI_CFG1 Register Value.
+        * Clear BIG_ENDIAN, DIS_TERM_DRV, Terminator Polarity and HVD/LVD/SE
+        * bits and set possibly modified termination control bits in the
+        * Microcode SCSI_CFG1 Register Value.
         */
        scsi_cfg1 &= (~BIG_ENDIAN & ~DIS_TERM_DRV & ~TERM_POL & ~HVD_LVD_SE);
 
@@ -14752,57 +12075,7 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc)
        AdvWriteWordLram(iop_base, ASC_MC_DEFAULT_SEL_MASK,
                         ADV_TID_TO_TIDMASK(asc_dvc->chip_scsi_id));
 
-       /*
-        * Build the carrier freelist.
-        *
-        * Driver must have already allocated memory and set 'carrier_buf'.
-        */
-       ASC_ASSERT(asc_dvc->carrier_buf != NULL);
-
-       carrp = (ADV_CARR_T *) ADV_16BALIGN(asc_dvc->carrier_buf);
-       asc_dvc->carr_freelist = NULL;
-       if (carrp == (ADV_CARR_T *) asc_dvc->carrier_buf) {
-               buf_size = ADV_CARRIER_BUFSIZE;
-       } else {
-               buf_size = ADV_CARRIER_BUFSIZE - sizeof(ADV_CARR_T);
-       }
-
-       do {
-               /*
-                * Get physical address for the carrier 'carrp'.
-                */
-               contig_len = sizeof(ADV_CARR_T);
-               carr_paddr =
-                   cpu_to_le32(DvcGetPhyAddr
-                               (asc_dvc, NULL, (uchar *)carrp,
-                                (ADV_SDCNT *)&contig_len,
-                                ADV_IS_CARRIER_FLAG));
-
-               buf_size -= sizeof(ADV_CARR_T);
-
-               /*
-                * If the current carrier is not physically contiguous, then
-                * maybe there was a page crossing. Try the next carrier aligned
-                * start address.
-                */
-               if (contig_len < sizeof(ADV_CARR_T)) {
-                       carrp++;
-                       continue;
-               }
-
-               carrp->carr_pa = carr_paddr;
-               carrp->carr_va = cpu_to_le32(ADV_VADDR_TO_U32(carrp));
-
-               /*
-                * Insert the carrier at the beginning of the freelist.
-                */
-               carrp->next_vpa =
-                   cpu_to_le32(ADV_VADDR_TO_U32(asc_dvc->carr_freelist));
-               asc_dvc->carr_freelist = carrp;
-
-               carrp++;
-       }
-       while (buf_size > 0);
+       AdvBuildCarrierFreelist(asc_dvc);
 
        /*
         * Set-up the Host->RISC Initiator Command Queue (ICQ).
@@ -14912,17 +12185,10 @@ static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *asc_dvc)
 {
        AdvPortAddr iop_base;
        ushort warn_code;
-       ADV_DCNT sum;
        int begin_addr;
        int end_addr;
        ushort code_sum;
        long word;
-       int j;
-       int adv_asc38C1600_expanded_size;
-       ADV_CARR_T *carrp;
-       ADV_DCNT contig_len;
-       ADV_SDCNT buf_size;
-       ADV_PADDR carr_paddr;
        int i;
        ushort scsi_cfg1;
        uchar byte;
@@ -15003,19 +12269,19 @@ static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *asc_dvc)
         */
        for (i = 0; i < 2; i++) {
                AdvWriteByteRegister(iop_base, IOPB_RAM_BIST, PRE_TEST_MODE);
-               DvcSleepMilliSecond(10);        /* Wait for 10ms before reading back. */
+               mdelay(10);     /* Wait for 10ms before reading back. */
                byte = AdvReadByteRegister(iop_base, IOPB_RAM_BIST);
                if ((byte & RAM_TEST_DONE) == 0
                    || (byte & 0x0F) != PRE_TEST_VALUE) {
-                       asc_dvc->err_code |= ASC_IERR_BIST_PRE_TEST;
+                       asc_dvc->err_code = ASC_IERR_BIST_PRE_TEST;
                        return ADV_ERROR;
                }
 
                AdvWriteByteRegister(iop_base, IOPB_RAM_BIST, NORMAL_MODE);
-               DvcSleepMilliSecond(10);        /* Wait for 10ms before reading back. */
+               mdelay(10);     /* Wait for 10ms before reading back. */
                if (AdvReadByteRegister(iop_base, IOPB_RAM_BIST)
                    != NORMAL_VALUE) {
-                       asc_dvc->err_code |= ASC_IERR_BIST_PRE_TEST;
+                       asc_dvc->err_code = ASC_IERR_BIST_PRE_TEST;
                        return ADV_ERROR;
                }
        }
@@ -15028,101 +12294,24 @@ static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *asc_dvc)
         * err_code, and return an error.
         */
        AdvWriteByteRegister(iop_base, IOPB_RAM_BIST, RAM_TEST_MODE);
-       DvcSleepMilliSecond(10);        /* Wait for 10ms before checking status. */
+       mdelay(10);     /* Wait for 10ms before checking status. */
 
        byte = AdvReadByteRegister(iop_base, IOPB_RAM_BIST);
        if ((byte & RAM_TEST_DONE) == 0 || (byte & RAM_TEST_STATUS) != 0) {
                /* Get here if Done bit not set or Status not 0. */
                asc_dvc->bist_err_code = byte;  /* for BIOS display message */
-               asc_dvc->err_code |= ASC_IERR_BIST_RAM_TEST;
+               asc_dvc->err_code = ASC_IERR_BIST_RAM_TEST;
                return ADV_ERROR;
        }
 
        /* We need to reset back to normal mode after LRAM test passes. */
        AdvWriteByteRegister(iop_base, IOPB_RAM_BIST, NORMAL_MODE);
 
-       /*
-        * Load the Microcode
-        *
-        * Write the microcode image to RISC memory starting at address 0.
-        *
-        */
-       AdvWriteWordRegister(iop_base, IOPW_RAM_ADDR, 0);
-
-       /*
-        * Assume the following compressed format of the microcode buffer:
-        *
-        *  254 word (508 byte) table indexed by byte code followed
-        *  by the following byte codes:
-        *
-        *    1-Byte Code:
-        *      00: Emit word 0 in table.
-        *      01: Emit word 1 in table.
-        *      .
-        *      FD: Emit word 253 in table.
-        *
-        *    Multi-Byte Code:
-        *      FE WW WW: (3 byte code) Word to emit is the next word WW WW.
-        *      FF BB WW WW: (4 byte code) Emit BB count times next word WW WW.
-        */
-       word = 0;
-       for (i = 253 * 2; i < _adv_asc38C1600_size; i++) {
-               if (_adv_asc38C1600_buf[i] == 0xff) {
-                       for (j = 0; j < _adv_asc38C1600_buf[i + 1]; j++) {
-                               AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                                   _adv_asc38C1600_buf
-                                                                   [i +
-                                                                    3] << 8) |
-                                                                  _adv_asc38C1600_buf
-                                                                  [i + 2]));
-                               word++;
-                       }
-                       i += 3;
-               } else if (_adv_asc38C1600_buf[i] == 0xfe) {
-                       AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                           _adv_asc38C1600_buf
-                                                           [i +
-                                                            2] << 8) |
-                                                          _adv_asc38C1600_buf[i
-                                                                              +
-                                                                              1]));
-                       i += 2;
-                       word++;
-               } else {
-                       AdvWriteWordAutoIncLram(iop_base, (((ushort)
-                                                           _adv_asc38C1600_buf[(_adv_asc38C1600_buf[i] * 2) + 1] << 8) | _adv_asc38C1600_buf[_adv_asc38C1600_buf[i] * 2]));
-                       word++;
-               }
-       }
-
-       /*
-        * Set 'word' for later use to clear the rest of memory and save
-        * the expanded mcode size.
-        */
-       word *= 2;
-       adv_asc38C1600_expanded_size = word;
-
-       /*
-        * Clear the rest of ASC-38C1600 Internal RAM (32KB).
-        */
-       for (; word < ADV_38C1600_MEMSIZE; word += 2) {
-               AdvWriteWordAutoIncLram(iop_base, 0);
-       }
-
-       /*
-        * Verify the microcode checksum.
-        */
-       sum = 0;
-       AdvWriteWordRegister(iop_base, IOPW_RAM_ADDR, 0);
-
-       for (word = 0; word < adv_asc38C1600_expanded_size; word += 2) {
-               sum += AdvReadWordAutoIncLram(iop_base);
-       }
-
-       if (sum != _adv_asc38C1600_chksum) {
-               asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM;
+       asc_dvc->err_code = AdvLoadMicrocode(iop_base, _adv_asc38C1600_buf,
+                                _adv_asc38C1600_size, ADV_38C1600_MEMSIZE,
+                                _adv_asc38C1600_chksum);
+       if (asc_dvc->err_code)
                return ADV_ERROR;
-       }
 
        /*
         * Restore the RISC memory BIOS region.
@@ -15294,6 +12483,7 @@ static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *asc_dvc)
         * ready to be 'ored' into SCSI_CFG1.
         */
        if ((asc_dvc->cfg->termination & TERM_SE) == 0) {
+               struct pci_dev *pdev = adv_dvc_to_pdev(asc_dvc);
                /* SE automatic termination control is enabled. */
                switch (scsi_cfg1 & C_DET_SE) {
                        /* TERM_SE_HI: on, TERM_SE_LO: on */
@@ -15304,7 +12494,7 @@ static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *asc_dvc)
                        break;
 
                case 0x0:
-                       if (ASC_PCI_ID2FUNC(asc_dvc->cfg->pci_slot_info) == 0) {
+                       if (PCI_FUNC(pdev->devfn) == 0) {
                                /* Function 0 - TERM_SE_HI: off, TERM_SE_LO: off */
                        } else {
                                /* Function 1 - TERM_SE_HI: on, TERM_SE_LO: off */
@@ -15375,58 +12565,7 @@ static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *asc_dvc)
        AdvWriteWordLram(iop_base, ASC_MC_DEFAULT_SEL_MASK,
                         ADV_TID_TO_TIDMASK(asc_dvc->chip_scsi_id));
 
-       /*
-        * Build the carrier freelist.
-        *
-        * Driver must have already allocated memory and set 'carrier_buf'.
-        */
-
-       ASC_ASSERT(asc_dvc->carrier_buf != NULL);
-
-       carrp = (ADV_CARR_T *) ADV_16BALIGN(asc_dvc->carrier_buf);
-       asc_dvc->carr_freelist = NULL;
-       if (carrp == (ADV_CARR_T *) asc_dvc->carrier_buf) {
-               buf_size = ADV_CARRIER_BUFSIZE;
-       } else {
-               buf_size = ADV_CARRIER_BUFSIZE - sizeof(ADV_CARR_T);
-       }
-
-       do {
-               /*
-                * Get physical address for the carrier 'carrp'.
-                */
-               contig_len = sizeof(ADV_CARR_T);
-               carr_paddr =
-                   cpu_to_le32(DvcGetPhyAddr
-                               (asc_dvc, NULL, (uchar *)carrp,
-                                (ADV_SDCNT *)&contig_len,
-                                ADV_IS_CARRIER_FLAG));
-
-               buf_size -= sizeof(ADV_CARR_T);
-
-               /*
-                * If the current carrier is not physically contiguous, then
-                * maybe there was a page crossing. Try the next carrier aligned
-                * start address.
-                */
-               if (contig_len < sizeof(ADV_CARR_T)) {
-                       carrp++;
-                       continue;
-               }
-
-               carrp->carr_pa = carr_paddr;
-               carrp->carr_va = cpu_to_le32(ADV_VADDR_TO_U32(carrp));
-
-               /*
-                * Insert the carrier at the beginning of the freelist.
-                */
-               carrp->next_vpa =
-                   cpu_to_le32(ADV_VADDR_TO_U32(asc_dvc->carr_freelist));
-               asc_dvc->carr_freelist = carrp;
-
-               carrp++;
-       }
-       while (buf_size > 0);
+       AdvBuildCarrierFreelist(asc_dvc);
 
        /*
         * Set-up the Host->RISC Initiator Command Queue (ICQ).
@@ -15538,7 +12677,6 @@ static int __devinit AdvInitFrom3550EEP(ADV_DVC_VAR *asc_dvc)
        AdvPortAddr iop_base;
        ushort warn_code;
        ADVEEP_3550_CONFIG eep_config;
-       int i;
 
        iop_base = asc_dvc->iop_base;
 
@@ -15555,15 +12693,12 @@ static int __devinit AdvInitFrom3550EEP(ADV_DVC_VAR *asc_dvc)
                /*
                 * Set EEPROM default values.
                 */
-               for (i = 0; i < sizeof(ADVEEP_3550_CONFIG); i++) {
-                       *((uchar *)&eep_config + i) =
-                           *((uchar *)&Default_3550_EEPROM_Config + i);
-               }
+               memcpy(&eep_config, &Default_3550_EEPROM_Config,
+                       sizeof(ADVEEP_3550_CONFIG));
 
                /*
-                * Assume the 6 byte board serial number that was read
-                * from EEPROM is correct even if the EEPROM checksum
-                * failed.
+                * Assume the 6 byte board serial number that was read from
+                * EEPROM is correct even if the EEPROM checksum failed.
                 */
                eep_config.serial_number_word3 =
                    AdvReadEEPWord(iop_base, ADV_EEP_DVC_CFG_END - 1);
@@ -15692,7 +12827,6 @@ static int __devinit AdvInitFrom38C0800EEP(ADV_DVC_VAR *asc_dvc)
        AdvPortAddr iop_base;
        ushort warn_code;
        ADVEEP_38C0800_CONFIG eep_config;
-       int i;
        uchar tid, termination;
        ushort sdtr_speed = 0;
 
@@ -15712,15 +12846,12 @@ static int __devinit AdvInitFrom38C0800EEP(ADV_DVC_VAR *asc_dvc)
                /*
                 * Set EEPROM default values.
                 */
-               for (i = 0; i < sizeof(ADVEEP_38C0800_CONFIG); i++) {
-                       *((uchar *)&eep_config + i) =
-                           *((uchar *)&Default_38C0800_EEPROM_Config + i);
-               }
+               memcpy(&eep_config, &Default_38C0800_EEPROM_Config,
+                       sizeof(ADVEEP_38C0800_CONFIG));
 
                /*
-                * Assume the 6 byte board serial number that was read
-                * from EEPROM is correct even if the EEPROM checksum
-                * failed.
+                * Assume the 6 byte board serial number that was read from
+                * EEPROM is correct even if the EEPROM checksum failed.
                 */
                eep_config.serial_number_word3 =
                    AdvReadEEPWord(iop_base, ADV_EEP_DVC_CFG_END - 1);
@@ -15895,7 +13026,6 @@ static int __devinit AdvInitFrom38C1600EEP(ADV_DVC_VAR *asc_dvc)
        AdvPortAddr iop_base;
        ushort warn_code;
        ADVEEP_38C1600_CONFIG eep_config;
-       int i;
        uchar tid, termination;
        ushort sdtr_speed = 0;
 
@@ -15910,75 +13040,52 @@ static int __devinit AdvInitFrom38C1600EEP(ADV_DVC_VAR *asc_dvc)
         */
        if (AdvGet38C1600EEPConfig(iop_base, &eep_config) !=
            eep_config.check_sum) {
+               struct pci_dev *pdev = adv_dvc_to_pdev(asc_dvc);
                warn_code |= ASC_WARN_EEPROM_CHKSUM;
 
                /*
                 * Set EEPROM default values.
                 */
-               for (i = 0; i < sizeof(ADVEEP_38C1600_CONFIG); i++) {
-                       if (i == 1
-                           && ASC_PCI_ID2FUNC(asc_dvc->cfg->pci_slot_info) !=
-                           0) {
-                               /*
-                                * Set Function 1 EEPROM Word 0 MSB
-                                *
-                                * Clear the BIOS_ENABLE (bit 14) and INTAB (bit 11)
-                                * EEPROM bits.
-                                *
-                                * Disable Bit 14 (BIOS_ENABLE) to fix SPARC Ultra 60 and
-                                * old Mac system booting problem. The Expansion ROM must
-                                * be disabled in Function 1 for these systems.
-                                *
-                                */
-                               *((uchar *)&eep_config + i) =
-                                   ((*
-                                     ((uchar *)&Default_38C1600_EEPROM_Config
-                                      +
-                                      i)) &
-                                    (~
-                                     (((ADV_EEPROM_BIOS_ENABLE |
-                                        ADV_EEPROM_INTAB) >> 8) & 0xFF)));
+               memcpy(&eep_config, &Default_38C1600_EEPROM_Config,
+                       sizeof(ADVEEP_38C1600_CONFIG));
 
-                               /*
-                                * Set the INTAB (bit 11) if the GPIO 0 input indicates
-                                * the Function 1 interrupt line is wired to INTA.
-                                *
-                                * Set/Clear Bit 11 (INTAB) from the GPIO bit 0 input:
-                                *   1 - Function 1 interrupt line wired to INT A.
-                                *   0 - Function 1 interrupt line wired to INT B.
-                                *
-                                * Note: Adapter boards always have Function 0 wired to INTA.
-                                * Put all 5 GPIO bits in input mode and then read
-                                * their input values.
-                                */
-                               AdvWriteByteRegister(iop_base, IOPB_GPIO_CNTL,
-                                                    0);
-                               if (AdvReadByteRegister
-                                   (iop_base, IOPB_GPIO_DATA) & 0x01) {
-                                       /* Function 1 interrupt wired to INTA; Set EEPROM bit. */
-                                       *((uchar *)&eep_config + i) |=
-                                           ((ADV_EEPROM_INTAB >> 8) & 0xFF);
-                               }
-                       } else {
-                               *((uchar *)&eep_config + i) =
-                                   *((uchar *)&Default_38C1600_EEPROM_Config
-                                     + i);
-                       }
+               if (PCI_FUNC(pdev->devfn) != 0) {
+                       u8 ints;
+                       /*
+                        * Disable Bit 14 (BIOS_ENABLE) to fix SPARC Ultra 60
+                        * and old Mac system booting problem. The Expansion
+                        * ROM must be disabled in Function 1 for these systems
+                        */
+                       eep_config.cfg_lsw &= ~ADV_EEPROM_BIOS_ENABLE;
+                       /*
+                        * Clear the INTAB (bit 11) if the GPIO 0 input
+                        * indicates the Function 1 interrupt line is wired
+                        * to INTB.
+                        *
+                        * Set/Clear Bit 11 (INTAB) from the GPIO bit 0 input:
+                        *   1 - Function 1 interrupt line wired to INT A.
+                        *   0 - Function 1 interrupt line wired to INT B.
+                        *
+                        * Note: Function 0 is always wired to INTA.
+                        * Put all 5 GPIO bits in input mode and then read
+                        * their input values.
+                        */
+                       AdvWriteByteRegister(iop_base, IOPB_GPIO_CNTL, 0);
+                       ints = AdvReadByteRegister(iop_base, IOPB_GPIO_DATA);
+                       if ((ints & 0x01) == 0)
+                               eep_config.cfg_lsw &= ~ADV_EEPROM_INTAB;
                }
 
                /*
-                * Assume the 6 byte board serial number that was read
-                * from EEPROM is correct even if the EEPROM checksum
-                * failed.
+                * Assume the 6 byte board serial number that was read from
+                * EEPROM is correct even if the EEPROM checksum failed.
                 */
                eep_config.serial_number_word3 =
-                   AdvReadEEPWord(iop_base, ADV_EEP_DVC_CFG_END - 1);
-
+                       AdvReadEEPWord(iop_base, ADV_EEP_DVC_CFG_END - 1);
                eep_config.serial_number_word2 =
-                   AdvReadEEPWord(iop_base, ADV_EEP_DVC_CFG_END - 2);
-
+                       AdvReadEEPWord(iop_base, ADV_EEP_DVC_CFG_END - 2);
                eep_config.serial_number_word1 =
-                   AdvReadEEPWord(iop_base, ADV_EEP_DVC_CFG_END - 3);
+                       AdvReadEEPWord(iop_base, ADV_EEP_DVC_CFG_END - 3);
 
                AdvSet38C1600EEPConfig(iop_base, &eep_config);
        }
@@ -16278,12 +13385,11 @@ static void __devinit AdvWaitEEPCmd(AdvPortAddr iop_base)
                    ASC_EEP_CMD_DONE) {
                        break;
                }
-               DvcSleepMilliSecond(1);
+               mdelay(1);
        }
        if ((AdvReadWordRegister(iop_base, IOPW_EE_CMD) & ASC_EEP_CMD_DONE) ==
-           0) {
-               ASC_ASSERT(0);
-       }
+           0)
+               BUG();
        return;
 }
 
@@ -16321,7 +13427,7 @@ AdvSet3550EEPConfig(AdvPortAddr iop_base, ADVEEP_3550_CONFIG *cfg_buf)
                AdvWriteWordRegister(iop_base, IOPW_EE_CMD,
                                     ASC_EEP_CMD_WRITE | addr);
                AdvWaitEEPCmd(iop_base);
-               DvcSleepMilliSecond(ADV_EEP_DELAY_MS);
+               mdelay(ADV_EEP_DELAY_MS);
        }
 
        /*
@@ -16389,7 +13495,7 @@ AdvSet38C0800EEPConfig(AdvPortAddr iop_base, ADVEEP_38C0800_CONFIG *cfg_buf)
                AdvWriteWordRegister(iop_base, IOPW_EE_CMD,
                                     ASC_EEP_CMD_WRITE | addr);
                AdvWaitEEPCmd(iop_base);
-               DvcSleepMilliSecond(ADV_EEP_DELAY_MS);
+               mdelay(ADV_EEP_DELAY_MS);
        }
 
        /*
@@ -16457,7 +13563,7 @@ AdvSet38C1600EEPConfig(AdvPortAddr iop_base, ADVEEP_38C1600_CONFIG *cfg_buf)
                AdvWriteWordRegister(iop_base, IOPW_EE_CMD,
                                     ASC_EEP_CMD_WRITE | addr);
                AdvWaitEEPCmd(iop_base);
-               DvcSleepMilliSecond(ADV_EEP_DELAY_MS);
+               mdelay(ADV_EEP_DELAY_MS);
        }
 
        /*
@@ -16491,7 +13597,6 @@ AdvSet38C1600EEPConfig(AdvPortAddr iop_base, ADVEEP_38C1600_CONFIG *cfg_buf)
        return;
 }
 
-/* a_advlib.c */
 /*
  * AdvExeScsiQueue() - Send a request to the RISC microcode program.
  *
@@ -16515,14 +13620,11 @@ AdvSet38C1600EEPConfig(AdvPortAddr iop_base, ADVEEP_38C1600_CONFIG *cfg_buf)
  */
 static int AdvExeScsiQueue(ADV_DVC_VAR *asc_dvc, ADV_SCSI_REQ_Q *scsiq)
 {
-       ulong last_int_level;
        AdvPortAddr iop_base;
        ADV_DCNT req_size;
        ADV_PADDR req_paddr;
        ADV_CARR_T *new_carrp;
 
-       ASC_ASSERT(scsiq != NULL);      /* 'scsiq' should never be NULL. */
-
        /*
         * The ADV_SCSI_REQ_Q 'target_id' field should never exceed ADV_MAX_TID.
         */
@@ -16534,14 +13636,11 @@ static int AdvExeScsiQueue(ADV_DVC_VAR *asc_dvc, ADV_SCSI_REQ_Q *scsiq)
 
        iop_base = asc_dvc->iop_base;
 
-       last_int_level = DvcEnterCritical();
-
        /*
         * Allocate a carrier ensuring at least one carrier always
         * remains on the freelist and initialize fields.
         */
        if ((new_carrp = asc_dvc->carr_freelist) == NULL) {
-               DvcLeaveCritical(last_int_level);
                return ADV_BUSY;
        }
        asc_dvc->carr_freelist = (ADV_CARR_T *)
@@ -16564,8 +13663,8 @@ static int AdvExeScsiQueue(ADV_DVC_VAR *asc_dvc, ADV_SCSI_REQ_Q *scsiq)
        req_paddr = DvcGetPhyAddr(asc_dvc, scsiq, (uchar *)scsiq,
                                  (ADV_SDCNT *)&req_size, ADV_IS_SCSIQ_FLAG);
 
-       ASC_ASSERT(ADV_32BALIGN(req_paddr) == req_paddr);
-       ASC_ASSERT(req_size >= sizeof(ADV_SCSI_REQ_Q));
+       BUG_ON(req_paddr & 31);
+       BUG_ON(req_size < sizeof(ADV_SCSI_REQ_Q));
 
        /* Wait for assertion before making little-endian */
        req_paddr = cpu_to_le32(req_paddr);
@@ -16624,8 +13723,6 @@ static int AdvExeScsiQueue(ADV_DVC_VAR *asc_dvc, ADV_SCSI_REQ_Q *scsiq)
                                      le32_to_cpu(new_carrp->carr_pa));
        }
 
-       DvcLeaveCritical(last_int_level);
-
        return ADV_SUCCESS;
 }
 
@@ -16657,7 +13754,7 @@ static int AdvResetSB(ADV_DVC_VAR *asc_dvc)
         * The hold time delay is done on the host because the RISC has no
         * microsecond accurate timer.
         */
-       DvcDelayMicroSecond(asc_dvc, (ushort)ASC_SCSI_RESET_HOLD_TIME_US);
+       udelay(ASC_SCSI_RESET_HOLD_TIME_US);
 
        /*
         * Send the SCSI Bus Reset end idle command which de-asserts
@@ -16668,7 +13765,7 @@ static int AdvResetSB(ADV_DVC_VAR *asc_dvc)
                return status;
        }
 
-       DvcSleepMilliSecond((ADV_DCNT)asc_dvc->scsi_reset_wait * 1000);
+       mdelay(asc_dvc->scsi_reset_wait * 1000);        /* XXX: msleep? */
 
        return status;
 }
@@ -16719,7 +13816,7 @@ static int AdvResetChipAndSB(ADV_DVC_VAR *asc_dvc)
         */
        AdvWriteWordRegister(iop_base, IOPW_RISC_CSR, ADV_RISC_CSR_STOP);
        AdvWriteWordRegister(iop_base, IOPW_CTRL_REG, ADV_CTRL_REG_CMD_RESET);
-       DvcSleepMilliSecond(100);
+       mdelay(100);
        AdvWriteWordRegister(iop_base, IOPW_CTRL_REG,
                             ADV_CTRL_REG_CMD_WR_IO_REG);
 
@@ -16791,11 +13888,8 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc)
        ushort target_bit;
        ADV_CARR_T *free_carrp;
        ADV_VADDR irq_next_vpa;
-       int flags;
        ADV_SCSI_REQ_Q *scsiq;
 
-       flags = DvcEnterCritical();
-
        iop_base = asc_dvc->iop_base;
 
        /* Reading the register clears the interrupt. */
@@ -16803,13 +13897,12 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc)
 
        if ((int_stat & (ADV_INTR_STATUS_INTRA | ADV_INTR_STATUS_INTRB |
                         ADV_INTR_STATUS_INTRC)) == 0) {
-               DvcLeaveCritical(flags);
                return ADV_FALSE;
        }
 
        /*
         * Notify the driver of an asynchronous microcode condition by
-        * calling the ADV_DVC_VAR.async_callback function. The function
+        * calling the adv_async_callback function. The function
         * is passed the microcode ASC_MC_INTRB_CODE byte value.
         */
        if (int_stat & ADV_INTR_STATUS_INTRB) {
@@ -16831,9 +13924,7 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc)
                        }
                }
 
-               if (asc_dvc->async_callback != 0) {
-                       (*asc_dvc->async_callback) (asc_dvc, intrb_code);
-               }
+               adv_async_callback(asc_dvc, intrb_code);
        }
 
        /*
@@ -16878,7 +13969,6 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc)
                asc_dvc->carr_freelist = free_carrp;
                asc_dvc->carr_pending_cnt--;
 
-               ASC_ASSERT(scsiq != NULL);
                target_bit = ADV_TID_TO_TIDMASK(scsiq->target_id);
 
                /*
@@ -16891,7 +13981,7 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc)
                 * the ADV_SCSI_REQ_Q pointer to its callback function.
                 */
                scsiq->a_flag |= ADV_SCSIQ_DONE;
-               (*asc_dvc->isr_callback) (asc_dvc, scsiq);
+               adv_isr_callback(asc_dvc, scsiq);
                /*
                 * Note: After the driver callback function is called, 'scsiq'
                 * can no longer be referenced.
@@ -16899,18 +13989,7 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc)
                 * Fall through and continue processing other completed
                 * requests...
                 */
-
-               /*
-                * Disable interrupts again in case the driver inadvertently
-                * enabled interrupts in its callback function.
-                *
-                * The DvcEnterCritical() return value is ignored, because
-                * the 'flags' saved when AdvISR() was first entered will be
-                * used to restore the interrupt flag on exit.
-                */
-               (void)DvcEnterCritical();
        }
-       DvcLeaveCritical(flags);
        return ADV_TRUE;
 }
 
@@ -16932,20 +14011,16 @@ static int
 AdvSendIdleCmd(ADV_DVC_VAR *asc_dvc,
               ushort idle_cmd, ADV_DCNT idle_cmd_parameter)
 {
-       ulong last_int_level;
        int result;
        ADV_DCNT i, j;
        AdvPortAddr iop_base;
 
-       last_int_level = DvcEnterCritical();
-
        iop_base = asc_dvc->iop_base;
 
        /*
         * Clear the idle command status which is set by the microcode
         * to a non-zero value to indicate when the command is completed.
         * The non-zero result is one of the IDLE_CMD_STATUS_* values
-        * defined in a_advlib.h.
         */
        AdvWriteWordLram(iop_base, ASC_MC_IDLE_CMD_STATUS, (ushort)0);
 
@@ -16978,16 +14053,13 @@ AdvSendIdleCmd(ADV_DVC_VAR *asc_dvc,
                for (j = 0; j < SCSI_US_PER_MSEC; j++) {
                        AdvReadWordLram(iop_base, ASC_MC_IDLE_CMD_STATUS,
                                        result);
-                       if (result != 0) {
-                               DvcLeaveCritical(last_int_level);
+                       if (result != 0)
                                return result;
-                       }
-                       DvcDelayMicroSecond(asc_dvc, (ushort)1);
+                       udelay(1);
                }
        }
 
-       ASC_ASSERT(0);          /* The idle command should never timeout. */
-       DvcLeaveCritical(last_int_level);
+       BUG();          /* The idle command should never timeout. */
        return ADV_ERROR;
 }
 
@@ -17118,8 +14190,6 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
        ASC_DVC_VAR *asc_dvc_varp = NULL;
        ADV_DVC_VAR *adv_dvc_varp = NULL;
        int share_irq;
-       int iolen = 0;
-       ADV_PADDR pci_memory_address;
        int warn_code, err_code;
        int ret;
 
@@ -17137,6 +14207,7 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
        memset(boardp, 0, sizeof(asc_board_t));
        boardp->id = asc_board_count++;
        spin_lock_init(&boardp->lock);
+       boardp->dev = dev;
 
        /*
         * Handle both narrow and wide boards.
@@ -17162,15 +14233,12 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                asc_dvc_varp->cfg = &boardp->dvc_cfg.asc_dvc_cfg;
                asc_dvc_varp->cfg->overrun_buf = &overrun_buf[0];
                asc_dvc_varp->iop_base = iop;
-               asc_dvc_varp->isr_callback = asc_isr_callback;
        } else {
+#ifdef CONFIG_PCI
                ASC_DBG(1, "advansys_board_found: wide board\n");
                adv_dvc_varp = &boardp->dvc_var.adv_dvc_var;
                adv_dvc_varp->drv_ptr = boardp;
                adv_dvc_varp->cfg = &boardp->dvc_cfg.adv_dvc_cfg;
-               adv_dvc_varp->isr_callback = adv_isr_callback;
-               adv_dvc_varp->async_callback = adv_async_callback;
-#ifdef CONFIG_PCI
                if (pdev->device == PCI_DEVICE_ID_ASP_ABP940UW) {
                        ASC_DBG(1, "advansys_board_found: ASC-3550\n");
                        adv_dvc_varp->chip_type = ADV_CHIP_ASC3550;
@@ -17181,46 +14249,20 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                        ASC_DBG(1, "advansys_board_found: ASC-38C1600\n");
                        adv_dvc_varp->chip_type = ADV_CHIP_ASC38C1600;
                }
-#endif /* CONFIG_PCI */
 
-               /*
-                * Map the board's registers into virtual memory for
-                * PCI slave access. Only memory accesses are used to
-                * access the board's registers.
-                *
-                * Note: The PCI register base address is not always
-                * page aligned, but the address passed to ioremap()
-                * must be page aligned. It is guaranteed that the
-                * PCI register base address will not cross a page
-                * boundary.
-                */
-               if (adv_dvc_varp->chip_type == ADV_CHIP_ASC3550) {
-                       iolen = ADV_3550_IOLEN;
-               } else if (adv_dvc_varp->chip_type == ADV_CHIP_ASC38C0800) {
-                       iolen = ADV_38C0800_IOLEN;
-               } else {
-                       iolen = ADV_38C1600_IOLEN;
-               }
-#ifdef CONFIG_PCI
-               pci_memory_address = pci_resource_start(pdev, 1);
-               ASC_DBG1(1,
-                        "advansys_board_found: pci_memory_address: 0x%lx\n",
-                        (ulong)pci_memory_address);
-               if ((boardp->ioremap_addr =
-                    ioremap(pci_memory_address & PAGE_MASK, PAGE_SIZE)) == 0) {
+               boardp->asc_n_io_port = pci_resource_len(pdev, 1);
+               boardp->ioremap_addr = ioremap(pci_resource_start(pdev, 1),
+                                              boardp->asc_n_io_port);
+               if (!boardp->ioremap_addr) {
                        ASC_PRINT3
                            ("advansys_board_found: board %d: ioremap(%x, %d) returned NULL\n",
-                            boardp->id, pci_memory_address, iolen);
+                            boardp->id, pci_resource_start(pdev, 1),
+                            boardp->asc_n_io_port);
                        goto err_shost;
                }
-               ASC_DBG1(1, "advansys_board_found: ioremap_addr: 0x%lx\n",
-                        (ulong)boardp->ioremap_addr);
-               adv_dvc_varp->iop_base = (AdvPortAddr)
-                   (boardp->ioremap_addr +
-                    (pci_memory_address - (pci_memory_address & PAGE_MASK)));
+               adv_dvc_varp->iop_base = (AdvPortAddr)boardp->ioremap_addr
                ASC_DBG1(1, "advansys_board_found: iop_base: 0x%lx\n",
                         adv_dvc_varp->iop_base);
-#endif /* CONFIG_PCI */
 
                /*
                 * Even though it isn't used to access wide boards, other
@@ -17229,9 +14271,10 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                 */
                boardp->ioport = iop;
 
-               ASC_DBG2(1,
-                        "advansys_board_found: iopb_chip_id_1 0x%x, iopw_chip_id_0 0x%x\n",
-                        (ushort)inp(iop + 1), (ushort)inpw(iop));
+               ASC_DBG2(1, "advansys_board_found: iopb_chip_id_1 0x%x, "
+                        "iopw_chip_id_0 0x%x\n", (ushort)inp(iop + 1),
+                        (ushort)inpw(iop));
+#endif /* CONFIG_PCI */
        }
 
 #ifdef CONFIG_PROC_FS
@@ -17248,7 +14291,6 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
 #endif /* CONFIG_PROC_FS */
 
        if (ASC_NARROW_BOARD(boardp)) {
-               asc_dvc_varp->cfg->dev = dev;
                /*
                 * Set the board bus type and PCI IRQ before
                 * calling AscInitGetConfig().
@@ -17271,10 +14313,6 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
 #ifdef CONFIG_PCI
                case ASC_IS_PCI:
                        shost->irq = asc_dvc_varp->irq_no = pdev->irq;
-                       asc_dvc_varp->cfg->pci_slot_info =
-                           ASC_PCI_MKID(pdev->bus->number,
-                                        PCI_SLOT(pdev->devfn),
-                                        PCI_FUNC(pdev->devfn));
                        shost->unchecked_isa_dma = FALSE;
                        share_irq = IRQF_SHARED;
                        break;
@@ -17287,27 +14325,7 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                        share_irq = 0;
                        break;
                }
-       } else {
-               adv_dvc_varp->cfg->dev = dev;
-               /*
-                * For Wide boards set PCI information before calling
-                * AdvInitGetConfig().
-                */
-#ifdef CONFIG_PCI
-               shost->irq = adv_dvc_varp->irq_no = pdev->irq;
-               adv_dvc_varp->cfg->pci_slot_info =
-                   ASC_PCI_MKID(pdev->bus->number,
-                                PCI_SLOT(pdev->devfn),
-                                PCI_FUNC(pdev->devfn));
-               shost->unchecked_isa_dma = FALSE;
-               share_irq = IRQF_SHARED;
-#endif /* CONFIG_PCI */
-       }
 
-       /*
-        * Read the board configuration.
-        */
-       if (ASC_NARROW_BOARD(boardp)) {
                /*
                 * NOTE: AscInitGetConfig() may change the board's
                 * bus_type value. The bus_type value should no
@@ -17315,58 +14333,20 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                 * referenced only use the bit-wise AND operator "&".
                 */
                ASC_DBG(2, "advansys_board_found: AscInitGetConfig()\n");
-               switch (ret = AscInitGetConfig(asc_dvc_varp)) {
-               case 0: /* No error */
-                       break;
-               case ASC_WARN_IO_PORT_ROTATE:
-                       ASC_PRINT1
-                           ("AscInitGetConfig: board %d: I/O port address modified\n",
-                            boardp->id);
-                       break;
-               case ASC_WARN_AUTO_CONFIG:
-                       ASC_PRINT1
-                           ("AscInitGetConfig: board %d: I/O port increment switch enabled\n",
-                            boardp->id);
-                       break;
-               case ASC_WARN_EEPROM_CHKSUM:
-                       ASC_PRINT1
-                           ("AscInitGetConfig: board %d: EEPROM checksum error\n",
-                            boardp->id);
-                       break;
-               case ASC_WARN_IRQ_MODIFIED:
-                       ASC_PRINT1
-                           ("AscInitGetConfig: board %d: IRQ modified\n",
-                            boardp->id);
-                       break;
-               case ASC_WARN_CMD_QNG_CONFLICT:
-                       ASC_PRINT1
-                           ("AscInitGetConfig: board %d: tag queuing enabled w/o disconnects\n",
-                            boardp->id);
-                       break;
-               default:
-                       ASC_PRINT2
-                           ("AscInitGetConfig: board %d: unknown warning: 0x%x\n",
-                            boardp->id, ret);
-                       break;
-               }
-               if ((err_code = asc_dvc_varp->err_code) != 0) {
-                       ASC_PRINT3
-                           ("AscInitGetConfig: board %d error: init_state 0x%x, err_code 0x%x\n",
-                            boardp->id,
-                            asc_dvc_varp->init_state, asc_dvc_varp->err_code);
-               }
+               err_code = AscInitGetConfig(boardp);
        } else {
+#ifdef CONFIG_PCI
+               /*
+                * For Wide boards set PCI information before calling
+                * AdvInitGetConfig().
+                */
+               shost->irq = adv_dvc_varp->irq_no = pdev->irq;
+               shost->unchecked_isa_dma = FALSE;
+               share_irq = IRQF_SHARED;
                ASC_DBG(2, "advansys_board_found: AdvInitGetConfig()\n");
-               if ((ret = AdvInitGetConfig(adv_dvc_varp)) != 0) {
-                       ASC_PRINT2
-                           ("AdvInitGetConfig: board %d: warning: 0x%x\n",
-                            boardp->id, ret);
-               }
-               if ((err_code = adv_dvc_varp->err_code) != 0) {
-                       ASC_PRINT2
-                           ("AdvInitGetConfig: board %d error: err_code 0x%x\n",
-                            boardp->id, adv_dvc_varp->err_code);
-               }
+
+               err_code = AdvInitGetConfig(pdev, boardp);
+#endif /* CONFIG_PCI */
        }
 
        if (err_code != 0)
@@ -17413,47 +14393,9 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                 * Modify board configuration.
                 */
                ASC_DBG(2, "advansys_board_found: AscInitSetConfig()\n");
-               switch (ret = AscInitSetConfig(asc_dvc_varp)) {
-               case 0: /* No error. */
-                       break;
-               case ASC_WARN_IO_PORT_ROTATE:
-                       ASC_PRINT1
-                           ("AscInitSetConfig: board %d: I/O port address modified\n",
-                            boardp->id);
-                       break;
-               case ASC_WARN_AUTO_CONFIG:
-                       ASC_PRINT1
-                           ("AscInitSetConfig: board %d: I/O port increment switch enabled\n",
-                            boardp->id);
-                       break;
-               case ASC_WARN_EEPROM_CHKSUM:
-                       ASC_PRINT1
-                           ("AscInitSetConfig: board %d: EEPROM checksum error\n",
-                            boardp->id);
-                       break;
-               case ASC_WARN_IRQ_MODIFIED:
-                       ASC_PRINT1
-                           ("AscInitSetConfig: board %d: IRQ modified\n",
-                            boardp->id);
-                       break;
-               case ASC_WARN_CMD_QNG_CONFLICT:
-                       ASC_PRINT1
-                           ("AscInitSetConfig: board %d: tag queuing w/o disconnects\n",
-                            boardp->id);
-                       break;
-               default:
-                       ASC_PRINT2
-                           ("AscInitSetConfig: board %d: unknown warning: 0x%x\n",
-                            boardp->id, ret);
-                       break;
-               }
-               if (asc_dvc_varp->err_code != 0) {
-                       ASC_PRINT3
-                           ("AscInitSetConfig: board %d error: init_state 0x%x, err_code 0x%x\n",
-                            boardp->id,
-                            asc_dvc_varp->init_state, asc_dvc_varp->err_code);
+               err_code = AscInitSetConfig(pdev, boardp);
+               if (err_code)
                        goto err_free_proc;
-               }
 
                /*
                 * Finish initializing the 'Scsi_Host' structure.
@@ -17566,6 +14508,7 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
        if (ASC_NARROW_BOARD(boardp)) {
                shost->max_id = ASC_MAX_TID + 1;
                shost->max_lun = ASC_MAX_LUN + 1;
+               shost->max_cmd_len = ASC_MAX_CDB_LEN;
 
                shost->io_port = asc_dvc_varp->iop_base;
                boardp->asc_n_io_port = ASC_IOADR_GAP;
@@ -17576,6 +14519,7 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
        } else {
                shost->max_id = ADV_MAX_TID + 1;
                shost->max_lun = ADV_MAX_LUN + 1;
+               shost->max_cmd_len = ADV_MAX_CDB_LEN;
 
                /*
                 * Save the I/O Port address and length even though
@@ -17584,7 +14528,6 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                 * PCI Memory Mapped I/O.
                 */
                shost->io_port = iop;
-               boardp->asc_n_io_port = iolen;
 
                shost->this_id = adv_dvc_varp->chip_scsi_id;
 
@@ -17592,15 +14535,6 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                shost->can_queue = adv_dvc_varp->max_host_qng;
        }
 
-       /*
-        * 'n_io_port' currently is one byte.
-        *
-        * Set a value to 'n_io_port', but never referenced it because
-        * it may be truncated.
-        */
-       shost->n_io_port = boardp->asc_n_io_port <= 255 ?
-           boardp->asc_n_io_port : 255;
-
        /*
         * Following v1.3.89, 'cmd_per_lun' is no longer needed
         * and should be set to zero.
@@ -17701,7 +14635,7 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
                /* Register DMA channel for ISA bus. */
                if (asc_dvc_varp->bus_type & ASC_IS_ISA) {
                        shost->dma_channel = asc_dvc_varp->cfg->isa_dma_channel;
-                       ret = request_dma(shost->dma_channel, "advansys");
+                       ret = request_dma(shost->dma_channel, DRV_NAME);
                        if (ret) {
                                ASC_PRINT3
                                    ("advansys_board_found: board %d: request_dma() %d failed %d\n",
@@ -17717,7 +14651,7 @@ advansys_board_found(int iop, struct device *dev, int bus_type)
        ASC_DBG1(2, "advansys_board_found: request_irq() %d\n", shost->irq);
 
        ret = request_irq(shost->irq, advansys_interrupt, share_irq,
-                         "advansys", shost);
+                         DRV_NAME, shost);
 
        if (ret) {
                if (ret == -EBUSY) {
@@ -17809,6 +14743,8 @@ static int advansys_release(struct Scsi_Host *shost)
        return 0;
 }
 
+#define ASC_IOADR_TABLE_MAX_IX  11
+
 static PortAddr _asc_def_iop_base[ASC_IOADR_TABLE_MAX_IX] __devinitdata = {
        0x100, 0x0110, 0x120, 0x0130, 0x140, 0x0150, 0x0190,
        0x0210, 0x0230, 0x0250, 0x0330
@@ -17819,7 +14755,7 @@ static int __devinit advansys_isa_probe(struct device *dev, unsigned int id)
        PortAddr iop_base = _asc_def_iop_base[id];
        struct Scsi_Host *shost;
 
-       if (!request_region(iop_base, ASC_IOADR_GAP, "advansys")) {
+       if (!request_region(iop_base, ASC_IOADR_GAP, DRV_NAME)) {
                ASC_DBG1(1, "advansys_isa_match: I/O port 0x%x busy\n",
                         iop_base);
                return -ENODEV;
@@ -17855,7 +14791,7 @@ static struct isa_driver advansys_isa_driver = {
        .remove         = __devexit_p(advansys_isa_remove),
        .driver = {
                .owner  = THIS_MODULE,
-               .name   = "advansys",
+               .name   = DRV_NAME,
        },
 };
 
@@ -17864,7 +14800,7 @@ static int __devinit advansys_vlb_probe(struct device *dev, unsigned int id)
        PortAddr iop_base = _asc_def_iop_base[id];
        struct Scsi_Host *shost;
 
-       if (!request_region(iop_base, ASC_IOADR_GAP, "advansys")) {
+       if (!request_region(iop_base, ASC_IOADR_GAP, DRV_NAME)) {
                ASC_DBG1(1, "advansys_vlb_match: I/O port 0x%x busy\n",
                         iop_base);
                return -ENODEV;
@@ -17897,7 +14833,7 @@ static struct isa_driver advansys_vlb_driver = {
        .remove         = __devexit_p(advansys_isa_remove),
        .driver = {
                .owner  = THIS_MODULE,
-               .name   = "advansys",
+               .name   = "advansys_vlb",
        },
 };
 
@@ -17932,7 +14868,7 @@ static int __devinit advansys_eisa_probe(struct device *dev)
 
        err = -ENODEV;
        for (i = 0; i < 2; i++, ioport += 0x20) {
-               if (!request_region(ioport, ASC_IOADR_GAP, "advansys")) {
+               if (!request_region(ioport, ASC_IOADR_GAP, DRV_NAME)) {
                        printk(KERN_WARNING "Region %x-%x busy\n", ioport,
                               ioport + ASC_IOADR_GAP - 1);
                        continue;
@@ -17990,7 +14926,7 @@ static __devexit int advansys_eisa_remove(struct device *dev)
 static struct eisa_driver advansys_eisa_driver = {
        .id_table =             advansys_eisa_table,
        .driver = {
-               .name =         "advansys",
+               .name =         DRV_NAME,
                .probe =        advansys_eisa_probe,
                .remove =       __devexit_p(advansys_eisa_remove),
        }
@@ -18037,7 +14973,7 @@ advansys_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        err = pci_enable_device(pdev);
        if (err)
                goto fail;
-       err = pci_request_regions(pdev, "advansys");
+       err = pci_request_regions(pdev, DRV_NAME);
        if (err)
                goto disable_device;
        pci_set_master(pdev);
@@ -18072,7 +15008,7 @@ static void __devexit advansys_pci_remove(struct pci_dev *pdev)
 }
 
 static struct pci_driver advansys_pci_driver = {
-       .name =         "advansys",
+       .name =         DRV_NAME,
        .id_table =     advansys_pci_tbl,
        .probe =        advansys_pci_probe,
        .remove =       __devexit_p(advansys_pci_remove),