Whamcloud - gitweb
merge b_devel into HEAD, which will become 0.7.3
[fs/lustre-release.git] / lustre / kernel_patches / patches / qla2xxx-v8.00.00b1-2.5.73.patch
1  drivers/scsi/Kconfig                |    2 
2  drivers/scsi/Makefile               |    1 
3  drivers/scsi/qla2xxx/Kconfig        |   37 
4  drivers/scsi/qla2xxx/Makefile       |   56 
5  drivers/scsi/qla2xxx/README.qla2x00 |  744 ++++
6  drivers/scsi/qla2xxx/exioct.h       |  947 +++++
7  drivers/scsi/qla2xxx/exioctln.h     |  255 +
8  drivers/scsi/qla2xxx/inioct.h       |  129 
9  drivers/scsi/qla2xxx/ql2100tp_fw.c  | 4866 ++++++++++++++++++++++++++
10  drivers/scsi/qla2xxx/ql2200ip_fw.c  | 5884 ++++++++++++++++++++++++++++++++
11  drivers/scsi/qla2xxx/ql2300tpx_fw.c | 6494 +++++++++++++++++++++++++++++++++++
12  drivers/scsi/qla2xxx/qla_cfg.c      | 2780 +++++++++++++++
13  drivers/scsi/qla2xxx/qla_cfg.h      |  181 
14  drivers/scsi/qla2xxx/qla_cfgln.c    |  726 +++
15  drivers/scsi/qla2xxx/qla_dbg.c      | 1000 +++++
16  drivers/scsi/qla2xxx/qla_dbg.h      |  138 
17  drivers/scsi/qla2xxx/qla_def.h      | 2484 +++++++++++++
18  drivers/scsi/qla2xxx/qla_fo.c       | 1681 +++++++++
19  drivers/scsi/qla2xxx/qla_fo.cfg     |   31 
20  drivers/scsi/qla2xxx/qla_fo.h       |   75 
21  drivers/scsi/qla2xxx/qla_gbl.h      |  395 ++
22  drivers/scsi/qla2xxx/qla_inioct.c   |  495 ++
23  drivers/scsi/qla2xxx/qla_init.c     | 5945 ++++++++++++++++++++++++++++++++
24  drivers/scsi/qla2xxx/qla_inline.h   |  375 ++
25  drivers/scsi/qla2xxx/qla_iocb.c     | 1276 ++++++
26  drivers/scsi/qla2xxx/qla_ip.c       | 1769 +++++++++
27  drivers/scsi/qla2xxx/qla_ip.h       |  420 ++
28  drivers/scsi/qla2xxx/qla_isr.c      | 1474 ++++++++
29  drivers/scsi/qla2xxx/qla_listops.h  |  397 ++
30  drivers/scsi/qla2xxx/qla_mbx.c      | 2884 +++++++++++++++
31  drivers/scsi/qla2xxx/qla_os.c       | 5879 ++++++++++++++++++++++++++++++++
32  drivers/scsi/qla2xxx/qla_os.h       |  156 
33  drivers/scsi/qla2xxx/qla_settings.h |   80 
34  drivers/scsi/qla2xxx/qla_sup.c      |  560 +++
35  drivers/scsi/qla2xxx/qla_vendor.c   |  193 +
36  drivers/scsi/qla2xxx/qla_version.h  |   31 
37  drivers/scsi/qla2xxx/qla_xioct.c    | 6589 ++++++++++++++++++++++++++++++++++++
38  drivers/scsi/qla2xxx/qlfo.h         |  413 ++
39  drivers/scsi/qla2xxx/qlfolimits.h   |   92 
40  drivers/scsi/qla2xxx/qlfoln.h       |   76 
41  drivers/scsi/qla2xxx/release.txt    |   22 
42  drivers/scsi/qla2xxx/revision.notes |  167 
43  42 files changed, 58199 insertions(+)
44
45 --- linux-2.5.73/drivers/scsi/Makefile~qla2xxx-v8.00.00b1-2.5.73        Sun Jun 22 11:33:08 2003
46 +++ linux-2.5.73-n9560/drivers/scsi/Makefile    Thu Jul  3 15:34:28 2003
47 @@ -73,6 +73,7 @@ obj-$(CONFIG_SCSI_QLOGIC_FAS) += qlogicf
48  obj-$(CONFIG_SCSI_QLOGIC_ISP)  += qlogicisp.o 
49  obj-$(CONFIG_SCSI_QLOGIC_FC)   += qlogicfc.o 
50  obj-$(CONFIG_SCSI_QLOGIC_1280) += qla1280.o 
51 +obj-$(CONFIG_SCSI_QLA2XXX)      += qla2xxx/
52  obj-$(CONFIG_SCSI_PAS16)       += pas16.o
53  obj-$(CONFIG_SCSI_SEAGATE)     += seagate.o
54  obj-$(CONFIG_SCSI_FD_8xx)      += seagate.o
55 --- linux-2.5.73/drivers/scsi/Kconfig~qla2xxx-v8.00.00b1-2.5.73 Sun Jun 22 11:33:16 2003
56 +++ linux-2.5.73-n9560/drivers/scsi/Kconfig     Thu Jul  3 15:34:28 2003
57 @@ -1283,6 +1283,8 @@ config SCSI_QLOGIC_1280
58           The module will be called qla1280. If you want to compile it as
59           a module, say M here and read <file:Documentation/modules.txt>.
60  
61 +source "drivers/scsi/qla2xxx/Kconfig"
62 +
63  config SCSI_QLOGICPTI
64         tristate "PTI Qlogic, ISP Driver"
65         depends on SBUS && SCSI
66 --- /dev/null   Thu Apr 11 07:25:15 2002
67 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/Kconfig     Thu Jul  3 15:34:42 2003
68 @@ -0,0 +1,37 @@
69 +config SCSI_QLA2XXX
70 +       bool "QLogic QLA2XXX FC-SCSI support (v8)"
71 +       ---help---
72 +       help here...
73 +
74 +config SCSI_QLA2XXX_QLA21XX
75 +       tristate "QLogic QLA21xx FC-SCSI support (v8)"
76 +       depends on SCSI_QLA2XXX
77 +       ---help---
78 +       help here...
79 +
80 +       If you want to compile the driver as a module ( = code which can be
81 +       inserted in and removed from the running kernel whenever you want),
82 +       say M here and read <file:Documentation/modules.txt>.  The module
83 +       will be called qla2100.
84 +
85 +config SCSI_QLA2XXX_QLA22XX
86 +       tristate "QLogic QLA22xx FC-SCSI support (v8)"
87 +       depends on SCSI_QLA2XXX
88 +       ---help---
89 +       help here...
90 +
91 +       If you want to compile the driver as a module ( = code which can be
92 +       inserted in and removed from the running kernel whenever you want),
93 +       say M here and read <file:Documentation/modules.txt>.  The module
94 +       will be called qla2200.
95 +
96 +config SCSI_QLA2XXX_QLA23XX
97 +       tristate "QLogic QLA23xx FC-SCSI support (v8)"
98 +       depends on SCSI_QLA2XXX
99 +       ---help---
100 +       help here...
101 +
102 +       If you want to compile the driver as a module ( = code which can be
103 +       inserted in and removed from the running kernel whenever you want),
104 +       say M here and read <file:Documentation/modules.txt>.  The module
105 +       will be called qla2300.
106 --- /dev/null   Thu Apr 11 07:25:15 2002
107 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/Makefile    Thu Jul  3 15:34:42 2003
108 @@ -0,0 +1,56 @@
109 +# Kernel makefile for 8.x series QLogic Fibre Channel driver.
110 +#
111 +EXTRA_CFLAGS += -Idrivers/scsi -I$(obj) -DUNIQUE_FW_NAME
112 +
113 +ISPTYPES := qla2100 qla2200 qla2300
114 +ISPDIRS := $(foreach dir, $(ISPTYPES), $(addsuffix /, $(addprefix .,$(dir))))
115 +
116 +ISP2100_FW := ql2100tp_fw.o
117 +ISP2200_FW := ql2200ip_fw.o
118 +ISP2300_FW := ql2300tpx_fw.o #ql2322tpx_fw.o
119 +
120 +COMMON_SRCS := qla_os.c qla_init.c qla_mbx.c qla_iocb.c qla_isr.c qla_xioct.c qla_inioct.c \
121 +               qla_dbg.c qla_sup.c qla_fo.c qla_cfg.c qla_cfgln.c qla_vendor.c
122 +COMMON_OBJS := $(foreach file, $(COMMON_SRCS), $(patsubst %.c, %.o, $(file)))
123 +
124 +ISP2100_DIR_SRCS := $(foreach file, $(COMMON_SRCS), $(addprefix .qla2100/,$(file)))
125 +ISP2100_DIR_OBJS := $(foreach file, $(COMMON_OBJS), $(addprefix .qla2100/,$(file)))
126 +ISP2200_DIR_SRCS := $(foreach file, $(COMMON_SRCS), $(addprefix .qla2200/,$(file)))
127 +ISP2200_DIR_OBJS := $(foreach file, $(COMMON_OBJS), $(addprefix .qla2200/,$(file)))
128 +ISP2300_DIR_SRCS := $(foreach file, $(COMMON_SRCS), $(addprefix .qla2300/,$(file)))
129 +ISP2300_DIR_OBJS := $(foreach file, $(COMMON_OBJS), $(addprefix .qla2300/,$(file)))
130 +
131 +PREPALL := $(shell for dir in $(ISPDIRS) ; \
132 +       do \
133 +               if [ ! -d $(obj)/$${dir} ] ; then \
134 +                       mkdir $(obj)/$${dir} ; \
135 +               fi ; \
136 +               for link in $(foreach file, $(COMMON_OBJS), $(patsubst %.o, %.c, $(file))) ; \
137 +               do \
138 +                       if [ ! -h $(obj)/$${dir}$${link} ] ; then \
139 +                               ln -sf ../$${link} $(obj)/$${dir}$${link} ; \
140 +                       fi ; \
141 +               done \
142 +       done)
143 +
144 +obj-$(CONFIG_SCSI_QLA2XXX_QLA21XX) += qla2100.o
145 +obj-$(CONFIG_SCSI_QLA2XXX_QLA22XX) += qla2200.o
146 +obj-$(CONFIG_SCSI_QLA2XXX_QLA23XX) += qla2300.o
147 +
148 +$(obj)/qla2100.o: $(PREPALL)
149 +$(obj)/qla2100.o: ISPTYPE := qla21xx
150 +$(obj)/qla2100.o: EXTRA_CFLAGS += -D$(ISPTYPE)
151 +
152 +$(obj)/qla2200.o: $(PREPALL)
153 +$(obj)/qla2200.o: ISPTYPE := qla22xx
154 +$(obj)/qla2200.o: EXTRA_CFLAGS += -D$(ISPTYPE)
155 +
156 +$(obj)/qla2300.o: $(PREPALL)
157 +$(obj)/qla2300.o: ISPTYPE := qla23xx
158 +$(obj)/qla2300.o: EXTRA_CFLAGS += -D$(ISPTYPE) -DTPX -DEXTENDED_IDS 
159 +
160 +qla2100-objs := $(ISP2100_DIR_OBJS) $(ISP2100_FW) 
161 +qla2200-objs := $(ISP2200_DIR_OBJS) $(ISP2200_FW) 
162 +qla2300-objs := $(ISP2300_DIR_OBJS) $(ISP2300_FW) 
163 +
164 +clean-files := $(ISP2100_DIR_SRCS) $(ISP2200_DIR_SRCS) $(ISP2300_DIR_SRCS)
165 --- /dev/null   Thu Apr 11 07:25:15 2002
166 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/README.qla2x00      Thu Jul  3 15:34:42 2003
167 @@ -0,0 +1,744 @@
168 +                 QLogic Fibre Channel Driver
169 +     for Red Hat Linux 7.2, 7.3, and Advanced Server 2.1
170 +             and Suse Linux 7.3, and Enterprise 7
171 +
172 +Products supported: QLA22XX, QLA23XX
173 +
174 +09/10/2002
175 +
176 +Contents
177 +--------
178 +
179 +1. OS Support
180 +
181 +2. Supported Features
182 +
183 +3. Release History
184 +
185 +4. Saving the Driver Source to Diskette
186 +
187 +5. Installing the Driver
188 +
189 +   5.1  Building the driver from the Source
190 +   5.1.1. Building a Uni-Processor (UP) version of the driver
191 +   5.1.2. Building a Symmetric Multi-Processor(SMP) version of the
192 +          Driver
193 +   5.2  Load the Driver Manually using INSMOD or MODPROBE
194 +   5.3  Making a RAMDISK Image to Load the Driver
195 +
196 +6. Driver Parameters
197 +
198 +   6.1  System Parameters
199 +   6.1.1  Multiple LUN Support
200 +   6.2  NVRAM Parameters
201 +   6.3  Driver Command Line Parameters
202 +
203 +7. Limitations
204 +
205 +8. Additional Notes
206 +
207 +   8.1 Proc Filesystem Support
208 +   8.2 Co-existence of QLogic 4.x and 6.x Linux Drivers
209 +   8.3 Failover Support 
210 +   8.3.1 How to enable the  Failover support in the Driver
211 +   8.3.2 Using SANsurfer with QLA2XXX Driver the First Time
212 +   8.3.3 Configuration Changes Made via SANsurfer
213 +   8.4 Persistent Binding      
214 +
215 +9. Diskette Content
216 +
217 +10. Contacting QLogic
218 +
219 +
220 +**********************************************************************
221 +
222 +
223 +1. OS Support 
224 +-------------
225 +
226 +This driver works with Red Hat Linux 7.2, 7.3, and Advanced Server 
227 +2.1 and Suse Linux 7.3 and Enterprise 7. Earlier or later versions 
228 +of Linux may be supported but were not tested at the time of this 
229 +release. Refer to the SUPPORTED_KERNEL_VERSION.txt file for a list
230 +of kernel versions tested with this release.
231 +
232 +
233 +**********************************************************************
234 +
235 +
236 +2. Supported Features
237 +---------------------
238 +
239 +* FCAL - direct attach loop
240 +* Point-to-point
241 +* Fabric support
242 +* Initiator mode only
243 +* Fault recovery on down loops
244 +* Persistent binding 
245 +* Extended LUN support up to 255 LUNs
246 +* FC tape support
247 +* IPFC support
248 +* Non Failover and Failover capability
249 +
250 +
251 +**********************************************************************
252 +
253 +
254 +3. Release History
255 +------------------
256 +
257 +Please refer to Release Notes (release.txt).
258 +
259 +
260 +**********************************************************************
261 +
262 +
263 +4. Saving the Driver Source to Diskette
264 +---------------------------------------
265 +
266 +1. Download the failover or non-failover qla2x00src-vx.yy-*.tgz file 
267 +   from QLogic's website.
268 +
269 +   * Failover compressed file has suffix "fo" while non failover 
270 +     does not.         
271 +
272 +2. If prompted "What would you like to do with this file?" choose 
273 +   "Save this file to disk."
274 +3. Insert a blank diskette and download to the diskette directly.
275 +
276 +
277 +**********************************************************************
278 +
279 +
280 +5. Installing the Driver 
281 +------------------------
282 +
283 +NOTE: Refer to the file BUILD_KERNEL.txt for instructions on how 
284 +      to build a custom kernel with the QLogic Driver embedded.
285 +
286 +5.1  Building a Driver from the Source Code 
287 +-------------------------------------------
288 +
289 +From the source code, you can build a qla2200.o or qla2300.o for
290 +your UP or SMP system, and load the driver manually or automatically
291 +using a RAMDISK image during system boot time.
292 +
293 +
294 +5.1.1 Building a Uni-Processor (UP) Version of the Driver
295 +---------------------------------------------------------
296 +
297 +1. Extract the kernel-headers and kernel-sources RPM files from the 
298 +   first RedHat CD:
299 +
300 +       # cd /mnt/cdrom/RedHat/RPMS
301 +       # rpm -iv kernel-headers*.rpm (not required for Red Hat 7.3)
302 +       # rpm -iv kernel-source*.rpm
303 +
304 +2. Using the diskette you created in Section 4, copy the
305 +   qla2x00src-vx.yy-*.tgz file to /qla2x00. Follow these steps from
306 +   the "/" (root) directory:
307 +
308 +       # mkdir qla2x00
309 +       # cd qla2x00
310 +       # mount /mnt/floppy
311 +       # cp /mnt/floppy/*.tgz . (the period at the end is required)
312 +       # tar -xvzf *.tgz
313 +       # cd qlogic
314 +       # ./drvsetup (this will extract the source files in to the 
315 +                     current directory)
316 +
317 +3. Build the Driver qla2200.o and qla2300.o from the source code by
318 +   typing:
319 +
320 +       # make all
321 +
322 +   For SuSE Distribution:
323 +       
324 +       # make all OSVER=linux
325 +
326 +4. To load the driver manually, see section 5.2. To make a RAMDISK
327 +   image to load the driver during system boot time, see section 5.3.
328 +
329 +
330 +5.1.2. Building a Symmetric Multi-Processor (SMP) Version of the Driver
331 +-----------------------------------------------------------------------
332 +
333 +1. Extract the kernel-headers and kernel-source RPM files from the 
334 +   first RedHat CD:
335 +
336 +       # cd /mnt/cdrom/RedHat/RPMS
337 +       # rpm -iv kernel-headers*.rpm (not required for Red Hat 7.3)
338 +       # rpm -iv kernel-source*.rpm
339 +
340 +2. Using the diskette you created in Section 4, copy the
341 +   qla2x00src-vx.yy-*.tgz file to /qla2x00. Follow these steps from
342 +   the "/" (root) directory:
343 +
344 +       # mkdir qla2x00
345 +       # cd qla2x00
346 +       # mount /mnt/floppy
347 +       # cp /mnt/floppy/*.tgz . (the period at the end is required)
348 +       # tar -xvzf *.tgz
349 +       # cd qlogic
350 +       # ./drvsetup (this will extract the source files in to the
351 +                     current directory)
352 +
353 +3. Build the Driver qla2200.o and qla2300.o from the source code by
354 +   typing:
355 +
356 +       # make all SMP=1
357 +
358 +   For SuSE Distribution:
359 +       
360 +       # make all SMP=1 OSVER=linux
361 +
362 +4. To load the driver manually, see section 5.2. To make a RAMDISK 
363 +   image to load the driver during system boot time, see section 5.3.
364 +
365 +
366 +5.2  Load the Driver Manually using INSMOD or MODPROBE
367 +------------------------------------------------------
368 +
369 +Before loading the driver manually, first build the driver binary from
370 +the driver source files as described in sections 5.1.1 and 5.1.2.
371 +
372 +- To load the driver directly from the local build directory, type
373 +  the following:
374 +
375 +       # insmod qla2200.o
376 +               or
377 +       # insmod qla2300.o        
378 +
379 +- To load the driver using modprobe:
380 +
381 +       1. Build the driver qla2200.o and qla2300.o from the source
382 +          code by typing:
383 +
384 +          # make all install
385 +
386 +         For SuSE Distribution:
387 +       
388 +                 # make all OSVER=linux install
389 +
390 +       2. To ensure that the older driver binary included in the
391 +          original distribution does not interfere with the updated
392 +          version, please rename the old driver binary as follows:
393 +
394 +          # cd /lib/modules/<kernel_version>/kernel/drivers/addon/qla2200
395 +          # mv qla2200.o qla2200_rh.o
396 +          # mv qla2300.o qla2300_rh.o
397 +
398 +       3. Type the following to load the Driver:
399 +
400 +          # modprobe qla2200
401 +                  or
402 +          # modprobe qla2300
403 +
404 +
405 +5.3  Making a RAMDISK Image to Load the Driver
406 +----------------------------------------------
407 +
408 +1. Build the Driver binary files (see 5.1.1 and 5.1.2).
409 +
410 +2. Copy the files to:
411 +
412 +     /lib/modules/<kernel version>/kernel/drivers/scsi/
413 +
414 +
415 +NOTE:  To ensure that the older Driver binary included in the original
416 +       distribution does not interfere with the updated version, 
417 +       please rename the old Driver binary as follows:
418 +
419 +       # cd /lib/modules/<kernel_version>/kernel/drivers/addon/qla2200
420 +       # mv qla2200.o qla2200_rh.o
421 +       # mv qla2300.o qla2300_rh.o
422 +
423 +3. Add the following line to /etc/modules.conf.
424 +
425 +       alias scsi_hostadapter0 qla2200
426 +              or
427 +       alias scsi_hostadapter0 qla2300
428 +
429 +NOTE: Must add one entry for each HBA in the system. For example,
430 +      If two QLA2200 hbas are installed add the following:
431 +
432 +      alias scsi_hostadapter0 qla2200
433 +      alias scsi_hostadapter1 qla2200
434 +
435 +4. Type the following command:
436 +
437 +         # mkinitrd -f <ramdisk image file name> <kernel version>
438 +
439 +NOTE: This step will overwrite the original ramdisk image file if 
440 +      executed within the /boot directory. Specify a unique ramdisk
441 +      image name to preserve the original ramdisk image.
442 +
443 +       - Copy the file to /boot.
444 +
445 +   For SuSE Distribution:
446 +
447 +       - Type the following command:
448 +
449 +         # /sbin/mk_initrd
450 +
451 +       NOTE: By default, the RAMDISK images created are:
452 +
453 +         /boot/initrd
454 +         /boot/initrd.suse
455 +
456 +5. Configure the boot loader with the new RAMDISK image.  
457 +
458 +   For LILO:
459 +
460 +       Add "initrd=/boot/<ramdisk file name>" in 
461 +       /etc/lilo.conf under one of the kernel entries 
462 +       to use the RAMDISK image.
463 +  
464 +       Run "lilo" and reboot system. Select the kernel 
465 +       with the new RAMDISK image to come up.
466 +
467 +   For GRUB:
468 +
469 +       Add "initrd=/boot/<RAMDISK file name>" in 
470 +       /etc/grub.conf under one of the kernel entries 
471 +       to use the RAMDISK image.
472 +
473 +**********************************************************************
474 +
475 +
476 +6. Driver Parameters
477 +--------------------
478 +
479 +The Driver parameters are divided into System Parameters and NVRAM 
480 +Parameters sections.
481 +
482 +
483 +6.1  System Parameters
484 +----------------------
485 +
486 +6.1.1  Multiple LUN Support
487 +--------------------------
488 +
489 +Support for multiple LUNs can be configured in one of three ways. 
490 +Currently, the maximum number of LUNs that can be scanned for each
491 +device is 128.
492 +
493 +The kernel must be configured to have multiple LUN support enabled
494 +in order for non-zero LUNs to be configured and accessible.  Use
495 +"make menuconfig" (as described in step 6, section 5.1) to build a
496 +kernel which has the option under SCSI Support enabled to probe all
497 +LUNs on SCSI devices.
498 +
499 +
500 +NOTE:  If you have multiple adapters, set max_scsi_luns to the
501 +       largest number of LUNs supported by any one of these adapters.
502 +
503 +- To configure multiple LUN support during boot time, type the 
504 +following at the boot prompt:
505 +
506 +boot: linux max_scsi_luns=128
507 +
508 +- If the SCSI Mid-Layer is compiled as a module, add the following
509 +line to the /etc/modules.conf file to scan for multiple LUNs at
510 +each boot:
511 +
512 +options scsi_mod max_scsi_luns=128
513 +
514 +- If the SCSI Mid-Layer is not compiled as a module, the boot loader
515 +can be configured to scan for multiple LUNs each time the system
516 +boots.
517 +
518 +For LILO, perform the following steps:
519 +
520 +a) Add the following line to each of the kernel images listed in the
521 +   /etc/lilo.conf file:
522 +
523 +append="max_scsi_luns=128"
524 +
525 +b) Run "lilo" and reboot the system.
526 +
527 +For GRUB, perform the following steps:
528 +
529 +a) Append the max_scsi_luns parameters to each of the kernel images 
530 +listed in the /etc/grub.conf file. For example:
531 +
532 +kernel /vmlinux-2.4.7-10 ro root=/dev/hda2 max_scsi_luns=128
533 +
534 +b) Reboot the system.
535 +
536 +
537 +6.2  NVRAM Parameters
538 +---------------------
539 +
540 +The NVRAM features described below are hard-coded in the Driver. The 
541 +changes made for the particular NVRAM feature in the Fast!Util do not
542 +take effect unless otherwise noted.
543 +
544 +None.
545 +
546 +
547 +6.3  Driver Command Line Parameters
548 +-----------------------------------
549 +
550 +'verbose' and 'quiet' are the available command line options.
551 +
552 + verbose - Verbose detail debug information
553 +
554 + quiet   - Driver does not display:
555 +              Waiting for LIP to complete....
556 +              scsi%d: Topology - %s, Host Loop address 0x%x
557 +              scsi(%d): LIP occurred
558 +              scsi(%d): LIP reset occurred
559 +
560 + Usage examples:
561 +
562 +           # insmod qla2200.o options = verbose
563 +           # insmod qla2300.o options = verbose
564 +           # insmod qla2200.o ql2xopts = quiet
565 +           # insmod qla2300.o ql2xopts = quiet
566 +
567 +
568 +**********************************************************************
569 +
570 +
571 +7. Limitations
572 +--------------
573 +
574 +       N/A
575
576 +
577 +**********************************************************************
578 +
579 +
580 +8. Additional Notes
581 +---------------------
582 +
583 +
584 +8.1  Proc Filesystem Support
585 +-----------------------------
586 +
587 +The /proc filesystem for the QLA2200 and QLA2300 driver can be found
588 +in the /proc/scsi/qla2200/ and /proc/scsi/qla2300/ directories. These 
589 +directories contain a file for each QLogic Fibre Channel adapter
590 +in the system. Each file will present information about the adapter
591 +and transfer statistics for each discovered LUN.
592 +
593 +
594 +8.2  Co-existence of QLogic 4.x and 6.x Linux Drivers
595 +-----------------------------------------------------
596 +
597 +The 4.x driver provides support for QLA2100, QLA2200, and QLA23xx.
598 +The 6.x driver supports the QLA2200 and QLA23xx only. To make the
599 +drivers "co-exist", perform the following:
600 +
601 +  Option 1.  4.x support for QLA2100
602 +             6.x support for QLA2200 and QLA23xx
603 +
604 +        o Remove QLA2200/QLA2300/QLA2312 support from the 4.x series
605 +           driver:
606 +
607 +        - Edit the qla2x00.c file
608 +
609 +        - Look for the following line:
610 +
611 +               {"QLA2300 ", QLA2300_DEVICE_ID,           MAX_BUSES,
612 +
613 +          OR
614 +
615 +               {"QLA2312 ", QLA2312_DEVICE_ID,           MAX_BUSES,
616 +
617 +        - Above the found line, add this line:
618 +
619 +                #if 0
620 +
621 +        - The resulting lines should read as:
622 +
623 +                #if 0
624 +                {"QLA2300 ", QLA2300_DEVICE_ID,           MAX_BUSES,
625 +
626 +          OR
627 +
628 +                #if 0
629 +                {"QLA2312 ", QLA2312_DEVICE_ID,           MAX_BUSES,
630 +
631 +        - Look for the following line:
632 +
633 +                {"QLA2100 ", QLA2100_DEVICE_ID,           MAX_BUSES,
634 +
635 +        - Above the found line, add this line:
636 +
637 +                #endif
638 +
639 +        - The resulting lines should read as:
640 +
641 +                #endif
642 +                {"QLA2100 ", QLA2100_DEVICE_ID,           MAX_BUSES,
643 +
644 +  Option 2.  4.x support for QLA2100 and QLA2200
645 +             6.x support for QLA23xx
646 +
647 +         o Remove QLA2300/QLA2312 support from the 4.x series driver:
648 +
649 +        - Edit the qla2x00.c file
650 +
651 +        - Look for the following line:
652 +
653 +               {"QLA2300 ", QLA2300_DEVICE_ID,           MAX_BUSES,
654 +
655 +          OR
656 +
657 +               {"QLA2312 ", QLA2312_DEVICE_ID,           MAX_BUSES,
658 +
659 +        - Above the found line, add this line:
660 +
661 +                #if 0
662 +
663 +        - The resulting lines should read as:
664 +
665 +                #if 0
666 +                {"QLA2300 ", QLA2300_DEVICE_ID,           MAX_BUSES,
667 +
668 +          OR
669 +
670 +                #if 0
671 +                {"QLA2312 ", QLA2312_DEVICE_ID,           MAX_BUSES,
672 +
673 +        - Look for the following line:
674 +
675 +                {"QLA2200 ", QLA2200_DEVICE_ID,           MAX_BUSES,
676 +
677 +        - Above the found line, add this line:
678 +
679 +                #endif
680 +
681 +        - The resulting lines should read as:
682 +
683 +                #endif
684 +                {"QLA2200 ", QLA2200_DEVICE_ID,           MAX_BUSES,
685 +
686 +
687 +8.3 Failover Support
688 +---------------------
689 +
690 +8.3.1 How to enable the  Failover support in the Driver
691 +-------------------------------------------------------
692 +
693 +Failover support can be enabled in the QLA2XXX driver by enabling the
694 +macro MPIO_SUPPORT in qla_settings.h file ie
695 +
696 +#define MPIO_SUPPORT                    1
697 +
698 +Note: The failover distribution package, qla2x00src-vx.yy.zz-fo.tgz, 
699 +has the above macro enabled by default.
700 +
701 +
702 +8.3.2 Using SANsurfer with QLA2XXX Driver the First Time
703 +________________________________________________________
704 +
705 +1. To work with SANsurfer, the driver should always be built
706 +   with MPIO_SUPPORT set to 1 in qla_settings.h.
707 +
708 +2. Add the following parameter in modules.conf file:
709 +
710 +   options qla2200 ConfigRequired=1 ql2xopts=
711 +             or
712 +   options qla2300 ConfigRequired=1 ql2xopts=
713 +
714 +3. Now you can load the driver and SANsurfer.
715 +
716 +
717 +8.3.3 Configuration Changes Made via SANsurfer
718 +--------------------------------------------
719 +
720 +1. LUN Masking
721 +
722 +   For the new LUN masking configuration to take effect, the
723 +   driver must be reloaded.  The following is an example of
724 +   the sequence of actions to take:
725 +
726 +   - Load the driver:
727 +
728 +     modprobe <driver>
729 +
730 +   - Load the qlremote agent.
731 +
732 +   - Start the GUI and connect it to the destination system.
733 +
734 +   - Make LUN masking changes.
735 +
736 +   - Disconnect the host from GUI and stop qlremote agent.
737 +
738 +   - Unload the driver:
739 +
740 +     modprobe -r <driver>
741 +
742 +   - Reload the driver:
743 +
744 +     modprobe <driver>
745 +
746 +   - Load qlremote agent again.
747 +
748 +   - Start the GUI and connect it to the destination system.
749 +
750 +   Now you should see the updated LUN masking configuration.
751 +
752 +Please note that when using modprobe to load the driver, the
753 +length of the option line specified in /etc/modules.conf file
754 +has a limit of 2K characters. Any longer option line will cause
755 +a string overflow error from modprobe.
756 +
757 +
758 +8.4 Persistent Binding
759 +______________________
760 +
761 +
762 +The Persistent Binding information consists of some adapter parameter
763 +entries along with some target entries. However, the Linux entries 
764 +have been shorten to save space on the command line. Currently, there
765 +is no limit on the size of the command line when using modprobe. But,
766 +if you embedded the driver in the kernel you are using lilo that has 
767 +a string size limitation.
768 +
769 +Persistent Binding  can be specified in two ways. Manually or using
770 +SANsurfer. We recommend using SANsurfer for ease of use. Reference 
771 +section 8.3.3 for additonal information about SANsurfer. The 
772 +following is the procedure to manually add persistent binding 
773 +commands: 
774 +
775 +The driver displays the current configuration when the displayConfig
776 +command line option is specified. The persistent binding 
777 +configuration is found in /var/log/messages file. It prints the 
778 +configuration information in the format required by the driver.
779 +The best way to extract configuration messages is to use grep and 
780 +direct the output to a file. You need to remove the Linux timestamp at
781 +the beginning of each message and combine them together on single line.
782 +For example
783 +        #insmod qla2200 displayConfig=1
784 +        #grep "scsi-qla" /var/log/messages > /tmp/info.cfg
785 +
786 +The format of the persistent binding commands is as follows: 
787 +
788 +Device descriptions
789 +
790 +scsi-qla<#>-adapter-port=<adapter port name value>;
791 +The designated by qla<#>, where the <#> is the adapter instance number.
792 +
793 +The parameter specifies the FC port name to be used for the adapter.
794 +where <adapter port name value> is the FC port name value in hexa-
795 +    decimal format.  If this entry is not specified in the conf file,
796 +    the default value is the adapter's port name as saved in the NVRAM.
797 +Example:
798 +scsi-qla00-adapter-port=210000e08b01158d\;
799 +
800 +host adapter instance 0 has a portname of 210000e08b01158d
801 +
802 +scsi-qla<#1>-tgt-<#2>-di-<#3>-node=<device FC name>;
803 +This parameter associates the specified <device FC name> with the
804 +SCSI target ID value specified by <#2> and a device id value specified
805 +by <#3>. where <device FC name> type is the FC node name of the 
806 +device, and <#2> is the SCSI target ID to be assigned to the device 
807 +and <#3> is the device unique id.
808 +Where
809 +   <#1>   Specifies the adapter instance number   
810 +   <#2>   Specifies the SCSI ID of Target
811 +   <#3>   Specifies the path/device id 
812 +
813 +scsi-qla<#1>-tgt-<#2>-di-<#3>-port=<device FC name>;
814 +This parameter associates the specified <device FC name> with the
815 +SCSI target ID value specified by <#2> and a device id value specified
816 +by <#3>. where <device FC name> type is the FC port 
817 +Where
818 +   <#1>   Specifies the adapter instance number   
819 +   <#2>   Specifies the SCSI ID of Target
820 +   <#3>   Specifies the path/device id (always 0 for non-failover)
821 +
822 +name of the device, and <#2> is the SCSI target ID to be assigned to 
823 +the device and <#3> is the device unique id.
824 +
825 +scsi-qla<#1>-tgt-<#2>-di-<#3>-disabled=<256 bit mask>;
826 +This parameter associates the specified <256 bit mask> with the
827 +SCSI target ID value specified by <#2> and a device id value specified
828 +by <#3>. 
829 +
830 +Where
831 +   <#1>   Specifies the adapter instance number   
832 +   <#2>   Specifies the SCSI ID of Target
833 +   <#3>   Specifies the path/device id 
834 +
835 +<256 bit mask>
836 +msb                                                            lsb
837 + 000000000000000000000000000000000000000000000000000000000000000F
838 +
839 +the mask above will make the first four luns, 3, 2, 1, and 0 of a 
840 +given Target disabled on that target/path.
841 +
842 +This mask specification is heavily type checked to be a sequence of
843 +64 hex digits.
844 +
845 +**********************************************************************
846 +
847 +
848 +9. Diskette Content 
849 +--------------------
850 +
851 +The qla2x00src-vx.yy.zz-*.tgz files can be extracted into the 
852 +following files:
853 +
854 +       listops.h
855 +       Makefile.kernel
856 +       Config.in
857 +       makefile
858 +       qla_settings.h
859 +       qla_debug.h
860 +       ql2100_fw.h
861 +       ql2200_fw.h
862 +       ql2300_fw.h
863 +       ql2200ip_fw.h
864 +       ql2300ip_fw.h
865 +       qla2100.c
866 +       qla2200.c
867 +       qla2300.c
868 +       qla2x00.c
869 +       qla2x00.h
870 +       qla2x00_ioctl.c
871 +       qla_vendor.c
872 +       qla_cfg.c
873 +       qla_cfgln.c
874 +       qla_fo.c
875 +       qla_fo.cfg 
876 +       qla_inioct.c
877 +       qla_ip.c
878 +       qla_mbx.c
879 +       qla_mbx.h
880 +       exioctln.h
881 +       exioct.h
882 +       inioct.h
883 +       qla_cfg.h
884 +       qla_fo.h
885 +       qla_gbl.h
886 +       qla_ip.h
887 +       qlfo.h
888 +       qlfolimits.h
889 +       qlfoln.h
890 +       qla_version.h
891 +       revision.notes - Revision history
892 +       release.txt - Release notes
893 +       README.qla2x00 - This file
894 +
895 +
896 +**********************************************************************
897 +
898 +
899 +10. Contacting QLogic 
900 +---------------------
901 +
902 +Please visit QLogic's website (www.qlogic.com). On this site you will
903 +find product information, our latest drivers, and links for technical
904 +assistance if needed.
905 +
906 +
907 +======================================================================
908 +
909 +
910 +    Copyright (c) 2003 QLogic Corporation. All rights reserved 
911 +    worldwide. 
912 --- /dev/null   Thu Apr 11 07:25:15 2002
913 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/exioct.h    Thu Jul  3 15:34:42 2003
914 @@ -0,0 +1,947 @@
915 +/******************************************************************************
916 + *                  QLOGIC LINUX SOFTWARE
917 + *
918 + * QLogic ISP2x00 device driver for Linux 2.5.x
919 + * Copyright (C) 2003 Qlogic Corporation
920 + * (www.qlogic.com)
921 + *
922 + * This program is free software; you can redistribute it and/or modify it
923 + * under the terms of the GNU General Public License as published by the
924 + * Free Software Foundation; either version 2, or (at your option) any
925 + * later version.
926 + *
927 + * This program is distributed in the hope that it will be useful, but
928 + * WITHOUT ANY WARRANTY; without even the implied warranty of
929 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
930 + * General Public License for more details.
931 + *
932 + ******************************************************************************/
933 +
934 +/*
935 + * File Name: exioct.h
936 + *
937 + * San/Device Management Ioctl Header
938 + * File is created to adhere to Solaris requirement using 8-space tabs.
939 + *
940 + * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
941 + * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
942 + * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
943 + *
944 + * Revision History:
945 + *
946 + * Rev. 0      March 1, 2000
947 + * YPL - Created.
948 + *
949 + * Rev. 1      March 2, 2000
950 + * RLU - Updated with latest definitions.  Added more comments.
951 + *
952 + * Rev. 2      May 16, 2000                
953 + * SP  - Updated definitions and changed structures (March 27, 2000)
954 + * SP   - Addded structures 
955 + *
956 + * Rev. 3      June 1, 2000                 
957 + * THL - Made major changes to include all changes talked in our meeting.
958 + *
959 + * Rev. 4      June 5, 2000
960 + * RLU - Added new definitions/structures for SDM_GET_AEN and SDM_REG_AEN 
961 + *       functions.
962 + *     - Major definition/structure name changes as discussed in meetings.
963 + *     - Deleted duplicated command code and structure definitions.
964 + *
965 + * Rev. 4.1    June 14, 2000
966 + * WTR  - Moved Solaris specific defines to exioctso.h. This makes it
967 + *       possible for application developers to include only exioct.h
968 + *       in their Solaris application development.
969 + *
970 + * Rev. 4.2    June 15, 2000
971 + * THL  - Changed UINT16 and UINT32 back to WORD and DWORD for NT; otherwise,
972 + *       NT will get a compilation error for redefining UINT16 and UINT32.
973 + *       Added RISC_CODE/FLASH_RAM macros.
974 + *
975 + * Rev. 4.3    June 22, 2000
976 + * THL  - Changed SDM_FC_ADDR according to External Ioctls document.
977 + *       Added SDM_DEF_TYPE macros.
978 + *
979 + * Rev. 4.4    June 22, 2000
980 + * THL  - Moved NT specific defines to exioctnt.h.
981 + *
982 + * Rev. 4.5     August 15, 2000
983 + * SP   - Rolled back some changes made by Todd R.
984 + *       Kept new status code SDM_STATUS_NO_MEMORY
985 + *       Port types fabric and tape device 
986 + *
987 + * Rev. 4.7     Sep 6, 2000
988 + * YPL  - Replace SDM_ with EXT_, _ISP with _CHIP.
989 + *       Add vendor specific statuses, device update, config defines.
990 + *
991 + * Rev. 5.0     Sep 13, 2000
992 + * YPL  - Update version to 5, remove max defines, make port type bit.
993 + *       Change HBA_PORT_PROPERTY to have bus/target/lun defined as UINT16
994 + *
995 + * Rev. 5.1     Sep 22, 2000
996 + * THL  - Add destination address for specify scsi address or FC address.
997 + *       Remove "not support" comment and add more macros.
998 + *
999 + * Rev. 5.2     Sep 27, 2000
1000 + * THL  - Add new macros and structure for add and swap target device.
1001 + *       Create new data structure for get port database.
1002 + * TLE  - Merge changes needed for FailOver
1003 + *
1004 + * Rev. 5.3     Sep 29, 2000
1005 + * THL  - Add access mode for NVRAM.
1006 + * 
1007 + * Rev. 5.4     Oct 03, 2000
1008 + * THL  - Add EXT_SC_GET_FC_STATISTICS.
1009 + *
1010 + * Rev. 5.5    Oct 18, 2000
1011 + * THL  - Remove duplicated EXT_DEF_ADDR_MODE_32 and EXT_DEF_ADDR_MODE_16.
1012 + *       Reformat new data structures and defines.
1013 + *
1014 + * Rev. 5.6    Oct 19, 2000
1015 + * RLU - Changed file name from ExIoct.h to exioct.h.
1016 + *     - Added definition of EXT_RNID_DATA for API implementation.
1017 + *     - Reformat some lines to conform to the format agreed
1018 + *       upon in IOCTL meeting (and mentioned at beginning of
1019 + *       this file).
1020 + *
1021 + * Rev. 5.7 Oct 25, 2000
1022 + * BN   - Added LUN bitmask structure and macros
1023 + *
1024 + * Rev. 5.8 Oct 25, 2000
1025 + * BN   - Added EXT_CC_DRIVER_PROP define
1026 + * 
1027 + * Rev. 5.9 Oct 26, 2000
1028 + * BN   - Sync with UnixApi project
1029 + * 
1030 + * Rev. 5.10 Oct 30, 2000
1031 + * BN   - Remove not needed #define for EXT_CC_DRIVER_PROP
1032 + *     - Add EXT_ to IS_LUN_BIT_SET, SET_LUN_BIT, CLR_LUN_BIT
1033 + * 
1034 + * Rev. 5.11 Nov 1, 2000
1035 + * BN   - Increased [1] of EXT_DEVICEDATA to [EXT_MAX_TARGET]
1036 + * TLE  - Decreased [EXT_MAX_TARGET] of EXT_DEVICEDATA to [1]
1037 + * 
1038 + * Rev. 5.12   Nov 7, 2000
1039 + * RLU - Deleted EXT_DEF_MAX_LUNS define and changed all references
1040 + *       to it to use EXT_MAX_LUN.
1041 + *     - Changed the revision numbers for the last 2 revisions down
1042 + *       to use 5.x.
1043 + * 
1044 + * Rev. 5.13   Nov 14, 2000
1045 + * WTR - Fixed pointer referencing problem in the LUN_BIT_MASK macros.
1046 + *       Updated comment at bit mask definition.
1047 + *
1048 + * Rev. 5.14   Dec 6, 2000
1049 + * THL - Added Local and LoopID to discovered port/target property.
1050 + * 
1051 + * Rev. 5.15   Dec 24, 2000
1052 + * YPL - Enhance port connection modes and driver attrib
1053 + * 
1054 + * Rev. 5.16   Dec 27, 2000
1055 + * TLE  - Add BufferHandle member to _EXT_ASYNC_EVENT data structure for
1056 + *       SCTP support
1057 + * 
1058 + * Rev. 5.17   Jan 10, 2001
1059 + * YPL  - Add edtov, ratov & fabric name in port property
1060 + * 
1061 + * Rev. 5.18   Feb 28, 2001
1062 + * YPL  - Remove SCTP fields and add fabric parameter flags in port property
1063 + * 
1064 + * Rev. 5.19   Mar 08, 2001
1065 + * YPL  - Remove SCTP fields from hba port prop
1066 + * 
1067 + * Rev. 5.20   June 11, 2001
1068 + * YPL  - Change to reserved fields and add fabric name field in port property
1069 + * 
1070 + * Rev. 5.21   June 29, 2001
1071 + * YPL  - Merge in changes decided long time ago (use _DEF_ for defines) &
1072 + *       reserved some EXT_CC for legacy ioctls, plus add RNID dataformat
1073 + *       values definition
1074 + * 
1075 + * Rev. 5.21    Sep 18, 2001
1076 + * SP   - Added New return status codes
1077 + *
1078 + * Rev.        5.22    Oct 23, 2001
1079 + * SP  - Change reserve fields to add fields to EXT_HBA_PORT
1080 + *       Added port speeds and FC4Types fields  and related definitions
1081 + *
1082 + * Rev.        5.23    Dec 04, 2001
1083 + * RL  - Added port speed value definition.
1084 + *
1085 + * Rev. 5.24   Jan 20, 2002
1086 + * JJ  - Added PCI device function bits field in EXT_CHIP structure.
1087 + *
1088 + * Rev. 5.25   Feb 04, 2002
1089 + * JJ  - Added 16 bytes CDB support.  Also added SenseLength field
1090 + *       in SCSI_PASSTHRU structure.
1091 + *
1092 + * Rev. 5.26   Feb 12, 2002
1093 + * AV  - Changed type size used in SCSI_PASSTHRU structure definitions
1094 + *       to re-enable gcc's automatic structure padding for backward
1095 + *       compatibility.
1096 + *
1097 + * Rev. 5.27   Mar 01, 2002
1098 + * RL  - Added new SC value for SCSI3 command passthru.
1099 + *
1100 + * Rev. 5.28   Dec 09, 2002
1101 + * Sync up with NT version of exioct.h:
1102 + * TLE - Modify EXT_RNID_REQ data structure for IBM SendRNID workaround
1103 + * YPL - Add firmware state (online diagnostics)
1104 + * YPL - Add ELS PS
1105 + * YPL - Add els event, # of els buffers & size
1106 + */
1107 +
1108 +#ifndef        _EXIOCT_H
1109 +#define        _EXIOCT_H
1110 +
1111 +/*
1112 + * NOTE: the following version defines must be updated each time the
1113 + *      changes made may affect the backward compatibility of the
1114 + *      input/output relations of the SDM IOCTL functions.
1115 + */
1116 +#define        EXT_VERSION                                     5
1117 +
1118 +
1119 +/*
1120 + * OS independent General definitions
1121 + */
1122 +#define        EXT_DEF_SIGNATURE_SIZE                          8
1123 +#define        EXT_DEF_WWN_NAME_SIZE                           8
1124 +#define        EXT_DEF_WWP_NAME_SIZE                           8
1125 +#define        EXT_DEF_SERIAL_NUM_SIZE                         4
1126 +#define        EXT_DEF_PORTID_SIZE                             4
1127 +#define        EXT_DEF_PORTID_SIZE_ACTUAL                      3
1128 +#define        EXT_DEF_MAX_STR_SIZE                            128
1129 +#define        EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH                16
1130 +
1131 +#define        EXT_DEF_ADDR_MODE_32                            1
1132 +#define        EXT_DEF_ADDR_MODE_64                            2
1133 +
1134 +/*
1135 + * ***********************************************************************
1136 + * X OS type definitions
1137 + * ***********************************************************************
1138 + */
1139 +#ifdef _MSC_VER                                                /* NT */
1140 +
1141 +#pragma pack(1)
1142 +#include "ExIoctNT.h"
1143 +
1144 +#elif defined(linux)                                   /* Linux */
1145 +
1146 +#include "exioctln.h"
1147 +
1148 +#elif defined(sun) || defined(__sun)                   /* Solaris */
1149 +
1150 +#include "exioctso.h"
1151 +
1152 +#endif
1153 +
1154 +/*
1155 + * ***********************************************************************
1156 + * OS dependent General configuration defines
1157 + * ***********************************************************************
1158 + */
1159 +#define        EXT_DEF_MAX_HBA                 EXT_DEF_MAX_HBA_OS
1160 +#define        EXT_DEF_MAX_BUS                 EXT_DEF_MAX_BUS_OS
1161 +#define        EXT_DEF_MAX_TARGET              EXT_DEF_MAX_TARGET_OS
1162 +#define        EXT_DEF_MAX_LUN                 EXT_DEF_MAX_LUN_OS
1163 +
1164 +/*
1165 + * ***********************************************************************
1166 + * Common header struct definitions for San/Device Mgmt
1167 + * ***********************************************************************
1168 + */
1169 +typedef struct {
1170 +       UINT64    Signature;                    /* 8 chars string */
1171 +       UINT16    AddrMode;                     /* 2 */
1172 +       UINT16    Version;                      /* 2 */
1173 +       UINT16    SubCode;                      /* 2 */
1174 +       UINT16    Instance;                     /* 2 */
1175 +       UINT32    Status;                       /* 4 */
1176 +       UINT32    DetailStatus;                 /* 4 */
1177 +       UINT32    Reserved1;                    /* 4 */
1178 +       UINT32    RequestLen;                   /* 4 */
1179 +       UINT32    ResponseLen;                  /* 4 */
1180 +       UINT64    RequestAdr;                   /* 8 */
1181 +       UINT64    ResponseAdr;                  /* 8 */
1182 +       UINT16    HbaSelect;                    /* 2 */
1183 +       UINT16    VendorSpecificStatus[11];     /* 22 */
1184 +       UINT64    VendorSpecificData;           /* 8 chars string */
1185 +} EXT_IOCTL, *PEXT_IOCTL;                      /* 84 / 0x54 */
1186 +
1187 +/*
1188 + * Addressing mode used by the user application
1189 + */
1190 +#define        EXT_ADDR_MODE                   EXT_ADDR_MODE_OS
1191 +
1192 +/*
1193 + * Status.  These macros are being used for setting Status field in
1194 + * EXT_IOCTL structure.
1195 + */
1196 +#define        EXT_STATUS_OK                           0
1197 +#define        EXT_STATUS_ERR                          1
1198 +#define        EXT_STATUS_BUSY                         2
1199 +#define        EXT_STATUS_PENDING                      3
1200 +#define        EXT_STATUS_SUSPENDED                    4
1201 +#define        EXT_STATUS_RETRY_PENDING                5
1202 +#define        EXT_STATUS_INVALID_PARAM                6
1203 +#define        EXT_STATUS_DATA_OVERRUN                 7
1204 +#define        EXT_STATUS_DATA_UNDERRUN                8
1205 +#define        EXT_STATUS_DEV_NOT_FOUND                9
1206 +#define        EXT_STATUS_COPY_ERR                     10
1207 +#define        EXT_STATUS_MAILBOX                      11
1208 +#define        EXT_STATUS_UNSUPPORTED_SUBCODE          12
1209 +#define        EXT_STATUS_UNSUPPORTED_VERSION          13
1210 +#define        EXT_STATUS_MS_NO_RESPONSE               14
1211 +#define        EXT_STATUS_SCSI_STATUS                  15
1212 +#define        EXT_STATUS_BUFFER_TOO_SMALL             16
1213 +#define        EXT_STATUS_NO_MEMORY                    17
1214 +#define        EXT_STATUS_UNKNOWN                      18
1215 +#define        EXT_STATUS_UNKNOWN_DSTATUS              19
1216 +#define        EXT_STATUS_INVALID_REQUEST              20
1217 +
1218 +#define EXT_STATUS_DEVICE_NOT_READY            21
1219 +#define EXT_STATUS_DEVICE_OFFLINE              22
1220 +#define EXT_STATUS_HBA_NOT_READY               23
1221 +#define EXT_STATUS_HBA_QUEUE_FULL              24
1222 +
1223 +/*
1224 + * Detail Status contains the SCSI bus status codes.
1225 + */
1226 +
1227 +#define        EXT_DSTATUS_GOOD                        0x00
1228 +#define        EXT_DSTATUS_CHECK_CONDITION             0x02
1229 +#define        EXT_DSTATUS_CONDITION_MET               0x04
1230 +#define        EXT_DSTATUS_BUSY                        0x08
1231 +#define        EXT_DSTATUS_INTERMEDIATE                0x10
1232 +#define        EXT_DSTATUS_INTERMEDIATE_COND_MET       0x14
1233 +#define        EXT_DSTATUS_RESERVATION_CONFLICT        0x18
1234 +#define        EXT_DSTATUS_COMMAND_TERMINATED          0x22
1235 +#define        EXT_DSTATUS_QUEUE_FULL                  0x28
1236 +
1237 +/*
1238 + * Detail Status contains the needed Response buffer space(bytes)
1239 + * when Status = EXT_STATUS_BUFFER_TOO_SMALL
1240 + */
1241 +
1242 +
1243 +/*
1244 + * Detail Status contains one of the following codes
1245 + * when Status = EXT_STATUS_INVALID_PARAM or
1246 + *             = EXT_STATUS_DEV_NOT_FOUND
1247 + */
1248 +#define EXT_DSTATUS_NOADNL_INFO                        0x00
1249 +#define EXT_DSTATUS_HBA_INST                   0x01
1250 +#define EXT_DSTATUS_TARGET                     0x02
1251 +#define EXT_DSTATUS_LUN                                0x03
1252 +#define EXT_DSTATUS_REQUEST_LEN                        0x04
1253 +#define EXT_DSTATUS_PATH_INDEX                 0x05
1254 +
1255 +/*
1256 + * Currently supported DeviceControl / ioctl command codes
1257 + */
1258 +#define        EXT_CC_QUERY                    EXT_CC_QUERY_OS
1259 +#define        EXT_CC_SEND_FCCT_PASSTHRU       EXT_CC_SEND_FCCT_PASSTHRU_OS
1260 +#define        EXT_CC_REG_AEN                  EXT_CC_REG_AEN_OS
1261 +#define        EXT_CC_GET_AEN                  EXT_CC_GET_AEN_OS
1262 +#define        EXT_CC_SEND_ELS_RNID            EXT_CC_SEND_ELS_RNID_OS
1263 +#define        EXT_CC_SEND_SCSI_PASSTHRU       EXT_CC_SCSI_PASSTHRU_OS
1264 +#define        EXT_CC_SEND_ELS_PASSTHRU        EXT_CC_SEND_ELS_PASSTHRU_OS
1265 +
1266 +/*
1267 + * HBA port operations
1268 + */
1269 +#define        EXT_CC_GET_DATA                 EXT_CC_GET_DATA_OS
1270 +#define        EXT_CC_SET_DATA                 EXT_CC_SET_DATA_OS
1271 +
1272 +
1273 +/* Reserved command codes. */
1274 +#define        EXT_CC_RESERVED0A               EXT_CC_RESERVED0A_OS    
1275 +#define        EXT_CC_RESERVED0B               EXT_CC_RESERVED0B_OS    
1276 +#define        EXT_CC_RESERVED0C               EXT_CC_RESERVED0C_OS    
1277 +#define        EXT_CC_RESERVED0D               EXT_CC_RESERVED0D_OS    
1278 +#define        EXT_CC_RESERVED0E               EXT_CC_RESERVED0E_OS    
1279 +#define        EXT_CC_RESERVED0F               EXT_CC_RESERVED0F_OS    
1280 +#define        EXT_CC_RESERVED0G               EXT_CC_RESERVED0G_OS    
1281 +#define        EXT_CC_RESERVED0H               EXT_CC_RESERVED0H_OS    
1282 +#define        EXT_CC_RESERVED0I               EXT_CC_RESERVED0I_OS
1283 +#define        EXT_CC_RESERVED0J               EXT_CC_RESERVED0J_OS
1284 +#define        EXT_CC_RESERVED0Z               EXT_CC_RESERVED0Z_OS
1285 +
1286 +
1287 +/*
1288 + * ***********************************************************************
1289 + * EXT_IOCTL SubCode definition.
1290 + * These macros are being used for setting SubCode field in EXT_IOCTL
1291 + * structure.
1292 + * ***********************************************************************
1293 + */
1294 +
1295 +/*
1296 + * Query.
1297 + * Uses with EXT_QUERY as the ioctl code.
1298 + */
1299 +#define        EXT_SC_QUERY_HBA_NODE           1
1300 +#define        EXT_SC_QUERY_HBA_PORT           2
1301 +#define        EXT_SC_QUERY_DISC_PORT          3
1302 +#define        EXT_SC_QUERY_DISC_TGT           4
1303 +#define        EXT_SC_QUERY_DISC_LUN           5       /* Currently Not Supported */
1304 +#define        EXT_SC_QUERY_DRIVER             6
1305 +#define        EXT_SC_QUERY_FW                 7
1306 +#define        EXT_SC_QUERY_CHIP               8
1307 +
1308 +/*
1309 + * Sub codes for Get Data.
1310 + * Use in combination with EXT_GET_DATA as the ioctl code
1311 + */
1312 +/* 1 - 99 Common */
1313 +#define        EXT_SC_GET_SCSI_ADDR            1       /* Currently Not Supported */
1314 +#define        EXT_SC_GET_ERR_DETECTIONS       2       /* Currently Not Supported */
1315 +#define        EXT_SC_GET_STATISTICS           3
1316 +#define        EXT_SC_GET_BUS_MODE             4       /* Currently Not Supported */
1317 +#define        EXT_SC_GET_DR_DUMP_BUF          5       /* Currently Not Supported */
1318 +#define        EXT_SC_GET_RISC_CODE            6       /* Currently Not Supported */
1319 +#define        EXT_SC_GET_FLASH_RAM            7       /* for backward compatible */
1320 +
1321 +/* 100 - 199 FC_INTF_TYPE */
1322 +#define        EXT_SC_GET_LINK_STATUS          101     /* Currently Not Supported */
1323 +#define        EXT_SC_GET_LOOP_ID              102     /* Currently Not Supported */
1324 +#define        EXT_SC_GET_LUN_BITMASK          103
1325 +#define        EXT_SC_GET_PORT_DATABASE        104     /* Currently Not Supported */
1326 +#define        EXT_SC_GET_PORT_DATABASE_MEM    105     /* Currently Not Supported */
1327 +#define        EXT_SC_GET_PORT_SUMMARY         106
1328 +#define        EXT_SC_GET_POSITION_MAP         107
1329 +#define        EXT_SC_GET_RETRY_CNT            108     /* Currently Not Supported */
1330 +#define        EXT_SC_GET_RNID                 109     
1331 +#define        EXT_SC_GET_RTIN                 110     /* Currently Not Supported */
1332 +#define        EXT_SC_GET_FC_LUN_BITMASK       111
1333 +#define        EXT_SC_GET_FC_STATISTICS        112     /* for backward compatible */
1334 +
1335 +/* 200 - 299 SCSI_INTF_TYPE */
1336 +#define        EXT_SC_GET_SEL_TIMEOUT          201     /* Currently Not Supported */
1337 +
1338 +
1339 +/* 
1340 + * Sub codes for Set Data.
1341 + * Use in combination with EXT_SET_DATA as the ioctl code
1342 + */
1343 +/* 1 - 99 Common */
1344 +#define        EXT_SC_RST_STATISTICS           3
1345 +#define        EXT_SC_RESERVED_BC7             7
1346 +
1347 +/* 100 - 199 FC_INTF_TYPE */
1348 +#define        EXT_SC_SET_LUN_BITMASK          103
1349 +#define        EXT_SC_SET_RNID                 109     
1350 +#define        EXT_SC_SET_FC_LUN_BITMASK       111
1351 +#define        EXT_SC_RESERVED_BC112   112
1352 +#define        EXT_SC_RESERVED_BC113   113
1353 +
1354 +/* 200 - 299 SCSI_INTF_TYPE */
1355 +
1356 +/* SCSI passthrough */
1357 +#define        EXT_SC_SEND_SCSI_PASSTHRU       0
1358 +#define        EXT_SC_SEND_FC_SCSI_PASSTHRU    1
1359 +#define        EXT_SC_SCSI3_PASSTHRU           2
1360 +
1361 +/* Read */
1362 +
1363 +/* Write */
1364 +
1365 +/* Reset */
1366 +
1367 +/* Request struct */
1368 +
1369 +
1370 +/*
1371 + * Response struct
1372 + */
1373 +typedef struct _EXT_HBA_NODE {
1374 +       UINT8     WWNN         [EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1375 +       UINT8     Manufacturer [EXT_DEF_MAX_STR_SIZE];  /* 128; "QLOGIC" */
1376 +       UINT8     Model        [EXT_DEF_MAX_STR_SIZE];  /* 128; "QLA2200" */
1377 +       UINT8     SerialNum    [EXT_DEF_SERIAL_NUM_SIZE];/* 4;  123  */
1378 +       UINT8     DriverVersion[EXT_DEF_MAX_STR_SIZE];  /* 128; "7.4.3" */
1379 +       UINT8     FWVersion    [EXT_DEF_MAX_STR_SIZE];  /* 128; "2.1.6" */
1380 +
1381 +       /* The following field is currently not supported */
1382 +       UINT8     OptRomVersion[EXT_DEF_MAX_STR_SIZE];  /* 128; "1.44" */
1383 +
1384 +       UINT16    PortCount;                            /* 2; 1 */
1385 +       UINT16    InterfaceType;                        /* 2; FC/SCSI */
1386 +
1387 +       /* The following two fields are not yet supported */
1388 +       UINT32    DriverAttr;                           /* 4 */
1389 +       UINT32    FWAttr;                               /* 4 */
1390 +
1391 +       UINT32    Reserved[8];                          /* 32 */
1392 +} EXT_HBA_NODE, *PEXT_HBA_NODE;                                /* 696 */
1393 +
1394 +/* HBA node query interface type */
1395 +#define        EXT_DEF_FC_INTF_TYPE                    1
1396 +#define        EXT_DEF_SCSI_INTF_TYPE                  2
1397 +
1398 +typedef struct _EXT_HBA_PORT {
1399 +       UINT8     WWPN[EXT_DEF_WWN_NAME_SIZE];  /* 8 */
1400 +       UINT8     Id  [EXT_DEF_PORTID_SIZE];    /* 4; 3 bytes valid Port Id. */
1401 +       UINT16    Type;                         /* 2; Port Type */
1402 +       UINT16    State;                        /* 2; Port State */
1403 +       UINT16    Mode;                         /* 2 */
1404 +       UINT16    DiscPortCount;                /* 2 */
1405 +       UINT16    DiscPortNameType;             /* 2; USE_NODE_NAME or */
1406 +                                               /* USE_PORT_NAME */
1407 +       UINT16    DiscTargetCount;              /* 2 */
1408 +       UINT16    Bus;                          /* 2 */
1409 +       UINT16    Target;                       /* 2 */
1410 +       UINT16    Lun;                          /* 2 */
1411 +                                               /* 2 */
1412 +       UINT8     PortSupportedFC4Types;
1413 +       UINT8     PortActiveFC4Types;
1414 +       UINT8     FabricName[EXT_DEF_WWN_NAME_SIZE];    /* 8 */
1415 +
1416 +                                               /* 2*/
1417 +       UINT8     PortSupportedSpeed;
1418 +       UINT8     PortSpeed;
1419 +       UINT16    Unused;                       /* 2 */
1420 +       UINT32    Reserved[3];                  /* 12 */
1421 +} EXT_HBA_PORT, *PEXT_HBA_PORT;                        /* 56 */
1422 +
1423 +/* port type */
1424 +#define        EXT_DEF_INITIATOR_DEV           1
1425 +#define        EXT_DEF_TARGET_DEV              2
1426 +#define        EXT_DEF_TAPE_DEV                4
1427 +#define        EXT_DEF_FABRIC_DEV              8
1428 +
1429 +
1430 +/* HBA port state */
1431 +#define        EXT_DEF_HBA_OK                  0
1432 +#define        EXT_DEF_HBA_SUSPENDED           1
1433 +#define        EXT_DEF_HBA_LOOP_DOWN           2
1434 +
1435 +/* Connection mode */
1436 +#define        EXT_DEF_UNKNOWN_MODE            0
1437 +#define        EXT_DEF_P2P_MODE                1
1438 +#define        EXT_DEF_LOOP_MODE               2
1439 +#define        EXT_DEF_FL_MODE                 3
1440 +#define        EXT_DEF_N_MODE                  4
1441 +
1442 +/* Valid name type for Disc. port/target */
1443 +#define        EXT_DEF_USE_NODE_NAME           1
1444 +#define        EXT_DEF_USE_PORT_NAME           2
1445 +
1446 +/* FC4 type values */
1447 +#define EXT_DEF_FC4_TYPE_SCSI          0x1
1448 +#define EXT_DEF_FC4_TYPE_IP            0x2
1449 +#define EXT_DEF_FC4_TYPE_SCTP          0x4
1450 +#define EXT_DEF_FC4_TYPE_VI            0x8
1451 +
1452 +/* Port Speed values */
1453 +#define EXT_DEF_PORTSPEED_1GBIT                1
1454 +#define EXT_DEF_PORTSPEED_2GBIT                2
1455 +#define EXT_DEF_PORTSPEED_10GBIT       4
1456 +
1457 +typedef struct _EXT_DISC_PORT {
1458 +       UINT8     WWNN[EXT_DEF_WWN_NAME_SIZE];  /* 8 */
1459 +       UINT8     WWPN[EXT_DEF_WWN_NAME_SIZE];  /* 8 */
1460 +       UINT8     Id  [EXT_DEF_PORTID_SIZE];
1461 +                                       /* 4; last 3 bytes used. big endian */
1462 +
1463 +       /* The following fields currently are not supported */
1464 +       UINT16    Type;                         /* 2; Port Type */
1465 +       UINT16    Status;                       /* 2; Port Status */
1466 +       UINT16    Bus;                          /* 2; n/a for Solaris */
1467 +
1468 +       UINT16    TargetId;                     /* 2 */
1469 +       UINT8     Local;                        /* 1; Local or Remote */
1470 +       UINT8     ReservedByte[1];              /* 1 */
1471 +       
1472 +       UINT16    LoopID;                       /* 2; Loop ID */
1473 +       
1474 +       UINT32    Reserved[7];                  /* 28 */
1475 +} EXT_DISC_PORT, *PEXT_DISC_PORT;              /* 60 */
1476 +
1477 +typedef struct _EXT_DISC_TARGET {
1478 +       UINT8     WWNN[EXT_DEF_WWN_NAME_SIZE];  /* 8 */
1479 +       UINT8     WWPN[EXT_DEF_WWN_NAME_SIZE];  /* 8 */
1480 +       UINT8     Id  [EXT_DEF_PORTID_SIZE];
1481 +                                       /* 4; last 3 bytes used. big endian */
1482 +
1483 +       /* The following fields currently are not supported */
1484 +       UINT16    Type;                         /* 2; Target Type */
1485 +       UINT16    Status;                       /* 2; Target Status*/
1486 +       UINT16    Bus;                          /* 2; n/a for Solaris */
1487 +
1488 +       UINT16    TargetId;                     /* 2 */
1489 +
1490 +       /* The following field is currently not supported */
1491 +       UINT16    LunCount;                     /* 2; n/a for nt */
1492 +
1493 +       UINT8     Local;                        /* 1; Local or Remote */
1494 +       UINT8     ReservedByte[1];              /* 1 */
1495 +       
1496 +       UINT16    LoopID;                       /* 2; Loop ID */
1497 +       
1498 +       UINT16    Reserved[13];                 /* 26 */
1499 +} EXT_DISC_TARGET, *PEXT_DISC_TARGET;          /* 60 */
1500 +
1501 +/* The following command is not supported */
1502 +typedef struct _EXT_DISC_LUN {                 /* n/a for nt */
1503 +       UINT16    Id;                           /* 2 */
1504 +       UINT16    State;                        /* 2 */
1505 +       UINT16    IoCount;                      /* 2 */
1506 +       UINT16    Reserved[15];                 /* 30 */
1507 +} EXT_DISC_LUN, *PEXT_DISC_LUN;                        /* 36 */
1508 +
1509 +
1510 +/* SCSI address */
1511 +typedef struct _EXT_SCSI_ADDR {
1512 +       UINT16    Bus;                          /* 2 */
1513 +       UINT16    Target;                       /* 2 */
1514 +       UINT16    Lun;                          /* 2 */
1515 +       UINT16    Padding[5];                   /* 10 */
1516 +} EXT_SCSI_ADDR, *PEXT_SCSI_ADDR;              /* 16 */
1517 +
1518 +
1519 +/* Fibre Channel address */
1520 +typedef struct _EXT_FC_ADDR {
1521 +       union {
1522 +               UINT8    WWNN[EXT_DEF_WWN_NAME_SIZE];   /* 8 */
1523 +               UINT8    WWPN[EXT_DEF_WWN_NAME_SIZE];   /* 8 */
1524 +               UINT8    Id[EXT_DEF_PORTID_SIZE];       /* 4 */
1525 +       } FcAddr;
1526 +       UINT16    Type;                                 /* 2 */
1527 +       UINT16    Padding[2];                           /* 2 */
1528 +} EXT_FC_ADDR, *PEXT_FC_ADDR;                          /* 24 */
1529 +
1530 +#define        EXT_DEF_TYPE_WWNN                   1
1531 +#define        EXT_DEF_TYPE_WWPN                   2
1532 +#define        EXT_DEF_TYPE_PORTID                 3
1533 +#define        EXT_DEF_TYPE_FABRIC                 4
1534 +
1535 +
1536 +/* Destination address */
1537 +typedef struct _EXT_DEST_ADDR {
1538 +       union {
1539 +               UINT8    WWNN[EXT_DEF_WWN_NAME_SIZE];   /* 8 */
1540 +               UINT8    WWPN[EXT_DEF_WWN_NAME_SIZE];   /* 8 */
1541 +               UINT8    Id[EXT_DEF_PORTID_SIZE];       /* 4 */
1542 +               struct {
1543 +                       UINT16    Bus;                  /* 2 */
1544 +                       UINT16    Target;               /* 2 */
1545 +               } ScsiAddr;
1546 +       } DestAddr;
1547 +       UINT16    DestType;                             /* 2 */
1548 +       UINT16    Lun;                                  /* 2 */
1549 +       UINT16    Padding[2];                           /* 4 */
1550 +} EXT_DEST_ADDR, *PEXT_DEST_ADDR;                      /* 16 */
1551 +
1552 +
1553 +#define        EXT_DEF_DESTTYPE_WWNN                   1
1554 +#define        EXT_DEF_DESTTYPE_WWPN                   2
1555 +#define        EXT_DEF_DESTTYPE_PORTID                 3
1556 +#define        EXT_DEF_DESTTYPE_FABRIC                 4
1557 +#define        EXT_DEF_DESTTYPE_SCSI                   5
1558 +
1559 +/* Statistic */
1560 +typedef struct _EXT_HBA_PORT_STAT {
1561 +       UINT32    ControllerErrorCount;         /* 4 */
1562 +       UINT32    DeviceErrorCount;             /* 4 */
1563 +       UINT32    TotalIoCount;                 /* 4 */
1564 +       UINT32    TotalMBytes;                  /* 4; MB of data processed */
1565 +       UINT32    TotalLipResets;               /* 4; Total no. of LIP Reset */
1566 +       UINT32    Reserved2;                    /* 4 */
1567 +       UINT32    TotalLinkFailures;            /* 4 */
1568 +       UINT32    TotalLossOfSync;              /* 4 */
1569 +       UINT32    TotalLossOfSignals;           /* 4 */
1570 +       UINT32    PrimitiveSeqProtocolErrorCount;/* 4 */
1571 +       UINT32    InvalidTransmissionWordCount; /* 4 */
1572 +       UINT32    InvalidCRCCount;              /* 4 */
1573 +       UINT32    Reserved[16];                 /* 64 */
1574 +} EXT_HBA_PORT_STAT, *PEXT_HBA_PORT_STAT;      /* 112 */
1575 +
1576 +
1577 +/* Driver property */
1578 +typedef struct _EXT_DRIVER {
1579 +       UINT8     Version[EXT_DEF_MAX_STR_SIZE];/* 128 */
1580 +       UINT16    NumOfBus;                     /* 2; Port Type */
1581 +       UINT16    TargetsPerBus;                /* 2; Port Status */
1582 +       UINT16    LunsPerTarget;                /* 2 */
1583 +       UINT32    MaxTransferLen;               /* 4 */
1584 +       UINT32    MaxDataSegments;              /* 4 */
1585 +       UINT16    DmaBitAddresses;              /* 2 */
1586 +       UINT16    IoMapType;                    /* 2 */
1587 +       UINT32    Attrib;                       /* 4 */
1588 +       UINT32    InternalFlags[4];             /* 16 */
1589 +       UINT32    Reserved[8];                  /* 32 */
1590 +} EXT_DRIVER, *PEXT_DRIVER;                    /* 198 */
1591 +
1592 +
1593 +/* Firmware property */
1594 +typedef struct _EXT_FW {
1595 +       UINT8     Version[EXT_DEF_MAX_STR_SIZE];/* 128 */
1596 +       UINT32    Attrib;                       /* 4 */
1597 +       UINT16    Reserved[33];                 /* 66 */
1598 +} EXT_FW, *PEXT_FW;                            /* 198 */
1599 +
1600 +
1601 +/* ISP/Chip property */
1602 +typedef struct _EXT_CHIP {
1603 +       UINT16    VendorId;                     /* 2 */
1604 +       UINT16    DeviceId;                     /* 2 */
1605 +       UINT16    SubVendorId;                  /* 2 */
1606 +       UINT16    SubSystemId;                  /* 2 */
1607 +       UINT16    PciBusNumber;                 /* 2 */
1608 +       UINT16    PciSlotNumber;                /* 2 */
1609 +       UINT32    IoAddr;                       /* 4 */
1610 +       UINT32    IoAddrLen;                    /* 4 */
1611 +       UINT32    MemAddr;                      /* 4 */
1612 +       UINT32    MemAddrLen;                   /* 4 */
1613 +       UINT16    ChipType;                     /* 2 */
1614 +       UINT16    InterruptLevel;               /* 2 */
1615 +       UINT16    OutMbx[8];                    /* 16 */
1616 +       UINT16    PciDevFunc;                   /* 2 */
1617 +       UINT16    Reserved[15];                 /* 30 */
1618 +} EXT_CHIP, *PEXT_CHIP;                                /* 80 */
1619 +
1620 +
1621 +/* Request Buffer for RNID */
1622 +typedef struct _EXT_RNID_REQ {
1623 +       EXT_FC_ADDR Addr;                       /* 14 */
1624 +       UINT8     DataFormat;                   /* 1 */
1625 +       UINT8     Pad;                          /* 1 */
1626 +       UINT8     OptWWN[EXT_DEF_WWN_NAME_SIZE];        /* 8 */
1627 +       UINT8     OptPortId[EXT_DEF_PORTID_SIZE];       /* 4 */
1628 +       UINT32    Reserved[12];                 /* 48 */
1629 +       UINT8     Pad1[3];                      /* 3 */
1630 +} EXT_RNID_REQ, *PEXT_RNID_REQ;                        /* 79 */
1631 +
1632 +#define EXT_DEF_RNID_DFORMAT_NONE              0
1633 +#define EXT_DEF_RNID_DFORMAT_TOPO_DISC         0xDF
1634 +
1635 +/* Request Buffer for Set RNID */
1636 +typedef struct _EXT_SET_RNID_REQ {
1637 +       UINT8     IPVersion[2];
1638 +       UINT8     UDPPortNumber[2];
1639 +       UINT8     IPAddress[16];
1640 +       UINT32    Reserved[16];
1641 +} EXT_SET_RNID_REQ, *PEXT_SET_RNID_REQ;
1642 +
1643 +/* RNID definition and data struct */
1644 +#define        SEND_RNID_RSP_SIZE  72
1645 +
1646 +typedef struct _RNID_DATA
1647 +{
1648 +       UINT8     WWN[16];                      /* 16 */
1649 +       UINT32    UnitType;                     /* 4 */
1650 +       UINT8     PortId[4];                    /* 4 */
1651 +       UINT32    NumOfAttachedNodes;           /* 4 */
1652 +       UINT8     IPVersion[2];                 /* 2 */
1653 +       UINT8     UDPPortNumber[2];             /* 2 */
1654 +       UINT8     IPAddress[16];                /* 16 */
1655 +       UINT16    Reserved;                     /* 2 */
1656 +       UINT16    TopoDiscFlags;                /* 2 */
1657 +} EXT_RNID_DATA, *PEXT_RNID_DATA;              /* 52 */
1658 +
1659 +
1660 +/* SCSI pass-through */
1661 +typedef struct _EXT_SCSI_PASSTHRU {
1662 +       EXT_SCSI_ADDR   TargetAddr;
1663 +       UINT8           Direction;
1664 +       UINT8           CdbLength;
1665 +       UINT8           Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
1666 +        UINT32          Reserved[14];
1667 +        UINT16          Reserved2;
1668 +        UINT16          SenseLength;
1669 +       UINT8           SenseData[256];
1670 +} EXT_SCSI_PASSTHRU, *PEXT_SCSI_PASSTHRU;
1671 +
1672 +/* FC SCSI pass-through */
1673 +typedef struct _EXT_FC_SCSI_PASSTHRU {
1674 +       EXT_DEST_ADDR   FCScsiAddr;
1675 +       UINT8           Direction;
1676 +       UINT8           CdbLength;
1677 +       UINT8           Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
1678 +        UINT32          Reserved[14];
1679 +        UINT16          Reserved2;
1680 +        UINT16          SenseLength;
1681 +       UINT8           SenseData[256];
1682 +} EXT_FC_SCSI_PASSTHRU, *PEXT_FC_SCSI_PASSTHRU;
1683 +
1684 +/* SCSI pass-through direction */
1685 +#define        EXT_DEF_SCSI_PASSTHRU_DATA_IN           1
1686 +#define        EXT_DEF_SCSI_PASSTHRU_DATA_OUT          2
1687 +
1688 +
1689 +/* EXT_REG_AEN Request struct */
1690 +typedef struct _EXT_REG_AEN {
1691 +       UINT32    Enable;       /* 4; non-0 to enable, 0 to disable. */
1692 +       UINT32    Reserved;     /* 4 */
1693 +} EXT_REG_AEN, *PEXT_REG_AEN;  /* 8 */
1694 +
1695 +/* EXT_GET_AEN Response struct */
1696 +typedef struct _EXT_ASYNC_EVENT {
1697 +       UINT32  AsyncEventCode;         /* 4 */
1698 +       union {
1699 +               struct {
1700 +                       UINT8   RSCNInfo[EXT_DEF_PORTID_SIZE_ACTUAL];/* 3, BE */
1701 +                       UINT8   AddrFormat;                     /* 1 */
1702 +                       UINT32  Rsvd_1[2];                      /* 8 */
1703 +               } RSCN;
1704 +
1705 +               UINT32  Reserved[3];    /* 12 */
1706 +       } Payload;
1707 +} EXT_ASYNC_EVENT, *PEXT_ASYNC_EVENT;  /* 16 */
1708 +
1709 +
1710 +/* Asynchronous Event Codes */
1711 +#define        EXT_DEF_LIP_OCCURRED            0x8010
1712 +#define        EXT_DEF_LINK_UP                 0x8011
1713 +#define        EXT_DEF_LINK_DOWN               0x8012
1714 +#define        EXT_DEF_LIP_RESET               0x8013
1715 +#define        EXT_DEF_RSCN                    0x8015
1716 +#define        EXT_DEF_DEVICE_UPDATE           0x8014
1717 +#define        EXT_DEF_ELS                     0x8200
1718 +
1719 +/* Required # of entries in the queue buffer allocated. */
1720 +#define        EXT_DEF_MAX_AEN_QUEUE           EXT_DEF_MAX_AEN_QUEUE_OS
1721 +#define        EXT_DEF_MAX_ELS_BUFS            EXT_DEF_MAX_ELS_BUFS_OS
1722 +#define        EXT_DEF_SIZE_ELS_BUF            EXT_DEF_SIZE_ELS_BUF_OS
1723 +
1724 +/* Device type to get for EXT_SC_GET_PORT_SUMMARY */
1725 +#define        EXT_DEF_GET_KNOWN_DEVICE        0x1
1726 +#define        EXT_DEF_GET_VISIBLE_DEVICE      0x2
1727 +#define        EXT_DEF_GET_HIDDEN_DEVICE       0x4
1728 +#define        EXT_DEF_GET_FABRIC_DEVICE       0x8
1729 +#define        EXT_DEF_GET_LOOP_DEVICE         0x10
1730 +
1731 +/* Each entry in device database */
1732 +typedef struct _EXT_DEVICEDATAENTRY
1733 +{
1734 +       UINT8           NodeWWN[8];     /* Node World Wide Name for device */
1735 +       UINT8           PortWWN[8];     /* Port World Wide Name for device */
1736 +       UINT8           PortID[3];      /* Current PortId for device */
1737 +       UINT8           ControlFlags;   /* Control flag */
1738 +       EXT_SCSI_ADDR   TargetAddress;  /* scsi address */
1739 +       UINT32          DeviceFlags;    /* Flags for device */
1740 +       UINT16          LoopID;         /* Loop ID */
1741 +       UINT16          BaseLunNumber;  
1742 +       UINT32          Reserved[32];
1743 +} EXT_DEVICEDATAENTRY, *PEXT_DEVICEDATAENTRY;
1744 +
1745 +/* Device database information */
1746 +typedef struct _EXT_DEVICEDATA
1747 +{
1748 +       UINT32  TotalDevices;          /* Set to total number of device. */
1749 +       UINT32  ReturnListEntryCount;  /* Set to number of device entries */
1750 +                                      /* returned in list. */
1751 +
1752 +       EXT_DEVICEDATAENTRY  EntryList[1]; /* Variable length */
1753 +} EXT_DEVICEDATA, *PEXT_DEVICEDATA;
1754 +
1755 +
1756 +/* Swap Target Device Data structure */
1757 +typedef struct _EXT_SWAPTARGETDEVICE
1758 +{
1759 +       EXT_DEVICEDATAENTRY CurrentExistDevice;
1760 +       EXT_DEVICEDATAENTRY NewDevice;
1761 +} EXT_SWAPTARGETDEVICE, *PEXT_SWAPTARGETDEVICE;
1762 +
1763 +/* LUN BitMask structure definition, array of 8bit bytes,
1764 + * 1 bit per lun.  When bit == 1, the lun is masked.
1765 + * Most significant bit of mask[0] is lun 0.
1766 + * Least significant bit of mask[0] is lun 7.
1767 + */
1768 +typedef struct _EXT_LUN_BIT_MASK {
1769 +#if ((EXT_DEF_MAX_LUN & 0x7) == 0)
1770 +       UINT8   mask[EXT_DEF_MAX_LUN >> 3];
1771 +#else
1772 +       UINT8   mask[(EXT_DEF_MAX_LUN + 8) >> 3 ];
1773 +#endif
1774 +} EXT_LUN_BIT_MASK, *PEXT_LUN_BIT_MASK;
1775 +
1776 +/*
1777 + * LUN mask bit manipulation macros
1778 + *
1779 + *   P = Pointer to an EXT_LUN_BIT_MASK union.
1780 + *   L = LUN number.
1781 + */
1782 +#define EXT_IS_LUN_BIT_SET(P,L) \
1783 +    (((P)->mask[L/8] & (0x80 >> (L%8)))?1:0)
1784 +
1785 +#define EXT_SET_LUN_BIT(P,L) \
1786 +    ((P)->mask[L/8] |= (0x80 >> (L%8)))
1787 +
1788 +#define EXT_CLR_LUN_BIT(P,L) \
1789 +    ((P)->mask[L/8] &= ~(0x80 >> (L%8)))
1790 +
1791 +#define        EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES    1
1792 +#define        EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES    256
1793 +
1794 +#ifdef _WIN64
1795 +#define        EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE    32
1796 +#else
1797 +#define        EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE \
1798 +    offsetof(LUN_BITMASK_LIST_BUFFER, asBitmaskEntry)
1799 +#endif
1800 +
1801 +#define        EXT_DEF_LUN_COUNT          2048
1802 +#define        EXT_DEF_LUN_BITMASK_BYTES  (EXT_DEF_LUN_COUNT / 8)
1803 +
1804 +typedef struct _EXT_LUN_BITMASK_ENTRY
1805 +{
1806 +       UINT8   NodeName[EXT_DEF_WWN_NAME_SIZE];
1807 +       UINT8   PortName[EXT_DEF_WWN_NAME_SIZE];
1808 +
1809 +       UINT32  Reserved2;
1810 +       UINT32  Reserved3;
1811 +       UINT32  Reserved4;
1812 +       UINT32  Reserved5;     /* Pad to 32-byte header.*/
1813 +
1814 +       UINT8   Bitmask[EXT_DEF_LUN_BITMASK_BYTES];
1815 +} EXT_LUN_BITMASK_ENTRY, *PEXT_LUN_BITMASK_ENTRY;
1816 +
1817 +/* Structure as it is stored in the config file.*/
1818 +typedef struct _LUN_BITMASK_LIST
1819 +{
1820 +       UINT16  Version;       /* Should be LUN_BITMASK_REGISTRY_VERSION */
1821 +       UINT16  EntryCount;    /* Count of variable entries following.*/
1822 +       UINT32  Reserved1;
1823 +       UINT32  Reserved2;
1824 +       UINT32  Reserved3;
1825 +       UINT32  Reserved4;
1826 +       UINT32  Reserved5;
1827 +       UINT32  Reserved6;
1828 +       UINT32  Reserved7;     /* Pad to 32-byte header.*/
1829 +
1830 +       EXT_LUN_BITMASK_ENTRY BitmaskEntry[1]; /* Variable-length data.*/
1831 +
1832 +} EXT_LUN_BITMASK_LIST, *PEXT_LUN_BITMASK_LIST;
1833 +
1834 +
1835 +#define        EXT_DEF_LUN_BITMASK_LIST_MIN_SIZE   \
1836 +    (EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE + \
1837 +    (sizeof(EXT_DEF_LUN_BITMASK_ENTRY) * EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES))
1838 +#define        EXT_DEF_LUN_BITMASK_LIST_MAX_SIZE   \
1839 +    (EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE + \
1840 +    (sizeof(EXT_DEF_LUN_BITMASK_ENTRY) * EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES))
1841 +
1842 +/* Request Buffer for ELS PT*/
1843 +#define EXT_DEF_WWPN_VALID  1
1844 +#define EXT_DEF_WWNN_VALID  2
1845 +#define EXT_DEF_PID_VALID   4
1846 +typedef struct _EXT_ELS_PT_REQ {
1847 +       UINT8     WWNN[EXT_DEF_WWN_NAME_SIZE];  /* 8 */
1848 +       UINT8     WWPN[EXT_DEF_WWN_NAME_SIZE];  /* 8 */
1849 +       UINT8     Id[EXT_DEF_PORTID_SIZE];      /* 4 */
1850 +       UINT16    ValidMask;                    /* 2 */
1851 +       UINT16    Lid;                          /* 2 */
1852 +       UINT16    Rxid;                         /* 2 */
1853 +       UINT16    AccRjt;                       /* 2 */
1854 +       UINT32    Reserved;                     /* 4 */
1855 +} EXT_ELS_PT_REQ, *PEXT_ELS_PT_REQ;            /* 32 */
1856 +
1857 +#ifdef _MSC_VER
1858 +#pragma pack()
1859 +#endif
1860 +
1861 +#endif /* _EXIOCT_H */
1862 --- /dev/null   Thu Apr 11 07:25:15 2002
1863 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/exioctln.h  Thu Jul  3 15:34:42 2003
1864 @@ -0,0 +1,255 @@
1865 +/*****************************************************************************
1866 +*                  QLOGIC LINUX SOFTWARE
1867 +*
1868 +* QLogic ISP2x00 device driver for Linux 2.5.x
1869 +* Copyright (C) 2003 QLogic Corporation
1870 +* (www.qlogic.com)
1871 +*
1872 +* This program is free software; you can redistribute it and/or modify it
1873 +* under the terms of the GNU General Public License as published by the
1874 +* Free Software Foundation; either version 2, or (at your option) any
1875 +* later version.
1876 +*
1877 +* This program is distributed in the hope that it will be useful, but
1878 +* WITHOUT ANY WARRANTY; without even the implied warranty of
1879 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1880 +* General Public License for more details.
1881 +****************************************************************************/
1882 +
1883 +/*
1884 + * File Name: exioctln.h
1885 +
1886 +   Rev 14    February 25, 2003 RL
1887 +             - Added EXT_CC_DRIVER_SPECIFIC ioctl command to return
1888 +              some driver specific data that can be used by API library
1889 +              to determine how to maintain backward compatibility
1890 +              of certain features.
1891 +
1892 +   Rev 13    January 31, 2003  RL
1893 +             - Changed the value of EXT_DEF_USE_HBASELECT to avoid
1894 +               conflicting with older implementation of FO API lib.
1895 +
1896 +   Rev 12    January 20, 2003  RL
1897 +             - Added EXT_DEF_USE_HBASELECT definition for use by
1898 +               the SETINSTANCE command.
1899
1900 +   Rev 11    December 10, 2002 RL
1901 +             - Added EXT_CC_SEND_ELS_PASSTHRU_OS definition.
1902
1903 +   Rev 10    October 26, 2001  RL
1904 +             - Corrected MAX_HBA, MAX_TARGET and MAX_LUN values to 255.
1905
1906 +   Rev 9     July 26, 2001     RL
1907 +             - Added definition of signed types.
1908
1909 +   Rev 8     July 05, 2001     RL
1910 +             - Redefined ioctl command values.
1911
1912 +   Rev 7     Nov 06, 2000   BN
1913 +             - Added EXT_DEF_MAX_AEN_QUEUE_OS define
1914 +             - Added define for handle_hba_t
1915
1916 +   Rev 6     Oct 25, 2000   BN
1917 +             - Added EXT_CC_DRIVER_PROP_OS define
1918
1919 +   Rev 5     Oct 25, 2000   BN
1920 +             - Redo the copyright header and add AEN details
1921
1922 +   Rev 4     Oct 23, 2000   BN
1923 +             - Added definition for BOOLEAN
1924
1925 +   Rev 3     Oct 23, 2000   BN
1926 +             - Added definitions for EXT_ADDR_MODE_OS
1927 +               and also include of <linux/ioctl.h>
1928
1929 +   Rev 2     Oct 18, 2000   BN
1930 +             - Enable API Exention support
1931
1932 +   Rev 1     Original version Sep 7, 2000   BN
1933
1934 +*/
1935 +
1936 +
1937 +#ifndef _EXIOCT_LN_H_
1938 +#define _EXIOCT_LN_H_
1939 +
1940 +#include <linux/ioctl.h>
1941 +
1942 +#ifdef APILIB
1943 +#include <stdint.h>
1944 +#endif
1945 +
1946 +
1947 +#define        INT8    int8_t
1948 +#define        INT16   int16_t
1949 +#define        INT32   int32_t
1950 +#define        UINT8   uint8_t
1951 +#define        UINT16  uint16_t
1952 +#define        UINT32  uint32_t
1953 +#define        UINT64  void *
1954 +#define BOOLEAN uint8_t
1955 +
1956 +typedef struct  track_instance {
1957 +       int   handle;
1958 +} track_instance_t;
1959 +
1960 +
1961 +#if BITS_PER_LONG <= 32
1962 +#define EXT_ADDR_MODE_OS  EXT_DEF_ADDR_MODE_32
1963 +#else
1964 +#define EXT_ADDR_MODE_OS  EXT_DEF_ADDR_MODE_64
1965 +#endif
1966 +
1967 +
1968 +#define QLMULTIPATH_MAGIC 'y'
1969 +
1970 +#define _QLBUILD   /* for exioct.h to enable include of qinsdmgt.h */
1971 +
1972 +
1973 +
1974 +#define        EXT_DEF_MAX_HBA_OS              255     /* 0 - 0xFE */
1975 +#define        EXT_DEF_MAX_BUS_OS              1
1976 +#define        EXT_DEF_MAX_TARGET_OS           255     /* 0 - 0xFE */
1977 +#define        EXT_DEF_MAX_LUN_OS              255     /* 0 - 0xFE */
1978 +
1979 +#define EXT_DEF_MAX_AEN_QUEUE_OS        64
1980 +
1981 +#define EXT_DEF_FC_HEADER_LEN          24
1982 +#define EXT_DEF_ELS_RJT_LENGTH         0x08    /* 8  */
1983 +#define EXT_DEF_ELS_RPS_ACC_LENGTH     0x40    /* 64 */
1984 +#define EXT_DEF_ELS_RLS_ACC_LENGTH     0x1C    /* 28 */
1985 +
1986 +#define EXT_DEF_USE_HBASELECT          0x02    /* bit 1: HbaSelect field now
1987 +                                                * used to specify destination
1988 +                                                * HBA of each command.
1989 +                                                * SetInstance cmd is now
1990 +                                                * issued only once during
1991 +                                                * API initialization.
1992 +                                                */
1993 +
1994 +
1995 +/*****************/
1996 +/* Command codes */
1997 +/*****************/
1998 +
1999 +/*************************************************************/
2000 +/* These are regular/external command codes, starting from 0 */
2001 +/*************************************************************/
2002 +#define EXT_CC_QUERY_OS                                        /* QUERY */     \
2003 +    _IOWR(QLMULTIPATH_MAGIC, 0x00, sizeof(EXT_IOCTL))
2004 +#define EXT_CC_SEND_FCCT_PASSTHRU_OS                   /* FCCT_PASSTHRU */ \
2005 +    _IOWR(QLMULTIPATH_MAGIC, 0x01, sizeof(EXT_IOCTL))
2006 +#define        EXT_CC_REG_AEN_OS                               /* REG_AEN */   \
2007 +    _IOWR(QLMULTIPATH_MAGIC, 0x02, sizeof(EXT_IOCTL))
2008 +#define        EXT_CC_GET_AEN_OS                               /* GET_AEN */   \
2009 +    _IOWR(QLMULTIPATH_MAGIC, 0x03, sizeof(EXT_IOCTL))
2010 +#define        EXT_CC_SEND_ELS_RNID_OS                         /* SEND_ELS_RNID */ \
2011 +    _IOWR(QLMULTIPATH_MAGIC, 0x04, sizeof(EXT_IOCTL))
2012 +#define        EXT_CC_SCSI_PASSTHRU_OS                         /* SCSI_PASSTHRU */ \
2013 +    _IOWR(QLMULTIPATH_MAGIC, 0x05, sizeof(EXT_IOCTL))
2014 +
2015 +#define EXT_CC_GET_DATA_OS                             /* GET_DATA */  \
2016 +    _IOWR(QLMULTIPATH_MAGIC, 0x06, sizeof(EXT_IOCTL))
2017 +#define EXT_CC_SET_DATA_OS                             /* SET_DATA */  \
2018 +    _IOWR(QLMULTIPATH_MAGIC, 0x07, sizeof(EXT_IOCTL))
2019 +
2020 +/*****************************************/
2021 +/* following are internal command codes. */
2022 +/*****************************************/
2023 +#define EXT_CC_RESERVED0A_OS                                           \
2024 +    _IOWR(QLMULTIPATH_MAGIC, 0x08, sizeof(EXT_IOCTL))
2025 +#define EXT_CC_RESERVED0B_OS                                           \
2026 +    _IOWR(QLMULTIPATH_MAGIC, 0x09, sizeof(EXT_IOCTL))
2027 +
2028 +#define EXT_CC_RESERVED0C_OS                                           \
2029 +    _IOWR(QLMULTIPATH_MAGIC, 0x0a, sizeof(EXT_IOCTL))
2030 +#define EXT_CC_RESERVED0D_OS                                           \
2031 +    _IOWR(QLMULTIPATH_MAGIC, 0x0b, sizeof(EXT_IOCTL))
2032 +
2033 +#define EXT_CC_RESERVED0E_OS                                           \
2034 +    _IOWR(QLMULTIPATH_MAGIC, 0x0c, sizeof(EXT_IOCTL))
2035 +#define EXT_CC_RESERVED0F_OS                                           \
2036 +    _IOWR(QLMULTIPATH_MAGIC, 0x0d, sizeof(EXT_IOCTL))
2037 +
2038 +#define EXT_CC_RESERVED0G_OS                                           \
2039 +    _IOWR(QLMULTIPATH_MAGIC, 0x0e, sizeof(EXT_IOCTL))
2040 +#define EXT_CC_RESERVED0H_OS                                           \
2041 +    _IOWR(QLMULTIPATH_MAGIC, 0x0f, sizeof(EXT_IOCTL))
2042 +
2043 +#define EXT_CC_RESERVED0I_OS                                           \
2044 +    _IOWR(QLMULTIPATH_MAGIC, 0x10, sizeof(EXT_IOCTL))
2045 +#define EXT_CC_RESERVED0J_OS                                           \
2046 +    _IOWR(QLMULTIPATH_MAGIC, 0x11, sizeof(EXT_IOCTL))
2047 +
2048 +#define EXT_CC_RESERVED0Z_OS                                           \
2049 +    _IOWR(QLMULTIPATH_MAGIC, 0x21, sizeof(EXT_IOCTL))
2050 +
2051 +/********************************************************/
2052 +/* These are additional regular/external command codes. */
2053 +/********************************************************/
2054 +#define EXT_CC_SEND_ELS_PASSTHRU_OS                                    \
2055 +    _IOWR(QLMULTIPATH_MAGIC, 0x30, sizeof(EXT_IOCTL))
2056 +
2057 +
2058 +/********************************************************/
2059 +/* Failover ioctl command codes range from 0xc0 to 0xdf */
2060 +/********************************************************/
2061 +
2062 +
2063 +/*******************************************************************/
2064 +/* These are Linux driver implementation specific commands. Values */
2065 +/* start from highest possible value and in decreasing order.      */
2066 +/*******************************************************************/
2067 +
2068 +#define EXT_CC_STARTIOCTL                              /* STARTIOCTL */ \
2069 +    _IOWR(QLMULTIPATH_MAGIC, 0xff, sizeof(EXT_IOCTL))
2070 +#define EXT_CC_SETINSTANCE                             /* SETINSTANCE */ \
2071 +    _IOWR(QLMULTIPATH_MAGIC, 0xfe, sizeof(EXT_IOCTL))
2072 +#define        EXT_CC_WWPN_TO_SCSIADDR                         /* WWPN_TO_SCSIADDR */ \
2073 +    _IOWR(QLMULTIPATH_MAGIC, 0xfd, sizeof(EXT_IOCTL))
2074 +#define        EXT_CC_DRIVER_SPECIFIC                          /* DRIVER_SPECIFIC */ \
2075 +    _IOWR(QLMULTIPATH_MAGIC, 0xfc, sizeof(EXT_IOCTL))
2076 +
2077 +
2078 +/*
2079 + * Response struct definition
2080 + */
2081 +typedef struct _EXT_LN_DRV_VERSION {
2082 +       UINT8   Major;
2083 +       UINT8   Minor;
2084 +       UINT8   Patch;
2085 +       UINT8   Beta;
2086 +       UINT8   Reserved[4];
2087 +} EXT_LN_DRV_VERSION;                          /* 8 */
2088 +
2089 +typedef struct _EXT_LN_DRIVER_DATA {
2090 +       EXT_LN_DRV_VERSION      DrvVer;         /* 8 */
2091 +       UINT32    Reserved[14];                 /* 56 */
2092 +} EXT_LN_DRIVER_DATA, *PEXT_LN_DRIVER_DATA;    /* 64 */
2093 +
2094 +
2095 +
2096 +
2097 +
2098 +
2099 +/*
2100 + * Overrides for Emacs so that we almost follow Linus's tabbing style.
2101 + * Emacs will notice this stuff at the end of the file and automatically
2102 + * adjust the settings for this buffer only.  This must remain at the end
2103 + * of the file.
2104 + * ---------------------------------------------------------------------------
2105 + * Local variables:
2106 + * c-indent-level: 2
2107 + * c-brace-imaginary-offset: 0
2108 + * c-brace-offset: -2
2109 + * c-argdecl-indent: 2
2110 + * c-label-offset: -2
2111 + * c-continued-statement-offset: 4
2112 + * c-continued-brace-offset: 0
2113 + * indent-tabs-mode: nil
2114 + * tab-width: 8
2115 + * End:
2116 + */
2117 +
2118 +#endif /* _EXIOCT_LN_H_ */
2119 +
2120 --- /dev/null   Thu Apr 11 07:25:15 2002
2121 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/inioct.h    Thu Jul  3 15:34:42 2003
2122 @@ -0,0 +1,129 @@
2123 +/******************************************************************************
2124 + *                  QLOGIC LINUX SOFTWARE
2125 + *
2126 + * QLogic ISP2x00 device driver for Linux 2.5.x
2127 + * Copyright (C) 2003 Qlogic Corporation
2128 + * (www.qlogic.com)
2129 + *
2130 + * This program is free software; you can redistribute it and/or modify it
2131 + * under the terms of the GNU General Public License as published by the
2132 + * Free Software Foundation; either version 2, or (at your option) any
2133 + * later version.
2134 + *
2135 + * This program is distributed in the hope that it will be useful, but
2136 + * WITHOUT ANY WARRANTY; without even the implied warranty of
2137 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2138 + * General Public License for more details.
2139 + *
2140 + ******************************************************************************/
2141 +
2142 +/*
2143 + * File Name: inioct.h
2144 + *
2145 + * San/Device Management Ioctl Header
2146 + * File is created to adhere to Solaris requirement using 8-space tabs.
2147 + *
2148 + * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
2149 + * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
2150 + * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
2151 + *
2152 + *
2153 + * Revision History:
2154 + *
2155 + * Rev. 0      June 15, 2001
2156 + * YPL - Created.
2157 + *
2158 + * Rev. 1      June 26, 2001
2159 + * YPL - Change the loop back structure and delete cc that is not used.
2160 + *
2161 + * Rev. 2      June 29, 2001
2162 + * YPL - Use new EXT_CC defines from exioct.h
2163 + *
2164 + * Rev. 3      July 12, 2001
2165 + * RL  - Added definitions for loopback mbx command completion codes.
2166 + *
2167 + * Rev. 4      July 12, 2001
2168 + * RL  - Added definitions for loopback mbx command completion codes.
2169 + *
2170 + * Rev. 5      October 9, 2002
2171 + * AV  - Added definition for Read Option ROM IOCTL.
2172 + *
2173 + */
2174 +
2175 +#ifndef        _INIOCT_H
2176 +#define        _INIOCT_H
2177 +
2178 +/*
2179 + * ***********************************************************************
2180 + * X OS type definitions
2181 + * ***********************************************************************
2182 + */
2183 +#ifdef _MSC_VER                                                /* NT */
2184 +#pragma pack(1)
2185 +#endif
2186 +
2187 +/*
2188 + * ***********************************************************************
2189 + * INT_IOCTL SubCode definition.
2190 + * These macros are being used for setting SubCode field in EXT_IOCTL
2191 + * structure.
2192 + * ***********************************************************************
2193 + */
2194 +
2195 +/*
2196 + * Currently supported DeviceControl / ioctl command codes
2197 + */
2198 +#define        INT_CC_GET_PORT_STAT_FC         EXT_CC_RESERVED0A_OS
2199 +#define        INT_CC_LOOPBACK                 EXT_CC_RESERVED0B_OS
2200 +#define        INT_CC_UPDATE_OPTION_ROM        EXT_CC_RESERVED0C_OS
2201 +#define        INT_CC_ADD_TARGET_DEVICE        EXT_CC_RESERVED0D_OS
2202 +#define        INT_CC_READ_NVRAM               EXT_CC_RESERVED0E_OS
2203 +#define        INT_CC_UPDATE_NVRAM             EXT_CC_RESERVED0F_OS
2204 +#define        INT_CC_SWAP_TARGET_DEVICE       EXT_CC_RESERVED0G_OS
2205 +#define        INT_CC_READ_OPTION_ROM          EXT_CC_RESERVED0H_OS
2206 +#define        INT_CC_LEGACY_LOOPBACK          EXT_CC_RESERVED0Z_OS
2207 +
2208 +
2209 +
2210 +/* NVRAM */
2211 +#define        INT_SC_NVRAM_HARDWARE           0       /* Save */
2212 +#define        INT_SC_NVRAM_DRIVER             1       /* Driver (Apply) */
2213 +#define        INT_SC_NVRAM_ALL                2       /* NVRAM/Driver (Save+Apply) */
2214 +
2215 +/* Loopback */
2216 +typedef struct _INT_LOOPBACK_REQ
2217 +{
2218 +        UINT16 Options;                                /* 2   */
2219 +        UINT32 TransferCount;                  /* 4   */
2220 +        UINT32 IterationCount;                 /* 4   */
2221 +        UINT64 BufferAddress;                  /* 8  */
2222 +        UINT32 BufferLength;                   /* 4  */
2223 +        UINT16 Reserved[9];                    /* 18  */
2224 +}
2225 +INT_LOOPBACK_REQ, *PINT_LOOPBACK_REQ;          /* 408 */
2226 +
2227 +typedef struct _INT_LOOPBACK_RSP
2228 +{
2229 +        UINT64 BufferAddress;                  /* 8  */
2230 +        UINT32 BufferLength;                   /* 4  */
2231 +        UINT16 CompletionStatus;               /* 2   */
2232 +        UINT16 CrcErrorCount;                  /* 2   */
2233 +        UINT16 DisparityErrorCount;            /* 2   */
2234 +        UINT16 FrameLengthErrorCount;          /* 2   */
2235 +        UINT32 IterationCountLastError;                /* 4   */
2236 +        UINT16 Reserved[8];                    /* 16  */
2237 +}
2238 +INT_LOOPBACK_RSP, *PINT_LOOPBACK_RSP;          /* 40  */
2239 +
2240 +/* definition for interpreting CompletionStatus values */
2241 +#define        INT_DEF_LB_COMPLETE     0x4000
2242 +#define        INT_DEF_LB_PARAM_ERR    0x4006
2243 +#define        INT_DEF_LB_LOOP_DOWN    0x400b
2244 +#define        INT_DEF_LB_CMD_ERROR    0x400c
2245 +
2246 +
2247 +#ifdef _MSC_VER
2248 +#pragma pack()
2249 +#endif
2250 +
2251 +#endif /* _INIOCT_H */
2252 --- /dev/null   Thu Apr 11 07:25:15 2002
2253 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/ql2100tp_fw.c       Thu Jul  3 15:34:42 2003
2254 @@ -0,0 +1,4866 @@
2255 +/******************************************************************************
2256 + *                  QLOGIC LINUX SOFTWARE
2257 + *
2258 + * QLogic ISP2x00 device driver for Linux 2.5.x
2259 + * Copyright (C) 2003 Qlogic Corporation
2260 + * (www.qlogic.com)
2261 + *
2262 + * This program is free software; you can redistribute it and/or modify it
2263 + * under the terms of the GNU General Public License as published by the
2264 + * Free Software Foundation; either version 2, or (at your option) any
2265 + * later version.
2266 + *
2267 + * This program is distributed in the hope that it will be useful, but
2268 + * WITHOUT ANY WARRANTY; without even the implied warranty of
2269 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2270 + * General Public License for more details.
2271 + *
2272 + *************************************************************************/
2273 +
2274 +/************************************************************************
2275 + *                                                                     *
2276 + *      --- ISP2100 Fabric Initiator/Target Firmware ---               *
2277 + *                   with expanded LUN addressing                       *
2278 + *                   and FcTape (FCP-2) support                         *
2279 + *                                                                     *
2280 + *                                                                     *
2281 + ************************************************************************/
2282 +/*
2283 + *     Firmware Version 1.19.24 (14:02 Jul 16, 2002)
2284 + */
2285 +
2286 +#ifdef UNIQUE_FW_NAME
2287 +unsigned short fw2100tp_version = 1*1024+19;
2288 +#else
2289 +unsigned short risc_code_version = 1*1024+19;
2290 +#endif
2291 +
2292 +#ifdef UNIQUE_FW_NAME
2293 +unsigned char fw2100tp_version_str[] = {1,19,24};
2294 +#else
2295 +unsigned char firmware_version[] = {1,19,24};
2296 +#endif
2297 +
2298 +#ifdef UNIQUE_FW_NAME
2299 +#define fw2100tp_VERSION_STRING "1.19.24"
2300 +#else
2301 +#define FW_VERSION_STRING "1.19.24"
2302 +#endif
2303 +
2304 +#ifdef UNIQUE_FW_NAME
2305 +unsigned short fw2100tp_addr01 = 0x1000 ;
2306 +#else
2307 +unsigned short risc_code_addr01 = 0x1000 ;
2308 +#endif
2309 +
2310 +#ifdef UNIQUE_FW_NAME
2311 +unsigned short fw2100tp_code01[] = { 
2312 +#else
2313 +unsigned short risc_code01[] = { 
2314 +#endif
2315 +       0x0078, 0x102d, 0x0000, 0x95f1, 0x0000, 0x0001, 0x0013, 0x0018,
2316 +       0x0017, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030,
2317 +       0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241,
2318 +       0x5449, 0x4f4e, 0x2049, 0x5350, 0x3231, 0x3030, 0x2046, 0x6972,
2319 +       0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030,
2320 +       0x312e, 0x3139, 0x2020, 0x2020, 0x2400, 0x2091, 0x2000, 0x20c1,
2321 +       0x0021, 0x2039, 0xffff, 0x2019, 0xaaaa, 0x2760, 0x2069, 0x7fff,
2322 +       0x20c1, 0x0020, 0x2c2c, 0x2d34, 0x2762, 0x236a, 0x2c24, 0x2d04,
2323 +       0x266a, 0x2562, 0xa406, 0x00c0, 0x1052, 0x20c1, 0x0021, 0x2c2c,
2324 +       0x2362, 0x2c04, 0x2562, 0xa306, 0x0040, 0x1052, 0x20c1, 0x0020,
2325 +       0x2039, 0x8fff, 0x20a1, 0xad00, 0x2708, 0x810d, 0x810d, 0x810d,
2326 +       0x810d, 0xa18c, 0x000f, 0x2001, 0x000a, 0xa112, 0xa00e, 0x21a8,
2327 +       0x41a4, 0x3400, 0x8211, 0x00c0, 0x105f, 0x2708, 0x3400, 0xa102,
2328 +       0x0040, 0x106f, 0x0048, 0x106f, 0x20a8, 0xa00e, 0x41a4, 0x20a1,
2329 +       0xa5f1, 0x2009, 0x0000, 0x20a9, 0x070f, 0x41a4, 0x3400, 0x20c9,
2330 +       0xaaff, 0x2059, 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x25c7,
2331 +       0x2051, 0xa600, 0x2a70, 0x7762, 0xa786, 0x8fff, 0x0040, 0x1092,
2332 +       0x705f, 0xcd00, 0x705b, 0xccf1, 0x7067, 0x0200, 0x706b, 0x0200,
2333 +       0x0078, 0x109a, 0x705b, 0xbd01, 0x7067, 0x0100, 0x706b, 0x0100,
2334 +       0x705f, 0xbd00, 0x1078, 0x12df, 0x1078, 0x13ca, 0x1078, 0x1577,
2335 +       0x1078, 0x1ce9, 0x1078, 0x42ec, 0x1078, 0x76bf, 0x1078, 0x1355,
2336 +       0x1078, 0x2ac0, 0x1078, 0x4e93, 0x1078, 0x49a3, 0x1078, 0x594a,
2337 +       0x1078, 0x2263, 0x1078, 0x5c43, 0x1078, 0x5485, 0x1078, 0x2162,
2338 +       0x1078, 0x2240, 0x2091, 0x3009, 0x7823, 0x0000, 0x0090, 0x10cf,
2339 +       0x7820, 0xa086, 0x0002, 0x00c0, 0x10cf, 0x7823, 0x4000, 0x0068,
2340 +       0x10c7, 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70,
2341 +       0x7003, 0x0000, 0x2001, 0x017f, 0x2003, 0x0000, 0x2a70, 0x7000,
2342 +       0xa08e, 0x0003, 0x00c0, 0x10ef, 0x1078, 0x365e, 0x1078, 0x2ae8,
2343 +       0x1078, 0x4ee3, 0x1078, 0x4b66, 0x2009, 0x0100, 0x2104, 0xa082,
2344 +       0x0002, 0x0048, 0x10f3, 0x1078, 0x5966, 0x0078, 0x10d6, 0x1079,
2345 +       0x10f7, 0x0078, 0x10dc, 0x1078, 0x7197, 0x0078, 0x10eb, 0x1101,
2346 +       0x1102, 0x11be, 0x10ff, 0x1246, 0x12dc, 0x12dd, 0x12de, 0x1078,
2347 +       0x1332, 0x007c, 0x127e, 0x0f7e, 0x2091, 0x8000, 0x7000, 0xa086,
2348 +       0x0001, 0x00c0, 0x1198, 0x1078, 0x3aec, 0x2079, 0x0100, 0x7844,
2349 +       0xa005, 0x00c0, 0x1198, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x1078,
2350 +       0x1adf, 0x780f, 0x00ff, 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011,
2351 +       0x8010, 0x73c4, 0x1078, 0x361b, 0x2001, 0xffff, 0x1078, 0x5ae6,
2352 +       0x723c, 0xc284, 0x723e, 0x2001, 0xa60c, 0x2014, 0xc2ac, 0x2202,
2353 +       0x1078, 0x6f9f, 0x2011, 0x0004, 0x1078, 0x8d1b, 0x1078, 0x489e,
2354 +       0x1078, 0x42d4, 0x0040, 0x1144, 0x7087, 0x0001, 0x70bf, 0x0000,
2355 +       0x1078, 0x3c9e, 0x0078, 0x1198, 0x1078, 0x4967, 0x0040, 0x114d,
2356 +       0x7a0c, 0xc2b4, 0x7a0e, 0x0078, 0x1159, 0x1078, 0x90a6, 0x70cc,
2357 +       0xd09c, 0x00c0, 0x1159, 0x7098, 0xa005, 0x0040, 0x1159, 0x1078,
2358 +       0x42b8, 0x70d7, 0x0000, 0x70d3, 0x0000, 0x72cc, 0x2079, 0xa652,
2359 +       0x7804, 0xd0ac, 0x0040, 0x1165, 0xc295, 0x72ce, 0xa296, 0x0004,
2360 +       0x0040, 0x1186, 0x2011, 0x0001, 0x1078, 0x8d1b, 0x7093, 0x0000,
2361 +       0x7097, 0xffff, 0x7003, 0x0002, 0x0f7f, 0x1078, 0x2677, 0x2011,
2362 +       0x0005, 0x1078, 0x70e0, 0x1078, 0x62d1, 0x0c7e, 0x2061, 0x0100,
2363 +       0x60e3, 0x0008, 0x0c7f, 0x127f, 0x0078, 0x119a, 0x7093, 0x0000,
2364 +       0x7097, 0xffff, 0x7003, 0x0002, 0x2011, 0x0005, 0x1078, 0x70e0,
2365 +       0x1078, 0x62d1, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f,
2366 +       0x0f7f, 0x127f, 0x007c, 0x0c7e, 0x20a9, 0x0082, 0x2009, 0x007e,
2367 +       0x017e, 0x027e, 0x037e, 0x2110, 0x027e, 0x2019, 0x0029, 0x1078,
2368 +       0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f, 0x027f, 0x017f, 0x1078,
2369 +       0x298e, 0x8108, 0x00f0, 0x11a0, 0x0c7f, 0x706f, 0x0000, 0x7070,
2370 +       0xa084, 0x00ff, 0x7072, 0x709b, 0x0000, 0x007c, 0x127e, 0x2091,
2371 +       0x8000, 0x7000, 0xa086, 0x0002, 0x00c0, 0x1244, 0x7094, 0xa086,
2372 +       0xffff, 0x0040, 0x11d1, 0x1078, 0x2677, 0x1078, 0x62d1, 0x0078,
2373 +       0x1244, 0x70cc, 0xd09c, 0x0040, 0x11fd, 0xd084, 0x0040, 0x11fd,
2374 +       0x0f7e, 0x2079, 0x0100, 0x790c, 0xc1b5, 0x790e, 0x0f7f, 0xd08c,
2375 +       0x0040, 0x11fd, 0x70d0, 0xa086, 0xffff, 0x0040, 0x11f9, 0x1078,
2376 +       0x27f7, 0x1078, 0x62d1, 0x70cc, 0xd094, 0x00c0, 0x1244, 0x2011,
2377 +       0x0001, 0x2019, 0x0000, 0x1078, 0x282f, 0x1078, 0x62d1, 0x0078,
2378 +       0x1244, 0x70d4, 0xa005, 0x00c0, 0x1244, 0x7090, 0xa005, 0x00c0,
2379 +       0x1244, 0x1078, 0x4967, 0x00c0, 0x1244, 0x2001, 0xa653, 0x2004,
2380 +       0xd0ac, 0x0040, 0x1227, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009,
2381 +       0x0000, 0x017e, 0x1078, 0x45c4, 0x00c0, 0x121a, 0x6000, 0xd0ec,
2382 +       0x00c0, 0x1222, 0x017f, 0x8108, 0x00f0, 0x1211, 0x0c7f, 0x157f,
2383 +       0x0078, 0x1227, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x1244, 0x7003,
2384 +       0x0003, 0x7097, 0xffff, 0x2001, 0x0000, 0x1078, 0x24e8, 0x1078,
2385 +       0x3699, 0x2001, 0xa8b2, 0x2004, 0xa086, 0x0005, 0x00c0, 0x123c,
2386 +       0x2011, 0x0000, 0x1078, 0x70e0, 0x2011, 0x0000, 0x1078, 0x70ea,
2387 +       0x1078, 0x62d1, 0x1078, 0x639b, 0x127f, 0x007c, 0x017e, 0x0f7e,
2388 +       0x127e, 0x2091, 0x8000, 0x2079, 0x0100, 0x2009, 0x00f7, 0x1078,
2389 +       0x42a1, 0x7940, 0xa18c, 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0040,
2390 +       0x125b, 0x7827, 0x0040, 0xd19c, 0x0040, 0x1260, 0x7827, 0x0008,
2391 +       0x007e, 0x037e, 0x157e, 0xa006, 0x1078, 0x5ae6, 0x7900, 0xa18a,
2392 +       0x0003, 0x0050, 0x1289, 0x7954, 0xd1ac, 0x00c0, 0x1289, 0x2009,
2393 +       0x00f8, 0x1078, 0x42a1, 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9,
2394 +       0x09c4, 0x7820, 0xd09c, 0x00c0, 0x1281, 0x7824, 0xd0ac, 0x00c0,
2395 +       0x12ca, 0x00f0, 0x1279, 0x2001, 0x0001, 0x1078, 0x24e8, 0x0078,
2396 +       0x12d5, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9, 0x0050, 0x00e0,
2397 +       0x128f, 0x2091, 0x6000, 0x00f0, 0x128f, 0x7853, 0x0400, 0x782f,
2398 +       0x0000, 0x2009, 0x00f8, 0x1078, 0x42a1, 0x20a9, 0x000e, 0x0005,
2399 +       0x00f0, 0x129f, 0x7853, 0x1400, 0x7843, 0x0090, 0x7843, 0x0010,
2400 +       0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040, 0x12b4,
2401 +       0x7824, 0xd0ac, 0x00c0, 0x12ca, 0x8319, 0x00c0, 0x12aa, 0x2009,
2402 +       0xa632, 0x2104, 0x8000, 0x200a, 0xa084, 0xfff0, 0x0040, 0x12c4,
2403 +       0x200b, 0x0000, 0x1078, 0x2588, 0x2001, 0x0001, 0x1078, 0x24e8,
2404 +       0x0078, 0x12d3, 0x2001, 0xa632, 0x2003, 0x0000, 0x7828, 0xc09d,
2405 +       0x782a, 0x7827, 0x0048, 0x7853, 0x0400, 0x157f, 0x037f, 0x007f,
2406 +       0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c, 0x007c, 0x2a70,
2407 +       0x2061, 0xa8ad, 0x2063, 0x0001, 0x6007, 0x0013, 0x600b, 0x0018,
2408 +       0x600f, 0x0017, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
2409 +       0x12f5, 0x7053, 0xffff, 0x0078, 0x12f7, 0x7053, 0x0000, 0x7057,
2410 +       0xffff, 0x706f, 0x0000, 0x7073, 0x0000, 0x1078, 0x90a6, 0x2061,
2411 +       0xa88d, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f,
2412 +       0x0200, 0x6013, 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000, 0x601f,
2413 +       0x07d0, 0x2061, 0xa895, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b,
2414 +       0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000, 0x601b,
2415 +       0x0001, 0x601f, 0x0000, 0x2061, 0xa8a5, 0x6003, 0x514c, 0x6007,
2416 +       0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, 0x2001, 0xa626, 0x2003,
2417 +       0x0000, 0x007c, 0x2091, 0x8000, 0x0068, 0x1334, 0x007e, 0x017e,
2418 +       0x2079, 0x0000, 0x7818, 0xd084, 0x00c0, 0x133a, 0x017f, 0x792e,
2419 +       0x007f, 0x782a, 0x007f, 0x7826, 0x3900, 0x783a, 0x7823, 0x8002,
2420 +       0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2079, 0xa600,
2421 +       0x7803, 0x0005, 0x0078, 0x1352, 0x007c, 0x2071, 0xa600, 0x715c,
2422 +       0x712e, 0x2021, 0x0001, 0xa190, 0x002d, 0xa298, 0x002d, 0x0048,
2423 +       0x136b, 0x7060, 0xa302, 0x00c8, 0x136b, 0x220a, 0x2208, 0x2310,
2424 +       0x8420, 0x0078, 0x135d, 0x200b, 0x0000, 0x74aa, 0x74ae, 0x007c,
2425 +       0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa600, 0x70ac, 0xa0ea,
2426 +       0x0010, 0x00c8, 0x137e, 0xa06e, 0x0078, 0x1388, 0x8001, 0x70ae,
2427 +       0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000,
2428 +       0x127f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa600, 0x127e, 0x2091,
2429 +       0x8000, 0x70ac, 0x8001, 0x00c8, 0x1398, 0xa06e, 0x0078, 0x13a1,
2430 +       0x70ae, 0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807,
2431 +       0x0000, 0x127f, 0x0e7f, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000,
2432 +       0x2071, 0xa600, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70ac, 0x8000,
2433 +       0x70ae, 0x127f, 0x0e7f, 0x007c, 0x8dff, 0x0040, 0x13c0, 0x6804,
2434 +       0x6807, 0x0000, 0x007e, 0x1078, 0x13a4, 0x0d7f, 0x0078, 0x13b4,
2435 +       0x007c, 0x0e7e, 0x2071, 0xa600, 0x70ac, 0xa08a, 0x0010, 0xa00d,
2436 +       0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa8d6, 0x7007, 0x0000, 0x701b,
2437 +       0x0000, 0x701f, 0x0000, 0x2071, 0x0000, 0x7010, 0xa085, 0x8004,
2438 +       0x7012, 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x0e7e, 0x2270,
2439 +       0x700b, 0x0000, 0x2071, 0xa8d6, 0x7018, 0xa088, 0xa8df, 0x220a,
2440 +       0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005, 0x00c0, 0x13f6,
2441 +       0x0f7e, 0x2079, 0x0010, 0x1078, 0x1408, 0x0f7f, 0x0e7f, 0x127f,
2442 +       0x007c, 0x0e7e, 0x2071, 0xa8d6, 0x7004, 0xa005, 0x00c0, 0x1406,
2443 +       0x0f7e, 0x2079, 0x0010, 0x1078, 0x1408, 0x0f7f, 0x0e7f, 0x007c,
2444 +       0x7000, 0x0079, 0x140b, 0x140f, 0x1479, 0x1496, 0x1496, 0x7018,
2445 +       0x711c, 0xa106, 0x00c0, 0x1417, 0x7007, 0x0000, 0x007c, 0x0d7e,
2446 +       0xa180, 0xa8df, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007,
2447 +       0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c,
2448 +       0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804,
2449 +       0x0d7f, 0xd084, 0x0040, 0x1439, 0x7007, 0x0001, 0x1078, 0x143e,
2450 +       0x007c, 0x7007, 0x0002, 0x1078, 0x1454, 0x007c, 0x017e, 0x027e,
2451 +       0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1449, 0x2110,
2452 +       0xa006, 0x700e, 0x7212, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803,
2453 +       0x0041, 0x027f, 0x017f, 0x007c, 0x017e, 0x027e, 0x137e, 0x147e,
2454 +       0x157e, 0x7014, 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026, 0x710c,
2455 +       0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1468, 0x2110, 0xa006,
2456 +       0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822, 0x7803, 0x0020, 0x3300,
2457 +       0x7016, 0x7803, 0x0001, 0x157f, 0x147f, 0x137f, 0x027f, 0x017f,
2458 +       0x007c, 0x137e, 0x147e, 0x157e, 0x2099, 0xa6fa, 0x20a1, 0x0018,
2459 +       0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
2460 +       0x7803, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002, 0x700b,
2461 +       0xa6f5, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x137e, 0x147e,
2462 +       0x157e, 0x2001, 0xa729, 0x209c, 0x20a1, 0x0014, 0x7803, 0x0026,
2463 +       0x2001, 0xa72a, 0x20ac, 0x53a6, 0x2099, 0xa72b, 0x20a1, 0x0018,
2464 +       0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
2465 +       0x7803, 0x0001, 0x7007, 0x0004, 0x7000, 0xc08c, 0x7002, 0x700b,
2466 +       0xa726, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e, 0x0e7e,
2467 +       0x2071, 0xa8d6, 0x0f7e, 0x2079, 0x0010, 0x7904, 0x7803, 0x0002,
2468 +       0xd1fc, 0x0040, 0x14d0, 0xa18c, 0x0700, 0x7004, 0x1079, 0x14d4,
2469 +       0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x1408, 0x14dc, 0x1509, 0x1531,
2470 +       0x1564, 0x14da, 0x0078, 0x14da, 0xa18c, 0x0700, 0x00c0, 0x1502,
2471 +       0x137e, 0x147e, 0x157e, 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803,
2472 +       0x0040, 0x7010, 0x20a8, 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f,
2473 +       0x137f, 0x700c, 0xa005, 0x0040, 0x151e, 0x1078, 0x143e, 0x007c,
2474 +       0x7008, 0xa080, 0x0002, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078,
2475 +       0x1408, 0x007c, 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x0078,
2476 +       0x14fd, 0xa18c, 0x0700, 0x00c0, 0x1514, 0x700c, 0xa005, 0x0040,
2477 +       0x151e, 0x1078, 0x1454, 0x007c, 0x7008, 0xa080, 0x0002, 0x2003,
2478 +       0x0200, 0x7007, 0x0000, 0x1078, 0x1408, 0x007c, 0x0d7e, 0x7008,
2479 +       0x2068, 0x7830, 0x6826, 0x7834, 0x682a, 0x7838, 0x682e, 0x783c,
2480 +       0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007, 0x0000, 0x1078, 0x1408,
2481 +       0x007c, 0xa18c, 0x0700, 0x00c0, 0x155e, 0x137e, 0x147e, 0x157e,
2482 +       0x2001, 0xa6f8, 0x2004, 0xa080, 0x000d, 0x20a0, 0x2099, 0x0014,
2483 +       0x7803, 0x0040, 0x20a9, 0x0020, 0x53a5, 0x2001, 0xa6fa, 0x2004,
2484 +       0xd0bc, 0x0040, 0x1554, 0x2001, 0xa703, 0x2004, 0xa080, 0x000d,
2485 +       0x20a0, 0x20a9, 0x0020, 0x53a5, 0x157f, 0x147f, 0x137f, 0x7007,
2486 +       0x0000, 0x1078, 0x4f8c, 0x1078, 0x1408, 0x007c, 0x2011, 0x8003,
2487 +       0x1078, 0x361b, 0x0078, 0x1562, 0xa18c, 0x0700, 0x00c0, 0x1571,
2488 +       0x2001, 0xa728, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, 0x1408,
2489 +       0x007c, 0x2011, 0x8004, 0x1078, 0x361b, 0x0078, 0x1575, 0x127e,
2490 +       0x2091, 0x2100, 0x2079, 0x0030, 0x2071, 0xa8e7, 0x7803, 0x0004,
2491 +       0x7003, 0x0000, 0x700f, 0xa8ed, 0x7013, 0xa8ed, 0x780f, 0x0076,
2492 +       0x7803, 0x0004, 0x127f, 0x007c, 0x6934, 0xa184, 0x0007, 0x0079,
2493 +       0x1591, 0x1599, 0x15df, 0x1599, 0x1599, 0x1599, 0x15c4, 0x15a8,
2494 +       0x159d, 0xa085, 0x0001, 0x0078, 0x15f9, 0x684c, 0xd0bc, 0x0040,
2495 +       0x1599, 0x6860, 0x682e, 0x685c, 0x682a, 0x6858, 0x0078, 0x15e7,
2496 +       0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0, 0x1599, 0x684c, 0xd0bc,
2497 +       0x0040, 0x1599, 0x6860, 0x682e, 0x685c, 0x682a, 0x6804, 0x681a,
2498 +       0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004,
2499 +       0x6832, 0x6858, 0x0078, 0x15ef, 0xa18c, 0x00ff, 0xa186, 0x0015,
2500 +       0x00c0, 0x1599, 0x684c, 0xd0ac, 0x0040, 0x1599, 0x6804, 0x681a,
2501 +       0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004,
2502 +       0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0078, 0x15ef, 0x684c,
2503 +       0xd0ac, 0x0040, 0x1599, 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c,
2504 +       0x000f, 0xa188, 0x206a, 0x210c, 0x6932, 0x2d08, 0x691a, 0x6826,
2505 +       0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912, 0x6980,
2506 +       0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a,
2507 +       0x2004, 0x82ff, 0x0040, 0x161c, 0xa280, 0x0004, 0x0d7e, 0x206c,
2508 +       0x684c, 0xd0dc, 0x00c0, 0x1618, 0x1078, 0x158c, 0x0040, 0x1618,
2509 +       0x0d7f, 0xa280, 0x0000, 0x2003, 0x0002, 0xa016, 0x0078, 0x161c,
2510 +       0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e, 0x047e, 0x037e, 0x027e,
2511 +       0x2091, 0x2100, 0x027f, 0x037f, 0x047f, 0x7000, 0xa005, 0x00c0,
2512 +       0x1630, 0x7206, 0x2001, 0x1651, 0x007e, 0x2260, 0x0078, 0x17e0,
2513 +       0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108, 0xa182,
2514 +       0xa908, 0x0048, 0x163d, 0x2009, 0xa8ed, 0x710e, 0x7010, 0xa102,
2515 +       0xa082, 0x0009, 0x0040, 0x1648, 0xa080, 0x001b, 0x00c0, 0x164b,
2516 +       0x2009, 0x0138, 0x200a, 0x7000, 0xa005, 0x00c0, 0x1651, 0x1078,
2517 +       0x17c1, 0x127f, 0x007c, 0x127e, 0x027e, 0x037e, 0x0c7e, 0x007e,
2518 +       0x2091, 0x2100, 0x007f, 0x047f, 0x037f, 0x027f, 0x0d7e, 0x0c7e,
2519 +       0x2460, 0x6110, 0x2168, 0x6a62, 0x6b5e, 0xa005, 0x0040, 0x16dd,
2520 +       0x6808, 0xa005, 0x0040, 0x174a, 0x7000, 0xa005, 0x00c0, 0x1672,
2521 +       0x0078, 0x16d2, 0x700c, 0x7110, 0xa106, 0x00c0, 0x1753, 0x7004,
2522 +       0xa406, 0x00c0, 0x16d2, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040,
2523 +       0x168f, 0x047e, 0x1078, 0x1913, 0x047f, 0x2460, 0x6010, 0xa080,
2524 +       0x0002, 0x2004, 0xa005, 0x0040, 0x174a, 0x0078, 0x166c, 0x2001,
2525 +       0x0207, 0x2004, 0xd09c, 0x00c0, 0x167b, 0x7804, 0xa084, 0x6000,
2526 +       0x0040, 0x16a0, 0xa086, 0x6000, 0x0040, 0x16a0, 0x0078, 0x167b,
2527 +       0x7100, 0xa186, 0x0002, 0x00c0, 0x16c0, 0x0e7e, 0x2b68, 0x6818,
2528 +       0x2060, 0x1078, 0x203f, 0x2804, 0xac70, 0x6034, 0xd09c, 0x00c0,
2529 +       0x16b5, 0x7108, 0x720c, 0x0078, 0x16b7, 0x7110, 0x7214, 0x6810,
2530 +       0xa100, 0x6812, 0x6814, 0xa201, 0x6816, 0x0e7f, 0x0078, 0x16c4,
2531 +       0xa186, 0x0001, 0x00c0, 0x16cc, 0x7820, 0x6910, 0xa100, 0x6812,
2532 +       0x7824, 0x6914, 0xa101, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000,
2533 +       0x7004, 0x2060, 0x6100, 0xa18e, 0x0004, 0x00c0, 0x1753, 0x2009,
2534 +       0x0048, 0x1078, 0x775c, 0x0078, 0x1753, 0x6808, 0xa005, 0x0040,
2535 +       0x174a, 0x7000, 0xa005, 0x00c0, 0x16e7, 0x0078, 0x174a, 0x700c,
2536 +       0x7110, 0xa106, 0x00c0, 0x16f0, 0x7004, 0xa406, 0x00c0, 0x174a,
2537 +       0x2001, 0x0005, 0x2004, 0xd08c, 0x0040, 0x1704, 0x047e, 0x1078,
2538 +       0x1913, 0x047f, 0x2460, 0x6010, 0xa080, 0x0002, 0x2004, 0xa005,
2539 +       0x0040, 0x174a, 0x0078, 0x16e1, 0x2001, 0x0207, 0x2004, 0xd09c,
2540 +       0x00c0, 0x16f0, 0x2001, 0x0005, 0x2004, 0xd08c, 0x00c0, 0x16f6,
2541 +       0x7804, 0xa084, 0x6000, 0x0040, 0x171b, 0xa086, 0x6000, 0x0040,
2542 +       0x171b, 0x0078, 0x16f0, 0x7007, 0x0000, 0xa016, 0x2218, 0x7000,
2543 +       0xa08e, 0x0001, 0x0040, 0x173c, 0xa08e, 0x0002, 0x00c0, 0x174a,
2544 +       0x0c7e, 0x0e7e, 0x6818, 0x2060, 0x1078, 0x203f, 0x2804, 0xac70,
2545 +       0x6034, 0xd09c, 0x00c0, 0x1738, 0x7308, 0x720c, 0x0078, 0x173a,
2546 +       0x7310, 0x7214, 0x0e7f, 0x0c7f, 0x7820, 0xa318, 0x7824, 0xa211,
2547 +       0x6810, 0xa300, 0x6812, 0x6814, 0xa201, 0x6816, 0x7803, 0x0004,
2548 +       0x7003, 0x0000, 0x6100, 0xa18e, 0x0004, 0x00c0, 0x1753, 0x2009,
2549 +       0x0048, 0x1078, 0x775c, 0x0c7f, 0x0d7f, 0x127f, 0x007c, 0x0f7e,
2550 +       0x0e7e, 0x027e, 0x037e, 0x047e, 0x057e, 0x2071, 0xa8e7, 0x7000,
2551 +       0xa086, 0x0000, 0x0040, 0x17ba, 0x7004, 0xac06, 0x00c0, 0x17ab,
2552 +       0x2079, 0x0030, 0x7000, 0xa086, 0x0003, 0x0040, 0x17ab, 0x7804,
2553 +       0xd0fc, 0x00c0, 0x17a7, 0x20e1, 0x6000, 0x2011, 0x0032, 0x2001,
2554 +       0x0208, 0x200c, 0x2001, 0x0209, 0x2004, 0xa106, 0x00c0, 0x176f,
2555 +       0x8211, 0x00c0, 0x1777, 0x7804, 0xd0fc, 0x00c0, 0x17a7, 0x1078,
2556 +       0x1b22, 0x027e, 0x057e, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0,
2557 +       0x178d, 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007,
2558 +       0x0000, 0x057f, 0x027f, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001,
2559 +       0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x0078, 0x17ab, 0x1078,
2560 +       0x1913, 0x0078, 0x175f, 0x157e, 0x20a9, 0x0009, 0x2009, 0xa8ed,
2561 +       0x2104, 0xac06, 0x00c0, 0x17b5, 0x200a, 0xa188, 0x0003, 0x00f0,
2562 +       0x17b0, 0x157f, 0x057f, 0x047f, 0x037f, 0x027f, 0x0e7f, 0x0f7f,
2563 +       0x007c, 0x700c, 0x7110, 0xa106, 0x00c0, 0x17c9, 0x7003, 0x0000,
2564 +       0x007c, 0x2104, 0x7006, 0x2060, 0x8108, 0x211c, 0x8108, 0x2124,
2565 +       0x8108, 0xa182, 0xa908, 0x0048, 0x17d7, 0x2009, 0xa8ed, 0x7112,
2566 +       0x700c, 0xa106, 0x00c0, 0x17e0, 0x2001, 0x0138, 0x2003, 0x0008,
2567 +       0x8cff, 0x00c0, 0x17e7, 0x1078, 0x1b4d, 0x0078, 0x1854, 0x6010,
2568 +       0x2068, 0x2d58, 0x6828, 0xa406, 0x00c0, 0x17f2, 0x682c, 0xa306,
2569 +       0x0040, 0x182f, 0x601c, 0xa086, 0x0008, 0x0040, 0x182f, 0x6024,
2570 +       0xd0f4, 0x00c0, 0x181c, 0xd0d4, 0x0040, 0x1818, 0x6038, 0xa402,
2571 +       0x6034, 0xa303, 0x0040, 0x1806, 0x00c8, 0x1818, 0x643a, 0x6336,
2572 +       0x6c2a, 0x6b2e, 0x047e, 0x037e, 0x2400, 0x6c7c, 0xa402, 0x6812,
2573 +       0x2300, 0x6b80, 0xa303, 0x6816, 0x037f, 0x047f, 0x0078, 0x181c,
2574 +       0x1078, 0x9053, 0x0040, 0x17e3, 0x2001, 0xa674, 0x2004, 0xd0b4,
2575 +       0x00c0, 0x182b, 0x6018, 0x2004, 0xd0bc, 0x00c0, 0x182b, 0x6817,
2576 +       0x7fff, 0x6813, 0xffff, 0x1078, 0x208a, 0x00c0, 0x17e3, 0x0c7e,
2577 +       0x7004, 0x2060, 0x6024, 0xc0d4, 0x6026, 0x0c7f, 0x684c, 0xd0f4,
2578 +       0x0040, 0x1840, 0x6817, 0xffff, 0x6813, 0xffff, 0x0078, 0x17e3,
2579 +       0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc,
2580 +       0x000f, 0x2009, 0x0011, 0x1078, 0x1855, 0x0040, 0x1853, 0x2009,
2581 +       0x0001, 0x1078, 0x1855, 0x2d58, 0x007c, 0x8aff, 0x0040, 0x18ec,
2582 +       0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1877, 0xd0f4, 0x00c0,
2583 +       0x1887, 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, 0x1867, 0x18ce,
2584 +       0x188e, 0x188e, 0x18ce, 0x18ce, 0x18c6, 0x18ce, 0x188e, 0x18ce,
2585 +       0x1894, 0x1894, 0x18ce, 0x18ce, 0x18ce, 0x18bd, 0x1894, 0xc0fc,
2586 +       0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0x0d7e, 0xd99c, 0x0040,
2587 +       0x18d1, 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x18d1, 0xc0f4,
2588 +       0x6852, 0x6b6c, 0x6a70, 0x0d7e, 0x0078, 0x18d8, 0x6b08, 0x6a0c,
2589 +       0x6d00, 0x6c04, 0x0078, 0x18d1, 0x7b0c, 0xd3bc, 0x0040, 0x18b5,
2590 +       0x7004, 0x0e7e, 0x2070, 0x701c, 0x0e7f, 0xa086, 0x0008, 0x00c0,
2591 +       0x18b5, 0x7b08, 0xa39c, 0x0fff, 0x2d20, 0x0d7f, 0x0d7e, 0x6a14,
2592 +       0x82ff, 0x00c0, 0x18b0, 0x6810, 0xa302, 0x0048, 0x18b0, 0x6b10,
2593 +       0x2011, 0x0000, 0x2468, 0x0078, 0x18b7, 0x6b10, 0x6a14, 0x6d00,
2594 +       0x6c04, 0x6f08, 0x6e0c, 0x0078, 0x18d1, 0x0d7f, 0x0d7e, 0x6834,
2595 +       0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x18ce, 0x0d7f, 0x1078,
2596 +       0x2026, 0x00c0, 0x1855, 0xa00e, 0x0078, 0x18ec, 0x0d7f, 0x1078,
2597 +       0x1332, 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902,
2598 +       0x7000, 0x8000, 0x7002, 0x0d7f, 0x6828, 0xa300, 0x682a, 0x682c,
2599 +       0xa201, 0x682e, 0x2300, 0x6b10, 0xa302, 0x6812, 0x2200, 0x6a14,
2600 +       0xa203, 0x6816, 0x1078, 0x2026, 0x007c, 0x1078, 0x1332, 0x1078,
2601 +       0x1c97, 0x7004, 0x2060, 0x0d7e, 0x6010, 0x2068, 0x7003, 0x0000,
2602 +       0x1078, 0x1af4, 0x1078, 0x8d06, 0x0040, 0x190c, 0x6808, 0x8001,
2603 +       0x680a, 0x697c, 0x6912, 0x6980, 0x6916, 0x682b, 0xffff, 0x682f,
2604 +       0xffff, 0x6850, 0xc0bd, 0x6852, 0x0d7f, 0x1078, 0x8a01, 0x0078,
2605 +       0x1adb, 0x1078, 0x1332, 0x127e, 0x2091, 0x2100, 0x007e, 0x017e,
2606 +       0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700,
2607 +       0x00c0, 0x18ef, 0xa184, 0x0003, 0xa086, 0x0003, 0x0040, 0x1911,
2608 +       0x7000, 0x0079, 0x192b, 0x1933, 0x1935, 0x1a34, 0x1ab2, 0x1ac9,
2609 +       0x1933, 0x1933, 0x1933, 0x1078, 0x1332, 0x8001, 0x7002, 0xa184,
2610 +       0x0880, 0x00c0, 0x194a, 0x8aff, 0x0040, 0x19d4, 0x2009, 0x0001,
2611 +       0x1078, 0x1855, 0x0040, 0x1adb, 0x2009, 0x0001, 0x1078, 0x1855,
2612 +       0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x00c0,
2613 +       0x19b2, 0x027e, 0x037e, 0x017e, 0x7808, 0xd0ec, 0x00c0, 0x1962,
2614 +       0x7c20, 0x7d24, 0x7e30, 0x7f34, 0x7803, 0x0009, 0x7003, 0x0004,
2615 +       0x0078, 0x1964, 0x1078, 0x1bd7, 0x017f, 0xd194, 0x0040, 0x196b,
2616 +       0x8aff, 0x0040, 0x19a1, 0x6b28, 0x6a2c, 0x2400, 0x686e, 0xa31a,
2617 +       0x2500, 0x6872, 0xa213, 0x6b2a, 0x6a2e, 0x0c7e, 0x7004, 0x2060,
2618 +       0x6024, 0xd0f4, 0x00c0, 0x197e, 0x633a, 0x6236, 0x0c7f, 0x2400,
2619 +       0x6910, 0xa100, 0x6812, 0x2500, 0x6914, 0xa101, 0x6816, 0x037f,
2620 +       0x027f, 0x2600, 0x681e, 0x2700, 0x6822, 0x1078, 0x203f, 0x2a00,
2621 +       0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x6850, 0xc0fd, 0x6852,
2622 +       0x6808, 0x8001, 0x680a, 0x00c0, 0x19a7, 0x684c, 0xd0e4, 0x0040,
2623 +       0x19a7, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x7000,
2624 +       0xa086, 0x0004, 0x0040, 0x1adb, 0x7003, 0x0000, 0x1078, 0x17c1,
2625 +       0x0078, 0x1adb, 0x057e, 0x7d0c, 0xd5bc, 0x00c0, 0x19b9, 0x1078,
2626 +       0xa57e, 0x057f, 0x1078, 0x1af4, 0x0f7e, 0x7004, 0x2078, 0x1078,
2627 +       0x4963, 0x0040, 0x19c6, 0x7824, 0xc0f5, 0x7826, 0x0f7f, 0x682b,
2628 +       0xffff, 0x682f, 0xffff, 0x6808, 0x8001, 0x680a, 0x697c, 0x6912,
2629 +       0x6980, 0x6916, 0x0078, 0x1adb, 0x7004, 0x0c7e, 0x2060, 0x6024,
2630 +       0x0c7f, 0xd0f4, 0x0040, 0x19e1, 0x6808, 0x8001, 0x680a, 0x0078,
2631 +       0x19f5, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005, 0x00c0, 0x19f9,
2632 +       0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0, 0x19f5, 0x7004,
2633 +       0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x1078, 0x17c1, 0x0078,
2634 +       0x1adb, 0x7814, 0x6910, 0xa102, 0x6812, 0x6914, 0xa183, 0x0000,
2635 +       0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa192, 0x0841, 0x00c8,
2636 +       0x18ef, 0xa188, 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104,
2637 +       0x8004, 0x8004, 0xa20a, 0x810b, 0x810b, 0x810b, 0x1078, 0x1b5e,
2638 +       0x7803, 0x0004, 0x780f, 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc,
2639 +       0x0040, 0x1a1e, 0x7803, 0x0002, 0x7803, 0x0004, 0x780f, 0x0076,
2640 +       0x7004, 0x7007, 0x0000, 0x2060, 0x2009, 0x0048, 0x1078, 0x775c,
2641 +       0x1078, 0x1b92, 0x0040, 0x19f5, 0x8001, 0x7002, 0xd194, 0x0040,
2642 +       0x1a46, 0x7804, 0xd0fc, 0x00c0, 0x191b, 0x8aff, 0x0040, 0x1adb,
2643 +       0x2009, 0x0001, 0x1078, 0x1855, 0x0078, 0x1adb, 0xa184, 0x0880,
2644 +       0x00c0, 0x1a53, 0x8aff, 0x0040, 0x1adb, 0x2009, 0x0001, 0x1078,
2645 +       0x1855, 0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc,
2646 +       0x00c0, 0x1a93, 0x027e, 0x037e, 0x7808, 0xd0ec, 0x00c0, 0x1a66,
2647 +       0x7803, 0x0009, 0x7003, 0x0004, 0x0078, 0x1a68, 0x1078, 0x1bd7,
2648 +       0x6b28, 0x6a2c, 0x1078, 0x203f, 0x0d7e, 0x0f7e, 0x2d78, 0x2804,
2649 +       0xac68, 0x6034, 0xd09c, 0x00c0, 0x1a83, 0x6808, 0x2008, 0xa31a,
2650 +       0x680c, 0xa213, 0x7810, 0xa100, 0x7812, 0x690c, 0x7814, 0xa101,
2651 +       0x7816, 0x0078, 0x1a8f, 0x6810, 0x2008, 0xa31a, 0x6814, 0xa213,
2652 +       0x7810, 0xa100, 0x7812, 0x6914, 0x7814, 0xa101, 0x7816, 0x0f7f,
2653 +       0x0d7f, 0x0078, 0x196d, 0x057e, 0x7d0c, 0x1078, 0xa57e, 0x057f,
2654 +       0x1078, 0x1af4, 0x0f7e, 0x7004, 0x2078, 0x1078, 0x4963, 0x0040,
2655 +       0x1aa4, 0x7824, 0xc0f5, 0x7826, 0x0f7f, 0x682b, 0xffff, 0x682f,
2656 +       0xffff, 0x6808, 0x8001, 0x680a, 0x697c, 0x6912, 0x6980, 0x6916,
2657 +       0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d,
2658 +       0x0040, 0x1ac5, 0x6808, 0x8001, 0x680a, 0x00c0, 0x1ac5, 0x7004,
2659 +       0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x1078, 0x17c1, 0x0078,
2660 +       0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6010,
2661 +       0xa005, 0x0040, 0x1ac5, 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28,
2662 +       0x6b2c, 0x1078, 0x17e0, 0x017f, 0x007f, 0x127f, 0x007c, 0x127e,
2663 +       0x2091, 0x2100, 0x7000, 0xa086, 0x0003, 0x00c0, 0x1af2, 0x700c,
2664 +       0x7110, 0xa106, 0x0040, 0x1af2, 0x20e1, 0x9028, 0x700f, 0xa8ed,
2665 +       0x7013, 0xa8ed, 0x127f, 0x007c, 0x0c7e, 0x1078, 0x1b22, 0x20e1,
2666 +       0x9028, 0x700c, 0x7110, 0xa106, 0x0040, 0x1b19, 0x2104, 0xa005,
2667 +       0x0040, 0x1b08, 0x2060, 0x6010, 0x2060, 0x6008, 0x8001, 0x600a,
2668 +       0xa188, 0x0003, 0xa182, 0xa908, 0x0048, 0x1b10, 0x2009, 0xa8ed,
2669 +       0x7112, 0x700c, 0xa106, 0x00c0, 0x1af9, 0x2011, 0x0008, 0x0078,
2670 +       0x1af9, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, 0x0138, 0x2202,
2671 +       0x0c7f, 0x007c, 0x2001, 0x0138, 0x2014, 0x2003, 0x0000, 0x2021,
2672 +       0xb015, 0x2001, 0x0141, 0x201c, 0xd3dc, 0x00c0, 0x1b3f, 0x2001,
2673 +       0x0109, 0x201c, 0xa39c, 0x0048, 0x00c0, 0x1b3f, 0x2001, 0x0111,
2674 +       0x201c, 0x83ff, 0x00c0, 0x1b3f, 0x8421, 0x00c0, 0x1b29, 0x007c,
2675 +       0x2011, 0x0201, 0x2009, 0x003c, 0x2204, 0xa005, 0x00c0, 0x1b4c,
2676 +       0x8109, 0x00c0, 0x1b44, 0x007c, 0x007c, 0x1078, 0x1b40, 0x0040,
2677 +       0x1b55, 0x780c, 0xd0a4, 0x0040, 0x1b5b, 0x1078, 0x1af4, 0xa085,
2678 +       0x0001, 0x0078, 0x1b5d, 0x1078, 0x1b92, 0x007c, 0x0e7e, 0x2071,
2679 +       0x0200, 0x7808, 0xa084, 0xf000, 0xa10d, 0x1078, 0x1b22, 0x2019,
2680 +       0x5000, 0x8319, 0x0040, 0x1b7c, 0x2001, 0xa908, 0x2004, 0xa086,
2681 +       0x0000, 0x0040, 0x1b7c, 0x2001, 0x0021, 0xd0fc, 0x0040, 0x1b69,
2682 +       0x1078, 0x1eaa, 0x0078, 0x1b67, 0x20e1, 0x7000, 0x7324, 0x7420,
2683 +       0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e, 0x702f,
2684 +       0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0138, 0x2202,
2685 +       0x0e7f, 0x007c, 0x027e, 0x2001, 0x015d, 0x2001, 0x0000, 0x7908,
2686 +       0xa18c, 0x0fff, 0xa182, 0x0ffd, 0x0048, 0x1ba0, 0x2009, 0x0000,
2687 +       0xa190, 0x0007, 0xa294, 0x1ff8, 0x8214, 0x8214, 0x8214, 0x2001,
2688 +       0x020a, 0x82ff, 0x0040, 0x1bb5, 0x20e1, 0x6000, 0x200c, 0x200c,
2689 +       0x200c, 0x200c, 0x8211, 0x00c0, 0x1bae, 0x20e1, 0x7000, 0x200c,
2690 +       0x200c, 0x7003, 0x0000, 0x20e1, 0x6000, 0x2001, 0x0208, 0x200c,
2691 +       0x2001, 0x0209, 0x2004, 0xa106, 0x0040, 0x1bd4, 0x1078, 0x1b40,
2692 +       0x0040, 0x1bd2, 0x7908, 0xd1ec, 0x00c0, 0x1bd4, 0x790c, 0xd1a4,
2693 +       0x0040, 0x1b97, 0x1078, 0x1af4, 0xa006, 0x027f, 0x007c, 0x7c20,
2694 +       0x7d24, 0x7e30, 0x7f34, 0x700c, 0x7110, 0xa106, 0x0040, 0x1c69,
2695 +       0x7004, 0x017e, 0x210c, 0xa106, 0x017f, 0x0040, 0x1c69, 0x0d7e,
2696 +       0x0c7e, 0x216c, 0x2d00, 0xa005, 0x0040, 0x1c67, 0x681c, 0xa086,
2697 +       0x0008, 0x0040, 0x1c67, 0x6824, 0xd0d4, 0x00c0, 0x1c67, 0x6810,
2698 +       0x2068, 0x6850, 0xd0fc, 0x0040, 0x1c29, 0x8108, 0x2104, 0x6b2c,
2699 +       0xa306, 0x00c0, 0x1c67, 0x8108, 0x2104, 0x6a28, 0xa206, 0x00c0,
2700 +       0x1c67, 0x6850, 0xc0fc, 0xc0f5, 0x6852, 0x686c, 0x7822, 0x6870,
2701 +       0x7826, 0x681c, 0x7832, 0x6820, 0x7836, 0x6818, 0x2060, 0x6034,
2702 +       0xd09c, 0x0040, 0x1c24, 0x6830, 0x2004, 0xac68, 0x6808, 0x783a,
2703 +       0x680c, 0x783e, 0x0078, 0x1c65, 0xa006, 0x783a, 0x783e, 0x0078,
2704 +       0x1c65, 0x8108, 0x2104, 0xa005, 0x00c0, 0x1c67, 0x6b2c, 0xa306,
2705 +       0x00c0, 0x1c67, 0x8108, 0x2104, 0xa005, 0x00c0, 0x1c67, 0x6a28,
2706 +       0xa206, 0x00c0, 0x1c67, 0x6850, 0xc0f5, 0x6852, 0x6830, 0x2004,
2707 +       0x6918, 0xa160, 0xa180, 0x000d, 0x2004, 0xd09c, 0x00c0, 0x1c57,
2708 +       0x6008, 0x7822, 0x686e, 0x600c, 0x7826, 0x6872, 0x6000, 0x7832,
2709 +       0x6004, 0x7836, 0xa006, 0x783a, 0x783e, 0x0078, 0x1c65, 0x6010,
2710 +       0x7822, 0x686e, 0x6014, 0x7826, 0x6872, 0x6000, 0x7832, 0x6004,
2711 +       0x7836, 0x6008, 0x783a, 0x600c, 0x783e, 0x7803, 0x0011, 0x0c7f,
2712 +       0x0d7f, 0x007c, 0x0f7e, 0x0e7e, 0x017e, 0x027e, 0x2071, 0xa8e7,
2713 +       0x2079, 0x0030, 0x2011, 0x0050, 0x7000, 0xa086, 0x0000, 0x0040,
2714 +       0x1c92, 0x8211, 0x0040, 0x1c90, 0x2001, 0x0005, 0x2004, 0xd08c,
2715 +       0x0040, 0x1c79, 0x7904, 0xa18c, 0x0780, 0x017e, 0x1078, 0x1913,
2716 +       0x017f, 0x81ff, 0x00c0, 0x1c90, 0x2011, 0x0050, 0x0078, 0x1c74,
2717 +       0xa085, 0x0001, 0x027f, 0x017f, 0x0e7f, 0x0f7f, 0x007c, 0x7803,
2718 +       0x0004, 0x2009, 0x0064, 0x7804, 0xd0ac, 0x0040, 0x1ce8, 0x8109,
2719 +       0x00c0, 0x1c9b, 0x2009, 0x0100, 0x210c, 0xa18a, 0x0003, 0x1048,
2720 +       0x1332, 0x1078, 0x1fca, 0x0e7e, 0x0f7e, 0x2071, 0xa8d6, 0x2079,
2721 +       0x0010, 0x7004, 0xa086, 0x0000, 0x0040, 0x1ce0, 0x7800, 0x007e,
2722 +       0x7820, 0x007e, 0x7830, 0x007e, 0x7834, 0x007e, 0x7838, 0x007e,
2723 +       0x783c, 0x007e, 0x7803, 0x0004, 0x7823, 0x0000, 0x0005, 0x0005,
2724 +       0x2079, 0x0030, 0x7804, 0xd0ac, 0x10c0, 0x1332, 0x2079, 0x0010,
2725 +       0x007f, 0x783e, 0x007f, 0x783a, 0x007f, 0x7836, 0x007f, 0x7832,
2726 +       0x007f, 0x7822, 0x007f, 0x7802, 0x0f7f, 0x0e7f, 0x0078, 0x1ce6,
2727 +       0x0f7f, 0x0e7f, 0x7804, 0xd0ac, 0x10c0, 0x1332, 0x1078, 0x639b,
2728 +       0x007c, 0x0e7e, 0x2071, 0xa908, 0x7003, 0x0000, 0x0e7f, 0x007c,
2729 +       0x0d7e, 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x1d6b,
2730 +       0x6934, 0xa184, 0x0007, 0x0079, 0x1cfd, 0x1d05, 0x1d56, 0x1d05,
2731 +       0x1d05, 0x1d05, 0x1d3b, 0x1d18, 0x1d07, 0x1078, 0x1332, 0x684c,
2732 +       0xd0b4, 0x0040, 0x1e79, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a,
2733 +       0x6812, 0x687c, 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x1d5e,
2734 +       0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x1d05, 0x684c,
2735 +       0xd0b4, 0x0040, 0x1e79, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a,
2736 +       0x6812, 0x687c, 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080,
2737 +       0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832,
2738 +       0x6958, 0x0078, 0x1d67, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0,
2739 +       0x1d6b, 0x684c, 0xd0b4, 0x0040, 0x1e79, 0x6804, 0x681a, 0xa080,
2740 +       0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832,
2741 +       0x6958, 0xa006, 0x682e, 0x682a, 0x0078, 0x1d67, 0x684c, 0xd0b4,
2742 +       0x0040, 0x18ed, 0x6958, 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a,
2743 +       0x6834, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832, 0x6926,
2744 +       0x684c, 0xc0dd, 0x684e, 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020,
2745 +       0x7804, 0xd0fc, 0x10c0, 0x1eaa, 0x0e7e, 0x0d7e, 0x2071, 0xa908,
2746 +       0x7000, 0xa005, 0x00c0, 0x1df0, 0x0c7e, 0x7206, 0xa280, 0x0004,
2747 +       0x205c, 0x7004, 0x2068, 0x7803, 0x0004, 0x6818, 0x0d7e, 0x2068,
2748 +       0x686c, 0x7812, 0x6890, 0x0f7e, 0x20e1, 0x9040, 0x2079, 0x0200,
2749 +       0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x0f7f, 0x0d7f, 0x2b68,
2750 +       0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc,
2751 +       0x000f, 0x6908, 0x2001, 0x04fd, 0x2004, 0xa086, 0x0007, 0x0040,
2752 +       0x1db2, 0xa184, 0x0007, 0x0040, 0x1db2, 0x017e, 0x2009, 0x0008,
2753 +       0xa102, 0x017f, 0xa108, 0x791a, 0x7116, 0x701e, 0x680c, 0xa081,
2754 +       0x0000, 0x781e, 0x701a, 0xa006, 0x700e, 0x7012, 0x7004, 0x692c,
2755 +       0x6814, 0xa106, 0x00c0, 0x1dc9, 0x6928, 0x6810, 0xa106, 0x0040,
2756 +       0x1dd6, 0x037e, 0x047e, 0x6b14, 0x6c10, 0x1078, 0x208a, 0x047f,
2757 +       0x037f, 0x0040, 0x1dd6, 0x0c7f, 0x0078, 0x1df0, 0x8aff, 0x00c0,
2758 +       0x1dde, 0x0c7f, 0xa085, 0x0001, 0x0078, 0x1df0, 0x127e, 0x2091,
2759 +       0x8000, 0x2079, 0x0020, 0x2009, 0x0001, 0x1078, 0x1df4, 0x0040,
2760 +       0x1ded, 0x2009, 0x0001, 0x1078, 0x1df4, 0x127f, 0x0c7f, 0xa006,
2761 +       0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x077e, 0x067e, 0x057e, 0x047e,
2762 +       0x037e, 0x027e, 0x8aff, 0x0040, 0x1e72, 0x700c, 0x7214, 0xa23a,
2763 +       0x7010, 0x7218, 0xa203, 0x0048, 0x1e71, 0xa705, 0x0040, 0x1e71,
2764 +       0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1e24, 0x0d7e, 0x2804,
2765 +       0xac68, 0x2900, 0x0079, 0x1e14, 0x1e53, 0x1e34, 0x1e34, 0x1e53,
2766 +       0x1e53, 0x1e4b, 0x1e53, 0x1e34, 0x1e53, 0x1e3a, 0x1e3a, 0x1e53,
2767 +       0x1e53, 0x1e53, 0x1e42, 0x1e3a, 0xc0fc, 0x6852, 0x6b6c, 0x6a70,
2768 +       0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1e57, 0x0d7e, 0x2804, 0xac68,
2769 +       0x6f08, 0x6e0c, 0x0078, 0x1e56, 0x6b08, 0x6a0c, 0x6d00, 0x6c04,
2770 +       0x0078, 0x1e56, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c,
2771 +       0x0078, 0x1e56, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086,
2772 +       0x001e, 0x00c0, 0x1e53, 0x0d7f, 0x1078, 0x2026, 0x00c0, 0x1dfa,
2773 +       0xa00e, 0x0078, 0x1e72, 0x0d7f, 0x1078, 0x1332, 0x0d7f, 0x7b22,
2774 +       0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000,
2775 +       0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x700c,
2776 +       0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x1078, 0x2026, 0x0078,
2777 +       0x1e72, 0xa006, 0x027f, 0x037f, 0x047f, 0x057f, 0x067f, 0x077f,
2778 +       0x007c, 0x1078, 0x1332, 0x027e, 0x2001, 0x0105, 0x2003, 0x0010,
2779 +       0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060,
2780 +       0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x1e92, 0x6850,
2781 +       0xc0bd, 0x6852, 0x0d7f, 0x0c7e, 0x1078, 0x8a01, 0x0c7f, 0x2001,
2782 +       0xa8c0, 0x2004, 0xac06, 0x00c0, 0x1ea7, 0x20e1, 0x9040, 0x1078,
2783 +       0x738a, 0x2011, 0x0000, 0x1078, 0x70ea, 0x1078, 0x639b, 0x027f,
2784 +       0x0078, 0x1f76, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x0f7e,
2785 +       0x0e7e, 0x0d7e, 0x0c7e, 0x2079, 0x0020, 0x2071, 0xa908, 0x2b68,
2786 +       0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0,
2787 +       0x1e7b, 0x7000, 0x0079, 0x1ec4, 0x1f76, 0x1ec8, 0x1f43, 0x1f74,
2788 +       0x8001, 0x7002, 0xd19c, 0x00c0, 0x1edc, 0x8aff, 0x0040, 0x1efb,
2789 +       0x2009, 0x0001, 0x1078, 0x1df4, 0x0040, 0x1f76, 0x2009, 0x0001,
2790 +       0x1078, 0x1df4, 0x0078, 0x1f76, 0x7803, 0x0004, 0xd194, 0x0040,
2791 +       0x1eec, 0x6850, 0xc0fc, 0x6852, 0x8aff, 0x00c0, 0x1ef1, 0x684c,
2792 +       0xc0f5, 0x684e, 0x0078, 0x1ef1, 0x1078, 0x203f, 0x6850, 0xc0fd,
2793 +       0x6852, 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003,
2794 +       0x0000, 0x0078, 0x1f76, 0x711c, 0x81ff, 0x0040, 0x1f11, 0x7918,
2795 +       0x7922, 0x7827, 0x0000, 0x7803, 0x0001, 0x7000, 0x8000, 0x7002,
2796 +       0x700c, 0xa100, 0x700e, 0x7010, 0xa081, 0x0000, 0x7012, 0x0078,
2797 +       0x1f76, 0x0f7e, 0x027e, 0x781c, 0x007e, 0x7818, 0x007e, 0x2079,
2798 +       0x0100, 0x7a14, 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x037e,
2799 +       0x2019, 0x1000, 0x8319, 0x1040, 0x1332, 0x7820, 0xd0bc, 0x00c0,
2800 +       0x1f22, 0x037f, 0x79c8, 0x007f, 0xa102, 0x017f, 0x007e, 0x017e,
2801 +       0x79c4, 0x007f, 0xa103, 0x78c6, 0x007f, 0x78ca, 0xa284, 0x0004,
2802 +       0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f, 0x7803, 0x0008, 0x7003,
2803 +       0x0000, 0x0078, 0x1f76, 0x8001, 0x7002, 0xd194, 0x0040, 0x1f58,
2804 +       0x7804, 0xd0fc, 0x00c0, 0x1eba, 0xd19c, 0x00c0, 0x1f72, 0x8aff,
2805 +       0x0040, 0x1f76, 0x2009, 0x0001, 0x1078, 0x1df4, 0x0078, 0x1f76,
2806 +       0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x203f, 0x0d7e, 0x2804,
2807 +       0xac68, 0x6034, 0xd09c, 0x00c0, 0x1f6b, 0x6808, 0xa31a, 0x680c,
2808 +       0xa213, 0x0078, 0x1f6f, 0x6810, 0xa31a, 0x6814, 0xa213, 0x0d7f,
2809 +       0x0078, 0x1eec, 0x0078, 0x1eec, 0x1078, 0x1332, 0x0c7f, 0x0d7f,
2810 +       0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f, 0x007c, 0x0f7e, 0x0e7e,
2811 +       0x2071, 0xa908, 0x7000, 0xa086, 0x0000, 0x0040, 0x1fc7, 0x2079,
2812 +       0x0020, 0x017e, 0x2009, 0x0207, 0x210c, 0xd194, 0x0040, 0x1fa4,
2813 +       0x2009, 0x020c, 0x210c, 0xa184, 0x0003, 0x0040, 0x1fa4, 0x1078,
2814 +       0xa5d2, 0x2001, 0x0133, 0x2004, 0xa005, 0x1040, 0x1332, 0x20e1,
2815 +       0x9040, 0x2001, 0x020c, 0x2102, 0x2009, 0x0206, 0x2104, 0x2009,
2816 +       0x0203, 0x210c, 0xa106, 0x00c0, 0x1faf, 0x20e1, 0x9040, 0x7804,
2817 +       0xd0fc, 0x0040, 0x1f8a, 0x1078, 0x1eaa, 0x7000, 0xa086, 0x0000,
2818 +       0x00c0, 0x1f8a, 0x017f, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0,
2819 +       0x1fbd, 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, 0x0e7f,
2820 +       0x0f7f, 0x007c, 0x027e, 0x0c7e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2071,
2821 +       0xa908, 0x2079, 0x0020, 0x7000, 0xa086, 0x0000, 0x0040, 0x2003,
2822 +       0x7004, 0x2060, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x1fed,
2823 +       0x6850, 0xc0b5, 0x6852, 0x680c, 0x7a1c, 0xa206, 0x00c0, 0x1fed,
2824 +       0x6808, 0x7a18, 0xa206, 0x0040, 0x2009, 0x2001, 0x0105, 0x2003,
2825 +       0x0010, 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004,
2826 +       0x2060, 0x1078, 0x8a01, 0x20e1, 0x9040, 0x1078, 0x738a, 0x2011,
2827 +       0x0000, 0x1078, 0x70ea, 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x027f,
2828 +       0x007c, 0x6810, 0x6a14, 0xa205, 0x00c0, 0x1fed, 0x684c, 0xc0dc,
2829 +       0x684e, 0x2c10, 0x1078, 0x1cf0, 0x2001, 0x0105, 0x2003, 0x0010,
2830 +       0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x2069, 0xa8b1,
2831 +       0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x2003, 0x8840, 0x2804,
2832 +       0xa005, 0x00c0, 0x203a, 0x6004, 0xa005, 0x0040, 0x203c, 0x681a,
2833 +       0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x206a, 0x2044, 0x88ff,
2834 +       0x1040, 0x1332, 0x8a51, 0x007c, 0x2051, 0x0000, 0x007c, 0x8a50,
2835 +       0x8841, 0x2804, 0xa005, 0x00c0, 0x2059, 0x2c00, 0xad06, 0x0040,
2836 +       0x204e, 0x6000, 0xa005, 0x00c0, 0x204e, 0x2d00, 0x2060, 0x681a,
2837 +       0x6034, 0xa084, 0x000f, 0xa080, 0x207a, 0x2044, 0x88ff, 0x1040,
2838 +       0x1332, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019, 0x001d, 0x0021,
2839 +       0x0025, 0x0029, 0x0000, 0x000f, 0x0015, 0x001b, 0x0021, 0x0027,
2840 +       0x0000, 0x0000, 0x0000, 0x205f, 0x205b, 0x0000, 0x0000, 0x2069,
2841 +       0x0000, 0x205f, 0x0000, 0x2066, 0x2063, 0x0000, 0x0000, 0x0000,
2842 +       0x2069, 0x2066, 0x0000, 0x2061, 0x2061, 0x0000, 0x0000, 0x2069,
2843 +       0x0000, 0x2061, 0x0000, 0x2067, 0x2067, 0x0000, 0x0000, 0x0000,
2844 +       0x2069, 0x2067, 0x0a7e, 0x097e, 0x087e, 0x6b2e, 0x6c2a, 0x6858,
2845 +       0xa055, 0x0040, 0x212d, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0,
2846 +       0x206a, 0xa986, 0x0007, 0x0040, 0x20a5, 0xa986, 0x000e, 0x0040,
2847 +       0x20a5, 0xa986, 0x000f, 0x00c0, 0x20a9, 0x605c, 0xa422, 0x6060,
2848 +       0xa31a, 0x2804, 0xa045, 0x00c0, 0x20b7, 0x0050, 0x20b1, 0x0078,
2849 +       0x212d, 0x6004, 0xa065, 0x0040, 0x212d, 0x0078, 0x2094, 0x2804,
2850 +       0xa005, 0x0040, 0x20d5, 0xac68, 0xd99c, 0x00c0, 0x20c5, 0x6808,
2851 +       0xa422, 0x680c, 0xa31b, 0x0078, 0x20c9, 0x6810, 0xa422, 0x6814,
2852 +       0xa31b, 0x0048, 0x20f4, 0x2300, 0xa405, 0x0040, 0x20db, 0x8a51,
2853 +       0x0040, 0x212d, 0x8840, 0x0078, 0x20b7, 0x6004, 0xa065, 0x0040,
2854 +       0x212d, 0x0078, 0x2094, 0x8a51, 0x0040, 0x212d, 0x8840, 0x2804,
2855 +       0xa005, 0x00c0, 0x20ee, 0x6004, 0xa065, 0x0040, 0x212d, 0x6034,
2856 +       0xa0cc, 0x000f, 0xa9c0, 0x206a, 0x2804, 0x2040, 0x2b68, 0x6850,
2857 +       0xc0fc, 0x6852, 0x0078, 0x2121, 0x8422, 0x8420, 0x831a, 0xa399,
2858 +       0x0000, 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0,
2859 +       0x210f, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048,
2860 +       0x1332, 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, 0x211b, 0x6910,
2861 +       0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, 0x1332, 0x6800,
2862 +       0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd,
2863 +       0x6852, 0x2c00, 0x681a, 0x2800, 0x6832, 0x2a00, 0x6826, 0x007f,
2864 +       0x007f, 0x007f, 0xa006, 0x0078, 0x2132, 0x087f, 0x097f, 0x0a7f,
2865 +       0xa085, 0x0001, 0x007c, 0x2001, 0x0005, 0x2004, 0xa084, 0x0007,
2866 +       0x0079, 0x213a, 0x2142, 0x2143, 0x2146, 0x2149, 0x214e, 0x2151,
2867 +       0x2156, 0x215b, 0x007c, 0x1078, 0x1eaa, 0x007c, 0x1078, 0x1913,
2868 +       0x007c, 0x1078, 0x1913, 0x1078, 0x1eaa, 0x007c, 0x1078, 0x14be,
2869 +       0x007c, 0x1078, 0x1eaa, 0x1078, 0x14be, 0x007c, 0x1078, 0x1913,
2870 +       0x1078, 0x14be, 0x007c, 0x1078, 0x1913, 0x1078, 0x1eaa, 0x1078,
2871 +       0x14be, 0x007c, 0x127e, 0x2091, 0x2300, 0x2079, 0x0200, 0x2071,
2872 +       0xab80, 0x2069, 0xa600, 0x2009, 0x0004, 0x7912, 0x7817, 0x0004,
2873 +       0x1078, 0x251f, 0x781b, 0x0002, 0x20e1, 0x8700, 0x127f, 0x007c,
2874 +       0x127e, 0x2091, 0x2300, 0x781c, 0xa084, 0x0007, 0x0079, 0x2180,
2875 +       0x21a4, 0x2188, 0x218c, 0x2190, 0x2196, 0x219a, 0x219e, 0x21a2,
2876 +       0x1078, 0x548e, 0x0078, 0x21a4, 0x1078, 0x54da, 0x0078, 0x21a4,
2877 +       0x1078, 0x548e, 0x1078, 0x54da, 0x0078, 0x21a4, 0x1078, 0x21a6,
2878 +       0x0078, 0x21a4, 0x1078, 0x21a6, 0x0078, 0x21a4, 0x1078, 0x21a6,
2879 +       0x0078, 0x21a4, 0x1078, 0x21a6, 0x127f, 0x007c, 0x007e, 0x017e,
2880 +       0x027e, 0x1078, 0xa5d2, 0x7930, 0xa184, 0x0003, 0x0040, 0x21c9,
2881 +       0x2001, 0xa8c0, 0x2004, 0xa005, 0x0040, 0x21c5, 0x2001, 0x0133,
2882 +       0x2004, 0xa005, 0x1040, 0x1332, 0x0c7e, 0x2001, 0xa8c0, 0x2064,
2883 +       0x1078, 0x8a01, 0x0c7f, 0x0078, 0x21f2, 0x20e1, 0x9040, 0x0078,
2884 +       0x21f2, 0xa184, 0x0030, 0x0040, 0x21da, 0x6a00, 0xa286, 0x0003,
2885 +       0x00c0, 0x21d4, 0x0078, 0x21d6, 0x1078, 0x4224, 0x20e1, 0x9010,
2886 +       0x0078, 0x21f2, 0xa184, 0x00c0, 0x0040, 0x21ec, 0x0e7e, 0x037e,
2887 +       0x047e, 0x057e, 0x2071, 0xa8e7, 0x1078, 0x1af4, 0x057f, 0x047f,
2888 +       0x037f, 0x0e7f, 0x0078, 0x21f2, 0xa184, 0x0300, 0x0040, 0x21f2,
2889 +       0x20e1, 0x9020, 0x7932, 0x027f, 0x017f, 0x007f, 0x007c, 0x017e,
2890 +       0x0e7e, 0x0f7e, 0x2071, 0xa600, 0x7128, 0x2001, 0xa890, 0x2102,
2891 +       0x2001, 0xa898, 0x2102, 0xa182, 0x0211, 0x00c8, 0x220b, 0x2009,
2892 +       0x0008, 0x0078, 0x2235, 0xa182, 0x0259, 0x00c8, 0x2213, 0x2009,
2893 +       0x0007, 0x0078, 0x2235, 0xa182, 0x02c1, 0x00c8, 0x221b, 0x2009,
2894 +       0x0006, 0x0078, 0x2235, 0xa182, 0x0349, 0x00c8, 0x2223, 0x2009,
2895 +       0x0005, 0x0078, 0x2235, 0xa182, 0x0421, 0x00c8, 0x222b, 0x2009,
2896 +       0x0004, 0x0078, 0x2235, 0xa182, 0x0581, 0x00c8, 0x2233, 0x2009,
2897 +       0x0003, 0x0078, 0x2235, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912,
2898 +       0x7817, 0x0004, 0x1078, 0x251f, 0x0f7f, 0x0e7f, 0x017f, 0x007c,
2899 +       0x127e, 0x2091, 0x2200, 0x2061, 0x0100, 0x2071, 0xa600, 0x6024,
2900 +       0x6026, 0x6053, 0x0030, 0x6033, 0x00ef, 0x60e7, 0x0000, 0x60eb,
2901 +       0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f,
2902 +       0x0080, 0x602f, 0x0000, 0x6007, 0x0eaf, 0x600f, 0x00ff, 0x602b,
2903 +       0x002f, 0x127f, 0x007c, 0x2001, 0xa630, 0x2003, 0x0000, 0x2001,
2904 +       0xa62f, 0x2003, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200, 0x007e,
2905 +       0x017e, 0x027e, 0x6124, 0xa184, 0x002c, 0x00c0, 0x227b, 0xa184,
2906 +       0x0007, 0x0079, 0x2281, 0xa195, 0x0004, 0xa284, 0x0007, 0x0079,
2907 +       0x2281, 0x22ad, 0x2289, 0x228d, 0x2291, 0x2297, 0x229b, 0x22a1,
2908 +       0x22a7, 0x1078, 0x5c56, 0x0078, 0x22ad, 0x1078, 0x5d45, 0x0078,
2909 +       0x22ad, 0x1078, 0x5d45, 0x1078, 0x5c56, 0x0078, 0x22ad, 0x1078,
2910 +       0x22b2, 0x0078, 0x22ad, 0x1078, 0x5c56, 0x1078, 0x22b2, 0x0078,
2911 +       0x22ad, 0x1078, 0x5d45, 0x1078, 0x22b2, 0x0078, 0x22ad, 0x1078,
2912 +       0x5d45, 0x1078, 0x5c56, 0x1078, 0x22b2, 0x027f, 0x017f, 0x007f,
2913 +       0x127f, 0x007c, 0x6124, 0xd1ac, 0x0040, 0x23ac, 0x017e, 0x047e,
2914 +       0x0c7e, 0x644c, 0xa486, 0xf0f0, 0x00c0, 0x22c5, 0x2061, 0x0100,
2915 +       0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74c6, 0xa48c, 0xff00,
2916 +       0x7034, 0xd084, 0x0040, 0x22dd, 0xa186, 0xf800, 0x00c0, 0x22dd,
2917 +       0x703c, 0xd084, 0x00c0, 0x22dd, 0xc085, 0x703e, 0x037e, 0x2418,
2918 +       0x2011, 0x8016, 0x1078, 0x361b, 0x037f, 0xa196, 0xff00, 0x0040,
2919 +       0x231f, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116, 0x0040, 0x231f,
2920 +       0x7130, 0xd184, 0x00c0, 0x231f, 0x2011, 0xa653, 0x2214, 0xd2ec,
2921 +       0x0040, 0x22fa, 0xc18d, 0x7132, 0x2011, 0xa653, 0x2214, 0xd2ac,
2922 +       0x00c0, 0x231f, 0x6240, 0xa294, 0x0010, 0x0040, 0x2306, 0x6248,
2923 +       0xa294, 0xff00, 0xa296, 0xff00, 0x0040, 0x231f, 0x7030, 0xd08c,
2924 +       0x0040, 0x2371, 0x7034, 0xd08c, 0x00c0, 0x2316, 0x2001, 0xa60c,
2925 +       0x200c, 0xd1ac, 0x00c0, 0x2371, 0xc1ad, 0x2102, 0x037e, 0x73c4,
2926 +       0x2011, 0x8013, 0x1078, 0x361b, 0x037f, 0x0078, 0x2371, 0x7034,
2927 +       0xd08c, 0x00c0, 0x232b, 0x2001, 0xa60c, 0x200c, 0xd1ac, 0x00c0,
2928 +       0x2371, 0xc1ad, 0x2102, 0x037e, 0x73c4, 0x2011, 0x8013, 0x1078,
2929 +       0x361b, 0x037f, 0x7130, 0xc185, 0x7132, 0x2011, 0xa653, 0x220c,
2930 +       0xd1a4, 0x0040, 0x2355, 0x017e, 0x2009, 0x0001, 0x2011, 0x0100,
2931 +       0x1078, 0x5bf1, 0x2019, 0x000e, 0x1078, 0xa195, 0xa484, 0x00ff,
2932 +       0xa080, 0x29c0, 0x200c, 0xa18c, 0xff00, 0x810f, 0x8127, 0xa006,
2933 +       0x2009, 0x000e, 0x1078, 0xa21d, 0x017f, 0xd1ac, 0x00c0, 0x2362,
2934 +       0x017e, 0x2009, 0x0000, 0x2019, 0x0004, 0x1078, 0x284f, 0x017f,
2935 +       0x0078, 0x2371, 0x157e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x1078,
2936 +       0x45c4, 0x00c0, 0x236d, 0x1078, 0x42f8, 0x8108, 0x00f0, 0x2367,
2937 +       0x157f, 0x0c7f, 0x047f, 0x0f7e, 0x2079, 0xa8c4, 0x783c, 0xa086,
2938 +       0x0000, 0x0040, 0x2383, 0x6027, 0x0004, 0x783f, 0x0000, 0x2079,
2939 +       0x0140, 0x7803, 0x0000, 0x0f7f, 0x2011, 0x0003, 0x1078, 0x70e0,
2940 +       0x2011, 0x0002, 0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e, 0x2019,
2941 +       0x0000, 0x1078, 0x7058, 0x037f, 0x60e3, 0x0000, 0x017f, 0x2001,
2942 +       0xa600, 0x2014, 0xa296, 0x0004, 0x00c0, 0x23a4, 0xd19c, 0x00c0,
2943 +       0x23ac, 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0xa622,
2944 +       0x2003, 0x0000, 0x6027, 0x0020, 0xd194, 0x0040, 0x2490, 0x0f7e,
2945 +       0x2079, 0xa8c4, 0x783c, 0xa086, 0x0001, 0x00c0, 0x23d0, 0x017e,
2946 +       0x6027, 0x0004, 0x783f, 0x0000, 0x2079, 0x0140, 0x7803, 0x1000,
2947 +       0x7803, 0x0000, 0x2079, 0xa8b1, 0x7807, 0x0000, 0x7833, 0x0000,
2948 +       0x1078, 0x62d1, 0x1078, 0x639b, 0x017f, 0x0f7f, 0x0078, 0x2490,
2949 +       0x0f7f, 0x017e, 0x3900, 0xa082, 0xa9e3, 0x00c8, 0x23db, 0x017e,
2950 +       0x1078, 0x747a, 0x017f, 0x6220, 0xd2b4, 0x0040, 0x2446, 0x1078,
2951 +       0x5acb, 0x1078, 0x6e0f, 0x6027, 0x0004, 0x0f7e, 0x2019, 0xa8ba,
2952 +       0x2304, 0xa07d, 0x0040, 0x241c, 0x7804, 0xa086, 0x0032, 0x00c0,
2953 +       0x241c, 0x0d7e, 0x0c7e, 0x0e7e, 0x2069, 0x0140, 0x618c, 0x6288,
2954 +       0x7818, 0x608e, 0x7808, 0x608a, 0x6043, 0x0002, 0x2001, 0x0003,
2955 +       0x8001, 0x00c0, 0x2400, 0x6043, 0x0000, 0x6803, 0x1000, 0x6803,
2956 +       0x0000, 0x618e, 0x628a, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x7810,
2957 +       0x2070, 0x7037, 0x0103, 0x2f60, 0x1078, 0x772d, 0x0e7f, 0x0c7f,
2958 +       0x0d7f, 0x0f7f, 0x017f, 0x007c, 0x0f7f, 0x0d7e, 0x2069, 0x0140,
2959 +       0x6804, 0xa084, 0x4000, 0x0040, 0x2429, 0x6803, 0x1000, 0x6803,
2960 +       0x0000, 0x0d7f, 0x0c7e, 0x2061, 0xa8b1, 0x6028, 0xa09a, 0x00c8,
2961 +       0x00c8, 0x2439, 0x8000, 0x602a, 0x0c7f, 0x1078, 0x6e01, 0x0078,
2962 +       0x248f, 0x2019, 0xa8ba, 0x2304, 0xa065, 0x0040, 0x2443, 0x2009,
2963 +       0x0027, 0x1078, 0x775c, 0x0c7f, 0x0078, 0x248f, 0xd2bc, 0x0040,
2964 +       0x248f, 0x1078, 0x5ad8, 0x6017, 0x0010, 0x6027, 0x0004, 0x0d7e,
2965 +       0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x245b, 0x6803,
2966 +       0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0xa8b1, 0x6044,
2967 +       0xa09a, 0x00c8, 0x00c8, 0x247e, 0x8000, 0x6046, 0x603c, 0x0c7f,
2968 +       0xa005, 0x0040, 0x248f, 0x2009, 0x07d0, 0x1078, 0x5ad0, 0xa080,
2969 +       0x0007, 0x2004, 0xa086, 0x0006, 0x00c0, 0x247a, 0x6017, 0x0012,
2970 +       0x0078, 0x248f, 0x6017, 0x0016, 0x0078, 0x248f, 0x037e, 0x2019,
2971 +       0x0001, 0x1078, 0x7058, 0x037f, 0x2019, 0xa8c0, 0x2304, 0xa065,
2972 +       0x0040, 0x248e, 0x2009, 0x004f, 0x1078, 0x775c, 0x0c7f, 0x017f,
2973 +       0xd19c, 0x0040, 0x24e4, 0x7034, 0xd0ac, 0x00c0, 0x24c1, 0x017e,
2974 +       0x157e, 0x6027, 0x0008, 0x602f, 0x0020, 0x20a9, 0x000a, 0x00f0,
2975 +       0x249f, 0x602f, 0x0000, 0x6150, 0xa185, 0x1400, 0x6052, 0x20a9,
2976 +       0x0320, 0x00e0, 0x24a9, 0x2091, 0x6000, 0x6020, 0xd09c, 0x00c0,
2977 +       0x24b8, 0x157f, 0x6152, 0x017f, 0x6027, 0x0008, 0x0078, 0x24e4,
2978 +       0x1078, 0x2577, 0x00f0, 0x24a9, 0x157f, 0x6152, 0x017f, 0x6027,
2979 +       0x0008, 0x017e, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078,
2980 +       0x70e0, 0x2011, 0x0002, 0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e,
2981 +       0x2019, 0x0000, 0x1078, 0x7058, 0x037f, 0x60e3, 0x0000, 0x1078,
2982 +       0xa5ad, 0x1078, 0xa5cb, 0x2001, 0xa600, 0x2003, 0x0004, 0x6027,
2983 +       0x0008, 0x1078, 0x1246, 0x017f, 0xa18c, 0xffd0, 0x6126, 0x007c,
2984 +       0x007e, 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e, 0x2091, 0x8000,
2985 +       0x2071, 0xa600, 0x71bc, 0x70be, 0xa116, 0x0040, 0x2518, 0x81ff,
2986 +       0x0040, 0x2500, 0x2011, 0x8011, 0x1078, 0x361b, 0x0078, 0x2518,
2987 +       0x2011, 0x8012, 0x1078, 0x361b, 0x2001, 0xa672, 0x2004, 0xd0fc,
2988 +       0x00c0, 0x2518, 0x037e, 0x0c7e, 0x1078, 0x6f9f, 0x2061, 0x0100,
2989 +       0x2019, 0x0028, 0x2009, 0x0000, 0x1078, 0x284f, 0x0c7f, 0x037f,
2990 +       0x127f, 0x0f7f, 0x0e7f, 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e,
2991 +       0x0f7e, 0x007e, 0x027e, 0x2061, 0x0100, 0xa190, 0x253b, 0x2204,
2992 +       0x60f2, 0x2011, 0x2548, 0x6000, 0xa082, 0x0003, 0x00c8, 0x2534,
2993 +       0x2001, 0x00ff, 0x0078, 0x2535, 0x2204, 0x60ee, 0x027f, 0x007f,
2994 +       0x0f7f, 0x0c7f, 0x007c, 0x0840, 0x0840, 0x0840, 0x0580, 0x0420,
2995 +       0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
2996 +       0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0x2028, 0xa18c, 0x00ff,
2997 +       0x2130, 0xa094, 0xff00, 0x00c0, 0x2558, 0x81ff, 0x0040, 0x255c,
2998 +       0x1078, 0x5761, 0x0078, 0x2563, 0xa080, 0x29c0, 0x200c, 0xa18c,
2999 +       0xff00, 0x810f, 0xa006, 0x007c, 0xa080, 0x29c0, 0x200c, 0xa18c,
3000 +       0x00ff, 0x007c, 0x0c7e, 0x2061, 0xa600, 0x6030, 0x0040, 0x2573,
3001 +       0xc09d, 0x0078, 0x2574, 0xc09c, 0x6032, 0x0c7f, 0x007c, 0x007e,
3002 +       0x157e, 0x0f7e, 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd08c,
3003 +       0x00c0, 0x2584, 0x00f0, 0x257e, 0x0f7f, 0x157f, 0x007f, 0x007c,
3004 +       0x0c7e, 0x007e, 0x2061, 0x0100, 0x6030, 0x007e, 0x6048, 0x007e,
3005 +       0x60e4, 0x007e, 0x60e8, 0x007e, 0x6050, 0x007e, 0x60f0, 0x007e,
3006 +       0x60ec, 0x007e, 0x600c, 0x007e, 0x6004, 0x007e, 0x6028, 0x007e,
3007 +       0x60e0, 0x007e, 0x602f, 0x0100, 0x602f, 0x0000, 0x0005, 0x0005,
3008 +       0x0005, 0x0005, 0x602f, 0x0040, 0x602f, 0x0000, 0x007f, 0x60e2,
3009 +       0x007f, 0x602a, 0x007f, 0x6006, 0x007f, 0x600e, 0x007f, 0x60ee,
3010 +       0x007f, 0x60f2, 0x007f, 0x6052, 0x007f, 0x60ea, 0x007f, 0x60e6,
3011 +       0x007f, 0x604a, 0x007f, 0x6032, 0x007f, 0x0c7f, 0x007c, 0x25e7,
3012 +       0x25eb, 0x25ef, 0x25f5, 0x25fb, 0x2601, 0x2607, 0x260f, 0x2617,
3013 +       0x261d, 0x2623, 0x262b, 0x2633, 0x263b, 0x2643, 0x264d, 0x2657,
3014 +       0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657,
3015 +       0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x107e,
3016 +       0x007e, 0x0078, 0x2670, 0x107e, 0x007e, 0x0078, 0x2670, 0x107e,
3017 +       0x007e, 0x1078, 0x226c, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078,
3018 +       0x226c, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x0078,
3019 +       0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e,
3020 +       0x007e, 0x1078, 0x226c, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e,
3021 +       0x007e, 0x1078, 0x226c, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e,
3022 +       0x007e, 0x1078, 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078,
3023 +       0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078,
3024 +       0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078,
3025 +       0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x1078,
3026 +       0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x1078,
3027 +       0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078,
3028 +       0x2133, 0x1078, 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078,
3029 +       0x226c, 0x1078, 0x2133, 0x1078, 0x2178, 0x0078, 0x2670, 0x0005,
3030 +       0x0078, 0x2657, 0xb084, 0x003c, 0x8004, 0x8004, 0x0079, 0x2660,
3031 +       0x2670, 0x25ed, 0x25f1, 0x25f7, 0x25fd, 0x2603, 0x2609, 0x2611,
3032 +       0x2619, 0x261f, 0x2625, 0x262d, 0x2635, 0x263d, 0x2645, 0x264f,
3033 +       0x0008, 0x265a, 0x007f, 0x107f, 0x2091, 0x8001, 0x007c, 0x0c7e,
3034 +       0x027e, 0x047e, 0x2021, 0x0000, 0x1078, 0x4967, 0x00c0, 0x2772,
3035 +       0x70cc, 0xd09c, 0x0040, 0x268e, 0xd084, 0x00c0, 0x268e, 0xd0bc,
3036 +       0x00c0, 0x2772, 0x1078, 0x2776, 0x0078, 0x2772, 0xd0cc, 0x00c0,
3037 +       0x2772, 0xd094, 0x0040, 0x2698, 0x7097, 0xffff, 0x0078, 0x2772,
3038 +       0x2001, 0x010c, 0x203c, 0x7284, 0xd284, 0x0040, 0x2701, 0xd28c,
3039 +       0x00c0, 0x2701, 0x037e, 0x7394, 0xa38e, 0xffff, 0x0040, 0x26ab,
3040 +       0x83ff, 0x00c0, 0x26ad, 0x2019, 0x0001, 0x8314, 0xa2e0, 0xacc0,
3041 +       0x2c04, 0xa38c, 0x0001, 0x0040, 0x26ba, 0xa084, 0xff00, 0x8007,
3042 +       0x0078, 0x26bc, 0xa084, 0x00ff, 0xa70e, 0x0040, 0x26f6, 0xa08e,
3043 +       0x0000, 0x0040, 0x26f6, 0xa08e, 0x00ff, 0x00c0, 0x26d3, 0x7230,
3044 +       0xd284, 0x00c0, 0x26fc, 0x7284, 0xc28d, 0x7286, 0x7097, 0xffff,
3045 +       0x037f, 0x0078, 0x2701, 0x2009, 0x0000, 0x1078, 0x254d, 0x1078,
3046 +       0x455c, 0x00c0, 0x26f9, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
3047 +       0x00c0, 0x26f0, 0x7030, 0xd08c, 0x0040, 0x26ea, 0x6000, 0xd0bc,
3048 +       0x0040, 0x26f0, 0x1078, 0x278c, 0x0040, 0x26f9, 0x0078, 0x26f6,
3049 +       0x1078, 0x28c4, 0x1078, 0x27b9, 0x0040, 0x26f9, 0x8318, 0x0078,
3050 +       0x26ad, 0x7396, 0x0078, 0x26fe, 0x7097, 0xffff, 0x037f, 0x0078,
3051 +       0x2772, 0xa780, 0x29c0, 0x203c, 0xa7bc, 0xff00, 0x873f, 0x2041,
3052 +       0x007e, 0x7094, 0xa096, 0xffff, 0x00c0, 0x2713, 0x2009, 0x0000,
3053 +       0x28a8, 0x0078, 0x271f, 0xa812, 0x0048, 0x271b, 0x2008, 0xa802,
3054 +       0x20a8, 0x0078, 0x271f, 0x7097, 0xffff, 0x0078, 0x2772, 0x2700,
3055 +       0x157e, 0x017e, 0xa106, 0x0040, 0x2766, 0xc484, 0x1078, 0x45c4,
3056 +       0x0040, 0x2730, 0x1078, 0x455c, 0x00c0, 0x276f, 0x0078, 0x2731,
3057 +       0xc485, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2740,
3058 +       0x7030, 0xd08c, 0x0040, 0x275e, 0x6000, 0xd0bc, 0x00c0, 0x275e,
3059 +       0x7284, 0xd28c, 0x0040, 0x2756, 0x6004, 0xa084, 0x00ff, 0xa082,
3060 +       0x0006, 0x0048, 0x2766, 0xd484, 0x00c0, 0x2752, 0x1078, 0x457f,
3061 +       0x0078, 0x2754, 0x1078, 0x298e, 0x0078, 0x2766, 0x1078, 0x28c4,
3062 +       0x1078, 0x27b9, 0x0040, 0x276f, 0x0078, 0x2766, 0x1078, 0x2959,
3063 +       0x0040, 0x2766, 0x1078, 0x278c, 0x0040, 0x276f, 0x017f, 0x8108,
3064 +       0x157f, 0x00f0, 0x271f, 0x7097, 0xffff, 0x0078, 0x2772, 0x017f,
3065 +       0x157f, 0x7196, 0x047f, 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x017e,
3066 +       0x7097, 0x0001, 0x2009, 0x007e, 0x1078, 0x455c, 0x00c0, 0x2789,
3067 +       0x1078, 0x28c4, 0x1078, 0x27b9, 0x0040, 0x2789, 0x70cc, 0xc0bd,
3068 +       0x70ce, 0x017f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e,
3069 +       0x2c68, 0x2001, 0xa657, 0x2004, 0xa084, 0x00ff, 0x6842, 0x1078,
3070 +       0x76c7, 0x0040, 0x27b4, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001,
3071 +       0x0000, 0x1078, 0x44ee, 0x2001, 0x0000, 0x1078, 0x4502, 0x127e,
3072 +       0x2091, 0x8000, 0x7090, 0x8000, 0x7092, 0x127f, 0x2009, 0x0004,
3073 +       0x1078, 0x775c, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f,
3074 +       0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x2001, 0xa657,
3075 +       0x2004, 0xa084, 0x00ff, 0x6842, 0x1078, 0x9187, 0x0040, 0x27f2,
3076 +       0x2d00, 0x601a, 0x6800, 0xc0c4, 0x6802, 0x68a0, 0xa086, 0x007e,
3077 +       0x0040, 0x27db, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
3078 +       0x27db, 0x1078, 0x2880, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078,
3079 +       0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x127e, 0x2091, 0x8000,
3080 +       0x7090, 0x8000, 0x7092, 0x127f, 0x2009, 0x0002, 0x1078, 0x775c,
3081 +       0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0c7e,
3082 +       0x027e, 0x2009, 0x0080, 0x1078, 0x455c, 0x00c0, 0x2805, 0x1078,
3083 +       0x2808, 0x0040, 0x2805, 0x70d3, 0xffff, 0x027f, 0x0c7f, 0x007c,
3084 +       0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x76c7, 0x0040,
3085 +       0x282a, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078,
3086 +       0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x127e, 0x2091, 0x8000,
3087 +       0x70d4, 0x8000, 0x70d6, 0x127f, 0x2009, 0x0002, 0x1078, 0x775c,
3088 +       0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0c7e,
3089 +       0x0d7e, 0x127e, 0x2091, 0x8000, 0x2009, 0x007f, 0x1078, 0x455c,
3090 +       0x00c0, 0x284b, 0x2c68, 0x1078, 0x76c7, 0x0040, 0x284b, 0x2d00,
3091 +       0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x2009, 0x0022, 0x1078,
3092 +       0x775c, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x0c7f, 0x007c, 0x0e7e,
3093 +       0x0c7e, 0x067e, 0x037e, 0x027e, 0x1078, 0x5f0e, 0x1078, 0x5eae,
3094 +       0x1078, 0x8068, 0x2130, 0x81ff, 0x0040, 0x2864, 0x20a9, 0x007e,
3095 +       0x2009, 0x0000, 0x0078, 0x2868, 0x20a9, 0x007f, 0x2009, 0x0000,
3096 +       0x017e, 0x1078, 0x45c4, 0x00c0, 0x2871, 0x1078, 0x47e9, 0x1078,
3097 +       0x42f8, 0x017f, 0x8108, 0x00f0, 0x2868, 0x86ff, 0x00c0, 0x287a,
3098 +       0x1078, 0x119b, 0x027f, 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c,
3099 +       0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0,
3100 +       0x027e, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000,
3101 +       0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f, 0x017f, 0x2e60,
3102 +       0x1078, 0x47e9, 0x6210, 0x6314, 0x1078, 0x42f8, 0x6212, 0x6316,
3103 +       0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x007e,
3104 +       0x6018, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x00c0, 0x28ba, 0x2071,
3105 +       0xa600, 0x7090, 0xa005, 0x0040, 0x28b7, 0x8001, 0x7092, 0x007f,
3106 +       0x0e7f, 0x007c, 0x2071, 0xa600, 0x70d4, 0xa005, 0x0040, 0x28b7,
3107 +       0x8001, 0x70d6, 0x0078, 0x28b7, 0x6000, 0xc08c, 0x6002, 0x007c,
3108 +       0x0f7e, 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x157e, 0x2178,
3109 +       0x81ff, 0x00c0, 0x28d7, 0x20a9, 0x0001, 0x0078, 0x28f2, 0x2001,
3110 +       0xa653, 0x2004, 0xd0c4, 0x0040, 0x28ee, 0xd0a4, 0x0040, 0x28ee,
3111 +       0x047e, 0x6018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427,
3112 +       0xa006, 0x2009, 0x002d, 0x1078, 0xa21d, 0x047f, 0x20a9, 0x00ff,
3113 +       0x2011, 0x0000, 0x027e, 0xa28e, 0x007e, 0x0040, 0x2936, 0xa28e,
3114 +       0x007f, 0x0040, 0x2936, 0xa28e, 0x0080, 0x0040, 0x2936, 0xa288,
3115 +       0xa735, 0x210c, 0x81ff, 0x0040, 0x2936, 0x8fff, 0x1040, 0x2942,
3116 +       0x0c7e, 0x2160, 0x2001, 0x0001, 0x1078, 0x4972, 0x0c7f, 0x2019,
3117 +       0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a,
3118 +       0x0c7e, 0x027e, 0x2160, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006,
3119 +       0x00c0, 0x2926, 0x6007, 0x0404, 0x0078, 0x292b, 0x2001, 0x0004,
3120 +       0x8007, 0xa215, 0x6206, 0x027f, 0x0c7f, 0x017e, 0x2c08, 0x1078,
3121 +       0x9f8b, 0x017f, 0x077f, 0x2160, 0x1078, 0x47e9, 0x027f, 0x8210,
3122 +       0x00f0, 0x28f2, 0x157f, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f,
3123 +       0x0f7f, 0x007c, 0x047e, 0x027e, 0x017e, 0x2001, 0xa653, 0x2004,
3124 +       0xd0c4, 0x0040, 0x2955, 0xd0a4, 0x0040, 0x2955, 0xa006, 0x2220,
3125 +       0x8427, 0x2009, 0x0029, 0x1078, 0xa21d, 0x017f, 0x027f, 0x047f,
3126 +       0x007c, 0x017e, 0x027e, 0x037e, 0x0c7e, 0x7284, 0x82ff, 0x0040,
3127 +       0x2987, 0xa290, 0xa653, 0x2214, 0xd2ac, 0x00c0, 0x2987, 0x2100,
3128 +       0x1078, 0x2564, 0x81ff, 0x0040, 0x2989, 0x2019, 0x0001, 0x8314,
3129 +       0xa2e0, 0xacc0, 0x2c04, 0xd384, 0x0040, 0x297b, 0xa084, 0xff00,
3130 +       0x8007, 0x0078, 0x297d, 0xa084, 0x00ff, 0xa116, 0x0040, 0x2989,
3131 +       0xa096, 0x00ff, 0x0040, 0x2987, 0x8318, 0x0078, 0x296f, 0xa085,
3132 +       0x0001, 0x0c7f, 0x037f, 0x027f, 0x017f, 0x007c, 0x017e, 0x0c7e,
3133 +       0x127e, 0x2091, 0x8000, 0x017e, 0x027e, 0x037e, 0x2110, 0x027e,
3134 +       0x2019, 0x0029, 0x1078, 0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f,
3135 +       0x027f, 0x017f, 0xa180, 0xa735, 0x2004, 0xa065, 0x0040, 0x29b7,
3136 +       0x017e, 0x0c7e, 0x1078, 0x9187, 0x017f, 0x1040, 0x1332, 0x611a,
3137 +       0x1078, 0x2880, 0x1078, 0x772d, 0x017f, 0x1078, 0x457f, 0x127f,
3138 +       0x0c7f, 0x017f, 0x007c, 0x2001, 0xa633, 0x2004, 0xd0cc, 0x007c,
3139 +       0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da,
3140 +       0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce,
3141 +       0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5,
3142 +       0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3,
3143 +       0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9,
3144 +       0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b,
3145 +       0x8098, 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081,
3146 +       0x8080, 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073,
3147 +       0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69,
3148 +       0x8067, 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056,
3149 +       0x8055, 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c,
3150 +       0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c,
3151 +       0x803a, 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831,
3152 +       0x802e, 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026,
3153 +       0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017,
3154 +       0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000,
3155 +       0x3800, 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000,
3156 +       0x3400, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300,
3157 +       0x3200, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100,
3158 +       0x3000, 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00,
3159 +       0x8000, 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800,
3160 +       0x8000, 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000,
3161 +       0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000,
3162 +       0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000,
3163 +       0x8000, 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500,
3164 +       0x8000, 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000,
3165 +       0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000,
3166 +       0x8000, 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000,
3167 +       0x0500, 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000,
3168 +       0x0100, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000,
3169 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
3170 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
3171 +       0x2071, 0xa682, 0x7003, 0x0002, 0xa006, 0x7012, 0x7016, 0x703a,
3172 +       0x703e, 0x7033, 0xa692, 0x7037, 0xa692, 0x7007, 0x0001, 0x2061,
3173 +       0xa6d2, 0x6003, 0x0002, 0x007c, 0x0090, 0x2ae7, 0x0068, 0x2ae7,
3174 +       0x2071, 0xa682, 0x2b78, 0x7818, 0xd084, 0x00c0, 0x2ae7, 0x2a60,
3175 +       0x7820, 0xa08e, 0x0069, 0x00c0, 0x2bd7, 0x0079, 0x2b6b, 0x007c,
3176 +       0x2071, 0xa682, 0x7004, 0x0079, 0x2aed, 0x2af1, 0x2af2, 0x2afc,
3177 +       0x2b0e, 0x007c, 0x0090, 0x2afb, 0x0068, 0x2afb, 0x2b78, 0x7818,
3178 +       0xd084, 0x0040, 0x2b1a, 0x007c, 0x2b78, 0x2061, 0xa6d2, 0x6008,
3179 +       0xa08e, 0x0100, 0x0040, 0x2b09, 0xa086, 0x0200, 0x0040, 0x2bcf,
3180 +       0x007c, 0x7014, 0x2068, 0x2a60, 0x7018, 0x007a, 0x7010, 0x2068,
3181 +       0x6834, 0xa086, 0x0103, 0x0040, 0x2b16, 0x007c, 0x2a60, 0x2b78,
3182 +       0x7018, 0x007a, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x00c8, 0x2b23,
3183 +       0x61bc, 0x0079, 0x2b2b, 0x2100, 0xa08a, 0x003f, 0x00c8, 0x2bcb,
3184 +       0x61bc, 0x0079, 0x2b6b, 0x2bad, 0x2bdf, 0x2be7, 0x2beb, 0x2bf3,
3185 +       0x2bf9, 0x2bfd, 0x2c09, 0x2c0d, 0x2c17, 0x2c1b, 0x2bcb, 0x2bcb,
3186 +       0x2bcb, 0x2c1f, 0x2bcb, 0x2c2f, 0x2c46, 0x2c5d, 0x2cdd, 0x2ce2,
3187 +       0x2d0f, 0x2d69, 0x2d7a, 0x2d98, 0x2dd9, 0x2de3, 0x2df0, 0x2e03,
3188 +       0x2e22, 0x2e2b, 0x2e68, 0x2e6e, 0x2bcb, 0x2e8a, 0x2bcb, 0x2bcb,
3189 +       0x2bcb, 0x2bcb, 0x2bcb, 0x2e91, 0x2e9b, 0x2bcb, 0x2bcb, 0x2bcb,
3190 +       0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2ea3, 0x2bcb, 0x2bcb,
3191 +       0x2bcb, 0x2bcb, 0x2bcb, 0x2eb5, 0x2ece, 0x2bcb, 0x2bcb, 0x2bcb,
3192 +       0x2bcb, 0x2bcb, 0x2bcb, 0x2ee0, 0x2f37, 0x2f95, 0x2fa9, 0x2bcb,
3193 +       0x2bcb, 0x2bcb, 0x398e, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb,
3194 +       0x2bcb, 0x2bcb, 0x2bcb, 0x2c17, 0x2c1b, 0x2fc0, 0x2bcb, 0x2fcd,
3195 +       0x3a26, 0x3a83, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb,
3196 +       0x2bcb, 0x2bcb, 0x2bcb, 0x301a, 0x314f, 0x316b, 0x3177, 0x31da,
3197 +       0x3233, 0x323e, 0x327d, 0x328c, 0x329b, 0x329e, 0x2fd1, 0x32c2,
3198 +       0x331e, 0x332b, 0x343c, 0x356f, 0x3599, 0x36a6, 0x2bcb, 0x36b6,
3199 +       0x36f0, 0x37bf, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x3827, 0x3843,
3200 +       0x38bd, 0x3977, 0x713c, 0x0078, 0x2bad, 0x2021, 0x4000, 0x1078,
3201 +       0x35f5, 0x127e, 0x2091, 0x8000, 0x0068, 0x2bba, 0x7818, 0xd084,
3202 +       0x0040, 0x2bbd, 0x127f, 0x0078, 0x2bb1, 0x7c22, 0x7926, 0x7a2a,
3203 +       0x7b2e, 0x781b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001, 0x2091,
3204 +       0x5000, 0x127f, 0x007c, 0x2021, 0x4001, 0x0078, 0x2baf, 0x2021,
3205 +       0x4002, 0x0078, 0x2baf, 0x2021, 0x4003, 0x0078, 0x2baf, 0x2021,
3206 +       0x4005, 0x0078, 0x2baf, 0x2021, 0x4006, 0x0078, 0x2baf, 0xa02e,
3207 +       0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078, 0x3604, 0x7823,
3208 +       0x0004, 0x7824, 0x007a, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824,
3209 +       0x7930, 0x0078, 0x3608, 0x7924, 0x7828, 0x2114, 0x200a, 0x0078,
3210 +       0x2bad, 0x7924, 0x2114, 0x0078, 0x2bad, 0x2099, 0x0009, 0x20a1,
3211 +       0x0009, 0x20a9, 0x0007, 0x53a3, 0x7924, 0x7a28, 0x7b2c, 0x0078,
3212 +       0x2bad, 0x7824, 0x2060, 0x0078, 0x2c21, 0x2009, 0x0001, 0x2011,
3213 +       0x0013, 0x2019, 0x0018, 0x783b, 0x0017, 0x0078, 0x2bad, 0x7d38,
3214 +       0x7c3c, 0x0078, 0x2be1, 0x7d38, 0x7c3c, 0x0078, 0x2bed, 0x2061,
3215 +       0x1000, 0x610c, 0xa006, 0x2c14, 0xa200, 0x8c60, 0x8109, 0x00c0,
3216 +       0x2c23, 0x2010, 0xa005, 0x0040, 0x2bad, 0x0078, 0x2bd3, 0x2069,
3217 +       0xa652, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x2bdb, 0x8019, 0x0040,
3218 +       0x2bdb, 0x684a, 0x6942, 0x782c, 0x6852, 0x7828, 0x6856, 0xa006,
3219 +       0x685a, 0x685e, 0x1078, 0x4eae, 0x0078, 0x2bad, 0x2069, 0xa652,
3220 +       0x7824, 0x7934, 0xa11a, 0x00c8, 0x2bdb, 0x8019, 0x0040, 0x2bdb,
3221 +       0x684e, 0x6946, 0x782c, 0x6862, 0x7828, 0x6866, 0xa006, 0x686a,
3222 +       0x686e, 0x1078, 0x4a3e, 0x0078, 0x2bad, 0xa02e, 0x2520, 0x81ff,
3223 +       0x00c0, 0x2bd7, 0x7924, 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1,
3224 +       0xa689, 0x41a1, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x2009, 0x0020,
3225 +       0x1078, 0x3604, 0x701b, 0x2c75, 0x007c, 0x6834, 0x2008, 0xa084,
3226 +       0x00ff, 0xa096, 0x0011, 0x0040, 0x2c85, 0xa096, 0x0019, 0x0040,
3227 +       0x2c85, 0xa096, 0x0015, 0x00c0, 0x2bd7, 0x810f, 0xa18c, 0x00ff,
3228 +       0x0040, 0x2bd7, 0x710e, 0x700c, 0x8001, 0x0040, 0x2cb6, 0x700e,
3229 +       0x1078, 0x35ba, 0x0040, 0x2bd7, 0x2009, 0x0020, 0x2061, 0xa6d2,
3230 +       0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399, 0x0000,
3231 +       0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x1078, 0x3604, 0x701b, 0x2ca9,
3232 +       0x007c, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0040, 0x2cb4,
3233 +       0xa096, 0x000a, 0x00c0, 0x2bd7, 0x0078, 0x2c8b, 0x7010, 0x2068,
3234 +       0x6838, 0xc0fd, 0x683a, 0x1078, 0x4431, 0x00c0, 0x2cc4, 0x7007,
3235 +       0x0003, 0x701b, 0x2cc6, 0x007c, 0x1078, 0x4b51, 0x127e, 0x2091,
3236 +       0x8000, 0x20a9, 0x0005, 0x2099, 0xa689, 0x530a, 0x2100, 0xa210,
3237 +       0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d,
3238 +       0x2009, 0x0020, 0x127f, 0x0078, 0x3608, 0x61a4, 0x7824, 0x60a6,
3239 +       0x0078, 0x2bad, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827, 0x4953,
3240 +       0x782b, 0x5020, 0x782f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7832,
3241 +       0x3f00, 0x7836, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c,
3242 +       0x8007, 0xa205, 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b,
3243 +       0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1,
3244 +       0x00f0, 0xa08a, 0x0003, 0x00c8, 0x0427, 0x0078, 0x0423, 0x81ff,
3245 +       0x00c0, 0x2bd7, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x45c4,
3246 +       0x00c0, 0x2bdb, 0x7e38, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048,
3247 +       0x2d23, 0x0078, 0x2bdb, 0x7c28, 0x7d2c, 0x1078, 0x47a4, 0xd28c,
3248 +       0x00c0, 0x2d2e, 0x1078, 0x4736, 0x0078, 0x2d30, 0x1078, 0x4772,
3249 +       0x00c0, 0x2d5a, 0x2061, 0xad00, 0x127e, 0x2091, 0x8000, 0x6000,
3250 +       0xa086, 0x0000, 0x0040, 0x2d48, 0x6010, 0xa06d, 0x0040, 0x2d48,
3251 +       0x683c, 0xa406, 0x00c0, 0x2d48, 0x6840, 0xa506, 0x0040, 0x2d53,
3252 +       0x127f, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02, 0x00c8,
3253 +       0x2bd7, 0x0078, 0x2d34, 0x1078, 0x8a01, 0x127f, 0x0040, 0x2bd7,
3254 +       0x0078, 0x2bad, 0xa00e, 0x2001, 0x0005, 0x1078, 0x4b51, 0x127e,
3255 +       0x2091, 0x8000, 0x1078, 0x8f85, 0x1078, 0x4a73, 0x127f, 0x0078,
3256 +       0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2, 0x0040, 0x2bdb,
3257 +       0x1078, 0x4673, 0x0040, 0x2bd7, 0x1078, 0x47b2, 0x0040, 0x2bd7,
3258 +       0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040,
3259 +       0x2bdb, 0x1078, 0x482f, 0x0040, 0x2bd7, 0x2019, 0x0005, 0x1078,
3260 +       0x47d3, 0x0040, 0x2bd7, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb,
3261 +       0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x5a52, 0x0078, 0x2bad,
3262 +       0x127e, 0x2091, 0x8000, 0x81ff, 0x0040, 0x2da2, 0x2009, 0x0001,
3263 +       0x0078, 0x2dd3, 0x2029, 0x00ff, 0x6450, 0x2400, 0xa506, 0x0040,
3264 +       0x2dcd, 0x2508, 0x1078, 0x45c4, 0x00c0, 0x2dcd, 0x1078, 0x482f,
3265 +       0x00c0, 0x2db8, 0x2009, 0x0002, 0x62ac, 0x2518, 0x0078, 0x2dd3,
3266 +       0x2019, 0x0004, 0x1078, 0x47d3, 0x00c0, 0x2dc2, 0x2009, 0x0006,
3267 +       0x0078, 0x2dd3, 0x7824, 0xa08a, 0x1000, 0x00c8, 0x2dd6, 0x8003,
3268 +       0x800b, 0x810b, 0xa108, 0x1078, 0x5a52, 0x8529, 0x00c8, 0x2da5,
3269 +       0x127f, 0x0078, 0x2bad, 0x127f, 0x0078, 0x2bd7, 0x127f, 0x0078,
3270 +       0x2bdb, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x46e7, 0x1078,
3271 +       0x47a4, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2,
3272 +       0x0040, 0x2bdb, 0x1078, 0x46d6, 0x1078, 0x47a4, 0x0078, 0x2bad,
3273 +       0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078,
3274 +       0x4775, 0x0040, 0x2bd7, 0x1078, 0x4484, 0x1078, 0x472f, 0x1078,
3275 +       0x47a4, 0x0078, 0x2bad, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078,
3276 +       0x4673, 0x0040, 0x2bd7, 0x62a0, 0x2019, 0x0005, 0x0c7e, 0x1078,
3277 +       0x47e9, 0x0c7f, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078,
3278 +       0x5e0a, 0x2009, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x1078, 0x47a4,
3279 +       0x0078, 0x2bad, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x47a4,
3280 +       0x2208, 0x0078, 0x2bad, 0x157e, 0x0d7e, 0x0e7e, 0x2069, 0xa714,
3281 +       0x6810, 0x6914, 0xa10a, 0x00c8, 0x2e37, 0x2009, 0x0000, 0x6816,
3282 +       0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x00ff, 0x2069, 0xa735,
3283 +       0x2d04, 0xa075, 0x0040, 0x2e4c, 0x704c, 0x1078, 0x2e56, 0xa210,
3284 +       0x7080, 0x1078, 0x2e56, 0xa318, 0x8d68, 0x00f0, 0x2e40, 0x2300,
3285 +       0xa218, 0x0e7f, 0x0d7f, 0x157f, 0x0078, 0x2bad, 0x0f7e, 0x017e,
3286 +       0xa07d, 0x0040, 0x2e65, 0x2001, 0x0000, 0x8000, 0x2f0c, 0x81ff,
3287 +       0x0040, 0x2e65, 0x2178, 0x0078, 0x2e5d, 0x017f, 0x0f7f, 0x007c,
3288 +       0x2069, 0xa714, 0x6910, 0x62a8, 0x0078, 0x2bad, 0x81ff, 0x00c0,
3289 +       0x2bd7, 0x6150, 0xa190, 0x29c0, 0x2214, 0xa294, 0x00ff, 0x6070,
3290 +       0xa084, 0xff00, 0xa215, 0x636c, 0x67cc, 0xd79c, 0x0040, 0x2e84,
3291 +       0x2031, 0x0001, 0x0078, 0x2e86, 0x2031, 0x0000, 0x7e3a, 0x7f3e,
3292 +       0x0078, 0x2bad, 0x6140, 0x6244, 0x2019, 0xa8a2, 0x231c, 0x0078,
3293 +       0x2bad, 0x127e, 0x2091, 0x8000, 0x6134, 0x6338, 0xa006, 0x2010,
3294 +       0x127f, 0x0078, 0x2bad, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x6244,
3295 +       0x6338, 0x0078, 0x2bad, 0x6140, 0x6244, 0x7824, 0x6042, 0x7b28,
3296 +       0x6346, 0x2069, 0xa652, 0x831f, 0xa305, 0x6816, 0x782c, 0x2069,
3297 +       0xa8a2, 0x2d1c, 0x206a, 0x0078, 0x2bad, 0x017e, 0x127e, 0x2091,
3298 +       0x8000, 0x7824, 0x6036, 0xd094, 0x0040, 0x2ec8, 0x7828, 0xa085,
3299 +       0x0001, 0x2009, 0xa8ab, 0x200a, 0x2001, 0xffff, 0x1078, 0x5ae6,
3300 +       0x782c, 0x603a, 0x127f, 0x017f, 0x0078, 0x2bad, 0x1078, 0x35e4,
3301 +       0x0040, 0x2bdb, 0x7828, 0xa00d, 0x0040, 0x2bdb, 0x782c, 0xa005,
3302 +       0x0040, 0x2bdb, 0x6244, 0x6146, 0x6338, 0x603a, 0x0078, 0x2bad,
3303 +       0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x0c7e,
3304 +       0x2061, 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff,
3305 +       0x00c0, 0x2ef7, 0x6030, 0xa085, 0xff00, 0x0078, 0x2f06, 0xa182,
3306 +       0x007f, 0x00c8, 0x2f30, 0xa188, 0x29c0, 0x210c, 0xa18c, 0x00ff,
3307 +       0x6030, 0xa116, 0x0040, 0x2f30, 0x810f, 0xa105, 0x127e, 0x2091,
3308 +       0x8000, 0x007e, 0x1078, 0x76c7, 0x007f, 0x0040, 0x2f2c, 0x601a,
3309 +       0x600b, 0xbc09, 0x601f, 0x0001, 0x1078, 0x35ba, 0x0040, 0x2f33,
3310 +       0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd,
3311 +       0x683a, 0x701b, 0x2f8e, 0x2d00, 0x6012, 0x2009, 0x0032, 0x1078,
3312 +       0x775c, 0x127f, 0x0c7f, 0x007c, 0x127f, 0x0c7f, 0x0078, 0x2bd7,
3313 +       0x0c7f, 0x0078, 0x2bdb, 0x1078, 0x772d, 0x0078, 0x2f2c, 0x2001,
3314 +       0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x0c7e, 0x2061,
3315 +       0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff, 0x00c0,
3316 +       0x2f4e, 0x6030, 0xa085, 0xff00, 0x0078, 0x2f5d, 0xa182, 0x007f,
3317 +       0x00c8, 0x2f87, 0xa188, 0x29c0, 0x210c, 0xa18c, 0x00ff, 0x6030,
3318 +       0xa116, 0x0040, 0x2f87, 0x810f, 0xa105, 0x127e, 0x2091, 0x8000,
3319 +       0x007e, 0x1078, 0x76c7, 0x007f, 0x0040, 0x2f83, 0x601a, 0x600b,
3320 +       0xbc05, 0x601f, 0x0001, 0x1078, 0x35ba, 0x0040, 0x2f8a, 0x6837,
3321 +       0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a,
3322 +       0x701b, 0x2f8e, 0x2d00, 0x6012, 0x2009, 0x0032, 0x1078, 0x775c,
3323 +       0x127f, 0x0c7f, 0x007c, 0x127f, 0x0c7f, 0x0078, 0x2bd7, 0x0c7f,
3324 +       0x0078, 0x2bdb, 0x1078, 0x772d, 0x0078, 0x2f83, 0x6830, 0xa086,
3325 +       0x0100, 0x0040, 0x2bd7, 0x0078, 0x2bad, 0x2061, 0xa933, 0x127e,
3326 +       0x2091, 0x8000, 0x6000, 0xd084, 0x0040, 0x2fa6, 0x6104, 0x6208,
3327 +       0x2019, 0xa612, 0x231c, 0x127f, 0x0078, 0x2bad, 0x127f, 0x0078,
3328 +       0x2bdb, 0x81ff, 0x00c0, 0x2bd7, 0x127e, 0x2091, 0x8000, 0x6248,
3329 +       0x6064, 0xa202, 0x0048, 0x2fbd, 0xa085, 0x0001, 0x1078, 0x256a,
3330 +       0x1078, 0x3c9e, 0x127f, 0x0078, 0x2bad, 0x127f, 0x0078, 0x2bdb,
3331 +       0x127e, 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0xa640, 0x20a0,
3332 +       0xa006, 0x40a4, 0x127f, 0x0078, 0x2bad, 0x7d38, 0x7c3c, 0x0078,
3333 +       0x2c5f, 0x7824, 0xa09c, 0x00ff, 0xa39a, 0x0003, 0x00c8, 0x2bd7,
3334 +       0x6250, 0xa084, 0xff00, 0x8007, 0xa206, 0x00c0, 0x2fe9, 0x2001,
3335 +       0xa640, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078,
3336 +       0x3608, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb,
3337 +       0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2bd7, 0x0c7e,
3338 +       0x1078, 0x35ba, 0x0c7f, 0x0040, 0x2bd7, 0x6837, 0x0000, 0x6838,
3339 +       0xc0fd, 0x683a, 0x1078, 0x8e4a, 0x0040, 0x2bd7, 0x7007, 0x0003,
3340 +       0x701b, 0x300b, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7,
3341 +       0xad80, 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
3342 +       0x0078, 0x3608, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x1078, 0x42dd,
3343 +       0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604,
3344 +       0x701b, 0x302b, 0x007c, 0xade8, 0x000d, 0x6800, 0xa005, 0x0040,
3345 +       0x2bdb, 0x6804, 0xd0ac, 0x0040, 0x3038, 0xd0a4, 0x0040, 0x2bdb,
3346 +       0xd094, 0x0040, 0x3043, 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18c,
3347 +       0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040, 0x304e, 0x0c7e, 0x2061,
3348 +       0x0100, 0x6104, 0xa18d, 0x0010, 0x6106, 0x0c7f, 0x2009, 0x0100,
3349 +       0x210c, 0xa18a, 0x0002, 0x0048, 0x3063, 0xd084, 0x0040, 0x3063,
3350 +       0x6a28, 0xa28a, 0x007f, 0x00c8, 0x2bdb, 0xa288, 0x29c0, 0x210c,
3351 +       0xa18c, 0x00ff, 0x6156, 0xd0dc, 0x0040, 0x306c, 0x6828, 0xa08a,
3352 +       0x007f, 0x00c8, 0x2bdb, 0x6052, 0x6808, 0xa08a, 0x0100, 0x0048,
3353 +       0x2bdb, 0xa08a, 0x0841, 0x00c8, 0x2bdb, 0xa084, 0x0007, 0x00c0,
3354 +       0x2bdb, 0x680c, 0xa005, 0x0040, 0x2bdb, 0x6810, 0xa005, 0x0040,
3355 +       0x2bdb, 0x6848, 0x6940, 0xa10a, 0x00c8, 0x2bdb, 0x8001, 0x0040,
3356 +       0x2bdb, 0x684c, 0x6944, 0xa10a, 0x00c8, 0x2bdb, 0x8001, 0x0040,
3357 +       0x2bdb, 0x6804, 0xd0fc, 0x0040, 0x30c2, 0x1078, 0x35ba, 0x0040,
3358 +       0x2bd7, 0x2009, 0x0014, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0xa290,
3359 +       0x0038, 0xa399, 0x0000, 0x1078, 0x3604, 0x701b, 0x30a8, 0x007c,
3360 +       0xade8, 0x000d, 0x20a9, 0x0014, 0x2d98, 0x2069, 0xa66e, 0x2da0,
3361 +       0x53a3, 0x7010, 0xa0e8, 0x000d, 0x2001, 0xa672, 0x200c, 0xd1e4,
3362 +       0x0040, 0x30c2, 0x0c7e, 0x2061, 0x0100, 0x6004, 0xa085, 0x0b00,
3363 +       0x6006, 0x0c7f, 0x20a9, 0x001c, 0x2d98, 0x2069, 0xa652, 0x2da0,
3364 +       0x53a3, 0x6814, 0xa08c, 0x00ff, 0x6142, 0x8007, 0xa084, 0x00ff,
3365 +       0x6046, 0x1078, 0x4eae, 0x1078, 0x49ce, 0x1078, 0x4a3e, 0x6000,
3366 +       0xa086, 0x0000, 0x00c0, 0x314d, 0x6808, 0x602a, 0x1078, 0x21f7,
3367 +       0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f,
3368 +       0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040, 0x30fa,
3369 +       0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f,
3370 +       0x0078, 0x30fc, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312,
3371 +       0x1078, 0x5b19, 0x6904, 0xd1fc, 0x0040, 0x312f, 0x0c7e, 0x2009,
3372 +       0x0000, 0x20a9, 0x0001, 0x6b70, 0xd384, 0x0040, 0x312c, 0x0078,
3373 +       0x3116, 0x839d, 0x00c8, 0x312c, 0x3508, 0x8109, 0x1078, 0x5480,
3374 +       0x6878, 0x6016, 0x6874, 0x2008, 0xa084, 0xff00, 0x8007, 0x600a,
3375 +       0xa184, 0x00ff, 0x6006, 0x8108, 0x00c0, 0x312a, 0x6003, 0x0003,
3376 +       0x0078, 0x312c, 0x6003, 0x0001, 0x00f0, 0x3111, 0x0c7f, 0x0c7e,
3377 +       0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x0c7f, 0x1078,
3378 +       0x3819, 0x0040, 0x313d, 0x1078, 0x256a, 0x60c0, 0xa005, 0x0040,
3379 +       0x3149, 0x6003, 0x0001, 0x2091, 0x301d, 0x1078, 0x4224, 0x0078,
3380 +       0x314d, 0x6003, 0x0004, 0x2091, 0x301d, 0x0078, 0x2bad, 0x6000,
3381 +       0xa086, 0x0000, 0x0040, 0x2bd7, 0x2069, 0xa652, 0x7830, 0x6842,
3382 +       0x7834, 0x6846, 0x6804, 0xd0fc, 0x0040, 0x3162, 0x2009, 0x0030,
3383 +       0x0078, 0x3164, 0x2009, 0x001c, 0x2d00, 0x7a2c, 0x7b28, 0x7c3c,
3384 +       0x7d38, 0x0078, 0x3608, 0xa006, 0x1078, 0x256a, 0x81ff, 0x00c0,
3385 +       0x2bd7, 0x1078, 0x42dd, 0x1078, 0x4224, 0x0078, 0x2bad, 0x81ff,
3386 +       0x00c0, 0x2bd7, 0x6184, 0x81ff, 0x0040, 0x3191, 0x703f, 0x0000,
3387 +       0x2001, 0xacc0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
3388 +       0x127e, 0x2091, 0x8000, 0x1078, 0x3608, 0x701b, 0x2baa, 0x127f,
3389 +       0x007c, 0x703f, 0x0001, 0x0d7e, 0x2069, 0xacc0, 0x20a9, 0x0040,
3390 +       0x20a1, 0xacc0, 0x2019, 0xffff, 0x43a4, 0x6550, 0xa588, 0x29c0,
3391 +       0x210c, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002, 0x2100,
3392 +       0xa506, 0x0040, 0x31c3, 0x1078, 0x45c4, 0x00c0, 0x31c3, 0x6014,
3393 +       0x821c, 0x0048, 0x31bb, 0xa398, 0xacc0, 0xa085, 0xff00, 0x8007,
3394 +       0x201a, 0x0078, 0x31c2, 0xa398, 0xacc0, 0x2324, 0xa4a4, 0xff00,
3395 +       0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x00c8, 0x31ca,
3396 +       0x0078, 0x31a7, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x0d7f,
3397 +       0x20a9, 0x0040, 0x20a1, 0xacc0, 0x2099, 0xacc0, 0x1078, 0x4281,
3398 +       0x0078, 0x3180, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x0c7e, 0x1078,
3399 +       0x35ba, 0x0c7f, 0x00c0, 0x31e8, 0x2009, 0x0002, 0x0078, 0x2bd7,
3400 +       0x2001, 0xa653, 0x2004, 0xd0b4, 0x0040, 0x320f, 0x6000, 0xd08c,
3401 +       0x00c0, 0x320f, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
3402 +       0x320f, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x8e9e,
3403 +       0x00c0, 0x3206, 0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003,
3404 +       0x701b, 0x320b, 0x007c, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x20a9,
3405 +       0x002b, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004,
3406 +       0xac80, 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x1078, 0x4281,
3407 +       0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0,
3408 +       0x1078, 0x4281, 0x2d00, 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c,
3409 +       0x7d38, 0x0078, 0x3608, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2,
3410 +       0x0040, 0x2bdb, 0x1078, 0x47bd, 0x0078, 0x2bad, 0x81ff, 0x00c0,
3411 +       0x2bd7, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb, 0x1078, 0x35e4,
3412 +       0x0040, 0x2bdb, 0x1078, 0x482f, 0x0040, 0x2bd7, 0x2019, 0x0004,
3413 +       0x1078, 0x47d3, 0x7924, 0x810f, 0x7a28, 0x1078, 0x3259, 0x0078,
3414 +       0x2bad, 0xa186, 0x00ff, 0x0040, 0x3261, 0x1078, 0x3271, 0x0078,
3415 +       0x3270, 0x2029, 0x007e, 0x2061, 0xa600, 0x6450, 0x2400, 0xa506,
3416 +       0x0040, 0x326d, 0x2508, 0x1078, 0x3271, 0x8529, 0x00c8, 0x3266,
3417 +       0x007c, 0x1078, 0x45c4, 0x00c0, 0x327c, 0x2200, 0x8003, 0x800b,
3418 +       0x810b, 0xa108, 0x1078, 0x5a52, 0x007c, 0x81ff, 0x00c0, 0x2bd7,
3419 +       0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7,
3420 +       0x1078, 0x47c8, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078,
3421 +       0x35d2, 0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7, 0x1078,
3422 +       0x47b2, 0x0078, 0x2bad, 0x6100, 0x0078, 0x2bad, 0x1078, 0x35e4,
3423 +       0x0040, 0x2bdb, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0,
3424 +       0x2bd7, 0x0d7e, 0xace8, 0x000a, 0x7924, 0xd184, 0x0040, 0x32b2,
3425 +       0xace8, 0x0006, 0x680c, 0x8007, 0x783e, 0x6808, 0x8007, 0x783a,
3426 +       0x6b04, 0x831f, 0x6a00, 0x8217, 0x0d7f, 0x6100, 0xa18c, 0x0200,
3427 +       0x0078, 0x2bad, 0xa006, 0x1078, 0x256a, 0x7824, 0xa084, 0x00ff,
3428 +       0xa086, 0x00ff, 0x0040, 0x32cf, 0x81ff, 0x00c0, 0x2bd7, 0x1078,
3429 +       0x42dd, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb, 0x7924, 0xa18c,
3430 +       0xff00, 0x810f, 0xa186, 0x00ff, 0x0040, 0x32e5, 0xa182, 0x007f,
3431 +       0x00c8, 0x2bdb, 0x2100, 0x1078, 0x2564, 0x027e, 0x0c7e, 0x127e,
3432 +       0x2091, 0x8000, 0x2061, 0xa8c4, 0x601b, 0x0000, 0x601f, 0x0000,
3433 +       0x2011, 0x0003, 0x1078, 0x70e0, 0x2011, 0x0002, 0x1078, 0x70ea,
3434 +       0x1078, 0x6fc4, 0x037e, 0x2019, 0x0000, 0x1078, 0x7058, 0x037f,
3435 +       0x2061, 0x0100, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a,
3436 +       0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, 0x2011, 0x4259,
3437 +       0x1078, 0x5add, 0x7924, 0xa18c, 0xff00, 0x810f, 0x7a28, 0x1078,
3438 +       0x3259, 0x127f, 0x0c7f, 0x027f, 0x0078, 0x2bad, 0x7924, 0xa18c,
3439 +       0xff00, 0x810f, 0x0c7e, 0x1078, 0x455c, 0x2c08, 0x0c7f, 0x00c0,
3440 +       0x2bdb, 0x0078, 0x2bad, 0x81ff, 0x0040, 0x3332, 0x2009, 0x0001,
3441 +       0x0078, 0x2bd7, 0x60cc, 0xd09c, 0x00c0, 0x333a, 0x2009, 0x0005,
3442 +       0x0078, 0x2bd7, 0x1078, 0x35ba, 0x00c0, 0x3342, 0x2009, 0x0002,
3443 +       0x0078, 0x2bd7, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078,
3444 +       0x3604, 0x701b, 0x334c, 0x007c, 0x2009, 0x0080, 0x1078, 0x45c4,
3445 +       0x00c0, 0x3359, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0040,
3446 +       0x335d, 0x2021, 0x400a, 0x0078, 0x2baf, 0x0d7e, 0xade8, 0x000d,
3447 +       0x6900, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be,
3448 +       0x0100, 0x0040, 0x33d0, 0xa0be, 0x0112, 0x0040, 0x33d0, 0xa0be,
3449 +       0x0113, 0x0040, 0x33d0, 0xa0be, 0x0114, 0x0040, 0x33d0, 0xa0be,
3450 +       0x0117, 0x0040, 0x33d0, 0xa0be, 0x011a, 0x0040, 0x33d0, 0xa0be,
3451 +       0x0121, 0x0040, 0x33c6, 0xa0be, 0x0131, 0x0040, 0x33c6, 0xa0be,
3452 +       0x0171, 0x0040, 0x33d0, 0xa0be, 0x0173, 0x0040, 0x33d0, 0xa0be,
3453 +       0x01a1, 0x00c0, 0x3398, 0x6830, 0x8007, 0x6832, 0x0078, 0x33d6,
3454 +       0xa0be, 0x0212, 0x0040, 0x33cc, 0xa0be, 0x0213, 0x0040, 0x33cc,
3455 +       0xa0be, 0x0214, 0x0040, 0x33be, 0xa0be, 0x0217, 0x0040, 0x33b8,
3456 +       0xa0be, 0x021a, 0x00c0, 0x33b1, 0x6838, 0x8007, 0x683a, 0x0078,
3457 +       0x33d0, 0xa0be, 0x0300, 0x0040, 0x33d0, 0x0d7f, 0x0078, 0x2bdb,
3458 +       0xad80, 0x0010, 0x20a9, 0x0007, 0x1078, 0x3418, 0xad80, 0x000e,
3459 +       0x20a9, 0x0001, 0x1078, 0x3418, 0x0078, 0x33d0, 0xad80, 0x000c,
3460 +       0x1078, 0x3426, 0x0078, 0x33d6, 0xad80, 0x000e, 0x1078, 0x3426,
3461 +       0xad80, 0x000c, 0x20a9, 0x0001, 0x1078, 0x3418, 0x0c7e, 0x1078,
3462 +       0x35ba, 0x0040, 0x3409, 0x6838, 0xc0fd, 0x683a, 0x6837, 0x0119,
3463 +       0x6853, 0x0000, 0x684f, 0x0020, 0x685b, 0x0001, 0x810b, 0x697e,
3464 +       0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92, 0x6996, 0x689b,
3465 +       0x0000, 0x0c7f, 0x0d7f, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a,
3466 +       0x6823, 0x0000, 0x6804, 0x2068, 0x1078, 0x8e66, 0x00c0, 0x3404,
3467 +       0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x340f,
3468 +       0x007c, 0x0c7f, 0x0d7f, 0x2009, 0x0002, 0x0078, 0x2bd7, 0x6820,
3469 +       0xa086, 0x8001, 0x00c0, 0x2bad, 0x2009, 0x0004, 0x0078, 0x2bd7,
3470 +       0x017e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, 0x8108,
3471 +       0x280a, 0x8108, 0x00f0, 0x341a, 0x017f, 0x007c, 0x017e, 0x0a7e,
3472 +       0x0b7e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, 0x8000,
3473 +       0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, 0x280a,
3474 +       0x0b7f, 0x0a7f, 0x017f, 0x007c, 0x81ff, 0x0040, 0x3443, 0x2009,
3475 +       0x0001, 0x0078, 0x2bd7, 0x60cc, 0xd09c, 0x00c0, 0x344b, 0x2009,
3476 +       0x0005, 0x0078, 0x2bd7, 0x7924, 0x2140, 0xa18c, 0xff00, 0x810f,
3477 +       0xa182, 0x0080, 0x0048, 0x2bdb, 0xa182, 0x00ff, 0x00c8, 0x2bdb,
3478 +       0x7a2c, 0x7b28, 0x606c, 0xa306, 0x00c0, 0x3466, 0x6070, 0xa24e,
3479 +       0x0040, 0x2bdb, 0xa9cc, 0xff00, 0x0040, 0x2bdb, 0x0c7e, 0x1078,
3480 +       0x350f, 0x2c68, 0x0c7f, 0x0040, 0x349e, 0xa0c6, 0x4000, 0x00c0,
3481 +       0x3484, 0x0c7e, 0x007e, 0x2d60, 0x2009, 0x0000, 0x1078, 0x489b,
3482 +       0x00c0, 0x347b, 0xc185, 0x6000, 0xd0bc, 0x0040, 0x3480, 0xc18d,
3483 +       0x007f, 0x0c7f, 0x0078, 0x349b, 0xa0c6, 0x4007, 0x00c0, 0x348b,
3484 +       0x2408, 0x0078, 0x349b, 0xa0c6, 0x4008, 0x00c0, 0x3493, 0x2708,
3485 +       0x2610, 0x0078, 0x349b, 0xa0c6, 0x4009, 0x00c0, 0x3499, 0x0078,
3486 +       0x349b, 0x2001, 0x4006, 0x2020, 0x0078, 0x2baf, 0x2d00, 0x7022,
3487 +       0x017e, 0x0b7e, 0x0c7e, 0x0e7e, 0x2c70, 0x1078, 0x76c7, 0x0040,
3488 +       0x34e4, 0x2d00, 0x601a, 0x2001, 0xa657, 0x2004, 0xa084, 0x00ff,
3489 +       0x6842, 0x2e58, 0x0e7f, 0x0e7e, 0x0c7e, 0x1078, 0x35ba, 0x0c7f,
3490 +       0x2b70, 0x00c0, 0x34c5, 0x1078, 0x772d, 0x0e7f, 0x0c7f, 0x0b7f,
3491 +       0x017f, 0x2009, 0x0002, 0x0078, 0x2bd7, 0x6837, 0x0000, 0x2d00,
3492 +       0x6012, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x127e, 0x2091,
3493 +       0x8000, 0x1078, 0x2880, 0x127f, 0x601f, 0x0001, 0x2001, 0x0000,
3494 +       0x1078, 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x2009, 0x0002,
3495 +       0x1078, 0x775c, 0xa085, 0x0001, 0x0e7f, 0x0c7f, 0x0b7f, 0x017f,
3496 +       0x00c0, 0x34ee, 0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003,
3497 +       0x701b, 0x34f3, 0x007c, 0x6830, 0xa086, 0x0100, 0x7020, 0x2060,
3498 +       0x00c0, 0x3501, 0x2009, 0x0004, 0x6204, 0xa294, 0x00ff, 0x0078,
3499 +       0x2bd7, 0x2009, 0x0000, 0x1078, 0x489b, 0x00c0, 0x3508, 0xc185,
3500 +       0x6000, 0xd0bc, 0x0040, 0x350d, 0xc18d, 0x0078, 0x2bad, 0x0e7e,
3501 +       0x0d7e, 0x2029, 0x0000, 0x2021, 0x0080, 0x20a9, 0x007f, 0x2071,
3502 +       0xa7b5, 0x2e04, 0xa005, 0x00c0, 0x3524, 0x2100, 0xa406, 0x00c0,
3503 +       0x3555, 0x2428, 0x0078, 0x3555, 0x2068, 0x6f10, 0x2700, 0xa306,
3504 +       0x00c0, 0x3546, 0x6e14, 0x2600, 0xa206, 0x00c0, 0x3546, 0x2400,
3505 +       0xa106, 0x00c0, 0x3542, 0x2d60, 0xd884, 0x0040, 0x356a, 0x6004,
3506 +       0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x356a, 0x2001, 0x4000,
3507 +       0x0078, 0x356b, 0x2001, 0x4007, 0x0078, 0x356b, 0x2400, 0xa106,
3508 +       0x00c0, 0x3555, 0x6e14, 0x87ff, 0x00c0, 0x3551, 0x86ff, 0x0040,
3509 +       0x3521, 0x2001, 0x4008, 0x0078, 0x356b, 0x8420, 0x8e70, 0x00f0,
3510 +       0x3519, 0x85ff, 0x00c0, 0x3564, 0x2001, 0x4009, 0x0078, 0x356b,
3511 +       0x2001, 0x0001, 0x0078, 0x356b, 0x1078, 0x455c, 0x00c0, 0x3560,
3512 +       0x6312, 0x6216, 0xa006, 0xa005, 0x0d7f, 0x0e7f, 0x007c, 0x81ff,
3513 +       0x00c0, 0x2bd7, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x6837, 0x0000,
3514 +       0x6838, 0xc0fd, 0x683a, 0x7824, 0xa005, 0x0040, 0x2bdb, 0xa096,
3515 +       0x00ff, 0x0040, 0x3587, 0xa092, 0x0004, 0x00c8, 0x2bdb, 0x2010,
3516 +       0x2d18, 0x1078, 0x282f, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b,
3517 +       0x3592, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7, 0x0078,
3518 +       0x2bad, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa182, 0x0080, 0x0048,
3519 +       0x2bdb, 0xa182, 0x00ff, 0x00c8, 0x2bdb, 0x127e, 0x2091, 0x8000,
3520 +       0x1078, 0x8d4b, 0x00c0, 0x35b7, 0xa190, 0xa735, 0x2204, 0xa065,
3521 +       0x0040, 0x35b7, 0x1078, 0x42f8, 0x127f, 0x0078, 0x2bad, 0x127f,
3522 +       0x0078, 0x2bd7, 0x1078, 0x138b, 0x0040, 0x35d1, 0xa006, 0x6802,
3523 +       0x7010, 0xa005, 0x00c0, 0x35c9, 0x2d00, 0x7012, 0x7016, 0x0078,
3524 +       0x35cf, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80,
3525 +       0x000d, 0x007c, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x45c4,
3526 +       0x00c0, 0x35e1, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048,
3527 +       0x35e2, 0xa066, 0x8cff, 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff,
3528 +       0x1078, 0x45c4, 0x00c0, 0x35f2, 0xa6b4, 0x00ff, 0xa682, 0x4000,
3529 +       0x0048, 0x35f3, 0xa066, 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff,
3530 +       0x0040, 0x3600, 0x2168, 0x6904, 0x1078, 0x13a4, 0x0078, 0x35f7,
3531 +       0x7112, 0x7116, 0x017f, 0x007c, 0x2031, 0x0001, 0x0078, 0x360a,
3532 +       0x2031, 0x0000, 0x2061, 0xa6d2, 0x6606, 0x6112, 0x600e, 0x6226,
3533 +       0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x13db, 0x7007, 0x0002,
3534 +       0x701b, 0x2bad, 0x007c, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079,
3535 +       0x0000, 0x2001, 0xa690, 0x2004, 0xa005, 0x00c0, 0x3636, 0x0068,
3536 +       0x3636, 0x7818, 0xd084, 0x00c0, 0x3636, 0x7a22, 0x7b26, 0x7c2a,
3537 +       0x781b, 0x0001, 0x2091, 0x4080, 0x0078, 0x365b, 0x017e, 0x0c7e,
3538 +       0x0e7e, 0x2071, 0xa682, 0x7138, 0xa182, 0x0008, 0x0048, 0x3644,
3539 +       0x7030, 0x2060, 0x0078, 0x3655, 0x7030, 0xa0e0, 0x0008, 0xac82,
3540 +       0xa6d2, 0x0048, 0x364d, 0x2061, 0xa692, 0x2c00, 0x7032, 0x81ff,
3541 +       0x00c0, 0x3653, 0x7036, 0x8108, 0x713a, 0x2262, 0x6306, 0x640a,
3542 +       0x0e7f, 0x0c7f, 0x017f, 0x127f, 0x0f7f, 0x007c, 0x0e7e, 0x2071,
3543 +       0xa682, 0x7038, 0xa005, 0x0040, 0x3697, 0x127e, 0x2091, 0x8000,
3544 +       0x0068, 0x3696, 0x0f7e, 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0,
3545 +       0x3695, 0x0c7e, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826,
3546 +       0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, 0x7038, 0x8001,
3547 +       0x703a, 0xa005, 0x00c0, 0x368b, 0x7033, 0xa692, 0x7037, 0xa692,
3548 +       0x0c7f, 0x0078, 0x3695, 0xac80, 0x0008, 0xa0fa, 0xa6d2, 0x0048,
3549 +       0x3693, 0x2001, 0xa692, 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f,
3550 +       0x007c, 0x027e, 0x2001, 0xa653, 0x2004, 0xd0c4, 0x0040, 0x36a4,
3551 +       0x2011, 0x8014, 0x1078, 0x361b, 0x027f, 0x007c, 0x81ff, 0x00c0,
3552 +       0x2bd7, 0x127e, 0x2091, 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac,
3553 +       0x6032, 0x1078, 0x4224, 0x127f, 0x0078, 0x2bad, 0x81ff, 0x00c0,
3554 +       0x2bd7, 0x6000, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x2001, 0xa653,
3555 +       0x2004, 0xd0ac, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb,
3556 +       0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x36d3, 0x7828,
3557 +       0xa005, 0x0040, 0x2bad, 0x0c7e, 0x1078, 0x35ba, 0x0c7f, 0x0040,
3558 +       0x2bd7, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a,
3559 +       0x1078, 0x8f12, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x36e9,
3560 +       0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7, 0x0078, 0x2bad,
3561 +       0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x7f24,
3562 +       0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x35ba, 0x0040, 0x2bd7,
3563 +       0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, 0x702f, 0x0000,
3564 +       0xad80, 0x0005, 0x7026, 0x20a0, 0x1078, 0x45c4, 0x00c0, 0x376d,
3565 +       0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0040, 0x371d, 0xa0c4,
3566 +       0xff00, 0xa8c6, 0x0600, 0x00c0, 0x376d, 0x2001, 0xa653, 0x2004,
3567 +       0xd0ac, 0x00c0, 0x372a, 0x1078, 0x489b, 0x00c0, 0x372a, 0xd79c,
3568 +       0x0040, 0x376d, 0xd794, 0x00c0, 0x3730, 0xd784, 0x0040, 0x373c,
3569 +       0xac80, 0x0006, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x1078,
3570 +       0x3426, 0xd794, 0x0040, 0x3745, 0xac80, 0x000a, 0x2098, 0x3400,
3571 +       0x20a9, 0x0004, 0x53a3, 0x1078, 0x3426, 0x21a2, 0xd794, 0x0040,
3572 +       0x3765, 0xac80, 0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, 0x53a3,
3573 +       0xac80, 0x0003, 0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, 0x3400,
3574 +       0x20a9, 0x0002, 0x53a3, 0x1078, 0x3418, 0xac80, 0x0026, 0x2098,
3575 +       0x20a9, 0x0002, 0x53a3, 0x0078, 0x3766, 0x94a0, 0xd794, 0x0040,
3576 +       0x376b, 0xa6b0, 0x000b, 0xa6b0, 0x0005, 0x8108, 0xd78c, 0x0040,
3577 +       0x3777, 0xa186, 0x0100, 0x0040, 0x3788, 0x0078, 0x377b, 0xa186,
3578 +       0x007e, 0x0040, 0x3788, 0xd794, 0x0040, 0x3782, 0xa686, 0x0020,
3579 +       0x0078, 0x3784, 0xa686, 0x0028, 0x0040, 0x3791, 0x0078, 0x370c,
3580 +       0x86ff, 0x00c0, 0x378f, 0x7120, 0x810b, 0x0078, 0x2bad, 0x702f,
3581 +       0x0001, 0x711e, 0x7020, 0xa600, 0x7022, 0x772a, 0x2061, 0xa6d2,
3582 +       0x6007, 0x0000, 0x6612, 0x7024, 0x600e, 0x6226, 0x632a, 0x642e,
3583 +       0x6532, 0x2c10, 0x1078, 0x13db, 0x7007, 0x0002, 0x701b, 0x37a9,
3584 +       0x007c, 0x702c, 0xa005, 0x00c0, 0x37bb, 0x711c, 0x7024, 0x20a0,
3585 +       0x7728, 0x2031, 0x0000, 0x2061, 0xa6d2, 0x6224, 0x6328, 0x642c,
3586 +       0x6530, 0x0078, 0x370c, 0x7120, 0x810b, 0x0078, 0x2bad, 0x2029,
3587 +       0x007e, 0x7924, 0x7a28, 0x7b2c, 0x7c38, 0xa184, 0xff00, 0x8007,
3588 +       0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa184,
3589 +       0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb,
3590 +       0xa284, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502,
3591 +       0x0048, 0x2bdb, 0xa284, 0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb,
3592 +       0xa502, 0x0048, 0x2bdb, 0xa384, 0xff00, 0x8007, 0xa0e2, 0x0020,
3593 +       0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa384, 0x00ff, 0xa0e2,
3594 +       0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa484, 0xff00,
3595 +       0x8007, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb,
3596 +       0xa484, 0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048,
3597 +       0x2bdb, 0x2061, 0xa8a5, 0x6102, 0x6206, 0x630a, 0x640e, 0x0078,
3598 +       0x2bad, 0x007e, 0x2001, 0xa653, 0x2004, 0xd0cc, 0x007f, 0x007c,
3599 +       0x007e, 0x2001, 0xa672, 0x2004, 0xd0bc, 0x007f, 0x007c, 0x6164,
3600 +       0x7a24, 0x6300, 0x82ff, 0x00c0, 0x3830, 0x7926, 0x0078, 0x2bad,
3601 +       0x83ff, 0x00c0, 0x2bdb, 0x2001, 0xfff0, 0xa200, 0x00c8, 0x2bdb,
3602 +       0x2019, 0xffff, 0x6068, 0xa302, 0xa200, 0x0048, 0x2bdb, 0x7926,
3603 +       0x6266, 0x0078, 0x2bad, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003,
3604 +       0x00c0, 0x2bd7, 0x7c28, 0x7d24, 0x7e38, 0x7f2c, 0x1078, 0x35ba,
3605 +       0x0040, 0x2bd7, 0x2009, 0x0000, 0x2019, 0x0000, 0x7023, 0x0000,
3606 +       0x702f, 0x0000, 0xad80, 0x0003, 0x7026, 0x20a0, 0xa1e0, 0xa735,
3607 +       0x2c64, 0x8cff, 0x0040, 0x387d, 0x6004, 0xa084, 0x00ff, 0xa086,
3608 +       0x0006, 0x0040, 0x3872, 0x6004, 0xa084, 0xff00, 0xa086, 0x0600,
3609 +       0x00c0, 0x387d, 0x6014, 0x20a2, 0x94a0, 0x6010, 0x8007, 0xa105,
3610 +       0x8007, 0x20a2, 0x94a0, 0xa398, 0x0002, 0x8108, 0xa182, 0x00ff,
3611 +       0x0040, 0x3888, 0xa386, 0x002a, 0x0040, 0x3891, 0x0078, 0x385e,
3612 +       0x83ff, 0x00c0, 0x388f, 0x7120, 0x810c, 0x0078, 0x2bad, 0x702f,
3613 +       0x0001, 0x711e, 0x7020, 0xa300, 0x7022, 0x2061, 0xa6d2, 0x6007,
3614 +       0x0000, 0x6312, 0x7024, 0x600e, 0x6426, 0x652a, 0x662e, 0x6732,
3615 +       0x2c10, 0x1078, 0x13db, 0x7007, 0x0002, 0x701b, 0x38a8, 0x007c,
3616 +       0x702c, 0xa005, 0x00c0, 0x38b9, 0x711c, 0x7024, 0x20a0, 0x2019,
3617 +       0x0000, 0x2061, 0xa6d2, 0x6424, 0x6528, 0x662c, 0x6730, 0x0078,
3618 +       0x385e, 0x7120, 0x810c, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7,
3619 +       0x60cc, 0xd09c, 0x0040, 0x2bd7, 0x1078, 0x35ba, 0x0040, 0x2bd7,
3620 +       0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604, 0x701b,
3621 +       0x38d2, 0x007c, 0x0d7e, 0xade8, 0x000d, 0x6828, 0xa0be, 0x7000,
3622 +       0x0040, 0x38e5, 0xa0be, 0x7100, 0x0040, 0x38e5, 0xa0be, 0x7200,
3623 +       0x0040, 0x38e5, 0x0d7f, 0x0078, 0x2bdb, 0x6820, 0x6924, 0x1078,
3624 +       0x254d, 0x00c0, 0x3910, 0x1078, 0x455c, 0x00c0, 0x3910, 0x7122,
3625 +       0x6612, 0x6516, 0x6e18, 0x0c7e, 0x1078, 0x35ba, 0x0040, 0x3910,
3626 +       0x1078, 0x35ba, 0x0040, 0x3910, 0x0c7f, 0x0d7f, 0x6837, 0x0000,
3627 +       0x6838, 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x1078,
3628 +       0x8e82, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x3913, 0x007c,
3629 +       0x0d7f, 0x0078, 0x2bd7, 0x7120, 0x1078, 0x298e, 0x6820, 0xa086,
3630 +       0x8001, 0x0040, 0x2bd7, 0x2d00, 0x701e, 0x6804, 0xa080, 0x0002,
3631 +       0x007e, 0x20a9, 0x002a, 0x2098, 0x20a0, 0x1078, 0x4281, 0x007f,
3632 +       0xade8, 0x000d, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x2061, 0xa6d2,
3633 +       0x6007, 0x0000, 0x6e00, 0x6f28, 0xa7c6, 0x7000, 0x00c0, 0x393a,
3634 +       0x0078, 0x393e, 0xa7c6, 0x7100, 0x00c0, 0x3946, 0xa6c2, 0x0004,
3635 +       0x0048, 0x2bdb, 0x2009, 0x0004, 0x0078, 0x3608, 0xa7c6, 0x7200,
3636 +       0x00c0, 0x2bdb, 0xa6c2, 0x0054, 0x0048, 0x2bdb, 0x600e, 0x6013,
3637 +       0x002a, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x13db,
3638 +       0x7007, 0x0002, 0x701b, 0x395d, 0x007c, 0x701c, 0x2068, 0x6804,
3639 +       0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x007e, 0x20a9, 0x002a,
3640 +       0x2098, 0x20a0, 0x1078, 0x4281, 0x007f, 0x2009, 0x002a, 0x2061,
3641 +       0xa6d2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0078, 0x3608, 0x81ff,
3642 +       0x00c0, 0x2bd7, 0x792c, 0x2001, 0xa89d, 0x2102, 0x1078, 0x35d2,
3643 +       0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7, 0x127e, 0x2091,
3644 +       0x8000, 0x1078, 0x47de, 0x127f, 0x0078, 0x2bad, 0x7824, 0xd08c,
3645 +       0x00c0, 0x3995, 0xd084, 0x0040, 0x31da, 0x1078, 0x35e4, 0x0040,
3646 +       0x2bdb, 0x0c7e, 0x1078, 0x35ba, 0x0c7f, 0x00c0, 0x39a3, 0x2009,
3647 +       0x0002, 0x0078, 0x2bd7, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
3648 +       0x0040, 0x39b0, 0xa08e, 0x0004, 0x0040, 0x39b0, 0xa08e, 0x0005,
3649 +       0x00c0, 0x39dd, 0x7824, 0xd08c, 0x0040, 0x39bb, 0x6000, 0xc08c,
3650 +       0x6002, 0x0078, 0x39c5, 0x2001, 0xa653, 0x2004, 0xd0b4, 0x0040,
3651 +       0x320f, 0x6000, 0xd08c, 0x00c0, 0x320f, 0x6837, 0x0000, 0x6838,
3652 +       0xc0fd, 0x683a, 0x1078, 0x8e9e, 0x00c0, 0x39d2, 0x2009, 0x0003,
3653 +       0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x39d7, 0x007c, 0x1078,
3654 +       0x35e4, 0x0040, 0x2bdb, 0x0078, 0x320f, 0x2009, 0xa62f, 0x210c,
3655 +       0x81ff, 0x0040, 0x39e7, 0x2009, 0x0001, 0x0078, 0x2bd7, 0x2001,
3656 +       0xa600, 0x2004, 0xa086, 0x0003, 0x0040, 0x39f2, 0x2009, 0x0007,
3657 +       0x0078, 0x2bd7, 0x2001, 0xa653, 0x2004, 0xd0ac, 0x0040, 0x39fc,
3658 +       0x2009, 0x0008, 0x0078, 0x2bd7, 0x609c, 0xd0a4, 0x00c0, 0x3a03,
3659 +       0xd0ac, 0x00c0, 0x320f, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838,
3660 +       0xc0fd, 0x683a, 0x1078, 0x8f12, 0x00c0, 0x3a12, 0x2009, 0x0003,
3661 +       0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x3a17, 0x007c, 0x6830,
3662 +       0xa086, 0x0100, 0x00c0, 0x3a20, 0x2009, 0x0004, 0x0078, 0x2bd7,
3663 +       0x1078, 0x35e4, 0x0040, 0x2bdb, 0x0078, 0x39b2, 0x81ff, 0x2009,
3664 +       0x0001, 0x00c0, 0x2bd7, 0x6000, 0xa086, 0x0003, 0x2009, 0x0007,
3665 +       0x00c0, 0x2bd7, 0x2001, 0xa653, 0x2004, 0xd0ac, 0x2009, 0x0008,
3666 +       0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x6004, 0xa084,
3667 +       0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, 0x00c0, 0x2bd7, 0x0c7e,
3668 +       0x1078, 0x35ba, 0x0c7f, 0x2009, 0x0002, 0x0040, 0x2bd7, 0x6837,
3669 +       0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x7928, 0xa194,
3670 +       0xff00, 0xa18c, 0x00ff, 0xa006, 0x82ff, 0x00c0, 0x3a65, 0xc0ed,
3671 +       0x6952, 0x792c, 0x6956, 0x0078, 0x3a6e, 0xa28e, 0x0100, 0x00c0,
3672 +       0x2bdb, 0xc0e5, 0x6853, 0x0000, 0x6857, 0x0000, 0x683e, 0x1078,
3673 +       0x90bd, 0x2009, 0x0003, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b,
3674 +       0x3a7a, 0x007c, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, 0x0040,
3675 +       0x2bd7, 0x0078, 0x2bad, 0x81ff, 0x2009, 0x0001, 0x00c0, 0x2bd7,
3676 +       0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x00c0, 0x2bd7, 0x1078,
3677 +       0x35e4, 0x0040, 0x2bdb, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
3678 +       0x2009, 0x0009, 0x00c0, 0x2bd7, 0x0c7e, 0x1078, 0x35ba, 0x0c7f,
3679 +       0x2009, 0x0002, 0x0040, 0x2bd7, 0xad80, 0x000f, 0x2009, 0x0008,
3680 +       0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604, 0x701b, 0x3ab1,
3681 +       0x007c, 0x0d7e, 0xade8, 0x000f, 0x6800, 0xa086, 0x0500, 0x00c0,
3682 +       0x3ac4, 0x6804, 0xa005, 0x00c0, 0x3ac4, 0x6808, 0xa084, 0xff00,
3683 +       0x00c0, 0x3ac4, 0x0078, 0x3ac7, 0x0d7f, 0x00c0, 0x2bdb, 0x0d7f,
3684 +       0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x0c7e,
3685 +       0x1078, 0x35e4, 0x00c0, 0x3ad7, 0x0c7f, 0x0078, 0x2bdb, 0x1078,
3686 +       0x9119, 0x2009, 0x0003, 0x0c7f, 0x0040, 0x2bd7, 0x7007, 0x0003,
3687 +       0x701b, 0x3ae3, 0x007c, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004,
3688 +       0x0040, 0x2bd7, 0x0078, 0x2bad, 0x127e, 0x0c7e, 0x0e7e, 0x2061,
3689 +       0x0100, 0x2071, 0xa600, 0x6044, 0xd0a4, 0x00c0, 0x3b15, 0xd084,
3690 +       0x0040, 0x3afe, 0x1078, 0x3c75, 0x0078, 0x3b11, 0xd08c, 0x0040,
3691 +       0x3b05, 0x1078, 0x3b8c, 0x0078, 0x3b11, 0xd094, 0x0040, 0x3b0c,
3692 +       0x1078, 0x3b60, 0x0078, 0x3b11, 0xd09c, 0x0040, 0x3b11, 0x1078,
3693 +       0x3b1f, 0x0e7f, 0x0c7f, 0x127f, 0x007c, 0x017e, 0x6128, 0xd19c,
3694 +       0x00c0, 0x3b1c, 0xc19d, 0x612a, 0x017f, 0x0078, 0x3b11, 0x624c,
3695 +       0xa286, 0xf0f0, 0x00c0, 0x3b30, 0x6048, 0xa086, 0xf0f0, 0x0040,
3696 +       0x3b30, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, 0x0078, 0x3b5f,
3697 +       0xa294, 0xff00, 0xa296, 0xf700, 0x0040, 0x3b45, 0x7134, 0xd1a4,
3698 +       0x00c0, 0x3b45, 0x6240, 0xa294, 0x0010, 0x0040, 0x3b45, 0x2009,
3699 +       0x00f7, 0x1078, 0x42a1, 0x0078, 0x3b5f, 0x6043, 0x0040, 0x6043,
3700 +       0x0000, 0x7077, 0x0000, 0x708f, 0x0001, 0x70b3, 0x0000, 0x70cf,
3701 +       0x0000, 0x2009, 0xacc0, 0x200b, 0x0000, 0x7087, 0x0000, 0x707b,
3702 +       0x000f, 0x2009, 0x000f, 0x2011, 0x41d5, 0x1078, 0x5add, 0x007c,
3703 +       0x157e, 0x7078, 0xa005, 0x00c0, 0x3b8a, 0x2011, 0x41d5, 0x1078,
3704 +       0x5a45, 0x6040, 0xa094, 0x0010, 0xa285, 0x0020, 0x6042, 0x20a9,
3705 +       0x00c8, 0x6044, 0xd08c, 0x00c0, 0x3b83, 0x00f0, 0x3b71, 0x6242,
3706 +       0x708b, 0x0000, 0x6040, 0xa094, 0x0010, 0xa285, 0x0080, 0x6042,
3707 +       0x6242, 0x0078, 0x3b8a, 0x6242, 0x708b, 0x0000, 0x707f, 0x0000,
3708 +       0x0078, 0x3b8a, 0x157f, 0x007c, 0x707c, 0xa08a, 0x0003, 0x00c8,
3709 +       0x3b95, 0x1079, 0x3b98, 0x0078, 0x3b97, 0x1078, 0x1332, 0x007c,
3710 +       0x3b9b, 0x3bea, 0x3c74, 0x0f7e, 0x707f, 0x0001, 0x20e1, 0xa000,
3711 +       0x20e1, 0x8700, 0x1078, 0x21f7, 0x20e1, 0x9080, 0x20e1, 0x4000,
3712 +       0x2079, 0xab00, 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000,
3713 +       0x780f, 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, 0x781b, 0x0000,
3714 +       0x781f, 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, 0x782b, 0x0000,
3715 +       0x782f, 0x0000, 0x2079, 0xab0c, 0x207b, 0x1101, 0x7807, 0x0000,
3716 +       0x2099, 0xa605, 0x20a1, 0xab0e, 0x20a9, 0x0004, 0x53a3, 0x2079,
3717 +       0xab12, 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, 0xab00, 0x20a1,
3718 +       0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000,
3719 +       0x1078, 0x420b, 0x0f7f, 0x7083, 0x0000, 0x6043, 0x0008, 0x6043,
3720 +       0x0000, 0x007c, 0x0d7e, 0x7080, 0x7083, 0x0000, 0xa025, 0x0040,
3721 +       0x3c5e, 0x6020, 0xd0b4, 0x00c0, 0x3c5c, 0x718c, 0x81ff, 0x0040,
3722 +       0x3c4b, 0xa486, 0x000c, 0x00c0, 0x3c56, 0xa480, 0x0018, 0x8004,
3723 +       0x20a8, 0x2011, 0xab80, 0x2019, 0xab00, 0x220c, 0x2304, 0xa106,
3724 +       0x00c0, 0x3c22, 0x8210, 0x8318, 0x00f0, 0x3c05, 0x6043, 0x0004,
3725 +       0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x707f, 0x0002,
3726 +       0x708b, 0x0002, 0x2009, 0x07d0, 0x2011, 0x41dc, 0x1078, 0x5add,
3727 +       0x0078, 0x3c5c, 0x2069, 0xab80, 0x6930, 0xa18e, 0x1101, 0x00c0,
3728 +       0x3c56, 0x6834, 0xa005, 0x00c0, 0x3c56, 0x6900, 0xa18c, 0x00ff,
3729 +       0x00c0, 0x3c36, 0x6804, 0xa005, 0x0040, 0x3c4b, 0x2011, 0xab8e,
3730 +       0x2019, 0xa605, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0048,
3731 +       0x3c49, 0x00c0, 0x3c56, 0x8210, 0x8318, 0x00f0, 0x3c3c, 0x0078,
3732 +       0x3c56, 0x708f, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099,
3733 +       0xab80, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043, 0x0008,
3734 +       0x6043, 0x0000, 0x0078, 0x3c5e, 0x0d7f, 0x007c, 0x6020, 0xd0b4,
3735 +       0x00c0, 0x3c5c, 0x60c3, 0x000c, 0x2011, 0xa8bb, 0x2013, 0x0000,
3736 +       0x7083, 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575,
3737 +       0x1078, 0x6e06, 0x0078, 0x3c5c, 0x007c, 0x7088, 0xa08a, 0x001d,
3738 +       0x00c8, 0x3c7e, 0x1079, 0x3c81, 0x0078, 0x3c80, 0x1078, 0x1332,
3739 +       0x007c, 0x3cab, 0x3cba, 0x3ce9, 0x3d02, 0x3d2e, 0x3d5a, 0x3d86,
3740 +       0x3dbc, 0x3de8, 0x3e10, 0x3e53, 0x3e7d, 0x3e9f, 0x3eb5, 0x3edb,
3741 +       0x3eee, 0x3ef7, 0x3f2b, 0x3f57, 0x3f83, 0x3faf, 0x3fe5, 0x4030,
3742 +       0x405f, 0x4081, 0x40c3, 0x40e9, 0x4102, 0x4103, 0x0c7e, 0x2061,
3743 +       0xa600, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, 0xa084, 0xfff9,
3744 +       0x6006, 0x0c7f, 0x007c, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043,
3745 +       0x0002, 0x708b, 0x0001, 0x2009, 0x07d0, 0x2011, 0x41dc, 0x1078,
3746 +       0x5add, 0x007c, 0x0f7e, 0x7080, 0xa086, 0x0014, 0x00c0, 0x3ce7,
3747 +       0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x3ce7, 0x2079, 0xab80,
3748 +       0x7a30, 0xa296, 0x1102, 0x00c0, 0x3ce5, 0x7834, 0xa005, 0x00c0,
3749 +       0x3ce5, 0x7a38, 0xd2fc, 0x0040, 0x3cdb, 0x70b0, 0xa005, 0x00c0,
3750 +       0x3cdb, 0x70b3, 0x0001, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x708b,
3751 +       0x0010, 0x1078, 0x3ef7, 0x0078, 0x3ce7, 0x1078, 0x4224, 0x0f7f,
3752 +       0x007c, 0x708b, 0x0003, 0x6043, 0x0004, 0x2011, 0x41dc, 0x1078,
3753 +       0x5a45, 0x1078, 0x4289, 0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9,
3754 +       0x000a, 0x20a3, 0x0000, 0x00f0, 0x3cf9, 0x60c3, 0x0014, 0x1078,
3755 +       0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3d2c, 0x2011,
3756 +       0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3d2a, 0x2079,
3757 +       0xab80, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x3d2a, 0x7834, 0xa005,
3758 +       0x00c0, 0x3d2a, 0x7a38, 0xd2fc, 0x0040, 0x3d24, 0x70b0, 0xa005,
3759 +       0x00c0, 0x3d24, 0x70b3, 0x0001, 0x708b, 0x0004, 0x1078, 0x3d2e,
3760 +       0x0078, 0x3d2c, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, 0x0005,
3761 +       0x1078, 0x4289, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011,
3762 +       0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3d4c, 0x7074, 0xa005, 0x00c0,
3763 +       0x3d4c, 0x7150, 0xa186, 0xffff, 0x0040, 0x3d4c, 0x1078, 0x419d,
3764 +       0x0040, 0x3d4c, 0x1078, 0x42b8, 0x20a9, 0x0008, 0x2298, 0x26a0,
3765 +       0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078,
3766 +       0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3d84, 0x2011,
3767 +       0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3d82, 0x2079,
3768 +       0xab80, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x3d82, 0x7834, 0xa005,
3769 +       0x00c0, 0x3d82, 0x7a38, 0xd2fc, 0x0040, 0x3d7c, 0x70b0, 0xa005,
3770 +       0x00c0, 0x3d7c, 0x70b3, 0x0001, 0x708b, 0x0006, 0x1078, 0x3d86,
3771 +       0x0078, 0x3d84, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, 0x0007,
3772 +       0x1078, 0x4289, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011,
3773 +       0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3dae, 0x7074, 0xa005, 0x00c0,
3774 +       0x3dae, 0x7154, 0xa186, 0xffff, 0x0040, 0x3dae, 0xa180, 0x29c0,
3775 +       0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x419d, 0x0040, 0x3dae,
3776 +       0x1078, 0x3820, 0x0040, 0x3dae, 0x1078, 0x256a, 0x20a9, 0x0008,
3777 +       0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
3778 +       0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040,
3779 +       0x3de6, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0,
3780 +       0x3de4, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x3de4,
3781 +       0x7834, 0xa005, 0x00c0, 0x3de4, 0x7a38, 0xd2fc, 0x0040, 0x3dde,
3782 +       0x70b0, 0xa005, 0x00c0, 0x3dde, 0x70b3, 0x0001, 0x708b, 0x0008,
3783 +       0x1078, 0x3de8, 0x0078, 0x3de6, 0x1078, 0x4224, 0x0f7f, 0x007c,
3784 +       0x708b, 0x0009, 0x1078, 0x4289, 0x20a3, 0x1105, 0x20a3, 0x0100,
3785 +       0x3430, 0x1078, 0x42d4, 0x00c0, 0x3e01, 0x7074, 0xa005, 0x00c0,
3786 +       0x3e01, 0x1078, 0x4104, 0x00c0, 0x3e0b, 0xa085, 0x0001, 0x1078,
3787 +       0x256a, 0x20a9, 0x0008, 0x2099, 0xab8e, 0x26a0, 0x53a6, 0x20a3,
3788 +       0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x420b, 0x007c,
3789 +       0x0f7e, 0x7080, 0xa005, 0x0040, 0x3e51, 0x2011, 0x41dc, 0x1078,
3790 +       0x5a45, 0xa086, 0x0014, 0x00c0, 0x3e4f, 0x2079, 0xab80, 0x7a30,
3791 +       0xa296, 0x1105, 0x00c0, 0x3e4f, 0x7834, 0x2011, 0x0100, 0xa21e,
3792 +       0x00c0, 0x3e3a, 0x7a38, 0xd2fc, 0x0040, 0x3e34, 0x70b0, 0xa005,
3793 +       0x00c0, 0x3e34, 0x70b3, 0x0001, 0x708b, 0x000a, 0x1078, 0x3e53,
3794 +       0x0078, 0x3e51, 0xa005, 0x00c0, 0x3e4f, 0x7a38, 0xd2fc, 0x0040,
3795 +       0x3e47, 0x70b0, 0xa005, 0x00c0, 0x3e47, 0x70b3, 0x0001, 0x7087,
3796 +       0x0000, 0x708b, 0x000e, 0x1078, 0x3edb, 0x0078, 0x3e51, 0x1078,
3797 +       0x4224, 0x0f7f, 0x007c, 0x708b, 0x000b, 0x2011, 0xab0e, 0x22a0,
3798 +       0x20a9, 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009,
3799 +       0x0000, 0x41a4, 0x1078, 0x4289, 0x20a3, 0x1106, 0x20a3, 0x0000,
3800 +       0x1078, 0x42d4, 0x0040, 0x3e70, 0x2013, 0x0000, 0x0078, 0x3e74,
3801 +       0x6030, 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6,
3802 +       0x60c3, 0x0084, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005,
3803 +       0x0040, 0x3e9d, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084,
3804 +       0x00c0, 0x3e9b, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1106, 0x00c0,
3805 +       0x3e9b, 0x7834, 0xa005, 0x00c0, 0x3e9b, 0x708b, 0x000c, 0x1078,
3806 +       0x3e9f, 0x0078, 0x3e9d, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b,
3807 +       0x000d, 0x1078, 0x4289, 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099,
3808 +       0xab8e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
3809 +       0x60c3, 0x0084, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005,
3810 +       0x0040, 0x3ed9, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084,
3811 +       0x00c0, 0x3ed7, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1107, 0x00c0,
3812 +       0x3ed7, 0x7834, 0xa005, 0x00c0, 0x3ed7, 0x7087, 0x0001, 0x1078,
3813 +       0x427b, 0x708b, 0x000e, 0x1078, 0x3edb, 0x0078, 0x3ed9, 0x1078,
3814 +       0x4224, 0x0f7f, 0x007c, 0x708b, 0x000f, 0x7083, 0x0000, 0x608b,
3815 +       0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009,
3816 +       0x07d0, 0x2011, 0x41dc, 0x1078, 0x5a38, 0x007c, 0x7080, 0xa005,
3817 +       0x0040, 0x3ef6, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x007c, 0x708b,
3818 +       0x0011, 0x1078, 0x42d4, 0x00c0, 0x3f14, 0x716c, 0x81ff, 0x0040,
3819 +       0x3f14, 0x2009, 0x0000, 0x7070, 0xa084, 0x00ff, 0x1078, 0x254d,
3820 +       0xa186, 0x007e, 0x0040, 0x3f14, 0xa186, 0x0080, 0x0040, 0x3f14,
3821 +       0x2011, 0xab8e, 0x1078, 0x419d, 0x20e1, 0x9080, 0x20e1, 0x4000,
3822 +       0x2099, 0xab80, 0x20a1, 0x020b, 0x7480, 0xa480, 0x0018, 0xa080,
3823 +       0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014,
3824 +       0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3f55,
3825 +       0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3f53,
3826 +       0x2079, 0xab80, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x3f53, 0x7834,
3827 +       0xa005, 0x00c0, 0x3f53, 0x7a38, 0xd2fc, 0x0040, 0x3f4d, 0x70b0,
3828 +       0xa005, 0x00c0, 0x3f4d, 0x70b3, 0x0001, 0x708b, 0x0012, 0x1078,
3829 +       0x3f57, 0x0078, 0x3f55, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b,
3830 +       0x0013, 0x1078, 0x4295, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430,
3831 +       0x2011, 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3f75, 0x7074, 0xa005,
3832 +       0x00c0, 0x3f75, 0x7150, 0xa186, 0xffff, 0x0040, 0x3f75, 0x1078,
3833 +       0x419d, 0x0040, 0x3f75, 0x1078, 0x42b8, 0x20a9, 0x0008, 0x2298,
3834 +       0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
3835 +       0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3fad,
3836 +       0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3fab,
3837 +       0x2079, 0xab80, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x3fab, 0x7834,
3838 +       0xa005, 0x00c0, 0x3fab, 0x7a38, 0xd2fc, 0x0040, 0x3fa5, 0x70b0,
3839 +       0xa005, 0x00c0, 0x3fa5, 0x70b3, 0x0001, 0x708b, 0x0014, 0x1078,
3840 +       0x3faf, 0x0078, 0x3fad, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b,
3841 +       0x0015, 0x1078, 0x4295, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430,
3842 +       0x2011, 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3fd7, 0x7074, 0xa005,
3843 +       0x00c0, 0x3fd7, 0x7154, 0xa186, 0xffff, 0x0040, 0x3fd7, 0xa180,
3844 +       0x29c0, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x419d, 0x0040,
3845 +       0x3fd7, 0x1078, 0x3820, 0x0040, 0x3fd7, 0x1078, 0x256a, 0x20a9,
3846 +       0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
3847 +       0x60c3, 0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005,
3848 +       0x0040, 0x402e, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014,
3849 +       0x00c0, 0x402c, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1105, 0x00c0,
3850 +       0x402c, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0, 0x400b, 0x7a38,
3851 +       0xd2fc, 0x0040, 0x4009, 0x70b0, 0xa005, 0x00c0, 0x4009, 0x70b3,
3852 +       0x0001, 0x0078, 0x401a, 0xa005, 0x00c0, 0x402c, 0x7a38, 0xd2fc,
3853 +       0x0040, 0x4018, 0x70b0, 0xa005, 0x00c0, 0x4018, 0x70b3, 0x0001,
3854 +       0x7087, 0x0000, 0x7a38, 0xd2f4, 0x0040, 0x4026, 0x2001, 0xa674,
3855 +       0x2004, 0xd0a4, 0x00c0, 0x4026, 0x70cf, 0x0008, 0x708b, 0x0016,
3856 +       0x1078, 0x4030, 0x0078, 0x402e, 0x1078, 0x4224, 0x0f7f, 0x007c,
3857 +       0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xab80, 0x20a1, 0x020b,
3858 +       0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0xab8e, 0x708b, 0x0017,
3859 +       0x1078, 0x42d4, 0x00c0, 0x4050, 0x7074, 0xa005, 0x00c0, 0x4050,
3860 +       0x1078, 0x4104, 0x00c0, 0x405a, 0xa085, 0x0001, 0x1078, 0x256a,
3861 +       0x20a9, 0x0008, 0x2099, 0xab8e, 0x26a0, 0x53a6, 0x20a3, 0x0000,
3862 +       0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e,
3863 +       0x7080, 0xa005, 0x0040, 0x407f, 0x2011, 0x41dc, 0x1078, 0x5a45,
3864 +       0xa086, 0x0084, 0x00c0, 0x407d, 0x2079, 0xab80, 0x7a30, 0xa296,
3865 +       0x1106, 0x00c0, 0x407d, 0x7834, 0xa005, 0x00c0, 0x407d, 0x708b,
3866 +       0x0018, 0x1078, 0x4081, 0x0078, 0x407f, 0x1078, 0x4224, 0x0f7f,
3867 +       0x007c, 0x708b, 0x0019, 0x1078, 0x4295, 0x20a3, 0x1106, 0x20a3,
3868 +       0x0000, 0x3430, 0x2099, 0xab8e, 0x2039, 0xab0e, 0x27a0, 0x20a9,
3869 +       0x0040, 0x53a3, 0x1078, 0x42d4, 0x00c0, 0x40b5, 0x2728, 0x2514,
3870 +       0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007,
3871 +       0xa205, 0x202a, 0x6030, 0x2310, 0x8214, 0xa2a0, 0xab0e, 0x2414,
3872 +       0xa38c, 0x0001, 0x0040, 0x40b0, 0xa294, 0xff00, 0x0078, 0x40b3,
3873 +       0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9,
3874 +       0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084,
3875 +       0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x40e7,
3876 +       0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084, 0x00c0, 0x40e5,
3877 +       0x2079, 0xab80, 0x7a30, 0xa296, 0x1107, 0x00c0, 0x40e5, 0x7834,
3878 +       0xa005, 0x00c0, 0x40e5, 0x7087, 0x0001, 0x1078, 0x427b, 0x708b,
3879 +       0x001a, 0x1078, 0x40e9, 0x0078, 0x40e7, 0x1078, 0x4224, 0x0f7f,
3880 +       0x007c, 0x708b, 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099,
3881 +       0xab80, 0x20a1, 0x020b, 0x7480, 0xa480, 0x0018, 0xa080, 0x0007,
3882 +       0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x1078,
3883 +       0x420b, 0x007c, 0x007c, 0x007c, 0x087e, 0x097e, 0x2029, 0xa653,
3884 +       0x252c, 0x20a9, 0x0008, 0x2041, 0xab0e, 0x28a0, 0x2099, 0xab8e,
3885 +       0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0040, 0x411a,
3886 +       0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x00c0,
3887 +       0x412c, 0xd5d4, 0x0040, 0x4127, 0x8210, 0x0078, 0x4128, 0x8211,
3888 +       0x00f0, 0x411a, 0x0078, 0x4194, 0x82ff, 0x00c0, 0x413e, 0xd5d4,
3889 +       0x0040, 0x4138, 0xa1a6, 0x3fff, 0x0040, 0x4124, 0x0078, 0x413c,
3890 +       0xa1a6, 0x3fff, 0x0040, 0x4194, 0xa18d, 0xc000, 0x20a9, 0x0010,
3891 +       0x2019, 0x0001, 0xd5d4, 0x0040, 0x4147, 0x2019, 0x0010, 0x2120,
3892 +       0xd5d4, 0x0040, 0x414e, 0x8423, 0x0078, 0x414f, 0x8424, 0x00c8,
3893 +       0x415c, 0xd5d4, 0x0040, 0x4157, 0x8319, 0x0078, 0x4158, 0x8318,
3894 +       0x00f0, 0x4148, 0x0078, 0x4194, 0x23a8, 0x2021, 0x0001, 0x8426,
3895 +       0x8425, 0x00f0, 0x4160, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0040,
3896 +       0x4174, 0x007e, 0x2039, 0x0007, 0x2200, 0xa73a, 0x007f, 0x27a8,
3897 +       0xa5a8, 0x0010, 0x00f0, 0x4170, 0x7552, 0xa5c8, 0x29c0, 0x292c,
3898 +       0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x706f, 0x0000,
3899 +       0x7572, 0x2018, 0x2304, 0xa405, 0x201a, 0x7077, 0x0001, 0x26a0,
3900 +       0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
3901 +       0xa085, 0x0001, 0x0078, 0x419a, 0xa006, 0x0078, 0x419a, 0xa006,
3902 +       0x1078, 0x1332, 0x097f, 0x087f, 0x007c, 0x2118, 0x2021, 0x0000,
3903 +       0x2001, 0x0007, 0xa39a, 0x0010, 0x0048, 0x41aa, 0x8420, 0x8001,
3904 +       0x0078, 0x41a2, 0x2118, 0x84ff, 0x0040, 0x41b3, 0xa39a, 0x0010,
3905 +       0x8421, 0x00c0, 0x41ae, 0x2021, 0x0001, 0x83ff, 0x0040, 0x41bc,
3906 +       0x8423, 0x8319, 0x00c0, 0x41b8, 0xa238, 0x2704, 0xa42c, 0x00c0,
3907 +       0x41d4, 0xa405, 0x203a, 0x7152, 0xa1a0, 0x29c0, 0x242c, 0xa5ac,
3908 +       0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x706f, 0x0000, 0x7572,
3909 +       0x7077, 0x0001, 0xa084, 0x0000, 0x007c, 0x0e7e, 0x2071, 0xa600,
3910 +       0x707b, 0x0000, 0x0e7f, 0x007c, 0x0e7e, 0x0f7e, 0x2001, 0x0002,
3911 +       0x1078, 0x5ae6, 0x2079, 0x0100, 0x2071, 0x0140, 0x1078, 0x6e0f,
3912 +       0x7004, 0xa084, 0x4000, 0x0040, 0x41f1, 0x7003, 0x1000, 0x7003,
3913 +       0x0000, 0x127e, 0x2091, 0x8000, 0x2071, 0xa622, 0x2073, 0x0000,
3914 +       0x7840, 0x027e, 0x017e, 0x2009, 0x00f7, 0x1078, 0x42a1, 0x017f,
3915 +       0xa094, 0x0010, 0xa285, 0x0080, 0x7842, 0x7a42, 0x027f, 0x127f,
3916 +       0x0f7f, 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x2011, 0xa8bb,
3917 +       0x2013, 0x0000, 0x7083, 0x0000, 0x127f, 0x20e1, 0x9080, 0x60a3,
3918 +       0x0056, 0x60a7, 0x9575, 0x1078, 0x6e06, 0x2009, 0x07d0, 0x2011,
3919 +       0x41dc, 0x1078, 0x5add, 0x007c, 0x017e, 0x027e, 0x0c7e, 0x127e,
3920 +       0x2091, 0x8000, 0x2011, 0x0003, 0x1078, 0x70e0, 0x2011, 0x0002,
3921 +       0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e, 0x2019, 0x0000, 0x1078,
3922 +       0x7058, 0x037f, 0x2009, 0x00f7, 0x1078, 0x42a1, 0x2061, 0xa8c4,
3923 +       0x601b, 0x0000, 0x601f, 0x0000, 0x2061, 0xa600, 0x6003, 0x0001,
3924 +       0x2061, 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d,
3925 +       0x2011, 0x4259, 0x1078, 0x5a38, 0x127f, 0x0c7f, 0x027f, 0x017f,
3926 +       0x007c, 0x0e7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2001, 0x0001,
3927 +       0x1078, 0x5ae6, 0x2071, 0x0100, 0x1078, 0x6e0f, 0x2071, 0x0140,
3928 +       0x7004, 0xa084, 0x4000, 0x0040, 0x4271, 0x7003, 0x1000, 0x7003,
3929 +       0x0000, 0x2001, 0x0001, 0x1078, 0x24e8, 0x1078, 0x4224, 0x127f,
3930 +       0x007f, 0x0e7f, 0x007c, 0x20a9, 0x0040, 0x20a1, 0xacc0, 0x2099,
3931 +       0xab8e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x00f0, 0x4281,
3932 +       0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xab00, 0x20a1,
3933 +       0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c, 0x20e1, 0x9080, 0x20e1,
3934 +       0x4000, 0x2099, 0xab80, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6,
3935 +       0x007c, 0x0c7e, 0x007e, 0x2061, 0x0100, 0x810f, 0x2001, 0xa62f,
3936 +       0x2004, 0xa005, 0x00c0, 0x42b2, 0x6030, 0xa084, 0x00ff, 0xa105,
3937 +       0x0078, 0x42b4, 0xa185, 0x00f7, 0x604a, 0x007f, 0x0c7f, 0x007c,
3938 +       0x017e, 0x047e, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x42cb,
3939 +       0xa006, 0x2020, 0x2009, 0x002a, 0x1078, 0xa21d, 0x2001, 0xa60c,
3940 +       0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0000, 0x1078,
3941 +       0x284f, 0x047f, 0x017f, 0x007c, 0x007e, 0x2001, 0xa60c, 0x2004,
3942 +       0xd09c, 0x0040, 0x42db, 0x007f, 0x007c, 0x007e, 0x017e, 0x127e,
3943 +       0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0xa18d, 0x0006, 0x2102,
3944 +       0x127f, 0x017f, 0x007f, 0x007c, 0x157e, 0x20a9, 0x00ff, 0x2009,
3945 +       0xa735, 0xa006, 0x200a, 0x8108, 0x00f0, 0x42f2, 0x157f, 0x007c,
3946 +       0x0d7e, 0x037e, 0x157e, 0x137e, 0x147e, 0x2069, 0xa652, 0xa006,
3947 +       0x6002, 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x29c0,
3948 +       0x231c, 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006,
3949 +       0x23a0, 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4,
3950 +       0x603e, 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062,
3951 +       0x6066, 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082,
3952 +       0x6086, 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x60ae,
3953 +       0x61a2, 0x0d7e, 0x60a4, 0xa06d, 0x0040, 0x4338, 0x1078, 0x13a4,
3954 +       0x60a7, 0x0000, 0x60a8, 0xa06d, 0x0040, 0x4340, 0x1078, 0x13a4,
3955 +       0x60ab, 0x0000, 0x0d7f, 0xa006, 0x604a, 0x6810, 0x603a, 0x680c,
3956 +       0x6046, 0x6814, 0xa084, 0x00ff, 0x6042, 0x147f, 0x137f, 0x157f,
3957 +       0x037f, 0x0d7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x6944, 0x6e48,
3958 +       0xa684, 0x3fff, 0xa082, 0x4000, 0x00c8, 0x4424, 0xa18c, 0xff00,
3959 +       0x810f, 0xa182, 0x00ff, 0x00c8, 0x442a, 0x2001, 0xa60c, 0x2004,
3960 +       0xa084, 0x0003, 0x0040, 0x4385, 0x2001, 0xa60c, 0x2004, 0xd084,
3961 +       0x00c0, 0x4405, 0xa188, 0xa735, 0x2104, 0xa065, 0x0040, 0x4405,
3962 +       0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x4405, 0x6000,
3963 +       0xd0c4, 0x0040, 0x4405, 0x0078, 0x4392, 0xa188, 0xa735, 0x2104,
3964 +       0xa065, 0x0040, 0x43e9, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006,
3965 +       0x00c0, 0x43ef, 0x60a4, 0xa00d, 0x0040, 0x439a, 0x1078, 0x4817,
3966 +       0x0040, 0x43e3, 0x60a8, 0xa00d, 0x0040, 0x43b4, 0x1078, 0x486a,
3967 +       0x00c0, 0x43b4, 0x694c, 0xd1fc, 0x00c0, 0x43aa, 0x1078, 0x44df,
3968 +       0x0078, 0x43de, 0x1078, 0x4484, 0x694c, 0xd1ec, 0x00c0, 0x43de,
3969 +       0x1078, 0x46d6, 0x0078, 0x43de, 0x694c, 0xa184, 0xa000, 0x0040,
3970 +       0x43ce, 0xd1ec, 0x0040, 0x43c7, 0xd1fc, 0x0040, 0x43c3, 0x1078,
3971 +       0x46e7, 0x0078, 0x43ca, 0x1078, 0x46e7, 0x0078, 0x43ce, 0xd1fc,
3972 +       0x0040, 0x43ce, 0x1078, 0x4484, 0x0078, 0x43de, 0x6050, 0xa00d,
3973 +       0x0040, 0x43d9, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x0078,
3974 +       0x43de, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x1078, 0x5da9,
3975 +       0xa006, 0x127f, 0x007c, 0x2001, 0x0005, 0x2009, 0x0000, 0x0078,
3976 +       0x442e, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x442e, 0xa082,
3977 +       0x0006, 0x00c8, 0x4405, 0x60a0, 0xd0bc, 0x00c0, 0x4401, 0x6100,
3978 +       0xd1fc, 0x0040, 0x4392, 0x2001, 0x0029, 0x2009, 0x1000, 0x0078,
3979 +       0x442e, 0x2001, 0x0028, 0x0078, 0x4420, 0x2009, 0xa60c, 0x210c,
3980 +       0xd18c, 0x0040, 0x440f, 0x2001, 0x0004, 0x0078, 0x4420, 0xd184,
3981 +       0x0040, 0x4416, 0x2001, 0x0004, 0x0078, 0x4420, 0x2001, 0x0029,
3982 +       0x6100, 0xd1fc, 0x0040, 0x4420, 0x2009, 0x1000, 0x0078, 0x442e,
3983 +       0x2009, 0x0000, 0x0078, 0x442e, 0x2001, 0x0029, 0x2009, 0x0000,
3984 +       0x0078, 0x442e, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x127f,
3985 +       0x007c, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x00c8,
3986 +       0x447e, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x00c8, 0x4464,
3987 +       0xa188, 0xa735, 0x2104, 0xa065, 0x0040, 0x4464, 0x6004, 0xa084,
3988 +       0x00ff, 0xa08e, 0x0006, 0x00c0, 0x446a, 0x684c, 0xd0ec, 0x0040,
3989 +       0x4457, 0x1078, 0x46e7, 0x1078, 0x4484, 0x0078, 0x445f, 0x1078,
3990 +       0x4484, 0x684c, 0xd0fc, 0x0040, 0x445f, 0x1078, 0x46d6, 0x1078,
3991 +       0x472f, 0xa006, 0x0078, 0x4482, 0x2001, 0x0028, 0x2009, 0x0000,
3992 +       0x0078, 0x4482, 0xa082, 0x0006, 0x00c8, 0x4478, 0x6100, 0xd1fc,
3993 +       0x0040, 0x444d, 0x2001, 0x0029, 0x2009, 0x1000, 0x0078, 0x4482,
3994 +       0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x4482, 0x2001, 0x0029,
3995 +       0x2009, 0x0000, 0xa005, 0x007c, 0x127e, 0x2091, 0x8000, 0x6050,
3996 +       0xa00d, 0x0040, 0x4492, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052,
3997 +       0x127f, 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078,
3998 +       0x4490, 0x127e, 0x2091, 0x8000, 0x604c, 0xa005, 0x0040, 0x44af,
3999 +       0x0e7e, 0x2071, 0xa8b1, 0x7004, 0xa086, 0x0002, 0x0040, 0x44b6,
4000 +       0x0e7f, 0x604c, 0x6802, 0x2d00, 0x604e, 0x127f, 0x007c, 0x2d00,
4001 +       0x6052, 0x604e, 0x6803, 0x0000, 0x0078, 0x44ad, 0x701c, 0xac06,
4002 +       0x00c0, 0x44a8, 0x604c, 0x2070, 0x7000, 0x6802, 0x2d00, 0x7002,
4003 +       0x0e7f, 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x604c, 0xa06d,
4004 +       0x0040, 0x44d1, 0x6800, 0xa005, 0x00c0, 0x44cf, 0x6052, 0x604e,
4005 +       0xad05, 0x127f, 0x007c, 0x604c, 0xa06d, 0x0040, 0x44de, 0x6800,
4006 +       0xa005, 0x00c0, 0x44dc, 0x6052, 0x604e, 0xad05, 0x007c, 0x6803,
4007 +       0x0000, 0x6084, 0xa00d, 0x0040, 0x44e9, 0x2d00, 0x200a, 0x6086,
4008 +       0x007c, 0x2d00, 0x6086, 0x6082, 0x0078, 0x44e8, 0x127e, 0x0c7e,
4009 +       0x027e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005, 0x0040,
4010 +       0x44fc, 0xc285, 0x0078, 0x44fd, 0xc284, 0x6202, 0x027f, 0x0c7f,
4011 +       0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260,
4012 +       0x6204, 0x007e, 0xa086, 0x0006, 0x00c0, 0x4521, 0x609c, 0xd0ac,
4013 +       0x0040, 0x4521, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x4521,
4014 +       0xa284, 0xff00, 0x8007, 0xa086, 0x0007, 0x00c0, 0x4521, 0x2011,
4015 +       0x0600, 0x007f, 0xa294, 0xff00, 0xa215, 0x6206, 0x007e, 0xa086,
4016 +       0x0006, 0x00c0, 0x4531, 0x6290, 0x82ff, 0x00c0, 0x4531, 0x1078,
4017 +       0x1332, 0x007f, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091,
4018 +       0x8000, 0x6218, 0x2260, 0x6204, 0x007e, 0xa086, 0x0006, 0x00c0,
4019 +       0x4553, 0x609c, 0xd0a4, 0x0040, 0x4553, 0x2001, 0xa653, 0x2004,
4020 +       0xd0ac, 0x00c0, 0x4553, 0xa284, 0x00ff, 0xa086, 0x0007, 0x00c0,
4021 +       0x4553, 0x2011, 0x0006, 0x007f, 0xa294, 0x00ff, 0x8007, 0xa215,
4022 +       0x6206, 0x0c7f, 0x127f, 0x007c, 0x027e, 0xa182, 0x00ff, 0x0048,
4023 +       0x4565, 0xa085, 0x0001, 0x0078, 0x457d, 0xa190, 0xa735, 0x2204,
4024 +       0xa065, 0x00c0, 0x457c, 0x017e, 0x0d7e, 0x1078, 0x1370, 0x2d60,
4025 +       0x0d7f, 0x017f, 0x0040, 0x4561, 0x2c00, 0x2012, 0x60a7, 0x0000,
4026 +       0x60ab, 0x0000, 0x1078, 0x42f8, 0xa006, 0x027f, 0x007c, 0x127e,
4027 +       0x2091, 0x8000, 0x027e, 0xa182, 0x00ff, 0x0048, 0x458b, 0xa085,
4028 +       0x0001, 0x0078, 0x45c1, 0x0d7e, 0xa190, 0xa735, 0x2204, 0xa06d,
4029 +       0x0040, 0x45bf, 0x2013, 0x0000, 0x0d7e, 0x0c7e, 0x2d60, 0x60a4,
4030 +       0xa06d, 0x0040, 0x459d, 0x1078, 0x13a4, 0x60a8, 0xa06d, 0x0040,
4031 +       0x45a3, 0x1078, 0x13a4, 0x0c7f, 0x0d7f, 0x0d7e, 0x0c7e, 0x68ac,
4032 +       0x2060, 0x8cff, 0x0040, 0x45bb, 0x600c, 0x007e, 0x6010, 0x2068,
4033 +       0x1078, 0x8d06, 0x0040, 0x45b6, 0x1078, 0x13b4, 0x1078, 0x772d,
4034 +       0x0c7f, 0x0078, 0x45a9, 0x0c7f, 0x0d7f, 0x1078, 0x13a4, 0x0d7f,
4035 +       0xa006, 0x027f, 0x127f, 0x007c, 0x017e, 0xa182, 0x00ff, 0x0048,
4036 +       0x45cd, 0xa085, 0x0001, 0x0078, 0x45d4, 0xa188, 0xa735, 0x2104,
4037 +       0xa065, 0x0040, 0x45c9, 0xa006, 0x017f, 0x007c, 0x0d7e, 0x157e,
4038 +       0x137e, 0x147e, 0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c,
4039 +       0x6002, 0x2069, 0xab8e, 0x6808, 0x605e, 0x6810, 0x6062, 0x6138,
4040 +       0xa10a, 0x0048, 0x45ec, 0x603a, 0x6814, 0x6066, 0x2099, 0xab96,
4041 +       0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0xab9a,
4042 +       0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0xabae,
4043 +       0x6808, 0x606a, 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076,
4044 +       0x60a0, 0xa086, 0x007e, 0x00c0, 0x4611, 0x2069, 0xab8e, 0x690c,
4045 +       0x616e, 0xa182, 0x0211, 0x00c8, 0x4619, 0x2009, 0x0008, 0x0078,
4046 +       0x4643, 0xa182, 0x0259, 0x00c8, 0x4621, 0x2009, 0x0007, 0x0078,
4047 +       0x4643, 0xa182, 0x02c1, 0x00c8, 0x4629, 0x2009, 0x0006, 0x0078,
4048 +       0x4643, 0xa182, 0x0349, 0x00c8, 0x4631, 0x2009, 0x0005, 0x0078,
4049 +       0x4643, 0xa182, 0x0421, 0x00c8, 0x4639, 0x2009, 0x0004, 0x0078,
4050 +       0x4643, 0xa182, 0x0581, 0x00c8, 0x4641, 0x2009, 0x0003, 0x0078,
4051 +       0x4643, 0x2009, 0x0002, 0x6192, 0x147f, 0x137f, 0x157f, 0x0d7f,
4052 +       0x007c, 0x017e, 0x027e, 0x0e7e, 0x2071, 0xab8d, 0x2e04, 0x6896,
4053 +       0x2071, 0xab8e, 0x7004, 0x689a, 0x701c, 0x689e, 0x6a00, 0x2009,
4054 +       0xa672, 0x210c, 0xd0bc, 0x0040, 0x4663, 0xd1ec, 0x0040, 0x4663,
4055 +       0xc2ad, 0x0078, 0x4664, 0xc2ac, 0xd0c4, 0x0040, 0x466d, 0xd1e4,
4056 +       0x0040, 0x466d, 0xc2bd, 0x0078, 0x466e, 0xc2bc, 0x6a02, 0x0e7f,
4057 +       0x027f, 0x017f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4,
4058 +       0xa06d, 0x0040, 0x4697, 0x6900, 0x81ff, 0x00c0, 0x46ab, 0x6a04,
4059 +       0xa282, 0x0010, 0x00c8, 0x46b0, 0xad88, 0x0004, 0x20a9, 0x0010,
4060 +       0x2104, 0xa086, 0xffff, 0x0040, 0x4692, 0x8108, 0x00f0, 0x4688,
4061 +       0x1078, 0x1332, 0x260a, 0x8210, 0x6a06, 0x0078, 0x46ab, 0x1078,
4062 +       0x138b, 0x0040, 0x46b0, 0x2d00, 0x60a6, 0x6803, 0x0000, 0xad88,
4063 +       0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x00f0, 0x46a3,
4064 +       0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c,
4065 +       0xa006, 0x0078, 0x46ad, 0x127e, 0x2091, 0x8000, 0x0d7e, 0x60a4,
4066 +       0xa00d, 0x0040, 0x46d3, 0x2168, 0x6800, 0xa005, 0x00c0, 0x46cf,
4067 +       0x1078, 0x4817, 0x00c0, 0x46d3, 0x200b, 0xffff, 0x6804, 0xa08a,
4068 +       0x0002, 0x0048, 0x46cf, 0x8001, 0x6806, 0x0078, 0x46d3, 0x1078,
4069 +       0x13a4, 0x60a7, 0x0000, 0x0d7f, 0x127f, 0x007c, 0x127e, 0x2091,
4070 +       0x8000, 0x1078, 0x487f, 0x0078, 0x46df, 0x1078, 0x4484, 0x1078,
4071 +       0x4775, 0x00c0, 0x46dd, 0x1078, 0x472f, 0x127f, 0x007c, 0x0d7e,
4072 +       0x127e, 0x2091, 0x8000, 0x60a8, 0xa06d, 0x0040, 0x470b, 0x6950,
4073 +       0x81ff, 0x00c0, 0x471f, 0x6a54, 0xa282, 0x0010, 0x00c8, 0x472c,
4074 +       0xad88, 0x0018, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0040,
4075 +       0x4706, 0x8108, 0x00f0, 0x46fc, 0x1078, 0x1332, 0x260a, 0x8210,
4076 +       0x6a56, 0x0078, 0x471f, 0x1078, 0x138b, 0x0040, 0x472c, 0x2d00,
4077 +       0x60aa, 0x6853, 0x0000, 0xad88, 0x0018, 0x20a9, 0x0010, 0x200b,
4078 +       0xffff, 0x8108, 0x00f0, 0x4717, 0x6857, 0x0001, 0x6e62, 0x0078,
4079 +       0x4723, 0x1078, 0x44df, 0x1078, 0x4739, 0x00c0, 0x4721, 0xa085,
4080 +       0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x4729, 0x127e,
4081 +       0x2091, 0x8000, 0x1078, 0x5da9, 0x127f, 0x007c, 0xa01e, 0x0078,
4082 +       0x473b, 0x2019, 0x0001, 0xa00e, 0x127e, 0x2091, 0x8000, 0x604c,
4083 +       0x2068, 0x6000, 0xd0dc, 0x00c0, 0x4759, 0x8dff, 0x0040, 0x4770,
4084 +       0x83ff, 0x0040, 0x4751, 0x6848, 0xa606, 0x0040, 0x475e, 0x0078,
4085 +       0x4759, 0x683c, 0xa406, 0x00c0, 0x4759, 0x6840, 0xa506, 0x0040,
4086 +       0x475e, 0x2d08, 0x6800, 0x2068, 0x0078, 0x4745, 0x1078, 0x7233,
4087 +       0x6a00, 0x604c, 0xad06, 0x00c0, 0x4768, 0x624e, 0x0078, 0x476b,
4088 +       0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x4770, 0x6152, 0x8dff,
4089 +       0x127f, 0x007c, 0xa01e, 0x0078, 0x4777, 0x2019, 0x0001, 0xa00e,
4090 +       0x6080, 0x2068, 0x8dff, 0x0040, 0x47a3, 0x83ff, 0x0040, 0x4786,
4091 +       0x6848, 0xa606, 0x0040, 0x4793, 0x0078, 0x478e, 0x683c, 0xa406,
4092 +       0x00c0, 0x478e, 0x6840, 0xa506, 0x0040, 0x4793, 0x2d08, 0x6800,
4093 +       0x2068, 0x0078, 0x477a, 0x6a00, 0x6080, 0xad06, 0x00c0, 0x479b,
4094 +       0x6282, 0x0078, 0x479e, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0,
4095 +       0x47a3, 0x6186, 0x8dff, 0x007c, 0xa016, 0x1078, 0x4810, 0x00c0,
4096 +       0x47ab, 0x2011, 0x0001, 0x1078, 0x4863, 0x00c0, 0x47b1, 0xa295,
4097 +       0x0002, 0x007c, 0x1078, 0x489b, 0x0040, 0x47ba, 0x1078, 0x8dca,
4098 +       0x0078, 0x47bc, 0xa085, 0x0001, 0x007c, 0x1078, 0x489b, 0x0040,
4099 +       0x47c5, 0x1078, 0x8d62, 0x0078, 0x47c7, 0xa085, 0x0001, 0x007c,
4100 +       0x1078, 0x489b, 0x0040, 0x47d0, 0x1078, 0x8dac, 0x0078, 0x47d2,
4101 +       0xa085, 0x0001, 0x007c, 0x1078, 0x489b, 0x0040, 0x47db, 0x1078,
4102 +       0x8d7e, 0x0078, 0x47dd, 0xa085, 0x0001, 0x007c, 0x1078, 0x489b,
4103 +       0x0040, 0x47e6, 0x1078, 0x8de8, 0x0078, 0x47e8, 0xa085, 0x0001,
4104 +       0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091, 0x8000, 0x6080, 0xa06d,
4105 +       0x0040, 0x4808, 0x6800, 0x007e, 0x6837, 0x0103, 0x6b4a, 0x6847,
4106 +       0x0000, 0x1078, 0x8f7d, 0x007e, 0x6000, 0xd0fc, 0x0040, 0x4802,
4107 +       0x1078, 0xa4ed, 0x007f, 0x1078, 0x4a73, 0x007f, 0x0078, 0x47ef,
4108 +       0x6083, 0x0000, 0x6087, 0x0000, 0x0d7f, 0x007f, 0x127f, 0x007c,
4109 +       0x60a4, 0xa00d, 0x00c0, 0x4817, 0xa085, 0x0001, 0x007c, 0x0e7e,
4110 +       0x2170, 0x7000, 0xa005, 0x00c0, 0x482c, 0x20a9, 0x0010, 0xae88,
4111 +       0x0004, 0x2104, 0xa606, 0x0040, 0x482c, 0x8108, 0x00f0, 0x4821,
4112 +       0xa085, 0x0001, 0x0078, 0x482d, 0xa006, 0x0e7f, 0x007c, 0x0d7e,
4113 +       0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x00c0, 0x483d, 0x1078,
4114 +       0x138b, 0x0040, 0x484f, 0x2d00, 0x60a6, 0x6803, 0x0001, 0x6807,
4115 +       0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108,
4116 +       0x00f0, 0x4845, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006,
4117 +       0x0078, 0x484c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d,
4118 +       0x0040, 0x4860, 0x60a7, 0x0000, 0x1078, 0x13a4, 0xa085, 0x0001,
4119 +       0x127f, 0x0d7f, 0x007c, 0x60a8, 0xa00d, 0x00c0, 0x486a, 0xa085,
4120 +       0x0001, 0x007c, 0x0e7e, 0x2170, 0x7050, 0xa005, 0x00c0, 0x487d,
4121 +       0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, 0x0040, 0x487d,
4122 +       0x8108, 0x00f0, 0x4874, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x127e,
4123 +       0x2091, 0x8000, 0x1078, 0x4863, 0x00c0, 0x4899, 0x200b, 0xffff,
4124 +       0x0d7e, 0x60a8, 0x2068, 0x6854, 0xa08a, 0x0002, 0x0048, 0x4894,
4125 +       0x8001, 0x6856, 0x0078, 0x4898, 0x1078, 0x13a4, 0x60ab, 0x0000,
4126 +       0x0d7f, 0x127f, 0x007c, 0x609c, 0xd0a4, 0x007c, 0x0f7e, 0x71b0,
4127 +       0x81ff, 0x00c0, 0x48b9, 0x71cc, 0xd19c, 0x0040, 0x48b9, 0x2001,
4128 +       0x007e, 0xa080, 0xa735, 0x2004, 0xa07d, 0x0040, 0x48b9, 0x7804,
4129 +       0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x48b9, 0x7800, 0xc0ed,
4130 +       0x7802, 0x2079, 0xa652, 0x7804, 0xd0a4, 0x0040, 0x48df, 0x157e,
4131 +       0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x45c4,
4132 +       0x00c0, 0x48d9, 0x6004, 0xa084, 0xff00, 0x8007, 0xa096, 0x0004,
4133 +       0x0040, 0x48d6, 0xa086, 0x0006, 0x00c0, 0x48d9, 0x6000, 0xc0ed,
4134 +       0x6002, 0x017f, 0x8108, 0x00f0, 0x48c5, 0x0c7f, 0x157f, 0x1078,
4135 +       0x4967, 0x0040, 0x48e8, 0x2001, 0xa8a1, 0x200c, 0x0078, 0x48f0,
4136 +       0x2079, 0xa652, 0x7804, 0xd0a4, 0x0040, 0x48f4, 0x2009, 0x07d0,
4137 +       0x2011, 0x48f6, 0x1078, 0x5add, 0x0f7f, 0x007c, 0x2011, 0x48f6,
4138 +       0x1078, 0x5a45, 0x1078, 0x4967, 0x0040, 0x491e, 0x2001, 0xa7b3,
4139 +       0x2004, 0xa080, 0x0000, 0x200c, 0xc1ec, 0x2102, 0x2001, 0xa653,
4140 +       0x2004, 0xd0a4, 0x0040, 0x4912, 0x2009, 0x07d0, 0x2011, 0x48f6,
4141 +       0x1078, 0x5add, 0x0e7e, 0x2071, 0xa600, 0x706f, 0x0000, 0x7073,
4142 +       0x0000, 0x1078, 0x2677, 0x0e7f, 0x0078, 0x4956, 0x157e, 0x0c7e,
4143 +       0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x45c4, 0x00c0,
4144 +       0x4950, 0x6000, 0xd0ec, 0x0040, 0x4950, 0x047e, 0x62a0, 0xa294,
4145 +       0x00ff, 0x8227, 0xa006, 0x2009, 0x0029, 0x1078, 0xa21d, 0x6000,
4146 +       0xc0e5, 0xc0ec, 0x6002, 0x6004, 0xa084, 0x00ff, 0xa085, 0x0700,
4147 +       0x6006, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000,
4148 +       0x1078, 0x5e0a, 0x2009, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x047f,
4149 +       0x017f, 0x8108, 0x00f0, 0x4924, 0x0c7f, 0x157f, 0x007c, 0x0c7e,
4150 +       0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, 0x0c7f, 0x007c, 0x7818,
4151 +       0x2004, 0xd0ac, 0x007c, 0x7818, 0x2004, 0xd0bc, 0x007c, 0x0f7e,
4152 +       0x2001, 0xa7b3, 0x2004, 0xa07d, 0x0040, 0x4970, 0x7800, 0xd0ec,
4153 +       0x0f7f, 0x007c, 0x127e, 0x027e, 0x2091, 0x8000, 0x007e, 0x62a0,
4154 +       0xa290, 0xa735, 0x2204, 0xac06, 0x10c0, 0x1332, 0x007f, 0x6200,
4155 +       0xa005, 0x0040, 0x4986, 0xc2fd, 0x0078, 0x4987, 0xc2fc, 0x6202,
4156 +       0x027f, 0x127f, 0x007c, 0x2011, 0xa633, 0x2204, 0xd0cc, 0x0040,
4157 +       0x4998, 0x2001, 0xa89f, 0x200c, 0x2011, 0x4999, 0x1078, 0x5add,
4158 +       0x007c, 0x2011, 0x4999, 0x1078, 0x5a45, 0x2011, 0xa633, 0x2204,
4159 +       0xc0cc, 0x2012, 0x007c, 0x2071, 0xa714, 0x7003, 0x0001, 0x7007,
4160 +       0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f,
4161 +       0x0000, 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b,
4162 +       0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xa87d, 0x7003,
4163 +       0xa714, 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xa85d, 0x7013,
4164 +       0x0020, 0x7017, 0x0040, 0x7037, 0x0000, 0x007c, 0x017e, 0x0e7e,
4165 +       0x2071, 0xa835, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001,
4166 +       0xa653, 0x2004, 0xd0fc, 0x00c0, 0x49e8, 0x2001, 0xa653, 0x2004,
4167 +       0xa00e, 0xd09c, 0x0040, 0x49e5, 0x8108, 0x7102, 0x0078, 0x4a3b,
4168 +       0x2001, 0xa672, 0x200c, 0xa184, 0x000f, 0x2009, 0xa673, 0x210c,
4169 +       0x0079, 0x49f2, 0x49dd, 0x4a13, 0x4a1b, 0x4a26, 0x4a2c, 0x49dd,
4170 +       0x49dd, 0x49dd, 0x4a02, 0x49dd, 0x49dd, 0x49dd, 0x49dd, 0x49dd,
4171 +       0x49dd, 0x49dd, 0x7003, 0x0004, 0x137e, 0x147e, 0x157e, 0x2099,
4172 +       0xa676, 0x20a1, 0xa886, 0x20a9, 0x0004, 0x53a3, 0x157f, 0x147f,
4173 +       0x137f, 0x0078, 0x4a3b, 0x708f, 0x0005, 0x7007, 0x0122, 0x2001,
4174 +       0x0002, 0x0078, 0x4a21, 0x708f, 0x0002, 0x7007, 0x0121, 0x2001,
4175 +       0x0003, 0x7002, 0x7097, 0x0001, 0x0078, 0x4a38, 0x7007, 0x0122,
4176 +       0x2001, 0x0002, 0x0078, 0x4a30, 0x7007, 0x0121, 0x2001, 0x0003,
4177 +       0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007, 0x709a,
4178 +       0xa184, 0x00ff, 0x7092, 0x0e7f, 0x017f, 0x007c, 0x0e7e, 0x2071,
4179 +       0xa714, 0x684c, 0xa005, 0x00c0, 0x4a4c, 0x7028, 0xc085, 0x702a,
4180 +       0xa085, 0x0001, 0x0078, 0x4a71, 0x6a60, 0x7236, 0x6b64, 0x733a,
4181 +       0x6868, 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e,
4182 +       0x6844, 0x7032, 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007,
4183 +       0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100,
4184 +       0xa319, 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001,
4185 +       0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x027e, 0x6838, 0xd0fc, 0x00c0,
4186 +       0x4ac9, 0x6804, 0xa00d, 0x0040, 0x4a8f, 0x0d7e, 0x2071, 0xa600,
4187 +       0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff,
4188 +       0x00c0, 0x4a82, 0x702e, 0x70ac, 0xa200, 0x70ae, 0x0d7f, 0x2071,
4189 +       0xa714, 0x701c, 0xa005, 0x00c0, 0x4adb, 0x0068, 0x4ad9, 0x2071,
4190 +       0xa835, 0x7200, 0x82ff, 0x0040, 0x4ad9, 0x6934, 0xa186, 0x0103,
4191 +       0x00c0, 0x4aec, 0x6948, 0x6844, 0xa105, 0x00c0, 0x4acc, 0x2009,
4192 +       0x8020, 0x2200, 0x0079, 0x4aac, 0x4ad9, 0x4ab1, 0x4b09, 0x4b17,
4193 +       0x4ad9, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4ad9, 0x7122,
4194 +       0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080,
4195 +       0x2071, 0xa600, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70ac, 0x8000,
4196 +       0x70ae, 0x027f, 0x0e7f, 0x007c, 0x6844, 0xa086, 0x0100, 0x00c0,
4197 +       0x4ad9, 0x6868, 0xa005, 0x00c0, 0x4ad9, 0x2009, 0x8020, 0x0078,
4198 +       0x4aa9, 0x2071, 0xa714, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000,
4199 +       0x7012, 0x7018, 0xa06d, 0x711a, 0x0040, 0x4ae9, 0x6902, 0x0078,
4200 +       0x4aea, 0x711e, 0x0078, 0x4ac9, 0xa18c, 0x00ff, 0xa186, 0x0017,
4201 +       0x0040, 0x4afa, 0xa186, 0x001e, 0x0040, 0x4afa, 0xa18e, 0x001f,
4202 +       0x00c0, 0x4ad9, 0x684c, 0xd0cc, 0x0040, 0x4ad9, 0x6850, 0xa084,
4203 +       0x00ff, 0xa086, 0x0001, 0x00c0, 0x4ad9, 0x2009, 0x8021, 0x0078,
4204 +       0x4aa9, 0x7084, 0x8008, 0xa092, 0x001e, 0x00c8, 0x4ad9, 0x7186,
4205 +       0xae90, 0x0003, 0xa210, 0x683c, 0x2012, 0x0078, 0x4b27, 0x7084,
4206 +       0x8008, 0xa092, 0x000f, 0x00c8, 0x4ad9, 0x7186, 0xae90, 0x0003,
4207 +       0x8003, 0xa210, 0x683c, 0x2012, 0x8210, 0x6840, 0x2012, 0x7088,
4208 +       0xa10a, 0x0048, 0x4ac0, 0x718c, 0x7084, 0xa10a, 0x0048, 0x4ac0,
4209 +       0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4ac0, 0x2071, 0xa835,
4210 +       0x7000, 0xa086, 0x0002, 0x00c0, 0x4b47, 0x1078, 0x4dc3, 0x2071,
4211 +       0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4ac0, 0x1078,
4212 +       0x4dee, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078,
4213 +       0x4ac0, 0x007e, 0x684c, 0x007e, 0x6837, 0x0103, 0x20a9, 0x001c,
4214 +       0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x007f, 0xa084,
4215 +       0x00ff, 0x684e, 0x007f, 0x684a, 0x6952, 0x007c, 0x2071, 0xa714,
4216 +       0x7004, 0x0079, 0x4b6b, 0x4b75, 0x4b86, 0x4d94, 0x4d95, 0x4dbc,
4217 +       0x4dc2, 0x4b76, 0x4d82, 0x4d23, 0x4da5, 0x007c, 0x127e, 0x2091,
4218 +       0x8000, 0x0068, 0x4b85, 0x2009, 0x000d, 0x7030, 0x200a, 0x2091,
4219 +       0x4080, 0x7007, 0x0001, 0x700b, 0x0000, 0x127f, 0x2069, 0xa8c4,
4220 +       0x6844, 0xa005, 0x0050, 0x4bae, 0x00c0, 0x4bae, 0x127e, 0x2091,
4221 +       0x8000, 0x2069, 0x0000, 0x6934, 0x2001, 0xa720, 0x2004, 0xa10a,
4222 +       0x0040, 0x4ba9, 0x0068, 0x4bad, 0x2069, 0x0000, 0x6818, 0xd084,
4223 +       0x00c0, 0x4bad, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091,
4224 +       0x4080, 0x2069, 0xa8c4, 0x6847, 0xffff, 0x127f, 0x2069, 0xa600,
4225 +       0x6848, 0x6964, 0xa102, 0x2069, 0xa835, 0x688a, 0x6984, 0x701c,
4226 +       0xa06d, 0x0040, 0x4bc0, 0x81ff, 0x0040, 0x4c08, 0x0078, 0x4bd6,
4227 +       0x81ff, 0x0040, 0x4cda, 0x2071, 0xa835, 0x7184, 0x7088, 0xa10a,
4228 +       0x00c8, 0x4bd6, 0x7190, 0x2071, 0xa8c4, 0x7040, 0xa005, 0x0040,
4229 +       0x4bd6, 0x00d0, 0x4cda, 0x7142, 0x0078, 0x4cda, 0x2071, 0xa835,
4230 +       0x718c, 0x127e, 0x2091, 0x8000, 0x7084, 0xa10a, 0x0048, 0x4cf7,
4231 +       0x0068, 0x4c8c, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4c8c,
4232 +       0x2001, 0xffff, 0x2071, 0xa8c4, 0x7042, 0x2071, 0xa835, 0x7000,
4233 +       0xa086, 0x0002, 0x00c0, 0x4bfe, 0x1078, 0x4dc3, 0x2071, 0x0000,
4234 +       0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4c8c, 0x1078, 0x4dee,
4235 +       0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4c8c,
4236 +       0x2071, 0xa835, 0x7000, 0xa005, 0x0040, 0x4cb9, 0x6934, 0xa186,
4237 +       0x0103, 0x00c0, 0x4c8f, 0x684c, 0xd0bc, 0x00c0, 0x4cb9, 0x6948,
4238 +       0x6844, 0xa105, 0x00c0, 0x4cac, 0x2009, 0x8020, 0x2071, 0xa835,
4239 +       0x7000, 0x0079, 0x4c23, 0x4cb9, 0x4c71, 0x4c49, 0x4c5b, 0x4c28,
4240 +       0x137e, 0x147e, 0x157e, 0x2099, 0xa676, 0x20a1, 0xa886, 0x20a9,
4241 +       0x0004, 0x53a3, 0x157f, 0x147f, 0x137f, 0x2071, 0xa87d, 0xad80,
4242 +       0x000f, 0x700e, 0x7013, 0x0002, 0x7007, 0x0002, 0x700b, 0x0000,
4243 +       0x2e10, 0x1078, 0x13db, 0x2071, 0xa714, 0x7007, 0x0009, 0x0078,
4244 +       0x4cda, 0x7084, 0x8008, 0xa092, 0x001e, 0x00c8, 0x4cda, 0xae90,
4245 +       0x0003, 0xa210, 0x683c, 0x2012, 0x7186, 0x2071, 0xa714, 0x1078,
4246 +       0x4e4c, 0x0078, 0x4cda, 0x7084, 0x8008, 0xa092, 0x000f, 0x00c8,
4247 +       0x4cda, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, 0x8210,
4248 +       0x6840, 0x2012, 0x7186, 0x2071, 0xa714, 0x1078, 0x4e4c, 0x0078,
4249 +       0x4cda, 0x127e, 0x2091, 0x8000, 0x0068, 0x4c8c, 0x2071, 0x0000,
4250 +       0x7018, 0xd084, 0x00c0, 0x4c8c, 0x7122, 0x683c, 0x7026, 0x6840,
4251 +       0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x127f, 0x2071, 0xa714,
4252 +       0x1078, 0x4e4c, 0x0078, 0x4cda, 0x127f, 0x0078, 0x4cda, 0xa18c,
4253 +       0x00ff, 0xa186, 0x0017, 0x0040, 0x4c9d, 0xa186, 0x001e, 0x0040,
4254 +       0x4c9d, 0xa18e, 0x001f, 0x00c0, 0x4cb9, 0x684c, 0xd0cc, 0x0040,
4255 +       0x4cb9, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0, 0x4cb9,
4256 +       0x2009, 0x8021, 0x0078, 0x4c1e, 0x6844, 0xa086, 0x0100, 0x00c0,
4257 +       0x4cb9, 0x6868, 0xa005, 0x00c0, 0x4cb9, 0x2009, 0x8020, 0x0078,
4258 +       0x4c1e, 0x2071, 0xa714, 0x1078, 0x4e60, 0x0040, 0x4cda, 0x2071,
4259 +       0xa714, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003,
4260 +       0x00c0, 0x4cd1, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0040, 0x4cd1,
4261 +       0x710e, 0x7007, 0x0003, 0x1078, 0x4e80, 0x7050, 0xa086, 0x0100,
4262 +       0x0040, 0x4d95, 0x127e, 0x2091, 0x8000, 0x2071, 0xa714, 0x7008,
4263 +       0xa086, 0x0001, 0x00c0, 0x4cf5, 0x0068, 0x4cf5, 0x2009, 0x000d,
4264 +       0x7030, 0x200a, 0x2091, 0x4080, 0x700b, 0x0000, 0x7004, 0xa086,
4265 +       0x0006, 0x00c0, 0x4cf5, 0x7007, 0x0001, 0x127f, 0x007c, 0x2071,
4266 +       0xa714, 0x1078, 0x4e60, 0x0040, 0x4d20, 0x2071, 0xa835, 0x7084,
4267 +       0x700a, 0x20a9, 0x0020, 0x2099, 0xa836, 0x20a1, 0xa85d, 0x53a3,
4268 +       0x7087, 0x0000, 0x2071, 0xa714, 0x2069, 0xa87d, 0x706c, 0x6826,
4269 +       0x7070, 0x682a, 0x7074, 0x682e, 0x7078, 0x6832, 0x2d10, 0x1078,
4270 +       0x13db, 0x7007, 0x0008, 0x2001, 0xffff, 0x2071, 0xa8c4, 0x7042,
4271 +       0x127f, 0x0078, 0x4cda, 0x2069, 0xa87d, 0x6808, 0xa08e, 0x0000,
4272 +       0x0040, 0x4d81, 0xa08e, 0x0200, 0x0040, 0x4d7f, 0xa08e, 0x0100,
4273 +       0x00c0, 0x4d81, 0x127e, 0x2091, 0x8000, 0x0068, 0x4d7c, 0x2069,
4274 +       0x0000, 0x6818, 0xd084, 0x00c0, 0x4d7c, 0x702c, 0x7130, 0x8108,
4275 +       0xa102, 0x0048, 0x4d4a, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072,
4276 +       0x0078, 0x4d54, 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8, 0x4d54,
4277 +       0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, 0x0000,
4278 +       0x2001, 0xa85a, 0x2004, 0xa005, 0x00c0, 0x4d73, 0x6934, 0x2069,
4279 +       0xa835, 0x689c, 0x699e, 0x2069, 0xa8c4, 0xa102, 0x00c0, 0x4d6c,
4280 +       0x6844, 0xa005, 0x00d0, 0x4d7a, 0x2001, 0xa85b, 0x200c, 0x810d,
4281 +       0x6946, 0x0078, 0x4d7a, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001,
4282 +       0x2091, 0x4080, 0x7007, 0x0001, 0x127f, 0x0078, 0x4d81, 0x7007,
4283 +       0x0005, 0x007c, 0x701c, 0xa06d, 0x0040, 0x4d93, 0x1078, 0x4e60,
4284 +       0x0040, 0x4d93, 0x7007, 0x0003, 0x1078, 0x4e80, 0x7050, 0xa086,
4285 +       0x0100, 0x0040, 0x4d95, 0x007c, 0x007c, 0x7050, 0xa09e, 0x0100,
4286 +       0x00c0, 0x4d9e, 0x7007, 0x0004, 0x0078, 0x4dbc, 0xa086, 0x0200,
4287 +       0x00c0, 0x4da4, 0x7007, 0x0005, 0x007c, 0x2001, 0xa87f, 0x2004,
4288 +       0xa08e, 0x0100, 0x00c0, 0x4db1, 0x7007, 0x0001, 0x1078, 0x4e4c,
4289 +       0x007c, 0xa08e, 0x0000, 0x0040, 0x4db0, 0xa08e, 0x0200, 0x00c0,
4290 +       0x4db0, 0x7007, 0x0005, 0x007c, 0x1078, 0x4e16, 0x7006, 0x1078,
4291 +       0x4e4c, 0x007c, 0x007c, 0x0e7e, 0x157e, 0x2071, 0xa835, 0x7184,
4292 +       0x81ff, 0x0040, 0x4deb, 0xa006, 0x7086, 0xae80, 0x0003, 0x2071,
4293 +       0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x0070, 0x4de8, 0x2014,
4294 +       0x722a, 0x8000, 0x0070, 0x4de8, 0x2014, 0x722e, 0x8000, 0x0070,
4295 +       0x4de8, 0x2014, 0x723a, 0x8000, 0x0070, 0x4de8, 0x2014, 0x723e,
4296 +       0xa180, 0x8030, 0x7022, 0x157f, 0x0e7f, 0x007c, 0x0e7e, 0x157e,
4297 +       0x2071, 0xa835, 0x7184, 0x81ff, 0x0040, 0x4e13, 0xa006, 0x7086,
4298 +       0xae80, 0x0003, 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000,
4299 +       0x2014, 0x722a, 0x8000, 0x0070, 0x4e0c, 0x2014, 0x723a, 0x8000,
4300 +       0x2014, 0x723e, 0x0078, 0x4e10, 0x2001, 0x8020, 0x0078, 0x4e12,
4301 +       0x2001, 0x8042, 0x7022, 0x157f, 0x0e7f, 0x007c, 0x702c, 0x7130,
4302 +       0x8108, 0xa102, 0x0048, 0x4e23, 0xa00e, 0x7034, 0x706e, 0x7038,
4303 +       0x7072, 0x0078, 0x4e2d, 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8,
4304 +       0x4e2d, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c, 0x8001,
4305 +       0x700e, 0x00c0, 0x4e43, 0x127e, 0x2091, 0x8000, 0x0068, 0x4e46,
4306 +       0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001, 0x700b,
4307 +       0x0000, 0x127f, 0x007c, 0x2001, 0x0007, 0x007c, 0x2001, 0x0006,
4308 +       0x700b, 0x0001, 0x127f, 0x007c, 0x701c, 0xa06d, 0x0040, 0x4e5f,
4309 +       0x127e, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e,
4310 +       0xa005, 0x00c0, 0x4e5c, 0x701a, 0x127f, 0x1078, 0x13a4, 0x007c,
4311 +       0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0040, 0x4e6f, 0x2304,
4312 +       0x230c, 0xa10e, 0x0040, 0x4e6f, 0xa006, 0x0078, 0x4e7f, 0x732c,
4313 +       0x8319, 0x7130, 0xa102, 0x00c0, 0x4e79, 0x2300, 0xa005, 0x0078,
4314 +       0x4e7f, 0x0048, 0x4e7e, 0xa302, 0x0078, 0x4e7f, 0x8002, 0x007c,
4315 +       0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000, 0x127e,
4316 +       0x2091, 0x8000, 0x2009, 0xa8d6, 0x2104, 0xc08d, 0x200a, 0x127f,
4317 +       0x1078, 0x13f9, 0x007c, 0x2071, 0xa6e2, 0x7003, 0x0000, 0x7007,
4318 +       0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, 0x0000, 0x7053,
4319 +       0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, 0x0000, 0x708b,
4320 +       0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x007c, 0x0e7e, 0x2071,
4321 +       0xa6e2, 0x6848, 0xa005, 0x00c0, 0x4ebc, 0x7028, 0xc085, 0x702a,
4322 +       0xa085, 0x0001, 0x0078, 0x4ee1, 0x6a50, 0x7236, 0x6b54, 0x733a,
4323 +       0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, 0x702e,
4324 +       0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, 0x8006,
4325 +       0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272,
4326 +       0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, 0x0000,
4327 +       0xa006, 0x0e7f, 0x007c, 0x2b78, 0x2071, 0xa6e2, 0x7004, 0x1079,
4328 +       0x4f41, 0x700c, 0x0079, 0x4eec, 0x4ef1, 0x4ee6, 0x4ee6, 0x4ee6,
4329 +       0x4ee6, 0x007c, 0x700c, 0x0079, 0x4ef5, 0x4efa, 0x4f3f, 0x4f3f,
4330 +       0x4f40, 0x4f40, 0x7830, 0x7930, 0xa106, 0x0040, 0x4f04, 0x7830,
4331 +       0x7930, 0xa106, 0x00c0, 0x4f2a, 0x7030, 0xa10a, 0x0040, 0x4f2a,
4332 +       0x00c8, 0x4f0c, 0x712c, 0xa10a, 0xa18a, 0x0002, 0x00c8, 0x4f2b,
4333 +       0x1078, 0x1370, 0x0040, 0x4f2a, 0x2d00, 0x705a, 0x7063, 0x0040,
4334 +       0x2001, 0x0003, 0x7057, 0x0000, 0x127e, 0x007e, 0x2091, 0x8000,
4335 +       0x2009, 0xa8d6, 0x2104, 0xc085, 0x200a, 0x007f, 0x700e, 0x127f,
4336 +       0x1078, 0x13f9, 0x007c, 0x1078, 0x1370, 0x0040, 0x4f2a, 0x2d00,
4337 +       0x705a, 0x1078, 0x1370, 0x00c0, 0x4f37, 0x0078, 0x4f16, 0x2d00,
4338 +       0x7086, 0x7063, 0x0080, 0x2001, 0x0004, 0x0078, 0x4f1a, 0x007c,
4339 +       0x007c, 0x4f52, 0x4f53, 0x4f8a, 0x4f8b, 0x4f3f, 0x4fc1, 0x4fc6,
4340 +       0x4ffd, 0x4ffe, 0x5019, 0x501a, 0x501b, 0x501c, 0x501d, 0x501e,
4341 +       0x509e, 0x50c8, 0x007c, 0x700c, 0x0079, 0x4f56, 0x4f5b, 0x4f5e,
4342 +       0x4f6e, 0x4f89, 0x4f89, 0x1078, 0x4ef2, 0x007c, 0x127e, 0x8001,
4343 +       0x700e, 0x7058, 0x007e, 0x1078, 0x5464, 0x0040, 0x4f6b, 0x2091,
4344 +       0x8000, 0x1078, 0x4ef2, 0x0d7f, 0x0078, 0x4f77, 0x127e, 0x8001,
4345 +       0x700e, 0x1078, 0x5464, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803,
4346 +       0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x0020,
4347 +       0x00c8, 0x4f86, 0x1079, 0x4fa1, 0x127f, 0x007c, 0x127f, 0x1078,
4348 +       0x501f, 0x007c, 0x007c, 0x007c, 0x0e7e, 0x2071, 0xa6e2, 0x700c,
4349 +       0x0079, 0x4f92, 0x4f97, 0x4f97, 0x4f97, 0x4f99, 0x4f9d, 0x0e7f,
4350 +       0x007c, 0x700f, 0x0001, 0x0078, 0x4f9f, 0x700f, 0x0002, 0x0e7f,
4351 +       0x007c, 0x501f, 0x501f, 0x503b, 0x501f, 0x5171, 0x501f, 0x501f,
4352 +       0x501f, 0x501f, 0x501f, 0x503b, 0x51bb, 0x5208, 0x5261, 0x5277,
4353 +       0x501f, 0x501f, 0x5057, 0x503b, 0x501f, 0x501f, 0x5078, 0x5338,
4354 +       0x5356, 0x501f, 0x5057, 0x501f, 0x501f, 0x501f, 0x501f, 0x506d,
4355 +       0x5356, 0x7020, 0x2068, 0x1078, 0x13a4, 0x007c, 0x700c, 0x0079,
4356 +       0x4fc9, 0x4fce, 0x4fd1, 0x4fe1, 0x4ffc, 0x4ffc, 0x1078, 0x4ef2,
4357 +       0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e, 0x1078, 0x5464,
4358 +       0x0040, 0x4fde, 0x2091, 0x8000, 0x1078, 0x4ef2, 0x0d7f, 0x0078,
4359 +       0x4fea, 0x127e, 0x8001, 0x700e, 0x1078, 0x5464, 0x7058, 0x2068,
4360 +       0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084,
4361 +       0x00ff, 0xa08a, 0x001a, 0x00c8, 0x4ff9, 0x1079, 0x4fff, 0x127f,
4362 +       0x007c, 0x127f, 0x1078, 0x501f, 0x007c, 0x007c, 0x007c, 0x501f,
4363 +       0x503b, 0x515b, 0x501f, 0x503b, 0x501f, 0x503b, 0x503b, 0x501f,
4364 +       0x503b, 0x515b, 0x503b, 0x503b, 0x503b, 0x503b, 0x503b, 0x501f,
4365 +       0x503b, 0x515b, 0x501f, 0x501f, 0x503b, 0x501f, 0x501f, 0x501f,
4366 +       0x503b, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x7007,
4367 +       0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x127e, 0x2091,
4368 +       0x8000, 0x1078, 0x4a73, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838,
4369 +       0xa084, 0x00ff, 0xc0e5, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078,
4370 +       0x4a73, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff,
4371 +       0xc0ed, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x4a73, 0x127f,
4372 +       0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a,
4373 +       0x127e, 0x2091, 0x8000, 0x1078, 0x4a73, 0x127f, 0x007c, 0x6834,
4374 +       0x8007, 0xa084, 0x00ff, 0x0040, 0x502d, 0x8001, 0x00c0, 0x5064,
4375 +       0x7007, 0x0001, 0x0078, 0x513a, 0x7007, 0x0006, 0x7012, 0x2d00,
4376 +       0x7016, 0x701a, 0x704b, 0x513a, 0x007c, 0x684c, 0xa084, 0x00c0,
4377 +       0xa086, 0x00c0, 0x00c0, 0x5078, 0x7007, 0x0001, 0x0078, 0x5373,
4378 +       0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098,
4379 +       0x20a1, 0xa70d, 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x00c8,
4380 +       0x5049, 0x6884, 0xa08a, 0x0002, 0x00c8, 0x5049, 0x82ff, 0x00c0,
4381 +       0x509a, 0x6888, 0x698c, 0xa105, 0x0040, 0x509a, 0x2001, 0x510a,
4382 +       0x0078, 0x509d, 0xa280, 0x5100, 0x2004, 0x70c6, 0x7010, 0xa015,
4383 +       0x0040, 0x50e8, 0x1078, 0x1370, 0x00c0, 0x50a9, 0x7007, 0x000f,
4384 +       0x007c, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x6000, 0x6836, 0x6004,
4385 +       0xad00, 0x7096, 0x6008, 0xa20a, 0x00c8, 0x50b8, 0xa00e, 0x2200,
4386 +       0x7112, 0x620c, 0x8003, 0x800b, 0xa296, 0x0004, 0x0040, 0x50c1,
4387 +       0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x1078, 0x13db,
4388 +       0x7090, 0xa08e, 0x0100, 0x0040, 0x50dc, 0xa086, 0x0200, 0x0040,
4389 +       0x50d4, 0x7007, 0x0010, 0x007c, 0x7020, 0x2068, 0x1078, 0x13a4,
4390 +       0x7014, 0x2068, 0x0078, 0x5049, 0x7020, 0x2068, 0x7018, 0x6802,
4391 +       0x6807, 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a, 0x0078, 0x509e,
4392 +       0x7014, 0x2068, 0x7007, 0x0001, 0x6884, 0xa005, 0x00c0, 0x50f7,
4393 +       0x6888, 0x698c, 0xa105, 0x0040, 0x50f7, 0x1078, 0x510e, 0x6834,
4394 +       0xa084, 0x00ff, 0xa086, 0x001e, 0x0040, 0x5373, 0x0078, 0x513a,
4395 +       0x5102, 0x5106, 0x0002, 0x0011, 0x0007, 0x0004, 0x000a, 0x000f,
4396 +       0x0005, 0x0006, 0x000a, 0x0011, 0x0005, 0x0004, 0x0f7e, 0x0e7e,
4397 +       0x0c7e, 0x077e, 0x067e, 0x6f88, 0x6e8c, 0x6804, 0x2060, 0xacf0,
4398 +       0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, 0x700c, 0x7816, 0x7008,
4399 +       0x7812, 0x7004, 0x7806, 0x7000, 0x7802, 0x7e0e, 0x7f0a, 0x8109,
4400 +       0x0040, 0x5130, 0xaef2, 0x0004, 0xaffa, 0x0006, 0x0078, 0x511d,
4401 +       0x6004, 0xa065, 0x00c0, 0x5117, 0x067f, 0x077f, 0x0c7f, 0x0e7f,
4402 +       0x0f7f, 0x007c, 0x2009, 0xa62f, 0x210c, 0x81ff, 0x00c0, 0x5155,
4403 +       0x6838, 0xa084, 0x00ff, 0x683a, 0x1078, 0x4353, 0x00c0, 0x5149,
4404 +       0x007c, 0x1078, 0x4b51, 0x127e, 0x2091, 0x8000, 0x1078, 0x8f7d,
4405 +       0x1078, 0x4a73, 0x127f, 0x0078, 0x5148, 0x2001, 0x0028, 0x2009,
4406 +       0x0000, 0x0078, 0x5149, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906,
4407 +       0x711a, 0x7010, 0x8001, 0x7012, 0x0040, 0x516a, 0x7007, 0x0006,
4408 +       0x0078, 0x5170, 0x7014, 0x2068, 0x7007, 0x0001, 0x7048, 0x107a,
4409 +       0x007c, 0x7007, 0x0001, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848,
4410 +       0xa084, 0x00ff, 0x20a9, 0x0001, 0xa096, 0x0001, 0x0040, 0x519a,
4411 +       0x2009, 0x0000, 0x20a9, 0x00ff, 0xa096, 0x0002, 0x0040, 0x519a,
4412 +       0xa005, 0x00c0, 0x51ad, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x1078,
4413 +       0x45c4, 0x00c0, 0x51ad, 0x067e, 0x6e50, 0x1078, 0x46b3, 0x067f,
4414 +       0x0078, 0x51ad, 0x047e, 0x2011, 0xa60c, 0x2224, 0xc484, 0xc48c,
4415 +       0x2412, 0x047f, 0x0c7e, 0x1078, 0x45c4, 0x00c0, 0x51a9, 0x1078,
4416 +       0x4852, 0x8108, 0x00f0, 0x51a3, 0x0c7f, 0x684c, 0xd084, 0x00c0,
4417 +       0x51b4, 0x1078, 0x13a4, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
4418 +       0x4a73, 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001,
4419 +       0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x51ff, 0x2061, 0xa933,
4420 +       0x6100, 0xd184, 0x0040, 0x51df, 0x6858, 0xa084, 0x00ff, 0x00c0,
4421 +       0x5202, 0x6000, 0xd084, 0x0040, 0x51ff, 0x6004, 0xa005, 0x00c0,
4422 +       0x5205, 0x6003, 0x0000, 0x600b, 0x0000, 0x0078, 0x51fc, 0x2011,
4423 +       0x0001, 0x6860, 0xa005, 0x00c0, 0x51e7, 0x2001, 0x001e, 0x8000,
4424 +       0x6016, 0x6858, 0xa084, 0x00ff, 0x0040, 0x51ff, 0x6006, 0x6858,
4425 +       0x8007, 0xa084, 0x00ff, 0x0040, 0x51ff, 0x600a, 0x6858, 0x8000,
4426 +       0x00c0, 0x51fb, 0xc28d, 0x6202, 0x127f, 0x0078, 0x5453, 0x127f,
4427 +       0x0078, 0x544b, 0x127f, 0x0078, 0x5443, 0x127f, 0x0078, 0x5447,
4428 +       0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xa653, 0x2004,
4429 +       0xd0a4, 0x0040, 0x525e, 0x2061, 0xa933, 0x6000, 0xd084, 0x0040,
4430 +       0x525e, 0x6204, 0x6308, 0xd08c, 0x00c0, 0x5250, 0x6c48, 0xa484,
4431 +       0x0003, 0x0040, 0x5236, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x00c0,
4432 +       0x522f, 0x2100, 0xa210, 0x0048, 0x525b, 0x0078, 0x5236, 0x8001,
4433 +       0x00c0, 0x525b, 0x2100, 0xa212, 0x0048, 0x525b, 0xa484, 0x000c,
4434 +       0x0040, 0x5250, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004,
4435 +       0x00c0, 0x5248, 0x2100, 0xa318, 0x0048, 0x525b, 0x0078, 0x5250,
4436 +       0xa082, 0x0004, 0x00c0, 0x525b, 0x2100, 0xa31a, 0x0048, 0x525b,
4437 +       0x6860, 0xa005, 0x0040, 0x5256, 0x8000, 0x6016, 0x6206, 0x630a,
4438 +       0x127f, 0x0078, 0x5453, 0x127f, 0x0078, 0x544f, 0x127f, 0x0078,
4439 +       0x544b, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2061, 0xa933,
4440 +       0x6300, 0xd38c, 0x00c0, 0x5271, 0x6308, 0x8318, 0x0048, 0x5274,
4441 +       0x630a, 0x127f, 0x0078, 0x5461, 0x127f, 0x0078, 0x544f, 0x127e,
4442 +       0x0c7e, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, 0x0040,
4443 +       0x528b, 0x0c7e, 0x2061, 0xa933, 0x6000, 0xa084, 0xfcff, 0x6002,
4444 +       0x0c7f, 0x0078, 0x52ba, 0x6858, 0xa005, 0x0040, 0x52d1, 0x685c,
4445 +       0xa065, 0x0040, 0x52cd, 0x2001, 0xa62f, 0x2004, 0xa005, 0x0040,
4446 +       0x529d, 0x1078, 0x8ec6, 0x0078, 0x52ab, 0x6013, 0x0400, 0x6037,
4447 +       0x0000, 0x694c, 0xd1a4, 0x0040, 0x52a7, 0x6950, 0x6136, 0x2009,
4448 +       0x0041, 0x1078, 0x775c, 0x6958, 0xa18c, 0xff00, 0xa186, 0x2000,
4449 +       0x00c0, 0x52ba, 0x027e, 0x2009, 0x0000, 0x2011, 0xfdff, 0x1078,
4450 +       0x5bf1, 0x027f, 0x684c, 0xd0c4, 0x0040, 0x52c9, 0x2061, 0xa933,
4451 +       0x6000, 0xd08c, 0x00c0, 0x52c9, 0x6008, 0x8000, 0x0048, 0x52cd,
4452 +       0x600a, 0x0c7f, 0x127f, 0x0078, 0x5453, 0x0c7f, 0x127f, 0x0078,
4453 +       0x544b, 0x6954, 0xa186, 0x0045, 0x0040, 0x5306, 0xa186, 0x002a,
4454 +       0x00c0, 0x52e1, 0x2001, 0xa60c, 0x200c, 0xc194, 0x2102, 0x0078,
4455 +       0x52ba, 0xa186, 0x0020, 0x0040, 0x52fa, 0xa186, 0x0029, 0x0040,
4456 +       0x52ed, 0xa186, 0x002d, 0x00c0, 0x52cd, 0x6944, 0xa18c, 0xff00,
4457 +       0x810f, 0x1078, 0x45c4, 0x00c0, 0x52ba, 0x6000, 0xc0e4, 0x6002,
4458 +       0x0078, 0x52ba, 0x685c, 0xa065, 0x0040, 0x52cd, 0x6007, 0x0024,
4459 +       0x2001, 0xa8a3, 0x2004, 0x6016, 0x0078, 0x52ba, 0x685c, 0xa065,
4460 +       0x0040, 0x52cd, 0x0e7e, 0x6860, 0xa075, 0x2001, 0xa62f, 0x2004,
4461 +       0xa005, 0x0040, 0x531e, 0x1078, 0x8ec6, 0x8eff, 0x0040, 0x531b,
4462 +       0x2e60, 0x1078, 0x8ec6, 0x0e7f, 0x0078, 0x52ba, 0x6024, 0xc0dc,
4463 +       0xc0d5, 0x6026, 0x2e60, 0x6007, 0x003a, 0x6870, 0xa005, 0x0040,
4464 +       0x532f, 0x6007, 0x003b, 0x6874, 0x602a, 0x6878, 0x6012, 0x6003,
4465 +       0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0e7f, 0x0078, 0x52ba,
4466 +       0x2061, 0xa933, 0x6000, 0xd084, 0x0040, 0x5352, 0xd08c, 0x00c0,
4467 +       0x5461, 0x2091, 0x8000, 0x6204, 0x8210, 0x0048, 0x534c, 0x6206,
4468 +       0x2091, 0x8001, 0x0078, 0x5461, 0x2091, 0x8001, 0x6853, 0x0016,
4469 +       0x0078, 0x545a, 0x6853, 0x0007, 0x0078, 0x545a, 0x6834, 0x8007,
4470 +       0xa084, 0x00ff, 0x00c0, 0x5360, 0x1078, 0x502d, 0x0078, 0x5372,
4471 +       0x2030, 0x8001, 0x00c0, 0x536a, 0x7007, 0x0001, 0x1078, 0x5373,
4472 +       0x0078, 0x5372, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a,
4473 +       0x704b, 0x5373, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000, 0xa03e,
4474 +       0x2009, 0xa62f, 0x210c, 0x81ff, 0x00c0, 0x53ff, 0x2009, 0xa60c,
4475 +       0x210c, 0xd194, 0x00c0, 0x5431, 0x6848, 0x2070, 0xae82, 0xad00,
4476 +       0x0048, 0x53ef, 0x2001, 0xa616, 0x2004, 0xae02, 0x00c8, 0x53ef,
4477 +       0x2061, 0xa933, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001, 0x00c0,
4478 +       0x53d2, 0x711c, 0xa186, 0x0006, 0x00c0, 0x53da, 0x7018, 0xa005,
4479 +       0x0040, 0x53ff, 0x2004, 0xd0e4, 0x00c0, 0x542b, 0x7024, 0xd0dc,
4480 +       0x00c0, 0x5435, 0x6853, 0x0000, 0x6803, 0x0000, 0x2d08, 0x7010,
4481 +       0xa005, 0x00c0, 0x53be, 0x7112, 0x684c, 0xd0f4, 0x00c0, 0x5439,
4482 +       0x2e60, 0x1078, 0x5b27, 0x127f, 0x0e7f, 0x007c, 0x2068, 0x6800,
4483 +       0xa005, 0x00c0, 0x53be, 0x6902, 0x2168, 0x684c, 0xd0f4, 0x00c0,
4484 +       0x5439, 0x127f, 0x0e7f, 0x007c, 0x127f, 0x0e7f, 0x6853, 0x0006,
4485 +       0x0078, 0x545a, 0xd184, 0x0040, 0x53cc, 0xd1c4, 0x00c0, 0x53f3,
4486 +       0x0078, 0x53f7, 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078, 0x45c4,
4487 +       0x00c0, 0x542b, 0x6000, 0xd0e4, 0x00c0, 0x542b, 0x711c, 0xa186,
4488 +       0x0007, 0x00c0, 0x53ef, 0x6853, 0x0002, 0x0078, 0x542d, 0x6853,
4489 +       0x0008, 0x0078, 0x542d, 0x6853, 0x000e, 0x0078, 0x542d, 0x6853,
4490 +       0x0017, 0x0078, 0x542d, 0x6853, 0x0035, 0x0078, 0x542d, 0x2001,
4491 +       0xa672, 0x2004, 0xd0fc, 0x0040, 0x5427, 0x6848, 0x2070, 0xae82,
4492 +       0xad00, 0x0048, 0x5427, 0x6058, 0xae02, 0x00c8, 0x5427, 0x711c,
4493 +       0xa186, 0x0006, 0x00c0, 0x5427, 0x7018, 0xa005, 0x0040, 0x5427,
4494 +       0x2004, 0xd0bc, 0x0040, 0x5427, 0x2039, 0x0001, 0x7000, 0xa086,
4495 +       0x0007, 0x00c0, 0x537e, 0x7003, 0x0002, 0x0078, 0x537e, 0x6853,
4496 +       0x0028, 0x0078, 0x542d, 0x6853, 0x0029, 0x127f, 0x0e7f, 0x0078,
4497 +       0x545a, 0x6853, 0x002a, 0x0078, 0x542d, 0x6853, 0x0045, 0x0078,
4498 +       0x542d, 0x2e60, 0x2019, 0x0002, 0x6017, 0x0014, 0x1078, 0x9dc7,
4499 +       0x127f, 0x0e7f, 0x007c, 0x2009, 0x003e, 0x0078, 0x5455, 0x2009,
4500 +       0x0004, 0x0078, 0x5455, 0x2009, 0x0006, 0x0078, 0x5455, 0x2009,
4501 +       0x0016, 0x0078, 0x5455, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00,
4502 +       0xa105, 0x6856, 0x2091, 0x8000, 0x1078, 0x4a73, 0x2091, 0x8001,
4503 +       0x007c, 0x1078, 0x13a4, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102,
4504 +       0x0048, 0x5471, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0078,
4505 +       0x547d, 0x7070, 0xa080, 0x0040, 0x7072, 0x00c8, 0x547d, 0x7074,
4506 +       0xa081, 0x0000, 0x7076, 0xa085, 0x0001, 0x7932, 0x7132, 0x007c,
4507 +       0x0d7e, 0x1078, 0x5b1e, 0x0d7f, 0x007c, 0x0d7e, 0x2011, 0x0004,
4508 +       0x2204, 0xa085, 0x8002, 0x2012, 0x0d7f, 0x007c, 0x20e1, 0x0002,
4509 +       0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0x0040, 0x549c,
4510 +       0xa086, 0x1000, 0x00c0, 0x54d3, 0x20e1, 0x0000, 0x3d00, 0xa094,
4511 +       0xff00, 0x8217, 0xa084, 0xf000, 0xa086, 0x3000, 0x00c0, 0x54b7,
4512 +       0xa184, 0xff00, 0x8007, 0xa086, 0x0008, 0x00c0, 0x54d3, 0x1078,
4513 +       0x29bb, 0x00c0, 0x54d3, 0x1078, 0x56b2, 0x0078, 0x54ce, 0x20e1,
4514 +       0x0004, 0x3d60, 0xd1bc, 0x00c0, 0x54be, 0x3e60, 0xac84, 0x000f,
4515 +       0x00c0, 0x54d3, 0xac82, 0xad00, 0x0048, 0x54d3, 0x6858, 0xac02,
4516 +       0x00c8, 0x54d3, 0x2009, 0x0047, 0x1078, 0x775c, 0x7a1c, 0xd284,
4517 +       0x00c0, 0x548e, 0x007c, 0xa016, 0x1078, 0x15fa, 0x0078, 0x54ce,
4518 +       0x0078, 0x54d3, 0x781c, 0xd08c, 0x0040, 0x5502, 0x157e, 0x137e,
4519 +       0x147e, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0076, 0x00c0,
4520 +       0x5518, 0xa484, 0x7000, 0xa086, 0x1000, 0x00c0, 0x5507, 0x1078,
4521 +       0x554e, 0x0040, 0x5518, 0x20e1, 0x3000, 0x7828, 0x7828, 0x1078,
4522 +       0x556c, 0x147f, 0x137f, 0x157f, 0x2009, 0xa8b9, 0x2104, 0xa005,
4523 +       0x00c0, 0x5503, 0x007c, 0x1078, 0x62d1, 0x0078, 0x5502, 0xa484,
4524 +       0x7000, 0x00c0, 0x5518, 0x1078, 0x554e, 0x0040, 0x552c, 0x7000,
4525 +       0xa084, 0xff00, 0xa086, 0x8100, 0x0040, 0x54f3, 0x0078, 0x552c,
4526 +       0x1078, 0xa54f, 0xd5a4, 0x0040, 0x5528, 0x047e, 0x1078, 0x1b22,
4527 +       0x047f, 0x20e1, 0x9010, 0x2001, 0x0138, 0x2202, 0x0078, 0x5530,
4528 +       0x1078, 0x554e, 0x6883, 0x0000, 0x20e1, 0x3000, 0x7828, 0x7828,
4529 +       0x1078, 0x5537, 0x147f, 0x137f, 0x157f, 0x0078, 0x5502, 0x2001,
4530 +       0xa60e, 0x2004, 0xd08c, 0x0040, 0x554d, 0x2001, 0xa600, 0x2004,
4531 +       0xa086, 0x0003, 0x00c0, 0x554d, 0x027e, 0x037e, 0x2011, 0x8048,
4532 +       0x2518, 0x1078, 0x361b, 0x037f, 0x027f, 0x007c, 0xa484, 0x01ff,
4533 +       0x6882, 0xa005, 0x0040, 0x5560, 0xa080, 0x001f, 0xa084, 0x03f8,
4534 +       0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x007c,
4535 +       0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5,
4536 +       0xa085, 0x0001, 0x0078, 0x555f, 0x7000, 0xa084, 0xff00, 0xa08c,
4537 +       0xf000, 0x8007, 0xa196, 0x0000, 0x00c0, 0x5579, 0x0078, 0x57ba,
4538 +       0x007c, 0xa196, 0x2000, 0x00c0, 0x558a, 0x6900, 0xa18e, 0x0001,
4539 +       0x00c0, 0x5586, 0x1078, 0x3aec, 0x0078, 0x5578, 0x1078, 0x5592,
4540 +       0x0078, 0x5578, 0xa196, 0x8000, 0x00c0, 0x5578, 0x1078, 0x5871,
4541 +       0x0078, 0x5578, 0x0c7e, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196,
4542 +       0x0001, 0x0040, 0x559f, 0xa196, 0x0023, 0x00c0, 0x56aa, 0xa08e,
4543 +       0x0023, 0x00c0, 0x55d4, 0x1078, 0x591d, 0x0040, 0x56aa, 0x7124,
4544 +       0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x55b8, 0x7034, 0xa005,
4545 +       0x00c0, 0x56aa, 0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x56aa,
4546 +       0xa08e, 0x0214, 0x0040, 0x55c0, 0xa08e, 0x0210, 0x00c0, 0x55c6,
4547 +       0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x56aa, 0xa08e, 0x0100,
4548 +       0x00c0, 0x56aa, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x0016,
4549 +       0x1078, 0x775c, 0x0078, 0x56aa, 0xa08e, 0x0022, 0x00c0, 0x56aa,
4550 +       0x7030, 0xa08e, 0x0300, 0x00c0, 0x55e5, 0x7034, 0xa005, 0x00c0,
4551 +       0x56aa, 0x2009, 0x0017, 0x0078, 0x5676, 0xa08e, 0x0500, 0x00c0,
4552 +       0x55f1, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x0018, 0x0078,
4553 +       0x5676, 0xa08e, 0x2010, 0x00c0, 0x55f9, 0x2009, 0x0019, 0x0078,
4554 +       0x5676, 0xa08e, 0x2110, 0x00c0, 0x5601, 0x2009, 0x001a, 0x0078,
4555 +       0x5676, 0xa08e, 0x5200, 0x00c0, 0x560d, 0x7034, 0xa005, 0x00c0,
4556 +       0x56aa, 0x2009, 0x001b, 0x0078, 0x5676, 0xa08e, 0x5000, 0x00c0,
4557 +       0x5619, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x001c, 0x0078,
4558 +       0x5676, 0xa08e, 0x1300, 0x00c0, 0x5621, 0x2009, 0x0034, 0x0078,
4559 +       0x5676, 0xa08e, 0x1200, 0x00c0, 0x562d, 0x7034, 0xa005, 0x00c0,
4560 +       0x56aa, 0x2009, 0x0024, 0x0078, 0x5676, 0xa08c, 0xff00, 0xa18e,
4561 +       0x2400, 0x00c0, 0x5637, 0x2009, 0x002d, 0x0078, 0x5676, 0xa08c,
4562 +       0xff00, 0xa18e, 0x5300, 0x00c0, 0x5641, 0x2009, 0x002a, 0x0078,
4563 +       0x5676, 0xa08e, 0x0f00, 0x00c0, 0x5649, 0x2009, 0x0020, 0x0078,
4564 +       0x5676, 0xa08e, 0x5300, 0x00c0, 0x564f, 0x0078, 0x566c, 0xa08e,
4565 +       0x6104, 0x00c0, 0x566c, 0x2011, 0xab8d, 0x8208, 0x2204, 0xa082,
4566 +       0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015, 0x211c, 0x8108,
4567 +       0x047e, 0x2124, 0x1078, 0x361b, 0x047f, 0x8108, 0x00f0, 0x565c,
4568 +       0x2009, 0x0023, 0x0078, 0x5676, 0xa08e, 0x6000, 0x00c0, 0x5674,
4569 +       0x2009, 0x003f, 0x0078, 0x5676, 0x2009, 0x001d, 0x017e, 0x2011,
4570 +       0xab83, 0x2204, 0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x56ac,
4571 +       0x1078, 0x455c, 0x00c0, 0x56ac, 0x6612, 0x6516, 0x86ff, 0x0040,
4572 +       0x569c, 0x017f, 0x017e, 0xa186, 0x0017, 0x00c0, 0x569c, 0x686c,
4573 +       0xa606, 0x00c0, 0x569c, 0x6870, 0xa506, 0xa084, 0xff00, 0x00c0,
4574 +       0x569c, 0x6000, 0xc0f5, 0x6002, 0x0c7e, 0x1078, 0x76c7, 0x0040,
4575 +       0x56af, 0x017f, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0x017f,
4576 +       0x1078, 0x775c, 0x0c7f, 0x007c, 0x017f, 0x0078, 0x56aa, 0x0c7f,
4577 +       0x0078, 0x56ac, 0x0c7e, 0x1078, 0x570f, 0x00c0, 0x570d, 0xa28e,
4578 +       0x0033, 0x00c0, 0x56de, 0x1078, 0x591d, 0x0040, 0x570d, 0x7124,
4579 +       0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x56d0, 0x7034, 0xa005,
4580 +       0x00c0, 0x570d, 0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x570d,
4581 +       0xa08e, 0x0100, 0x00c0, 0x570d, 0x7034, 0xa005, 0x00c0, 0x570d,
4582 +       0x2009, 0x0016, 0x1078, 0x775c, 0x0078, 0x570d, 0xa28e, 0x0032,
4583 +       0x00c0, 0x570d, 0x7030, 0xa08e, 0x1400, 0x00c0, 0x570d, 0x2009,
4584 +       0x0038, 0x017e, 0x2011, 0xab83, 0x2204, 0x8211, 0x220c, 0x1078,
4585 +       0x254d, 0x00c0, 0x570c, 0x1078, 0x455c, 0x00c0, 0x570c, 0x6612,
4586 +       0x6516, 0x0c7e, 0x1078, 0x76c7, 0x0040, 0x570b, 0x017f, 0x611a,
4587 +       0x601f, 0x0004, 0x7120, 0x610a, 0x017f, 0x1078, 0x775c, 0x1078,
4588 +       0x62d1, 0x0078, 0x570d, 0x0c7f, 0x017f, 0x0c7f, 0x007c, 0x0f7e,
4589 +       0x0d7e, 0x027e, 0x017e, 0x137e, 0x147e, 0x157e, 0x3c00, 0x007e,
4590 +       0x2079, 0x0030, 0x2069, 0x0200, 0x1078, 0x1c6a, 0x00c0, 0x5750,
4591 +       0x1078, 0x1b40, 0x0040, 0x575d, 0x7908, 0xa18c, 0x1fff, 0xa182,
4592 +       0x0011, 0x00c8, 0x575a, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0,
4593 +       0x2099, 0x020a, 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004,
4594 +       0x7a0c, 0x7808, 0xa080, 0x0007, 0xa084, 0x1ff8, 0xa08a, 0x0140,
4595 +       0x10c8, 0x1332, 0x80ac, 0x20e1, 0x6000, 0x2099, 0x020a, 0x53a5,
4596 +       0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, 0xa294, 0x0070,
4597 +       0x007f, 0x20e0, 0x157f, 0x147f, 0x137f, 0x017f, 0x027f, 0x0d7f,
4598 +       0x0f7f, 0x007c, 0xa016, 0x1078, 0x15fa, 0xa085, 0x0001, 0x0078,
4599 +       0x5750, 0x047e, 0x0e7e, 0x0d7e, 0x2028, 0x2130, 0xa696, 0x00ff,
4600 +       0x00c0, 0x5782, 0xa596, 0xfffd, 0x00c0, 0x5772, 0x2009, 0x007f,
4601 +       0x0078, 0x57b5, 0xa596, 0xfffe, 0x00c0, 0x577a, 0x2009, 0x007e,
4602 +       0x0078, 0x57b5, 0xa596, 0xfffc, 0x00c0, 0x5782, 0x2009, 0x0080,
4603 +       0x0078, 0x57b5, 0x2011, 0x0000, 0x2021, 0x0081, 0x20a9, 0x007e,
4604 +       0x2071, 0xa7b6, 0x2e1c, 0x83ff, 0x00c0, 0x5794, 0x82ff, 0x00c0,
4605 +       0x57a9, 0x2410, 0x0078, 0x57a9, 0x2368, 0x6f10, 0x007e, 0x2100,
4606 +       0xa706, 0x007f, 0x6b14, 0x00c0, 0x57a3, 0xa346, 0x00c0, 0x57a3,
4607 +       0x2408, 0x0078, 0x57b5, 0x87ff, 0x00c0, 0x57a9, 0x83ff, 0x0040,
4608 +       0x578e, 0x8420, 0x8e70, 0x00f0, 0x578a, 0x82ff, 0x00c0, 0x57b4,
4609 +       0xa085, 0x0001, 0x0078, 0x57b6, 0x2208, 0xa006, 0x0d7f, 0x0e7f,
4610 +       0x047f, 0x007c, 0xa084, 0x0007, 0x0079, 0x57bf, 0x007c, 0x57c7,
4611 +       0x57c7, 0x57c7, 0x5933, 0x57c7, 0x57c8, 0x57e1, 0x5858, 0x007c,
4612 +       0x7110, 0xd1bc, 0x0040, 0x57e0, 0x7120, 0x2160, 0xac8c, 0x000f,
4613 +       0x00c0, 0x57e0, 0xac8a, 0xad00, 0x0048, 0x57e0, 0x6858, 0xac02,
4614 +       0x00c8, 0x57e0, 0x7124, 0x610a, 0x2009, 0x0046, 0x1078, 0x775c,
4615 +       0x007c, 0x0c7e, 0xa484, 0x01ff, 0x0040, 0x5833, 0x7110, 0xd1bc,
4616 +       0x00c0, 0x5833, 0x2011, 0xab83, 0x2204, 0x8211, 0x220c, 0x1078,
4617 +       0x254d, 0x00c0, 0x5833, 0x1078, 0x455c, 0x00c0, 0x5833, 0x6612,
4618 +       0x6516, 0x6000, 0xd0ec, 0x00c0, 0x5833, 0x6204, 0xa294, 0xff00,
4619 +       0x8217, 0xa286, 0x0006, 0x00c0, 0x5818, 0x0c7e, 0x1078, 0x76c7,
4620 +       0x017f, 0x0040, 0x5835, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a,
4621 +       0x7130, 0x6122, 0x2009, 0x0044, 0x1078, 0x775c, 0x0078, 0x5833,
4622 +       0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x5833, 0x611a, 0x601f,
4623 +       0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x582b, 0x6007,
4624 +       0x0005, 0x0078, 0x582d, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078,
4625 +       0x5dd7, 0x1078, 0x62d1, 0x0c7f, 0x007c, 0x2001, 0xa60d, 0x2004,
4626 +       0xd0ec, 0x0040, 0x583f, 0x2011, 0x8049, 0x1078, 0x361b, 0x0c7e,
4627 +       0x1078, 0x9187, 0x017f, 0x0040, 0x5833, 0x611a, 0x601f, 0x0006,
4628 +       0x7120, 0x610a, 0x7130, 0x6122, 0x6013, 0x0300, 0x6003, 0x0001,
4629 +       0x6007, 0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x5833,
4630 +       0x7110, 0xd1bc, 0x0040, 0x5870, 0x7020, 0x2060, 0xac84, 0x000f,
4631 +       0x00c0, 0x5870, 0xac82, 0xad00, 0x0048, 0x5870, 0x6858, 0xac02,
4632 +       0x00c8, 0x5870, 0x7124, 0x610a, 0x2009, 0x0045, 0x1078, 0x775c,
4633 +       0x007c, 0x007e, 0x1078, 0x29bb, 0x007f, 0x00c0, 0x5887, 0x7110,
4634 +       0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x00c0, 0x5887, 0xa084,
4635 +       0x000f, 0xa08a, 0x0006, 0x00c8, 0x5887, 0x1079, 0x5888, 0x007c,
4636 +       0x588e, 0x588f, 0x588e, 0x588e, 0x58ff, 0x590e, 0x007c, 0x7110,
4637 +       0xd1bc, 0x0040, 0x5897, 0x702c, 0xd084, 0x0040, 0x58fe, 0x700c,
4638 +       0x7108, 0x1078, 0x254d, 0x00c0, 0x58fe, 0x1078, 0x455c, 0x00c0,
4639 +       0x58fe, 0x6612, 0x6516, 0x6204, 0x7110, 0xd1bc, 0x0040, 0x58c9,
4640 +       0xa28c, 0x00ff, 0xa186, 0x0004, 0x0040, 0x58b2, 0xa186, 0x0006,
4641 +       0x00c0, 0x58ef, 0x0c7e, 0x1078, 0x591d, 0x0c7f, 0x0040, 0x58fe,
4642 +       0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f,
4643 +       0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x1078, 0x775c, 0x0078,
4644 +       0x58fe, 0xa28c, 0x00ff, 0xa186, 0x0006, 0x0040, 0x58de, 0xa186,
4645 +       0x0004, 0x0040, 0x58de, 0xa294, 0xff00, 0x8217, 0xa286, 0x0004,
4646 +       0x0040, 0x58de, 0xa286, 0x0006, 0x00c0, 0x58ef, 0x0c7e, 0x1078,
4647 +       0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f, 0x0005, 0x7120,
4648 +       0x610a, 0x2009, 0x0088, 0x1078, 0x775c, 0x0078, 0x58fe, 0x0c7e,
4649 +       0x1078, 0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f, 0x0004,
4650 +       0x7120, 0x610a, 0x2009, 0x0001, 0x1078, 0x775c, 0x007c, 0x7110,
4651 +       0xd1bc, 0x0040, 0x590d, 0x1078, 0x591d, 0x0040, 0x590d, 0x7124,
4652 +       0x610a, 0x2009, 0x0089, 0x1078, 0x775c, 0x007c, 0x7110, 0xd1bc,
4653 +       0x0040, 0x591c, 0x1078, 0x591d, 0x0040, 0x591c, 0x7124, 0x610a,
4654 +       0x2009, 0x008a, 0x1078, 0x775c, 0x007c, 0x7020, 0x2060, 0xac84,
4655 +       0x000f, 0x00c0, 0x5930, 0xac82, 0xad00, 0x0048, 0x5930, 0x2001,
4656 +       0xa616, 0x2004, 0xac02, 0x00c8, 0x5930, 0xa085, 0x0001, 0x007c,
4657 +       0xa006, 0x0078, 0x592f, 0x7110, 0xd1bc, 0x00c0, 0x5949, 0x7024,
4658 +       0x2060, 0xac84, 0x000f, 0x00c0, 0x5949, 0xac82, 0xad00, 0x0048,
4659 +       0x5949, 0x6858, 0xac02, 0x00c8, 0x5949, 0x2009, 0x0051, 0x1078,
4660 +       0x775c, 0x007c, 0x2071, 0xa8c4, 0x7003, 0x0003, 0x700f, 0x0361,
4661 +       0xa006, 0x701a, 0x7012, 0x7017, 0xad00, 0x7007, 0x0000, 0x7026,
4662 +       0x702b, 0x6e1c, 0x7032, 0x7037, 0x6e70, 0x703b, 0x0002, 0x703f,
4663 +       0x0000, 0x7043, 0xffff, 0x7047, 0xffff, 0x007c, 0x2071, 0xa8c4,
4664 +       0x00e0, 0x5a32, 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, 0x00c0,
4665 +       0x59de, 0x700f, 0x0361, 0x7007, 0x0001, 0x127e, 0x2091, 0x8000,
4666 +       0x7138, 0x8109, 0x713a, 0x00c0, 0x59dc, 0x703b, 0x0002, 0x2009,
4667 +       0x0100, 0x2104, 0xa082, 0x0003, 0x00c8, 0x59dc, 0x703c, 0xa086,
4668 +       0x0001, 0x00c0, 0x59b9, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084,
4669 +       0x4000, 0x0040, 0x5997, 0x6803, 0x1000, 0x0078, 0x599e, 0x6804,
4670 +       0xa084, 0x1000, 0x0040, 0x599e, 0x6803, 0x0100, 0x6803, 0x0000,
4671 +       0x703f, 0x0000, 0x2069, 0xa8b1, 0x6804, 0xa082, 0x0006, 0x00c0,
4672 +       0x59ab, 0x6807, 0x0000, 0x6830, 0xa082, 0x0003, 0x00c0, 0x59b2,
4673 +       0x6833, 0x0000, 0x1078, 0x62d1, 0x1078, 0x639b, 0x0d7f, 0x0078,
4674 +       0x59dc, 0x0d7e, 0x2069, 0xa600, 0x6948, 0x6864, 0xa102, 0x00c8,
4675 +       0x59db, 0x2069, 0xa8b1, 0x6804, 0xa086, 0x0000, 0x00c0, 0x59db,
4676 +       0x6830, 0xa086, 0x0000, 0x00c0, 0x59db, 0x703f, 0x0001, 0x6807,
4677 +       0x0006, 0x6833, 0x0003, 0x2069, 0x0100, 0x6830, 0x689e, 0x2069,
4678 +       0x0140, 0x6803, 0x0600, 0x0d7f, 0x0078, 0x59e1, 0x127e, 0x2091,
4679 +       0x8000, 0x7024, 0xa00d, 0x0040, 0x59f9, 0x7020, 0x8001, 0x7022,
4680 +       0x00c0, 0x59f9, 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8,
4681 +       0x00c0, 0x59f4, 0x7028, 0x107a, 0x81ff, 0x00c0, 0x59f9, 0x7028,
4682 +       0x107a, 0x7030, 0xa00d, 0x0040, 0x5a10, 0x702c, 0x8001, 0x702e,
4683 +       0x00c0, 0x5a10, 0x702f, 0x0009, 0x8109, 0x7132, 0x0040, 0x5a0e,
4684 +       0xa184, 0x007f, 0x1040, 0x6ea2, 0x0078, 0x5a10, 0x7034, 0x107a,
4685 +       0x7040, 0xa005, 0x0040, 0x5a18, 0x0050, 0x5a18, 0x8001, 0x7042,
4686 +       0x7044, 0xa005, 0x0040, 0x5a20, 0x0050, 0x5a20, 0x8001, 0x7046,
4687 +       0x7018, 0xa00d, 0x0040, 0x5a31, 0x7008, 0x8001, 0x700a, 0x00c0,
4688 +       0x5a31, 0x700b, 0x0009, 0x8109, 0x711a, 0x00c0, 0x5a31, 0x701c,
4689 +       0x107a, 0x127f, 0x7004, 0x0079, 0x5a35, 0x5a5c, 0x5a5d, 0x5a79,
4690 +       0x0e7e, 0x2071, 0xa8c4, 0x7018, 0xa005, 0x00c0, 0x5a43, 0x711a,
4691 +       0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x0e7e, 0x007e, 0x2071,
4692 +       0xa8c4, 0x701c, 0xa206, 0x00c0, 0x5a4f, 0x701a, 0x701e, 0x007f,
4693 +       0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa8c4, 0x6088, 0xa102, 0x0048,
4694 +       0x5a5a, 0x618a, 0x0e7f, 0x007c, 0x007c, 0x7110, 0x1078, 0x45c4,
4695 +       0x00c0, 0x5a6f, 0x6088, 0x8001, 0x0048, 0x5a6f, 0x608a, 0x00c0,
4696 +       0x5a6f, 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x8108,
4697 +       0xa182, 0x00ff, 0x0048, 0x5a77, 0xa00e, 0x7007, 0x0002, 0x7112,
4698 +       0x007c, 0x7014, 0x2060, 0x127e, 0x2091, 0x8000, 0x603c, 0xa005,
4699 +       0x0040, 0x5a88, 0x8001, 0x603e, 0x00c0, 0x5a88, 0x1078, 0x8f9c,
4700 +       0x6014, 0xa005, 0x0040, 0x5ab2, 0x8001, 0x6016, 0x00c0, 0x5ab2,
4701 +       0x611c, 0xa186, 0x0003, 0x0040, 0x5a99, 0xa186, 0x0006, 0x00c0,
4702 +       0x5ab0, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0048, 0x5ab0,
4703 +       0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, 0x0048, 0x5aa9, 0x2001,
4704 +       0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x0078, 0x5ab2,
4705 +       0x1078, 0x8abe, 0x127f, 0xac88, 0x0010, 0x7116, 0x2001, 0xcd00,
4706 +       0xa102, 0x0048, 0x5abf, 0x7017, 0xad00, 0x7007, 0x0000, 0x007c,
4707 +       0x0e7e, 0x2071, 0xa8c4, 0x7027, 0x07d0, 0x7023, 0x0009, 0x703b,
4708 +       0x0002, 0x0e7f, 0x007c, 0x2001, 0xa8cd, 0x2003, 0x0000, 0x007c,
4709 +       0x0e7e, 0x2071, 0xa8c4, 0x7132, 0x702f, 0x0009, 0x0e7f, 0x007c,
4710 +       0x2011, 0xa8d0, 0x2013, 0x0000, 0x007c, 0x0e7e, 0x2071, 0xa8c4,
4711 +       0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x027e, 0x0e7e,
4712 +       0x0f7e, 0x2079, 0xa600, 0x7a34, 0xd294, 0x0040, 0x5b15, 0x2071,
4713 +       0xa8ac, 0x2e14, 0xa0fe, 0x0000, 0x0040, 0x5b02, 0xa0fe, 0x0001,
4714 +       0x0040, 0x5b06, 0xa0fe, 0x0002, 0x00c0, 0x5b11, 0xa292, 0x0085,
4715 +       0x0078, 0x5b08, 0xa292, 0x0005, 0x0078, 0x5b08, 0xa292, 0x0002,
4716 +       0x2272, 0x0040, 0x5b0d, 0x00c8, 0x5b15, 0x2011, 0x8037, 0x1078,
4717 +       0x361b, 0x2011, 0xa8ab, 0x2204, 0x2072, 0x0f7f, 0x0e7f, 0x027f,
4718 +       0x007c, 0x0c7e, 0x2061, 0xa933, 0x0c7f, 0x007c, 0xa184, 0x000f,
4719 +       0x8003, 0x8003, 0x8003, 0xa080, 0xa933, 0x2060, 0x007c, 0x6854,
4720 +       0xa08a, 0x199a, 0x0048, 0x5b2e, 0x2001, 0x1999, 0xa005, 0x00c0,
4721 +       0x5b3d, 0x0c7e, 0x2061, 0xa933, 0x6014, 0x0c7f, 0xa005, 0x00c0,
4722 +       0x5b42, 0x2001, 0x001e, 0x0078, 0x5b42, 0xa08e, 0xffff, 0x00c0,
4723 +       0x5b42, 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c,
4724 +       0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x0040, 0x5b9e, 0xd0b4, 0x00c0,
4725 +       0x5b59, 0xd0bc, 0x00c0, 0x5b8b, 0x2009, 0x0006, 0x1078, 0x5bc3,
4726 +       0x007c, 0xd0fc, 0x0040, 0x5b64, 0xa084, 0x0003, 0x0040, 0x5b64,
4727 +       0xa086, 0x0003, 0x00c0, 0x5bbc, 0x6024, 0xd0d4, 0x0040, 0x5b6e,
4728 +       0xc0d4, 0x6026, 0x6860, 0x602a, 0x685c, 0x602e, 0x2009, 0xa674,
4729 +       0x2104, 0xd084, 0x0040, 0x5b83, 0x6118, 0xa188, 0x0027, 0x2104,
4730 +       0xd08c, 0x00c0, 0x5b83, 0x87ff, 0x00c0, 0x5b82, 0x2009, 0x0042,
4731 +       0x1078, 0x775c, 0x007c, 0x87ff, 0x00c0, 0x5b8a, 0x2009, 0x0043,
4732 +       0x1078, 0x775c, 0x007c, 0xd0fc, 0x0040, 0x5b96, 0xa084, 0x0003,
4733 +       0x0040, 0x5b96, 0xa086, 0x0003, 0x00c0, 0x5bbc, 0x87ff, 0x00c0,
4734 +       0x5b9d, 0x2009, 0x0042, 0x1078, 0x775c, 0x007c, 0xd0fc, 0x0040,
4735 +       0x5baf, 0xa084, 0x0003, 0xa08e, 0x0002, 0x0040, 0x5bb3, 0x87ff,
4736 +       0x00c0, 0x5bae, 0x2009, 0x0041, 0x1078, 0x775c, 0x007c, 0x1078,
4737 +       0x5bc1, 0x0078, 0x5bae, 0x87ff, 0x00c0, 0x5bae, 0x2009, 0x0043,
4738 +       0x1078, 0x775c, 0x0078, 0x5bae, 0x2009, 0x0004, 0x1078, 0x5bc3,
4739 +       0x007c, 0x2009, 0x0001, 0x0d7e, 0x6010, 0xa0ec, 0xf000, 0x0040,
4740 +       0x5bef, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, 0x00c0,
4741 +       0x5be5, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x00c0, 0x5be5,
4742 +       0x0c7e, 0x2061, 0xa933, 0x6200, 0xd28c, 0x00c0, 0x5be4, 0x6204,
4743 +       0x8210, 0x0048, 0x5be4, 0x6206, 0x0c7f, 0x1078, 0x4a73, 0x6010,
4744 +       0xa06d, 0x077e, 0x2039, 0x0000, 0x10c0, 0x5b27, 0x077f, 0x0d7f,
4745 +       0x007c, 0x157e, 0x0c7e, 0x2061, 0xa933, 0x6000, 0x81ff, 0x0040,
4746 +       0x5bfc, 0xa205, 0x0078, 0x5bfd, 0xa204, 0x6002, 0x0c7f, 0x157f,
4747 +       0x007c, 0x6800, 0xd08c, 0x00c0, 0x5c0d, 0x6808, 0xa005, 0x0040,
4748 +       0x5c0d, 0x8001, 0x680a, 0xa085, 0x0001, 0x007c, 0x20a9, 0x0010,
4749 +       0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, 0x5c17, 0xa200, 0x00f0,
4750 +       0x5c12, 0x8086, 0x818e, 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005,
4751 +       0x0040, 0x5c3d, 0xa11a, 0x00c8, 0x5c3d, 0x8213, 0x818d, 0x0048,
4752 +       0x5c30, 0xa11a, 0x00c8, 0x5c31, 0x00f0, 0x5c25, 0x0078, 0x5c35,
4753 +       0xa11a, 0x2308, 0x8210, 0x00f0, 0x5c25, 0x007e, 0x3200, 0xa084,
4754 +       0xf7ff, 0x2080, 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085,
4755 +       0x0800, 0x0078, 0x5c39, 0x127e, 0x2091, 0x2200, 0x2079, 0xa8b1,
4756 +       0x127f, 0x0d7e, 0x2069, 0xa8b1, 0x6803, 0x0005, 0x2069, 0x0004,
4757 +       0x2d04, 0xa085, 0x8001, 0x206a, 0x0d7f, 0x007c, 0x0c7e, 0x6027,
4758 +       0x0001, 0x7804, 0xa084, 0x0007, 0x0079, 0x5c5e, 0x5c68, 0x5c8d,
4759 +       0x5ce8, 0x5c6e, 0x5c8d, 0x5c68, 0x5c66, 0x5c66, 0x1078, 0x1332,
4760 +       0x1078, 0x5acb, 0x1078, 0x62d1, 0x0c7f, 0x007c, 0x62c0, 0x82ff,
4761 +       0x00c0, 0x5c74, 0x0c7f, 0x007c, 0x2011, 0x41dc, 0x1078, 0x5a45,
4762 +       0x7828, 0xa092, 0x00c8, 0x00c8, 0x5c83, 0x8000, 0x782a, 0x1078,
4763 +       0x421b, 0x0078, 0x5c72, 0x1078, 0x41dc, 0x7807, 0x0003, 0x7827,
4764 +       0x0000, 0x782b, 0x0000, 0x0078, 0x5c72, 0x1078, 0x5acb, 0x3c00,
4765 +       0x007e, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x007f, 0x20e0,
4766 +       0x82ff, 0x0040, 0x5cab, 0x62c0, 0x82ff, 0x00c0, 0x5cab, 0x782b,
4767 +       0x0000, 0x7824, 0xa065, 0x1040, 0x1332, 0x2009, 0x0013, 0x1078,
4768 +       0x775c, 0x0c7f, 0x007c, 0x3900, 0xa082, 0xa9e3, 0x00c8, 0x5cb2,
4769 +       0x1078, 0x747a, 0x0c7e, 0x7824, 0xa065, 0x1040, 0x1332, 0x7804,
4770 +       0xa086, 0x0004, 0x0040, 0x5d2d, 0x7828, 0xa092, 0x2710, 0x00c8,
4771 +       0x5cc8, 0x8000, 0x782a, 0x0c7f, 0x1078, 0x6e01, 0x0078, 0x5ca9,
4772 +       0x6104, 0xa186, 0x0003, 0x00c0, 0x5cdf, 0x0e7e, 0x2071, 0xa600,
4773 +       0x70d8, 0x0e7f, 0xd08c, 0x0040, 0x5cdf, 0x0c7e, 0x0e7e, 0x2061,
4774 +       0x0100, 0x2071, 0xa600, 0x1078, 0x4224, 0x0e7f, 0x0c7f, 0x1078,
4775 +       0xa5c4, 0x2009, 0x0014, 0x1078, 0x775c, 0x0c7f, 0x0078, 0x5ca9,
4776 +       0x2001, 0xa8cd, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x00c0, 0x5cfc,
4777 +       0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x1332, 0x2009, 0x0013,
4778 +       0x1078, 0x77b3, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x3900, 0xa082,
4779 +       0xa9e3, 0x00c8, 0x5d05, 0x1078, 0x747a, 0x7824, 0xa005, 0x1040,
4780 +       0x1332, 0x781c, 0xa06d, 0x1040, 0x1332, 0x6800, 0xc0dc, 0x6802,
4781 +       0x7924, 0x2160, 0x1078, 0x772d, 0x693c, 0x81ff, 0x1040, 0x1332,
4782 +       0x8109, 0x693e, 0x6854, 0xa015, 0x0040, 0x5d21, 0x7a1e, 0x0078,
4783 +       0x5d23, 0x7918, 0x791e, 0x7807, 0x0000, 0x7827, 0x0000, 0x0d7f,
4784 +       0x0c7f, 0x1078, 0x62d1, 0x0078, 0x5cfa, 0x6104, 0xa186, 0x0002,
4785 +       0x0040, 0x5d38, 0xa186, 0x0004, 0x0040, 0x5d38, 0x0078, 0x5cbc,
4786 +       0x7808, 0xac06, 0x0040, 0x5cbc, 0x1078, 0x61cd, 0x1078, 0x5dd7,
4787 +       0x0c7f, 0x1078, 0x62d1, 0x0078, 0x5ca9, 0x0c7e, 0x6027, 0x0002,
4788 +       0x62c8, 0x82ff, 0x00c0, 0x5d61, 0x62c4, 0x82ff, 0x00c0, 0x5d61,
4789 +       0x793c, 0xa1e5, 0x0000, 0x0040, 0x5d5b, 0x2009, 0x0049, 0x1078,
4790 +       0x775c, 0x0c7f, 0x007c, 0x2011, 0xa8d0, 0x2013, 0x0000, 0x0078,
4791 +       0x5d59, 0x3908, 0xa192, 0xa9e3, 0x00c8, 0x5d68, 0x1078, 0x747a,
4792 +       0x6017, 0x0010, 0x793c, 0x81ff, 0x0040, 0x5d5b, 0x7944, 0xa192,
4793 +       0x7530, 0x00c8, 0x5d85, 0x8108, 0x7946, 0x793c, 0xa188, 0x0007,
4794 +       0x210c, 0xa18e, 0x0006, 0x00c0, 0x5d81, 0x6017, 0x0012, 0x0078,
4795 +       0x5d59, 0x6017, 0x0016, 0x0078, 0x5d59, 0x7848, 0xc085, 0x784a,
4796 +       0x0078, 0x5d59, 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000,
4797 +       0x600f, 0x0000, 0x2c08, 0x2061, 0xa8b1, 0x6020, 0x8000, 0x6022,
4798 +       0x6010, 0xa005, 0x0040, 0x5da5, 0xa080, 0x0003, 0x2102, 0x6112,
4799 +       0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c, 0x6116, 0x6112, 0x0078,
4800 +       0x5da0, 0x0d7e, 0x2069, 0xa8b1, 0x6000, 0xd0d4, 0x0040, 0x5dbe,
4801 +       0x6820, 0x8000, 0x6822, 0xa086, 0x0001, 0x00c0, 0x5db9, 0x2c00,
4802 +       0x681e, 0x6804, 0xa084, 0x0007, 0x0079, 0x62d9, 0xc0d5, 0x6002,
4803 +       0x6818, 0xa005, 0x0040, 0x5dd0, 0x6056, 0x605b, 0x0000, 0x007e,
4804 +       0x2c00, 0x681a, 0x0d7f, 0x685a, 0x2069, 0xa8b1, 0x0078, 0x5db0,
4805 +       0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x0078, 0x5db0, 0x007e,
4806 +       0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08,
4807 +       0x2061, 0xa8b1, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0040,
4808 +       0x5df2, 0xa080, 0x0003, 0x2102, 0x610a, 0x127f, 0x0c7f, 0x017f,
4809 +       0x007f, 0x007c, 0x610e, 0x610a, 0x0078, 0x5ded, 0x0c7e, 0x600f,
4810 +       0x0000, 0x2c08, 0x2061, 0xa8b1, 0x6034, 0xa005, 0x0040, 0x5e06,
4811 +       0xa080, 0x0003, 0x2102, 0x6136, 0x0c7f, 0x007c, 0x613a, 0x6136,
4812 +       0x0078, 0x5e04, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x057e,
4813 +       0x037e, 0x027e, 0x017e, 0x007e, 0x127e, 0xa02e, 0x2071, 0xa8b1,
4814 +       0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x5e8c,
4815 +       0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x5e87, 0x87ff,
4816 +       0x0040, 0x5e2e, 0x6020, 0xa106, 0x00c0, 0x5e87, 0x703c, 0xac06,
4817 +       0x00c0, 0x5e44, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x7033,
4818 +       0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b,
4819 +       0x0000, 0x037f, 0x2029, 0x0001, 0x7038, 0xac36, 0x00c0, 0x5e4a,
4820 +       0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5e58, 0x2c00, 0xaf36,
4821 +       0x0040, 0x5e56, 0x2f00, 0x7036, 0x0078, 0x5e58, 0x7037, 0x0000,
4822 +       0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5e61, 0x7e0e, 0x0078,
4823 +       0x5e62, 0x2678, 0x600f, 0x0000, 0x1078, 0x8d06, 0x0040, 0x5e82,
4824 +       0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5e9d, 0x6837,
4825 +       0x0103, 0x6b4a, 0x6847, 0x0000, 0x017e, 0x037e, 0x077e, 0x1078,
4826 +       0x8f7d, 0x1078, 0xa4e2, 0x1078, 0x4a73, 0x077f, 0x037f, 0x017f,
4827 +       0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x5e1d, 0x2c78,
4828 +       0x600c, 0x2060, 0x0078, 0x5e1d, 0x85ff, 0x0040, 0x5e91, 0x1078,
4829 +       0x639b, 0x127f, 0x007f, 0x017f, 0x027f, 0x037f, 0x057f, 0x067f,
4830 +       0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006,
4831 +       0x00c0, 0x5e6f, 0x017e, 0x037e, 0x077e, 0x1078, 0xa4e2, 0x1078,
4832 +       0xa1ca, 0x077f, 0x037f, 0x017f, 0x0078, 0x5e82, 0x007e, 0x067e,
4833 +       0x0c7e, 0x0d7e, 0x0f7e, 0x2031, 0x0000, 0x127e, 0x2091, 0x8000,
4834 +       0x2079, 0xa8b1, 0x7838, 0xa065, 0x0040, 0x5eef, 0x600c, 0x007e,
4835 +       0x600f, 0x0000, 0x783c, 0xac06, 0x00c0, 0x5ed6, 0x037e, 0x2019,
4836 +       0x0001, 0x1078, 0x7058, 0x7833, 0x0000, 0x783f, 0x0000, 0x7843,
4837 +       0x0000, 0x7847, 0x0000, 0x784b, 0x0000, 0x037f, 0x1078, 0x8d06,
4838 +       0x0040, 0x5eea, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0,
4839 +       0x5ef8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73,
4840 +       0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x007f, 0x0078, 0x5ebb, 0x7e3a,
4841 +       0x7e36, 0x127f, 0x0f7f, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c,
4842 +       0x601c, 0xa086, 0x0006, 0x00c0, 0x5ee1, 0x1078, 0xa1ca, 0x0078,
4843 +       0x5eea, 0x017e, 0x027e, 0x087e, 0x2041, 0x0000, 0x1078, 0x5f1b,
4844 +       0x1078, 0x5fdb, 0x087f, 0x027f, 0x017f, 0x007c, 0x0f7e, 0x127e,
4845 +       0x2079, 0xa8b1, 0x2091, 0x8000, 0x1078, 0x6076, 0x1078, 0x60ec,
4846 +       0x127f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e,
4847 +       0x017e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x7614,
4848 +       0x2660, 0x2678, 0x8cff, 0x0040, 0x5fb5, 0x6018, 0xa080, 0x0028,
4849 +       0x2004, 0xa206, 0x00c0, 0x5fb0, 0x88ff, 0x0040, 0x5f3b, 0x6020,
4850 +       0xa106, 0x00c0, 0x5fb0, 0x7024, 0xac06, 0x00c0, 0x5f6b, 0x2069,
4851 +       0x0100, 0x68c0, 0xa005, 0x0040, 0x5f66, 0x1078, 0x5acb, 0x1078,
4852 +       0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7027, 0x0000, 0x037e,
4853 +       0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x5f5b, 0x6803,
4854 +       0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040,
4855 +       0x5f63, 0x6827, 0x0001, 0x037f, 0x0078, 0x5f6b, 0x6003, 0x0009,
4856 +       0x630a, 0x0078, 0x5fb0, 0x7014, 0xac36, 0x00c0, 0x5f71, 0x660c,
4857 +       0x7616, 0x7010, 0xac36, 0x00c0, 0x5f7f, 0x2c00, 0xaf36, 0x0040,
4858 +       0x5f7d, 0x2f00, 0x7012, 0x0078, 0x5f7f, 0x7013, 0x0000, 0x660c,
4859 +       0x067e, 0x2c00, 0xaf06, 0x0040, 0x5f88, 0x7e0e, 0x0078, 0x5f89,
4860 +       0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
4861 +       0x5fa9, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5fbe, 0x6837, 0x0103,
4862 +       0x6b4a, 0x6847, 0x0000, 0x017e, 0x037e, 0x087e, 0x1078, 0x8f7d,
4863 +       0x1078, 0xa4e2, 0x1078, 0x4a73, 0x087f, 0x037f, 0x017f, 0x1078,
4864 +       0x8eb9, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x0c7f, 0x0078, 0x5f2a,
4865 +       0x2c78, 0x600c, 0x2060, 0x0078, 0x5f2a, 0x127f, 0x007f, 0x017f,
4866 +       0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086,
4867 +       0x0006, 0x00c0, 0x5fcf, 0x017e, 0x037e, 0x087e, 0x1078, 0xa4e2,
4868 +       0x1078, 0xa1ca, 0x087f, 0x037f, 0x017f, 0x0078, 0x5fa9, 0x601c,
4869 +       0xa086, 0x0002, 0x00c0, 0x5fa9, 0x6004, 0xa086, 0x0085, 0x0040,
4870 +       0x5f96, 0x0078, 0x5fa9, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000,
4871 +       0xa280, 0xa735, 0x2004, 0xa065, 0x0040, 0x6072, 0x0f7e, 0x0e7e,
4872 +       0x0d7e, 0x067e, 0x2071, 0xa8b1, 0x6654, 0x7018, 0xac06, 0x00c0,
4873 +       0x5ff2, 0x761a, 0x701c, 0xac06, 0x00c0, 0x5ffe, 0x86ff, 0x00c0,
4874 +       0x5ffd, 0x7018, 0x701e, 0x0078, 0x5ffe, 0x761e, 0x6058, 0xa07d,
4875 +       0x0040, 0x6003, 0x7e56, 0xa6ed, 0x0000, 0x0040, 0x6009, 0x2f00,
4876 +       0x685a, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc,
4877 +       0x6002, 0x1078, 0x44d3, 0x0040, 0x606e, 0x7624, 0x86ff, 0x0040,
4878 +       0x605c, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x605c, 0x0d7e,
4879 +       0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x6053, 0x1078, 0x5acb,
4880 +       0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7027, 0x0000,
4881 +       0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x603c,
4882 +       0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
4883 +       0x0040, 0x6044, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c,
4884 +       0xa005, 0x0040, 0x604d, 0x8001, 0x603e, 0x2660, 0x1078, 0x8ec6,
4885 +       0x0c7f, 0x0078, 0x605c, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009,
4886 +       0x630a, 0x0c7f, 0x0078, 0x6011, 0x8dff, 0x0040, 0x606a, 0x6837,
4887 +       0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x8f7d, 0x1078, 0xa4e2,
4888 +       0x1078, 0x4a73, 0x1078, 0x7233, 0x0078, 0x6011, 0x067f, 0x0d7f,
4889 +       0x0e7f, 0x0f7f, 0x127f, 0x007f, 0x0c7f, 0x007c, 0x007e, 0x067e,
4890 +       0x0c7e, 0x0d7e, 0x2031, 0x0000, 0x7814, 0xa065, 0x0040, 0x60d0,
4891 +       0x600c, 0x007e, 0x600f, 0x0000, 0x7824, 0xac06, 0x00c0, 0x60b5,
4892 +       0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x60af, 0x1078, 0x5acb,
4893 +       0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7827, 0x0000,
4894 +       0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x60a4,
4895 +       0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
4896 +       0x0040, 0x60ac, 0x6827, 0x0001, 0x037f, 0x0078, 0x60b5, 0x6003,
4897 +       0x0009, 0x630a, 0x2c30, 0x0078, 0x60cd, 0x6010, 0x2068, 0x1078,
4898 +       0x8d06, 0x0040, 0x60c9, 0x601c, 0xa086, 0x0003, 0x00c0, 0x60d7,
4899 +       0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078,
4900 +       0x8eb9, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x007f, 0x0078, 0x607d,
4901 +       0x7e16, 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c,
4902 +       0xa086, 0x0006, 0x00c0, 0x60e0, 0x1078, 0xa1ca, 0x0078, 0x60c9,
4903 +       0x601c, 0xa086, 0x0002, 0x00c0, 0x60c9, 0x6004, 0xa086, 0x0085,
4904 +       0x0040, 0x60c0, 0x0078, 0x60c9, 0x007e, 0x067e, 0x0c7e, 0x0d7e,
4905 +       0x7818, 0xa065, 0x0040, 0x615a, 0x6054, 0x007e, 0x6057, 0x0000,
4906 +       0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x44d3,
4907 +       0x0040, 0x6157, 0x7e24, 0x86ff, 0x0040, 0x6149, 0xa680, 0x0004,
4908 +       0x2004, 0xad06, 0x00c0, 0x6149, 0x0d7e, 0x2069, 0x0100, 0x68c0,
4909 +       0xa005, 0x0040, 0x6140, 0x1078, 0x5acb, 0x1078, 0x6e0f, 0x68c3,
4910 +       0x0000, 0x1078, 0x7378, 0x7827, 0x0000, 0x037e, 0x2069, 0x0140,
4911 +       0x6b04, 0xa384, 0x1000, 0x0040, 0x6129, 0x6803, 0x0100, 0x6803,
4912 +       0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x6131, 0x6827,
4913 +       0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, 0x613a,
4914 +       0x8001, 0x603e, 0x2660, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x6149,
4915 +       0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078,
4916 +       0x60fe, 0x8dff, 0x0040, 0x6153, 0x6837, 0x0103, 0x6b4a, 0x6847,
4917 +       0x0000, 0x1078, 0x4a73, 0x1078, 0x7233, 0x0078, 0x60fe, 0x007f,
4918 +       0x0078, 0x60f1, 0x781e, 0x781a, 0x0d7f, 0x0c7f, 0x067f, 0x007f,
4919 +       0x007c, 0x0e7e, 0x0d7e, 0x067e, 0x6000, 0xd0dc, 0x0040, 0x6181,
4920 +       0x604c, 0xa06d, 0x0040, 0x6181, 0x6848, 0xa606, 0x00c0, 0x6181,
4921 +       0x2071, 0xa8b1, 0x7024, 0xa035, 0x0040, 0x6181, 0xa080, 0x0004,
4922 +       0x2004, 0xad06, 0x00c0, 0x6181, 0x6000, 0xc0dc, 0x6002, 0x1078,
4923 +       0x6185, 0x067f, 0x0d7f, 0x0e7f, 0x007c, 0x0f7e, 0x2079, 0x0100,
4924 +       0x78c0, 0xa005, 0x00c0, 0x6194, 0x0c7e, 0x2660, 0x6003, 0x0009,
4925 +       0x630a, 0x0c7f, 0x0078, 0x61cb, 0x1078, 0x6e0f, 0x78c3, 0x0000,
4926 +       0x1078, 0x7378, 0x7027, 0x0000, 0x037e, 0x2079, 0x0140, 0x7b04,
4927 +       0xa384, 0x1000, 0x0040, 0x61a8, 0x7803, 0x0100, 0x7803, 0x0000,
4928 +       0x2079, 0x0100, 0x7824, 0xd084, 0x0040, 0x61b0, 0x7827, 0x0001,
4929 +       0x1078, 0x7378, 0x037f, 0x1078, 0x44d3, 0x0c7e, 0x603c, 0xa005,
4930 +       0x0040, 0x61bc, 0x8001, 0x603e, 0x2660, 0x1078, 0x772d, 0x0c7f,
4931 +       0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x8f7d, 0x1078,
4932 +       0x4a73, 0x1078, 0x7233, 0x0f7f, 0x007c, 0x0e7e, 0x0c7e, 0x2071,
4933 +       0xa8b1, 0x7004, 0xa084, 0x0007, 0x0079, 0x61d6, 0x61e0, 0x61e3,
4934 +       0x61fc, 0x6218, 0x6262, 0x61e0, 0x61e0, 0x61de, 0x1078, 0x1332,
4935 +       0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x61f1, 0x7020,
4936 +       0x8001, 0x7022, 0x600c, 0xa015, 0x0040, 0x61f8, 0x7216, 0x600f,
4937 +       0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c,
4938 +       0x7216, 0x7212, 0x0078, 0x61f1, 0x6018, 0x2060, 0x1078, 0x44d3,
4939 +       0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0040, 0x620d,
4940 +       0x6054, 0xa015, 0x0040, 0x6214, 0x721e, 0x7007, 0x0000, 0x7027,
4941 +       0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7218, 0x721e, 0x0078, 0x620d,
4942 +       0x7024, 0xa065, 0x0040, 0x625f, 0x700c, 0xac06, 0x00c0, 0x622f,
4943 +       0x1078, 0x7233, 0x600c, 0xa015, 0x0040, 0x622b, 0x720e, 0x600f,
4944 +       0x0000, 0x0078, 0x625d, 0x720e, 0x720a, 0x0078, 0x625d, 0x7014,
4945 +       0xac06, 0x00c0, 0x6242, 0x1078, 0x7233, 0x600c, 0xa015, 0x0040,
4946 +       0x623e, 0x7216, 0x600f, 0x0000, 0x0078, 0x625d, 0x7216, 0x7212,
4947 +       0x0078, 0x625d, 0x601c, 0xa086, 0x0003, 0x00c0, 0x625d, 0x6018,
4948 +       0x2060, 0x1078, 0x44d3, 0x6000, 0xc0dc, 0x6002, 0x1078, 0x7233,
4949 +       0x701c, 0xa065, 0x0040, 0x625d, 0x6054, 0xa015, 0x0040, 0x625b,
4950 +       0x721e, 0x0078, 0x625d, 0x7218, 0x721e, 0x7027, 0x0000, 0x0c7f,
4951 +       0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x626f, 0x1078, 0x7233,
4952 +       0x600c, 0xa015, 0x0040, 0x6276, 0x720e, 0x600f, 0x0000, 0x1078,
4953 +       0x7378, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x720e, 0x720a,
4954 +       0x0078, 0x626f, 0x0d7e, 0x2069, 0xa8b1, 0x6830, 0xa084, 0x0003,
4955 +       0x0079, 0x6282, 0x6288, 0x628a, 0x62b4, 0x6288, 0x1078, 0x1332,
4956 +       0x0d7f, 0x007c, 0x0c7e, 0x6840, 0xa086, 0x0001, 0x0040, 0x62aa,
4957 +       0x683c, 0xa065, 0x0040, 0x629b, 0x600c, 0xa015, 0x0040, 0x62a6,
4958 +       0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x2011,
4959 +       0xa8d0, 0x2013, 0x0000, 0x0c7f, 0x0d7f, 0x007c, 0x683a, 0x6836,
4960 +       0x0078, 0x629b, 0x6843, 0x0000, 0x6838, 0xa065, 0x0040, 0x629b,
4961 +       0x6003, 0x0003, 0x0078, 0x629b, 0x0c7e, 0x6843, 0x0000, 0x6847,
4962 +       0x0000, 0x684b, 0x0000, 0x683c, 0xa065, 0x0040, 0x62ce, 0x600c,
4963 +       0xa015, 0x0040, 0x62ca, 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000,
4964 +       0x0078, 0x62ce, 0x683f, 0x0000, 0x683a, 0x6836, 0x0c7f, 0x0d7f,
4965 +       0x007c, 0x0d7e, 0x2069, 0xa8b1, 0x6804, 0xa084, 0x0007, 0x0079,
4966 +       0x62d9, 0x62e3, 0x638a, 0x638a, 0x638a, 0x638a, 0x638c, 0x638a,
4967 +       0x62e1, 0x1078, 0x1332, 0x6820, 0xa005, 0x00c0, 0x62e9, 0x0d7f,
4968 +       0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, 0x62f8, 0x6807, 0x0004,
4969 +       0x6826, 0x682b, 0x0000, 0x1078, 0x63d4, 0x0c7f, 0x0d7f, 0x007c,
4970 +       0x6814, 0xa065, 0x0040, 0x6306, 0x6807, 0x0001, 0x6826, 0x682b,
4971 +       0x0000, 0x1078, 0x63d4, 0x0c7f, 0x0d7f, 0x007c, 0x0e7e, 0x037e,
4972 +       0x6a1c, 0xa2f5, 0x0000, 0x0040, 0x6385, 0x704c, 0xa00d, 0x0040,
4973 +       0x6315, 0x7088, 0xa005, 0x0040, 0x632d, 0x7054, 0xa075, 0x0040,
4974 +       0x631e, 0xa20e, 0x0040, 0x6385, 0x0078, 0x6323, 0x6818, 0xa20e,
4975 +       0x0040, 0x6385, 0x2070, 0x704c, 0xa00d, 0x0040, 0x6315, 0x7088,
4976 +       0xa005, 0x00c0, 0x6315, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302,
4977 +       0x00c8, 0x6315, 0x1078, 0x76fc, 0x0040, 0x6385, 0x8318, 0x733e,
4978 +       0x6112, 0x2e10, 0x621a, 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff,
4979 +       0x6032, 0xa180, 0x0014, 0x2003, 0x0000, 0xa180, 0x0015, 0x2004,
4980 +       0xa08a, 0x199a, 0x0048, 0x634e, 0x2001, 0x1999, 0x8003, 0x801b,
4981 +       0x831b, 0xa318, 0x6316, 0x037f, 0x0f7e, 0x2c78, 0x71a0, 0xd1bc,
4982 +       0x0040, 0x6367, 0x7100, 0xd1f4, 0x0040, 0x6363, 0x7114, 0xa18c,
4983 +       0x00ff, 0x0078, 0x636c, 0x2009, 0x0000, 0x0078, 0x636c, 0xa1e0,
4984 +       0x29c0, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x1078,
4985 +       0x6965, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26,
4986 +       0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040,
4987 +       0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f, 0x007c, 0x037f, 0x0e7f, 0x0c7f,
4988 +       0x0078, 0x6383, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040,
4989 +       0x6398, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x63d4,
4990 +       0x0c7f, 0x0d7f, 0x007c, 0x0f7e, 0x0d7e, 0x2069, 0xa8b1, 0x6830,
4991 +       0xa086, 0x0000, 0x00c0, 0x63bb, 0x6838, 0xa07d, 0x0040, 0x63bb,
4992 +       0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x127e,
4993 +       0x0f7e, 0x2091, 0x2200, 0x027f, 0x1078, 0x1d6d, 0x00c0, 0x63be,
4994 +       0x127f, 0x1078, 0x6cb3, 0x0d7f, 0x0f7f, 0x007c, 0x127f, 0x6843,
4995 +       0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0040, 0x63d0, 0x6a3a,
4996 +       0x780f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x63bb,
4997 +       0x683a, 0x6836, 0x0078, 0x63ca, 0x601c, 0xa084, 0x000f, 0x1079,
4998 +       0x63da, 0x007c, 0x63e3, 0x63e8, 0x6809, 0x6922, 0x63e8, 0x6809,
4999 +       0x6922, 0x63e3, 0x63e8, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x007c,
5000 +       0x157e, 0x137e, 0x147e, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0044,
5001 +       0x10c8, 0x1332, 0x6118, 0x2178, 0x79a0, 0xd1bc, 0x0040, 0x6405,
5002 +       0x7900, 0xd1f4, 0x0040, 0x6401, 0x7914, 0xa18c, 0x00ff, 0x0078,
5003 +       0x640a, 0x2009, 0x0000, 0x0078, 0x640a, 0xa1f8, 0x29c0, 0x2f0c,
5004 +       0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa08a, 0x0040,
5005 +       0x00c8, 0x645c, 0x1079, 0x641a, 0x0f7f, 0x0c7f, 0x147f, 0x137f,
5006 +       0x157f, 0x007c, 0x64c2, 0x650a, 0x6532, 0x65cd, 0x65fd, 0x6605,
5007 +       0x662c, 0x663d, 0x664e, 0x6656, 0x666e, 0x6656, 0x66d9, 0x663d,
5008 +       0x66fa, 0x6702, 0x664e, 0x6702, 0x6713, 0x645a, 0x645a, 0x645a,
5009 +       0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a,
5010 +       0x6eef, 0x6f14, 0x6f29, 0x6f4c, 0x6f6d, 0x662c, 0x645a, 0x662c,
5011 +       0x6656, 0x645a, 0x6532, 0x65cd, 0x645a, 0x749c, 0x6656, 0x645a,
5012 +       0x74bc, 0x6656, 0x645a, 0x645a, 0x64bd, 0x646b, 0x645a, 0x74e1,
5013 +       0x7558, 0x7640, 0x645a, 0x7651, 0x6626, 0x766d, 0x645a, 0x6f82,
5014 +       0x645a, 0x645a, 0x1078, 0x1332, 0x2100, 0x1079, 0x6465, 0x0f7f,
5015 +       0x0c7f, 0x147f, 0x137f, 0x157f, 0x007c, 0x6469, 0x6469, 0x6469,
5016 +       0x649f, 0x1078, 0x1332, 0x0d7e, 0x20a1, 0x020b, 0x1078, 0x6731,
5017 +       0x7810, 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, 0x20a3, 0x0800,
5018 +       0x683c, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
5019 +       0x20a3, 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, 0x20a3, 0x0000,
5020 +       0x20a3, 0x0000, 0x60c3, 0x0018, 0x1078, 0x6dfb, 0x0d7f, 0x007c,
5021 +       0x0d7e, 0x7818, 0x2068, 0x68a0, 0xa082, 0x007e, 0x0048, 0x649c,
5022 +       0xa085, 0x0001, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x649a, 0x0d7e,
5023 +       0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x0500, 0x20a3, 0x0000,
5024 +       0x7810, 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, 0x20a2, 0x6810,
5025 +       0x20a2, 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, 0x20a2, 0x60c3,
5026 +       0x0010, 0x1078, 0x6dfb, 0x0d7f, 0x007c, 0x6030, 0x609a, 0x1078,
5027 +       0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x5200,
5028 +       0x20a3, 0x0000, 0x0d7e, 0x2069, 0xa652, 0x6804, 0xd084, 0x0040,
5029 +       0x64dc, 0x6828, 0x20a3, 0x0000, 0x017e, 0x1078, 0x2564, 0x21a2,
5030 +       0x017f, 0x0d7f, 0x0078, 0x64e1, 0x0d7f, 0x20a3, 0x0000, 0x20a3,
5031 +       0x0000, 0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x20a9, 0x0004,
5032 +       0x2099, 0xa601, 0x53a6, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082,
5033 +       0x007f, 0x0048, 0x64fb, 0x2001, 0xa61b, 0x20a6, 0x2001, 0xa61c,
5034 +       0x20a6, 0x0078, 0x6501, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff,
5035 +       0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078,
5036 +       0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x0500,
5037 +       0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f,
5038 +       0x0048, 0x6522, 0x2001, 0xa61b, 0x20a6, 0x2001, 0xa61c, 0x20a6,
5039 +       0x0078, 0x6528, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2,
5040 +       0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x60c3, 0x0010, 0x1078,
5041 +       0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x0c7e, 0x7818,
5042 +       0x2060, 0x2001, 0x0000, 0x1078, 0x4972, 0x0c7f, 0x7818, 0xa080,
5043 +       0x0028, 0x2004, 0xa086, 0x007e, 0x00c0, 0x654d, 0x20a3, 0x0400,
5044 +       0x620c, 0xc2b4, 0x620e, 0x0078, 0x654f, 0x20a3, 0x0300, 0x20a3,
5045 +       0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0,
5046 +       0x659c, 0x2099, 0xa88d, 0x33a6, 0x9398, 0x33a6, 0x9398, 0x3304,
5047 +       0xa084, 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3,
5048 +       0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099,
5049 +       0xa605, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xa601, 0x53a6, 0x20a9,
5050 +       0x0010, 0x20a3, 0x0000, 0x00f0, 0x6579, 0x2099, 0xa895, 0x3304,
5051 +       0xc0dd, 0x20a2, 0x2001, 0xa672, 0x2004, 0xd0e4, 0x0040, 0x6594,
5052 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x9398, 0x9398, 0x9398, 0x33a6,
5053 +       0x20a9, 0x0004, 0x0078, 0x6596, 0x20a9, 0x0007, 0x20a3, 0x0000,
5054 +       0x00f0, 0x6596, 0x0078, 0x65bc, 0x2099, 0xa88d, 0x20a9, 0x0008,
5055 +       0x53a6, 0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x20a9, 0x0004,
5056 +       0x2099, 0xa601, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0,
5057 +       0x65ad, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x65b3, 0x2099,
5058 +       0xa895, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000,
5059 +       0x00f0, 0x65be, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x65c4,
5060 +       0x60c3, 0x0074, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078,
5061 +       0x6731, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3,
5062 +       0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e,
5063 +       0x2079, 0xa652, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x65e9, 0xa085,
5064 +       0x0020, 0xd1a4, 0x0040, 0x65ee, 0xa085, 0x0010, 0xa085, 0x0002,
5065 +       0x0d7e, 0x0078, 0x66b7, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000,
5066 +       0x60c3, 0x0014, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078,
5067 +       0x6731, 0x20a3, 0x5000, 0x0078, 0x654f, 0x20a1, 0x020b, 0x1078,
5068 +       0x6731, 0x20a3, 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3,
5069 +       0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
5070 +       0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
5071 +       0x0000, 0x60c3, 0x0014, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b,
5072 +       0x1078, 0x67b9, 0x0078, 0x6630, 0x20a1, 0x020b, 0x1078, 0x67c2,
5073 +       0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
5074 +       0x60c3, 0x0004, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078,
5075 +       0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3,
5076 +       0x2a00, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b,
5077 +       0x1078, 0x67c2, 0x20a3, 0x0200, 0x0078, 0x654f, 0x20a1, 0x020b,
5078 +       0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0xa005,
5079 +       0x0040, 0x6665, 0x20a2, 0x0078, 0x6667, 0x20a3, 0x0003, 0x7810,
5080 +       0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x0d7e, 0x20a1,
5081 +       0x020b, 0x1078, 0x67c2, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3,
5082 +       0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x00c0, 0x6694,
5083 +       0x6998, 0xa184, 0xc000, 0x00c0, 0x6690, 0xd1ec, 0x0040, 0x668c,
5084 +       0x20a3, 0x2100, 0x0078, 0x6696, 0x20a3, 0x0100, 0x0078, 0x6696,
5085 +       0x20a3, 0x0400, 0x0078, 0x6696, 0x20a3, 0x0700, 0xa006, 0x20a2,
5086 +       0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0xa652, 0x7904,
5087 +       0x0f7f, 0xd1ac, 0x00c0, 0x66a6, 0xa085, 0x0020, 0xd1a4, 0x0040,
5088 +       0x66ab, 0xa085, 0x0010, 0x2009, 0xa674, 0x210c, 0xd184, 0x0040,
5089 +       0x66b5, 0x699c, 0xd18c, 0x0040, 0x66b7, 0xa085, 0x0002, 0x027e,
5090 +       0x2009, 0xa672, 0x210c, 0xd1e4, 0x0040, 0x66c5, 0xc0c5, 0xa094,
5091 +       0x0030, 0xa296, 0x0010, 0x0040, 0x66cf, 0xd1ec, 0x0040, 0x66cf,
5092 +       0xa094, 0x0030, 0xa296, 0x0010, 0x0040, 0x66cf, 0xc0bd, 0x027f,
5093 +       0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x1078, 0x6dfb, 0x0d7f,
5094 +       0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0210, 0x20a3,
5095 +       0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3,
5096 +       0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
5097 +       0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078,
5098 +       0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0200,
5099 +       0x0078, 0x64c8, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100,
5100 +       0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008,
5101 +       0x1078, 0x6dfb, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1,
5102 +       0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3,
5103 +       0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c,
5104 +       0x027e, 0x037e, 0x047e, 0x2019, 0x3200, 0x2021, 0x0800, 0x0078,
5105 +       0x6738, 0x027e, 0x037e, 0x047e, 0x2019, 0x2200, 0x2021, 0x0100,
5106 +       0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014,
5107 +       0xa286, 0x007e, 0x00c0, 0x674b, 0xa385, 0x00ff, 0x20a2, 0x20a3,
5108 +       0xfffe, 0x0078, 0x6780, 0xa286, 0x007f, 0x00c0, 0x6757, 0x0d7e,
5109 +       0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffd, 0x0078, 0x676e, 0xd2bc,
5110 +       0x0040, 0x6776, 0xa286, 0x0080, 0x0d7e, 0x00c0, 0x6766, 0xa385,
5111 +       0x00ff, 0x20a2, 0x20a3, 0xfffc, 0x0078, 0x676e, 0xa2e8, 0xa735,
5112 +       0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5113 +       0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6784, 0x0d7e, 0xa2e8,
5114 +       0xa735, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x0d7f,
5115 +       0x20a3, 0x0000, 0x6230, 0x22a2, 0xa485, 0x0029, 0x20a2, 0x047f,
5116 +       0x037f, 0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000,
5117 +       0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
5118 +       0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x02ff,
5119 +       0x2011, 0xfffc, 0x22a2, 0x0d7e, 0x2069, 0xa61b, 0x2da6, 0x8d68,
5120 +       0x2da6, 0x0d7f, 0x20a3, 0x2029, 0x20a3, 0x0000, 0x0078, 0x678b,
5121 +       0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0xfc02, 0x20a3, 0x0000,
5122 +       0x007c, 0x027e, 0x037e, 0x047e, 0x2019, 0x3300, 0x2021, 0x0800,
5123 +       0x0078, 0x67c9, 0x027e, 0x037e, 0x047e, 0x2019, 0x2300, 0x2021,
5124 +       0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
5125 +       0x2004, 0xa092, 0x007e, 0x0048, 0x67e6, 0x0d7e, 0xa0e8, 0xa735,
5126 +       0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5127 +       0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x67f4, 0x0d7e, 0xa0e8,
5128 +       0xa735, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x0d7f,
5129 +       0x20a3, 0x0000, 0x6230, 0x22a2, 0xa485, 0x0098, 0x20a2, 0x20a3,
5130 +       0x0000, 0x047f, 0x037f, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000,
5131 +       0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
5132 +       0x007c, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0085, 0x1048, 0x1332,
5133 +       0xa08a, 0x008c, 0x10c8, 0x1332, 0x6118, 0x2178, 0x79a0, 0xd1bc,
5134 +       0x0040, 0x6827, 0x7900, 0xd1f4, 0x0040, 0x6823, 0x7914, 0xa18c,
5135 +       0x00ff, 0x0078, 0x682c, 0x2009, 0x0000, 0x0078, 0x682c, 0xa1f8,
5136 +       0x29c0, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a,
5137 +       0xa082, 0x0085, 0x1079, 0x6837, 0x0f7f, 0x0c7f, 0x007c, 0x6840,
5138 +       0x684b, 0x6866, 0x683e, 0x683e, 0x683e, 0x6840, 0x1078, 0x1332,
5139 +       0x147e, 0x20a1, 0x020b, 0x1078, 0x6879, 0x60c3, 0x0000, 0x1078,
5140 +       0x6dfb, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078, 0x68ad,
5141 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x7810, 0x20a2,
5142 +       0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000,
5143 +       0x60c3, 0x000c, 0x1078, 0x6dfb, 0x147f, 0x007c, 0x147e, 0x20a1,
5144 +       0x020b, 0x1078, 0x68ee, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3,
5145 +       0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078, 0x6dfb, 0x147f,
5146 +       0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080,
5147 +       0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x6898, 0x0d7e, 0xa0e8,
5148 +       0xa735, 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2,
5149 +       0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x68a7,
5150 +       0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2,
5151 +       0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
5152 +       0x0009, 0x20a3, 0x0000, 0x0078, 0x678b, 0x027e, 0x20e1, 0x9080,
5153 +       0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, 0x007e,
5154 +       0x0048, 0x68cc, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085,
5155 +       0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68,
5156 +       0x2da6, 0x0d7f, 0x0078, 0x68db, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5157 +       0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3,
5158 +       0x0000, 0x6230, 0x22a2, 0x20a3, 0x0099, 0x20a3, 0x0000, 0x1078,
5159 +       0x6dea, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x7a10, 0x22a2,
5160 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x027e, 0x20e1,
5161 +       0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092,
5162 +       0x007e, 0x0048, 0x690d, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810,
5163 +       0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6,
5164 +       0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x691c, 0x0d7e, 0xa0e8, 0xa735,
5165 +       0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x0d7f,
5166 +       0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0099, 0x20a3, 0x0000,
5167 +       0x0078, 0x68df, 0x0c7e, 0x0f7e, 0x2c78, 0x7804, 0xa08a, 0x0040,
5168 +       0x1048, 0x1332, 0xa08a, 0x0053, 0x10c8, 0x1332, 0x7918, 0x2160,
5169 +       0x61a0, 0xd1bc, 0x0040, 0x6941, 0x6100, 0xd1f4, 0x0040, 0x693d,
5170 +       0x6114, 0xa18c, 0x00ff, 0x0078, 0x6946, 0x2009, 0x0000, 0x0078,
5171 +       0x6946, 0xa1e0, 0x29c0, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100,
5172 +       0x619a, 0xa082, 0x0040, 0x1079, 0x6950, 0x0f7f, 0x0c7f, 0x007c,
5173 +       0x6965, 0x6a73, 0x6a14, 0x6c27, 0x6963, 0x6963, 0x6963, 0x6963,
5174 +       0x6963, 0x6963, 0x6963, 0x714c, 0x715d, 0x716e, 0x717f, 0x6963,
5175 +       0x767e, 0x6963, 0x713b, 0x1078, 0x1332, 0x0d7e, 0x157e, 0x147e,
5176 +       0x780b, 0xffff, 0x20a1, 0x020b, 0x1078, 0x69d0, 0x7910, 0x2168,
5177 +       0x6948, 0x7922, 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c,
5178 +       0xa184, 0x000f, 0x00c0, 0x6980, 0x2001, 0x0005, 0x0078, 0x698a,
5179 +       0xd184, 0x0040, 0x6987, 0x2001, 0x0004, 0x0078, 0x698a, 0xa084,
5180 +       0x0006, 0x8004, 0x017e, 0x2008, 0x7830, 0xa084, 0x00ff, 0x8007,
5181 +       0xa105, 0x017f, 0x20a2, 0xd1ac, 0x0040, 0x699a, 0x20a3, 0x0002,
5182 +       0x0078, 0x69a6, 0xd1b4, 0x0040, 0x69a1, 0x20a3, 0x0001, 0x0078,
5183 +       0x69a6, 0x20a3, 0x0000, 0x2230, 0x0078, 0x69a8, 0x6a80, 0x6e7c,
5184 +       0x20a9, 0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2, 0x8000,
5185 +       0x00f0, 0x69ac, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080,
5186 +       0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0xa8cd,
5187 +       0x2003, 0x07d0, 0x2001, 0xa8cc, 0x2003, 0x0009, 0x2001, 0xa8d2,
5188 +       0x2003, 0x0002, 0x1078, 0x158c, 0x147f, 0x157f, 0x0d7f, 0x007c,
5189 +       0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014,
5190 +       0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, 0x0028,
5191 +       0x2004, 0xd0bc, 0x0040, 0x69f6, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5192 +       0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5193 +       0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6a05, 0x0d7e, 0xa0e8,
5194 +       0xa735, 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2,
5195 +       0x0d7f, 0x20a3, 0x0000, 0x6130, 0x21a2, 0x20a3, 0x0829, 0x20a3,
5196 +       0x0000, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3,
5197 +       0x0000, 0x20a3, 0x0000, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e,
5198 +       0x20a1, 0x020b, 0x1078, 0x6a34, 0x7810, 0x2068, 0x6860, 0x20a2,
5199 +       0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2,
5200 +       0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x1078, 0x6dfb, 0x147f,
5201 +       0x137f, 0x157f, 0x0d7f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1,
5202 +       0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x6a52,
5203 +       0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2,
5204 +       0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f,
5205 +       0x0078, 0x6a61, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085,
5206 +       0x0500, 0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230,
5207 +       0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2,
5208 +       0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3,
5209 +       0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, 0x7810,
5210 +       0xa0ec, 0xf000, 0x0040, 0x6a8b, 0xa06d, 0x1078, 0x495f, 0x0040,
5211 +       0x6a8b, 0x684c, 0xa084, 0x2020, 0xa086, 0x2020, 0x00c0, 0x6a8b,
5212 +       0x7824, 0xc0cd, 0x7826, 0x20a1, 0x020b, 0x1078, 0x6be0, 0xa016,
5213 +       0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000,
5214 +       0x00c0, 0x6aa2, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x6aaa,
5215 +       0x0078, 0x6aa5, 0xa006, 0x1079, 0x6aaa, 0x147f, 0x137f, 0x157f,
5216 +       0x0d7f, 0x007c, 0x6ab4, 0x6b4c, 0x6b57, 0x6b81, 0x6b95, 0x6bb1,
5217 +       0x6bbc, 0x6ab2, 0x1078, 0x1332, 0x017e, 0x037e, 0x694c, 0xa18c,
5218 +       0x0003, 0x0040, 0x6abf, 0xa186, 0x0003, 0x00c0, 0x6ace, 0x6b78,
5219 +       0x7824, 0xd0cc, 0x0040, 0x6ac5, 0xc3e5, 0x23a2, 0x6868, 0x20a2,
5220 +       0x6864, 0x20a2, 0x037f, 0x017f, 0x0078, 0x6b8c, 0xa186, 0x0001,
5221 +       0x10c0, 0x1332, 0x6b78, 0x7824, 0xd0cc, 0x0040, 0x6ad8, 0xc3e5,
5222 +       0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2,
5223 +       0x22a2, 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0040,
5224 +       0x6b46, 0xd3c4, 0x0040, 0x6aee, 0x687c, 0xa108, 0xd3cc, 0x0040,
5225 +       0x6af3, 0x6874, 0xa108, 0x157e, 0x20a9, 0x000d, 0xad80, 0x0020,
5226 +       0x201c, 0x831f, 0x23a2, 0x8000, 0x00f0, 0x6af8, 0x157f, 0x22a2,
5227 +       0x22a2, 0x22a2, 0xa184, 0x0003, 0x0040, 0x6b46, 0x20a1, 0x020b,
5228 +       0x20e1, 0x9080, 0x20e1, 0x4000, 0x007e, 0x7818, 0xa080, 0x0028,
5229 +       0x2004, 0xd0bc, 0x0040, 0x6b26, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5230 +       0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5231 +       0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6b35, 0x0d7e, 0xa0e8,
5232 +       0xa735, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2,
5233 +       0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x007f, 0x7b24, 0xd3cc,
5234 +       0x0040, 0x6b3e, 0x20a3, 0x0889, 0x0078, 0x6b40, 0x20a3, 0x0898,
5235 +       0x20a2, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x037f,
5236 +       0x017f, 0x1078, 0x6dfb, 0x007c, 0x2011, 0x0008, 0x7824, 0xd0cc,
5237 +       0x0040, 0x6b53, 0xc2e5, 0x22a2, 0xa016, 0x0078, 0x6b8a, 0x2011,
5238 +       0x0302, 0x7824, 0xd0cc, 0x0040, 0x6b5e, 0xc2e5, 0x22a2, 0xa016,
5239 +       0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008,
5240 +       0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500,
5241 +       0x22a2, 0x20a3, 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2,
5242 +       0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x1078, 0x6dfb,
5243 +       0x007c, 0x2011, 0x0028, 0x7824, 0xd0cc, 0x0040, 0x6b88, 0xc2e5,
5244 +       0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
5245 +       0x60c3, 0x0018, 0x1078, 0x6dfb, 0x007c, 0x2011, 0x0100, 0x7824,
5246 +       0xd0cc, 0x0040, 0x6b9c, 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2,
5247 +       0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x7834, 0xa084,
5248 +       0x00ff, 0x20a2, 0x22a2, 0x22a2, 0x60c3, 0x0020, 0x1078, 0x6dfb,
5249 +       0x007c, 0x2011, 0x0008, 0x7824, 0xd0cc, 0x0040, 0x6bb8, 0xc2e5,
5250 +       0x22a2, 0xa016, 0x0078, 0x6b8a, 0x037e, 0x7b10, 0xa384, 0xff00,
5251 +       0x7812, 0xa384, 0x00ff, 0x8001, 0x00c0, 0x6bcf, 0x7824, 0xd0cc,
5252 +       0x0040, 0x6bcb, 0xc2e5, 0x22a2, 0x037f, 0x0078, 0x6b8a, 0x047e,
5253 +       0x2021, 0x0800, 0x007e, 0x7824, 0xd0cc, 0x007f, 0x0040, 0x6bd9,
5254 +       0xc4e5, 0x24a2, 0x047f, 0x22a2, 0x20a2, 0x037f, 0x0078, 0x6b8c,
5255 +       0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
5256 +       0x2004, 0xd0bc, 0x0040, 0x6bfe, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5257 +       0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5258 +       0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6c0d, 0x0d7e, 0xa0e8,
5259 +       0xa735, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2,
5260 +       0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x7824, 0xd0cc, 0x0040,
5261 +       0x6c15, 0x20a3, 0x0889, 0x0078, 0x6c17, 0x20a3, 0x0898, 0x20a3,
5262 +       0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2,
5263 +       0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e,
5264 +       0x157e, 0x137e, 0x147e, 0x017e, 0x037e, 0x7810, 0xa084, 0x0700,
5265 +       0x8007, 0x1079, 0x6c3a, 0x037f, 0x017f, 0x147f, 0x137f, 0x157f,
5266 +       0x0d7f, 0x007c, 0x6c42, 0x6c42, 0x6c44, 0x6c42, 0x6c42, 0x6c42,
5267 +       0x6c69, 0x6c42, 0x1078, 0x1332, 0x7910, 0xa18c, 0xf8ff, 0xa18d,
5268 +       0x0600, 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x6c73,
5269 +       0x0d7e, 0x2069, 0xa652, 0x6804, 0xd0bc, 0x0040, 0x6c5e, 0x682c,
5270 +       0xa084, 0x00ff, 0x8007, 0x20a2, 0x0078, 0x6c60, 0x20a3, 0x3f00,
5271 +       0x0d7f, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x1078, 0x6dfb,
5272 +       0x007c, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x6c73, 0x20a3,
5273 +       0x7f00, 0x0078, 0x6c61, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000,
5274 +       0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x6c91, 0x0d7e,
5275 +       0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814,
5276 +       0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078,
5277 +       0x6ca0, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0100,
5278 +       0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2,
5279 +       0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x1078, 0x6dea, 0x22a2,
5280 +       0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3,
5281 +       0x0000, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x057e, 0x047e,
5282 +       0x037e, 0x2061, 0x0100, 0x2071, 0xa600, 0x6130, 0x7818, 0x2068,
5283 +       0x68a0, 0x2028, 0xd0bc, 0x00c0, 0x6cca, 0x6910, 0x6a14, 0x6430,
5284 +       0x0078, 0x6cce, 0x6910, 0x6a14, 0x736c, 0x7470, 0x781c, 0xa086,
5285 +       0x0006, 0x0040, 0x6d2d, 0xd5bc, 0x0040, 0x6cde, 0xa185, 0x0100,
5286 +       0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x6ce5, 0xa185, 0x0100,
5287 +       0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x6073, 0x0809, 0x6077,
5288 +       0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a,
5289 +       0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070,
5290 +       0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca,
5291 +       0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000,
5292 +       0xa582, 0x0080, 0x0048, 0x6d17, 0x6a00, 0xd2f4, 0x0040, 0x6d15,
5293 +       0x6a14, 0xa294, 0x00ff, 0x0078, 0x6d17, 0x2011, 0x0000, 0x629e,
5294 +       0x6017, 0x0016, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005,
5295 +       0x0040, 0x6d24, 0x2009, 0x1b58, 0x1078, 0x5ad0, 0x037f, 0x047f,
5296 +       0x057f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x7810, 0x2070, 0x704c,
5297 +       0xa084, 0x0003, 0xa086, 0x0002, 0x0040, 0x6d85, 0xd5bc, 0x0040,
5298 +       0x6d41, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078,
5299 +       0x6d48, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e,
5300 +       0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff,
5301 +       0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808,
5302 +       0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c,
5303 +       0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, 0x7080, 0x7928, 0xa109,
5304 +       0x792a, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7,
5305 +       0x0000, 0xa582, 0x0080, 0x0048, 0x6d80, 0x6a00, 0xd2f4, 0x0040,
5306 +       0x6d7e, 0x6a14, 0xa294, 0x00ff, 0x0078, 0x6d80, 0x2011, 0x0000,
5307 +       0x629e, 0x6017, 0x0012, 0x0078, 0x6d1a, 0xd5bc, 0x0040, 0x6d90,
5308 +       0xa185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x6d97,
5309 +       0xa185, 0x0700, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x1078,
5310 +       0x495f, 0x0040, 0x6dad, 0x0d7e, 0x7810, 0xa06d, 0x684c, 0x0d7f,
5311 +       0xa084, 0x2020, 0xa086, 0x2020, 0x00c0, 0x6dad, 0x7824, 0xc0cd,
5312 +       0x7826, 0x6073, 0x0889, 0x0078, 0x6daf, 0x6073, 0x0898, 0x6077,
5313 +       0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a,
5314 +       0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a,
5315 +       0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce,
5316 +       0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080,
5317 +       0x0048, 0x6ddd, 0x6a00, 0xd2f4, 0x0040, 0x6ddb, 0x6a14, 0xa294,
5318 +       0x00ff, 0x0078, 0x6ddd, 0x2011, 0x0000, 0x629e, 0x7824, 0xd0cc,
5319 +       0x0040, 0x6de6, 0x6017, 0x0016, 0x0078, 0x6d1a, 0x6017, 0x0012,
5320 +       0x0078, 0x6d1a, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294,
5321 +       0x00ff, 0x2202, 0x8217, 0x007c, 0x0d7e, 0x2069, 0xa8b1, 0x6843,
5322 +       0x0001, 0x0d7f, 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7,
5323 +       0x9575, 0x1078, 0x6e06, 0x1078, 0x5ac0, 0x007c, 0x007e, 0x6014,
5324 +       0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x007f, 0x007c, 0x007e,
5325 +       0x0c7e, 0x2061, 0x0100, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008,
5326 +       0x6016, 0x0c7f, 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e,
5327 +       0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040,
5328 +       0x6e59, 0x1078, 0x6e0f, 0x6803, 0x1000, 0x6803, 0x0000, 0x0c7e,
5329 +       0x2061, 0xa8b1, 0x6128, 0xa192, 0x00c8, 0x00c8, 0x6e44, 0x8108,
5330 +       0x612a, 0x6124, 0x0c7f, 0x81ff, 0x0040, 0x6e54, 0x1078, 0x5ac0,
5331 +       0x1078, 0x6e06, 0x0078, 0x6e54, 0x6124, 0xa1e5, 0x0000, 0x0040,
5332 +       0x6e51, 0x1078, 0xa5c4, 0x1078, 0x5acb, 0x2009, 0x0014, 0x1078,
5333 +       0x775c, 0x0c7f, 0x0078, 0x6e54, 0x027f, 0x017f, 0x0d7f, 0x0c7f,
5334 +       0x007c, 0x2001, 0xa8cd, 0x2004, 0xa005, 0x00c0, 0x6e54, 0x0c7e,
5335 +       0x2061, 0xa8b1, 0x6128, 0xa192, 0x0003, 0x00c8, 0x6e44, 0x8108,
5336 +       0x612a, 0x0c7f, 0x1078, 0x5ac0, 0x1078, 0x4224, 0x0078, 0x6e54,
5337 +       0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x027e, 0x1078, 0x5ad8, 0x2071,
5338 +       0xa8b1, 0x713c, 0x81ff, 0x0040, 0x6e9a, 0x2061, 0x0100, 0x2069,
5339 +       0x0140, 0x6904, 0xa194, 0x4000, 0x0040, 0x6ea0, 0x6803, 0x1000,
5340 +       0x6803, 0x0000, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x037f,
5341 +       0x713c, 0x2160, 0x1078, 0xa5c4, 0x2009, 0x004a, 0x1078, 0x775c,
5342 +       0x0078, 0x6e9a, 0x027f, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c,
5343 +       0x0078, 0x6e8a, 0x0e7e, 0x2071, 0xa8b1, 0x7048, 0xd084, 0x0040,
5344 +       0x6ebc, 0x713c, 0x81ff, 0x0040, 0x6ebc, 0x2071, 0x0100, 0xa188,
5345 +       0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, 0x6eba, 0x7017, 0x0012,
5346 +       0x0078, 0x6ebc, 0x7017, 0x0016, 0x0e7f, 0x007c, 0x0e7e, 0x0d7e,
5347 +       0x0c7e, 0x067e, 0x057e, 0x047e, 0x007e, 0x127e, 0x2091, 0x8000,
5348 +       0x6018, 0x2068, 0x6ca0, 0x2071, 0xa8b1, 0x7018, 0x2068, 0x8dff,
5349 +       0x0040, 0x6ee6, 0x68a0, 0xa406, 0x0040, 0x6eda, 0x6854, 0x2068,
5350 +       0x0078, 0x6ecf, 0x6010, 0x2060, 0x643c, 0x6540, 0x6648, 0x2d60,
5351 +       0x1078, 0x4736, 0x0040, 0x6ee6, 0xa085, 0x0001, 0x127f, 0x007f,
5352 +       0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x20a1,
5353 +       0x020b, 0x1078, 0x6731, 0x20a3, 0x1200, 0x20a3, 0x0000, 0x20a3,
5354 +       0x0000, 0x781c, 0xa086, 0x0004, 0x00c0, 0x6f01, 0x6098, 0x0078,
5355 +       0x6f02, 0x6030, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a9,
5356 +       0x0010, 0xa006, 0x20a2, 0x00f0, 0x6f0a, 0x20a2, 0x20a2, 0x60c3,
5357 +       0x002c, 0x1078, 0x6dfb, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b,
5358 +       0x1078, 0x6731, 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000,
5359 +       0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x147f, 0x157f,
5360 +       0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3,
5361 +       0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006, 0x2011, 0xa640, 0x2019,
5362 +       0xa641, 0x23a6, 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x00f0,
5363 +       0x6f39, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078,
5364 +       0x6dfb, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x017e, 0x027e,
5365 +       0x20a1, 0x020b, 0x1078, 0x6799, 0x1078, 0x67b0, 0x7810, 0xa080,
5366 +       0x0000, 0x2004, 0xa080, 0x0015, 0x2098, 0x7808, 0xa088, 0x0002,
5367 +       0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003, 0x60c2, 0x1078, 0x6dfb,
5368 +       0x027f, 0x017f, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x20a1,
5369 +       0x020b, 0x1078, 0x6731, 0x20a3, 0x6200, 0x20a3, 0x0000, 0x20a3,
5370 +       0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x147f,
5371 +       0x157f, 0x007c, 0x157e, 0x147e, 0x017e, 0x027e, 0x20a1, 0x020b,
5372 +       0x1078, 0x6731, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0017,
5373 +       0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0x8003, 0x60c2,
5374 +       0x1078, 0x6dfb, 0x027f, 0x017f, 0x147f, 0x157f, 0x007c, 0x0e7e,
5375 +       0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x700c,
5376 +       0x2060, 0x8cff, 0x0040, 0x6fbb, 0x1078, 0x8f00, 0x00c0, 0x6fb2,
5377 +       0x1078, 0x7c83, 0x600c, 0x007e, 0x1078, 0x772d, 0x1078, 0x7233,
5378 +       0x0c7f, 0x0078, 0x6fa9, 0x700f, 0x0000, 0x700b, 0x0000, 0x127f,
5379 +       0x007f, 0x0c7f, 0x0e7f, 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e,
5380 +       0x0d7e, 0x0c7e, 0x027e, 0x017e, 0x007e, 0x2091, 0x8000, 0x2069,
5381 +       0x0100, 0x2079, 0x0140, 0x2071, 0xa8b1, 0x7024, 0x2060, 0x8cff,
5382 +       0x0040, 0x7014, 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x5acb,
5383 +       0x2009, 0x0013, 0x1078, 0x775c, 0x20a9, 0x01f4, 0x6824, 0xd094,
5384 +       0x0040, 0x6ff7, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040,
5385 +       0x7009, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x7009, 0xd084,
5386 +       0x0040, 0x6ffe, 0x6827, 0x0001, 0x0078, 0x7000, 0x00f0, 0x6fe6,
5387 +       0x7804, 0xa084, 0x1000, 0x0040, 0x7009, 0x7803, 0x0100, 0x7803,
5388 +       0x0000, 0x6824, 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f,
5389 +       0x0f7f, 0x157f, 0x127f, 0x007c, 0x2001, 0xa600, 0x2004, 0xa096,
5390 +       0x0001, 0x0040, 0x704e, 0xa096, 0x0004, 0x0040, 0x704e, 0x1078,
5391 +       0x5acb, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x41dc, 0x1078,
5392 +       0x5a45, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x703c, 0x6827,
5393 +       0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x704e, 0x7803, 0x1000,
5394 +       0x7803, 0x0000, 0x0078, 0x704e, 0xd084, 0x0040, 0x7043, 0x6827,
5395 +       0x0001, 0x0078, 0x7045, 0x00f0, 0x702b, 0x7804, 0xa084, 0x1000,
5396 +       0x0040, 0x704e, 0x7803, 0x0100, 0x7803, 0x0000, 0x007f, 0x017f,
5397 +       0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c,
5398 +       0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e,
5399 +       0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071,
5400 +       0xa8b1, 0x703c, 0x2060, 0x8cff, 0x0040, 0x70d6, 0x68af, 0x95f5,
5401 +       0x6817, 0x0010, 0x2009, 0x00fa, 0x8109, 0x00c0, 0x7074, 0x68c7,
5402 +       0x0000, 0x68cb, 0x0008, 0x1078, 0x5ad8, 0x1078, 0x1f7e, 0x047e,
5403 +       0x057e, 0x2009, 0x017f, 0x212c, 0x200b, 0x00a5, 0x2021, 0x0169,
5404 +       0x2404, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x70a5, 0x68c7,
5405 +       0x0000, 0x68cb, 0x0008, 0x0e7e, 0x0f7e, 0x2079, 0x0020, 0x2071,
5406 +       0xa908, 0x6814, 0xa084, 0x0004, 0xa085, 0x0012, 0x6816, 0x7803,
5407 +       0x0008, 0x7003, 0x0000, 0x0f7f, 0x0e7f, 0x250a, 0x057f, 0x047f,
5408 +       0xa39d, 0x0000, 0x00c0, 0x70b0, 0x2009, 0x0049, 0x1078, 0x775c,
5409 +       0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040, 0x70c3, 0x6827, 0x0004,
5410 +       0x7804, 0xa084, 0x4000, 0x0040, 0x70d5, 0x7803, 0x1000, 0x7803,
5411 +       0x0000, 0x0078, 0x70d5, 0xd08c, 0x0040, 0x70ca, 0x6827, 0x0002,
5412 +       0x0078, 0x70cc, 0x00f0, 0x70b2, 0x7804, 0xa084, 0x1000, 0x0040,
5413 +       0x70d5, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f,
5414 +       0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c,
5415 +       0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0xa8b1, 0x6a06, 0x127f,
5416 +       0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0xa8b1,
5417 +       0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e,
5418 +       0x007e, 0x127e, 0x2071, 0xa8b1, 0x7614, 0x2660, 0x2678, 0x2091,
5419 +       0x8000, 0x8cff, 0x0040, 0x7134, 0x601c, 0xa206, 0x00c0, 0x712f,
5420 +       0x7014, 0xac36, 0x00c0, 0x710e, 0x660c, 0x7616, 0x7010, 0xac36,
5421 +       0x00c0, 0x711c, 0x2c00, 0xaf36, 0x0040, 0x711a, 0x2f00, 0x7012,
5422 +       0x0078, 0x711c, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
5423 +       0x0040, 0x7125, 0x7e0e, 0x0078, 0x7126, 0x2678, 0x600f, 0x0000,
5424 +       0x1078, 0x8ec6, 0x1078, 0x7233, 0x0c7f, 0x0078, 0x7101, 0x2c78,
5425 +       0x600c, 0x2060, 0x0078, 0x7101, 0x127f, 0x007f, 0x067f, 0x0c7f,
5426 +       0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078,
5427 +       0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2,
5428 +       0x20a3, 0x1000, 0x0078, 0x718e, 0x157e, 0x147e, 0x20a1, 0x020b,
5429 +       0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2,
5430 +       0x20a2, 0x20a3, 0x4000, 0x0078, 0x718e, 0x157e, 0x147e, 0x20a1,
5431 +       0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2,
5432 +       0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x718e, 0x157e, 0x147e,
5433 +       0x20a1, 0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2,
5434 +       0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, 0x718e, 0x157e,
5435 +       0x147e, 0x20a1, 0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006,
5436 +       0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x1078, 0x723e,
5437 +       0x60c3, 0x0020, 0x1078, 0x6dfb, 0x147f, 0x157f, 0x007c, 0x127e,
5438 +       0x0c7e, 0x2091, 0x8000, 0x2061, 0x0100, 0x6120, 0xd1b4, 0x00c0,
5439 +       0x71a6, 0xd1bc, 0x00c0, 0x71f0, 0x0078, 0x7230, 0x2009, 0x017f,
5440 +       0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140, 0x20a9,
5441 +       0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040, 0x71e7,
5442 +       0x6020, 0xd0b4, 0x0040, 0x71e7, 0x6024, 0xd094, 0x00c0, 0x71e7,
5443 +       0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x71e7, 0x00f0,
5444 +       0x71b3, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c,
5445 +       0x00ff, 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b, 0xbc91, 0x6043,
5446 +       0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6024, 0xd094, 0x00c0,
5447 +       0x71e6, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x71dd, 0x027f, 0x0d7f,
5448 +       0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0078, 0x7230,
5449 +       0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069,
5450 +       0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000,
5451 +       0x0040, 0x7229, 0x6020, 0xd0bc, 0x0040, 0x7229, 0x2104, 0xa084,
5452 +       0x000f, 0xa086, 0x0004, 0x00c0, 0x7229, 0x00f0, 0x71fd, 0x027e,
5453 +       0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff, 0xa10d,
5454 +       0x6088, 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043, 0x0001, 0x6043,
5455 +       0x0000, 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x7223,
5456 +       0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000,
5457 +       0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0xa8b1, 0x7020, 0xa005,
5458 +       0x0040, 0x723c, 0x8001, 0x7022, 0x0e7f, 0x007c, 0x20a9, 0x0008,
5459 +       0x20a2, 0x00f0, 0x7240, 0x20a2, 0x20a2, 0x007c, 0x0f7e, 0x0e7e,
5460 +       0x0d7e, 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000,
5461 +       0x2071, 0xa8b1, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001, 0x87ff,
5462 +       0x0040, 0x72e2, 0x8cff, 0x0040, 0x72e2, 0x601c, 0xa086, 0x0006,
5463 +       0x00c0, 0x72dd, 0x88ff, 0x0040, 0x726d, 0x2800, 0xac06, 0x00c0,
5464 +       0x72dd, 0x2039, 0x0000, 0x0078, 0x7278, 0x6018, 0xa206, 0x00c0,
5465 +       0x72dd, 0x85ff, 0x0040, 0x7278, 0x6020, 0xa106, 0x00c0, 0x72dd,
5466 +       0x7024, 0xac06, 0x00c0, 0x72a8, 0x2069, 0x0100, 0x68c0, 0xa005,
5467 +       0x0040, 0x72a3, 0x1078, 0x5acb, 0x6817, 0x0008, 0x68c3, 0x0000,
5468 +       0x1078, 0x7378, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04,
5469 +       0xa384, 0x1000, 0x0040, 0x7298, 0x6803, 0x0100, 0x6803, 0x0000,
5470 +       0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x72a0, 0x6827, 0x0001,
5471 +       0x037f, 0x0078, 0x72a8, 0x6003, 0x0009, 0x630a, 0x0078, 0x72dd,
5472 +       0x7014, 0xac36, 0x00c0, 0x72ae, 0x660c, 0x7616, 0x7010, 0xac36,
5473 +       0x00c0, 0x72bc, 0x2c00, 0xaf36, 0x0040, 0x72ba, 0x2f00, 0x7012,
5474 +       0x0078, 0x72bc, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
5475 +       0x0040, 0x72c5, 0x7e0e, 0x0078, 0x72c6, 0x2678, 0x89ff, 0x00c0,
5476 +       0x72d5, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
5477 +       0x72d3, 0x1078, 0xa1ca, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x88ff,
5478 +       0x00c0, 0x72ec, 0x0c7f, 0x0078, 0x7257, 0x2c78, 0x600c, 0x2060,
5479 +       0x0078, 0x7257, 0xa006, 0x127f, 0x007f, 0x067f, 0x077f, 0x0c7f,
5480 +       0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5,
5481 +       0x0001, 0x0078, 0x72e3, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e,
5482 +       0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x7638,
5483 +       0x2660, 0x2678, 0x8cff, 0x0040, 0x7367, 0x601c, 0xa086, 0x0006,
5484 +       0x00c0, 0x7362, 0x87ff, 0x0040, 0x7313, 0x2700, 0xac06, 0x00c0,
5485 +       0x7362, 0x0078, 0x731e, 0x6018, 0xa206, 0x00c0, 0x7362, 0x85ff,
5486 +       0x0040, 0x731e, 0x6020, 0xa106, 0x00c0, 0x7362, 0x703c, 0xac06,
5487 +       0x00c0, 0x7332, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x7033,
5488 +       0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b,
5489 +       0x0000, 0x037f, 0x7038, 0xac36, 0x00c0, 0x7338, 0x660c, 0x763a,
5490 +       0x7034, 0xac36, 0x00c0, 0x7346, 0x2c00, 0xaf36, 0x0040, 0x7344,
5491 +       0x2f00, 0x7036, 0x0078, 0x7346, 0x7037, 0x0000, 0x660c, 0x067e,
5492 +       0x2c00, 0xaf06, 0x0040, 0x734f, 0x7e0e, 0x0078, 0x7350, 0x2678,
5493 +       0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x735a,
5494 +       0x1078, 0xa1ca, 0x1078, 0x8ec6, 0x87ff, 0x00c0, 0x7371, 0x0c7f,
5495 +       0x0078, 0x7302, 0x2c78, 0x600c, 0x2060, 0x0078, 0x7302, 0xa006,
5496 +       0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
5497 +       0x007c, 0x6017, 0x0000, 0x0c7f, 0xa7bd, 0x0001, 0x0078, 0x7368,
5498 +       0x0e7e, 0x2071, 0xa8b1, 0x2001, 0xa600, 0x2004, 0xa086, 0x0002,
5499 +       0x00c0, 0x7386, 0x7007, 0x0005, 0x0078, 0x7388, 0x7007, 0x0000,
5500 +       0x0e7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e, 0x027e, 0x007e,
5501 +       0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x2c10, 0x7638, 0x2660,
5502 +       0x2678, 0x8cff, 0x0040, 0x73c8, 0x2200, 0xac06, 0x00c0, 0x73c3,
5503 +       0x7038, 0xac36, 0x00c0, 0x73a6, 0x660c, 0x763a, 0x7034, 0xac36,
5504 +       0x00c0, 0x73b4, 0x2c00, 0xaf36, 0x0040, 0x73b2, 0x2f00, 0x7036,
5505 +       0x0078, 0x73b4, 0x7037, 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0040,
5506 +       0x73bc, 0x7e0e, 0x0078, 0x73bd, 0x2678, 0x600f, 0x0000, 0xa085,
5507 +       0x0001, 0x0078, 0x73c8, 0x2c78, 0x600c, 0x2060, 0x0078, 0x7399,
5508 +       0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c,
5509 +       0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091,
5510 +       0x8000, 0x2071, 0xa8b1, 0x760c, 0x2660, 0x2678, 0x8cff, 0x0040,
5511 +       0x7469, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x7464,
5512 +       0x7024, 0xac06, 0x00c0, 0x740f, 0x2069, 0x0100, 0x68c0, 0xa005,
5513 +       0x0040, 0x743d, 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378,
5514 +       0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000,
5515 +       0x0040, 0x7406, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
5516 +       0x6824, 0xd084, 0x0040, 0x740e, 0x6827, 0x0001, 0x037f, 0x700c,
5517 +       0xac36, 0x00c0, 0x7415, 0x660c, 0x760e, 0x7008, 0xac36, 0x00c0,
5518 +       0x7423, 0x2c00, 0xaf36, 0x0040, 0x7421, 0x2f00, 0x700a, 0x0078,
5519 +       0x7423, 0x700b, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040,
5520 +       0x742c, 0x7e0e, 0x0078, 0x742d, 0x2678, 0x600f, 0x0000, 0x1078,
5521 +       0x8eec, 0x00c0, 0x7441, 0x1078, 0x28a6, 0x1078, 0x8f00, 0x00c0,
5522 +       0x745d, 0x1078, 0x7c83, 0x0078, 0x745d, 0x1078, 0x7378, 0x0078,
5523 +       0x740f, 0x1078, 0x8f00, 0x00c0, 0x7449, 0x1078, 0x7c83, 0x0078,
5524 +       0x745d, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x745d, 0x601c,
5525 +       0xa086, 0x0003, 0x00c0, 0x7471, 0x6837, 0x0103, 0x6b4a, 0x6847,
5526 +       0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x1078,
5527 +       0x7233, 0x0c7f, 0x0078, 0x73de, 0x2c78, 0x600c, 0x2060, 0x0078,
5528 +       0x73de, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
5529 +       0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x745d, 0x1078, 0xa1ca,
5530 +       0x0078, 0x745d, 0x037e, 0x157e, 0x137e, 0x147e, 0x3908, 0xa006,
5531 +       0xa190, 0x0020, 0x221c, 0xa39e, 0x2676, 0x00c0, 0x748b, 0x8210,
5532 +       0x8000, 0x0078, 0x7482, 0xa005, 0x0040, 0x7497, 0x20a9, 0x0020,
5533 +       0x2198, 0x8211, 0xa282, 0x0020, 0x20c8, 0x20a0, 0x53a3, 0x147f,
5534 +       0x137f, 0x157f, 0x037f, 0x007c, 0x0d7e, 0x20a1, 0x020b, 0x1078,
5535 +       0x67c2, 0x20a3, 0x0200, 0x20a3, 0x0014, 0x60c3, 0x0014, 0x20a3,
5536 +       0x0000, 0x20a3, 0x0000, 0x2099, 0xa8a5, 0x20a9, 0x0004, 0x53a6,
5537 +       0x20a3, 0x0004, 0x20a3, 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000,
5538 +       0x1078, 0x6dfb, 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2,
5539 +       0x20a3, 0x0214, 0x20a3, 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084,
5540 +       0xff00, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
5541 +       0x20a3, 0x0000, 0x7810, 0xa084, 0x00ff, 0x20a2, 0x7828, 0x20a2,
5542 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0018, 0x1078, 0x6dfb,
5543 +       0x007c, 0x0d7e, 0x017e, 0x2f68, 0x2009, 0x0035, 0x1078, 0x91bc,
5544 +       0x00c0, 0x7551, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x1300,
5545 +       0x20a3, 0x0000, 0x7828, 0x2068, 0x681c, 0xa086, 0x0003, 0x0040,
5546 +       0x752d, 0x7818, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e, 0x00c0,
5547 +       0x7507, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x0078, 0x7542, 0xa286,
5548 +       0x007f, 0x00c0, 0x7511, 0x20a3, 0x00ff, 0x20a3, 0xfffd, 0x0078,
5549 +       0x7542, 0xd2bc, 0x0040, 0x7527, 0xa286, 0x0080, 0x00c0, 0x751e,
5550 +       0x20a3, 0x00ff, 0x20a3, 0xfffc, 0x0078, 0x7542, 0xa2e8, 0xa735,
5551 +       0x2d6c, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x0078, 0x7542, 0x20a3,
5552 +       0x0000, 0x6098, 0x20a2, 0x0078, 0x7542, 0x7818, 0xa080, 0x0028,
5553 +       0x2004, 0xa082, 0x007e, 0x0048, 0x753e, 0x0d7e, 0x2069, 0xa61b,
5554 +       0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x7542, 0x20a3, 0x0000,
5555 +       0x6030, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a3, 0x0000,
5556 +       0x20a3, 0x0000, 0x60c3, 0x000c, 0x1078, 0x6dfb, 0x017f, 0x0d7f,
5557 +       0x007c, 0x7817, 0x0001, 0x7803, 0x0006, 0x017f, 0x0d7f, 0x007c,
5558 +       0x0d7e, 0x027e, 0x7928, 0x2168, 0x691c, 0xa186, 0x0006, 0x0040,
5559 +       0x757a, 0xa186, 0x0003, 0x0040, 0x75d5, 0xa186, 0x0005, 0x0040,
5560 +       0x75b8, 0xa186, 0x0004, 0x0040, 0x75a8, 0xa186, 0x0008, 0x0040,
5561 +       0x75c2, 0x7807, 0x0037, 0x7813, 0x1700, 0x1078, 0x7640, 0x027f,
5562 +       0x0d7f, 0x007c, 0x1078, 0x75fd, 0x2009, 0x4000, 0x6800, 0x0079,
5563 +       0x7581, 0x7594, 0x75a2, 0x7596, 0x75a2, 0x759d, 0x7594, 0x7594,
5564 +       0x75a2, 0x75a2, 0x75a2, 0x75a2, 0x7594, 0x7594, 0x7594, 0x7594,
5565 +       0x7594, 0x75a2, 0x7594, 0x75a2, 0x1078, 0x1332, 0x6824, 0xd0e4,
5566 +       0x0040, 0x759d, 0xd0cc, 0x0040, 0x75a0, 0xa00e, 0x0078, 0x75a2,
5567 +       0x2009, 0x2000, 0x6828, 0x20a2, 0x682c, 0x20a2, 0x0078, 0x75f3,
5568 +       0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000,
5569 +       0x6a00, 0xa286, 0x0002, 0x00c0, 0x75b6, 0xa00e, 0x0078, 0x75f3,
5570 +       0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000,
5571 +       0x0078, 0x75f3, 0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000,
5572 +       0x2009, 0x4000, 0xa286, 0x0005, 0x0040, 0x75d2, 0xa286, 0x0002,
5573 +       0x00c0, 0x75d3, 0xa00e, 0x0078, 0x75f3, 0x1078, 0x75fd, 0x6810,
5574 +       0x2068, 0x697c, 0x6810, 0xa112, 0x6980, 0x6814, 0xa103, 0x20a2,
5575 +       0x22a2, 0x7928, 0xa180, 0x0000, 0x2004, 0xa08e, 0x0002, 0x0040,
5576 +       0x75f1, 0xa08e, 0x0004, 0x0040, 0x75f1, 0x2009, 0x4000, 0x0078,
5577 +       0x75f3, 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, 0x60c3, 0x0018,
5578 +       0x1078, 0x6dfb, 0x027f, 0x0d7f, 0x007c, 0x037e, 0x047e, 0x057e,
5579 +       0x067e, 0x20a1, 0x020b, 0x1078, 0x67c2, 0xa006, 0x20a3, 0x0200,
5580 +       0x20a2, 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, 0xa080, 0x0028,
5581 +       0x2004, 0xa092, 0x007e, 0x0048, 0x7623, 0x0d7e, 0x2069, 0xa61b,
5582 +       0x2d2c, 0x8d68, 0x2d34, 0xa0e8, 0xa735, 0x2d6c, 0x6b10, 0x6c14,
5583 +       0x0d7f, 0x0078, 0x7629, 0x2019, 0x0000, 0x6498, 0x2029, 0x0000,
5584 +       0x6630, 0x7828, 0xa080, 0x0007, 0x2004, 0xa086, 0x0003, 0x00c0,
5585 +       0x7637, 0x25a2, 0x26a2, 0x23a2, 0x24a2, 0x0078, 0x763b, 0x23a2,
5586 +       0x24a2, 0x25a2, 0x26a2, 0x067f, 0x057f, 0x047f, 0x037f, 0x007c,
5587 +       0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000,
5588 +       0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb,
5589 +       0x007c, 0x20a1, 0x020b, 0x1078, 0x6728, 0x20a3, 0x1400, 0x20a3,
5590 +       0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x7828, 0x20a2, 0x782c,
5591 +       0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, 0x20a2, 0x20a3, 0x0000,
5592 +       0x60c3, 0x0010, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078,
5593 +       0x67b9, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0x20a2, 0x7810,
5594 +       0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x147e, 0x20a1,
5595 +       0x020b, 0x1078, 0x7689, 0x60c3, 0x0000, 0x1078, 0x6dfb, 0x147f,
5596 +       0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
5597 +       0x2004, 0xd0bc, 0x0040, 0x76a6, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5598 +       0x6810, 0xa085, 0x0300, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5599 +       0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x76ae, 0x20a3, 0x0300,
5600 +       0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0819,
5601 +       0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x2fa2,
5602 +       0x7a08, 0x22a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x007c, 0x2061,
5603 +       0xad00, 0x2a70, 0x7064, 0x704a, 0x704f, 0xad00, 0x007c, 0x0e7e,
5604 +       0x127e, 0x2071, 0xa600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0010,
5605 +       0x0048, 0x76f9, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040,
5606 +       0x76e5, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8, 0x76e1, 0x0078,
5607 +       0x76d4, 0x2061, 0xad00, 0x0078, 0x76d4, 0x6003, 0x0008, 0x8529,
5608 +       0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8, 0x76f5, 0x754e,
5609 +       0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704f, 0xad00, 0x0078,
5610 +       0x76f0, 0xa006, 0x0078, 0x76f2, 0x0e7e, 0x2071, 0xa600, 0x7548,
5611 +       0xa582, 0x0010, 0x0048, 0x772a, 0x704c, 0x2060, 0x6000, 0xa086,
5612 +       0x0000, 0x0040, 0x7717, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8,
5613 +       0x7713, 0x0078, 0x7706, 0x2061, 0xad00, 0x0078, 0x7706, 0x6003,
5614 +       0x0008, 0x8529, 0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8,
5615 +       0x7726, 0x754e, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x704f, 0xad00,
5616 +       0x0078, 0x7722, 0xa006, 0x0078, 0x7724, 0xac82, 0xad00, 0x1048,
5617 +       0x1332, 0x2001, 0xa616, 0x2004, 0xac02, 0x10c8, 0x1332, 0xa006,
5618 +       0x6006, 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000,
5619 +       0x6003, 0x0000, 0x6022, 0x6026, 0x602a, 0x602e, 0x6032, 0x6036,
5620 +       0x603a, 0x603e, 0x2061, 0xa600, 0x6048, 0x8000, 0x604a, 0xa086,
5621 +       0x0001, 0x0040, 0x7754, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
5622 +       0x62d1, 0x127f, 0x0078, 0x7753, 0x601c, 0xa084, 0x000f, 0x0079,
5623 +       0x7761, 0x776a, 0x777b, 0x7797, 0x77b3, 0x920e, 0x922a, 0x9246,
5624 +       0x776a, 0x777b, 0xa186, 0x0013, 0x00c0, 0x7773, 0x1078, 0x61cd,
5625 +       0x1078, 0x62d1, 0x007c, 0xa18e, 0x0047, 0x00c0, 0x777a, 0xa016,
5626 +       0x1078, 0x15fa, 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8,
5627 +       0x1332, 0x1079, 0x7785, 0x067f, 0x007c, 0x7795, 0x7b00, 0x7cb2,
5628 +       0x7795, 0x7d36, 0x77cf, 0x7795, 0x7795, 0x7a92, 0x80f6, 0x7795,
5629 +       0x7795, 0x7795, 0x7795, 0x7795, 0x7795, 0x1078, 0x1332, 0x067e,
5630 +       0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x77a1, 0x067f,
5631 +       0x007c, 0x77b1, 0x87c3, 0x77b1, 0x77b1, 0x77b1, 0x77b1, 0x77b1,
5632 +       0x77b1, 0x8766, 0x8951, 0x77b1, 0x87f3, 0x8879, 0x87f3, 0x8879,
5633 +       0x77b1, 0x1078, 0x1332, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8,
5634 +       0x1332, 0x1079, 0x77bd, 0x067f, 0x007c, 0x77cd, 0x813d, 0x820e,
5635 +       0x8368, 0x84e4, 0x77cd, 0x77cd, 0x77cd, 0x8116, 0x870e, 0x8712,
5636 +       0x77cd, 0x77cd, 0x77cd, 0x77cd, 0x8742, 0x1078, 0x1332, 0xa1b6,
5637 +       0x0015, 0x00c0, 0x77d7, 0x1078, 0x772d, 0x0078, 0x77dd, 0xa1b6,
5638 +       0x0016, 0x10c0, 0x1332, 0x1078, 0x772d, 0x007c, 0x20a9, 0x000e,
5639 +       0x2e98, 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420,
5640 +       0x9398, 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002,
5641 +       0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x77ec,
5642 +       0x0e7e, 0x1078, 0x8d06, 0x0040, 0x7803, 0x6010, 0x2070, 0x7007,
5643 +       0x0000, 0x7037, 0x0103, 0x0e7f, 0x1078, 0x772d, 0x007c, 0x0d7e,
5644 +       0x037e, 0x7330, 0xa386, 0x0200, 0x00c0, 0x7814, 0x6018, 0x2068,
5645 +       0x6813, 0x00ff, 0x6817, 0xfffd, 0x6010, 0xa005, 0x0040, 0x781e,
5646 +       0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6b32, 0x1078, 0x772d,
5647 +       0x037f, 0x0d7f, 0x007c, 0x017e, 0x20a9, 0x002a, 0xae80, 0x000c,
5648 +       0x2098, 0x6010, 0xa080, 0x0002, 0x20a0, 0x53a3, 0x20a9, 0x002a,
5649 +       0x6010, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x20a0, 0x53a3,
5650 +       0x0e7e, 0x6010, 0x2004, 0x2070, 0x7037, 0x0103, 0x0e7f, 0x1078,
5651 +       0x772d, 0x017f, 0x007c, 0x0e7e, 0x0d7e, 0x603f, 0x0000, 0x2c68,
5652 +       0x017e, 0x2009, 0x0035, 0x1078, 0x91bc, 0x017f, 0x00c0, 0x785f,
5653 +       0x027e, 0x6228, 0x2268, 0x027f, 0x2071, 0xab8c, 0x6b1c, 0xa386,
5654 +       0x0003, 0x0040, 0x7863, 0xa386, 0x0006, 0x0040, 0x7867, 0x1078,
5655 +       0x772d, 0x0078, 0x7869, 0x1078, 0x786c, 0x0078, 0x7869, 0x1078,
5656 +       0x7938, 0x0d7f, 0x0e7f, 0x007c, 0x0f7e, 0x6810, 0x2078, 0xa186,
5657 +       0x0015, 0x0040, 0x791d, 0xa18e, 0x0016, 0x00c0, 0x7936, 0x700c,
5658 +       0xa08c, 0xff00, 0xa186, 0x1700, 0x0040, 0x7882, 0xa186, 0x0300,
5659 +       0x00c0, 0x78f8, 0x8fff, 0x00c0, 0x788c, 0x6800, 0xa086, 0x000f,
5660 +       0x0040, 0x78db, 0x0078, 0x7934, 0x6808, 0xa086, 0xffff, 0x00c0,
5661 +       0x7921, 0x784c, 0xa084, 0x0060, 0xa086, 0x0020, 0x00c0, 0x78a2,
5662 +       0x797c, 0x7810, 0xa106, 0x00c0, 0x7921, 0x7980, 0x7814, 0xa106,
5663 +       0x00c0, 0x7921, 0x1078, 0x8eb9, 0x6830, 0x7852, 0x784c, 0xc0dc,
5664 +       0xc0f4, 0xc0d4, 0x784e, 0x027e, 0xa00e, 0x6a14, 0x2001, 0x000a,
5665 +       0x1078, 0x5c1c, 0x7854, 0xa20a, 0x0048, 0x78b7, 0x8011, 0x7a56,
5666 +       0x82ff, 0x027f, 0x00c0, 0x78c3, 0x0c7e, 0x2d60, 0x1078, 0x8ae0,
5667 +       0x0c7f, 0x0078, 0x7934, 0x0c7e, 0x0d7e, 0x2f68, 0x6838, 0xd0fc,
5668 +       0x00c0, 0x78ce, 0x1078, 0x4353, 0x0078, 0x78d0, 0x1078, 0x4431,
5669 +       0x0d7f, 0x0c7f, 0x00c0, 0x7921, 0x0c7e, 0x2d60, 0x1078, 0x772d,
5670 +       0x0c7f, 0x0078, 0x7934, 0x0c7e, 0x1078, 0x9187, 0x0040, 0x78f1,
5671 +       0x6013, 0x0000, 0x6818, 0x601a, 0x601f, 0x0003, 0x6904, 0x0c7e,
5672 +       0x2d60, 0x1078, 0x772d, 0x0c7f, 0x1078, 0x775c, 0x0c7f, 0x0078,
5673 +       0x7934, 0x2001, 0xa8a4, 0x2004, 0x683e, 0x0c7f, 0x0078, 0x7934,
5674 +       0x7008, 0xa086, 0x000b, 0x00c0, 0x7912, 0x6018, 0x200c, 0xc1bc,
5675 +       0x2102, 0x0c7e, 0x2d60, 0x7853, 0x0003, 0x6007, 0x0085, 0x6003,
5676 +       0x000b, 0x601f, 0x0002, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f,
5677 +       0x0078, 0x7934, 0x700c, 0xa086, 0x2a00, 0x00c0, 0x7921, 0x2001,
5678 +       0xa8a4, 0x2004, 0x683e, 0x0078, 0x7934, 0x1078, 0x7953, 0x0078,
5679 +       0x7936, 0x8fff, 0x1040, 0x1332, 0x0c7e, 0x0d7e, 0x2d60, 0x2f68,
5680 +       0x6837, 0x0103, 0x684b, 0x0003, 0x1078, 0x89cf, 0x1078, 0x8eb9,
5681 +       0x1078, 0x8ec6, 0x0d7f, 0x0c7f, 0x1078, 0x772d, 0x0f7f, 0x007c,
5682 +       0xa186, 0x0015, 0x00c0, 0x7942, 0x2001, 0xa8a4, 0x2004, 0x683e,
5683 +       0x0078, 0x7950, 0xa18e, 0x0016, 0x00c0, 0x7952, 0x0c7e, 0x2d00,
5684 +       0x2060, 0x1078, 0xa495, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x0c7f,
5685 +       0x1078, 0x772d, 0x007c, 0x027e, 0x037e, 0x047e, 0x7228, 0x7c80,
5686 +       0x7b7c, 0xd2f4, 0x0040, 0x7962, 0x2001, 0xa8a4, 0x2004, 0x683e,
5687 +       0x0078, 0x79c6, 0x0c7e, 0x2d60, 0x1078, 0x89f3, 0x0c7f, 0x6804,
5688 +       0xa086, 0x0050, 0x00c0, 0x797a, 0x0c7e, 0x2d00, 0x2060, 0x6003,
5689 +       0x0001, 0x6007, 0x0050, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f,
5690 +       0x0078, 0x79c6, 0x6800, 0xa086, 0x000f, 0x0040, 0x799c, 0x8fff,
5691 +       0x1040, 0x1332, 0x6824, 0xd0dc, 0x00c0, 0x799c, 0x6800, 0xa086,
5692 +       0x0004, 0x00c0, 0x79a1, 0x784c, 0xd0ac, 0x0040, 0x79a1, 0x784c,
5693 +       0xc0dc, 0xc0f4, 0x784e, 0x7850, 0xc0f4, 0xc0fc, 0x7852, 0x2001,
5694 +       0x0001, 0x682e, 0x0078, 0x79c0, 0x2001, 0x0007, 0x682e, 0x0078,
5695 +       0x79c0, 0x784c, 0xd0b4, 0x00c0, 0x79ae, 0xd0ac, 0x0040, 0x799c,
5696 +       0x784c, 0xd0f4, 0x00c0, 0x799c, 0x0078, 0x798f, 0xd2ec, 0x00c0,
5697 +       0x799c, 0x7024, 0xa306, 0x00c0, 0x79b9, 0x7020, 0xa406, 0x0040,
5698 +       0x799c, 0x7020, 0x6836, 0x7024, 0x683a, 0x2001, 0x0005, 0x682e,
5699 +       0x1078, 0x8ff0, 0x1078, 0x62d1, 0x0078, 0x79c8, 0x1078, 0x772d,
5700 +       0x047f, 0x037f, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x027e, 0x6034,
5701 +       0x2068, 0x6a1c, 0xa286, 0x0007, 0x0040, 0x7a35, 0xa286, 0x0002,
5702 +       0x0040, 0x7a35, 0xa286, 0x0000, 0x0040, 0x7a35, 0x6808, 0x6338,
5703 +       0xa306, 0x00c0, 0x7a35, 0x2071, 0xab8c, 0xa186, 0x0015, 0x0040,
5704 +       0x7a2f, 0xa18e, 0x0016, 0x00c0, 0x7a02, 0x6030, 0xa084, 0x00ff,
5705 +       0xa086, 0x0001, 0x00c0, 0x7a02, 0x700c, 0xa086, 0x2a00, 0x00c0,
5706 +       0x7a02, 0x6034, 0xa080, 0x0009, 0x200c, 0xc1dd, 0xc1f5, 0x2102,
5707 +       0x0078, 0x7a2f, 0x0c7e, 0x6034, 0x2060, 0x6104, 0xa186, 0x004b,
5708 +       0x0040, 0x7a22, 0xa186, 0x004c, 0x0040, 0x7a22, 0xa186, 0x004d,
5709 +       0x0040, 0x7a22, 0xa186, 0x004e, 0x0040, 0x7a22, 0xa186, 0x0052,
5710 +       0x0040, 0x7a22, 0x6010, 0x2068, 0x1078, 0x8d06, 0x1040, 0x1332,
5711 +       0x6853, 0x0003, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002,
5712 +       0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f, 0x0078, 0x7a35, 0x6034,
5713 +       0x2068, 0x2001, 0xa8a4, 0x2004, 0x683e, 0x1078, 0x772d, 0x027f,
5714 +       0x0d7f, 0x0e7f, 0x007c, 0x0d7e, 0x20a9, 0x000e, 0x2e98, 0x6010,
5715 +       0x20a0, 0x53a3, 0xa1b6, 0x0015, 0x00c0, 0x7a73, 0x6018, 0x2068,
5716 +       0x157e, 0x037e, 0x027e, 0xae90, 0x000c, 0xa290, 0x0004, 0x20a9,
5717 +       0x0004, 0xad98, 0x000a, 0x1078, 0x80de, 0x027f, 0x037f, 0x157f,
5718 +       0x00c0, 0x7a76, 0x157e, 0x037e, 0x027e, 0xae90, 0x000c, 0xa290,
5719 +       0x0008, 0x20a9, 0x0004, 0xad98, 0x0006, 0x1078, 0x80de, 0x027f,
5720 +       0x037f, 0x157f, 0x00c0, 0x7a76, 0x7038, 0x680a, 0x703c, 0x680e,
5721 +       0x6800, 0xc08d, 0x6802, 0x0d7f, 0x0078, 0x77f8, 0x1078, 0x2880,
5722 +       0x0c7e, 0x1078, 0x76c7, 0x2f00, 0x601a, 0x6013, 0x0000, 0x601f,
5723 +       0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x1078,
5724 +       0x4502, 0x1078, 0x4535, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0c7f,
5725 +       0x0078, 0x7a73, 0x2100, 0xa1b2, 0x0044, 0x10c8, 0x1332, 0xa1b2,
5726 +       0x0040, 0x00c8, 0x7af7, 0x0079, 0x7a9d, 0x7aeb, 0x7adf, 0x7aeb,
5727 +       0x7aeb, 0x7aeb, 0x7aeb, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add,
5728 +       0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add,
5729 +       0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add,
5730 +       0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb, 0x7add, 0x7aeb, 0x7aeb,
5731 +       0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb, 0x7add, 0x7add,
5732 +       0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb,
5733 +       0x7aeb, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add,
5734 +       0x7add, 0x7add, 0x7aeb, 0x7add, 0x7add, 0x1078, 0x1332, 0x6003,
5735 +       0x0001, 0x6106, 0x1078, 0x5dd7, 0x127e, 0x2091, 0x8000, 0x1078,
5736 +       0x62d1, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x5dd7,
5737 +       0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x2600,
5738 +       0x0079, 0x7afa, 0x7afe, 0x7afe, 0x7afe, 0x7aeb, 0x1078, 0x1332,
5739 +       0x6004, 0xa0b2, 0x0044, 0x10c8, 0x1332, 0xa1b6, 0x0013, 0x00c0,
5740 +       0x7b10, 0xa0b2, 0x0040, 0x00c8, 0x7c79, 0x2008, 0x0079, 0x7bbf,
5741 +       0xa1b6, 0x0027, 0x00c0, 0x7b7c, 0x1078, 0x61cd, 0x6004, 0x1078,
5742 +       0x8eec, 0x0040, 0x7b2d, 0x1078, 0x8f00, 0x0040, 0x7b74, 0xa08e,
5743 +       0x0021, 0x0040, 0x7b78, 0xa08e, 0x0022, 0x0040, 0x7b74, 0xa08e,
5744 +       0x003d, 0x0040, 0x7b78, 0x0078, 0x7b6f, 0x1078, 0x28a6, 0x2001,
5745 +       0x0007, 0x1078, 0x4502, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078,
5746 +       0x7c83, 0xa186, 0x007e, 0x00c0, 0x7b42, 0x2001, 0xa633, 0x2014,
5747 +       0xc285, 0x2202, 0x017e, 0x027e, 0x037e, 0x2110, 0x027e, 0x2019,
5748 +       0x0028, 0x1078, 0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f, 0x027f,
5749 +       0x017f, 0x017e, 0x027e, 0x037e, 0x2110, 0x2019, 0x0028, 0x1078,
5750 +       0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x0c7e, 0x6018,
5751 +       0xa065, 0x0040, 0x7b65, 0x1078, 0x47e9, 0x0c7f, 0x2c08, 0x1078,
5752 +       0x9f8b, 0x077f, 0x037f, 0x027f, 0x017f, 0x1078, 0x457f, 0x1078,
5753 +       0x772d, 0x1078, 0x62d1, 0x007c, 0x1078, 0x7c83, 0x0078, 0x7b6f,
5754 +       0x1078, 0x7ca6, 0x0078, 0x7b6f, 0xa186, 0x0014, 0x00c0, 0x7b73,
5755 +       0x1078, 0x61cd, 0x1078, 0x2880, 0x1078, 0x8eec, 0x00c0, 0x7b9b,
5756 +       0x1078, 0x28a6, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078, 0x7c83,
5757 +       0xa186, 0x007e, 0x00c0, 0x7b99, 0x2001, 0xa633, 0x200c, 0xc185,
5758 +       0x2102, 0x0078, 0x7b6f, 0x1078, 0x8f00, 0x00c0, 0x7ba3, 0x1078,
5759 +       0x7c83, 0x0078, 0x7b6f, 0x6004, 0xa08e, 0x0032, 0x00c0, 0x7bb4,
5760 +       0x0e7e, 0x0f7e, 0x2071, 0xa682, 0x2079, 0x0000, 0x1078, 0x2bd7,
5761 +       0x0f7f, 0x0e7f, 0x0078, 0x7b6f, 0x6004, 0xa08e, 0x0021, 0x0040,
5762 +       0x7b9f, 0xa08e, 0x0022, 0x1040, 0x7c83, 0x0078, 0x7b6f, 0x7c01,
5763 +       0x7c03, 0x7c07, 0x7c0b, 0x7c0f, 0x7c13, 0x7bff, 0x7bff, 0x7bff,
5764 +       0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff,
5765 +       0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff,
5766 +       0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7c17, 0x7c29, 0x7bff,
5767 +       0x7c2b, 0x7c29, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7c29,
5768 +       0x7c29, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff,
5769 +       0x7bff, 0x7c5c, 0x7c29, 0x7bff, 0x7c23, 0x7bff, 0x7bff, 0x7bff,
5770 +       0x7c25, 0x7bff, 0x7bff, 0x7bff, 0x7c29, 0x7bff, 0x7bff, 0x1078,
5771 +       0x1332, 0x0078, 0x7c29, 0x2001, 0x000b, 0x0078, 0x7c36, 0x2001,
5772 +       0x0003, 0x0078, 0x7c36, 0x2001, 0x0005, 0x0078, 0x7c36, 0x2001,
5773 +       0x0001, 0x0078, 0x7c36, 0x2001, 0x0009, 0x0078, 0x7c36, 0x1078,
5774 +       0x61cd, 0x6003, 0x0005, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x1078,
5775 +       0x62d1, 0x0078, 0x7c35, 0x0078, 0x7c29, 0x0078, 0x7c29, 0x1078,
5776 +       0x4502, 0x0078, 0x7c6e, 0x1078, 0x61cd, 0x6003, 0x0004, 0x2001,
5777 +       0xa8a2, 0x2004, 0x6016, 0x1078, 0x62d1, 0x007c, 0x1078, 0x4502,
5778 +       0x1078, 0x61cd, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002,
5779 +       0x037e, 0x2019, 0xa65d, 0x2304, 0xa084, 0xff00, 0x00c0, 0x7c4d,
5780 +       0x2019, 0xa8a2, 0x231c, 0x0078, 0x7c56, 0x8007, 0xa09a, 0x0004,
5781 +       0x0048, 0x7c48, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f,
5782 +       0x1078, 0x62d1, 0x0078, 0x7c35, 0x0e7e, 0x0f7e, 0x2071, 0xa682,
5783 +       0x2079, 0x0000, 0x1078, 0x2bd7, 0x0f7f, 0x0e7f, 0x1078, 0x61cd,
5784 +       0x1078, 0x772d, 0x1078, 0x62d1, 0x0078, 0x7c35, 0x1078, 0x61cd,
5785 +       0x6003, 0x0002, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x1078, 0x62d1,
5786 +       0x007c, 0x2600, 0x2008, 0x0079, 0x7c7d, 0x7c81, 0x7c81, 0x7c81,
5787 +       0x7c6e, 0x1078, 0x1332, 0x0e7e, 0x1078, 0x8d06, 0x0040, 0x7c9f,
5788 +       0x6010, 0x2070, 0x7038, 0xd0fc, 0x0040, 0x7c9f, 0x7007, 0x0000,
5789 +       0x017e, 0x6004, 0xa08e, 0x0021, 0x0040, 0x7ca1, 0xa08e, 0x003d,
5790 +       0x0040, 0x7ca1, 0x017f, 0x7037, 0x0103, 0x7033, 0x0100, 0x0e7f,
5791 +       0x007c, 0x017f, 0x1078, 0x7ca6, 0x0078, 0x7c9f, 0x0e7e, 0xacf0,
5792 +       0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x7023, 0x8001,
5793 +       0x0e7f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0x00ff,
5794 +       0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1332, 0x6604, 0xa6b6, 0x0043,
5795 +       0x00c0, 0x7cc6, 0x1078, 0x9134, 0x0078, 0x7d25, 0x6604, 0xa6b6,
5796 +       0x0033, 0x00c0, 0x7ccf, 0x1078, 0x90d8, 0x0078, 0x7d25, 0x6604,
5797 +       0xa6b6, 0x0028, 0x00c0, 0x7cd8, 0x1078, 0x8f2f, 0x0078, 0x7d25,
5798 +       0x6604, 0xa6b6, 0x0029, 0x00c0, 0x7ce1, 0x1078, 0x8f49, 0x0078,
5799 +       0x7d25, 0x6604, 0xa6b6, 0x001f, 0x00c0, 0x7cea, 0x1078, 0x77de,
5800 +       0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0000, 0x00c0, 0x7cf3, 0x1078,
5801 +       0x7a3b, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0022, 0x00c0, 0x7cfc,
5802 +       0x1078, 0x7807, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0035, 0x00c0,
5803 +       0x7d05, 0x1078, 0x7843, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0039,
5804 +       0x00c0, 0x7d0e, 0x1078, 0x79cc, 0x0078, 0x7d25, 0x6604, 0xa6b6,
5805 +       0x003d, 0x00c0, 0x7d17, 0x1078, 0x7823, 0x0078, 0x7d25, 0xa1b6,
5806 +       0x0015, 0x00c0, 0x7d1f, 0x1079, 0x7d2a, 0x0078, 0x7d25, 0xa1b6,
5807 +       0x0016, 0x00c0, 0x7d26, 0x1079, 0x7e7f, 0x007c, 0x1078, 0x7773,
5808 +       0x0078, 0x7d25, 0x7d4e, 0x7d51, 0x7d4e, 0x7d9c, 0x7d4e, 0x7e13,
5809 +       0x7e8b, 0x7d4e, 0x7d4e, 0x7e57, 0x7d4e, 0x7e6d, 0xa1b6, 0x0048,
5810 +       0x0040, 0x7d42, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078,
5811 +       0x15fa, 0x007c, 0x0e7e, 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070,
5812 +       0x7037, 0x0103, 0x0e7f, 0x1078, 0x772d, 0x007c, 0x0005, 0x0005,
5813 +       0x007c, 0x0e7e, 0x2071, 0xa600, 0x7080, 0xa086, 0x0074, 0x00c0,
5814 +       0x7d85, 0x1078, 0x9f5f, 0x00c0, 0x7d77, 0x0d7e, 0x6018, 0x2068,
5815 +       0x7030, 0xd08c, 0x0040, 0x7d6a, 0x6800, 0xd0bc, 0x0040, 0x7d6a,
5816 +       0xc0c5, 0x6802, 0x1078, 0x7d89, 0x0d7f, 0x2001, 0x0006, 0x1078,
5817 +       0x4502, 0x1078, 0x28a6, 0x1078, 0x772d, 0x0078, 0x7d87, 0x2001,
5818 +       0x000a, 0x1078, 0x4502, 0x1078, 0x28a6, 0x6003, 0x0001, 0x6007,
5819 +       0x0001, 0x1078, 0x5dd7, 0x0078, 0x7d87, 0x1078, 0x7dff, 0x0e7f,
5820 +       0x007c, 0x6800, 0xd084, 0x0040, 0x7d9b, 0x2001, 0x0000, 0x1078,
5821 +       0x44ee, 0x2069, 0xa652, 0x6804, 0xd0a4, 0x0040, 0x7d9b, 0x2001,
5822 +       0x0006, 0x1078, 0x4535, 0x007c, 0x0d7e, 0x2011, 0xa620, 0x2204,
5823 +       0xa086, 0x0074, 0x00c0, 0x7dfb, 0x6018, 0x2068, 0x6aa0, 0xa286,
5824 +       0x007e, 0x00c0, 0x7daf, 0x1078, 0x7f9b, 0x0078, 0x7dfd, 0x1078,
5825 +       0x7f91, 0x6018, 0x2068, 0xa080, 0x0028, 0x2014, 0xa286, 0x0080,
5826 +       0x00c0, 0x7dd3, 0x6813, 0x00ff, 0x6817, 0xfffc, 0x6010, 0xa005,
5827 +       0x0040, 0x7dc9, 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6833,
5828 +       0x0200, 0x2001, 0x0006, 0x1078, 0x4502, 0x1078, 0x28a6, 0x1078,
5829 +       0x772d, 0x0078, 0x7dfd, 0x0e7e, 0x2071, 0xa633, 0x2e04, 0xd09c,
5830 +       0x0040, 0x7dee, 0x2071, 0xab80, 0x7108, 0x720c, 0xa18c, 0x00ff,
5831 +       0x00c0, 0x7de6, 0xa284, 0xff00, 0x0040, 0x7dee, 0x6018, 0x2070,
5832 +       0x70a0, 0xd0bc, 0x00c0, 0x7dee, 0x7112, 0x7216, 0x0e7f, 0x2001,
5833 +       0x0004, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0003, 0x1078,
5834 +       0x5dd7, 0x0078, 0x7dfd, 0x1078, 0x7dff, 0x0d7f, 0x007c, 0x2001,
5835 +       0x0007, 0x1078, 0x4502, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003,
5836 +       0x00c0, 0x7e0e, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078, 0x28a6,
5837 +       0x1078, 0x772d, 0x007c, 0x0e7e, 0x2071, 0xa600, 0x7080, 0xa086,
5838 +       0x0014, 0x00c0, 0x7e51, 0x7000, 0xa086, 0x0003, 0x00c0, 0x7e26,
5839 +       0x6010, 0xa005, 0x00c0, 0x7e26, 0x1078, 0x3699, 0x0d7e, 0x6018,
5840 +       0x2068, 0x1078, 0x4649, 0x1078, 0x7d89, 0x0d7f, 0x1078, 0x8043,
5841 +       0x00c0, 0x7e51, 0x0d7e, 0x6018, 0x2068, 0x6890, 0x0d7f, 0xa005,
5842 +       0x0040, 0x7e51, 0x2001, 0x0006, 0x1078, 0x4502, 0x0e7e, 0x6010,
5843 +       0xa005, 0x0040, 0x7e4a, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103,
5844 +       0x7033, 0x0200, 0x0e7f, 0x1078, 0x28a6, 0x1078, 0x772d, 0x0078,
5845 +       0x7e55, 0x1078, 0x7c83, 0x1078, 0x7dff, 0x0e7f, 0x007c, 0x2011,
5846 +       0xa620, 0x2204, 0xa086, 0x0014, 0x00c0, 0x7e6a, 0x2001, 0x0002,
5847 +       0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x5dd7,
5848 +       0x0078, 0x7e6c, 0x1078, 0x7dff, 0x007c, 0x2011, 0xa620, 0x2204,
5849 +       0xa086, 0x0004, 0x00c0, 0x7e7c, 0x2001, 0x0007, 0x1078, 0x4502,
5850 +       0x1078, 0x772d, 0x0078, 0x7e7e, 0x1078, 0x7dff, 0x007c, 0x7d4e,
5851 +       0x7e97, 0x7d4e, 0x7ed2, 0x7d4e, 0x7f44, 0x7e8b, 0x7d4e, 0x7d4e,
5852 +       0x7f59, 0x7d4e, 0x7f6c, 0x6604, 0xa686, 0x0003, 0x0040, 0x7e13,
5853 +       0xa6b6, 0x001e, 0x00c0, 0x7e96, 0x1078, 0x772d, 0x007c, 0x0d7e,
5854 +       0x0c7e, 0x1078, 0x7f7f, 0x00c0, 0x7ead, 0x2001, 0x0000, 0x1078,
5855 +       0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007,
5856 +       0x0002, 0x1078, 0x5dd7, 0x0078, 0x7ecf, 0x2009, 0xab8e, 0x2104,
5857 +       0xa086, 0x0009, 0x00c0, 0x7ec2, 0x6018, 0x2068, 0x6840, 0xa084,
5858 +       0x00ff, 0xa005, 0x0040, 0x7ecd, 0x8001, 0x6842, 0x6017, 0x000a,
5859 +       0x0078, 0x7ecf, 0x2009, 0xab8f, 0x2104, 0xa084, 0xff00, 0xa086,
5860 +       0x1900, 0x00c0, 0x7ecd, 0x0078, 0x7ea1, 0x1078, 0x7dff, 0x0c7f,
5861 +       0x0d7f, 0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7ee6, 0x2001, 0x0000,
5862 +       0x1078, 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003, 0x0001,
5863 +       0x6007, 0x0002, 0x1078, 0x5dd7, 0x0078, 0x7f12, 0x1078, 0x7c83,
5864 +       0x2009, 0xab8e, 0x2134, 0xa6b4, 0x00ff, 0xa686, 0x0005, 0x0040,
5865 +       0x7f13, 0xa686, 0x000b, 0x0040, 0x7f10, 0x2009, 0xab8f, 0x2104,
5866 +       0xa084, 0xff00, 0x00c0, 0x7f00, 0xa686, 0x0009, 0x0040, 0x7f13,
5867 +       0xa086, 0x1900, 0x00c0, 0x7f10, 0xa686, 0x0009, 0x0040, 0x7f13,
5868 +       0x2001, 0x0004, 0x1078, 0x4502, 0x1078, 0x772d, 0x0078, 0x7f12,
5869 +       0x1078, 0x7dff, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06,
5870 +       0x0040, 0x7f21, 0x6838, 0xd0fc, 0x0040, 0x7f21, 0x0d7f, 0x0078,
5871 +       0x7f10, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040,
5872 +       0x7f32, 0x8001, 0x6842, 0x6017, 0x000a, 0x6007, 0x0016, 0x0d7f,
5873 +       0x0078, 0x7f12, 0x68a0, 0xa086, 0x007e, 0x00c0, 0x7f3f, 0x0e7e,
5874 +       0x2071, 0xa600, 0x1078, 0x42b8, 0x0e7f, 0x0078, 0x7f41, 0x1078,
5875 +       0x2880, 0x0d7f, 0x0078, 0x7f10, 0x1078, 0x7f8e, 0x00c0, 0x7f54,
5876 +       0x2001, 0x0004, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0003,
5877 +       0x1078, 0x5dd7, 0x0078, 0x7f58, 0x1078, 0x7c83, 0x1078, 0x7dff,
5878 +       0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7f69, 0x2001, 0x0008, 0x1078,
5879 +       0x4502, 0x6003, 0x0001, 0x6007, 0x0005, 0x1078, 0x5dd7, 0x0078,
5880 +       0x7f6b, 0x1078, 0x7dff, 0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7f7c,
5881 +       0x2001, 0x000a, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0001,
5882 +       0x1078, 0x5dd7, 0x0078, 0x7f7e, 0x1078, 0x7dff, 0x007c, 0x2009,
5883 +       0xab8e, 0x2104, 0xa086, 0x0003, 0x00c0, 0x7f8d, 0x2009, 0xab8f,
5884 +       0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, 0x0001,
5885 +       0x007c, 0x0c7e, 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, 0x45d6,
5886 +       0x017f, 0x0c7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x037e, 0x017e,
5887 +       0x6018, 0x2068, 0x2071, 0xa633, 0x2e04, 0xa085, 0x0003, 0x2072,
5888 +       0x1078, 0x8014, 0x0040, 0x7fd9, 0x2009, 0xa633, 0x2104, 0xc0cd,
5889 +       0x200a, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x7fc2, 0xa006,
5890 +       0x2020, 0x2009, 0x002a, 0x1078, 0xa21d, 0x2001, 0xa60c, 0x200c,
5891 +       0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0001, 0x1078, 0x284f,
5892 +       0x2071, 0xa600, 0x1078, 0x2677, 0x0c7e, 0x157e, 0x20a9, 0x0081,
5893 +       0x2009, 0x007f, 0x1078, 0x298e, 0x8108, 0x00f0, 0x7fd2, 0x157f,
5894 +       0x0c7f, 0x1078, 0x7f91, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071,
5895 +       0xab80, 0x2079, 0x0100, 0x2e04, 0xa084, 0x00ff, 0x2069, 0xa61b,
5896 +       0x206a, 0x78e6, 0x007e, 0x8e70, 0x2e04, 0x2069, 0xa61c, 0x206a,
5897 +       0x78ea, 0xa084, 0xff00, 0x017f, 0xa105, 0x2009, 0xa626, 0x200a,
5898 +       0x2069, 0xab8e, 0x2071, 0xa89e, 0x6810, 0x2072, 0x6814, 0x7006,
5899 +       0x6818, 0x700a, 0x681c, 0x700e, 0x1078, 0x906e, 0x2001, 0x0006,
5900 +       0x1078, 0x4502, 0x1078, 0x28a6, 0x1078, 0x772d, 0x017f, 0x037f,
5901 +       0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x027e, 0x037e, 0x0e7e, 0x157e,
5902 +       0x2019, 0xa626, 0x231c, 0x83ff, 0x0040, 0x803e, 0x2071, 0xab80,
5903 +       0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, 0xff00, 0xa205, 0xa306,
5904 +       0x00c0, 0x803e, 0x2011, 0xab96, 0xad98, 0x000a, 0x20a9, 0x0004,
5905 +       0x1078, 0x80de, 0x00c0, 0x803e, 0x2011, 0xab9a, 0xad98, 0x0006,
5906 +       0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x803e, 0x157f, 0x0e7f,
5907 +       0x037f, 0x027f, 0x007c, 0x0e7e, 0x2071, 0xab8c, 0x7004, 0xa086,
5908 +       0x0014, 0x00c0, 0x8066, 0x7008, 0xa086, 0x0800, 0x00c0, 0x8066,
5909 +       0x700c, 0xd0ec, 0x0040, 0x8064, 0xa084, 0x0f00, 0xa086, 0x0100,
5910 +       0x00c0, 0x8064, 0x7024, 0xd0a4, 0x00c0, 0x8061, 0xd0ac, 0x0040,
5911 +       0x8064, 0xa006, 0x0078, 0x8066, 0xa085, 0x0001, 0x0e7f, 0x007c,
5912 +       0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, 0x007e,
5913 +       0x127e, 0x2091, 0x8000, 0x2029, 0xa8ba, 0x252c, 0x2021, 0xa8c0,
5914 +       0x2424, 0x2061, 0xad00, 0x2071, 0xa600, 0x7248, 0x7064, 0xa202,
5915 +       0x00c8, 0x80cc, 0x1078, 0xa242, 0x0040, 0x80c4, 0x671c, 0xa786,
5916 +       0x0001, 0x0040, 0x80c4, 0xa786, 0x0007, 0x0040, 0x80c4, 0x2500,
5917 +       0xac06, 0x0040, 0x80c4, 0x2400, 0xac06, 0x0040, 0x80c4, 0x0c7e,
5918 +       0x6000, 0xa086, 0x0004, 0x00c0, 0x809f, 0x1078, 0x1757, 0xa786,
5919 +       0x0008, 0x00c0, 0x80ae, 0x1078, 0x8f00, 0x00c0, 0x80ae, 0x0c7f,
5920 +       0x1078, 0x7c83, 0x1078, 0x8ec6, 0x0078, 0x80c4, 0x6010, 0x2068,
5921 +       0x1078, 0x8d06, 0x0040, 0x80c1, 0xa786, 0x0003, 0x00c0, 0x80d6,
5922 +       0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078,
5923 +       0x8eb9, 0x1078, 0x8ec6, 0x0c7f, 0xace0, 0x0010, 0x7058, 0xac02,
5924 +       0x00c8, 0x80cc, 0x0078, 0x807d, 0x127f, 0x007f, 0x027f, 0x047f,
5925 +       0x057f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0xa786, 0x0006,
5926 +       0x00c0, 0x80b8, 0x1078, 0xa1ca, 0x0078, 0x80c1, 0x220c, 0x2304,
5927 +       0xa106, 0x00c0, 0x80e9, 0x8210, 0x8318, 0x00f0, 0x80de, 0xa006,
5928 +       0x007c, 0x2304, 0xa102, 0x0048, 0x80f1, 0x2001, 0x0001, 0x0078,
5929 +       0x80f3, 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, 0x6004, 0xa08a,
5930 +       0x0044, 0x10c8, 0x1332, 0x1078, 0x8eec, 0x0040, 0x8105, 0x1078,
5931 +       0x8f00, 0x0040, 0x8112, 0x0078, 0x810b, 0x1078, 0x28a6, 0x1078,
5932 +       0x8f00, 0x0040, 0x8112, 0x1078, 0x61cd, 0x1078, 0x772d, 0x1078,
5933 +       0x62d1, 0x007c, 0x1078, 0x7c83, 0x0078, 0x810b, 0xa182, 0x0040,
5934 +       0x0079, 0x811a, 0x812d, 0x812d, 0x812d, 0x812d, 0x812d, 0x812d,
5935 +       0x812d, 0x812d, 0x812d, 0x812d, 0x812d, 0x812f, 0x812f, 0x812f,
5936 +       0x812f, 0x812d, 0x812d, 0x812d, 0x812f, 0x1078, 0x1332, 0x600b,
5937 +       0xffff, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091,
5938 +       0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0,
5939 +       0x8146, 0x6004, 0xa082, 0x0040, 0x0079, 0x81d1, 0xa186, 0x0027,
5940 +       0x00c0, 0x8168, 0x1078, 0x61cd, 0x1078, 0x2880, 0x0d7e, 0x6110,
5941 +       0x2168, 0x1078, 0x8d06, 0x0040, 0x8162, 0x6837, 0x0103, 0x684b,
5942 +       0x0029, 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x1078, 0x4a73,
5943 +       0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d, 0x1078, 0x62d1, 0x007c,
5944 +       0xa186, 0x0014, 0x00c0, 0x8171, 0x6004, 0xa082, 0x0040, 0x0079,
5945 +       0x8199, 0xa186, 0x0046, 0x0040, 0x817d, 0xa186, 0x0045, 0x0040,
5946 +       0x817d, 0xa186, 0x0047, 0x10c0, 0x1332, 0x2001, 0x0109, 0x2004,
5947 +       0xd084, 0x0040, 0x8196, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e,
5948 +       0x027e, 0x1078, 0x5c56, 0x027f, 0x017f, 0x007f, 0x127f, 0x6000,
5949 +       0xa086, 0x0002, 0x00c0, 0x8196, 0x0078, 0x820e, 0x1078, 0x7773,
5950 +       0x007c, 0x81ae, 0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ac,
5951 +       0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ca, 0x81ca, 0x81ca, 0x81ca,
5952 +       0x81ac, 0x81ca, 0x81ac, 0x81ca, 0x1078, 0x1332, 0x1078, 0x61cd,
5953 +       0x0d7e, 0x6110, 0x2168, 0x1078, 0x8d06, 0x0040, 0x81c4, 0x6837,
5954 +       0x0103, 0x684b, 0x0006, 0x6847, 0x0000, 0x6850, 0xc0ec, 0x6852,
5955 +       0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d, 0x1078,
5956 +       0x62d1, 0x007c, 0x1078, 0x61cd, 0x1078, 0x772d, 0x1078, 0x62d1,
5957 +       0x007c, 0x81e6, 0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81e4,
5958 +       0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81f8, 0x81f8, 0x81f8, 0x81f8,
5959 +       0x81e4, 0x8207, 0x81e4, 0x81f8, 0x1078, 0x1332, 0x1078, 0x61cd,
5960 +       0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002, 0x1078, 0x62d1,
5961 +       0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x007c,
5962 +       0x1078, 0x61cd, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x2001, 0xa8a4,
5963 +       0x2004, 0x603e, 0x6003, 0x000f, 0x1078, 0x62d1, 0x007c, 0x1078,
5964 +       0x61cd, 0x1078, 0x772d, 0x1078, 0x62d1, 0x007c, 0xa182, 0x0040,
5965 +       0x0079, 0x8212, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x8227,
5966 +       0x8327, 0x8359, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225,
5967 +       0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x1078, 0x1332, 0x0e7e,
5968 +       0x0d7e, 0x603f, 0x0000, 0x2071, 0xab80, 0x7124, 0x610a, 0x2071,
5969 +       0xab8c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff, 0x86ff, 0x0040,
5970 +       0x82e9, 0xa68c, 0x0c00, 0x0040, 0x825e, 0x0f7e, 0x2c78, 0x1078,
5971 +       0x4963, 0x0f7f, 0x0040, 0x825a, 0x684c, 0xd0ac, 0x0040, 0x825a,
5972 +       0x6024, 0xd0dc, 0x00c0, 0x825a, 0x6850, 0xd0bc, 0x00c0, 0x825a,
5973 +       0x7318, 0x6814, 0xa306, 0x00c0, 0x8301, 0x731c, 0x6810, 0xa306,
5974 +       0x00c0, 0x8301, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff,
5975 +       0xa186, 0x0002, 0x0040, 0x8291, 0xa186, 0x0028, 0x00c0, 0x826e,
5976 +       0x1078, 0x8eda, 0x684b, 0x001c, 0x0078, 0x8293, 0xd6dc, 0x0040,
5977 +       0x828a, 0x684b, 0x0015, 0x684c, 0xd0ac, 0x0040, 0x8288, 0x6914,
5978 +       0x6a10, 0x2100, 0xa205, 0x0040, 0x8288, 0x7018, 0xa106, 0x00c0,
5979 +       0x8285, 0x701c, 0xa206, 0x0040, 0x8288, 0x6962, 0x6a5e, 0xc6dc,
5980 +       0x0078, 0x8293, 0xd6d4, 0x0040, 0x8291, 0x684b, 0x0007, 0x0078,
5981 +       0x8293, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4,
5982 +       0x0040, 0x82bc, 0xa686, 0x0100, 0x00c0, 0x82a7, 0x2001, 0xab99,
5983 +       0x2004, 0xa005, 0x00c0, 0x82a7, 0xc6c4, 0x0078, 0x8236, 0x7328,
5984 +       0x732c, 0x6b56, 0x83ff, 0x0040, 0x82bc, 0xa38a, 0x0009, 0x0048,
5985 +       0x82b3, 0x2019, 0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90,
5986 +       0x0019, 0x1078, 0x89e2, 0x037f, 0xd6cc, 0x0040, 0x8317, 0x7124,
5987 +       0x695a, 0x81ff, 0x0040, 0x8317, 0xa192, 0x0021, 0x00c8, 0x82d5,
5988 +       0x2071, 0xab98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078,
5989 +       0x89e2, 0x1078, 0x91f4, 0x0078, 0x8317, 0x6838, 0xd0fc, 0x0040,
5990 +       0x82de, 0x2009, 0x0020, 0x695a, 0x0078, 0x82c8, 0x0f7e, 0x2d78,
5991 +       0x1078, 0x897a, 0x0f7f, 0x1078, 0x91f4, 0x1078, 0x89cf, 0x0078,
5992 +       0x8319, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x8307,
5993 +       0x684c, 0xd0ac, 0x0040, 0x8307, 0x6024, 0xd0dc, 0x00c0, 0x8307,
5994 +       0x6850, 0xd0bc, 0x00c0, 0x8307, 0x6810, 0x6914, 0xa105, 0x0040,
5995 +       0x8307, 0x1078, 0x8fbf, 0x0d7f, 0x0e7f, 0x0078, 0x8326, 0x684b,
5996 +       0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0040, 0x8317,
5997 +       0x6810, 0x6914, 0xa115, 0x0040, 0x8317, 0x1078, 0x84d5, 0x1078,
5998 +       0x4a73, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x1078, 0x8f89,
5999 +       0x0d7f, 0x0e7f, 0x00c0, 0x8326, 0x1078, 0x772d, 0x007c, 0x0f7e,
6000 +       0x6003, 0x0003, 0x2079, 0xab8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08,
6001 +       0x6010, 0x2078, 0x784c, 0xd0ac, 0x0040, 0x833e, 0x6003, 0x0002,
6002 +       0x0f7f, 0x007c, 0x2130, 0x2228, 0x0078, 0x834a, 0x2400, 0x797c,
6003 +       0xa10a, 0x2300, 0x7a80, 0xa213, 0x2600, 0xa102, 0x2500, 0xa203,
6004 +       0x0048, 0x833a, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x603f,
6005 +       0x0000, 0x2c10, 0x1078, 0x1cf0, 0x1078, 0x5df6, 0x1078, 0x639b,
6006 +       0x007c, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0004, 0x6110,
6007 +       0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x15fa, 0x007c,
6008 +       0xa182, 0x0040, 0x0079, 0x836c, 0x837f, 0x837f, 0x837f, 0x837f,
6009 +       0x837f, 0x8381, 0x8424, 0x837f, 0x837f, 0x843a, 0x84ab, 0x837f,
6010 +       0x837f, 0x837f, 0x837f, 0x84ba, 0x837f, 0x837f, 0x837f, 0x1078,
6011 +       0x1332, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0xab8c, 0x6110,
6012 +       0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e,
6013 +       0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x841f,
6014 +       0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x83a2, 0x7018, 0x7862,
6015 +       0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x841f, 0x1078, 0x138b,
6016 +       0x1040, 0x1332, 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837,
6017 +       0x0103, 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46,
6018 +       0xa68c, 0x0c00, 0x0040, 0x83c0, 0x7318, 0x6b62, 0x731c, 0x6b5e,
6019 +       0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x83dc, 0xa186, 0x0028,
6020 +       0x00c0, 0x83ce, 0x684b, 0x001c, 0x0078, 0x83de, 0xd6dc, 0x0040,
6021 +       0x83d5, 0x684b, 0x0015, 0x0078, 0x83de, 0xd6d4, 0x0040, 0x83dc,
6022 +       0x684b, 0x0007, 0x0078, 0x83de, 0x684b, 0x0000, 0x6f4e, 0x7850,
6023 +       0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x83fc, 0x7328,
6024 +       0x732c, 0x6b56, 0x83ff, 0x0040, 0x83fc, 0xa38a, 0x0009, 0x0048,
6025 +       0x83f3, 0x2019, 0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90,
6026 +       0x0019, 0x1078, 0x89e2, 0x037f, 0xd6cc, 0x0040, 0x841f, 0x7124,
6027 +       0x695a, 0x81ff, 0x0040, 0x841f, 0xa192, 0x0021, 0x00c8, 0x8413,
6028 +       0x2071, 0xab98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078,
6029 +       0x89e2, 0x0078, 0x841f, 0x7838, 0xd0fc, 0x0040, 0x841c, 0x2009,
6030 +       0x0020, 0x695a, 0x0078, 0x8408, 0x2d78, 0x1078, 0x897a, 0x0d7f,
6031 +       0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079,
6032 +       0xab8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12,
6033 +       0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x1cf0, 0x1078,
6034 +       0x6df4, 0x007c, 0x0d7e, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f,
6035 +       0x0040, 0x8446, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002,
6036 +       0x1078, 0x627a, 0x1078, 0x639b, 0x6110, 0x2168, 0x694c, 0xd1e4,
6037 +       0x0040, 0x84a9, 0xd1cc, 0x0040, 0x8480, 0x6948, 0x6838, 0xd0fc,
6038 +       0x0040, 0x8478, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90,
6039 +       0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304,
6040 +       0x2012, 0x8318, 0x8210, 0x00f0, 0x8467, 0x157f, 0x007f, 0x6852,
6041 +       0x007f, 0x684e, 0x017f, 0x2168, 0x1078, 0x13b4, 0x0078, 0x84a3,
6042 +       0x017e, 0x1078, 0x13b4, 0x0d7f, 0x1078, 0x89cf, 0x0078, 0x84a3,
6043 +       0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0040,
6044 +       0x849f, 0xa086, 0x0028, 0x00c0, 0x8491, 0x684b, 0x001c, 0x0078,
6045 +       0x84a1, 0xd1dc, 0x0040, 0x8498, 0x684b, 0x0015, 0x0078, 0x84a1,
6046 +       0xd1d4, 0x0040, 0x849f, 0x684b, 0x0007, 0x0078, 0x84a1, 0x684b,
6047 +       0x0000, 0x1078, 0x4a73, 0x1078, 0x8f89, 0x00c0, 0x84a9, 0x1078,
6048 +       0x772d, 0x0d7f, 0x007c, 0x2019, 0x0001, 0x1078, 0x7058, 0x6003,
6049 +       0x0002, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x1078, 0x627a, 0x1078,
6050 +       0x639b, 0x007c, 0x1078, 0x627a, 0x1078, 0x2880, 0x0d7e, 0x6110,
6051 +       0x2168, 0x1078, 0x8d06, 0x0040, 0x84cf, 0x6837, 0x0103, 0x684b,
6052 +       0x0029, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f,
6053 +       0x1078, 0x772d, 0x1078, 0x639b, 0x007c, 0x684b, 0x0015, 0xd1fc,
6054 +       0x0040, 0x84e1, 0x684b, 0x0007, 0x8002, 0x8000, 0x810a, 0xa189,
6055 +       0x0000, 0x6962, 0x685e, 0x007c, 0xa182, 0x0040, 0x0079, 0x84e8,
6056 +       0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fd, 0x84fb, 0x85d0,
6057 +       0x85dc, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb,
6058 +       0x84fb, 0x84fb, 0x84fb, 0x1078, 0x1332, 0x077e, 0x0f7e, 0x0e7e,
6059 +       0x0d7e, 0x2071, 0xab8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff,
6060 +       0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x851b, 0xa684,
6061 +       0x00ff, 0x00c0, 0x851b, 0x6024, 0xd0f4, 0x0040, 0x851b, 0x1078,
6062 +       0x8fbf, 0x0078, 0x85cb, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218,
6063 +       0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x85c0, 0xa694,
6064 +       0xff00, 0xa284, 0x0c00, 0x0040, 0x8531, 0x7018, 0x7862, 0x701c,
6065 +       0x785e, 0xa284, 0x0300, 0x0040, 0x85bd, 0xa686, 0x0100, 0x00c0,
6066 +       0x8543, 0x2001, 0xab99, 0x2004, 0xa005, 0x00c0, 0x8543, 0xc6c4,
6067 +       0x7e46, 0x0078, 0x8524, 0x1078, 0x138b, 0x1040, 0x1332, 0x2d00,
6068 +       0x784a, 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838,
6069 +       0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00,
6070 +       0x0040, 0x855e, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff,
6071 +       0xa186, 0x0002, 0x0040, 0x857a, 0xa186, 0x0028, 0x00c0, 0x856c,
6072 +       0x684b, 0x001c, 0x0078, 0x857c, 0xd6dc, 0x0040, 0x8573, 0x684b,
6073 +       0x0015, 0x0078, 0x857c, 0xd6d4, 0x0040, 0x857a, 0x684b, 0x0007,
6074 +       0x0078, 0x857c, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854,
6075 +       0x6856, 0xa01e, 0xd6c4, 0x0040, 0x859a, 0x7328, 0x732c, 0x6b56,
6076 +       0x83ff, 0x0040, 0x859a, 0xa38a, 0x0009, 0x0048, 0x8591, 0x2019,
6077 +       0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90, 0x0019, 0x1078,
6078 +       0x89e2, 0x037f, 0xd6cc, 0x0040, 0x85bd, 0x7124, 0x695a, 0x81ff,
6079 +       0x0040, 0x85bd, 0xa192, 0x0021, 0x00c8, 0x85b1, 0x2071, 0xab98,
6080 +       0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x89e2, 0x0078,
6081 +       0x85bd, 0x7838, 0xd0fc, 0x0040, 0x85ba, 0x2009, 0x0020, 0x695a,
6082 +       0x0078, 0x85a6, 0x2d78, 0x1078, 0x897a, 0xd6dc, 0x00c0, 0x85c3,
6083 +       0xa006, 0x0078, 0x85c9, 0x2001, 0x0001, 0x2071, 0xab8c, 0x7218,
6084 +       0x731c, 0x1078, 0x1653, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c,
6085 +       0x2001, 0xa8a4, 0x2004, 0x603e, 0x20e1, 0x0005, 0x3d18, 0x3e20,
6086 +       0x2c10, 0x1078, 0x15fa, 0x007c, 0x2001, 0xa8a4, 0x2004, 0x603e,
6087 +       0x0d7e, 0x6003, 0x0002, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040,
6088 +       0x870c, 0x603f, 0x0000, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f,
6089 +       0x0040, 0x8622, 0x6814, 0x6910, 0xa115, 0x0040, 0x8622, 0x6a60,
6090 +       0xa206, 0x00c0, 0x85ff, 0x685c, 0xa106, 0x0040, 0x8622, 0x684c,
6091 +       0xc0e4, 0x684e, 0x6847, 0x0000, 0x6863, 0x0000, 0x685f, 0x0000,
6092 +       0x6024, 0xd0f4, 0x00c0, 0x8617, 0x697c, 0x6810, 0xa102, 0x603a,
6093 +       0x6980, 0x6814, 0xa103, 0x6036, 0x6024, 0xc0f5, 0x6026, 0x0d7e,
6094 +       0x6018, 0x2068, 0x683c, 0x8000, 0x683e, 0x0d7f, 0x1078, 0x8fbf,
6095 +       0x0078, 0x870c, 0x694c, 0xd1cc, 0x0040, 0x86d1, 0x6948, 0x6838,
6096 +       0xd0fc, 0x0040, 0x8689, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e,
6097 +       0x0f7e, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0040,
6098 +       0x865c, 0xa086, 0x0028, 0x00c0, 0x8643, 0x684b, 0x001c, 0x784b,
6099 +       0x001c, 0x0078, 0x8667, 0xd1dc, 0x0040, 0x8653, 0x684b, 0x0015,
6100 +       0x784b, 0x0015, 0x1078, 0x916c, 0x0040, 0x8651, 0x7944, 0xc1dc,
6101 +       0x7946, 0x0078, 0x8667, 0xd1d4, 0x0040, 0x865c, 0x684b, 0x0007,
6102 +       0x784b, 0x0007, 0x0078, 0x8667, 0x684c, 0xd0ac, 0x0040, 0x8667,
6103 +       0x6810, 0x6914, 0xa115, 0x0040, 0x8667, 0x1078, 0x84d5, 0x6848,
6104 +       0x784a, 0x6860, 0x7862, 0x685c, 0x785e, 0xad90, 0x000d, 0xaf98,
6105 +       0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012, 0x8318,
6106 +       0x8210, 0x00f0, 0x8675, 0x157f, 0x0f7f, 0x007f, 0x6852, 0x007f,
6107 +       0x684e, 0x1078, 0x91f4, 0x017f, 0x2168, 0x1078, 0x13b4, 0x0078,
6108 +       0x8706, 0x017e, 0x0f7e, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6,
6109 +       0x0002, 0x0040, 0x86b6, 0xa086, 0x0028, 0x00c0, 0x869d, 0x684b,
6110 +       0x001c, 0x784b, 0x001c, 0x0078, 0x86c1, 0xd1dc, 0x0040, 0x86ad,
6111 +       0x684b, 0x0015, 0x784b, 0x0015, 0x1078, 0x916c, 0x0040, 0x86ab,
6112 +       0x7944, 0xc1dc, 0x7946, 0x0078, 0x86c1, 0xd1d4, 0x0040, 0x86b6,
6113 +       0x684b, 0x0007, 0x784b, 0x0007, 0x0078, 0x86c1, 0x684c, 0xd0ac,
6114 +       0x0040, 0x86c1, 0x6810, 0x6914, 0xa115, 0x0040, 0x86c1, 0x1078,
6115 +       0x84d5, 0x6860, 0x7862, 0x685c, 0x785e, 0x684c, 0x784e, 0x0f7f,
6116 +       0x1078, 0x13b4, 0x0d7f, 0x1078, 0x91f4, 0x1078, 0x89cf, 0x0078,
6117 +       0x8706, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002,
6118 +       0x0040, 0x86f7, 0xa086, 0x0028, 0x00c0, 0x86e2, 0x684b, 0x001c,
6119 +       0x0078, 0x8704, 0xd1dc, 0x0040, 0x86f0, 0x684b, 0x0015, 0x1078,
6120 +       0x916c, 0x0040, 0x86ee, 0x6944, 0xc1dc, 0x6946, 0x0078, 0x8704,
6121 +       0xd1d4, 0x0040, 0x86f7, 0x684b, 0x0007, 0x0078, 0x8704, 0x684b,
6122 +       0x0000, 0x684c, 0xd0ac, 0x0040, 0x8704, 0x6810, 0x6914, 0xa115,
6123 +       0x0040, 0x8704, 0x1078, 0x84d5, 0x1078, 0x4a73, 0x1078, 0x8f89,
6124 +       0x00c0, 0x870c, 0x1078, 0x772d, 0x0d7f, 0x007c, 0x1078, 0x61cd,
6125 +       0x0078, 0x8714, 0x1078, 0x627a, 0x1078, 0x8d06, 0x0040, 0x8733,
6126 +       0x0d7e, 0x6110, 0x2168, 0x6837, 0x0103, 0x2009, 0xa60c, 0x210c,
6127 +       0xd18c, 0x00c0, 0x873e, 0xd184, 0x00c0, 0x873a, 0x6108, 0x694a,
6128 +       0xa18e, 0x0029, 0x00c0, 0x872e, 0x1078, 0xa4e2, 0x6847, 0x0000,
6129 +       0x1078, 0x4a73, 0x0d7f, 0x1078, 0x772d, 0x1078, 0x62d1, 0x1078,
6130 +       0x639b, 0x007c, 0x684b, 0x0004, 0x0078, 0x872e, 0x684b, 0x0004,
6131 +       0x0078, 0x872e, 0xa182, 0x0040, 0x0079, 0x8746, 0x8759, 0x8759,
6132 +       0x8759, 0x8759, 0x8759, 0x875b, 0x8759, 0x875e, 0x8759, 0x8759,
6133 +       0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759,
6134 +       0x8759, 0x1078, 0x1332, 0x1078, 0x772d, 0x007c, 0x007e, 0x027e,
6135 +       0xa016, 0x1078, 0x15fa, 0x027f, 0x007f, 0x007c, 0xa182, 0x0085,
6136 +       0x0079, 0x876a, 0x8773, 0x8771, 0x8771, 0x877f, 0x8771, 0x8771,
6137 +       0x8771, 0x1078, 0x1332, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a,
6138 +       0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x027e,
6139 +       0x057e, 0x0d7e, 0x0e7e, 0x2071, 0xab80, 0x7224, 0x6212, 0x7220,
6140 +       0x1078, 0x8cf2, 0x0040, 0x87a4, 0x2268, 0x6800, 0xa086, 0x0000,
6141 +       0x0040, 0x87a4, 0x6018, 0x6d18, 0xa52e, 0x00c0, 0x87a4, 0x0c7e,
6142 +       0x2d60, 0x1078, 0x89f3, 0x0c7f, 0x0040, 0x87a4, 0x6803, 0x0002,
6143 +       0x6007, 0x0086, 0x0078, 0x87a6, 0x6007, 0x0087, 0x6003, 0x0001,
6144 +       0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0f7e, 0x2278, 0x1078, 0x4963,
6145 +       0x0f7f, 0x0040, 0x87be, 0x6824, 0xd0ec, 0x0040, 0x87be, 0x0c7e,
6146 +       0x2260, 0x603f, 0x0000, 0x1078, 0x8fbf, 0x0c7f, 0x0e7f, 0x0d7f,
6147 +       0x057f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x87d4, 0x6004,
6148 +       0xa08a, 0x0085, 0x1048, 0x1332, 0xa08a, 0x008c, 0x10c8, 0x1332,
6149 +       0xa082, 0x0085, 0x0079, 0x87e3, 0xa186, 0x0027, 0x0040, 0x87dc,
6150 +       0xa186, 0x0014, 0x10c0, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6,
6151 +       0x1078, 0x62d1, 0x007c, 0x87ea, 0x87ec, 0x87ec, 0x87ea, 0x87ea,
6152 +       0x87ea, 0x87ea, 0x1078, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6,
6153 +       0x1078, 0x62d1, 0x007c, 0xa186, 0x0013, 0x00c0, 0x87fd, 0x6004,
6154 +       0xa082, 0x0085, 0x2008, 0x0078, 0x8838, 0xa186, 0x0027, 0x00c0,
6155 +       0x8820, 0x1078, 0x61cd, 0x1078, 0x2880, 0x0d7e, 0x6010, 0x2068,
6156 +       0x1078, 0x8d06, 0x0040, 0x8816, 0x6837, 0x0103, 0x6847, 0x0000,
6157 +       0x684b, 0x0029, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078,
6158 +       0x772d, 0x1078, 0x62d1, 0x007c, 0x1078, 0x7773, 0x0078, 0x881b,
6159 +       0xa186, 0x0014, 0x00c0, 0x881c, 0x1078, 0x61cd, 0x0d7e, 0x6010,
6160 +       0x2068, 0x1078, 0x8d06, 0x0040, 0x8816, 0x6837, 0x0103, 0x6847,
6161 +       0x0000, 0x684b, 0x0006, 0x6850, 0xc0ec, 0x6852, 0x0078, 0x8812,
6162 +       0x0079, 0x883a, 0x8843, 0x8841, 0x8841, 0x8841, 0x8841, 0x8841,
6163 +       0x885e, 0x1078, 0x1332, 0x1078, 0x61cd, 0x6030, 0xa08c, 0xff00,
6164 +       0x810f, 0xa186, 0x0039, 0x0040, 0x8851, 0xa186, 0x0035, 0x00c0,
6165 +       0x8855, 0x2001, 0xa8a2, 0x0078, 0x8857, 0x2001, 0xa8a3, 0x2004,
6166 +       0x6016, 0x6003, 0x000c, 0x1078, 0x62d1, 0x007c, 0x1078, 0x61cd,
6167 +       0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x886c,
6168 +       0xa186, 0x0035, 0x00c0, 0x8870, 0x2001, 0xa8a2, 0x0078, 0x8872,
6169 +       0x2001, 0xa8a3, 0x2004, 0x6016, 0x6003, 0x000e, 0x1078, 0x62d1,
6170 +       0x007c, 0xa182, 0x008c, 0x00c8, 0x8883, 0xa182, 0x0085, 0x0048,
6171 +       0x8883, 0x0079, 0x8886, 0x1078, 0x7773, 0x007c, 0x888d, 0x888d,
6172 +       0x888d, 0x888d, 0x888f, 0x88ec, 0x888d, 0x1078, 0x1332, 0x0f7e,
6173 +       0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x88a2, 0x6030, 0xa08c,
6174 +       0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x8903, 0xa186, 0x0035,
6175 +       0x0040, 0x8903, 0x0d7e, 0x1078, 0x8d06, 0x00c0, 0x88ab, 0x1078,
6176 +       0x8eb9, 0x0078, 0x88ce, 0x6010, 0x2068, 0x684c, 0xd0e4, 0x00c0,
6177 +       0x88b3, 0x1078, 0x8eb9, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040,
6178 +       0x88bf, 0x684b, 0x0006, 0xc0ec, 0x6852, 0x0078, 0x88ca, 0xd0bc,
6179 +       0x0040, 0x88c6, 0x684b, 0x0002, 0x0078, 0x88ca, 0x684b, 0x0005,
6180 +       0x1078, 0x8f85, 0x6847, 0x0000, 0x1078, 0x4a73, 0x2c68, 0x1078,
6181 +       0x76c7, 0x0040, 0x88e7, 0x6003, 0x0001, 0x6007, 0x001e, 0x2009,
6182 +       0xab8e, 0x210c, 0x6136, 0x2009, 0xab8f, 0x210c, 0x613a, 0x6918,
6183 +       0x611a, 0x6920, 0x6122, 0x601f, 0x0001, 0x1078, 0x5d8a, 0x2d60,
6184 +       0x1078, 0x772d, 0x0d7f, 0x007c, 0x0f7e, 0x2c78, 0x1078, 0x4963,
6185 +       0x0f7f, 0x0040, 0x8929, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186,
6186 +       0x0035, 0x0040, 0x8903, 0xa186, 0x001e, 0x0040, 0x8903, 0xa186,
6187 +       0x0039, 0x00c0, 0x8929, 0x0d7e, 0x2c68, 0x1078, 0x91bc, 0x00c0,
6188 +       0x894d, 0x1078, 0x76c7, 0x0040, 0x8926, 0x6106, 0x6003, 0x0001,
6189 +       0x601f, 0x0001, 0x6918, 0x611a, 0x6928, 0x612a, 0x692c, 0x612e,
6190 +       0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, 0x6136, 0x6938, 0x613a,
6191 +       0x6920, 0x6122, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x2d60, 0x0078,
6192 +       0x894d, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x894d,
6193 +       0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, 0x893c, 0xc0ec, 0x6852,
6194 +       0x684b, 0x0006, 0x0078, 0x8947, 0xd0bc, 0x0040, 0x8943, 0x684b,
6195 +       0x0002, 0x0078, 0x8947, 0x684b, 0x0005, 0x1078, 0x8f85, 0x6847,
6196 +       0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d,
6197 +       0x007c, 0x017e, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
6198 +       0x8961, 0x6837, 0x0103, 0x684b, 0x0028, 0x6847, 0x0000, 0x1078,
6199 +       0x4a73, 0x0d7f, 0x017f, 0xa186, 0x0013, 0x0040, 0x8973, 0xa186,
6200 +       0x0014, 0x0040, 0x8973, 0xa186, 0x0027, 0x0040, 0x8973, 0x1078,
6201 +       0x7773, 0x0078, 0x8979, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078,
6202 +       0x62d1, 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e, 0x2029, 0x0001,
6203 +       0xa182, 0x0101, 0x00c8, 0x8986, 0x0078, 0x8988, 0x2009, 0x0100,
6204 +       0x2130, 0x2069, 0xab98, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020,
6205 +       0xaf90, 0x001d, 0x1078, 0x89e2, 0xa6b2, 0x0020, 0x7804, 0xa06d,
6206 +       0x0040, 0x899c, 0x1078, 0x13b4, 0x1078, 0x138b, 0x0040, 0x89c6,
6207 +       0x8528, 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a,
6208 +       0x003d, 0x00c8, 0x89b2, 0x2608, 0xad90, 0x000f, 0x1078, 0x89e2,
6209 +       0x0078, 0x89c6, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90,
6210 +       0x000f, 0x1078, 0x89e2, 0x0078, 0x899c, 0x0f7f, 0x852f, 0xa5ad,
6211 +       0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x89cb, 0x0f7f, 0x852f,
6212 +       0xa5ad, 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f, 0x007c, 0x0f7e,
6213 +       0x8dff, 0x0040, 0x89e0, 0x6804, 0xa07d, 0x0040, 0x89de, 0x6807,
6214 +       0x0000, 0x1078, 0x4a73, 0x2f68, 0x0078, 0x89d3, 0x1078, 0x4a73,
6215 +       0x0f7f, 0x007c, 0x157e, 0xa184, 0x0001, 0x0040, 0x89e8, 0x8108,
6216 +       0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, 0x8210, 0x00f0,
6217 +       0x89ea, 0x157f, 0x007c, 0x067e, 0x127e, 0x2091, 0x8000, 0x2031,
6218 +       0x0001, 0x601c, 0xa084, 0x000f, 0x1079, 0x8a0f, 0x127f, 0x067f,
6219 +       0x007c, 0x127e, 0x2091, 0x8000, 0x067e, 0x2031, 0x0000, 0x601c,
6220 +       0xa084, 0x000f, 0x1079, 0x8a0f, 0x067f, 0x127f, 0x007c, 0x8a29,
6221 +       0x8a17, 0x8a24, 0x8a45, 0x8a17, 0x8a24, 0x8a45, 0x8a24, 0x1078,
6222 +       0x1332, 0x037e, 0x2019, 0x0010, 0x1078, 0x9dc7, 0x601f, 0x0006,
6223 +       0x6003, 0x0007, 0x037f, 0x007c, 0xa006, 0x007c, 0xa085, 0x0001,
6224 +       0x007c, 0x0d7e, 0x86ff, 0x00c0, 0x8a40, 0x6010, 0x2068, 0x1078,
6225 +       0x8d06, 0x0040, 0x8a42, 0xa00e, 0x2001, 0x0005, 0x1078, 0x4b51,
6226 +       0x1078, 0x8f85, 0x1078, 0x4a73, 0x1078, 0x772d, 0xa085, 0x0001,
6227 +       0x0d7f, 0x007c, 0xa006, 0x0078, 0x8a40, 0x6000, 0xa08a, 0x0010,
6228 +       0x10c8, 0x1332, 0x1079, 0x8a4d, 0x007c, 0x8a5d, 0x8a82, 0x8a5f,
6229 +       0x8aa5, 0x8a7e, 0x8a5d, 0x8a24, 0x8a29, 0x8a29, 0x8a24, 0x8a24,
6230 +       0x8a24, 0x8a24, 0x8a24, 0x8a24, 0x8a24, 0x1078, 0x1332, 0x86ff,
6231 +       0x00c0, 0x8a7b, 0x601c, 0xa086, 0x0006, 0x0040, 0x8a7b, 0x0d7e,
6232 +       0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x8a70, 0x1078, 0x8f85,
6233 +       0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078,
6234 +       0x5d8a, 0x1078, 0x62d1, 0xa085, 0x0001, 0x007c, 0x1078, 0x1757,
6235 +       0x0078, 0x8a5f, 0x0e7e, 0x2071, 0xa8b1, 0x7024, 0xac06, 0x00c0,
6236 +       0x8a8b, 0x1078, 0x6fc4, 0x601c, 0xa084, 0x000f, 0xa086, 0x0006,
6237 +       0x00c0, 0x8a9d, 0x087e, 0x097e, 0x2049, 0x0001, 0x2c40, 0x1078,
6238 +       0x7246, 0x097f, 0x087f, 0x0078, 0x8a9f, 0x1078, 0x6ebe, 0x0e7f,
6239 +       0x00c0, 0x8a5f, 0x1078, 0x8a24, 0x007c, 0x037e, 0x0e7e, 0x2071,
6240 +       0xa8b1, 0x703c, 0xac06, 0x00c0, 0x8ab5, 0x2019, 0x0000, 0x1078,
6241 +       0x7058, 0x0e7f, 0x037f, 0x0078, 0x8a5f, 0x1078, 0x738a, 0x0e7f,
6242 +       0x037f, 0x00c0, 0x8a5f, 0x1078, 0x8a24, 0x007c, 0x0c7e, 0x601c,
6243 +       0xa084, 0x000f, 0x1079, 0x8ac6, 0x0c7f, 0x007c, 0x8ad5, 0x8b47,
6244 +       0x8c7f, 0x8ae0, 0x8ec6, 0x8ad5, 0x9db8, 0x772d, 0x8b47, 0x1078,
6245 +       0x8f00, 0x00c0, 0x8ad5, 0x1078, 0x7c83, 0x007c, 0x1078, 0x61cd,
6246 +       0x1078, 0x62d1, 0x1078, 0x772d, 0x007c, 0x6017, 0x0001, 0x007c,
6247 +       0x1078, 0x8d06, 0x0040, 0x8ae8, 0x6010, 0xa080, 0x0019, 0x2c02,
6248 +       0x6000, 0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8af0, 0x007c,
6249 +       0x8b00, 0x8b02, 0x8b24, 0x8b36, 0x8b43, 0x8b00, 0x8ad5, 0x8ad5,
6250 +       0x8ad5, 0x8b36, 0x8b36, 0x8b00, 0x8b00, 0x8b00, 0x8b00, 0x8b40,
6251 +       0x1078, 0x1332, 0x0e7e, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052,
6252 +       0x2071, 0xa8b1, 0x7024, 0xac06, 0x0040, 0x8b20, 0x1078, 0x6ebe,
6253 +       0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x2001, 0xa8a3,
6254 +       0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0e7f, 0x007c,
6255 +       0x6017, 0x0001, 0x0078, 0x8b1e, 0x0d7e, 0x6010, 0x2068, 0x6850,
6256 +       0xc0b5, 0x6852, 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f,
6257 +       0x0002, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x007c, 0x0d7e, 0x6017,
6258 +       0x0001, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x007c,
6259 +       0x1078, 0x772d, 0x007c, 0x1078, 0x1757, 0x0078, 0x8b24, 0x6000,
6260 +       0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8b4f, 0x007c, 0x8b5f,
6261 +       0x8add, 0x8b61, 0x8b5f, 0x8b61, 0x8b61, 0x8ad6, 0x8b5f, 0x8acf,
6262 +       0x8acf, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x1078,
6263 +       0x1332, 0x0d7e, 0x6018, 0x2068, 0x6804, 0xa084, 0x00ff, 0x0d7f,
6264 +       0xa08a, 0x000c, 0x10c8, 0x1332, 0x1079, 0x8b6f, 0x007c, 0x8b7b,
6265 +       0x8c23, 0x8b7d, 0x8bbd, 0x8b7d, 0x8bbd, 0x8b7d, 0x8b8a, 0x8b7b,
6266 +       0x8bbd, 0x8b7b, 0x8ba7, 0x1078, 0x1332, 0x6004, 0xa08e, 0x0016,
6267 +       0x0040, 0x8bb8, 0xa08e, 0x0004, 0x0040, 0x8bb8, 0xa08e, 0x0002,
6268 +       0x0040, 0x8bb8, 0x6004, 0x1078, 0x8f00, 0x0040, 0x8c3e, 0xa08e,
6269 +       0x0021, 0x0040, 0x8c42, 0xa08e, 0x0022, 0x0040, 0x8c3e, 0xa08e,
6270 +       0x003d, 0x0040, 0x8c42, 0xa08e, 0x0039, 0x0040, 0x8c46, 0xa08e,
6271 +       0x0035, 0x0040, 0x8c46, 0xa08e, 0x001e, 0x0040, 0x8bba, 0xa08e,
6272 +       0x0001, 0x00c0, 0x8bb6, 0x0d7e, 0x6018, 0x2068, 0x6804, 0xa084,
6273 +       0x00ff, 0x0d7f, 0xa086, 0x0006, 0x0040, 0x8bb8, 0x1078, 0x2880,
6274 +       0x1078, 0x7c83, 0x1078, 0x8ec6, 0x007c, 0x0c7e, 0x0d7e, 0x6104,
6275 +       0xa186, 0x0016, 0x0040, 0x8c13, 0xa186, 0x0002, 0x00c0, 0x8be6,
6276 +       0x6018, 0x2068, 0x68a0, 0xd0bc, 0x00c0, 0x8c6a, 0x6840, 0xa084,
6277 +       0x00ff, 0xa005, 0x0040, 0x8be6, 0x8001, 0x6842, 0x6013, 0x0000,
6278 +       0x601f, 0x0007, 0x6017, 0x0398, 0x1078, 0x76c7, 0x0040, 0x8be6,
6279 +       0x2d00, 0x601a, 0x601f, 0x0001, 0x0078, 0x8c13, 0x0d7f, 0x0c7f,
6280 +       0x6004, 0xa08e, 0x0002, 0x00c0, 0x8c04, 0x6018, 0xa080, 0x0028,
6281 +       0x2004, 0xa086, 0x007e, 0x00c0, 0x8c04, 0x2009, 0xa633, 0x2104,
6282 +       0xc085, 0x200a, 0x0e7e, 0x2071, 0xa600, 0x1078, 0x42b8, 0x0e7f,
6283 +       0x1078, 0x7c83, 0x0078, 0x8c08, 0x1078, 0x7c83, 0x1078, 0x2880,
6284 +       0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x28a6, 0x127f, 0x0e7f,
6285 +       0x1078, 0x8ec6, 0x007c, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003,
6286 +       0x0001, 0x6007, 0x0002, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0d7f,
6287 +       0x0c7f, 0x0078, 0x8c12, 0x0c7e, 0x0d7e, 0x6104, 0xa186, 0x0016,
6288 +       0x0040, 0x8c13, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005,
6289 +       0x0040, 0x8be6, 0x8001, 0x6842, 0x6003, 0x0001, 0x1078, 0x5dd7,
6290 +       0x1078, 0x62d1, 0x0d7f, 0x0c7f, 0x0078, 0x8c12, 0x1078, 0x7c83,
6291 +       0x0078, 0x8bba, 0x1078, 0x7ca6, 0x0078, 0x8bba, 0x0d7e, 0x2c68,
6292 +       0x6104, 0x1078, 0x91bc, 0x0d7f, 0x0040, 0x8c52, 0x1078, 0x772d,
6293 +       0x0078, 0x8c69, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105,
6294 +       0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6038,
6295 +       0x600a, 0x2001, 0xa8a3, 0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078,
6296 +       0x62d1, 0x007c, 0x0d7f, 0x0c7f, 0x1078, 0x7c83, 0x1078, 0x2880,
6297 +       0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x28a6, 0x6013, 0x0000,
6298 +       0x601f, 0x0007, 0x6017, 0x0398, 0x127f, 0x0e7f, 0x007c, 0x6000,
6299 +       0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8c87, 0x007c, 0x8c97,
6300 +       0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97,
6301 +       0x8ad5, 0x8c97, 0x8add, 0x8c99, 0x8add, 0x8ca7, 0x8c97, 0x1078,
6302 +       0x1332, 0x6004, 0xa086, 0x008b, 0x0040, 0x8ca7, 0x6007, 0x008b,
6303 +       0x6003, 0x000d, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x007c, 0x1078,
6304 +       0x8eb9, 0x1078, 0x8d06, 0x0040, 0x8cdf, 0x1078, 0x2880, 0x0d7e,
6305 +       0x1078, 0x8d06, 0x0040, 0x8cc1, 0x6010, 0x2068, 0x6837, 0x0103,
6306 +       0x684b, 0x0006, 0x6847, 0x0000, 0x6850, 0xc0ed, 0x6852, 0x1078,
6307 +       0x4a73, 0x2c68, 0x1078, 0x76c7, 0x0040, 0x8ccf, 0x6818, 0x601a,
6308 +       0x0c7e, 0x2d60, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x8cd0, 0x2d60,
6309 +       0x0d7f, 0x6013, 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003,
6310 +       0x0001, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0078, 0x8cf1, 0x6030,
6311 +       0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x8ceb, 0xa186,
6312 +       0x0035, 0x00c0, 0x8cef, 0x1078, 0x2880, 0x0078, 0x8cc1, 0x1078,
6313 +       0x8ec6, 0x007c, 0xa284, 0x000f, 0x00c0, 0x8d03, 0xa282, 0xad00,
6314 +       0x0048, 0x8d03, 0x2001, 0xa616, 0x2004, 0xa202, 0x00c8, 0x8d03,
6315 +       0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x8d02, 0x027e, 0x0e7e,
6316 +       0x2071, 0xa600, 0x6210, 0x705c, 0xa202, 0x0048, 0x8d18, 0x7060,
6317 +       0xa202, 0x00c8, 0x8d18, 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c,
6318 +       0xa006, 0x0078, 0x8d15, 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e,
6319 +       0x2091, 0x8000, 0x2061, 0xad00, 0x2071, 0xa600, 0x7348, 0x7064,
6320 +       0xa302, 0x00c8, 0x8d45, 0x601c, 0xa206, 0x00c0, 0x8d3d, 0x1078,
6321 +       0x902b, 0x0040, 0x8d3d, 0x1078, 0x8f00, 0x00c0, 0x8d39, 0x1078,
6322 +       0x7c83, 0x0c7e, 0x1078, 0x772d, 0x0c7f, 0xace0, 0x0010, 0x7058,
6323 +       0xac02, 0x00c8, 0x8d45, 0x0078, 0x8d26, 0x127f, 0x007f, 0x037f,
6324 +       0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x017e, 0xa188, 0xa735,
6325 +       0x210c, 0x81ff, 0x0040, 0x8d59, 0x2061, 0xa9b3, 0x611a, 0x1078,
6326 +       0x2880, 0xa006, 0x0078, 0x8d5e, 0xa085, 0x0001, 0x017f, 0x0c7f,
6327 +       0x0e7f, 0x007c, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e,
6328 +       0x1078, 0x76c7, 0x057f, 0x0040, 0x8d7b, 0x6612, 0x651a, 0x601f,
6329 +       0x0003, 0x2009, 0x004b, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f,
6330 +       0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8d77, 0x0c7e, 0x057e,
6331 +       0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x76c7, 0x057f,
6332 +       0x0040, 0x8da9, 0x6013, 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e,
6333 +       0x2560, 0x1078, 0x47e9, 0x0c7f, 0x1078, 0x5f01, 0x077e, 0x2039,
6334 +       0x0000, 0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f, 0x2009,
6335 +       0x004c, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f,
6336 +       0x007c, 0xa006, 0x0078, 0x8da5, 0x0f7e, 0x0c7e, 0x047e, 0x0c7e,
6337 +       0x1078, 0x76c7, 0x2c78, 0x0c7f, 0x0040, 0x8dc6, 0x7e12, 0x2c00,
6338 +       0x781a, 0x781f, 0x0003, 0x2021, 0x0005, 0x1078, 0x8e11, 0x2f60,
6339 +       0x2009, 0x004d, 0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f,
6340 +       0x0f7f, 0x007c, 0x0f7e, 0x0c7e, 0x047e, 0x0c7e, 0x1078, 0x76c7,
6341 +       0x2c78, 0x0c7f, 0x0040, 0x8de4, 0x7e12, 0x2c00, 0x781a, 0x781f,
6342 +       0x0003, 0x2021, 0x0005, 0x1078, 0x8e11, 0x2f60, 0x2009, 0x004e,
6343 +       0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f, 0x0f7f, 0x007c,
6344 +       0x0f7e, 0x0c7e, 0x047e, 0x0c7e, 0x1078, 0x76c7, 0x2c78, 0x0c7f,
6345 +       0x0040, 0x8e0d, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021,
6346 +       0x0004, 0x1078, 0x8e11, 0x2001, 0xa89d, 0x2004, 0xd0fc, 0x0040,
6347 +       0x8e06, 0x2f60, 0x1078, 0x772d, 0x0078, 0x8e0b, 0x2f60, 0x2009,
6348 +       0x0052, 0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f, 0x0f7f,
6349 +       0x007c, 0x097e, 0x077e, 0x127e, 0x2091, 0x8000, 0x1078, 0x4775,
6350 +       0x0040, 0x8e1e, 0x2001, 0x8e16, 0x0078, 0x8e24, 0x1078, 0x4739,
6351 +       0x0040, 0x8e2d, 0x2001, 0x8e1e, 0x007e, 0xa00e, 0x2400, 0x1078,
6352 +       0x4b51, 0x1078, 0x4a73, 0x007f, 0x007a, 0x2418, 0x1078, 0x6161,
6353 +       0x62a0, 0x087e, 0x2041, 0x0001, 0x2039, 0x0001, 0x2608, 0x1078,
6354 +       0x5f1b, 0x087f, 0x1078, 0x5e0a, 0x2f08, 0x2648, 0x1078, 0x9f8b,
6355 +       0x613c, 0x81ff, 0x1040, 0x5fdb, 0x1078, 0x62d1, 0x127f, 0x077f,
6356 +       0x097f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078,
6357 +       0x76c7, 0x017f, 0x0040, 0x8e63, 0x660a, 0x611a, 0x601f, 0x0001,
6358 +       0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x775c, 0xa085, 0x0001,
6359 +       0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8e60, 0x0c7e, 0x127e,
6360 +       0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x8e7f,
6361 +       0x660a, 0x611a, 0x601f, 0x0008, 0x2d00, 0x6012, 0x2009, 0x0021,
6362 +       0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006,
6363 +       0x0078, 0x8e7c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078,
6364 +       0x76c7, 0x017f, 0x0040, 0x8e9b, 0x660a, 0x611a, 0x601f, 0x0001,
6365 +       0x2d00, 0x6012, 0x2009, 0x003d, 0x1078, 0x775c, 0xa085, 0x0001,
6366 +       0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8e98, 0x0c7e, 0x127e,
6367 +       0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x8eb6,
6368 +       0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x1078,
6369 +       0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078,
6370 +       0x8eb3, 0x027e, 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0040,
6371 +       0x8ec3, 0x8211, 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x007e, 0x6000,
6372 +       0xa086, 0x0000, 0x0040, 0x8ed8, 0x6013, 0x0000, 0x601f, 0x0007,
6373 +       0x2001, 0xa8a3, 0x2004, 0x6016, 0x1078, 0xa495, 0x603f, 0x0000,
6374 +       0x007f, 0x007c, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0xa653, 0x2634,
6375 +       0xd6e4, 0x0040, 0x8ee8, 0x6618, 0x2660, 0x6e48, 0x1078, 0x46e7,
6376 +       0x0d7f, 0x0c7f, 0x067f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e,
6377 +       0x0002, 0x0040, 0x8efd, 0xa08e, 0x0003, 0x0040, 0x8efd, 0xa08e,
6378 +       0x0004, 0x0040, 0x8efd, 0xa085, 0x0001, 0x017f, 0x007f, 0x007c,
6379 +       0x007e, 0x0d7e, 0x6010, 0xa06d, 0x0040, 0x8f0d, 0x6838, 0xd0fc,
6380 +       0x0040, 0x8f0d, 0xa006, 0x0078, 0x8f0f, 0xa085, 0x0001, 0x0d7f,
6381 +       0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078,
6382 +       0x76c7, 0x017f, 0x0040, 0x8f2c, 0x611a, 0x601f, 0x0001, 0x2d00,
6383 +       0x6012, 0x1078, 0x2880, 0x2009, 0x0028, 0x1078, 0x775c, 0xa085,
6384 +       0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8f29, 0xa186,
6385 +       0x0015, 0x00c0, 0x8f44, 0x2011, 0xa620, 0x2204, 0xa086, 0x0074,
6386 +       0x00c0, 0x8f44, 0x1078, 0x7f91, 0x6003, 0x0001, 0x6007, 0x0029,
6387 +       0x1078, 0x5dd7, 0x0078, 0x8f48, 0x1078, 0x7c83, 0x1078, 0x772d,
6388 +       0x007c, 0xa186, 0x0016, 0x00c0, 0x8f53, 0x2001, 0x0004, 0x1078,
6389 +       0x4502, 0x0078, 0x8f74, 0xa186, 0x0015, 0x00c0, 0x8f78, 0x2011,
6390 +       0xa620, 0x2204, 0xa086, 0x0014, 0x00c0, 0x8f78, 0x0d7e, 0x6018,
6391 +       0x2068, 0x1078, 0x4649, 0x0d7f, 0x1078, 0x8043, 0x00c0, 0x8f78,
6392 +       0x0d7e, 0x6018, 0x2068, 0x6890, 0x0d7f, 0xa005, 0x0040, 0x8f78,
6393 +       0x2001, 0x0006, 0x1078, 0x4502, 0x1078, 0x77f8, 0x0078, 0x8f7c,
6394 +       0x1078, 0x7c83, 0x1078, 0x772d, 0x007c, 0x6848, 0xa086, 0x0005,
6395 +       0x00c0, 0x8f84, 0x1078, 0x8f85, 0x007c, 0x6850, 0xc0ad, 0x6852,
6396 +       0x007c, 0x0e7e, 0x2071, 0xab8c, 0x7014, 0xd0e4, 0x0040, 0x8f9a,
6397 +       0x6013, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x1078, 0x5d8a,
6398 +       0x1078, 0x62d1, 0x0e7f, 0x007c, 0x0c7e, 0x0f7e, 0x2c78, 0x1078,
6399 +       0x4963, 0x0f7f, 0x0040, 0x8fa9, 0x601c, 0xa084, 0x000f, 0x1079,
6400 +       0x8fab, 0x0c7f, 0x007c, 0x8ad5, 0x8fb6, 0x8fb9, 0x8fbc, 0xa25d,
6401 +       0xa279, 0xa27c, 0x8ad5, 0x8ad5, 0x1078, 0x1332, 0x0005, 0x0005,
6402 +       0x007c, 0x0005, 0x0005, 0x007c, 0x1078, 0x8fbf, 0x007c, 0x0f7e,
6403 +       0x2c78, 0x1078, 0x4963, 0x0040, 0x8fee, 0x1078, 0x76c7, 0x00c0,
6404 +       0x8fcf, 0x2001, 0xa8a4, 0x2004, 0x783e, 0x0078, 0x8fee, 0x7818,
6405 +       0x601a, 0x781c, 0xa086, 0x0003, 0x0040, 0x8fdc, 0x7808, 0x6036,
6406 +       0x2f00, 0x603a, 0x0078, 0x8fe0, 0x7808, 0x603a, 0x2f00, 0x6036,
6407 +       0x602a, 0x601f, 0x0001, 0x6007, 0x0035, 0x6003, 0x0001, 0x7920,
6408 +       0x6122, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x2f60, 0x0f7f, 0x007c,
6409 +       0x017e, 0x0f7e, 0x682c, 0x6032, 0xa08e, 0x0001, 0x0040, 0x9001,
6410 +       0xa086, 0x0005, 0x0040, 0x9005, 0xa006, 0x602a, 0x602e, 0x0078,
6411 +       0x9016, 0x6824, 0xc0f4, 0xc0d5, 0x6826, 0x6810, 0x2078, 0x787c,
6412 +       0x6938, 0xa102, 0x7880, 0x6934, 0xa103, 0x00c8, 0x8ffc, 0x6834,
6413 +       0x602a, 0x6838, 0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, 0x6036,
6414 +       0x6808, 0x603a, 0x6918, 0x611a, 0x6920, 0x6122, 0x601f, 0x0001,
6415 +       0x6007, 0x0039, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x6803, 0x0002,
6416 +       0x0f7f, 0x017f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, 0x0034,
6417 +       0x0040, 0x9050, 0xa08e, 0x0035, 0x0040, 0x9050, 0xa08e, 0x0036,
6418 +       0x0040, 0x9050, 0xa08e, 0x0037, 0x0040, 0x9050, 0xa08e, 0x0038,
6419 +       0x0040, 0x9050, 0xa08e, 0x0039, 0x0040, 0x9050, 0xa08e, 0x003a,
6420 +       0x0040, 0x9050, 0xa08e, 0x003b, 0x0040, 0x9050, 0xa085, 0x0001,
6421 +       0x017f, 0x007f, 0x007c, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x00c0,
6422 +       0x905d, 0xa085, 0x0001, 0x0078, 0x906c, 0x6024, 0xd0f4, 0x00c0,
6423 +       0x906b, 0xc0f5, 0x6026, 0x6010, 0x2078, 0x7828, 0x603a, 0x782c,
6424 +       0x6036, 0x1078, 0x1757, 0xa006, 0x0f7f, 0x007c, 0x007e, 0x017e,
6425 +       0x027e, 0x037e, 0x0e7e, 0x2001, 0xa89e, 0x200c, 0x8000, 0x2014,
6426 +       0x2001, 0x0032, 0x1078, 0x5c1c, 0x2001, 0xa8a2, 0x82ff, 0x00c0,
6427 +       0x9083, 0x2011, 0x0014, 0x2202, 0x2001, 0xa8a0, 0x200c, 0x8000,
6428 +       0x2014, 0x2071, 0xa88d, 0x711a, 0x721e, 0x2001, 0x0064, 0x1078,
6429 +       0x5c1c, 0x2001, 0xa8a3, 0x82ff, 0x00c0, 0x9098, 0x2011, 0x0014,
6430 +       0x2202, 0x2009, 0xa8a4, 0xa280, 0x000a, 0x200a, 0x1078, 0x498b,
6431 +       0x0e7f, 0x037f, 0x027f, 0x017f, 0x007f, 0x007c, 0x007e, 0x0e7e,
6432 +       0x2001, 0xa8a2, 0x2003, 0x0028, 0x2001, 0xa8a3, 0x2003, 0x0014,
6433 +       0x2071, 0xa88d, 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001, 0xa8a4,
6434 +       0x2003, 0x001e, 0x0e7f, 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091,
6435 +       0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x90d5, 0x611a,
6436 +       0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0033, 0x1078, 0x775c,
6437 +       0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x90d2,
6438 +       0x0d7e, 0x0e7e, 0x0f7e, 0x2071, 0xa600, 0xa186, 0x0015, 0x00c0,
6439 +       0x9107, 0x7080, 0xa086, 0x0018, 0x00c0, 0x9107, 0x6010, 0x2068,
6440 +       0x6a3c, 0xd2e4, 0x00c0, 0x90fb, 0x2c78, 0x1078, 0x6490, 0x0040,
6441 +       0x910f, 0x706c, 0x6a50, 0xa206, 0x00c0, 0x9103, 0x7070, 0x6a54,
6442 +       0xa206, 0x00c0, 0x9103, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009,
6443 +       0x0000, 0x1078, 0x28c8, 0x1078, 0x77f8, 0x0078, 0x910b, 0x1078,
6444 +       0x7c83, 0x1078, 0x772d, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x7050,
6445 +       0xa080, 0x29c0, 0x2004, 0x6a54, 0xa206, 0x0040, 0x90fb, 0x0078,
6446 +       0x9103, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7,
6447 +       0x017f, 0x0040, 0x9131, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012,
6448 +       0x2009, 0x0043, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f,
6449 +       0x007c, 0xa006, 0x0078, 0x912e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2071,
6450 +       0xa600, 0xa186, 0x0015, 0x00c0, 0x915a, 0x7080, 0xa086, 0x0004,
6451 +       0x00c0, 0x915a, 0x6010, 0xa0e8, 0x000f, 0x2c78, 0x1078, 0x6490,
6452 +       0x0040, 0x9162, 0x706c, 0x6a08, 0xa206, 0x00c0, 0x9156, 0x7070,
6453 +       0x6a0c, 0xa206, 0x00c0, 0x9156, 0x1078, 0x2880, 0x1078, 0x77f8,
6454 +       0x0078, 0x915e, 0x1078, 0x7c83, 0x1078, 0x772d, 0x0f7f, 0x0e7f,
6455 +       0x0d7f, 0x007c, 0x7050, 0xa080, 0x29c0, 0x2004, 0x6a0c, 0xa206,
6456 +       0x0040, 0x9154, 0x0078, 0x9156, 0x017e, 0x027e, 0x684c, 0xd0ac,
6457 +       0x0040, 0x9184, 0x6914, 0x6a10, 0x2100, 0xa205, 0x0040, 0x9184,
6458 +       0x6860, 0xa106, 0x00c0, 0x9180, 0x685c, 0xa206, 0x0040, 0x9184,
6459 +       0x6962, 0x6a5e, 0xa085, 0x0001, 0x027f, 0x017f, 0x007c, 0x0e7e,
6460 +       0x127e, 0x2071, 0xa600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0001,
6461 +       0x0048, 0x91b9, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040,
6462 +       0x91a5, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8, 0x91a1, 0x0078,
6463 +       0x9194, 0x2061, 0xad00, 0x0078, 0x9194, 0x6003, 0x0008, 0x8529,
6464 +       0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8, 0x91b5, 0x754e,
6465 +       0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704f, 0xad00, 0x0078,
6466 +       0x91b0, 0xa006, 0x0078, 0x91b2, 0x0c7e, 0x027e, 0x017e, 0xa186,
6467 +       0x0035, 0x0040, 0x91c6, 0x6a34, 0x0078, 0x91c7, 0x6a28, 0x1078,
6468 +       0x8cf2, 0x0040, 0x91f0, 0x2260, 0x611c, 0xa186, 0x0003, 0x0040,
6469 +       0x91d5, 0xa186, 0x0006, 0x00c0, 0x91ec, 0x6834, 0xa206, 0x0040,
6470 +       0x91e4, 0x6838, 0xa206, 0x00c0, 0x91ec, 0x6108, 0x6834, 0xa106,
6471 +       0x00c0, 0x91ec, 0x0078, 0x91e9, 0x6008, 0x6938, 0xa106, 0x00c0,
6472 +       0x91ec, 0x6018, 0x6918, 0xa106, 0x017f, 0x027f, 0x0c7f, 0x007c,
6473 +       0xa085, 0x0001, 0x0078, 0x91ec, 0x6944, 0xd1cc, 0x0040, 0x920d,
6474 +       0xa18c, 0x00ff, 0xa18e, 0x0002, 0x00c0, 0x920d, 0xad88, 0x001e,
6475 +       0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, 0x0001, 0x00c0, 0x920d,
6476 +       0x6810, 0x6914, 0xa115, 0x10c0, 0x84d5, 0x007c, 0x067e, 0x6000,
6477 +       0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x9218, 0x067f, 0x007c,
6478 +       0x9228, 0x96df, 0x97fb, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228,
6479 +       0x9262, 0x988e, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228,
6480 +       0x1078, 0x1332, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1332,
6481 +       0x1079, 0x9234, 0x067f, 0x007c, 0x9244, 0x9d53, 0x9244, 0x9244,
6482 +       0x9244, 0x9244, 0x9244, 0x9244, 0x9d11, 0x9da1, 0x9244, 0xa3b0,
6483 +       0xa3e4, 0xa3b0, 0xa3e4, 0x9244, 0x1078, 0x1332, 0x067e, 0x6000,
6484 +       0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x9250, 0x067f, 0x007c,
6485 +       0x9260, 0x99eb, 0x9ac7, 0x9af5, 0x9b70, 0x9260, 0x9c76, 0x9c1e,
6486 +       0x989a, 0x9ce5, 0x9cfb, 0x9260, 0x9260, 0x9260, 0x9260, 0x9260,
6487 +       0x1078, 0x1332, 0xa1b2, 0x0044, 0x10c8, 0x1332, 0x2100, 0x0079,
6488 +       0x9269, 0x92a9, 0x9498, 0x92a9, 0x92a9, 0x92a9, 0x94a0, 0x92a9,
6489 +       0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9,
6490 +       0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9,
6491 +       0x92ab, 0x9311, 0x9320, 0x9377, 0x9396, 0x9415, 0x9485, 0x92a9,
6492 +       0x92a9, 0x94a4, 0x92a9, 0x92a9, 0x94b7, 0x94c2, 0x92a9, 0x92a9,
6493 +       0x92a9, 0x92a9, 0x92a9, 0x94fa, 0x92a9, 0x92a9, 0x9509, 0x92a9,
6494 +       0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x9522, 0x92a9, 0x92a9,
6495 +       0x92a9, 0x95af, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9,
6496 +       0x9629, 0x1078, 0x1332, 0x1078, 0x4967, 0x00c0, 0x92bb, 0x2001,
6497 +       0xa633, 0x2004, 0xd0cc, 0x00c0, 0x92bb, 0xa084, 0x0009, 0xa086,
6498 +       0x0008, 0x00c0, 0x92c3, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013,
6499 +       0x0000, 0x0078, 0x9493, 0x1078, 0x4957, 0x0e7e, 0x0c7e, 0x037e,
6500 +       0x027e, 0x017e, 0x6218, 0x2270, 0x72a0, 0x027e, 0x2019, 0x0029,
6501 +       0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x2c08,
6502 +       0x1078, 0x9f8b, 0x077f, 0x017f, 0x2e60, 0x1078, 0x47e9, 0x017f,
6503 +       0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x6618, 0x0c7e, 0x2660, 0x1078,
6504 +       0x45d6, 0x0c7f, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082,
6505 +       0x0006, 0x0048, 0x9303, 0x1078, 0x9ebf, 0x00c0, 0x9371, 0x1078,
6506 +       0x9e50, 0x00c0, 0x92ff, 0x6007, 0x0008, 0x0078, 0x9493, 0x6007,
6507 +       0x0009, 0x0078, 0x9493, 0x1078, 0xa09f, 0x0040, 0x930d, 0x1078,
6508 +       0x9ebf, 0x0040, 0x92f7, 0x0078, 0x9371, 0x6013, 0x1900, 0x0078,
6509 +       0x92ff, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6106, 0x1078, 0x9e05,
6510 +       0x6007, 0x0006, 0x0078, 0x9493, 0x6007, 0x0007, 0x0078, 0x9493,
6511 +       0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0, 0x9664,
6512 +       0x0d7e, 0x6618, 0x2668, 0x6e04, 0xa684, 0x00ff, 0xa082, 0x0006,
6513 +       0x00c8, 0x9336, 0x2001, 0x0001, 0x1078, 0x44ee, 0xa6b4, 0xff00,
6514 +       0x8637, 0xa686, 0x0006, 0x0040, 0x9353, 0xa686, 0x0004, 0x0040,
6515 +       0x9353, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0040, 0x9353,
6516 +       0xa686, 0x0004, 0x0040, 0x9353, 0xa686, 0x0005, 0x0040, 0x9353,
6517 +       0x0d7f, 0x0078, 0x9371, 0x1078, 0x9f25, 0x00c0, 0x936c, 0xa686,
6518 +       0x0006, 0x00c0, 0x9365, 0x027e, 0x6218, 0xa290, 0x0028, 0x2214,
6519 +       0x2009, 0x0000, 0x1078, 0x28c8, 0x027f, 0x1078, 0x4649, 0x6007,
6520 +       0x000a, 0x0d7f, 0x0078, 0x9493, 0x6007, 0x000b, 0x0d7f, 0x0078,
6521 +       0x9493, 0x1078, 0x2880, 0x6007, 0x0001, 0x0078, 0x9493, 0x1078,
6522 +       0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6618,
6523 +       0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa686, 0x0707, 0x0040, 0x9371,
6524 +       0x027e, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x1078,
6525 +       0x28c8, 0x027f, 0x6007, 0x000c, 0x0078, 0x9493, 0x1078, 0x4967,
6526 +       0x00c0, 0x93a3, 0x2001, 0xa633, 0x2004, 0xa084, 0x0009, 0xa086,
6527 +       0x0008, 0x00c0, 0x93ab, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013,
6528 +       0x0000, 0x0078, 0x9493, 0x1078, 0x4957, 0x6618, 0xa6b0, 0x0001,
6529 +       0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x93ef, 0xa6b4,
6530 +       0xff00, 0x8637, 0xa686, 0x0004, 0x0040, 0x93c2, 0xa686, 0x0006,
6531 +       0x00c0, 0x9371, 0x1078, 0x9f34, 0x00c0, 0x93ca, 0x6007, 0x000e,
6532 +       0x0078, 0x9493, 0x047e, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4,
6533 +       0x00ff, 0x8427, 0x047e, 0x1078, 0x2880, 0x047f, 0x017e, 0xa006,
6534 +       0x2009, 0xa653, 0x210c, 0xd1a4, 0x0040, 0x93e9, 0x2009, 0x0029,
6535 +       0x1078, 0xa21d, 0x6018, 0x0d7e, 0x2068, 0x6800, 0xc0e5, 0x6802,
6536 +       0x0d7f, 0x017f, 0x047f, 0x6007, 0x0001, 0x0078, 0x9493, 0x2001,
6537 +       0x0001, 0x1078, 0x44ee, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9,
6538 +       0x0004, 0x2019, 0xa605, 0x2011, 0xab90, 0x1078, 0x80de, 0x037f,
6539 +       0x027f, 0x017f, 0x157f, 0xa005, 0x0040, 0x940f, 0xa6b4, 0xff00,
6540 +       0x8637, 0xa686, 0x0006, 0x0040, 0x93c2, 0x0078, 0x9371, 0x6013,
6541 +       0x1900, 0x6007, 0x0009, 0x0078, 0x9493, 0x1078, 0x4967, 0x00c0,
6542 +       0x9422, 0x2001, 0xa633, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008,
6543 +       0x00c0, 0x942a, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013, 0x0000,
6544 +       0x0078, 0x9493, 0x1078, 0x4957, 0x6618, 0xa6b0, 0x0001, 0x2634,
6545 +       0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x9472, 0xa6b4, 0xff00,
6546 +       0x8637, 0xa686, 0x0004, 0x0040, 0x9441, 0xa686, 0x0006, 0x00c0,
6547 +       0x9371, 0x1078, 0x9f5f, 0x00c0, 0x944d, 0x1078, 0x9e50, 0x00c0,
6548 +       0x944d, 0x6007, 0x0010, 0x0078, 0x9493, 0x047e, 0x6418, 0xa4a0,
6549 +       0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, 0x047e, 0x1078, 0x2880,
6550 +       0x047f, 0x017e, 0xa006, 0x2009, 0xa653, 0x210c, 0xd1a4, 0x0040,
6551 +       0x946c, 0x2009, 0x0029, 0x1078, 0xa21d, 0x6018, 0x0d7e, 0x2068,
6552 +       0x6800, 0xc0e5, 0x6802, 0x0d7f, 0x017f, 0x047f, 0x6007, 0x0001,
6553 +       0x0078, 0x9493, 0x1078, 0xa09f, 0x0040, 0x947f, 0xa6b4, 0xff00,
6554 +       0x8637, 0xa686, 0x0006, 0x0040, 0x9441, 0x0078, 0x9371, 0x6013,
6555 +       0x1900, 0x6007, 0x0009, 0x0078, 0x9493, 0x1078, 0x29bb, 0x00c0,
6556 +       0x9664, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0,
6557 +       0x9371, 0x6007, 0x0012, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x007c,
6558 +       0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x0078, 0x9497,
6559 +       0x6007, 0x0005, 0x0078, 0x949a, 0x1078, 0xa41c, 0x00c0, 0x9664,
6560 +       0x1078, 0x29bb, 0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0, 0x9371,
6561 +       0x6007, 0x0020, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x007c, 0x1078,
6562 +       0x29bb, 0x00c0, 0x9664, 0x6007, 0x0023, 0x6003, 0x0001, 0x1078,
6563 +       0x5dd7, 0x007c, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb,
6564 +       0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0, 0x9371, 0x017e, 0x027e,
6565 +       0x2011, 0xab90, 0x2214, 0x2c08, 0xa006, 0x1078, 0xa1e6, 0x00c0,
6566 +       0x94e9, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x2011, 0xab89,
6567 +       0x2214, 0xa296, 0xffff, 0x00c0, 0x94f3, 0x6007, 0x0025, 0x0078,
6568 +       0x94f3, 0x6004, 0xa086, 0x0024, 0x00c0, 0x94f0, 0x1078, 0x772d,
6569 +       0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x027f,
6570 +       0x017f, 0x007c, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6106, 0x1078,
6571 +       0x9687, 0x6007, 0x002b, 0x0078, 0x9493, 0x6007, 0x002c, 0x0078,
6572 +       0x9493, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0,
6573 +       0x9664, 0x1078, 0x9667, 0x00c0, 0x9371, 0x6106, 0x1078, 0x968c,
6574 +       0x00c0, 0x951e, 0x6007, 0x002e, 0x0078, 0x9493, 0x6007, 0x002f,
6575 +       0x0078, 0x9493, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x0e7e, 0x0d7e,
6576 +       0x0c7e, 0x6018, 0xa080, 0x0001, 0x200c, 0xa184, 0x00ff, 0xa086,
6577 +       0x0006, 0x0040, 0x953f, 0xa184, 0xff00, 0x8007, 0xa086, 0x0006,
6578 +       0x0040, 0x953f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0078, 0x9498, 0x2001,
6579 +       0xa672, 0x2004, 0xd0e4, 0x0040, 0x95ab, 0x2071, 0xab8c, 0x7010,
6580 +       0x6036, 0x7014, 0x603a, 0x7108, 0x720c, 0x2001, 0xa653, 0x2004,
6581 +       0xd0a4, 0x0040, 0x955d, 0x6018, 0x2068, 0x6810, 0xa106, 0x00c0,
6582 +       0x955d, 0x6814, 0xa206, 0x0040, 0x9581, 0x2001, 0xa653, 0x2004,
6583 +       0xd0ac, 0x00c0, 0x959f, 0x2069, 0xa600, 0x6870, 0xa206, 0x00c0,
6584 +       0x959f, 0x686c, 0xa106, 0x00c0, 0x959f, 0x7210, 0x1078, 0x8cf2,
6585 +       0x0040, 0x95a5, 0x1078, 0xa28e, 0x0040, 0x95a5, 0x622a, 0x6007,
6586 +       0x0036, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x0c7f, 0x0d7f, 0x0e7f,
6587 +       0x007c, 0x7214, 0xa286, 0xffff, 0x0040, 0x9593, 0x1078, 0x8cf2,
6588 +       0x0040, 0x95a5, 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, 0x00c0,
6589 +       0x95a5, 0x0078, 0x956e, 0x7210, 0x2c08, 0xa085, 0x0001, 0x1078,
6590 +       0xa1e6, 0x2c10, 0x2160, 0x0040, 0x95a5, 0x0078, 0x956e, 0x6007,
6591 +       0x0037, 0x6013, 0x1500, 0x0078, 0x9579, 0x6007, 0x0037, 0x6013,
6592 +       0x1700, 0x0078, 0x9579, 0x6007, 0x0012, 0x0078, 0x9579, 0x1078,
6593 +       0x29bb, 0x00c0, 0x9664, 0x6018, 0xa080, 0x0001, 0x2004, 0xa084,
6594 +       0xff00, 0x8007, 0xa086, 0x0006, 0x00c0, 0x9498, 0x0e7e, 0x0d7e,
6595 +       0x0c7e, 0x2001, 0xa672, 0x2004, 0xd0e4, 0x0040, 0x9621, 0x2069,
6596 +       0xa600, 0x2071, 0xab8c, 0x7008, 0x6036, 0x720c, 0x623a, 0xa286,
6597 +       0xffff, 0x00c0, 0x95de, 0x7208, 0x0c7e, 0x2c08, 0xa085, 0x0001,
6598 +       0x1078, 0xa1e6, 0x2c10, 0x0c7f, 0x0040, 0x9615, 0x1078, 0x8cf2,
6599 +       0x0040, 0x9615, 0x0c7e, 0x027e, 0x2260, 0x1078, 0x89f3, 0x027f,
6600 +       0x0c7f, 0x7118, 0xa18c, 0xff00, 0x810f, 0xa186, 0x0001, 0x0040,
6601 +       0x95ff, 0xa186, 0x0005, 0x0040, 0x95f9, 0xa186, 0x0007, 0x00c0,
6602 +       0x9609, 0xa280, 0x0004, 0x2004, 0xa005, 0x0040, 0x9609, 0x057e,
6603 +       0x7510, 0x7614, 0x1078, 0xa2a3, 0x057f, 0x0c7f, 0x0d7f, 0x0e7f,
6604 +       0x007c, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00, 0x6003,
6605 +       0x0001, 0x1078, 0x5d8a, 0x0078, 0x9605, 0x6007, 0x003b, 0x602b,
6606 +       0x0009, 0x6013, 0x1700, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x0078,
6607 +       0x9605, 0x6007, 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, 0x0078,
6608 +       0x9579, 0x0e7e, 0x027e, 0x1078, 0x4967, 0x0040, 0x965e, 0x1078,
6609 +       0x4957, 0x1078, 0xa4a9, 0x00c0, 0x965c, 0x2071, 0xa600, 0x70cc,
6610 +       0xc085, 0x70ce, 0x0f7e, 0x2079, 0x0100, 0x7298, 0xa284, 0x00ff,
6611 +       0x706e, 0x78e6, 0xa284, 0xff00, 0x7270, 0xa205, 0x7072, 0x78ea,
6612 +       0x0f7f, 0x70d7, 0x0000, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040,
6613 +       0x9655, 0x2011, 0xa8ca, 0x2013, 0x07d0, 0xd0ac, 0x00c0, 0x965e,
6614 +       0x1078, 0x2677, 0x0078, 0x965e, 0x1078, 0xa4d9, 0x027f, 0x0e7f,
6615 +       0x1078, 0x772d, 0x0078, 0x9497, 0x1078, 0x772d, 0x007c, 0x0d7e,
6616 +       0x067e, 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686,
6617 +       0x0006, 0x0040, 0x9684, 0xa686, 0x0004, 0x0040, 0x9684, 0x6e04,
6618 +       0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0040, 0x9684, 0xa686, 0x0004,
6619 +       0x0040, 0x9684, 0xa085, 0x0001, 0x067f, 0x0d7f, 0x007c, 0x0d7e,
6620 +       0x1078, 0x96bb, 0x0d7f, 0x007c, 0x0d7e, 0x1078, 0x96ca, 0x00c0,
6621 +       0x96b4, 0x680c, 0xa08c, 0xff00, 0x6820, 0xa084, 0x00ff, 0xa115,
6622 +       0x6212, 0x6824, 0x602a, 0xd1e4, 0x0040, 0x96a2, 0x2009, 0x0001,
6623 +       0x0078, 0x96b0, 0xd1ec, 0x0040, 0x96b4, 0x6920, 0xa18c, 0x00ff,
6624 +       0x6824, 0x1078, 0x254d, 0x00c0, 0x96b4, 0x2110, 0x2009, 0x0000,
6625 +       0x1078, 0x28c8, 0x0078, 0x96b8, 0xa085, 0x0001, 0x0078, 0x96b9,
6626 +       0xa006, 0x0d7f, 0x007c, 0x2069, 0xab8d, 0x6800, 0xa082, 0x0010,
6627 +       0x00c8, 0x96c8, 0x6013, 0x0000, 0xa085, 0x0001, 0x0078, 0x96c9,
6628 +       0xa006, 0x007c, 0x6013, 0x0000, 0x2069, 0xab8c, 0x6808, 0xa084,
6629 +       0xff00, 0xa086, 0x0800, 0x00c0, 0x96de, 0x6800, 0xa084, 0x00ff,
6630 +       0xa08e, 0x0014, 0x0040, 0x96de, 0xa08e, 0x0010, 0x007c, 0x6004,
6631 +       0xa0b2, 0x0044, 0x10c8, 0x1332, 0xa1b6, 0x0013, 0x00c0, 0x96eb,
6632 +       0x2008, 0x0079, 0x96fe, 0xa1b6, 0x0027, 0x0040, 0x96f3, 0xa1b6,
6633 +       0x0014, 0x10c0, 0x1332, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078,
6634 +       0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c, 0x973e, 0x9740,
6635 +       0x973e, 0x973e, 0x973e, 0x9740, 0x974c, 0x97d6, 0x9799, 0x97d6,
6636 +       0x97ad, 0x97d6, 0x974c, 0x97d6, 0x97ce, 0x97d6, 0x97ce, 0x97d6,
6637 +       0x97d6, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e,
6638 +       0x973e, 0x973e, 0x973e, 0x973e, 0x9740, 0x973e, 0x97d6, 0x973e,
6639 +       0x973e, 0x97d6, 0x973e, 0x97d6, 0x97d6, 0x973e, 0x973e, 0x973e,
6640 +       0x973e, 0x97d6, 0x97d6, 0x973e, 0x97d6, 0x97d6, 0x973e, 0x973e,
6641 +       0x973e, 0x973e, 0x973e, 0x9740, 0x97d6, 0x97d6, 0x973e, 0x973e,
6642 +       0x97d6, 0x97d6, 0x973e, 0x973e, 0x973e, 0x973e, 0x1078, 0x1332,
6643 +       0x1078, 0x61cd, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x6003, 0x0002,
6644 +       0x1078, 0x62d1, 0x0078, 0x97dc, 0x0f7e, 0x2079, 0xa652, 0x7804,
6645 +       0x0f7f, 0xd0ac, 0x00c0, 0x97d6, 0x2001, 0x0000, 0x1078, 0x44ee,
6646 +       0x6018, 0xa080, 0x0004, 0x2004, 0xa086, 0x00ff, 0x0040, 0x97d6,
6647 +       0x0c7e, 0x6018, 0x2060, 0x6000, 0xd0f4, 0x00c0, 0x9770, 0x6010,
6648 +       0xa005, 0x0040, 0x9770, 0x0c7f, 0x1078, 0x3699, 0x0078, 0x97d6,
6649 +       0x0c7f, 0x2001, 0xa600, 0x2004, 0xa086, 0x0002, 0x00c0, 0x977f,
6650 +       0x0f7e, 0x2079, 0xa600, 0x7890, 0x8000, 0x7892, 0x0f7f, 0x2001,
6651 +       0x0002, 0x1078, 0x4502, 0x1078, 0x61cd, 0x601f, 0x0001, 0x6003,
6652 +       0x0001, 0x6007, 0x0002, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0c7e,
6653 +       0x6118, 0x2160, 0x2009, 0x0001, 0x1078, 0x5a52, 0x0c7f, 0x0078,
6654 +       0x97dc, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00,
6655 +       0x8637, 0xa686, 0x0006, 0x0040, 0x97d6, 0xa686, 0x0004, 0x0040,
6656 +       0x97d6, 0x2001, 0x0004, 0x0078, 0x97d4, 0x2001, 0xa600, 0x2004,
6657 +       0xa086, 0x0003, 0x00c0, 0x97b6, 0x1078, 0x3699, 0x2001, 0x0006,
6658 +       0x1078, 0x97dd, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4,
6659 +       0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x97d6, 0x2001, 0x0006,
6660 +       0x0078, 0x97d4, 0x2001, 0x0004, 0x0078, 0x97d4, 0x2001, 0x0006,
6661 +       0x1078, 0x97dd, 0x0078, 0x97d6, 0x1078, 0x4535, 0x1078, 0x61cd,
6662 +       0x1078, 0x772d, 0x1078, 0x62d1, 0x007c, 0x017e, 0x0d7e, 0x6118,
6663 +       0x2168, 0x6900, 0xd184, 0x0040, 0x97f8, 0x6104, 0xa18e, 0x000a,
6664 +       0x00c0, 0x97f0, 0x699c, 0xd1a4, 0x00c0, 0x97f0, 0x2001, 0x0007,
6665 +       0x1078, 0x4502, 0x2001, 0x0000, 0x1078, 0x44ee, 0x1078, 0x28a6,
6666 +       0x0d7f, 0x017f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084,
6667 +       0xff00, 0x8007, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1332, 0xa1b6,
6668 +       0x0015, 0x00c0, 0x980f, 0x1079, 0x9816, 0x0078, 0x9815, 0xa1b6,
6669 +       0x0016, 0x10c0, 0x1332, 0x1079, 0x9822, 0x007c, 0x7d4e, 0x7d4e,
6670 +       0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x9877, 0x982e, 0x7d4e, 0x7d4e,
6671 +       0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e,
6672 +       0x9877, 0x987f, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x0f7e, 0x2079,
6673 +       0xa652, 0x7804, 0xd0ac, 0x00c0, 0x9855, 0x6018, 0xa07d, 0x0040,
6674 +       0x9855, 0x7800, 0xd0f4, 0x00c0, 0x9841, 0x7810, 0xa005, 0x00c0,
6675 +       0x9855, 0x2001, 0x0000, 0x1078, 0x44ee, 0x2001, 0x0002, 0x1078,
6676 +       0x4502, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078,
6677 +       0x5dd7, 0x1078, 0x62d1, 0x0078, 0x9875, 0x2011, 0xab83, 0x2204,
6678 +       0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x9875, 0x0c7e, 0x1078,
6679 +       0x45c4, 0x0040, 0x9868, 0x0c7f, 0x1078, 0x772d, 0x0078, 0x9875,
6680 +       0x6010, 0x007e, 0x6014, 0x007e, 0x1078, 0x42f8, 0x007f, 0x6016,
6681 +       0x007f, 0x6012, 0x0c7f, 0x1078, 0x772d, 0x0f7f, 0x007c, 0x6604,
6682 +       0xa6b6, 0x001e, 0x00c0, 0x987e, 0x1078, 0x772d, 0x007c, 0x1078,
6683 +       0x7f8e, 0x00c0, 0x988b, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078,
6684 +       0x5dd7, 0x0078, 0x988d, 0x1078, 0x772d, 0x007c, 0x6004, 0xa08a,
6685 +       0x0044, 0x10c8, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078,
6686 +       0x62d1, 0x007c, 0xa182, 0x0040, 0x0079, 0x989e, 0x98b1, 0x98b1,
6687 +       0x98b1, 0x98b1, 0x98b3, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1,
6688 +       0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1,
6689 +       0x98b1, 0x1078, 0x1332, 0x0d7e, 0x0e7e, 0x0f7e, 0x157e, 0x047e,
6690 +       0x027e, 0x6218, 0xa280, 0x002b, 0x2004, 0xa005, 0x0040, 0x98c4,
6691 +       0x2021, 0x0000, 0x1078, 0xa472, 0x6106, 0x2071, 0xab80, 0x7444,
6692 +       0xa4a4, 0xff00, 0x0040, 0x991b, 0xa486, 0x2000, 0x00c0, 0x98d6,
6693 +       0x2009, 0x0001, 0x2011, 0x0200, 0x1078, 0x5bf1, 0x1078, 0x138b,
6694 +       0x1040, 0x1332, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803,
6695 +       0x0000, 0x683b, 0x0000, 0x6c5a, 0x2c00, 0x685e, 0x6008, 0x68b2,
6696 +       0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x694a, 0x017e, 0xa084,
6697 +       0xff00, 0x6846, 0x684f, 0x0000, 0x6857, 0x0036, 0x1078, 0x4a73,
6698 +       0x017f, 0xa486, 0x2000, 0x00c0, 0x9903, 0x2019, 0x0017, 0x1078,
6699 +       0xa195, 0x0078, 0x997d, 0xa486, 0x0400, 0x00c0, 0x990d, 0x2019,
6700 +       0x0002, 0x1078, 0xa146, 0x0078, 0x997d, 0xa486, 0x0200, 0x00c0,
6701 +       0x9913, 0x1078, 0xa12b, 0xa486, 0x1000, 0x00c0, 0x9919, 0x1078,
6702 +       0xa17a, 0x0078, 0x997d, 0x2069, 0xa933, 0x6a00, 0xd284, 0x0040,
6703 +       0x99e7, 0xa284, 0x0300, 0x00c0, 0x99df, 0x6804, 0xa005, 0x0040,
6704 +       0x99c5, 0x2d78, 0x6003, 0x0007, 0x1078, 0x1370, 0x0040, 0x9984,
6705 +       0x7800, 0xd08c, 0x00c0, 0x9937, 0x7804, 0x8001, 0x7806, 0x6013,
6706 +       0x0000, 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, 0x0000, 0x6008,
6707 +       0x68b2, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130,
6708 +       0x6986, 0x6846, 0x7928, 0x698a, 0x792c, 0x698e, 0x7930, 0x6992,
6709 +       0x7934, 0x6996, 0x6853, 0x003d, 0x7244, 0xa294, 0x0003, 0xa286,
6710 +       0x0002, 0x00c0, 0x995f, 0x684f, 0x0040, 0x0078, 0x9969, 0xa286,
6711 +       0x0001, 0x00c0, 0x9967, 0x684f, 0x0080, 0x0078, 0x9969, 0x684f,
6712 +       0x0000, 0x20a9, 0x000a, 0x2001, 0xab90, 0xad90, 0x0015, 0x200c,
6713 +       0x810f, 0x2112, 0x8000, 0x8210, 0x00f0, 0x996f, 0x200c, 0x6982,
6714 +       0x8000, 0x200c, 0x697e, 0x1078, 0x4a73, 0x027f, 0x047f, 0x157f,
6715 +       0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x2001, 0xa60e, 0x2004, 0xd084,
6716 +       0x0040, 0x998e, 0x1078, 0x138b, 0x00c0, 0x9930, 0x6013, 0x0100,
6717 +       0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1,
6718 +       0x0078, 0x997d, 0x2069, 0xab92, 0x2d04, 0xa084, 0xff00, 0xa086,
6719 +       0x1200, 0x00c0, 0x99b9, 0x2069, 0xab80, 0x686c, 0xa084, 0x00ff,
6720 +       0x017e, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112, 0x017f, 0x6003,
6721 +       0x0001, 0x6007, 0x0043, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078,
6722 +       0x997d, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078,
6723 +       0x5d8a, 0x1078, 0x62d1, 0x0078, 0x997d, 0x2001, 0xa60d, 0x2004,
6724 +       0xd0ec, 0x0040, 0x99cf, 0x2011, 0x8049, 0x1078, 0x361b, 0x6013,
6725 +       0x0300, 0x0078, 0x99d5, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007,
6726 +       0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x997d, 0x6013,
6727 +       0x0500, 0x0078, 0x99d5, 0x6013, 0x0600, 0x0078, 0x999a, 0x6013,
6728 +       0x0200, 0x0078, 0x999a, 0xa186, 0x0013, 0x00c0, 0x99fd, 0x6004,
6729 +       0xa08a, 0x0040, 0x1048, 0x1332, 0xa08a, 0x0053, 0x10c8, 0x1332,
6730 +       0xa082, 0x0040, 0x2008, 0x0079, 0x9a82, 0xa186, 0x0051, 0x0040,
6731 +       0x9a0a, 0xa186, 0x0047, 0x00c0, 0x9a23, 0x6004, 0xa086, 0x0041,
6732 +       0x0040, 0x9a31, 0x2001, 0x0109, 0x2004, 0xd084, 0x0040, 0x9a31,
6733 +       0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x027e, 0x1078, 0x5c56,
6734 +       0x027f, 0x017f, 0x007f, 0x127f, 0x6000, 0xa086, 0x0002, 0x00c0,
6735 +       0x9a31, 0x0078, 0x9ac7, 0xa186, 0x0027, 0x0040, 0x9a2b, 0xa186,
6736 +       0x0014, 0x10c0, 0x1332, 0x6004, 0xa082, 0x0040, 0x2008, 0x0079,
6737 +       0x9a34, 0x1078, 0x7773, 0x007c, 0x9a47, 0x9a49, 0x9a49, 0x9a71,
6738 +       0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47,
6739 +       0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x1078,
6740 +       0x1332, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x037e, 0x0d7e, 0x6010,
6741 +       0xa06d, 0x0040, 0x9a6e, 0xad84, 0xf000, 0x0040, 0x9a6e, 0x6003,
6742 +       0x0002, 0x6018, 0x2004, 0xd0bc, 0x00c0, 0x9a6e, 0x2019, 0x0004,
6743 +       0x1078, 0xa1ca, 0x6013, 0x0000, 0x6014, 0xa005, 0x00c0, 0x9a6c,
6744 +       0x2001, 0xa8a3, 0x2004, 0x6016, 0x6003, 0x0007, 0x0d7f, 0x037f,
6745 +       0x007c, 0x0d7e, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x1078, 0x8d06,
6746 +       0x0040, 0x9a7e, 0x6010, 0x2068, 0x1078, 0x13a4, 0x1078, 0x8ec6,
6747 +       0x0d7f, 0x007c, 0x9a95, 0x9ab4, 0x9a9e, 0x9ac1, 0x9a95, 0x9a95,
6748 +       0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95,
6749 +       0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x1078, 0x1332, 0x6010,
6750 +       0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x1078, 0x61cd,
6751 +       0x6010, 0xa080, 0x0013, 0x2004, 0xd0b4, 0x0040, 0x9aaf, 0x6003,
6752 +       0x0007, 0x2009, 0x0043, 0x1078, 0x775c, 0x0078, 0x9ab1, 0x6003,
6753 +       0x0002, 0x1078, 0x62d1, 0x007c, 0x1078, 0x61cd, 0x1078, 0xa423,
6754 +       0x00c0, 0x9abe, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x1078, 0x62d1,
6755 +       0x007c, 0x1078, 0x61cd, 0x2009, 0x0041, 0x0078, 0x9c1e, 0xa182,
6756 +       0x0040, 0x0079, 0x9acb, 0x9ade, 0x9ae0, 0x9ade, 0x9ade, 0x9ade,
6757 +       0x9ade, 0x9ade, 0x9ae1, 0x9ade, 0x9ade, 0x9ade, 0x9ade, 0x9ade,
6758 +       0x9ade, 0x9ade, 0x9ade, 0x9ade, 0x9aec, 0x9ade, 0x1078, 0x1332,
6759 +       0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20,
6760 +       0x2c10, 0x1078, 0x15fa, 0x007c, 0x0d7e, 0x1078, 0x5bc1, 0x0d7f,
6761 +       0x1078, 0xa495, 0x1078, 0x772d, 0x007c, 0xa182, 0x0040, 0x0079,
6762 +       0x9af9, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c,
6763 +       0x9b0e, 0x9b0c, 0x9b11, 0x9b3c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c,
6764 +       0x9b3c, 0x9b0c, 0x9b0c, 0x9b0c, 0x1078, 0x1332, 0x1078, 0x7773,
6765 +       0x007c, 0x1078, 0x627a, 0x1078, 0x639b, 0x6010, 0x0d7e, 0x2068,
6766 +       0x684c, 0xd0fc, 0x0040, 0x9b27, 0xa08c, 0x0003, 0xa18e, 0x0002,
6767 +       0x0040, 0x9b2f, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x9c1e, 0x6003,
6768 +       0x0007, 0x6017, 0x0000, 0x1078, 0x5bc1, 0x0d7f, 0x007c, 0x1078,
6769 +       0xa423, 0x0040, 0x9b35, 0x0d7f, 0x007c, 0x1078, 0x5bc1, 0x1078,
6770 +       0x772d, 0x0d7f, 0x0078, 0x9b2e, 0x037e, 0x1078, 0x627a, 0x1078,
6771 +       0x639b, 0x6010, 0x0d7e, 0x2068, 0x6018, 0x2004, 0xd0bc, 0x0040,
6772 +       0x9b5c, 0x684c, 0xa084, 0x0003, 0xa086, 0x0002, 0x0040, 0x9b58,
6773 +       0x687c, 0x632c, 0xa31a, 0x632e, 0x6880, 0x6328, 0xa31b, 0x632a,
6774 +       0x6003, 0x0002, 0x0078, 0x9b6d, 0x2019, 0x0004, 0x1078, 0xa1ca,
6775 +       0x6014, 0xa005, 0x00c0, 0x9b69, 0x2001, 0xa8a3, 0x2004, 0x8003,
6776 +       0x6016, 0x6013, 0x0000, 0x6003, 0x0007, 0x0d7f, 0x037f, 0x007c,
6777 +       0xa186, 0x0013, 0x00c0, 0x9b7e, 0x6004, 0xa086, 0x0042, 0x10c0,
6778 +       0x1332, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x007c, 0xa186, 0x0027,
6779 +       0x0040, 0x9b86, 0xa186, 0x0014, 0x00c0, 0x9b96, 0x6004, 0xa086,
6780 +       0x0042, 0x10c0, 0x1332, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078,
6781 +       0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c, 0xa182, 0x0040,
6782 +       0x0079, 0x9b9a, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad,
6783 +       0x9bad, 0x9baf, 0x9bbb, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad,
6784 +       0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x1078, 0x1332, 0x037e,
6785 +       0x047e, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x15fa,
6786 +       0x047f, 0x037f, 0x007c, 0x6010, 0x0d7e, 0x2068, 0x6810, 0x6a14,
6787 +       0x6118, 0x210c, 0xd1bc, 0x0040, 0x9bda, 0x6124, 0xd1f4, 0x00c0,
6788 +       0x9bda, 0x007e, 0x047e, 0x057e, 0x6c7c, 0xa422, 0x6d80, 0x2200,
6789 +       0xa52b, 0x602c, 0xa420, 0x642e, 0x6028, 0xa529, 0x652a, 0x057f,
6790 +       0x047f, 0x007f, 0xa20d, 0x00c0, 0x9bee, 0x684c, 0xd0fc, 0x0040,
6791 +       0x9be6, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x9c1e, 0x6003, 0x0007,
6792 +       0x6017, 0x0000, 0x1078, 0x5bc1, 0x0d7f, 0x007c, 0x007e, 0x0f7e,
6793 +       0x2c78, 0x1078, 0x4963, 0x0f7f, 0x007f, 0x0040, 0x9bfb, 0x6003,
6794 +       0x0002, 0x0d7f, 0x007c, 0x2009, 0xa60d, 0x210c, 0xd19c, 0x0040,
6795 +       0x9c05, 0x6003, 0x0007, 0x0078, 0x9c07, 0x6003, 0x0006, 0x1078,
6796 +       0x9c0d, 0x1078, 0x5bc3, 0x0d7f, 0x007c, 0xd2fc, 0x0040, 0x9c19,
6797 +       0x8002, 0x8000, 0x8212, 0xa291, 0x0000, 0x2009, 0x0009, 0x0078,
6798 +       0x9c1b, 0x2009, 0x0015, 0x6a6a, 0x6866, 0x007c, 0xa182, 0x0040,
6799 +       0x0048, 0x9c24, 0x0079, 0x9c31, 0xa186, 0x0013, 0x0040, 0x9c2c,
6800 +       0xa186, 0x0014, 0x10c0, 0x1332, 0x6024, 0xd0dc, 0x1040, 0x1332,
6801 +       0x007c, 0x9c44, 0x9c4b, 0x9c57, 0x9c63, 0x9c44, 0x9c44, 0x9c44,
6802 +       0x9c72, 0x9c44, 0x9c46, 0x9c46, 0x9c44, 0x9c44, 0x9c44, 0x9c44,
6803 +       0x9c44, 0x9c44, 0x9c44, 0x9c44, 0x1078, 0x1332, 0x6024, 0xd0dc,
6804 +       0x1040, 0x1332, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a,
6805 +       0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x6003,
6806 +       0x0001, 0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091, 0x8000, 0x1078,
6807 +       0x62d1, 0x127f, 0x007c, 0x6003, 0x0003, 0x6106, 0x2c10, 0x1078,
6808 +       0x1cf0, 0x127e, 0x2091, 0x8000, 0x1078, 0x5df6, 0x1078, 0x639b,
6809 +       0x127f, 0x007c, 0xa016, 0x1078, 0x15fa, 0x007c, 0x127e, 0x2091,
6810 +       0x8000, 0x037e, 0x0d7e, 0xa182, 0x0040, 0x1079, 0x9c83, 0x0d7f,
6811 +       0x037f, 0x127f, 0x007c, 0x9c93, 0x9c95, 0x9caa, 0x9cc9, 0x9c93,
6812 +       0x9c93, 0x9c93, 0x9ce1, 0x9c93, 0x9c93, 0x9c93, 0x9c93, 0x9c93,
6813 +       0x9c93, 0x9c93, 0x9c93, 0x1078, 0x1332, 0x6010, 0x2068, 0x684c,
6814 +       0xd0fc, 0x0040, 0x9cbf, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0040,
6815 +       0x9cbf, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a, 0x1078, 0x62d1,
6816 +       0x0078, 0x9ce4, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x9cbf,
6817 +       0xa09c, 0x0003, 0xa39e, 0x0003, 0x0040, 0x9cbf, 0x6003, 0x0001,
6818 +       0x6106, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x9ce4, 0x6013,
6819 +       0x0000, 0x6017, 0x0000, 0x2019, 0x0004, 0x1078, 0xa1ca, 0x0078,
6820 +       0x9ce4, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x9cbf, 0xa09c,
6821 +       0x0003, 0xa39e, 0x0003, 0x0040, 0x9cbf, 0x6003, 0x0003, 0x6106,
6822 +       0x2c10, 0x1078, 0x1cf0, 0x1078, 0x5df6, 0x1078, 0x639b, 0x0078,
6823 +       0x9ce4, 0xa016, 0x1078, 0x15fa, 0x007c, 0x1078, 0x61cd, 0x6110,
6824 +       0x81ff, 0x0040, 0x9cf6, 0x0d7e, 0x2168, 0x1078, 0xa4e2, 0x037e,
6825 +       0x2019, 0x0029, 0x1078, 0xa1ca, 0x037f, 0x0d7f, 0x1078, 0x8ec6,
6826 +       0x1078, 0x62d1, 0x007c, 0x1078, 0x627a, 0x6110, 0x81ff, 0x0040,
6827 +       0x9d0c, 0x0d7e, 0x2168, 0x1078, 0xa4e2, 0x037e, 0x2019, 0x0029,
6828 +       0x1078, 0xa1ca, 0x037f, 0x0d7f, 0x1078, 0x8ec6, 0x1078, 0x639b,
6829 +       0x007c, 0xa182, 0x0085, 0x0079, 0x9d15, 0x9d1e, 0x9d1c, 0x9d1c,
6830 +       0x9d2a, 0x9d1c, 0x9d1c, 0x9d1c, 0x1078, 0x1332, 0x6003, 0x000b,
6831 +       0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1,
6832 +       0x127f, 0x007c, 0x027e, 0x0e7e, 0x1078, 0xa41c, 0x0040, 0x9d34,
6833 +       0x1078, 0x772d, 0x0078, 0x9d50, 0x2071, 0xab80, 0x7224, 0x6212,
6834 +       0x7220, 0x1078, 0xa069, 0x0040, 0x9d41, 0x6007, 0x0086, 0x0078,
6835 +       0x9d4a, 0x6007, 0x0087, 0x7224, 0xa296, 0xffff, 0x00c0, 0x9d4a,
6836 +       0x6007, 0x0086, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1,
6837 +       0x0e7f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x9d64, 0x6004,
6838 +       0xa08a, 0x0085, 0x1048, 0x1332, 0xa08a, 0x008c, 0x10c8, 0x1332,
6839 +       0xa082, 0x0085, 0x0079, 0x9d7b, 0xa186, 0x0027, 0x0040, 0x9d70,
6840 +       0xa186, 0x0014, 0x0040, 0x9d70, 0x1078, 0x7773, 0x0078, 0x9d7a,
6841 +       0x2001, 0x0007, 0x1078, 0x4535, 0x1078, 0x61cd, 0x1078, 0x8ec6,
6842 +       0x1078, 0x62d1, 0x007c, 0x9d82, 0x9d84, 0x9d84, 0x9d82, 0x9d82,
6843 +       0x9d82, 0x9d82, 0x1078, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6,
6844 +       0x1078, 0x62d1, 0x007c, 0xa182, 0x0085, 0x1048, 0x1332, 0xa182,
6845 +       0x008c, 0x10c8, 0x1332, 0xa182, 0x0085, 0x0079, 0x9d97, 0x9d9e,
6846 +       0x9d9e, 0x9d9e, 0x9da0, 0x9d9e, 0x9d9e, 0x9d9e, 0x1078, 0x1332,
6847 +       0x007c, 0xa186, 0x0013, 0x0040, 0x9db1, 0xa186, 0x0014, 0x0040,
6848 +       0x9db1, 0xa186, 0x0027, 0x0040, 0x9db1, 0x1078, 0x7773, 0x0078,
6849 +       0x9db7, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c,
6850 +       0x037e, 0x1078, 0xa495, 0x603f, 0x0000, 0x2019, 0x000b, 0x1078,
6851 +       0x9dc7, 0x601f, 0x0006, 0x6003, 0x0007, 0x037f, 0x007c, 0x127e,
6852 +       0x037e, 0x2091, 0x8000, 0x087e, 0x2c40, 0x097e, 0x2049, 0x0000,
6853 +       0x1078, 0x7246, 0x097f, 0x087f, 0x00c0, 0x9e02, 0x077e, 0x2c38,
6854 +       0x1078, 0x72f3, 0x077f, 0x00c0, 0x9e02, 0x6000, 0xa086, 0x0000,
6855 +       0x0040, 0x9e02, 0x601c, 0xa086, 0x0007, 0x0040, 0x9e02, 0x0d7e,
6856 +       0x6000, 0xa086, 0x0004, 0x00c0, 0x9df3, 0x1078, 0xa495, 0x601f,
6857 +       0x0007, 0x1078, 0x1757, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
6858 +       0x9dfb, 0x1078, 0xa1ca, 0x0d7f, 0x6013, 0x0000, 0x1078, 0xa495,
6859 +       0x601f, 0x0007, 0x037f, 0x127f, 0x007c, 0x0f7e, 0x0c7e, 0x037e,
6860 +       0x157e, 0x2079, 0xab80, 0x7938, 0x783c, 0x1078, 0x254d, 0x00c0,
6861 +       0x9e49, 0x017e, 0x0c7e, 0x1078, 0x45c4, 0x00c0, 0x9e49, 0x017f,
6862 +       0x027f, 0x027e, 0x017e, 0x2019, 0x0029, 0x1078, 0x73d0, 0x1078,
6863 +       0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x077f, 0x017f,
6864 +       0x077e, 0x2039, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x1078, 0x47e9,
6865 +       0x027e, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x0040,
6866 +       0x9e3d, 0xa286, 0x0004, 0x00c0, 0x9e40, 0x62a0, 0x1078, 0x2942,
6867 +       0x027f, 0x017f, 0x1078, 0x42f8, 0x6612, 0x6516, 0xa006, 0x0078,
6868 +       0x9e4b, 0x0c7f, 0x017f, 0x157f, 0x037f, 0x0c7f, 0x0f7f, 0x007c,
6869 +       0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x2009, 0xa620, 0x2104, 0xa086,
6870 +       0x0074, 0x00c0, 0x9eb3, 0x2069, 0xab8e, 0x690c, 0xa182, 0x0100,
6871 +       0x0048, 0x9ea3, 0x6908, 0xa184, 0x8000, 0x0040, 0x9eaf, 0x6018,
6872 +       0x2070, 0x7010, 0xa084, 0x00ff, 0x0040, 0x9e72, 0x7000, 0xd0f4,
6873 +       0x0040, 0x9e76, 0xa184, 0x0800, 0x0040, 0x9eaf, 0x6910, 0xa18a,
6874 +       0x0001, 0x0048, 0x9ea7, 0x6914, 0x2069, 0xabae, 0x6904, 0x81ff,
6875 +       0x00c0, 0x9e9b, 0x690c, 0xa182, 0x0100, 0x0048, 0x9ea3, 0x6908,
6876 +       0x81ff, 0x00c0, 0x9e9f, 0x6910, 0xa18a, 0x0001, 0x0048, 0x9ea7,
6877 +       0x6918, 0xa18a, 0x0001, 0x0048, 0x9eaf, 0x0078, 0x9eb9, 0x6013,
6878 +       0x0100, 0x0078, 0x9eb5, 0x6013, 0x0300, 0x0078, 0x9eb5, 0x6013,
6879 +       0x0500, 0x0078, 0x9eb5, 0x6013, 0x0700, 0x0078, 0x9eb5, 0x6013,
6880 +       0x0900, 0x0078, 0x9eb5, 0x6013, 0x0b00, 0x0078, 0x9eb5, 0x6013,
6881 +       0x0f00, 0x0078, 0x9eb5, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0078,
6882 +       0x9eba, 0xa006, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, 0x0c7e,
6883 +       0x0d7e, 0x027e, 0x037e, 0x157e, 0x6218, 0x2268, 0x6b04, 0xa394,
6884 +       0x00ff, 0xa286, 0x0006, 0x0040, 0x9ee3, 0xa286, 0x0004, 0x0040,
6885 +       0x9ee3, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006, 0x0040, 0x9ee3,
6886 +       0xa286, 0x0004, 0x0040, 0x9ee3, 0x0c7e, 0x2d60, 0x1078, 0x45d6,
6887 +       0x0c7f, 0x0078, 0x9f1e, 0x2011, 0xab96, 0xad98, 0x000a, 0x20a9,
6888 +       0x0004, 0x1078, 0x80de, 0x00c0, 0x9f1f, 0x2011, 0xab9a, 0xad98,
6889 +       0x0006, 0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x9f1f, 0x047e,
6890 +       0x017e, 0x6aa0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0xa653,
6891 +       0x210c, 0xd1a4, 0x0040, 0x9f0b, 0x2009, 0x0029, 0x1078, 0xa21d,
6892 +       0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e,
6893 +       0x2039, 0x0000, 0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f,
6894 +       0x2001, 0x0007, 0x1078, 0x4535, 0x017f, 0x047f, 0xa006, 0x157f,
6895 +       0x037f, 0x027f, 0x0d7f, 0x0c7f, 0x007c, 0x0d7e, 0x2069, 0xab8e,
6896 +       0x6800, 0xa086, 0x0800, 0x0040, 0x9f31, 0x6013, 0x0000, 0x0078,
6897 +       0x9f32, 0xa006, 0x0d7f, 0x007c, 0x0c7e, 0x0f7e, 0x017e, 0x027e,
6898 +       0x037e, 0x157e, 0x2079, 0xab8c, 0x7930, 0x7834, 0x1078, 0x254d,
6899 +       0x00c0, 0x9f58, 0x1078, 0x45c4, 0x00c0, 0x9f58, 0x2011, 0xab90,
6900 +       0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x9f58,
6901 +       0x2011, 0xab94, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x80de,
6902 +       0x157f, 0x037f, 0x027f, 0x017f, 0x0f7f, 0x0c7f, 0x007c, 0x0c7e,
6903 +       0x007e, 0x017e, 0x027e, 0x037e, 0x157e, 0x2011, 0xab83, 0x2204,
6904 +       0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x9f84, 0x1078, 0x45c4,
6905 +       0x00c0, 0x9f84, 0x2011, 0xab96, 0xac98, 0x000a, 0x20a9, 0x0004,
6906 +       0x1078, 0x80de, 0x00c0, 0x9f84, 0x2011, 0xab9a, 0xac98, 0x0006,
6907 +       0x20a9, 0x0004, 0x1078, 0x80de, 0x157f, 0x037f, 0x027f, 0x017f,
6908 +       0x007f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e, 0x087e, 0x077e, 0x067e,
6909 +       0x057e, 0x047e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2740, 0x2029,
6910 +       0xa8ba, 0x252c, 0x2021, 0xa8c0, 0x2424, 0x2061, 0xad00, 0x2071,
6911 +       0xa600, 0x7648, 0x7064, 0x81ff, 0x0040, 0x9fb2, 0x007e, 0xa186,
6912 +       0xa9b3, 0x007f, 0x0040, 0x9fb2, 0x8001, 0xa602, 0x00c8, 0xa01c,
6913 +       0x0078, 0x9fb5, 0xa606, 0x0040, 0xa01c, 0x2100, 0xac06, 0x0040,
6914 +       0xa012, 0x1078, 0xa242, 0x0040, 0xa012, 0x671c, 0xa786, 0x0001,
6915 +       0x0040, 0xa037, 0xa786, 0x0004, 0x0040, 0xa037, 0xa786, 0x0007,
6916 +       0x0040, 0xa012, 0x2500, 0xac06, 0x0040, 0xa012, 0x2400, 0xac06,
6917 +       0x0040, 0xa012, 0x1078, 0xa256, 0x00c0, 0xa012, 0x88ff, 0x0040,
6918 +       0x9fdd, 0x6020, 0xa906, 0x00c0, 0xa012, 0x0d7e, 0x6000, 0xa086,
6919 +       0x0004, 0x00c0, 0x9fe7, 0x017e, 0x1078, 0x1757, 0x017f, 0xa786,
6920 +       0x0008, 0x00c0, 0x9ff6, 0x1078, 0x8f00, 0x00c0, 0x9ff6, 0x1078,
6921 +       0x7c83, 0x0d7f, 0x1078, 0x8ec6, 0x0078, 0xa012, 0x6010, 0x2068,
6922 +       0x1078, 0x8d06, 0x0040, 0xa00f, 0xa786, 0x0003, 0x00c0, 0xa026,
6923 +       0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0xa4e2, 0x017e,
6924 +       0x1078, 0x8f7d, 0x1078, 0x4a73, 0x017f, 0x1078, 0x8eb9, 0x0d7f,
6925 +       0x1078, 0x8ec6, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02,
6926 +       0x00c8, 0xa01c, 0x0078, 0x9f9f, 0x127f, 0x027f, 0x047f, 0x057f,
6927 +       0x067f, 0x077f, 0x087f, 0x0c7f, 0x0e7f, 0x007c, 0xa786, 0x0006,
6928 +       0x00c0, 0xa000, 0xa386, 0x0005, 0x0040, 0xa034, 0x1078, 0xa4e2,
6929 +       0x1078, 0xa1ca, 0x0078, 0xa00f, 0x0d7f, 0x0078, 0xa012, 0x1078,
6930 +       0xa256, 0x00c0, 0xa012, 0x81ff, 0x0040, 0xa012, 0xa180, 0x0001,
6931 +       0x2004, 0xa086, 0x0018, 0x0040, 0xa04c, 0xa180, 0x0001, 0x2004,
6932 +       0xa086, 0x002d, 0x00c0, 0xa012, 0x6000, 0xa086, 0x0002, 0x00c0,
6933 +       0xa012, 0x1078, 0x8eec, 0x0040, 0xa05d, 0x1078, 0x8f00, 0x00c0,
6934 +       0xa012, 0x1078, 0x7c83, 0x0078, 0xa065, 0x1078, 0x28a6, 0x1078,
6935 +       0x8f00, 0x00c0, 0xa065, 0x1078, 0x7c83, 0x1078, 0x8ec6, 0x0078,
6936 +       0xa012, 0x0c7e, 0x0e7e, 0x017e, 0x2c08, 0x2170, 0xa006, 0x1078,
6937 +       0xa1e6, 0x017f, 0x0040, 0xa079, 0x601c, 0xa084, 0x000f, 0x1079,
6938 +       0xa07c, 0x0e7f, 0x0c7f, 0x007c, 0xa084, 0xa084, 0xa084, 0xa084,
6939 +       0xa084, 0xa084, 0xa086, 0xa084, 0xa006, 0x007c, 0x047e, 0x017e,
6940 +       0x7018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00,
6941 +       0x2009, 0x0020, 0x1078, 0xa21d, 0x017f, 0x047f, 0x037e, 0x2019,
6942 +       0x0002, 0x1078, 0x9dc7, 0x037f, 0xa085, 0x0001, 0x007c, 0x2001,
6943 +       0x0001, 0x1078, 0x44ee, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9,
6944 +       0x0004, 0x2019, 0xa605, 0x2011, 0xab96, 0x1078, 0x80de, 0x037f,
6945 +       0x027f, 0x017f, 0x157f, 0xa005, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e,
6946 +       0x087e, 0x077e, 0x067e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2740,
6947 +       0x2061, 0xad00, 0x2079, 0x0001, 0x8fff, 0x0040, 0xa11d, 0x2071,
6948 +       0xa600, 0x7648, 0x7064, 0x8001, 0xa602, 0x00c8, 0xa11d, 0x88ff,
6949 +       0x0040, 0xa0d8, 0x2800, 0xac06, 0x00c0, 0xa113, 0x2079, 0x0000,
6950 +       0x1078, 0xa242, 0x0040, 0xa113, 0x2400, 0xac06, 0x0040, 0xa113,
6951 +       0x671c, 0xa786, 0x0006, 0x00c0, 0xa113, 0xa786, 0x0007, 0x0040,
6952 +       0xa113, 0x88ff, 0x00c0, 0xa0f7, 0x6018, 0xa206, 0x00c0, 0xa113,
6953 +       0x85ff, 0x0040, 0xa0f7, 0x6020, 0xa106, 0x00c0, 0xa113, 0x0d7e,
6954 +       0x6000, 0xa086, 0x0004, 0x00c0, 0xa103, 0x1078, 0xa495, 0x601f,
6955 +       0x0007, 0x1078, 0x1757, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
6956 +       0xa10d, 0x047e, 0x1078, 0xa1ca, 0x047f, 0x0d7f, 0x1078, 0x8ec6,
6957 +       0x88ff, 0x00c0, 0xa127, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004,
6958 +       0xac02, 0x00c8, 0xa11d, 0x0078, 0xa0c4, 0xa006, 0x127f, 0x027f,
6959 +       0x067f, 0x077f, 0x087f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5,
6960 +       0x0001, 0x0078, 0xa11e, 0x077e, 0x057e, 0x087e, 0x2041, 0x0000,
6961 +       0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6218, 0x097e, 0x2049,
6962 +       0x0000, 0x1078, 0x7246, 0x097f, 0x087f, 0x2039, 0x0000, 0x1078,
6963 +       0x72f3, 0x1078, 0xa0b5, 0x057f, 0x077f, 0x007c, 0x027e, 0x047e,
6964 +       0x057e, 0x077e, 0x0c7e, 0x157e, 0x2c20, 0x2128, 0x20a9, 0x007f,
6965 +       0x2009, 0x0000, 0x017e, 0x037e, 0x1078, 0x45c4, 0x00c0, 0xa16e,
6966 +       0x2c10, 0x057e, 0x087e, 0x2041, 0x0000, 0x2508, 0x2029, 0x0001,
6967 +       0x097e, 0x2049, 0x0000, 0x1078, 0x7246, 0x097f, 0x087f, 0x2039,
6968 +       0x0000, 0x1078, 0x72f3, 0x1078, 0xa0b5, 0x057f, 0x037f, 0x017f,
6969 +       0x8108, 0x00f0, 0xa152, 0x157f, 0x0c7f, 0x077f, 0x057f, 0x047f,
6970 +       0x027f, 0x007c, 0x077e, 0x057e, 0x6218, 0x087e, 0x2041, 0x0000,
6971 +       0x2029, 0x0001, 0x2019, 0x0048, 0x097e, 0x2049, 0x0000, 0x1078,
6972 +       0x7246, 0x097f, 0x087f, 0x2039, 0x0000, 0x1078, 0x72f3, 0x2c20,
6973 +       0x1078, 0xa0b5, 0x057f, 0x077f, 0x007c, 0x027e, 0x047e, 0x057e,
6974 +       0x077e, 0x0c7e, 0x157e, 0x2c20, 0x20a9, 0x007f, 0x2009, 0x0000,
6975 +       0x017e, 0x037e, 0x1078, 0x45c4, 0x00c0, 0xa1be, 0x2c10, 0x087e,
6976 +       0x2041, 0x0000, 0x2828, 0x047e, 0x2021, 0x0001, 0x1078, 0xa472,
6977 +       0x047f, 0x097e, 0x2049, 0x0000, 0x1078, 0x7246, 0x097f, 0x087f,
6978 +       0x2039, 0x0000, 0x1078, 0x72f3, 0x1078, 0xa0b5, 0x037f, 0x017f,
6979 +       0x8108, 0x00f0, 0xa1a0, 0x157f, 0x0c7f, 0x077f, 0x057f, 0x047f,
6980 +       0x027f, 0x007c, 0x017e, 0x0f7e, 0xad82, 0xcd00, 0x0048, 0xa1e3,
6981 +       0xad82, 0xffff, 0x00c8, 0xa1e3, 0x6800, 0xa07d, 0x0040, 0xa1e0,
6982 +       0x6803, 0x0000, 0x6b52, 0x1078, 0x4a73, 0x2f68, 0x0078, 0xa1d4,
6983 +       0x6b52, 0x1078, 0x4a73, 0x0f7f, 0x017f, 0x007c, 0x0e7e, 0x047e,
6984 +       0x037e, 0x2061, 0xad00, 0xa005, 0x00c0, 0xa1f6, 0x2071, 0xa600,
6985 +       0x7448, 0x7064, 0x8001, 0xa402, 0x00c8, 0xa218, 0x2100, 0xac06,
6986 +       0x0040, 0xa20a, 0x6000, 0xa086, 0x0000, 0x0040, 0xa20a, 0x6008,
6987 +       0xa206, 0x00c0, 0xa20a, 0x6018, 0xa1a0, 0x0006, 0x2424, 0xa406,
6988 +       0x0040, 0xa214, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02,
6989 +       0x00c8, 0xa218, 0x0078, 0xa1f6, 0xa085, 0x0001, 0x0078, 0xa219,
6990 +       0xa006, 0x037f, 0x047f, 0x0e7f, 0x007c, 0x0d7e, 0x007e, 0x1078,
6991 +       0x138b, 0x007f, 0x1040, 0x1332, 0x6837, 0x010d, 0x685e, 0x027e,
6992 +       0x2010, 0x1078, 0x8cf2, 0x2001, 0x0000, 0x0040, 0xa233, 0x2200,
6993 +       0xa080, 0x0008, 0x2004, 0x027f, 0x684a, 0x6956, 0x6c46, 0x684f,
6994 +       0x0000, 0xa006, 0x68b2, 0x6802, 0x683a, 0x685a, 0x1078, 0x4a73,
6995 +       0x0d7f, 0x007c, 0x6700, 0xa786, 0x0000, 0x0040, 0xa255, 0xa786,
6996 +       0x0001, 0x0040, 0xa255, 0xa786, 0x000a, 0x0040, 0xa255, 0xa786,
6997 +       0x0009, 0x0040, 0xa255, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x6018,
6998 +       0x2070, 0x70a0, 0xa206, 0x0e7f, 0x007c, 0x017e, 0x6004, 0xa08e,
6999 +       0x001e, 0x00c0, 0xa277, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105,
7000 +       0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0005, 0x2001,
7001 +       0xa8a3, 0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x017f,
7002 +       0x007c, 0x0005, 0x0005, 0x007c, 0x6024, 0xd0e4, 0x0040, 0xa28d,
7003 +       0xd0cc, 0x0040, 0xa287, 0x1078, 0x8fbf, 0x0078, 0xa28d, 0x1078,
7004 +       0xa495, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x007c, 0xa280, 0x0007,
7005 +       0x2004, 0xa084, 0x000f, 0x0079, 0xa295, 0xa29e, 0xa29e, 0xa29e,
7006 +       0xa2a0, 0xa29e, 0xa2a0, 0xa2a0, 0xa29e, 0xa2a0, 0xa006, 0x007c,
7007 +       0xa085, 0x0001, 0x007c, 0xa280, 0x0007, 0x2004, 0xa084, 0x000f,
7008 +       0x0079, 0xa2aa, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3,
7009 +       0xa2be, 0xa2b3, 0xa2b3, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013,
7010 +       0x2a00, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x007c, 0x0c7e, 0x2260,
7011 +       0x1078, 0xa495, 0x603f, 0x0000, 0x6024, 0xc0f4, 0xc0cc, 0x6026,
7012 +       0x0c7f, 0x0d7e, 0x2268, 0xa186, 0x0007, 0x00c0, 0xa31f, 0x6810,
7013 +       0xa005, 0x0040, 0xa2dc, 0xa080, 0x0013, 0x2004, 0xd0fc, 0x00c0,
7014 +       0xa2dc, 0x0d7f, 0x0078, 0xa2b3, 0x6007, 0x003a, 0x6003, 0x0001,
7015 +       0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7e, 0x2d60, 0x6100, 0xa186,
7016 +       0x0002, 0x00c0, 0xa3ad, 0x6010, 0xa005, 0x00c0, 0xa2f6, 0x6000,
7017 +       0xa086, 0x0007, 0x10c0, 0x1332, 0x0078, 0xa3ad, 0xa08c, 0xf000,
7018 +       0x00c0, 0xa302, 0x0078, 0xa302, 0x2068, 0x6800, 0xa005, 0x00c0,
7019 +       0xa2fc, 0x2d00, 0xa080, 0x0013, 0x2004, 0xa084, 0x0003, 0xa086,
7020 +       0x0002, 0x00c0, 0xa31b, 0x6010, 0x2068, 0x684c, 0xc0dc, 0xc0f4,
7021 +       0x684e, 0x6850, 0xc0f4, 0xc0fc, 0x6852, 0x2009, 0x0043, 0x1078,
7022 +       0x9c1e, 0x0078, 0xa3ad, 0x2009, 0x0041, 0x0078, 0xa3a7, 0xa186,
7023 +       0x0005, 0x00c0, 0xa366, 0x6810, 0xa080, 0x0013, 0x2004, 0xd0bc,
7024 +       0x00c0, 0xa32d, 0x0d7f, 0x0078, 0xa2b3, 0xd0b4, 0x0040, 0xa335,
7025 +       0xd0fc, 0x1040, 0x1332, 0x0078, 0xa2cf, 0x6007, 0x003a, 0x6003,
7026 +       0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7e, 0x2d60, 0x6100,
7027 +       0xa186, 0x0002, 0x0040, 0xa348, 0xa186, 0x0004, 0x00c0, 0xa3ad,
7028 +       0x2071, 0xa8e7, 0x7000, 0xa086, 0x0003, 0x00c0, 0xa355, 0x7004,
7029 +       0xac06, 0x00c0, 0xa355, 0x7003, 0x0000, 0x6810, 0xa080, 0x0013,
7030 +       0x200c, 0xc1f4, 0xc1dc, 0x2102, 0x8000, 0x200c, 0xc1f4, 0xc1fc,
7031 +       0xc1bc, 0x2102, 0x2009, 0x0042, 0x0078, 0xa3a7, 0x037e, 0x0d7e,
7032 +       0x0d7e, 0x1078, 0x138b, 0x037f, 0x1040, 0x1332, 0x6837, 0x010d,
7033 +       0x6803, 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, 0x6b5e, 0x6857,
7034 +       0x0045, 0x2c00, 0x6862, 0x6034, 0x6872, 0x2360, 0x6024, 0xc0dd,
7035 +       0x6026, 0x6018, 0xa080, 0x0028, 0x2004, 0xa084, 0x00ff, 0x8007,
7036 +       0x6320, 0x6b4a, 0x6846, 0x684f, 0x0000, 0x6d6a, 0x6e66, 0x686f,
7037 +       0x0001, 0x1078, 0x4a73, 0x2019, 0x0045, 0x6008, 0x2068, 0x1078,
7038 +       0x9dc7, 0x2d00, 0x600a, 0x601f, 0x0006, 0x6003, 0x0007, 0x6017,
7039 +       0x0000, 0x603f, 0x0000, 0x0d7f, 0x037f, 0x0078, 0xa3ae, 0x603f,
7040 +       0x0000, 0x6003, 0x0007, 0x1078, 0x9c1e, 0x0c7f, 0x0d7f, 0x007c,
7041 +       0xa186, 0x0013, 0x00c0, 0xa3ba, 0x6004, 0xa082, 0x0085, 0x2008,
7042 +       0x0079, 0xa3d4, 0xa186, 0x0027, 0x00c0, 0xa3cd, 0x1078, 0x61cd,
7043 +       0x037e, 0x0d7e, 0x6010, 0x2068, 0x2019, 0x0004, 0x1078, 0xa1ca,
7044 +       0x0d7f, 0x037f, 0x1078, 0x62d1, 0x007c, 0xa186, 0x0014, 0x0040,
7045 +       0xa3be, 0x1078, 0x7773, 0x007c, 0xa3dd, 0xa3db, 0xa3db, 0xa3db,
7046 +       0xa3db, 0xa3db, 0xa3dd, 0x1078, 0x1332, 0x1078, 0x61cd, 0x6003,
7047 +       0x000c, 0x1078, 0x62d1, 0x007c, 0xa182, 0x008c, 0x00c8, 0xa3ee,
7048 +       0xa182, 0x0085, 0x0048, 0xa3ee, 0x0079, 0xa3f1, 0x1078, 0x7773,
7049 +       0x007c, 0xa3f8, 0xa3f8, 0xa3f8, 0xa3f8, 0xa3fa, 0xa419, 0xa3f8,
7050 +       0x1078, 0x1332, 0x0d7e, 0x2c68, 0x1078, 0x76c7, 0x0040, 0xa414,
7051 +       0x6003, 0x0001, 0x6007, 0x001e, 0x2009, 0xab8e, 0x210c, 0x6136,
7052 +       0x2009, 0xab8f, 0x210c, 0x613a, 0x600b, 0xffff, 0x6918, 0x611a,
7053 +       0x601f, 0x0004, 0x1078, 0x5d8a, 0x2d60, 0x1078, 0x772d, 0x0d7f,
7054 +       0x007c, 0x1078, 0x772d, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x7000,
7055 +       0xd0ec, 0x0e7f, 0x007c, 0x6010, 0xa08c, 0xf000, 0x0040, 0xa471,
7056 +       0xa080, 0x0013, 0x200c, 0xd1ec, 0x0040, 0xa471, 0x2001, 0xa672,
7057 +       0x2004, 0xd0ec, 0x0040, 0xa471, 0x6003, 0x0002, 0x6024, 0xc0e5,
7058 +       0x6026, 0xd1ac, 0x0040, 0xa44f, 0x0f7e, 0x2c78, 0x1078, 0x495f,
7059 +       0x0f7f, 0x0040, 0xa44f, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x2009,
7060 +       0xa672, 0x210c, 0xd1f4, 0x00c0, 0xa46f, 0x0078, 0xa461, 0x2009,
7061 +       0xa672, 0x210c, 0xd1f4, 0x0040, 0xa45b, 0x6024, 0xc0e4, 0x6026,
7062 +       0xa006, 0x0078, 0xa471, 0x2001, 0xa8a4, 0x200c, 0x8103, 0xa100,
7063 +       0x603e, 0x6018, 0xa088, 0x002b, 0x2104, 0xa005, 0x0040, 0xa46c,
7064 +       0xa088, 0x0003, 0x0078, 0xa464, 0x2c0a, 0x600f, 0x0000, 0xa085,
7065 +       0x0001, 0x007c, 0x017e, 0x0c7e, 0x0e7e, 0x6120, 0xa2f0, 0x002b,
7066 +       0x2e04, 0x2060, 0x8cff, 0x0040, 0xa491, 0x84ff, 0x00c0, 0xa484,
7067 +       0x6020, 0xa106, 0x00c0, 0xa48c, 0x600c, 0x2072, 0x1078, 0x5bc1,
7068 +       0x1078, 0x772d, 0x0078, 0xa48e, 0xacf0, 0x0003, 0x2e64, 0x0078,
7069 +       0xa47a, 0x0e7f, 0x0c7f, 0x017f, 0x007c, 0x0d7e, 0x6018, 0xa0e8,
7070 +       0x002b, 0x2d04, 0xa005, 0x0040, 0xa4a7, 0xac06, 0x0040, 0xa4a5,
7071 +       0x2d04, 0xa0e8, 0x0003, 0x0078, 0xa499, 0x600c, 0x206a, 0x0d7f,
7072 +       0x007c, 0x027e, 0x037e, 0x157e, 0x2011, 0xa626, 0x2204, 0xa084,
7073 +       0x00ff, 0x2019, 0xab8e, 0x2334, 0xa636, 0x00c0, 0xa4d5, 0x8318,
7074 +       0x2334, 0x2204, 0xa084, 0xff00, 0xa636, 0x00c0, 0xa4d5, 0x2011,
7075 +       0xab90, 0x6018, 0xa098, 0x000a, 0x20a9, 0x0004, 0x1078, 0x80de,
7076 +       0x00c0, 0xa4d5, 0x2011, 0xab94, 0x6018, 0xa098, 0x0006, 0x20a9,
7077 +       0x0004, 0x1078, 0x80de, 0x00c0, 0xa4d5, 0x157f, 0x037f, 0x027f,
7078 +       0x007c, 0x0e7e, 0x2071, 0xa600, 0x1078, 0x42b8, 0x1078, 0x2677,
7079 +       0x0e7f, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x7000, 0xd0fc, 0x0040,
7080 +       0xa4eb, 0x1078, 0xa4ed, 0x0e7f, 0x007c, 0x6850, 0xc0e5, 0x6852,
7081 +       0x007c, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x057e, 0x047e, 0x027e,
7082 +       0x017e, 0x127e, 0x2091, 0x8000, 0x2029, 0xa8ba, 0x252c, 0x2021,
7083 +       0xa8c0, 0x2424, 0x2061, 0xad00, 0x2071, 0xa600, 0x7648, 0x7064,
7084 +       0xa606, 0x0040, 0xa545, 0x671c, 0xa786, 0x0001, 0x0040, 0xa514,
7085 +       0xa786, 0x0008, 0x00c0, 0xa53b, 0x2500, 0xac06, 0x0040, 0xa53b,
7086 +       0x2400, 0xac06, 0x0040, 0xa53b, 0x1078, 0xa242, 0x0040, 0xa53b,
7087 +       0x1078, 0xa256, 0x00c0, 0xa53b, 0x6000, 0xa086, 0x0004, 0x00c0,
7088 +       0xa52d, 0x017e, 0x1078, 0x1757, 0x017f, 0x1078, 0x8eec, 0x00c0,
7089 +       0xa533, 0x1078, 0x28a6, 0x1078, 0x8f00, 0x00c0, 0xa539, 0x1078,
7090 +       0x7c83, 0x1078, 0x8ec6, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004,
7091 +       0xac02, 0x00c8, 0xa545, 0x0078, 0xa504, 0x127f, 0x017f, 0x027f,
7092 +       0x047f, 0x057f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x007c, 0x127e,
7093 +       0x007e, 0x0e7e, 0x017e, 0x2091, 0x8000, 0x2071, 0xa640, 0xd5a4,
7094 +       0x0040, 0xa55d, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0xa563,
7095 +       0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0xa579, 0x2500, 0xa084,
7096 +       0x0007, 0xa08e, 0x0003, 0x0040, 0xa579, 0xa08e, 0x0004, 0x0040,
7097 +       0xa579, 0xa08e, 0x0005, 0x0040, 0xa579, 0x2071, 0xa64a, 0x1078,
7098 +       0xa5ba, 0x017f, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e,
7099 +       0x0e7e, 0x017e, 0x2091, 0x8000, 0x2071, 0xa640, 0xd5a4, 0x0040,
7100 +       0xa58c, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0xa592, 0x7030,
7101 +       0x8000, 0x7032, 0xd5ac, 0x0040, 0xa5a8, 0x2500, 0xa084, 0x0007,
7102 +       0xa08e, 0x0003, 0x0040, 0xa5a8, 0xa08e, 0x0004, 0x0040, 0xa5a8,
7103 +       0xa08e, 0x0005, 0x0040, 0xa5a8, 0x2071, 0xa64a, 0x1078, 0xa5ba,
7104 +       0x017f, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e,
7105 +       0x2091, 0x8000, 0x2071, 0xa642, 0x1078, 0xa5ba, 0x0e7f, 0x007f,
7106 +       0x127f, 0x007c, 0x2e04, 0x8000, 0x2072, 0x00c8, 0xa5c3, 0x8e70,
7107 +       0x2e04, 0x8000, 0x2072, 0x007c, 0x0e7e, 0x2071, 0xa640, 0x1078,
7108 +       0xa5ba, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa644, 0x1078, 0xa5ba,
7109 +       0x0e7f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071,
7110 +       0xa640, 0x7044, 0x8000, 0x7046, 0x0e7f, 0x007f, 0x127f, 0x007c,
7111 +       0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
7112 +       0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000,
7113 +       0xa50c
7114 +};
7115 +#ifdef UNIQUE_FW_NAME
7116 +unsigned short fw2100tp_length01 = 0x95f1;
7117 +#else
7118 +unsigned short risc_code_length01 = 0x95f1;
7119 +#endif
7120 +
7121 --- /dev/null   Thu Apr 11 07:25:15 2002
7122 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/ql2200ip_fw.c       Thu Jul  3 15:34:42 2003
7123 @@ -0,0 +1,5884 @@
7124 +/******************************************************************************
7125 + *                  QLOGIC LINUX SOFTWARE
7126 + *
7127 + * QLogic ISP2x00 device driver for Linux 2.5.x
7128 + * Copyright (C) 2003 Qlogic Corporation
7129 + * (www.qlogic.com)
7130 + *
7131 + * This program is free software; you can redistribute it and/or modify it
7132 + * under the terms of the GNU General Public License as published by the
7133 + * Free Software Foundation; either version 2, or (at your option) any
7134 + * later version.
7135 + *
7136 + * This program is distributed in the hope that it will be useful, but
7137 + * WITHOUT ANY WARRANTY; without even the implied warranty of
7138 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
7139 + * General Public License for more details.
7140 + *
7141 + *************************************************************************/
7142 +
7143 +/************************************************************************
7144 + *                                                                     *
7145 + *           -- ISP2200 Initiator/Target Firmware ---                  *
7146 + *      IP and SCSI, Fabric (Public Loop), Point-point, and            *
7147 + *             expanded LUN addressing for FCTAPE                      *
7148 + *                                                                     *
7149 + ************************************************************************/
7150 +
7151 +/*
7152 + *     Firmware Version 2.02.05 (13:47 Apr 25, 2003)
7153 + */
7154 +
7155 +#ifdef UNIQUE_FW_NAME
7156 +unsigned short fw2200ip_version = 2*1024+2;
7157 +#else
7158 +unsigned short risc_code_version = 2*1024+2;
7159 +#endif
7160 +
7161 +#ifdef UNIQUE_FW_NAME
7162 +unsigned char fw2200ip_version_str[] = {2,2,5};
7163 +#else
7164 +unsigned char firmware_version[] = {2,2,5};
7165 +#endif
7166 +
7167 +#ifdef UNIQUE_FW_NAME
7168 +#define fw2200ip_VERSION_STRING "2.02.05"
7169 +#else
7170 +#define FW_VERSION_STRING "2.02.05"
7171 +#endif
7172 +
7173 +#ifdef UNIQUE_FW_NAME
7174 +unsigned short fw2200ip_addr01 = 0x1000 ;
7175 +#else
7176 +unsigned short risc_code_addr01 = 0x1000 ;
7177 +#endif
7178 +
7179 +#ifdef UNIQUE_FW_NAME
7180 +unsigned short fw2200ip_code01[] = { 
7181 +#else
7182 +unsigned short risc_code01[] = { 
7183 +#endif
7184 +       0x0470, 0x0000, 0x0000, 0xb5c6, 0x0000, 0x0002, 0x0002, 0x0005,
7185 +       0x0037, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030,
7186 +       0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241,
7187 +       0x5449, 0x4f4e, 0x2049, 0x5350, 0x3232, 0x3030, 0x2046, 0x6972,
7188 +       0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030,
7189 +       0x322e, 0x3032, 0x2e30, 0x3520, 0x2020, 0x2020, 0x2400, 0x20c1,
7190 +       0x0005, 0x2001, 0x017f, 0x2003, 0x0000, 0x20c9, 0xcbff, 0x2091,
7191 +       0x2000, 0x2059, 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x2b14,
7192 +       0x2051, 0xc600, 0x2a70, 0x2029, 0xfe00, 0x2031, 0xffff, 0x2039,
7193 +       0xfde9, 0x2021, 0x0200, 0x0804, 0x146c, 0x20a1, 0xc5c6, 0xa00e,
7194 +       0x20a9, 0x083a, 0x41a4, 0x3400, 0x7562, 0x7666, 0x775e, 0x746a,
7195 +       0x746e, 0x20a1, 0xce00, 0x7164, 0x810d, 0x810d, 0x810d, 0x810d,
7196 +       0xa18c, 0x000f, 0x2001, 0x000c, 0xa112, 0xa00e, 0x21a8, 0x41a4,
7197 +       0x3400, 0x8211, 0x1dd8, 0x7164, 0x3400, 0xa102, 0x0120, 0x0218,
7198 +       0x20a8, 0xa00e, 0x41a4, 0x3800, 0xd08c, 0x01d8, 0x2009, 0xc600,
7199 +       0x810d, 0x810d, 0x810d, 0x810d, 0xa18c, 0x000f, 0x2001, 0x0001,
7200 +       0xa112, 0x20a1, 0x1000, 0xa00e, 0x21a8, 0x41a4, 0x8211, 0x1de0,
7201 +       0x2009, 0xc600, 0x3400, 0xa102, 0x0120, 0x0218, 0x20a8, 0xa00e,
7202 +       0x41a4, 0x080c, 0x1415, 0x080c, 0x163c, 0x080c, 0x17de, 0x080c,
7203 +       0x2061, 0x080c, 0x4f3b, 0x080c, 0x9585, 0x080c, 0x15bf, 0x080c,
7204 +       0x306e, 0x080c, 0x61dd, 0x080c, 0x5743, 0x080c, 0x7147, 0x080c,
7205 +       0x6edf, 0x080c, 0x265b, 0x080c, 0x7860, 0x080c, 0x68c0, 0x080c,
7206 +       0x2515, 0x080c, 0x2629, 0x2091, 0x3009, 0x7823, 0x0000, 0x1004,
7207 +       0x10c7, 0x7820, 0xa086, 0x0002, 0x1150, 0x7823, 0x4000, 0x0e04,
7208 +       0x10bf, 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70,
7209 +       0x7003, 0x0000, 0x2a70, 0x7000, 0xa08e, 0x0003, 0x1168, 0x080c,
7210 +       0x40b9, 0x080c, 0x3095, 0x080c, 0x622b, 0x080c, 0x5943, 0x080c,
7211 +       0x7184, 0x080c, 0x6f0a, 0x0c70, 0x000b, 0x0c88, 0x10e8, 0x10e9,
7212 +       0x1214, 0x10e6, 0x12e1, 0x1412, 0x1413, 0x1414, 0x080c, 0x1519,
7213 +       0x0005, 0x0126, 0x00f6, 0x2091, 0x8000, 0x7000, 0xa086, 0x0001,
7214 +       0x1904, 0x11f1, 0x080c, 0x158c, 0x080c, 0x5f22, 0x0150, 0x080c,
7215 +       0x5f48, 0x15c0, 0x2079, 0x0100, 0x7828, 0xa085, 0x1800, 0x782a,
7216 +       0x0488, 0x080c, 0x5e5a, 0x7000, 0xa086, 0x0001, 0x1904, 0x11f1,
7217 +       0x708c, 0xa086, 0x0028, 0x1904, 0x11f1, 0x2001, 0x0161, 0x2003,
7218 +       0x0001, 0x2079, 0x0100, 0x7827, 0xffff, 0x7a28, 0xa295, 0x1e2f,
7219 +       0x7a2a, 0x2011, 0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8, 0x080c,
7220 +       0x7070, 0x2011, 0x5e37, 0x080c, 0x6fad, 0x2011, 0x4e18, 0x080c,
7221 +       0x6fad, 0x2011, 0x8030, 0x2019, 0x0000, 0x708b, 0x0000, 0x080c,
7222 +       0x1eae, 0x00e8, 0x080c, 0x47cb, 0x2079, 0x0100, 0x7844, 0xa005,
7223 +       0x1904, 0x11f1, 0x2011, 0x4e18, 0x080c, 0x6fad, 0x2011, 0x5e37,
7224 +       0x080c, 0x6fad, 0x080c, 0x1eae, 0x2001, 0xc8d4, 0x2004, 0x780e,
7225 +       0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, 0x8010, 0x73cc, 0x080c,
7226 +       0x407d, 0x723c, 0xc284, 0x723e, 0x2001, 0xc60c, 0x200c, 0xc1ac,
7227 +       0x2102, 0x080c, 0x8dca, 0x2011, 0x0004, 0x080c, 0xac97, 0x080c,
7228 +       0x55e1, 0x080c, 0x5f22, 0x0158, 0x080c, 0x4f24, 0x0140, 0x708b,
7229 +       0x0001, 0x70c7, 0x0000, 0x080c, 0x4968, 0x0804, 0x11f1, 0x080c,
7230 +       0x570b, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, 0x0060, 0x7073, 0x0000,
7231 +       0x080c, 0xb03f, 0x70d4, 0xd09c, 0x1128, 0x70a0, 0xa005, 0x0110,
7232 +       0x080c, 0x4f02, 0x70df, 0x0000, 0x70db, 0x0000, 0x72d4, 0x080c,
7233 +       0x5f22, 0x1178, 0x2011, 0x0000, 0x0016, 0x080c, 0x2a95, 0x2019,
7234 +       0xc8d6, 0x211a, 0x001e, 0x7053, 0xffff, 0x7057, 0x00ef, 0x7077,
7235 +       0x0000, 0x2079, 0xc652, 0x7804, 0xd0ac, 0x0108, 0xc295, 0x72d6,
7236 +       0x080c, 0x5f22, 0x0118, 0xa296, 0x0004, 0x0548, 0x2011, 0x0001,
7237 +       0x080c, 0xac97, 0x709b, 0x0000, 0x709f, 0xffff, 0x7003, 0x0002,
7238 +       0x2079, 0x0100, 0x7827, 0x0003, 0x7828, 0xa085, 0x0003, 0x782a,
7239 +       0x00fe, 0x080c, 0x2c62, 0x2011, 0x0005, 0x080c, 0x8f0e, 0x080c,
7240 +       0x7e94, 0x080c, 0x5f22, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016,
7241 +       0x080c, 0x2a95, 0x61e2, 0x001e, 0x00ce, 0x012e, 0x0420, 0x709b,
7242 +       0x0000, 0x709f, 0xffff, 0x7003, 0x0002, 0x00f6, 0x2079, 0x0100,
7243 +       0x7827, 0x0003, 0x7828, 0xa085, 0x0003, 0x782a, 0x00fe, 0x2011,
7244 +       0x0005, 0x080c, 0x8f0e, 0x080c, 0x7e94, 0x080c, 0x5f22, 0x0148,
7245 +       0x00c6, 0x2061, 0x0100, 0x0016, 0x080c, 0x2a95, 0x61e2, 0x001e,
7246 +       0x00ce, 0x00fe, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5f22, 0x1118,
7247 +       0x20a9, 0x0100, 0x0010, 0x20a9, 0x0082, 0x080c, 0x5f22, 0x1118,
7248 +       0x2009, 0x0000, 0x0010, 0x2009, 0x007e, 0x080c, 0x2f41, 0x8108,
7249 +       0x1f04, 0x1205, 0x00ce, 0x7073, 0x0000, 0x7074, 0xa084, 0x00ff,
7250 +       0x7076, 0x70a3, 0x0000, 0x0005, 0x0126, 0x2091, 0x8000, 0x7000,
7251 +       0xa086, 0x0002, 0x1904, 0x12df, 0x709c, 0xa086, 0xffff, 0x0130,
7252 +       0x080c, 0x2c62, 0x080c, 0x7e94, 0x0804, 0x12df, 0x70d4, 0xd0ac,
7253 +       0x1110, 0xd09c, 0x0540, 0xd084, 0x0530, 0x0006, 0x0016, 0x2001,
7254 +       0x0103, 0x2009, 0xc8d4, 0x210c, 0x2102, 0x001e, 0x000e, 0xd08c,
7255 +       0x01d0, 0x70d8, 0xa086, 0xffff, 0x0190, 0x080c, 0x2dc1, 0x080c,
7256 +       0x7e94, 0x70d4, 0xd094, 0x1904, 0x12df, 0x2011, 0x0001, 0x2019,
7257 +       0x0000, 0x080c, 0x2df9, 0x080c, 0x7e94, 0x0804, 0x12df, 0x70dc,
7258 +       0xa005, 0x1904, 0x12df, 0x7098, 0xa005, 0x1904, 0x12df, 0x70d4,
7259 +       0xd0a4, 0x0118, 0xd0b4, 0x0904, 0x12df, 0x080c, 0x570b, 0x1904,
7260 +       0x12df, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x01c8, 0x0156, 0x00c6,
7261 +       0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x533d, 0x1118,
7262 +       0x6000, 0xd0ec, 0x1138, 0x001e, 0x8108, 0x1f04, 0x126c, 0x00ce,
7263 +       0x015e, 0x0028, 0x001e, 0x00ce, 0x015e, 0x0804, 0x12df, 0x0006,
7264 +       0x0016, 0x2001, 0x0103, 0x2009, 0xc8d4, 0x210c, 0x2102, 0x001e,
7265 +       0x000e, 0x71a8, 0x81ff, 0x11b0, 0xa006, 0x2009, 0x0200, 0x20a9,
7266 +       0x0002, 0x20a1, 0xc925, 0x40a1, 0x2009, 0x0700, 0x20a9, 0x0002,
7267 +       0x20a1, 0xc915, 0x40a1, 0x7070, 0x8007, 0x7174, 0x810f, 0x20a9,
7268 +       0x0002, 0x40a1, 0x20a1, 0xc919, 0x2009, 0x0000, 0x080c, 0x14ff,
7269 +       0x2001, 0x0000, 0x810f, 0x20a9, 0x0002, 0x40a1, 0x7030, 0xc08c,
7270 +       0x7032, 0x7003, 0x0003, 0x709f, 0xffff, 0x080c, 0x1585, 0xa006,
7271 +       0x080c, 0x296d, 0x080c, 0x40ef, 0x00f6, 0x2079, 0x0100, 0x080c,
7272 +       0x5f48, 0x0150, 0x080c, 0x5f22, 0x7828, 0x0118, 0xa084, 0xe1ff,
7273 +       0x0010, 0xa084, 0xffdf, 0x782a, 0x00fe, 0x2001, 0xc928, 0x2004,
7274 +       0xa086, 0x0005, 0x1120, 0x2011, 0x0000, 0x080c, 0x8f0e, 0x2011,
7275 +       0x0000, 0x080c, 0x8f18, 0x080c, 0x7e94, 0x080c, 0x7f6e, 0x012e,
7276 +       0x0005, 0x0016, 0x0046, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079,
7277 +       0x0100, 0x2009, 0xc634, 0x2104, 0xa005, 0x1110, 0x080c, 0x2ac1,
7278 +       0x2009, 0x00f7, 0x080c, 0x4eeb, 0x7940, 0xa18c, 0x0010, 0x7942,
7279 +       0x7924, 0xd1b4, 0x0110, 0x7827, 0x0040, 0xd19c, 0x0110, 0x7827,
7280 +       0x0008, 0x0006, 0x0036, 0x0156, 0x7954, 0xd1ac, 0x1904, 0x134f,
7281 +       0x080c, 0x5f34, 0x0158, 0x080c, 0x5f48, 0x1128, 0x2001, 0xc8e5,
7282 +       0x2003, 0x0000, 0x0070, 0x080c, 0x5f2a, 0x0dc0, 0x2001, 0xc8e5,
7283 +       0x2003, 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x080c, 0x5e5a,
7284 +       0x0058, 0x080c, 0x5f22, 0x0140, 0x2009, 0x00f8, 0x080c, 0x4eeb,
7285 +       0x7843, 0x0090, 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c,
7286 +       0x1138, 0x080c, 0x5f22, 0x0138, 0x7824, 0xd0ac, 0x1904, 0x13f9,
7287 +       0x1f04, 0x132e, 0x0070, 0x7824, 0x080c, 0x5f3e, 0x0118, 0xd0ac,
7288 +       0x1904, 0x13f9, 0xa084, 0x1800, 0x0d98, 0x7003, 0x0001, 0x0804,
7289 +       0x13f9, 0x2001, 0x0001, 0x080c, 0x296d, 0x0804, 0x1408, 0x7850,
7290 +       0xa084, 0x0180, 0x7852, 0x782f, 0x0020, 0x20a9, 0x0046, 0x1d04,
7291 +       0x1357, 0x080c, 0x7058, 0x1f04, 0x1357, 0x7850, 0xa084, 0x0180,
7292 +       0xa085, 0x0400, 0x7852, 0x782f, 0x0000, 0x080c, 0x5f34, 0x0158,
7293 +       0x080c, 0x5f48, 0x1128, 0x2001, 0xc8e5, 0x2003, 0x0000, 0x0070,
7294 +       0x080c, 0x5f2a, 0x0dc0, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x2001,
7295 +       0xc8e6, 0x2003, 0x0001, 0x080c, 0x5e5a, 0x0020, 0x2009, 0x00f8,
7296 +       0x080c, 0x4eeb, 0x20a9, 0x000e, 0xe000, 0x1f04, 0x1384, 0x7850,
7297 +       0xa084, 0x0180, 0xa085, 0x1400, 0x7852, 0x080c, 0x5f22, 0x0120,
7298 +       0x7843, 0x0090, 0x7843, 0x0010, 0x2021, 0xe678, 0x2019, 0xea60,
7299 +       0x7820, 0xd09c, 0x1558, 0x080c, 0x5f22, 0x05d8, 0x7824, 0xd0ac,
7300 +       0x1904, 0x13f9, 0x080c, 0x5f48, 0x1508, 0x0046, 0x2021, 0x0190,
7301 +       0x8421, 0x1df0, 0x004e, 0x8421, 0x11c8, 0x7827, 0x0048, 0x20a9,
7302 +       0x01f4, 0x1d04, 0x13b1, 0x080c, 0x7058, 0x1f04, 0x13b1, 0x7824,
7303 +       0xa084, 0x0068, 0x15c8, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x2001,
7304 +       0xc8e6, 0x2003, 0x0001, 0x7003, 0x0001, 0x0498, 0x1d04, 0x13ca,
7305 +       0x080c, 0x7058, 0x8319, 0x1960, 0x2009, 0xc634, 0x2104, 0x8000,
7306 +       0x200a, 0xa084, 0xfff0, 0x0120, 0x200b, 0x0000, 0x080c, 0x2ac1,
7307 +       0x00d8, 0x080c, 0x5f34, 0x1140, 0xa4a2, 0x0064, 0x1128, 0x080c,
7308 +       0x5ef9, 0x7003, 0x0001, 0x00a8, 0x7827, 0x1800, 0xe000, 0xe000,
7309 +       0x7824, 0x080c, 0x5f3e, 0x0110, 0xd0ac, 0x1158, 0xa084, 0x1800,
7310 +       0x09a8, 0x7003, 0x0001, 0x0028, 0x2001, 0x0001, 0x080c, 0x296d,
7311 +       0x0048, 0x2001, 0xc634, 0x2003, 0x0000, 0x7827, 0x0048, 0x7828,
7312 +       0xc09d, 0x782a, 0x7850, 0xa084, 0x0180, 0xa085, 0x0400, 0x7852,
7313 +       0x015e, 0x003e, 0x000e, 0x080c, 0x155c, 0x012e, 0x00fe, 0x004e,
7314 +       0x001e, 0x0005, 0x0005, 0x0005, 0x0005, 0x2a70, 0x2061, 0xc908,
7315 +       0x2063, 0x0002, 0x6007, 0x0002, 0x600b, 0x0005, 0x600f, 0x0037,
7316 +       0x2001, 0xc8e5, 0x2003, 0x0000, 0x708b, 0x0000, 0x2009, 0x0100,
7317 +       0x2104, 0xa082, 0x0002, 0x0218, 0x7053, 0xffff, 0x0010, 0x7053,
7318 +       0x0000, 0x705b, 0xffff, 0x7073, 0x0000, 0x7077, 0x0000, 0x080c,
7319 +       0xb03f, 0x2061, 0xc8d5, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b,
7320 +       0x8800, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x001f, 0x601b,
7321 +       0x0000, 0x601f, 0x07d0, 0x2061, 0xc8dd, 0x6003, 0x8000, 0x6007,
7322 +       0x0000, 0x600b, 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017,
7323 +       0x0000, 0x601b, 0x0001, 0x601f, 0x0000, 0x2061, 0xc900, 0x6003,
7324 +       0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, 0x2001,
7325 +       0xc628, 0x2003, 0x0000, 0x0005, 0x04a0, 0x2011, 0x0000, 0x81ff,
7326 +       0x0570, 0xa186, 0x0001, 0x1148, 0x2031, 0x8fff, 0x2039, 0xe601,
7327 +       0x2021, 0x0100, 0x2029, 0xe600, 0x00e8, 0xa186, 0x0002, 0x1118,
7328 +       0x2011, 0x0000, 0x00b8, 0xa186, 0x0005, 0x1118, 0x2011, 0x0001,
7329 +       0x0088, 0xa186, 0x0009, 0x1118, 0x2011, 0x0002, 0x0058, 0xa186,
7330 +       0x000a, 0x1118, 0x2011, 0x0002, 0x0028, 0xa186, 0x0055, 0x1110,
7331 +       0x2011, 0x0003, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x0804,
7332 +       0x104d, 0xa00e, 0x2011, 0x0003, 0x2019, 0x14a8, 0x0804, 0x14f9,
7333 +       0x2019, 0xaaaa, 0x2061, 0xffff, 0x2c14, 0x2362, 0xe000, 0xe000,
7334 +       0x2c04, 0xa306, 0x2262, 0x1110, 0xc1b5, 0xc1a5, 0x2011, 0x0000,
7335 +       0x2019, 0x14bb, 0x04f0, 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2c14,
7336 +       0x2362, 0xe000, 0xe000, 0x2c1c, 0x2061, 0x7fff, 0xe000, 0xe000,
7337 +       0x2c04, 0x2061, 0xffff, 0x2262, 0xa306, 0x0110, 0xc18d, 0x0008,
7338 +       0xc185, 0x2011, 0x0002, 0x2019, 0x14d6, 0x0418, 0x2061, 0xffff,
7339 +       0x2019, 0xaaaa, 0x2c14, 0x2362, 0xe000, 0xe000, 0x2c04, 0x2262,
7340 +       0xa306, 0x1180, 0x2c14, 0x2362, 0xe000, 0xe000, 0x2c1c, 0x2061,
7341 +       0x7fff, 0x2c04, 0x2061, 0xffff, 0x2262, 0xa306, 0x1110, 0xc195,
7342 +       0x0008, 0xc19d, 0x2011, 0x0001, 0x2019, 0x14f7, 0x0010, 0x0804,
7343 +       0x146d, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x0837, 0x2011,
7344 +       0x0000, 0x080c, 0x533d, 0x1178, 0x6004, 0xa0c4, 0x00ff, 0xa8c6,
7345 +       0x0006, 0x0128, 0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x1120, 0xa186,
7346 +       0x0080, 0x0108, 0x8210, 0x8108, 0xa186, 0x0100, 0x1d50, 0x2208,
7347 +       0x0005, 0x2091, 0x8000, 0x0e04, 0x151b, 0x0006, 0x0016, 0x2079,
7348 +       0x0000, 0x7818, 0xd084, 0x1de8, 0x001e, 0x792e, 0x000e, 0x782a,
7349 +       0x000e, 0x7826, 0x3900, 0x783a, 0x7823, 0x8002, 0x781b, 0x0001,
7350 +       0x2091, 0x5000, 0x0126, 0x0156, 0x0146, 0x20a9, 0x0010, 0x20a1,
7351 +       0xca54, 0x2091, 0x2000, 0x40a1, 0x20a9, 0x0010, 0x2091, 0x2200,
7352 +       0x40a1, 0x20a9, 0x0010, 0x2091, 0x2400, 0x40a1, 0x20a9, 0x0010,
7353 +       0x2091, 0x2600, 0x40a1, 0x20a9, 0x0010, 0x2091, 0x2800, 0x40a1,
7354 +       0x014e, 0x015e, 0x012e, 0x2079, 0xc600, 0x7803, 0x0005, 0x2091,
7355 +       0x4080, 0x04c9, 0x0cf8, 0x0005, 0x0006, 0x080c, 0x15a7, 0x1518,
7356 +       0x00f6, 0x2079, 0xc624, 0x2f04, 0x8000, 0x207a, 0xa082, 0x000f,
7357 +       0x0258, 0xa006, 0x207a, 0x2079, 0xc626, 0x2f04, 0xa084, 0x0001,
7358 +       0xa086, 0x0001, 0x207a, 0x0070, 0x2079, 0xc626, 0x2f7c, 0x8fff,
7359 +       0x1128, 0x2001, 0x0c03, 0x2003, 0x0040, 0x0020, 0x2001, 0x0c03,
7360 +       0x2003, 0x00c0, 0x00fe, 0x000e, 0x0005, 0x0409, 0x1120, 0x2001,
7361 +       0x0c03, 0x2003, 0x0080, 0x0005, 0x00d1, 0x1120, 0x2001, 0x0c03,
7362 +       0x2003, 0x0040, 0x0005, 0x0006, 0x0091, 0x1178, 0x2001, 0x0c03,
7363 +       0x2003, 0x0040, 0x2009, 0x0fff, 0x00a1, 0x2001, 0x0c03, 0x2003,
7364 +       0x0080, 0x2009, 0x0fff, 0x0069, 0x0c88, 0x000e, 0x0005, 0x00c6,
7365 +       0x2061, 0x0c00, 0x2c04, 0xa084, 0x00ff, 0xa086, 0x00aa, 0x00ce,
7366 +       0x0005, 0x0156, 0x0126, 0xa18c, 0x0fff, 0x21a8, 0x1d04, 0x15b6,
7367 +       0x2091, 0x6000, 0x1f04, 0x15b6, 0x012e, 0x015e, 0x0005, 0x2071,
7368 +       0xc600, 0x7160, 0x712e, 0x2021, 0x0001, 0xa190, 0x0030, 0xa298,
7369 +       0x0030, 0x0240, 0x7064, 0xa302, 0x1228, 0x220a, 0x2208, 0x2310,
7370 +       0x8420, 0x0ca8, 0x3800, 0xd08c, 0x0148, 0x7064, 0xa086, 0xc600,
7371 +       0x0128, 0x7067, 0xc600, 0x2011, 0x1000, 0x0c48, 0x200b, 0x0000,
7372 +       0x74b2, 0x74b6, 0x70eb, 0x0010, 0x0005, 0x00e6, 0x0126, 0x2091,
7373 +       0x8000, 0x2071, 0xc600, 0x70b4, 0x0016, 0x2008, 0x70e8, 0xa16a,
7374 +       0x2100, 0x001e, 0x0268, 0x8001, 0x70b6, 0x702c, 0x2068, 0x2d04,
7375 +       0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x012e, 0x00ee, 0x0005,
7376 +       0xa06e, 0x0cd8, 0x00e6, 0x2071, 0xc600, 0x0126, 0x2091, 0x8000,
7377 +       0x70b4, 0x8001, 0x0260, 0x70b6, 0x702c, 0x2068, 0x2d04, 0x702e,
7378 +       0x206b, 0x0000, 0x6807, 0x0000, 0x012e, 0x00ee, 0x0005, 0xa06e,
7379 +       0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc600, 0x702c,
7380 +       0x206a, 0x2d00, 0x702e, 0x70b4, 0x8000, 0x70b6, 0x012e, 0x00ee,
7381 +       0x0005, 0x8dff, 0x0138, 0x6804, 0x6807, 0x0000, 0x0006, 0x0c49,
7382 +       0x00de, 0x0cb8, 0x0005, 0x00e6, 0x2071, 0xc600, 0x70b4, 0xa08a,
7383 +       0x0010, 0xa00d, 0x00ee, 0x0005, 0x00e6, 0x2071, 0xc959, 0x7007,
7384 +       0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x2071, 0x0000, 0x7010,
7385 +       0xa085, 0x8004, 0x7012, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000,
7386 +       0x00e6, 0x2270, 0x700b, 0x0000, 0x2071, 0xc959, 0x7018, 0xa088,
7387 +       0xc962, 0x220a, 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005,
7388 +       0x1128, 0x00f6, 0x2079, 0x0010, 0x0089, 0x00fe, 0x00ee, 0x012e,
7389 +       0x0005, 0x00e6, 0x2071, 0xc959, 0x7004, 0xa005, 0x1128, 0x00f6,
7390 +       0x2079, 0x0010, 0x0019, 0x00fe, 0x00ee, 0x0005, 0x7000, 0x0002,
7391 +       0x1680, 0x16e4, 0x1701, 0x1701, 0x23e7, 0x16e4, 0x1701, 0x16e4,
7392 +       0x7018, 0x711c, 0xa106, 0x1118, 0x7007, 0x0000, 0x0005, 0x00d6,
7393 +       0xa180, 0xc962, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007,
7394 +       0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c,
7395 +       0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804,
7396 +       0x00de, 0xd084, 0x0120, 0x7007, 0x0001, 0x0029, 0x0005, 0x7007,
7397 +       0x0002, 0x00b1, 0x0005, 0x0016, 0x0026, 0x710c, 0x2011, 0x0040,
7398 +       0xa182, 0x0040, 0x1210, 0x2110, 0xa006, 0x700e, 0x7212, 0x8203,
7399 +       0x7822, 0x7803, 0x0020, 0x7803, 0x0041, 0x002e, 0x001e, 0x0005,
7400 +       0x0016, 0x0026, 0x0136, 0x0146, 0x0156, 0x7014, 0x2098, 0x20a1,
7401 +       0x0014, 0x7803, 0x0026, 0x710c, 0x2011, 0x0040, 0xa182, 0x0040,
7402 +       0x1210, 0x2110, 0xa006, 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822,
7403 +       0x7803, 0x0020, 0x3300, 0x7016, 0x7803, 0x0001, 0x015e, 0x014e,
7404 +       0x013e, 0x002e, 0x001e, 0x0005, 0x0136, 0x0146, 0x0156, 0x2099,
7405 +       0xc71a, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
7406 +       0x0126, 0x2091, 0x8000, 0x7803, 0x0041, 0x7007, 0x0003, 0x7000,
7407 +       0xc084, 0x7002, 0x700b, 0xc715, 0x012e, 0x015e, 0x014e, 0x013e,
7408 +       0x0005, 0x0136, 0x0146, 0x0156, 0x2001, 0xc749, 0x209c, 0x20a1,
7409 +       0x0014, 0x7803, 0x0026, 0x2001, 0xc74a, 0x20ac, 0x53a6, 0x2099,
7410 +       0xc74b, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
7411 +       0x0126, 0x2091, 0x8000, 0x7803, 0x0001, 0x7007, 0x0004, 0x7000,
7412 +       0xc08c, 0x7002, 0x700b, 0xc746, 0x012e, 0x015e, 0x014e, 0x013e,
7413 +       0x0005, 0x0016, 0x00e6, 0x2071, 0xc959, 0x00f6, 0x2079, 0x0010,
7414 +       0x7904, 0x7803, 0x0002, 0xd1fc, 0x0120, 0xa18c, 0x0700, 0x7004,
7415 +       0x0023, 0x00fe, 0x00ee, 0x001e, 0x0005, 0x1676, 0x1745, 0x1773,
7416 +       0x179d, 0x17cd, 0x2404, 0x1744, 0x0cf8, 0xa18c, 0x0700, 0x1528,
7417 +       0x0136, 0x0146, 0x0156, 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803,
7418 +       0x0040, 0x7010, 0x20a8, 0x53a5, 0x3400, 0x7016, 0x015e, 0x014e,
7419 +       0x013e, 0x700c, 0xa005, 0x0570, 0x7830, 0x7832, 0x7834, 0x7836,
7420 +       0x080c, 0x16ab, 0x0005, 0x7008, 0xa080, 0x0002, 0x2003, 0x0100,
7421 +       0x7007, 0x0000, 0x080c, 0x1676, 0x0005, 0x7008, 0xa080, 0x0002,
7422 +       0x2003, 0x0200, 0x0ca8, 0xa18c, 0x0700, 0x1150, 0x700c, 0xa005,
7423 +       0x0188, 0x7830, 0x7832, 0x7834, 0x7836, 0x080c, 0x16c0, 0x0005,
7424 +       0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x7007, 0x0000, 0x080c,
7425 +       0x1676, 0x0005, 0x00d6, 0x7008, 0x2068, 0x7830, 0x6826, 0x7834,
7426 +       0x682a, 0x7838, 0x682e, 0x783c, 0x6832, 0x680b, 0x0100, 0x00de,
7427 +       0x7007, 0x0000, 0x080c, 0x1676, 0x0005, 0xa18c, 0x0700, 0x1540,
7428 +       0x0136, 0x0146, 0x0156, 0x2001, 0xc718, 0x2004, 0xa080, 0x000d,
7429 +       0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020, 0x53a5,
7430 +       0x2001, 0xc71a, 0x2004, 0xd0bc, 0x0148, 0x2001, 0xc723, 0x2004,
7431 +       0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5, 0x015e, 0x014e,
7432 +       0x013e, 0x7007, 0x0000, 0x080c, 0x62c2, 0x080c, 0x1676, 0x0005,
7433 +       0x2011, 0x8003, 0x080c, 0x407d, 0x0cf8, 0xa18c, 0x0700, 0x1148,
7434 +       0x2001, 0xc748, 0x2003, 0x0100, 0x7007, 0x0000, 0x080c, 0x1676,
7435 +       0x0005, 0x2011, 0x8004, 0x080c, 0x407d, 0x0cf8, 0x0126, 0x2091,
7436 +       0x2200, 0x2079, 0x0030, 0x2071, 0xc96a, 0x7003, 0x0000, 0x700f,
7437 +       0xc977, 0x7013, 0xc977, 0x780f, 0x00f6, 0x7803, 0x0004, 0x012e,
7438 +       0x0005, 0x6934, 0xa184, 0x0007, 0x0002, 0x17fd, 0x183e, 0x17fd,
7439 +       0x17fd, 0x1801, 0x1826, 0x180d, 0x1804, 0xa085, 0x0001, 0x0804,
7440 +       0x1858, 0x080c, 0x7684, 0x05d0, 0x684c, 0xd0bc, 0x0db0, 0x6860,
7441 +       0x682e, 0x685c, 0x682a, 0x6858, 0x04c8, 0xa18c, 0x00ff, 0xa186,
7442 +       0x001e, 0x1d58, 0x684c, 0xd0bc, 0x0d40, 0x6860, 0x682e, 0x685c,
7443 +       0x682a, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
7444 +       0xa080, 0x23c7, 0x2005, 0x6832, 0x6858, 0x0440, 0xa18c, 0x00ff,
7445 +       0xa186, 0x0015, 0x1990, 0x684c, 0xd0ac, 0x0978, 0x6804, 0x681a,
7446 +       0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x23c7, 0x2005,
7447 +       0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0080, 0x684c, 0xd0ac,
7448 +       0x0904, 0x17fd, 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c, 0x000f,
7449 +       0xa188, 0x23c7, 0x210d, 0x6932, 0x2d08, 0x691a, 0x6826, 0x684c,
7450 +       0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912, 0x6980, 0x6916,
7451 +       0x0005, 0x684c, 0xd0ac, 0x090c, 0x1519, 0x6833, 0x23c4, 0x2d08,
7452 +       0x691a, 0x6858, 0x8001, 0x6826, 0x684c, 0xc0dd, 0x684e, 0xa006,
7453 +       0x680a, 0x682e, 0x682a, 0x697c, 0x6912, 0x6980, 0x6916, 0x0005,
7454 +       0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x82ff,
7455 +       0x01e8, 0xa280, 0x0004, 0x00d6, 0x206c, 0x684c, 0xd0dc, 0x1190,
7456 +       0xa280, 0x0007, 0x2004, 0xa086, 0x000a, 0x1110, 0x0891, 0x0010,
7457 +       0x080c, 0x17f1, 0x0138, 0x00de, 0xa280, 0x0000, 0x2003, 0x0002,
7458 +       0xa016, 0x0020, 0x6808, 0x8000, 0x680a, 0x00de, 0x0126, 0x0046,
7459 +       0x0036, 0x0026, 0x2091, 0x2200, 0x002e, 0x003e, 0x004e, 0x7000,
7460 +       0xa005, 0x0178, 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a,
7461 +       0x8108, 0xa182, 0xc992, 0x0210, 0x2009, 0xc977, 0x710e, 0x012e,
7462 +       0x0005, 0x7206, 0x2001, 0x18af, 0x0006, 0x2260, 0x0804, 0x19d3,
7463 +       0x0126, 0x0026, 0x0036, 0x00c6, 0x0006, 0x2091, 0x2200, 0x000e,
7464 +       0x004e, 0x003e, 0x002e, 0x00d6, 0x00c6, 0x2460, 0x6110, 0x2168,
7465 +       0x6a62, 0x6b5e, 0xa005, 0x0904, 0x1910, 0x6808, 0xa005, 0x0904,
7466 +       0x1947, 0x7000, 0xa005, 0x1108, 0x0488, 0x700c, 0x7110, 0xa106,
7467 +       0x1904, 0x194f, 0x7004, 0xa406, 0x1548, 0x2001, 0x0005, 0x2004,
7468 +       0xd08c, 0x0168, 0x0046, 0x080c, 0x1b83, 0x004e, 0x2460, 0x6010,
7469 +       0xa080, 0x0002, 0x2004, 0xa005, 0x0904, 0x1947, 0x0c10, 0x2001,
7470 +       0x0207, 0x2004, 0xd09c, 0x1d48, 0x7804, 0xa084, 0x6000, 0x0120,
7471 +       0xa086, 0x6000, 0x0108, 0x0c08, 0x7818, 0x6812, 0x781c, 0x6816,
7472 +       0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6100, 0xa18e,
7473 +       0x0004, 0x1904, 0x194f, 0x2009, 0x0048, 0x080c, 0x9613, 0x04f8,
7474 +       0x6808, 0xa005, 0x05a0, 0x7000, 0xa005, 0x0588, 0x700c, 0x7110,
7475 +       0xa106, 0x1118, 0x7004, 0xa406, 0x1550, 0x2001, 0x0005, 0x2004,
7476 +       0xd08c, 0x0160, 0x0046, 0x080c, 0x1b83, 0x004e, 0x2460, 0x6010,
7477 +       0xa080, 0x0002, 0x2004, 0xa005, 0x01d0, 0x0c28, 0x2001, 0x0207,
7478 +       0x2004, 0xd09c, 0x1d50, 0x2001, 0x0005, 0x2004, 0xd08c, 0x1d50,
7479 +       0x7804, 0xa084, 0x6000, 0x0118, 0xa086, 0x6000, 0x19f0, 0x7818,
7480 +       0x6812, 0x781c, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x6100,
7481 +       0xa18e, 0x0004, 0x1120, 0x2009, 0x0048, 0x080c, 0x9613, 0x00ce,
7482 +       0x00de, 0x012e, 0x0005, 0x00f6, 0x00e6, 0x0026, 0x0036, 0x0046,
7483 +       0x0056, 0x2071, 0xc96a, 0x7000, 0xa086, 0x0000, 0x0904, 0x19b9,
7484 +       0x7004, 0xac06, 0x1904, 0x19ab, 0x2079, 0x0030, 0x7000, 0xa086,
7485 +       0x0003, 0x0904, 0x19ab, 0x7804, 0xd0fc, 0x15c8, 0x20e1, 0x6000,
7486 +       0x2011, 0x0032, 0x2001, 0x0208, 0x200c, 0x2001, 0x0209, 0x2004,
7487 +       0xa106, 0x1d88, 0x8211, 0x1db0, 0x7804, 0xd0fc, 0x1540, 0x080c,
7488 +       0x1f2d, 0x0026, 0x0056, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x1de8,
7489 +       0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007, 0x0000,
7490 +       0x005e, 0x002e, 0x2001, 0x015d, 0x2003, 0x0000, 0x080c, 0x5f22,
7491 +       0x1138, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0058,
7492 +       0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x0020, 0x080c,
7493 +       0x1b83, 0x0804, 0x195b, 0x0156, 0x20a9, 0x0009, 0x2009, 0xc977,
7494 +       0x2104, 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, 0x1f04, 0x19b0,
7495 +       0x015e, 0x005e, 0x004e, 0x003e, 0x002e, 0x00ee, 0x00fe, 0x0005,
7496 +       0x700c, 0x7110, 0xa106, 0x0904, 0x1a5c, 0x2104, 0x7006, 0x2060,
7497 +       0x8108, 0x211c, 0x8108, 0x2124, 0x8108, 0xa182, 0xc992, 0x0210,
7498 +       0x2009, 0xc977, 0x7112, 0x8cff, 0x05e8, 0x6010, 0x2068, 0x2d58,
7499 +       0x080c, 0x7824, 0x6828, 0xa406, 0x15e0, 0x682c, 0xa306, 0x15c8,
7500 +       0x7004, 0x2060, 0x6020, 0xc0d4, 0x6022, 0x684c, 0xd0f4, 0x0128,
7501 +       0x6817, 0xffff, 0x6813, 0xffff, 0x0428, 0x6850, 0xd0f4, 0x1130,
7502 +       0x7803, 0x0004, 0x6810, 0x781a, 0x6814, 0x781e, 0x6824, 0x2050,
7503 +       0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x080c,
7504 +       0x7684, 0x1128, 0x2009, 0x0011, 0x080c, 0x1a5f, 0x0048, 0x2009,
7505 +       0x0011, 0x080c, 0x1a5f, 0x0120, 0x2009, 0x0001, 0x080c, 0x1a5f,
7506 +       0x2d58, 0x0005, 0x7803, 0x0004, 0x080c, 0x1ea2, 0x0904, 0x19c0,
7507 +       0x0cc0, 0x080c, 0x7684, 0x1128, 0x080c, 0x1953, 0x080c, 0x761a,
7508 +       0x0c88, 0x6020, 0xd0f4, 0x11e0, 0xd0d4, 0x01b8, 0x6038, 0xa402,
7509 +       0x6034, 0xa303, 0x0108, 0x1288, 0x643a, 0x6336, 0x6c2a, 0x6b2e,
7510 +       0x0046, 0x0036, 0x2400, 0x6c7c, 0xa402, 0x6812, 0x2300, 0x6b80,
7511 +       0xa303, 0x6816, 0x003e, 0x004e, 0x0018, 0x080c, 0xafd1, 0x0990,
7512 +       0x601c, 0xa08e, 0x0008, 0x0904, 0x19e0, 0xa08e, 0x000a, 0x0904,
7513 +       0x19e0, 0x2001, 0xc674, 0x2004, 0xd0b4, 0x1140, 0x6018, 0x2004,
7514 +       0xd0bc, 0x1120, 0x6817, 0x7fff, 0x6813, 0xffff, 0x080c, 0x241b,
7515 +       0x1904, 0x1a12, 0x0804, 0x19e0, 0x7003, 0x0000, 0x0005, 0x8aff,
7516 +       0x0904, 0x1b5d, 0xa03e, 0x2730, 0xc9fc, 0x6850, 0xd0fc, 0x11b8,
7517 +       0xd0f4, 0x1538, 0x00d6, 0x2805, 0xac68, 0x2900, 0x0002, 0x1acb,
7518 +       0x1a98, 0x1a98, 0x1acb, 0x1ace, 0x1ac3, 0x1acb, 0x1a98, 0x1acb,
7519 +       0x1aa9, 0x1aa9, 0x1acb, 0x1ace, 0x1acb, 0x1abb, 0x1aa9, 0x7803,
7520 +       0x0004, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0x00d6,
7521 +       0xd99c, 0x0904, 0x1b1e, 0x2805, 0xac68, 0x6f08, 0x6e0c, 0x0804,
7522 +       0x1b1f, 0xc0f4, 0x6852, 0x6b6c, 0x6a70, 0x00d6, 0x0804, 0x1b2c,
7523 +       0x2d10, 0x00de, 0x00d6, 0x6834, 0x2268, 0xa084, 0x00ff, 0xa096,
7524 +       0x0024, 0x0904, 0x1afe, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0804,
7525 +       0x1b1e, 0x2d10, 0x00de, 0x00d6, 0x6834, 0x2268, 0xa084, 0x00ff,
7526 +       0xa096, 0x002c, 0x0540, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08,
7527 +       0x6e0c, 0x0804, 0x1b1f, 0x00de, 0x00d6, 0x6834, 0xa084, 0x00ff,
7528 +       0xa086, 0x001e, 0x1140, 0x00de, 0x080c, 0x2389, 0x1904, 0x1a5f,
7529 +       0xa00e, 0x0804, 0x1b5d, 0x00de, 0x080c, 0x1519, 0x2d10, 0x00de,
7530 +       0x00d6, 0x6834, 0x2268, 0xa084, 0x00ff, 0xa096, 0x0024, 0x0530,
7531 +       0xa096, 0x002c, 0x1d80, 0x6b10, 0xa3a6, 0xffff, 0x1130, 0x2d10,
7532 +       0x00de, 0x00d6, 0x080c, 0x72fa, 0x2268, 0x2d10, 0x00de, 0x00d6,
7533 +       0x7314, 0x685c, 0xa086, 0x0001, 0x1120, 0x6868, 0xa005, 0x0108,
7534 +       0x2018, 0x2268, 0x2011, 0x0000, 0x6d00, 0x6c04, 0x6f08, 0x6e0c,
7535 +       0x780f, 0x00f0, 0xe000, 0xe000, 0xe000, 0x0408, 0x6b08, 0xa3a6,
7536 +       0xffff, 0x1130, 0x2d10, 0x00de, 0x00d6, 0x080c, 0x72fa, 0x2268,
7537 +       0x2d10, 0x00de, 0x00d6, 0x7314, 0x685c, 0xa086, 0x0001, 0x1120,
7538 +       0x6868, 0xa005, 0x0108, 0x2018, 0x2268, 0x2011, 0x0000, 0x6d00,
7539 +       0x6c04, 0x780f, 0x00f0, 0xe000, 0xe000, 0xe000, 0xc9fd, 0x7b22,
7540 +       0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x731a, 0x721e, 0x7522,
7541 +       0x7426, 0x772a, 0x762e, 0x7902, 0x7100, 0x8108, 0x7102, 0x00de,
7542 +       0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x8109, 0x2d08,
7543 +       0x1500, 0xd9fc, 0x0160, 0xc9fc, 0x080c, 0x2389, 0x01e8, 0x2805,
7544 +       0xac68, 0x6800, 0xa506, 0x11c0, 0x6804, 0xa406, 0x00a8, 0xc9fc,
7545 +       0x080c, 0x2389, 0x0188, 0x2805, 0xac68, 0x6800, 0xa506, 0x1160,
7546 +       0x6804, 0xa406, 0x1148, 0x6808, 0xa706, 0x1130, 0x680c, 0xa606,
7547 +       0x0018, 0xc9fc, 0x080c, 0x2389, 0x2168, 0x0005, 0x080c, 0x1519,
7548 +       0x080c, 0x2014, 0x7004, 0x2060, 0x00d6, 0x6010, 0x2068, 0x7003,
7549 +       0x0000, 0x080c, 0x1ec3, 0x080c, 0xac91, 0x0170, 0x6808, 0x8001,
7550 +       0x680a, 0x697c, 0x6912, 0x6980, 0x6916, 0x682b, 0xffff, 0x682f,
7551 +       0xffff, 0x6850, 0xc0bd, 0x6852, 0x00de, 0x080c, 0xa961, 0x0804,
7552 +       0x1dec, 0x080c, 0x1519, 0x0126, 0x2091, 0x2200, 0x0006, 0x0016,
7553 +       0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700,
7554 +       0x1978, 0xa184, 0x0003, 0xa086, 0x0003, 0x0d58, 0x7000, 0x0002,
7555 +       0x1ba0, 0x1ba6, 0x1cf5, 0x1dc1, 0x1ddb, 0x1ba0, 0x1ba0, 0x1ba0,
7556 +       0x7804, 0xd09c, 0x1904, 0x1dec, 0x080c, 0x1519, 0x8001, 0x7002,
7557 +       0xd1bc, 0x15c0, 0x080c, 0x7684, 0x1508, 0xd1dc, 0x1598, 0x6864,
7558 +       0x8000, 0x6866, 0xd19c, 0x0140, 0x7004, 0x2060, 0x2009, 0x0102,
7559 +       0x080c, 0x9613, 0x0804, 0x1cbc, 0x8aff, 0x0130, 0x2009, 0x0001,
7560 +       0x080c, 0x1a5f, 0x0804, 0x1dec, 0x7004, 0x2060, 0x080c, 0x24e0,
7561 +       0x080c, 0x761a, 0x7007, 0x0000, 0x0804, 0x1c45, 0xd19c, 0x1904,
7562 +       0x1c79, 0xd1dc, 0x1178, 0x8aff, 0x0904, 0x1c79, 0x2009, 0x0001,
7563 +       0x080c, 0x1a5f, 0x0904, 0x1dec, 0x2009, 0x0001, 0x080c, 0x1a5f,
7564 +       0x0804, 0x1dec, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x1904,
7565 +       0x1c4b, 0x080c, 0x7684, 0x1130, 0xd19c, 0x0120, 0x6864, 0x8000,
7566 +       0x6866, 0x0810, 0x0026, 0x0036, 0x7c20, 0x7d24, 0x7e30, 0x7f34,
7567 +       0x7818, 0x6812, 0x781c, 0x6816, 0x2001, 0x0201, 0x2004, 0xa005,
7568 +       0x0140, 0x7808, 0xd0ec, 0x1128, 0x7803, 0x0009, 0x7003, 0x0004,
7569 +       0x0028, 0x080c, 0x7684, 0x0110, 0x080c, 0x1df0, 0x6b28, 0x6a2c,
7570 +       0x2400, 0x686e, 0xa31a, 0x2500, 0x6872, 0xa213, 0x6b2a, 0x6a2e,
7571 +       0x00c6, 0x7004, 0x2060, 0x6020, 0xd0f4, 0x1110, 0x633a, 0x6236,
7572 +       0x00ce, 0x003e, 0x002e, 0x6e1e, 0x6f22, 0x2500, 0xa405, 0x0128,
7573 +       0x080c, 0x239f, 0x6850, 0xc0fd, 0x6852, 0x2a00, 0x6826, 0x2c00,
7574 +       0x681a, 0x2800, 0x6832, 0x6808, 0x8001, 0x680a, 0x1148, 0x684c,
7575 +       0xd0e4, 0x0130, 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, 0x9613,
7576 +       0x7000, 0xa086, 0x0004, 0x0904, 0x1dec, 0x7003, 0x0000, 0x080c,
7577 +       0x19c0, 0x0804, 0x1dec, 0x0056, 0x7d0c, 0xd5bc, 0x1110, 0x080c,
7578 +       0xc55e, 0x005e, 0x080c, 0x1ec3, 0x7004, 0x2060, 0x601c, 0xa086,
7579 +       0x0009, 0x1140, 0x2009, 0x0106, 0x080c, 0x9613, 0x7007, 0x0000,
7580 +       0x0804, 0x1dec, 0x00f6, 0x7004, 0x2078, 0x080c, 0x56c3, 0x0118,
7581 +       0x7820, 0xc0f5, 0x7822, 0x00fe, 0x682b, 0xffff, 0x682f, 0xffff,
7582 +       0x6808, 0x8001, 0x680a, 0x697c, 0x791a, 0x6980, 0x791e, 0x0804,
7583 +       0x1dec, 0x7004, 0x00c6, 0x2060, 0x6020, 0x00ce, 0xd0f4, 0x0120,
7584 +       0x6808, 0x8001, 0x680a, 0x04c0, 0x7818, 0x6812, 0x7a1c, 0x6a16,
7585 +       0xd19c, 0x0160, 0xa205, 0x0150, 0x7004, 0xa080, 0x0007, 0x2004,
7586 +       0xa084, 0xfffd, 0xa086, 0x0008, 0x1904, 0x1be2, 0x684c, 0xc0f5,
7587 +       0x684e, 0x7814, 0xa005, 0x1520, 0x7003, 0x0000, 0x6808, 0x8001,
7588 +       0x680a, 0x01a0, 0x7004, 0x2060, 0x601c, 0xa086, 0x000a, 0x11a0,
7589 +       0x0156, 0x20a9, 0x0009, 0x2009, 0xc977, 0x2104, 0xac06, 0x1108,
7590 +       0x200a, 0xa188, 0x0003, 0x1f04, 0x1cad, 0x015e, 0x7004, 0x2060,
7591 +       0x2009, 0x0048, 0x080c, 0x9613, 0x080c, 0x19c0, 0x0804, 0x1dec,
7592 +       0x7818, 0x6812, 0x781c, 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff,
7593 +       0xa192, 0x0841, 0x1a04, 0x1b60, 0xa188, 0x0007, 0x8114, 0x8214,
7594 +       0x8214, 0xa10a, 0x8104, 0x8004, 0x8004, 0xa20a, 0x810b, 0x810b,
7595 +       0x810b, 0x080c, 0x1f58, 0x7803, 0x0004, 0x780f, 0xffff, 0x7803,
7596 +       0x0001, 0x7804, 0xd0fc, 0x0de8, 0x7803, 0x0002, 0x7803, 0x0004,
7597 +       0x780f, 0x00f6, 0x7004, 0x7007, 0x0000, 0x2060, 0x2009, 0x0048,
7598 +       0x080c, 0x9613, 0x080c, 0x1fae, 0x0838, 0x8001, 0x7002, 0xd194,
7599 +       0x01b0, 0x7804, 0xd0fc, 0x1904, 0x1d91, 0xd09c, 0x0138, 0x7804,
7600 +       0xd0fc, 0x1904, 0x1d91, 0xd09c, 0x1904, 0x1d95, 0x8aff, 0x0904,
7601 +       0x1dec, 0x2009, 0x0001, 0x080c, 0x1a5f, 0x0804, 0x1dec, 0xa184,
7602 +       0x0888, 0x1148, 0x8aff, 0x0904, 0x1dec, 0x2009, 0x0001, 0x080c,
7603 +       0x1a5f, 0x0804, 0x1dec, 0x7818, 0x6812, 0x7a1c, 0x6a16, 0xa205,
7604 +       0x0904, 0x1c96, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x1904,
7605 +       0x1d73, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0029, 0x1118, 0xd19c,
7606 +       0x1904, 0x1c96, 0x0026, 0x0036, 0x7c20, 0x7d24, 0x7e30, 0x7f34,
7607 +       0x7818, 0x6812, 0x781c, 0x6816, 0x2001, 0x0201, 0x2004, 0xa005,
7608 +       0x0140, 0x7808, 0xd0ec, 0x1128, 0x7803, 0x0009, 0x7003, 0x0004,
7609 +       0x0020, 0x0016, 0x080c, 0x1df0, 0x001e, 0x6b28, 0x6a2c, 0x080c,
7610 +       0x239f, 0x00d6, 0x2805, 0xac68, 0x6034, 0xd09c, 0x1128, 0x6808,
7611 +       0xa31a, 0x680c, 0xa213, 0x0020, 0x6810, 0xa31a, 0x6814, 0xa213,
7612 +       0x00de, 0xd194, 0x0904, 0x1c10, 0x2a00, 0x6826, 0x2c00, 0x681a,
7613 +       0x2800, 0x6832, 0x6808, 0x8001, 0x680a, 0x6b2a, 0x6a2e, 0x003e,
7614 +       0x002e, 0x0804, 0x1cbc, 0x0056, 0x7d0c, 0x080c, 0xc55e, 0x005e,
7615 +       0x080c, 0x1ec3, 0x00f6, 0x7004, 0x2078, 0x080c, 0x56c3, 0x0118,
7616 +       0x7820, 0xc0f5, 0x7822, 0x00fe, 0x682b, 0xffff, 0x682f, 0xffff,
7617 +       0x6808, 0x8001, 0x680a, 0x697c, 0x791a, 0x6980, 0x791e, 0x0804,
7618 +       0x1dec, 0x7804, 0xd09c, 0x0904, 0x1b8b, 0x7c20, 0x7824, 0xa405,
7619 +       0x1904, 0x1b8b, 0x7818, 0x6812, 0x7c1c, 0x6c16, 0xa405, 0x1120,
7620 +       0x7803, 0x0002, 0x0804, 0x1c96, 0x7520, 0x7424, 0x7728, 0x762c,
7621 +       0x7018, 0xa528, 0x701c, 0xa421, 0xa7b9, 0x0000, 0xa6b1, 0x0000,
7622 +       0x7830, 0xa506, 0x1150, 0x7834, 0xa406, 0x1138, 0x7838, 0xa706,
7623 +       0x1120, 0x783c, 0xa606, 0x0904, 0x1b8b, 0x7803, 0x0002, 0x0804,
7624 +       0x1d22, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d, 0x0180,
7625 +       0x6808, 0x8001, 0x680a, 0x1160, 0x7004, 0x2060, 0x2009, 0x0048,
7626 +       0x601c, 0xa086, 0x0009, 0x1110, 0x080c, 0x1519, 0x080c, 0x9613,
7627 +       0x080c, 0x19c0, 0x0088, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004,
7628 +       0x2060, 0x6010, 0xa005, 0x0da0, 0x2068, 0x6808, 0x8000, 0x680a,
7629 +       0x6c28, 0x6b2c, 0x080c, 0x19d3, 0x001e, 0x000e, 0x012e, 0x0005,
7630 +       0x700c, 0x7110, 0xa106, 0x0904, 0x1e96, 0x7004, 0x0016, 0x210c,
7631 +       0xa106, 0x001e, 0x0904, 0x1e96, 0x00d6, 0x00c6, 0x216c, 0x2d00,
7632 +       0xa005, 0x0904, 0x1e94, 0x681c, 0xa086, 0x0008, 0x0904, 0x1e94,
7633 +       0x6820, 0xd0d4, 0x1904, 0x1e94, 0x6810, 0x2068, 0x080c, 0x7684,
7634 +       0x0904, 0x1e94, 0x6850, 0xd0fc, 0x05a8, 0x8108, 0x2104, 0x6b2c,
7635 +       0xa306, 0x1904, 0x1e94, 0x8108, 0x2104, 0x6a28, 0xa206, 0x1904,
7636 +       0x1e94, 0x6850, 0xc0fc, 0xc0f5, 0x6852, 0x686c, 0x7822, 0x701a,
7637 +       0x6870, 0x7826, 0x701e, 0x681c, 0x7832, 0x7022, 0x6820, 0x7836,
7638 +       0x7026, 0x6818, 0x2060, 0x6034, 0xd09c, 0x0168, 0x6830, 0x2005,
7639 +       0x00d6, 0xac68, 0x6808, 0x783a, 0x702a, 0x680c, 0x783e, 0x702e,
7640 +       0x00de, 0x0804, 0x1e8e, 0xa006, 0x783a, 0x783e, 0x702a, 0x702e,
7641 +       0x0804, 0x1e8e, 0x8108, 0x2104, 0xa005, 0x1904, 0x1e94, 0x6b2c,
7642 +       0xa306, 0x1904, 0x1e94, 0x8108, 0x2104, 0xa005, 0x15e8, 0x6a28,
7643 +       0xa206, 0x15d0, 0x6850, 0xc0f5, 0x6852, 0x6830, 0x2005, 0x6918,
7644 +       0xa160, 0xa180, 0x000d, 0x2004, 0xd09c, 0x11a0, 0x6008, 0x7822,
7645 +       0x701a, 0x686e, 0x600c, 0x7826, 0x701e, 0x6872, 0x6000, 0x7832,
7646 +       0x7022, 0x6004, 0x7836, 0x7026, 0xa006, 0x783a, 0x783e, 0x702a,
7647 +       0x702e, 0x00a0, 0x6010, 0x7822, 0x701a, 0x686e, 0x6014, 0x7826,
7648 +       0x701e, 0x6872, 0x6000, 0x7832, 0x7022, 0x6004, 0x7836, 0x7026,
7649 +       0x6008, 0x783a, 0x702a, 0x600c, 0x783e, 0x702e, 0x6810, 0x781a,
7650 +       0x6814, 0x781e, 0x7803, 0x0011, 0x00ce, 0x00de, 0x0005, 0x2011,
7651 +       0x0201, 0x2009, 0x003c, 0x2204, 0xa005, 0x1118, 0x8109, 0x1dd8,
7652 +       0x0005, 0x0005, 0x0ca1, 0x0118, 0x780c, 0xd0a4, 0x0120, 0x00d9,
7653 +       0xa085, 0x0001, 0x0010, 0x080c, 0x1fae, 0x0005, 0x0126, 0x2091,
7654 +       0x2200, 0x7000, 0xa086, 0x0003, 0x1160, 0x700c, 0x7110, 0xa106,
7655 +       0x0140, 0x080c, 0x2b06, 0x20e1, 0x9028, 0x700f, 0xc977, 0x7013,
7656 +       0xc977, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5f22, 0x11b8, 0x2001,
7657 +       0x0160, 0x2003, 0x0000, 0x2001, 0x0138, 0x2003, 0x0000, 0x2011,
7658 +       0x00c8, 0xe000, 0xe000, 0x8211, 0x1de0, 0x0481, 0x0066, 0x2031,
7659 +       0x0000, 0x080c, 0x5fa4, 0x006e, 0x00ce, 0x0005, 0x080c, 0x1f2d,
7660 +       0x080c, 0x2b06, 0x20e1, 0x9028, 0x700c, 0x7110, 0xa106, 0x0190,
7661 +       0x2104, 0xa005, 0x0130, 0x2060, 0x6010, 0x2060, 0x6008, 0x8001,
7662 +       0x600a, 0xa188, 0x0003, 0xa182, 0xc992, 0x0210, 0x2009, 0xc977,
7663 +       0x7112, 0x0c50, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, 0x0160,
7664 +       0x2502, 0x2001, 0x0138, 0x2202, 0x00ce, 0x0005, 0x080c, 0x2b06,
7665 +       0x20e1, 0x9028, 0x2001, 0x015d, 0x2003, 0x0000, 0x00e6, 0x00c6,
7666 +       0x0016, 0x2071, 0xc96a, 0x700c, 0x7110, 0xa106, 0x0190, 0x2104,
7667 +       0xa005, 0x0130, 0x2060, 0x6010, 0x2060, 0x6008, 0x8001, 0x600a,
7668 +       0xa188, 0x0003, 0xa182, 0xc992, 0x0210, 0x2009, 0xc977, 0x7112,
7669 +       0x0c50, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x2001, 0x0138, 0x2014,
7670 +       0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, 0x0000, 0x080c,
7671 +       0x5f22, 0x1148, 0x2021, 0x0002, 0x1d04, 0x1f3c, 0x2091, 0x6000,
7672 +       0x8421, 0x1dd0, 0x0005, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c,
7673 +       0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, 0x1138,
7674 +       0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, 0x1d70, 0x0005,
7675 +       0x00e6, 0x2071, 0x0200, 0x7808, 0xa084, 0xf000, 0xa10d, 0x0869,
7676 +       0x2001, 0x0105, 0x2004, 0xa084, 0x0003, 0x1130, 0x2001, 0xc992,
7677 +       0x2004, 0xa086, 0x0000, 0x0548, 0xa026, 0x2019, 0xf000, 0x8319,
7678 +       0x1148, 0x2001, 0x012b, 0x2003, 0x95f5, 0x2001, 0x0129, 0x2003,
7679 +       0x95f5, 0x00d8, 0x2001, 0x0105, 0x2004, 0xa084, 0x0003, 0x1130,
7680 +       0x2001, 0xc992, 0x2004, 0xa086, 0x0000, 0x0178, 0x2001, 0x0132,
7681 +       0x2004, 0xa436, 0x0110, 0x2020, 0x0c00, 0x2001, 0x0021, 0x2004,
7682 +       0xd0fc, 0x09e8, 0x080c, 0x222c, 0x08c0, 0x20e1, 0x7000, 0x7324,
7683 +       0x7420, 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e,
7684 +       0x702f, 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0160,
7685 +       0x2502, 0x2001, 0x0138, 0x2202, 0x00ee, 0x0005, 0x0026, 0x2001,
7686 +       0x015d, 0x2003, 0x0000, 0x7908, 0xa18c, 0x0fff, 0xa182, 0x0ffd,
7687 +       0x0210, 0x2009, 0x0000, 0xa190, 0x0007, 0xa294, 0x1ff8, 0x8214,
7688 +       0x8214, 0x8214, 0x2001, 0x020a, 0x82ff, 0x0140, 0x20e1, 0x6000,
7689 +       0x200c, 0x200c, 0x200c, 0x200c, 0x8211, 0x1dd0, 0x20e1, 0x7000,
7690 +       0x200c, 0x200c, 0x7003, 0x0000, 0x20e1, 0x6000, 0x2001, 0x0208,
7691 +       0x200c, 0x2001, 0x0209, 0x2004, 0xa106, 0x0158, 0x080c, 0x1e97,
7692 +       0x0130, 0x7908, 0xd1ec, 0x1128, 0x790c, 0xd1a4, 0x0960, 0x080c,
7693 +       0x1ec3, 0xa006, 0x002e, 0x0005, 0x00f6, 0x00e6, 0x0016, 0x0026,
7694 +       0x2071, 0xc96a, 0x2079, 0x0030, 0x2011, 0x0050, 0x7000, 0xa086,
7695 +       0x0000, 0x01a8, 0x8211, 0x0188, 0x2001, 0x0005, 0x2004, 0xd08c,
7696 +       0x0dc8, 0x7904, 0xa18c, 0x0780, 0x0016, 0x080c, 0x1b83, 0x001e,
7697 +       0x81ff, 0x1118, 0x2011, 0x0050, 0x0c48, 0xa085, 0x0001, 0x002e,
7698 +       0x001e, 0x00ee, 0x00fe, 0x0005, 0x7803, 0x0004, 0x2009, 0x0064,
7699 +       0x7804, 0xd0ac, 0x0904, 0x2060, 0x8109, 0x1dd0, 0x2009, 0x0100,
7700 +       0x210c, 0xa18a, 0x0003, 0x0a0c, 0x1519, 0x080c, 0x2333, 0x00e6,
7701 +       0x00f6, 0x2071, 0xc959, 0x2079, 0x0010, 0x7004, 0xa086, 0x0000,
7702 +       0x0538, 0x7800, 0x0006, 0x7820, 0x0006, 0x7830, 0x0006, 0x7834,
7703 +       0x0006, 0x7838, 0x0006, 0x783c, 0x0006, 0x7803, 0x0004, 0xe000,
7704 +       0xe000, 0x2079, 0x0030, 0x7804, 0xd0ac, 0x190c, 0x1519, 0x2079,
7705 +       0x0010, 0x000e, 0x783e, 0x000e, 0x783a, 0x000e, 0x7836, 0x000e,
7706 +       0x7832, 0x000e, 0x7822, 0x000e, 0x7802, 0x00fe, 0x00ee, 0x0030,
7707 +       0x00fe, 0x00ee, 0x7804, 0xd0ac, 0x190c, 0x1519, 0x080c, 0x7f6e,
7708 +       0x0005, 0x00e6, 0x2071, 0xc992, 0x7003, 0x0000, 0x00ee, 0x0005,
7709 +       0x00d6, 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x1904, 0x20ed,
7710 +       0x6934, 0xa184, 0x0007, 0x0002, 0x207c, 0x20d8, 0x207c, 0x207e,
7711 +       0x207c, 0x20bf, 0x209e, 0x208d, 0x080c, 0x1519, 0x2100, 0xa084,
7712 +       0x00ff, 0xa086, 0x0013, 0x0904, 0x20d8, 0x2100, 0xa084, 0x00ff,
7713 +       0xa086, 0x001b, 0x0904, 0x20d8, 0x0c78, 0x684c, 0xd0b4, 0x0904,
7714 +       0x21e9, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c,
7715 +       0x680a, 0x6880, 0x680e, 0x6958, 0x0804, 0x20e0, 0x6834, 0xa084,
7716 +       0x00ff, 0xa086, 0x001e, 0x19c0, 0x684c, 0xd0b4, 0x0904, 0x21e9,
7717 +       0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c, 0x680a,
7718 +       0x6880, 0x680e, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084,
7719 +       0x000f, 0xa080, 0x23c7, 0x2005, 0x6832, 0x6958, 0x0450, 0xa18c,
7720 +       0x00ff, 0xa186, 0x0015, 0x1548, 0x684c, 0xd0b4, 0x0904, 0x21e9,
7721 +       0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080,
7722 +       0x23c7, 0x2005, 0x6832, 0x6958, 0xa006, 0x682e, 0x682a, 0x0088,
7723 +       0x684c, 0xd0b4, 0x0904, 0x1b5e, 0x6958, 0xa006, 0x682e, 0x682a,
7724 +       0x2d00, 0x681a, 0x6834, 0xa084, 0x000f, 0xa080, 0x23c7, 0x2005,
7725 +       0x6832, 0x6926, 0x684c, 0xc0dd, 0x684e, 0x00de, 0x0005, 0x00f6,
7726 +       0x2079, 0x0020, 0x7804, 0xd0fc, 0x190c, 0x222c, 0x00e6, 0x00d6,
7727 +       0x2071, 0xc992, 0x7000, 0xa005, 0x1904, 0x2155, 0x00c6, 0x7206,
7728 +       0xa280, 0x0004, 0x205c, 0x7004, 0x2068, 0x7803, 0x0004, 0x6818,
7729 +       0x00d6, 0x2068, 0x686c, 0x7812, 0x6890, 0x00f6, 0x20e1, 0x9040,
7730 +       0x2079, 0x0200, 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x00fe,
7731 +       0x00de, 0x2b68, 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040,
7732 +       0x6034, 0xa0cc, 0x000f, 0x6908, 0x791a, 0x7116, 0x680c, 0x781e,
7733 +       0x701a, 0xa006, 0x700e, 0x7012, 0x7004, 0x692c, 0x6814, 0xa106,
7734 +       0x1120, 0x6928, 0x6810, 0xa106, 0x0158, 0x0036, 0x0046, 0x6b14,
7735 +       0x6c10, 0x080c, 0x241b, 0x004e, 0x003e, 0x0110, 0x00ce, 0x00a8,
7736 +       0x8aff, 0x1120, 0x00ce, 0xa085, 0x0001, 0x0078, 0x0126, 0x2091,
7737 +       0x8000, 0x2079, 0x0020, 0x2009, 0x0001, 0x0059, 0x0118, 0x2009,
7738 +       0x0001, 0x0039, 0x012e, 0x00ce, 0xa006, 0x00de, 0x00ee, 0x00fe,
7739 +       0x0005, 0x0076, 0x0066, 0x0056, 0x0046, 0x0036, 0x0026, 0x8aff,
7740 +       0x0904, 0x21e2, 0x700c, 0x7214, 0xa23a, 0x7010, 0x7218, 0xa203,
7741 +       0x0a04, 0x21e1, 0xa705, 0x0904, 0x21e1, 0xa03e, 0x2730, 0x6850,
7742 +       0xd0fc, 0x11a8, 0x00d6, 0x2805, 0xac68, 0x2900, 0x0002, 0x21b0,
7743 +       0x2195, 0x2195, 0x21b0, 0x21b0, 0x21a9, 0x21b0, 0x2195, 0x21b0,
7744 +       0x219a, 0x219a, 0x21b0, 0x21b0, 0x21b0, 0x21a1, 0x219a, 0xc0fc,
7745 +       0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0xd99c, 0x05c8, 0x00d6,
7746 +       0x2805, 0xac68, 0x6f08, 0x6e0c, 0x0490, 0x6b08, 0x6a0c, 0x6d00,
7747 +       0x6c04, 0x0468, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c,
7748 +       0x0430, 0x00de, 0x00d6, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e,
7749 +       0x1138, 0x00de, 0x080c, 0x2389, 0x1904, 0x215f, 0xa00e, 0x0490,
7750 +       0x2d10, 0x00de, 0x00d6, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0013,
7751 +       0x2268, 0x09d8, 0x2d10, 0x00de, 0x00d6, 0x6834, 0xa084, 0x00ff,
7752 +       0xa086, 0x001b, 0x2268, 0x09b0, 0x00de, 0x080c, 0x1519, 0x00de,
7753 +       0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000,
7754 +       0x8000, 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e,
7755 +       0x700c, 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x080c, 0x2389,
7756 +       0x0008, 0xa006, 0x002e, 0x003e, 0x004e, 0x005e, 0x006e, 0x007e,
7757 +       0x0005, 0x080c, 0x1519, 0x0026, 0x2001, 0x0105, 0x2003, 0x0010,
7758 +       0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060,
7759 +       0x00d6, 0x6010, 0x2068, 0x080c, 0xac91, 0x0118, 0x6850, 0xc0bd,
7760 +       0x6852, 0x601c, 0xa086, 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8,
7761 +       0x2001, 0x00fa, 0x8001, 0x1df0, 0x60c8, 0xa206, 0x1dc0, 0x60c4,
7762 +       0x686a, 0x60c8, 0x6866, 0x7004, 0x2060, 0x00de, 0x00c6, 0x080c,
7763 +       0xa961, 0x00ce, 0x2001, 0xc936, 0x2004, 0xac06, 0x1150, 0x20e1,
7764 +       0x9040, 0x080c, 0x90f6, 0x2011, 0x0000, 0x080c, 0x8f18, 0x080c,
7765 +       0x7f6e, 0x002e, 0x0804, 0x22e6, 0x0126, 0x2091, 0x2400, 0x0006,
7766 +       0x0016, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x2079, 0x0020, 0x2071,
7767 +       0xc992, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184,
7768 +       0x0700, 0x1904, 0x21eb, 0x7000, 0x0002, 0x22e6, 0x2249, 0x22b9,
7769 +       0x22e4, 0x8001, 0x7002, 0xd19c, 0x1170, 0x8aff, 0x05d0, 0x2009,
7770 +       0x0001, 0x080c, 0x2159, 0x0904, 0x22e6, 0x2009, 0x0001, 0x080c,
7771 +       0x2159, 0x0804, 0x22e6, 0x7803, 0x0004, 0xd194, 0x0148, 0x6850,
7772 +       0xc0fc, 0x6852, 0x8aff, 0x11d8, 0x684c, 0xc0f5, 0x684e, 0x00b8,
7773 +       0x0026, 0x0036, 0x6b28, 0x6a2c, 0x7820, 0x686e, 0xa31a, 0x7824,
7774 +       0x6872, 0xa213, 0x7830, 0x681e, 0x7834, 0x6822, 0x6b2a, 0x6a2e,
7775 +       0x003e, 0x002e, 0x080c, 0x239f, 0x6850, 0xc0fd, 0x6852, 0x2a00,
7776 +       0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x0804,
7777 +       0x22e6, 0x00f6, 0x0026, 0x781c, 0x0006, 0x7818, 0x0006, 0x2079,
7778 +       0x0100, 0x7a14, 0xa284, 0x0184, 0xa085, 0x0012, 0x7816, 0x0036,
7779 +       0x2019, 0x1000, 0x8319, 0x090c, 0x1519, 0x7820, 0xd0bc, 0x1dd0,
7780 +       0x003e, 0x79c8, 0x000e, 0xa102, 0x001e, 0x0006, 0x0016, 0x79c4,
7781 +       0x000e, 0xa103, 0x78c6, 0x000e, 0x78ca, 0xa284, 0x0184, 0xa085,
7782 +       0x0012, 0x7816, 0x002e, 0x00fe, 0x7803, 0x0008, 0x7003, 0x0000,
7783 +       0x0468, 0x8001, 0x7002, 0xd194, 0x0168, 0x7804, 0xd0fc, 0x1904,
7784 +       0x223c, 0xd19c, 0x11f8, 0x8aff, 0x0508, 0x2009, 0x0001, 0x080c,
7785 +       0x2159, 0x00e0, 0x0026, 0x0036, 0x6b28, 0x6a2c, 0x080c, 0x239f,
7786 +       0x00d6, 0x2805, 0xac68, 0x6034, 0xd09c, 0x1128, 0x6808, 0xa31a,
7787 +       0x680c, 0xa213, 0x0020, 0x6810, 0xa31a, 0x6814, 0xa213, 0x00de,
7788 +       0x0804, 0x226c, 0x0804, 0x2268, 0x080c, 0x1519, 0x00ce, 0x00de,
7789 +       0x00ee, 0x00fe, 0x001e, 0x000e, 0x012e, 0x0005, 0x00f6, 0x00e6,
7790 +       0x2071, 0xc992, 0x7000, 0xa086, 0x0000, 0x05d0, 0x2079, 0x0020,
7791 +       0x0016, 0x2009, 0x0207, 0x210c, 0xd194, 0x0198, 0x2009, 0x020c,
7792 +       0x210c, 0xa184, 0x0003, 0x0168, 0x080c, 0xc5a7, 0x2001, 0x0133,
7793 +       0x2004, 0xa005, 0x090c, 0x1519, 0x20e1, 0x9040, 0x2001, 0x020c,
7794 +       0x2102, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0xa106,
7795 +       0x1110, 0x20e1, 0x9040, 0x7804, 0xd0fc, 0x09d8, 0x080c, 0x222c,
7796 +       0x7000, 0xa086, 0x0000, 0x19a8, 0x001e, 0x7803, 0x0004, 0x7804,
7797 +       0xd0ac, 0x1de8, 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000,
7798 +       0x00ee, 0x00fe, 0x0005, 0x0026, 0x00c6, 0x00d6, 0x00e6, 0x00f6,
7799 +       0x2071, 0xc992, 0x2079, 0x0020, 0x7000, 0xa086, 0x0000, 0x0540,
7800 +       0x7004, 0x2060, 0x6010, 0x2068, 0x080c, 0xac91, 0x0158, 0x6850,
7801 +       0xc0b5, 0x6852, 0x680c, 0x7a1c, 0xa206, 0x1120, 0x6808, 0x7a18,
7802 +       0xa206, 0x01e0, 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040,
7803 +       0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x080c, 0xa961,
7804 +       0x20e1, 0x9040, 0x080c, 0x90f6, 0x2011, 0x0000, 0x080c, 0x8f18,
7805 +       0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, 0x0005, 0x6810, 0x6a14,
7806 +       0xa205, 0x1d00, 0x684c, 0xc0dc, 0x684e, 0x2c10, 0x080c, 0x2068,
7807 +       0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040, 0x7803, 0x0004,
7808 +       0x7003, 0x0000, 0x2069, 0xc927, 0x6833, 0x0000, 0x683f, 0x0000,
7809 +       0x08f8, 0x8840, 0x2805, 0xa005, 0x1170, 0x6004, 0xa005, 0x0168,
7810 +       0x681a, 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x23c7, 0x2045,
7811 +       0x88ff, 0x090c, 0x1519, 0x8a51, 0x0005, 0x2050, 0x0005, 0x8a50,
7812 +       0x8841, 0x2805, 0xa005, 0x1190, 0x2c00, 0xad06, 0x0120, 0x6000,
7813 +       0xa005, 0x1108, 0x2d00, 0x2060, 0x681a, 0x6034, 0xa084, 0x000f,
7814 +       0xa080, 0x23d7, 0x2045, 0x88ff, 0x090c, 0x1519, 0x0005, 0x0000,
7815 +       0x0011, 0x0015, 0x0019, 0x001d, 0x0021, 0x0025, 0x0029, 0x0000,
7816 +       0x000f, 0x0015, 0x001b, 0x0021, 0x0027, 0x0000, 0x0000, 0x0000,
7817 +       0x23bc, 0x23b8, 0x23bc, 0x23bc, 0x23c6, 0x0000, 0x23bc, 0x0000,
7818 +       0x23c3, 0x23c0, 0x23c3, 0x23c3, 0x0000, 0x23c6, 0x23c3, 0x0000,
7819 +       0x23be, 0x23be, 0x0000, 0x23be, 0x23c6, 0x0000, 0x23be, 0x0000,
7820 +       0x23c4, 0x23c4, 0x0000, 0x23c4, 0x0000, 0x23c6, 0x23c4, 0x0136,
7821 +       0x0146, 0x0156, 0x2099, 0xc765, 0x20a1, 0x0018, 0x20a9, 0x0008,
7822 +       0x53a3, 0x7803, 0x0020, 0x0126, 0x2091, 0x8000, 0x7803, 0x0041,
7823 +       0x7007, 0x0005, 0x7000, 0xc094, 0x7002, 0x700b, 0xc760, 0x012e,
7824 +       0x015e, 0x014e, 0x013e, 0x0005, 0x2099, 0x0014, 0x7803, 0x0040,
7825 +       0x2001, 0xc765, 0x2004, 0x2010, 0x080c, 0x72ad, 0x2009, 0xc699,
7826 +       0x2104, 0xa084, 0xfffc, 0x200a, 0x080c, 0x721f, 0x7007, 0x0000,
7827 +       0x080c, 0x1676, 0x0005, 0x00a6, 0x0096, 0x0086, 0x6b2e, 0x6c2a,
7828 +       0x6858, 0xa055, 0x0904, 0x24ac, 0x2d60, 0x6034, 0xa0cc, 0x000f,
7829 +       0xa9c0, 0x23c7, 0xa986, 0x0007, 0x0130, 0xa986, 0x000e, 0x0118,
7830 +       0xa986, 0x000f, 0x1120, 0x605c, 0xa422, 0x6060, 0xa31b, 0x2805,
7831 +       0xa045, 0x1140, 0x0310, 0x0804, 0x24ac, 0x6004, 0xa065, 0x0904,
7832 +       0x24ac, 0x0c18, 0x2805, 0xa005, 0x01a8, 0xac68, 0xd99c, 0x1128,
7833 +       0x6808, 0xa422, 0x680c, 0xa31b, 0x0020, 0x6810, 0xa422, 0x6814,
7834 +       0xa31b, 0x0620, 0x2300, 0xa405, 0x0150, 0x8a51, 0x0904, 0x24ac,
7835 +       0x8840, 0x0c40, 0x6004, 0xa065, 0x0904, 0x24ac, 0x0830, 0x8a51,
7836 +       0x0904, 0x24ac, 0x8840, 0x2805, 0xa005, 0x1158, 0x6004, 0xa065,
7837 +       0x0904, 0x24ac, 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x23c7, 0x2805,
7838 +       0x2040, 0x2b68, 0x6850, 0xc0fc, 0x6852, 0x0458, 0x8422, 0x8420,
7839 +       0x831a, 0xa399, 0x0000, 0x00d6, 0x2b68, 0x6c6e, 0x6b72, 0x00de,
7840 +       0xd99c, 0x1168, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b,
7841 +       0x0a0c, 0x1519, 0x6800, 0xa420, 0x6804, 0xa319, 0x0060, 0x6910,
7842 +       0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x0a0c, 0x1519, 0x6800,
7843 +       0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd,
7844 +       0x6852, 0x2c00, 0x681a, 0x2800, 0x6832, 0x2a00, 0x6826, 0x000e,
7845 +       0x000e, 0x000e, 0xa006, 0x0028, 0x008e, 0x009e, 0x00ae, 0xa085,
7846 +       0x0001, 0x0005, 0x2001, 0x0005, 0x2004, 0xa084, 0x0007, 0x0002,
7847 +       0x24c0, 0x24c1, 0x24c4, 0x24c7, 0x24cc, 0x24cf, 0x24d4, 0x24d9,
7848 +       0x0005, 0x080c, 0x222c, 0x0005, 0x080c, 0x1b83, 0x0005, 0x080c,
7849 +       0x1b83, 0x080c, 0x222c, 0x0005, 0x080c, 0x1729, 0x0005, 0x080c,
7850 +       0x222c, 0x080c, 0x1729, 0x0005, 0x080c, 0x1b83, 0x080c, 0x1729,
7851 +       0x0005, 0x080c, 0x1b83, 0x080c, 0x222c, 0x080c, 0x1729, 0x0005,
7852 +       0x0006, 0x0016, 0x0156, 0x20a9, 0x0009, 0x2009, 0xc977, 0x2104,
7853 +       0xac06, 0x1108, 0x200a, 0xa188, 0x0003, 0x1f04, 0x24e7, 0x015e,
7854 +       0x001e, 0x000e, 0x0005, 0x00e6, 0x00d6, 0x2071, 0xc96a, 0x700c,
7855 +       0x7110, 0xa106, 0x01b8, 0x2104, 0xa005, 0x0138, 0xa080, 0x0004,
7856 +       0x2004, 0x2068, 0x080c, 0x7684, 0x0158, 0xa188, 0x0003, 0xa182,
7857 +       0xc992, 0x0210, 0x2009, 0xc977, 0x700c, 0xa106, 0x1d60, 0x0010,
7858 +       0xa085, 0x0001, 0x00de, 0x00ee, 0x0005, 0x0126, 0x2091, 0x2600,
7859 +       0x2079, 0x0200, 0x2071, 0xcc80, 0x2069, 0xc600, 0x080c, 0x260b,
7860 +       0x080c, 0x25fb, 0x2009, 0x0004, 0x7912, 0x7817, 0x0004, 0x080c,
7861 +       0x29a2, 0x781b, 0x0002, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a9,
7862 +       0x0080, 0x782f, 0x0000, 0x1f04, 0x2531, 0x20e1, 0x9080, 0x783b,
7863 +       0x001f, 0x20e1, 0x8700, 0x012e, 0x0005, 0x0126, 0x2091, 0x2600,
7864 +       0x781c, 0xd0a4, 0x190c, 0x25f8, 0xa084, 0x0007, 0x0002, 0x2561,
7865 +       0x254f, 0x2552, 0x2555, 0x255a, 0x255c, 0x255e, 0x2560, 0x080c,
7866 +       0x68c9, 0x0078, 0x080c, 0x6916, 0x0060, 0x080c, 0x68c9, 0x080c,
7867 +       0x6916, 0x0038, 0x0041, 0x0028, 0x0031, 0x0018, 0x0021, 0x0008,
7868 +       0x0011, 0x012e, 0x0005, 0x0006, 0x0016, 0x0026, 0x080c, 0xc5a7,
7869 +       0x7930, 0xa184, 0x0003, 0x01b0, 0x2001, 0xc936, 0x2004, 0xa005,
7870 +       0x0170, 0x2001, 0x0133, 0x2004, 0xa005, 0x090c, 0x1519, 0x00c6,
7871 +       0x2001, 0xc936, 0x2064, 0x080c, 0xa961, 0x00ce, 0x04b8, 0x20e1,
7872 +       0x9040, 0x04a0, 0xa184, 0x0030, 0x01e0, 0x6a00, 0xa286, 0x0003,
7873 +       0x1108, 0x00a0, 0x080c, 0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003,
7874 +       0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c,
7875 +       0x5f66, 0x080c, 0x5e5a, 0x0010, 0x080c, 0x4e5b, 0x080c, 0x25fb,
7876 +       0x00a8, 0xa184, 0x00c0, 0x0168, 0x00e6, 0x0036, 0x0046, 0x0056,
7877 +       0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e, 0x003e, 0x00ee,
7878 +       0x0028, 0xa184, 0x0300, 0x0110, 0x20e1, 0x9020, 0x7932, 0x002e,
7879 +       0x001e, 0x000e, 0x0005, 0x0016, 0x00e6, 0x00f6, 0x2071, 0xc600,
7880 +       0x7128, 0x2001, 0xc8d8, 0x2102, 0x2001, 0xc8e0, 0x2102, 0xa182,
7881 +       0x0211, 0x1218, 0x2009, 0x0008, 0x0400, 0xa182, 0x0259, 0x1218,
7882 +       0x2009, 0x0007, 0x00d0, 0xa182, 0x02c1, 0x1218, 0x2009, 0x0006,
7883 +       0x00a0, 0xa182, 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, 0xa182,
7884 +       0x0421, 0x1218, 0x2009, 0x0004, 0x0040, 0xa182, 0x0581, 0x1218,
7885 +       0x2009, 0x0003, 0x0010, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912,
7886 +       0x7817, 0x0004, 0x080c, 0x29a2, 0x00fe, 0x00ee, 0x001e, 0x0005,
7887 +       0x7938, 0x080c, 0x1519, 0x00e6, 0x0026, 0x2071, 0x0200, 0x20e1,
7888 +       0x1000, 0x7220, 0x7028, 0x7020, 0xa206, 0x0de0, 0x20e1, 0x9010,
7889 +       0x002e, 0x00ee, 0x0005, 0x20e1, 0xa000, 0x7837, 0x0001, 0x782f,
7890 +       0x0000, 0x782f, 0x0000, 0x782f, 0x0000, 0x782f, 0x0000, 0x7837,
7891 +       0x0005, 0x20a9, 0x0210, 0x7830, 0xd0bc, 0x1110, 0x1f04, 0x261b,
7892 +       0x7837, 0x0001, 0x7837, 0x0000, 0xe000, 0xe000, 0x20e1, 0xa000,
7893 +       0x0005, 0x0126, 0x2091, 0x2800, 0x2061, 0x0100, 0x2071, 0xc600,
7894 +       0x6024, 0x6026, 0x6053, 0x0030, 0x080c, 0x29e1, 0x6050, 0xa084,
7895 +       0xfe7f, 0x6052, 0x2009, 0x00ef, 0x6132, 0x6136, 0x080c, 0x29f1,
7896 +       0x60e7, 0x0000, 0x61ea, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043,
7897 +       0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x0e9f, 0x601b,
7898 +       0x001e, 0x600f, 0x00ff, 0x2001, 0xc8d4, 0x2003, 0x00ff, 0x602b,
7899 +       0x002f, 0x012e, 0x0005, 0x2001, 0xc632, 0x2003, 0x0000, 0x2001,
7900 +       0xc631, 0x2003, 0x0001, 0x0005, 0x0126, 0x2091, 0x2800, 0x0006,
7901 +       0x0016, 0x0026, 0x6124, 0x0066, 0x2031, 0xc635, 0x2634, 0xa6b4,
7902 +       0x0028, 0x006e, 0x11c0, 0x6020, 0xd0bc, 0x01a8, 0xd1bc, 0x0198,
7903 +       0x783c, 0xa005, 0x0180, 0x00e6, 0x0006, 0x2070, 0x701c, 0xa086,
7904 +       0x0009, 0x000e, 0x00ee, 0x1138, 0x00e6, 0x783c, 0x2070, 0x7008,
7905 +       0xd0fc, 0x00ee, 0x1130, 0xa184, 0x1e2c, 0x1118, 0xa184, 0x0007,
7906 +       0x002a, 0xa195, 0x0004, 0xa284, 0x0007, 0x0002, 0x26b8, 0x269e,
7907 +       0x26a1, 0x26a4, 0x26a9, 0x26ab, 0x26af, 0x26b3, 0x080c, 0x7873,
7908 +       0x00b8, 0x080c, 0x794e, 0x00a0, 0x080c, 0x794e, 0x080c, 0x7873,
7909 +       0x0078, 0x0099, 0x0068, 0x080c, 0x7873, 0x0079, 0x0048, 0x080c,
7910 +       0x794e, 0x0059, 0x0028, 0x080c, 0x794e, 0x080c, 0x7873, 0x0029,
7911 +       0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x6124, 0x6028, 0xd09c,
7912 +       0x0118, 0xd19c, 0x1904, 0x2910, 0x080c, 0x5f22, 0x0578, 0x7000,
7913 +       0xa086, 0x0003, 0x0198, 0x6024, 0xa084, 0x1800, 0x0178, 0x080c,
7914 +       0x5f48, 0x0118, 0x080c, 0x5f34, 0x1148, 0x6027, 0x0020, 0x6043,
7915 +       0x0000, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x0458, 0x080c, 0x5f48,
7916 +       0x15d0, 0x6024, 0xa084, 0x1800, 0x1108, 0x04a8, 0x2001, 0xc8e5,
7917 +       0x2003, 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600,
7918 +       0x2003, 0x0001, 0x080c, 0x5e5a, 0x0804, 0x2910, 0xd1ac, 0x1518,
7919 +       0x6024, 0xd0dc, 0x1170, 0xd0e4, 0x1188, 0xd0d4, 0x11a0, 0xd0cc,
7920 +       0x0130, 0x708c, 0xa086, 0x0028, 0x1110, 0x080c, 0x60b1, 0x0804,
7921 +       0x2910, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x0048, 0x2001, 0xc8e6,
7922 +       0x2003, 0x0002, 0x0020, 0x080c, 0x6024, 0x0804, 0x2910, 0x080c,
7923 +       0x6156, 0x0804, 0x2910, 0x6220, 0xd1bc, 0x0568, 0xd2bc, 0x0558,
7924 +       0x783c, 0xa005, 0x0540, 0x00e6, 0x2070, 0x7008, 0xd0fc, 0x00ee,
7925 +       0x0510, 0x6028, 0xc0bc, 0x602a, 0x0026, 0x0036, 0x6288, 0x638c,
7926 +       0x608b, 0xbc91, 0x608f, 0xffff, 0x6043, 0x0001, 0xe000, 0xe000,
7927 +       0x6027, 0x0080, 0x6017, 0x0000, 0x6043, 0x0000, 0x628a, 0x638e,
7928 +       0x003e, 0x002e, 0x0016, 0x2001, 0xc696, 0x200c, 0xc184, 0x2102,
7929 +       0x001e, 0x0804, 0x2969, 0xd1ac, 0x0904, 0x284c, 0x0036, 0x6328,
7930 +       0xc3bc, 0x632a, 0x003e, 0x080c, 0x5f22, 0x11d8, 0x6027, 0x0020,
7931 +       0x0006, 0x0026, 0x0036, 0x080c, 0x5f3e, 0x1170, 0x2001, 0xc8e6,
7932 +       0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0x080c, 0x5e5a,
7933 +       0x003e, 0x002e, 0x000e, 0x0005, 0x003e, 0x002e, 0x000e, 0x080c,
7934 +       0x5ef9, 0x0016, 0x0046, 0x00c6, 0x644c, 0xa486, 0xf0f0, 0x1138,
7935 +       0x2061, 0x0100, 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74ce,
7936 +       0xa48c, 0xff00, 0x7034, 0xd084, 0x0178, 0xa186, 0xf800, 0x1160,
7937 +       0x703c, 0xd084, 0x1148, 0xc085, 0x703e, 0x0036, 0x2418, 0x2011,
7938 +       0x8016, 0x080c, 0x407d, 0x003e, 0xa196, 0xff00, 0x05b8, 0x7054,
7939 +       0xa084, 0x00ff, 0x810f, 0xa116, 0x0588, 0x7130, 0xd184, 0x1570,
7940 +       0x2011, 0xc653, 0x2214, 0xd2ec, 0x0138, 0xc18d, 0x7132, 0x2011,
7941 +       0xc653, 0x2214, 0xd2ac, 0x1510, 0x6240, 0xa294, 0x0010, 0x0130,
7942 +       0x6248, 0xa294, 0xff00, 0xa296, 0xff00, 0x01c0, 0x7030, 0xd08c,
7943 +       0x0904, 0x2819, 0x7034, 0xd08c, 0x1140, 0x2001, 0xc60c, 0x200c,
7944 +       0xd1ac, 0x1904, 0x2819, 0xc1ad, 0x2102, 0x0036, 0x73cc, 0x2011,
7945 +       0x8013, 0x080c, 0x407d, 0x003e, 0x0804, 0x2819, 0x7034, 0xd08c,
7946 +       0x1140, 0x2001, 0xc60c, 0x200c, 0xd1ac, 0x1904, 0x2819, 0xc1ad,
7947 +       0x2102, 0x0036, 0x73cc, 0x2011, 0x8013, 0x080c, 0x407d, 0x003e,
7948 +       0x7130, 0xc185, 0x7132, 0x2011, 0xc653, 0x220c, 0xd1a4, 0x01d0,
7949 +       0x0016, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x712e, 0x2019,
7950 +       0x000e, 0x080c, 0xc10d, 0xa484, 0x00ff, 0xa080, 0x2f6e, 0x200d,
7951 +       0xa18c, 0xff00, 0x810f, 0x8127, 0xa006, 0x2009, 0x000e, 0x080c,
7952 +       0xc190, 0x001e, 0x0016, 0x2009, 0x0000, 0x2019, 0x0004, 0x080c,
7953 +       0x2e19, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000,
7954 +       0x080c, 0x533d, 0x1110, 0x080c, 0x4f47, 0x8108, 0x1f04, 0x2810,
7955 +       0x015e, 0x00ce, 0x004e, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011,
7956 +       0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000,
7957 +       0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x001e, 0x2001, 0xc600,
7958 +       0x2014, 0xa296, 0x0004, 0x1128, 0xd19c, 0x11b0, 0x6228, 0xc29d,
7959 +       0x622a, 0x2003, 0x0001, 0x2001, 0xc623, 0x2003, 0x0000, 0x6027,
7960 +       0x0020, 0x080c, 0x5f48, 0x1140, 0x0016, 0x2009, 0x07d0, 0x2011,
7961 +       0x5e37, 0x080c, 0x7036, 0x001e, 0xd194, 0x0904, 0x2910, 0x0016,
7962 +       0x6220, 0xd2b4, 0x0904, 0x28b5, 0x080c, 0x7024, 0x080c, 0x8bf5,
7963 +       0x6027, 0x0004, 0x00f6, 0x2019, 0xc930, 0x2304, 0xa07d, 0x0570,
7964 +       0x7804, 0xa086, 0x0032, 0x1550, 0x00d6, 0x00c6, 0x00e6, 0x2069,
7965 +       0x0140, 0x618c, 0x6288, 0x7818, 0x608e, 0x7808, 0x608a, 0x6043,
7966 +       0x0002, 0x2001, 0x0003, 0x8001, 0x1df0, 0x6043, 0x0000, 0x6803,
7967 +       0x1000, 0x6803, 0x0000, 0x618e, 0x628a, 0x080c, 0x7db1, 0x080c,
7968 +       0x7e94, 0x7810, 0x2070, 0x7037, 0x0103, 0x2f60, 0x080c, 0x95e3,
7969 +       0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x0005, 0x00fe, 0x00d6,
7970 +       0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0120, 0x6803, 0x1000,
7971 +       0x6803, 0x0000, 0x00de, 0x00c6, 0x2061, 0xc927, 0x6028, 0xa09a,
7972 +       0x00c8, 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, 0x8be8, 0x0804,
7973 +       0x290f, 0x2019, 0xc930, 0x2304, 0xa065, 0x0120, 0x2009, 0x0027,
7974 +       0x080c, 0x9613, 0x00ce, 0x0804, 0x290f, 0xd2bc, 0x0904, 0x290f,
7975 +       0x080c, 0x7031, 0x6014, 0xa084, 0x0184, 0xa085, 0x0010, 0x6016,
7976 +       0x6027, 0x0004, 0x00d6, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000,
7977 +       0x0120, 0x6803, 0x1000, 0x6803, 0x0000, 0x00de, 0x00c6, 0x2061,
7978 +       0xc927, 0x6044, 0xa09a, 0x00c8, 0x1620, 0x8000, 0x6046, 0x603c,
7979 +       0x00ce, 0xa005, 0x05a0, 0x2009, 0x07d0, 0x080c, 0x7029, 0xa080,
7980 +       0x0007, 0x2004, 0xa086, 0x0006, 0x1138, 0x6114, 0xa18c, 0x0184,
7981 +       0xa18d, 0x0012, 0x6116, 0x0418, 0xa080, 0x0007, 0x2004, 0xa086,
7982 +       0x0009, 0x0d98, 0x6114, 0xa18c, 0x0184, 0xa18d, 0x0016, 0x6116,
7983 +       0x00b0, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x003e, 0x2019,
7984 +       0xc936, 0x2304, 0xa065, 0x0150, 0x2009, 0x004f, 0x601c, 0xa086,
7985 +       0x0009, 0x1110, 0x2009, 0x0105, 0x080c, 0x9613, 0x00ce, 0x001e,
7986 +       0xd19c, 0x0904, 0x2969, 0x7034, 0xd0ac, 0x1560, 0x0016, 0x0156,
7987 +       0x6027, 0x0008, 0x602f, 0x0020, 0x20a9, 0x0006, 0x1d04, 0x291e,
7988 +       0x2091, 0x6000, 0x1f04, 0x291e, 0x602f, 0x0000, 0x6150, 0xa185,
7989 +       0x1400, 0x6052, 0x20a9, 0x0366, 0x1d04, 0x292c, 0x2091, 0x6000,
7990 +       0x6020, 0xd09c, 0x1130, 0x015e, 0x6152, 0x001e, 0x6027, 0x0008,
7991 +       0x0480, 0x080c, 0x2ab1, 0x1f04, 0x292c, 0x015e, 0x6152, 0x001e,
7992 +       0x6027, 0x0008, 0x0016, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003,
7993 +       0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee,
7994 +       0x0036, 0x2019, 0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000,
7995 +       0x080c, 0xc586, 0x080c, 0xc5a1, 0xa085, 0x0001, 0x080c, 0x5f66,
7996 +       0x2001, 0xc600, 0x2003, 0x0004, 0x6027, 0x0008, 0x080c, 0x12e1,
7997 +       0x001e, 0xa18c, 0xffd0, 0x6126, 0x0005, 0x0006, 0x0016, 0x0026,
7998 +       0x00e6, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc600, 0x71c4,
7999 +       0x70c6, 0xa116, 0x0500, 0x81ff, 0x0128, 0x2011, 0x8011, 0x080c,
8000 +       0x407d, 0x00c8, 0x2011, 0x8012, 0x080c, 0x407d, 0x2001, 0xc672,
8001 +       0x2004, 0xd0fc, 0x1180, 0x0036, 0x00c6, 0x080c, 0x2a3c, 0x080c,
8002 +       0x8dca, 0x2061, 0x0100, 0x2019, 0x0028, 0x2009, 0x0000, 0x080c,
8003 +       0x2e19, 0x00ce, 0x003e, 0x012e, 0x00fe, 0x00ee, 0x002e, 0x001e,
8004 +       0x000e, 0x0005, 0x00c6, 0x00f6, 0x0006, 0x0026, 0x2061, 0x0100,
8005 +       0xa190, 0x29b5, 0x2205, 0x60f2, 0x2011, 0x29c2, 0x2205, 0x60ee,
8006 +       0x002e, 0x000e, 0x00fe, 0x00ce, 0x0005, 0x0840, 0x0840, 0x0840,
8007 +       0x0580, 0x0420, 0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8,
8008 +       0x01a8, 0x01a8, 0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0x2028,
8009 +       0xa18c, 0x00ff, 0x2130, 0xa094, 0xff00, 0x1110, 0x81ff, 0x0118,
8010 +       0x080c, 0x6be0, 0x0038, 0xa080, 0x2f6e, 0x200d, 0xa18c, 0xff00,
8011 +       0x810f, 0xa006, 0x0005, 0xa080, 0x2f6e, 0x200d, 0xa18c, 0x00ff,
8012 +       0x0005, 0x00d6, 0x2069, 0x0140, 0x2001, 0xc615, 0x2003, 0x00ef,
8013 +       0x20a9, 0x0010, 0xa006, 0x6852, 0x6856, 0x1f04, 0x29ec, 0x00de,
8014 +       0x0005, 0x0006, 0x00d6, 0x0026, 0x2069, 0x0140, 0x2001, 0xc615,
8015 +       0x2102, 0x8114, 0x8214, 0x8214, 0x8214, 0x20a9, 0x0010, 0x6853,
8016 +       0x0000, 0xa006, 0x82ff, 0x1128, 0xa184, 0x000f, 0xa080, 0xc5b5,
8017 +       0x2005, 0x6856, 0x8211, 0x1f04, 0x2a01, 0x002e, 0x00de, 0x000e,
8018 +       0x0005, 0x00c6, 0x2061, 0xc600, 0x6030, 0x0110, 0xc09d, 0x0008,
8019 +       0xc09c, 0x6032, 0x00ce, 0x0005, 0x0156, 0x00d6, 0x0026, 0x0016,
8020 +       0x0006, 0x2069, 0x0140, 0x6980, 0xa116, 0x0180, 0xa112, 0x1230,
8021 +       0x8212, 0x8210, 0x22a8, 0x2001, 0x0402, 0x0018, 0x22a8, 0x2001,
8022 +       0x0404, 0x680e, 0x1f04, 0x2a31, 0x680f, 0x0000, 0x000e, 0x001e,
8023 +       0x002e, 0x00de, 0x015e, 0x0005, 0x2001, 0xc653, 0x2004, 0xd0c4,
8024 +       0x0150, 0xd0a4, 0x0140, 0xa006, 0x0046, 0x2020, 0x2009, 0x002e,
8025 +       0x080c, 0xc190, 0x004e, 0x0005, 0x00f6, 0x0016, 0x0026, 0x2079,
8026 +       0x0140, 0x78c4, 0xd0dc, 0x0548, 0xa084, 0x0700, 0xa08e, 0x0300,
8027 +       0x1520, 0x2011, 0x0000, 0x2009, 0x0002, 0x2300, 0xa080, 0x0020,
8028 +       0x2018, 0x2300, 0x080c, 0x783f, 0x2011, 0x0030, 0x2200, 0x8007,
8029 +       0xa085, 0x004c, 0x78c2, 0x2009, 0x0204, 0x210c, 0x2200, 0xa100,
8030 +       0x2009, 0x0138, 0x200a, 0x080c, 0x5f22, 0x1118, 0x2009, 0xc8d6,
8031 +       0x200a, 0x002e, 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8,
8032 +       0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170,
8033 +       0x200c, 0x8000, 0x2014, 0xa184, 0x0003, 0x0110, 0x0804, 0x1b81,
8034 +       0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x0006, 0x2001, 0x0100,
8035 +       0x2004, 0xa082, 0x0005, 0x000e, 0x0268, 0x2001, 0x0170, 0x200c,
8036 +       0xa18c, 0x00ff, 0xa18e, 0x004c, 0x1128, 0x200c, 0xa18c, 0xff00,
8037 +       0x810f, 0x0010, 0x2009, 0x0000, 0x2001, 0x0204, 0x2004, 0xa108,
8038 +       0x0005, 0x0006, 0x0156, 0x00f6, 0x2079, 0x0100, 0x20a9, 0x000a,
8039 +       0x7854, 0xd08c, 0x1110, 0x1f04, 0x2ab8, 0x00fe, 0x015e, 0x000e,
8040 +       0x0005, 0x0016, 0x00c6, 0x0006, 0x2061, 0x0100, 0x6030, 0x0006,
8041 +       0x6048, 0x0006, 0x60e4, 0x0006, 0x60e8, 0x0006, 0x6050, 0x0006,
8042 +       0x60f0, 0x0006, 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, 0x0006,
8043 +       0x6028, 0x0006, 0x60e0, 0x0006, 0x602f, 0x0100, 0x602f, 0x0000,
8044 +       0xe000, 0xe000, 0xe000, 0xe000, 0x602f, 0x0040, 0x602f, 0x0000,
8045 +       0x000e, 0x60e2, 0x000e, 0x602a, 0x000e, 0x6006, 0x000e, 0x600e,
8046 +       0x000e, 0x60ee, 0x000e, 0x60f2, 0x000e, 0x6052, 0x000e, 0x60ea,
8047 +       0x000e, 0x60e6, 0x000e, 0x604a, 0x000e, 0x6032, 0x6036, 0x2008,
8048 +       0x080c, 0x29f1, 0x000e, 0x00ce, 0x001e, 0x0005, 0x2009, 0x0171,
8049 +       0x2104, 0xd0dc, 0x0140, 0x2009, 0x0170, 0x2104, 0x200b, 0x0080,
8050 +       0xe000, 0xe000, 0x200a, 0x0005, 0x2ba4, 0x2ba8, 0x2bac, 0x2bb2,
8051 +       0x2bb8, 0x2bbe, 0x2bc4, 0x2bcc, 0x2bd4, 0x2bda, 0x2be0, 0x2be8,
8052 +       0x2bf0, 0x2bf8, 0x2c00, 0x2c0a, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8053 +       0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8054 +       0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8055 +       0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8056 +       0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8057 +       0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8058 +       0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c16, 0x2c16, 0x2c1c, 0x2c1c,
8059 +       0x2c23, 0x2c23, 0x2c2a, 0x2c2a, 0x2c33, 0x2c33, 0x2c3a, 0x2c3a,
8060 +       0x2c43, 0x2c43, 0x2c4c, 0x2c4c, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8061 +       0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8062 +       0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8063 +       0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8064 +       0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8065 +       0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8066 +       0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8067 +       0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8068 +       0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x0106, 0x0006, 0x0804, 0x2c5f,
8069 +       0x0106, 0x0006, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664,
8070 +       0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664, 0x0804, 0x2c5f,
8071 +       0x0106, 0x0006, 0x080c, 0x24b2, 0x0804, 0x2c5f, 0x0106, 0x0006,
8072 +       0x080c, 0x24b2, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664,
8073 +       0x080c, 0x24b2, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664,
8074 +       0x080c, 0x24b2, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x253d,
8075 +       0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x253d, 0x0804, 0x2c5f,
8076 +       0x0106, 0x0006, 0x080c, 0x2664, 0x080c, 0x253d, 0x0804, 0x2c5f,
8077 +       0x0106, 0x0006, 0x080c, 0x2664, 0x080c, 0x253d, 0x0804, 0x2c5f,
8078 +       0x0106, 0x0006, 0x080c, 0x24b2, 0x080c, 0x253d, 0x0804, 0x2c5f,
8079 +       0x0106, 0x0006, 0x080c, 0x24b2, 0x080c, 0x253d, 0x0804, 0x2c5f,
8080 +       0x0106, 0x0006, 0x080c, 0x2664, 0x080c, 0x24b2, 0x080c, 0x253d,
8081 +       0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664, 0x080c, 0x24b2,
8082 +       0x080c, 0x253d, 0x0804, 0x2c5f, 0xe000, 0x0cf0, 0x0106, 0x0006,
8083 +       0x080c, 0x2a80, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2a80,
8084 +       0x080c, 0x2664, 0x04e0, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c,
8085 +       0x24b2, 0x04a8, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c, 0x2664,
8086 +       0x080c, 0x24b2, 0x0460, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c,
8087 +       0x253d, 0x0428, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c, 0x2664,
8088 +       0x080c, 0x253d, 0x00e0, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c,
8089 +       0x24b2, 0x080c, 0x253d, 0x0098, 0x0106, 0x0006, 0x080c, 0x2a80,
8090 +       0x080c, 0x2664, 0x080c, 0x24b2, 0x080c, 0x253d, 0x0040, 0x20d1,
8091 +       0x0000, 0x20d1, 0x0001, 0x20d1, 0x0000, 0x080c, 0x1519, 0x000e,
8092 +       0x010e, 0x000d, 0x00c6, 0x0026, 0x0046, 0x2021, 0x0000, 0x080c,
8093 +       0x570b, 0x1904, 0x2d3f, 0x72d4, 0x2001, 0xc8e5, 0x2004, 0xa005,
8094 +       0x1110, 0xd29c, 0x0148, 0xd284, 0x1138, 0xd2bc, 0x1904, 0x2d3f,
8095 +       0x080c, 0x2d43, 0x0804, 0x2d3f, 0xd2cc, 0x1904, 0x2d3f, 0x080c,
8096 +       0x5f22, 0x1120, 0x709f, 0xffff, 0x0804, 0x2d3f, 0xd294, 0x0120,
8097 +       0x709f, 0xffff, 0x0804, 0x2d3f, 0x2001, 0xc615, 0x203c, 0x7288,
8098 +       0xd284, 0x0904, 0x2ce1, 0xd28c, 0x1904, 0x2ce1, 0x0036, 0x739c,
8099 +       0xa38e, 0xffff, 0x1110, 0x2019, 0x0001, 0x8314, 0xa2e0, 0xcdc0,
8100 +       0x2c04, 0xa38c, 0x0001, 0x0120, 0xa084, 0xff00, 0x8007, 0x0010,
8101 +       0xa084, 0x00ff, 0xa70e, 0x0560, 0xa08e, 0x0000, 0x0548, 0xa08e,
8102 +       0x00ff, 0x1150, 0x7230, 0xd284, 0x1538, 0x7288, 0xc28d, 0x728a,
8103 +       0x709f, 0xffff, 0x003e, 0x0428, 0x2009, 0x0000, 0x080c, 0x29c7,
8104 +       0x080c, 0x52e1, 0x11b8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
8105 +       0x1150, 0x7030, 0xd08c, 0x0118, 0x6000, 0xd0bc, 0x0120, 0x080c,
8106 +       0x2d56, 0x0140, 0x0028, 0x080c, 0x2e87, 0x080c, 0x2d84, 0x0110,
8107 +       0x8318, 0x0818, 0x739e, 0x0010, 0x709f, 0xffff, 0x003e, 0x0804,
8108 +       0x2d3f, 0xa780, 0x2f6e, 0x203d, 0xa7bc, 0xff00, 0x873f, 0x2041,
8109 +       0x007e, 0x709c, 0xa096, 0xffff, 0x1120, 0x2009, 0x0000, 0x28a8,
8110 +       0x0050, 0xa812, 0x0220, 0x2008, 0xa802, 0x20a8, 0x0020, 0x709f,
8111 +       0xffff, 0x0804, 0x2d3f, 0x2700, 0x0156, 0x0016, 0xa106, 0x05a0,
8112 +       0xc484, 0x080c, 0x533d, 0x0120, 0x080c, 0x52e1, 0x15a8, 0x0008,
8113 +       0xc485, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1130, 0x7030,
8114 +       0xd08c, 0x01e8, 0x6000, 0xd0bc, 0x11d0, 0x7288, 0xd28c, 0x0188,
8115 +       0x6004, 0xa084, 0x00ff, 0xa082, 0x0006, 0x02b0, 0xd484, 0x1118,
8116 +       0x080c, 0x5300, 0x0028, 0x080c, 0x2f14, 0x0170, 0x080c, 0x2f41,
8117 +       0x0058, 0x080c, 0x2e87, 0x080c, 0x2d84, 0x0170, 0x0028, 0x080c,
8118 +       0x2f14, 0x0110, 0x0419, 0x0140, 0x001e, 0x8108, 0x015e, 0x1f04,
8119 +       0x2cfb, 0x709f, 0xffff, 0x0018, 0x001e, 0x015e, 0x719e, 0x004e,
8120 +       0x002e, 0x00ce, 0x0005, 0x00c6, 0x0016, 0x709f, 0x0001, 0x2009,
8121 +       0x007e, 0x080c, 0x52e1, 0x1138, 0x080c, 0x2e87, 0x04a9, 0x0118,
8122 +       0x70d4, 0xc0bd, 0x70d6, 0x001e, 0x00ce, 0x0005, 0x0016, 0x0076,
8123 +       0x00d6, 0x00c6, 0x2c68, 0x2001, 0xc657, 0x2004, 0xa084, 0x00ff,
8124 +       0x6842, 0x080c, 0xaf0d, 0x01d8, 0x2d00, 0x601a, 0x080c, 0xb05e,
8125 +       0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x527f, 0x2001, 0x0000,
8126 +       0x080c, 0x5291, 0x0126, 0x2091, 0x8000, 0x7098, 0x8000, 0x709a,
8127 +       0x012e, 0x2009, 0x0004, 0x080c, 0x9613, 0xa085, 0x0001, 0x00ce,
8128 +       0x00de, 0x007e, 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6,
8129 +       0x2c68, 0x2001, 0xc657, 0x2004, 0xa084, 0x00ff, 0x6842, 0x080c,
8130 +       0xaf0d, 0x0550, 0x2d00, 0x601a, 0x6800, 0xc0c4, 0x6802, 0x68a0,
8131 +       0xa086, 0x007e, 0x0140, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006,
8132 +       0x1110, 0x080c, 0x2e46, 0x080c, 0xb05e, 0x601f, 0x0001, 0x2001,
8133 +       0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x0126,
8134 +       0x2091, 0x8000, 0x7098, 0x8000, 0x709a, 0x012e, 0x2009, 0x0002,
8135 +       0x080c, 0x9613, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e,
8136 +       0x0005, 0x00c6, 0x0026, 0x2009, 0x0080, 0x080c, 0x52e1, 0x1120,
8137 +       0x0031, 0x0110, 0x70db, 0xffff, 0x002e, 0x00ce, 0x0005, 0x0016,
8138 +       0x0076, 0x00d6, 0x00c6, 0x2c68, 0x080c, 0x958d, 0x01e8, 0x2d00,
8139 +       0x601a, 0x080c, 0xb05e, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c,
8140 +       0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x0126, 0x2091, 0x8000,
8141 +       0x080c, 0x2e46, 0x70dc, 0x8000, 0x70de, 0x012e, 0x2009, 0x0002,
8142 +       0x080c, 0x9613, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e,
8143 +       0x0005, 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f,
8144 +       0x080c, 0x52e1, 0x1190, 0x2c68, 0x080c, 0x958d, 0x0170, 0x2d00,
8145 +       0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x080c, 0xb05e, 0x2009,
8146 +       0x0022, 0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00de, 0x00ce,
8147 +       0x0005, 0x00e6, 0x00c6, 0x0066, 0x0036, 0x0026, 0x080c, 0x7b22,
8148 +       0x080c, 0x7abb, 0x080c, 0xa090, 0x2130, 0x81ff, 0x0128, 0x20a9,
8149 +       0x007e, 0x2009, 0x0000, 0x0020, 0x20a9, 0x007f, 0x2009, 0x0000,
8150 +       0x0016, 0x080c, 0x533d, 0x1120, 0x080c, 0x553e, 0x080c, 0x4f47,
8151 +       0x001e, 0x8108, 0x1f04, 0x2e30, 0x86ff, 0x1110, 0x080c, 0x11f4,
8152 +       0x002e, 0x003e, 0x006e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6,
8153 +       0x0036, 0x0026, 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019,
8154 +       0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e,
8155 +       0x2c08, 0x080c, 0xbef7, 0x007e, 0x001e, 0x2e60, 0x080c, 0x553e,
8156 +       0x6210, 0x6314, 0x080c, 0x4f47, 0x6212, 0x6316, 0x001e, 0x002e,
8157 +       0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x6018, 0xa080,
8158 +       0x0028, 0x2004, 0xa086, 0x0080, 0x0150, 0x2071, 0xc600, 0x7098,
8159 +       0xa005, 0x0110, 0x8001, 0x709a, 0x000e, 0x00ee, 0x0005, 0x2071,
8160 +       0xc600, 0x70dc, 0xa005, 0x0dc0, 0x8001, 0x70de, 0x0ca8, 0x6000,
8161 +       0xc08c, 0x6002, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0036, 0x0026,
8162 +       0x0016, 0x0156, 0x2178, 0x81ff, 0x1118, 0x20a9, 0x0001, 0x0098,
8163 +       0x2001, 0xc653, 0x2004, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0xa006,
8164 +       0x0046, 0x2020, 0x2009, 0x002d, 0x080c, 0xc190, 0x004e, 0x20a9,
8165 +       0x00ff, 0x2011, 0x0000, 0x0026, 0xa28e, 0x007e, 0x0904, 0x2ef3,
8166 +       0xa28e, 0x007f, 0x0904, 0x2ef3, 0xa28e, 0x0080, 0x05e0, 0xa288,
8167 +       0xc77b, 0x210c, 0x81ff, 0x05b8, 0x8fff, 0x1148, 0x2001, 0xc905,
8168 +       0x0006, 0x2003, 0x0001, 0x04d9, 0x000e, 0x2003, 0x0000, 0x00c6,
8169 +       0x2160, 0x2001, 0x0001, 0x080c, 0x5715, 0x00ce, 0x2019, 0x0029,
8170 +       0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e, 0x00c6,
8171 +       0x0026, 0x2160, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, 0x1118,
8172 +       0x6007, 0x0404, 0x0028, 0x2001, 0x0004, 0x8007, 0xa215, 0x6206,
8173 +       0x002e, 0x00ce, 0x0016, 0x2c08, 0x080c, 0xbef7, 0x001e, 0x007e,
8174 +       0x2160, 0x080c, 0x553e, 0x002e, 0x8210, 0x1f04, 0x2eab, 0x015e,
8175 +       0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046,
8176 +       0x0026, 0x0016, 0x2001, 0xc653, 0x2004, 0xd0c4, 0x0148, 0xd0a4,
8177 +       0x0138, 0xa006, 0x2220, 0x8427, 0x2009, 0x0029, 0x080c, 0xc190,
8178 +       0x001e, 0x002e, 0x004e, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6,
8179 +       0x7288, 0x82ff, 0x01f8, 0x2011, 0xc653, 0x2214, 0xd2ac, 0x11d0,
8180 +       0x2100, 0x080c, 0x29db, 0x81ff, 0x01b8, 0x2019, 0x0001, 0x8314,
8181 +       0xa2e0, 0xcdc0, 0x2c04, 0xd384, 0x0120, 0xa084, 0xff00, 0x8007,
8182 +       0x0010, 0xa084, 0x00ff, 0xa116, 0x0138, 0xa096, 0x00ff, 0x0110,
8183 +       0x8318, 0x0c68, 0xa085, 0x0001, 0x00ce, 0x003e, 0x002e, 0x001e,
8184 +       0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x0016, 0x0026,
8185 +       0x0036, 0x2110, 0x0026, 0x2019, 0x0029, 0x080c, 0x9132, 0x002e,
8186 +       0x080c, 0xc4e4, 0x003e, 0x002e, 0x001e, 0xa180, 0xc77b, 0x2004,
8187 +       0xa065, 0x0158, 0x0016, 0x00c6, 0x2061, 0xca3c, 0x001e, 0x611a,
8188 +       0x080c, 0x2e46, 0x001e, 0x080c, 0x5300, 0x012e, 0x00ce, 0x001e,
8189 +       0x0005, 0x2001, 0xc635, 0x2004, 0xd0cc, 0x0005, 0x7eef, 0x7de8,
8190 +       0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6,
8191 +       0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc,
8192 +       0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc,
8193 +       0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1,
8194 +       0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6,
8195 +       0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098, 0x6797,
8196 +       0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, 0x8080, 0x617c,
8197 +       0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072, 0x8071,
8198 +       0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66,
8199 +       0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, 0x8055, 0x5454,
8200 +       0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a,
8201 +       0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a, 0x8039,
8202 +       0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d,
8203 +       0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, 0x8025, 0x4123,
8204 +       0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f,
8205 +       0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, 0x3800, 0x3700,
8206 +       0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, 0x3400, 0x8000,
8207 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, 0x3200, 0x8000,
8208 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, 0x3000, 0x8000,
8209 +       0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000,
8210 +       0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700,
8211 +       0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, 0x8000, 0x2100,
8212 +       0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00,
8213 +       0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
8214 +       0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, 0x8000, 0x1400,
8215 +       0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00,
8216 +       0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800,
8217 +       0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, 0x0500, 0x0400,
8218 +       0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, 0x0100, 0x8000,
8219 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, 0x8000, 0x8000,
8220 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
8221 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x2071, 0xc6a2,
8222 +       0x7003, 0x0002, 0xa006, 0x7012, 0x7016, 0x703a, 0x703e, 0x7033,
8223 +       0xc6b2, 0x7037, 0xc6b2, 0x7007, 0x0001, 0x2061, 0xc6f2, 0x6003,
8224 +       0x0002, 0x0005, 0x1004, 0x3094, 0x0e04, 0x3094, 0x2071, 0xc6a2,
8225 +       0x2b78, 0x7818, 0xd084, 0x1140, 0x2a60, 0x7820, 0xa08e, 0x0069,
8226 +       0x1904, 0x3179, 0x0804, 0x3112, 0x0005, 0x2071, 0xc6a2, 0x7004,
8227 +       0x0002, 0x309d, 0x309e, 0x30a7, 0x30b8, 0x0005, 0x1004, 0x30a6,
8228 +       0x0e04, 0x30a6, 0x2b78, 0x7818, 0xd084, 0x01e8, 0x0005, 0x2b78,
8229 +       0x2061, 0xc6f2, 0x6008, 0xa08e, 0x0100, 0x0128, 0xa086, 0x0200,
8230 +       0x0904, 0x3173, 0x0005, 0x7014, 0x2068, 0x2a60, 0x7018, 0x0807,
8231 +       0x7010, 0x2068, 0x6834, 0xa086, 0x0103, 0x0108, 0x0005, 0x2a60,
8232 +       0x2b78, 0x7018, 0x0807, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x1210,
8233 +       0x61c4, 0x0042, 0x2100, 0xa08a, 0x003f, 0x1a04, 0x3170, 0x61c4,
8234 +       0x0804, 0x3112, 0x3154, 0x317f, 0x3187, 0x318b, 0x3193, 0x3199,
8235 +       0x319d, 0x31a9, 0x31ac, 0x31b6, 0x31b9, 0x3170, 0x3170, 0x3170,
8236 +       0x31bc, 0x3170, 0x31cb, 0x31e2, 0x31f9, 0x3273, 0x3278, 0x32a1,
8237 +       0x32f2, 0x3303, 0x3322, 0x335a, 0x3364, 0x3371, 0x3384, 0x33a5,
8238 +       0x33ae, 0x33e4, 0x33ea, 0x3170, 0x3413, 0x3170, 0x3170, 0x3170,
8239 +       0x3170, 0x3170, 0x341a, 0x3424, 0x3170, 0x3170, 0x3170, 0x3170,
8240 +       0x3170, 0x3170, 0x3170, 0x3170, 0x342c, 0x3170, 0x3170, 0x3170,
8241 +       0x3170, 0x3170, 0x343e, 0x3448, 0x3170, 0x3170, 0x3170, 0x3170,
8242 +       0x3170, 0x3170, 0x0002, 0x3472, 0x34c6, 0x3521, 0x353b, 0x3170,
8243 +       0x356c, 0x399f, 0x456f, 0x3170, 0x3170, 0x3170, 0x3170, 0x3170,
8244 +       0x3170, 0x3170, 0x3170, 0x31b6, 0x31b9, 0x39a1, 0x3170, 0x39ae,
8245 +       0x4608, 0x4663, 0x46c7, 0x3170, 0x472a, 0x4754, 0x4773, 0x47a5,
8246 +       0x3170, 0x3170, 0x3170, 0x39b2, 0x3b57, 0x3b71, 0x3b8f, 0x3bf0,
8247 +       0x3c50, 0x3c5b, 0x3c93, 0x3ca2, 0x3cb1, 0x3cb4, 0x3cd7, 0x3d21,
8248 +       0x3d97, 0x3da4, 0x3ea5, 0x3fd4, 0x3ffd, 0x40fb, 0x411d, 0x4129,
8249 +       0x4162, 0x4232, 0x428c, 0x4352, 0x43a4, 0x4404, 0x4419, 0x4434,
8250 +       0x44a6, 0x4558, 0x713c, 0x0000, 0x2021, 0x4000, 0x080c, 0x405a,
8251 +       0x0126, 0x2091, 0x8000, 0x0e04, 0x3160, 0x7818, 0xd084, 0x0110,
8252 +       0x012e, 0x0cb0, 0x7c22, 0x7926, 0x7a2a, 0x7b2e, 0x781b, 0x0001,
8253 +       0x2091, 0x4080, 0x7007, 0x0001, 0x2091, 0x5000, 0x012e, 0x0005,
8254 +       0x2021, 0x4001, 0x0c18, 0x2021, 0x4002, 0x0c00, 0x2021, 0x4003,
8255 +       0x08e8, 0x2021, 0x4005, 0x08d0, 0x2021, 0x4006, 0x08b8, 0xa02e,
8256 +       0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0804, 0x4067, 0x7823,
8257 +       0x0004, 0x7824, 0x0807, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824,
8258 +       0x7930, 0x0804, 0x406a, 0x7924, 0x7828, 0x2114, 0x200a, 0x0804,
8259 +       0x3154, 0x7924, 0x2114, 0x0804, 0x3154, 0x2099, 0x0009, 0x20a1,
8260 +       0x0009, 0x20a9, 0x0007, 0x53a3, 0x7924, 0x7a28, 0x7b2c, 0x0804,
8261 +       0x3154, 0x7824, 0x2060, 0x0090, 0x2009, 0x0002, 0x2011, 0x0002,
8262 +       0x2019, 0x0005, 0x783b, 0x0037, 0x0804, 0x3154, 0x7d38, 0x7c3c,
8263 +       0x0840, 0x7d38, 0x7c3c, 0x0888, 0x2061, 0x1000, 0xe10c, 0xa006,
8264 +       0x2c15, 0xa200, 0x8c60, 0x8109, 0x1dd8, 0x2010, 0xa005, 0x0904,
8265 +       0x3154, 0x0804, 0x3176, 0x2069, 0xc652, 0x7824, 0x7930, 0xa11a,
8266 +       0x1a04, 0x317c, 0x8019, 0x0904, 0x317c, 0x684a, 0x6942, 0x782c,
8267 +       0x6852, 0x7828, 0x6856, 0xa006, 0x685a, 0x685e, 0x080c, 0x61f8,
8268 +       0x0804, 0x3154, 0x2069, 0xc652, 0x7824, 0x7934, 0xa11a, 0x1a04,
8269 +       0x317c, 0x8019, 0x0904, 0x317c, 0x684e, 0x6946, 0x782c, 0x6862,
8270 +       0x7828, 0x6866, 0xa006, 0x686a, 0x686e, 0x080c, 0x57d7, 0x0804,
8271 +       0x3154, 0xa02e, 0x2520, 0x81ff, 0x1904, 0x3179, 0x7924, 0x7b28,
8272 +       0x7a2c, 0x20a9, 0x0005, 0x20a1, 0xc6a9, 0x41a1, 0x080c, 0x4026,
8273 +       0x0904, 0x3179, 0x2009, 0x0020, 0x080c, 0x4067, 0x701b, 0x3211,
8274 +       0x0005, 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011, 0x0138,
8275 +       0xa096, 0x0019, 0x0120, 0xa096, 0x0015, 0x1904, 0x3179, 0x810f,
8276 +       0xa18c, 0x00ff, 0x0904, 0x3179, 0x710e, 0x700c, 0x8001, 0x0528,
8277 +       0x700e, 0x080c, 0x4026, 0x0904, 0x3179, 0x2009, 0x0020, 0x2061,
8278 +       0xc6f2, 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399,
8279 +       0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x080c, 0x4067, 0x701b,
8280 +       0x3242, 0x0005, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0120,
8281 +       0xa096, 0x000a, 0x1904, 0x3179, 0x08c0, 0x7010, 0x2068, 0x6838,
8282 +       0xc0fd, 0x683a, 0x080c, 0x51dd, 0x1128, 0x7007, 0x0003, 0x701b,
8283 +       0x325c, 0x0005, 0x080c, 0x592e, 0x0126, 0x2091, 0x8000, 0x20a9,
8284 +       0x0005, 0x2099, 0xc6a9, 0x530a, 0x2100, 0xa210, 0xa399, 0x0000,
8285 +       0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d, 0x2009, 0x0020,
8286 +       0x012e, 0x0804, 0x406a, 0x61ac, 0x7824, 0x60ae, 0x0804, 0x3154,
8287 +       0x2091, 0x8000, 0x7823, 0x4000, 0x7827, 0x4953, 0x782b, 0x5020,
8288 +       0x782f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7832, 0x3f00, 0x7836,
8289 +       0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, 0xa205,
8290 +       0x783a, 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b, 0x0001, 0x2091,
8291 +       0x5000, 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1, 0x00f0, 0x0804,
8292 +       0x0427, 0x81ff, 0x1904, 0x3179, 0x7924, 0x810f, 0xa18c, 0x00ff,
8293 +       0x080c, 0x533d, 0x1904, 0x317c, 0x7e38, 0xa684, 0x3fff, 0xa082,
8294 +       0x4000, 0x0210, 0x0804, 0x317c, 0x7c28, 0x7d2c, 0x080c, 0x5505,
8295 +       0xd28c, 0x1118, 0x080c, 0x54ae, 0x0010, 0x080c, 0x54de, 0x1518,
8296 +       0x2061, 0xce00, 0x0126, 0x2091, 0x8000, 0x6000, 0xa086, 0x0000,
8297 +       0x0148, 0x6010, 0xa06d, 0x0130, 0x683c, 0xa406, 0x1118, 0x6840,
8298 +       0xa506, 0x0150, 0x012e, 0xace0, 0x0018, 0x2001, 0xc617, 0x2004,
8299 +       0xac02, 0x1a04, 0x3179, 0x0c30, 0x080c, 0xa961, 0x012e, 0x0904,
8300 +       0x3179, 0x0804, 0x3154, 0xa00e, 0x2001, 0x0005, 0x080c, 0x592e,
8301 +       0x0126, 0x2091, 0x8000, 0x080c, 0xaf09, 0x080c, 0x580a, 0x012e,
8302 +       0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904,
8303 +       0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5511, 0x0904,
8304 +       0x3179, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x404b,
8305 +       0x0904, 0x317c, 0x080c, 0x557d, 0x0904, 0x3179, 0x2019, 0x0005,
8306 +       0x7924, 0x080c, 0x552c, 0x0904, 0x3179, 0x7828, 0xa08a, 0x1000,
8307 +       0x1a04, 0x317c, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x6fb9,
8308 +       0x0804, 0x3154, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009,
8309 +       0x0001, 0x0450, 0x2029, 0x00ff, 0x6450, 0x2400, 0xa506, 0x01f8,
8310 +       0x2508, 0x080c, 0x533d, 0x11d8, 0x080c, 0x557d, 0x1128, 0x2009,
8311 +       0x0002, 0x62b4, 0x2518, 0x00c0, 0x2019, 0x0004, 0xa00e, 0x080c,
8312 +       0x552c, 0x1118, 0x2009, 0x0006, 0x0078, 0x7824, 0xa08a, 0x1000,
8313 +       0x1270, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x6fb9, 0x8529,
8314 +       0x1ae0, 0x012e, 0x0804, 0x3154, 0x012e, 0x0804, 0x3179, 0x012e,
8315 +       0x0804, 0x317c, 0x080c, 0x403b, 0x0904, 0x317c, 0x080c, 0x5469,
8316 +       0x080c, 0x5505, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c,
8317 +       0x403b, 0x0904, 0x317c, 0x080c, 0x545a, 0x080c, 0x5505, 0x0804,
8318 +       0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904, 0x317c,
8319 +       0x080c, 0x54e0, 0x0904, 0x3179, 0x080c, 0x5221, 0x080c, 0x54a7,
8320 +       0x080c, 0x5505, 0x0804, 0x3154, 0x080c, 0x403b, 0x0904, 0x317c,
8321 +       0x080c, 0x5403, 0x0904, 0x3179, 0x62a0, 0x2019, 0x0005, 0x00c6,
8322 +       0x080c, 0x553e, 0x2061, 0x0000, 0x080c, 0x7b16, 0x0076, 0x2039,
8323 +       0x0000, 0x080c, 0x7a0e, 0x2009, 0x0000, 0x080c, 0xbef7, 0x007e,
8324 +       0x00ce, 0x080c, 0x5505, 0x0804, 0x3154, 0x080c, 0x403b, 0x0904,
8325 +       0x317c, 0x080c, 0x5505, 0x2208, 0x0804, 0x3154, 0x0156, 0x00d6,
8326 +       0x00e6, 0x2069, 0xc734, 0x6810, 0x6914, 0xa10a, 0x1210, 0x2009,
8327 +       0x0000, 0x6816, 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x007e,
8328 +       0x2069, 0xc77b, 0x2d04, 0xa075, 0x0130, 0x704c, 0x0071, 0xa210,
8329 +       0x7080, 0x0059, 0xa318, 0x8d68, 0x1f04, 0x33c2, 0x2300, 0xa218,
8330 +       0x00ee, 0x00de, 0x015e, 0x0804, 0x3154, 0x00f6, 0x0016, 0xa07d,
8331 +       0x0140, 0x2001, 0x0000, 0x8000, 0x2f0c, 0x81ff, 0x0110, 0x2178,
8332 +       0x0cd0, 0x001e, 0x00fe, 0x0005, 0x2069, 0xc734, 0x6910, 0x62b0,
8333 +       0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x6150, 0xa190, 0x2f6e,
8334 +       0x2215, 0xa294, 0x00ff, 0x6370, 0x83ff, 0x0108, 0x6274, 0x67d4,
8335 +       0xd79c, 0x0118, 0x2031, 0x0001, 0x0090, 0xd7ac, 0x0118, 0x2031,
8336 +       0x0003, 0x0068, 0xd7a4, 0x0118, 0x2031, 0x0002, 0x0040, 0x080c,
8337 +       0x5f22, 0x1118, 0x2031, 0x0004, 0x0010, 0x2031, 0x0000, 0x7e3a,
8338 +       0x7f3e, 0x0804, 0x3154, 0x6140, 0x6244, 0x2019, 0xc8fd, 0x231c,
8339 +       0x0804, 0x3154, 0x0126, 0x2091, 0x8000, 0x6134, 0xa006, 0x2010,
8340 +       0x6338, 0x012e, 0x0804, 0x3154, 0x080c, 0x404b, 0x0904, 0x317c,
8341 +       0x6244, 0x6338, 0x0804, 0x3154, 0x6140, 0x6244, 0x7824, 0x6042,
8342 +       0x7b28, 0x6346, 0x2069, 0xc652, 0x831f, 0xa305, 0x6816, 0x782c,
8343 +       0x2069, 0xc8fd, 0x2d1c, 0x206a, 0x0804, 0x3154, 0x0126, 0x2091,
8344 +       0x8000, 0x7824, 0x6036, 0x782c, 0x603a, 0x012e, 0x0804, 0x3154,
8345 +       0x7838, 0xa005, 0x01a8, 0x7828, 0xa025, 0x0904, 0x317c, 0x782c,
8346 +       0xa02d, 0x0904, 0x317c, 0xa00e, 0x080c, 0x533d, 0x1120, 0x6244,
8347 +       0x6338, 0x6446, 0x653a, 0xa186, 0x00ff, 0x0190, 0x8108, 0x0ca0,
8348 +       0x080c, 0x404b, 0x0904, 0x317c, 0x7828, 0xa00d, 0x0904, 0x317c,
8349 +       0x782c, 0xa005, 0x0904, 0x317c, 0x6244, 0x6146, 0x6338, 0x603a,
8350 +       0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904,
8351 +       0x3179, 0x00c6, 0x2061, 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff,
8352 +       0xa196, 0x00ff, 0x1130, 0x2001, 0xc615, 0x2004, 0xa085, 0xff00,
8353 +       0x0078, 0xa182, 0x007f, 0x16a0, 0xa188, 0x2f6e, 0x210d, 0xa18c,
8354 +       0x00ff, 0x2001, 0xc615, 0x2004, 0xa116, 0x0550, 0x810f, 0xa105,
8355 +       0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0x958d, 0x000e, 0x01e0,
8356 +       0x601a, 0x600b, 0xbc09, 0x601f, 0x0001, 0x080c, 0x4026, 0x01d8,
8357 +       0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd,
8358 +       0x683a, 0x701b, 0x351a, 0x2d00, 0x6012, 0x2009, 0x0032, 0x080c,
8359 +       0x9613, 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x3179,
8360 +       0x00ce, 0x0804, 0x317c, 0x080c, 0x95e3, 0x0cb0, 0x2001, 0xc600,
8361 +       0x2004, 0xa086, 0x0003, 0x1904, 0x3179, 0x00c6, 0x2061, 0x0100,
8362 +       0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff, 0x1130, 0x2001,
8363 +       0xc615, 0x2004, 0xa085, 0xff00, 0x0078, 0xa182, 0x007f, 0x16a0,
8364 +       0xa188, 0x2f6e, 0x210d, 0xa18c, 0x00ff, 0x2001, 0xc615, 0x2004,
8365 +       0xa116, 0x0550, 0x810f, 0xa105, 0x0126, 0x2091, 0x8000, 0x0006,
8366 +       0x080c, 0x958d, 0x000e, 0x01e0, 0x601a, 0x600b, 0xbc05, 0x601f,
8367 +       0x0001, 0x080c, 0x4026, 0x01d8, 0x6837, 0x0000, 0x7007, 0x0003,
8368 +       0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x701b, 0x351a, 0x2d00,
8369 +       0x6012, 0x2009, 0x0032, 0x080c, 0x9613, 0x012e, 0x00ce, 0x0005,
8370 +       0x012e, 0x00ce, 0x0804, 0x3179, 0x00ce, 0x0804, 0x317c, 0x080c,
8371 +       0x95e3, 0x0cb0, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179, 0x0804,
8372 +       0x3154, 0x2061, 0xc9bc, 0x0126, 0x2091, 0x8000, 0x6000, 0xd084,
8373 +       0x0178, 0x6104, 0x6208, 0x2a60, 0x6068, 0x783a, 0x60b4, 0x783e,
8374 +       0x60b0, 0x2019, 0x0072, 0x201a, 0x6348, 0x012e, 0x0804, 0x3154,
8375 +       0xa00e, 0x2110, 0x0c80, 0x81ff, 0x1904, 0x3179, 0x080c, 0x5f22,
8376 +       0x0904, 0x3179, 0x0126, 0x2091, 0x8000, 0x6248, 0x6068, 0xa202,
8377 +       0x0248, 0xa085, 0x0001, 0x080c, 0x2a11, 0x080c, 0x4968, 0x012e,
8378 +       0x0804, 0x3154, 0x012e, 0x0804, 0x317c, 0x0006, 0x0016, 0x00c6,
8379 +       0x00e6, 0x2001, 0xc906, 0x2070, 0x2061, 0xc652, 0x6008, 0x2072,
8380 +       0x2009, 0x0000, 0x2011, 0x1000, 0x080c, 0x783f, 0x7206, 0x00ee,
8381 +       0x00ce, 0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7824,
8382 +       0xa084, 0x0007, 0x0002, 0x357e, 0x3587, 0x358e, 0x357b, 0x357b,
8383 +       0x357b, 0x357b, 0x357b, 0x012e, 0x0804, 0x317c, 0x2009, 0x0114,
8384 +       0x2104, 0xa085, 0x0800, 0x200a, 0x080c, 0x36f9, 0x0070, 0x2009,
8385 +       0x010b, 0x200b, 0x0010, 0x080c, 0x36f9, 0x0038, 0x81ff, 0x0128,
8386 +       0x012e, 0x2021, 0x400b, 0x0804, 0x3156, 0x0086, 0x0096, 0x00a6,
8387 +       0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3555, 0x2009,
8388 +       0x0101, 0x210c, 0x0016, 0x2001, 0x0138, 0x200c, 0x2003, 0x0001,
8389 +       0x0016, 0x2001, 0x007a, 0x2034, 0x2001, 0x007b, 0x202c, 0xa006,
8390 +       0x2048, 0x2050, 0x2058, 0x080c, 0x3944, 0x080c, 0x38a8, 0xa03e,
8391 +       0x2720, 0x00f6, 0x00e6, 0x00c6, 0x2d60, 0x2071, 0xc992, 0x2079,
8392 +       0x0020, 0x00d6, 0x2069, 0x0000, 0x6824, 0xd0b4, 0x0140, 0x2001,
8393 +       0x007d, 0x2004, 0x783e, 0x2001, 0x007c, 0x2004, 0x783a, 0x00de,
8394 +       0x2011, 0x0001, 0x080c, 0x3854, 0x080c, 0x3854, 0x00ce, 0x00ee,
8395 +       0x00fe, 0x080c, 0x379f, 0x080c, 0x387c, 0x080c, 0x37f9, 0x080c,
8396 +       0x375e, 0x080c, 0x378f, 0x00f6, 0x2079, 0x0100, 0x7824, 0xd094,
8397 +       0x0530, 0x7814, 0xa084, 0x0184, 0xa085, 0x0010, 0x7816, 0x2079,
8398 +       0x0140, 0x080c, 0x36d7, 0x1110, 0x00fe, 0x0430, 0x7804, 0xd0dc,
8399 +       0x0dc0, 0x2079, 0x0100, 0x7827, 0x0086, 0x7814, 0xa084, 0x0184,
8400 +       0xa085, 0x0032, 0x7816, 0x080c, 0x36d7, 0x1110, 0x00fe, 0x00a0,
8401 +       0x7824, 0xd0bc, 0x0dc0, 0x7827, 0x0080, 0xa026, 0x7c16, 0x7824,
8402 +       0xd0ac, 0x0130, 0x8b58, 0x080c, 0x36e1, 0x00fe, 0x0804, 0x36a1,
8403 +       0x00fe, 0x080c, 0x36d7, 0x1150, 0x8948, 0x2001, 0x007a, 0x2602,
8404 +       0x2001, 0x007b, 0x2502, 0x080c, 0x36e1, 0x0088, 0x87ff, 0x0140,
8405 +       0x2001, 0x0201, 0x2004, 0xa005, 0x1904, 0x35db, 0x8739, 0x0038,
8406 +       0x2001, 0xc96a, 0x2004, 0xa086, 0x0000, 0x1904, 0x35db, 0x2001,
8407 +       0x0033, 0x2003, 0x00f6, 0x8631, 0x1208, 0x8529, 0x2500, 0xa605,
8408 +       0x0904, 0x36a1, 0x7824, 0xd0bc, 0x0128, 0x2900, 0xaa05, 0xab05,
8409 +       0x1904, 0x36a1, 0x6033, 0x000d, 0x2001, 0x0030, 0x2003, 0x0004,
8410 +       0x7824, 0xd0ac, 0x1148, 0x2001, 0xc96a, 0x2003, 0x0003, 0x2001,
8411 +       0x0030, 0x2003, 0x0009, 0x0040, 0x6027, 0x0001, 0x2001, 0x0075,
8412 +       0x2004, 0xa005, 0x0108, 0x6026, 0x2c00, 0x601a, 0x20e1, 0x9040,
8413 +       0x2d00, 0x681a, 0x6833, 0x000d, 0x7824, 0xd0a4, 0x1180, 0x6827,
8414 +       0x0000, 0x00c6, 0x20a9, 0x0004, 0x2061, 0x0020, 0x6003, 0x0008,
8415 +       0x2001, 0x0203, 0x2004, 0x1f04, 0x3676, 0x00ce, 0x0040, 0x6827,
8416 +       0x0001, 0x2001, 0x0074, 0x2004, 0xa005, 0x0108, 0x6826, 0x00f6,
8417 +       0x00c6, 0x2079, 0x0100, 0x2061, 0x0020, 0x7827, 0x0002, 0x2001,
8418 +       0x0072, 0x2004, 0xa084, 0xfff8, 0x601a, 0x0006, 0x2001, 0x0073,
8419 +       0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, 0x00ce, 0x00fe, 0x0804,
8420 +       0x35b9, 0x2061, 0x0100, 0x6027, 0x0002, 0x001e, 0x61e2, 0x001e,
8421 +       0x6106, 0x7824, 0xa084, 0x0003, 0xa086, 0x0002, 0x0188, 0x20e1,
8422 +       0x9028, 0x6050, 0xa084, 0xf7ef, 0x6052, 0x602f, 0x0000, 0x602c,
8423 +       0xc0ac, 0x602e, 0x604b, 0xf7f7, 0x6043, 0x0090, 0x6043, 0x0010,
8424 +       0x2908, 0x2a10, 0x2b18, 0x2b00, 0xaa05, 0xa905, 0x00fe, 0x00ee,
8425 +       0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, 0x1118, 0x012e,
8426 +       0x0804, 0x3154, 0x012e, 0x2021, 0x400c, 0x0804, 0x3156, 0xa085,
8427 +       0x0001, 0x1d04, 0x36e0, 0x2091, 0x6000, 0x8420, 0xa486, 0x0064,
8428 +       0x0005, 0x2001, 0x0105, 0x2003, 0x0010, 0x2001, 0x0030, 0x2003,
8429 +       0x0004, 0x2001, 0x0020, 0x2003, 0x0004, 0x2001, 0xc96a, 0x2003,
8430 +       0x0000, 0x2001, 0xc992, 0x2003, 0x0000, 0x20e1, 0xf000, 0xa026,
8431 +       0x0005, 0x00f6, 0x2079, 0x0100, 0x2001, 0xc615, 0x200c, 0x7932,
8432 +       0x7936, 0x080c, 0x29f1, 0x7850, 0xa084, 0x0980, 0xa085, 0x0030,
8433 +       0x7852, 0x2019, 0x01f4, 0x8319, 0x1df0, 0xa084, 0x0980, 0x7852,
8434 +       0x782c, 0xc0ad, 0x782e, 0x20a9, 0x0046, 0x1d04, 0x3715, 0x2091,
8435 +       0x6000, 0x1f04, 0x3715, 0x7850, 0xa085, 0x0400, 0x7852, 0x2001,
8436 +       0x0009, 0x2004, 0xa084, 0x0003, 0xa086, 0x0001, 0x1118, 0x782c,
8437 +       0xc0ac, 0x782e, 0x784b, 0xf7f7, 0x7843, 0x0090, 0x7843, 0x0010,
8438 +       0x20a9, 0x000e, 0xe000, 0x1f04, 0x3732, 0x7850, 0xa085, 0x1400,
8439 +       0x7852, 0x2019, 0x61a8, 0x7854, 0xe000, 0xe000, 0xd08c, 0x1110,
8440 +       0x8319, 0x1dc8, 0x7827, 0x0048, 0x7850, 0xa085, 0x0400, 0x7852,
8441 +       0x7843, 0x0040, 0x2019, 0x01f4, 0xe000, 0xe000, 0x8319, 0x1de0,
8442 +       0x2001, 0x0140, 0x2003, 0x0100, 0x7827, 0x0020, 0x7843, 0x0000,
8443 +       0x2003, 0x0000, 0x7827, 0x0048, 0x00fe, 0x0005, 0x7824, 0xd0ac,
8444 +       0x11c8, 0x00f6, 0x00e6, 0x2071, 0xc96a, 0x2079, 0x0030, 0x2001,
8445 +       0x0201, 0x2004, 0xa005, 0x0160, 0x7000, 0xa086, 0x0000, 0x1140,
8446 +       0x0051, 0xd0bc, 0x0108, 0x8738, 0x7003, 0x0003, 0x7803, 0x0019,
8447 +       0x00ee, 0x00fe, 0x0005, 0x780c, 0xa08c, 0x0070, 0x0178, 0x2009,
8448 +       0x007a, 0x260a, 0x2009, 0x007b, 0x250a, 0xd0b4, 0x0108, 0x8a50,
8449 +       0xd0ac, 0x0108, 0x8948, 0xd0a4, 0x0108, 0x8b58, 0x0005, 0x00f6,
8450 +       0x2079, 0x0200, 0x781c, 0xd084, 0x0140, 0x20e1, 0x0007, 0x20e1,
8451 +       0x2000, 0x2001, 0x020a, 0x2004, 0x0ca8, 0x00fe, 0x0005, 0x00e6,
8452 +       0x2071, 0x0100, 0x2001, 0xc907, 0x2004, 0x70e2, 0x2009, 0xc615,
8453 +       0x210c, 0x716e, 0x7063, 0x0100, 0x7166, 0x719e, 0x706b, 0x0000,
8454 +       0x7073, 0x0809, 0x7077, 0x0008, 0x7078, 0xa080, 0x0100, 0x707a,
8455 +       0x7080, 0x8000, 0x7082, 0x7087, 0xaaaa, 0xa006, 0x708a, 0x708e,
8456 +       0x707e, 0x70d6, 0x70ab, 0x0036, 0x70af, 0x95d5, 0x7027, 0x0080,
8457 +       0x7014, 0xa084, 0x0184, 0xa085, 0x0032, 0x7016, 0x080c, 0x387c,
8458 +       0x080c, 0x36d7, 0x1110, 0x8421, 0x0028, 0x7024, 0xd0bc, 0x0db0,
8459 +       0x7027, 0x0080, 0x00f6, 0x00e6, 0x2071, 0xc96a, 0x2079, 0x0030,
8460 +       0x00d6, 0x2069, 0x0000, 0x6824, 0xd0b4, 0x0120, 0x683c, 0x783e,
8461 +       0x6838, 0x783a, 0x00de, 0x2011, 0x0011, 0x080c, 0x3854, 0x2011,
8462 +       0x0001, 0x080c, 0x3854, 0x00ee, 0x00fe, 0x7017, 0x0000, 0x00ee,
8463 +       0x0005, 0x00f6, 0x00e6, 0x2071, 0xc96a, 0x2079, 0x0030, 0x7904,
8464 +       0xd1fc, 0x0904, 0x3851, 0x7803, 0x0002, 0xa026, 0xd19c, 0x1904,
8465 +       0x384d, 0x7000, 0x0002, 0x3851, 0x380f, 0x3833, 0x384d, 0xd1bc,
8466 +       0x1150, 0xd1dc, 0x1150, 0x8001, 0x7002, 0x2011, 0x0001, 0x04e1,
8467 +       0x05c0, 0x04d1, 0x04b0, 0x780f, 0x0000, 0x7820, 0x7924, 0x7803,
8468 +       0x0004, 0x7822, 0x7926, 0x2001, 0x0201, 0x200c, 0x81ff, 0x0de8,
8469 +       0x080c, 0x377b, 0x2009, 0x0001, 0x7808, 0xd0ec, 0x0110, 0x2009,
8470 +       0x0011, 0x7902, 0x00f0, 0x8001, 0x7002, 0xa184, 0x0880, 0x1138,
8471 +       0x7804, 0xd0fc, 0x1940, 0x2011, 0x0001, 0x00b1, 0x0090, 0x6030,
8472 +       0xa092, 0x0004, 0xa086, 0x0009, 0x1120, 0x6000, 0x601a, 0x2011,
8473 +       0x0025, 0x6232, 0xd1dc, 0x1988, 0x0870, 0x7803, 0x0004, 0x7003,
8474 +       0x0000, 0x00ee, 0x00fe, 0x0005, 0x6024, 0xa005, 0x0520, 0x8001,
8475 +       0x6026, 0x6018, 0x6130, 0xa140, 0x2804, 0x7832, 0x8840, 0x2804,
8476 +       0x7836, 0x8840, 0x2804, 0x7822, 0x8840, 0x2804, 0x7826, 0x8840,
8477 +       0x7a02, 0x7000, 0x8000, 0x7002, 0x6018, 0xa802, 0xa08a, 0x0029,
8478 +       0x1138, 0x6018, 0xa080, 0x0001, 0x2004, 0x601a, 0x2001, 0x000d,
8479 +       0x6032, 0xa085, 0x0001, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x2071,
8480 +       0xc992, 0x2079, 0x0020, 0x7904, 0xd1fc, 0x01f0, 0x7803, 0x0002,
8481 +       0x2d60, 0xa026, 0x7000, 0x0002, 0x38a4, 0x388f, 0x389b, 0x8001,
8482 +       0x7002, 0xd19c, 0x1188, 0x2011, 0x0001, 0x080c, 0x3854, 0x0160,
8483 +       0x080c, 0x3854, 0x0048, 0x8001, 0x7002, 0x7804, 0xd0fc, 0x1d30,
8484 +       0x2011, 0x0001, 0x080c, 0x3854, 0x00ce, 0x00ee, 0x00fe, 0x0005,
8485 +       0x00f6, 0x00e6, 0x00c6, 0x2061, 0x0200, 0x2001, 0xc907, 0x2004,
8486 +       0x601a, 0x2061, 0x0100, 0x2001, 0xc906, 0x2004, 0x60ce, 0x6004,
8487 +       0xc0ac, 0xa085, 0x0200, 0x6006, 0x2001, 0x0074, 0x2004, 0xa005,
8488 +       0x01f8, 0x2038, 0x2001, 0x0076, 0x2024, 0x2001, 0x0077, 0x201c,
8489 +       0x080c, 0x4026, 0x6833, 0x000d, 0x6f26, 0x2d00, 0x681a, 0xa78a,
8490 +       0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0xa03e,
8491 +       0x6818, 0xa080, 0x000d, 0x04b1, 0x1d90, 0x2d00, 0x681a, 0x0088,
8492 +       0x080c, 0x4026, 0x6833, 0x000d, 0x2070, 0x6827, 0x0001, 0x2d00,
8493 +       0x681a, 0x2001, 0x0076, 0x2004, 0x2072, 0x2001, 0x0077, 0x2004,
8494 +       0x7006, 0x2061, 0x0020, 0x2079, 0x0100, 0x2001, 0xc906, 0x2004,
8495 +       0x6012, 0x20e1, 0x9040, 0x2001, 0x0072, 0x2004, 0xa084, 0xfff8,
8496 +       0x700a, 0x601a, 0x0006, 0x2001, 0x0073, 0x2004, 0x700e, 0x601e,
8497 +       0x78c6, 0x000e, 0x78ca, 0xa006, 0x603a, 0x603e, 0x00ce, 0x00ee,
8498 +       0x00fe, 0x0005, 0x00e6, 0x2071, 0x0010, 0x20a0, 0x2099, 0x0014,
8499 +       0x7003, 0x0026, 0x7432, 0x7336, 0xa006, 0x703a, 0x703e, 0x810b,
8500 +       0x810b, 0x21a8, 0x810b, 0x7122, 0x7003, 0x0041, 0x7004, 0xd0fc,
8501 +       0x0de8, 0x7003, 0x0002, 0x7003, 0x0040, 0x53a5, 0x7430, 0x7334,
8502 +       0x87ff, 0x0180, 0x00c6, 0x00d6, 0x2d60, 0x00c6, 0x080c, 0x4026,
8503 +       0x00ce, 0x6018, 0x2070, 0x2d00, 0x7006, 0x601a, 0x00de, 0x00ce,
8504 +       0xa085, 0x0001, 0x00ee, 0x0005, 0x00e6, 0x2001, 0x0075, 0x2004,
8505 +       0xa005, 0x0508, 0x2038, 0x2001, 0x0078, 0x2024, 0x2001, 0x0079,
8506 +       0x201c, 0x080c, 0x4026, 0x2d60, 0x6833, 0x000d, 0x6f26, 0x2d00,
8507 +       0x681a, 0xa78a, 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010,
8508 +       0x2708, 0xa03e, 0x6818, 0xa080, 0x000d, 0x080c, 0x3912, 0x1d88,
8509 +       0x2d00, 0x681a, 0x00e0, 0x080c, 0x4026, 0x2d60, 0x6033, 0x000d,
8510 +       0x2070, 0x6027, 0x0001, 0x2c00, 0x601a, 0x2001, 0x0078, 0x2004,
8511 +       0x2072, 0x2001, 0x0079, 0x2004, 0x7006, 0x2001, 0x0072, 0x2004,
8512 +       0xa084, 0xfff8, 0x700a, 0x2001, 0x0073, 0x2004, 0x700e, 0x2001,
8513 +       0x0030, 0x2003, 0x0004, 0x7824, 0xd0ac, 0x1178, 0x2001, 0x0101,
8514 +       0x200c, 0xc1ed, 0x2102, 0x6027, 0x0000, 0x2001, 0xc96a, 0x2003,
8515 +       0x0003, 0x2001, 0x0030, 0x2003, 0x0009, 0x00ee, 0x0005, 0x0804,
8516 +       0x3154, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0xc640,
8517 +       0x20a0, 0xa006, 0x40a4, 0x012e, 0x0804, 0x3154, 0x7d38, 0x7c3c,
8518 +       0x0804, 0x31fb, 0x080c, 0x4026, 0x0904, 0x3179, 0x080c, 0x5f22,
8519 +       0x0110, 0x080c, 0x4f2c, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c,
8520 +       0x7d38, 0x080c, 0x4067, 0x701b, 0x39c6, 0x0005, 0xade8, 0x000d,
8521 +       0x6800, 0xa005, 0x0904, 0x317c, 0x6804, 0xd0ac, 0x0118, 0xd0a4,
8522 +       0x0904, 0x317c, 0xd094, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0138,
8523 +       0x6200, 0xa292, 0x0005, 0x0218, 0xa18c, 0xffdf, 0x0010, 0xa18d,
8524 +       0x0020, 0x6106, 0x00ce, 0xd08c, 0x00c6, 0x2061, 0x0100, 0x6104,
8525 +       0x0118, 0xa18d, 0x0010, 0x0010, 0xa18c, 0xffef, 0x6106, 0x00ce,
8526 +       0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, 0x0268, 0xd084, 0x0158,
8527 +       0x6a28, 0xa28a, 0x007f, 0x1a04, 0x317c, 0xa288, 0x2f6e, 0x210d,
8528 +       0xa18c, 0x00ff, 0x615a, 0xd0dc, 0x0130, 0x6828, 0xa08a, 0x007f,
8529 +       0x1a04, 0x317c, 0x6052, 0x6808, 0xa08a, 0x0100, 0x0a04, 0x317c,
8530 +       0xa08a, 0x0841, 0x1a04, 0x317c, 0xa084, 0x0007, 0x1904, 0x317c,
8531 +       0x680c, 0xa005, 0x0904, 0x317c, 0x6810, 0xa005, 0x0904, 0x317c,
8532 +       0x6848, 0x6940, 0xa10a, 0x1a04, 0x317c, 0x8001, 0x0904, 0x317c,
8533 +       0x684c, 0x6944, 0xa10a, 0x1a04, 0x317c, 0x8001, 0x0904, 0x317c,
8534 +       0x6804, 0xd0fc, 0x0560, 0x080c, 0x4026, 0x0904, 0x3179, 0x2009,
8535 +       0x0014, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0xa290, 0x0038, 0xa399,
8536 +       0x0000, 0x080c, 0x4067, 0x701b, 0x3a46, 0x0005, 0xade8, 0x000d,
8537 +       0x20a9, 0x0014, 0x2d98, 0x2069, 0xc66e, 0x2da0, 0x53a3, 0x7010,
8538 +       0xa0e8, 0x000d, 0x2001, 0xc672, 0x200c, 0xd1e4, 0x0140, 0x00c6,
8539 +       0x2061, 0x0100, 0x6004, 0xa085, 0x0b00, 0x6006, 0x00ce, 0x2009,
8540 +       0xc8f8, 0x200b, 0x0000, 0x2001, 0xc674, 0x2004, 0xd0ac, 0x0158,
8541 +       0x7824, 0x200a, 0x2009, 0x017f, 0x200a, 0x3200, 0xa084, 0x003f,
8542 +       0xa085, 0x3020, 0x2090, 0x20a9, 0x001c, 0x2d98, 0x2069, 0xc652,
8543 +       0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x6142, 0x8007, 0xa084,
8544 +       0x00ff, 0x6046, 0x080c, 0x61f8, 0x080c, 0x576e, 0x080c, 0x57d7,
8545 +       0x6000, 0xa086, 0x0000, 0x1904, 0x3b41, 0x6808, 0x602a, 0x080c,
8546 +       0x25bb, 0x0006, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x000e,
8547 +       0x0268, 0x2009, 0x0170, 0x200b, 0x0080, 0xe000, 0xe000, 0x200b,
8548 +       0x0000, 0x0036, 0x6b08, 0x080c, 0x2a4c, 0x003e, 0x6818, 0x691c,
8549 +       0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, 0x611a,
8550 +       0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148, 0x6830, 0x6934, 0x6a38,
8551 +       0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0010, 0xa084, 0xf0ff,
8552 +       0x6006, 0x610a, 0x620e, 0x6312, 0x8007, 0x810f, 0x8217, 0x831f,
8553 +       0x20a9, 0x0004, 0x20a1, 0xc90d, 0x40a1, 0x080c, 0x707c, 0x6904,
8554 +       0xd1fc, 0x0520, 0x00c6, 0x2009, 0x0000, 0x20a9, 0x0001, 0x6b70,
8555 +       0xd384, 0x01c8, 0x0020, 0x839d, 0x12b0, 0x3508, 0x8109, 0x080c,
8556 +       0x67ed, 0x6878, 0x6016, 0x6874, 0x2008, 0xa084, 0xff00, 0x8007,
8557 +       0x600a, 0xa184, 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003, 0x0003,
8558 +       0x0010, 0x6003, 0x0001, 0x1f04, 0x3adb, 0x00ce, 0x2069, 0xc652,
8559 +       0x2001, 0xc8e5, 0x6a80, 0xa294, 0x0030, 0xa28e, 0x0000, 0x0170,
8560 +       0xa28e, 0x0010, 0x0118, 0xa28e, 0x0020, 0x0140, 0x2003, 0xaaaa,
8561 +       0x080c, 0x2a95, 0x2001, 0xc8d6, 0x2102, 0x0008, 0x2102, 0x00c6,
8562 +       0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c,
8563 +       0x5f22, 0x0128, 0x080c, 0x440b, 0x0110, 0x080c, 0x2a11, 0x60c8,
8564 +       0xa005, 0x01d0, 0x6003, 0x0001, 0x2009, 0x3b27, 0x00e0, 0x080c,
8565 +       0x5f22, 0x1178, 0x2011, 0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8,
8566 +       0x080c, 0x7070, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x080c, 0x5e5a,
8567 +       0x0040, 0x080c, 0x4e5b, 0x0028, 0x6003, 0x0004, 0x2009, 0x3b41,
8568 +       0x0010, 0x0804, 0x3154, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005,
8569 +       0x0258, 0x2001, 0x0170, 0x2004, 0xa084, 0x00ff, 0xa086, 0x004c,
8570 +       0x1118, 0x2091, 0x309d, 0x0817, 0x2091, 0x301d, 0x0817, 0x6000,
8571 +       0xa086, 0x0000, 0x0904, 0x3179, 0x2069, 0xc652, 0x7830, 0x6842,
8572 +       0x7834, 0x6846, 0x6804, 0xd0fc, 0x0118, 0x2009, 0x0030, 0x0010,
8573 +       0x2009, 0x001c, 0x2d00, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804,
8574 +       0x406a, 0xa006, 0x080c, 0x2a11, 0x81ff, 0x1904, 0x3179, 0x080c,
8575 +       0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600,
8576 +       0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c, 0x5e5a,
8577 +       0x0020, 0x080c, 0x4f2c, 0x080c, 0x4e5b, 0x0804, 0x3154, 0x81ff,
8578 +       0x1904, 0x3179, 0x080c, 0x5f22, 0x1110, 0x0804, 0x3179, 0x6188,
8579 +       0x81ff, 0x0198, 0x703f, 0x0000, 0x2001, 0xcdc0, 0x2009, 0x0040,
8580 +       0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0126, 0x2091, 0x8000, 0x080c,
8581 +       0x406a, 0x701b, 0x3152, 0x012e, 0x0005, 0x703f, 0x0001, 0x00d6,
8582 +       0x2069, 0xcdc0, 0x20a9, 0x0040, 0x20a1, 0xcdc0, 0x2019, 0xffff,
8583 +       0x43a4, 0x6550, 0xa588, 0x2f6e, 0x210d, 0xa18c, 0x00ff, 0x216a,
8584 +       0xa00e, 0x2011, 0x0002, 0x2100, 0xa506, 0x01a8, 0x080c, 0x533d,
8585 +       0x1190, 0x6014, 0x821c, 0x0238, 0xa398, 0xcdc0, 0xa085, 0xff00,
8586 +       0x8007, 0x201a, 0x0038, 0xa398, 0xcdc0, 0x2324, 0xa4a4, 0xff00,
8587 +       0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x1208, 0x0c18,
8588 +       0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x00de, 0x20a9, 0x0040,
8589 +       0x20a1, 0xcdc0, 0x2099, 0xcdc0, 0x080c, 0x4ecb, 0x0804, 0x3b9c,
8590 +       0x080c, 0x404b, 0x0904, 0x317c, 0x00c6, 0x080c, 0x4026, 0x00ce,
8591 +       0x1120, 0x2009, 0x0002, 0x0804, 0x3179, 0x2001, 0xc653, 0x2004,
8592 +       0xd0b4, 0x0550, 0x7824, 0xa084, 0xff00, 0xa08e, 0x7e00, 0x0520,
8593 +       0xa08e, 0x7f00, 0x0508, 0xa08e, 0x8000, 0x01f0, 0x6000, 0xd08c,
8594 +       0x11d8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x11a8, 0x6837,
8595 +       0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0xae11, 0x1120, 0x2009,
8596 +       0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x3c28, 0x0005,
8597 +       0x080c, 0x404b, 0x0904, 0x317c, 0x20a9, 0x002b, 0x2c98, 0xade8,
8598 +       0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004, 0xac80, 0x0006, 0x2098,
8599 +       0xad80, 0x0006, 0x20a0, 0x080c, 0x4ecb, 0x20a9, 0x0004, 0xac80,
8600 +       0x000a, 0x2098, 0xad80, 0x000a, 0x20a0, 0x080c, 0x4ecb, 0x2d00,
8601 +       0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x406a,
8602 +       0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904, 0x317c, 0x080c,
8603 +       0x551a, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x7828, 0xa08a,
8604 +       0x1000, 0x1a04, 0x317c, 0x080c, 0x404b, 0x0904, 0x317c, 0x080c,
8605 +       0x557d, 0x0904, 0x3179, 0x2019, 0x0004, 0xa00e, 0x080c, 0x552c,
8606 +       0x7924, 0x810f, 0x7a28, 0x0011, 0x0804, 0x3154, 0xa186, 0x00ff,
8607 +       0x0110, 0x0071, 0x0060, 0x2029, 0x007e, 0x2061, 0xc600, 0x6450,
8608 +       0x2400, 0xa506, 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005,
8609 +       0x080c, 0x533d, 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108,
8610 +       0x080c, 0x6fb9, 0x0005, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b,
8611 +       0x0904, 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5523,
8612 +       0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904,
8613 +       0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5511, 0x0804,
8614 +       0x3154, 0x6100, 0x0804, 0x3154, 0x080c, 0x404b, 0x0904, 0x317c,
8615 +       0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904, 0x3179, 0x00d6,
8616 +       0xace8, 0x000a, 0x7924, 0xd184, 0x0110, 0xace8, 0x0006, 0x680c,
8617 +       0x8007, 0x783e, 0x6808, 0x8007, 0x783a, 0x6b04, 0x831f, 0x6a00,
8618 +       0x8217, 0x00de, 0x6100, 0xa18c, 0x0200, 0x0804, 0x3154, 0x7824,
8619 +       0xa09c, 0x00ff, 0xa39a, 0x0003, 0x1a04, 0x3179, 0x6250, 0xa294,
8620 +       0x00ff, 0xa084, 0xff00, 0x8007, 0xa206, 0x1150, 0x2001, 0xc640,
8621 +       0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x406a,
8622 +       0x81ff, 0x1904, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c, 0x6004,
8623 +       0xa084, 0x00ff, 0xa086, 0x0006, 0x1904, 0x3179, 0x00c6, 0x080c,
8624 +       0x4026, 0x00ce, 0x0904, 0x3179, 0x6837, 0x0000, 0x6838, 0xc0fd,
8625 +       0x683a, 0x080c, 0xadbd, 0x0904, 0x3179, 0x7007, 0x0003, 0x701b,
8626 +       0x3d12, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179, 0xad80,
8627 +       0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804,
8628 +       0x406a, 0xa006, 0x080c, 0x2a11, 0x7824, 0xa084, 0x00ff, 0xa086,
8629 +       0x00ff, 0x0118, 0x81ff, 0x1904, 0x3179, 0x080c, 0x5f22, 0x0110,
8630 +       0x080c, 0x4f2c, 0x7828, 0xa08a, 0x1000, 0x1a04, 0x317c, 0x7924,
8631 +       0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff, 0x0138, 0xa182, 0x007f,
8632 +       0x1a04, 0x317c, 0x2100, 0x080c, 0x29db, 0x0026, 0x00c6, 0x0126,
8633 +       0x2091, 0x8000, 0x2061, 0xc93a, 0x601b, 0x0000, 0x601f, 0x0000,
8634 +       0x080c, 0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001,
8635 +       0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c,
8636 +       0x5e5a, 0x0420, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002,
8637 +       0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c,
8638 +       0x8e79, 0x003e, 0x2061, 0x0100, 0x2001, 0xc615, 0x2004, 0xa084,
8639 +       0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010,
8640 +       0x2009, 0x002d, 0x2011, 0x4e90, 0x080c, 0x7036, 0x7924, 0xa18c,
8641 +       0xff00, 0x810f, 0x080c, 0x5f22, 0x1110, 0x2009, 0x00ff, 0x7a28,
8642 +       0x080c, 0x3c76, 0x012e, 0x00ce, 0x002e, 0x0804, 0x3154, 0x7924,
8643 +       0xa18c, 0xff00, 0x810f, 0x00c6, 0x080c, 0x52e1, 0x2c08, 0x00ce,
8644 +       0x1904, 0x317c, 0x0804, 0x3154, 0x81ff, 0x0120, 0x2009, 0x0001,
8645 +       0x0804, 0x3179, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009,
8646 +       0x0005, 0x0804, 0x3179, 0x080c, 0x4026, 0x1120, 0x2009, 0x0002,
8647 +       0x0804, 0x3179, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c,
8648 +       0x4067, 0x701b, 0x3dc4, 0x0005, 0x2009, 0x0080, 0x080c, 0x533d,
8649 +       0x1130, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120, 0x2021,
8650 +       0x400a, 0x0804, 0x3156, 0x00d6, 0xade8, 0x000d, 0x6900, 0x6a08,
8651 +       0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be, 0x0100, 0x0904,
8652 +       0x3e3b, 0xa0be, 0x0112, 0x0904, 0x3e3b, 0xa0be, 0x0113, 0x0904,
8653 +       0x3e3b, 0xa0be, 0x0114, 0x0904, 0x3e3b, 0xa0be, 0x0117, 0x0904,
8654 +       0x3e3b, 0xa0be, 0x011a, 0x0904, 0x3e3b, 0xa0be, 0x011c, 0x0904,
8655 +       0x3e3b, 0xa0be, 0x0121, 0x05b0, 0xa0be, 0x0131, 0x0598, 0xa0be,
8656 +       0x0171, 0x05c8, 0xa0be, 0x0173, 0x05b0, 0xa0be, 0x01a1, 0x1120,
8657 +       0x6830, 0x8007, 0x6832, 0x04a8, 0xa0be, 0x0212, 0x0540, 0xa0be,
8658 +       0x0213, 0x0528, 0xa0be, 0x0214, 0x01b0, 0xa0be, 0x0217, 0x0168,
8659 +       0xa0be, 0x021a, 0x1120, 0x6838, 0x8007, 0x683a, 0x00e0, 0xa0be,
8660 +       0x0300, 0x01c8, 0x00de, 0x0804, 0x317c, 0xad80, 0x0010, 0x20a9,
8661 +       0x0007, 0x080c, 0x3e81, 0xad80, 0x000e, 0x20a9, 0x0001, 0x080c,
8662 +       0x3e81, 0x0048, 0xad80, 0x000c, 0x080c, 0x3e8f, 0x0050, 0xad80,
8663 +       0x000e, 0x080c, 0x3e8f, 0xad80, 0x000c, 0x20a9, 0x0001, 0x080c,
8664 +       0x3e81, 0x00c6, 0x080c, 0x4026, 0x0568, 0x6838, 0xc0fd, 0x683a,
8665 +       0x6837, 0x0119, 0x6853, 0x0000, 0x684f, 0x0020, 0x685b, 0x0001,
8666 +       0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92,
8667 +       0x6996, 0x689b, 0x0000, 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838,
8668 +       0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x080c, 0xadd9,
8669 +       0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b,
8670 +       0x3e78, 0x0005, 0x00ce, 0x00de, 0x2009, 0x0002, 0x0804, 0x3179,
8671 +       0x6820, 0xa086, 0x8001, 0x1904, 0x3154, 0x2009, 0x0004, 0x0804,
8672 +       0x3179, 0x0016, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a,
8673 +       0x8108, 0x280a, 0x8108, 0x1f04, 0x3e83, 0x001e, 0x0005, 0x0016,
8674 +       0x00a6, 0x00b6, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054,
8675 +       0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108,
8676 +       0x280a, 0x00be, 0x00ae, 0x001e, 0x0005, 0x81ff, 0x0120, 0x2009,
8677 +       0x0001, 0x0804, 0x3179, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120,
8678 +       0x2009, 0x0005, 0x0804, 0x3179, 0x7924, 0x2140, 0xa18c, 0xff00,
8679 +       0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x317c,
8680 +       0xa182, 0x00ff, 0x1a04, 0x317c, 0x7a2c, 0x7b28, 0x6070, 0xa306,
8681 +       0x1140, 0x6074, 0xa24e, 0x0904, 0x317c, 0xa9cc, 0xff00, 0x0904,
8682 +       0x317c, 0x00c6, 0x080c, 0x3f6e, 0x2c68, 0x00ce, 0x0538, 0xa0c6,
8683 +       0x4000, 0x1180, 0x00c6, 0x0006, 0x2d60, 0x2009, 0x0000, 0x080c,
8684 +       0x55de, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x000e,
8685 +       0x00ce, 0x0088, 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6,
8686 +       0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108,
8687 +       0x0010, 0x2001, 0x4006, 0x2020, 0x0804, 0x3156, 0x2d00, 0x7022,
8688 +       0x0016, 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x958d, 0x05d8,
8689 +       0x2d00, 0x601a, 0x080c, 0xb05e, 0x2e58, 0x00ee, 0x00e6, 0x00c6,
8690 +       0x080c, 0x4026, 0x00ce, 0x2b70, 0x1150, 0x080c, 0x95e3, 0x00ee,
8691 +       0x00ce, 0x00be, 0x001e, 0x2009, 0x0002, 0x0804, 0x3179, 0x6837,
8692 +       0x0000, 0x683b, 0x0000, 0x2d00, 0x6012, 0x6833, 0x0000, 0x6838,
8693 +       0xc0fd, 0xd88c, 0x0108, 0xc0f5, 0x683a, 0x0126, 0x2091, 0x8000,
8694 +       0x080c, 0x2e46, 0x012e, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c,
8695 +       0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x2009, 0x0002, 0x080c,
8696 +       0x9613, 0xa085, 0x0001, 0x00ee, 0x00ce, 0x00be, 0x001e, 0x1120,
8697 +       0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x3f51,
8698 +       0x0005, 0x6830, 0xa086, 0x0100, 0x7020, 0x2060, 0x1138, 0x2009,
8699 +       0x0004, 0x6204, 0xa294, 0x00ff, 0x0804, 0x3179, 0x2009, 0x0000,
8700 +       0x6838, 0xd0f4, 0x1904, 0x3154, 0x080c, 0x55de, 0x1108, 0xc185,
8701 +       0x6000, 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x3154, 0x00e6, 0x00d6,
8702 +       0x2029, 0x0000, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0138, 0x2021,
8703 +       0x0000, 0x20a9, 0x00ff, 0x2071, 0xc77b, 0x0030, 0x2021, 0x0080,
8704 +       0x20a9, 0x007f, 0x2071, 0xc7fb, 0x2e04, 0xa005, 0x1130, 0x2100,
8705 +       0xa406, 0x15a0, 0x2428, 0xc5fd, 0x0488, 0x2068, 0x6f10, 0x2700,
8706 +       0xa306, 0x11e0, 0x6e14, 0x2600, 0xa206, 0x11c0, 0x2400, 0xa106,
8707 +       0x1190, 0x2d60, 0xd884, 0x0598, 0x080c, 0x56ed, 0x1580, 0x2001,
8708 +       0x4000, 0x0470, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1538,
8709 +       0x2001, 0x4000, 0x0428, 0x2001, 0x4007, 0x0410, 0x2400, 0xa106,
8710 +       0x1168, 0x6e14, 0x87ff, 0x1138, 0x86ff, 0x09a0, 0x2001, 0xc635,
8711 +       0x2004, 0xd0ac, 0x1978, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70,
8712 +       0x1f04, 0x3f84, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001,
8713 +       0x0001, 0x0030, 0x080c, 0x52e1, 0x1dd0, 0x6312, 0x6216, 0xa006,
8714 +       0xa005, 0x00de, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x3179, 0x080c,
8715 +       0x4026, 0x0904, 0x3179, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a,
8716 +       0x7824, 0xa005, 0x0904, 0x317c, 0xa096, 0x00ff, 0x0120, 0xa092,
8717 +       0x0004, 0x1a04, 0x317c, 0x2010, 0x2d18, 0x080c, 0x2df9, 0x0904,
8718 +       0x3179, 0x7007, 0x0003, 0x701b, 0x3ff6, 0x0005, 0x6830, 0xa086,
8719 +       0x0100, 0x0904, 0x3179, 0x0804, 0x3154, 0x7924, 0xa18c, 0xff00,
8720 +       0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x317c,
8721 +       0xa182, 0x00ff, 0x1a04, 0x317c, 0x0126, 0x2091, 0x8000, 0x080c,
8722 +       0xacc1, 0x1188, 0xa190, 0xc77b, 0x2204, 0xa065, 0x0160, 0x080c,
8723 +       0x4f47, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0110, 0x6017, 0x0000,
8724 +       0x012e, 0x0804, 0x3154, 0x012e, 0x0804, 0x3179, 0x080c, 0x1602,
8725 +       0x0188, 0xa006, 0x6802, 0x7010, 0xa005, 0x1120, 0x2d00, 0x7012,
8726 +       0x7016, 0x0030, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016,
8727 +       0xad80, 0x000d, 0x0005, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x080c,
8728 +       0x533d, 0x1130, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0208,
8729 +       0xa066, 0x8cff, 0x0005, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x080c,
8730 +       0x533d, 0x1128, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0208, 0xa066,
8731 +       0x8cff, 0x0005, 0x0016, 0x7110, 0x81ff, 0x0128, 0x2168, 0x6904,
8732 +       0x080c, 0x1619, 0x0cc8, 0x7112, 0x7116, 0x001e, 0x0005, 0x2031,
8733 +       0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0xc6f2, 0x6606, 0x6112,
8734 +       0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x164d,
8735 +       0x7007, 0x0002, 0x701b, 0x3154, 0x0005, 0x00f6, 0x0126, 0x2091,
8736 +       0x8000, 0x2079, 0x0000, 0x2001, 0xc6b0, 0x2004, 0xa005, 0x1168,
8737 +       0x0e04, 0x4095, 0x7818, 0xd084, 0x1140, 0x7a22, 0x7b26, 0x7c2a,
8738 +       0x781b, 0x0001, 0x2091, 0x4080, 0x0408, 0x0016, 0x00c6, 0x00e6,
8739 +       0x2071, 0xc6a2, 0x7138, 0xa182, 0x0010, 0x0218, 0x7030, 0x2060,
8740 +       0x0078, 0x7030, 0xa0e0, 0x0004, 0xac82, 0xc6f2, 0x0210, 0x2061,
8741 +       0xc6b2, 0x2c00, 0x7032, 0x81ff, 0x1108, 0x7036, 0x8108, 0x713a,
8742 +       0x2262, 0x6306, 0x640a, 0x00ee, 0x00ce, 0x001e, 0x012e, 0x00fe,
8743 +       0x0005, 0x00e6, 0x2071, 0xc6a2, 0x7038, 0xa005, 0x0570, 0x0126,
8744 +       0x2091, 0x8000, 0x0e04, 0x40ec, 0x00f6, 0x2079, 0x0000, 0x7818,
8745 +       0xd084, 0x1508, 0x00c6, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004,
8746 +       0x7826, 0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, 0x7038,
8747 +       0x8001, 0x703a, 0xa005, 0x1130, 0x7033, 0xc6b2, 0x7037, 0xc6b2,
8748 +       0x00ce, 0x0048, 0xac80, 0x0004, 0xa0fa, 0xc6f2, 0x0210, 0x2001,
8749 +       0xc6b2, 0x7036, 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, 0x0026,
8750 +       0x2001, 0xc653, 0x2004, 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c,
8751 +       0x407d, 0x002e, 0x0005, 0x81ff, 0x1904, 0x3179, 0x0126, 0x2091,
8752 +       0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, 0x5f22,
8753 +       0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003,
8754 +       0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c, 0x5e5a, 0x0010,
8755 +       0x080c, 0x4e5b, 0x012e, 0x0804, 0x3154, 0x7824, 0x2008, 0xa18c,
8756 +       0xfffd, 0x1128, 0x61e0, 0xa10d, 0x61e2, 0x0804, 0x3154, 0x0804,
8757 +       0x317c, 0x81ff, 0x1904, 0x3179, 0x6000, 0xa086, 0x0003, 0x1904,
8758 +       0x3179, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x1904, 0x3179, 0x080c,
8759 +       0x404b, 0x0904, 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
8760 +       0x1120, 0x7828, 0xa005, 0x0904, 0x3154, 0x00c6, 0x080c, 0x4026,
8761 +       0x00ce, 0x0904, 0x3179, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838,
8762 +       0xc0fd, 0x683a, 0x080c, 0xaea2, 0x0904, 0x3179, 0x7007, 0x0003,
8763 +       0x701b, 0x415b, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179,
8764 +       0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904,
8765 +       0x3179, 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4026,
8766 +       0x0904, 0x3179, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000,
8767 +       0x702f, 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x080c, 0x533d,
8768 +       0x1904, 0x41e1, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0148,
8769 +       0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x0120, 0x080c, 0x56ed, 0x1904,
8770 +       0x41e1, 0xd794, 0x1110, 0xd784, 0x0158, 0xac80, 0x0006, 0x2098,
8771 +       0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c, 0x3e8f, 0xd794, 0x0148,
8772 +       0xac80, 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c,
8773 +       0x3e8f, 0xa186, 0x007e, 0x0178, 0xa186, 0x0080, 0x0160, 0x6004,
8774 +       0xa084, 0x00ff, 0xa0c2, 0x0006, 0x1210, 0xc1fd, 0x0020, 0x080c,
8775 +       0x55de, 0x1108, 0xc1fd, 0x21a2, 0xc1fc, 0xd794, 0x01d8, 0xac80,
8776 +       0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, 0x53a3, 0xac80, 0x0003,
8777 +       0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, 0x3400, 0x20a9, 0x0002,
8778 +       0x53a3, 0x080c, 0x3e81, 0xac80, 0x0026, 0x2098, 0x20a9, 0x0002,
8779 +       0x53a3, 0x0008, 0x94a0, 0xd794, 0x0110, 0xa6b0, 0x000b, 0xa6b0,
8780 +       0x0005, 0x8108, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0118, 0xa186,
8781 +       0x0100, 0x0040, 0xd78c, 0x0120, 0xa186, 0x0100, 0x0170, 0x0018,
8782 +       0xa186, 0x007e, 0x0150, 0xd794, 0x0118, 0xa686, 0x0020, 0x0010,
8783 +       0xa686, 0x0028, 0x0150, 0x0804, 0x417e, 0x86ff, 0x1120, 0x7120,
8784 +       0x810b, 0x0804, 0x3154, 0x702f, 0x0001, 0x711e, 0x7020, 0xa600,
8785 +       0x7022, 0x772a, 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6612, 0x7024,
8786 +       0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x164d,
8787 +       0x7007, 0x0002, 0x701b, 0x421d, 0x0005, 0x702c, 0xa005, 0x1170,
8788 +       0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, 0xc6f2,
8789 +       0x6224, 0x6328, 0x642c, 0x6530, 0x0804, 0x417e, 0x7120, 0x810b,
8790 +       0x0804, 0x3154, 0x2029, 0x007e, 0x7924, 0x7a28, 0x7b2c, 0x7c38,
8791 +       0xa184, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502,
8792 +       0x0a04, 0x317c, 0xa184, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x317c,
8793 +       0xa502, 0x0a04, 0x317c, 0xa284, 0xff00, 0x8007, 0xa0e2, 0x0020,
8794 +       0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0xa284, 0x00ff, 0xa0e2,
8795 +       0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0xa384, 0xff00,
8796 +       0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c,
8797 +       0xa384, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04,
8798 +       0x317c, 0xa484, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c,
8799 +       0xa502, 0x0a04, 0x317c, 0xa484, 0x00ff, 0xa0e2, 0x0020, 0x0a04,
8800 +       0x317c, 0xa502, 0x0a04, 0x317c, 0x2061, 0xc900, 0x6102, 0x6206,
8801 +       0x630a, 0x640e, 0x0804, 0x3154, 0x080c, 0x4026, 0x0904, 0x3179,
8802 +       0x2009, 0x0020, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4067,
8803 +       0x701b, 0x429b, 0x0005, 0x0126, 0xade8, 0x000d, 0x2001, 0x0138,
8804 +       0x2003, 0x0000, 0x00e6, 0x2071, 0xc96a, 0x700c, 0x7110, 0xa106,
8805 +       0x1de0, 0x00ee, 0x2091, 0x8000, 0x6800, 0xa005, 0x0904, 0x432f,
8806 +       0x6804, 0x2008, 0xa18c, 0xffe0, 0x1904, 0x432f, 0x680c, 0xa005,
8807 +       0x0904, 0x432f, 0xa082, 0xff01, 0x1a04, 0x432f, 0x6810, 0xa082,
8808 +       0x005c, 0x0a04, 0x432f, 0x6824, 0x2008, 0xa082, 0x0008, 0x0a04,
8809 +       0x432f, 0xa182, 0x0400, 0x1a04, 0x432f, 0x080c, 0x7394, 0x6820,
8810 +       0x8000, 0x6822, 0x6944, 0x6820, 0xa102, 0x0a04, 0x432f, 0x6828,
8811 +       0x6944, 0x810c, 0xa102, 0x0a04, 0x432f, 0x6840, 0xa082, 0x000f,
8812 +       0x1a04, 0x432f, 0x00d6, 0x6848, 0xa005, 0x0148, 0x2008, 0x2069,
8813 +       0xc600, 0x68e8, 0xa108, 0x68b0, 0xa102, 0x1208, 0x69ea, 0x00de,
8814 +       0x20a9, 0x0020, 0x2d98, 0x2069, 0xc682, 0x2da0, 0x53a3, 0x00d6,
8815 +       0x080c, 0x15e5, 0x2d00, 0x00de, 0x0904, 0x4346, 0x684e, 0x080c,
8816 +       0x725b, 0x05d8, 0x080c, 0x7158, 0x080c, 0x5695, 0x0580, 0x00c6,
8817 +       0x2061, 0x0100, 0x6104, 0xa18d, 0x8000, 0x6106, 0x610c, 0xa18d,
8818 +       0x0300, 0xa18c, 0xffbf, 0x610e, 0x2001, 0xc8d4, 0x200c, 0xa18d,
8819 +       0x0300, 0xa18c, 0xffbf, 0x2102, 0x6b10, 0x2061, 0xc96a, 0x6316,
8820 +       0x00ce, 0x685f, 0x0000, 0x2001, 0xc696, 0x2003, 0x0000, 0x080c,
8821 +       0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, 0x0804, 0x3154, 0x080c,
8822 +       0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, 0x0804, 0x317c, 0x080c,
8823 +       0x7475, 0x080c, 0x7484, 0x080c, 0x7147, 0x2001, 0xc695, 0x206c,
8824 +       0x080c, 0x1619, 0x2001, 0xc695, 0x2003, 0x0000, 0x2001, 0xc63a,
8825 +       0x2003, 0x0010, 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e,
8826 +       0x0804, 0x3179, 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, 0x0904,
8827 +       0x3179, 0x080c, 0x768f, 0x1904, 0x3179, 0x2001, 0xc8e5, 0x2004,
8828 +       0xa086, 0xaaaa, 0x0138, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028,
8829 +       0x0904, 0x3170, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904,
8830 +       0x3179, 0x7924, 0x810c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c,
8831 +       0x4026, 0x0904, 0x3179, 0x080c, 0x4067, 0x701b, 0x4380, 0x0005,
8832 +       0x080c, 0x958d, 0x0904, 0x3179, 0x2001, 0xc8d3, 0x2004, 0x601a,
8833 +       0x0016, 0x0026, 0x2001, 0xc61c, 0x2004, 0x8007, 0x6934, 0xa105,
8834 +       0x6836, 0x2001, 0xc61d, 0x2004, 0x8007, 0x683a, 0x002e, 0x001e,
8835 +       0x2d00, 0x6012, 0x601f, 0x0001, 0x2009, 0x0040, 0x080c, 0x9613,
8836 +       0x0804, 0x3154, 0x0804, 0x3179, 0x2001, 0xc756, 0x200c, 0xa18e,
8837 +       0x0000, 0x0904, 0x4402, 0x2001, 0x0101, 0x200c, 0xa18c, 0x7fff,
8838 +       0x2102, 0x2001, 0x0103, 0x200c, 0xa18c, 0xfeff, 0xa18c, 0xfdff,
8839 +       0xa18d, 0x0040, 0x2102, 0x2001, 0xc8d4, 0x200c, 0xa18c, 0xfeff,
8840 +       0xa18c, 0xfdff, 0xa18d, 0x0040, 0x2102, 0x2001, 0x0138, 0x2003,
8841 +       0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x24f3, 0x012e, 0x0128,
8842 +       0x20a9, 0x006e, 0x1f04, 0x43d2, 0x0ca0, 0x2001, 0xc756, 0x2003,
8843 +       0x0000, 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x0126, 0x2091,
8844 +       0x8000, 0x2001, 0xc695, 0x200c, 0x81ff, 0x0138, 0x2168, 0x080c,
8845 +       0x1619, 0x2001, 0xc695, 0x2003, 0x0000, 0x2001, 0xc8d3, 0x200c,
8846 +       0x81ff, 0x0138, 0x2168, 0x080c, 0x1619, 0x2001, 0xc8d3, 0x2003,
8847 +       0x0000, 0x2001, 0xc63a, 0x2003, 0x0010, 0x080c, 0x7475, 0x080c,
8848 +       0x7484, 0x012e, 0x0804, 0x3154, 0x7824, 0x00e6, 0x2071, 0xc682,
8849 +       0x00ee, 0x0804, 0x3154, 0x0006, 0x2001, 0xc653, 0x2004, 0xd0cc,
8850 +       0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xd0bc, 0x000e,
8851 +       0x0005, 0x6168, 0x7a24, 0x6300, 0x82ff, 0x1118, 0x7926, 0x0804,
8852 +       0x3154, 0x83ff, 0x1904, 0x317c, 0x2001, 0xfff0, 0xa200, 0x1a04,
8853 +       0x317c, 0x2019, 0xffff, 0x606c, 0xa302, 0xa200, 0x0a04, 0x317c,
8854 +       0x7926, 0x626a, 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086,
8855 +       0x0003, 0x1904, 0x3179, 0x7c28, 0x7d24, 0x7e38, 0x7f2c, 0x080c,
8856 +       0x4026, 0x0904, 0x3179, 0x2009, 0x0000, 0x2019, 0x0000, 0x7023,
8857 +       0x0000, 0x702f, 0x0000, 0xad80, 0x0003, 0x7026, 0x20a0, 0xa1e0,
8858 +       0xc77b, 0x2c64, 0x8cff, 0x01b8, 0x6004, 0xa084, 0x00ff, 0xa086,
8859 +       0x0006, 0x0130, 0x6004, 0xa084, 0xff00, 0xa086, 0x0600, 0x1158,
8860 +       0x6014, 0x20a2, 0x94a0, 0x6010, 0x8007, 0xa105, 0x8007, 0x20a2,
8861 +       0x94a0, 0xa398, 0x0002, 0x8108, 0xa182, 0x00ff, 0x0120, 0xa386,
8862 +       0x002a, 0x0148, 0x08e0, 0x83ff, 0x1120, 0x7120, 0x810c, 0x0804,
8863 +       0x3154, 0x702f, 0x0001, 0x711e, 0x7020, 0xa300, 0x7022, 0x2061,
8864 +       0xc6f2, 0x6007, 0x0000, 0x6312, 0x7024, 0x600e, 0x6426, 0x652a,
8865 +       0x662e, 0x6732, 0x2c10, 0x080c, 0x164d, 0x7007, 0x0002, 0x701b,
8866 +       0x4492, 0x0005, 0x702c, 0xa005, 0x1168, 0x711c, 0x7024, 0x20a0,
8867 +       0x2019, 0x0000, 0x2061, 0xc6f2, 0x6424, 0x6528, 0x662c, 0x6730,
8868 +       0x0804, 0x444f, 0x7120, 0x810c, 0x0804, 0x3154, 0x81ff, 0x1904,
8869 +       0x3179, 0x60d4, 0xd0ac, 0x1118, 0xd09c, 0x0904, 0x3179, 0x080c,
8870 +       0x4026, 0x0904, 0x3179, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
8871 +       0x080c, 0x4067, 0x701b, 0x44bd, 0x0005, 0x00d6, 0xade8, 0x000d,
8872 +       0x6828, 0xa0be, 0x7000, 0x0148, 0xa0be, 0x7100, 0x0130, 0xa0be,
8873 +       0x7200, 0x0118, 0x00de, 0x0804, 0x317c, 0x6820, 0x6924, 0x080c,
8874 +       0x29c7, 0x1510, 0x080c, 0x52e1, 0x11f8, 0x7122, 0x6612, 0x6516,
8875 +       0x6e18, 0x00c6, 0x080c, 0x4026, 0x01b8, 0x080c, 0x4026, 0x01a0,
8876 +       0x00ce, 0x00de, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x6823,
8877 +       0x0000, 0x6804, 0x2068, 0x080c, 0xadf5, 0x0904, 0x3179, 0x7007,
8878 +       0x0003, 0x701b, 0x44f7, 0x0005, 0x00de, 0x0804, 0x3179, 0x7120,
8879 +       0x080c, 0x2f41, 0x6820, 0xa086, 0x8001, 0x0904, 0x3179, 0x2d00,
8880 +       0x701e, 0x6804, 0xa080, 0x0002, 0x0006, 0x20a9, 0x002a, 0x2098,
8881 +       0x20a0, 0x080c, 0x4ecb, 0x000e, 0xade8, 0x000d, 0x6a08, 0x6b0c,
8882 +       0x6c10, 0x6d14, 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6e00, 0x6f28,
8883 +       0xa7c6, 0x7000, 0x1108, 0x0018, 0xa7c6, 0x7100, 0x1140, 0xa6c2,
8884 +       0x0004, 0x0a04, 0x317c, 0x2009, 0x0004, 0x0804, 0x406a, 0xa7c6,
8885 +       0x7200, 0x1904, 0x317c, 0xa6c2, 0x0054, 0x0a04, 0x317c, 0x600e,
8886 +       0x6013, 0x002a, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c,
8887 +       0x164d, 0x7007, 0x0002, 0x701b, 0x453e, 0x0005, 0x701c, 0x2068,
8888 +       0x6804, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x0006, 0x20a9,
8889 +       0x002a, 0x2098, 0x20a0, 0x080c, 0x4ecb, 0x000e, 0x2009, 0x002a,
8890 +       0x2061, 0xc6f2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, 0x406a,
8891 +       0x81ff, 0x1904, 0x3179, 0x792c, 0x2001, 0xc8e7, 0x2102, 0x080c,
8892 +       0x403b, 0x0904, 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x0126,
8893 +       0x2091, 0x8000, 0x080c, 0x5535, 0x012e, 0x0804, 0x3154, 0x7824,
8894 +       0xd08c, 0x1118, 0xd084, 0x0904, 0x3bf0, 0x080c, 0x404b, 0x0904,
8895 +       0x317c, 0x00c6, 0x080c, 0x4026, 0x00ce, 0x1120, 0x2009, 0x0002,
8896 +       0x0804, 0x3179, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0128,
8897 +       0xa08e, 0x0004, 0x0110, 0xa08e, 0x0005, 0x15b8, 0x7824, 0xd08c,
8898 +       0x0120, 0x6000, 0xc08c, 0x6002, 0x0030, 0x2001, 0xc653, 0x2004,
8899 +       0xd0b4, 0x0904, 0x3c2c, 0x7824, 0xa084, 0xff00, 0xa08e, 0x7e00,
8900 +       0x0904, 0x3c2c, 0xa08e, 0x7f00, 0x0904, 0x3c2c, 0xa08e, 0x8000,
8901 +       0x0904, 0x3c2c, 0x6000, 0xd08c, 0x1904, 0x3c2c, 0x6837, 0x0000,
8902 +       0x6838, 0xc0fd, 0x683a, 0x080c, 0xae11, 0x1120, 0x2009, 0x0003,
8903 +       0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x45bf, 0x0005, 0x080c,
8904 +       0x404b, 0x0904, 0x317c, 0x0804, 0x3c2c, 0x2009, 0xc631, 0x210c,
8905 +       0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x2001, 0xc600,
8906 +       0x2004, 0xa086, 0x0003, 0x0120, 0x2009, 0x0007, 0x0804, 0x3179,
8907 +       0x2001, 0xc653, 0x2004, 0xd0ac, 0x0120, 0x2009, 0x0008, 0x0804,
8908 +       0x3179, 0x609c, 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x3c2c, 0x6837,
8909 +       0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0xaea2,
8910 +       0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b,
8911 +       0x45fa, 0x0005, 0x6830, 0xa086, 0x0100, 0x1120, 0x2009, 0x0004,
8912 +       0x0804, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c, 0x0804, 0x458e,
8913 +       0x81ff, 0x2009, 0x0001, 0x1904, 0x3179, 0x6000, 0xa086, 0x0003,
8914 +       0x2009, 0x0007, 0x1904, 0x3179, 0x2001, 0xc653, 0x2004, 0xd0ac,
8915 +       0x2009, 0x0008, 0x1904, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c,
8916 +       0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, 0x1904,
8917 +       0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce, 0x2009, 0x0002, 0x0904,
8918 +       0x3179, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a,
8919 +       0x7928, 0xa194, 0xff00, 0xa18c, 0x00ff, 0xa006, 0x82ff, 0x1128,
8920 +       0xc0ed, 0x6952, 0x792c, 0x6956, 0x0048, 0xa28e, 0x0100, 0x1904,
8921 +       0x317c, 0xc0e5, 0x6853, 0x0000, 0x6857, 0x0000, 0x683e, 0x080c,
8922 +       0xb05f, 0x2009, 0x0003, 0x0904, 0x3179, 0x7007, 0x0003, 0x701b,
8923 +       0x465a, 0x0005, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, 0x0904,
8924 +       0x3179, 0x0804, 0x3154, 0x81ff, 0x2009, 0x0001, 0x1904, 0x3179,
8925 +       0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x1904, 0x3179, 0x080c,
8926 +       0x404b, 0x0904, 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
8927 +       0x2009, 0x0009, 0x1904, 0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce,
8928 +       0x2009, 0x0002, 0x0904, 0x3179, 0xad80, 0x000f, 0x2009, 0x0008,
8929 +       0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4067, 0x701b, 0x4691,
8930 +       0x0005, 0x00d6, 0xade8, 0x000f, 0x6800, 0xa086, 0x0500, 0x1140,
8931 +       0x6804, 0xa005, 0x1128, 0x6808, 0xa084, 0xff00, 0x1108, 0x0018,
8932 +       0x00de, 0x1904, 0x317c, 0x00de, 0x6837, 0x0000, 0x6833, 0x0000,
8933 +       0x6838, 0xc0fd, 0x683a, 0x00c6, 0x080c, 0x404b, 0x1118, 0x00ce,
8934 +       0x0804, 0x317c, 0x080c, 0xb0ae, 0x2009, 0x0003, 0x00ce, 0x0904,
8935 +       0x3179, 0x7007, 0x0003, 0x701b, 0x46be, 0x0005, 0x6830, 0xa086,
8936 +       0x0100, 0x2009, 0x0004, 0x0904, 0x3179, 0x0804, 0x3154, 0x81ff,
8937 +       0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x6000, 0xa086, 0x0003,
8938 +       0x0120, 0x2009, 0x0007, 0x0804, 0x3179, 0x7e24, 0x860f, 0xa18c,
8939 +       0x00ff, 0xa6b4, 0x00ff, 0x080c, 0x533d, 0x1904, 0x317c, 0xa186,
8940 +       0x007f, 0x0150, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120,
8941 +       0x2009, 0x0009, 0x0804, 0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce,
8942 +       0x1120, 0x2009, 0x0002, 0x0804, 0x3179, 0x6837, 0x0000, 0x6838,
8943 +       0xc0fd, 0x683a, 0x2001, 0x0100, 0x8007, 0x680a, 0x080c, 0xae2c,
8944 +       0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b,
8945 +       0x470a, 0x0005, 0x6808, 0x8007, 0xa086, 0x0100, 0x1120, 0x2009,
8946 +       0x0004, 0x0804, 0x3179, 0x68b0, 0x6836, 0x6810, 0x8007, 0xa084,
8947 +       0x00ff, 0x800c, 0x6814, 0x8007, 0xa084, 0x00ff, 0x8004, 0xa080,
8948 +       0x0002, 0xa108, 0xad80, 0x0004, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
8949 +       0x0804, 0x406a, 0x080c, 0x4026, 0x1120, 0x2009, 0x0002, 0x0804,
8950 +       0x3179, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff, 0x8217, 0x82ff,
8951 +       0x0110, 0x0804, 0x317c, 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c,
8952 +       0x7d38, 0x080c, 0x4067, 0x701b, 0x4746, 0x0005, 0x2001, 0xc62a,
8953 +       0x2003, 0x0001, 0xad80, 0x000d, 0x2098, 0x20a9, 0x001a, 0x20a1,
8954 +       0xc90d, 0x53a3, 0x0804, 0x3154, 0x080c, 0x4026, 0x1120, 0x2009,
8955 +       0x0002, 0x0804, 0x3179, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff,
8956 +       0x8217, 0x82ff, 0x0110, 0x0804, 0x317c, 0x2099, 0xc90d, 0x20a0,
8957 +       0x20a9, 0x001a, 0x53a3, 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c,
8958 +       0x7d38, 0x0804, 0x406a, 0x7824, 0xa08a, 0x1000, 0x1a04, 0x317c,
8959 +       0x0126, 0x2091, 0x8000, 0x8003, 0x800b, 0x810b, 0xa108, 0x00c6,
8960 +       0x2061, 0xc93a, 0x6142, 0x00ce, 0x012e, 0x0804, 0x3154, 0x00c6,
8961 +       0x080c, 0x5f22, 0x1188, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001,
8962 +       0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c,
8963 +       0x5e5a, 0x080c, 0x1519, 0x0038, 0x2061, 0xc600, 0x6030, 0xc09d,
8964 +       0x6032, 0x080c, 0x4e5b, 0x00ce, 0x0005, 0x0126, 0x2091, 0x8000,
8965 +       0x00c6, 0x2061, 0xc93a, 0x7924, 0x6152, 0x614e, 0x6057, 0x0000,
8966 +       0x604b, 0x0009, 0x7838, 0x606a, 0x783c, 0x6066, 0x7828, 0x6062,
8967 +       0x782c, 0x605e, 0x2061, 0xc8e8, 0x2001, 0xc94f, 0x600e, 0x6013,
8968 +       0x0001, 0x6017, 0x0002, 0x6007, 0x0000, 0x6037, 0x0000, 0x00ce,
8969 +       0x012e, 0x0804, 0x3154, 0x0126, 0x00c6, 0x00e6, 0x2061, 0x0100,
8970 +       0x2071, 0xc600, 0x6044, 0xd0a4, 0x11b0, 0xd084, 0x0118, 0x080c,
8971 +       0x4942, 0x0068, 0xd08c, 0x0118, 0x080c, 0x4863, 0x0040, 0xd094,
8972 +       0x0118, 0x080c, 0x4834, 0x0018, 0xd09c, 0x0108, 0x0061, 0x00ee,
8973 +       0x00ce, 0x012e, 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110, 0xc19d,
8974 +       0x612a, 0x001e, 0x0ca0, 0x624c, 0xa286, 0xf0f0, 0x1150, 0x6048,
8975 +       0xa086, 0xf0f0, 0x0130, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010,
8976 +       0x0490, 0xa294, 0xff00, 0xa296, 0xf700, 0x0178, 0x7134, 0xd1a4,
8977 +       0x1160, 0x6240, 0xa295, 0x0100, 0x6242, 0xa294, 0x0010, 0x0128,
8978 +       0x2009, 0x00f7, 0x080c, 0x4eeb, 0x00f0, 0x6040, 0xa084, 0x0010,
8979 +       0xa085, 0x0140, 0x6042, 0x6043, 0x0000, 0x707b, 0x0000, 0x7097,
8980 +       0x0001, 0x70bb, 0x0000, 0x70d7, 0x0000, 0x2009, 0xcdc0, 0x200b,
8981 +       0x0000, 0x708b, 0x0000, 0x707f, 0x000a, 0x2009, 0x000a, 0x2011,
8982 +       0x4e11, 0x080c, 0x7036, 0x0005, 0x0156, 0x2001, 0xc674, 0x2004,
8983 +       0xd08c, 0x0110, 0x7053, 0xffff, 0x707c, 0xa005, 0x1510, 0x2011,
8984 +       0x4e11, 0x080c, 0x6fad, 0x6040, 0xa094, 0x0010, 0xa285, 0x0020,
8985 +       0x6042, 0x20a9, 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04, 0x484b,
8986 +       0x6242, 0x708f, 0x0000, 0x6040, 0xa094, 0x0010, 0xa285, 0x0080,
8987 +       0x6042, 0x6242, 0x0030, 0x6242, 0x708f, 0x0000, 0x7083, 0x0000,
8988 +       0x0000, 0x015e, 0x0005, 0x7080, 0xa08a, 0x0003, 0x1210, 0x0023,
8989 +       0x0010, 0x080c, 0x1519, 0x0005, 0x486f, 0x48bf, 0x4941, 0x00f6,
8990 +       0x7083, 0x0001, 0x20e1, 0xa000, 0xe000, 0x20e1, 0x8700, 0x080c,
8991 +       0x25bb, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079, 0xcc00, 0x207b,
8992 +       0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, 0x780f, 0x00ef, 0x7813,
8993 +       0x0138, 0x7817, 0x0000, 0x781b, 0x0000, 0x781f, 0x0000, 0x7823,
8994 +       0xffff, 0x7827, 0xffff, 0x782b, 0x0000, 0x782f, 0x0000, 0x2079,
8995 +       0xcc0c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099, 0xc605, 0x20a1,
8996 +       0xcc0e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0xcc12, 0x207b, 0x0000,
8997 +       0x7807, 0x0000, 0x2099, 0xcc00, 0x20a1, 0x020b, 0x20a9, 0x0014,
8998 +       0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x080c, 0x4e42, 0x00fe,
8999 +       0x7087, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000, 0x0005, 0x00d6,
9000 +       0x7084, 0x7087, 0x0000, 0xa025, 0x0904, 0x4929, 0x6020, 0xd0b4,
9001 +       0x1904, 0x4927, 0x7194, 0x81ff, 0x0904, 0x4917, 0xa486, 0x000c,
9002 +       0x1904, 0x4922, 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, 0xcc80,
9003 +       0x2019, 0xcc00, 0x220c, 0x2304, 0xa106, 0x11b8, 0x8210, 0x8318,
9004 +       0x1f04, 0x48da, 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f, 0xf0f0,
9005 +       0x6043, 0x0006, 0x7083, 0x0002, 0x708f, 0x0002, 0x2009, 0x07d0,
9006 +       0x2011, 0x4e18, 0x080c, 0x7036, 0x0490, 0x2069, 0xcc80, 0x6930,
9007 +       0xa18e, 0x1101, 0x1538, 0x6834, 0xa005, 0x1520, 0x6900, 0xa18c,
9008 +       0x00ff, 0x1118, 0x6804, 0xa005, 0x0190, 0x2011, 0xcc8e, 0x2019,
9009 +       0xc605, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0230, 0x1190,
9010 +       0x8210, 0x8318, 0x1f04, 0x490b, 0x0068, 0x7097, 0x0000, 0x20e1,
9011 +       0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9,
9012 +       0x0014, 0x53a6, 0x6043, 0x0008, 0x6043, 0x0000, 0x0010, 0x00de,
9013 +       0x0005, 0x6040, 0xa085, 0x0100, 0x6042, 0x6020, 0xd0b4, 0x1db8,
9014 +       0x60c3, 0x000c, 0x2011, 0xc931, 0x2013, 0x0000, 0x7087, 0x0000,
9015 +       0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0x8bec,
9016 +       0x0c30, 0x0005, 0x708c, 0xa08a, 0x001d, 0x1210, 0x0023, 0x0010,
9017 +       0x080c, 0x1519, 0x0005, 0x4975, 0x4984, 0x49ac, 0x49c5, 0x49e9,
9018 +       0x4a11, 0x4a35, 0x4a66, 0x4a8a, 0x4ab2, 0x4ae9, 0x4b11, 0x4b2d,
9019 +       0x4b43, 0x4b63, 0x4b76, 0x4b7e, 0x4bae, 0x4bd2, 0x4bfa, 0x4c1e,
9020 +       0x4c4f, 0x4c8c, 0x4cbb, 0x4cd7, 0x4d16, 0x4d36, 0x4d4f, 0x4d50,
9021 +       0x00c6, 0x2061, 0xc600, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004,
9022 +       0xa084, 0xfff9, 0x6006, 0x00ce, 0x0005, 0x608b, 0xbc94, 0x608f,
9023 +       0xf0f0, 0x6043, 0x0002, 0x708f, 0x0001, 0x2009, 0x07d0, 0x2011,
9024 +       0x4e18, 0x080c, 0x7036, 0x0005, 0x00f6, 0x7084, 0xa086, 0x0014,
9025 +       0x1508, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x11e0, 0x2079, 0xcc80,
9026 +       0x7a30, 0xa296, 0x1102, 0x11a0, 0x7834, 0xa005, 0x1188, 0x7a38,
9027 +       0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x2011,
9028 +       0x4e18, 0x080c, 0x6fad, 0x708f, 0x0010, 0x080c, 0x4b7e, 0x0010,
9029 +       0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0003, 0x6043, 0x0004,
9030 +       0x2011, 0x4e18, 0x080c, 0x6fad, 0x080c, 0x4ed3, 0x20a3, 0x1102,
9031 +       0x20a3, 0x0000, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x49bc,
9032 +       0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005,
9033 +       0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014, 0x11a8,
9034 +       0x2079, 0xcc80, 0x7a30, 0xa296, 0x1102, 0x1178, 0x7834, 0xa005,
9035 +       0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb,
9036 +       0x0001, 0x708f, 0x0004, 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe,
9037 +       0x0005, 0x708f, 0x0005, 0x080c, 0x4ed3, 0x20a3, 0x1103, 0x20a3,
9038 +       0x0000, 0x3430, 0x2011, 0xcc8e, 0x080c, 0x4f24, 0x1160, 0x7078,
9039 +       0xa005, 0x1148, 0x7150, 0xa186, 0xffff, 0x0128, 0x080c, 0x4ddc,
9040 +       0x0110, 0x080c, 0x4f02, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6,
9041 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42,
9042 +       0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c,
9043 +       0x6fad, 0xa086, 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296,
9044 +       0x1103, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128,
9045 +       0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0006, 0x0029,
9046 +       0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0007, 0x080c,
9047 +       0x4ed3, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0xcc8e,
9048 +       0x080c, 0x4f24, 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158, 0xa186,
9049 +       0xffff, 0x0170, 0xa180, 0x2f6e, 0x200d, 0xa18c, 0xff00, 0x810f,
9050 +       0x080c, 0x4ddc, 0x0128, 0x080c, 0x4412, 0x0110, 0x080c, 0x2a11,
9051 +       0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3,
9052 +       0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084,
9053 +       0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014,
9054 +       0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1104, 0x1178, 0x7834,
9055 +       0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110,
9056 +       0x70bb, 0x0001, 0x708f, 0x0008, 0x0029, 0x0010, 0x080c, 0x4e5b,
9057 +       0x00fe, 0x0005, 0x708f, 0x0009, 0x080c, 0x4ed3, 0x20a3, 0x1105,
9058 +       0x20a3, 0x0100, 0x3430, 0x080c, 0x4f24, 0x1150, 0x7078, 0xa005,
9059 +       0x1138, 0x080c, 0x4d51, 0x1170, 0xa085, 0x0001, 0x080c, 0x2a11,
9060 +       0x20a9, 0x0008, 0x2099, 0xcc8e, 0x26a0, 0x53a6, 0x20a3, 0x0000,
9061 +       0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0010, 0x080c,
9062 +       0x4968, 0x0005, 0x00f6, 0x7084, 0xa005, 0x0588, 0x2011, 0x4e18,
9063 +       0x080c, 0x6fad, 0xa086, 0x0014, 0x1540, 0x2079, 0xcc80, 0x7a30,
9064 +       0xa296, 0x1105, 0x1510, 0x7834, 0x2011, 0x0100, 0xa21e, 0x1160,
9065 +       0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001,
9066 +       0x708f, 0x000a, 0x00b1, 0x0098, 0xa005, 0x1178, 0x7a38, 0xd2fc,
9067 +       0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708b, 0x0000,
9068 +       0x708f, 0x000e, 0x080c, 0x4b63, 0x0010, 0x080c, 0x4e5b, 0x00fe,
9069 +       0x0005, 0x708f, 0x000b, 0x2011, 0xcc0e, 0x22a0, 0x20a9, 0x0040,
9070 +       0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000, 0x41a4,
9071 +       0x080c, 0x4ed3, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x080c, 0x4f24,
9072 +       0x0118, 0x2013, 0x0000, 0x0020, 0x7054, 0xa085, 0x0100, 0x2012,
9073 +       0x2298, 0x20a9, 0x0042, 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4e42,
9074 +       0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011, 0x4e18, 0x080c,
9075 +       0x6fad, 0xa086, 0x0084, 0x1168, 0x2079, 0xcc80, 0x7a30, 0xa296,
9076 +       0x1106, 0x1138, 0x7834, 0xa005, 0x1120, 0x708f, 0x000c, 0x0029,
9077 +       0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x000d, 0x080c,
9078 +       0x4ed3, 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099, 0xcc8e, 0x20a9,
9079 +       0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084,
9080 +       0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01d0, 0x2011,
9081 +       0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084, 0x1188, 0x2079, 0xcc80,
9082 +       0x7a30, 0xa296, 0x1107, 0x1158, 0x7834, 0xa005, 0x1140, 0x708b,
9083 +       0x0001, 0x080c, 0x4ec5, 0x708f, 0x000e, 0x0029, 0x0010, 0x080c,
9084 +       0x4e5b, 0x00fe, 0x0005, 0x708f, 0x000f, 0x7087, 0x0000, 0x608b,
9085 +       0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009,
9086 +       0x07d0, 0x2011, 0x4e18, 0x080c, 0x6fa1, 0x0005, 0x7084, 0xa005,
9087 +       0x0120, 0x2011, 0x4e18, 0x080c, 0x6fad, 0x0005, 0x708f, 0x0011,
9088 +       0x080c, 0x4f24, 0x11a0, 0x7170, 0x81ff, 0x0188, 0x2009, 0x0000,
9089 +       0x7074, 0xa084, 0x00ff, 0x080c, 0x29c7, 0xa186, 0x007e, 0x0138,
9090 +       0xa186, 0x0080, 0x0120, 0x2011, 0xcc8e, 0x080c, 0x4ddc, 0x20e1,
9091 +       0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x7484,
9092 +       0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8,
9093 +       0x53a6, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084,
9094 +       0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014,
9095 +       0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1103, 0x1178, 0x7834,
9096 +       0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110,
9097 +       0x70bb, 0x0001, 0x708f, 0x0012, 0x0029, 0x0010, 0x080c, 0x4e5b,
9098 +       0x00fe, 0x0005, 0x708f, 0x0013, 0x080c, 0x4edf, 0x20a3, 0x1103,
9099 +       0x20a3, 0x0000, 0x3430, 0x2011, 0xcc8e, 0x080c, 0x4f24, 0x1160,
9100 +       0x7078, 0xa005, 0x1148, 0x7150, 0xa186, 0xffff, 0x0128, 0x080c,
9101 +       0x4ddc, 0x0110, 0x080c, 0x4f02, 0x20a9, 0x0008, 0x2298, 0x26a0,
9102 +       0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c,
9103 +       0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e18,
9104 +       0x080c, 0x6fad, 0xa086, 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30,
9105 +       0xa296, 0x1104, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc,
9106 +       0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0014,
9107 +       0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0015,
9108 +       0x080c, 0x4edf, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011,
9109 +       0xcc8e, 0x080c, 0x4f24, 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158,
9110 +       0xa186, 0xffff, 0x0170, 0xa180, 0x2f6e, 0x200d, 0xa18c, 0xff00,
9111 +       0x810f, 0x080c, 0x4ddc, 0x0128, 0x080c, 0x4412, 0x0110, 0x080c,
9112 +       0x2a11, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
9113 +       0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6,
9114 +       0x7084, 0xa005, 0x05b8, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086,
9115 +       0x0014, 0x1570, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1105, 0x1540,
9116 +       0x7834, 0x2011, 0x0100, 0xa21e, 0x1148, 0x7a38, 0xd2fc, 0x0128,
9117 +       0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x0060, 0xa005, 0x11c0,
9118 +       0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001,
9119 +       0x708b, 0x0000, 0x7a38, 0xd2f4, 0x0138, 0x2001, 0xc674, 0x2004,
9120 +       0xd0a4, 0x1110, 0x70d7, 0x0008, 0x708f, 0x0016, 0x0029, 0x0010,
9121 +       0x080c, 0x4e5b, 0x00fe, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000,
9122 +       0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430,
9123 +       0x2011, 0xcc8e, 0x708f, 0x0017, 0x080c, 0x4f24, 0x1150, 0x7078,
9124 +       0xa005, 0x1138, 0x080c, 0x4d51, 0x1170, 0xa085, 0x0001, 0x080c,
9125 +       0x2a11, 0x20a9, 0x0008, 0x2099, 0xcc8e, 0x26a0, 0x53a6, 0x20a3,
9126 +       0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0010,
9127 +       0x080c, 0x4968, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011,
9128 +       0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084, 0x1168, 0x2079, 0xcc80,
9129 +       0x7a30, 0xa296, 0x1106, 0x1138, 0x7834, 0xa005, 0x1120, 0x708f,
9130 +       0x0018, 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f,
9131 +       0x0019, 0x080c, 0x4edf, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430,
9132 +       0x2099, 0xcc8e, 0x2039, 0xcc0e, 0x27a0, 0x20a9, 0x0040, 0x53a3,
9133 +       0x080c, 0x4f24, 0x11e8, 0x2728, 0x2514, 0x8207, 0xa084, 0x00ff,
9134 +       0x8000, 0x2018, 0xa294, 0x00ff, 0x8007, 0xa205, 0x202a, 0x7054,
9135 +       0x2310, 0x8214, 0xa2a0, 0xcc0e, 0x2414, 0xa38c, 0x0001, 0x0118,
9136 +       0xa294, 0xff00, 0x0018, 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222,
9137 +       0x2798, 0x26a0, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3,
9138 +       0x0000, 0x60c3, 0x0084, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084,
9139 +       0xa005, 0x01d0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084,
9140 +       0x1188, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1107, 0x1158, 0x7834,
9141 +       0xa005, 0x1140, 0x708b, 0x0001, 0x080c, 0x4ec5, 0x708f, 0x001a,
9142 +       0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x001b,
9143 +       0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b,
9144 +       0x7484, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004,
9145 +       0x20a8, 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4e42, 0x0005, 0x0005,
9146 +       0x0005, 0x0086, 0x0096, 0x2029, 0xc653, 0x252c, 0x20a9, 0x0008,
9147 +       0x2041, 0xcc0e, 0x28a0, 0x2099, 0xcc8e, 0x53a3, 0x20a9, 0x0008,
9148 +       0x2011, 0x0007, 0xd5d4, 0x0110, 0x2011, 0x0000, 0x2800, 0xa200,
9149 +       0x200c, 0xa1a6, 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210, 0x0008,
9150 +       0x8211, 0x1f04, 0x4d66, 0x0804, 0x4dd4, 0x82ff, 0x1160, 0xd5d4,
9151 +       0x0120, 0xa1a6, 0x3fff, 0x0d90, 0x0020, 0xa1a6, 0x3fff, 0x0904,
9152 +       0x4dd4, 0xa18d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4,
9153 +       0x0110, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423, 0x0008,
9154 +       0x8424, 0x1240, 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318, 0x1f04,
9155 +       0x4d8c, 0x04d0, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x1f04,
9156 +       0x4d9e, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0158, 0x0006, 0x2039,
9157 +       0x0007, 0x2200, 0xa73a, 0x000e, 0x27a8, 0xa5a8, 0x0010, 0x1f04,
9158 +       0x4dad, 0x7552, 0xa5c8, 0x2f6e, 0x292d, 0xa5ac, 0x00ff, 0x7576,
9159 +       0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x29f1, 0x001e, 0x60e7,
9160 +       0x0000, 0x65ea, 0x2018, 0x2304, 0xa405, 0x201a, 0x707b, 0x0001,
9161 +       0x26a0, 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3,
9162 +       0x0000, 0xa085, 0x0001, 0x0028, 0xa006, 0x0018, 0xa006, 0x080c,
9163 +       0x1519, 0x009e, 0x008e, 0x0005, 0x2118, 0x2021, 0x0000, 0x2001,
9164 +       0x0007, 0xa39a, 0x0010, 0x0218, 0x8420, 0x8001, 0x0cd0, 0x2118,
9165 +       0x84ff, 0x0120, 0xa39a, 0x0010, 0x8421, 0x1de0, 0x2021, 0x0001,
9166 +       0x83ff, 0x0118, 0x8423, 0x8319, 0x1de8, 0xa238, 0x2704, 0xa42c,
9167 +       0x11b8, 0xa405, 0x203a, 0x7152, 0xa1a0, 0x2f6e, 0x242d, 0xa5ac,
9168 +       0x00ff, 0x7576, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x29f1,
9169 +       0x001e, 0x60e7, 0x0000, 0x65ea, 0x707b, 0x0001, 0xa084, 0x0000,
9170 +       0x0005, 0x00e6, 0x2071, 0xc600, 0x707f, 0x0000, 0x00ee, 0x0005,
9171 +       0x00e6, 0x00f6, 0x2079, 0x0100, 0x2071, 0x0140, 0x080c, 0x8bf5,
9172 +       0x7004, 0xa084, 0x4000, 0x0120, 0x7003, 0x1000, 0x7003, 0x0000,
9173 +       0x0126, 0x2091, 0x8000, 0x2071, 0xc623, 0x2073, 0x0000, 0x7840,
9174 +       0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x001e, 0xa094,
9175 +       0x0010, 0xa285, 0x0080, 0x7842, 0x7a42, 0x002e, 0x012e, 0x00fe,
9176 +       0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x2011, 0xc931, 0x2013,
9177 +       0x0000, 0x7087, 0x0000, 0x012e, 0x20e1, 0x9080, 0x60a3, 0x0056,
9178 +       0x60a7, 0x9575, 0x080c, 0x8bec, 0x2009, 0x07d0, 0x2011, 0x4e18,
9179 +       0x080c, 0x7036, 0x0005, 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091,
9180 +       0x8000, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c,
9181 +       0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c, 0x8e79,
9182 +       0x003e, 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x2061, 0xc93a, 0x601b,
9183 +       0x0000, 0x601f, 0x0000, 0x2061, 0xc600, 0x6003, 0x0001, 0x2061,
9184 +       0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, 0x2011,
9185 +       0x4e90, 0x080c, 0x6fa1, 0x012e, 0x00ce, 0x002e, 0x001e, 0x0005,
9186 +       0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x0100, 0x080c,
9187 +       0x8bf5, 0x2071, 0x0140, 0x7004, 0xa084, 0x4000, 0x0120, 0x7003,
9188 +       0x1000, 0x7003, 0x0000, 0x080c, 0x5f2a, 0x01a8, 0x080c, 0x5f48,
9189 +       0x1190, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x0016, 0x080c, 0x2a95,
9190 +       0x2001, 0xc8d6, 0x2102, 0x001e, 0x2001, 0xc8e6, 0x2003, 0x0000,
9191 +       0x080c, 0x5e5a, 0x0030, 0x2001, 0x0001, 0x080c, 0x296d, 0x080c,
9192 +       0x4e5b, 0x012e, 0x000e, 0x00ee, 0x0005, 0x20a9, 0x0040, 0x20a1,
9193 +       0xcdc0, 0x2099, 0xcc8e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0,
9194 +       0x1f04, 0x4ecb, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099,
9195 +       0xcc00, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x0005, 0x20e1,
9196 +       0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9,
9197 +       0x000c, 0x53a6, 0x0005, 0x00c6, 0x0006, 0x2061, 0x0100, 0x810f,
9198 +       0x2001, 0xc631, 0x2004, 0xa005, 0x1138, 0x2001, 0xc615, 0x2004,
9199 +       0xa084, 0x00ff, 0xa105, 0x0010, 0xa185, 0x00f7, 0x604a, 0x000e,
9200 +       0x00ce, 0x0005, 0x0016, 0x0046, 0x2001, 0xc653, 0x2004, 0xd0a4,
9201 +       0x0158, 0xa006, 0x2020, 0x2009, 0x002a, 0x080c, 0xc190, 0x2001,
9202 +       0xc60c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0000,
9203 +       0x080c, 0x2e19, 0x004e, 0x001e, 0x0005, 0x080c, 0x4e5b, 0x708f,
9204 +       0x0000, 0x7087, 0x0000, 0x0005, 0x0006, 0x2001, 0xc60c, 0x2004,
9205 +       0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, 0x0016, 0x0126, 0x2091,
9206 +       0x8000, 0x2001, 0x0101, 0x200c, 0xa18d, 0x0006, 0x2102, 0x012e,
9207 +       0x001e, 0x000e, 0x0005, 0x0156, 0x20a9, 0x00ff, 0x2009, 0xc77b,
9208 +       0xa006, 0x200a, 0x8108, 0x1f04, 0x4f41, 0x015e, 0x0005, 0x00d6,
9209 +       0x0036, 0x0156, 0x0136, 0x0146, 0x2069, 0xc652, 0xa006, 0x6002,
9210 +       0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x2f6e, 0x231d,
9211 +       0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0,
9212 +       0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e,
9213 +       0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066,
9214 +       0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086,
9215 +       0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x60be, 0x61a2,
9216 +       0x00d6, 0x60a4, 0xa06d, 0x0110, 0x080c, 0x1619, 0x60a7, 0x0000,
9217 +       0x60a8, 0xa06d, 0x0110, 0x080c, 0x1619, 0x60ab, 0x0000, 0x00de,
9218 +       0xa006, 0x604a, 0x6810, 0x603a, 0x680c, 0x6046, 0xa006, 0x60b2,
9219 +       0x60ae, 0x60b6, 0x60bb, 0x0520, 0x6814, 0xa084, 0x00ff, 0x6042,
9220 +       0x014e, 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091,
9221 +       0x8000, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x1a04,
9222 +       0x505c, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x5061,
9223 +       0x2001, 0xc60c, 0x2004, 0xa084, 0x0003, 0x01c0, 0x2001, 0xc60c,
9224 +       0x2004, 0xd084, 0x1904, 0x5044, 0xa188, 0xc77b, 0x2104, 0xa065,
9225 +       0x0904, 0x5044, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x1904,
9226 +       0x5044, 0x6000, 0xd0c4, 0x0904, 0x5044, 0x0068, 0xa188, 0xc77b,
9227 +       0x2104, 0xa065, 0x0904, 0x5028, 0x6004, 0xa084, 0x00ff, 0xa08e,
9228 +       0x0006, 0x1904, 0x502d, 0x60a4, 0xa00d, 0x0118, 0x080c, 0x5568,
9229 +       0x05d0, 0x60a8, 0xa00d, 0x0188, 0x080c, 0x55b3, 0x1170, 0x694c,
9230 +       0xd1fc, 0x1118, 0x080c, 0x5272, 0x0448, 0x080c, 0x5221, 0x694c,
9231 +       0xd1ec, 0x1520, 0x080c, 0x545a, 0x0408, 0x694c, 0xa184, 0xa000,
9232 +       0x0178, 0xd1ec, 0x0140, 0xd1fc, 0x0118, 0x080c, 0x5469, 0x0028,
9233 +       0x080c, 0x5469, 0x0028, 0xd1fc, 0x0118, 0x080c, 0x5221, 0x0070,
9234 +       0x6050, 0xa00d, 0x0130, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052,
9235 +       0x0028, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x080c, 0x79b6,
9236 +       0xa006, 0x012e, 0x0005, 0x2001, 0x0005, 0x2009, 0x0000, 0x04e8,
9237 +       0x2001, 0x0028, 0x2009, 0x0000, 0x04c0, 0xa082, 0x0006, 0x12a0,
9238 +       0x2001, 0xc635, 0x2004, 0xd0ac, 0x1160, 0x60a0, 0xd0bc, 0x1148,
9239 +       0x6100, 0xd1fc, 0x0904, 0x4fe3, 0x2001, 0x0029, 0x2009, 0x1000,
9240 +       0x0420, 0x2001, 0x0028, 0x00a8, 0x2009, 0xc60c, 0x210c, 0xd18c,
9241 +       0x0118, 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004,
9242 +       0x0040, 0x2001, 0x0029, 0x6100, 0xd1fc, 0x0118, 0x2009, 0x1000,
9243 +       0x0060, 0x2009, 0x0000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000,
9244 +       0x0020, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x012e, 0x0005,
9245 +       0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, 0xa084, 0xff00, 0xa08e,
9246 +       0xff00, 0x1120, 0x2001, 0xc8d3, 0x2064, 0x0080, 0x6844, 0x8007,
9247 +       0xa084, 0x00ff, 0x2008, 0xa182, 0x00ff, 0x1698, 0xa188, 0xc77b,
9248 +       0x2104, 0xa065, 0x01d8, 0x080c, 0x56ed, 0x11d8, 0x2c70, 0x080c,
9249 +       0x958d, 0x0568, 0x2e00, 0x601a, 0x2d00, 0x6012, 0x601f, 0x0009,
9250 +       0x600b, 0x0000, 0x6844, 0xa08e, 0xff00, 0x1110, 0x600b, 0x8000,
9251 +       0x2009, 0x0100, 0x080c, 0x9613, 0xa006, 0x00b0, 0x2001, 0x0028,
9252 +       0x0090, 0x2009, 0xc60c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004,
9253 +       0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029,
9254 +       0x0010, 0x2001, 0x0029, 0xa005, 0x012e, 0x00ee, 0x0005, 0x2001,
9255 +       0x002c, 0x0cc8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, 0x8007,
9256 +       0xa084, 0x00ff, 0x2008, 0xa182, 0x00ff, 0x1a04, 0x510d, 0xa188,
9257 +       0xc77b, 0x2104, 0xa065, 0x01c0, 0x6004, 0xa084, 0x00ff, 0xa08e,
9258 +       0x0006, 0x11a8, 0x2c70, 0x080c, 0x958d, 0x05e8, 0x2e00, 0x601a,
9259 +       0x2d00, 0x6012, 0x600b, 0xffff, 0x601f, 0x000a, 0x2009, 0x0003,
9260 +       0x080c, 0x9613, 0xa006, 0x0460, 0x2001, 0x0028, 0x0440, 0xa082,
9261 +       0x0006, 0x1298, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1158, 0x60a0,
9262 +       0xd0bc, 0x1140, 0x6100, 0xd1fc, 0x09e8, 0x2001, 0x0029, 0x2009,
9263 +       0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009, 0xc60c, 0x210c,
9264 +       0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184, 0x0118, 0x2001,
9265 +       0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001, 0x0029, 0xa005,
9266 +       0x012e, 0x00ee, 0x0005, 0x2001, 0x002c, 0x0cc8, 0x00f6, 0x00e6,
9267 +       0x0126, 0x2091, 0x8000, 0x2011, 0x0000, 0x2079, 0xc600, 0x6944,
9268 +       0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x51d8, 0x080c,
9269 +       0x533d, 0x11a0, 0x6004, 0xa084, 0x00ff, 0xa082, 0x0006, 0x1270,
9270 +       0x6864, 0xa0c6, 0x006f, 0x0150, 0x2001, 0xc635, 0x2004, 0xd0ac,
9271 +       0x1904, 0x51c1, 0x60a0, 0xd0bc, 0x1904, 0x51c1, 0x6864, 0xa0c6,
9272 +       0x006f, 0x0118, 0x2008, 0x0804, 0x518a, 0x6968, 0x2140, 0xa18c,
9273 +       0xff00, 0x810f, 0x78d4, 0xd0ac, 0x1118, 0xa182, 0x0080, 0x06d0,
9274 +       0xa182, 0x00ff, 0x16b8, 0x6a70, 0x6b6c, 0x7870, 0xa306, 0x1160,
9275 +       0x7874, 0xa24e, 0x1118, 0x2208, 0x2310, 0x0460, 0xa9cc, 0xff00,
9276 +       0x1118, 0x2208, 0x2310, 0x0430, 0x080c, 0x3f6e, 0x2c70, 0x0550,
9277 +       0x2009, 0x0000, 0x2011, 0x0000, 0xa0c6, 0x4000, 0x1160, 0x0006,
9278 +       0x2e60, 0x080c, 0x55de, 0x1108, 0xc185, 0x7000, 0xd0bc, 0x0108,
9279 +       0xc18d, 0x000e, 0x0088, 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060,
9280 +       0xa0c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009,
9281 +       0x1108, 0x0010, 0x2001, 0x4006, 0x6866, 0x696a, 0x6a6e, 0x2001,
9282 +       0x0030, 0x0450, 0x080c, 0x958d, 0x1138, 0x2001, 0x4005, 0x2009,
9283 +       0x0003, 0x2011, 0x0000, 0x0c80, 0x2e00, 0x601a, 0x080c, 0xb05e,
9284 +       0x2d00, 0x6012, 0x601f, 0x0001, 0x6838, 0xd88c, 0x0108, 0xc0f5,
9285 +       0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2e46, 0x012e, 0x2001,
9286 +       0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x2009,
9287 +       0x0002, 0x080c, 0x9613, 0xa006, 0xa005, 0x012e, 0x00ee, 0x00fe,
9288 +       0x0005, 0x2001, 0x0028, 0x2009, 0x0000, 0x0cb0, 0x2009, 0xc60c,
9289 +       0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118,
9290 +       0x2001, 0x0004, 0x0010, 0x2001, 0x0029, 0x2009, 0x0000, 0x0c20,
9291 +       0x2001, 0x0029, 0x2009, 0x0000, 0x08f8, 0x6944, 0x6e48, 0xa684,
9292 +       0x3fff, 0xa082, 0x4000, 0x16b8, 0xa18c, 0xff00, 0x810f, 0xa182,
9293 +       0x00ff, 0x12e0, 0xa188, 0xc77b, 0x2104, 0xa065, 0x01b8, 0x6004,
9294 +       0xa084, 0x00ff, 0xa08e, 0x0006, 0x11b0, 0x684c, 0xd0ec, 0x0120,
9295 +       0x080c, 0x5469, 0x0431, 0x0030, 0x0421, 0x684c, 0xd0fc, 0x0110,
9296 +       0x080c, 0x545a, 0x080c, 0x54a7, 0xa006, 0x00c8, 0x2001, 0x0028,
9297 +       0x2009, 0x0000, 0x00a0, 0xa082, 0x0006, 0x1240, 0x6100, 0xd1fc,
9298 +       0x0d20, 0x2001, 0x0029, 0x2009, 0x1000, 0x0048, 0x2001, 0x0029,
9299 +       0x2009, 0x0000, 0x0020, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005,
9300 +       0x0005, 0x0126, 0x2091, 0x8000, 0x6050, 0xa00d, 0x0138, 0x2d00,
9301 +       0x200a, 0x6803, 0x0000, 0x6052, 0x012e, 0x0005, 0x2d00, 0x6052,
9302 +       0x604e, 0x6803, 0x0000, 0x0cc0, 0x0126, 0x2091, 0x8000, 0x604c,
9303 +       0xa005, 0x0170, 0x00e6, 0x2071, 0xc927, 0x7004, 0xa086, 0x0002,
9304 +       0x0168, 0x00ee, 0x604c, 0x6802, 0x2d00, 0x604e, 0x012e, 0x0005,
9305 +       0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0cc0, 0x701c, 0xac06,
9306 +       0x1d80, 0x604c, 0x2070, 0x7000, 0x6802, 0x2d00, 0x7002, 0x00ee,
9307 +       0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x604c, 0xa06d, 0x0130,
9308 +       0x6800, 0xa005, 0x1108, 0x6052, 0x604e, 0xad05, 0x012e, 0x0005,
9309 +       0x604c, 0xa06d, 0x0130, 0x6800, 0xa005, 0x1108, 0x6052, 0x604e,
9310 +       0xad05, 0x0005, 0x6803, 0x0000, 0x6084, 0xa00d, 0x0120, 0x2d00,
9311 +       0x200a, 0x6086, 0x0005, 0x2d00, 0x6086, 0x6082, 0x0cd8, 0x0126,
9312 +       0x00c6, 0x0026, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005,
9313 +       0x0110, 0xc285, 0x0008, 0xc284, 0x6202, 0x002e, 0x00ce, 0x012e,
9314 +       0x0005, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6218, 0x2260, 0x6204,
9315 +       0x0006, 0xa086, 0x0006, 0x1180, 0x609c, 0xd0ac, 0x0168, 0x2001,
9316 +       0xc653, 0x2004, 0xd0a4, 0x0140, 0xa284, 0xff00, 0x8007, 0xa086,
9317 +       0x0007, 0x1110, 0x2011, 0x0600, 0x000e, 0xa294, 0xff00, 0xa215,
9318 +       0x6206, 0x0006, 0xa086, 0x0006, 0x1128, 0x6290, 0x82ff, 0x1110,
9319 +       0x080c, 0x1519, 0x000e, 0x00ce, 0x012e, 0x0005, 0x0126, 0x00c6,
9320 +       0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0x0006, 0xa086, 0x0006,
9321 +       0x1178, 0x609c, 0xd0a4, 0x0160, 0x2001, 0xc653, 0x2004, 0xd0ac,
9322 +       0x1138, 0xa284, 0x00ff, 0xa086, 0x0007, 0x1110, 0x2011, 0x0006,
9323 +       0x000e, 0xa294, 0x00ff, 0x8007, 0xa215, 0x6206, 0x00ce, 0x012e,
9324 +       0x0005, 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, 0x00b0,
9325 +       0xa190, 0xc77b, 0x2204, 0xa065, 0x1180, 0x0016, 0x00d6, 0x080c,
9326 +       0x15e5, 0x2d60, 0x00de, 0x001e, 0x0d80, 0x2c00, 0x2012, 0x60a7,
9327 +       0x0000, 0x60ab, 0x0000, 0x080c, 0x4f47, 0xa006, 0x002e, 0x0005,
9328 +       0x0126, 0x2091, 0x8000, 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085,
9329 +       0x0001, 0x0480, 0x00d6, 0xa190, 0xc77b, 0x2204, 0xa06d, 0x0540,
9330 +       0x2013, 0x0000, 0x00d6, 0x00c6, 0x2d60, 0x60a4, 0xa06d, 0x0110,
9331 +       0x080c, 0x1619, 0x60a8, 0xa06d, 0x0110, 0x080c, 0x1619, 0x00ce,
9332 +       0x00de, 0x00d6, 0x00c6, 0x68bc, 0x2060, 0x8cff, 0x0168, 0x600c,
9333 +       0x0006, 0x6010, 0x2068, 0x080c, 0xac91, 0x0110, 0x080c, 0x1629,
9334 +       0x080c, 0x95e3, 0x00ce, 0x0c88, 0x00ce, 0x00de, 0x080c, 0x1619,
9335 +       0x00de, 0xa006, 0x002e, 0x012e, 0x0005, 0x0016, 0xa182, 0x00ff,
9336 +       0x0218, 0xa085, 0x0001, 0x0030, 0xa188, 0xc77b, 0x2104, 0xa065,
9337 +       0x0dc0, 0xa006, 0x001e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146,
9338 +       0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c, 0x6002, 0x080c,
9339 +       0x5f22, 0x1558, 0x60a0, 0xa086, 0x007e, 0x2069, 0xcc90, 0x0130,
9340 +       0x2001, 0xc635, 0x2004, 0xd0ac, 0x1500, 0x0098, 0x2d04, 0xd0e4,
9341 +       0x01e0, 0x00d6, 0x2069, 0xcc8e, 0x00c6, 0x2061, 0xc8f9, 0x6810,
9342 +       0x2062, 0x6814, 0x6006, 0x6818, 0x600a, 0x681c, 0x600e, 0x00ce,
9343 +       0x00de, 0x8d69, 0x2d04, 0x2069, 0x0140, 0xa005, 0x1110, 0x2001,
9344 +       0x0001, 0x6886, 0x2069, 0xc600, 0x68a6, 0x2069, 0xcc8e, 0x6808,
9345 +       0x605e, 0x6810, 0x6062, 0x6138, 0xa10a, 0x0208, 0x603a, 0x6814,
9346 +       0x6066, 0x2099, 0xcc96, 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004,
9347 +       0x53a3, 0x2099, 0xcc9a, 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004,
9348 +       0x53a3, 0x2069, 0xccae, 0x6808, 0x606a, 0x690c, 0x616e, 0x6810,
9349 +       0x6072, 0x6818, 0x6076, 0x60a0, 0xa086, 0x007e, 0x1120, 0x2069,
9350 +       0xcc8e, 0x690c, 0x616e, 0xa182, 0x0211, 0x1218, 0x2009, 0x0008,
9351 +       0x0400, 0xa182, 0x0259, 0x1218, 0x2009, 0x0007, 0x00d0, 0xa182,
9352 +       0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0xa182, 0x0349, 0x1218,
9353 +       0x2009, 0x0005, 0x0070, 0xa182, 0x0421, 0x1218, 0x2009, 0x0004,
9354 +       0x0040, 0xa182, 0x0581, 0x1218, 0x2009, 0x0003, 0x0010, 0x2009,
9355 +       0x0002, 0x6192, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, 0x0016,
9356 +       0x0026, 0x00e6, 0x2071, 0xcc8d, 0x2e04, 0x6896, 0x2071, 0xcc8e,
9357 +       0x7004, 0x689a, 0x701c, 0x689e, 0x6a00, 0x2009, 0xc672, 0x210c,
9358 +       0xd0bc, 0x0120, 0xd1ec, 0x0110, 0xc2ad, 0x0008, 0xc2ac, 0xd0c4,
9359 +       0x0120, 0xd1e4, 0x0110, 0xc2bd, 0x0008, 0xc2bc, 0x6a02, 0x00ee,
9360 +       0x002e, 0x001e, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4,
9361 +       0xa06d, 0x01c0, 0x6900, 0x81ff, 0x1540, 0x6a04, 0xa282, 0x0010,
9362 +       0x1648, 0xad88, 0x0004, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff,
9363 +       0x0128, 0x8108, 0x1f04, 0x5415, 0x080c, 0x1519, 0x260a, 0x8210,
9364 +       0x6a06, 0x0098, 0x080c, 0x1602, 0x01a8, 0x2d00, 0x60a6, 0x6803,
9365 +       0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108,
9366 +       0x1f04, 0x542d, 0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, 0x012e,
9367 +       0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126, 0x2091, 0x8000, 0x00d6,
9368 +       0x60a4, 0xa00d, 0x01a0, 0x2168, 0x6800, 0xa005, 0x1160, 0x080c,
9369 +       0x5568, 0x1168, 0x200b, 0xffff, 0x6804, 0xa08a, 0x0002, 0x0218,
9370 +       0x8001, 0x6806, 0x0020, 0x080c, 0x1619, 0x60a7, 0x0000, 0x00de,
9371 +       0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x55c6, 0x0010,
9372 +       0x080c, 0x5221, 0x080c, 0x54e0, 0x1dd8, 0x080c, 0x54a7, 0x012e,
9373 +       0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a8, 0xa06d, 0x01c0,
9374 +       0x6950, 0x81ff, 0x1540, 0x6a54, 0xa282, 0x0010, 0x1670, 0xad88,
9375 +       0x0018, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0128, 0x8108,
9376 +       0x1f04, 0x547b, 0x080c, 0x1519, 0x260a, 0x8210, 0x6a56, 0x0098,
9377 +       0x080c, 0x1602, 0x01d0, 0x2d00, 0x60aa, 0x6853, 0x0000, 0xad88,
9378 +       0x0018, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x5493,
9379 +       0x6857, 0x0001, 0x6e62, 0x0010, 0x080c, 0x5272, 0x0089, 0x1de0,
9380 +       0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126,
9381 +       0x2091, 0x8000, 0x080c, 0x79b6, 0x012e, 0x0005, 0xa01e, 0x0010,
9382 +       0x2019, 0x0001, 0xa00e, 0x0126, 0x2091, 0x8000, 0x604c, 0x2068,
9383 +       0x6000, 0xd0dc, 0x1170, 0x8dff, 0x01f8, 0x83ff, 0x0120, 0x6848,
9384 +       0xa606, 0x0158, 0x0030, 0x683c, 0xa406, 0x1118, 0x6840, 0xa506,
9385 +       0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, 0x080c, 0x8fb7, 0x6a00,
9386 +       0x604c, 0xad06, 0x1110, 0x624e, 0x0018, 0xa180, 0x0000, 0x2202,
9387 +       0x82ff, 0x1110, 0x6152, 0x8dff, 0x012e, 0x0005, 0xa01e, 0x0010,
9388 +       0x2019, 0x0001, 0xa00e, 0x6080, 0x2068, 0x8dff, 0x01e8, 0x83ff,
9389 +       0x0120, 0x6848, 0xa606, 0x0158, 0x0030, 0x683c, 0xa406, 0x1118,
9390 +       0x6840, 0xa506, 0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, 0x6a00,
9391 +       0x6080, 0xad06, 0x1110, 0x6282, 0x0018, 0xa180, 0x0000, 0x2202,
9392 +       0x82ff, 0x1110, 0x6186, 0x8dff, 0x0005, 0xa016, 0x080c, 0x5562,
9393 +       0x1110, 0x2011, 0x0001, 0x080c, 0x55ad, 0x1110, 0xa295, 0x0002,
9394 +       0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xad46, 0x0010, 0xa085,
9395 +       0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xacd6, 0x0010,
9396 +       0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xad29,
9397 +       0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c,
9398 +       0xacf2, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118,
9399 +       0x080c, 0xad62, 0x0010, 0xa085, 0x0001, 0x0005, 0x0126, 0x0006,
9400 +       0x00d6, 0x2091, 0x8000, 0x6080, 0xa06d, 0x01a0, 0x6800, 0x0006,
9401 +       0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0xaf03, 0x0006,
9402 +       0x6000, 0xd0fc, 0x0110, 0x080c, 0xc4e0, 0x000e, 0x080c, 0x580a,
9403 +       0x000e, 0x0c50, 0x6083, 0x0000, 0x6087, 0x0000, 0x00de, 0x000e,
9404 +       0x012e, 0x0005, 0x60a4, 0xa00d, 0x1118, 0xa085, 0x0001, 0x0005,
9405 +       0x00e6, 0x2170, 0x7000, 0xa005, 0x1168, 0x20a9, 0x0010, 0xae88,
9406 +       0x0004, 0x2104, 0xa606, 0x0130, 0x8108, 0x1f04, 0x5571, 0xa085,
9407 +       0x0001, 0x0008, 0xa006, 0x00ee, 0x0005, 0x00d6, 0x0126, 0x2091,
9408 +       0x8000, 0x60a4, 0xa06d, 0x1128, 0x080c, 0x1602, 0x01a0, 0x2d00,
9409 +       0x60a6, 0x6803, 0x0001, 0x6807, 0x0000, 0xad88, 0x0004, 0x20a9,
9410 +       0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x5591, 0xa085, 0x0001,
9411 +       0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, 0x00d6, 0x0126, 0x2091,
9412 +       0x8000, 0x60a4, 0xa06d, 0x0130, 0x60a7, 0x0000, 0x080c, 0x1619,
9413 +       0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0x60a8, 0xa00d, 0x1118,
9414 +       0xa085, 0x0001, 0x0005, 0x00e6, 0x2170, 0x7050, 0xa005, 0x1160,
9415 +       0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, 0x0128, 0x8108,
9416 +       0x1f04, 0x55bc, 0xa085, 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091,
9417 +       0x8000, 0x0c19, 0x1188, 0x200b, 0xffff, 0x00d6, 0x60a8, 0x2068,
9418 +       0x6854, 0xa08a, 0x0002, 0x0218, 0x8001, 0x6856, 0x0020, 0x080c,
9419 +       0x1619, 0x60ab, 0x0000, 0x00de, 0x012e, 0x0005, 0x609c, 0xd0a4,
9420 +       0x0005, 0x00f6, 0x080c, 0x5f22, 0x01b0, 0x71b8, 0x81ff, 0x1198,
9421 +       0x71d4, 0xd19c, 0x0180, 0x2001, 0x007e, 0xa080, 0xc77b, 0x2004,
9422 +       0xa07d, 0x0148, 0x7804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1118,
9423 +       0x7800, 0xc0ed, 0x7802, 0x2079, 0xc652, 0x7804, 0xd0a4, 0x01e8,
9424 +       0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c,
9425 +       0x533d, 0x1168, 0x6004, 0xa084, 0xff00, 0x8007, 0xa096, 0x0004,
9426 +       0x0118, 0xa086, 0x0006, 0x1118, 0x6000, 0xc0ed, 0x6002, 0x001e,
9427 +       0x8108, 0x1f04, 0x5606, 0x00ce, 0x015e, 0x080c, 0x570b, 0x0120,
9428 +       0x2001, 0xc8fc, 0x200c, 0x0038, 0x2079, 0xc652, 0x7804, 0xd0a4,
9429 +       0x0130, 0x2009, 0x07d0, 0x2011, 0x5631, 0x080c, 0x7036, 0x00fe,
9430 +       0x0005, 0x2011, 0x5631, 0x080c, 0x6fad, 0x080c, 0x570b, 0x01f0,
9431 +       0x2001, 0xc7f9, 0x2004, 0xa080, 0x0000, 0x200c, 0xc1ec, 0x2102,
9432 +       0x2001, 0xc653, 0x2004, 0xd0a4, 0x0130, 0x2009, 0x07d0, 0x2011,
9433 +       0x5631, 0x080c, 0x7036, 0x00e6, 0x2071, 0xc600, 0x7073, 0x0000,
9434 +       0x7077, 0x0000, 0x080c, 0x2c62, 0x00ee, 0x04b0, 0x0156, 0x00c6,
9435 +       0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x533d, 0x1530,
9436 +       0x6000, 0xd0ec, 0x0518, 0x0046, 0x62a0, 0xa294, 0x00ff, 0x8227,
9437 +       0xa006, 0x2009, 0x0029, 0x080c, 0xc190, 0x6000, 0xc0e5, 0xc0ec,
9438 +       0x6002, 0x6004, 0xa084, 0x00ff, 0xa085, 0x0700, 0x6006, 0x2019,
9439 +       0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e,
9440 +       0x2009, 0x0000, 0x080c, 0xbef7, 0x007e, 0x004e, 0x001e, 0x8108,
9441 +       0x1f04, 0x565c, 0x00ce, 0x015e, 0x0005, 0x00c6, 0x6018, 0x2060,
9442 +       0x6000, 0xc0ec, 0x6002, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x080c,
9443 +       0x15e5, 0x2d60, 0x0508, 0x2009, 0x00ff, 0x60a7, 0x0000, 0x60ab,
9444 +       0x0000, 0x080c, 0x4f47, 0x6007, 0x0006, 0x6013, 0x00ff, 0x6017,
9445 +       0xffff, 0x606f, 0x0200, 0x606c, 0x6093, 0x0002, 0x60bb, 0x0520,
9446 +       0x60a3, 0x00ff, 0x60b7, 0x0000, 0x60af, 0x0000, 0x2c08, 0x2001,
9447 +       0xc8d3, 0x2102, 0xa085, 0x0001, 0x00de, 0x00ce, 0x0005, 0x7818,
9448 +       0x2004, 0xd0ac, 0x0005, 0x7818, 0x2004, 0xd0bc, 0x0005, 0x0156,
9449 +       0x00e6, 0x00d6, 0x00c6, 0x0026, 0x20a9, 0x00ff, 0x2009, 0x0000,
9450 +       0x0016, 0x080c, 0x533d, 0x1178, 0x2c70, 0x70ac, 0xa005, 0x0158,
9451 +       0x2060, 0x620c, 0x0026, 0x6010, 0x2068, 0x080c, 0x761a, 0x002e,
9452 +       0x2260, 0x82ff, 0x1db0, 0x001e, 0x8108, 0x1f04, 0x56d0, 0x002e,
9453 +       0x00ce, 0x00de, 0x00ee, 0x015e, 0x0005, 0x0006, 0x0016, 0x0026,
9454 +       0x6004, 0xa08c, 0x00ff, 0xa196, 0x0006, 0x0188, 0xa196, 0x0004,
9455 +       0x0170, 0xa196, 0x0005, 0x0158, 0xa08c, 0xff00, 0x810f, 0xa196,
9456 +       0x0006, 0x0128, 0xa196, 0x0004, 0x0110, 0xa196, 0x0005, 0x002e,
9457 +       0x001e, 0x000e, 0x0005, 0x00f6, 0x2001, 0xc7f9, 0x2004, 0xa07d,
9458 +       0x0110, 0x7800, 0xd0ec, 0x00fe, 0x0005, 0x0126, 0x0026, 0x2091,
9459 +       0x8000, 0x0006, 0x62a0, 0xa290, 0xc77b, 0x2204, 0xac06, 0x190c,
9460 +       0x1519, 0x000e, 0x6200, 0xa005, 0x0110, 0xc2fd, 0x0008, 0xc2fc,
9461 +       0x6202, 0x002e, 0x012e, 0x0005, 0x2011, 0xc635, 0x2204, 0xd0cc,
9462 +       0x0138, 0x2001, 0xc8fa, 0x200c, 0x2011, 0x5739, 0x080c, 0x7036,
9463 +       0x0005, 0x2011, 0x5739, 0x080c, 0x6fad, 0x2011, 0xc635, 0x2204,
9464 +       0xc0cc, 0x2012, 0x0005, 0x2071, 0xc734, 0x7003, 0x0001, 0x7007,
9465 +       0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f,
9466 +       0x0000, 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b,
9467 +       0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xc8c3, 0x7003,
9468 +       0xc734, 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xc8a3, 0x7013,
9469 +       0x0020, 0x7017, 0x0040, 0x7037, 0x0000, 0x0005, 0x0016, 0x00e6,
9470 +       0x2071, 0xc87b, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001,
9471 +       0xc653, 0x2004, 0xd0fc, 0x1150, 0x2001, 0xc653, 0x2004, 0xa00e,
9472 +       0xd09c, 0x0108, 0x8108, 0x7102, 0x0804, 0x57d4, 0x2001, 0xc672,
9473 +       0x200c, 0xa184, 0x000f, 0x2009, 0xc673, 0x210c, 0x0002, 0x577c,
9474 +       0x57af, 0x57b6, 0x57c0, 0x57c5, 0x577c, 0x577c, 0x577c, 0x579f,
9475 +       0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x7003,
9476 +       0x0004, 0x0136, 0x0146, 0x0156, 0x2099, 0xc676, 0x20a1, 0xc8cc,
9477 +       0x20a9, 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x0428, 0x708f,
9478 +       0x0005, 0x7007, 0x0122, 0x2001, 0x0002, 0x0030, 0x708f, 0x0002,
9479 +       0x7007, 0x0121, 0x2001, 0x0003, 0x7002, 0x7097, 0x0001, 0x0088,
9480 +       0x7007, 0x0122, 0x2001, 0x0002, 0x0020, 0x7007, 0x0121, 0x2001,
9481 +       0x0003, 0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007,
9482 +       0x709a, 0xa184, 0x00ff, 0x7092, 0x00ee, 0x001e, 0x0005, 0x00e6,
9483 +       0x2071, 0xc734, 0x684c, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a,
9484 +       0xa085, 0x0001, 0x0428, 0x6a60, 0x7236, 0x6b64, 0x733a, 0x6868,
9485 +       0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, 0x6844,
9486 +       0x7032, 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007, 0x8006,
9487 +       0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319,
9488 +       0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006,
9489 +       0x00ee, 0x0005, 0x0156, 0x00e6, 0x0026, 0x6838, 0xd0fc, 0x1904,
9490 +       0x5863, 0x6804, 0xa00d, 0x0188, 0x00d6, 0x2071, 0xc600, 0xa016,
9491 +       0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8,
9492 +       0x702e, 0x70b4, 0xa200, 0x70b6, 0x00de, 0x2071, 0xc734, 0x701c,
9493 +       0xa005, 0x1904, 0x5873, 0x20a9, 0x0032, 0x0f04, 0x5871, 0x0e04,
9494 +       0x582d, 0x2071, 0xc87b, 0x7200, 0x82ff, 0x05d8, 0x6934, 0xa186,
9495 +       0x0103, 0x1904, 0x5881, 0x6948, 0x6844, 0xa105, 0x1540, 0x2009,
9496 +       0x8020, 0x2200, 0x0002, 0x5871, 0x5848, 0x58e8, 0x58f5, 0x5871,
9497 +       0x2071, 0x0000, 0x20a9, 0x0032, 0x0f04, 0x5871, 0x7018, 0xd084,
9498 +       0x1dd8, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001,
9499 +       0x2091, 0x4080, 0x2071, 0xc600, 0x702c, 0x206a, 0x2d00, 0x702e,
9500 +       0x70b4, 0x8000, 0x70b6, 0x002e, 0x00ee, 0x015e, 0x0005, 0x6844,
9501 +       0xa086, 0x0100, 0x1130, 0x6868, 0xa005, 0x1118, 0x2009, 0x8020,
9502 +       0x0880, 0x2071, 0xc734, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000,
9503 +       0x7012, 0x7018, 0xa06d, 0x711a, 0x0110, 0x6902, 0x0008, 0x711e,
9504 +       0x0c10, 0xa18c, 0x00ff, 0xa186, 0x0013, 0x01e0, 0xa186, 0x001b,
9505 +       0x01c8, 0xa186, 0x0023, 0x01e8, 0xa186, 0x0017, 0x0130, 0xa186,
9506 +       0x001e, 0x0118, 0xa18e, 0x001f, 0x19e0, 0x684c, 0xd0cc, 0x09c8,
9507 +       0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x1998, 0x2009, 0x8021,
9508 +       0x0804, 0x5841, 0x6848, 0xa005, 0x1960, 0x2009, 0x8022, 0x0804,
9509 +       0x5841, 0x2071, 0x0000, 0x7018, 0xd084, 0x1918, 0x00e6, 0x2071,
9510 +       0xc682, 0x7140, 0x00ee, 0x6838, 0xa102, 0x0a04, 0x5871, 0x684c,
9511 +       0xa005, 0x1158, 0x00e6, 0x2071, 0xc682, 0x7004, 0x00ee, 0xd08c,
9512 +       0x1904, 0x5871, 0x2001, 0x8024, 0x0040, 0x6848, 0xd084, 0x1118,
9513 +       0x2001, 0x8023, 0x0010, 0x2001, 0x8027, 0x7022, 0x6840, 0x7026,
9514 +       0x683c, 0x702a, 0x6850, 0x702e, 0x0026, 0x0036, 0x6b38, 0x2e10,
9515 +       0xa290, 0x0072, 0x2d00, 0xa080, 0x0015, 0x200c, 0x2112, 0x8000,
9516 +       0x200c, 0x8210, 0x8319, 0x1dd0, 0x003e, 0x002e, 0x0804, 0x5856,
9517 +       0x7084, 0x8008, 0xa092, 0x001e, 0x1a04, 0x5871, 0x7186, 0xae90,
9518 +       0x0003, 0xa210, 0x683c, 0x2012, 0x0080, 0x7084, 0x8008, 0xa092,
9519 +       0x000f, 0x1a04, 0x5871, 0x7186, 0xae90, 0x0003, 0x8003, 0xa210,
9520 +       0x683c, 0x2012, 0x8210, 0x6840, 0x2012, 0x7088, 0xa10a, 0x0a04,
9521 +       0x585a, 0x718c, 0x7084, 0xa10a, 0x0a04, 0x585a, 0x2071, 0x0000,
9522 +       0x7018, 0xd084, 0x1904, 0x585a, 0x2071, 0xc87b, 0x7000, 0xa086,
9523 +       0x0002, 0x1150, 0x080c, 0x5b75, 0x2071, 0x0000, 0x701b, 0x0001,
9524 +       0x2091, 0x4080, 0x0804, 0x585a, 0x080c, 0x5b9f, 0x2071, 0x0000,
9525 +       0x701b, 0x0001, 0x2091, 0x4080, 0x0804, 0x585a, 0x0006, 0x684c,
9526 +       0x0006, 0x6837, 0x0103, 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0,
9527 +       0x2001, 0x0000, 0x40a4, 0x000e, 0xa084, 0x00ff, 0x684e, 0x000e,
9528 +       0x684a, 0x6952, 0x0005, 0x2071, 0xc734, 0x7004, 0x0002, 0x5951,
9529 +       0x5962, 0x5b60, 0x5b61, 0x5b6e, 0x5b74, 0x5952, 0x5b51, 0x5ae7,
9530 +       0x5b3d, 0x0005, 0x0126, 0x2091, 0x8000, 0x0e04, 0x5961, 0x2009,
9531 +       0x000d, 0x7030, 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x700b,
9532 +       0x0000, 0x012e, 0x2069, 0xc93a, 0x683c, 0xa005, 0x03f8, 0x11f0,
9533 +       0x0126, 0x2091, 0x8000, 0x2069, 0x0000, 0x6934, 0x2001, 0xc740,
9534 +       0x2004, 0xa10a, 0x0170, 0x0e04, 0x5985, 0x2069, 0x0000, 0x6818,
9535 +       0xd084, 0x1158, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091,
9536 +       0x4080, 0x2069, 0xc93a, 0x683f, 0xffff, 0x012e, 0x2069, 0xc600,
9537 +       0x6848, 0x6968, 0xa102, 0x2069, 0xc87b, 0x688a, 0x6984, 0x701c,
9538 +       0xa06d, 0x0120, 0x81ff, 0x0904, 0x59db, 0x00a0, 0x81ff, 0x0904,
9539 +       0x5aa1, 0x2071, 0xc87b, 0x7184, 0x7088, 0xa10a, 0x1258, 0x7190,
9540 +       0x2071, 0xc93a, 0x7038, 0xa005, 0x0128, 0x1b04, 0x5aa1, 0x713a,
9541 +       0x0804, 0x5aa1, 0x2071, 0xc87b, 0x718c, 0x0126, 0x2091, 0x8000,
9542 +       0x7084, 0xa10a, 0x0a04, 0x5abc, 0x0e04, 0x5a5d, 0x2071, 0x0000,
9543 +       0x7018, 0xd084, 0x1904, 0x5a5d, 0x2001, 0xffff, 0x2071, 0xc93a,
9544 +       0x703a, 0x2071, 0xc87b, 0x7000, 0xa086, 0x0002, 0x1150, 0x080c,
9545 +       0x5b75, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804,
9546 +       0x5a5d, 0x080c, 0x5b9f, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091,
9547 +       0x4080, 0x0804, 0x5a5d, 0x2071, 0xc87b, 0x7000, 0xa005, 0x0904,
9548 +       0x5a83, 0x6934, 0xa186, 0x0103, 0x1904, 0x5a60, 0x684c, 0xd0bc,
9549 +       0x1904, 0x5a83, 0x6948, 0x6844, 0xa105, 0x1904, 0x5a78, 0x2009,
9550 +       0x8020, 0x2071, 0xc87b, 0x7000, 0x0002, 0x5a83, 0x5a43, 0x5a1b,
9551 +       0x5a2d, 0x59fa, 0x0136, 0x0146, 0x0156, 0x2099, 0xc676, 0x20a1,
9552 +       0xc8cc, 0x20a9, 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x2071,
9553 +       0xc8c3, 0xad80, 0x000f, 0x700e, 0x7013, 0x0002, 0x7007, 0x0002,
9554 +       0x700b, 0x0000, 0x2e10, 0x080c, 0x164d, 0x2071, 0xc734, 0x7007,
9555 +       0x0009, 0x0804, 0x5aa1, 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04,
9556 +       0x5aa1, 0xae90, 0x0003, 0xa210, 0x683c, 0x2012, 0x7186, 0x2071,
9557 +       0xc734, 0x080c, 0x5bf6, 0x0804, 0x5aa1, 0x7084, 0x8008, 0xa092,
9558 +       0x000f, 0x1a04, 0x5aa1, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c,
9559 +       0x2012, 0x8210, 0x6840, 0x2012, 0x7186, 0x2071, 0xc734, 0x080c,
9560 +       0x5bf6, 0x0804, 0x5aa1, 0x0126, 0x2091, 0x8000, 0x0e04, 0x5a5d,
9561 +       0x2071, 0x0000, 0x7018, 0xd084, 0x1180, 0x7122, 0x683c, 0x7026,
9562 +       0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x012e, 0x2071,
9563 +       0xc734, 0x080c, 0x5bf6, 0x0804, 0x5aa1, 0x012e, 0x0804, 0x5aa1,
9564 +       0xa18c, 0x00ff, 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, 0x0118,
9565 +       0xa18e, 0x001f, 0x11c0, 0x684c, 0xd0cc, 0x01a8, 0x6850, 0xa084,
9566 +       0x00ff, 0xa086, 0x0001, 0x1178, 0x2009, 0x8021, 0x0804, 0x59f1,
9567 +       0x6844, 0xa086, 0x0100, 0x1138, 0x6868, 0xa005, 0x1120, 0x2009,
9568 +       0x8020, 0x0804, 0x59f1, 0x2071, 0xc734, 0x080c, 0x5c08, 0x01c8,
9569 +       0x2071, 0xc734, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086,
9570 +       0x0003, 0x1130, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0108, 0x710e,
9571 +       0x7007, 0x0003, 0x080c, 0x5c21, 0x7050, 0xa086, 0x0100, 0x0904,
9572 +       0x5b61, 0x0126, 0x2091, 0x8000, 0x2071, 0xc734, 0x7008, 0xa086,
9573 +       0x0001, 0x1180, 0x0e04, 0x5aba, 0x2009, 0x000d, 0x7030, 0x200a,
9574 +       0x2091, 0x4080, 0x700b, 0x0000, 0x7004, 0xa086, 0x0006, 0x1110,
9575 +       0x7007, 0x0001, 0x012e, 0x0005, 0x2071, 0xc734, 0x080c, 0x5c08,
9576 +       0x0518, 0x2071, 0xc87b, 0x7084, 0x700a, 0x20a9, 0x0020, 0x2099,
9577 +       0xc87c, 0x20a1, 0xc8a3, 0x53a3, 0x7087, 0x0000, 0x2071, 0xc734,
9578 +       0x2069, 0xc8c3, 0x706c, 0x6826, 0x7070, 0x682a, 0x7074, 0x682e,
9579 +       0x7078, 0x6832, 0x2d10, 0x080c, 0x164d, 0x7007, 0x0008, 0x2001,
9580 +       0xffff, 0x2071, 0xc93a, 0x703a, 0x012e, 0x0804, 0x5aa1, 0x2069,
9581 +       0xc8c3, 0x6808, 0xa08e, 0x0000, 0x0904, 0x5b3c, 0xa08e, 0x0200,
9582 +       0x0904, 0x5b3a, 0xa08e, 0x0100, 0x1904, 0x5b3c, 0x0126, 0x2091,
9583 +       0x8000, 0x0e04, 0x5b38, 0x2069, 0x0000, 0x6818, 0xd084, 0x15c0,
9584 +       0x702c, 0x7130, 0x8108, 0xa102, 0x0230, 0xa00e, 0x7034, 0x706e,
9585 +       0x7038, 0x7072, 0x0048, 0x706c, 0xa080, 0x0040, 0x706e, 0x1220,
9586 +       0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, 0x0000,
9587 +       0x2001, 0xc8a0, 0x2004, 0xa005, 0x1190, 0x6934, 0x2069, 0xc87b,
9588 +       0x689c, 0x699e, 0x2069, 0xc93a, 0xa102, 0x1118, 0x683c, 0xa005,
9589 +       0x1368, 0x2001, 0xc8a1, 0x200c, 0x810d, 0x693e, 0x0038, 0x2009,
9590 +       0x8040, 0x6922, 0x681b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001,
9591 +       0x012e, 0x0010, 0x7007, 0x0005, 0x0005, 0x2001, 0xc8c5, 0x2004,
9592 +       0xa08e, 0x0100, 0x1128, 0x7007, 0x0001, 0x080c, 0x5bf6, 0x0005,
9593 +       0xa08e, 0x0000, 0x0de0, 0xa08e, 0x0200, 0x1dc8, 0x7007, 0x0005,
9594 +       0x0005, 0x701c, 0xa06d, 0x0158, 0x080c, 0x5c08, 0x0140, 0x7007,
9595 +       0x0003, 0x080c, 0x5c21, 0x7050, 0xa086, 0x0100, 0x0110, 0x0005,
9596 +       0x0005, 0x7050, 0xa09e, 0x0100, 0x1118, 0x7007, 0x0004, 0x0030,
9597 +       0xa086, 0x0200, 0x1110, 0x7007, 0x0005, 0x0005, 0x080c, 0x5bc4,
9598 +       0x7006, 0x080c, 0x5bf6, 0x0005, 0x0005, 0x00e6, 0x0156, 0x2071,
9599 +       0xc87b, 0x7184, 0x81ff, 0x0500, 0xa006, 0x7086, 0xae80, 0x0003,
9600 +       0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x0f04, 0x5b99,
9601 +       0x2014, 0x722a, 0x8000, 0x0f04, 0x5b99, 0x2014, 0x722e, 0x8000,
9602 +       0x0f04, 0x5b99, 0x2014, 0x723a, 0x8000, 0x0f04, 0x5b99, 0x2014,
9603 +       0x723e, 0xa180, 0x8030, 0x7022, 0x015e, 0x00ee, 0x0005, 0x00e6,
9604 +       0x0156, 0x2071, 0xc87b, 0x7184, 0x81ff, 0x01d8, 0xa006, 0x7086,
9605 +       0xae80, 0x0003, 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000,
9606 +       0x2014, 0x722a, 0x8000, 0x0f04, 0x5bbb, 0x2014, 0x723a, 0x8000,
9607 +       0x2014, 0x723e, 0x0018, 0x2001, 0x8020, 0x0010, 0x2001, 0x8042,
9608 +       0x7022, 0x015e, 0x00ee, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102,
9609 +       0x0230, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, 0x0048, 0x706c,
9610 +       0xa080, 0x0040, 0x706e, 0x1220, 0x7070, 0xa081, 0x0000, 0x7072,
9611 +       0x7132, 0x700c, 0x8001, 0x700e, 0x1180, 0x0126, 0x2091, 0x8000,
9612 +       0x0e04, 0x5bf0, 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001,
9613 +       0x0001, 0x700b, 0x0000, 0x012e, 0x0005, 0x2001, 0x0007, 0x0005,
9614 +       0x2001, 0x0006, 0x700b, 0x0001, 0x012e, 0x0005, 0x701c, 0xa06d,
9615 +       0x0170, 0x0126, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04,
9616 +       0x701e, 0xa005, 0x1108, 0x701a, 0x012e, 0x080c, 0x1619, 0x0005,
9617 +       0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0130, 0x2304, 0x230c,
9618 +       0xa10e, 0x0110, 0xa006, 0x0060, 0x732c, 0x8319, 0x7130, 0xa102,
9619 +       0x1118, 0x2300, 0xa005, 0x0020, 0x0210, 0xa302, 0x0008, 0x8002,
9620 +       0x0005, 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000,
9621 +       0x0126, 0x2091, 0x8000, 0x2009, 0xc959, 0x2104, 0xc08d, 0x200a,
9622 +       0x012e, 0x080c, 0x1669, 0x0005, 0x708c, 0xa08a, 0x0029, 0x1220,
9623 +       0xa082, 0x001d, 0x0033, 0x0010, 0x080c, 0x1519, 0x6027, 0x1e00,
9624 +       0x0005, 0x5d2f, 0x5caa, 0x5cc2, 0x5cff, 0x5d20, 0x5d5a, 0x5d6c,
9625 +       0x5cc2, 0x5d46, 0x5c4e, 0x5c7c, 0x5c4d, 0x0005, 0x00d6, 0x2069,
9626 +       0x0200, 0x6804, 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f,
9627 +       0x0028, 0x2069, 0xc90c, 0x2d04, 0x7002, 0x080c, 0x6024, 0x6028,
9628 +       0xa085, 0x0600, 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xc90c,
9629 +       0x2d04, 0x7002, 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036,
9630 +       0x0046, 0x0056, 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e,
9631 +       0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804,
9632 +       0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, 0x2069,
9633 +       0xc90c, 0x2d04, 0x7002, 0x080c, 0x60b1, 0x6028, 0xa085, 0x0600,
9634 +       0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xc90c, 0x2d04, 0x7002,
9635 +       0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056,
9636 +       0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e, 0x003e, 0x00ee,
9637 +       0x00de, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1e4, 0x1190, 0x080c,
9638 +       0x5dd7, 0xd1d4, 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x708f,
9639 +       0x0020, 0x080c, 0x5dd7, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f,
9640 +       0x001f, 0x0005, 0x6803, 0x0088, 0x6124, 0xd1cc, 0x1590, 0xd1dc,
9641 +       0x1568, 0xd1e4, 0x1540, 0xa184, 0x1e00, 0x1580, 0x60e3, 0x0001,
9642 +       0x600c, 0xc0b4, 0x600e, 0x080c, 0x5f52, 0x080c, 0x25fb, 0x0156,
9643 +       0x6803, 0x0100, 0x20a9, 0x0014, 0x6804, 0xd0dc, 0x1118, 0x1f04,
9644 +       0x5cdc, 0x0048, 0x20a9, 0x0014, 0x6803, 0x0080, 0x6804, 0xd0d4,
9645 +       0x1130, 0x1f04, 0x5ce6, 0x080c, 0x5f73, 0x015e, 0x0078, 0x015e,
9646 +       0x708f, 0x0028, 0x0058, 0x708f, 0x001e, 0x0040, 0x708f, 0x001d,
9647 +       0x0028, 0x708f, 0x0020, 0x0010, 0x708f, 0x001f, 0x0005, 0x60e3,
9648 +       0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x5f52, 0x080c, 0x25fb,
9649 +       0x6803, 0x0080, 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4,
9650 +       0x1130, 0xa184, 0x1e00, 0x1158, 0x708f, 0x0028, 0x0040, 0x708f,
9651 +       0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, 0x0005,
9652 +       0x6803, 0x00a0, 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c,
9653 +       0x1f06, 0x708f, 0x001e, 0x0010, 0x708f, 0x001d, 0x0005, 0x080c,
9654 +       0x5e49, 0x6124, 0xd1dc, 0x1188, 0x080c, 0x5dd7, 0x0016, 0x080c,
9655 +       0x1f06, 0x001e, 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x708f, 0x001e,
9656 +       0x0020, 0x708f, 0x001f, 0x080c, 0x5dd7, 0x0005, 0x6803, 0x00a0,
9657 +       0x6124, 0xd1d4, 0x1160, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4,
9658 +       0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f,
9659 +       0x0021, 0x0005, 0x080c, 0x5e49, 0x6124, 0xd1d4, 0x1150, 0xd1dc,
9660 +       0x1128, 0xd1e4, 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d,
9661 +       0x0010, 0x708f, 0x001f, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1d4,
9662 +       0x1178, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x708f,
9663 +       0x001e, 0x0040, 0x708f, 0x001d, 0x0028, 0x708f, 0x0020, 0x0010,
9664 +       0x708f, 0x001f, 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126,
9665 +       0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xc600, 0x2091, 0x8000,
9666 +       0x080c, 0x5f22, 0x11e8, 0x2001, 0xc60c, 0x200c, 0xd1b4, 0x01c0,
9667 +       0xc1b4, 0x2102, 0x6027, 0x0200, 0xe000, 0xe000, 0x6024, 0xd0cc,
9668 +       0x0158, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001,
9669 +       0xc600, 0x2003, 0x0001, 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408,
9670 +       0x080c, 0x5f3e, 0x0150, 0x080c, 0x5f34, 0x1138, 0x2001, 0x0001,
9671 +       0x080c, 0x296d, 0x080c, 0x5ef9, 0x00a0, 0x080c, 0x5e46, 0x0178,
9672 +       0x2001, 0x0001, 0x080c, 0x296d, 0x708c, 0xa086, 0x001e, 0x0120,
9673 +       0x708c, 0xa086, 0x0022, 0x1118, 0x708f, 0x0025, 0x0010, 0x708f,
9674 +       0x0021, 0x012e, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026,
9675 +       0x2011, 0x5de8, 0x080c, 0x7070, 0x002e, 0x0016, 0x0026, 0x2009,
9676 +       0x0064, 0x2011, 0x5de8, 0x080c, 0x7067, 0x002e, 0x001e, 0x0005,
9677 +       0x00e6, 0x00f6, 0x0016, 0x080c, 0x8bf5, 0x2071, 0xc600, 0x080c,
9678 +       0x5d83, 0x001e, 0x00fe, 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036,
9679 +       0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0126, 0x080c, 0x8bf5, 0x2061,
9680 +       0x0100, 0x2069, 0x0140, 0x2071, 0xc600, 0x2091, 0x8000, 0x6028,
9681 +       0xc09c, 0x602a, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002,
9682 +       0x080c, 0x8f18, 0x080c, 0x8dee, 0x080c, 0x7024, 0x0036, 0x2019,
9683 +       0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x080c, 0xc586,
9684 +       0x080c, 0xc5a1, 0x2001, 0xc600, 0x2003, 0x0004, 0x6027, 0x0008,
9685 +       0x080c, 0x12e1, 0x2001, 0x0001, 0x080c, 0x296d, 0x012e, 0x00fe,
9686 +       0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x2001,
9687 +       0xc600, 0x2004, 0xa086, 0x0004, 0x0140, 0x2001, 0xc8e5, 0x2003,
9688 +       0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x0005, 0x6020, 0xd09c,
9689 +       0x0005, 0x6800, 0xa086, 0x00c0, 0x0160, 0x6803, 0x00c0, 0x0156,
9690 +       0x20a9, 0x002d, 0x1d04, 0x5e52, 0x2091, 0x6000, 0x1f04, 0x5e52,
9691 +       0x015e, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069,
9692 +       0x0140, 0x2071, 0xc600, 0x2001, 0xc8e6, 0x200c, 0xa186, 0x0000,
9693 +       0x0158, 0xa186, 0x0001, 0x0158, 0xa186, 0x0002, 0x0158, 0xa186,
9694 +       0x0003, 0x0158, 0x0804, 0x5ee7, 0x708f, 0x0022, 0x0040, 0x708f,
9695 +       0x0021, 0x0028, 0x708f, 0x0023, 0x0020, 0x708f, 0x0024, 0x6043,
9696 +       0x0000, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c,
9697 +       0x2a1c, 0x0026, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002,
9698 +       0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c,
9699 +       0x8e79, 0x003e, 0x002e, 0x7000, 0xa08e, 0x0004, 0x0118, 0x602b,
9700 +       0x0028, 0x0010, 0x602b, 0x0020, 0x0156, 0x0126, 0x2091, 0x8000,
9701 +       0x20a9, 0x0005, 0x6024, 0xd0ac, 0x0120, 0x012e, 0x015e, 0x0804,
9702 +       0x5ef5, 0x6800, 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6904, 0xd1d4,
9703 +       0x1130, 0x6803, 0x0100, 0x1f04, 0x5eaa, 0x080c, 0x5f73, 0x012e,
9704 +       0x015e, 0x080c, 0x5f34, 0x01a8, 0x6044, 0xa005, 0x0168, 0x6050,
9705 +       0x0006, 0xa085, 0x0020, 0x6052, 0x080c, 0x5f73, 0xa006, 0x8001,
9706 +       0x1df0, 0x000e, 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c,
9707 +       0x5f73, 0x0016, 0x0026, 0x2009, 0x00c8, 0x2011, 0x5df5, 0x080c,
9708 +       0x7036, 0x002e, 0x001e, 0x2001, 0xc8e6, 0x2003, 0x0004, 0x080c,
9709 +       0x5c34, 0x080c, 0x5f34, 0x0148, 0x6804, 0xd0d4, 0x1130, 0xd0dc,
9710 +       0x1100, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x00ee, 0x00de, 0x00ce,
9711 +       0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140,
9712 +       0x2071, 0xc600, 0x2001, 0xc8e5, 0x2003, 0x0000, 0x2001, 0xc8d6,
9713 +       0x2003, 0x0000, 0x708f, 0x0000, 0x60e3, 0x0000, 0x6887, 0x0000,
9714 +       0x2001, 0x0000, 0x080c, 0x2a1c, 0x6803, 0x0000, 0x6043, 0x0090,
9715 +       0x6043, 0x0010, 0x6027, 0xffff, 0x602b, 0x182f, 0x00ee, 0x00de,
9716 +       0x00ce, 0x0005, 0x0006, 0x2001, 0xc8e5, 0x2004, 0xa086, 0xaaaa,
9717 +       0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xa084, 0x0030,
9718 +       0xa086, 0x0000, 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004,
9719 +       0xa084, 0x0030, 0xa086, 0x0030, 0x000e, 0x0005, 0x0006, 0x2001,
9720 +       0xc672, 0x2004, 0xa084, 0x0030, 0xa086, 0x0010, 0x000e, 0x0005,
9721 +       0x0006, 0x2001, 0xc672, 0x2004, 0xa084, 0x0030, 0xa086, 0x0020,
9722 +       0x000e, 0x0005, 0x2001, 0xc60c, 0x2004, 0xd0a4, 0x0170, 0x080c,
9723 +       0x2a3c, 0x0036, 0x0016, 0x2009, 0x0000, 0x2019, 0x0028, 0x080c,
9724 +       0x2e19, 0x001e, 0x003e, 0xa006, 0x0009, 0x0005, 0x00e6, 0x2071,
9725 +       0xc60c, 0x2e04, 0x0118, 0xa085, 0x0010, 0x0010, 0xa084, 0xffef,
9726 +       0x2072, 0x00ee, 0x0005, 0x6050, 0x0006, 0x60f0, 0x0006, 0x60ec,
9727 +       0x0006, 0x600c, 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, 0x602f,
9728 +       0x0100, 0x602f, 0x0000, 0x602f, 0x0040, 0x602f, 0x0000, 0x000e,
9729 +       0x602a, 0x000e, 0x6006, 0x000e, 0x600e, 0x000e, 0x60ee, 0x000e,
9730 +       0x60f2, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c,
9731 +       0x2a1c, 0x6800, 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6803, 0x00a0,
9732 +       0x000e, 0x6052, 0x6050, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036,
9733 +       0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071,
9734 +       0xc600, 0x6020, 0xa084, 0x0080, 0x0138, 0x2001, 0xc60c, 0x200c,
9735 +       0xc1bd, 0x2102, 0x0804, 0x601c, 0x2001, 0xc60c, 0x200c, 0xc1bc,
9736 +       0x2102, 0x6028, 0xa084, 0xe1ff, 0x602a, 0x6027, 0x0200, 0x6803,
9737 +       0x0090, 0x20a9, 0x0384, 0x6024, 0xd0cc, 0x1508, 0x1d04, 0x5fcb,
9738 +       0x2091, 0x6000, 0x1f04, 0x5fcb, 0x2011, 0x0003, 0x080c, 0x8f0e,
9739 +       0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x2019, 0x0000,
9740 +       0x080c, 0x8e79, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001,
9741 +       0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x0468, 0x86ff,
9742 +       0x1120, 0x080c, 0x1f06, 0x080c, 0x25fb, 0x60e3, 0x0000, 0x2001,
9743 +       0xc8d6, 0x2004, 0x080c, 0x2a1c, 0x60e2, 0x6803, 0x0080, 0x20a9,
9744 +       0x0384, 0x6027, 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c,
9745 +       0x0138, 0x1d04, 0x6001, 0x2091, 0x6000, 0x1f04, 0x6001, 0x0820,
9746 +       0x6028, 0xa085, 0x1e00, 0x602a, 0x70a4, 0xa005, 0x1118, 0x6887,
9747 +       0x0001, 0x0008, 0x6886, 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e,
9748 +       0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036,
9749 +       0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xc600, 0x2069,
9750 +       0x0140, 0x6020, 0xa084, 0x00c0, 0x0120, 0x6884, 0xa005, 0x1904,
9751 +       0x6078, 0x6803, 0x0088, 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001,
9752 +       0x0000, 0x080c, 0x2a1c, 0x2069, 0x0200, 0x6804, 0xa005, 0x1118,
9753 +       0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfbff, 0x602a, 0x6027,
9754 +       0x0400, 0x2069, 0xc90c, 0x7000, 0x206a, 0x708f, 0x0026, 0x7003,
9755 +       0x0001, 0x20a9, 0x0002, 0x1d04, 0x605b, 0x2091, 0x6000, 0x1f04,
9756 +       0x605b, 0x0804, 0x60a9, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027,
9757 +       0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0520, 0xa084,
9758 +       0x1a00, 0x1508, 0x1d04, 0x6067, 0x2091, 0x6000, 0x1f04, 0x6067,
9759 +       0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18,
9760 +       0x080c, 0x8dee, 0x2019, 0x0000, 0x080c, 0x8e79, 0x6803, 0x00a0,
9761 +       0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001,
9762 +       0xa085, 0x0001, 0x00b0, 0x080c, 0x25fb, 0x6803, 0x0080, 0x2069,
9763 +       0x0140, 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001,
9764 +       0x0008, 0x6886, 0x2001, 0xc8d6, 0x2004, 0x080c, 0x2a1c, 0x60e2,
9765 +       0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e,
9766 +       0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6,
9767 +       0x2061, 0x0100, 0x2071, 0xc600, 0x6020, 0xa084, 0x00c0, 0x01e0,
9768 +       0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18,
9769 +       0x080c, 0x8dee, 0x2019, 0x0000, 0x080c, 0x8e79, 0x2069, 0x0140,
9770 +       0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600,
9771 +       0x2003, 0x0001, 0x0804, 0x614e, 0x2001, 0xc60c, 0x200c, 0xd1b4,
9772 +       0x1160, 0xc1b5, 0x2102, 0x080c, 0x5ddd, 0x2069, 0x0140, 0x080c,
9773 +       0x25fb, 0x6803, 0x0080, 0x60e3, 0x0000, 0x2069, 0x0200, 0x6804,
9774 +       0xa005, 0x1118, 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfdff,
9775 +       0x602a, 0x6027, 0x0200, 0x2069, 0xc90c, 0x7000, 0x206a, 0x708f,
9776 +       0x0027, 0x7003, 0x0001, 0x20a9, 0x0002, 0x1d04, 0x6105, 0x2091,
9777 +       0x6000, 0x1f04, 0x6105, 0x0804, 0x614e, 0x6027, 0x1e00, 0x2009,
9778 +       0x1e00, 0xe000, 0x6024, 0xa10c, 0x01c8, 0xa084, 0x1c00, 0x11b0,
9779 +       0x1d04, 0x610d, 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x080c,
9780 +       0x6f0a, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x00e6, 0x2071,
9781 +       0xc93a, 0x7018, 0x00ee, 0xa005, 0x1d00, 0x0500, 0x0026, 0x2011,
9782 +       0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8, 0x080c, 0x7070, 0x002e,
9783 +       0x2069, 0x0140, 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887,
9784 +       0x0001, 0x0008, 0x6886, 0x2001, 0xc8d6, 0x2004, 0x080c, 0x2a1c,
9785 +       0x60e2, 0x2001, 0xc60c, 0x200c, 0xc1b4, 0x2102, 0x00ee, 0x00de,
9786 +       0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016,
9787 +       0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071,
9788 +       0xc600, 0x7130, 0xd184, 0x1180, 0x2011, 0xc653, 0x2214, 0xd2ec,
9789 +       0x0138, 0xc18d, 0x7132, 0x2011, 0xc653, 0x2214, 0xd2ac, 0x1120,
9790 +       0x7030, 0xd08c, 0x0904, 0x61bb, 0x7130, 0xc185, 0x7132, 0x2011,
9791 +       0xc653, 0x220c, 0xd1a4, 0x0530, 0x0016, 0x2019, 0x000e, 0x080c,
9792 +       0xc10d, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, 0xa186, 0x007e,
9793 +       0x01a0, 0xa186, 0x0080, 0x0188, 0x080c, 0x533d, 0x1170, 0x8127,
9794 +       0xa006, 0x0016, 0x2009, 0x000e, 0x080c, 0xc190, 0x2009, 0x0001,
9795 +       0x2011, 0x0100, 0x080c, 0x712e, 0x001e, 0x8108, 0x1f04, 0x6186,
9796 +       0x015e, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, 0x2019,
9797 +       0x0004, 0x080c, 0x2e19, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f,
9798 +       0x2009, 0x0000, 0x080c, 0x533d, 0x1110, 0x080c, 0x4f47, 0x8108,
9799 +       0x1f04, 0x61b2, 0x015e, 0x080c, 0x1f06, 0x2011, 0x0003, 0x080c,
9800 +       0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036,
9801 +       0x2019, 0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x2001,
9802 +       0xc600, 0x2003, 0x0001, 0x080c, 0x5e5a, 0x00ee, 0x00ce, 0x004e,
9803 +       0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x2071, 0xc702, 0x7003,
9804 +       0x0000, 0x7007, 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f,
9805 +       0x0000, 0x7053, 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083,
9806 +       0x0000, 0x708b, 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x0005,
9807 +       0x00e6, 0x2071, 0xc702, 0x6848, 0xa005, 0x1130, 0x7028, 0xc085,
9808 +       0x702a, 0xa085, 0x0001, 0x0428, 0x6a50, 0x7236, 0x6b54, 0x733a,
9809 +       0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, 0x702e,
9810 +       0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, 0x8006,
9811 +       0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272,
9812 +       0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, 0x0000,
9813 +       0xa006, 0x00ee, 0x0005, 0x2b78, 0x2071, 0xc702, 0x7004, 0x0043,
9814 +       0x700c, 0x0002, 0x6237, 0x622e, 0x622e, 0x622e, 0x622e, 0x0005,
9815 +       0x628d, 0x628e, 0x62c0, 0x62c1, 0x628b, 0x630f, 0x6314, 0x6345,
9816 +       0x6346, 0x6361, 0x6362, 0x6363, 0x6364, 0x6365, 0x6366, 0x6431,
9817 +       0x6458, 0x700c, 0x0002, 0x6250, 0x628b, 0x628b, 0x628c, 0x628c,
9818 +       0x7830, 0x7930, 0xa106, 0x0120, 0x7830, 0x7930, 0xa106, 0x1510,
9819 +       0x7030, 0xa10a, 0x01f8, 0x1210, 0x712c, 0xa10a, 0xa18a, 0x0002,
9820 +       0x12d0, 0x080c, 0x15e5, 0x01b0, 0x2d00, 0x705a, 0x7063, 0x0040,
9821 +       0x2001, 0x0003, 0x7057, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000,
9822 +       0x2009, 0xc959, 0x2104, 0xc085, 0x200a, 0x000e, 0x700e, 0x012e,
9823 +       0x080c, 0x1669, 0x0005, 0x080c, 0x15e5, 0x0de0, 0x2d00, 0x705a,
9824 +       0x080c, 0x15e5, 0x1108, 0x0c10, 0x2d00, 0x7086, 0x7063, 0x0080,
9825 +       0x2001, 0x0004, 0x08f8, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002,
9826 +       0x6295, 0x6298, 0x62a6, 0x62bf, 0x62bf, 0x080c, 0x6249, 0x0005,
9827 +       0x0126, 0x8001, 0x700e, 0x7058, 0x0006, 0x080c, 0x67d4, 0x0120,
9828 +       0x2091, 0x8000, 0x080c, 0x6249, 0x00de, 0x0048, 0x0126, 0x8001,
9829 +       0x700e, 0x080c, 0x67d4, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803,
9830 +       0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x003a,
9831 +       0x1218, 0x00db, 0x012e, 0x0005, 0x012e, 0x080c, 0x6367, 0x0005,
9832 +       0x0005, 0x0005, 0x00e6, 0x2071, 0xc702, 0x700c, 0x0002, 0x62cc,
9833 +       0x62cc, 0x62cc, 0x62ce, 0x62d1, 0x00ee, 0x0005, 0x700f, 0x0001,
9834 +       0x0010, 0x700f, 0x0002, 0x00ee, 0x0005, 0x6367, 0x6367, 0x6383,
9835 +       0x6367, 0x653e, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6383,
9836 +       0x6580, 0x65c3, 0x660c, 0x6620, 0x6367, 0x6367, 0x639f, 0x6383,
9837 +       0x63b3, 0x6367, 0x640e, 0x66cc, 0x66e7, 0x6367, 0x639f, 0x6367,
9838 +       0x63b3, 0x6367, 0x6367, 0x6404, 0x66e7, 0x6367, 0x6367, 0x6367,
9839 +       0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x63c8, 0x6367,
9840 +       0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367,
9841 +       0x6866, 0x6367, 0x67f2, 0x6367, 0x67f2, 0x6367, 0x63dd, 0x7020,
9842 +       0x2068, 0x080c, 0x1619, 0x0005, 0x700c, 0x0002, 0x631b, 0x631e,
9843 +       0x632c, 0x6344, 0x6344, 0x080c, 0x6249, 0x0005, 0x0126, 0x8001,
9844 +       0x700e, 0x7058, 0x0006, 0x080c, 0x67d4, 0x0120, 0x2091, 0x8000,
9845 +       0x080c, 0x6249, 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, 0x080c,
9846 +       0x67d4, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807,
9847 +       0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a, 0x1218, 0x003b,
9848 +       0x012e, 0x0005, 0x012e, 0x0419, 0x0005, 0x0005, 0x0005, 0x6367,
9849 +       0x6383, 0x652a, 0x6367, 0x6383, 0x6367, 0x6383, 0x6383, 0x6367,
9850 +       0x6383, 0x652a, 0x6383, 0x6383, 0x6383, 0x6383, 0x6383, 0x6367,
9851 +       0x6383, 0x652a, 0x6367, 0x6367, 0x6383, 0x6367, 0x6367, 0x6367,
9852 +       0x6383, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x7007,
9853 +       0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x0126, 0x2091,
9854 +       0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838,
9855 +       0xa084, 0x00ff, 0xc0e5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c,
9856 +       0x580a, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff,
9857 +       0xc0ed, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e,
9858 +       0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a,
9859 +       0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x6834,
9860 +       0x8007, 0xa084, 0x00ff, 0x0988, 0x8001, 0x1120, 0x7007, 0x0001,
9861 +       0x0804, 0x64c1, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a,
9862 +       0x704b, 0x64c1, 0x0005, 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904,
9863 +       0x6375, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x64de, 0x7007,
9864 +       0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x64de, 0x0005,
9865 +       0x6834, 0x8007, 0xa084, 0x00ff, 0x0904, 0x6375, 0x8001, 0x1120,
9866 +       0x7007, 0x0001, 0x0804, 0x6507, 0x7007, 0x0006, 0x7012, 0x2d00,
9867 +       0x7016, 0x701a, 0x704b, 0x6507, 0x0005, 0x6834, 0x8007, 0xa084,
9868 +       0x00ff, 0xa086, 0x0001, 0x1904, 0x6375, 0x7007, 0x0001, 0x2009,
9869 +       0xc631, 0x210c, 0x81ff, 0x11a8, 0x6838, 0xa084, 0x00ff, 0x683a,
9870 +       0x6853, 0x0000, 0x080c, 0x5116, 0x1108, 0x0005, 0x0126, 0x2091,
9871 +       0x8000, 0x6837, 0x0139, 0x684a, 0x6952, 0x080c, 0x580a, 0x012e,
9872 +       0x0ca0, 0x2001, 0x0028, 0x0c90, 0x684c, 0xa084, 0x00c0, 0xa086,
9873 +       0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x66ff, 0x2d00, 0x7016,
9874 +       0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, 0xc72d,
9875 +       0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x1a04, 0x6391, 0x6a84,
9876 +       0xa28a, 0x0002, 0x1a04, 0x6391, 0x82ff, 0x1138, 0x6888, 0x698c,
9877 +       0xa105, 0x0118, 0x2001, 0x6494, 0x0018, 0xa280, 0x648a, 0x2005,
9878 +       0x70c6, 0x7010, 0xa015, 0x0904, 0x6476, 0x080c, 0x15e5, 0x1118,
9879 +       0x7007, 0x000f, 0x0005, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x2c05,
9880 +       0x6836, 0xe004, 0xad00, 0x7096, 0xe008, 0xa20a, 0x1210, 0xa00e,
9881 +       0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0xa296, 0x0004, 0x0108,
9882 +       0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x080c, 0x164d,
9883 +       0x7090, 0xa08e, 0x0100, 0x0170, 0xa086, 0x0200, 0x0118, 0x7007,
9884 +       0x0010, 0x0005, 0x7020, 0x2068, 0x080c, 0x1619, 0x7014, 0x2068,
9885 +       0x0804, 0x6391, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000,
9886 +       0x2d08, 0x2068, 0x6906, 0x711a, 0x0804, 0x6431, 0x7014, 0x2068,
9887 +       0x7007, 0x0001, 0x6884, 0xa005, 0x1128, 0x6888, 0x698c, 0xa105,
9888 +       0x0108, 0x00b1, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x0904,
9889 +       0x66ff, 0x04b8, 0x648c, 0x6490, 0x0002, 0x0011, 0x0007, 0x0004,
9890 +       0x000a, 0x000f, 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, 0x0004,
9891 +       0x00f6, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x6f88, 0x6e8c, 0x6804,
9892 +       0x2060, 0xacf0, 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, 0x700c,
9893 +       0x7816, 0x7008, 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, 0x7e0e,
9894 +       0x7f0a, 0x8109, 0x0128, 0xaef2, 0x0004, 0xaffa, 0x0006, 0x0c78,
9895 +       0x6004, 0xa065, 0x1d30, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x00fe,
9896 +       0x0005, 0x2009, 0xc631, 0x210c, 0x81ff, 0x1198, 0x6838, 0xa084,
9897 +       0x00ff, 0x683a, 0x080c, 0x4fa6, 0x1108, 0x0005, 0x080c, 0x592e,
9898 +       0x0126, 0x2091, 0x8000, 0x080c, 0xaf03, 0x080c, 0x580a, 0x012e,
9899 +       0x0ca0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c80, 0x2009, 0xc631,
9900 +       0x210c, 0x81ff, 0x11d8, 0x6858, 0xa005, 0x01d8, 0x2001, 0xc756,
9901 +       0x2004, 0xa086, 0x0000, 0x01c0, 0x6838, 0xa084, 0x00ff, 0x683a,
9902 +       0x6853, 0x0000, 0x080c, 0x5068, 0x1108, 0x0005, 0x684a, 0x0126,
9903 +       0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0cb8, 0x2001, 0x0028,
9904 +       0x0ca8, 0x2001, 0x0000, 0x0c90, 0x2001, 0x002c, 0x0c78, 0x2009,
9905 +       0xc631, 0x210c, 0x81ff, 0x11b0, 0x6858, 0xa005, 0x01c0, 0x6838,
9906 +       0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x080c, 0x50ba, 0x1108,
9907 +       0x0005, 0x0126, 0x2091, 0x8000, 0x684a, 0x6952, 0x080c, 0x580a,
9908 +       0x012e, 0x0cb0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c90, 0x2001,
9909 +       0x0000, 0x0c78, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a,
9910 +       0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0006, 0x0030, 0x7014,
9911 +       0x2068, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x7007, 0x0001,
9912 +       0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff, 0x20a9,
9913 +       0x0001, 0xa096, 0x0001, 0x01b0, 0x2009, 0x0000, 0x20a9, 0x00ff,
9914 +       0xa096, 0x0002, 0x0178, 0xa005, 0x11f0, 0x6944, 0x810f, 0xa18c,
9915 +       0x00ff, 0x080c, 0x533d, 0x11b8, 0x0066, 0x6e50, 0x080c, 0x543c,
9916 +       0x006e, 0x0088, 0x0046, 0x2011, 0xc60c, 0x2224, 0xc484, 0x2412,
9917 +       0x004e, 0x00c6, 0x080c, 0x533d, 0x1110, 0x080c, 0x559d, 0x8108,
9918 +       0x1f04, 0x656a, 0x00ce, 0x684c, 0xd084, 0x1118, 0x080c, 0x1619,
9919 +       0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0005,
9920 +       0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xc653, 0x2004,
9921 +       0xd0a4, 0x0580, 0x2061, 0xc9bc, 0x6100, 0xd184, 0x0178, 0x6858,
9922 +       0xa084, 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0xa005,
9923 +       0x1538, 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001,
9924 +       0x6860, 0xa005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858,
9925 +       0xa084, 0x00ff, 0x0178, 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff,
9926 +       0x0148, 0x600a, 0x6858, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e,
9927 +       0x0804, 0x67c3, 0x012e, 0x0804, 0x67bd, 0x012e, 0x0804, 0x67b7,
9928 +       0x012e, 0x0804, 0x67ba, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001,
9929 +       0x2001, 0xc653, 0x2004, 0xd0a4, 0x05e0, 0x2061, 0xc9bc, 0x6000,
9930 +       0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0x6c48, 0xa484,
9931 +       0x0003, 0x0170, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x1120, 0x2100,
9932 +       0xa210, 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0xa212, 0x02f0,
9933 +       0xa484, 0x000c, 0x0188, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082,
9934 +       0x0004, 0x1120, 0x2100, 0xa318, 0x0288, 0x0030, 0xa082, 0x0004,
9935 +       0x1168, 0x2100, 0xa31a, 0x0250, 0x6860, 0xa005, 0x0110, 0x8000,
9936 +       0x6016, 0x6206, 0x630a, 0x012e, 0x0804, 0x67c3, 0x012e, 0x0804,
9937 +       0x67c0, 0x012e, 0x0804, 0x67bd, 0x0126, 0x2091, 0x8000, 0x7007,
9938 +       0x0001, 0x2061, 0xc9bc, 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318,
9939 +       0x0220, 0x630a, 0x012e, 0x0804, 0x67d1, 0x012e, 0x0804, 0x67c0,
9940 +       0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac,
9941 +       0x0148, 0x00c6, 0x2061, 0xc9bc, 0x6000, 0xa084, 0xfcff, 0x6002,
9942 +       0x00ce, 0x0448, 0x6858, 0xa005, 0x05d0, 0x685c, 0xa065, 0x0598,
9943 +       0x2001, 0xc631, 0x2004, 0xa005, 0x0118, 0x080c, 0xae54, 0x0068,
9944 +       0x6013, 0x0400, 0x6057, 0x0000, 0x694c, 0xd1a4, 0x0110, 0x6950,
9945 +       0x6156, 0x2009, 0x0041, 0x080c, 0x9613, 0x6958, 0xa18c, 0xff00,
9946 +       0xa186, 0x2000, 0x1140, 0x0026, 0x2009, 0x0000, 0x2011, 0xfdff,
9947 +       0x080c, 0x712e, 0x002e, 0x684c, 0xd0c4, 0x0148, 0x2061, 0xc9bc,
9948 +       0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce,
9949 +       0x012e, 0x0804, 0x67c3, 0x00ce, 0x012e, 0x0804, 0x67bd, 0x6954,
9950 +       0xa186, 0x002e, 0x0d40, 0xa186, 0x002d, 0x0d28, 0xa186, 0x0045,
9951 +       0x0528, 0xa186, 0x002a, 0x1130, 0x2001, 0xc60c, 0x200c, 0xc194,
9952 +       0x2102, 0x08c8, 0xa186, 0x0020, 0x0170, 0xa186, 0x0029, 0x1d18,
9953 +       0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x533d, 0x1960, 0x6000,
9954 +       0xc0e4, 0x6002, 0x0840, 0x685c, 0xa065, 0x09a8, 0x6007, 0x0024,
9955 +       0x2001, 0xc8fd, 0x2004, 0x6016, 0x0804, 0x665b, 0x685c, 0xa065,
9956 +       0x0950, 0x00e6, 0x6860, 0xa075, 0x2001, 0xc631, 0x2004, 0xa005,
9957 +       0x0150, 0x080c, 0xae54, 0x8eff, 0x0118, 0x2e60, 0x080c, 0xae54,
9958 +       0x00ee, 0x0804, 0x665b, 0x6020, 0xc0dc, 0xc0d5, 0x6022, 0x2e60,
9959 +       0x6007, 0x003a, 0x6870, 0xa005, 0x0130, 0x6007, 0x003b, 0x6874,
9960 +       0x602a, 0x6878, 0x6012, 0x6003, 0x0001, 0x080c, 0x7999, 0x080c,
9961 +       0x7e94, 0x00ee, 0x0804, 0x665b, 0x2061, 0xc9bc, 0x6000, 0xd084,
9962 +       0x0190, 0xd08c, 0x1904, 0x67d1, 0x0126, 0x2091, 0x8000, 0x6204,
9963 +       0x8210, 0x0220, 0x6206, 0x012e, 0x0804, 0x67d1, 0x012e, 0x6853,
9964 +       0x0016, 0x0804, 0x67ca, 0x6853, 0x0007, 0x0804, 0x67ca, 0x6834,
9965 +       0x8007, 0xa084, 0x00ff, 0x1118, 0x080c, 0x6375, 0x0078, 0x2030,
9966 +       0x8001, 0x1120, 0x7007, 0x0001, 0x0051, 0x0040, 0x7007, 0x0006,
9967 +       0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x66ff, 0x0005, 0x00e6,
9968 +       0x0126, 0x2091, 0x8000, 0xa03e, 0x2009, 0xc631, 0x210c, 0x81ff,
9969 +       0x1904, 0x677d, 0x2009, 0xc60c, 0x210c, 0xd194, 0x1904, 0x67a7,
9970 +       0x6848, 0x2070, 0xae82, 0xce00, 0x0a04, 0x6771, 0x2001, 0xc617,
9971 +       0x2004, 0xae02, 0x1a04, 0x6771, 0x711c, 0xa186, 0x0006, 0x1904,
9972 +       0x6760, 0x7018, 0xa005, 0x0904, 0x677d, 0x2004, 0xd0e4, 0x1904,
9973 +       0x67a2, 0x2061, 0xc9bc, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001,
9974 +       0x1550, 0x7020, 0xd0dc, 0x1904, 0x67aa, 0x6853, 0x0000, 0x6803,
9975 +       0x0000, 0x2d08, 0x7010, 0xa005, 0x1158, 0x7112, 0x684c, 0xd0f4,
9976 +       0x1904, 0x67ad, 0x2e60, 0x080c, 0x708a, 0x012e, 0x00ee, 0x0005,
9977 +       0x2068, 0x6800, 0xa005, 0x1de0, 0x6902, 0x2168, 0x684c, 0xd0f4,
9978 +       0x1904, 0x67ad, 0x012e, 0x00ee, 0x0005, 0x012e, 0x00ee, 0x6853,
9979 +       0x0006, 0x0804, 0x67ca, 0xd184, 0x0dc0, 0xd1c4, 0x11a8, 0x00b8,
9980 +       0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x533d, 0x15d8, 0x6000,
9981 +       0xd0e4, 0x15c0, 0x711c, 0xa186, 0x0007, 0x1118, 0x6853, 0x0002,
9982 +       0x0498, 0x6853, 0x0008, 0x0480, 0x6853, 0x000e, 0x0468, 0x6853,
9983 +       0x0017, 0x0450, 0x6853, 0x0035, 0x0438, 0x2001, 0xc672, 0x2004,
9984 +       0xd0fc, 0x01e8, 0x6848, 0x2070, 0xae82, 0xce00, 0x02c0, 0x605c,
9985 +       0xae02, 0x12a8, 0x711c, 0xa186, 0x0006, 0x1188, 0x7018, 0xa005,
9986 +       0x0170, 0x2004, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0xa086,
9987 +       0x0007, 0x1904, 0x670a, 0x7003, 0x0002, 0x0804, 0x670a, 0x6853,
9988 +       0x0028, 0x0010, 0x6853, 0x0029, 0x012e, 0x00ee, 0x0418, 0x6853,
9989 +       0x002a, 0x0cd0, 0x6853, 0x0045, 0x0cb8, 0x2e60, 0x2019, 0x0002,
9990 +       0x6017, 0x0014, 0x080c, 0xbd55, 0x012e, 0x00ee, 0x0005, 0x2009,
9991 +       0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028,
9992 +       0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00,
9993 +       0xa105, 0x6856, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e,
9994 +       0x0005, 0x080c, 0x1619, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102,
9995 +       0x0230, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0058, 0x7070,
9996 +       0xa080, 0x0040, 0x7072, 0x1230, 0x7074, 0xa081, 0x0000, 0x7076,
9997 +       0xa085, 0x0001, 0x7932, 0x7132, 0x0005, 0x00d6, 0x080c, 0x7081,
9998 +       0x00de, 0x0005, 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, 0x0904,
9999 +       0x684d, 0x080c, 0x768f, 0x0904, 0x6850, 0x6868, 0xa084, 0x0007,
10000 +       0x0904, 0x6844, 0x080c, 0x958d, 0x0904, 0x6847, 0x2d00, 0x6012,
10001 +       0x6834, 0xa084, 0x00ff, 0xa086, 0x0035, 0x1198, 0x2001, 0xc8e5,
10002 +       0x2004, 0xa086, 0xaaaa, 0x0130, 0x2001, 0xc635, 0x2004, 0xa084,
10003 +       0x0028, 0x05c8, 0x6008, 0xc0fd, 0x600a, 0x2001, 0xc8d3, 0x2004,
10004 +       0x0098, 0x6870, 0xa084, 0x00ff, 0x696c, 0xa18c, 0xff00, 0xa105,
10005 +       0x696c, 0xa18c, 0x00ff, 0x080c, 0x29c7, 0x11e0, 0x00c6, 0x080c,
10006 +       0x533d, 0x2c00, 0x00ce, 0x11b0, 0x601a, 0x601f, 0x0001, 0x2009,
10007 +       0x0040, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0035, 0x0110, 0x2009,
10008 +       0x0041, 0x080c, 0x9613, 0x0005, 0x684b, 0x0101, 0x0078, 0x684b,
10009 +       0x002c, 0x0060, 0x684b, 0x0028, 0x0080, 0x684b, 0x0104, 0x0030,
10010 +       0x684b, 0x0105, 0x0018, 0x684b, 0x0106, 0x0038, 0x0126, 0x2091,
10011 +       0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000,
10012 +       0x080c, 0x580a, 0x012e, 0x080c, 0x95e3, 0x0005, 0x00d6, 0x00c6,
10013 +       0x0036, 0x0026, 0x0016, 0x7007, 0x0001, 0x6a44, 0xa282, 0x0004,
10014 +       0x1a04, 0x68b1, 0xd284, 0x0170, 0x6a4c, 0xa290, 0xc77b, 0x2204,
10015 +       0xa065, 0x6004, 0x05e0, 0x8007, 0xa084, 0x00ff, 0xa084, 0x0006,
10016 +       0x1108, 0x04a8, 0x2c10, 0x080c, 0x958d, 0x1118, 0x080c, 0xaf0d,
10017 +       0x05a0, 0x621a, 0x6844, 0x0002, 0x6890, 0x6895, 0x6898, 0x689e,
10018 +       0x2019, 0x0002, 0x080c, 0xc10d, 0x0060, 0x080c, 0xc0a4, 0x0048,
10019 +       0x2019, 0x0002, 0x6950, 0x080c, 0xc0bf, 0x0018, 0x6950, 0x080c,
10020 +       0xc0a4, 0x080c, 0x95e3, 0x6857, 0x0000, 0x0126, 0x2091, 0x8000,
10021 +       0x080c, 0x580a, 0x012e, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00de,
10022 +       0x0005, 0x6857, 0x0006, 0x0c88, 0x6857, 0x0002, 0x0c70, 0x6857,
10023 +       0x0005, 0x0c58, 0x6857, 0x0004, 0x0c40, 0x6857, 0x0007, 0x0c28,
10024 +       0x00d6, 0x2011, 0x0004, 0x2204, 0xa085, 0x8002, 0x2012, 0x00de,
10025 +       0x0005, 0x20e1, 0x0002, 0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084,
10026 +       0x7000, 0x0118, 0xa086, 0x1000, 0x15e0, 0x20e1, 0x0000, 0x3d00,
10027 +       0xa094, 0xff00, 0x8217, 0xa084, 0xf000, 0xa086, 0x3000, 0x1160,
10028 +       0xa184, 0xff00, 0x8007, 0xa086, 0x0008, 0x1558, 0x080c, 0x2f69,
10029 +       0x1540, 0x080c, 0x6b32, 0x0400, 0x20e1, 0x0004, 0x3d60, 0xd1bc,
10030 +       0x1170, 0x2100, 0xa084, 0xff00, 0xa086, 0x0500, 0x1138, 0x0026,
10031 +       0x2c10, 0x080c, 0x6d90, 0x002e, 0x01a0, 0x0070, 0x3e60, 0xac84,
10032 +       0x0007, 0x1178, 0xac82, 0xce00, 0x0260, 0x685c, 0xac02, 0x1248,
10033 +       0x2009, 0x0047, 0x080c, 0x9613, 0x7a1c, 0xd284, 0x1904, 0x68c9,
10034 +       0x0005, 0xa016, 0x080c, 0x1870, 0x0cb8, 0x0cd8, 0x781c, 0xd08c,
10035 +       0x0500, 0x0156, 0x0136, 0x0146, 0x20e1, 0x3000, 0x3d20, 0x3e28,
10036 +       0xa584, 0x0076, 0x1538, 0xa484, 0x7000, 0xa086, 0x1000, 0x11a8,
10037 +       0x080c, 0x6991, 0x01f8, 0x20e1, 0x3000, 0x7828, 0x7828, 0x080c,
10038 +       0x69ad, 0x014e, 0x013e, 0x015e, 0x2009, 0xc92f, 0x2104, 0xa005,
10039 +       0x1108, 0x0005, 0x080c, 0x7e94, 0x0ce0, 0xa484, 0x7000, 0x1548,
10040 +       0x080c, 0x6991, 0x01d8, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100,
10041 +       0x0d10, 0x00a0, 0xd5a4, 0x0178, 0x0056, 0x0046, 0x080c, 0x1f2d,
10042 +       0x080c, 0x25fb, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202,
10043 +       0x004e, 0x005e, 0x0048, 0x04a9, 0x6887, 0x0000, 0x080c, 0xc536,
10044 +       0x20e1, 0x3000, 0x7828, 0x7828, 0x00b9, 0x014e, 0x013e, 0x015e,
10045 +       0x0880, 0x0439, 0x1130, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100,
10046 +       0x1d68, 0x080c, 0xc536, 0x20e1, 0x3000, 0x7828, 0x7828, 0x0056,
10047 +       0x080c, 0x6e1f, 0x005e, 0x0c40, 0x2001, 0xc60e, 0x2004, 0xd08c,
10048 +       0x0178, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1148, 0x0026,
10049 +       0x0036, 0x2011, 0x8048, 0x2518, 0x080c, 0x407d, 0x003e, 0x002e,
10050 +       0x0005, 0xa484, 0x01ff, 0x6886, 0xa005, 0x0160, 0xa080, 0x001f,
10051 +       0xa084, 0x03f8, 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a,
10052 +       0x53a5, 0x0005, 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099,
10053 +       0x020a, 0x53a5, 0xa085, 0x0001, 0x0ca0, 0x7000, 0xa084, 0xff00,
10054 +       0xa08c, 0xf000, 0x8007, 0xa196, 0x0000, 0x1118, 0x0804, 0x6c37,
10055 +       0x0005, 0xa196, 0x2000, 0x1148, 0x6900, 0xa18e, 0x0001, 0x1118,
10056 +       0x080c, 0x47cb, 0x0ca8, 0x0039, 0x0c98, 0xa196, 0x8000, 0x1d80,
10057 +       0x080c, 0x6ce3, 0x0c68, 0x00c6, 0x6a84, 0x82ff, 0x0904, 0x6b2c,
10058 +       0x7110, 0xa18c, 0xff00, 0x810f, 0xa196, 0x0001, 0x0120, 0xa196,
10059 +       0x0023, 0x1904, 0x6b2c, 0xa08e, 0x0023, 0x1570, 0x080c, 0x6d7e,
10060 +       0x0904, 0x6b2c, 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1150,
10061 +       0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x0015, 0x080c, 0x9613,
10062 +       0x0804, 0x6b2c, 0xa08e, 0x0214, 0x0118, 0xa08e, 0x0210, 0x1130,
10063 +       0x2009, 0x0015, 0x080c, 0x9613, 0x0804, 0x6b2c, 0xa08e, 0x0100,
10064 +       0x1904, 0x6b2c, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x0016,
10065 +       0x080c, 0x9613, 0x0804, 0x6b2c, 0xa08e, 0x0022, 0x1904, 0x6b2c,
10066 +       0x7030, 0xa08e, 0x0300, 0x1580, 0x68d4, 0xd0a4, 0x0528, 0xc0b5,
10067 +       0x68d6, 0x7100, 0xa18c, 0x00ff, 0x6972, 0x7004, 0x6876, 0x00f6,
10068 +       0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006, 0xa084, 0x00ff, 0x0016,
10069 +       0x2008, 0x080c, 0x29f1, 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe,
10070 +       0x080c, 0x29c7, 0x6952, 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086,
10071 +       0x2071, 0xc600, 0x70a6, 0x00ee, 0x7034, 0xa005, 0x1904, 0x6b2c,
10072 +       0x2009, 0x0017, 0x0804, 0x6af2, 0xa08e, 0x0400, 0x1158, 0x7034,
10073 +       0xa005, 0x1904, 0x6b2c, 0x68d4, 0xc0a5, 0x68d6, 0x2009, 0x0030,
10074 +       0x0804, 0x6af2, 0xa08e, 0x0500, 0x1140, 0x7034, 0xa005, 0x1904,
10075 +       0x6b2c, 0x2009, 0x0018, 0x0804, 0x6af2, 0xa08e, 0x2010, 0x1120,
10076 +       0x2009, 0x0019, 0x0804, 0x6af2, 0xa08e, 0x2110, 0x1120, 0x2009,
10077 +       0x001a, 0x0804, 0x6af2, 0xa08e, 0x5200, 0x1140, 0x7034, 0xa005,
10078 +       0x1904, 0x6b2c, 0x2009, 0x001b, 0x0804, 0x6af2, 0xa08e, 0x5000,
10079 +       0x1140, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x001c, 0x0804,
10080 +       0x6af2, 0xa08e, 0x1300, 0x1120, 0x2009, 0x0034, 0x0804, 0x6af2,
10081 +       0xa08e, 0x1200, 0x1140, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009,
10082 +       0x0024, 0x0804, 0x6af2, 0xa08c, 0xff00, 0xa18e, 0x2400, 0x1120,
10083 +       0x2009, 0x002d, 0x0804, 0x6af2, 0xa08c, 0xff00, 0xa18e, 0x5300,
10084 +       0x1120, 0x2009, 0x002a, 0x0804, 0x6af2, 0xa08e, 0x0f00, 0x1120,
10085 +       0x2009, 0x0020, 0x0804, 0x6af2, 0xa08e, 0x5300, 0x1108, 0x00d8,
10086 +       0xa08e, 0x6104, 0x11c0, 0x2011, 0xcc8d, 0x8208, 0x2204, 0xa082,
10087 +       0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015, 0x211c, 0x8108,
10088 +       0x0046, 0x2124, 0x080c, 0x407d, 0x004e, 0x8108, 0x1f04, 0x6abc,
10089 +       0x2009, 0x0023, 0x0438, 0xa08e, 0x6000, 0x1118, 0x2009, 0x003f,
10090 +       0x0408, 0xa08e, 0x5400, 0x1158, 0x080c, 0x6e79, 0x1904, 0x6b2c,
10091 +       0x2009, 0x0046, 0x0016, 0x2001, 0xc8d3, 0x2064, 0x0498, 0xa08e,
10092 +       0x5500, 0x1140, 0x080c, 0x6eac, 0x2009, 0x0041, 0x0158, 0x2009,
10093 +       0x0042, 0x0040, 0xa08e, 0x7800, 0x1118, 0x2009, 0x0045, 0x0010,
10094 +       0x2009, 0x001d, 0x0016, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c,
10095 +       0x080c, 0x29c7, 0x1598, 0x080c, 0x52e1, 0x1580, 0x6612, 0x6516,
10096 +       0x86ff, 0x01e8, 0x001e, 0x0016, 0xa186, 0x0017, 0x1158, 0x6870,
10097 +       0xa606, 0x11a8, 0x6874, 0xa506, 0xa084, 0xff00, 0x1180, 0x6000,
10098 +       0xc0f5, 0x6002, 0xa186, 0x0046, 0x1150, 0x6870, 0xa606, 0x1138,
10099 +       0x6874, 0xa506, 0xa084, 0xff00, 0x1110, 0x001e, 0x0068, 0x00c6,
10100 +       0x080c, 0x958d, 0x0168, 0x001e, 0x611a, 0x601f, 0x0004, 0x7120,
10101 +       0x610a, 0x001e, 0x080c, 0x9613, 0x00ce, 0x0005, 0x001e, 0x0ce0,
10102 +       0x00ce, 0x0ce0, 0x00c6, 0x0046, 0x080c, 0x6b86, 0x1904, 0x6b83,
10103 +       0xa28e, 0x0033, 0x11e8, 0x080c, 0x6d7e, 0x0904, 0x6b83, 0x7124,
10104 +       0x610a, 0x7030, 0xa08e, 0x0200, 0x1140, 0x7034, 0xa005, 0x15d8,
10105 +       0x2009, 0x0015, 0x080c, 0x9613, 0x04b0, 0xa08e, 0x0100, 0x1598,
10106 +       0x7034, 0xa005, 0x1580, 0x2009, 0x0016, 0x080c, 0x9613, 0x0458,
10107 +       0xa28e, 0x0032, 0x1540, 0x7030, 0xa08e, 0x1400, 0x1520, 0x2009,
10108 +       0x0038, 0x0016, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c,
10109 +       0x29c7, 0x11c0, 0x080c, 0x52e1, 0x11a8, 0x6612, 0x6516, 0x00c6,
10110 +       0x080c, 0x958d, 0x0170, 0x001e, 0x611a, 0x080c, 0xb05e, 0x601f,
10111 +       0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x9613, 0x080c, 0x7e94,
10112 +       0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x0005, 0x00f6, 0x00d6,
10113 +       0x0026, 0x0016, 0x0136, 0x0146, 0x0156, 0x3c00, 0x0006, 0x2079,
10114 +       0x0030, 0x2069, 0x0200, 0x080c, 0x1fec, 0x1590, 0x080c, 0x1e97,
10115 +       0x05e0, 0x04f1, 0x1130, 0x7908, 0xa18c, 0x1fff, 0xa182, 0x0011,
10116 +       0x1688, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0, 0x2099, 0x020a,
10117 +       0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x7a0c, 0x7808,
10118 +       0xa080, 0x0007, 0xa084, 0x1ff8, 0x0419, 0x1120, 0xa08a, 0x0140,
10119 +       0x1a0c, 0x1519, 0x80ac, 0x20e1, 0x6000, 0x2099, 0x020a, 0x53a5,
10120 +       0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, 0xa294, 0x0070,
10121 +       0x000e, 0x20e0, 0x015e, 0x014e, 0x013e, 0x001e, 0x002e, 0x00de,
10122 +       0x00fe, 0x0005, 0xa016, 0x080c, 0x1870, 0xa085, 0x0001, 0x0c80,
10123 +       0x0006, 0x2001, 0x0111, 0x2004, 0xa084, 0x0003, 0x000e, 0x0005,
10124 +       0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0xa696, 0x00ff, 0x1198,
10125 +       0xa596, 0xfffd, 0x1120, 0x2009, 0x007f, 0x0804, 0x6c32, 0xa596,
10126 +       0xfffe, 0x1118, 0x2009, 0x007e, 0x04e8, 0xa596, 0xfffc, 0x1118,
10127 +       0x2009, 0x0080, 0x04b8, 0x2011, 0x0000, 0x2019, 0xc635, 0x231c,
10128 +       0xd3ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, 0x2071, 0xc77b,
10129 +       0x0030, 0x2021, 0x0081, 0x20a9, 0x007e, 0x2071, 0xc7fc, 0x2e1c,
10130 +       0x83ff, 0x1128, 0x82ff, 0x1198, 0x2410, 0xc2fd, 0x0080, 0x2368,
10131 +       0x6f10, 0x0006, 0x2100, 0xa706, 0x000e, 0x6b14, 0x1120, 0xa346,
10132 +       0x1110, 0x2408, 0x0078, 0x87ff, 0x1110, 0x83ff, 0x0d58, 0x8420,
10133 +       0x8e70, 0x1f04, 0x6c0f, 0x82ff, 0x1118, 0xa085, 0x0001, 0x0018,
10134 +       0xc2fc, 0x2208, 0xa006, 0x00de, 0x00ee, 0x004e, 0x0005, 0xa084,
10135 +       0x0007, 0x000a, 0x0005, 0x6c43, 0x6c43, 0x6c43, 0x6e0c, 0x6c43,
10136 +       0x6c44, 0x6c59, 0x6cce, 0x0005, 0x7110, 0xd1bc, 0x0188, 0x7120,
10137 +       0x2160, 0xac8c, 0x0007, 0x1160, 0xac8a, 0xce00, 0x0248, 0x685c,
10138 +       0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0046, 0x080c, 0x9613,
10139 +       0x0005, 0x00c6, 0xa484, 0x01ff, 0x0904, 0x6cac, 0x7110, 0xd1bc,
10140 +       0x1904, 0x6cac, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c,
10141 +       0x29c7, 0x1904, 0x6cac, 0x080c, 0x52e1, 0x15f0, 0x6612, 0x6516,
10142 +       0x6000, 0xd0ec, 0x15c8, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286,
10143 +       0x0006, 0x0148, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, 0x11a0,
10144 +       0xa295, 0x0600, 0x6206, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0530,
10145 +       0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x7130, 0x6152, 0x2009,
10146 +       0x0044, 0x080c, 0x9613, 0x00c0, 0x00c6, 0x080c, 0x958d, 0x001e,
10147 +       0x0198, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004,
10148 +       0x1118, 0x6007, 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, 0x0001,
10149 +       0x080c, 0x79df, 0x080c, 0x7e94, 0x00ce, 0x0005, 0x2001, 0xc60d,
10150 +       0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x407d, 0x00c6,
10151 +       0x080c, 0xaf0d, 0x001e, 0x0d80, 0x611a, 0x601f, 0x0006, 0x7120,
10152 +       0x610a, 0x7130, 0x6152, 0x6013, 0x0300, 0x6003, 0x0001, 0x6007,
10153 +       0x0041, 0x080c, 0x7999, 0x080c, 0x7e94, 0x08f0, 0x7110, 0xd1bc,
10154 +       0x0188, 0x7020, 0x2060, 0xac84, 0x0007, 0x1160, 0xac82, 0xce00,
10155 +       0x0248, 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0045,
10156 +       0x080c, 0x9613, 0x0005, 0x0006, 0x080c, 0x2f69, 0x000e, 0x1168,
10157 +       0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x1130, 0xa084,
10158 +       0x000f, 0xa08a, 0x0006, 0x1208, 0x000b, 0x0005, 0x6cfc, 0x6cfd,
10159 +       0x6cfc, 0x6cfc, 0x6d66, 0x6d72, 0x0005, 0x7110, 0xd1bc, 0x0120,
10160 +       0x702c, 0xd084, 0x0904, 0x6d65, 0x700c, 0x7108, 0x080c, 0x29c7,
10161 +       0x1904, 0x6d65, 0x080c, 0x52e1, 0x1904, 0x6d65, 0x6612, 0x6516,
10162 +       0x6204, 0x7110, 0xd1bc, 0x01f8, 0xa28c, 0x00ff, 0xa186, 0x0004,
10163 +       0x0118, 0xa186, 0x0006, 0x15c8, 0x00c6, 0x080c, 0x6d7e, 0x00ce,
10164 +       0x0904, 0x6d65, 0x00c6, 0x080c, 0x958d, 0x001e, 0x05f0, 0x611a,
10165 +       0x080c, 0xb05e, 0x601f, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088,
10166 +       0x080c, 0x9613, 0x0490, 0xa28c, 0x00ff, 0xa186, 0x0006, 0x0160,
10167 +       0xa186, 0x0004, 0x0148, 0xa294, 0xff00, 0x8217, 0xa286, 0x0004,
10168 +       0x0118, 0xa286, 0x0006, 0x1188, 0x00c6, 0x080c, 0x958d, 0x001e,
10169 +       0x01e0, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0005, 0x7120, 0x610a,
10170 +       0x2009, 0x0088, 0x080c, 0x9613, 0x0080, 0x00c6, 0x080c, 0x958d,
10171 +       0x001e, 0x0158, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0004, 0x7120,
10172 +       0x610a, 0x2009, 0x0001, 0x080c, 0x9613, 0x0005, 0x7110, 0xd1bc,
10173 +       0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, 0x2009, 0x0089, 0x080c,
10174 +       0x9613, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x0041, 0x0130, 0x7124,
10175 +       0x610a, 0x2009, 0x008a, 0x080c, 0x9613, 0x0005, 0x7020, 0x2060,
10176 +       0xac84, 0x0007, 0x1158, 0xac82, 0xce00, 0x0240, 0x2001, 0xc617,
10177 +       0x2004, 0xac02, 0x1218, 0xa085, 0x0001, 0x0005, 0xa006, 0x0ce8,
10178 +       0x00c6, 0x00d6, 0x00e6, 0x080c, 0x2f69, 0x1904, 0x6e07, 0x2001,
10179 +       0xc756, 0x2004, 0xa086, 0x0000, 0x0904, 0x6e07, 0x20e1, 0x0000,
10180 +       0x3d08, 0xa18c, 0x00ff, 0xa18e, 0x00ff, 0x1500, 0x3e00, 0xa086,
10181 +       0xffff, 0x11e0, 0x2001, 0xc8d3, 0x2064, 0x2009, 0x00ff, 0x0006,
10182 +       0x0016, 0x2001, 0xc61d, 0x2004, 0x20e1, 0x0001, 0x3e08, 0xa106,
10183 +       0x1130, 0x2001, 0xc61c, 0x2004, 0x3d08, 0xa106, 0x0118, 0x001e,
10184 +       0x000e, 0x00a8, 0x001e, 0x000e, 0x0804, 0x6e07, 0x20e1, 0x0001,
10185 +       0x3d08, 0x3e00, 0x0156, 0x080c, 0x29c7, 0x015e, 0x15c0, 0x080c,
10186 +       0x533d, 0x0128, 0x2001, 0xc8d3, 0x2064, 0x2009, 0x00ff, 0x2138,
10187 +       0x873f, 0x2c00, 0x2070, 0x20e1, 0x0003, 0x3d18, 0x831f, 0xa39c,
10188 +       0x00ff, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0xa086, 0x1000,
10189 +       0x0120, 0x080c, 0x75ea, 0x11d8, 0x0080, 0x080c, 0x958d, 0x01b8,
10190 +       0x20e1, 0x0002, 0x3e08, 0xd19c, 0x0118, 0x6124, 0xc19d, 0x6126,
10191 +       0x2e00, 0x601a, 0x620a, 0x601f, 0x0009, 0x2009, 0x0101, 0x080c,
10192 +       0x9613, 0xa085, 0x0001, 0x00ee, 0x00de, 0x00ce, 0x0005, 0xa006,
10193 +       0x00ee, 0x00de, 0x00ce, 0x0005, 0x7110, 0xd1bc, 0x1178, 0x7024,
10194 +       0x2060, 0xac84, 0x0007, 0x1150, 0xac82, 0xce00, 0x0238, 0x685c,
10195 +       0xac02, 0x1220, 0x2009, 0x0051, 0x080c, 0x9613, 0x0005, 0x2031,
10196 +       0x0105, 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, 0x0005, 0x2031,
10197 +       0x0207, 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, 0x0005, 0x00c6,
10198 +       0x00d6, 0x00f6, 0x7000, 0xa084, 0xf000, 0xa086, 0xc000, 0x05b0,
10199 +       0x080c, 0x958d, 0x0598, 0x0066, 0x00c6, 0x0046, 0x2011, 0xcc83,
10200 +       0x2204, 0x8211, 0x220c, 0x080c, 0x29c7, 0x1580, 0x080c, 0x52e1,
10201 +       0x1568, 0x6612, 0x6516, 0x2c00, 0x004e, 0x00ce, 0x601a, 0x080c,
10202 +       0xb05e, 0x080c, 0x1602, 0x01f0, 0x2d00, 0x6056, 0x6803, 0x0000,
10203 +       0x6837, 0x0000, 0x6c3a, 0xadf8, 0x000f, 0x20a9, 0x000e, 0x2fa0,
10204 +       0x2e98, 0x53a3, 0x006e, 0x6612, 0x6007, 0x003e, 0x601f, 0x0001,
10205 +       0x6003, 0x0001, 0x080c, 0x79df, 0x080c, 0x7e94, 0x00fe, 0x00de,
10206 +       0x00ce, 0x0005, 0x080c, 0x95e3, 0x006e, 0x0cc0, 0x004e, 0x00ce,
10207 +       0x0cc8, 0x0156, 0x0046, 0x2e00, 0xa0a0, 0x000e, 0x2404, 0x2020,
10208 +       0x8427, 0xa4a4, 0x0007, 0xd484, 0x0148, 0x20a9, 0x0003, 0x2019,
10209 +       0xc606, 0x2011, 0xcc9b, 0x080c, 0xa103, 0x11d8, 0xd48c, 0x0148,
10210 +       0x20a9, 0x0003, 0x2019, 0xc602, 0x2011, 0xcc9f, 0x080c, 0xa103,
10211 +       0x1180, 0xd494, 0x0170, 0x080c, 0x7694, 0x0148, 0x20a9, 0x0008,
10212 +       0x2019, 0xc69a, 0x2011, 0xccaa, 0x080c, 0xa118, 0x0010, 0xa085,
10213 +       0x0001, 0x004e, 0x015e, 0x0005, 0x0156, 0x0046, 0x2e00, 0xa0a0,
10214 +       0x000e, 0x2404, 0x2020, 0x8427, 0xa4a4, 0x0007, 0xd484, 0x0148,
10215 +       0x20a9, 0x0003, 0x2019, 0xc606, 0x2011, 0xcc93, 0x080c, 0xa103,
10216 +       0x11d8, 0xd48c, 0x0148, 0x20a9, 0x0003, 0x2019, 0xc602, 0x2011,
10217 +       0xcc97, 0x080c, 0xa103, 0x1180, 0xd494, 0x0170, 0x080c, 0x7694,
10218 +       0x0148, 0x20a9, 0x0008, 0x2019, 0xc69a, 0x2011, 0xcca2, 0x080c,
10219 +       0xa118, 0x0010, 0xa085, 0x0001, 0x004e, 0x015e, 0x0005, 0x2071,
10220 +       0xc93a, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, 0x7076,
10221 +       0x7012, 0x7017, 0xce00, 0x7007, 0x0000, 0x7026, 0x702b, 0x8c0c,
10222 +       0x7032, 0x7037, 0x8c6c, 0x703b, 0xffff, 0x703f, 0xffff, 0x7042,
10223 +       0x7047, 0x4787, 0x704a, 0x705b, 0x703f, 0x2001, 0xc8e8, 0x2003,
10224 +       0x0003, 0x2001, 0xc8ea, 0x2003, 0x0100, 0x3a00, 0xa084, 0x0005,
10225 +       0x706e, 0x0005, 0x2071, 0xc93a, 0x1d04, 0x6f9c, 0x2091, 0x6000,
10226 +       0x700c, 0x8001, 0x700e, 0x1518, 0x700f, 0x0361, 0x7007, 0x0001,
10227 +       0x0126, 0x2091, 0x8000, 0x7040, 0xa00d, 0x0128, 0x8109, 0x7142,
10228 +       0x1110, 0x7044, 0x080f, 0x00c6, 0x2061, 0xc600, 0x6034, 0x00ce,
10229 +       0xd0cc, 0x0180, 0x3a00, 0xa084, 0x0005, 0x726c, 0xa216, 0x0150,
10230 +       0x706e, 0x2011, 0x8043, 0x2018, 0x080c, 0x407d, 0x0018, 0x0126,
10231 +       0x2091, 0x8000, 0x7024, 0xa00d, 0x0188, 0x7020, 0x8001, 0x7022,
10232 +       0x1168, 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8, 0x1110,
10233 +       0x7028, 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, 0x7030, 0xa00d,
10234 +       0x0180, 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, 0x0009, 0x8109,
10235 +       0x7132, 0x0128, 0xa184, 0x007f, 0x090c, 0x8cc8, 0x0010, 0x7034,
10236 +       0x080f, 0x7038, 0xa005, 0x0118, 0x0310, 0x8001, 0x703a, 0x703c,
10237 +       0xa005, 0x0118, 0x0310, 0x8001, 0x703e, 0x704c, 0xa00d, 0x0168,
10238 +       0x7048, 0x8001, 0x704a, 0x1148, 0x704b, 0x0009, 0x8109, 0x714e,
10239 +       0x1120, 0x7150, 0x714e, 0x7058, 0x080f, 0x7018, 0xa00d, 0x01d8,
10240 +       0x0016, 0x7074, 0xa00d, 0x0158, 0x7070, 0x8001, 0x7072, 0x1138,
10241 +       0x7073, 0x0009, 0x8109, 0x7176, 0x1110, 0x7078, 0x080f, 0x001e,
10242 +       0x7008, 0x8001, 0x700a, 0x1138, 0x700b, 0x0009, 0x8109, 0x711a,
10243 +       0x1110, 0x701c, 0x080f, 0x012e, 0x7004, 0x0002, 0x6fc2, 0x6fc3,
10244 +       0x6fdb, 0x00e6, 0x2071, 0xc93a, 0x7018, 0xa005, 0x1120, 0x711a,
10245 +       0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071,
10246 +       0xc93a, 0x701c, 0xa206, 0x1110, 0x701a, 0x701e, 0x000e, 0x00ee,
10247 +       0x0005, 0x00e6, 0x2071, 0xc93a, 0x6088, 0xa102, 0x0208, 0x618a,
10248 +       0x00ee, 0x0005, 0x0005, 0x7110, 0x080c, 0x533d, 0x1158, 0x6088,
10249 +       0x8001, 0x0240, 0x608a, 0x1130, 0x0126, 0x2091, 0x8000, 0x080c,
10250 +       0x7e94, 0x012e, 0x8108, 0xa182, 0x00ff, 0x0218, 0xa00e, 0x7007,
10251 +       0x0002, 0x7112, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, 0x8000,
10252 +       0x603c, 0xa005, 0x0128, 0x8001, 0x603e, 0x1110, 0x080c, 0xaf4c,
10253 +       0x6014, 0xa005, 0x0518, 0x8001, 0x6016, 0x1500, 0x611c, 0xa186,
10254 +       0x0003, 0x0130, 0xa186, 0x0006, 0x0118, 0xa186, 0x0009, 0x11a0,
10255 +       0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0270, 0xa082, 0x1999,
10256 +       0x6856, 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x800b,
10257 +       0x810b, 0xa108, 0x6116, 0x0010, 0x080c, 0xaa1c, 0x012e, 0xac88,
10258 +       0x0018, 0x7116, 0x2001, 0xfe00, 0xa102, 0x0220, 0x7017, 0xce00,
10259 +       0x7007, 0x0000, 0x0005, 0x00e6, 0x2071, 0xc93a, 0x7027, 0x07d0,
10260 +       0x7023, 0x0009, 0x00ee, 0x0005, 0x2001, 0xc943, 0x2003, 0x0000,
10261 +       0x0005, 0x00e6, 0x2071, 0xc93a, 0x7132, 0x702f, 0x0009, 0x00ee,
10262 +       0x0005, 0x2011, 0xc946, 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071,
10263 +       0xc93a, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00c6,
10264 +       0x0026, 0x7054, 0x8000, 0x7056, 0x2061, 0xc8e8, 0x6008, 0xa086,
10265 +       0x0000, 0x0158, 0x7068, 0x6032, 0x7064, 0x602e, 0x7060, 0x602a,
10266 +       0x705c, 0x6026, 0x2c10, 0x080c, 0x164d, 0x002e, 0x00ce, 0x0005,
10267 +       0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x6f0a,
10268 +       0x00fe, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x0005, 0x00e6,
10269 +       0x2071, 0xc93a, 0x7176, 0x727a, 0x7073, 0x0009, 0x00ee, 0x0005,
10270 +       0x00e6, 0x0006, 0x2071, 0xc93a, 0x7078, 0xa206, 0x1110, 0x7076,
10271 +       0x707a, 0x000e, 0x00ee, 0x0005, 0x00c6, 0x2061, 0xc9bc, 0x00ce,
10272 +       0x0005, 0xa184, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0xc9bc,
10273 +       0x2060, 0x0005, 0x6854, 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999,
10274 +       0xa005, 0x1150, 0x00c6, 0x2061, 0xc9bc, 0x6014, 0x00ce, 0xa005,
10275 +       0x1138, 0x2001, 0x001e, 0x0020, 0xa08e, 0xffff, 0x1108, 0xa006,
10276 +       0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c, 0xa08c, 0x00c0,
10277 +       0xa18e, 0x00c0, 0x05e8, 0xd0b4, 0x1138, 0xd0bc, 0x1550, 0x2009,
10278 +       0x0006, 0x080c, 0x7105, 0x0005, 0xd0fc, 0x0138, 0xa084, 0x0003,
10279 +       0x0120, 0xa086, 0x0003, 0x1904, 0x70ff, 0x6020, 0xd0d4, 0x0130,
10280 +       0xc0d4, 0x6022, 0x6860, 0x602a, 0x685c, 0x602e, 0x2009, 0xc674,
10281 +       0x2104, 0xd084, 0x0138, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c,
10282 +       0x9613, 0x0005, 0x87ff, 0x1120, 0x2009, 0x0043, 0x080c, 0x9613,
10283 +       0x0005, 0xd0fc, 0x0130, 0xa084, 0x0003, 0x0118, 0xa086, 0x0003,
10284 +       0x11f0, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, 0x9613, 0x0005,
10285 +       0xd0fc, 0x0160, 0xa084, 0x0003, 0xa08e, 0x0002, 0x0148, 0x87ff,
10286 +       0x1120, 0x2009, 0x0041, 0x080c, 0x9613, 0x0005, 0x0061, 0x0ce8,
10287 +       0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x9613, 0x0cb0, 0x2009,
10288 +       0x0004, 0x0019, 0x0005, 0x2009, 0x0001, 0x00d6, 0x6010, 0xa0ec,
10289 +       0xf000, 0x0510, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001,
10290 +       0x1188, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x1158, 0x00c6,
10291 +       0x2061, 0xc9bc, 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, 0x0208,
10292 +       0x6206, 0x00ce, 0x080c, 0x580a, 0x6010, 0xa06d, 0x0076, 0x2039,
10293 +       0x0000, 0x190c, 0x708a, 0x007e, 0x00de, 0x0005, 0x0156, 0x00c6,
10294 +       0x2061, 0xc9bc, 0x6000, 0x81ff, 0x0110, 0xa205, 0x0008, 0xa204,
10295 +       0x6002, 0x00ce, 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, 0x6808,
10296 +       0xa005, 0x0120, 0x8001, 0x680a, 0xa085, 0x0001, 0x0005, 0x2071,
10297 +       0xc755, 0x7003, 0x0006, 0x7007, 0x0000, 0x700f, 0x0000, 0x7013,
10298 +       0x0001, 0x702f, 0x0006, 0x7033, 0x0001, 0x7063, 0x0000, 0x0005,
10299 +       0x00e6, 0x2071, 0xc755, 0x6a2c, 0x721e, 0x6b30, 0x7322, 0x6834,
10300 +       0x7026, 0x705a, 0x6838, 0x702a, 0x705e, 0x6824, 0x7016, 0x683c,
10301 +       0x701a, 0x2009, 0x0070, 0x200a, 0xa005, 0x0150, 0x2009, 0x0000,
10302 +       0xa188, 0x000c, 0x8001, 0x1de0, 0x2100, 0xa210, 0x1208, 0x8318,
10303 +       0x7252, 0x7356, 0x7010, 0xc084, 0x7012, 0x7007, 0x0001, 0x700f,
10304 +       0x0000, 0xa006, 0x00ee, 0x0005, 0x2b78, 0x2071, 0xc755, 0x7004,
10305 +       0x004b, 0x700c, 0x0002, 0x718e, 0x7187, 0x7187, 0x0005, 0x7198,
10306 +       0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ff, 0x7200, 0x700c, 0x0cba,
10307 +       0x2f00, 0xa080, 0x0070, 0x2004, 0x2f08, 0xa188, 0x0070, 0x210c,
10308 +       0xa106, 0x0150, 0x2f00, 0xa080, 0x0070, 0x2004, 0x2f08, 0xa188,
10309 +       0x0070, 0x210c, 0xa106, 0x15e0, 0x7018, 0xa10a, 0x1118, 0x080c,
10310 +       0x722d, 0x04b0, 0x1210, 0x7114, 0xa10a, 0xa192, 0x000a, 0x0210,
10311 +       0x2009, 0x000a, 0x00d6, 0x0016, 0x2001, 0xc682, 0xa080, 0x0011,
10312 +       0x2014, 0x2001, 0xc76f, 0xa080, 0x0005, 0x2004, 0xa100, 0xa202,
10313 +       0x001e, 0x00de, 0x0e20, 0x080c, 0x727c, 0x2200, 0xa102, 0x0208,
10314 +       0x2208, 0x713a, 0x080c, 0x7377, 0x2100, 0x7042, 0x2001, 0x0002,
10315 +       0x7037, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000, 0x2009, 0xc959,
10316 +       0x2104, 0xc095, 0x200a, 0x000e, 0x700e, 0x012e, 0x080c, 0x1669,
10317 +       0x0005, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002, 0x71f1, 0x71f4,
10318 +       0x71fe, 0x080c, 0x7196, 0x0005, 0x0126, 0x8001, 0x700e, 0x7138,
10319 +       0x0041, 0x2091, 0x8000, 0x080c, 0x7196, 0x012e, 0x0005, 0x0005,
10320 +       0x0005, 0x7018, 0xa100, 0x7214, 0xa21a, 0x1130, 0x701c, 0x7052,
10321 +       0x7020, 0x7056, 0xa006, 0x0068, 0x0006, 0x080c, 0x7377, 0x2100,
10322 +       0x7250, 0xa210, 0x7252, 0x1220, 0x7054, 0xa081, 0x0000, 0x7056,
10323 +       0x000e, 0x2f08, 0xa188, 0x0070, 0x200a, 0x701a, 0x0005, 0x00e6,
10324 +       0x2071, 0xc755, 0x700c, 0x0002, 0x7227, 0x7227, 0x7229, 0x00ee,
10325 +       0x0005, 0x700f, 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000,
10326 +       0x00d6, 0x00e6, 0x2071, 0xc76f, 0x702c, 0xa005, 0x0178, 0x2068,
10327 +       0x6964, 0x080c, 0x727c, 0x2100, 0x2208, 0xa102, 0x0238, 0x6800,
10328 +       0x702e, 0x080c, 0x75b9, 0x080c, 0x1629, 0x0c70, 0x00ee, 0x00de,
10329 +       0x012e, 0x0005, 0x00e6, 0x2071, 0xc76f, 0x702c, 0x6802, 0x2d00,
10330 +       0x702e, 0x6858, 0x7120, 0xa102, 0x0a0c, 0x1519, 0x7022, 0x685b,
10331 +       0x0000, 0x00ee, 0x0005, 0x00d6, 0x00e6, 0x2071, 0xc76f, 0xa006,
10332 +       0x7006, 0x700e, 0x701a, 0x701e, 0x7022, 0x7016, 0x702a, 0x7026,
10333 +       0x702f, 0x0000, 0x080c, 0x742b, 0x0168, 0x080c, 0x745d, 0x2d00,
10334 +       0x7002, 0x700a, 0x701a, 0x7013, 0x0001, 0x701f, 0x0007, 0x00ee,
10335 +       0x00de, 0x0005, 0xa00e, 0x0cd8, 0x00e6, 0x00d6, 0x00c6, 0x2071,
10336 +       0xc76f, 0x721c, 0x2100, 0xa202, 0x1618, 0x080c, 0x745d, 0x090c,
10337 +       0x1519, 0x7018, 0xa005, 0x1160, 0x2d00, 0x7002, 0x700a, 0x701a,
10338 +       0xa006, 0x7006, 0x700e, 0x6806, 0x6802, 0x7012, 0x701e, 0x0038,
10339 +       0x2060, 0x6806, 0x2d00, 0x6002, 0x701a, 0x6803, 0x0000, 0x7010,
10340 +       0x8000, 0x7012, 0x701c, 0xa080, 0x0007, 0x701e, 0x721c, 0x08d0,
10341 +       0x721c, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x0156, 0x0136, 0x0146,
10342 +       0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc76f, 0x7300, 0xa398,
10343 +       0x0003, 0x7104, 0x080c, 0x7377, 0x810c, 0x2100, 0xa318, 0x8003,
10344 +       0x2228, 0x2021, 0x0054, 0xa402, 0xa532, 0x0208, 0x2028, 0x2500,
10345 +       0x8004, 0x20a8, 0x23a0, 0xe000, 0xe000, 0xe000, 0x53a5, 0x2508,
10346 +       0x080c, 0x7380, 0x2130, 0x7014, 0xa600, 0x7016, 0x2600, 0x711c,
10347 +       0xa102, 0x701e, 0x7004, 0xa600, 0x2008, 0xa082, 0x0007, 0x1180,
10348 +       0x7000, 0x2004, 0xa005, 0x1140, 0x2009, 0x0001, 0x0026, 0x080c,
10349 +       0x727c, 0x002e, 0x7000, 0x2004, 0x7002, 0x7007, 0x0000, 0x0008,
10350 +       0x7106, 0x2500, 0xa212, 0x1910, 0x012e, 0x00ee, 0x014e, 0x013e,
10351 +       0x015e, 0x0005, 0x0016, 0x0026, 0x00e6, 0x00d6, 0x080c, 0x7340,
10352 +       0x15e0, 0x2170, 0x2805, 0xac68, 0x2900, 0x0002, 0x7316, 0x7316,
10353 +       0x731a, 0x7316, 0x731a, 0x7316, 0x7316, 0x7316, 0x7316, 0x7316,
10354 +       0x7323, 0x7316, 0x7323, 0x7316, 0x7316, 0x7316, 0x080c, 0x1519,
10355 +       0xa005, 0x00f0, 0x7000, 0x6802, 0x7004, 0x6806, 0x7010, 0x680a,
10356 +       0x680f, 0x0000, 0x0060, 0x7010, 0x6812, 0x6817, 0x0000, 0x7000,
10357 +       0x6802, 0x7004, 0x6806, 0x7008, 0x680a, 0x700c, 0x680e, 0x00de,
10358 +       0x685c, 0x8000, 0x685e, 0x6858, 0x8001, 0x685a, 0x00d6, 0xa006,
10359 +       0x00de, 0x00ee, 0x002e, 0x001e, 0x0005, 0xa085, 0x0001, 0x0cc0,
10360 +       0x00e6, 0x0036, 0x2071, 0xc76f, 0x7014, 0xa005, 0x0568, 0x8001,
10361 +       0x7016, 0x7020, 0x8001, 0x7022, 0x7008, 0xa080, 0x0003, 0x710c,
10362 +       0x2110, 0x0429, 0x810c, 0xa118, 0x8210, 0xa282, 0x0007, 0x11b0,
10363 +       0x7008, 0x2004, 0xa005, 0x0178, 0x00d6, 0x0006, 0x7008, 0x2068,
10364 +       0x080c, 0x746c, 0x000e, 0x2068, 0x6807, 0x0000, 0x700a, 0x00de,
10365 +       0x7010, 0x8001, 0x7012, 0x700f, 0x0000, 0x0008, 0x720e, 0x2308,
10366 +       0xa006, 0x003e, 0x00ee, 0x0005, 0xa085, 0x0001, 0x0cd0, 0x0006,
10367 +       0x810b, 0x810b, 0x2100, 0x810b, 0xa100, 0x2008, 0x000e, 0x0005,
10368 +       0x0006, 0x0026, 0x2100, 0xa005, 0x0160, 0xa092, 0x000c, 0x0248,
10369 +       0x2009, 0x0000, 0x8108, 0xa082, 0x000c, 0x1de0, 0x002e, 0x000e,
10370 +       0x0005, 0x2009, 0x0000, 0x0cd0, 0x2d00, 0xa0b8, 0x0008, 0x690c,
10371 +       0x6810, 0x2019, 0x0001, 0x2031, 0x73c2, 0xa112, 0x0220, 0x0118,
10372 +       0x8318, 0x2208, 0x0cd0, 0x6808, 0xa005, 0x0108, 0x8318, 0x233a,
10373 +       0x6804, 0xd084, 0x2300, 0x2021, 0x0001, 0x1150, 0xa082, 0x0003,
10374 +       0x0967, 0x0a67, 0x8420, 0xa082, 0x0007, 0x0967, 0x0a67, 0x0cd0,
10375 +       0xa082, 0x0002, 0x0967, 0x0a67, 0x8420, 0xa082, 0x0005, 0x0967,
10376 +       0x0a67, 0x0cd0, 0x6c1a, 0x2d00, 0xa0b8, 0x0007, 0x00e6, 0x2071,
10377 +       0xc600, 0x7128, 0x6810, 0x2019, 0x0001, 0xa10a, 0x0118, 0x0210,
10378 +       0x8318, 0x0cd8, 0x2031, 0x73d5, 0x0870, 0x6c16, 0x00ee, 0x0005,
10379 +       0x00e6, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2e00, 0x2060, 0x2071,
10380 +       0xc76f, 0x2009, 0x0001, 0x0026, 0x080c, 0x727c, 0x002e, 0x7300,
10381 +       0xa398, 0x0003, 0x7104, 0x080c, 0x7377, 0x810c, 0x2100, 0xa318,
10382 +       0x6834, 0xa084, 0x00ff, 0xa086, 0x0024, 0x00d6, 0x2368, 0x1138,
10383 +       0x6000, 0x6802, 0x6004, 0x6806, 0x6008, 0x6812, 0x0050, 0x6000,
10384 +       0x6802, 0x6004, 0x6806, 0x6008, 0x680a, 0x600c, 0x680e, 0x6010,
10385 +       0x6812, 0x00de, 0x7014, 0x8000, 0x7016, 0x711c, 0x8109, 0x711e,
10386 +       0x7004, 0x8000, 0x2008, 0xa082, 0x0007, 0x1180, 0x7000, 0x2004,
10387 +       0xa005, 0x1140, 0x2009, 0x0001, 0x0026, 0x080c, 0x727c, 0x002e,
10388 +       0x7000, 0x2004, 0x7002, 0x7007, 0x0000, 0x0008, 0x7106, 0x012e,
10389 +       0x00ce, 0x00ee, 0x0005, 0x00d6, 0x0046, 0x0126, 0x2091, 0x8000,
10390 +       0x2001, 0xc682, 0xa080, 0x0011, 0x2004, 0x8003, 0x2020, 0x080c,
10391 +       0x15e5, 0x01d0, 0x2d00, 0x7026, 0x6803, 0x0000, 0x6807, 0x0000,
10392 +       0x080c, 0x15e5, 0x0188, 0x7024, 0x6802, 0x6807, 0x0000, 0x2d00,
10393 +       0x7026, 0xa4a2, 0x0007, 0x0110, 0x0208, 0x0c90, 0xa085, 0x0001,
10394 +       0x012e, 0x004e, 0x00de, 0x0005, 0x7024, 0xa005, 0x0dc8, 0x2068,
10395 +       0x2024, 0x080c, 0x1619, 0x2400, 0x0cc0, 0x0126, 0x2091, 0x8000,
10396 +       0x7024, 0x2068, 0xa005, 0x0130, 0x2004, 0x7026, 0x6803, 0x0000,
10397 +       0x6807, 0x0000, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7024,
10398 +       0x6802, 0x2d00, 0x7026, 0x012e, 0x0005, 0x00d6, 0x2001, 0xc778,
10399 +       0x2004, 0xa005, 0x0138, 0x2068, 0x6800, 0x0006, 0x080c, 0x1619,
10400 +       0x000e, 0x0cb8, 0x00de, 0x0005, 0x00d6, 0x00e6, 0x2071, 0xc76f,
10401 +       0x7008, 0xa005, 0x0138, 0x2068, 0x6800, 0x0006, 0x080c, 0x1619,
10402 +       0x000e, 0x0cb8, 0xa006, 0x7002, 0x700a, 0x7006, 0x700e, 0x701a,
10403 +       0x701e, 0x7022, 0x702a, 0x7026, 0x702e, 0x00ee, 0x00de, 0x0005,
10404 +       0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0086, 0x0046, 0x0056, 0x0026,
10405 +       0x2031, 0x0000, 0x2001, 0xc756, 0x2004, 0xa005, 0x0904, 0x7532,
10406 +       0x2071, 0xc682, 0x20e1, 0x0002, 0x3d08, 0xd19c, 0x0140, 0x2069,
10407 +       0xc600, 0x6a28, 0x761c, 0x7114, 0x2041, 0x0000, 0x0028, 0x7118,
10408 +       0x720c, 0x7620, 0x7008, 0x2040, 0x080c, 0x7627, 0x0904, 0x7532,
10409 +       0x7004, 0xd084, 0x1128, 0x2021, 0x0024, 0x2029, 0x0002, 0x0020,
10410 +       0x2021, 0x002c, 0x2029, 0x000a, 0x080c, 0x1602, 0x0904, 0x752a,
10411 +       0x2d00, 0x2060, 0x6436, 0x0016, 0x20e1, 0x0001, 0x3d08, 0x3e00,
10412 +       0xa18c, 0x00ff, 0x6142, 0x603e, 0x001e, 0x6746, 0x2700, 0xa086,
10413 +       0xff00, 0x1118, 0x6063, 0x0000, 0x0010, 0x6063, 0x0003, 0xa006,
10414 +       0x6002, 0x602a, 0x602e, 0x6006, 0x603a, 0x604a, 0x6052, 0x6057,
10415 +       0x0005, 0x605e, 0x6066, 0x604e, 0x2800, 0x606a, 0x604c, 0xc0ad,
10416 +       0x604e, 0x665a, 0x2c00, 0x2078, 0x0479, 0x607f, 0xffff, 0x6083,
10417 +       0x0000, 0x8109, 0x0180, 0x080c, 0x1602, 0x01c0, 0x2d00, 0x7806,
10418 +       0x2f00, 0x6802, 0x6d36, 0xa006, 0x2d00, 0x2520, 0x00e9, 0x2d00,
10419 +       0x2078, 0x8109, 0x1d80, 0x2c00, 0xa005, 0x002e, 0x005e, 0x004e,
10420 +       0x008e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x2c00, 0x2068,
10421 +       0x080c, 0x1629, 0x2600, 0x2071, 0xc76f, 0x7120, 0xa102, 0x0a0c,
10422 +       0x1519, 0x7022, 0xa006, 0x0c48, 0x00d6, 0x00c6, 0x0136, 0x0146,
10423 +       0x0156, 0x0016, 0x2068, 0x2400, 0xa084, 0x000f, 0xa080, 0x23c7,
10424 +       0x2005, 0x2005, 0xad60, 0x2c00, 0x2d08, 0xa188, 0x0030, 0xa102,
10425 +       0x20a8, 0x2c00, 0x20a0, 0x2001, 0xffff, 0x40a4, 0x001e, 0x015e,
10426 +       0x014e, 0x013e, 0x00ce, 0x00de, 0x0005, 0x00c6, 0x00e6, 0x00f6,
10427 +       0x6858, 0x2071, 0xc76f, 0x7120, 0xa102, 0x0a0c, 0x1519, 0x7022,
10428 +       0x6960, 0x694e, 0x697c, 0x2009, 0xffff, 0x7818, 0xa102, 0xe000,
10429 +       0x6852, 0x684b, 0x0000, 0x6868, 0xa005, 0x0118, 0x6848, 0xc085,
10430 +       0x684a, 0x2d00, 0xa080, 0x0015, 0x2038, 0x2031, 0x0018, 0x6864,
10431 +       0x2020, 0x683a, 0x685c, 0xa08a, 0x00ff, 0x1a0c, 0x1519, 0x2028,
10432 +       0x2d00, 0x2060, 0x2078, 0x6934, 0xa18c, 0x000f, 0xa188, 0x23c7,
10433 +       0x2145, 0x685c, 0x2050, 0xa005, 0x0530, 0x2805, 0xac70, 0x6834,
10434 +       0xa084, 0x00ff, 0xa086, 0x0024, 0x1110, 0x7008, 0x0040, 0x6834,
10435 +       0xa084, 0x00ff, 0xa086, 0x002c, 0x190c, 0x1519, 0x7010, 0x0006,
10436 +       0x2400, 0xa005, 0x000e, 0x0168, 0x203a, 0x8738, 0x8631, 0x090c,
10437 +       0x1519, 0x8421, 0x8529, 0x0138, 0x080c, 0x2389, 0x090c, 0x1519,
10438 +       0x08e0, 0x080c, 0x73d8, 0x6837, 0x0023, 0x00fe, 0x00ee, 0x00ce,
10439 +       0x0005, 0x00e6, 0x00c6, 0x00a6, 0x0086, 0x0056, 0x2d00, 0x2060,
10440 +       0x6934, 0xa18c, 0x000f, 0xa188, 0x23c7, 0x2145, 0x685c, 0x2050,
10441 +       0xa005, 0x01d0, 0x2028, 0x2805, 0xac70, 0x6834, 0xa084, 0x00ff,
10442 +       0xa086, 0x0024, 0x1110, 0x7008, 0x0008, 0x7010, 0x0006, 0xa086,
10443 +       0xffff, 0x000e, 0x0110, 0x080c, 0x73d8, 0x8529, 0x0128, 0x080c,
10444 +       0x2389, 0x090c, 0x1519, 0x0c38, 0x005e, 0x008e, 0x00ae, 0x00ce,
10445 +       0x00ee, 0x0005, 0x70ac, 0xa005, 0x0120, 0x2060, 0x6008, 0xa306,
10446 +       0x0005, 0xa085, 0x0001, 0x0ce0, 0x70ac, 0x600e, 0x2c00, 0x70ae,
10447 +       0x0005, 0x00f6, 0x00d6, 0x0036, 0x70ac, 0xa005, 0x01b8, 0x2068,
10448 +       0x2079, 0x0000, 0x2c08, 0xa11e, 0x1118, 0x680c, 0x70ae, 0x0060,
10449 +       0xa106, 0x0140, 0x2d00, 0x2078, 0x680c, 0xa005, 0x090c, 0x1519,
10450 +       0x2068, 0x0cb0, 0x6b0c, 0x7b0e, 0x600f, 0x0000, 0x003e, 0x00de,
10451 +       0x00fe, 0x0005, 0x00e6, 0x080c, 0x724a, 0x6018, 0x2070, 0xa006,
10452 +       0x70b2, 0x70b6, 0x08b1, 0x080c, 0x95e3, 0x00ee, 0x0005, 0x00d6,
10453 +       0x0026, 0x0016, 0x2061, 0xc76f, 0x6020, 0x6414, 0xa600, 0xa42a,
10454 +       0x02f0, 0x6022, 0x2069, 0xc682, 0x6828, 0x6114, 0xa102, 0x1288,
10455 +       0x685c, 0xd08c, 0x1130, 0xc08d, 0x685e, 0x2011, 0x8025, 0x080c,
10456 +       0x407d, 0x2001, 0xc695, 0x2004, 0xa080, 0x0000, 0x200c, 0x8108,
10457 +       0x2102, 0xa085, 0x0001, 0x001e, 0x002e, 0x00de, 0x0005, 0x2069,
10458 +       0xc682, 0x6804, 0xd094, 0x0148, 0x685c, 0xd084, 0x1130, 0xc085,
10459 +       0x685e, 0x2011, 0x8026, 0x080c, 0x407d, 0x2001, 0xc695, 0x2004,
10460 +       0xa080, 0x0001, 0x200c, 0x8108, 0x2102, 0xa006, 0x2031, 0x0000,
10461 +       0x0c10, 0x0006, 0x0016, 0x00c6, 0x6018, 0x2060, 0x6010, 0xa005,
10462 +       0x0178, 0x2001, 0xc756, 0x2004, 0xa005, 0x0150, 0x2001, 0xc600,
10463 +       0x2004, 0xa086, 0x0003, 0x1120, 0x2011, 0x8014, 0x080c, 0x407d,
10464 +       0x00ce, 0x001e, 0x000e, 0x0005, 0x0016, 0x6834, 0xa08c, 0x00ff,
10465 +       0xa186, 0x0024, 0x0110, 0xa186, 0x002c, 0x001e, 0x0005, 0x2001,
10466 +       0xc683, 0x2004, 0xd09c, 0x0005, 0x2001, 0xc683, 0x2004, 0xd0a4,
10467 +       0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013,
10468 +       0x006e, 0x0005, 0x76b2, 0x76b2, 0x76b2, 0x76b4, 0x770f, 0x76b2,
10469 +       0x76b2, 0x76b2, 0x774d, 0x76b2, 0x77aa, 0x76b2, 0x76b2, 0x76b2,
10470 +       0x76b2, 0x76b2, 0x080c, 0x1519, 0xa182, 0x0100, 0x0002, 0x76c6,
10471 +       0x76c6, 0x76c6, 0x76c8, 0x76e1, 0x76fb, 0x76c6, 0x76c6, 0x76c6,
10472 +       0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x080c, 0x1519,
10473 +       0x00d6, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110, 0x2168, 0x684b,
10474 +       0x0000, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, 0x68bb, 0x0500,
10475 +       0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c, 0x95e3, 0x00de,
10476 +       0x0005, 0x080c, 0x7e47, 0x00f6, 0x00d6, 0x6110, 0x2178, 0x080c,
10477 +       0xac91, 0x0150, 0x00e6, 0x6018, 0x2070, 0xa006, 0x70b2, 0x70b6,
10478 +       0x00ee, 0x2f68, 0x080c, 0x580a, 0x00de, 0x00fe, 0x080c, 0x95e3,
10479 +       0x080c, 0x7f6e, 0x0005, 0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6,
10480 +       0x6110, 0x2168, 0x080c, 0xac91, 0x0120, 0x684b, 0x0029, 0x080c,
10481 +       0x580a, 0x00de, 0x080c, 0x95e3, 0x080c, 0x7f6e, 0x0005, 0xa182,
10482 +       0x0100, 0x0002, 0x7721, 0x7723, 0x772b, 0x7721, 0x7721, 0x7721,
10483 +       0x7748, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721,
10484 +       0x7721, 0x080c, 0x1519, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
10485 +       0x080c, 0x1870, 0x0005, 0x00d6, 0x00e6, 0x2001, 0xc756, 0x2004,
10486 +       0xa086, 0x0000, 0x6110, 0x1118, 0x080c, 0x1629, 0x0028, 0x2168,
10487 +       0x080c, 0x7555, 0x080c, 0x580a, 0x6018, 0x2070, 0xa006, 0x70b2,
10488 +       0x70b6, 0x080c, 0x75f9, 0x00ee, 0x00de, 0x080c, 0x95e3, 0x0005,
10489 +       0x080c, 0x761a, 0x080c, 0x56c7, 0x0005, 0xa182, 0x0100, 0x0002,
10490 +       0x7762, 0x7788, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760,
10491 +       0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760,
10492 +       0x080c, 0x1519, 0x00d6, 0x6003, 0x0003, 0x6106, 0x6010, 0x2068,
10493 +       0x687c, 0x680a, 0x6880, 0x680e, 0x6813, 0x0000, 0x6817, 0x0000,
10494 +       0x6854, 0xa092, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x8013,
10495 +       0x8213, 0xa210, 0x6216, 0x00de, 0x2c10, 0x080c, 0x2068, 0x080c,
10496 +       0x79fc, 0x0126, 0x2091, 0x8000, 0x080c, 0x7f6e, 0x012e, 0x0005,
10497 +       0x6003, 0x0004, 0x630a, 0x080c, 0x74a0, 0x0168, 0x6012, 0x600f,
10498 +       0x0000, 0x080c, 0x75f4, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
10499 +       0x080c, 0x1870, 0x0005, 0x2011, 0x0000, 0x080c, 0x1870, 0x00e6,
10500 +       0x6018, 0x2070, 0x70b3, 0x0000, 0x70b7, 0x0000, 0x00ee, 0x080c,
10501 +       0x95e3, 0x0005, 0x00d6, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110,
10502 +       0x2168, 0x684b, 0x0000, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6,
10503 +       0x68bb, 0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c,
10504 +       0x95e3, 0x00de, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519,
10505 +       0x000b, 0x0005, 0x77da, 0x77da, 0x77da, 0x77dc, 0x77f1, 0x77da,
10506 +       0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da,
10507 +       0x77da, 0x77da, 0x080c, 0x1519, 0x080c, 0x90f6, 0x6110, 0x2168,
10508 +       0x684b, 0x0006, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, 0x68bb,
10509 +       0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c, 0x95e3,
10510 +       0x0005, 0x080c, 0x761a, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c,
10511 +       0x1519, 0x000b, 0x0005, 0x780b, 0x780b, 0x780b, 0x780d, 0x781d,
10512 +       0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b,
10513 +       0x780b, 0x780b, 0x780b, 0x080c, 0x1519, 0x0036, 0x00e6, 0x2071,
10514 +       0xc927, 0x703c, 0xac06, 0x1120, 0x2019, 0x0000, 0x080c, 0x8e79,
10515 +       0x080c, 0x90f6, 0x00ee, 0x003e, 0x0005, 0x00d6, 0x6010, 0x2068,
10516 +       0x080c, 0x761a, 0x00de, 0x0005, 0x080c, 0x7684, 0x1150, 0x6024,
10517 +       0xd09c, 0x1138, 0x6810, 0x2009, 0xffff, 0xa102, 0x2020, 0x2019,
10518 +       0x0000, 0x0005, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e,
10519 +       0x1208, 0xa200, 0x1f04, 0x7836, 0x8086, 0x818e, 0x0005, 0x0156,
10520 +       0x20a9, 0x0010, 0xa005, 0x01b8, 0xa11a, 0x12a8, 0x8213, 0x818d,
10521 +       0x0228, 0xa11a, 0x1220, 0x1f04, 0x7846, 0x0028, 0xa11a, 0x2308,
10522 +       0x8210, 0x1f04, 0x7846, 0x0006, 0x3200, 0xa084, 0xefff, 0x2080,
10523 +       0x000e, 0x015e, 0x0005, 0x0006, 0x3200, 0xa085, 0x1000, 0x0cb8,
10524 +       0x0126, 0x2091, 0x2800, 0x2079, 0xc927, 0x012e, 0x00d6, 0x2069,
10525 +       0xc927, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, 0x8001,
10526 +       0x206a, 0x00de, 0x0005, 0x00c6, 0x6027, 0x0001, 0x7804, 0xa084,
10527 +       0x0007, 0x0002, 0x7884, 0x78a5, 0x78f8, 0x788a, 0x78a5, 0x7884,
10528 +       0x7882, 0x7882, 0x080c, 0x1519, 0x080c, 0x7024, 0x080c, 0x7e94,
10529 +       0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, 0x0005, 0x2011,
10530 +       0x4e18, 0x080c, 0x6fad, 0x7828, 0xa092, 0x00c8, 0x1228, 0x8000,
10531 +       0x782a, 0x080c, 0x4e52, 0x0c88, 0x080c, 0x4e18, 0x7807, 0x0003,
10532 +       0x7827, 0x0000, 0x782b, 0x0000, 0x0c40, 0x080c, 0x7024, 0x3c00,
10533 +       0x0006, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x000e, 0x20e0,
10534 +       0x82ff, 0x0178, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824,
10535 +       0xa065, 0x090c, 0x1519, 0x2009, 0x0013, 0x080c, 0x9613, 0x00ce,
10536 +       0x0005, 0x3900, 0xa082, 0xca74, 0x1210, 0x080c, 0x91cb, 0x00c6,
10537 +       0x7824, 0xa065, 0x090c, 0x1519, 0x7804, 0xa086, 0x0004, 0x0904,
10538 +       0x7938, 0x7828, 0xa092, 0x2710, 0x1230, 0x8000, 0x782a, 0x00ce,
10539 +       0x080c, 0x8be8, 0x0c20, 0x6104, 0xa186, 0x0003, 0x1188, 0x00e6,
10540 +       0x2071, 0xc600, 0x70e0, 0x00ee, 0xd08c, 0x0150, 0x00c6, 0x00e6,
10541 +       0x2061, 0x0100, 0x2071, 0xc600, 0x080c, 0x4e5b, 0x00ee, 0x00ce,
10542 +       0x080c, 0xc59b, 0x2009, 0x0014, 0x080c, 0x9613, 0x00ce, 0x0838,
10543 +       0x2001, 0xc943, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, 0x782b,
10544 +       0x0000, 0x7824, 0xa065, 0x090c, 0x1519, 0x2009, 0x0013, 0x080c,
10545 +       0x9667, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x3900, 0xa082, 0xca74,
10546 +       0x1210, 0x080c, 0x91cb, 0x7824, 0xa005, 0x090c, 0x1519, 0x781c,
10547 +       0xa06d, 0x090c, 0x1519, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160,
10548 +       0x080c, 0x95e3, 0x693c, 0x81ff, 0x090c, 0x1519, 0x8109, 0x693e,
10549 +       0x6854, 0xa015, 0x0110, 0x7a1e, 0x0010, 0x7918, 0x791e, 0x7807,
10550 +       0x0000, 0x7827, 0x0000, 0x00de, 0x00ce, 0x080c, 0x7e94, 0x0888,
10551 +       0x6104, 0xa186, 0x0002, 0x0128, 0xa186, 0x0004, 0x0110, 0x0804,
10552 +       0x78d1, 0x7808, 0xac06, 0x0904, 0x78d1, 0x080c, 0x7db1, 0x080c,
10553 +       0x79df, 0x00ce, 0x080c, 0x7e94, 0x0804, 0x78bf, 0x00c6, 0x6027,
10554 +       0x0002, 0x62c8, 0x60c4, 0xa205, 0x11a8, 0x793c, 0xa1e5, 0x0000,
10555 +       0x0160, 0x2009, 0x0049, 0x601c, 0xa086, 0x0009, 0x1110, 0x2009,
10556 +       0x0103, 0x080c, 0x9613, 0x00ce, 0x0005, 0x2011, 0xc946, 0x2013,
10557 +       0x0000, 0x0cc8, 0x3908, 0xa192, 0xca74, 0x1210, 0x080c, 0x91cb,
10558 +       0x793c, 0x81ff, 0x0d90, 0x7944, 0xa192, 0x7530, 0x12f0, 0x8108,
10559 +       0x7946, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x1138,
10560 +       0x6014, 0xa084, 0x0184, 0xa085, 0x0012, 0x6016, 0x08e0, 0x793c,
10561 +       0xa188, 0x0007, 0x210c, 0xa18e, 0x0009, 0x0d90, 0x6014, 0xa084,
10562 +       0x0184, 0xa085, 0x0016, 0x6016, 0x0870, 0x7848, 0xc085, 0x784a,
10563 +       0x0850, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f,
10564 +       0x0000, 0x2c08, 0x2061, 0xc927, 0x6020, 0x8000, 0x6022, 0x6010,
10565 +       0xa005, 0x0148, 0xa080, 0x0003, 0x2102, 0x6112, 0x012e, 0x00ce,
10566 +       0x001e, 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0, 0x00d6, 0x2069,
10567 +       0xc927, 0x6000, 0xd0d4, 0x0168, 0x6820, 0x8000, 0x6822, 0xa086,
10568 +       0x0001, 0x1110, 0x2c00, 0x681e, 0x6804, 0xa084, 0x0007, 0x0804,
10569 +       0x7e9a, 0xc0d5, 0x6002, 0x6818, 0xa005, 0x0158, 0x6056, 0x605b,
10570 +       0x0000, 0x0006, 0x2c00, 0x681a, 0x00de, 0x685a, 0x2069, 0xc927,
10571 +       0x0c18, 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x08e8, 0x0006,
10572 +       0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08,
10573 +       0x2061, 0xc927, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0148,
10574 +       0xa080, 0x0003, 0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, 0x000e,
10575 +       0x0005, 0x610e, 0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, 0x2c08,
10576 +       0x2061, 0xc927, 0x6034, 0xa005, 0x0130, 0xa080, 0x0003, 0x2102,
10577 +       0x6136, 0x00ce, 0x0005, 0x613a, 0x6136, 0x0cd8, 0x00f6, 0x00e6,
10578 +       0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0036, 0x0026, 0x0016,
10579 +       0x0006, 0x0126, 0xa02e, 0x2071, 0xc927, 0x7638, 0x2660, 0x2678,
10580 +       0x2091, 0x8000, 0x8cff, 0x0904, 0x7a87, 0x6018, 0xa080, 0x0028,
10581 +       0x2004, 0xa206, 0x1904, 0x7a82, 0x87ff, 0x0120, 0x6050, 0xa106,
10582 +       0x1904, 0x7a82, 0x703c, 0xac06, 0x1190, 0x0036, 0x2019, 0x0001,
10583 +       0x080c, 0x8e79, 0x7033, 0x0000, 0x703f, 0x0000, 0x7043, 0x0000,
10584 +       0x7047, 0x0000, 0x704b, 0x0000, 0x003e, 0x2029, 0x0001, 0x7038,
10585 +       0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36, 0x1140, 0x2c00,
10586 +       0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, 0x660c,
10587 +       0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f,
10588 +       0x0000, 0x080c, 0xac91, 0x01c8, 0x6010, 0x2068, 0x601c, 0xa086,
10589 +       0x0003, 0x1580, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x0016,
10590 +       0x0036, 0x0076, 0x080c, 0xaf03, 0x080c, 0xc4d7, 0x080c, 0x580a,
10591 +       0x007e, 0x003e, 0x001e, 0x080c, 0xae48, 0x080c, 0xae54, 0x00ce,
10592 +       0x0804, 0x7a22, 0x2c78, 0x600c, 0x2060, 0x0804, 0x7a22, 0x85ff,
10593 +       0x0120, 0x0036, 0x080c, 0x7f6e, 0x003e, 0x012e, 0x000e, 0x001e,
10594 +       0x002e, 0x003e, 0x005e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee,
10595 +       0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x0158, 0x601c, 0xa086,
10596 +       0x0009, 0x1190, 0x684b, 0x0006, 0x080c, 0x580a, 0x080c, 0x95e3,
10597 +       0x08b0, 0x0016, 0x0036, 0x0076, 0x080c, 0xc4d7, 0x080c, 0xc141,
10598 +       0x007e, 0x003e, 0x001e, 0x0848, 0x601c, 0xa086, 0x000a, 0x0904,
10599 +       0x7a6c, 0x0804, 0x7a6a, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x00f6,
10600 +       0x2031, 0x0000, 0x0126, 0x2091, 0x8000, 0x2079, 0xc927, 0x7838,
10601 +       0xa065, 0x0568, 0x600c, 0x0006, 0x600f, 0x0000, 0x783c, 0xac06,
10602 +       0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x7833, 0x0000,
10603 +       0x783f, 0x0000, 0x7843, 0x0000, 0x7847, 0x0000, 0x784b, 0x0000,
10604 +       0x003e, 0x080c, 0xac91, 0x0178, 0x6010, 0x2068, 0x601c, 0xa086,
10605 +       0x0003, 0x11b0, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c,
10606 +       0x580a, 0x080c, 0xae48, 0x080c, 0xae54, 0x000e, 0x0888, 0x7e3a,
10607 +       0x7e36, 0x012e, 0x00fe, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005,
10608 +       0x601c, 0xa086, 0x0006, 0x0150, 0x601c, 0xa086, 0x0009, 0x1148,
10609 +       0x6b4a, 0x080c, 0x580a, 0x080c, 0x95e3, 0x0c38, 0x080c, 0xc141,
10610 +       0x0c10, 0x601c, 0xa086, 0x000a, 0x09b8, 0x08a0, 0x0016, 0x0026,
10611 +       0x0086, 0x2041, 0x0000, 0x0099, 0x080c, 0x7be4, 0x008e, 0x002e,
10612 +       0x001e, 0x0005, 0x00f6, 0x0126, 0x2079, 0xc927, 0x2091, 0x8000,
10613 +       0x080c, 0x7c71, 0x080c, 0x7ce3, 0x012e, 0x00fe, 0x0005, 0x00f6,
10614 +       0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091,
10615 +       0x8000, 0x2071, 0xc927, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0904,
10616 +       0x7bba, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, 0x7bb5,
10617 +       0x88ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x7bb5, 0x7024, 0xac06,
10618 +       0x1538, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, 0x7024,
10619 +       0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90e6, 0x7027, 0x0000,
10620 +       0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803,
10621 +       0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110,
10622 +       0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x04e8,
10623 +       0x7014, 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140,
10624 +       0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000,
10625 +       0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678,
10626 +       0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac91, 0x01b8, 0x601c,
10627 +       0xa086, 0x0003, 0x1540, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
10628 +       0x0016, 0x0036, 0x0086, 0x080c, 0xaf03, 0x080c, 0xc4d7, 0x080c,
10629 +       0x580a, 0x008e, 0x003e, 0x001e, 0x080c, 0xae48, 0x080c, 0xae54,
10630 +       0x080c, 0x8fb7, 0x00ce, 0x0804, 0x7b3e, 0x2c78, 0x600c, 0x2060,
10631 +       0x0804, 0x7b3e, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, 0x00de,
10632 +       0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1158, 0x0016,
10633 +       0x0036, 0x0086, 0x080c, 0xc4d7, 0x080c, 0xc141, 0x008e, 0x003e,
10634 +       0x001e, 0x08e0, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086,
10635 +       0x0085, 0x0908, 0x0898, 0x601c, 0xa086, 0x0005, 0x1978, 0x6004,
10636 +       0xa086, 0x0085, 0x0d20, 0x0850, 0x00c6, 0x0006, 0x0126, 0x2091,
10637 +       0x8000, 0xa280, 0xc77b, 0x2004, 0xa065, 0x0904, 0x7c6d, 0x00f6,
10638 +       0x00e6, 0x00d6, 0x0066, 0x2071, 0xc927, 0x6654, 0x7018, 0xac06,
10639 +       0x1108, 0x761a, 0x701c, 0xac06, 0x1130, 0x86ff, 0x1118, 0x7018,
10640 +       0x701e, 0x0008, 0x761e, 0x6058, 0xa07d, 0x0108, 0x7e56, 0xa6ed,
10641 +       0x0000, 0x0110, 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b, 0x0000,
10642 +       0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x5268, 0x0904, 0x7c69,
10643 +       0x7624, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, 0x15c0,
10644 +       0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c, 0x7024,
10645 +       0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90e6, 0x7027, 0x0000,
10646 +       0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803,
10647 +       0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110,
10648 +       0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005, 0x0110,
10649 +       0x8001, 0x603e, 0x2660, 0x080c, 0xae54, 0x00ce, 0x0048, 0x00de,
10650 +       0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x7c14,
10651 +       0x8dff, 0x0158, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c,
10652 +       0xaf03, 0x080c, 0xc4d7, 0x080c, 0x580a, 0x080c, 0x8fb7, 0x0804,
10653 +       0x7c14, 0x006e, 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce,
10654 +       0x0005, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x2031, 0x0000, 0x7814,
10655 +       0xa065, 0x0904, 0x7cc3, 0x600c, 0x0006, 0x600f, 0x0000, 0x7824,
10656 +       0xac06, 0x1540, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c,
10657 +       0x7024, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90e6, 0x7827,
10658 +       0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120,
10659 +       0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
10660 +       0x0110, 0x6827, 0x0001, 0x003e, 0x0028, 0x6003, 0x0009, 0x630a,
10661 +       0x2c30, 0x00b0, 0x6010, 0x2068, 0x080c, 0xac91, 0x0168, 0x601c,
10662 +       0xa086, 0x0003, 0x11b8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
10663 +       0x080c, 0x580a, 0x080c, 0xae48, 0x080c, 0xae54, 0x080c, 0x8fb7,
10664 +       0x000e, 0x0804, 0x7c78, 0x7e16, 0x7e12, 0x00de, 0x00ce, 0x006e,
10665 +       0x000e, 0x0005, 0x601c, 0xa086, 0x0006, 0x1118, 0x080c, 0xc141,
10666 +       0x0c58, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, 0x0085,
10667 +       0x09d0, 0x0c10, 0x601c, 0xa086, 0x0005, 0x19f0, 0x6004, 0xa086,
10668 +       0x0085, 0x0d60, 0x08c8, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x7818,
10669 +       0xa065, 0x0904, 0x7d49, 0x6054, 0x0006, 0x6057, 0x0000, 0x605b,
10670 +       0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x5268, 0x0904,
10671 +       0x7d46, 0x7e24, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06,
10672 +       0x15c0, 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c,
10673 +       0x7024, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90e6, 0x7827,
10674 +       0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120,
10675 +       0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
10676 +       0x0110, 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005,
10677 +       0x0110, 0x8001, 0x603e, 0x2660, 0x080c, 0xae54, 0x00ce, 0x0048,
10678 +       0x00de, 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804,
10679 +       0x7cf5, 0x8dff, 0x0138, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
10680 +       0x080c, 0x580a, 0x080c, 0x8fb7, 0x0804, 0x7cf5, 0x000e, 0x0804,
10681 +       0x7ce8, 0x781e, 0x781a, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005,
10682 +       0x00e6, 0x00d6, 0x0066, 0x6000, 0xd0dc, 0x01a0, 0x604c, 0xa06d,
10683 +       0x0188, 0x6848, 0xa606, 0x1170, 0x2071, 0xc927, 0x7024, 0xa035,
10684 +       0x0148, 0xa080, 0x0004, 0x2004, 0xad06, 0x1120, 0x6000, 0xc0dc,
10685 +       0x6002, 0x0021, 0x006e, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x2079,
10686 +       0x0100, 0x78c0, 0xa005, 0x1138, 0x00c6, 0x2660, 0x6003, 0x0009,
10687 +       0x630a, 0x00ce, 0x04a0, 0x080c, 0x8bf5, 0x78c3, 0x0000, 0x080c,
10688 +       0x90e6, 0x7027, 0x0000, 0x0036, 0x2079, 0x0140, 0x7b04, 0xa384,
10689 +       0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x2079, 0x0100,
10690 +       0x7824, 0xd084, 0x0110, 0x7827, 0x0001, 0x080c, 0x90e6, 0x003e,
10691 +       0x080c, 0x5268, 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, 0x603e,
10692 +       0x2660, 0x080c, 0x95e3, 0x00ce, 0x6837, 0x0103, 0x6b4a, 0x6847,
10693 +       0x0000, 0x080c, 0xaf03, 0x080c, 0x580a, 0x080c, 0x8fb7, 0x00fe,
10694 +       0x0005, 0x00e6, 0x00c6, 0x2071, 0xc927, 0x7004, 0xa084, 0x0007,
10695 +       0x0002, 0x7dc3, 0x7dc6, 0x7ddc, 0x7df5, 0x7e32, 0x7dc3, 0x7dc1,
10696 +       0x7dc1, 0x080c, 0x1519, 0x00ce, 0x00ee, 0x0005, 0x7024, 0xa065,
10697 +       0x0148, 0x7020, 0x8001, 0x7022, 0x600c, 0xa015, 0x0150, 0x7216,
10698 +       0x600f, 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, 0x00ee,
10699 +       0x0005, 0x7216, 0x7212, 0x0cb0, 0x6018, 0x2060, 0x080c, 0x5268,
10700 +       0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0120, 0x6054,
10701 +       0xa015, 0x0140, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce,
10702 +       0x00ee, 0x0005, 0x7218, 0x721e, 0x0cb0, 0x7024, 0xa065, 0x05b8,
10703 +       0x700c, 0xac06, 0x1160, 0x080c, 0x8fb7, 0x600c, 0xa015, 0x0120,
10704 +       0x720e, 0x600f, 0x0000, 0x0448, 0x720e, 0x720a, 0x0430, 0x7014,
10705 +       0xac06, 0x1160, 0x080c, 0x8fb7, 0x600c, 0xa015, 0x0120, 0x7216,
10706 +       0x600f, 0x0000, 0x00d0, 0x7216, 0x7212, 0x00b8, 0x601c, 0xa086,
10707 +       0x0003, 0x1198, 0x6018, 0x2060, 0x080c, 0x5268, 0x6000, 0xc0dc,
10708 +       0x6002, 0x080c, 0x8fb7, 0x701c, 0xa065, 0x0138, 0x6054, 0xa015,
10709 +       0x0110, 0x721e, 0x0010, 0x7218, 0x721e, 0x7027, 0x0000, 0x00ce,
10710 +       0x00ee, 0x0005, 0x7024, 0xa065, 0x0140, 0x080c, 0x8fb7, 0x600c,
10711 +       0xa015, 0x0150, 0x720e, 0x600f, 0x0000, 0x080c, 0x90e6, 0x7027,
10712 +       0x0000, 0x00ce, 0x00ee, 0x0005, 0x720e, 0x720a, 0x0cb0, 0x00d6,
10713 +       0x2069, 0xc927, 0x6830, 0xa084, 0x0003, 0x0002, 0x7e54, 0x7e56,
10714 +       0x7e7a, 0x7e52, 0x080c, 0x1519, 0x00de, 0x0005, 0x00c6, 0x6840,
10715 +       0xa086, 0x0001, 0x01b8, 0x683c, 0xa065, 0x0130, 0x600c, 0xa015,
10716 +       0x0170, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000,
10717 +       0x2011, 0xc946, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a,
10718 +       0x6836, 0x0c90, 0x6843, 0x0000, 0x6838, 0xa065, 0x0d68, 0x6003,
10719 +       0x0003, 0x0c50, 0x00c6, 0x6843, 0x0000, 0x6847, 0x0000, 0x684b,
10720 +       0x0000, 0x683c, 0xa065, 0x0168, 0x600c, 0xa015, 0x0130, 0x6a3a,
10721 +       0x600f, 0x0000, 0x683f, 0x0000, 0x0020, 0x683f, 0x0000, 0x683a,
10722 +       0x6836, 0x00ce, 0x00de, 0x0005, 0x00d6, 0x2069, 0xc927, 0x6804,
10723 +       0xa084, 0x0007, 0x0006, 0xa005, 0x11c8, 0x2001, 0xc635, 0x2004,
10724 +       0xa084, 0x0028, 0x1198, 0x2001, 0xc8e5, 0x2004, 0xa086, 0xaaaa,
10725 +       0x0168, 0x2001, 0xc696, 0x2004, 0xd08c, 0x1118, 0xd084, 0x1118,
10726 +       0x0028, 0x080c, 0x7f6e, 0x000e, 0x00de, 0x0005, 0x000e, 0x0002,
10727 +       0x7ec2, 0x7f5e, 0x7f5e, 0x7f5e, 0x7f5e, 0x7f60, 0x7ec0, 0x7ec0,
10728 +       0x080c, 0x1519, 0x6820, 0xa005, 0x1110, 0x00de, 0x0005, 0x00c6,
10729 +       0x680c, 0xa065, 0x0150, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000,
10730 +       0x080c, 0x7ff0, 0x00ce, 0x00de, 0x0005, 0x6814, 0xa065, 0x0150,
10731 +       0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x080c, 0x7ff0, 0x00ce,
10732 +       0x00de, 0x0005, 0x00e6, 0x0036, 0x6a1c, 0xa2f5, 0x0000, 0x0904,
10733 +       0x7f5a, 0x704c, 0xa00d, 0x0118, 0x7088, 0xa005, 0x01a0, 0x7054,
10734 +       0xa075, 0x0120, 0xa20e, 0x0904, 0x7f5a, 0x0028, 0x6818, 0xa20e,
10735 +       0x0904, 0x7f5a, 0x2070, 0x704c, 0xa00d, 0x0d88, 0x7088, 0xa005,
10736 +       0x1d70, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, 0x1e40, 0x080c,
10737 +       0x95ba, 0x0904, 0x7f5a, 0x8318, 0x733e, 0x6112, 0x2e10, 0x621a,
10738 +       0xa180, 0x0014, 0x2004, 0xa084, 0x00ff, 0x605a, 0xa180, 0x0014,
10739 +       0x2003, 0x0000, 0xa180, 0x0015, 0x2004, 0xa08a, 0x199a, 0x0210,
10740 +       0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x003e,
10741 +       0x00f6, 0x2c78, 0x71a0, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1110,
10742 +       0xd1bc, 0x0150, 0x7100, 0xd1f4, 0x0120, 0x7114, 0xa18c, 0x00ff,
10743 +       0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2f6e, 0x2c0d, 0xa18c,
10744 +       0x00ff, 0x2061, 0x0100, 0x619a, 0x080c, 0x8620, 0x7300, 0xc3dd,
10745 +       0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x781f,
10746 +       0x0003, 0x7803, 0x0001, 0x7807, 0x0040, 0x00fe, 0x00ee, 0x00ce,
10747 +       0x00de, 0x0005, 0x003e, 0x00ee, 0x00ce, 0x0cd0, 0x00de, 0x0005,
10748 +       0x00c6, 0x680c, 0xa065, 0x0138, 0x6807, 0x0004, 0x6826, 0x682b,
10749 +       0x0000, 0x080c, 0x7ff0, 0x00ce, 0x00de, 0x0005, 0x00f6, 0x00d6,
10750 +       0x2069, 0xc927, 0x6830, 0xa086, 0x0000, 0x1904, 0x7fcb, 0x2001,
10751 +       0xc60c, 0x200c, 0xd1bc, 0x1904, 0x7fe6, 0x6838, 0xa07d, 0x0904,
10752 +       0x7fcb, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, 0x11f8, 0x2001,
10753 +       0xc8e5, 0x2004, 0xa086, 0xaaaa, 0x01c8, 0x781c, 0xa086, 0x0009,
10754 +       0x11a8, 0x7808, 0xd0fc, 0x0190, 0x2001, 0xc928, 0x2004, 0xa005,
10755 +       0x1138, 0x2001, 0xc696, 0x200c, 0xc185, 0xc18c, 0x2102, 0x0030,
10756 +       0x2011, 0xc696, 0x2204, 0xc08d, 0x2012, 0x0428, 0x2f00, 0x6833,
10757 +       0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6,
10758 +       0x2091, 0x2400, 0x002e, 0x080c, 0x20ef, 0x11c0, 0x012e, 0xe000,
10759 +       0xe000, 0xe000, 0x6a3c, 0x2278, 0x781c, 0xa086, 0x0009, 0x1148,
10760 +       0x7808, 0xd0fc, 0x0118, 0x080c, 0x8969, 0x0028, 0x080c, 0x89e2,
10761 +       0x0010, 0x080c, 0x8a66, 0x00de, 0x00fe, 0x0005, 0x012e, 0xe000,
10762 +       0x6843, 0x0000, 0x781c, 0xa086, 0x0009, 0x0110, 0x7803, 0x0002,
10763 +       0x780c, 0xa015, 0x0140, 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000,
10764 +       0x683f, 0x0000, 0x0c40, 0x683a, 0x6836, 0x0cc0, 0xc1bc, 0x2102,
10765 +       0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0804, 0x7f7d,
10766 +       0x601c, 0xa084, 0x000f, 0x000b, 0x0005, 0x7ffe, 0x8003, 0x84c1,
10767 +       0x85dd, 0x8003, 0x84c1, 0x85dd, 0x7ffe, 0x8003, 0x080c, 0x7db1,
10768 +       0x080c, 0x7e94, 0x0005, 0x0156, 0x0136, 0x0146, 0x00c6, 0x00f6,
10769 +       0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1519, 0x6118, 0x2178, 0x79a0,
10770 +       0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x7900,
10771 +       0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000,
10772 +       0x0028, 0xa1f8, 0x2f6e, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, 0x2061,
10773 +       0x0100, 0x619a, 0xa08a, 0x0040, 0x1a04, 0x8077, 0x0033, 0x00fe,
10774 +       0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x8126, 0x8171, 0x819e,
10775 +       0x826b, 0x8299, 0x82a1, 0x82c7, 0x82d8, 0x82e9, 0x82f1, 0x8307,
10776 +       0x82f1, 0x8368, 0x82d8, 0x8389, 0x8391, 0x82e9, 0x8391, 0x83a2,
10777 +       0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075,
10778 +       0x8075, 0x8075, 0x8075, 0x8d1a, 0x8d3f, 0x8d54, 0x8d77, 0x8d98,
10779 +       0x82c7, 0x8075, 0x82c7, 0x82f1, 0x8075, 0x819e, 0x826b, 0x8075,
10780 +       0x91e8, 0x82f1, 0x8075, 0x9208, 0x82f1, 0x8075, 0x82e9, 0x811f,
10781 +       0x808a, 0x8075, 0x922d, 0x92a2, 0x9379, 0x8075, 0x938a, 0x82c2,
10782 +       0x93a6, 0x8075, 0x8dad, 0x9401, 0x8075, 0x080c, 0x1519, 0x2100,
10783 +       0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x9458,
10784 +       0x9507, 0x8088, 0x80be, 0x80dc, 0x80f2, 0x8088, 0x82c7, 0x8088,
10785 +       0x080c, 0x1519, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x7810,
10786 +       0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, 0x20a3, 0x0800, 0x683c,
10787 +       0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
10788 +       0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, 0x20a3, 0x0000, 0x20a3,
10789 +       0x0000, 0x60c3, 0x0018, 0x080c, 0x8be2, 0x00de, 0x0005, 0x00d6,
10790 +       0x7818, 0x2068, 0x68a0, 0x2069, 0xc600, 0x6ad4, 0xd2ac, 0x1110,
10791 +       0xd0bc, 0x0110, 0xa085, 0x0001, 0x00de, 0x0005, 0x00d6, 0x20a1,
10792 +       0x020b, 0x080c, 0x83bf, 0x20a3, 0x0500, 0x20a3, 0x0000, 0x7810,
10793 +       0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, 0x20a2, 0x6810, 0x20a2,
10794 +       0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, 0x20a2, 0x60c3, 0x0010,
10795 +       0x080c, 0x8be2, 0x00de, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b,
10796 +       0x080c, 0x83bf, 0x20a3, 0x7800, 0x20a3, 0x0000, 0x7808, 0x8007,
10797 +       0x20a2, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x014e,
10798 +       0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x845b,
10799 +       0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0xdf10, 0x20a3, 0x0034,
10800 +       0x2099, 0xc605, 0x20a9, 0x0004, 0x53a6, 0x2099, 0xc601, 0x20a9,
10801 +       0x0004, 0x53a6, 0x2099, 0xc90d, 0x20a9, 0x001a, 0x3304, 0x8007,
10802 +       0x20a2, 0x9398, 0x1f04, 0x810e, 0x20a3, 0x0000, 0x20a3, 0x0000,
10803 +       0x60c3, 0x004c, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x2001,
10804 +       0xc615, 0x2004, 0x609a, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b,
10805 +       0x080c, 0x83bf, 0x20a3, 0x5200, 0x20a3, 0x0000, 0x00d6, 0x2069,
10806 +       0xc652, 0x6804, 0xd084, 0x0150, 0x6828, 0x20a3, 0x0000, 0x0016,
10807 +       0x080c, 0x29db, 0x21a2, 0x001e, 0x00de, 0x0028, 0x00de, 0x20a3,
10808 +       0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0xc605, 0x53a6,
10809 +       0x20a9, 0x0004, 0x2099, 0xc601, 0x53a6, 0x2001, 0xc635, 0x2004,
10810 +       0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f,
10811 +       0x0238, 0x2001, 0xc61c, 0x20a6, 0x2001, 0xc61d, 0x20a6, 0x0040,
10812 +       0x20a3, 0x0000, 0x2001, 0xc615, 0x2004, 0xa084, 0x00ff, 0x20a2,
10813 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x080c, 0x8be2,
10814 +       0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x0500, 0x20a3,
10815 +       0x0000, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1138, 0x7818, 0xa080,
10816 +       0x0028, 0x2004, 0xa082, 0x007f, 0x0238, 0x2001, 0xc61c, 0x20a6,
10817 +       0x2001, 0xc61d, 0x20a6, 0x0040, 0x20a3, 0x0000, 0x2001, 0xc615,
10818 +       0x2004, 0xa084, 0x00ff, 0x20a2, 0x20a9, 0x0004, 0x2099, 0xc605,
10819 +       0x53a6, 0x60c3, 0x0010, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b,
10820 +       0x080c, 0x83bf, 0x00c6, 0x7818, 0x2060, 0x2001, 0x0000, 0x080c,
10821 +       0x5715, 0x00ce, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e,
10822 +       0x1130, 0x20a3, 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0010, 0x20a3,
10823 +       0x0300, 0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086,
10824 +       0x007e, 0x1904, 0x822d, 0x2001, 0xc635, 0x2004, 0xd0a4, 0x01c8,
10825 +       0x2099, 0xc8d5, 0x33a6, 0x9398, 0x20a3, 0x0000, 0x9398, 0x3304,
10826 +       0xa084, 0x2000, 0x20a2, 0x9398, 0x33a6, 0x9398, 0x20a3, 0x0000,
10827 +       0x9398, 0x2001, 0x2710, 0x20a2, 0x9398, 0x33a6, 0x9398, 0x33a6,
10828 +       0x00d0, 0x2099, 0xc8d5, 0x33a6, 0x9398, 0x33a6, 0x9398, 0x3304,
10829 +       0x080c, 0x5f22, 0x1118, 0xa084, 0x37ff, 0x0010, 0xa084, 0x3fff,
10830 +       0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
10831 +       0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0xc605, 0x53a6,
10832 +       0x20a9, 0x0004, 0x2099, 0xc601, 0x53a6, 0x20a9, 0x0008, 0x20a3,
10833 +       0x0000, 0x1f04, 0x8207, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04,
10834 +       0x820d, 0x2099, 0xc8dd, 0x3304, 0xc0dd, 0x20a2, 0x2001, 0xc672,
10835 +       0x2004, 0xd0e4, 0x0158, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x9398,
10836 +       0x9398, 0x9398, 0x33a6, 0x20a9, 0x0004, 0x0010, 0x20a9, 0x0007,
10837 +       0x20a3, 0x0000, 0x1f04, 0x8228, 0x0468, 0x2001, 0xc635, 0x2004,
10838 +       0xd0a4, 0x0140, 0x2001, 0xc8d6, 0x2004, 0x60e3, 0x0000, 0x080c,
10839 +       0x2a1c, 0x60e2, 0x2099, 0xc8d5, 0x20a9, 0x0008, 0x53a6, 0x20a9,
10840 +       0x0004, 0x2099, 0xc605, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xc601,
10841 +       0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x824b, 0x20a9,
10842 +       0x0008, 0x20a3, 0x0000, 0x1f04, 0x8251, 0x2099, 0xc8dd, 0x20a9,
10843 +       0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x825c,
10844 +       0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x8262, 0x60c3, 0x0074,
10845 +       0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3,
10846 +       0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000, 0xa006,
10847 +       0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x00f6, 0x2079, 0xc652,
10848 +       0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, 0x0020, 0xd1a4, 0x0110,
10849 +       0xa085, 0x0010, 0xa085, 0x0002, 0x00d6, 0x0804, 0x834a, 0x20a2,
10850 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x8be2,
10851 +       0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x5000, 0x0804,
10852 +       0x81b9, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x2110, 0x20a3,
10853 +       0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
10854 +       0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
10855 +       0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c,
10856 +       0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x8453, 0x0020, 0x20a1,
10857 +       0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3,
10858 +       0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x8be2, 0x0005,
10859 +       0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3, 0x0000,
10860 +       0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x080c, 0x8be2,
10861 +       0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x0804,
10862 +       0x81b9, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3,
10863 +       0x0000, 0x7828, 0xa005, 0x0110, 0x20a2, 0x0010, 0x20a3, 0x0003,
10864 +       0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, 0x00d6,
10865 +       0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0210, 0x20a3, 0x0014,
10866 +       0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x1198,
10867 +       0x699c, 0xa184, 0x0030, 0x0190, 0x6998, 0xa184, 0xc000, 0x1140,
10868 +       0xd1ec, 0x0118, 0x20a3, 0x2100, 0x0058, 0x20a3, 0x0100, 0x0040,
10869 +       0x20a3, 0x0400, 0x0028, 0x20a3, 0x0700, 0x0010, 0x700f, 0x0800,
10870 +       0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x00f6, 0x2079,
10871 +       0xc652, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, 0x0020, 0xd1a4,
10872 +       0x0110, 0xa085, 0x0010, 0x2009, 0xc674, 0x210c, 0xd184, 0x1110,
10873 +       0xa085, 0x0002, 0x0026, 0x2009, 0xc672, 0x210c, 0xd1e4, 0x0130,
10874 +       0xc0c5, 0xa094, 0x0030, 0xa296, 0x0010, 0x0140, 0xd1ec, 0x0130,
10875 +       0xa094, 0x0030, 0xa296, 0x0010, 0x0108, 0xc0bd, 0x002e, 0x20a2,
10876 +       0x20a2, 0x20a2, 0x60c3, 0x0014, 0x080c, 0x8be2, 0x00de, 0x0005,
10877 +       0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0210, 0x20a3, 0x0014,
10878 +       0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0000,
10879 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
10880 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x8be2,
10881 +       0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x0804,
10882 +       0x812c, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3,
10883 +       0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x080c,
10884 +       0x8be2, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, 0x020b,
10885 +       0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x000b,
10886 +       0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, 0x0026,
10887 +       0x0036, 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, 0x0038, 0x0026,
10888 +       0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, 0x20e1, 0x9080,
10889 +       0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e,
10890 +       0x11a0, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffe, 0x20a3, 0x0000,
10891 +       0x2011, 0xc615, 0x2214, 0x2001, 0xc8e5, 0x2004, 0xa005, 0x0118,
10892 +       0x2011, 0xc61d, 0x2214, 0x22a2, 0x04d0, 0xa286, 0x007f, 0x1138,
10893 +       0x00d6, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffd, 0x00c8, 0x2001,
10894 +       0xc635, 0x2004, 0xd0ac, 0x1110, 0xd2bc, 0x01c8, 0xa286, 0x0080,
10895 +       0x00d6, 0x1130, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffc, 0x0040,
10896 +       0xa2e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2,
10897 +       0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, 0x00d6,
10898 +       0xa2e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2,
10899 +       0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0xa485,
10900 +       0x0029, 0x20a2, 0x004e, 0x003e, 0x20a3, 0x0000, 0x080c, 0x8bd1,
10901 +       0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000,
10902 +       0x20a3, 0x0000, 0x002e, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1,
10903 +       0x4000, 0x20a3, 0x02ff, 0x2011, 0xfffc, 0x22a2, 0x00d6, 0x2069,
10904 +       0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x20a3, 0x2029, 0x20a3,
10905 +       0x0000, 0x08e0, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0xfc02,
10906 +       0x20a3, 0x0000, 0x0005, 0x0026, 0x0036, 0x0046, 0x2019, 0x3300,
10907 +       0x2021, 0x0800, 0x0038, 0x0026, 0x0036, 0x0046, 0x2019, 0x2300,
10908 +       0x2021, 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080,
10909 +       0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092,
10910 +       0x007e, 0x02d8, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa305,
10911 +       0x20a2, 0x6814, 0x20a2, 0x6810, 0xa005, 0x1140, 0x6814, 0xa005,
10912 +       0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x0028, 0x2069, 0xc61c,
10913 +       0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, 0x00d6, 0xa0e8, 0xc77b,
10914 +       0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3,
10915 +       0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0xa485, 0x0098, 0x20a2,
10916 +       0x20a3, 0x0000, 0x004e, 0x003e, 0x080c, 0x8bd1, 0x22a2, 0x20a3,
10917 +       0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000,
10918 +       0x002e, 0x0005, 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x7a08,
10919 +       0x22a2, 0x7810, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e,
10920 +       0x0005, 0x00c6, 0x00f6, 0x6004, 0xa08a, 0x0085, 0x0a0c, 0x1519,
10921 +       0xa08a, 0x008c, 0x1a0c, 0x1519, 0x6118, 0x2178, 0x79a0, 0x2011,
10922 +       0xc635, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x7900, 0xd1f4,
10923 +       0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028,
10924 +       0xa1f8, 0x2f6e, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100,
10925 +       0x619a, 0xa082, 0x0085, 0x001b, 0x00fe, 0x00ce, 0x0005, 0x84f8,
10926 +       0x8502, 0x851d, 0x84f6, 0x84f6, 0x84f6, 0x84f8, 0x080c, 0x1519,
10927 +       0x0146, 0x20a1, 0x020b, 0x04a1, 0x60c3, 0x0000, 0x080c, 0x8be2,
10928 +       0x014e, 0x0005, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8569, 0x20a3,
10929 +       0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x7810, 0x20a2, 0x20a3,
10930 +       0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
10931 +       0x000c, 0x080c, 0x8be2, 0x014e, 0x0005, 0x0146, 0x20a1, 0x020b,
10932 +       0x080c, 0x85a3, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3, 0x0000,
10933 +       0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x8be2, 0x014e, 0x0005,
10934 +       0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
10935 +       0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e,
10936 +       0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x8100,
10937 +       0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6,
10938 +       0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085,
10939 +       0x8100, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011,
10940 +       0xc615, 0x2214, 0x22a2, 0x20a3, 0x0009, 0x20a3, 0x0000, 0x0804,
10941 +       0x8426, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080,
10942 +       0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092,
10943 +       0x007e, 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085,
10944 +       0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68,
10945 +       0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810,
10946 +       0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000,
10947 +       0x2011, 0xc615, 0x2214, 0x22a2, 0x2001, 0x0099, 0x20a2, 0x20a3,
10948 +       0x0000, 0x0804, 0x84b2, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000,
10949 +       0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac,
10950 +       0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c,
10951 +       0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c,
10952 +       0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b,
10953 +       0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x00de,
10954 +       0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x2001, 0x0099,
10955 +       0x20a2, 0x20a3, 0x0000, 0x0804, 0x84b2, 0x00c6, 0x00f6, 0x2c78,
10956 +       0x7804, 0xa08a, 0x0040, 0x0a0c, 0x1519, 0xa08a, 0x0053, 0x1a0c,
10957 +       0x1519, 0x7918, 0x2160, 0x61a0, 0x2011, 0xc635, 0x2214, 0xd2ac,
10958 +       0x1110, 0xd1bc, 0x0150, 0x6100, 0xd1f4, 0x0120, 0x6114, 0xa18c,
10959 +       0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2f6e, 0x2c0d,
10960 +       0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, 0x001b,
10961 +       0x00fe, 0x00ce, 0x0005, 0x8620, 0x872c, 0x86c9, 0x88de, 0x861e,
10962 +       0x861e, 0x861e, 0x861e, 0x861e, 0x861e, 0x861e, 0x8f70, 0x8f80,
10963 +       0x8f90, 0x8fa0, 0x861e, 0x93b7, 0x861e, 0x8f5f, 0x080c, 0x1519,
10964 +       0x00d6, 0x0156, 0x0146, 0x780b, 0xffff, 0x20a1, 0x020b, 0x080c,
10965 +       0x8680, 0x7910, 0x2168, 0x6948, 0x7952, 0x21a2, 0xa016, 0x22a2,
10966 +       0x22a2, 0x22a2, 0x694c, 0xa184, 0x000f, 0x1118, 0x2001, 0x0005,
10967 +       0x0040, 0xd184, 0x0118, 0x2001, 0x0004, 0x0018, 0xa084, 0x0006,
10968 +       0x8004, 0x0016, 0x2008, 0x7858, 0xa084, 0x00ff, 0x8007, 0xa105,
10969 +       0x001e, 0x20a2, 0xd1ac, 0x0118, 0x20a3, 0x0002, 0x0048, 0xd1b4,
10970 +       0x0118, 0x20a3, 0x0001, 0x0020, 0x20a3, 0x0000, 0x2230, 0x0010,
10971 +       0x6a80, 0x6e7c, 0x20a9, 0x0008, 0x0136, 0xad88, 0x0017, 0x2198,
10972 +       0x20a1, 0x021b, 0x53a6, 0x013e, 0x20a1, 0x020b, 0x22a2, 0x26a2,
10973 +       0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014, 0xa084, 0x0004, 0xa085,
10974 +       0x0009, 0x6016, 0x2001, 0xc943, 0x2003, 0x07d0, 0x2001, 0xc942,
10975 +       0x2003, 0x0009, 0x080c, 0x17f1, 0x014e, 0x015e, 0x00de, 0x0005,
10976 +       0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014,
10977 +       0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, 0x0028,
10978 +       0x2004, 0x2019, 0xc635, 0x231c, 0xd3ac, 0x1110, 0xd0bc, 0x0188,
10979 +       0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2,
10980 +       0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de,
10981 +       0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0600,
10982 +       0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2009, 0xc615,
10983 +       0x210c, 0x21a2, 0x20a3, 0x0829, 0x20a3, 0x0000, 0x22a2, 0x20a3,
10984 +       0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000,
10985 +       0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x20a1, 0x020b, 0x00c1,
10986 +       0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, 0x20a2,
10987 +       0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x60c3,
10988 +       0x000c, 0x080c, 0x8be2, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005,
10989 +       0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
10990 +       0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188,
10991 +       0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2,
10992 +       0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de,
10993 +       0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0500,
10994 +       0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615,
10995 +       0x2214, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x080c, 0x8bd1,
10996 +       0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000,
10997 +       0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146,
10998 +       0x7810, 0xa0ec, 0xf000, 0x0168, 0xa06d, 0x080c, 0x56bf, 0x0148,
10999 +       0x684c, 0xa084, 0x2020, 0xa086, 0x2020, 0x1118, 0x7820, 0xc0cd,
11000 +       0x7822, 0x20a1, 0x020b, 0x080c, 0x8894, 0xa016, 0x22a2, 0x22a2,
11001 +       0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000, 0x1130, 0x7810,
11002 +       0xa084, 0x0700, 0x8007, 0x0043, 0x0010, 0xa006, 0x002b, 0x014e,
11003 +       0x013e, 0x015e, 0x00de, 0x0005, 0x8766, 0x87fb, 0x880b, 0x883d,
11004 +       0x8850, 0x886b, 0x8874, 0x8764, 0x080c, 0x1519, 0x0016, 0x0036,
11005 +       0x694c, 0xa18c, 0x0003, 0x0118, 0xa186, 0x0003, 0x1170, 0x6b78,
11006 +       0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, 0x6868, 0x20a2, 0x6864,
11007 +       0x20a2, 0x003e, 0x001e, 0x0804, 0x8847, 0xa186, 0x0001, 0x190c,
11008 +       0x1519, 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, 0x6868,
11009 +       0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c,
11010 +       0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0904, 0x87f5, 0xd3c4,
11011 +       0x0110, 0x687c, 0xa108, 0xd3cc, 0x0110, 0x6874, 0xa108, 0x0156,
11012 +       0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2, 0x8000,
11013 +       0x1f04, 0x87a4, 0x015e, 0x22a2, 0x22a2, 0x22a2, 0xa184, 0x0003,
11014 +       0x0904, 0x87f5, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, 0x4000,
11015 +       0x0006, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214,
11016 +       0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c,
11017 +       0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c,
11018 +       0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b,
11019 +       0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x00de,
11020 +       0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x000e, 0x7b20,
11021 +       0xd3cc, 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, 0x20a2,
11022 +       0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x003e, 0x001e,
11023 +       0x080c, 0x8be2, 0x0005, 0x2011, 0x0008, 0x2001, 0xc60d, 0x2004,
11024 +       0xd0f4, 0x0110, 0x2011, 0x0028, 0x7820, 0xd0cc, 0x0108, 0xc2e5,
11025 +       0x22a2, 0xa016, 0x04d0, 0x2011, 0x0302, 0x0016, 0x0036, 0x7828,
11026 +       0x792c, 0xa11d, 0x0108, 0xc2dd, 0x7b20, 0xd3cc, 0x0108, 0xc2e5,
11027 +       0x22a2, 0x20a2, 0x21a2, 0x003e, 0x001e, 0xa016, 0x22a2, 0x20a3,
11028 +       0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
11029 +       0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a, 0x22a2,
11030 +       0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
11031 +       0x60c3, 0x0032, 0x080c, 0x8be2, 0x0005, 0x2011, 0x0028, 0x7820,
11032 +       0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2,
11033 +       0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, 0x080c, 0x8be2, 0x0005,
11034 +       0x2011, 0x0100, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016,
11035 +       0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2,
11036 +       0x7854, 0xa084, 0x00ff, 0x20a2, 0x22a2, 0x22a2, 0x60c3, 0x0020,
11037 +       0x080c, 0x8be2, 0x0005, 0x2011, 0x0008, 0x7820, 0xd0cc, 0x0108,
11038 +       0xc2e5, 0x22a2, 0xa016, 0x0888, 0x0036, 0x7b10, 0xa384, 0xff00,
11039 +       0x7812, 0xa384, 0x00ff, 0x8001, 0x1138, 0x7820, 0xd0cc, 0x0108,
11040 +       0xc2e5, 0x22a2, 0x003e, 0x0808, 0x0046, 0x2021, 0x0800, 0x0006,
11041 +       0x7820, 0xd0cc, 0x000e, 0x0108, 0xc4e5, 0x24a2, 0x004e, 0x22a2,
11042 +       0x20a2, 0x003e, 0x0804, 0x8847, 0x0026, 0x20e1, 0x9080, 0x20e1,
11043 +       0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214,
11044 +       0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c,
11045 +       0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c,
11046 +       0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b,
11047 +       0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x00de,
11048 +       0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x7820, 0xd0cc,
11049 +       0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, 0x20a3, 0x0000,
11050 +       0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2,
11051 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, 0x0156,
11052 +       0x0136, 0x0146, 0x0016, 0x0036, 0x7810, 0xa084, 0x0700, 0x8007,
11053 +       0x003b, 0x003e, 0x001e, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005,
11054 +       0x88f8, 0x88f8, 0x88fa, 0x88f8, 0x88f8, 0x88f8, 0x891c, 0x88f8,
11055 +       0x080c, 0x1519, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600, 0x7912,
11056 +       0x20a1, 0x020b, 0x2009, 0x0003, 0x00f9, 0x00d6, 0x2069, 0xc652,
11057 +       0x6804, 0xd0bc, 0x0130, 0x682c, 0xa084, 0x00ff, 0x8007, 0x20a2,
11058 +       0x0010, 0x20a3, 0x3f00, 0x00de, 0x22a2, 0x22a2, 0x22a2, 0x60c3,
11059 +       0x0001, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, 0x2009, 0x0003,
11060 +       0x0019, 0x20a3, 0x7f00, 0x0c80, 0x0026, 0x20e1, 0x9080, 0x20e1,
11061 +       0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214,
11062 +       0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c,
11063 +       0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c,
11064 +       0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b,
11065 +       0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x00de,
11066 +       0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x20a3, 0x0888,
11067 +       0xa18d, 0x0008, 0x21a2, 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000,
11068 +       0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e,
11069 +       0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, 0x0036,
11070 +       0x2061, 0x0100, 0x2071, 0xc600, 0x2009, 0xc615, 0x210c, 0x7818,
11071 +       0x2068, 0x2031, 0xc635, 0x2634, 0xa6b4, 0x0028, 0x0110, 0x7370,
11072 +       0x7474, 0x2500, 0x2031, 0xc635, 0x2634, 0xa6b4, 0x0028, 0x0140,
11073 +       0x2001, 0x04ff, 0x6062, 0x6067, 0xffff, 0x636a, 0x646e, 0x0050,
11074 +       0x2001, 0x00ff, 0xa085, 0x0400, 0x6062, 0x6067, 0xffff, 0x606b,
11075 +       0x0000, 0x616e, 0x68b8, 0x6073, 0x0530, 0x6077, 0x0008, 0x688c,
11076 +       0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0xa085, 0x0020, 0x607a,
11077 +       0x68b4, 0x607f, 0x0000, 0x2d00, 0x6082, 0x6087, 0xffff, 0x7810,
11078 +       0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008,
11079 +       0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7,
11080 +       0x0000, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, 0x0128, 0x609f,
11081 +       0x0000, 0x2001, 0x0092, 0x0048, 0x6028, 0xc0bd, 0x602a, 0x609f,
11082 +       0x00ff, 0x6027, 0xffff, 0x2001, 0x00b2, 0x6016, 0x2009, 0x07d0,
11083 +       0x080c, 0x7029, 0x003e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de,
11084 +       0x00ee, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046,
11085 +       0x0036, 0x2061, 0x0100, 0x2071, 0xc600, 0x2009, 0xc615, 0x210c,
11086 +       0x7818, 0x2068, 0x68a0, 0x2028, 0x2031, 0xc635, 0x2634, 0xd6ac,
11087 +       0x1160, 0xa582, 0x007e, 0x1248, 0x2500, 0xd0bc, 0x1130, 0xa080,
11088 +       0x2f6e, 0x2015, 0xa294, 0x00ff, 0x0020, 0x6910, 0x6a14, 0x7370,
11089 +       0x7474, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1128, 0xa582, 0x007e,
11090 +       0x1210, 0xd5bc, 0x0138, 0xa185, 0x0400, 0x6062, 0x6266, 0x636a,
11091 +       0x646e, 0x0030, 0x6063, 0x0400, 0x6266, 0x606b, 0x0000, 0x616e,
11092 +       0x68b8, 0x6072, 0x6077, 0x0000, 0x6864, 0xd0a4, 0x0110, 0x6077,
11093 +       0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0xa085,
11094 +       0x0020, 0x607a, 0x68b4, 0x607f, 0x0000, 0x2d00, 0x6082, 0x6087,
11095 +       0xffff, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c,
11096 +       0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af,
11097 +       0x95d5, 0x60d7, 0x0000, 0xa582, 0x007e, 0x0210, 0x2011, 0x0000,
11098 +       0x629e, 0x00f6, 0x2079, 0x0140, 0x7803, 0x0000, 0x00fe, 0x2009,
11099 +       0x0092, 0x6116, 0x2009, 0x07d0, 0x080c, 0x7029, 0x003e, 0x004e,
11100 +       0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x00e6, 0x00d6,
11101 +       0x00c6, 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0xc600,
11102 +       0x7154, 0x7818, 0x2068, 0x68a0, 0x2028, 0x76d4, 0xd6ac, 0x1130,
11103 +       0xd0bc, 0x1120, 0x6910, 0x6a14, 0x7454, 0x0020, 0x6910, 0x6a14,
11104 +       0x7370, 0x7474, 0x781c, 0xa0be, 0x0006, 0x0904, 0x8b1c, 0xa0be,
11105 +       0x000a, 0x15e8, 0xa185, 0x0200, 0x6062, 0x6266, 0x636a, 0x646e,
11106 +       0x6073, 0x2029, 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff,
11107 +       0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808,
11108 +       0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c,
11109 +       0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7,
11110 +       0x0000, 0x609f, 0x0000, 0x080c, 0x9452, 0x2009, 0x07d0, 0x60c4,
11111 +       0xa084, 0xfff0, 0xa005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x7029,
11112 +       0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x70d4,
11113 +       0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266,
11114 +       0x636a, 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b,
11115 +       0x0000, 0x646e, 0x6073, 0x0809, 0x6077, 0x0008, 0x688c, 0x8000,
11116 +       0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00,
11117 +       0x6082, 0x7808, 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010,
11118 +       0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af,
11119 +       0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4,
11120 +       0x0120, 0x6a14, 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e,
11121 +       0x080c, 0x9452, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005,
11122 +       0x0110, 0x2009, 0x1b58, 0x080c, 0x7029, 0x003e, 0x004e, 0x005e,
11123 +       0x00ce, 0x00de, 0x00ee, 0x0005, 0x7810, 0x2070, 0x704c, 0xa084,
11124 +       0x0003, 0xa086, 0x0002, 0x0904, 0x8b72, 0x2001, 0xc635, 0x2004,
11125 +       0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266,
11126 +       0x636a, 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b,
11127 +       0x0000, 0x646e, 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000,
11128 +       0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x7834, 0x607e, 0x2f00,
11129 +       0x6086, 0x7808, 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080,
11130 +       0x60c6, 0x707c, 0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, 0x7080,
11131 +       0x7928, 0xa109, 0x792a, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7,
11132 +       0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14,
11133 +       0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, 0x944f,
11134 +       0x0804, 0x8b0a, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1110, 0xd5bc,
11135 +       0x0138, 0xa185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x0038,
11136 +       0xa185, 0x0700, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x080c,
11137 +       0x56bf, 0x0180, 0x00d6, 0x7810, 0xa06d, 0x684c, 0x00de, 0xa084,
11138 +       0x2020, 0xa086, 0x2020, 0x1130, 0x7820, 0xc0cd, 0x7822, 0x6073,
11139 +       0x0889, 0x0010, 0x6073, 0x0898, 0x6077, 0x0000, 0x688c, 0x8000,
11140 +       0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00,
11141 +       0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c,
11142 +       0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7,
11143 +       0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14,
11144 +       0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x7820, 0xd0cc,
11145 +       0x0120, 0x080c, 0x9452, 0x0804, 0x8b0a, 0x080c, 0x944f, 0x0804,
11146 +       0x8b0a, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff,
11147 +       0x2202, 0x8217, 0x0005, 0x00d6, 0x2069, 0xc927, 0x6843, 0x0001,
11148 +       0x00de, 0x0005, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575,
11149 +       0x0019, 0x080c, 0x701b, 0x0005, 0x0006, 0x6014, 0xa084, 0x0004,
11150 +       0xa085, 0x0009, 0x6016, 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006,
11151 +       0x2061, 0x0100, 0x61a4, 0x60a7, 0x95f5, 0x6014, 0xa084, 0x0004,
11152 +       0xa085, 0x0008, 0x6016, 0x000e, 0xe000, 0xe000, 0xe000, 0xe000,
11153 +       0x61a6, 0x00ce, 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026,
11154 +       0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x5f22, 0x1198, 0x2001,
11155 +       0xc943, 0x2004, 0xa005, 0x15b8, 0x0066, 0x2031, 0x0001, 0x080c,
11156 +       0x5fa4, 0x006e, 0x1118, 0x080c, 0x701b, 0x0468, 0x00c6, 0x2061,
11157 +       0xc927, 0x00d8, 0x6904, 0xa194, 0x4000, 0x0550, 0x0831, 0x6803,
11158 +       0x1000, 0x6803, 0x0000, 0x00c6, 0x2061, 0xc927, 0x6128, 0xa192,
11159 +       0x00c8, 0x1258, 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198,
11160 +       0x080c, 0x701b, 0x080c, 0x8bec, 0x0070, 0x6124, 0xa1e5, 0x0000,
11161 +       0x0140, 0x080c, 0xc59b, 0x080c, 0x7024, 0x2009, 0x0014, 0x080c,
11162 +       0x9613, 0x00ce, 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005,
11163 +       0x2001, 0xc943, 0x2004, 0xa005, 0x1db0, 0x00c6, 0x2061, 0xc927,
11164 +       0x6128, 0xa192, 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c,
11165 +       0x701b, 0x080c, 0x4e5b, 0x0c38, 0x00c6, 0x00d6, 0x00e6, 0x0016,
11166 +       0x0026, 0x080c, 0x7031, 0x2071, 0xc927, 0x713c, 0x81ff, 0x0904,
11167 +       0x8cc1, 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x5f22, 0x1500,
11168 +       0x0036, 0x2019, 0x0002, 0x080c, 0x8e79, 0x003e, 0x713c, 0x2160,
11169 +       0x080c, 0xc59b, 0x2009, 0x004a, 0x621c, 0xa296, 0x0009, 0x1138,
11170 +       0x6110, 0xa188, 0x0012, 0x200b, 0x0006, 0x2009, 0x0104, 0x080c,
11171 +       0x9613, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0408,
11172 +       0x6904, 0xa194, 0x4000, 0x0518, 0x6803, 0x1000, 0x6803, 0x0000,
11173 +       0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x003e, 0x713c, 0x2160,
11174 +       0x080c, 0xc59b, 0x2009, 0x004a, 0x621c, 0xa296, 0x0009, 0x1138,
11175 +       0x6110, 0xa188, 0x0012, 0x200b, 0x0006, 0x2009, 0x0104, 0x080c,
11176 +       0x9613, 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0c00,
11177 +       0x0026, 0x00e6, 0x2071, 0xc927, 0x7048, 0xd084, 0x01d8, 0x713c,
11178 +       0x81ff, 0x01c0, 0x2071, 0x0100, 0xa188, 0x0007, 0x2114, 0xa28e,
11179 +       0x0006, 0x1138, 0x7014, 0xa084, 0x0184, 0xa085, 0x0012, 0x7016,
11180 +       0x0048, 0xa28e, 0x0009, 0x0db0, 0x7014, 0xa084, 0x0184, 0xa085,
11181 +       0x0016, 0x7016, 0x00ee, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x00c6,
11182 +       0x0066, 0x0056, 0x0046, 0x0006, 0x0126, 0x2091, 0x8000, 0x6018,
11183 +       0x2068, 0x6ca0, 0x2071, 0xc927, 0x7018, 0x2068, 0x8dff, 0x0188,
11184 +       0x68a0, 0xa406, 0x0118, 0x6854, 0x2068, 0x0cc0, 0x6010, 0x2060,
11185 +       0x643c, 0x6540, 0x6648, 0x2d60, 0x080c, 0x54ae, 0x0110, 0xa085,
11186 +       0x0001, 0x012e, 0x000e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de,
11187 +       0x00ee, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x1200,
11188 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x781c, 0xa086, 0x0004, 0x1110,
11189 +       0x6098, 0x0018, 0x2001, 0xc615, 0x2004, 0x20a2, 0x7834, 0x20a2,
11190 +       0x7838, 0x20a2, 0x20a9, 0x0010, 0xa006, 0x20a2, 0x1f04, 0x8d35,
11191 +       0x20a2, 0x20a2, 0x60c3, 0x002c, 0x080c, 0x8be2, 0x0005, 0x0156,
11192 +       0x0146, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x0f00, 0x20a3,
11193 +       0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x080c,
11194 +       0x8be2, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b,
11195 +       0x080c, 0x845b, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006,
11196 +       0x2011, 0xc640, 0x2019, 0xc641, 0x23a6, 0x22a6, 0xa398, 0x0002,
11197 +       0xa290, 0x0002, 0x1f04, 0x8d64, 0x20a3, 0x0000, 0x20a3, 0x0000,
11198 +       0x60c3, 0x001c, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x0156,
11199 +       0x0146, 0x0016, 0x0026, 0x20a1, 0x020b, 0x080c, 0x8434, 0x080c,
11200 +       0x844a, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0015, 0x2098,
11201 +       0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003,
11202 +       0x60c2, 0x080c, 0x8be2, 0x002e, 0x001e, 0x014e, 0x015e, 0x0005,
11203 +       0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x6200,
11204 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008,
11205 +       0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x0016,
11206 +       0x0026, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x7810, 0xa080, 0x0000,
11207 +       0x2004, 0xa080, 0x0017, 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8,
11208 +       0x53a6, 0x8003, 0x60c2, 0x080c, 0x8be2, 0x002e, 0x001e, 0x014e,
11209 +       0x015e, 0x0005, 0x00e6, 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000,
11210 +       0x2071, 0xc927, 0x700c, 0x2060, 0x8cff, 0x0178, 0x080c, 0xae8f,
11211 +       0x1110, 0x080c, 0x9c09, 0x600c, 0x0006, 0x080c, 0xb056, 0x080c,
11212 +       0x95e3, 0x080c, 0x8fb7, 0x00ce, 0x0c78, 0x700f, 0x0000, 0x700b,
11213 +       0x0000, 0x012e, 0x000e, 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0156,
11214 +       0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091,
11215 +       0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0xc927, 0x7024,
11216 +       0x2060, 0x8cff, 0x05a0, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c,
11217 +       0x7024, 0x2009, 0x0013, 0x080c, 0x9613, 0x20a9, 0x01f4, 0x6824,
11218 +       0xd094, 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0,
11219 +       0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0xd084, 0x0118, 0x6827,
11220 +       0x0001, 0x0010, 0x1f04, 0x8e0f, 0x7804, 0xa084, 0x1000, 0x0120,
11221 +       0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e,
11222 +       0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001,
11223 +       0xc600, 0x2004, 0xa096, 0x0001, 0x0590, 0xa096, 0x0004, 0x0578,
11224 +       0x080c, 0x7024, 0x6814, 0xa084, 0x0001, 0x0110, 0x68a7, 0x95f5,
11225 +       0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x4e18, 0x080c, 0x6fad,
11226 +       0x20a9, 0x01f4, 0x6824, 0xd094, 0x0158, 0x6827, 0x0004, 0x7804,
11227 +       0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078,
11228 +       0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, 0x8e52, 0x7804,
11229 +       0xa084, 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x000e,
11230 +       0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e,
11231 +       0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026,
11232 +       0x0016, 0x0006, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140,
11233 +       0x2071, 0xc927, 0x703c, 0x2060, 0x8cff, 0x0904, 0x8f04, 0xa386,
11234 +       0x0002, 0x1128, 0x6814, 0xa084, 0x0002, 0x0904, 0x8f04, 0x68af,
11235 +       0x95f5, 0x6817, 0x0010, 0x2009, 0x00fa, 0x8109, 0x1df0, 0x68c7,
11236 +       0x0000, 0x68cb, 0x0008, 0x080c, 0x7031, 0x080c, 0x22ee, 0x0046,
11237 +       0x2009, 0x017f, 0x200b, 0x00a5, 0x2021, 0x0169, 0x2404, 0xa084,
11238 +       0x000f, 0xa086, 0x0004, 0x1500, 0x68af, 0x95f5, 0x68c7, 0x0000,
11239 +       0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0020, 0x2071, 0xc992,
11240 +       0x6814, 0xa084, 0x0184, 0xa085, 0x0012, 0x6816, 0x7803, 0x0008,
11241 +       0x7003, 0x0000, 0x00fe, 0x00ee, 0xa386, 0x0002, 0x1128, 0x7884,
11242 +       0xa005, 0x1110, 0x7887, 0x0001, 0x2001, 0xc8f8, 0x2004, 0x200a,
11243 +       0x004e, 0xa39d, 0x0000, 0x1140, 0x2009, 0x0049, 0x601c, 0xa086,
11244 +       0x0009, 0x0110, 0x080c, 0x9613, 0x20a9, 0x03e8, 0x6824, 0xd094,
11245 +       0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803,
11246 +       0x1000, 0x7803, 0x0000, 0x0078, 0xd08c, 0x0118, 0x6827, 0x0002,
11247 +       0x0010, 0x1f04, 0x8ee6, 0x7804, 0xa084, 0x1000, 0x0120, 0x7803,
11248 +       0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce,
11249 +       0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x00d6, 0x0126,
11250 +       0x2091, 0x8000, 0x2069, 0xc927, 0x6a06, 0x012e, 0x00de, 0x0005,
11251 +       0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0xc927, 0x6a32, 0x012e,
11252 +       0x00de, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0006, 0x0126,
11253 +       0x2071, 0xc927, 0x7614, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff,
11254 +       0x0538, 0x601c, 0xa206, 0x1500, 0x7014, 0xac36, 0x1110, 0x660c,
11255 +       0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00,
11256 +       0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06,
11257 +       0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xae54,
11258 +       0x080c, 0x8fb7, 0x00ce, 0x08d8, 0x2c78, 0x600c, 0x2060, 0x08b8,
11259 +       0x012e, 0x000e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0156,
11260 +       0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2, 0xa006,
11261 +       0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x1000, 0x0804, 0x8faf,
11262 +       0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2,
11263 +       0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0478,
11264 +       0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2,
11265 +       0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x00f8,
11266 +       0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2,
11267 +       0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078,
11268 +       0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2,
11269 +       0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x0089,
11270 +       0x60c3, 0x0020, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x00e6,
11271 +       0x2071, 0xc927, 0x7020, 0xa005, 0x0110, 0x8001, 0x7022, 0x00ee,
11272 +       0x0005, 0x20a9, 0x0008, 0x20a2, 0x1f04, 0x8fc3, 0x20a2, 0x20a2,
11273 +       0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006,
11274 +       0x0126, 0x2091, 0x8000, 0x2071, 0xc927, 0x7614, 0x2660, 0x2678,
11275 +       0x2039, 0x0001, 0x87ff, 0x0904, 0x905f, 0x8cff, 0x0904, 0x905f,
11276 +       0x601c, 0xa086, 0x0006, 0x1904, 0x905a, 0x88ff, 0x0138, 0x2800,
11277 +       0xac06, 0x1904, 0x905a, 0x2039, 0x0000, 0x0050, 0x6018, 0xa206,
11278 +       0x1904, 0x905a, 0x85ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x905a,
11279 +       0x7024, 0xac06, 0x1598, 0x2069, 0x0100, 0x68c0, 0xa005, 0x1160,
11280 +       0x6824, 0xd084, 0x0148, 0x6827, 0x0001, 0x080c, 0x7024, 0x080c,
11281 +       0x90e6, 0x7027, 0x0000, 0x0410, 0x080c, 0x7024, 0x6820, 0xd0b4,
11282 +       0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, 0x080c,
11283 +       0x90e6, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384,
11284 +       0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
11285 +       0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x7014, 0xac36,
11286 +       0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36,
11287 +       0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066,
11288 +       0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x89ff, 0x1158,
11289 +       0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac91, 0x0110, 0x080c,
11290 +       0xc141, 0x080c, 0xae54, 0x080c, 0x8fb7, 0x88ff, 0x1190, 0x00ce,
11291 +       0x0804, 0x8fda, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8fda, 0xa006,
11292 +       0x012e, 0x000e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe,
11293 +       0x0005, 0x6017, 0x0000, 0x00ce, 0xa8c5, 0x0001, 0x0c88, 0x00f6,
11294 +       0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091,
11295 +       0x8000, 0x2071, 0xc927, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0904,
11296 +       0x90d6, 0x601c, 0xa086, 0x0006, 0x1904, 0x90d1, 0x87ff, 0x0128,
11297 +       0x2700, 0xac06, 0x1904, 0x90d1, 0x0048, 0x6018, 0xa206, 0x1904,
11298 +       0x90d1, 0x85ff, 0x0118, 0x6050, 0xa106, 0x15d8, 0x703c, 0xac06,
11299 +       0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x7033, 0x0000,
11300 +       0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, 0x0000,
11301 +       0x003e, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36,
11302 +       0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037,
11303 +       0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008,
11304 +       0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac91, 0x0110,
11305 +       0x080c, 0xc141, 0x080c, 0xae54, 0x87ff, 0x1190, 0x00ce, 0x0804,
11306 +       0x907e, 0x2c78, 0x600c, 0x2060, 0x0804, 0x907e, 0xa006, 0x012e,
11307 +       0x000e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005,
11308 +       0x6017, 0x0000, 0x00ce, 0xa7bd, 0x0001, 0x0c88, 0x00e6, 0x2071,
11309 +       0xc927, 0x2001, 0xc600, 0x2004, 0xa086, 0x0002, 0x1118, 0x7007,
11310 +       0x0005, 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6, 0x00e6,
11311 +       0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071,
11312 +       0xc927, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0518, 0x2200,
11313 +       0xac06, 0x11e0, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034,
11314 +       0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010,
11315 +       0x7037, 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008,
11316 +       0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0020, 0x2c78, 0x600c,
11317 +       0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00ee,
11318 +       0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0006,
11319 +       0x0126, 0x2091, 0x8000, 0x2071, 0xc927, 0x760c, 0x2660, 0x2678,
11320 +       0x8cff, 0x0904, 0x91bc, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206,
11321 +       0x1904, 0x91b7, 0x7024, 0xac06, 0x1508, 0x2069, 0x0100, 0x68c0,
11322 +       0xa005, 0x0904, 0x9193, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c,
11323 +       0x90e6, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384,
11324 +       0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
11325 +       0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, 0xac36,
11326 +       0x1110, 0x660c, 0x760e, 0x7008, 0xac36, 0x1140, 0x2c00, 0xaf36,
11327 +       0x0118, 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, 0x0066,
11328 +       0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000,
11329 +       0x080c, 0xae7e, 0x1158, 0x080c, 0x2e6c, 0x080c, 0xae8f, 0x11f0,
11330 +       0x080c, 0x9c09, 0x00d8, 0x080c, 0x90e6, 0x08c0, 0x080c, 0xae8f,
11331 +       0x1118, 0x080c, 0x9c09, 0x0090, 0x6010, 0x2068, 0x080c, 0xac91,
11332 +       0x0168, 0x601c, 0xa086, 0x0003, 0x11f8, 0x6837, 0x0103, 0x6b4a,
11333 +       0x6847, 0x0000, 0x080c, 0x580a, 0x080c, 0xae48, 0x080c, 0xb056,
11334 +       0x080c, 0xae54, 0x080c, 0x8fb7, 0x00ce, 0x0804, 0x9140, 0x2c78,
11335 +       0x600c, 0x2060, 0x0804, 0x9140, 0x012e, 0x000e, 0x006e, 0x00ce,
11336 +       0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1d30,
11337 +       0x080c, 0xc141, 0x0c18, 0x0036, 0x0156, 0x0136, 0x0146, 0x3908,
11338 +       0xa006, 0xa190, 0x0020, 0x221c, 0xa39e, 0x2c61, 0x1118, 0x8210,
11339 +       0x8000, 0x0cc8, 0xa005, 0x0138, 0x20a9, 0x0020, 0x2198, 0xa110,
11340 +       0x22a0, 0x22c8, 0x53a3, 0x014e, 0x013e, 0x015e, 0x003e, 0x0005,
11341 +       0x00d6, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x20a3,
11342 +       0x0014, 0x60c3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2099,
11343 +       0xc900, 0x20a9, 0x0004, 0x53a6, 0x20a3, 0x0004, 0x20a3, 0x7878,
11344 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x080c, 0x8be2, 0x00de, 0x0005,
11345 +       0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0214, 0x20a3, 0x0018,
11346 +       0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3, 0x0000,
11347 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7810, 0xa084,
11348 +       0x00ff, 0x20a2, 0x7828, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000,
11349 +       0x60c3, 0x0018, 0x080c, 0x8be2, 0x0005, 0x00d6, 0x0016, 0x2f68,
11350 +       0x2009, 0x0035, 0x080c, 0xb141, 0x1904, 0x929b, 0x20a1, 0x020b,
11351 +       0x080c, 0x83bf, 0x20a3, 0x1300, 0x20a3, 0x0000, 0x7828, 0x2068,
11352 +       0x681c, 0xa086, 0x0003, 0x0580, 0x7818, 0xa080, 0x0028, 0x2014,
11353 +       0x2001, 0xc635, 0x2004, 0xd0ac, 0x11d0, 0xa286, 0x007e, 0x1128,
11354 +       0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x04b8, 0xa286, 0x007f, 0x1128,
11355 +       0x20a3, 0x00ff, 0x20a3, 0xfffd, 0x0478, 0xd2bc, 0x0180, 0xa286,
11356 +       0x0080, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffc, 0x0428, 0xa2e8,
11357 +       0xc77b, 0x2d6c, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x00e8, 0x20a3,
11358 +       0x0000, 0x6098, 0x20a2, 0x00c0, 0x2001, 0xc635, 0x2004, 0xd0ac,
11359 +       0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007e, 0x0240,
11360 +       0x00d6, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0020,
11361 +       0x20a3, 0x0000, 0x6034, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2,
11362 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, 0x080c, 0x8be2,
11363 +       0x001e, 0x00de, 0x0005, 0x7817, 0x0001, 0x7803, 0x0006, 0x001e,
11364 +       0x00de, 0x0005, 0x00d6, 0x0026, 0x7928, 0x2168, 0x691c, 0xa186,
11365 +       0x0006, 0x01c0, 0xa186, 0x0003, 0x0904, 0x9311, 0xa186, 0x0005,
11366 +       0x0904, 0x92fa, 0xa186, 0x0004, 0x05b8, 0xa186, 0x0008, 0x0904,
11367 +       0x9302, 0x7807, 0x0037, 0x7813, 0x1700, 0x080c, 0x9379, 0x002e,
11368 +       0x00de, 0x0005, 0x080c, 0x9335, 0x2009, 0x4000, 0x6800, 0x0002,
11369 +       0x92db, 0x92e6, 0x92dd, 0x92e6, 0x92e2, 0x92db, 0x92db, 0x92e6,
11370 +       0x92e6, 0x92e6, 0x92e6, 0x92db, 0x92db, 0x92db, 0x92db, 0x92db,
11371 +       0x92e6, 0x92db, 0x92e6, 0x080c, 0x1519, 0x6820, 0xd0e4, 0x0110,
11372 +       0xd0cc, 0x0110, 0xa00e, 0x0010, 0x2009, 0x2000, 0x6828, 0x20a2,
11373 +       0x682c, 0x20a2, 0x0804, 0x932b, 0x080c, 0x9335, 0x20a3, 0x0000,
11374 +       0x20a3, 0x0000, 0x2009, 0x4000, 0x6a00, 0xa286, 0x0002, 0x1108,
11375 +       0xa00e, 0x0488, 0x04d1, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009,
11376 +       0x4000, 0x0448, 0x0491, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009,
11377 +       0x4000, 0xa286, 0x0005, 0x0118, 0xa286, 0x0002, 0x1108, 0xa00e,
11378 +       0x00d0, 0x0419, 0x6810, 0x2068, 0x697c, 0x6810, 0xa112, 0x6980,
11379 +       0x6814, 0xa103, 0x20a2, 0x22a2, 0x7928, 0xa180, 0x0000, 0x2004,
11380 +       0xa08e, 0x0002, 0x0130, 0xa08e, 0x0004, 0x0118, 0x2009, 0x4000,
11381 +       0x0010, 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, 0x60c3, 0x0018,
11382 +       0x080c, 0x8be2, 0x002e, 0x00de, 0x0005, 0x0036, 0x0046, 0x0056,
11383 +       0x0066, 0x20a1, 0x020b, 0x080c, 0x845b, 0xa006, 0x20a3, 0x0200,
11384 +       0x20a2, 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, 0xa080, 0x0028,
11385 +       0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e,
11386 +       0x0268, 0x00d6, 0x2069, 0xc61c, 0x2d2c, 0x8d68, 0x2d34, 0xa0e8,
11387 +       0xc77b, 0x2d6c, 0x6b10, 0x6c14, 0x00de, 0x0030, 0x2019, 0x0000,
11388 +       0x6498, 0x2029, 0x0000, 0x6634, 0x7828, 0xa080, 0x0007, 0x2004,
11389 +       0xa086, 0x0003, 0x1128, 0x25a2, 0x26a2, 0x23a2, 0x24a2, 0x0020,
11390 +       0x23a2, 0x24a2, 0x25a2, 0x26a2, 0x006e, 0x005e, 0x004e, 0x003e,
11391 +       0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3,
11392 +       0x0000, 0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c,
11393 +       0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83b7, 0x20a3, 0x1400,
11394 +       0x20a3, 0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x7828, 0x20a2,
11395 +       0x782c, 0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, 0x20a2, 0x20a3,
11396 +       0x0000, 0x60c3, 0x0010, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b,
11397 +       0x080c, 0x8453, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0x20a2,
11398 +       0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, 0x0146,
11399 +       0x20a1, 0x020b, 0x0031, 0x60c3, 0x0000, 0x080c, 0x8be2, 0x014e,
11400 +       0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
11401 +       0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188,
11402 +       0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0300, 0x20a2,
11403 +       0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de,
11404 +       0x0078, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0300,
11405 +       0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x6234, 0x22a2,
11406 +       0x20a3, 0x0819, 0x20a3, 0x0000, 0x080c, 0x8bd1, 0x22a2, 0x20a3,
11407 +       0x0000, 0x2fa2, 0x7a08, 0x22a2, 0x20a3, 0x0000, 0x20a3, 0x0000,
11408 +       0x0005, 0x20a1, 0x020b, 0x0079, 0x7910, 0x21a2, 0x20a3, 0x0000,
11409 +       0x60c3, 0x0000, 0x20e1, 0x9080, 0x60a7, 0x9575, 0x080c, 0x8bec,
11410 +       0x080c, 0x701b, 0x0005, 0x0156, 0x0136, 0x0036, 0x00d6, 0x00e6,
11411 +       0x20e1, 0x9080, 0x20e1, 0x4000, 0x7854, 0x2068, 0xadf0, 0x000f,
11412 +       0x7210, 0xa296, 0x00c0, 0xa294, 0xfffd, 0x7212, 0x7214, 0xa294,
11413 +       0x0300, 0x7216, 0x7100, 0xa194, 0x00ff, 0x7308, 0xa384, 0x00ff,
11414 +       0xa08d, 0xc200, 0x7102, 0xa384, 0xff00, 0xa215, 0x720a, 0x7004,
11415 +       0x720c, 0x700e, 0x7206, 0x20a9, 0x000a, 0x2e98, 0x53a6, 0x60a3,
11416 +       0x0035, 0x6a38, 0xa294, 0x7000, 0xa286, 0x3000, 0x0110, 0x60a3,
11417 +       0x0037, 0x00ee, 0x00de, 0x003e, 0x013e, 0x015e, 0x0005, 0x2009,
11418 +       0x0092, 0x0010, 0x2009, 0x0096, 0x60ab, 0x0036, 0x6116, 0x0005,
11419 +       0x609b, 0x0000, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, 0x4000,
11420 +       0x20a3, 0x22ff, 0x20a3, 0xffff, 0x00d6, 0x2069, 0xc61c, 0x2da6,
11421 +       0x8d68, 0x2da6, 0x00de, 0x20a3, 0x0138, 0x20a3, 0x0000, 0x0026,
11422 +       0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff,
11423 +       0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x20a3, 0x5400, 0x20a3,
11424 +       0x0000, 0x080c, 0x768f, 0x11b8, 0x0016, 0x7810, 0xa080, 0x000d,
11425 +       0x20a9, 0x0014, 0x200c, 0x810f, 0x21a2, 0x8000, 0x1f04, 0x948a,
11426 +       0x20a9, 0x0012, 0x2001, 0x0000, 0x20a3, 0x0000, 0x1f04, 0x9494,
11427 +       0x001e, 0x0804, 0x9502, 0x7810, 0x0016, 0x00c6, 0x00d6, 0x7810,
11428 +       0x2068, 0x2061, 0xc600, 0x6070, 0xa084, 0x00ff, 0x6968, 0x810f,
11429 +       0xa18c, 0xff00, 0xa105, 0x20a2, 0x6074, 0x20a2, 0x6968, 0xa18c,
11430 +       0xff00, 0x21a2, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2009, 0xc605,
11431 +       0x2104, 0x20a2, 0x8108, 0x1f04, 0x94b8, 0x20a9, 0x0004, 0x2009,
11432 +       0xc601, 0x2104, 0x20a2, 0x8108, 0x1f04, 0x94c1, 0x20a9, 0x0004,
11433 +       0x2d08, 0xa188, 0x001d, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04,
11434 +       0x94cb, 0x20a9, 0x0004, 0x2d08, 0xa188, 0x0021, 0x2104, 0x8007,
11435 +       0x20a2, 0x8108, 0x1f04, 0x94d6, 0x080c, 0x7694, 0x1138, 0x20a9,
11436 +       0x0008, 0x20a3, 0x0000, 0x1f04, 0x94e1, 0x0050, 0x20a9, 0x0008,
11437 +       0x2009, 0xc69a, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, 0x94ea,
11438 +       0x20a9, 0x0008, 0x2d08, 0xa188, 0x0025, 0x2104, 0x8007, 0x20a2,
11439 +       0x8108, 0x1f04, 0x94f5, 0x00de, 0x00ce, 0x001e, 0x20a3, 0x0000,
11440 +       0x20a3, 0x0000, 0x60c3, 0x004c, 0x080c, 0x8be2, 0x0005, 0x20a1,
11441 +       0x020b, 0x080c, 0x83bf, 0x20a3, 0x5500, 0x20a3, 0x0000, 0x7810,
11442 +       0x0016, 0x00c6, 0x00d6, 0x7810, 0x2068, 0x686c, 0xa084, 0x00ff,
11443 +       0x6968, 0x810f, 0xa18c, 0xff00, 0xa105, 0x20a2, 0x696c, 0xa18c,
11444 +       0xff00, 0x6870, 0xa084, 0x00ff, 0xa105, 0x20a2, 0x6968, 0xa18c,
11445 +       0xff00, 0x2061, 0xc600, 0x6070, 0xa084, 0x00ff, 0xa10d, 0x21a2,
11446 +       0x6174, 0x21a2, 0x20a9, 0x0004, 0x2d08, 0xa188, 0x001d, 0x2104,
11447 +       0x8007, 0x20a2, 0x8108, 0x1f04, 0x9537, 0x20a9, 0x0004, 0x2d08,
11448 +       0xa188, 0x0021, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, 0x9542,
11449 +       0x20a9, 0x0004, 0x2009, 0xc605, 0x2104, 0x20a2, 0x8108, 0x1f04,
11450 +       0x954c, 0x20a9, 0x0004, 0x2009, 0xc601, 0x2104, 0x20a2, 0x8108,
11451 +       0x1f04, 0x9555, 0x20a9, 0x0008, 0x2d08, 0xa188, 0x0025, 0x2104,
11452 +       0x8007, 0x20a2, 0x8108, 0x1f04, 0x955f, 0x080c, 0x7694, 0x1138,
11453 +       0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x956a, 0x0050, 0x20a9,
11454 +       0x0008, 0x2009, 0xc69a, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04,
11455 +       0x9573, 0x00de, 0x00ce, 0x001e, 0x20a3, 0x0000, 0x20a3, 0x0000,
11456 +       0x60c3, 0x004c, 0x080c, 0x8be2, 0x0005, 0x2061, 0xce00, 0x2a70,
11457 +       0x7068, 0x704a, 0x704f, 0xce00, 0x0005, 0x00e6, 0x0126, 0x2071,
11458 +       0xc600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0010, 0x0608, 0x704c,
11459 +       0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, 0x705c,
11460 +       0xac02, 0x1208, 0x0cb0, 0x2061, 0xce00, 0x0c98, 0x6003, 0x0008,
11461 +       0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502, 0x1230, 0x754e,
11462 +       0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x704f, 0xce00, 0x0cc0,
11463 +       0xa006, 0x0cc0, 0x00e6, 0x2071, 0xc600, 0x7548, 0xa582, 0x0010,
11464 +       0x0600, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0,
11465 +       0x0018, 0x705c, 0xac02, 0x1208, 0x0cb0, 0x2061, 0xce00, 0x0c98,
11466 +       0x6003, 0x0008, 0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502,
11467 +       0x1228, 0x754e, 0xa085, 0x0001, 0x00ee, 0x0005, 0x704f, 0xce00,
11468 +       0x0cc8, 0xa006, 0x0cc8, 0xac82, 0xce00, 0x0a0c, 0x1519, 0x2001,
11469 +       0xc617, 0x2004, 0xac02, 0x1a0c, 0x1519, 0xa006, 0x6006, 0x600a,
11470 +       0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000, 0x6003, 0x0000,
11471 +       0x6052, 0x6056, 0x6022, 0x6026, 0x602a, 0x602e, 0x6032, 0x6036,
11472 +       0x603a, 0x603e, 0x6026, 0x2061, 0xc600, 0x6048, 0x8000, 0x604a,
11473 +       0xa086, 0x0001, 0x0108, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c,
11474 +       0x7e94, 0x012e, 0x0cc0, 0x601c, 0xa084, 0x000f, 0x0002, 0x9622,
11475 +       0x9631, 0x964c, 0x9667, 0xb189, 0xb1a4, 0xb1bf, 0x9622, 0x9631,
11476 +       0x7699, 0x9682, 0xa186, 0x0013, 0x1128, 0x080c, 0x7db1, 0x080c,
11477 +       0x7e94, 0x0005, 0xa18e, 0x0047, 0x1118, 0xa016, 0x080c, 0x1870,
11478 +       0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013,
11479 +       0x006e, 0x0005, 0x964a, 0x9a78, 0x9c43, 0x964a, 0x9cc0, 0x9740,
11480 +       0x964a, 0x964a, 0x9a0a, 0xa126, 0x964a, 0x964a, 0x964a, 0x964a,
11481 +       0x964a, 0x964a, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010,
11482 +       0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0x9665, 0xa759, 0x9665,
11483 +       0x9665, 0x9665, 0x9665, 0x9665, 0x9665, 0xa704, 0xa8c5, 0x9665,
11484 +       0xa786, 0xa7fd, 0xa786, 0xa7fd, 0x9665, 0x080c, 0x1519, 0x0066,
11485 +       0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005,
11486 +       0x9680, 0xa167, 0xa231, 0xa36c, 0xa4c8, 0x9680, 0x9680, 0x9680,
11487 +       0xa141, 0xa6b4, 0xa6b7, 0x9680, 0x9680, 0x9680, 0x9680, 0xa6e1,
11488 +       0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519,
11489 +       0x0013, 0x006e, 0x0005, 0x969b, 0x969b, 0x969b, 0x96c9, 0x9716,
11490 +       0x969b, 0x969b, 0x969b, 0x969d, 0x969b, 0x969b, 0x969b, 0x969b,
11491 +       0x969b, 0x969b, 0x969b, 0x080c, 0x1519, 0xa186, 0x0003, 0x190c,
11492 +       0x1519, 0x00d6, 0x6003, 0x0003, 0x6106, 0x6010, 0x2068, 0x684f,
11493 +       0x0040, 0x687c, 0x680a, 0x6880, 0x680e, 0x6813, 0x0000, 0x6817,
11494 +       0x0000, 0x6854, 0xa092, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003,
11495 +       0x8013, 0x8213, 0xa210, 0x6216, 0x00de, 0x2c10, 0x080c, 0x2068,
11496 +       0x080c, 0x79fc, 0x0126, 0x2091, 0x8000, 0x080c, 0x7f6e, 0x012e,
11497 +       0x0005, 0xa182, 0x0047, 0x0002, 0x96d5, 0x96d5, 0x96d7, 0x96f0,
11498 +       0x96d5, 0x96d5, 0x96d5, 0x96d5, 0x9702, 0x080c, 0x1519, 0x00d6,
11499 +       0x0016, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6003, 0x0004, 0x6110,
11500 +       0x2168, 0x684f, 0x0020, 0x685c, 0x685a, 0x6874, 0x687e, 0x6878,
11501 +       0x6882, 0x6897, 0x0000, 0x689b, 0x0000, 0x001e, 0x00de, 0x0005,
11502 +       0x080c, 0x7e47, 0x00d6, 0x6110, 0x2168, 0x080c, 0xac91, 0x0120,
11503 +       0x684b, 0x0006, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3, 0x080c,
11504 +       0x7f6e, 0x0005, 0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6, 0x6110,
11505 +       0x2168, 0x080c, 0xac91, 0x0120, 0x684b, 0x0029, 0x080c, 0x580a,
11506 +       0x00de, 0x080c, 0x95e3, 0x080c, 0x7f6e, 0x0005, 0xa182, 0x0047,
11507 +       0x0002, 0x9724, 0x9733, 0x9722, 0x9722, 0x9722, 0x9722, 0x9722,
11508 +       0x9722, 0x9722, 0x080c, 0x1519, 0x00d6, 0x6010, 0x2068, 0x684c,
11509 +       0xc0f4, 0x684e, 0x00de, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
11510 +       0x080c, 0x1870, 0x0005, 0x00d6, 0x6110, 0x2168, 0x684b, 0x0000,
11511 +       0x6853, 0x0000, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3, 0x0005,
11512 +       0xa1b6, 0x0015, 0x1118, 0x080c, 0x95e3, 0x0030, 0xa1b6, 0x0016,
11513 +       0x190c, 0x1519, 0x080c, 0x95e3, 0x0005, 0x20a9, 0x000e, 0x2e98,
11514 +       0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, 0x9398,
11515 +       0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, 0xa5a8,
11516 +       0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x1f04, 0x975b, 0x00e6,
11517 +       0x080c, 0xac91, 0x0130, 0x6010, 0x2070, 0x7007, 0x0000, 0x7037,
11518 +       0x0103, 0x00ee, 0x080c, 0x95e3, 0x0005, 0x00d6, 0x0036, 0x7330,
11519 +       0xa386, 0x0200, 0x1130, 0x6018, 0x2068, 0x6813, 0x00ff, 0x6817,
11520 +       0xfffd, 0x6010, 0xa005, 0x0130, 0x2068, 0x6807, 0x0000, 0x6837,
11521 +       0x0103, 0x6b32, 0x080c, 0x95e3, 0x003e, 0x00de, 0x0005, 0x0016,
11522 +       0x20a9, 0x002a, 0xae80, 0x000c, 0x2098, 0x6010, 0xa080, 0x0002,
11523 +       0x20a0, 0x53a3, 0x20a9, 0x002a, 0x6010, 0xa080, 0x0001, 0x2004,
11524 +       0xa080, 0x0002, 0x20a0, 0x53a3, 0x00e6, 0x6010, 0x2004, 0x2070,
11525 +       0x7037, 0x0103, 0x00ee, 0x080c, 0x95e3, 0x001e, 0x0005, 0x0016,
11526 +       0x2009, 0x0000, 0x7030, 0xa086, 0x0100, 0x0140, 0x7038, 0xa084,
11527 +       0x00ff, 0x800c, 0x703c, 0xa084, 0x00ff, 0x8004, 0xa080, 0x0004,
11528 +       0xa108, 0x21a8, 0xae80, 0x000c, 0x2098, 0x6010, 0xa080, 0x0002,
11529 +       0x20a0, 0x080c, 0x4ecb, 0x00e6, 0x080c, 0xac91, 0x0140, 0x6010,
11530 +       0x2070, 0x7007, 0x0000, 0x7034, 0x70b2, 0x7037, 0x0103, 0x00ee,
11531 +       0x080c, 0x95e3, 0x001e, 0x0005, 0x0016, 0x2009, 0x0000, 0x7030,
11532 +       0xa086, 0x0200, 0x0110, 0x2009, 0x0001, 0x00d6, 0x6010, 0xa06d,
11533 +       0x090c, 0x1519, 0x694a, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3,
11534 +       0x001e, 0x0005, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2c68, 0x0016,
11535 +       0x2009, 0x0035, 0x080c, 0xb141, 0x001e, 0x1168, 0x0026, 0x6228,
11536 +       0x2268, 0x002e, 0x2071, 0xcc8c, 0x6b1c, 0xa386, 0x0003, 0x0130,
11537 +       0xa386, 0x0006, 0x0128, 0x080c, 0x95e3, 0x0020, 0x0031, 0x0010,
11538 +       0x080c, 0x98d3, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x6810, 0x2078,
11539 +       0xa186, 0x0015, 0x0904, 0x98ba, 0xa18e, 0x0016, 0x1904, 0x98d1,
11540 +       0x700c, 0xa08c, 0xff00, 0xa186, 0x1700, 0x0120, 0xa186, 0x0300,
11541 +       0x1904, 0x9899, 0x8fff, 0x1138, 0x6800, 0xa086, 0x000f, 0x0904,
11542 +       0x987d, 0x0804, 0x98cf, 0x6808, 0xa086, 0xffff, 0x1904, 0x98bc,
11543 +       0x784c, 0xa084, 0x0060, 0xa086, 0x0020, 0x1150, 0x797c, 0x7810,
11544 +       0xa106, 0x1904, 0x98bc, 0x7980, 0x7814, 0xa106, 0x1904, 0x98bc,
11545 +       0x080c, 0xae48, 0x6858, 0x7852, 0x784c, 0xc0dc, 0xc0f4, 0xc0d4,
11546 +       0x784e, 0x0026, 0xa00e, 0x6a14, 0x2001, 0x000a, 0x080c, 0x783f,
11547 +       0x7854, 0xa20a, 0x0208, 0x8011, 0x7a56, 0x82ff, 0x002e, 0x1138,
11548 +       0x00c6, 0x2d60, 0x080c, 0xaa40, 0x00ce, 0x0804, 0x98cf, 0x00c6,
11549 +       0x00d6, 0x2f68, 0x6838, 0xd0fc, 0x1118, 0x080c, 0x4fa6, 0x0010,
11550 +       0x080c, 0x51dd, 0x00de, 0x00ce, 0x1904, 0x98bc, 0x00c6, 0x2d60,
11551 +       0x080c, 0x95e3, 0x00ce, 0x0804, 0x98cf, 0x00c6, 0x080c, 0xaf0d,
11552 +       0x0190, 0x6013, 0x0000, 0x6818, 0x601a, 0x080c, 0xb05e, 0x601f,
11553 +       0x0003, 0x6904, 0x00c6, 0x2d60, 0x080c, 0x95e3, 0x00ce, 0x080c,
11554 +       0x9613, 0x00ce, 0x04e0, 0x2001, 0xc8ff, 0x2004, 0x683e, 0x00ce,
11555 +       0x04b0, 0x7008, 0xa086, 0x000b, 0x11a0, 0x6018, 0x200c, 0xc1bc,
11556 +       0x2102, 0x00c6, 0x2d60, 0x7853, 0x0003, 0x6007, 0x0085, 0x6003,
11557 +       0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c, 0x7e94, 0x00ce,
11558 +       0x00f0, 0x700c, 0xa086, 0x2a00, 0x1138, 0x2001, 0xc8ff, 0x2004,
11559 +       0x683e, 0x00a8, 0x0481, 0x00a8, 0x8fff, 0x090c, 0x1519, 0x00c6,
11560 +       0x00d6, 0x2d60, 0x2f68, 0x6837, 0x0103, 0x684b, 0x0003, 0x080c,
11561 +       0xa934, 0x080c, 0xae48, 0x080c, 0xae54, 0x00de, 0x00ce, 0x080c,
11562 +       0x95e3, 0x00fe, 0x0005, 0xa186, 0x0015, 0x1128, 0x2001, 0xc8ff,
11563 +       0x2004, 0x683e, 0x0068, 0xa18e, 0x0016, 0x1160, 0x00c6, 0x2d00,
11564 +       0x2060, 0x080c, 0xc3e2, 0x080c, 0x7103, 0x080c, 0x95e3, 0x00ce,
11565 +       0x080c, 0x95e3, 0x0005, 0x0026, 0x0036, 0x0046, 0x7228, 0x7c80,
11566 +       0x7b7c, 0xd2f4, 0x0130, 0x2001, 0xc8ff, 0x2004, 0x683e, 0x0804,
11567 +       0x994d, 0x00c6, 0x2d60, 0x080c, 0xa954, 0x00ce, 0x6804, 0xa086,
11568 +       0x0050, 0x1168, 0x00c6, 0x2d00, 0x2060, 0x6003, 0x0001, 0x6007,
11569 +       0x0050, 0x080c, 0x7999, 0x080c, 0x7e94, 0x00ce, 0x04f0, 0x6800,
11570 +       0xa086, 0x000f, 0x01c8, 0x8fff, 0x090c, 0x1519, 0x6820, 0xd0dc,
11571 +       0x1198, 0x6800, 0xa086, 0x0004, 0x1198, 0x784c, 0xd0ac, 0x0180,
11572 +       0x784c, 0xc0dc, 0xc0f4, 0x784e, 0x7850, 0xc0f4, 0xc0fc, 0x7852,
11573 +       0x2001, 0x0001, 0x682e, 0x00e0, 0x2001, 0x0007, 0x682e, 0x00c0,
11574 +       0x784c, 0xd0b4, 0x1130, 0xd0ac, 0x0db8, 0x784c, 0xd0f4, 0x1da0,
11575 +       0x0c38, 0xd2ec, 0x1d88, 0x7024, 0xa306, 0x1118, 0x7020, 0xa406,
11576 +       0x0d58, 0x7020, 0x6836, 0x7024, 0x683a, 0x2001, 0x0005, 0x682e,
11577 +       0x080c, 0xaf9a, 0x080c, 0x7e94, 0x0010, 0x080c, 0x95e3, 0x004e,
11578 +       0x003e, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x0026, 0x6034, 0x2068,
11579 +       0x6a1c, 0xa286, 0x0007, 0x0904, 0x99b1, 0xa286, 0x0002, 0x0904,
11580 +       0x99b1, 0xa286, 0x0000, 0x0904, 0x99b1, 0x6808, 0x6338, 0xa306,
11581 +       0x1904, 0x99b1, 0x2071, 0xcc8c, 0xa186, 0x0015, 0x05e0, 0xa18e,
11582 +       0x0016, 0x1190, 0x6030, 0xa084, 0x00ff, 0xa086, 0x0001, 0x1160,
11583 +       0x700c, 0xa086, 0x2a00, 0x1140, 0x6034, 0xa080, 0x0008, 0x200c,
11584 +       0xc1dd, 0xc1f5, 0x2102, 0x0438, 0x00c6, 0x6034, 0x2060, 0x6104,
11585 +       0xa186, 0x004b, 0x01a0, 0xa186, 0x004c, 0x0188, 0xa186, 0x004d,
11586 +       0x0170, 0xa186, 0x004e, 0x0158, 0xa186, 0x0052, 0x0140, 0x6010,
11587 +       0x2068, 0x080c, 0xac91, 0x090c, 0x1519, 0x6853, 0x0003, 0x6007,
11588 +       0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c,
11589 +       0x7e94, 0x00ce, 0x0030, 0x6034, 0x2070, 0x2001, 0xc8ff, 0x2004,
11590 +       0x703e, 0x080c, 0x95e3, 0x002e, 0x00de, 0x00ee, 0x0005, 0x00d6,
11591 +       0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0xa1b6, 0x0015,
11592 +       0x1558, 0x6018, 0x2068, 0x0156, 0x0036, 0x0026, 0xae90, 0x000c,
11593 +       0xa290, 0x0004, 0x20a9, 0x0004, 0xad98, 0x000a, 0x080c, 0xa103,
11594 +       0x002e, 0x003e, 0x015e, 0x11d8, 0x0156, 0x0036, 0x0026, 0xae90,
11595 +       0x000c, 0xa290, 0x0008, 0x20a9, 0x0004, 0xad98, 0x0006, 0x080c,
11596 +       0xa103, 0x002e, 0x003e, 0x015e, 0x1150, 0x7038, 0x680a, 0x703c,
11597 +       0x680e, 0x6800, 0xc08d, 0x6802, 0x00de, 0x0804, 0x9767, 0x080c,
11598 +       0x2e46, 0x00c6, 0x080c, 0x958d, 0x2f00, 0x601a, 0x6013, 0x0000,
11599 +       0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007,
11600 +       0x080c, 0x5291, 0x080c, 0x52be, 0x080c, 0x79df, 0x080c, 0x7e94,
11601 +       0x00ce, 0x0c10, 0x2100, 0xa1b2, 0x0080, 0x1a0c, 0x1519, 0xa1b2,
11602 +       0x0040, 0x1a04, 0x9a6e, 0x0002, 0x9a62, 0x9a56, 0x9a62, 0x9a62,
11603 +       0x9a62, 0x9a62, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54,
11604 +       0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54,
11605 +       0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54,
11606 +       0x9a54, 0x9a54, 0x9a54, 0x9a62, 0x9a54, 0x9a62, 0x9a62, 0x9a54,
11607 +       0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a62, 0x9a54, 0x9a54, 0x9a54,
11608 +       0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a62, 0x9a62,
11609 +       0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54,
11610 +       0x9a54, 0x9a62, 0x9a54, 0x9a54, 0x080c, 0x1519, 0x6003, 0x0001,
11611 +       0x6106, 0x080c, 0x79df, 0x0126, 0x2091, 0x8000, 0x080c, 0x7e94,
11612 +       0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x79df, 0x0126,
11613 +       0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x2600, 0x0002,
11614 +       0x9a62, 0x9a62, 0x9a76, 0x9a62, 0x9a62, 0x9a76, 0x080c, 0x1519,
11615 +       0x6004, 0xa0b2, 0x0080, 0x1a0c, 0x1519, 0xa1b6, 0x0013, 0x0904,
11616 +       0x9b28, 0xa1b6, 0x0027, 0x1904, 0x9aee, 0x080c, 0x7db1, 0x6004,
11617 +       0x080c, 0xae7e, 0x0190, 0x080c, 0xae8f, 0x0904, 0x9ae8, 0xa08e,
11618 +       0x0021, 0x0904, 0x9aeb, 0xa08e, 0x0022, 0x0904, 0x9ae8, 0xa08e,
11619 +       0x003d, 0x0904, 0x9aeb, 0x0804, 0x9ae1, 0x080c, 0x2e6c, 0x2001,
11620 +       0x0007, 0x080c, 0x5291, 0x6018, 0xa080, 0x0028, 0x200c, 0x080c,
11621 +       0x9c09, 0xa186, 0x007e, 0x1148, 0x2001, 0xc635, 0x2014, 0xc285,
11622 +       0x080c, 0x5f22, 0x1108, 0xc2ad, 0x2202, 0x0016, 0x0026, 0x0036,
11623 +       0x2110, 0x0026, 0x2019, 0x0028, 0x080c, 0x9132, 0x002e, 0x080c,
11624 +       0xc4e4, 0x003e, 0x002e, 0x001e, 0x0016, 0x0026, 0x0036, 0x2110,
11625 +       0x2019, 0x0028, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c,
11626 +       0x7a0e, 0x00c6, 0x6018, 0xa065, 0x0110, 0x080c, 0x553e, 0x00ce,
11627 +       0x2c08, 0x080c, 0xbef7, 0x007e, 0x003e, 0x002e, 0x001e, 0x080c,
11628 +       0x5300, 0x080c, 0xb056, 0x080c, 0x95e3, 0x080c, 0x7e94, 0x0005,
11629 +       0x080c, 0x9c09, 0x0cb0, 0x080c, 0x9c37, 0x0c98, 0xa186, 0x0014,
11630 +       0x1db0, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x080c, 0xae7e, 0x1188,
11631 +       0x080c, 0x2e6c, 0x6018, 0xa080, 0x0028, 0x200c, 0x080c, 0x9c09,
11632 +       0xa186, 0x007e, 0x1128, 0x2001, 0xc635, 0x200c, 0xc185, 0x2102,
11633 +       0x08c0, 0x080c, 0xae8f, 0x1118, 0x080c, 0x9c09, 0x0890, 0x6004,
11634 +       0xa08e, 0x0032, 0x1158, 0x00e6, 0x00f6, 0x2071, 0xc6a2, 0x2079,
11635 +       0x0000, 0x080c, 0x3179, 0x00fe, 0x00ee, 0x0818, 0x6004, 0xa08e,
11636 +       0x0021, 0x0d50, 0xa08e, 0x0022, 0x090c, 0x9c09, 0x0804, 0x9ae1,
11637 +       0xa0b2, 0x0040, 0x1a04, 0x9beb, 0x2008, 0x0002, 0x9b70, 0x9b71,
11638 +       0x9b74, 0x9b77, 0x9b7a, 0x9b7d, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e,
11639 +       0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e,
11640 +       0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e,
11641 +       0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b80, 0x9b8f, 0x9b6e, 0x9b91,
11642 +       0x9b8f, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b8f, 0x9b8f,
11643 +       0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e,
11644 +       0x9bcb, 0x9b8f, 0x9b6e, 0x9b8b, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b8c,
11645 +       0x9b6e, 0x9b6e, 0x9b6e, 0x9b8f, 0x9bc2, 0x9b6e, 0x080c, 0x1519,
11646 +       0x00f0, 0x2001, 0x000b, 0x0460, 0x2001, 0x0003, 0x0448, 0x2001,
11647 +       0x0005, 0x0430, 0x2001, 0x0001, 0x0418, 0x2001, 0x0009, 0x0400,
11648 +       0x080c, 0x7db1, 0x6003, 0x0005, 0x2001, 0xc8ff, 0x2004, 0x603e,
11649 +       0x080c, 0x7e94, 0x00a0, 0x0018, 0x0010, 0x080c, 0x5291, 0x0804,
11650 +       0x9bdc, 0x080c, 0x7db1, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x2001,
11651 +       0xc8ff, 0x2004, 0x603e, 0x6003, 0x0004, 0x080c, 0x7e94, 0x0005,
11652 +       0x080c, 0x5291, 0x080c, 0x7db1, 0x6003, 0x0002, 0x2001, 0xc8ff,
11653 +       0x2004, 0x603e, 0x0036, 0x2019, 0xc65d, 0x2304, 0xa084, 0xff00,
11654 +       0x1120, 0x2001, 0xc8fd, 0x201c, 0x0040, 0x8007, 0xa09a, 0x0004,
11655 +       0x0ec0, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x003e, 0x080c,
11656 +       0x7e94, 0x08e8, 0x080c, 0x7db1, 0x080c, 0xb056, 0x080c, 0x95e3,
11657 +       0x080c, 0x7e94, 0x08a0, 0x00e6, 0x00f6, 0x2071, 0xc6a2, 0x2079,
11658 +       0x0000, 0x080c, 0x3179, 0x00fe, 0x00ee, 0x080c, 0x7db1, 0x080c,
11659 +       0x95e3, 0x080c, 0x7e94, 0x0818, 0x080c, 0x7db1, 0x2001, 0xc8ff,
11660 +       0x2004, 0x603e, 0x6003, 0x0002, 0x2001, 0xc8fd, 0x2004, 0x6016,
11661 +       0x080c, 0x7e94, 0x0005, 0x2600, 0x2008, 0x0002, 0x9bf6, 0x9bdc,
11662 +       0x9bf4, 0x9bdc, 0x9bdc, 0x9bf4, 0x080c, 0x1519, 0x080c, 0x7db1,
11663 +       0x00d6, 0x6010, 0x2068, 0x080c, 0x768f, 0x1118, 0x080c, 0x1619,
11664 +       0x0010, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3, 0x080c, 0x7e94,
11665 +       0x0005, 0x00e6, 0x0026, 0x0016, 0x080c, 0xac91, 0x0508, 0x6010,
11666 +       0x2070, 0x7034, 0xa086, 0x0139, 0x1148, 0x2001, 0x0030, 0x2009,
11667 +       0x0000, 0x2011, 0x4005, 0x080c, 0xb10d, 0x0090, 0x7038, 0xd0fc,
11668 +       0x0178, 0x7007, 0x0000, 0x0016, 0x6004, 0xa08e, 0x0021, 0x0160,
11669 +       0xa08e, 0x003d, 0x0148, 0x001e, 0x7037, 0x0103, 0x7033, 0x0100,
11670 +       0x001e, 0x002e, 0x00ee, 0x0005, 0x001e, 0x0009, 0x0cc8, 0x00e6,
11671 +       0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x7023,
11672 +       0x8001, 0x00ee, 0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, 0xa084,
11673 +       0x00ff, 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1519, 0x6604, 0xa6b6,
11674 +       0x0043, 0x1120, 0x080c, 0xb0c9, 0x0804, 0x9cb0, 0x6604, 0xa6b6,
11675 +       0x0033, 0x1120, 0x080c, 0xb079, 0x0804, 0x9cb0, 0x6604, 0xa6b6,
11676 +       0x0028, 0x1120, 0x080c, 0xaebf, 0x0804, 0x9cb0, 0x6604, 0xa6b6,
11677 +       0x0029, 0x1120, 0x080c, 0xaed6, 0x0804, 0x9cb0, 0x6604, 0xa6b6,
11678 +       0x001f, 0x1118, 0x080c, 0x974d, 0x04d8, 0x6604, 0xa6b6, 0x0000,
11679 +       0x1118, 0x080c, 0x99b7, 0x04a0, 0x6604, 0xa6b6, 0x0022, 0x1118,
11680 +       0x080c, 0x9775, 0x0468, 0x6604, 0xa6b6, 0x0035, 0x1118, 0x080c,
11681 +       0x97f2, 0x0430, 0x6604, 0xa6b6, 0x0039, 0x1118, 0x080c, 0x9953,
11682 +       0x00f8, 0x6604, 0xa6b6, 0x003d, 0x1118, 0x080c, 0x978f, 0x00c0,
11683 +       0x6604, 0xa6b6, 0x0044, 0x1118, 0x080c, 0x97af, 0x0088, 0x6604,
11684 +       0xa6b6, 0x0041, 0x1118, 0x080c, 0x97dc, 0x0050, 0xa1b6, 0x0015,
11685 +       0x1110, 0x0053, 0x0028, 0xa1b6, 0x0016, 0x1118, 0x0804, 0x9e93,
11686 +       0x0005, 0x080c, 0x962a, 0x0ce0, 0x9cda, 0x9cdd, 0x9cda, 0x9d21,
11687 +       0x9cda, 0x9e1a, 0x9ea1, 0x9cda, 0x9cda, 0x9e6b, 0x9cda, 0x9e81,
11688 +       0xa1b6, 0x0048, 0x0140, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
11689 +       0x080c, 0x1870, 0x0005, 0x00e6, 0xacf0, 0x0004, 0x2e74, 0x7000,
11690 +       0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x95e3, 0x0005, 0x080c,
11691 +       0x95e3, 0x0005, 0xe000, 0xe000, 0x0005, 0x00e6, 0x2071, 0xc600,
11692 +       0x7084, 0xa086, 0x0074, 0x1530, 0x080c, 0xbece, 0x11b0, 0x00d6,
11693 +       0x6018, 0x2068, 0x7030, 0xd08c, 0x0128, 0x6800, 0xd0bc, 0x0110,
11694 +       0xc0c5, 0x6802, 0x00e9, 0x00de, 0x2001, 0x0006, 0x080c, 0x5291,
11695 +       0x080c, 0x2e6c, 0x080c, 0x95e3, 0x0088, 0x2001, 0x000a, 0x080c,
11696 +       0x5291, 0x080c, 0x2e6c, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c,
11697 +       0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9df5, 0x00ee, 0x0005,
11698 +       0x6800, 0xd084, 0x0168, 0x2001, 0x0000, 0x080c, 0x527f, 0x2069,
11699 +       0xc652, 0x6804, 0xd0a4, 0x0120, 0x2001, 0x0006, 0x080c, 0x52be,
11700 +       0x0005, 0x00d6, 0x2011, 0xc621, 0x2204, 0xa086, 0x0074, 0x1904,
11701 +       0x9df0, 0x6018, 0x2068, 0x6aa0, 0xa286, 0x007e, 0x1120, 0x080c,
11702 +       0x9fc3, 0x0804, 0x9d8f, 0x080c, 0x9fb9, 0x6018, 0x2068, 0xa080,
11703 +       0x0028, 0x2014, 0xa286, 0x0080, 0x11c0, 0x6813, 0x00ff, 0x6817,
11704 +       0xfffc, 0x6010, 0xa005, 0x0138, 0x2068, 0x6807, 0x0000, 0x6837,
11705 +       0x0103, 0x6833, 0x0200, 0x2001, 0x0006, 0x080c, 0x5291, 0x080c,
11706 +       0x2e6c, 0x080c, 0x95e3, 0x0804, 0x9df3, 0x00e6, 0x2071, 0xc635,
11707 +       0x2e04, 0xd09c, 0x0188, 0x2071, 0xcc80, 0x7108, 0x720c, 0xa18c,
11708 +       0x00ff, 0x1118, 0xa284, 0xff00, 0x0138, 0x6018, 0x2070, 0x70a0,
11709 +       0xd0bc, 0x1110, 0x7112, 0x7216, 0x00ee, 0x6010, 0xa005, 0x0198,
11710 +       0x2068, 0x6838, 0xd0f4, 0x0178, 0x6834, 0xa084, 0x00ff, 0xa086,
11711 +       0x0039, 0x1958, 0x2001, 0x0000, 0x2009, 0x0000, 0x2011, 0x4000,
11712 +       0x080c, 0xb10d, 0x0840, 0x2001, 0x0004, 0x080c, 0x5291, 0x6003,
11713 +       0x0001, 0x6007, 0x0003, 0x080c, 0x79df, 0x0804, 0x9df3, 0x685c,
11714 +       0xd0e4, 0x01d8, 0x080c, 0xb009, 0x080c, 0x5f22, 0x0118, 0xd0dc,
11715 +       0x1904, 0x9d4b, 0x2011, 0xc635, 0x2204, 0xc0ad, 0x2012, 0x2001,
11716 +       0xc8d6, 0x2004, 0x00f6, 0x2079, 0x0100, 0x78e3, 0x0000, 0x080c,
11717 +       0x2a1c, 0x78e2, 0x00fe, 0x0804, 0x9d4b, 0x080c, 0xb03f, 0x2011,
11718 +       0xc635, 0x2204, 0xc0a5, 0x2012, 0x0006, 0x080c, 0xc023, 0x000e,
11719 +       0x1904, 0x9d4b, 0xc0b5, 0x2012, 0x2001, 0x0006, 0x080c, 0x5291,
11720 +       0x2001, 0x0000, 0x080c, 0x527f, 0x00c6, 0x2009, 0x00ef, 0x00f6,
11721 +       0x2079, 0x0100, 0x79ea, 0x7932, 0x7936, 0x00fe, 0x080c, 0x29f1,
11722 +       0x00f6, 0x2079, 0xc600, 0x7976, 0x2100, 0x2009, 0x0000, 0x080c,
11723 +       0x29c7, 0x7952, 0x00fe, 0x8108, 0x080c, 0x52e1, 0x2c00, 0x00ce,
11724 +       0x1904, 0x9d4b, 0x601a, 0x2001, 0x0002, 0x080c, 0x5291, 0x601f,
11725 +       0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x0018,
11726 +       0x2001, 0x0001, 0x0011, 0x00de, 0x0005, 0x0066, 0x2030, 0xa005,
11727 +       0x0170, 0x2001, 0x0007, 0x080c, 0x5291, 0x2001, 0xc600, 0x2004,
11728 +       0xa086, 0x0003, 0x1120, 0x2001, 0x0007, 0x080c, 0x52be, 0x2600,
11729 +       0xa005, 0x1150, 0x6010, 0xa080, 0x000e, 0x2004, 0xd0fc, 0x1120,
11730 +       0x2011, 0x8014, 0x080c, 0x407d, 0x080c, 0x2e6c, 0x080c, 0x95e3,
11731 +       0x006e, 0x0005, 0x00e6, 0x0026, 0x0016, 0x2071, 0xc600, 0x7084,
11732 +       0xa086, 0x0014, 0x15f0, 0x7000, 0xa086, 0x0003, 0x1128, 0x6010,
11733 +       0xa005, 0x1110, 0x080c, 0x40ef, 0x00d6, 0x6018, 0x2068, 0x080c,
11734 +       0x53df, 0x080c, 0x9d10, 0x00de, 0x080c, 0xa072, 0x1550, 0x00d6,
11735 +       0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0518, 0x2001, 0x0006,
11736 +       0x080c, 0x5291, 0x00e6, 0x6010, 0xa075, 0x01a8, 0x7034, 0xa084,
11737 +       0x00ff, 0xa086, 0x0039, 0x1148, 0x2001, 0x0000, 0x2009, 0x0000,
11738 +       0x2011, 0x4000, 0x080c, 0xb10d, 0x0030, 0x7007, 0x0000, 0x7037,
11739 +       0x0103, 0x7033, 0x0200, 0x00ee, 0x080c, 0x2e6c, 0x080c, 0x95e3,
11740 +       0x0030, 0x080c, 0x9c09, 0x2001, 0x0000, 0x080c, 0x9df5, 0x001e,
11741 +       0x002e, 0x00ee, 0x0005, 0x2011, 0xc621, 0x2204, 0xa086, 0x0014,
11742 +       0x1158, 0x2001, 0x0002, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007,
11743 +       0x0001, 0x080c, 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9df5,
11744 +       0x0005, 0x2011, 0xc621, 0x2204, 0xa086, 0x0004, 0x1138, 0x2001,
11745 +       0x0007, 0x080c, 0x5291, 0x080c, 0x95e3, 0x0020, 0x2001, 0x0001,
11746 +       0x080c, 0x9df5, 0x0005, 0x000b, 0x0005, 0x9cda, 0x9eac, 0x9cda,
11747 +       0x9ee2, 0x9cda, 0x9f6f, 0x9ea1, 0x9cd7, 0x9cda, 0x9f84, 0x9cda,
11748 +       0x9f96, 0x6604, 0xa686, 0x0003, 0x0904, 0x9e1a, 0xa6b6, 0x001e,
11749 +       0x1110, 0x080c, 0x95e3, 0x0005, 0x00d6, 0x00c6, 0x080c, 0x9fa8,
11750 +       0x1178, 0x2001, 0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c,
11751 +       0x5291, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x00f8,
11752 +       0x2009, 0xcc8e, 0x2104, 0xa086, 0x0009, 0x1160, 0x6018, 0x2068,
11753 +       0x6840, 0xa084, 0x00ff, 0xa005, 0x0170, 0x8001, 0x6842, 0x6017,
11754 +       0x000a, 0x0068, 0x2009, 0xcc8f, 0x2104, 0xa084, 0xff00, 0xa086,
11755 +       0x1900, 0x1108, 0x08d0, 0x2001, 0x0001, 0x080c, 0x9df5, 0x00ce,
11756 +       0x00de, 0x0005, 0x0026, 0x2011, 0x0000, 0x080c, 0x9fb6, 0x00d6,
11757 +       0x2069, 0xc8e5, 0x2d04, 0xa005, 0x0168, 0x6018, 0x2068, 0x68a0,
11758 +       0xa086, 0x007e, 0x1138, 0x2069, 0xc61d, 0x2d04, 0x8000, 0x206a,
11759 +       0x00de, 0x0010, 0x00de, 0x0078, 0x2001, 0x0000, 0x080c, 0x527f,
11760 +       0x2001, 0x0002, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, 0x0002,
11761 +       0x080c, 0x79df, 0x0490, 0x00d6, 0x6010, 0x2068, 0x080c, 0xac91,
11762 +       0x00de, 0x0108, 0x6a34, 0x080c, 0x9c09, 0x2009, 0xcc8e, 0x2134,
11763 +       0xa6b4, 0x00ff, 0xa686, 0x0005, 0x0510, 0xa686, 0x000b, 0x01c8,
11764 +       0x2009, 0xcc8f, 0x2104, 0xa084, 0xff00, 0x1118, 0xa686, 0x0009,
11765 +       0x01b0, 0xa086, 0x1900, 0x1168, 0xa686, 0x0009, 0x0180, 0x2001,
11766 +       0x0004, 0x080c, 0x5291, 0x2001, 0x0028, 0x6016, 0x6007, 0x004b,
11767 +       0x0020, 0x2001, 0x0001, 0x080c, 0x9df5, 0x002e, 0x0005, 0x00d6,
11768 +       0xa286, 0x0139, 0x0160, 0x6010, 0x2068, 0x080c, 0xac91, 0x0148,
11769 +       0x6834, 0xa086, 0x0139, 0x0118, 0x6838, 0xd0fc, 0x0110, 0x00de,
11770 +       0x0c40, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0140,
11771 +       0x8001, 0x6842, 0x6017, 0x000a, 0x6007, 0x0016, 0x00de, 0x08e8,
11772 +       0x68a0, 0xa086, 0x007e, 0x1138, 0x00e6, 0x2071, 0xc600, 0x080c,
11773 +       0x4f02, 0x00ee, 0x0010, 0x080c, 0x2e46, 0x00de, 0x0850, 0x080c,
11774 +       0x9fb6, 0x1158, 0x2001, 0x0004, 0x080c, 0x5291, 0x6003, 0x0001,
11775 +       0x6007, 0x0003, 0x080c, 0x79df, 0x0030, 0x080c, 0x9c09, 0x2001,
11776 +       0x0000, 0x080c, 0x9df5, 0x0005, 0x0489, 0x1158, 0x2001, 0x0008,
11777 +       0x080c, 0x5291, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, 0x79df,
11778 +       0x0020, 0x2001, 0x0001, 0x080c, 0x9df5, 0x0005, 0x00f9, 0x1158,
11779 +       0x2001, 0x000a, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, 0x0001,
11780 +       0x080c, 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9df5, 0x0005,
11781 +       0x2009, 0xcc8e, 0x2104, 0xa086, 0x0003, 0x1138, 0x2009, 0xcc8f,
11782 +       0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x0005, 0xa085, 0x0001,
11783 +       0x0005, 0x00c6, 0x0016, 0xac88, 0x0006, 0x2164, 0x080c, 0x534c,
11784 +       0x001e, 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x0036, 0x0016,
11785 +       0x6018, 0x2068, 0x2071, 0xc635, 0x2e04, 0xa085, 0x0003, 0x2072,
11786 +       0x080c, 0xa047, 0x0560, 0x2009, 0xc635, 0x2104, 0xc0cd, 0x200a,
11787 +       0x2001, 0xc653, 0x2004, 0xd0a4, 0x0158, 0xa006, 0x2020, 0x2009,
11788 +       0x002a, 0x080c, 0xc190, 0x2001, 0xc60c, 0x200c, 0xc195, 0x2102,
11789 +       0x2019, 0x002a, 0x2009, 0x0001, 0x080c, 0x2e19, 0x2071, 0xc600,
11790 +       0x080c, 0x2c62, 0x00c6, 0x0156, 0x20a9, 0x0081, 0x2009, 0x007f,
11791 +       0x080c, 0x2f41, 0x8108, 0x1f04, 0x9ff8, 0x015e, 0x00ce, 0x080c,
11792 +       0x9fb9, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0xcc80, 0x2079,
11793 +       0x0100, 0x2e04, 0xa084, 0x00ff, 0x2069, 0xc61c, 0x206a, 0x78e6,
11794 +       0x0006, 0x8e70, 0x2e04, 0x2069, 0xc61d, 0x206a, 0x78ea, 0x7832,
11795 +       0x7836, 0x2010, 0xa084, 0xff00, 0x001e, 0xa105, 0x2009, 0xc628,
11796 +       0x200a, 0x2200, 0xa084, 0x00ff, 0x2008, 0x080c, 0x29f1, 0x080c,
11797 +       0x5f22, 0x0170, 0x2069, 0xcc8e, 0x2071, 0xc8f9, 0x6810, 0x2072,
11798 +       0x6814, 0x7006, 0x6818, 0x700a, 0x681c, 0x700e, 0x080c, 0xb009,
11799 +       0x0040, 0x2001, 0x0006, 0x080c, 0x5291, 0x080c, 0x2e6c, 0x080c,
11800 +       0x95e3, 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x0026,
11801 +       0x0036, 0x00e6, 0x0156, 0x2019, 0xc628, 0x231c, 0x83ff, 0x01e8,
11802 +       0x2071, 0xcc80, 0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, 0xff00,
11803 +       0xa205, 0xa306, 0x1190, 0x2011, 0xcc96, 0xad98, 0x000a, 0x20a9,
11804 +       0x0004, 0x080c, 0xa103, 0x1148, 0x2011, 0xcc9a, 0xad98, 0x0006,
11805 +       0x20a9, 0x0004, 0x080c, 0xa103, 0x1100, 0x015e, 0x00ee, 0x003e,
11806 +       0x002e, 0x0005, 0x00e6, 0x2071, 0xcc8c, 0x7004, 0xa086, 0x0014,
11807 +       0x11a8, 0x7008, 0xa086, 0x0800, 0x1188, 0x700c, 0xd0ec, 0x0160,
11808 +       0xa084, 0x0f00, 0xa086, 0x0100, 0x1138, 0x7024, 0xd0a4, 0x1110,
11809 +       0xd0ac, 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, 0x00ee, 0x0005,
11810 +       0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, 0x0006,
11811 +       0x0126, 0x2091, 0x8000, 0x2029, 0xc930, 0x252c, 0x2021, 0xc936,
11812 +       0x2424, 0x2061, 0xce00, 0x2071, 0xc600, 0x7248, 0x7068, 0xa202,
11813 +       0x16f0, 0x080c, 0xc1b8, 0x05a0, 0x671c, 0xa786, 0x0001, 0x0580,
11814 +       0xa786, 0x0007, 0x0568, 0x2500, 0xac06, 0x0550, 0x2400, 0xac06,
11815 +       0x0538, 0x00c6, 0x6000, 0xa086, 0x0004, 0x1110, 0x080c, 0x1953,
11816 +       0xa786, 0x0008, 0x1148, 0x080c, 0xae8f, 0x1130, 0x00ce, 0x080c,
11817 +       0x9c09, 0x080c, 0xae54, 0x00a0, 0x6010, 0x2068, 0x080c, 0xac91,
11818 +       0x0160, 0xa786, 0x0003, 0x11e8, 0x6837, 0x0103, 0x6b4a, 0x6847,
11819 +       0x0000, 0x080c, 0x580a, 0x080c, 0xae48, 0x080c, 0xae54, 0x00ce,
11820 +       0xace0, 0x0018, 0x705c, 0xac02, 0x1210, 0x0804, 0xa0a5, 0x012e,
11821 +       0x000e, 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, 0x00de, 0x00ee,
11822 +       0x0005, 0xa786, 0x0006, 0x1118, 0x080c, 0xc141, 0x0c30, 0xa786,
11823 +       0x0009, 0x1128, 0x2009, 0x0106, 0x080c, 0x9613, 0x0c00, 0xa786,
11824 +       0x000a, 0x09a0, 0x0888, 0x220c, 0x2304, 0xa106, 0x1130, 0x8210,
11825 +       0x8318, 0x1f04, 0xa103, 0xa006, 0x0005, 0x2304, 0xa102, 0x0218,
11826 +       0x2001, 0x0001, 0x0010, 0x2001, 0x0000, 0xa18d, 0x0001, 0x0005,
11827 +       0x220c, 0x810f, 0x2304, 0xa106, 0x1130, 0x8210, 0x8318, 0x1f04,
11828 +       0xa118, 0xa006, 0x0005, 0xa18d, 0x0001, 0x0005, 0x6004, 0xa08a,
11829 +       0x0080, 0x1a0c, 0x1519, 0x080c, 0xae7e, 0x0120, 0x080c, 0xae8f,
11830 +       0x0168, 0x0028, 0x080c, 0x2e6c, 0x080c, 0xae8f, 0x0138, 0x080c,
11831 +       0x7db1, 0x080c, 0x95e3, 0x080c, 0x7e94, 0x0005, 0x080c, 0x9c09,
11832 +       0x0cb0, 0xa182, 0x0040, 0x0002, 0xa157, 0xa157, 0xa157, 0xa157,
11833 +       0xa157, 0xa157, 0xa157, 0xa157, 0xa157, 0xa157, 0xa157, 0xa159,
11834 +       0xa159, 0xa159, 0xa159, 0xa157, 0xa157, 0xa157, 0xa159, 0x080c,
11835 +       0x1519, 0x600b, 0xffff, 0x6003, 0x0001, 0x6106, 0x080c, 0x7999,
11836 +       0x0126, 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0xa186,
11837 +       0x0013, 0x1128, 0x6004, 0xa082, 0x0040, 0x0804, 0xa1f3, 0xa186,
11838 +       0x0027, 0x11e8, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x00d6, 0x6110,
11839 +       0x2168, 0x080c, 0xac91, 0x0168, 0x6837, 0x0103, 0x684b, 0x0029,
11840 +       0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x080c, 0x580a, 0x080c,
11841 +       0xae48, 0x00de, 0x080c, 0x95e3, 0x080c, 0x7e94, 0x0005, 0xa186,
11842 +       0x0014, 0x1120, 0x6004, 0xa082, 0x0040, 0x0428, 0xa186, 0x0046,
11843 +       0x0138, 0xa186, 0x0045, 0x0120, 0xa186, 0x0047, 0x190c, 0x1519,
11844 +       0x2001, 0x0109, 0x2004, 0xd084, 0x0198, 0x0126, 0x2091, 0x2800,
11845 +       0x0006, 0x0016, 0x0026, 0x080c, 0x7873, 0x002e, 0x001e, 0x000e,
11846 +       0x012e, 0xe000, 0x6000, 0xa086, 0x0002, 0x1110, 0x0804, 0xa231,
11847 +       0x080c, 0x962a, 0x0005, 0x0002, 0xa1d1, 0xa1cf, 0xa1cf, 0xa1cf,
11848 +       0xa1cf, 0xa1cf, 0xa1cf, 0xa1cf, 0xa1cf, 0xa1cf, 0xa1cf, 0xa1ec,
11849 +       0xa1ec, 0xa1ec, 0xa1ec, 0xa1cf, 0xa1ec, 0xa1cf, 0xa1ec, 0x080c,
11850 +       0x1519, 0x080c, 0x7db1, 0x00d6, 0x6110, 0x2168, 0x080c, 0xac91,
11851 +       0x0168, 0x6837, 0x0103, 0x684b, 0x0006, 0x6847, 0x0000, 0x6850,
11852 +       0xc0ec, 0x6852, 0x080c, 0x580a, 0x080c, 0xae48, 0x00de, 0x080c,
11853 +       0x95e3, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x080c, 0x95e3,
11854 +       0x080c, 0x7e94, 0x0005, 0x0002, 0xa209, 0xa207, 0xa207, 0xa207,
11855 +       0xa207, 0xa207, 0xa207, 0xa207, 0xa207, 0xa207, 0xa207, 0xa21b,
11856 +       0xa21b, 0xa21b, 0xa21b, 0xa207, 0xa22a, 0xa207, 0xa21b, 0x080c,
11857 +       0x1519, 0x080c, 0x7db1, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x6003,
11858 +       0x0002, 0x080c, 0x7e94, 0x6010, 0xa088, 0x0013, 0x2104, 0xa085,
11859 +       0x0400, 0x200a, 0x0005, 0x080c, 0x7db1, 0x2001, 0xc8fd, 0x2004,
11860 +       0x6016, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x6003, 0x000f, 0x080c,
11861 +       0x7e94, 0x0005, 0x080c, 0x7db1, 0x080c, 0x95e3, 0x080c, 0x7e94,
11862 +       0x0005, 0xa182, 0x0040, 0x0002, 0xa247, 0xa247, 0xa247, 0xa247,
11863 +       0xa247, 0xa249, 0xa32e, 0xa35d, 0xa247, 0xa247, 0xa247, 0xa247,
11864 +       0xa247, 0xa247, 0xa247, 0xa247, 0xa247, 0xa247, 0xa247, 0x080c,
11865 +       0x1519, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2071, 0xcc80, 0x7124,
11866 +       0x610a, 0x2071, 0xcc8c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff,
11867 +       0x86ff, 0x0904, 0xa2f7, 0xa68c, 0x0c00, 0x0518, 0x00f6, 0x2c78,
11868 +       0x080c, 0x56c3, 0x00fe, 0x01c8, 0x684c, 0xd0ac, 0x01b0, 0x6020,
11869 +       0xd0dc, 0x1198, 0x6850, 0xd0bc, 0x1180, 0x7318, 0x6814, 0xa306,
11870 +       0x1904, 0xa30a, 0x731c, 0x6810, 0xa31e, 0x0138, 0xd6d4, 0x0904,
11871 +       0xa30a, 0x6b14, 0xa305, 0x1904, 0xa30a, 0x7318, 0x6b62, 0x731c,
11872 +       0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0518, 0xa186, 0x0028,
11873 +       0x1128, 0x080c, 0xae6d, 0x684b, 0x001c, 0x00e8, 0xd6dc, 0x01a0,
11874 +       0x684b, 0x0015, 0x684c, 0xd0ac, 0x0170, 0x6914, 0x6a10, 0x2100,
11875 +       0xa205, 0x0148, 0x7018, 0xa106, 0x1118, 0x701c, 0xa206, 0x0118,
11876 +       0x6962, 0x6a5e, 0xc6dc, 0x0038, 0xd6d4, 0x0118, 0x684b, 0x0007,
11877 +       0x0010, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4,
11878 +       0x01f0, 0xa686, 0x0100, 0x1140, 0x2001, 0xcc99, 0x2004, 0xa005,
11879 +       0x1118, 0xc6c4, 0x0804, 0xa258, 0x7328, 0x732c, 0x6b56, 0x83ff,
11880 +       0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308,
11881 +       0x2019, 0xcc98, 0xad90, 0x0019, 0x080c, 0xa944, 0x003e, 0xd6cc,
11882 +       0x0904, 0xa31d, 0x7124, 0x695a, 0x81ff, 0x0904, 0xa31d, 0xa192,
11883 +       0x0021, 0x1260, 0x2071, 0xcc98, 0x831c, 0x2300, 0xae18, 0xad90,
11884 +       0x001d, 0x080c, 0xa944, 0x080c, 0xb16e, 0x04b8, 0x6838, 0xd0fc,
11885 +       0x0120, 0x2009, 0x0020, 0x695a, 0x0c68, 0x00f6, 0x2d78, 0x080c,
11886 +       0xa8e9, 0x00fe, 0x080c, 0xb16e, 0x080c, 0xa934, 0x0440, 0x00f6,
11887 +       0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0190, 0x684c, 0xd0ac, 0x0178,
11888 +       0x6020, 0xd0dc, 0x1160, 0x6850, 0xd0bc, 0x1148, 0x6810, 0x6914,
11889 +       0xa105, 0x0128, 0x080c, 0xaf6c, 0x00de, 0x00ee, 0x00f0, 0x684b,
11890 +       0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0130, 0x6810,
11891 +       0x6914, 0xa115, 0x0110, 0x080c, 0xa4ba, 0x080c, 0x580a, 0x6218,
11892 +       0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x080c, 0xaf3a,
11893 +       0x00de, 0x00ee, 0x1110, 0x080c, 0x95e3, 0x0005, 0x00f6, 0x6003,
11894 +       0x0003, 0x2079, 0xcc8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010,
11895 +       0x2078, 0x784c, 0xd0ac, 0x0138, 0x6003, 0x0002, 0x00fe, 0x0005,
11896 +       0x2130, 0x2228, 0x0058, 0x2400, 0x797c, 0xa10a, 0x2300, 0x7a80,
11897 +       0xa213, 0x2600, 0xa102, 0x2500, 0xa203, 0x0e90, 0x7c12, 0x7b16,
11898 +       0x7e0a, 0x7d0e, 0x00fe, 0x603f, 0x0000, 0x2c10, 0x080c, 0x2068,
11899 +       0x080c, 0x79fc, 0x080c, 0x7f6e, 0x0005, 0x2001, 0xc8ff, 0x2004,
11900 +       0x603e, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20,
11901 +       0x2c10, 0x080c, 0x1870, 0x0005, 0xa182, 0x0040, 0x0002, 0xa382,
11902 +       0xa382, 0xa382, 0xa382, 0xa382, 0xa384, 0xa417, 0xa382, 0xa382,
11903 +       0xa42d, 0xa491, 0xa382, 0xa382, 0xa382, 0xa382, 0xa4a0, 0xa382,
11904 +       0xa382, 0xa382, 0x080c, 0x1519, 0x0076, 0x00f6, 0x00e6, 0x00d6,
11905 +       0x2071, 0xcc8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46,
11906 +       0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110,
11907 +       0x8211, 0x6a3e, 0x86ff, 0x0904, 0xa412, 0xa694, 0xff00, 0xa284,
11908 +       0x0c00, 0x0120, 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300,
11909 +       0x0904, 0xa412, 0x080c, 0x1602, 0x090c, 0x1519, 0x2d00, 0x784a,
11910 +       0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c,
11911 +       0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, 0x0120, 0x7318,
11912 +       0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0180,
11913 +       0xa186, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd6dc, 0x0118,
11914 +       0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0x684b, 0x0007, 0x0010,
11915 +       0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e,
11916 +       0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, 0x0170, 0xa38a,
11917 +       0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, 0xcc98,
11918 +       0xad90, 0x0019, 0x080c, 0xa944, 0x003e, 0xd6cc, 0x01d8, 0x7124,
11919 +       0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, 0x2071, 0xcc98,
11920 +       0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0xa944, 0x0050,
11921 +       0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c78, 0x2d78,
11922 +       0x080c, 0xa8e9, 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, 0x00f6,
11923 +       0x6003, 0x0003, 0x2079, 0xcc8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08,
11924 +       0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x00fe, 0x2c10,
11925 +       0x080c, 0x2068, 0x080c, 0x8bdb, 0x0005, 0x00d6, 0x00f6, 0x2c78,
11926 +       0x080c, 0x56c3, 0x00fe, 0x0120, 0x2001, 0xc8ff, 0x2004, 0x603e,
11927 +       0x6003, 0x0002, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110, 0x2168,
11928 +       0x694c, 0xd1e4, 0x0904, 0xa48f, 0xd1cc, 0x0540, 0x6948, 0x6838,
11929 +       0xd0fc, 0x01e8, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, 0xad90,
11930 +       0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x0156, 0x21a8, 0x2304,
11931 +       0x2012, 0x8318, 0x8210, 0x1f04, 0xa457, 0x015e, 0x000e, 0x6852,
11932 +       0x000e, 0x684e, 0x001e, 0x2168, 0x080c, 0x1629, 0x0418, 0x0016,
11933 +       0x080c, 0x1629, 0x00de, 0x080c, 0xa934, 0x00e0, 0x6837, 0x0103,
11934 +       0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0180, 0xa086, 0x0028,
11935 +       0x1118, 0x684b, 0x001c, 0x0060, 0xd1dc, 0x0118, 0x684b, 0x0015,
11936 +       0x0038, 0xd1d4, 0x0118, 0x684b, 0x0007, 0x0010, 0x684b, 0x0000,
11937 +       0x080c, 0x580a, 0x080c, 0xaf3a, 0x1110, 0x080c, 0x95e3, 0x00de,
11938 +       0x0005, 0x2019, 0x0001, 0x080c, 0x8e79, 0x6003, 0x0002, 0x2001,
11939 +       0xc8ff, 0x2004, 0x603e, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x0005,
11940 +       0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6, 0x6110, 0x2168, 0x080c,
11941 +       0xac91, 0x0150, 0x6837, 0x0103, 0x684b, 0x0029, 0x6847, 0x0000,
11942 +       0x080c, 0x580a, 0x080c, 0xae48, 0x00de, 0x080c, 0x95e3, 0x080c,
11943 +       0x7f6e, 0x0005, 0x684b, 0x0015, 0xd1fc, 0x0138, 0x684b, 0x0007,
11944 +       0x8002, 0x8000, 0x810a, 0xa189, 0x0000, 0x6962, 0x685e, 0x0005,
11945 +       0xa182, 0x0040, 0x0002, 0xa4de, 0xa4de, 0xa4de, 0xa4de, 0xa4de,
11946 +       0xa4e0, 0xa4de, 0xa59b, 0xa5a7, 0xa4de, 0xa4de, 0xa4de, 0xa4de,
11947 +       0xa4de, 0xa4de, 0xa4de, 0xa4de, 0xa4de, 0xa4de, 0x080c, 0x1519,
11948 +       0x0076, 0x00f6, 0x00e6, 0x00d6, 0x2071, 0xcc8c, 0x6110, 0x2178,
11949 +       0x7614, 0xa6b4, 0x0fff, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe,
11950 +       0x0150, 0xa684, 0x00ff, 0x1138, 0x6020, 0xd0f4, 0x0120, 0x080c,
11951 +       0xaf6c, 0x0804, 0xa596, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218,
11952 +       0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x86ff, 0x0904,
11953 +       0xa58c, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0120, 0x7018, 0x7862,
11954 +       0x701c, 0x785e, 0xa284, 0x0300, 0x0904, 0xa58a, 0xa686, 0x0100,
11955 +       0x1140, 0x2001, 0xcc99, 0x2004, 0xa005, 0x1118, 0xc6c4, 0x7e46,
11956 +       0x0c28, 0x080c, 0x1602, 0x090c, 0x1519, 0x2d00, 0x784a, 0x7f4c,
11957 +       0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c,
11958 +       0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, 0x0120, 0x7318,
11959 +       0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0180,
11960 +       0xa186, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd6dc, 0x0118,
11961 +       0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0x684b, 0x0007, 0x0010,
11962 +       0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e,
11963 +       0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, 0x0170, 0xa38a,
11964 +       0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, 0xcc98,
11965 +       0xad90, 0x0019, 0x080c, 0xa944, 0x003e, 0xd6cc, 0x01d8, 0x7124,
11966 +       0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, 0x2071, 0xcc98,
11967 +       0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0xa944, 0x0050,
11968 +       0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c78, 0x2d78,
11969 +       0x080c, 0xa8e9, 0xd6dc, 0x1110, 0xa006, 0x0030, 0x2001, 0x0001,
11970 +       0x2071, 0xcc8c, 0x7218, 0x731c, 0x080c, 0x18b8, 0x00de, 0x00ee,
11971 +       0x00fe, 0x007e, 0x0005, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x20e1,
11972 +       0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, 0x0005, 0x2001,
11973 +       0xc8ff, 0x2004, 0x603e, 0x00d6, 0x6003, 0x0002, 0x6110, 0x2168,
11974 +       0x694c, 0xd1e4, 0x0904, 0xa6b2, 0x603f, 0x0000, 0x00f6, 0x2c78,
11975 +       0x080c, 0x56c3, 0x00fe, 0x0560, 0x6814, 0x6910, 0xa115, 0x0540,
11976 +       0x6a60, 0xa206, 0x1118, 0x685c, 0xa106, 0x0510, 0x684c, 0xc0e4,
11977 +       0x684e, 0x6847, 0x0000, 0x6863, 0x0000, 0x685f, 0x0000, 0x6020,
11978 +       0xd0f4, 0x1158, 0x697c, 0x6810, 0xa102, 0x603a, 0x6980, 0x6814,
11979 +       0xa103, 0x6036, 0x6020, 0xc0f5, 0x6022, 0x00d6, 0x6018, 0x2068,
11980 +       0x683c, 0x8000, 0x683e, 0x00de, 0x080c, 0xaf6c, 0x0804, 0xa6b2,
11981 +       0x694c, 0xd1cc, 0x0904, 0xa682, 0x6948, 0x6838, 0xd0fc, 0x0904,
11982 +       0xa645, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, 0x00f6, 0x2178,
11983 +       0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, 0xa086, 0x0028,
11984 +       0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, 0xd1dc, 0x0158,
11985 +       0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xb0f6, 0x0118, 0x7944,
11986 +       0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, 0x0007, 0x784b,
11987 +       0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, 0xa115,
11988 +       0x0110, 0x080c, 0xa4ba, 0x6848, 0x784a, 0x6860, 0x7862, 0x685c,
11989 +       0x785e, 0xad90, 0x000d, 0xaf98, 0x000d, 0x2009, 0x0020, 0x0156,
11990 +       0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0xa631, 0x015e,
11991 +       0x00fe, 0x000e, 0x6852, 0x000e, 0x684e, 0x080c, 0xb16e, 0x001e,
11992 +       0x2168, 0x080c, 0x1629, 0x0804, 0xa6ad, 0x0016, 0x00f6, 0x2178,
11993 +       0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, 0xa086, 0x0028,
11994 +       0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, 0xd1dc, 0x0158,
11995 +       0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xb0f6, 0x0118, 0x7944,
11996 +       0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, 0x0007, 0x784b,
11997 +       0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, 0xa115,
11998 +       0x0110, 0x080c, 0xa4ba, 0x6860, 0x7862, 0x685c, 0x785e, 0x684c,
11999 +       0x784e, 0x00fe, 0x080c, 0x1629, 0x00de, 0x080c, 0xb16e, 0x080c,
12000 +       0xa934, 0x0458, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6,
12001 +       0x0002, 0x01b0, 0xa086, 0x0028, 0x1118, 0x684b, 0x001c, 0x00d8,
12002 +       0xd1dc, 0x0148, 0x684b, 0x0015, 0x080c, 0xb0f6, 0x0118, 0x6944,
12003 +       0xc1dc, 0x6946, 0x0080, 0xd1d4, 0x0118, 0x684b, 0x0007, 0x0058,
12004 +       0x684b, 0x0000, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, 0xa115,
12005 +       0x0110, 0x080c, 0xa4ba, 0x080c, 0x580a, 0x080c, 0xaf3a, 0x1110,
12006 +       0x080c, 0x95e3, 0x00de, 0x0005, 0x080c, 0x7db1, 0x0010, 0x080c,
12007 +       0x7e47, 0x080c, 0xac91, 0x01c0, 0x00d6, 0x6110, 0x2168, 0x6837,
12008 +       0x0103, 0x2009, 0xc60c, 0x210c, 0xd18c, 0x11c0, 0xd184, 0x1198,
12009 +       0x6108, 0x694a, 0xa18e, 0x0029, 0x1110, 0x080c, 0xc4d7, 0x6847,
12010 +       0x0000, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3, 0x080c, 0x7e94,
12011 +       0x080c, 0x7f6e, 0x0005, 0x684b, 0x0004, 0x0c88, 0x684b, 0x0004,
12012 +       0x0c70, 0xa182, 0x0040, 0x0002, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7,
12013 +       0xa6f7, 0xa6f9, 0xa6f7, 0xa6fc, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7,
12014 +       0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0x080c,
12015 +       0x1519, 0x080c, 0x95e3, 0x0005, 0x0006, 0x0026, 0xa016, 0x080c,
12016 +       0x1870, 0x002e, 0x000e, 0x0005, 0xa182, 0x0085, 0x0002, 0xa710,
12017 +       0xa70e, 0xa70e, 0xa71c, 0xa70e, 0xa70e, 0xa70e, 0x080c, 0x1519,
12018 +       0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x0126, 0x2091, 0x8000,
12019 +       0x080c, 0x7e94, 0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, 0x00e6,
12020 +       0x2071, 0xcc80, 0x7224, 0x6212, 0x7220, 0x080c, 0xac81, 0x01a0,
12021 +       0x2268, 0x6800, 0xa086, 0x0000, 0x0178, 0x6018, 0x6d18, 0xa52e,
12022 +       0x1158, 0x00c6, 0x2d60, 0x080c, 0xa954, 0x00ce, 0x0128, 0x6803,
12023 +       0x0002, 0x6007, 0x0086, 0x0010, 0x6007, 0x0087, 0x6003, 0x0001,
12024 +       0x080c, 0x7999, 0x080c, 0x7e94, 0x00f6, 0x2278, 0x080c, 0x56c3,
12025 +       0x00fe, 0x0150, 0x6820, 0xd0ec, 0x0138, 0x00c6, 0x2260, 0x603f,
12026 +       0x0000, 0x080c, 0xaf6c, 0x00ce, 0x00ee, 0x00de, 0x005e, 0x002e,
12027 +       0x0005, 0xa186, 0x0013, 0x1160, 0x6004, 0xa08a, 0x0085, 0x0a0c,
12028 +       0x1519, 0xa08a, 0x008c, 0x1a0c, 0x1519, 0xa082, 0x0085, 0x0072,
12029 +       0xa186, 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, 0x080c,
12030 +       0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xa77d, 0xa77f,
12031 +       0xa77f, 0xa77d, 0xa77d, 0xa77d, 0xa77d, 0x080c, 0x1519, 0x080c,
12032 +       0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xa186, 0x0013,
12033 +       0x1128, 0x6004, 0xa082, 0x0085, 0x2008, 0x04a8, 0xa186, 0x0027,
12034 +       0x11e8, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x00d6, 0x6010, 0x2068,
12035 +       0x080c, 0xac91, 0x0150, 0x6837, 0x0103, 0x6847, 0x0000, 0x684b,
12036 +       0x0029, 0x080c, 0x580a, 0x080c, 0xae48, 0x00de, 0x080c, 0x95e3,
12037 +       0x080c, 0x7e94, 0x0005, 0x080c, 0x962a, 0x0ce0, 0xa186, 0x0014,
12038 +       0x1dd0, 0x080c, 0x7db1, 0x00d6, 0x6010, 0x2068, 0x080c, 0xac91,
12039 +       0x0d60, 0x6837, 0x0103, 0x6847, 0x0000, 0x684b, 0x0006, 0x6850,
12040 +       0xc0ec, 0x6852, 0x08f0, 0x0002, 0xa7cd, 0xa7cb, 0xa7cb, 0xa7cb,
12041 +       0xa7cb, 0xa7cb, 0xa7e5, 0x080c, 0x1519, 0x080c, 0x7db1, 0x6030,
12042 +       0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, 0x0035,
12043 +       0x1118, 0x2001, 0xc8fd, 0x0010, 0x2001, 0xc8fe, 0x2004, 0x6016,
12044 +       0x6003, 0x000c, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x6030,
12045 +       0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, 0x0035,
12046 +       0x1118, 0x2001, 0xc8fd, 0x0010, 0x2001, 0xc8fe, 0x2004, 0x6016,
12047 +       0x6003, 0x000e, 0x080c, 0x7e94, 0x0005, 0xa182, 0x008c, 0x1220,
12048 +       0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x962a, 0x0005, 0xa80e,
12049 +       0xa80e, 0xa80e, 0xa80e, 0xa810, 0xa869, 0xa80e, 0x080c, 0x1519,
12050 +       0x00d6, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0168, 0x6030,
12051 +       0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, 0x0035,
12052 +       0x1118, 0x00de, 0x0804, 0xa87c, 0x080c, 0xac91, 0x1118, 0x080c,
12053 +       0xae48, 0x00f0, 0x6010, 0x2068, 0x684c, 0xd0e4, 0x1110, 0x080c,
12054 +       0xae48, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0x684b, 0x0006,
12055 +       0xc0ec, 0x6852, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, 0x0020,
12056 +       0x684b, 0x0005, 0x080c, 0xaf09, 0x6847, 0x0000, 0x080c, 0x580a,
12057 +       0x2c68, 0x080c, 0x958d, 0x01c0, 0x6003, 0x0001, 0x6007, 0x001e,
12058 +       0x600b, 0xffff, 0x2009, 0xcc8e, 0x210c, 0x6136, 0x2009, 0xcc8f,
12059 +       0x210c, 0x613a, 0x6918, 0x611a, 0x080c, 0xb05e, 0x6950, 0x6152,
12060 +       0x601f, 0x0001, 0x080c, 0x7999, 0x2d60, 0x080c, 0x95e3, 0x00de,
12061 +       0x0005, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0598, 0x6030,
12062 +       0xa08c, 0xff00, 0x810f, 0xa186, 0x0035, 0x0130, 0xa186, 0x001e,
12063 +       0x0118, 0xa186, 0x0039, 0x1530, 0x00d6, 0x2c68, 0x080c, 0xb141,
12064 +       0x1904, 0xa8c1, 0x080c, 0x958d, 0x01d8, 0x6106, 0x6003, 0x0001,
12065 +       0x601f, 0x0001, 0x6918, 0x611a, 0x6928, 0x612a, 0x692c, 0x612e,
12066 +       0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, 0x6136, 0x6938, 0x613a,
12067 +       0x6950, 0x6152, 0x080c, 0xb05e, 0x080c, 0x7999, 0x080c, 0x7e94,
12068 +       0x2d60, 0x00f8, 0x00d6, 0x6010, 0x2068, 0x080c, 0xac91, 0x01c8,
12069 +       0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0xc0ec, 0x6852, 0x684b,
12070 +       0x0006, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, 0x0020, 0x684b,
12071 +       0x0005, 0x080c, 0xaf09, 0x6847, 0x0000, 0x080c, 0x580a, 0x080c,
12072 +       0xae48, 0x00de, 0x080c, 0x95e3, 0x0005, 0x0016, 0x00d6, 0x6010,
12073 +       0x2068, 0x080c, 0xac91, 0x0140, 0x6837, 0x0103, 0x684b, 0x0028,
12074 +       0x6847, 0x0000, 0x080c, 0x580a, 0x00de, 0x001e, 0xa186, 0x0013,
12075 +       0x0148, 0xa186, 0x0014, 0x0130, 0xa186, 0x0027, 0x0118, 0x080c,
12076 +       0x962a, 0x0030, 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94,
12077 +       0x0005, 0x0056, 0x0066, 0x00d6, 0x00f6, 0x2029, 0x0001, 0xa182,
12078 +       0x0101, 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, 0x2069, 0xcc98,
12079 +       0x831c, 0x2300, 0xad18, 0x2009, 0x0020, 0xaf90, 0x001d, 0x080c,
12080 +       0xa944, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0110, 0x080c, 0x1629,
12081 +       0x080c, 0x1602, 0x0500, 0x8528, 0x6837, 0x0110, 0x683b, 0x0000,
12082 +       0x2d20, 0x7c06, 0xa68a, 0x003d, 0x1228, 0x2608, 0xad90, 0x000f,
12083 +       0x0459, 0x0088, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90,
12084 +       0x000f, 0x0411, 0x0c28, 0x00fe, 0x852f, 0xa5ad, 0x0003, 0x7d36,
12085 +       0xa5ac, 0x0000, 0x0028, 0x00fe, 0x852f, 0xa5ad, 0x0003, 0x7d36,
12086 +       0x00de, 0x006e, 0x005e, 0x0005, 0x00f6, 0x8dff, 0x0158, 0x6804,
12087 +       0xa07d, 0x0130, 0x6807, 0x0000, 0x080c, 0x580a, 0x2f68, 0x0cb8,
12088 +       0x080c, 0x580a, 0x00fe, 0x0005, 0x0156, 0xa184, 0x0001, 0x0108,
12089 +       0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, 0x8210,
12090 +       0x1f04, 0xa94b, 0x015e, 0x0005, 0x0066, 0x0126, 0x2091, 0x8000,
12091 +       0x2031, 0x0001, 0x601c, 0xa084, 0x000f, 0x0083, 0x012e, 0x006e,
12092 +       0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, 0x0000, 0x601c,
12093 +       0xa084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, 0xa98b, 0xa98b,
12094 +       0xa986, 0xa9ad, 0xa979, 0xa986, 0xa9ad, 0xa986, 0xa979, 0x77f4,
12095 +       0xa986, 0x080c, 0x1519, 0x0036, 0x2019, 0x0010, 0x080c, 0xbd55,
12096 +       0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0xa006, 0x0005,
12097 +       0xa085, 0x0001, 0x0005, 0x00d6, 0x86ff, 0x11d8, 0x6010, 0x2068,
12098 +       0x080c, 0xac91, 0x01c0, 0x6834, 0xa086, 0x0139, 0x1128, 0x684b,
12099 +       0x0005, 0x6853, 0x0000, 0x0028, 0xa00e, 0x2001, 0x0005, 0x080c,
12100 +       0x592e, 0x080c, 0xaf09, 0x080c, 0x580a, 0x080c, 0x95e3, 0xa085,
12101 +       0x0001, 0x00de, 0x0005, 0xa006, 0x0ce0, 0x6000, 0xa08a, 0x0010,
12102 +       0x1a0c, 0x1519, 0x000b, 0x0005, 0xa9c4, 0xa9e5, 0xa9c6, 0xaa04,
12103 +       0xa9e2, 0xa9c4, 0xa986, 0xa98b, 0xa98b, 0xa986, 0xa986, 0xa986,
12104 +       0xa986, 0xa986, 0xa986, 0xa986, 0x080c, 0x1519, 0x86ff, 0x11b8,
12105 +       0x601c, 0xa086, 0x0006, 0x0198, 0x00d6, 0x6010, 0x2068, 0x080c,
12106 +       0xac91, 0x0110, 0x080c, 0xaf09, 0x00de, 0x6007, 0x0085, 0x6003,
12107 +       0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c, 0x7e94, 0xa085,
12108 +       0x0001, 0x0005, 0x080c, 0x1953, 0x0c08, 0x00e6, 0x2071, 0xc927,
12109 +       0x7024, 0xac06, 0x1110, 0x080c, 0x8dee, 0x601c, 0xa084, 0x000f,
12110 +       0xa086, 0x0006, 0x1150, 0x0086, 0x0096, 0x2049, 0x0001, 0x2c40,
12111 +       0x080c, 0x8fc9, 0x009e, 0x008e, 0x0010, 0x080c, 0x8ced, 0x00ee,
12112 +       0x1928, 0x080c, 0xa986, 0x0005, 0x0036, 0x00e6, 0x2071, 0xc927,
12113 +       0x703c, 0xac06, 0x1140, 0x2019, 0x0000, 0x080c, 0x8e79, 0x00ee,
12114 +       0x003e, 0x0804, 0xa9c6, 0x080c, 0x90f6, 0x00ee, 0x003e, 0x1904,
12115 +       0xa9c6, 0x080c, 0xa986, 0x0005, 0x00c6, 0x601c, 0xa084, 0x000f,
12116 +       0x0013, 0x00ce, 0x0005, 0xaa35, 0xaaa2, 0xabf0, 0xaa40, 0xae54,
12117 +       0xaa35, 0xbd47, 0xb185, 0xaaa2, 0x77c3, 0xac5b, 0x080c, 0x1519,
12118 +       0x080c, 0xae8f, 0x1110, 0x080c, 0x9c09, 0x0005, 0x080c, 0x7db1,
12119 +       0x080c, 0x7e94, 0x080c, 0x95e3, 0x0005, 0x6017, 0x0001, 0x0005,
12120 +       0x080c, 0xac91, 0x0120, 0x6010, 0xa080, 0x0019, 0x2c02, 0x6000,
12121 +       0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, 0xaa5e, 0xaa60,
12122 +       0xaa80, 0xaa92, 0xaa9f, 0xaa5e, 0xaa35, 0xaa35, 0xaa35, 0xaa92,
12123 +       0xaa92, 0xaa5e, 0xaa5e, 0xaa5e, 0xaa5e, 0xaa9c, 0x080c, 0x1519,
12124 +       0x00e6, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052, 0x2071, 0xc927,
12125 +       0x7024, 0xac06, 0x0190, 0x080c, 0x8ced, 0x6007, 0x0085, 0x6003,
12126 +       0x000b, 0x601f, 0x0002, 0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c,
12127 +       0x7999, 0x080c, 0x7e94, 0x00ee, 0x0005, 0x6017, 0x0001, 0x0cd8,
12128 +       0x00d6, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x00de, 0x6007,
12129 +       0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c,
12130 +       0x7e94, 0x0005, 0x00d6, 0x6017, 0x0001, 0x6010, 0x2068, 0x6850,
12131 +       0xc0b5, 0x6852, 0x00de, 0x0005, 0x080c, 0x95e3, 0x0005, 0x080c,
12132 +       0x1953, 0x08f0, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b,
12133 +       0x0005, 0xaab9, 0xaa3d, 0xaabb, 0xaab9, 0xaabb, 0xaabb, 0xaa36,
12134 +       0xaab9, 0xaa30, 0xaa30, 0xaab9, 0xaab9, 0xaab9, 0xaab9, 0xaab9,
12135 +       0xaab9, 0x080c, 0x1519, 0x00d6, 0x6018, 0x2068, 0x6804, 0xa084,
12136 +       0x00ff, 0x00de, 0xa08a, 0x000c, 0x1a0c, 0x1519, 0x000b, 0x0005,
12137 +       0xaad4, 0xab96, 0xaad6, 0xab14, 0xaad6, 0xab14, 0xaad6, 0xaae4,
12138 +       0xaad4, 0xab14, 0xaad4, 0xab00, 0x080c, 0x1519, 0x6004, 0xa08e,
12139 +       0x0016, 0x05a8, 0xa08e, 0x0004, 0x0590, 0xa08e, 0x0002, 0x0578,
12140 +       0xa08e, 0x004b, 0x0904, 0xab92, 0x6004, 0x080c, 0xae8f, 0x0904,
12141 +       0xabaf, 0xa08e, 0x0021, 0x0904, 0xabb3, 0xa08e, 0x0022, 0x0904,
12142 +       0xabaf, 0xa08e, 0x003d, 0x0904, 0xabb3, 0xa08e, 0x0039, 0x0904,
12143 +       0xabb7, 0xa08e, 0x0035, 0x0904, 0xabb7, 0xa08e, 0x001e, 0x0188,
12144 +       0xa08e, 0x0001, 0x1150, 0x00d6, 0x6018, 0x2068, 0x6804, 0xa084,
12145 +       0x00ff, 0x00de, 0xa086, 0x0006, 0x0110, 0x080c, 0x2e46, 0x080c,
12146 +       0x9c09, 0x080c, 0xae54, 0x0005, 0x00c6, 0x00d6, 0x6104, 0xa186,
12147 +       0x0016, 0x0904, 0xab83, 0xa186, 0x0002, 0x15d8, 0x2001, 0xc635,
12148 +       0x2004, 0xd08c, 0x1198, 0x080c, 0x5f22, 0x1180, 0x2001, 0xc8e6,
12149 +       0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001,
12150 +       0x080c, 0x5f66, 0x080c, 0x5e5a, 0x0804, 0xabd9, 0x6018, 0x2068,
12151 +       0x2001, 0xc635, 0x2004, 0xd0ac, 0x1904, 0xabd9, 0x68a0, 0xd0bc,
12152 +       0x1904, 0xabd9, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0190, 0x8001,
12153 +       0x6842, 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, 0x603f,
12154 +       0x0000, 0x080c, 0x958d, 0x0128, 0x2d00, 0x601a, 0x601f, 0x0001,
12155 +       0x0450, 0x00de, 0x00ce, 0x6004, 0xa08e, 0x0002, 0x11a8, 0x6018,
12156 +       0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x1170, 0x2009, 0xc635,
12157 +       0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0xc600, 0x080c, 0x4f02,
12158 +       0x00ee, 0x080c, 0x9c09, 0x0020, 0x080c, 0x9c09, 0x080c, 0x2e46,
12159 +       0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2e6c, 0x012e, 0x00ee,
12160 +       0x080c, 0xae54, 0x0005, 0x2001, 0x0002, 0x080c, 0x5291, 0x6003,
12161 +       0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x080c, 0x7e94, 0x00de,
12162 +       0x00ce, 0x0c80, 0x080c, 0x2e6c, 0x0804, 0xab0f, 0x00c6, 0x00d6,
12163 +       0x6104, 0xa186, 0x0016, 0x0d38, 0x6018, 0x2068, 0x6840, 0xa084,
12164 +       0x00ff, 0xa005, 0x0904, 0xab59, 0x8001, 0x6842, 0x6003, 0x0001,
12165 +       0x080c, 0x79df, 0x080c, 0x7e94, 0x00de, 0x00ce, 0x0898, 0x080c,
12166 +       0x9c09, 0x0804, 0xab11, 0x080c, 0x9c37, 0x0804, 0xab11, 0x00d6,
12167 +       0x2c68, 0x6104, 0x080c, 0xb141, 0x00de, 0x0118, 0x080c, 0x95e3,
12168 +       0x00b8, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105, 0x6032,
12169 +       0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6038, 0x600a,
12170 +       0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c, 0x7999, 0x080c, 0x7e94,
12171 +       0x0005, 0x00de, 0x00ce, 0x080c, 0x9c09, 0x080c, 0x2e46, 0x00e6,
12172 +       0x0126, 0x2091, 0x8000, 0x080c, 0x2e6c, 0x6013, 0x0000, 0x601f,
12173 +       0x0007, 0x6017, 0x0398, 0x603f, 0x0000, 0x012e, 0x00ee, 0x0005,
12174 +       0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, 0xac07,
12175 +       0xac07, 0xac07, 0xac07, 0xac07, 0xac07, 0xac07, 0xac07, 0xac07,
12176 +       0xaa35, 0xac07, 0xaa3d, 0xac09, 0xaa3d, 0xac16, 0xac07, 0x080c,
12177 +       0x1519, 0x6004, 0xa086, 0x008b, 0x0148, 0x6007, 0x008b, 0x6003,
12178 +       0x000d, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0005, 0x080c, 0xae48,
12179 +       0x080c, 0xac91, 0x0580, 0x080c, 0x2e46, 0x00d6, 0x080c, 0xac91,
12180 +       0x0168, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, 0x6847,
12181 +       0x0000, 0x6850, 0xc0ed, 0x6852, 0x080c, 0x580a, 0x2c68, 0x080c,
12182 +       0x958d, 0x0150, 0x6818, 0x601a, 0x080c, 0xb05e, 0x00c6, 0x2d60,
12183 +       0x080c, 0xae54, 0x00ce, 0x0008, 0x2d60, 0x00de, 0x6013, 0x0000,
12184 +       0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x79df,
12185 +       0x080c, 0x7e94, 0x0078, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186,
12186 +       0x0039, 0x0118, 0xa186, 0x0035, 0x1118, 0x080c, 0x2e46, 0x08b0,
12187 +       0x080c, 0xae54, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519,
12188 +       0x000b, 0x0005, 0xac72, 0xac72, 0xac72, 0xac74, 0xac74, 0xac72,
12189 +       0xac72, 0xac72, 0xac72, 0xac72, 0xac72, 0xac72, 0xac72, 0xac72,
12190 +       0xac72, 0xac72, 0x080c, 0x1519, 0x080c, 0x90f6, 0x190c, 0x1519,
12191 +       0x6110, 0x2168, 0x684b, 0x0006, 0x080c, 0x580a, 0x080c, 0x95e3,
12192 +       0x0005, 0xa284, 0x0007, 0x1158, 0xa282, 0xce00, 0x0240, 0x2001,
12193 +       0xc617, 0x2004, 0xa202, 0x1218, 0xa085, 0x0001, 0x0005, 0xa006,
12194 +       0x0ce8, 0x0026, 0x6210, 0xa294, 0xf000, 0x002e, 0x0005, 0x00e6,
12195 +       0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, 0xce00,
12196 +       0x2071, 0xc600, 0x7348, 0x7068, 0xa302, 0x12a8, 0x601c, 0xa206,
12197 +       0x1160, 0x080c, 0xafe9, 0x0148, 0x080c, 0xae8f, 0x1110, 0x080c,
12198 +       0x9c09, 0x00c6, 0x080c, 0x95e3, 0x00ce, 0xace0, 0x0018, 0x705c,
12199 +       0xac02, 0x1208, 0x0c38, 0x012e, 0x000e, 0x003e, 0x00ce, 0x00ee,
12200 +       0x0005, 0x00e6, 0x00c6, 0x0016, 0xa188, 0xc77b, 0x210c, 0x81ff,
12201 +       0x0128, 0x2061, 0xca3c, 0x611a, 0x080c, 0x2e46, 0xa006, 0x0010,
12202 +       0xa085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x00c6, 0x0056,
12203 +       0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x958d, 0x005e, 0x0180,
12204 +       0x6612, 0x651a, 0x080c, 0xb05e, 0x601f, 0x0003, 0x2009, 0x004b,
12205 +       0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, 0x0005,
12206 +       0xa006, 0x0cd0, 0x00c6, 0x0056, 0x0126, 0x2091, 0x8000, 0x62a0,
12207 +       0x00c6, 0x080c, 0xaf0d, 0x005e, 0x0550, 0x6013, 0x0000, 0x651a,
12208 +       0x080c, 0xb05e, 0x601f, 0x0003, 0x0016, 0x00c6, 0x2560, 0x080c,
12209 +       0x553e, 0x00ce, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c,
12210 +       0x7a0e, 0x2c08, 0x080c, 0xbef7, 0x007e, 0x001e, 0xd184, 0x0128,
12211 +       0x080c, 0x95e3, 0xa085, 0x0001, 0x0030, 0x2009, 0x004c, 0x080c,
12212 +       0x9613, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, 0x0005, 0xa006,
12213 +       0x0cd0, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x958d, 0x2c78,
12214 +       0x00ce, 0x0180, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021,
12215 +       0x0005, 0x080c, 0xad87, 0x2f60, 0x2009, 0x004d, 0x080c, 0x9613,
12216 +       0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6,
12217 +       0x0046, 0x00c6, 0x080c, 0x958d, 0x2c78, 0x00ce, 0x0178, 0x7e12,
12218 +       0x2c00, 0x781a, 0x781f, 0x0003, 0x2021, 0x0005, 0x0481, 0x2f60,
12219 +       0x2009, 0x004e, 0x080c, 0x9613, 0xa085, 0x0001, 0x004e, 0x00ce,
12220 +       0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x958d,
12221 +       0x2c78, 0x00ce, 0x01c0, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003,
12222 +       0x2021, 0x0004, 0x00a1, 0x2001, 0xc8e7, 0x2004, 0xd0fc, 0x0120,
12223 +       0x2f60, 0x080c, 0x95e3, 0x0028, 0x2f60, 0x2009, 0x0052, 0x080c,
12224 +       0x9613, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x0096,
12225 +       0x0076, 0x0126, 0x2091, 0x8000, 0x080c, 0x54e0, 0x0118, 0x2001,
12226 +       0xad8c, 0x0028, 0x080c, 0x54b0, 0x0158, 0x2001, 0xad92, 0x0006,
12227 +       0xa00e, 0x2400, 0x080c, 0x592e, 0x080c, 0x580a, 0x000e, 0x0807,
12228 +       0x2418, 0x080c, 0x7d50, 0x62a0, 0x0086, 0x2041, 0x0001, 0x2039,
12229 +       0x0001, 0x2608, 0x080c, 0x7b2f, 0x008e, 0x080c, 0x7a0e, 0x2f08,
12230 +       0x2648, 0x080c, 0xbef7, 0x613c, 0x81ff, 0x090c, 0x7be4, 0x080c,
12231 +       0x7e94, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, 0x2091,
12232 +       0x8000, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0188, 0x660a, 0x611a,
12233 +       0x080c, 0xb05e, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f,
12234 +       0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006,
12235 +       0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x958d,
12236 +       0x001e, 0x0188, 0x660a, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0008,
12237 +       0x2d00, 0x6012, 0x2009, 0x0021, 0x080c, 0x9613, 0xa085, 0x0001,
12238 +       0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091,
12239 +       0x8000, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0188, 0x660a, 0x611a,
12240 +       0x080c, 0xb05e, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x003d,
12241 +       0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006,
12242 +       0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0xaf0d,
12243 +       0x001e, 0x0180, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0001, 0x2d00,
12244 +       0x6012, 0x2009, 0x0000, 0x080c, 0x9613, 0xa085, 0x0001, 0x012e,
12245 +       0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000,
12246 +       0x00c6, 0x080c, 0x958d, 0x001e, 0x0188, 0x660a, 0x611a, 0x080c,
12247 +       0xb05e, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0044, 0x080c,
12248 +       0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8,
12249 +       0x0026, 0x00d6, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211,
12250 +       0x6a3e, 0x00de, 0x002e, 0x0005, 0x0006, 0x6000, 0xa086, 0x0000,
12251 +       0x0190, 0x6013, 0x0000, 0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004,
12252 +       0x0006, 0xa082, 0x0051, 0x000e, 0x0208, 0x8004, 0x6016, 0x080c,
12253 +       0xc3e2, 0x603f, 0x0000, 0x000e, 0x0005, 0x0066, 0x00c6, 0x00d6,
12254 +       0x2031, 0xc653, 0x2634, 0xd6e4, 0x0128, 0x6618, 0x2660, 0x6e48,
12255 +       0x080c, 0x5469, 0x00de, 0x00ce, 0x006e, 0x0005, 0x0006, 0x0016,
12256 +       0x6004, 0xa08e, 0x0002, 0x0140, 0xa08e, 0x0003, 0x0128, 0xa08e,
12257 +       0x0004, 0x0110, 0xa085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006,
12258 +       0x00d6, 0x6010, 0xa06d, 0x0148, 0x6834, 0xa086, 0x0139, 0x0138,
12259 +       0x6838, 0xd0fc, 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, 0x00de,
12260 +       0x000e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c,
12261 +       0x958d, 0x001e, 0x0190, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0001,
12262 +       0x2d00, 0x6012, 0x080c, 0x2e46, 0x2009, 0x0028, 0x080c, 0x9613,
12263 +       0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0xa186,
12264 +       0x0015, 0x1178, 0x2011, 0xc621, 0x2204, 0xa086, 0x0074, 0x1148,
12265 +       0x080c, 0x9fb9, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c, 0x79df,
12266 +       0x0020, 0x080c, 0x9c09, 0x080c, 0x95e3, 0x0005, 0xa186, 0x0016,
12267 +       0x1128, 0x2001, 0x0004, 0x080c, 0x5291, 0x00e8, 0xa186, 0x0015,
12268 +       0x11e8, 0x2011, 0xc621, 0x2204, 0xa086, 0x0014, 0x11b8, 0x00d6,
12269 +       0x6018, 0x2068, 0x080c, 0x53df, 0x00de, 0x080c, 0xa072, 0x1170,
12270 +       0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0138, 0x2001,
12271 +       0x0006, 0x080c, 0x5291, 0x080c, 0x9767, 0x0020, 0x080c, 0x9c09,
12272 +       0x080c, 0x95e3, 0x0005, 0x6848, 0xa086, 0x0005, 0x1108, 0x0009,
12273 +       0x0005, 0x6850, 0xc0ad, 0x6852, 0x0005, 0x00e6, 0x0126, 0x2071,
12274 +       0xc600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0001, 0x0608, 0x704c,
12275 +       0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, 0x705c,
12276 +       0xac02, 0x1208, 0x0cb0, 0x2061, 0xce00, 0x0c98, 0x6003, 0x0008,
12277 +       0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502, 0x1230, 0x754e,
12278 +       0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x704f, 0xce00, 0x0cc0,
12279 +       0xa006, 0x0cc0, 0x00e6, 0x2071, 0xcc8c, 0x7014, 0xd0e4, 0x0150,
12280 +       0x6013, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, 0x7999,
12281 +       0x080c, 0x7e94, 0x00ee, 0x0005, 0x00c6, 0x00f6, 0x2c78, 0x080c,
12282 +       0x56c3, 0x00fe, 0x0120, 0x601c, 0xa084, 0x000f, 0x0013, 0x00ce,
12283 +       0x0005, 0xaa35, 0xaf64, 0xaf67, 0xaf6a, 0xc1cf, 0xc1ea, 0xc1ed,
12284 +       0xaa35, 0xaa35, 0x080c, 0x1519, 0xe000, 0xe000, 0x0005, 0xe000,
12285 +       0xe000, 0x0005, 0x0009, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x56c3,
12286 +       0x0538, 0x080c, 0x958d, 0x1128, 0x2001, 0xc8ff, 0x2004, 0x783e,
12287 +       0x00f8, 0x7818, 0x601a, 0x080c, 0xb05e, 0x781c, 0xa086, 0x0003,
12288 +       0x0128, 0x7808, 0x6036, 0x2f00, 0x603a, 0x0020, 0x7808, 0x603a,
12289 +       0x2f00, 0x6036, 0x602a, 0x601f, 0x0001, 0x6007, 0x0035, 0x6003,
12290 +       0x0001, 0x7950, 0x6152, 0x080c, 0x7999, 0x080c, 0x7e94, 0x2f60,
12291 +       0x00fe, 0x0005, 0x0016, 0x00f6, 0x682c, 0x6032, 0xa08e, 0x0001,
12292 +       0x0138, 0xa086, 0x0005, 0x0140, 0xa006, 0x602a, 0x602e, 0x00a0,
12293 +       0x6820, 0xc0f4, 0xc0d5, 0x6822, 0x6810, 0x2078, 0x787c, 0x6938,
12294 +       0xa102, 0x7880, 0x6934, 0xa103, 0x1e78, 0x6834, 0x602a, 0x6838,
12295 +       0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, 0x6036, 0x6808, 0x603a,
12296 +       0x6918, 0x611a, 0x6950, 0x6152, 0x601f, 0x0001, 0x6007, 0x0039,
12297 +       0x6003, 0x0001, 0x080c, 0x7999, 0x6803, 0x0002, 0x00fe, 0x001e,
12298 +       0x0005, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x1118, 0xa085, 0x0001,
12299 +       0x0070, 0x6020, 0xd0f4, 0x1150, 0xc0f5, 0x6022, 0x6010, 0x2078,
12300 +       0x7828, 0x603a, 0x782c, 0x6036, 0x080c, 0x1953, 0xa006, 0x00fe,
12301 +       0x0005, 0x0006, 0x0016, 0x6004, 0xa08e, 0x0034, 0x01b8, 0xa08e,
12302 +       0x0035, 0x01a0, 0xa08e, 0x0036, 0x0188, 0xa08e, 0x0037, 0x0170,
12303 +       0xa08e, 0x0038, 0x0158, 0xa08e, 0x0039, 0x0140, 0xa08e, 0x003a,
12304 +       0x0128, 0xa08e, 0x003b, 0x0110, 0xa085, 0x0001, 0x001e, 0x000e,
12305 +       0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x2001, 0xc8f9,
12306 +       0x200c, 0x8000, 0x2014, 0x2001, 0x0032, 0x080c, 0x783f, 0x2001,
12307 +       0xc8fd, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, 0xc8fb,
12308 +       0x200c, 0x8000, 0x2014, 0x2071, 0xc8d5, 0x711a, 0x721e, 0x2001,
12309 +       0x0064, 0x080c, 0x783f, 0x2001, 0xc8fe, 0x82ff, 0x1110, 0x2011,
12310 +       0x0014, 0x2202, 0x2009, 0xc8ff, 0xa280, 0x000a, 0x200a, 0x080c,
12311 +       0x572c, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x0006,
12312 +       0x00e6, 0x2001, 0xc8fd, 0x2003, 0x0028, 0x2001, 0xc8fe, 0x2003,
12313 +       0x0014, 0x2071, 0xc8d5, 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001,
12314 +       0xc8ff, 0x2003, 0x001e, 0x00ee, 0x000e, 0x0005, 0x00d6, 0x6054,
12315 +       0xa06d, 0x0110, 0x080c, 0x1619, 0x00de, 0x0005, 0x0005, 0x00c6,
12316 +       0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0178,
12317 +       0x611a, 0x0ca1, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0033,
12318 +       0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006,
12319 +       0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xc600, 0xa186, 0x0015,
12320 +       0x1500, 0x7084, 0xa086, 0x0018, 0x11e0, 0x6010, 0x2068, 0x6a3c,
12321 +       0xd2e4, 0x1160, 0x2c78, 0x080c, 0x80af, 0x01d8, 0x7070, 0x6a50,
12322 +       0xa206, 0x1160, 0x7074, 0x6a54, 0xa206, 0x1140, 0x6218, 0xa290,
12323 +       0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2e8b, 0x080c, 0x9767,
12324 +       0x0020, 0x080c, 0x9c09, 0x080c, 0x95e3, 0x00fe, 0x00ee, 0x00de,
12325 +       0x0005, 0x7054, 0x6a54, 0xa206, 0x0d48, 0x0c80, 0x00c6, 0x0126,
12326 +       0x2091, 0x8000, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0180, 0x611a,
12327 +       0x080c, 0xb05e, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0043,
12328 +       0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006,
12329 +       0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xc600, 0xa186, 0x0015,
12330 +       0x11c0, 0x7084, 0xa086, 0x0004, 0x11a0, 0x6010, 0xa0e8, 0x000f,
12331 +       0x2c78, 0x080c, 0x80af, 0x01a8, 0x7070, 0x6a08, 0xa206, 0x1130,
12332 +       0x7074, 0x6a0c, 0xa206, 0x1110, 0x080c, 0x2e46, 0x080c, 0x9767,
12333 +       0x0020, 0x080c, 0x9c09, 0x080c, 0x95e3, 0x00fe, 0x00ee, 0x00de,
12334 +       0x0005, 0x7054, 0x6a0c, 0xa206, 0x0d78, 0x0c80, 0x0016, 0x0026,
12335 +       0x684c, 0xd0ac, 0x0178, 0x6914, 0x6a10, 0x2100, 0xa205, 0x0150,
12336 +       0x6860, 0xa106, 0x1118, 0x685c, 0xa206, 0x0120, 0x6962, 0x6a5e,
12337 +       0xa085, 0x0001, 0x002e, 0x001e, 0x0005, 0x00d6, 0x0036, 0x6310,
12338 +       0x2368, 0x684a, 0x6952, 0xa29e, 0x4000, 0x11a0, 0x00c6, 0x6318,
12339 +       0x2360, 0x2009, 0x0000, 0x6838, 0xd0f4, 0x1140, 0x080c, 0x55de,
12340 +       0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x6a66, 0x696a,
12341 +       0x00ce, 0x0080, 0x6a66, 0x3918, 0xa398, 0x0006, 0x231c, 0x686b,
12342 +       0x0004, 0x6b72, 0x00c6, 0x6318, 0x2360, 0x6004, 0xa084, 0x00ff,
12343 +       0x686e, 0x00ce, 0x080c, 0x580a, 0x6013, 0x0000, 0x003e, 0x00de,
12344 +       0x0005, 0x00c6, 0x0026, 0x0016, 0xa186, 0x0035, 0x0110, 0x6a34,
12345 +       0x0008, 0x6a28, 0x080c, 0xac81, 0x01f0, 0x2260, 0x611c, 0xa186,
12346 +       0x0003, 0x0118, 0xa186, 0x0006, 0x1190, 0x6834, 0xa206, 0x0140,
12347 +       0x6838, 0xa206, 0x1160, 0x6108, 0x6834, 0xa106, 0x1140, 0x0020,
12348 +       0x6008, 0x6938, 0xa106, 0x1118, 0x6018, 0x6918, 0xa106, 0x001e,
12349 +       0x002e, 0x00ce, 0x0005, 0xa085, 0x0001, 0x0cc8, 0x6944, 0xd1cc,
12350 +       0x0198, 0xa18c, 0x00ff, 0xa18e, 0x0002, 0x1170, 0xad88, 0x001e,
12351 +       0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, 0x0001, 0x1128, 0x6810,
12352 +       0x6914, 0xa115, 0x190c, 0xa4ba, 0x0005, 0x080c, 0x95e3, 0x0804,
12353 +       0x7e94, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013,
12354 +       0x006e, 0x0005, 0xb1a2, 0xb6b9, 0xb7e1, 0xb1a2, 0xb1a2, 0xb1a2,
12355 +       0xb1a2, 0xb1a2, 0xb1da, 0xb865, 0xb1a2, 0xb1a2, 0xb1a2, 0xb1a2,
12356 +       0xb1a2, 0xb1a2, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010,
12357 +       0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0xb1bd, 0xbcec, 0xb1bd,
12358 +       0xb1bd, 0xb1bd, 0xb1bd, 0xb1bd, 0xb1bd, 0xbcae, 0xbd34, 0xb1bd,
12359 +       0xc314, 0xc344, 0xc314, 0xc344, 0xb1bd, 0x080c, 0x1519, 0x0066,
12360 +       0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005,
12361 +       0xb1d8, 0xb9b5, 0xba82, 0xbaaf, 0xbb33, 0xb1d8, 0xbc20, 0xbbcb,
12362 +       0xb871, 0xbc84, 0xbc99, 0xb1d8, 0xb1d8, 0xb1d8, 0xb1d8, 0xb1d8,
12363 +       0x080c, 0x1519, 0xa1b2, 0x0080, 0x1a0c, 0x1519, 0x2100, 0xa1b2,
12364 +       0x0040, 0x1a04, 0xb5f1, 0x0002, 0xb224, 0xb3ef, 0xb224, 0xb224,
12365 +       0xb224, 0xb3f6, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224,
12366 +       0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224,
12367 +       0xb224, 0xb224, 0xb224, 0xb226, 0xb284, 0xb293, 0xb2e1, 0xb2ff,
12368 +       0xb37d, 0xb3dc, 0xb224, 0xb224, 0xb3f9, 0xb224, 0xb224, 0xb40c,
12369 +       0xb417, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb4a2, 0xb224,
12370 +       0xb224, 0xb4b5, 0xb224, 0xb224, 0xb46d, 0xb224, 0xb224, 0xb224,
12371 +       0xb4cd, 0xb224, 0xb224, 0xb224, 0xb547, 0xb224, 0xb224, 0xb224,
12372 +       0xb224, 0xb224, 0xb224, 0xb5b8, 0x080c, 0x1519, 0x080c, 0x570b,
12373 +       0x1150, 0x2001, 0xc635, 0x2004, 0xd0cc, 0x1128, 0xa084, 0x0009,
12374 +       0xa086, 0x0008, 0x1140, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013,
12375 +       0x0000, 0x0804, 0xb3ea, 0x080c, 0x568d, 0x00e6, 0x00c6, 0x0036,
12376 +       0x0026, 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019, 0x0029,
12377 +       0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e, 0x2c08,
12378 +       0x080c, 0xbef7, 0x007e, 0x001e, 0x2e60, 0x080c, 0x553e, 0x001e,
12379 +       0x002e, 0x003e, 0x00ce, 0x00ee, 0x6618, 0x00c6, 0x2660, 0x080c,
12380 +       0x534c, 0x00ce, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082,
12381 +       0x0006, 0x0278, 0x080c, 0xbe3b, 0x1904, 0xb2db, 0x080c, 0xbddb,
12382 +       0x1120, 0x6007, 0x0008, 0x0804, 0xb3ea, 0x6007, 0x0009, 0x0804,
12383 +       0xb3ea, 0x080c, 0xc023, 0x0128, 0x080c, 0xbe3b, 0x0d78, 0x0804,
12384 +       0xb2db, 0x6013, 0x1900, 0x0c88, 0x080c, 0x2f69, 0x1904, 0xb5ee,
12385 +       0x6106, 0x080c, 0xbd95, 0x6007, 0x0006, 0x0804, 0xb3ea, 0x6007,
12386 +       0x0007, 0x0804, 0xb3ea, 0x080c, 0xc378, 0x1904, 0xb5ee, 0x080c,
12387 +       0x2f69, 0x1904, 0xb5ee, 0x00d6, 0x6618, 0x2668, 0x6e04, 0xa684,
12388 +       0x00ff, 0xa082, 0x0006, 0x1220, 0x2001, 0x0001, 0x080c, 0x527f,
12389 +       0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0188, 0xa686, 0x0004,
12390 +       0x0170, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0140, 0xa686,
12391 +       0x0004, 0x0128, 0xa686, 0x0005, 0x0110, 0x00de, 0x00e0, 0x080c,
12392 +       0xbe99, 0x11a0, 0xa686, 0x0006, 0x1150, 0x0026, 0x6218, 0xa290,
12393 +       0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2e8b, 0x002e, 0x080c,
12394 +       0x53df, 0x6007, 0x000a, 0x00de, 0x0804, 0xb3ea, 0x6007, 0x000b,
12395 +       0x00de, 0x0804, 0xb3ea, 0x080c, 0x2e46, 0x6007, 0x0001, 0x0804,
12396 +       0xb3ea, 0x080c, 0xc378, 0x1904, 0xb5ee, 0x080c, 0x2f69, 0x1904,
12397 +       0xb5ee, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa686, 0x0707,
12398 +       0x0d50, 0x0026, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000,
12399 +       0x080c, 0x2e8b, 0x002e, 0x6007, 0x000c, 0x0804, 0xb3ea, 0x080c,
12400 +       0x570b, 0x1140, 0x2001, 0xc635, 0x2004, 0xa084, 0x0009, 0xa086,
12401 +       0x0008, 0x1110, 0x0804, 0xb233, 0x080c, 0x568d, 0x6618, 0xa6b0,
12402 +       0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x06e8, 0x1138,
12403 +       0x0026, 0x2001, 0x0006, 0x080c, 0x52be, 0x002e, 0x0050, 0xa6b4,
12404 +       0xff00, 0x8637, 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, 0x1904,
12405 +       0xb2db, 0x080c, 0xbea6, 0x1120, 0x6007, 0x000e, 0x0804, 0xb3ea,
12406 +       0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427,
12407 +       0x0046, 0x080c, 0x2e46, 0x004e, 0x0016, 0xa006, 0x2009, 0xc653,
12408 +       0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xc190, 0x6018,
12409 +       0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, 0x004e,
12410 +       0x6007, 0x0001, 0x0804, 0xb3ea, 0x2001, 0x0001, 0x080c, 0x527f,
12411 +       0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xc605,
12412 +       0x2011, 0xcc90, 0x080c, 0xa103, 0x003e, 0x002e, 0x001e, 0x015e,
12413 +       0xa005, 0x0168, 0xa6b4, 0xff00, 0x8637, 0xa682, 0x0004, 0x0a04,
12414 +       0xb2db, 0xa682, 0x0007, 0x0a04, 0xb329, 0x0804, 0xb2db, 0x6013,
12415 +       0x1900, 0x6007, 0x0009, 0x0804, 0xb3ea, 0x080c, 0x570b, 0x1140,
12416 +       0x2001, 0xc635, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, 0x1110,
12417 +       0x0804, 0xb233, 0x080c, 0x568d, 0x6618, 0xa6b0, 0x0001, 0x2634,
12418 +       0xa684, 0x00ff, 0xa082, 0x0006, 0x06b8, 0xa6b4, 0xff00, 0x8637,
12419 +       0xa686, 0x0004, 0x0120, 0xa686, 0x0006, 0x1904, 0xb2db, 0x080c,
12420 +       0xbece, 0x1138, 0x080c, 0xbddb, 0x1120, 0x6007, 0x0010, 0x0804,
12421 +       0xb3ea, 0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff,
12422 +       0x8427, 0x0046, 0x080c, 0x2e46, 0x004e, 0x0016, 0xa006, 0x2009,
12423 +       0xc653, 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xc190,
12424 +       0x6018, 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e,
12425 +       0x004e, 0x6007, 0x0001, 0x00f0, 0x080c, 0xc023, 0x0140, 0xa6b4,
12426 +       0xff00, 0x8637, 0xa686, 0x0006, 0x0950, 0x0804, 0xb2db, 0x6013,
12427 +       0x1900, 0x6007, 0x0009, 0x0070, 0x080c, 0x2f69, 0x1904, 0xb5ee,
12428 +       0x080c, 0xc378, 0x1904, 0xb5ee, 0x080c, 0xb652, 0x1904, 0xb2db,
12429 +       0x6007, 0x0012, 0x6003, 0x0001, 0x080c, 0x79df, 0x0005, 0x6007,
12430 +       0x0001, 0x6003, 0x0001, 0x080c, 0x79df, 0x0cc0, 0x6007, 0x0005,
12431 +       0x0cc0, 0x080c, 0xc378, 0x1904, 0xb5ee, 0x080c, 0x2f69, 0x1904,
12432 +       0xb5ee, 0x080c, 0xb652, 0x1904, 0xb2db, 0x6007, 0x0020, 0x6003,
12433 +       0x0001, 0x080c, 0x79df, 0x0005, 0x080c, 0x2f69, 0x1904, 0xb5ee,
12434 +       0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x79df, 0x0005, 0x080c,
12435 +       0xc378, 0x1904, 0xb5ee, 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x080c,
12436 +       0xb652, 0x1904, 0xb2db, 0x0016, 0x0026, 0x2011, 0xcc91, 0x2214,
12437 +       0xa286, 0xffff, 0x0190, 0x2c08, 0x080c, 0xac81, 0x01e0, 0x2260,
12438 +       0x2011, 0xcc90, 0x2214, 0x6008, 0xa206, 0x11a8, 0x6018, 0xa190,
12439 +       0x0006, 0x2214, 0xa206, 0x01e8, 0x0070, 0x2011, 0xcc90, 0x2214,
12440 +       0x2c08, 0xa006, 0x080c, 0xc162, 0x11a0, 0x2011, 0xcc91, 0x2214,
12441 +       0xa286, 0xffff, 0x01c0, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700,
12442 +       0x2011, 0xcc89, 0x2214, 0xa296, 0xffff, 0x1180, 0x6007, 0x0025,
12443 +       0x0068, 0x601c, 0xa086, 0x0007, 0x1d70, 0x6004, 0xa086, 0x0024,
12444 +       0x1110, 0x080c, 0x95e3, 0x2160, 0x6007, 0x0025, 0x6003, 0x0001,
12445 +       0x080c, 0x79df, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c,
12446 +       0x527f, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019,
12447 +       0xc605, 0x2011, 0xcc96, 0x080c, 0xa103, 0x003e, 0x002e, 0x001e,
12448 +       0x015e, 0x0120, 0x6007, 0x0031, 0x0804, 0xb3ea, 0x080c, 0x9df5,
12449 +       0x080c, 0x5f22, 0x11b0, 0x0006, 0x0026, 0x0036, 0x080c, 0x5f3e,
12450 +       0x1158, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003,
12451 +       0x0001, 0x080c, 0x5e5a, 0x0010, 0x080c, 0x5ef9, 0x003e, 0x002e,
12452 +       0x000e, 0x0005, 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x080c, 0xb652,
12453 +       0x1904, 0xb2db, 0x6106, 0x080c, 0xb66e, 0x6007, 0x002b, 0x0804,
12454 +       0xb3ea, 0x6007, 0x002c, 0x0804, 0xb3ea, 0x080c, 0xc378, 0x1904,
12455 +       0xb5ee, 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x080c, 0xb652, 0x1904,
12456 +       0xb2db, 0x6106, 0x080c, 0xb672, 0x1120, 0x6007, 0x002e, 0x0804,
12457 +       0xb3ea, 0x6007, 0x002f, 0x0804, 0xb3ea, 0x080c, 0x2f69, 0x1904,
12458 +       0xb5ee, 0x00e6, 0x00d6, 0x00c6, 0x6018, 0xa080, 0x0001, 0x200c,
12459 +       0xa184, 0x00ff, 0xa086, 0x0006, 0x0158, 0xa184, 0xff00, 0x8007,
12460 +       0xa086, 0x0006, 0x0128, 0x00ce, 0x00de, 0x00ee, 0x0804, 0xb3ef,
12461 +       0x2001, 0xc672, 0x2004, 0xd0e4, 0x0904, 0xb544, 0x2071, 0xcc8c,
12462 +       0x7010, 0x6036, 0x7014, 0x603a, 0x7108, 0x720c, 0x2001, 0xc653,
12463 +       0x2004, 0xd0a4, 0x0140, 0x6018, 0x2068, 0x6810, 0xa106, 0x1118,
12464 +       0x6814, 0xa206, 0x01f8, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x1590,
12465 +       0x2069, 0xc600, 0x6874, 0xa206, 0x1568, 0x6870, 0xa106, 0x1550,
12466 +       0x7210, 0x080c, 0xac81, 0x0558, 0x080c, 0xc1fc, 0x0540, 0x622a,
12467 +       0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x7999, 0x00ce, 0x00de,
12468 +       0x00ee, 0x0005, 0x7214, 0xa286, 0xffff, 0x0150, 0x080c, 0xac81,
12469 +       0x01b0, 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, 0x1180, 0x0c08,
12470 +       0x7210, 0x2c08, 0xa085, 0x0001, 0x080c, 0xc162, 0x2c10, 0x2160,
12471 +       0x0130, 0x08b8, 0x6007, 0x0037, 0x6013, 0x1500, 0x08d8, 0x6007,
12472 +       0x0037, 0x6013, 0x1700, 0x08b0, 0x6007, 0x0012, 0x0898, 0x080c,
12473 +       0x2f69, 0x1904, 0xb5ee, 0x6018, 0xa080, 0x0001, 0x2004, 0xa084,
12474 +       0xff00, 0x8007, 0xa086, 0x0006, 0x1904, 0xb3ef, 0x00e6, 0x00d6,
12475 +       0x00c6, 0x2001, 0xc672, 0x2004, 0xd0e4, 0x0904, 0xb5b0, 0x2069,
12476 +       0xc600, 0x2071, 0xcc8c, 0x7008, 0x6036, 0x720c, 0x623a, 0xa286,
12477 +       0xffff, 0x1150, 0x7208, 0x00c6, 0x2c08, 0xa085, 0x0001, 0x080c,
12478 +       0xc162, 0x2c10, 0x00ce, 0x0588, 0x080c, 0xac81, 0x0570, 0x00c6,
12479 +       0x0026, 0x2260, 0x080c, 0xa954, 0x002e, 0x00ce, 0x7118, 0xa18c,
12480 +       0xff00, 0x810f, 0xa186, 0x0001, 0x0158, 0xa186, 0x0005, 0x0118,
12481 +       0xa186, 0x0007, 0x1178, 0xa280, 0x0004, 0x2004, 0xa005, 0x0150,
12482 +       0x0056, 0x7510, 0x7614, 0x080c, 0xc213, 0x005e, 0x00ce, 0x00de,
12483 +       0x00ee, 0x0005, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00,
12484 +       0x6003, 0x0001, 0x080c, 0x7999, 0x0c88, 0x6007, 0x003b, 0x602b,
12485 +       0x0009, 0x6013, 0x1700, 0x6003, 0x0001, 0x080c, 0x7999, 0x0c30,
12486 +       0x6007, 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, 0x0804, 0xb51a,
12487 +       0x00e6, 0x0026, 0x080c, 0x570b, 0x0558, 0x080c, 0x568d, 0x080c,
12488 +       0xc3f3, 0x1520, 0x2071, 0xc600, 0x70d4, 0xc085, 0x70d6, 0x00f6,
12489 +       0x2079, 0x0100, 0x72a0, 0xa284, 0x00ff, 0x7072, 0x78e6, 0xa284,
12490 +       0xff00, 0x7274, 0xa205, 0x7076, 0x78ea, 0x00fe, 0x70df, 0x0000,
12491 +       0x2001, 0xc653, 0x2004, 0xd0a4, 0x0120, 0x2011, 0xc940, 0x2013,
12492 +       0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2c62, 0x0010, 0x080c, 0xc41f,
12493 +       0x002e, 0x00ee, 0x080c, 0x95e3, 0x0804, 0xb3ee, 0x080c, 0x95e3,
12494 +       0x0005, 0x2600, 0x0002, 0xb5fc, 0xb630, 0xb641, 0xb5fc, 0xb5fc,
12495 +       0xb5fe, 0xb617, 0xb5fc, 0xb5fc, 0x080c, 0x1519, 0x080c, 0xc378,
12496 +       0x1d68, 0x080c, 0x2f69, 0x1d50, 0x080c, 0xb652, 0x1138, 0x6007,
12497 +       0x0045, 0x6003, 0x0001, 0x080c, 0x79df, 0x0005, 0x080c, 0x2e46,
12498 +       0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x79df, 0x0005, 0x080c,
12499 +       0x2f69, 0x19a0, 0x080c, 0x768f, 0x1160, 0x2e00, 0xa080, 0x0010,
12500 +       0x2004, 0x8007, 0xd084, 0x0110, 0x080c, 0xc428, 0x080c, 0x95e3,
12501 +       0x0005, 0x2009, 0x0046, 0x080c, 0xc44e, 0x080c, 0x95e3, 0x0005,
12502 +       0x080c, 0x2f69, 0x1904, 0xb5ee, 0x2009, 0x0041, 0x080c, 0xc44e,
12503 +       0x6007, 0x0047, 0x6003, 0x0001, 0x080c, 0x79df, 0x080c, 0x7e94,
12504 +       0x0005, 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x2009, 0x0042, 0x080c,
12505 +       0xc44e, 0x6007, 0x0047, 0x6003, 0x0001, 0x080c, 0x79df, 0x080c,
12506 +       0x7e94, 0x0005, 0x00d6, 0x0066, 0x6618, 0x2668, 0x6e04, 0xa6b4,
12507 +       0xff00, 0x8637, 0xa686, 0x0006, 0x0170, 0xa686, 0x0004, 0x0158,
12508 +       0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0128, 0xa686, 0x0004,
12509 +       0x0110, 0xa085, 0x0001, 0x006e, 0x00de, 0x0005, 0x00d6, 0x0449,
12510 +       0x00de, 0x0005, 0x00d6, 0x0491, 0x11f0, 0x680c, 0xa08c, 0xff00,
12511 +       0x6820, 0xa084, 0x00ff, 0xa115, 0x6212, 0x6824, 0x602a, 0xd1e4,
12512 +       0x0118, 0x2009, 0x0001, 0x0060, 0xd1ec, 0x0168, 0x6920, 0xa18c,
12513 +       0x00ff, 0x6824, 0x080c, 0x29c7, 0x1130, 0x2110, 0x2009, 0x0000,
12514 +       0x080c, 0x2e8b, 0x0018, 0xa085, 0x0001, 0x0008, 0xa006, 0x00de,
12515 +       0x0005, 0x2069, 0xcc8d, 0x6800, 0xa082, 0x0010, 0x1228, 0x6013,
12516 +       0x0000, 0xa085, 0x0001, 0x0008, 0xa006, 0x0005, 0x6013, 0x0000,
12517 +       0x2069, 0xcc8c, 0x6808, 0xa084, 0xff00, 0xa086, 0x0800, 0x1140,
12518 +       0x6800, 0xa084, 0x00ff, 0xa08e, 0x0014, 0x0110, 0xa08e, 0x0010,
12519 +       0x0005, 0x6004, 0xa0b2, 0x0080, 0x1a0c, 0x1519, 0xa1b6, 0x0013,
12520 +       0x1130, 0x2008, 0xa1b2, 0x0040, 0x1a04, 0xb7bb, 0x0092, 0xa1b6,
12521 +       0x0027, 0x0120, 0xa1b6, 0x0014, 0x190c, 0x1519, 0x2001, 0x0007,
12522 +       0x080c, 0x52be, 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94,
12523 +       0x0005, 0xb719, 0xb71b, 0xb719, 0xb719, 0xb719, 0xb71b, 0xb72d,
12524 +       0xb7b4, 0xb77d, 0xb7b4, 0xb790, 0xb7b4, 0xb72d, 0xb7b4, 0xb7ac,
12525 +       0xb7b4, 0xb7ac, 0xb7b4, 0xb7b4, 0xb719, 0xb719, 0xb719, 0xb719,
12526 +       0xb719, 0xb719, 0xb719, 0xb719, 0xb719, 0xb719, 0xb719, 0xb71b,
12527 +       0xb719, 0xb7b4, 0xb719, 0xb719, 0xb7b4, 0xb719, 0xb7b1, 0xb7b4,
12528 +       0xb719, 0xb719, 0xb719, 0xb719, 0xb7b4, 0xb7b4, 0xb719, 0xb7b4,
12529 +       0xb7b4, 0xb719, 0xb727, 0xb719, 0xb719, 0xb719, 0xb719, 0xb7b0,
12530 +       0xb7b4, 0xb719, 0xb719, 0xb7b4, 0xb7b4, 0xb719, 0xb719, 0xb719,
12531 +       0xb719, 0x080c, 0x1519, 0x080c, 0x7db1, 0x2001, 0xc8fd, 0x2004,
12532 +       0x6016, 0x6003, 0x0002, 0x080c, 0x7e94, 0x0804, 0xb7ba, 0x2001,
12533 +       0x0000, 0x080c, 0x527f, 0x0804, 0xb7b4, 0x00f6, 0x2079, 0xc652,
12534 +       0x7804, 0x00fe, 0xd0ac, 0x1904, 0xb7b4, 0x2001, 0x0000, 0x080c,
12535 +       0x527f, 0x6018, 0xa080, 0x0004, 0x2004, 0xa086, 0x00ff, 0x1140,
12536 +       0x00f6, 0x2079, 0xc600, 0x7898, 0x8000, 0x789a, 0x00fe, 0x00e0,
12537 +       0x00c6, 0x6018, 0x2060, 0x6000, 0xd0f4, 0x1140, 0x6010, 0xa005,
12538 +       0x0128, 0x00ce, 0x080c, 0x40ef, 0x0804, 0xb7b4, 0x00ce, 0x2001,
12539 +       0xc600, 0x2004, 0xa086, 0x0002, 0x1138, 0x00f6, 0x2079, 0xc600,
12540 +       0x7898, 0x8000, 0x789a, 0x00fe, 0x2001, 0x0002, 0x080c, 0x5291,
12541 +       0x080c, 0x7db1, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
12542 +       0x080c, 0x79df, 0x080c, 0x7e94, 0x00c6, 0x6118, 0x2160, 0x2009,
12543 +       0x0001, 0x080c, 0x6fb9, 0x00ce, 0x04e8, 0x6618, 0x00d6, 0x2668,
12544 +       0x6e04, 0x00de, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0560,
12545 +       0xa686, 0x0004, 0x0548, 0x080c, 0x7669, 0x2001, 0x0004, 0x0410,
12546 +       0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1110, 0x080c, 0x40ef,
12547 +       0x2001, 0x0006, 0x04a1, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de,
12548 +       0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0170, 0x2001, 0x0006,
12549 +       0x0048, 0x2001, 0x0004, 0x0030, 0x2001, 0x0006, 0x0401, 0x0020,
12550 +       0x0018, 0x0010, 0x080c, 0x52be, 0x080c, 0x7db1, 0x080c, 0x95e3,
12551 +       0x080c, 0x7e94, 0x0005, 0x2600, 0x0002, 0xb7c6, 0xb7c6, 0xb7c6,
12552 +       0xb7c6, 0xb7c6, 0xb7c8, 0xb7c6, 0xb7c8, 0xb7c6, 0x080c, 0x1519,
12553 +       0x080c, 0x7db1, 0x080c, 0x95e3, 0x080c, 0x7e94, 0x0005, 0x0016,
12554 +       0x00d6, 0x6118, 0x2168, 0x6900, 0xd184, 0x0140, 0x080c, 0x5291,
12555 +       0x2001, 0x0000, 0x080c, 0x527f, 0x080c, 0x2e6c, 0x00de, 0x001e,
12556 +       0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, 0xa084, 0xff00, 0x8007,
12557 +       0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1519, 0xa1b6, 0x0015, 0x1110,
12558 +       0x003b, 0x0028, 0xa1b6, 0x0016, 0x190c, 0x1519, 0x006b, 0x0005,
12559 +       0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0xb851, 0xb810,
12560 +       0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda,
12561 +       0x9cda, 0x9cda, 0xb851, 0xb858, 0x9cda, 0x9cda, 0x9cda, 0x9cda,
12562 +       0x00f6, 0x2079, 0xc652, 0x7804, 0xd0ac, 0x11e0, 0x6018, 0xa07d,
12563 +       0x01c8, 0x7800, 0xd0f4, 0x1118, 0x7810, 0xa005, 0x1198, 0x2001,
12564 +       0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x601f,
12565 +       0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x080c,
12566 +       0x7e94, 0x00e8, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c,
12567 +       0x29c7, 0x11a8, 0x00c6, 0x080c, 0x533d, 0x0120, 0x00ce, 0x080c,
12568 +       0x95e3, 0x0068, 0x6010, 0x0006, 0x6014, 0x0006, 0x080c, 0x4f47,
12569 +       0x000e, 0x6016, 0x000e, 0x6012, 0x00ce, 0x080c, 0x95e3, 0x00fe,
12570 +       0x0005, 0x6604, 0xa6b6, 0x001e, 0x1110, 0x080c, 0x95e3, 0x0005,
12571 +       0x080c, 0x9fb6, 0x1138, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c,
12572 +       0x79df, 0x0010, 0x080c, 0x95e3, 0x0005, 0x6004, 0xa08a, 0x0080,
12573 +       0x1a0c, 0x1519, 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94,
12574 +       0x0005, 0xa182, 0x0040, 0x0002, 0xb887, 0xb887, 0xb887, 0xb887,
12575 +       0xb889, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887,
12576 +       0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0x080c,
12577 +       0x1519, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x0046, 0x0026, 0x6218,
12578 +       0xa280, 0x002f, 0x2004, 0xa005, 0x0120, 0x2021, 0x0000, 0x080c,
12579 +       0xc3c4, 0x6106, 0x2071, 0xcc80, 0x7444, 0xa4a4, 0xff00, 0x0904,
12580 +       0xb8ed, 0xa486, 0x2000, 0x1130, 0x2009, 0x0001, 0x2011, 0x0200,
12581 +       0x080c, 0x712e, 0x080c, 0x1602, 0x090c, 0x1519, 0x6003, 0x0007,
12582 +       0x2d00, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x6c5a,
12583 +       0x2c00, 0x685e, 0x6008, 0x68b2, 0x6018, 0x2078, 0x78a0, 0x8007,
12584 +       0x7130, 0x694a, 0x0016, 0xa084, 0xff00, 0x6846, 0x684f, 0x0000,
12585 +       0x6853, 0x0000, 0x6857, 0x0036, 0x080c, 0x580a, 0x001e, 0xa486,
12586 +       0x2000, 0x1130, 0x2019, 0x0017, 0x080c, 0xc10d, 0x0804, 0xb94a,
12587 +       0xa486, 0x0400, 0x1130, 0x2019, 0x0002, 0x080c, 0xc0bf, 0x0804,
12588 +       0xb94a, 0xa486, 0x0200, 0x1110, 0x080c, 0xc0a4, 0xa486, 0x1000,
12589 +       0x1110, 0x080c, 0xc0f2, 0x0804, 0xb94a, 0x2069, 0xc9bc, 0x6a00,
12590 +       0xd284, 0x0904, 0xb9b1, 0xa284, 0x0300, 0x1904, 0xb9aa, 0x6804,
12591 +       0xa005, 0x0904, 0xb992, 0x2d78, 0x6003, 0x0007, 0x080c, 0x15e5,
12592 +       0x0904, 0xb951, 0x7800, 0xd08c, 0x1118, 0x7804, 0x8001, 0x7806,
12593 +       0x6013, 0x0000, 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, 0x0000,
12594 +       0x6008, 0x68b2, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007,
12595 +       0x7130, 0x6986, 0x6846, 0x7928, 0x698a, 0x792c, 0x698e, 0x7930,
12596 +       0x6992, 0x7934, 0x6996, 0x6853, 0x003d, 0x7244, 0xa294, 0x0003,
12597 +       0xa286, 0x0002, 0x1118, 0x684f, 0x0040, 0x0040, 0xa286, 0x0001,
12598 +       0x1118, 0x684f, 0x0080, 0x0010, 0x684f, 0x0000, 0x20a9, 0x000a,
12599 +       0x2001, 0xcc90, 0xad90, 0x0015, 0x200c, 0x810f, 0x2112, 0x8000,
12600 +       0x8210, 0x1f04, 0xb93c, 0x200c, 0x6982, 0x8000, 0x200c, 0x697e,
12601 +       0x080c, 0x580a, 0x002e, 0x004e, 0x015e, 0x00fe, 0x00ee, 0x00de,
12602 +       0x0005, 0x2001, 0xc60e, 0x2004, 0xd084, 0x0120, 0x080c, 0x1602,
12603 +       0x1904, 0xb902, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, 0x0041,
12604 +       0x080c, 0x7999, 0x080c, 0x7e94, 0x0c28, 0x2069, 0xcc92, 0x2d04,
12605 +       0xa084, 0xff00, 0xa086, 0x1200, 0x11a8, 0x2069, 0xcc80, 0x686c,
12606 +       0xa084, 0x00ff, 0x0016, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112,
12607 +       0x001e, 0x6003, 0x0001, 0x6007, 0x0043, 0x080c, 0x7999, 0x080c,
12608 +       0x7e94, 0x0840, 0x6868, 0x602a, 0x686c, 0x602e, 0x6013, 0x0200,
12609 +       0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x7999, 0x080c, 0x7e94,
12610 +       0x0804, 0xb94a, 0x2001, 0xc60d, 0x2004, 0xd0ec, 0x0120, 0x2011,
12611 +       0x8049, 0x080c, 0x407d, 0x6013, 0x0300, 0x0010, 0x6013, 0x0100,
12612 +       0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x7999, 0x080c, 0x7e94,
12613 +       0x0804, 0xb94a, 0x6013, 0x0500, 0x0c98, 0x6013, 0x0600, 0x0804,
12614 +       0xb965, 0x6013, 0x0200, 0x0804, 0xb965, 0xa186, 0x0013, 0x1170,
12615 +       0x6004, 0xa08a, 0x0040, 0x0a0c, 0x1519, 0xa08a, 0x0053, 0x1a0c,
12616 +       0x1519, 0xa082, 0x0040, 0x2008, 0x0804, 0xba3f, 0xa186, 0x0051,
12617 +       0x0138, 0xa186, 0x0047, 0x11d8, 0x6004, 0xa086, 0x0041, 0x0518,
12618 +       0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, 0x0126, 0x2091, 0x2800,
12619 +       0x0006, 0x0016, 0x0026, 0x080c, 0x7873, 0x002e, 0x001e, 0x000e,
12620 +       0x012e, 0x6000, 0xa086, 0x0002, 0x1170, 0x0804, 0xba82, 0xa186,
12621 +       0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, 0x6004, 0xa082,
12622 +       0x0040, 0x2008, 0x001a, 0x080c, 0x962a, 0x0005, 0xba09, 0xba0b,
12623 +       0xba0b, 0xba2f, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09,
12624 +       0xba09, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09,
12625 +       0xba09, 0x080c, 0x1519, 0x080c, 0x7db1, 0x080c, 0x7e94, 0x0036,
12626 +       0x00d6, 0x6010, 0xa06d, 0x01c0, 0xad84, 0xf000, 0x01a8, 0x6003,
12627 +       0x0002, 0x6018, 0x2004, 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c,
12628 +       0xc141, 0x6013, 0x0000, 0x6014, 0xa005, 0x1120, 0x2001, 0xc8fe,
12629 +       0x2004, 0x6016, 0x6003, 0x0007, 0x00de, 0x003e, 0x0005, 0x00d6,
12630 +       0x080c, 0x7db1, 0x080c, 0x7e94, 0x080c, 0xac91, 0x0120, 0x6010,
12631 +       0x2068, 0x080c, 0x1619, 0x080c, 0xae54, 0x00de, 0x0005, 0x0002,
12632 +       0xba53, 0xba70, 0xba5c, 0xba7c, 0xba53, 0xba53, 0xba53, 0xba53,
12633 +       0xba53, 0xba53, 0xba53, 0xba53, 0xba53, 0xba53, 0xba53, 0xba53,
12634 +       0xba53, 0xba53, 0xba53, 0x080c, 0x1519, 0x6010, 0xa088, 0x0013,
12635 +       0x2104, 0xa085, 0x0400, 0x200a, 0x080c, 0x7db1, 0x6010, 0xa080,
12636 +       0x0013, 0x2004, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, 0x0043,
12637 +       0x080c, 0x9613, 0x0010, 0x6003, 0x0002, 0x080c, 0x7e94, 0x0005,
12638 +       0x080c, 0x7db1, 0x080c, 0xc37f, 0x1120, 0x080c, 0x7103, 0x080c,
12639 +       0x95e3, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x2009, 0x0041,
12640 +       0x0804, 0xbbcb, 0xa182, 0x0040, 0x0002, 0xba98, 0xba9a, 0xba98,
12641 +       0xba98, 0xba98, 0xba98, 0xba98, 0xba9b, 0xba98, 0xba98, 0xba98,
12642 +       0xba98, 0xba98, 0xba98, 0xba98, 0xba98, 0xba98, 0xbaa6, 0xba98,
12643 +       0x080c, 0x1519, 0x0005, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005,
12644 +       0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, 0x0005, 0x00d6, 0x080c,
12645 +       0x7103, 0x00de, 0x080c, 0xc3e2, 0x080c, 0x95e3, 0x0005, 0xa182,
12646 +       0x0040, 0x0002, 0xbac5, 0xbac5, 0xbac5, 0xbac5, 0xbac5, 0xbac5,
12647 +       0xbac5, 0xbac7, 0xbac5, 0xbaca, 0xbb03, 0xbac5, 0xbac5, 0xbac5,
12648 +       0xbac5, 0xbb03, 0xbac5, 0xbac5, 0xbac5, 0x080c, 0x1519, 0x080c,
12649 +       0x962a, 0x0005, 0x2001, 0xc672, 0x2004, 0xd0e4, 0x0158, 0x2001,
12650 +       0x0100, 0x2004, 0xa082, 0x0005, 0x0228, 0x2001, 0x011f, 0x2004,
12651 +       0x6036, 0x0010, 0x6037, 0x0000, 0x080c, 0x7e47, 0x080c, 0x7f6e,
12652 +       0x6010, 0x00d6, 0x2068, 0x684c, 0xd0fc, 0x0150, 0xa08c, 0x0003,
12653 +       0xa18e, 0x0002, 0x0168, 0x2009, 0x0041, 0x00de, 0x0804, 0xbbcb,
12654 +       0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x7103, 0x00de, 0x0005,
12655 +       0x080c, 0xc37f, 0x0110, 0x00de, 0x0005, 0x080c, 0x7103, 0x080c,
12656 +       0x95e3, 0x00de, 0x0ca0, 0x0036, 0x080c, 0x7e47, 0x080c, 0x7f6e,
12657 +       0x6010, 0x00d6, 0x2068, 0x6018, 0x2004, 0xd0bc, 0x0188, 0x684c,
12658 +       0xa084, 0x0003, 0xa086, 0x0002, 0x0140, 0x687c, 0x632c, 0xa31a,
12659 +       0x632e, 0x6880, 0x6328, 0xa31b, 0x632a, 0x6003, 0x0002, 0x0080,
12660 +       0x2019, 0x0004, 0x080c, 0xc141, 0x6014, 0xa005, 0x1128, 0x2001,
12661 +       0xc8fe, 0x2004, 0x8003, 0x6016, 0x6013, 0x0000, 0x6003, 0x0007,
12662 +       0x00de, 0x003e, 0x0005, 0xa186, 0x0013, 0x1150, 0x6004, 0xa086,
12663 +       0x0042, 0x190c, 0x1519, 0x080c, 0x7db1, 0x080c, 0x7e94, 0x0005,
12664 +       0xa186, 0x0027, 0x0118, 0xa186, 0x0014, 0x1180, 0x6004, 0xa086,
12665 +       0x0042, 0x190c, 0x1519, 0x2001, 0x0007, 0x080c, 0x52be, 0x080c,
12666 +       0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xa182, 0x0040,
12667 +       0x0002, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c,
12668 +       0xbb6e, 0xbb7a, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c,
12669 +       0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0x080c, 0x1519, 0x0036, 0x0046,
12670 +       0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, 0x004e,
12671 +       0x003e, 0x0005, 0x6010, 0x00d6, 0x2068, 0x6810, 0x6a14, 0x0006,
12672 +       0x0046, 0x0056, 0x6c7c, 0xa422, 0x6d80, 0x2200, 0xa52b, 0x602c,
12673 +       0xa420, 0x642e, 0x6028, 0xa529, 0x652a, 0x005e, 0x004e, 0x000e,
12674 +       0xa20d, 0x1178, 0x684c, 0xd0fc, 0x0120, 0x2009, 0x0041, 0x00de,
12675 +       0x0490, 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x7103, 0x00de,
12676 +       0x0005, 0x0006, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x000e,
12677 +       0x0120, 0x6003, 0x0002, 0x00de, 0x0005, 0x2009, 0xc60d, 0x210c,
12678 +       0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, 0x0021,
12679 +       0x080c, 0x7105, 0x00de, 0x0005, 0xd2fc, 0x0140, 0x8002, 0x8000,
12680 +       0x8212, 0xa291, 0x0000, 0x2009, 0x0009, 0x0010, 0x2009, 0x0015,
12681 +       0x6a6a, 0x6866, 0x0005, 0xa182, 0x0040, 0x0208, 0x0062, 0xa186,
12682 +       0x0013, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, 0x6020, 0xd0dc,
12683 +       0x090c, 0x1519, 0x0005, 0xbbee, 0xbbf5, 0xbc01, 0xbc0d, 0xbbee,
12684 +       0xbbee, 0xbbee, 0xbc1c, 0xbbee, 0xbbf0, 0xbbf0, 0xbbee, 0xbbee,
12685 +       0xbbee, 0xbbee, 0xbbf0, 0xbbee, 0xbbf0, 0xbbee, 0x080c, 0x1519,
12686 +       0x6020, 0xd0dc, 0x090c, 0x1519, 0x0005, 0x6003, 0x0001, 0x6106,
12687 +       0x080c, 0x7999, 0x0126, 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e,
12688 +       0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x0126, 0x2091,
12689 +       0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x6003, 0x0003, 0x6106,
12690 +       0x2c10, 0x080c, 0x2068, 0x0126, 0x2091, 0x8000, 0x080c, 0x79fc,
12691 +       0x080c, 0x7f6e, 0x012e, 0x0005, 0xa016, 0x080c, 0x1870, 0x0005,
12692 +       0x0126, 0x2091, 0x8000, 0x0036, 0x00d6, 0xa182, 0x0040, 0x0023,
12693 +       0x00de, 0x003e, 0x012e, 0x0005, 0xbc3c, 0xbc3e, 0xbc50, 0xbc6b,
12694 +       0xbc3c, 0xbc3c, 0xbc3c, 0xbc80, 0xbc3c, 0xbc3c, 0xbc3c, 0xbc3c,
12695 +       0xbc3c, 0xbc3c, 0xbc3c, 0xbc3c, 0x080c, 0x1519, 0x6010, 0x2068,
12696 +       0x684c, 0xd0fc, 0x01f8, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x01d0,
12697 +       0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0498,
12698 +       0x6010, 0x2068, 0x684c, 0xd0fc, 0x0168, 0xa09c, 0x0003, 0xa39e,
12699 +       0x0003, 0x0140, 0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x080c,
12700 +       0x7e94, 0x0408, 0x6013, 0x0000, 0x6017, 0x0000, 0x2019, 0x0004,
12701 +       0x080c, 0xc141, 0x00c0, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0d90,
12702 +       0xa09c, 0x0003, 0xa39e, 0x0003, 0x0d68, 0x6003, 0x0003, 0x6106,
12703 +       0x2c10, 0x080c, 0x2068, 0x080c, 0x79fc, 0x080c, 0x7f6e, 0x0018,
12704 +       0xa016, 0x080c, 0x1870, 0x0005, 0x080c, 0x7db1, 0x6110, 0x81ff,
12705 +       0x0158, 0x00d6, 0x2168, 0x080c, 0xc4d7, 0x0036, 0x2019, 0x0029,
12706 +       0x080c, 0xc141, 0x003e, 0x00de, 0x080c, 0xae54, 0x080c, 0x7e94,
12707 +       0x0005, 0x080c, 0x7e47, 0x6110, 0x81ff, 0x0158, 0x00d6, 0x2168,
12708 +       0x080c, 0xc4d7, 0x0036, 0x2019, 0x0029, 0x080c, 0xc141, 0x003e,
12709 +       0x00de, 0x080c, 0xae54, 0x080c, 0x7f6e, 0x0005, 0xa182, 0x0085,
12710 +       0x0002, 0xbcba, 0xbcb8, 0xbcb8, 0xbcc6, 0xbcb8, 0xbcb8, 0xbcb8,
12711 +       0x080c, 0x1519, 0x6003, 0x000b, 0x6106, 0x080c, 0x7999, 0x0126,
12712 +       0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x0026, 0x00e6,
12713 +       0x080c, 0xc378, 0x0118, 0x080c, 0x95e3, 0x00d8, 0x2071, 0xcc80,
12714 +       0x7224, 0x6212, 0x7220, 0x080c, 0xbfef, 0x0118, 0x6007, 0x0086,
12715 +       0x0040, 0x6007, 0x0087, 0x7224, 0xa296, 0xffff, 0x1110, 0x6007,
12716 +       0x0086, 0x6003, 0x0001, 0x080c, 0x7999, 0x080c, 0x7e94, 0x080c,
12717 +       0x7f6e, 0x00ee, 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, 0x6004,
12718 +       0xa08a, 0x0085, 0x0a0c, 0x1519, 0xa08a, 0x008c, 0x1a0c, 0x1519,
12719 +       0xa082, 0x0085, 0x00a2, 0xa186, 0x0027, 0x0130, 0xa186, 0x0014,
12720 +       0x0118, 0x080c, 0x962a, 0x0050, 0x2001, 0x0007, 0x080c, 0x52be,
12721 +       0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xbd16,
12722 +       0xbd18, 0xbd18, 0xbd16, 0xbd16, 0xbd16, 0xbd16, 0x080c, 0x1519,
12723 +       0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xa182,
12724 +       0x0085, 0x0a0c, 0x1519, 0xa182, 0x008c, 0x1a0c, 0x1519, 0xa182,
12725 +       0x0085, 0x0002, 0xbd31, 0xbd31, 0xbd31, 0xbd33, 0xbd31, 0xbd31,
12726 +       0xbd31, 0x080c, 0x1519, 0x0005, 0xa186, 0x0013, 0x0148, 0xa186,
12727 +       0x0014, 0x0130, 0xa186, 0x0027, 0x0118, 0x080c, 0x962a, 0x0030,
12728 +       0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0x0036,
12729 +       0x080c, 0xc3e2, 0x603f, 0x0000, 0x2019, 0x000b, 0x0031, 0x601f,
12730 +       0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, 0x2091,
12731 +       0x8000, 0x0086, 0x2c40, 0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9,
12732 +       0x009e, 0x008e, 0x1578, 0x0076, 0x2c38, 0x080c, 0x906f, 0x007e,
12733 +       0x1548, 0x6000, 0xa086, 0x0000, 0x0528, 0x601c, 0xa086, 0x0007,
12734 +       0x0508, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, 0xc3e2,
12735 +       0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x080c, 0x1953,
12736 +       0x6010, 0x2068, 0x080c, 0xac91, 0x0110, 0x080c, 0xc141, 0x00de,
12737 +       0x6013, 0x0000, 0x080c, 0xc3e2, 0x601f, 0x0007, 0x2001, 0xc8fd,
12738 +       0x2004, 0x6016, 0x003e, 0x012e, 0x0005, 0x00f6, 0x00c6, 0x0036,
12739 +       0x0156, 0x2079, 0xcc80, 0x7938, 0x783c, 0x080c, 0x29c7, 0x15b0,
12740 +       0x0016, 0x00c6, 0x080c, 0x533d, 0x1578, 0x001e, 0x002e, 0x0026,
12741 +       0x0016, 0x2019, 0x0029, 0x080c, 0x9132, 0x080c, 0x7b16, 0x0076,
12742 +       0x2039, 0x0000, 0x080c, 0x7a0e, 0x007e, 0x001e, 0x0076, 0x2039,
12743 +       0x0000, 0x080c, 0xbef7, 0x007e, 0x080c, 0x553e, 0x0026, 0x6204,
12744 +       0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x0118, 0xa286, 0x0004,
12745 +       0x1118, 0x62a0, 0x080c, 0x2eff, 0x002e, 0x001e, 0x080c, 0x4f47,
12746 +       0x6612, 0x6516, 0xa006, 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e,
12747 +       0x00ce, 0x00fe, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x2009,
12748 +       0xc621, 0x2104, 0xa086, 0x0074, 0x1904, 0xbe30, 0x2069, 0xcc8e,
12749 +       0x690c, 0xa182, 0x0100, 0x06c0, 0x6908, 0xa184, 0x8000, 0x05e8,
12750 +       0x2001, 0xc8e5, 0x2004, 0xa005, 0x1160, 0x6018, 0x2070, 0x7010,
12751 +       0xa084, 0x00ff, 0x0118, 0x7000, 0xd0f4, 0x0118, 0xa184, 0x0800,
12752 +       0x0560, 0x6910, 0xa18a, 0x0001, 0x0610, 0x6914, 0x2069, 0xccae,
12753 +       0x6904, 0x81ff, 0x1198, 0x690c, 0xa182, 0x0100, 0x02a8, 0x6908,
12754 +       0x81ff, 0x1178, 0x6910, 0xa18a, 0x0001, 0x0288, 0x6918, 0xa18a,
12755 +       0x0001, 0x0298, 0x00d0, 0x6013, 0x0100, 0x00a0, 0x6013, 0x0300,
12756 +       0x0088, 0x6013, 0x0500, 0x0070, 0x6013, 0x0700, 0x0058, 0x6013,
12757 +       0x0900, 0x0040, 0x6013, 0x0b00, 0x0028, 0x6013, 0x0f00, 0x0010,
12758 +       0x6013, 0x2d00, 0xa085, 0x0001, 0x0008, 0xa006, 0x001e, 0x00ee,
12759 +       0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x0026, 0x0036, 0x0156,
12760 +       0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286, 0x0006, 0x0190,
12761 +       0xa286, 0x0004, 0x0178, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006,
12762 +       0x0148, 0xa286, 0x0004, 0x0130, 0x00c6, 0x2d60, 0x080c, 0x534c,
12763 +       0x00ce, 0x04c0, 0x2011, 0xcc96, 0xad98, 0x000a, 0x20a9, 0x0004,
12764 +       0x080c, 0xa103, 0x1580, 0x2011, 0xcc9a, 0xad98, 0x0006, 0x20a9,
12765 +       0x0004, 0x080c, 0xa103, 0x1538, 0x0046, 0x0016, 0x6aa0, 0xa294,
12766 +       0x00ff, 0x8227, 0xa006, 0x2009, 0xc653, 0x210c, 0xd1a4, 0x0138,
12767 +       0x2009, 0x0029, 0x080c, 0xc190, 0x6800, 0xc0e5, 0x6802, 0x2019,
12768 +       0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e,
12769 +       0x2c08, 0x080c, 0xbef7, 0x007e, 0x2001, 0x0007, 0x080c, 0x52be,
12770 +       0x001e, 0x004e, 0xa006, 0x015e, 0x003e, 0x002e, 0x00de, 0x00ce,
12771 +       0x0005, 0x00d6, 0x2069, 0xcc8e, 0x6800, 0xa086, 0x0800, 0x0118,
12772 +       0x6013, 0x0000, 0x0008, 0xa006, 0x00de, 0x0005, 0x00c6, 0x00f6,
12773 +       0x0016, 0x0026, 0x0036, 0x0156, 0x2079, 0xcc8c, 0x7930, 0x7834,
12774 +       0x080c, 0x29c7, 0x11a0, 0x080c, 0x533d, 0x1188, 0x2011, 0xcc90,
12775 +       0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, 0xa103, 0x1140, 0x2011,
12776 +       0xcc94, 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, 0xa103, 0x015e,
12777 +       0x003e, 0x002e, 0x001e, 0x00fe, 0x00ce, 0x0005, 0x00c6, 0x0006,
12778 +       0x0016, 0x0026, 0x0036, 0x0156, 0x2011, 0xcc83, 0x2204, 0x8211,
12779 +       0x220c, 0x080c, 0x29c7, 0x11a0, 0x080c, 0x533d, 0x1188, 0x2011,
12780 +       0xcc96, 0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, 0xa103, 0x1140,
12781 +       0x2011, 0xcc9a, 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, 0xa103,
12782 +       0x015e, 0x003e, 0x002e, 0x001e, 0x000e, 0x00ce, 0x0005, 0x00e6,
12783 +       0x00c6, 0x0086, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0126,
12784 +       0x2091, 0x8000, 0x2740, 0x2029, 0xc930, 0x252c, 0x2021, 0xc936,
12785 +       0x2424, 0x2061, 0xce00, 0x2071, 0xc600, 0x7648, 0x7068, 0x81ff,
12786 +       0x0150, 0x0006, 0xa186, 0xca3c, 0x000e, 0x0128, 0x8001, 0xa602,
12787 +       0x1a04, 0xbf78, 0x0018, 0xa606, 0x0904, 0xbf78, 0x2100, 0xac06,
12788 +       0x0904, 0xbf6f, 0x080c, 0xc1b8, 0x0904, 0xbf6f, 0x671c, 0xa786,
12789 +       0x0001, 0x0904, 0xbfc1, 0xa786, 0x0004, 0x0904, 0xbfc1, 0xa786,
12790 +       0x0007, 0x05e8, 0x2500, 0xac06, 0x05d0, 0x2400, 0xac06, 0x05b8,
12791 +       0x080c, 0xc1c8, 0x15a0, 0x88ff, 0x0118, 0x6050, 0xa906, 0x1578,
12792 +       0x00d6, 0x6000, 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1953,
12793 +       0x001e, 0xa786, 0x0008, 0x1148, 0x080c, 0xae8f, 0x1130, 0x080c,
12794 +       0x9c09, 0x00de, 0x080c, 0xae54, 0x00d0, 0x6010, 0x2068, 0x080c,
12795 +       0xac91, 0x0190, 0xa786, 0x0003, 0x1528, 0x6837, 0x0103, 0x6b4a,
12796 +       0x6847, 0x0000, 0x080c, 0xc4d7, 0x0016, 0x080c, 0xaf03, 0x080c,
12797 +       0x580a, 0x001e, 0x080c, 0xae48, 0x00de, 0x080c, 0xae54, 0xace0,
12798 +       0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1210, 0x0804, 0xbf0b,
12799 +       0x012e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x008e, 0x00ce,
12800 +       0x00ee, 0x0005, 0xa786, 0x0006, 0x1150, 0xa386, 0x0005, 0x0128,
12801 +       0x080c, 0xc4d7, 0x080c, 0xc141, 0x08f8, 0x00de, 0x0c00, 0xa786,
12802 +       0x0009, 0x1548, 0x6000, 0xa086, 0x0004, 0x1128, 0x00c6, 0x080c,
12803 +       0x761a, 0x00ce, 0x00e8, 0x6000, 0xa086, 0x0003, 0x11c8, 0x080c,
12804 +       0x7e47, 0x00e6, 0x00d6, 0x6110, 0x2168, 0x080c, 0xac91, 0x0140,
12805 +       0x6018, 0x2070, 0x70b3, 0x0000, 0x70b7, 0x0000, 0x080c, 0x580a,
12806 +       0x00de, 0x00ee, 0x00c6, 0x080c, 0x95e3, 0x00ce, 0x080c, 0x7f6e,
12807 +       0x00de, 0x0804, 0xbf6f, 0xa786, 0x000a, 0x0904, 0xbf5f, 0x0804,
12808 +       0xbf5d, 0x080c, 0xc1c8, 0x1904, 0xbf6f, 0x81ff, 0x0904, 0xbf6f,
12809 +       0xa180, 0x0001, 0x2004, 0xa086, 0x0018, 0x0138, 0xa180, 0x0001,
12810 +       0x2004, 0xa086, 0x002d, 0x1904, 0xbf6f, 0x6000, 0xa086, 0x0002,
12811 +       0x1904, 0xbf6f, 0x080c, 0xae7e, 0x0138, 0x080c, 0xae8f, 0x1904,
12812 +       0xbf6f, 0x080c, 0x9c09, 0x0038, 0x080c, 0x2e6c, 0x080c, 0xae8f,
12813 +       0x1110, 0x080c, 0x9c09, 0x080c, 0xae54, 0x0804, 0xbf6f, 0x00c6,
12814 +       0x00e6, 0x0016, 0x2c08, 0x2170, 0xa006, 0x080c, 0xc162, 0x001e,
12815 +       0x0120, 0x601c, 0xa084, 0x000f, 0x001b, 0x00ee, 0x00ce, 0x0005,
12816 +       0xc008, 0xc008, 0xc008, 0xc008, 0xc008, 0xc008, 0xc00a, 0xc008,
12817 +       0xa006, 0x0005, 0x0046, 0x0016, 0x7018, 0xa080, 0x0028, 0x2024,
12818 +       0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020, 0x080c, 0xc190,
12819 +       0x001e, 0x004e, 0x0036, 0x2019, 0x0002, 0x080c, 0xbd55, 0x003e,
12820 +       0xa085, 0x0001, 0x0005, 0x2001, 0x0001, 0x080c, 0x527f, 0x0156,
12821 +       0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xc605, 0x2011,
12822 +       0xcc96, 0x080c, 0xa103, 0x003e, 0x002e, 0x001e, 0x015e, 0xa005,
12823 +       0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0026,
12824 +       0x0126, 0x2091, 0x8000, 0x2740, 0x2061, 0xce00, 0x2079, 0x0001,
12825 +       0x8fff, 0x0904, 0xc097, 0x2071, 0xc600, 0x7648, 0x7068, 0x8001,
12826 +       0xa602, 0x1a04, 0xc097, 0x88ff, 0x0128, 0x2800, 0xac06, 0x15b0,
12827 +       0x2079, 0x0000, 0x080c, 0xc1b8, 0x0588, 0x2400, 0xac06, 0x0570,
12828 +       0x671c, 0xa786, 0x0006, 0x1550, 0xa786, 0x0007, 0x0538, 0x88ff,
12829 +       0x1140, 0x6018, 0xa206, 0x1510, 0x85ff, 0x0118, 0x6050, 0xa106,
12830 +       0x11e8, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, 0xc3e2,
12831 +       0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x080c, 0x1953,
12832 +       0x6010, 0x2068, 0x080c, 0xac91, 0x0120, 0x0046, 0x080c, 0xc141,
12833 +       0x004e, 0x00de, 0x080c, 0xae54, 0x88ff, 0x1198, 0xace0, 0x0018,
12834 +       0x2001, 0xc617, 0x2004, 0xac02, 0x1210, 0x0804, 0xc048, 0xa006,
12835 +       0x012e, 0x002e, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x00fe,
12836 +       0x0005, 0xa8c5, 0x0001, 0x0ca0, 0x0076, 0x0056, 0x0086, 0x2041,
12837 +       0x0000, 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6218, 0x0096,
12838 +       0x2049, 0x0000, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x2039, 0x0000,
12839 +       0x080c, 0x906f, 0x080c, 0xc039, 0x005e, 0x007e, 0x0005, 0x0026,
12840 +       0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x2128, 0x20a9,
12841 +       0x007f, 0x2009, 0x0000, 0x0016, 0x0036, 0x080c, 0x533d, 0x11b0,
12842 +       0x2c10, 0x0056, 0x0086, 0x2041, 0x0000, 0x2508, 0x2029, 0x0001,
12843 +       0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x2039,
12844 +       0x0000, 0x080c, 0x906f, 0x080c, 0xc039, 0x005e, 0x003e, 0x001e,
12845 +       0x8108, 0x1f04, 0xc0cb, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e,
12846 +       0x002e, 0x0005, 0x0076, 0x0056, 0x6218, 0x0086, 0x2041, 0x0000,
12847 +       0x2029, 0x0001, 0x2019, 0x0048, 0x0096, 0x2049, 0x0000, 0x080c,
12848 +       0x8fc9, 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x906f, 0x2c20,
12849 +       0x080c, 0xc039, 0x005e, 0x007e, 0x0005, 0x0026, 0x0046, 0x0056,
12850 +       0x0076, 0x00c6, 0x0156, 0x2c20, 0x20a9, 0x007f, 0x2009, 0x0000,
12851 +       0x0016, 0x0036, 0x080c, 0x533d, 0x11c0, 0x2c10, 0x0086, 0x2041,
12852 +       0x0000, 0x2828, 0x0046, 0x2021, 0x0001, 0x080c, 0xc3c4, 0x004e,
12853 +       0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x2039,
12854 +       0x0000, 0x080c, 0x906f, 0x080c, 0xc039, 0x003e, 0x001e, 0x8108,
12855 +       0x1f04, 0xc118, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x002e,
12856 +       0x0005, 0x0016, 0x00f6, 0x3800, 0xd08c, 0x0130, 0xad82, 0x1000,
12857 +       0x02b0, 0xad82, 0xc600, 0x0230, 0xad82, 0xfe00, 0x0280, 0xad82,
12858 +       0xffff, 0x1268, 0x6800, 0xa07d, 0x0138, 0x6803, 0x0000, 0x6b52,
12859 +       0x080c, 0x580a, 0x2f68, 0x0cb0, 0x6b52, 0x080c, 0x580a, 0x00fe,
12860 +       0x001e, 0x0005, 0x00e6, 0x0046, 0x0036, 0x2061, 0xce00, 0xa005,
12861 +       0x1138, 0x2071, 0xc600, 0x7448, 0x7068, 0x8001, 0xa402, 0x12d8,
12862 +       0x2100, 0xac06, 0x0168, 0x6000, 0xa086, 0x0000, 0x0148, 0x6008,
12863 +       0xa206, 0x1130, 0x6018, 0xa1a0, 0x0006, 0x2424, 0xa406, 0x0140,
12864 +       0xace0, 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1220, 0x0c40,
12865 +       0xa085, 0x0001, 0x0008, 0xa006, 0x003e, 0x004e, 0x00ee, 0x0005,
12866 +       0x00d6, 0x0006, 0x080c, 0x1602, 0x000e, 0x090c, 0x1519, 0x6837,
12867 +       0x010d, 0x685e, 0x0026, 0x2010, 0x080c, 0xac81, 0x2001, 0x0000,
12868 +       0x0120, 0x2200, 0xa080, 0x0014, 0x2004, 0x002e, 0x684a, 0x6956,
12869 +       0x6c46, 0x684f, 0x0000, 0x2001, 0xc905, 0x2004, 0x6852, 0xa006,
12870 +       0x68b2, 0x6802, 0x683a, 0x685a, 0x080c, 0x580a, 0x00de, 0x0005,
12871 +       0x6700, 0xa786, 0x0000, 0x0158, 0xa786, 0x0001, 0x0140, 0xa786,
12872 +       0x000a, 0x0128, 0xa786, 0x0009, 0x0110, 0xa085, 0x0001, 0x0005,
12873 +       0x00e6, 0x6018, 0x2070, 0x70a0, 0xa206, 0x00ee, 0x0005, 0x0016,
12874 +       0x6004, 0xa08e, 0x001e, 0x11a0, 0x8007, 0x6130, 0xa18c, 0x00ff,
12875 +       0xa105, 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0005,
12876 +       0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c, 0x7999, 0x080c, 0x7e94,
12877 +       0x001e, 0x0005, 0xe000, 0xe000, 0x0005, 0x6020, 0xd0e4, 0x0158,
12878 +       0xd0cc, 0x0118, 0x080c, 0xaf6c, 0x0030, 0x080c, 0xc3e2, 0x080c,
12879 +       0x7103, 0x080c, 0x95e3, 0x0005, 0xa280, 0x0007, 0x2004, 0xa084,
12880 +       0x000f, 0x0002, 0xc20b, 0xc20b, 0xc20b, 0xc210, 0xc20b, 0xc20d,
12881 +       0xc20d, 0xc20b, 0xc20d, 0xa006, 0x0005, 0x00c6, 0x2260, 0x00ce,
12882 +       0xa085, 0x0001, 0x0005, 0xa280, 0x0007, 0x2004, 0xa084, 0x000f,
12883 +       0x0002, 0xc222, 0xc222, 0xc222, 0xc222, 0xc222, 0xc222, 0xc22d,
12884 +       0xc222, 0xc222, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00,
12885 +       0x6003, 0x0001, 0x080c, 0x7999, 0x0005, 0x00c6, 0x2260, 0x080c,
12886 +       0xc3e2, 0x603f, 0x0000, 0x6020, 0xc0f4, 0xc0cc, 0x6022, 0x6037,
12887 +       0x0000, 0x00ce, 0x00d6, 0x2268, 0xa186, 0x0007, 0x1904, 0xc288,
12888 +       0x6810, 0xa005, 0x0138, 0xa080, 0x0013, 0x2004, 0xd0fc, 0x1110,
12889 +       0x00de, 0x08c0, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c, 0x7999,
12890 +       0x080c, 0x7e94, 0x00c6, 0x2d60, 0x6100, 0xa186, 0x0002, 0x1904,
12891 +       0xc311, 0x6010, 0xa005, 0x1138, 0x6000, 0xa086, 0x0007, 0x190c,
12892 +       0x1519, 0x0804, 0xc311, 0xa08c, 0xf000, 0x1130, 0x0028, 0x2068,
12893 +       0x6800, 0xa005, 0x1de0, 0x2d00, 0xa080, 0x0013, 0x2004, 0xa084,
12894 +       0x0003, 0xa086, 0x0002, 0x1180, 0x6010, 0x2068, 0x684c, 0xc0dc,
12895 +       0xc0f4, 0x684e, 0x6850, 0xc0f4, 0xc0fc, 0x6852, 0x2009, 0x0043,
12896 +       0x080c, 0xbbcb, 0x0804, 0xc311, 0x2009, 0x0041, 0x0804, 0xc30b,
12897 +       0xa186, 0x0005, 0x15f0, 0x6810, 0xa080, 0x0013, 0x2004, 0xd0bc,
12898 +       0x1118, 0x00de, 0x0804, 0xc222, 0xd0b4, 0x0128, 0xd0fc, 0x090c,
12899 +       0x1519, 0x0804, 0xc240, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c,
12900 +       0x7999, 0x080c, 0x7e94, 0x00c6, 0x2d60, 0x6100, 0xa186, 0x0002,
12901 +       0x0120, 0xa186, 0x0004, 0x1904, 0xc311, 0x2071, 0xc96a, 0x7000,
12902 +       0xa086, 0x0003, 0x1128, 0x7004, 0xac06, 0x1110, 0x7003, 0x0000,
12903 +       0x6810, 0xa080, 0x0013, 0x200c, 0xc1f4, 0xc1dc, 0x2102, 0x8000,
12904 +       0x200c, 0xc1f4, 0xc1fc, 0xc1bc, 0x2102, 0x2009, 0x0042, 0x0804,
12905 +       0xc30b, 0x0036, 0x00d6, 0x00d6, 0x080c, 0x1602, 0x003e, 0x090c,
12906 +       0x1519, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x685b,
12907 +       0x0000, 0x6b5e, 0x6857, 0x0045, 0x2c00, 0x6862, 0x6034, 0x6872,
12908 +       0x2360, 0x6020, 0xc0dd, 0x6022, 0x6018, 0xa080, 0x0028, 0x2004,
12909 +       0xa084, 0x00ff, 0x8007, 0x6350, 0x6b4a, 0x6846, 0x684f, 0x0000,
12910 +       0x6853, 0x0000, 0x6d6a, 0x6e66, 0x686f, 0x0001, 0x080c, 0x580a,
12911 +       0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xbd55, 0x2d00, 0x600a,
12912 +       0x601f, 0x0006, 0x6003, 0x0007, 0x6017, 0x0000, 0x603f, 0x0000,
12913 +       0x00de, 0x003e, 0x0038, 0x603f, 0x0000, 0x6003, 0x0007, 0x080c,
12914 +       0xbbcb, 0x00ce, 0x00de, 0x0005, 0xa186, 0x0013, 0x1128, 0x6004,
12915 +       0xa082, 0x0085, 0x2008, 0x00c2, 0xa186, 0x0027, 0x1178, 0x080c,
12916 +       0x7db1, 0x0036, 0x00d6, 0x6010, 0x2068, 0x2019, 0x0004, 0x080c,
12917 +       0xc141, 0x00de, 0x003e, 0x080c, 0x7e94, 0x0005, 0xa186, 0x0014,
12918 +       0x0d70, 0x080c, 0x962a, 0x0005, 0xc33d, 0xc33b, 0xc33b, 0xc33b,
12919 +       0xc33b, 0xc33b, 0xc33d, 0x080c, 0x1519, 0x080c, 0x7db1, 0x6003,
12920 +       0x000c, 0x080c, 0x7e94, 0x0005, 0xa182, 0x008c, 0x1220, 0xa182,
12921 +       0x0085, 0x0208, 0x001a, 0x080c, 0x962a, 0x0005, 0xc355, 0xc355,
12922 +       0xc355, 0xc355, 0xc357, 0xc375, 0xc355, 0x080c, 0x1519, 0x00d6,
12923 +       0x2c68, 0x080c, 0x958d, 0x01a0, 0x6003, 0x0001, 0x6007, 0x001e,
12924 +       0x2009, 0xcc8e, 0x210c, 0x6136, 0x2009, 0xcc8f, 0x210c, 0x613a,
12925 +       0x600b, 0xffff, 0x6918, 0x611a, 0x601f, 0x0004, 0x080c, 0x7999,
12926 +       0x2d60, 0x080c, 0x95e3, 0x00de, 0x0005, 0x080c, 0x95e3, 0x0005,
12927 +       0x00e6, 0x6018, 0x2070, 0x7000, 0xd0ec, 0x00ee, 0x0005, 0x6010,
12928 +       0xa08c, 0xf000, 0x0904, 0xc3c3, 0xa080, 0x0013, 0x200c, 0xd1ec,
12929 +       0x05d0, 0x2001, 0xc672, 0x2004, 0xd0ec, 0x05a8, 0x6003, 0x0002,
12930 +       0x6020, 0xc0e5, 0x6022, 0xd1ac, 0x0180, 0x00f6, 0x2c78, 0x080c,
12931 +       0x56bf, 0x00fe, 0x0150, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x2009,
12932 +       0xc672, 0x210c, 0xd1f4, 0x11e8, 0x0080, 0x2009, 0xc672, 0x210c,
12933 +       0xd1f4, 0x0128, 0x6020, 0xc0e4, 0x6022, 0xa006, 0x00a0, 0x2001,
12934 +       0xc8ff, 0x200c, 0x8103, 0xa100, 0x603e, 0x6018, 0xa088, 0x002f,
12935 +       0x2104, 0xa005, 0x0118, 0xa088, 0x0003, 0x0cd0, 0x2c0a, 0x600f,
12936 +       0x0000, 0xa085, 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, 0x6150,
12937 +       0xa2f0, 0x002f, 0x2e04, 0x2060, 0x8cff, 0x0180, 0x84ff, 0x1118,
12938 +       0x6050, 0xa106, 0x1138, 0x600c, 0x2072, 0x080c, 0x7103, 0x080c,
12939 +       0x95e3, 0x0010, 0xacf0, 0x0003, 0x2e64, 0x0c70, 0x00ee, 0x00ce,
12940 +       0x001e, 0x0005, 0x00d6, 0x6018, 0xa0e8, 0x002f, 0x2d04, 0xa005,
12941 +       0x0140, 0xac06, 0x0120, 0x2d04, 0xa0e8, 0x0003, 0x0cb8, 0x600c,
12942 +       0x206a, 0x00de, 0x0005, 0x0026, 0x0036, 0x0156, 0x2011, 0xc628,
12943 +       0x2204, 0xa084, 0x00ff, 0x2019, 0xcc8e, 0x2334, 0xa636, 0x11d8,
12944 +       0x8318, 0x2334, 0x2204, 0xa084, 0xff00, 0xa636, 0x11a0, 0x2011,
12945 +       0xcc90, 0x6018, 0xa098, 0x000a, 0x20a9, 0x0004, 0x080c, 0xa103,
12946 +       0x1150, 0x2011, 0xcc94, 0x6018, 0xa098, 0x0006, 0x20a9, 0x0004,
12947 +       0x080c, 0xa103, 0x1100, 0x015e, 0x003e, 0x002e, 0x0005, 0x00e6,
12948 +       0x2071, 0xc600, 0x080c, 0x4f02, 0x080c, 0x2c62, 0x00ee, 0x0005,
12949 +       0x00d6, 0x080c, 0x15e5, 0x0500, 0x2d10, 0xa290, 0x000d, 0x2013,
12950 +       0x0134, 0x8210, 0x2013, 0x0000, 0x8210, 0x703c, 0x2012, 0x8210,
12951 +       0x7038, 0x2012, 0x8210, 0x2218, 0x7048, 0x2012, 0x8210, 0x704c,
12952 +       0x2012, 0x8210, 0x7050, 0x2012, 0x8210, 0x7054, 0x2012, 0x2300,
12953 +       0x080c, 0x3e8f, 0x080c, 0x580a, 0x00de, 0x0005, 0x00d6, 0x0026,
12954 +       0x080c, 0x1602, 0x090c, 0x1519, 0xad90, 0x000e, 0x20a9, 0x000c,
12955 +       0x22a0, 0xa016, 0x42a4, 0xa186, 0x0046, 0x1118, 0x6837, 0x0136,
12956 +       0x0038, 0x6837, 0x0138, 0xa186, 0x0041, 0x0110, 0x684b, 0x0001,
12957 +       0x7038, 0xa084, 0xff00, 0x7240, 0xa294, 0xff00, 0x8007, 0xa215,
12958 +       0x6a6a, 0xa186, 0x0046, 0x1168, 0x7038, 0xa084, 0x00ff, 0x723c,
12959 +       0xa294, 0xff00, 0xa215, 0x6a6e, 0x723c, 0xa294, 0x00ff, 0x6a72,
12960 +       0x0060, 0x7040, 0xa084, 0x00ff, 0x7244, 0xa294, 0xff00, 0xa215,
12961 +       0x6a6e, 0x7244, 0xa294, 0x00ff, 0x6a72, 0xa186, 0x0046, 0x1118,
12962 +       0xae90, 0x0012, 0x0010, 0xae90, 0x001a, 0x2204, 0x8007, 0x6876,
12963 +       0x8210, 0x2204, 0x8007, 0x687a, 0x8210, 0x2204, 0x8007, 0x687e,
12964 +       0x8210, 0x2204, 0x8007, 0x6882, 0x8210, 0xa186, 0x0046, 0x1118,
12965 +       0xae90, 0x0016, 0x0010, 0xae90, 0x001e, 0x2204, 0x8007, 0x6886,
12966 +       0x8210, 0x2204, 0x8007, 0x688a, 0x8210, 0x2204, 0x8007, 0x688e,
12967 +       0x8210, 0x2204, 0x8007, 0x6892, 0x8210, 0xa186, 0x0046, 0x1118,
12968 +       0xae90, 0x0022, 0x0010, 0xae90, 0x002a, 0x00d6, 0xade8, 0x0025,
12969 +       0x20a9, 0x0008, 0x2204, 0x8007, 0x206a, 0x8210, 0x8d68, 0x1f04,
12970 +       0xc4ca, 0x00de, 0x002e, 0x080c, 0x580a, 0x00de, 0x0005, 0x00e6,
12971 +       0x6018, 0x2070, 0x7000, 0xd0fc, 0x0108, 0x0011, 0x00ee, 0x0005,
12972 +       0x6850, 0xc0e5, 0x6852, 0x0005, 0x00e6, 0x00c6, 0x0076, 0x0066,
12973 +       0x0056, 0x0046, 0x0026, 0x0016, 0x0126, 0x2091, 0x8000, 0x2029,
12974 +       0xc930, 0x252c, 0x2021, 0xc936, 0x2424, 0x2061, 0xce00, 0x2071,
12975 +       0xc600, 0x7648, 0x7068, 0xa606, 0x0578, 0x671c, 0xa786, 0x0001,
12976 +       0x0118, 0xa786, 0x0008, 0x1500, 0x2500, 0xac06, 0x01e8, 0x2400,
12977 +       0xac06, 0x01d0, 0x080c, 0xc1b8, 0x01b8, 0x080c, 0xc1c8, 0x11a0,
12978 +       0x6000, 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1953, 0x001e,
12979 +       0x080c, 0xae7e, 0x1110, 0x080c, 0x2e6c, 0x080c, 0xae8f, 0x1110,
12980 +       0x080c, 0x9c09, 0x080c, 0xae54, 0xace0, 0x0018, 0x2001, 0xc617,
12981 +       0x2004, 0xac02, 0x1208, 0x0858, 0x012e, 0x001e, 0x002e, 0x004e,
12982 +       0x005e, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0006,
12983 +       0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0xc640, 0xd5a4, 0x0118,
12984 +       0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032,
12985 +       0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, 0xa08e, 0x0003, 0x0148,
12986 +       0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, 0x0118, 0x2071, 0xc64a,
12987 +       0x04c9, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, 0x0006,
12988 +       0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0xc640, 0xd5a4, 0x0118,
12989 +       0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032,
12990 +       0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, 0xa08e, 0x0003, 0x0148,
12991 +       0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, 0x0118, 0x2071, 0xc64a,
12992 +       0x0089, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, 0x0006,
12993 +       0x00e6, 0x2091, 0x8000, 0x2071, 0xc642, 0x0021, 0x00ee, 0x000e,
12994 +       0x012e, 0x0005, 0x2e04, 0x8000, 0x2072, 0x1220, 0x8e70, 0x2e04,
12995 +       0x8000, 0x2072, 0x0005, 0x00e6, 0x2071, 0xc640, 0x0c99, 0x00ee,
12996 +       0x0005, 0x00e6, 0x2071, 0xc644, 0x0c69, 0x00ee, 0x0005, 0x0126,
12997 +       0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0xc640, 0x7044, 0x8000,
12998 +       0x7046, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0001, 0x0002, 0x0004,
12999 +       0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400,
13000 +       0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0xb0c4
13001 +};
13002 +#ifdef UNIQUE_FW_NAME
13003 +unsigned short fw2200ip_length01 = 0xb5c6;
13004 +#else
13005 +unsigned short risc_code_length01 = 0xb5c6;
13006 +#endif
13007 +
13008 --- /dev/null   Thu Apr 11 07:25:15 2002
13009 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/ql2300tpx_fw.c      Thu Jul  3 15:34:42 2003
13010 @@ -0,0 +1,6494 @@
13011 +/**************************************************************************
13012 + *                  QLOGIC LINUX SOFTWARE
13013 + *
13014 + * QLogic ISP2x00 device driver for Linux 2.5.x
13015 + * Copyright (C) 2003 Qlogic Corporation
13016 + * (www.qlogic.com)
13017 + *
13018 + * This program is free software; you can redistribute it and/or modify it
13019 + * under the terms of the GNU General Public License as published by the
13020 + * Free Software Foundation; either version 2, or (at your option) any
13021 + * later version.
13022 + *
13023 + * This program is distributed in the hope that it will be useful, but
13024 + * WITHOUT ANY WARRANTY; without even the implied warranty of
13025 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13026 + * General Public License for more details.
13027 + *
13028 + *************************************************************************/
13029 +/*
13030 + *     Firmware Version 3.02.10 (14:20 Apr 17, 2003)
13031 + */
13032 +
13033 +#ifdef UNIQUE_FW_NAME
13034 +unsigned short fw2300tpx_version = 3*1024+2;
13035 +#else
13036 +unsigned short risc_code_version = 3*1024+2;
13037 +#endif
13038 +
13039 +#ifdef UNIQUE_FW_NAME
13040 +unsigned char fw2300tpx_version_str[] = {3, 2,10};
13041 +#else
13042 +unsigned char firmware_version[] = {3, 2,10};
13043 +#endif
13044 +
13045 +#ifdef UNIQUE_FW_NAME
13046 +#define fw2300tpx_VERSION_STRING "3.02.10"
13047 +#else
13048 +#define FW_VERSION_STRING "3.02.10"
13049 +#endif
13050 +
13051 +#ifdef UNIQUE_FW_NAME
13052 +unsigned short fw2300tpx_addr01 = 0x0800 ;
13053 +#else
13054 +unsigned short risc_code_addr01 = 0x0800 ;
13055 +#endif
13056 +
13057 +#ifdef UNIQUE_FW_NAME
13058 +unsigned short fw2300tpx_code01[] = { 
13059 +#else
13060 +unsigned short risc_code01[] = { 
13061 +#endif
13062 +       0x0470, 0x0000, 0x0000, 0xc920, 0x0000, 0x0003, 0x0002, 0x000a,
13063 +       0x0117, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030,
13064 +       0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241,
13065 +       0x5449, 0x4f4e, 0x2049, 0x5350, 0x3233, 0x3030, 0x2046, 0x6972,
13066 +       0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030,
13067 +       0x332e, 0x3032, 0x2e31, 0x3020, 0x2020, 0x2020, 0x2400, 0x20a9,
13068 +       0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2200, 0x20a9, 0x000f,
13069 +       0x2001, 0x0000, 0x400f, 0x2091, 0x2400, 0x20a9, 0x000f, 0x2001,
13070 +       0x0000, 0x400f, 0x2091, 0x2600, 0x20a9, 0x000f, 0x2001, 0x0000,
13071 +       0x400f, 0x2091, 0x2800, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f,
13072 +       0x2091, 0x2a00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091,
13073 +       0x2c00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2e00,
13074 +       0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2000, 0x2001,
13075 +       0x0000, 0x20c1, 0x0004, 0x2001, 0x017f, 0x2003, 0x0000, 0x20c9,
13076 +       0x1bff, 0x2059, 0x0000, 0x2b78, 0x7883, 0x0004, 0x2089, 0x28b1,
13077 +       0x2051, 0x1800, 0x2a70, 0x20e1, 0x0001, 0x20e9, 0x0001, 0x2029,
13078 +       0x4d00, 0x2031, 0xffff, 0x2039, 0x4cd0, 0x2021, 0x0200, 0x20e9,
13079 +       0x0001, 0x20a1, 0x0000, 0x20a9, 0x0800, 0x900e, 0x4104, 0x20e9,
13080 +       0x0001, 0x20a1, 0x1000, 0x900e, 0x2001, 0x0cc0, 0x9084, 0x0fff,
13081 +       0x20a8, 0x4104, 0x2001, 0x0000, 0x9086, 0x0000, 0x0120, 0x21a8,
13082 +       0x4104, 0x8001, 0x1de0, 0x7566, 0x766a, 0x7762, 0x746e, 0x7472,
13083 +       0x00e6, 0x2071, 0x1a8a, 0x2472, 0x00ee, 0x20a1, 0x1cd0, 0x7168,
13084 +       0x810d, 0x810d, 0x810d, 0x810d, 0x918c, 0x000f, 0x2001, 0x0001,
13085 +       0x9112, 0x900e, 0x21a8, 0x4104, 0x8211, 0x1de0, 0x7168, 0x3400,
13086 +       0x8001, 0x9102, 0x0120, 0x0218, 0x20a8, 0x900e, 0x4104, 0x2009,
13087 +       0x1800, 0x810d, 0x810d, 0x810d, 0x810d, 0x810d, 0x918c, 0x001f,
13088 +       0x2001, 0x0001, 0x9112, 0x20e9, 0x0001, 0x20a1, 0x0800, 0x900e,
13089 +       0x20a9, 0x0800, 0x4104, 0x8211, 0x1dd8, 0x080c, 0x0ec6, 0x080c,
13090 +       0x56e7, 0x080c, 0x94ea, 0x080c, 0x107b, 0x080c, 0x1245, 0x080c,
13091 +       0x18ae, 0x080c, 0x0d1d, 0x080c, 0x1000, 0x080c, 0x2f6e, 0x080c,
13092 +       0x6b54, 0x080c, 0x5f51, 0x080c, 0x774d, 0x080c, 0x20b6, 0x080c,
13093 +       0x7a7b, 0x080c, 0x7190, 0x080c, 0x1ef3, 0x080c, 0x2027, 0x080c,
13094 +       0x20ab, 0x2091, 0x3009, 0x7883, 0x0000, 0x1004, 0x091d, 0x7880,
13095 +       0x9086, 0x0002, 0x1190, 0x7883, 0x4000, 0x7837, 0x4000, 0x7833,
13096 +       0x0010, 0x0e04, 0x0911, 0x2091, 0x5000, 0x2091, 0x4080, 0x2001,
13097 +       0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2071, 0x1800, 0x7003,
13098 +       0x0000, 0x2071, 0x1800, 0x7000, 0x908e, 0x0003, 0x1168, 0x080c,
13099 +       0x44bf, 0x080c, 0x2f92, 0x080c, 0x6bc5, 0x080c, 0x63e8, 0x080c,
13100 +       0x7778, 0x080c, 0x2849, 0x0c68, 0x000b, 0x0c88, 0x0940, 0x0941,
13101 +       0x0ab2, 0x093e, 0x0b69, 0x0d14, 0x0d14, 0x0d14, 0x080c, 0x0d84,
13102 +       0x0005, 0x0126, 0x00f6, 0x2091, 0x8000, 0x7000, 0x9086, 0x0001,
13103 +       0x1904, 0x0a90, 0x080c, 0x0e2c, 0x080c, 0x6877, 0x0150, 0x080c,
13104 +       0x689a, 0x1580, 0x2079, 0x0100, 0x7828, 0x9085, 0x1800, 0x782a,
13105 +       0x0448, 0x080c, 0x67be, 0x7000, 0x9086, 0x0001, 0x1904, 0x0a90,
13106 +       0x7090, 0x9086, 0x0028, 0x1904, 0x0a90, 0x2001, 0x0161, 0x2003,
13107 +       0x0001, 0x2079, 0x0100, 0x7827, 0xffff, 0x7a28, 0x9295, 0x5e2f,
13108 +       0x7a2a, 0x2011, 0x6739, 0x080c, 0x781a, 0x2011, 0x672c, 0x080c,
13109 +       0x78e7, 0x2011, 0x554d, 0x080c, 0x781a, 0x2011, 0x8030, 0x901e,
13110 +       0x738e, 0x0460, 0x080c, 0x4e04, 0x2079, 0x0100, 0x7844, 0x9005,
13111 +       0x1904, 0x0a90, 0x2011, 0x554d, 0x080c, 0x781a, 0x2001, 0x0265,
13112 +       0x2001, 0x0205, 0x2003, 0x0000, 0x7840, 0x9084, 0xfffb, 0x7842,
13113 +       0x2001, 0x1973, 0x2004, 0x9005, 0x1140, 0x00c6, 0x2061, 0x0100,
13114 +       0x080c, 0x568f, 0x00ce, 0x0804, 0x0a90, 0x780f, 0x006b, 0x7a28,
13115 +       0x9295, 0x5e2f, 0x7a2a, 0x2011, 0x8010, 0x73d4, 0x2001, 0x1974,
13116 +       0x2003, 0x0001, 0x080c, 0x2718, 0x080c, 0x447f, 0x7240, 0xc284,
13117 +       0x7242, 0x2001, 0x180c, 0x200c, 0xc1ac, 0xc1cc, 0x2102, 0x080c,
13118 +       0x8d36, 0x2011, 0x0004, 0x080c, 0xb0b9, 0x080c, 0x5e30, 0x080c,
13119 +       0x6877, 0x1120, 0x080c, 0x275c, 0x02e0, 0x0400, 0x080c, 0x5696,
13120 +       0x0140, 0x708f, 0x0001, 0x70cf, 0x0000, 0x080c, 0x4fc7, 0x0804,
13121 +       0x0a90, 0x080c, 0x4dea, 0xd094, 0x0188, 0x2011, 0x180c, 0x2204,
13122 +       0xc0cd, 0x2012, 0x080c, 0x4dee, 0xd0d4, 0x1118, 0x080c, 0x275c,
13123 +       0x1270, 0x2011, 0x180c, 0x2204, 0xc0bc, 0x00a8, 0x080c, 0x4dee,
13124 +       0xd0d4, 0x1db8, 0x2011, 0x180c, 0x2204, 0xc0bd, 0x0060, 0x2011,
13125 +       0x180c, 0x2204, 0xc0bd, 0x2012, 0x080c, 0x5f25, 0x1128, 0xd0a4,
13126 +       0x0118, 0x2204, 0xc0fd, 0x2012, 0x080c, 0x5eeb, 0x0120, 0x7a0c,
13127 +       0xc2b4, 0x7a0e, 0x00a8, 0x7077, 0x0000, 0x080c, 0x6877, 0x1130,
13128 +       0x70a8, 0x9005, 0x1168, 0x080c, 0xb4bd, 0x0050, 0x080c, 0xb4bd,
13129 +       0x70d8, 0xd09c, 0x1128, 0x70a8, 0x9005, 0x0110, 0x080c, 0x5677,
13130 +       0x70e3, 0x0000, 0x70df, 0x0000, 0x709f, 0x0000, 0x72d8, 0x080c,
13131 +       0x6877, 0x1170, 0x9016, 0x0016, 0x080c, 0x2515, 0x2019, 0x193c,
13132 +       0x211a, 0x001e, 0x7057, 0xffff, 0x705b, 0x00ef, 0x707b, 0x0000,
13133 +       0x2079, 0x1852, 0x7804, 0xd0ac, 0x0108, 0xc295, 0x72da, 0x080c,
13134 +       0x6877, 0x0118, 0x9296, 0x0004, 0x0548, 0x2011, 0x0001, 0x080c,
13135 +       0xb0b9, 0x70a3, 0x0000, 0x70a7, 0xffff, 0x7003, 0x0002, 0x2079,
13136 +       0x0100, 0x7827, 0x0003, 0x7828, 0x9085, 0x0003, 0x782a, 0x00fe,
13137 +       0x080c, 0x2b1e, 0x2011, 0x0005, 0x080c, 0x8e99, 0x080c, 0x8125,
13138 +       0x080c, 0x6877, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c,
13139 +       0x2515, 0x61e2, 0x001e, 0x00ce, 0x012e, 0x0420, 0x70a3, 0x0000,
13140 +       0x70a7, 0xffff, 0x7003, 0x0002, 0x00f6, 0x2079, 0x0100, 0x7827,
13141 +       0x0003, 0x7828, 0x9085, 0x0003, 0x782a, 0x00fe, 0x2011, 0x0005,
13142 +       0x080c, 0x8e99, 0x080c, 0x8125, 0x080c, 0x6877, 0x0148, 0x00c6,
13143 +       0x2061, 0x0100, 0x0016, 0x080c, 0x2515, 0x61e2, 0x001e, 0x00ce,
13144 +       0x00fe, 0x012e, 0x0005, 0x00c6, 0x080c, 0x6877, 0x1118, 0x20a9,
13145 +       0x0800, 0x0010, 0x20a9, 0x0782, 0x080c, 0x6877, 0x1110, 0x900e,
13146 +       0x0010, 0x2009, 0x007e, 0x080c, 0x2e11, 0x8108, 0x1f04, 0x0aa3,
13147 +       0x7077, 0x0000, 0x7078, 0x9084, 0x00ff, 0x707a, 0x70ab, 0x0000,
13148 +       0x00ce, 0x0005, 0x00b6, 0x0126, 0x2091, 0x8000, 0x7000, 0x9086,
13149 +       0x0002, 0x1904, 0x0b66, 0x70a4, 0x9086, 0xffff, 0x0130, 0x080c,
13150 +       0x2b1e, 0x080c, 0x8125, 0x0804, 0x0b66, 0x70d8, 0xd0ac, 0x1110,
13151 +       0xd09c, 0x0540, 0xd084, 0x0530, 0x0006, 0x2001, 0x0103, 0x2003,
13152 +       0x002b, 0x000e, 0xd08c, 0x01f0, 0x70dc, 0x9086, 0xffff, 0x01b0,
13153 +       0x080c, 0x2c86, 0x080c, 0x8125, 0x70d8, 0xd094, 0x1904, 0x0b66,
13154 +       0x2011, 0x0001, 0x080c, 0xb759, 0x0110, 0x2011, 0x0003, 0x901e,
13155 +       0x080c, 0x2cc0, 0x080c, 0x8125, 0x0804, 0x0b66, 0x70e0, 0x9005,
13156 +       0x1904, 0x0b66, 0x70a0, 0x9005, 0x1904, 0x0b66, 0x70d8, 0xd0a4,
13157 +       0x0118, 0xd0b4, 0x0904, 0x0b66, 0x080c, 0x5eeb, 0x1904, 0x0b66,
13158 +       0x080c, 0x5f3e, 0x1904, 0x0b66, 0x080c, 0x5f25, 0x01c0, 0x0156,
13159 +       0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x5c0d, 0x1118,
13160 +       0xb800, 0xd0ec, 0x1138, 0x001e, 0x8108, 0x1f04, 0x0b0c, 0x00ce,
13161 +       0x015e, 0x0028, 0x001e, 0x00ce, 0x015e, 0x0804, 0x0b66, 0x0006,
13162 +       0x2001, 0x0103, 0x2003, 0x006b, 0x000e, 0x2011, 0x1980, 0x080c,
13163 +       0x0f36, 0x2011, 0x199a, 0x080c, 0x0f36, 0x7030, 0xc08c, 0x7032,
13164 +       0x7003, 0x0003, 0x70a7, 0xffff, 0x080c, 0x0e0e, 0x9006, 0x080c,
13165 +       0x23a6, 0x0036, 0x0046, 0x2019, 0xffff, 0x2021, 0x0006, 0x080c,
13166 +       0x44f9, 0x004e, 0x003e, 0x00f6, 0x2079, 0x0100, 0x080c, 0x689a,
13167 +       0x0150, 0x080c, 0x6877, 0x7828, 0x0118, 0x9084, 0xe1ff, 0x0010,
13168 +       0x9084, 0xffdf, 0x782a, 0x00fe, 0x2001, 0x19b5, 0x2004, 0x9086,
13169 +       0x0005, 0x1120, 0x2011, 0x0000, 0x080c, 0x8e99, 0x2011, 0x0000,
13170 +       0x080c, 0x8ea3, 0x080c, 0x8125, 0x080c, 0x820b, 0x012e, 0x00be,
13171 +       0x0005, 0x0016, 0x0046, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079,
13172 +       0x0100, 0x7904, 0x918c, 0xfffd, 0x7906, 0x2009, 0x00f7, 0x080c,
13173 +       0x5660, 0x7940, 0x918c, 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0110,
13174 +       0x7827, 0x0040, 0xd19c, 0x0110, 0x7827, 0x0008, 0x0006, 0x0036,
13175 +       0x0156, 0x7954, 0xd1ac, 0x1904, 0x0bf6, 0x2001, 0x1974, 0x2004,
13176 +       0x9005, 0x1518, 0x080c, 0x27d7, 0x1148, 0x2001, 0x0001, 0x080c,
13177 +       0x2747, 0x2001, 0x0001, 0x080c, 0x272a, 0x00b8, 0x080c, 0x27df,
13178 +       0x1138, 0x9006, 0x080c, 0x2747, 0x9006, 0x080c, 0x272a, 0x0068,
13179 +       0x080c, 0x27e7, 0x1d50, 0x2001, 0x1965, 0x2004, 0xd0fc, 0x0108,
13180 +       0x0020, 0x080c, 0x2541, 0x0804, 0x0cd6, 0x080c, 0x6888, 0x0148,
13181 +       0x080c, 0x689a, 0x1118, 0x080c, 0x6b4f, 0x0050, 0x080c, 0x687f,
13182 +       0x0dd0, 0x080c, 0x6b4a, 0x080c, 0x6b40, 0x080c, 0x67be, 0x0058,
13183 +       0x080c, 0x6877, 0x0140, 0x2009, 0x00f8, 0x080c, 0x5660, 0x7843,
13184 +       0x0090, 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x1138,
13185 +       0x080c, 0x6877, 0x0138, 0x7824, 0xd0ac, 0x1904, 0x0cdb, 0x1f04,
13186 +       0x0bd5, 0x0070, 0x7824, 0x080c, 0x6891, 0x0118, 0xd0ac, 0x1904,
13187 +       0x0cdb, 0x9084, 0x1800, 0x0d98, 0x7003, 0x0001, 0x0804, 0x0cdb,
13188 +       0x2001, 0x0001, 0x080c, 0x23a6, 0x0804, 0x0cee, 0x2001, 0x1974,
13189 +       0x2004, 0x9005, 0x1518, 0x080c, 0x27d7, 0x1148, 0x2001, 0x0001,
13190 +       0x080c, 0x2747, 0x2001, 0x0001, 0x080c, 0x272a, 0x00b8, 0x080c,
13191 +       0x27df, 0x1138, 0x9006, 0x080c, 0x2747, 0x9006, 0x080c, 0x272a,
13192 +       0x0068, 0x080c, 0x27e7, 0x1d50, 0x2001, 0x1965, 0x2004, 0xd0fc,
13193 +       0x0108, 0x0020, 0x080c, 0x2541, 0x0804, 0x0cd6, 0x7850, 0x9085,
13194 +       0x0040, 0x7852, 0x7938, 0x7850, 0x9084, 0xfbcf, 0x7852, 0x080c,
13195 +       0x27ef, 0x9085, 0x2000, 0x7852, 0x793a, 0x20a9, 0x0046, 0x1d04,
13196 +       0x0c2f, 0x080c, 0x78c7, 0x1f04, 0x0c2f, 0x7850, 0x9085, 0x0400,
13197 +       0x9084, 0xdfbf, 0x7852, 0x793a, 0x080c, 0x6888, 0x0148, 0x080c,
13198 +       0x689a, 0x1118, 0x080c, 0x6b4f, 0x0050, 0x080c, 0x687f, 0x0dd0,
13199 +       0x080c, 0x6b4a, 0x080c, 0x6b40, 0x080c, 0x67be, 0x0020, 0x2009,
13200 +       0x00f8, 0x080c, 0x5660, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x0c55,
13201 +       0x7850, 0x9085, 0x1400, 0x7852, 0x080c, 0x6877, 0x0120, 0x7843,
13202 +       0x0090, 0x7843, 0x0010, 0x2021, 0xe678, 0x2019, 0xea60, 0x080c,
13203 +       0x0d15, 0x7820, 0xd09c, 0x1588, 0x080c, 0x6877, 0x0904, 0x0cbb,
13204 +       0x7824, 0xd0ac, 0x1904, 0x0cdb, 0x080c, 0x689a, 0x1530, 0x0046,
13205 +       0x2021, 0x0320, 0x8421, 0x1df0, 0x004e, 0x7827, 0x1800, 0x080c,
13206 +       0x27ef, 0x7824, 0x9084, 0x1800, 0x1168, 0x9484, 0x0fff, 0x1140,
13207 +       0x2001, 0x180f, 0x2004, 0x9084, 0x9000, 0x0110, 0x080c, 0x0cfc,
13208 +       0x8421, 0x1158, 0x1d04, 0x0c96, 0x080c, 0x78c7, 0x080c, 0x6b4a,
13209 +       0x080c, 0x6b40, 0x7003, 0x0001, 0x04f0, 0x8319, 0x1940, 0x1d04,
13210 +       0x0ca3, 0x080c, 0x78c7, 0x2009, 0x1968, 0x2104, 0x9005, 0x0118,
13211 +       0x8001, 0x200a, 0x1178, 0x200b, 0x000a, 0x7827, 0x0048, 0x20a9,
13212 +       0x0002, 0x080c, 0x27d0, 0x7924, 0x080c, 0x27ef, 0xd19c, 0x0110,
13213 +       0x080c, 0x2718, 0x00d8, 0x080c, 0x6888, 0x1140, 0x94a2, 0x03e8,
13214 +       0x1128, 0x080c, 0x6853, 0x7003, 0x0001, 0x00a8, 0x7827, 0x1800,
13215 +       0x080c, 0x27ef, 0x7824, 0x080c, 0x6891, 0x0110, 0xd0ac, 0x1158,
13216 +       0x9084, 0x1800, 0x0950, 0x7003, 0x0001, 0x0028, 0x2001, 0x0001,
13217 +       0x080c, 0x23a6, 0x0078, 0x2009, 0x180c, 0x210c, 0xd19c, 0x1120,
13218 +       0x7904, 0x918d, 0x0002, 0x7906, 0x7827, 0x0048, 0x7828, 0x9085,
13219 +       0x0028, 0x782a, 0x7850, 0x9085, 0x0400, 0x7852, 0x2001, 0x1974,
13220 +       0x2003, 0x0000, 0x9006, 0x78f2, 0x015e, 0x003e, 0x000e, 0x012e,
13221 +       0x00fe, 0x004e, 0x001e, 0x0005, 0x0006, 0x0016, 0x0036, 0x0046,
13222 +       0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x080c, 0x2f92,
13223 +       0x0061, 0x015e, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x004e,
13224 +       0x003e, 0x001e, 0x000e, 0x0005, 0x0005, 0x080c, 0xb759, 0x0120,
13225 +       0x1d04, 0x0d1c, 0x080c, 0x78c7, 0x0005, 0x2a70, 0x2061, 0x1978,
13226 +       0x2063, 0x0003, 0x6007, 0x0002, 0x600b, 0x000a, 0x600f, 0x0117,
13227 +       0x2001, 0x194b, 0x900e, 0x2102, 0x718e, 0x2001, 0x0100, 0x2004,
13228 +       0x9082, 0x0002, 0x0218, 0x7057, 0xffff, 0x0008, 0x7156, 0x705f,
13229 +       0xffff, 0x7176, 0x717a, 0x080c, 0xb4bd, 0x70ef, 0x00c0, 0x2061,
13230 +       0x193b, 0x6003, 0x0909, 0x6106, 0x600b, 0x8800, 0x600f, 0x0200,
13231 +       0x6013, 0x00ff, 0x6017, 0x000f, 0x611a, 0x601f, 0x07d0, 0x2061,
13232 +       0x1943, 0x6003, 0x8000, 0x6106, 0x610a, 0x600f, 0x0200, 0x6013,
13233 +       0x00ff, 0x6116, 0x601b, 0x0001, 0x611e, 0x2061, 0x1956, 0x6003,
13234 +       0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, 0x2001,
13235 +       0x182a, 0x2102, 0x0005, 0x9016, 0x080c, 0x5c0d, 0x1178, 0xb804,
13236 +       0x90c4, 0x00ff, 0x98c6, 0x0006, 0x0128, 0x90c4, 0xff00, 0x98c6,
13237 +       0x0600, 0x1120, 0x9186, 0x0080, 0x0108, 0x8210, 0x8108, 0x9186,
13238 +       0x0800, 0x1d50, 0x2208, 0x0005, 0x2091, 0x8000, 0x0e04, 0x0d86,
13239 +       0x0006, 0x0016, 0x2001, 0x8002, 0x0006, 0x2079, 0x0000, 0x000e,
13240 +       0x7882, 0x7836, 0x001e, 0x798e, 0x000e, 0x788a, 0x000e, 0x7886,
13241 +       0x3900, 0x789a, 0x7833, 0x0012, 0x2091, 0x5000, 0x0156, 0x00d6,
13242 +       0x0036, 0x0026, 0x2079, 0x0300, 0x2069, 0x1a65, 0x7a18, 0x226a,
13243 +       0x8d68, 0x7a1c, 0x226a, 0x782c, 0x2019, 0x1a72, 0x201a, 0x2019,
13244 +       0x1a75, 0x9016, 0x7808, 0xd09c, 0x0168, 0x7820, 0x201a, 0x8210,
13245 +       0x8318, 0x9386, 0x1a8a, 0x0108, 0x0ca8, 0x7808, 0xd09c, 0x0110,
13246 +       0x2011, 0xdead, 0x2019, 0x1a73, 0x782c, 0x201a, 0x8318, 0x221a,
13247 +       0x7803, 0x0000, 0x2069, 0x1a45, 0x901e, 0x20a9, 0x0020, 0x7b26,
13248 +       0x7a28, 0x226a, 0x8d68, 0x8318, 0x1f04, 0x0dcf, 0x002e, 0x003e,
13249 +       0x00de, 0x015e, 0x2079, 0x1800, 0x7803, 0x0005, 0x2091, 0x4080,
13250 +       0x2001, 0x0089, 0x2004, 0xd084, 0x0180, 0x2001, 0x19e7, 0x2004,
13251 +       0x9005, 0x0128, 0x2001, 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001,
13252 +       0x008a, 0x2003, 0x0002, 0x2003, 0x1001, 0x080c, 0x4df9, 0x1108,
13253 +       0x0011, 0x0cd8, 0x0005, 0x0026, 0x0126, 0x2011, 0x0080, 0x080c,
13254 +       0x0e8d, 0x20a9, 0x0900, 0x080c, 0x0eae, 0x2011, 0x0040, 0x080c,
13255 +       0x0e8d, 0x20a9, 0x0900, 0x080c, 0x0eae, 0x0c78, 0x0026, 0x080c,
13256 +       0x0e9a, 0x1118, 0x2011, 0x0040, 0x0098, 0x2011, 0x010e, 0x2214,
13257 +       0x9294, 0x0007, 0x9296, 0x0007, 0x0118, 0x2011, 0xa880, 0x0010,
13258 +       0x2011, 0x6840, 0xd0e4, 0x70f3, 0x0000, 0x1128, 0x70f3, 0x0fa0,
13259 +       0x080c, 0x0e9f, 0x002e, 0x0005, 0x0026, 0x080c, 0x0e9a, 0x0128,
13260 +       0xd0a4, 0x1138, 0x2011, 0xcdd5, 0x0010, 0x2011, 0x0080, 0x080c,
13261 +       0x0e9f, 0x002e, 0x0005, 0x0026, 0x70f3, 0x0000, 0x080c, 0x0e9a,
13262 +       0x1148, 0x080c, 0x27e7, 0x1118, 0x2011, 0x8484, 0x0058, 0x2011,
13263 +       0x8282, 0x0040, 0x080c, 0x27e7, 0x1118, 0x2011, 0xcdc5, 0x0010,
13264 +       0x2011, 0xcac2, 0x080c, 0x0e9f, 0x002e, 0x0005, 0x00e6, 0x0006,
13265 +       0x2071, 0x1800, 0xd0b4, 0x70ec, 0x1148, 0xc0e4, 0x0080, 0x70ee,
13266 +       0x0026, 0x9094, 0x00c0, 0x0449, 0x002e, 0x0048, 0x0006, 0x3b00,
13267 +       0x9084, 0xff3f, 0x20d8, 0x000e, 0x70f3, 0x0000, 0xc0e5, 0x0079,
13268 +       0x000e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800, 0xd0e4, 0x70ec,
13269 +       0x1110, 0xc0dc, 0x0008, 0xc0dd, 0x0011, 0x00ee, 0x0005, 0x70ee,
13270 +       0x7000, 0x9084, 0x0007, 0x000b, 0x0005, 0x0e55, 0x0e2c, 0x0e2c,
13271 +       0x0e0e, 0x0e3b, 0x0e2c, 0x0e2c, 0x0e3b, 0x0016, 0x3b08, 0x3a00,
13272 +       0x9104, 0x918d, 0x00c0, 0x21d8, 0x9084, 0xff3f, 0x9205, 0x20d0,
13273 +       0x001e, 0x0005, 0x2001, 0x183b, 0x2004, 0xd0dc, 0x0005, 0x9e86,
13274 +       0x1800, 0x190c, 0x0d84, 0x70ec, 0xd0e4, 0x0108, 0xc2e5, 0x72ee,
13275 +       0xd0e4, 0x1118, 0x9294, 0x00c0, 0x0c01, 0x0005, 0x1d04, 0x0eae,
13276 +       0x2091, 0x6000, 0x1f04, 0x0eae, 0x0005, 0x890e, 0x810e, 0x810f,
13277 +       0x9194, 0x003f, 0x918c, 0xffc0, 0x0005, 0x0006, 0x2200, 0x914d,
13278 +       0x894f, 0x894d, 0x894d, 0x000e, 0x000e, 0x0005, 0x01d6, 0x0146,
13279 +       0x0036, 0x0096, 0x2061, 0x1882, 0x600b, 0x0000, 0x600f, 0x0000,
13280 +       0x6003, 0x0000, 0x6007, 0x0000, 0x2009, 0xffc0, 0x2105, 0x0006,
13281 +       0x2001, 0xaaaa, 0x200f, 0x2019, 0x5555, 0x9016, 0x2049, 0x0bff,
13282 +       0xab02, 0xa001, 0xa001, 0xa800, 0x9306, 0x1138, 0x2105, 0x9306,
13283 +       0x0120, 0x8210, 0x99c8, 0x0400, 0x0c98, 0x000e, 0x200f, 0x2001,
13284 +       0x1892, 0x928a, 0x000e, 0x1638, 0x928a, 0x0006, 0x2011, 0x0006,
13285 +       0x1210, 0x2011, 0x0000, 0x2202, 0x9006, 0x2008, 0x82ff, 0x01b0,
13286 +       0x8200, 0x600a, 0x600f, 0xffff, 0x6003, 0x0002, 0x6007, 0x0000,
13287 +       0x0026, 0x2019, 0x0010, 0x9280, 0x0001, 0x20e8, 0x21a0, 0x21a8,
13288 +       0x4104, 0x8319, 0x1de0, 0x8211, 0x1da0, 0x002e, 0x009e, 0x003e,
13289 +       0x014e, 0x01de, 0x0005, 0x2011, 0x000e, 0x08e8, 0x0016, 0x0026,
13290 +       0x0096, 0x3348, 0x080c, 0x0eb5, 0x2100, 0x9300, 0x2098, 0x22e0,
13291 +       0x009e, 0x002e, 0x001e, 0x0036, 0x3518, 0x20a9, 0x0001, 0x4002,
13292 +       0x8007, 0x4004, 0x8319, 0x1dd8, 0x003e, 0x0005, 0x20e9, 0x0001,
13293 +       0x71b0, 0x81ff, 0x11c0, 0x9006, 0x2009, 0x0200, 0x20a9, 0x0002,
13294 +       0x9298, 0x0018, 0x23a0, 0x4001, 0x2009, 0x0700, 0x20a9, 0x0002,
13295 +       0x9298, 0x0008, 0x23a0, 0x4001, 0x7074, 0x8007, 0x7178, 0x810f,
13296 +       0x20a9, 0x0002, 0x4001, 0x9298, 0x000c, 0x23a0, 0x900e, 0x080c,
13297 +       0x0d6b, 0x2001, 0x0000, 0x810f, 0x20a9, 0x0002, 0x4001, 0x0005,
13298 +       0x89ff, 0x0140, 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, 0x0fe0,
13299 +       0x009e, 0x0cb0, 0x0005, 0x00e6, 0x2071, 0x1800, 0x080c, 0x1057,
13300 +       0x090c, 0x0d84, 0x00ee, 0x0005, 0x0086, 0x00e6, 0x0006, 0x0026,
13301 +       0x0036, 0x0126, 0x2091, 0x8000, 0x00c9, 0x2071, 0x1800, 0x73bc,
13302 +       0x702c, 0x9016, 0x9045, 0x0158, 0x8210, 0x9906, 0x090c, 0x0d84,
13303 +       0x2300, 0x9202, 0x0120, 0x1a0c, 0x0d84, 0xa000, 0x0c98, 0x012e,
13304 +       0x003e, 0x002e, 0x000e, 0x00ee, 0x008e, 0x0005, 0x0086, 0x00e6,
13305 +       0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x1904, 0x7010, 0x9005,
13306 +       0x0140, 0x7018, 0x9045, 0x0128, 0x9906, 0x090c, 0x0d84, 0xa000,
13307 +       0x0cc8, 0x012e, 0x000e, 0x00ee, 0x008e, 0x0005, 0x00e6, 0x2071,
13308 +       0x1800, 0x0126, 0x2091, 0x8000, 0x70bc, 0x8001, 0x0270, 0x70be,
13309 +       0x702c, 0x2048, 0x9085, 0x0001, 0xa800, 0x702e, 0xa803, 0x0000,
13310 +       0xa807, 0x0000, 0x012e, 0x00ee, 0x0005, 0x904e, 0x0cd8, 0x00e6,
13311 +       0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x70bc, 0x90ca, 0x0040,
13312 +       0x0268, 0x8001, 0x70be, 0x702c, 0x2048, 0xa800, 0x702e, 0xa803,
13313 +       0x0000, 0xa807, 0x0000, 0x012e, 0x00ee, 0x0005, 0x904e, 0x0cd8,
13314 +       0x00e6, 0x0126, 0x2091, 0x8000, 0x0016, 0x890e, 0x810e, 0x810f,
13315 +       0x9184, 0x003f, 0xa862, 0x9184, 0xffc0, 0xa85e, 0x001e, 0x0020,
13316 +       0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x702c, 0xa802,
13317 +       0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x012e, 0x00ee, 0x0005,
13318 +       0x2071, 0x1800, 0x9026, 0x2009, 0x0000, 0x2049, 0x0400, 0x2900,
13319 +       0x702e, 0x8940, 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001, 0x8420,
13320 +       0x9886, 0x0440, 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90, 0x2071,
13321 +       0x1882, 0x7000, 0x9005, 0x11a0, 0x2001, 0x0534, 0xa802, 0x2048,
13322 +       0x2009, 0x4d00, 0x8940, 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001,
13323 +       0x8420, 0x9886, 0x0800, 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90,
13324 +       0x2071, 0x1882, 0x7104, 0x7200, 0x82ff, 0x01d0, 0x7308, 0x8318,
13325 +       0x831f, 0x831b, 0x831b, 0x7312, 0x8319, 0x2001, 0x0800, 0xa802,
13326 +       0x2048, 0x8900, 0xa802, 0x2040, 0xa95e, 0xaa62, 0x8420, 0x2300,
13327 +       0x9906, 0x0130, 0x2848, 0x9188, 0x0040, 0x9291, 0x0000, 0x0c88,
13328 +       0xa803, 0x0000, 0x2071, 0x1800, 0x74ba, 0x74be, 0x0005, 0x00e6,
13329 +       0x0016, 0x9984, 0xfc00, 0x01e8, 0x908c, 0xf800, 0x1168, 0x9982,
13330 +       0x0400, 0x02b8, 0x9982, 0x0440, 0x0278, 0x9982, 0x0534, 0x0288,
13331 +       0x9982, 0x0800, 0x1270, 0x0040, 0x9982, 0x0800, 0x0250, 0x2071,
13332 +       0x1882, 0x7010, 0x9902, 0x1228, 0x9085, 0x0001, 0x001e, 0x00ee,
13333 +       0x0005, 0x9006, 0x0cd8, 0x00e6, 0x2071, 0x19e6, 0x7007, 0x0000,
13334 +       0x9006, 0x701e, 0x7022, 0x7002, 0x2071, 0x0000, 0x7010, 0x9085,
13335 +       0x8004, 0x7012, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6,
13336 +       0xa06f, 0x0000, 0x2071, 0x19e6, 0x701c, 0x9088, 0x19f0, 0x280a,
13337 +       0x8000, 0x9084, 0x003f, 0x701e, 0x7120, 0x9106, 0x090c, 0x0d84,
13338 +       0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x00a9, 0x00fe,
13339 +       0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, 0x2071,
13340 +       0x19e6, 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x0021,
13341 +       0x00fe, 0x00ee, 0x012e, 0x0005, 0x7004, 0x9086, 0x0000, 0x1110,
13342 +       0x7007, 0x0006, 0x7000, 0x0002, 0x10ce, 0x10cc, 0x10cc, 0x10cc,
13343 +       0x1234, 0x1234, 0x1234, 0x1234, 0x080c, 0x0d84, 0x701c, 0x7120,
13344 +       0x9106, 0x1148, 0x792c, 0x9184, 0x0001, 0x1120, 0xd1fc, 0x1110,
13345 +       0x7007, 0x0000, 0x0005, 0x0096, 0x9180, 0x19f0, 0x2004, 0x700a,
13346 +       0x2048, 0x8108, 0x918c, 0x003f, 0x7122, 0x782b, 0x0026, 0xa88c,
13347 +       0x7802, 0xa890, 0x7806, 0xa894, 0x780a, 0xa898, 0x780e, 0xa878,
13348 +       0x700e, 0xa870, 0x7016, 0xa874, 0x701a, 0xa868, 0x009e, 0xd084,
13349 +       0x0120, 0x7007, 0x0001, 0x0029, 0x0005, 0x7007, 0x0002, 0x00b1,
13350 +       0x0005, 0x0016, 0x0026, 0x710c, 0x2011, 0x0040, 0x9182, 0x0040,
13351 +       0x1210, 0x2110, 0x9006, 0x700e, 0x7212, 0x8203, 0x7812, 0x782b,
13352 +       0x0020, 0x782b, 0x0041, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026,
13353 +       0x0136, 0x0146, 0x0156, 0x7014, 0x20e0, 0x7018, 0x2098, 0x20e9,
13354 +       0x0000, 0x20a1, 0x0088, 0x782b, 0x0026, 0x710c, 0x2011, 0x0040,
13355 +       0x9182, 0x0040, 0x1210, 0x2110, 0x9006, 0x700e, 0x22a8, 0x4006,
13356 +       0x8203, 0x7812, 0x782b, 0x0020, 0x3300, 0x701a, 0x782b, 0x0001,
13357 +       0x015e, 0x014e, 0x013e, 0x002e, 0x001e, 0x0005, 0x2009, 0x19e6,
13358 +       0x2104, 0xc095, 0x200a, 0x080c, 0x10ab, 0x0005, 0x0016, 0x00e6,
13359 +       0x2071, 0x19e6, 0x00f6, 0x2079, 0x0080, 0x792c, 0x782b, 0x0002,
13360 +       0xd1fc, 0x0120, 0x918c, 0x0700, 0x7004, 0x0023, 0x00fe, 0x00ee,
13361 +       0x001e, 0x0005, 0x10bc, 0x1161, 0x1195, 0x0d84, 0x0d84, 0x1240,
13362 +       0x0d84, 0x918c, 0x0700, 0x1550, 0x0136, 0x0146, 0x0156, 0x7014,
13363 +       0x20e8, 0x7018, 0x20a0, 0x20e1, 0x0000, 0x2099, 0x0088, 0x782b,
13364 +       0x0040, 0x7010, 0x20a8, 0x4005, 0x3400, 0x701a, 0x015e, 0x014e,
13365 +       0x013e, 0x700c, 0x9005, 0x0578, 0x7800, 0x7802, 0x7804, 0x7806,
13366 +       0x080c, 0x1101, 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0100,
13367 +       0x009e, 0x7007, 0x0000, 0x080c, 0x10bc, 0x0005, 0x7008, 0x0096,
13368 +       0x2048, 0xa86f, 0x0200, 0x009e, 0x0ca0, 0x918c, 0x0700, 0x1150,
13369 +       0x700c, 0x9005, 0x0180, 0x7800, 0x7802, 0x7804, 0x7806, 0x080c,
13370 +       0x1116, 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0200, 0x009e,
13371 +       0x7007, 0x0000, 0x0080, 0x0096, 0x7008, 0x2048, 0x7800, 0xa88e,
13372 +       0x7804, 0xa892, 0x7808, 0xa896, 0x780c, 0xa89a, 0xa86f, 0x0100,
13373 +       0x009e, 0x7007, 0x0000, 0x0096, 0x00d6, 0x7008, 0x2048, 0x2001,
13374 +       0x18ad, 0x2004, 0x9906, 0x1128, 0xa89c, 0x080f, 0x00de, 0x009e,
13375 +       0x00a0, 0x00de, 0x009e, 0x0096, 0x00d6, 0x7008, 0x2048, 0x0081,
13376 +       0x0150, 0xa89c, 0x0086, 0x2940, 0x080f, 0x008e, 0x00de, 0x009e,
13377 +       0x080c, 0x10ab, 0x0005, 0x00de, 0x009e, 0x080c, 0x10ab, 0x0005,
13378 +       0xa8a8, 0xd08c, 0x0005, 0x0096, 0xa0a0, 0x904d, 0x090c, 0x0d84,
13379 +       0xa06c, 0x908e, 0x0100, 0x0130, 0xa87b, 0x0030, 0xa883, 0x0000,
13380 +       0xa897, 0x4002, 0x080c, 0x619c, 0xa09f, 0x0000, 0xa0a3, 0x0000,
13381 +       0x2848, 0x080c, 0x0fe0, 0x009e, 0x0005, 0x00a6, 0xa0a0, 0x904d,
13382 +       0x090c, 0x0d84, 0xa06c, 0x908e, 0x0100, 0x0128, 0xa87b, 0x0001,
13383 +       0xa883, 0x0000, 0x00c0, 0xa80c, 0x2050, 0xb004, 0x9005, 0x0198,
13384 +       0xa80e, 0x2050, 0x8006, 0x8006, 0x8007, 0x908c, 0x003f, 0x9084,
13385 +       0xffc0, 0x9080, 0x0002, 0xa076, 0xa172, 0xb000, 0xa07a, 0x2810,
13386 +       0x080c, 0x108c, 0x0078, 0xa97c, 0xa894, 0x0016, 0x0006, 0x080c,
13387 +       0x619c, 0x000e, 0x001e, 0xd1f4, 0x0128, 0x00c6, 0x2060, 0x080c,
13388 +       0x9554, 0x00ce, 0x00ae, 0x0005, 0x0126, 0x2091, 0x8000, 0x782b,
13389 +       0x1001, 0x7007, 0x0005, 0x7000, 0xc094, 0x7002, 0x012e, 0x0005,
13390 +       0x7007, 0x0000, 0x080c, 0x10bc, 0x0005, 0x0126, 0x2091, 0x2200,
13391 +       0x2079, 0x0300, 0x2071, 0x1a30, 0x7003, 0x0000, 0x78bf, 0x00f6,
13392 +       0x00c1, 0x7803, 0x0003, 0x780f, 0x0000, 0x20a9, 0x01ec, 0x2061,
13393 +       0xcd39, 0x2c0d, 0x7912, 0xe104, 0x9ce0, 0x0002, 0x7916, 0x1f04,
13394 +       0x1259, 0x7807, 0x0001, 0x7803, 0x0000, 0x7803, 0x0001, 0x012e,
13395 +       0x0005, 0x00c6, 0x7803, 0x0000, 0x7808, 0xd09c, 0x0110, 0x7820,
13396 +       0x0cd8, 0x2001, 0x1a31, 0x2003, 0x0000, 0x78ab, 0x0004, 0x78ac,
13397 +       0xd0ac, 0x1de8, 0x78ab, 0x0002, 0x7807, 0x0001, 0x7827, 0x0030,
13398 +       0x782b, 0x0400, 0x7827, 0x0031, 0x782b, 0x1a45, 0x781f, 0xff00,
13399 +       0x781b, 0xff00, 0x2001, 0x0200, 0x2004, 0xd0dc, 0x0110, 0x781f,
13400 +       0x0303, 0x2061, 0x1a45, 0x602f, 0x1cd0, 0x2001, 0x1818, 0x2004,
13401 +       0x9082, 0x1cd0, 0x6032, 0x603b, 0x1cdd, 0x00ce, 0x0005, 0x0126,
13402 +       0x2091, 0x2200, 0x7808, 0xd09c, 0x0158, 0x7820, 0x908c, 0xf000,
13403 +       0x1588, 0x908a, 0x0021, 0x1a0c, 0x0d84, 0x0043, 0x012e, 0x0005,
13404 +       0x9084, 0x0070, 0x190c, 0x0d84, 0x012e, 0x0005, 0x12d8, 0x12d8,
13405 +       0x12e1, 0x12e6, 0x12ea, 0x12ef, 0x1317, 0x131b, 0x1329, 0x132d,
13406 +       0x12d8, 0x13b6, 0x13ba, 0x141a, 0x12d8, 0x12d8, 0x12d8, 0x12d8,
13407 +       0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8,
13408 +       0x12d8, 0x12f1, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8,
13409 +       0x080c, 0x0d84, 0x2009, 0x0048, 0x2060, 0x080c, 0x95ce, 0x012e,
13410 +       0x0005, 0x7004, 0xc085, 0xc0b5, 0x7006, 0x0005, 0x7004, 0xc085,
13411 +       0x7006, 0x0005, 0x080c, 0x1421, 0x080c, 0x14c5, 0x0005, 0x080c,
13412 +       0x0d84, 0x080c, 0x1421, 0x2060, 0x6014, 0x0096, 0x2048, 0xa83b,
13413 +       0xffff, 0x009e, 0x2009, 0x0048, 0x080c, 0x95ce, 0x2001, 0x015d,
13414 +       0x2003, 0x0000, 0x2009, 0x03e8, 0x8109, 0x0160, 0x2001, 0x0201,
13415 +       0x2004, 0x9005, 0x0dc8, 0x2001, 0x0218, 0x2004, 0xd0ec, 0x1110,
13416 +       0x080c, 0x1426, 0x2001, 0x0307, 0x2003, 0x8000, 0x0005, 0x7004,
13417 +       0xc095, 0x7006, 0x0005, 0x080c, 0x1421, 0x2060, 0x6014, 0x0096,
13418 +       0x2048, 0xa83b, 0xffff, 0x009e, 0x2009, 0x0048, 0x080c, 0x95ce,
13419 +       0x0005, 0x080c, 0x1421, 0x080c, 0x0d84, 0x080c, 0x1421, 0x080c,
13420 +       0x13a1, 0x7827, 0x0018, 0x79ac, 0xd1dc, 0x0540, 0x7827, 0x0015,
13421 +       0x7828, 0x782b, 0x0000, 0x9065, 0x0138, 0x2001, 0x020d, 0x2003,
13422 +       0x0050, 0x2003, 0x0020, 0x0400, 0x7004, 0x9005, 0x1180, 0x78ab,
13423 +       0x0004, 0x7827, 0x0018, 0x782b, 0x0000, 0xd1bc, 0x090c, 0x0d84,
13424 +       0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x0478, 0x78ab,
13425 +       0x0004, 0x7803, 0x0001, 0x080c, 0x13ba, 0x0005, 0x7828, 0x782b,
13426 +       0x0000, 0x9065, 0x090c, 0x0d84, 0x6014, 0x2048, 0x78ab, 0x0004,
13427 +       0x918c, 0x0700, 0x0198, 0x080c, 0x724d, 0x080c, 0x1827, 0x080c,
13428 +       0xb0ad, 0x0158, 0xa9ac, 0xa936, 0xa9b0, 0xa93a, 0xa83f, 0xffff,
13429 +       0xa843, 0xffff, 0xa880, 0xc0bd, 0xa882, 0x0005, 0x6010, 0x00b6,
13430 +       0x2058, 0xb800, 0x00be, 0xd0bc, 0x190c, 0xb456, 0x2029, 0x00c8,
13431 +       0x8529, 0x0128, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x7dbc,
13432 +       0x080c, 0xcce2, 0xd5a4, 0x1118, 0x080c, 0x1426, 0x0005, 0x080c,
13433 +       0x724d, 0x080c, 0x1827, 0x0005, 0x781f, 0x0300, 0x7803, 0x0001,
13434 +       0x0005, 0x0016, 0x0066, 0x0076, 0x00f6, 0x2079, 0x0300, 0x7908,
13435 +       0x918c, 0x0007, 0x9186, 0x0003, 0x0120, 0x2001, 0x0016, 0x080c,
13436 +       0x1492, 0x00fe, 0x007e, 0x006e, 0x001e, 0x0005, 0x7004, 0xc09d,
13437 +       0x7006, 0x0005, 0x7104, 0x9184, 0x0004, 0x190c, 0x0d84, 0xd184,
13438 +       0x1189, 0xd19c, 0x0158, 0xc19c, 0x7106, 0x2001, 0x020d, 0x2003,
13439 +       0x0050, 0x2003, 0x0020, 0x080c, 0x1426, 0x0005, 0x81ff, 0x190c,
13440 +       0x0d84, 0x0005, 0xc184, 0xd1b4, 0xc1b4, 0x7106, 0x0016, 0x00e6,
13441 +       0x15c8, 0x2071, 0x0200, 0x080c, 0x14b9, 0x6014, 0x9005, 0x0590,
13442 +       0x0096, 0x2048, 0xa864, 0x009e, 0x9084, 0x00ff, 0x908e, 0x0029,
13443 +       0x0148, 0x908e, 0x0048, 0x1530, 0x00f6, 0x2c78, 0x080c, 0x150d,
13444 +       0x00fe, 0x00a8, 0x00f6, 0x2c78, 0x080c, 0x163f, 0x00fe, 0x2009,
13445 +       0x01f4, 0x8109, 0x0160, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8,
13446 +       0x2001, 0x0218, 0x2004, 0xd0ec, 0x1110, 0x0401, 0x0040, 0x2001,
13447 +       0x020d, 0x2003, 0x0020, 0x080c, 0x1269, 0x7803, 0x0001, 0x00ee,
13448 +       0x001e, 0x0005, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020,
13449 +       0x0069, 0x0ca8, 0x0031, 0x2060, 0x2009, 0x0053, 0x080c, 0x95ce,
13450 +       0x0005, 0x7808, 0xd09c, 0x0de8, 0x7820, 0x0005, 0x080c, 0x13a1,
13451 +       0x00d6, 0x2069, 0x0200, 0x2009, 0x01f4, 0x8109, 0x0508, 0x6804,
13452 +       0x9005, 0x0dd8, 0x2001, 0x015d, 0x2003, 0x0000, 0x79bc, 0xd1a4,
13453 +       0x1520, 0x79b8, 0x918c, 0x0fff, 0x0178, 0x9182, 0x0841, 0x1260,
13454 +       0x9188, 0x0007, 0x918c, 0x0ff8, 0x810c, 0x810c, 0x810c, 0x04e1,
13455 +       0x6827, 0x0001, 0x8109, 0x1dd8, 0x04b9, 0x6827, 0x0002, 0x04a1,
13456 +       0x6804, 0x9005, 0x1130, 0x682c, 0xd0e4, 0x11e0, 0x6804, 0x9005,
13457 +       0x0de8, 0x79b8, 0xd1ec, 0x1130, 0x08c8, 0x080c, 0x724d, 0x080c,
13458 +       0x1827, 0x0070, 0x7827, 0x0015, 0x782b, 0x0000, 0x2001, 0x020d,
13459 +       0x2003, 0x0020, 0x2001, 0x0307, 0x2003, 0x0300, 0x7803, 0x0001,
13460 +       0x00de, 0x0005, 0x682c, 0x9084, 0x5400, 0x9086, 0x5400, 0x0d50,
13461 +       0x7827, 0x0015, 0x782b, 0x0000, 0x7803, 0x0001, 0x6800, 0x9085,
13462 +       0x1800, 0x6802, 0x00de, 0x0005, 0x6824, 0x9084, 0x0003, 0x1de0,
13463 +       0x0005, 0x2001, 0x0030, 0x2c08, 0x621c, 0x0021, 0x7830, 0x9086,
13464 +       0x0041, 0x0005, 0x00f6, 0x2079, 0x0300, 0x0006, 0x7808, 0xd09c,
13465 +       0x0140, 0x0016, 0x0026, 0x00c6, 0x080c, 0x129f, 0x00ce, 0x002e,
13466 +       0x001e, 0x000e, 0x0006, 0x7832, 0x7936, 0x7a3a, 0x781b, 0x8080,
13467 +       0x2009, 0xff00, 0x8109, 0x0130, 0x7818, 0xd0bc, 0x1dd8, 0x000e,
13468 +       0x00fe, 0x0005, 0x000e, 0x792c, 0x3900, 0x8000, 0x2004, 0x080c,
13469 +       0x0d84, 0x7037, 0x0001, 0x7150, 0x7037, 0x0002, 0x7050, 0x2060,
13470 +       0xd1bc, 0x1110, 0x7054, 0x2060, 0x0005, 0x00e6, 0x0016, 0x2071,
13471 +       0x0200, 0x0c79, 0x7358, 0x745c, 0x6014, 0x905d, 0x0598, 0x2b48,
13472 +       0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x190c, 0xb431,
13473 +       0xab42, 0xac3e, 0x2001, 0x1874, 0x2004, 0xd0b4, 0x1170, 0x601c,
13474 +       0xd0e4, 0x1158, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc,
13475 +       0x1120, 0xa83b, 0x7fff, 0xa837, 0xffff, 0x080c, 0x1cfd, 0x1190,
13476 +       0x080c, 0x168e, 0x2a00, 0xa816, 0x0130, 0x2800, 0xa80e, 0x2c05,
13477 +       0xa80a, 0x2c00, 0xa812, 0x7037, 0x0020, 0x781f, 0x0300, 0x001e,
13478 +       0x00ee, 0x0005, 0x7037, 0x0050, 0x7037, 0x0020, 0x001e, 0x00ee,
13479 +       0x080c, 0x1426, 0x0005, 0x080c, 0x0d84, 0x2ff0, 0x0126, 0x2091,
13480 +       0x2200, 0x3e60, 0x6014, 0x2048, 0x2940, 0x903e, 0x2730, 0xa864,
13481 +       0x2068, 0xa81a, 0x9d84, 0x000f, 0x9088, 0x1cdd, 0x2165, 0x0002,
13482 +       0x1537, 0x1584, 0x1537, 0x1537, 0x1537, 0x1566, 0x1537, 0x153b,
13483 +       0x1530, 0x157b, 0x1537, 0x1537, 0x1537, 0x1537, 0x154f, 0x1545,
13484 +       0xa964, 0x918c, 0x00ff, 0x918e, 0x0048, 0x0904, 0x157b, 0x9085,
13485 +       0x0001, 0x0804, 0x1637, 0xa87c, 0xd0bc, 0x0dc8, 0xa890, 0xa842,
13486 +       0xa88c, 0xa83e, 0xa888, 0x0804, 0x158b, 0xa87c, 0xd0bc, 0x0d78,
13487 +       0xa890, 0xa842, 0xa88c, 0xa83e, 0xa888, 0x0804, 0x15da, 0xa87c,
13488 +       0xd0bc, 0x0d28, 0xa890, 0xa842, 0xa88c, 0xa83e, 0xa804, 0x9045,
13489 +       0x090c, 0x0d84, 0xa164, 0xa91a, 0x91ec, 0x000f, 0x9d80, 0x1cdd,
13490 +       0x2065, 0xa888, 0xd19c, 0x1904, 0x15da, 0x0428, 0xa87c, 0xd0ac,
13491 +       0x0970, 0xa804, 0x9045, 0x090c, 0x0d84, 0xa164, 0xa91a, 0x91ec,
13492 +       0x000f, 0x9d80, 0x1cdd, 0x2065, 0x9006, 0xa842, 0xa83e, 0xd19c,
13493 +       0x1904, 0x15da, 0x0080, 0xa87c, 0xd0ac, 0x0904, 0x1537, 0x9006,
13494 +       0xa842, 0xa83e, 0x0804, 0x15da, 0xa87c, 0xd0ac, 0x0904, 0x1537,
13495 +       0x9006, 0xa842, 0xa83e, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0d84,
13496 +       0x9082, 0x001b, 0x0002, 0x15ae, 0x15ae, 0x15b0, 0x15ae, 0x15ae,
13497 +       0x15ae, 0x15b6, 0x15ae, 0x15ae, 0x15ae, 0x15bc, 0x15ae, 0x15ae,
13498 +       0x15ae, 0x15c2, 0x15ae, 0x15ae, 0x15ae, 0x15c8, 0x15ae, 0x15ae,
13499 +       0x15ae, 0x15ce, 0x15ae, 0x15ae, 0x15ae, 0x15d4, 0x080c, 0x0d84,
13500 +       0xa574, 0xa478, 0xa37c, 0xa280, 0x0804, 0x161f, 0xa584, 0xa488,
13501 +       0xa38c, 0xa290, 0x0804, 0x161f, 0xa594, 0xa498, 0xa39c, 0xa2a0,
13502 +       0x0804, 0x161f, 0xa5a4, 0xa4a8, 0xa3ac, 0xa2b0, 0x0804, 0x161f,
13503 +       0xa5b4, 0xa4b8, 0xa3bc, 0xa2c0, 0x0804, 0x161f, 0xa5c4, 0xa4c8,
13504 +       0xa3cc, 0xa2d0, 0x0804, 0x161f, 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0,
13505 +       0x0804, 0x161f, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d84, 0x9082,
13506 +       0x001b, 0x0002, 0x15fd, 0x15fb, 0x15fb, 0x15fb, 0x15fb, 0x15fb,
13507 +       0x1604, 0x15fb, 0x15fb, 0x15fb, 0x15fb, 0x15fb, 0x160b, 0x15fb,
13508 +       0x15fb, 0x15fb, 0x15fb, 0x15fb, 0x1612, 0x15fb, 0x15fb, 0x15fb,
13509 +       0x15fb, 0x15fb, 0x1619, 0x080c, 0x0d84, 0xa56c, 0xa470, 0xa774,
13510 +       0xa678, 0xa37c, 0xa280, 0x00d8, 0xa584, 0xa488, 0xa78c, 0xa690,
13511 +       0xa394, 0xa298, 0x00a0, 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac,
13512 +       0xa2b0, 0x0068, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8,
13513 +       0x0030, 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, 0xab2e,
13514 +       0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a, 0xa988, 0x8c60, 0x2c1d,
13515 +       0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0x8109, 0xa916, 0x1150, 0x3e60,
13516 +       0x601c, 0xc085, 0x601e, 0xa87c, 0xc0dd, 0xa87e, 0x9006, 0x012e,
13517 +       0x0005, 0x2800, 0xa80e, 0xab0a, 0x2c00, 0xa812, 0x0c80, 0x2ff0,
13518 +       0x0126, 0x2091, 0x2200, 0x3e60, 0x6014, 0x2048, 0x2940, 0xa80e,
13519 +       0x2061, 0x1cd8, 0xa80b, 0x1cd8, 0x2c05, 0xa812, 0xa964, 0xa91a,
13520 +       0xa87c, 0xd0ac, 0x090c, 0x0d84, 0x9006, 0xa842, 0xa83e, 0x2c05,
13521 +       0x908a, 0x0034, 0x1a0c, 0x0d84, 0xadcc, 0xacd0, 0xafd4, 0xaed8,
13522 +       0xabdc, 0xaae0, 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a,
13523 +       0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0xa988, 0x918a, 0x0002, 0xa916,
13524 +       0x1150, 0x3e60, 0x601c, 0xc085, 0x601e, 0xa87c, 0xc0dd, 0xa87e,
13525 +       0x9006, 0x012e, 0x0005, 0xa804, 0x9045, 0x090c, 0x0d84, 0xa80e,
13526 +       0xa064, 0xa81a, 0x9084, 0x000f, 0x9080, 0x1cdd, 0x2015, 0x82ff,
13527 +       0x090c, 0x0d84, 0xaa0a, 0x2205, 0xa812, 0x0c18, 0x903e, 0x2730,
13528 +       0xa880, 0xd0fc, 0x1190, 0x2d00, 0x0002, 0x1783, 0x16e5, 0x16e5,
13529 +       0x1783, 0x1783, 0x177d, 0x1783, 0x16e5, 0x1783, 0x1734, 0x1734,
13530 +       0x1783, 0x1783, 0x1783, 0x177a, 0x1734, 0xc0fc, 0xa882, 0xab2c,
13531 +       0xaa30, 0xad1c, 0xac20, 0xdd9c, 0x0904, 0x1785, 0x2c05, 0x908a,
13532 +       0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x16d1, 0x16cf,
13533 +       0x16cf, 0x16cf, 0x16cf, 0x16cf, 0x16d5, 0x16cf, 0x16cf, 0x16cf,
13534 +       0x16cf, 0x16cf, 0x16d9, 0x16cf, 0x16cf, 0x16cf, 0x16cf, 0x16cf,
13535 +       0x16dd, 0x16cf, 0x16cf, 0x16cf, 0x16cf, 0x16cf, 0x16e1, 0x080c,
13536 +       0x0d84, 0xa774, 0xa678, 0x0804, 0x1785, 0xa78c, 0xa690, 0x0804,
13537 +       0x1785, 0xa7a4, 0xa6a8, 0x0804, 0x1785, 0xa7bc, 0xa6c0, 0x0804,
13538 +       0x1785, 0xa7d4, 0xa6d8, 0x0804, 0x1785, 0x2c05, 0x908a, 0x0036,
13539 +       0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x1708, 0x1708, 0x170a,
13540 +       0x1708, 0x1708, 0x1708, 0x1710, 0x1708, 0x1708, 0x1708, 0x1716,
13541 +       0x1708, 0x1708, 0x1708, 0x171c, 0x1708, 0x1708, 0x1708, 0x1722,
13542 +       0x1708, 0x1708, 0x1708, 0x1728, 0x1708, 0x1708, 0x1708, 0x172e,
13543 +       0x080c, 0x0d84, 0xa574, 0xa478, 0xa37c, 0xa280, 0x0804, 0x1785,
13544 +       0xa584, 0xa488, 0xa38c, 0xa290, 0x0804, 0x1785, 0xa594, 0xa498,
13545 +       0xa39c, 0xa2a0, 0x0804, 0x1785, 0xa5a4, 0xa4a8, 0xa3ac, 0xa2b0,
13546 +       0x0804, 0x1785, 0xa5b4, 0xa4b8, 0xa3bc, 0xa2c0, 0x0804, 0x1785,
13547 +       0xa5c4, 0xa4c8, 0xa3cc, 0xa2d0, 0x0804, 0x1785, 0xa5d4, 0xa4d8,
13548 +       0xa3dc, 0xa2e0, 0x0804, 0x1785, 0x2c05, 0x908a, 0x0034, 0x1a0c,
13549 +       0x0d84, 0x9082, 0x001b, 0x0002, 0x1757, 0x1755, 0x1755, 0x1755,
13550 +       0x1755, 0x1755, 0x175e, 0x1755, 0x1755, 0x1755, 0x1755, 0x1755,
13551 +       0x1765, 0x1755, 0x1755, 0x1755, 0x1755, 0x1755, 0x176c, 0x1755,
13552 +       0x1755, 0x1755, 0x1755, 0x1755, 0x1773, 0x080c, 0x0d84, 0xa56c,
13553 +       0xa470, 0xa774, 0xa678, 0xa37c, 0xa280, 0x0438, 0xa584, 0xa488,
13554 +       0xa78c, 0xa690, 0xa394, 0xa298, 0x0400, 0xa59c, 0xa4a0, 0xa7a4,
13555 +       0xa6a8, 0xa3ac, 0xa2b0, 0x00c8, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0,
13556 +       0xa3c4, 0xa2c8, 0x0090, 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0xa3dc,
13557 +       0xa2e0, 0x0058, 0x9d86, 0x000e, 0x1130, 0x080c, 0x1c9b, 0x1904,
13558 +       0x168e, 0x900e, 0x0050, 0x080c, 0x0d84, 0xab2e, 0xaa32, 0xad1e,
13559 +       0xac22, 0xaf26, 0xae2a, 0x080c, 0x1c9b, 0x0005, 0x6014, 0x2048,
13560 +       0x6118, 0x810c, 0x810c, 0x810c, 0x81ff, 0x1118, 0xa887, 0x0001,
13561 +       0x0008, 0xa986, 0x601b, 0x0002, 0xa974, 0xd1dc, 0x1108, 0x0005,
13562 +       0xa934, 0xa88c, 0x9106, 0x1158, 0xa938, 0xa890, 0x9106, 0x1138,
13563 +       0x601c, 0xc084, 0x601e, 0x2009, 0x0048, 0x0804, 0x95ce, 0x0005,
13564 +       0x0126, 0x00c6, 0x2091, 0x2200, 0x00ce, 0x7908, 0x918c, 0x0007,
13565 +       0x9186, 0x0000, 0x0904, 0x181c, 0x9186, 0x0003, 0x0904, 0x181c,
13566 +       0x6020, 0x6023, 0x0000, 0x0006, 0x2031, 0x0190, 0x00c6, 0x7808,
13567 +       0xd09c, 0x190c, 0x129f, 0x00ce, 0x2001, 0x0038, 0x2c08, 0x621c,
13568 +       0x080c, 0x1492, 0x7930, 0x9186, 0x0040, 0x0904, 0x1818, 0x9186,
13569 +       0x0042, 0x190c, 0x0d84, 0x2001, 0x001e, 0x8001, 0x1df0, 0x8631,
13570 +       0x1d28, 0x080c, 0x1876, 0x0026, 0x0056, 0x2001, 0x00d2, 0x8001,
13571 +       0x1df0, 0x2031, 0x2000, 0x8631, 0x1148, 0x080c, 0x724d, 0x04b9,
13572 +       0x601c, 0xc084, 0x601e, 0x005e, 0x002e, 0x0410, 0x2001, 0x020b,
13573 +       0x2004, 0xd0e4, 0x0d80, 0x2001, 0x015d, 0x2003, 0x0000, 0x78ab,
13574 +       0x0004, 0x2001, 0x0200, 0x200c, 0x918d, 0x1800, 0x2102, 0x080c,
13575 +       0x1269, 0x601c, 0xc084, 0x601e, 0x7803, 0x0000, 0x7803, 0x0001,
13576 +       0x005e, 0x002e, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202,
13577 +       0x000e, 0x6022, 0x012e, 0x0005, 0x601c, 0xc084, 0x601e, 0x7827,
13578 +       0x0015, 0x7828, 0x9c06, 0x1db0, 0x782b, 0x0000, 0x0c98, 0x00f6,
13579 +       0x2079, 0x0300, 0x7803, 0x0000, 0x78ab, 0x0004, 0x00fe, 0x080c,
13580 +       0x6877, 0x11b0, 0x2001, 0x0138, 0x2003, 0x0000, 0x2001, 0x0160,
13581 +       0x2003, 0x0000, 0x2011, 0x012c, 0xa001, 0xa001, 0x8211, 0x1de0,
13582 +       0x0081, 0x0066, 0x2031, 0x0000, 0x080c, 0x691e, 0x006e, 0x0005,
13583 +       0x0469, 0x0039, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202,
13584 +       0x0005, 0x00e6, 0x2071, 0x0200, 0x080c, 0x27fb, 0x2009, 0x003c,
13585 +       0x080c, 0x2014, 0x2001, 0x015d, 0x2003, 0x0000, 0x7000, 0x9084,
13586 +       0x003c, 0x1de0, 0x70a0, 0x70a2, 0x7098, 0x709a, 0x709c, 0x709e,
13587 +       0x2001, 0x020d, 0x2003, 0x0020, 0x00f6, 0x2079, 0x0300, 0x080c,
13588 +       0x1269, 0x7803, 0x0001, 0x00fe, 0x00ee, 0x0005, 0x2001, 0x0138,
13589 +       0x2014, 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, 0x0000,
13590 +       0x080c, 0x6877, 0x1108, 0x0005, 0x2021, 0x0260, 0x2001, 0x0141,
13591 +       0x201c, 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0x939c, 0x0048,
13592 +       0x1160, 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, 0x1d70,
13593 +       0x2001, 0x015d, 0x2003, 0x0000, 0x0005, 0x0046, 0x2021, 0x0019,
13594 +       0x2003, 0x0048, 0xa001, 0xa001, 0x201c, 0x939c, 0x0048, 0x0120,
13595 +       0x8421, 0x1db0, 0x004e, 0x0c60, 0x004e, 0x0c40, 0x0126, 0x2091,
13596 +       0x2400, 0x2071, 0x1a33, 0x2079, 0x0090, 0x012e, 0x0005, 0x9280,
13597 +       0x0005, 0x2004, 0x2048, 0xa97c, 0xd1dc, 0x1904, 0x1932, 0xa964,
13598 +       0x9184, 0x0007, 0x0002, 0x18cb, 0x191d, 0x18d2, 0x18d2, 0x18d2,
13599 +       0x1905, 0x18e5, 0x18d4, 0x2100, 0x9084, 0x00ff, 0x9086, 0x0048,
13600 +       0x0904, 0x191d, 0x080c, 0x0d84, 0xa87c, 0xd0b4, 0x0904, 0x1ae4,
13601 +       0xa890, 0xa842, 0xa83a, 0xa88c, 0xa83e, 0xa836, 0xa8ac, 0xa846,
13602 +       0xa8b0, 0xa84a, 0xa988, 0x0804, 0x1925, 0xa864, 0x9084, 0x00ff,
13603 +       0x9086, 0x001e, 0x1d38, 0xa87c, 0xd0b4, 0x0904, 0x1ae4, 0xa890,
13604 +       0xa842, 0xa83a, 0xa88c, 0xa83e, 0xa836, 0xa8ac, 0xa846, 0xa8b0,
13605 +       0xa84a, 0xa804, 0xa85a, 0x2040, 0xa064, 0x9084, 0x000f, 0x9080,
13606 +       0x1cdd, 0x2005, 0xa812, 0xa988, 0x0448, 0x918c, 0x00ff, 0x9186,
13607 +       0x0015, 0x1540, 0xa87c, 0xd0b4, 0x0904, 0x1ae4, 0xa804, 0xa85a,
13608 +       0x2040, 0xa064, 0x9084, 0x000f, 0x9080, 0x1cdd, 0x2005, 0xa812,
13609 +       0xa988, 0x9006, 0xa842, 0xa83e, 0x0088, 0xa87c, 0xd0b4, 0x0904,
13610 +       0x1ae4, 0xa988, 0x9006, 0xa842, 0xa83e, 0x2900, 0xa85a, 0xa864,
13611 +       0x9084, 0x000f, 0x9080, 0x1cdd, 0x2005, 0xa812, 0xa916, 0xa87c,
13612 +       0xc0dd, 0xa87e, 0x0005, 0x00f6, 0x2079, 0x0090, 0x782c, 0xd0fc,
13613 +       0x190c, 0x1b25, 0x00e6, 0x2071, 0x1a33, 0x7000, 0x9005, 0x1904,
13614 +       0x198c, 0x7206, 0x9280, 0x0005, 0x204c, 0x9280, 0x0004, 0x2004,
13615 +       0x782b, 0x0004, 0x00f6, 0x2079, 0x0200, 0x7803, 0x0040, 0x00fe,
13616 +       0x00b6, 0x2058, 0xb86c, 0x7836, 0xb890, 0x00be, 0x00f6, 0x2079,
13617 +       0x0200, 0x7803, 0x0040, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001,
13618 +       0xa001, 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x00fe, 0xa814,
13619 +       0x2050, 0xa858, 0x2040, 0xa810, 0x2060, 0xa064, 0x90ec, 0x000f,
13620 +       0xa944, 0x791a, 0x7116, 0xa848, 0x781e, 0x701a, 0x9006, 0x700e,
13621 +       0x7012, 0x7004, 0xa940, 0xa838, 0x9106, 0x1188, 0xa93c, 0xa834,
13622 +       0x9106, 0x1168, 0x8aff, 0x01a8, 0x0126, 0x2091, 0x8000, 0x00a1,
13623 +       0x0108, 0x0091, 0x012e, 0x9006, 0x00ee, 0x00fe, 0x0005, 0x0036,
13624 +       0x0046, 0xab38, 0xac34, 0x080c, 0x1cfd, 0x004e, 0x003e, 0x0d50,
13625 +       0x0c98, 0x9085, 0x0001, 0x0c80, 0x0076, 0x0066, 0x0056, 0x0046,
13626 +       0x0036, 0x0026, 0x8aff, 0x0904, 0x1add, 0x700c, 0x7214, 0x923a,
13627 +       0x7010, 0x7218, 0x9203, 0x0a04, 0x1adc, 0x9705, 0x0904, 0x1adc,
13628 +       0x903e, 0x2730, 0xa880, 0xd0fc, 0x1190, 0x2d00, 0x0002, 0x1ac0,
13629 +       0x1a07, 0x1a07, 0x1ac0, 0x1ac0, 0x1aa3, 0x1ac0, 0x1a07, 0x1aa9,
13630 +       0x1a56, 0x1a56, 0x1ac0, 0x1ac0, 0x1ac0, 0x1a9d, 0x1a56, 0xc0fc,
13631 +       0xa882, 0xab2c, 0xaa30, 0xad1c, 0xac20, 0xdd9c, 0x0904, 0x1ac2,
13632 +       0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002,
13633 +       0x19f3, 0x19f1, 0x19f1, 0x19f1, 0x19f1, 0x19f1, 0x19f7, 0x19f1,
13634 +       0x19f1, 0x19f1, 0x19f1, 0x19f1, 0x19fb, 0x19f1, 0x19f1, 0x19f1,
13635 +       0x19f1, 0x19f1, 0x19ff, 0x19f1, 0x19f1, 0x19f1, 0x19f1, 0x19f1,
13636 +       0x1a03, 0x080c, 0x0d84, 0xa774, 0xa678, 0x0804, 0x1ac2, 0xa78c,
13637 +       0xa690, 0x0804, 0x1ac2, 0xa7a4, 0xa6a8, 0x0804, 0x1ac2, 0xa7bc,
13638 +       0xa6c0, 0x0804, 0x1ac2, 0xa7d4, 0xa6d8, 0x0804, 0x1ac2, 0x2c05,
13639 +       0x908a, 0x0036, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x1a2a,
13640 +       0x1a2a, 0x1a2c, 0x1a2a, 0x1a2a, 0x1a2a, 0x1a32, 0x1a2a, 0x1a2a,
13641 +       0x1a2a, 0x1a38, 0x1a2a, 0x1a2a, 0x1a2a, 0x1a3e, 0x1a2a, 0x1a2a,
13642 +       0x1a2a, 0x1a44, 0x1a2a, 0x1a2a, 0x1a2a, 0x1a4a, 0x1a2a, 0x1a2a,
13643 +       0x1a2a, 0x1a50, 0x080c, 0x0d84, 0xa574, 0xa478, 0xa37c, 0xa280,
13644 +       0x0804, 0x1ac2, 0xa584, 0xa488, 0xa38c, 0xa290, 0x0804, 0x1ac2,
13645 +       0xa594, 0xa498, 0xa39c, 0xa2a0, 0x0804, 0x1ac2, 0xa5a4, 0xa4a8,
13646 +       0xa3ac, 0xa2b0, 0x0804, 0x1ac2, 0xa5b4, 0xa4b8, 0xa3bc, 0xa2c0,
13647 +       0x0804, 0x1ac2, 0xa5c4, 0xa4c8, 0xa3cc, 0xa2d0, 0x0804, 0x1ac2,
13648 +       0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0, 0x0804, 0x1ac2, 0x2c05, 0x908a,
13649 +       0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x1a79, 0x1a77,
13650 +       0x1a77, 0x1a77, 0x1a77, 0x1a77, 0x1a81, 0x1a77, 0x1a77, 0x1a77,
13651 +       0x1a77, 0x1a77, 0x1a88, 0x1a77, 0x1a77, 0x1a77, 0x1a77, 0x1a77,
13652 +       0x1a8f, 0x1a77, 0x1a77, 0x1a77, 0x1a77, 0x1a77, 0x1a96, 0x080c,
13653 +       0x0d84, 0xa56c, 0xa470, 0xa774, 0xa678, 0xa37c, 0xa280, 0x0804,
13654 +       0x1ac2, 0xa584, 0xa488, 0xa78c, 0xa690, 0xa394, 0xa298, 0x04d0,
13655 +       0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac, 0xa2b0, 0x0498, 0xa5b4,
13656 +       0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8, 0x0460, 0xa5cc, 0xa4d0,
13657 +       0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, 0x0428, 0xa864, 0x9084, 0x00ff,
13658 +       0x9086, 0x001e, 0x11e8, 0x080c, 0x1c9b, 0x1904, 0x19a2, 0x900e,
13659 +       0x04a0, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0048, 0x190c, 0x0d84,
13660 +       0x00c6, 0x7004, 0x2060, 0x6004, 0x9086, 0x0043, 0x00ce, 0x0904,
13661 +       0x1a56, 0xab9c, 0x9016, 0xad8c, 0xac90, 0xaf94, 0xae98, 0x0010,
13662 +       0x080c, 0x0d84, 0x7b12, 0x7a16, 0x7d02, 0x7c06, 0x7f0a, 0x7e0e,
13663 +       0x782b, 0x0001, 0x7000, 0x8000, 0x7002, 0xa83c, 0x9300, 0xa83e,
13664 +       0xa840, 0x9201, 0xa842, 0x700c, 0x9300, 0x700e, 0x7010, 0x9201,
13665 +       0x7012, 0x080c, 0x1c9b, 0x0008, 0x9006, 0x002e, 0x003e, 0x004e,
13666 +       0x005e, 0x006e, 0x007e, 0x0005, 0x080c, 0x0d84, 0x0026, 0x2001,
13667 +       0x0105, 0x2003, 0x0010, 0x782b, 0x0004, 0x7003, 0x0000, 0x7004,
13668 +       0x2060, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0118, 0xa880, 0xc0bd,
13669 +       0xa882, 0x6020, 0x9086, 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8,
13670 +       0x2001, 0x00fa, 0x8001, 0x1df0, 0x60c8, 0x9206, 0x1dc0, 0x60c4,
13671 +       0xa89a, 0x60c8, 0xa896, 0x7004, 0x2060, 0x00c6, 0x080c, 0xad1e,
13672 +       0x00ce, 0x2001, 0x19c3, 0x2004, 0x9c06, 0x1160, 0x2009, 0x0040,
13673 +       0x080c, 0x2014, 0x080c, 0x901f, 0x2011, 0x0000, 0x080c, 0x8ea3,
13674 +       0x080c, 0x820b, 0x002e, 0x0804, 0x1c4d, 0x0126, 0x2091, 0x2400,
13675 +       0xa858, 0x2040, 0x792c, 0x782b, 0x0002, 0x9184, 0x0700, 0x1904,
13676 +       0x1ae6, 0x7000, 0x0002, 0x1c4d, 0x1b37, 0x1ba0, 0x1c4b, 0x8001,
13677 +       0x7002, 0xd19c, 0x1150, 0x8aff, 0x0590, 0x080c, 0x199c, 0x0904,
13678 +       0x1c4d, 0x080c, 0x199c, 0x0804, 0x1c4d, 0x782b, 0x0004, 0xd194,
13679 +       0x0148, 0xa880, 0xc0fc, 0xa882, 0x8aff, 0x11b8, 0xa87c, 0xc0f5,
13680 +       0xa87e, 0x0098, 0xab3c, 0xaa40, 0x7810, 0xa82e, 0x931a, 0x7814,
13681 +       0xa832, 0x9213, 0x7800, 0xa81e, 0x7804, 0xa822, 0xab3e, 0xaa42,
13682 +       0x080c, 0x1cb3, 0xa880, 0xc0fd, 0xa882, 0x2a00, 0xa816, 0x2800,
13683 +       0xa85a, 0x2c00, 0xa812, 0x7003, 0x0000, 0x0804, 0x1c4d, 0x00f6,
13684 +       0x0026, 0x781c, 0x0006, 0x7818, 0x0006, 0x2079, 0x0100, 0x7a14,
13685 +       0x9284, 0x1984, 0x9085, 0x0012, 0x7816, 0x0036, 0x2019, 0x1000,
13686 +       0x8319, 0x090c, 0x0d84, 0x7820, 0xd0bc, 0x1dd0, 0x003e, 0x79c8,
13687 +       0x000e, 0x9102, 0x001e, 0x0006, 0x0016, 0x79c4, 0x000e, 0x9103,
13688 +       0x78c6, 0x000e, 0x78ca, 0x9284, 0x1984, 0x9085, 0x0012, 0x7816,
13689 +       0x002e, 0x00fe, 0x782b, 0x0008, 0x7003, 0x0000, 0x0804, 0x1c4d,
13690 +       0x8001, 0x7002, 0xd194, 0x0170, 0x782c, 0xd0fc, 0x1904, 0x1b2a,
13691 +       0xd19c, 0x1904, 0x1c49, 0x8aff, 0x0904, 0x1c4d, 0x080c, 0x199c,
13692 +       0x0804, 0x1c4d, 0xab3c, 0xaa40, 0x080c, 0x1cb3, 0xdd9c, 0x1904,
13693 +       0x1c08, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0d84, 0x9082, 0x001b,
13694 +       0x0002, 0x1bdc, 0x1bdc, 0x1bde, 0x1bdc, 0x1bdc, 0x1bdc, 0x1be4,
13695 +       0x1bdc, 0x1bdc, 0x1bdc, 0x1bea, 0x1bdc, 0x1bdc, 0x1bdc, 0x1bf0,
13696 +       0x1bdc, 0x1bdc, 0x1bdc, 0x1bf6, 0x1bdc, 0x1bdc, 0x1bdc, 0x1bfc,
13697 +       0x1bdc, 0x1bdc, 0x1bdc, 0x1c02, 0x080c, 0x0d84, 0xa07c, 0x931a,
13698 +       0xa080, 0x9213, 0x0804, 0x1b54, 0xa08c, 0x931a, 0xa090, 0x9213,
13699 +       0x0804, 0x1b54, 0xa09c, 0x931a, 0xa0a0, 0x9213, 0x0804, 0x1b54,
13700 +       0xa0ac, 0x931a, 0xa0b0, 0x9213, 0x0804, 0x1b54, 0xa0bc, 0x931a,
13701 +       0xa0c0, 0x9213, 0x0804, 0x1b54, 0xa0cc, 0x931a, 0xa0d0, 0x9213,
13702 +       0x0804, 0x1b54, 0xa0dc, 0x931a, 0xa0e0, 0x9213, 0x0804, 0x1b54,
13703 +       0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002,
13704 +       0x1c2b, 0x1c29, 0x1c29, 0x1c29, 0x1c29, 0x1c29, 0x1c31, 0x1c29,
13705 +       0x1c29, 0x1c29, 0x1c29, 0x1c29, 0x1c37, 0x1c29, 0x1c29, 0x1c29,
13706 +       0x1c29, 0x1c29, 0x1c3d, 0x1c29, 0x1c29, 0x1c29, 0x1c29, 0x1c29,
13707 +       0x1c43, 0x080c, 0x0d84, 0xa07c, 0x931a, 0xa080, 0x9213, 0x0804,
13708 +       0x1b54, 0xa094, 0x931a, 0xa098, 0x9213, 0x0804, 0x1b54, 0xa0ac,
13709 +       0x931a, 0xa0b0, 0x9213, 0x0804, 0x1b54, 0xa0c4, 0x931a, 0xa0c8,
13710 +       0x9213, 0x0804, 0x1b54, 0xa0dc, 0x931a, 0xa0e0, 0x9213, 0x0804,
13711 +       0x1b54, 0x0804, 0x1b52, 0x080c, 0x0d84, 0x012e, 0x0005, 0x00f6,
13712 +       0x00e6, 0x2071, 0x1a33, 0x7000, 0x9086, 0x0000, 0x0904, 0x1c98,
13713 +       0x2079, 0x0090, 0x2009, 0x0207, 0x210c, 0xd194, 0x01b8, 0x2009,
13714 +       0x020c, 0x210c, 0x9184, 0x0003, 0x0188, 0x080c, 0xcd2b, 0x2001,
13715 +       0x0133, 0x2004, 0x9005, 0x090c, 0x0d84, 0x0016, 0x2009, 0x0040,
13716 +       0x080c, 0x2014, 0x001e, 0x2001, 0x020c, 0x2102, 0x2009, 0x0206,
13717 +       0x2104, 0x2009, 0x0203, 0x210c, 0x9106, 0x1120, 0x2009, 0x0040,
13718 +       0x080c, 0x2014, 0x782c, 0xd0fc, 0x09a8, 0x080c, 0x1b25, 0x7000,
13719 +       0x9086, 0x0000, 0x1978, 0x782b, 0x0004, 0x782c, 0xd0ac, 0x1de8,
13720 +       0x2009, 0x0040, 0x080c, 0x2014, 0x782b, 0x0002, 0x7003, 0x0000,
13721 +       0x00ee, 0x00fe, 0x0005, 0x8c60, 0x2c05, 0x9005, 0x0110, 0x8a51,
13722 +       0x0005, 0xa004, 0x9005, 0x0168, 0xa85a, 0x2040, 0xa064, 0x9084,
13723 +       0x000f, 0x9080, 0x1cdd, 0x2065, 0x8cff, 0x090c, 0x0d84, 0x8a51,
13724 +       0x0005, 0x2050, 0x0005, 0x8a50, 0x8c61, 0x2c05, 0x9005, 0x1190,
13725 +       0x2800, 0x9906, 0x0120, 0xa000, 0x9005, 0x1108, 0x2900, 0x2040,
13726 +       0xa85a, 0xa064, 0x9084, 0x000f, 0x9080, 0x1ced, 0x2065, 0x8cff,
13727 +       0x090c, 0x0d84, 0x0005, 0x0000, 0x001d, 0x0021, 0x0025, 0x0029,
13728 +       0x002d, 0x0031, 0x0035, 0x0000, 0x001b, 0x0021, 0x0027, 0x002d,
13729 +       0x0033, 0x0000, 0x0000, 0x0023, 0x0000, 0x0000, 0x1cd0, 0x1ccc,
13730 +       0x0000, 0x0000, 0x1cda, 0x0000, 0x1cd0, 0x1cd7, 0x1cd7, 0x1cd4,
13731 +       0x0000, 0x0000, 0x0000, 0x1cda, 0x1cd7, 0x0000, 0x1cd2, 0x1cd2,
13732 +       0x0000, 0x0000, 0x1cda, 0x0000, 0x1cd2, 0x1cd8, 0x1cd8, 0x1cd8,
13733 +       0x0000, 0x0000, 0x0000, 0x1cda, 0x1cd8, 0x00c6, 0x00d6, 0x0086,
13734 +       0xab42, 0xac3e, 0xa888, 0x9055, 0x0904, 0x1ed4, 0x2940, 0xa064,
13735 +       0x90ec, 0x000f, 0x9de0, 0x1cdd, 0x9d86, 0x0007, 0x0130, 0x9d86,
13736 +       0x000e, 0x0118, 0x9d86, 0x000f, 0x1120, 0xa08c, 0x9422, 0xa090,
13737 +       0x931b, 0x2c05, 0x9065, 0x1140, 0x0310, 0x0804, 0x1ed4, 0xa004,
13738 +       0x9045, 0x0904, 0x1ed4, 0x0c18, 0x2c05, 0x9005, 0x0904, 0x1dbc,
13739 +       0xdd9c, 0x1904, 0x1d78, 0x908a, 0x0036, 0x1a0c, 0x0d84, 0x9082,
13740 +       0x001b, 0x0002, 0x1d4d, 0x1d4d, 0x1d4f, 0x1d4d, 0x1d4d, 0x1d4d,
13741 +       0x1d55, 0x1d4d, 0x1d4d, 0x1d4d, 0x1d5b, 0x1d4d, 0x1d4d, 0x1d4d,
13742 +       0x1d61, 0x1d4d, 0x1d4d, 0x1d4d, 0x1d67, 0x1d4d, 0x1d4d, 0x1d4d,
13743 +       0x1d6d, 0x1d4d, 0x1d4d, 0x1d4d, 0x1d73, 0x080c, 0x0d84, 0xa07c,
13744 +       0x9422, 0xa080, 0x931b, 0x0804, 0x1db2, 0xa08c, 0x9422, 0xa090,
13745 +       0x931b, 0x0804, 0x1db2, 0xa09c, 0x9422, 0xa0a0, 0x931b, 0x0804,
13746 +       0x1db2, 0xa0ac, 0x9422, 0xa0b0, 0x931b, 0x0804, 0x1db2, 0xa0bc,
13747 +       0x9422, 0xa0c0, 0x931b, 0x0804, 0x1db2, 0xa0cc, 0x9422, 0xa0d0,
13748 +       0x931b, 0x0804, 0x1db2, 0xa0dc, 0x9422, 0xa0e0, 0x931b, 0x04d0,
13749 +       0x908a, 0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x1d9a,
13750 +       0x1d98, 0x1d98, 0x1d98, 0x1d98, 0x1d98, 0x1d9f, 0x1d98, 0x1d98,
13751 +       0x1d98, 0x1d98, 0x1d98, 0x1da4, 0x1d98, 0x1d98, 0x1d98, 0x1d98,
13752 +       0x1d98, 0x1da9, 0x1d98, 0x1d98, 0x1d98, 0x1d98, 0x1d98, 0x1dae,
13753 +       0x080c, 0x0d84, 0xa07c, 0x9422, 0xa080, 0x931b, 0x0098, 0xa094,
13754 +       0x9422, 0xa098, 0x931b, 0x0070, 0xa0ac, 0x9422, 0xa0b0, 0x931b,
13755 +       0x0048, 0xa0c4, 0x9422, 0xa0c8, 0x931b, 0x0020, 0xa0dc, 0x9422,
13756 +       0xa0e0, 0x931b, 0x0630, 0x2300, 0x9405, 0x0160, 0x8a51, 0x0904,
13757 +       0x1ed4, 0x8c60, 0x0804, 0x1d24, 0xa004, 0x9045, 0x0904, 0x1ed4,
13758 +       0x0804, 0x1d07, 0x8a51, 0x0904, 0x1ed4, 0x8c60, 0x2c05, 0x9005,
13759 +       0x1158, 0xa004, 0x9045, 0x0904, 0x1ed4, 0xa064, 0x90ec, 0x000f,
13760 +       0x9de0, 0x1cdd, 0x2c05, 0x2060, 0xa880, 0xc0fc, 0xa882, 0x0804,
13761 +       0x1ec9, 0x2c05, 0x8422, 0x8420, 0x831a, 0x9399, 0x0000, 0xac2e,
13762 +       0xab32, 0xdd9c, 0x1904, 0x1e66, 0x9082, 0x001b, 0x0002, 0x1e02,
13763 +       0x1e02, 0x1e04, 0x1e02, 0x1e02, 0x1e02, 0x1e12, 0x1e02, 0x1e02,
13764 +       0x1e02, 0x1e20, 0x1e02, 0x1e02, 0x1e02, 0x1e2e, 0x1e02, 0x1e02,
13765 +       0x1e02, 0x1e3c, 0x1e02, 0x1e02, 0x1e02, 0x1e4a, 0x1e02, 0x1e02,
13766 +       0x1e02, 0x1e58, 0x080c, 0x0d84, 0xa17c, 0x2400, 0x9122, 0xa180,
13767 +       0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa074, 0x9420, 0xa078, 0x9319,
13768 +       0x0804, 0x1ec4, 0xa18c, 0x2400, 0x9122, 0xa190, 0x2300, 0x911b,
13769 +       0x0a0c, 0x0d84, 0xa084, 0x9420, 0xa088, 0x9319, 0x0804, 0x1ec4,
13770 +       0xa19c, 0x2400, 0x9122, 0xa1a0, 0x2300, 0x911b, 0x0a0c, 0x0d84,
13771 +       0xa094, 0x9420, 0xa098, 0x9319, 0x0804, 0x1ec4, 0xa1ac, 0x2400,
13772 +       0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa0a4, 0x9420,
13773 +       0xa0a8, 0x9319, 0x0804, 0x1ec4, 0xa1bc, 0x2400, 0x9122, 0xa1c0,
13774 +       0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa0b4, 0x9420, 0xa0b8, 0x9319,
13775 +       0x0804, 0x1ec4, 0xa1cc, 0x2400, 0x9122, 0xa1d0, 0x2300, 0x911b,
13776 +       0x0a0c, 0x0d84, 0xa0c4, 0x9420, 0xa0c8, 0x9319, 0x0804, 0x1ec4,
13777 +       0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, 0x0a0c, 0x0d84,
13778 +       0xa0d4, 0x9420, 0xa0d8, 0x9319, 0x0804, 0x1ec4, 0x9082, 0x001b,
13779 +       0x0002, 0x1e84, 0x1e82, 0x1e82, 0x1e82, 0x1e82, 0x1e82, 0x1e91,
13780 +       0x1e82, 0x1e82, 0x1e82, 0x1e82, 0x1e82, 0x1e9e, 0x1e82, 0x1e82,
13781 +       0x1e82, 0x1e82, 0x1e82, 0x1eab, 0x1e82, 0x1e82, 0x1e82, 0x1e82,
13782 +       0x1e82, 0x1eb8, 0x080c, 0x0d84, 0xa17c, 0x2400, 0x9122, 0xa180,
13783 +       0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa06c, 0x9420, 0xa070, 0x9319,
13784 +       0x0498, 0xa194, 0x2400, 0x9122, 0xa198, 0x2300, 0x911b, 0x0a0c,
13785 +       0x0d84, 0xa084, 0x9420, 0xa088, 0x9319, 0x0430, 0xa1ac, 0x2400,
13786 +       0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa09c, 0x9420,
13787 +       0xa0a0, 0x9319, 0x00c8, 0xa1c4, 0x2400, 0x9122, 0xa1c8, 0x2300,
13788 +       0x911b, 0x0a0c, 0x0d84, 0xa0b4, 0x9420, 0xa0b8, 0x9319, 0x0060,
13789 +       0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, 0x0a0c, 0x0d84,
13790 +       0xa0cc, 0x9420, 0xa0d0, 0x9319, 0xac1e, 0xab22, 0xa880, 0xc0fd,
13791 +       0xa882, 0x2800, 0xa85a, 0x2c00, 0xa812, 0x2a00, 0xa816, 0x000e,
13792 +       0x000e, 0x000e, 0x9006, 0x0028, 0x008e, 0x00de, 0x00ce, 0x9085,
13793 +       0x0001, 0x0005, 0x2001, 0x0005, 0x2004, 0x9084, 0x0007, 0x0002,
13794 +       0x1ef2, 0x1b25, 0x1ef2, 0x1ee8, 0x1eeb, 0x1eee, 0x1eeb, 0x1eee,
13795 +       0x080c, 0x1b25, 0x0005, 0x080c, 0x1146, 0x0005, 0x080c, 0x1b25,
13796 +       0x080c, 0x1146, 0x0005, 0x0126, 0x2091, 0x2600, 0x2079, 0x0200,
13797 +       0x2071, 0x0260, 0x2069, 0x1800, 0x7817, 0x0000, 0x789b, 0x0814,
13798 +       0x78a3, 0x0406, 0x789f, 0x0410, 0x2009, 0x013b, 0x200b, 0x0400,
13799 +       0x781b, 0x0002, 0x783b, 0x001f, 0x7837, 0x0020, 0x7803, 0x1600,
13800 +       0x012e, 0x0005, 0x2091, 0x2600, 0x781c, 0xd0a4, 0x190c, 0x2011,
13801 +       0x7900, 0xd1dc, 0x1118, 0x9084, 0x0006, 0x001a, 0x9084, 0x000e,
13802 +       0x0002, 0x1f39, 0x1f31, 0x71ab, 0x1f31, 0x1f33, 0x1f33, 0x1f33,
13803 +       0x1f33, 0x7191, 0x1f31, 0x1f35, 0x1f31, 0x1f33, 0x1f31, 0x1f33,
13804 +       0x1f31, 0x080c, 0x0d84, 0x0031, 0x0020, 0x080c, 0x7191, 0x080c,
13805 +       0x71ab, 0x0005, 0x0006, 0x0016, 0x0026, 0x080c, 0xcd2b, 0x7930,
13806 +       0x9184, 0x0003, 0x01c0, 0x2001, 0x19c3, 0x2004, 0x9005, 0x0170,
13807 +       0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0d84, 0x00c6, 0x2001,
13808 +       0x19c3, 0x2064, 0x080c, 0xad1e, 0x00ce, 0x00f8, 0x2009, 0x0040,
13809 +       0x080c, 0x2014, 0x00d0, 0x9184, 0x0014, 0x01a0, 0x6a00, 0x9286,
13810 +       0x0003, 0x0160, 0x080c, 0x6877, 0x1138, 0x080c, 0x6b40, 0x080c,
13811 +       0x56d9, 0x080c, 0x67be, 0x0010, 0x080c, 0x55a0, 0x080c, 0x7243,
13812 +       0x0041, 0x0018, 0x9184, 0x9540, 0x1dc8, 0x002e, 0x001e, 0x000e,
13813 +       0x0005, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0x1a30, 0x080c,
13814 +       0x1827, 0x005e, 0x004e, 0x003e, 0x00ee, 0x0005, 0x0126, 0x2091,
13815 +       0x2e00, 0x2071, 0x1800, 0x7128, 0x2001, 0x193e, 0x2102, 0x2001,
13816 +       0x1946, 0x2102, 0x2001, 0x013b, 0x2102, 0x2079, 0x0200, 0x2001,
13817 +       0x0201, 0x789e, 0x78a3, 0x0200, 0x9198, 0x0007, 0x831c, 0x831c,
13818 +       0x831c, 0x9398, 0x0005, 0x2320, 0x9182, 0x0204, 0x1230, 0x2011,
13819 +       0x0008, 0x8423, 0x8423, 0x8423, 0x0488, 0x9182, 0x024c, 0x1240,
13820 +       0x2011, 0x0007, 0x8403, 0x8003, 0x9400, 0x9400, 0x9420, 0x0430,
13821 +       0x9182, 0x02bc, 0x1238, 0x2011, 0x0006, 0x8403, 0x8003, 0x9400,
13822 +       0x9420, 0x00e0, 0x9182, 0x034c, 0x1230, 0x2011, 0x0005, 0x8403,
13823 +       0x8003, 0x9420, 0x0098, 0x9182, 0x042c, 0x1228, 0x2011, 0x0004,
13824 +       0x8423, 0x8423, 0x0058, 0x9182, 0x059c, 0x1228, 0x2011, 0x0003,
13825 +       0x8403, 0x9420, 0x0018, 0x2011, 0x0002, 0x8423, 0x9482, 0x0228,
13826 +       0x8002, 0x8020, 0x8301, 0x9402, 0x0110, 0x0208, 0x8321, 0x8217,
13827 +       0x8203, 0x9405, 0x789a, 0x012e, 0x0005, 0x0006, 0x00d6, 0x2069,
13828 +       0x0200, 0x6814, 0x9084, 0xffc0, 0x910d, 0x6916, 0x00de, 0x000e,
13829 +       0x0005, 0x00d6, 0x2069, 0x0200, 0x9005, 0x6810, 0x0110, 0xc0a5,
13830 +       0x0008, 0xc0a4, 0x6812, 0x00de, 0x0005, 0x0006, 0x00d6, 0x2069,
13831 +       0x0200, 0x6810, 0x9084, 0xfff8, 0x910d, 0x6912, 0x00de, 0x000e,
13832 +       0x0005, 0x7938, 0x080c, 0x0d84, 0x00f6, 0x2079, 0x0200, 0x7902,
13833 +       0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x7902, 0xa001,
13834 +       0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x00fe, 0x0005, 0x0126,
13835 +       0x2091, 0x2800, 0x2061, 0x0100, 0x2071, 0x1800, 0x2009, 0x0000,
13836 +       0x080c, 0x27f5, 0x080c, 0x2718, 0x6054, 0x8004, 0x8004, 0x8004,
13837 +       0x8004, 0x9084, 0x000c, 0x6150, 0x918c, 0xfff3, 0x9105, 0x6052,
13838 +       0x6050, 0x9084, 0xfbff, 0x9085, 0x2000, 0x6052, 0x2009, 0x196a,
13839 +       0x2011, 0x196b, 0x6358, 0x939c, 0x38f0, 0x2320, 0x080c, 0x275c,
13840 +       0x1238, 0x939d, 0x4003, 0x94a5, 0x8603, 0x230a, 0x2412, 0x0030,
13841 +       0x939d, 0x0203, 0x94a5, 0x8603, 0x230a, 0x2412, 0x9006, 0x080c,
13842 +       0x2747, 0x9006, 0x080c, 0x272a, 0x20a9, 0x0012, 0x1d04, 0x2066,
13843 +       0x2091, 0x6000, 0x1f04, 0x2066, 0x602f, 0x0100, 0x602f, 0x0000,
13844 +       0x6050, 0x9085, 0x0400, 0x9084, 0xdfff, 0x6052, 0x6024, 0x6026,
13845 +       0x080c, 0x2436, 0x2009, 0x00ef, 0x6132, 0x6136, 0x080c, 0x2446,
13846 +       0x60e7, 0x0000, 0x61ea, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043,
13847 +       0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x049f, 0x60bb,
13848 +       0x0000, 0x20a9, 0x0018, 0x60bf, 0x0000, 0x1f04, 0x2093, 0x60bb,
13849 +       0x0000, 0x60bf, 0x0108, 0x60bf, 0x0012, 0x60bf, 0x0320, 0x60bf,
13850 +       0x0018, 0x601b, 0x00f0, 0x601f, 0x001e, 0x600f, 0x006b, 0x602b,
13851 +       0x402f, 0x012e, 0x0005, 0x00f6, 0x2079, 0x0140, 0x78c3, 0x0080,
13852 +       0x78c3, 0x0083, 0x78c3, 0x0000, 0x00fe, 0x0005, 0x2001, 0x1834,
13853 +       0x2003, 0x0000, 0x2001, 0x1833, 0x2003, 0x0001, 0x0005, 0x0126,
13854 +       0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x6124, 0x9184, 0x5e2c,
13855 +       0x1118, 0x9184, 0x0007, 0x002a, 0x9195, 0x0004, 0x9284, 0x0007,
13856 +       0x0002, 0x20f3, 0x20d9, 0x20dc, 0x20df, 0x20e4, 0x20e6, 0x20ea,
13857 +       0x20ee, 0x080c, 0x7ab7, 0x00b8, 0x080c, 0x7b8a, 0x00a0, 0x080c,
13858 +       0x7b8a, 0x080c, 0x7ab7, 0x0078, 0x0099, 0x0068, 0x080c, 0x7ab7,
13859 +       0x0079, 0x0048, 0x080c, 0x7b8a, 0x0059, 0x0028, 0x080c, 0x7b8a,
13860 +       0x080c, 0x7ab7, 0x0029, 0x002e, 0x001e, 0x000e, 0x012e, 0x0005,
13861 +       0x00a6, 0x6124, 0x6028, 0xd09c, 0x0118, 0xd19c, 0x1904, 0x232f,
13862 +       0xd1f4, 0x0110, 0x080c, 0x0d84, 0x080c, 0x6877, 0x05a0, 0x7000,
13863 +       0x9086, 0x0003, 0x01f0, 0x6024, 0x9084, 0x1800, 0x01d0, 0x080c,
13864 +       0x689a, 0x0118, 0x080c, 0x6888, 0x11a0, 0x6027, 0x0020, 0x6043,
13865 +       0x0000, 0x709c, 0x9005, 0x1150, 0x709f, 0x0001, 0x00d6, 0x2069,
13866 +       0x0140, 0x080c, 0x68d0, 0x00de, 0x1904, 0x2332, 0x080c, 0x6b4a,
13867 +       0x0428, 0x080c, 0x689a, 0x1590, 0x6024, 0x9084, 0x1800, 0x1108,
13868 +       0x0468, 0x080c, 0x6b4a, 0x080c, 0x6b40, 0x080c, 0x56d9, 0x080c,
13869 +       0x67be, 0x0804, 0x232f, 0xd1ac, 0x1508, 0x6024, 0xd0dc, 0x1170,
13870 +       0xd0e4, 0x1178, 0xd0d4, 0x1190, 0xd0cc, 0x0130, 0x7090, 0x9086,
13871 +       0x0028, 0x1110, 0x080c, 0x6a2d, 0x0804, 0x232f, 0x080c, 0x6b45,
13872 +       0x0048, 0x2001, 0x194c, 0x2003, 0x0002, 0x0020, 0x080c, 0x69a3,
13873 +       0x0804, 0x232f, 0x080c, 0x6ac8, 0x0804, 0x232f, 0xd1ac, 0x0904,
13874 +       0x224f, 0x080c, 0x6877, 0x11c0, 0x6027, 0x0020, 0x0006, 0x0026,
13875 +       0x0036, 0x080c, 0x6891, 0x1158, 0x080c, 0x6b40, 0x080c, 0x56d9,
13876 +       0x080c, 0x67be, 0x003e, 0x002e, 0x000e, 0x00ae, 0x0005, 0x003e,
13877 +       0x002e, 0x000e, 0x080c, 0x6853, 0x0016, 0x0046, 0x00c6, 0x644c,
13878 +       0x9486, 0xf0f0, 0x1138, 0x2061, 0x0100, 0x644a, 0x6043, 0x0090,
13879 +       0x6043, 0x0010, 0x74d6, 0x948c, 0xff00, 0x7034, 0xd084, 0x0178,
13880 +       0x9186, 0xf800, 0x1160, 0x7040, 0xd084, 0x1148, 0xc085, 0x7042,
13881 +       0x0036, 0x2418, 0x2011, 0x8016, 0x080c, 0x447f, 0x003e, 0x080c,
13882 +       0xb752, 0x1904, 0x222c, 0x9196, 0xff00, 0x05a8, 0x7058, 0x9084,
13883 +       0x00ff, 0x810f, 0x81ff, 0x0110, 0x9116, 0x0568, 0x7130, 0xd184,
13884 +       0x1550, 0x080c, 0x2e69, 0x0128, 0xc18d, 0x7132, 0x080c, 0x5f25,
13885 +       0x1510, 0x6240, 0x9294, 0x0010, 0x0130, 0x6248, 0x9294, 0xff00,
13886 +       0x9296, 0xff00, 0x01c0, 0x7030, 0xd08c, 0x0904, 0x222c, 0x7034,
13887 +       0xd08c, 0x1140, 0x2001, 0x180c, 0x200c, 0xd1ac, 0x1904, 0x222c,
13888 +       0xc1ad, 0x2102, 0x0036, 0x73d4, 0x2011, 0x8013, 0x080c, 0x447f,
13889 +       0x003e, 0x0804, 0x222c, 0x7034, 0xd08c, 0x1140, 0x2001, 0x180c,
13890 +       0x200c, 0xd1ac, 0x1904, 0x222c, 0xc1ad, 0x2102, 0x0036, 0x73d4,
13891 +       0x2011, 0x8013, 0x080c, 0x447f, 0x003e, 0x7130, 0xc185, 0x7132,
13892 +       0x2011, 0x1853, 0x220c, 0xd1a4, 0x01f0, 0x0016, 0x2009, 0x0001,
13893 +       0x2011, 0x0100, 0x080c, 0x7a0a, 0x2019, 0x000e, 0x00c6, 0x2061,
13894 +       0x0000, 0x080c, 0xc941, 0x00ce, 0x9484, 0x00ff, 0x9080, 0x2e6e,
13895 +       0x200d, 0x918c, 0xff00, 0x810f, 0x2120, 0x9006, 0x2009, 0x000e,
13896 +       0x080c, 0xc9c5, 0x001e, 0xd1ac, 0x1140, 0x0016, 0x900e, 0x2019,
13897 +       0x0004, 0x080c, 0x2ce5, 0x001e, 0x0078, 0x0156, 0x00b6, 0x20a9,
13898 +       0x007f, 0x900e, 0x080c, 0x5c0d, 0x1110, 0x080c, 0x56f3, 0x8108,
13899 +       0x1f04, 0x2222, 0x00be, 0x015e, 0x00ce, 0x004e, 0x080c, 0x94da,
13900 +       0x60e3, 0x0000, 0x001e, 0x2001, 0x1800, 0x2014, 0x9296, 0x0004,
13901 +       0x1170, 0xd19c, 0x11a0, 0x2011, 0x180c, 0x2214, 0xd29c, 0x1120,
13902 +       0x6204, 0x9295, 0x0002, 0x6206, 0x6228, 0xc29d, 0x622a, 0x2003,
13903 +       0x0001, 0x2001, 0x1824, 0x2003, 0x0000, 0x6027, 0x0020, 0xd194,
13904 +       0x0904, 0x232f, 0x0016, 0x6220, 0xd2b4, 0x0904, 0x22db, 0x080c,
13905 +       0x7893, 0x080c, 0x8b50, 0x6027, 0x0004, 0x00f6, 0x2019, 0x19bd,
13906 +       0x2304, 0x907d, 0x0904, 0x22ac, 0x7804, 0x9086, 0x0032, 0x1904,
13907 +       0x22ac, 0x00d6, 0x00c6, 0x00e6, 0x0096, 0x2069, 0x0140, 0x7814,
13908 +       0x685e, 0x7808, 0x685a, 0x6043, 0x0002, 0x2001, 0x0003, 0x8001,
13909 +       0x1df0, 0x6043, 0x0000, 0x2001, 0x003c, 0x8001, 0x1df0, 0x2001,
13910 +       0x1000, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x2001, 0x001e,
13911 +       0x8001, 0x0240, 0x20a9, 0x0009, 0x080c, 0x27d0, 0x6904, 0xd1dc,
13912 +       0x1140, 0x0cb0, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c,
13913 +       0x28a5, 0x080c, 0x8026, 0x080c, 0x8125, 0x7814, 0x2048, 0xa867,
13914 +       0x0103, 0x2f60, 0x080c, 0x9554, 0x009e, 0x00ee, 0x00ce, 0x00de,
13915 +       0x00fe, 0x001e, 0x00ae, 0x0005, 0x00fe, 0x00d6, 0x2069, 0x0140,
13916 +       0x6804, 0x9084, 0x4000, 0x0138, 0x2001, 0x1000, 0x080c, 0x28a5,
13917 +       0x9006, 0x080c, 0x28a5, 0x00de, 0x00c6, 0x2061, 0x19b4, 0x6028,
13918 +       0x909a, 0x00c8, 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, 0x8b2c,
13919 +       0x0804, 0x232e, 0x2061, 0x0100, 0x62c0, 0x080c, 0x9367, 0x2019,
13920 +       0x19bd, 0x2304, 0x9065, 0x0120, 0x2009, 0x0027, 0x080c, 0x95ce,
13921 +       0x00ce, 0x0804, 0x232e, 0xd2bc, 0x05f0, 0x080c, 0x78a0, 0x6014,
13922 +       0x9084, 0x1984, 0x9085, 0x0010, 0x6016, 0x6027, 0x0004, 0x00d6,
13923 +       0x2069, 0x0140, 0x6804, 0x9084, 0x4000, 0x0138, 0x2001, 0x1000,
13924 +       0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x00de, 0x00c6, 0x2061,
13925 +       0x19b4, 0x6044, 0x909a, 0x00c8, 0x1608, 0x8000, 0x6046, 0x603c,
13926 +       0x00ce, 0x9005, 0x0558, 0x2009, 0x07d0, 0x080c, 0x7898, 0x9080,
13927 +       0x0008, 0x2004, 0x9086, 0x0006, 0x1138, 0x6114, 0x918c, 0x1984,
13928 +       0x918d, 0x0012, 0x6116, 0x00d0, 0x6114, 0x918c, 0x1984, 0x918d,
13929 +       0x0016, 0x6116, 0x0098, 0x6027, 0x0004, 0x0080, 0x0036, 0x2019,
13930 +       0x0001, 0x080c, 0x8dfe, 0x003e, 0x2019, 0x19c3, 0x2304, 0x9065,
13931 +       0x0120, 0x2009, 0x004f, 0x080c, 0x95ce, 0x00ce, 0x001e, 0xd19c,
13932 +       0x0904, 0x23a1, 0x7034, 0xd0ac, 0x1904, 0x2376, 0x0016, 0x0156,
13933 +       0x6027, 0x0008, 0x6050, 0x9085, 0x0040, 0x6052, 0x6050, 0x9084,
13934 +       0xfbcf, 0x6052, 0x080c, 0x27ef, 0x9085, 0x2000, 0x6052, 0x20a9,
13935 +       0x0012, 0x1d04, 0x2349, 0x080c, 0x78c7, 0x1f04, 0x2349, 0x6050,
13936 +       0x9085, 0x0400, 0x9084, 0xdfbf, 0x6052, 0x20a9, 0x0028, 0xa001,
13937 +       0x1f04, 0x2357, 0x6150, 0x9185, 0x1400, 0x6052, 0x20a9, 0x0366,
13938 +       0x1d04, 0x2360, 0x080c, 0x78c7, 0x6020, 0xd09c, 0x1130, 0x015e,
13939 +       0x6152, 0x001e, 0x6027, 0x0008, 0x04a0, 0x080c, 0x27b7, 0x1f04,
13940 +       0x2360, 0x015e, 0x6152, 0x001e, 0x6027, 0x0008, 0x0016, 0x6028,
13941 +       0xc09c, 0x602a, 0x080c, 0x94da, 0x60e3, 0x0000, 0x080c, 0xcd0a,
13942 +       0x080c, 0xcd25, 0x080c, 0x4dee, 0xd0fc, 0x1138, 0x080c, 0xb752,
13943 +       0x1120, 0x9085, 0x0001, 0x080c, 0x68c0, 0x9006, 0x080c, 0x28a5,
13944 +       0x2009, 0x0002, 0x080c, 0x27f5, 0x00e6, 0x2071, 0x1800, 0x7003,
13945 +       0x0004, 0x080c, 0x0e3b, 0x00ee, 0x6027, 0x0008, 0x080c, 0x0b69,
13946 +       0x001e, 0x918c, 0xffd0, 0x6126, 0x00ae, 0x0005, 0x0006, 0x0016,
13947 +       0x0026, 0x0036, 0x00e6, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2071,
13948 +       0x1800, 0x71cc, 0x70ce, 0x9116, 0x0904, 0x23f5, 0x81ff, 0x01a0,
13949 +       0x2009, 0x0000, 0x080c, 0x27f5, 0x2011, 0x8011, 0x2019, 0x010e,
13950 +       0x231c, 0x939e, 0x0007, 0x1118, 0x2019, 0x0001, 0x0010, 0x2019,
13951 +       0x0000, 0x080c, 0x447f, 0x0448, 0x2001, 0x1975, 0x200c, 0x81ff,
13952 +       0x1140, 0x2001, 0x0109, 0x2004, 0xd0b4, 0x0118, 0x2019, 0x0003,
13953 +       0x0008, 0x2118, 0x2011, 0x8012, 0x080c, 0x447f, 0x080c, 0x0e3b,
13954 +       0x080c, 0x4dee, 0xd0fc, 0x1188, 0x080c, 0xb752, 0x1170, 0x00c6,
13955 +       0x080c, 0x2491, 0x080c, 0x8d36, 0x2061, 0x0100, 0x2019, 0x0028,
13956 +       0x2009, 0x0002, 0x080c, 0x2ce5, 0x00ce, 0x012e, 0x00fe, 0x00ee,
13957 +       0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x2028, 0x918c, 0x00ff,
13958 +       0x2130, 0x9094, 0xff00, 0x11f0, 0x2011, 0x1836, 0x2214, 0xd2ac,
13959 +       0x11c8, 0x81ff, 0x01e8, 0x2011, 0x181d, 0x2204, 0x9106, 0x1190,
13960 +       0x2011, 0x181e, 0x2214, 0x9294, 0xff00, 0x9584, 0xff00, 0x9206,
13961 +       0x1148, 0x2011, 0x181e, 0x2214, 0x9294, 0x00ff, 0x9584, 0x00ff,
13962 +       0x9206, 0x1120, 0x2500, 0x080c, 0x745f, 0x0048, 0x9584, 0x00ff,
13963 +       0x9080, 0x2e6e, 0x200d, 0x918c, 0xff00, 0x810f, 0x9006, 0x0005,
13964 +       0x9080, 0x2e6e, 0x200d, 0x918c, 0x00ff, 0x0005, 0x00d6, 0x2069,
13965 +       0x0140, 0x2001, 0x1816, 0x2003, 0x00ef, 0x20a9, 0x0010, 0x9006,
13966 +       0x6852, 0x6856, 0x1f04, 0x2441, 0x00de, 0x0005, 0x0006, 0x00d6,
13967 +       0x0026, 0x2069, 0x0140, 0x2001, 0x1816, 0x2102, 0x8114, 0x8214,
13968 +       0x8214, 0x8214, 0x20a9, 0x0010, 0x6853, 0x0000, 0x9006, 0x82ff,
13969 +       0x1128, 0x9184, 0x000f, 0x9080, 0xd10f, 0x2005, 0x6856, 0x8211,
13970 +       0x1f04, 0x2456, 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, 0x2061,
13971 +       0x1800, 0x6030, 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, 0x00ce,
13972 +       0x0005, 0x0156, 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, 0x0140,
13973 +       0x6980, 0x9116, 0x0180, 0x9112, 0x1230, 0x8212, 0x8210, 0x22a8,
13974 +       0x2001, 0x0402, 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, 0x1f04,
13975 +       0x2486, 0x680f, 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, 0x015e,
13976 +       0x0005, 0x080c, 0x4dea, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0x9006,
13977 +       0x0046, 0x2020, 0x2009, 0x002e, 0x080c, 0xc9c5, 0x004e, 0x0005,
13978 +       0x00f6, 0x0016, 0x0026, 0x2079, 0x0140, 0x78c4, 0xd0dc, 0x0904,
13979 +       0x24fd, 0x080c, 0x275c, 0x0660, 0x9084, 0x0700, 0x908e, 0x0600,
13980 +       0x1120, 0x2011, 0x4000, 0x900e, 0x0458, 0x908e, 0x0500, 0x1120,
13981 +       0x2011, 0x8000, 0x900e, 0x0420, 0x908e, 0x0400, 0x1120, 0x9016,
13982 +       0x2009, 0x0001, 0x00e8, 0x908e, 0x0300, 0x1120, 0x9016, 0x2009,
13983 +       0x0002, 0x00b0, 0x908e, 0x0200, 0x1120, 0x9016, 0x2009, 0x0004,
13984 +       0x0078, 0x908e, 0x0100, 0x1548, 0x9016, 0x2009, 0x0008, 0x0040,
13985 +       0x9084, 0x0700, 0x908e, 0x0300, 0x1500, 0x2011, 0x0030, 0x0058,
13986 +       0x2300, 0x9080, 0x0020, 0x2018, 0x080c, 0x7a4b, 0x928c, 0xff00,
13987 +       0x0110, 0x2011, 0x00ff, 0x2200, 0x8007, 0x9085, 0x004c, 0x78c2,
13988 +       0x2009, 0x0138, 0x220a, 0x080c, 0x6877, 0x1118, 0x2009, 0x193c,
13989 +       0x220a, 0x002e, 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8,
13990 +       0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170,
13991 +       0x200c, 0x8000, 0x2014, 0x9184, 0x0003, 0x0110, 0x080c, 0x0d84,
13992 +       0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x2001, 0x0171, 0x2004,
13993 +       0xd0dc, 0x0168, 0x2001, 0x0170, 0x200c, 0x918c, 0x00ff, 0x918e,
13994 +       0x004c, 0x1128, 0x200c, 0x918c, 0xff00, 0x810f, 0x0005, 0x900e,
13995 +       0x2001, 0x0227, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108,
13996 +       0x2001, 0x0226, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108,
13997 +       0x0005, 0x0018, 0x000c, 0x0018, 0x0020, 0x1000, 0x0800, 0x1000,
13998 +       0x1800, 0x0156, 0x0006, 0x0016, 0x0026, 0x00e6, 0x2001, 0x195d,
13999 +       0x2004, 0x908a, 0x0007, 0x1a0c, 0x0d84, 0x0033, 0x00ee, 0x002e,
14000 +       0x001e, 0x000e, 0x015e, 0x0005, 0x255b, 0x2579, 0x259d, 0x259f,
14001 +       0x25c8, 0x25ca, 0x25cc, 0x2001, 0x0001, 0x080c, 0x23a6, 0x080c,
14002 +       0x27b2, 0x2001, 0x195f, 0x2003, 0x0000, 0x7828, 0x9084, 0xe1d7,
14003 +       0x782a, 0x9006, 0x20a9, 0x0009, 0x080c, 0x2770, 0x2001, 0x195d,
14004 +       0x2003, 0x0006, 0x2009, 0x001e, 0x2011, 0x25cd, 0x080c, 0x78a5,
14005 +       0x0005, 0x2009, 0x1962, 0x200b, 0x0000, 0x2001, 0x1967, 0x2003,
14006 +       0x0036, 0x2001, 0x1966, 0x2003, 0x002a, 0x2001, 0x195f, 0x2003,
14007 +       0x0001, 0x9006, 0x080c, 0x272a, 0x2001, 0xffff, 0x20a9, 0x0009,
14008 +       0x080c, 0x2770, 0x2001, 0x195d, 0x2003, 0x0006, 0x2009, 0x001e,
14009 +       0x2011, 0x25cd, 0x080c, 0x78a5, 0x0005, 0x080c, 0x0d84, 0x2001,
14010 +       0x1967, 0x2003, 0x0036, 0x2001, 0x195f, 0x2003, 0x0003, 0x7a38,
14011 +       0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001,
14012 +       0x0001, 0x080c, 0x272a, 0x2001, 0x1963, 0x2003, 0x0000, 0x2001,
14013 +       0xffff, 0x20a9, 0x0009, 0x080c, 0x2770, 0x2001, 0x195d, 0x2003,
14014 +       0x0006, 0x2009, 0x001e, 0x2011, 0x25cd, 0x080c, 0x78a5, 0x0005,
14015 +       0x080c, 0x0d84, 0x080c, 0x0d84, 0x0005, 0x0006, 0x0016, 0x0026,
14016 +       0x00e6, 0x00f6, 0x0156, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100,
14017 +       0x2001, 0x195f, 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0d84, 0x0043,
14018 +       0x012e, 0x015e, 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, 0x0005,
14019 +       0x25ef, 0x260f, 0x264f, 0x267f, 0x26a3, 0x26b3, 0x26b5, 0x080c,
14020 +       0x2764, 0x11b0, 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, 0x1965,
14021 +       0x2104, 0x7a38, 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0xc08d,
14022 +       0x0008, 0xc085, 0x200a, 0x2001, 0x195d, 0x2003, 0x0001, 0x0030,
14023 +       0x080c, 0x26d9, 0x2001, 0xffff, 0x080c, 0x256a, 0x0005, 0x080c,
14024 +       0x26b7, 0x05e0, 0x2009, 0x1966, 0x2104, 0x8001, 0x200a, 0x080c,
14025 +       0x2764, 0x1178, 0x7850, 0x9084, 0xefff, 0x7852, 0x7a38, 0x9294,
14026 +       0x0005, 0x9296, 0x0005, 0x0518, 0x2009, 0x1965, 0x2104, 0xc085,
14027 +       0x200a, 0x2009, 0x1962, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005,
14028 +       0x0118, 0x080c, 0x26bf, 0x00c0, 0x200b, 0x0000, 0x7a38, 0x9294,
14029 +       0x0006, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001,
14030 +       0x080c, 0x2747, 0x2001, 0x195f, 0x2003, 0x0002, 0x0028, 0x2001,
14031 +       0x195d, 0x2003, 0x0003, 0x0010, 0x080c, 0x258c, 0x0005, 0x080c,
14032 +       0x26b7, 0x0560, 0x2009, 0x1966, 0x2104, 0x8001, 0x200a, 0x080c,
14033 +       0x2764, 0x1168, 0x7850, 0x9084, 0xefff, 0x7852, 0x2001, 0x195d,
14034 +       0x2003, 0x0003, 0x2001, 0x195e, 0x2003, 0x0000, 0x00b8, 0x2009,
14035 +       0x1966, 0x2104, 0x9005, 0x1118, 0x080c, 0x26fc, 0x0010, 0x080c,
14036 +       0x26cc, 0x080c, 0x26bf, 0x2009, 0x1962, 0x200b, 0x0000, 0x2001,
14037 +       0x195f, 0x2003, 0x0001, 0x080c, 0x258c, 0x0000, 0x0005, 0x04b9,
14038 +       0x0508, 0x080c, 0x2764, 0x11b8, 0x7850, 0x9084, 0xefff, 0x7852,
14039 +       0x2009, 0x1963, 0x2104, 0x8000, 0x200a, 0x9086, 0x0007, 0x0108,
14040 +       0x0078, 0x2001, 0x1968, 0x2003, 0x000a, 0x2009, 0x1965, 0x2104,
14041 +       0xc0fd, 0x200a, 0x0038, 0x0419, 0x2001, 0x195f, 0x2003, 0x0004,
14042 +       0x080c, 0x25b7, 0x0005, 0x0099, 0x0168, 0x080c, 0x2764, 0x1138,
14043 +       0x7850, 0x9084, 0xefff, 0x7852, 0x080c, 0x25a3, 0x0018, 0x0079,
14044 +       0x080c, 0x25b7, 0x0005, 0x080c, 0x0d84, 0x080c, 0x0d84, 0x2009,
14045 +       0x1967, 0x2104, 0x8001, 0x200a, 0x090c, 0x2718, 0x0005, 0x7a38,
14046 +       0x9294, 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001,
14047 +       0x0001, 0x080c, 0x2747, 0x0005, 0x7a38, 0x9294, 0x0006, 0x9296,
14048 +       0x0006, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, 0x272a,
14049 +       0x0005, 0x2009, 0x1962, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005,
14050 +       0x0108, 0x0068, 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, 0x9296,
14051 +       0x0006, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x04d9, 0x7a38,
14052 +       0x9294, 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001,
14053 +       0x0001, 0x080c, 0x2747, 0x0005, 0x0086, 0x2001, 0x1965, 0x2004,
14054 +       0x9084, 0x7fff, 0x090c, 0x0d84, 0x2009, 0x1964, 0x2144, 0x8846,
14055 +       0x280a, 0x9844, 0x0dd8, 0xd08c, 0x1120, 0xd084, 0x1120, 0x080c,
14056 +       0x0d84, 0x9006, 0x0010, 0x2001, 0x0001, 0x00a1, 0x008e, 0x0005,
14057 +       0x0006, 0x0156, 0x2001, 0x195d, 0x20a9, 0x0009, 0x2003, 0x0000,
14058 +       0x8000, 0x1f04, 0x271e, 0x2001, 0x1964, 0x2003, 0x8000, 0x015e,
14059 +       0x000e, 0x0005, 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, 0x0158,
14060 +       0x7838, 0x9084, 0xfff9, 0x9085, 0x0004, 0x783a, 0x2009, 0x196a,
14061 +       0x210c, 0x795a, 0x0050, 0x7838, 0x9084, 0xfffb, 0x9085, 0x0006,
14062 +       0x783a, 0x2009, 0x196b, 0x210c, 0x795a, 0x00fe, 0x0005, 0x00f6,
14063 +       0x2079, 0x0100, 0x9085, 0x0000, 0x0138, 0x7838, 0x9084, 0xfffa,
14064 +       0x9085, 0x0004, 0x783a, 0x0030, 0x7838, 0x9084, 0xfffb, 0x9085,
14065 +       0x0005, 0x783a, 0x00fe, 0x0005, 0x0006, 0x2001, 0x0100, 0x2004,
14066 +       0x9082, 0x0007, 0x000e, 0x0005, 0x0156, 0x20a9, 0x0064, 0x7820,
14067 +       0x080c, 0x27ef, 0xd09c, 0x1110, 0x1f04, 0x2767, 0x015e, 0x0005,
14068 +       0x0126, 0x0016, 0x0006, 0x2091, 0x8000, 0x7850, 0x9085, 0x0040,
14069 +       0x7852, 0x7850, 0x9084, 0xfbcf, 0x7852, 0x080c, 0x27ef, 0x9085,
14070 +       0x2000, 0x7852, 0x000e, 0x2008, 0x9186, 0x0000, 0x1118, 0x783b,
14071 +       0x0007, 0x0090, 0x9186, 0x0001, 0x1118, 0x783b, 0x0006, 0x0060,
14072 +       0x9186, 0x0002, 0x1118, 0x783b, 0x0005, 0x0030, 0x9186, 0x0003,
14073 +       0x1118, 0x783b, 0x0004, 0x0000, 0x0006, 0x1d04, 0x279d, 0x080c,
14074 +       0x78c7, 0x1f04, 0x279d, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfbf,
14075 +       0x7852, 0x080c, 0x27ef, 0x9085, 0x1000, 0x7852, 0x000e, 0x001e,
14076 +       0x012e, 0x0005, 0x7850, 0x9084, 0xffcf, 0x7852, 0x0005, 0x0006,
14077 +       0x0156, 0x00f6, 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd0ac,
14078 +       0x1130, 0x7820, 0xd0e4, 0x1140, 0x1f04, 0x27c1, 0x0028, 0x7854,
14079 +       0xd08c, 0x1110, 0x1f04, 0x27c7, 0x00fe, 0x015e, 0x000e, 0x0005,
14080 +       0x1d04, 0x27d0, 0x080c, 0x78c7, 0x1f04, 0x27d0, 0x0005, 0x0006,
14081 +       0x2001, 0x1969, 0x2004, 0x9086, 0x0000, 0x000e, 0x0005, 0x0006,
14082 +       0x2001, 0x1969, 0x2004, 0x9086, 0x0001, 0x000e, 0x0005, 0x0006,
14083 +       0x2001, 0x1969, 0x2004, 0x9086, 0x0002, 0x000e, 0x0005, 0xa001,
14084 +       0xa001, 0xa001, 0xa001, 0xa001, 0x0005, 0x0006, 0x2001, 0x1975,
14085 +       0x2102, 0x000e, 0x0005, 0x2009, 0x0171, 0x2104, 0xd0dc, 0x0140,
14086 +       0x2009, 0x0170, 0x2104, 0x200b, 0x0080, 0xa001, 0xa001, 0x200a,
14087 +       0x0005, 0x0036, 0x0046, 0x2001, 0x0141, 0x200c, 0x918c, 0xff00,
14088 +       0x9186, 0x2000, 0x0118, 0x9186, 0x0100, 0x1580, 0x2009, 0x017f,
14089 +       0x200b, 0x00a2, 0x2019, 0x0160, 0x2324, 0x2011, 0x0003, 0x2009,
14090 +       0x0169, 0x2104, 0xa001, 0x210c, 0x910e, 0x1dc8, 0x9084, 0x0007,
14091 +       0x9086, 0x0003, 0x11b8, 0x2304, 0x9402, 0x02a0, 0x1d68, 0x8211,
14092 +       0x1d70, 0x84ff, 0x0170, 0x2001, 0x0141, 0x200c, 0x918c, 0xff00,
14093 +       0x9186, 0x0100, 0x0130, 0x2009, 0x180c, 0x2104, 0xc0dd, 0x200a,
14094 +       0x0008, 0x0419, 0x2001, 0x017f, 0x2003, 0x0000, 0x004e, 0x003e,
14095 +       0x0005, 0x2001, 0x180c, 0x2004, 0xd0dc, 0x01b0, 0x2001, 0x0160,
14096 +       0x2004, 0x9005, 0x0140, 0x2001, 0x0141, 0x2004, 0x9084, 0xff00,
14097 +       0x9086, 0x0100, 0x1148, 0x0126, 0x2091, 0x8000, 0x0016, 0x0026,
14098 +       0x0021, 0x002e, 0x001e, 0x012e, 0x0005, 0x00c6, 0x2061, 0x0100,
14099 +       0x6014, 0x0006, 0x2001, 0x0161, 0x2003, 0x0000, 0x6017, 0x0018,
14100 +       0xa001, 0xa001, 0x602f, 0x0008, 0x6104, 0x918e, 0x0010, 0x6106,
14101 +       0x918e, 0x0010, 0x6106, 0x6017, 0x0040, 0x2001, 0x1000, 0x0429,
14102 +       0x9006, 0x0419, 0x001e, 0x9184, 0x0003, 0x01c0, 0x0036, 0x2019,
14103 +       0x0141, 0x2304, 0x9084, 0xff00, 0x9086, 0x0800, 0x1dd0, 0x919c,
14104 +       0xffe4, 0x9184, 0x0001, 0x0118, 0x9385, 0x0009, 0x6016, 0x9184,
14105 +       0x0002, 0x0118, 0x9385, 0x0012, 0x6016, 0x003e, 0x2001, 0x180c,
14106 +       0x200c, 0xc1dc, 0x2102, 0x00ce, 0x0005, 0x0016, 0x0026, 0x2009,
14107 +       0x0140, 0x2114, 0x9294, 0x0001, 0x9215, 0x220a, 0x002e, 0x001e,
14108 +       0x0005, 0x2b1d, 0x2b1d, 0x2941, 0x2941, 0x294d, 0x294d, 0x2959,
14109 +       0x2959, 0x2967, 0x2967, 0x2973, 0x2973, 0x2981, 0x2981, 0x298f,
14110 +       0x298f, 0x29a1, 0x29a1, 0x29ad, 0x29ad, 0x29bb, 0x29bb, 0x29d9,
14111 +       0x29d9, 0x29f9, 0x29f9, 0x29c9, 0x29c9, 0x29e9, 0x29e9, 0x2a07,
14112 +       0x2a07, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14113 +       0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14114 +       0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14115 +       0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14116 +       0x299f, 0x2a19, 0x2a19, 0x2a25, 0x2a25, 0x2a33, 0x2a33, 0x2a41,
14117 +       0x2a41, 0x2a51, 0x2a51, 0x2a5f, 0x2a5f, 0x2a6f, 0x2a6f, 0x2a7f,
14118 +       0x2a7f, 0x2a91, 0x2a91, 0x2a9f, 0x2a9f, 0x2aaf, 0x2aaf, 0x2ad1,
14119 +       0x2ad1, 0x2af3, 0x2af3, 0x2abf, 0x2abf, 0x2ae2, 0x2ae2, 0x2b02,
14120 +       0x2b02, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14121 +       0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14122 +       0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14123 +       0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14124 +       0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14125 +       0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14126 +       0x299f, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14127 +       0x0156, 0x080c, 0x20bf, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126,
14128 +       0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1eda, 0x0804,
14129 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14130 +       0x0156, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x0804, 0x2b15, 0x0106,
14131 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14132 +       0x1f12, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6,
14133 +       0x0136, 0x0146, 0x0156, 0x080c, 0x20bf, 0x080c, 0x1f12, 0x0804,
14134 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14135 +       0x0156, 0x080c, 0x1eda, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14136 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14137 +       0x1eda, 0x080c, 0x20bf, 0x080c, 0x1f12, 0x0804, 0x2b15, 0xa001,
14138 +       0x0cf0, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14139 +       0x0156, 0x080c, 0x129f, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126,
14140 +       0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x20bf, 0x080c,
14141 +       0x129f, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6,
14142 +       0x0136, 0x0146, 0x0156, 0x080c, 0x1eda, 0x080c, 0x129f, 0x0804,
14143 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14144 +       0x0156, 0x080c, 0x20bf, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804,
14145 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14146 +       0x0156, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x080c, 0x129f, 0x0804,
14147 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14148 +       0x0156, 0x080c, 0x1eda, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804,
14149 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14150 +       0x0156, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14151 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14152 +       0x1eda, 0x080c, 0x20bf, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804,
14153 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14154 +       0x0156, 0x080c, 0x2500, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126,
14155 +       0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2500, 0x080c,
14156 +       0x20bf, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6,
14157 +       0x0136, 0x0146, 0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x0804,
14158 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14159 +       0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x0804,
14160 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14161 +       0x0156, 0x080c, 0x2500, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14162 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14163 +       0x2500, 0x080c, 0x20bf, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14164 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14165 +       0x2500, 0x080c, 0x1eda, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14166 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14167 +       0x2500, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x080c, 0x1f12, 0x0804,
14168 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14169 +       0x0156, 0x080c, 0x2500, 0x080c, 0x129f, 0x0804, 0x2b15, 0x0106,
14170 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14171 +       0x2500, 0x080c, 0x20bf, 0x080c, 0x129f, 0x0804, 0x2b15, 0x0106,
14172 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14173 +       0x2500, 0x080c, 0x1eda, 0x080c, 0x129f, 0x0804, 0x2b15, 0x0106,
14174 +       0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14175 +       0x2500, 0x080c, 0x20bf, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804,
14176 +       0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14177 +       0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x080c,
14178 +       0x129f, 0x0498, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136,
14179 +       0x0146, 0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x080c, 0x129f,
14180 +       0x080c, 0x1f12, 0x0410, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6,
14181 +       0x0136, 0x0146, 0x0156, 0x080c, 0x2500, 0x080c, 0x129f, 0x080c,
14182 +       0x1f12, 0x0098, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136,
14183 +       0x0146, 0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x080c, 0x20bf,
14184 +       0x080c, 0x129f, 0x080c, 0x1f12, 0x0000, 0x015e, 0x014e, 0x013e,
14185 +       0x01de, 0x01ce, 0x012e, 0x000e, 0x010e, 0x000d, 0x00b6, 0x00c6,
14186 +       0x0026, 0x0046, 0x9026, 0x080c, 0x5eeb, 0x1904, 0x2c03, 0x72d8,
14187 +       0x2001, 0x194b, 0x2004, 0x9005, 0x1110, 0xd29c, 0x0148, 0xd284,
14188 +       0x1138, 0xd2bc, 0x1904, 0x2c03, 0x080c, 0x2c08, 0x0804, 0x2c03,
14189 +       0xd2cc, 0x1904, 0x2c03, 0x080c, 0x6877, 0x1120, 0x70a7, 0xffff,
14190 +       0x0804, 0x2c03, 0xd294, 0x0120, 0x70a7, 0xffff, 0x0804, 0x2c03,
14191 +       0x080c, 0x2e64, 0x0140, 0x080c, 0xb759, 0x1904, 0x2ba4, 0x70a7,
14192 +       0xffff, 0x0804, 0x2c03, 0x2001, 0x1816, 0x203c, 0x728c, 0xd284,
14193 +       0x0904, 0x2ba4, 0xd28c, 0x1904, 0x2ba4, 0x0036, 0x73a4, 0x938e,
14194 +       0xffff, 0x1110, 0x2019, 0x0001, 0x8314, 0x92e0, 0x1c80, 0x2c04,
14195 +       0x938c, 0x0001, 0x0120, 0x9084, 0xff00, 0x8007, 0x0010, 0x9084,
14196 +       0x00ff, 0x970e, 0x0540, 0x908e, 0x0000, 0x0528, 0x908e, 0x00ff,
14197 +       0x1150, 0x7230, 0xd284, 0x1518, 0x728c, 0xc28d, 0x728e, 0x70a7,
14198 +       0xffff, 0x003e, 0x0408, 0x900e, 0x080c, 0x23fd, 0x080c, 0x5bb0,
14199 +       0x11a0, 0x080c, 0x5f2d, 0x1150, 0x7030, 0xd08c, 0x0118, 0xb800,
14200 +       0xd0bc, 0x0120, 0x080c, 0x2c1f, 0x0140, 0x0028, 0x080c, 0x2d5b,
14201 +       0x080c, 0x2c4b, 0x0110, 0x8318, 0x0838, 0x73a6, 0x0010, 0x70a7,
14202 +       0xffff, 0x003e, 0x0804, 0x2c03, 0x9780, 0x2e6e, 0x203d, 0x97bc,
14203 +       0xff00, 0x873f, 0x2041, 0x007e, 0x70a4, 0x9096, 0xffff, 0x1118,
14204 +       0x900e, 0x28a8, 0x0050, 0x9812, 0x0220, 0x2008, 0x9802, 0x20a8,
14205 +       0x0020, 0x70a7, 0xffff, 0x0804, 0x2c03, 0x2700, 0x0156, 0x0016,
14206 +       0x9106, 0x05b0, 0xc484, 0x080c, 0x5c0d, 0x0138, 0x080c, 0xb759,
14207 +       0x1578, 0x080c, 0x5bb0, 0x15a0, 0x0008, 0xc485, 0x080c, 0x5f2d,
14208 +       0x1130, 0x7030, 0xd08c, 0x01f8, 0xb800, 0xd0bc, 0x11e0, 0x728c,
14209 +       0xd28c, 0x0180, 0x080c, 0x5f2d, 0x9082, 0x0006, 0x02c8, 0xd484,
14210 +       0x1118, 0x080c, 0x5bd1, 0x0028, 0x080c, 0x2de6, 0x0188, 0x080c,
14211 +       0x2e11, 0x0070, 0x080c, 0x2d5b, 0x080c, 0xb759, 0x1148, 0x080c,
14212 +       0x2c4b, 0x0170, 0x0028, 0x080c, 0x2de6, 0x0110, 0x0441, 0x0140,
14213 +       0x001e, 0x8108, 0x015e, 0x1f04, 0x2bbd, 0x70a7, 0xffff, 0x0018,
14214 +       0x001e, 0x015e, 0x71a6, 0x004e, 0x002e, 0x00ce, 0x00be, 0x0005,
14215 +       0x00c6, 0x0016, 0x70a7, 0x0001, 0x2009, 0x007e, 0x080c, 0x5bb0,
14216 +       0x1158, 0xb813, 0x00ff, 0xb817, 0xfffe, 0x080c, 0x2d5b, 0x0499,
14217 +       0x0118, 0x70d8, 0xc0bd, 0x70da, 0x001e, 0x00ce, 0x0005, 0x0016,
14218 +       0x0076, 0x00d6, 0x00c6, 0x2001, 0x1857, 0x2004, 0x9084, 0x00ff,
14219 +       0xb842, 0x080c, 0x95a1, 0x01d0, 0x2b00, 0x6012, 0x080c, 0xb4e6,
14220 +       0x6023, 0x0001, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0000, 0x080c,
14221 +       0x5b61, 0x0126, 0x2091, 0x8000, 0x70a0, 0x8000, 0x70a2, 0x012e,
14222 +       0x2009, 0x0004, 0x080c, 0x95ce, 0x9085, 0x0001, 0x00ce, 0x00de,
14223 +       0x007e, 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2001,
14224 +       0x1857, 0x2004, 0x9084, 0x00ff, 0xb842, 0x080c, 0x95a1, 0x0548,
14225 +       0x2b00, 0x6012, 0xb800, 0xc0c4, 0xb802, 0xb8a0, 0x9086, 0x007e,
14226 +       0x0140, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1110, 0x080c,
14227 +       0x2d1a, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x9006, 0x080c, 0x5b4d,
14228 +       0x2001, 0x0002, 0x080c, 0x5b61, 0x0126, 0x2091, 0x8000, 0x70a0,
14229 +       0x8000, 0x70a2, 0x012e, 0x2009, 0x0002, 0x080c, 0x95ce, 0x9085,
14230 +       0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00b6, 0x00c6,
14231 +       0x0026, 0x2009, 0x0080, 0x080c, 0x5bb0, 0x1140, 0xb813, 0x00ff,
14232 +       0xb817, 0xfffc, 0x0039, 0x0110, 0x70df, 0xffff, 0x002e, 0x00ce,
14233 +       0x00be, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x080c, 0x94fe,
14234 +       0x01d0, 0x2b00, 0x6012, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x9006,
14235 +       0x080c, 0x5b4d, 0x2001, 0x0002, 0x080c, 0x5b61, 0x0126, 0x2091,
14236 +       0x8000, 0x70e0, 0x8000, 0x70e2, 0x012e, 0x2009, 0x0002, 0x080c,
14237 +       0x95ce, 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005,
14238 +       0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, 0x080c,
14239 +       0x5bb0, 0x11b8, 0xb813, 0x00ff, 0xb817, 0xfffd, 0xb8bf, 0x0004,
14240 +       0x080c, 0x94fe, 0x0170, 0x2b00, 0x6012, 0x6316, 0x6023, 0x0001,
14241 +       0x620a, 0x080c, 0xb4e6, 0x2009, 0x0022, 0x080c, 0x95ce, 0x9085,
14242 +       0x0001, 0x012e, 0x00de, 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0066,
14243 +       0x0036, 0x0026, 0x00b6, 0x21f0, 0x080c, 0x7d60, 0x080c, 0x7cef,
14244 +       0x080c, 0x93ac, 0x080c, 0xa3ab, 0x3e08, 0x2130, 0x81ff, 0x0120,
14245 +       0x20a9, 0x007e, 0x900e, 0x0018, 0x20a9, 0x007f, 0x900e, 0x0016,
14246 +       0x080c, 0x5c0d, 0x1140, 0x9686, 0x0002, 0x1118, 0xb800, 0xd0bc,
14247 +       0x1110, 0x080c, 0x56f3, 0x001e, 0x8108, 0x1f04, 0x2cff, 0x86ff,
14248 +       0x1110, 0x080c, 0x2e3e, 0x00be, 0x002e, 0x003e, 0x006e, 0x00ce,
14249 +       0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x00b6,
14250 +       0x6210, 0x2258, 0xbaa0, 0x0026, 0x2019, 0x0029, 0x080c, 0x7d55,
14251 +       0x0076, 0x2039, 0x0000, 0x080c, 0x7c4d, 0x2c08, 0x080c, 0xc73e,
14252 +       0x007e, 0x001e, 0xba10, 0xbb14, 0x080c, 0x56f3, 0xba12, 0xbb16,
14253 +       0x00be, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6,
14254 +       0x0006, 0x00b6, 0x6010, 0x2058, 0xb8a0, 0x00be, 0x9086, 0x0080,
14255 +       0x0150, 0x2071, 0x1800, 0x70a0, 0x9005, 0x0110, 0x8001, 0x70a2,
14256 +       0x000e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x70e0, 0x9005, 0x0dc0,
14257 +       0x8001, 0x70e2, 0x0ca8, 0xb800, 0xc08c, 0xb802, 0x0005, 0x00f6,
14258 +       0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x0156, 0x2178, 0x81ff,
14259 +       0x1118, 0x20a9, 0x0001, 0x0088, 0x080c, 0x4dea, 0xd0c4, 0x0150,
14260 +       0xd0a4, 0x0140, 0x9006, 0x0046, 0x2020, 0x2009, 0x002d, 0x080c,
14261 +       0xc9c5, 0x004e, 0x20a9, 0x0800, 0x9016, 0x0026, 0x928e, 0x007e,
14262 +       0x0904, 0x2dc7, 0x928e, 0x007f, 0x0904, 0x2dc7, 0x928e, 0x0080,
14263 +       0x05f0, 0x9288, 0x1000, 0x210c, 0x81ff, 0x05c8, 0x8fff, 0x1148,
14264 +       0x2001, 0x195b, 0x0006, 0x2003, 0x0001, 0x04e9, 0x000e, 0x2003,
14265 +       0x0000, 0x00b6, 0x00c6, 0x2158, 0x2001, 0x0001, 0x080c, 0x5ef7,
14266 +       0x00ce, 0x00be, 0x2019, 0x0029, 0x080c, 0x7d55, 0x0076, 0x2039,
14267 +       0x0000, 0x080c, 0x7c4d, 0x00b6, 0x00c6, 0x0026, 0x2158, 0xba04,
14268 +       0x9294, 0x00ff, 0x9286, 0x0006, 0x1118, 0xb807, 0x0404, 0x0028,
14269 +       0x2001, 0x0004, 0x8007, 0x9215, 0xba06, 0x002e, 0x00ce, 0x00be,
14270 +       0x0016, 0x2c08, 0x080c, 0xc73e, 0x001e, 0x007e, 0x2160, 0x002e,
14271 +       0x8210, 0x1f04, 0x2d7d, 0x015e, 0x001e, 0x002e, 0x003e, 0x00ce,
14272 +       0x00ee, 0x00fe, 0x0005, 0x0046, 0x0026, 0x0016, 0x080c, 0x4dea,
14273 +       0xd0c4, 0x0140, 0xd0a4, 0x0130, 0x9006, 0x2220, 0x2009, 0x0029,
14274 +       0x080c, 0xc9c5, 0x001e, 0x002e, 0x004e, 0x0005, 0x0016, 0x0026,
14275 +       0x0036, 0x00c6, 0x728c, 0x82ff, 0x01e8, 0x080c, 0x5f25, 0x11d0,
14276 +       0x2100, 0x080c, 0x2430, 0x81ff, 0x01b8, 0x2019, 0x0001, 0x8314,
14277 +       0x92e0, 0x1c80, 0x2c04, 0xd384, 0x0120, 0x9084, 0xff00, 0x8007,
14278 +       0x0010, 0x9084, 0x00ff, 0x9116, 0x0138, 0x9096, 0x00ff, 0x0110,
14279 +       0x8318, 0x0c68, 0x9085, 0x0001, 0x00ce, 0x003e, 0x002e, 0x001e,
14280 +       0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x0036, 0x2019,
14281 +       0x0029, 0x00a9, 0x003e, 0x9180, 0x1000, 0x2004, 0x9065, 0x0158,
14282 +       0x0016, 0x00c6, 0x2061, 0x1a72, 0x001e, 0x6112, 0x080c, 0x2d1a,
14283 +       0x001e, 0x080c, 0x5bd1, 0x012e, 0x00ce, 0x001e, 0x0005, 0x0016,
14284 +       0x0026, 0x2110, 0x080c, 0x905b, 0x080c, 0xcc7a, 0x002e, 0x001e,
14285 +       0x0005, 0x2001, 0x1836, 0x2004, 0xd0cc, 0x0005, 0x00c6, 0x080c,
14286 +       0x6877, 0x1118, 0x20a9, 0x0800, 0x0010, 0x20a9, 0x0782, 0x080c,
14287 +       0x6877, 0x1110, 0x900e, 0x0010, 0x2009, 0x007e, 0x9180, 0x1000,
14288 +       0x2004, 0x9065, 0x0110, 0x080c, 0x5bd1, 0x8108, 0x1f04, 0x2e4e,
14289 +       0x2061, 0x1800, 0x6077, 0x0000, 0x6078, 0x9084, 0x00ff, 0x607a,
14290 +       0x60ab, 0x0000, 0x00ce, 0x0005, 0x2001, 0x1874, 0x2004, 0xd0bc,
14291 +       0x0005, 0x2011, 0x1853, 0x2214, 0xd2ec, 0x0005, 0x7eef, 0x7de8,
14292 +       0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6,
14293 +       0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc,
14294 +       0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc,
14295 +       0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1,
14296 +       0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6,
14297 +       0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098, 0x6797,
14298 +       0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, 0x8080, 0x617c,
14299 +       0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072, 0x8071,
14300 +       0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66,
14301 +       0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, 0x8055, 0x5454,
14302 +       0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a,
14303 +       0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a, 0x8039,
14304 +       0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d,
14305 +       0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, 0x8025, 0x4123,
14306 +       0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f,
14307 +       0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, 0x3800, 0x3700,
14308 +       0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, 0x3400, 0x8000,
14309 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, 0x3200, 0x8000,
14310 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, 0x3000, 0x8000,
14311 +       0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000,
14312 +       0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700,
14313 +       0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, 0x8000, 0x2100,
14314 +       0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00,
14315 +       0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
14316 +       0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, 0x8000, 0x1400,
14317 +       0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00,
14318 +       0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800,
14319 +       0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, 0x0500, 0x0400,
14320 +       0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, 0x0100, 0x8000,
14321 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, 0x8000, 0x8000,
14322 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
14323 +       0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x2071, 0x1893,
14324 +       0x7003, 0x0002, 0x9006, 0x7012, 0x7016, 0x7046, 0x704a, 0x7037,
14325 +       0x18ae, 0x703b, 0x18ae, 0x7007, 0x0001, 0x080c, 0x0fc7, 0x090c,
14326 +       0x0d84, 0x2900, 0x7066, 0xa867, 0x0002, 0xa8ab, 0xdcb0, 0x080c,
14327 +       0x0fc7, 0x090c, 0x0d84, 0x2900, 0x706a, 0xa867, 0x0002, 0xa8ab,
14328 +       0xdcb0, 0x0005, 0x2071, 0x1893, 0x7004, 0x0002, 0x2f9a, 0x2f9b,
14329 +       0x2fa3, 0x2fb7, 0x0005, 0x1004, 0x2fa2, 0x0e04, 0x2fa2, 0x2079,
14330 +       0x0000, 0x0458, 0x0005, 0x2079, 0x0000, 0x2061, 0x18ac, 0x2c4c,
14331 +       0xa86c, 0x908e, 0x0100, 0x0128, 0x9086, 0x0200, 0x0904, 0x3089,
14332 +       0x0005, 0x7014, 0x2048, 0x2061, 0x1800, 0x7018, 0x0807, 0x7010,
14333 +       0x2048, 0xa864, 0x9094, 0x00ff, 0x9296, 0x0029, 0x1120, 0xaa78,
14334 +       0xd2fc, 0x0128, 0x0005, 0x9086, 0x0103, 0x0108, 0x0005, 0x2079,
14335 +       0x0000, 0x2061, 0x1800, 0x7018, 0x0807, 0x2061, 0x1800, 0x7880,
14336 +       0x908a, 0x0040, 0x1210, 0x61cc, 0x0042, 0x2100, 0x908a, 0x003f,
14337 +       0x1a04, 0x3086, 0x61cc, 0x0804, 0x301d, 0x305f, 0x3095, 0x309f,
14338 +       0x30a3, 0x30ad, 0x30b3, 0x30b7, 0x30c7, 0x30ca, 0x30d4, 0x30d9,
14339 +       0x30de, 0x30e9, 0x30f4, 0x3103, 0x3112, 0x3120, 0x3137, 0x3152,
14340 +       0x31f2, 0x31f7, 0x3235, 0x32dd, 0x32ee, 0x3311, 0x3086, 0x3086,
14341 +       0x3086, 0x3349, 0x3367, 0x3370, 0x339f, 0x33a5, 0x3086, 0x33dd,
14342 +       0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x33e8, 0x33f1, 0x33f9,
14343 +       0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x33fb,
14344 +       0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x3418, 0x3475, 0x3086,
14345 +       0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x0002, 0x349f, 0x34a2,
14346 +       0x3502, 0x351b, 0x354b, 0x37ed, 0x3086, 0x49c6, 0x3086, 0x3086,
14347 +       0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x30d4, 0x30d9,
14348 +       0x3cbf, 0x3086, 0x3cd6, 0x4a55, 0x4aa5, 0x4ba8, 0x3086, 0x4c0a,
14349 +       0x4c46, 0x4c77, 0x4d79, 0x4ca4, 0x4cfb, 0x3086, 0x3cda, 0x3ea6,
14350 +       0x3ebc, 0x3ed8, 0x3f3d, 0x3fb1, 0x3fd1, 0x403b, 0x404c, 0x405d,
14351 +       0x4060, 0x4085, 0x40f9, 0x415b, 0x4163, 0x428b, 0x43b4, 0x43dd,
14352 +       0x4504, 0x4522, 0x452e, 0x45d0, 0x46a0, 0x3086, 0x3086, 0x3086,
14353 +       0x3086, 0x4706, 0x4721, 0x48ac, 0x4982, 0x7148, 0x0000, 0x2021,
14354 +       0x4000, 0x080c, 0x445b, 0x0126, 0x2091, 0x8000, 0x0e04, 0x3069,
14355 +       0x0010, 0x012e, 0x0cc0, 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833,
14356 +       0x0011, 0x0010, 0x7833, 0x0010, 0x7c82, 0x7986, 0x7a8a, 0x7b8e,
14357 +       0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e,
14358 +       0x7007, 0x0001, 0x2091, 0x5000, 0x012e, 0x0005, 0x2021, 0x4001,
14359 +       0x08c0, 0x2021, 0x4002, 0x08a8, 0x2021, 0x4003, 0x0890, 0x2021,
14360 +       0x4005, 0x0878, 0x2021, 0x4006, 0x0860, 0x2039, 0x0001, 0x902e,
14361 +       0x2520, 0x7b88, 0x7a8c, 0x7884, 0x7990, 0x0804, 0x4468, 0x7883,
14362 +       0x0004, 0x7884, 0x0807, 0x2039, 0x0001, 0x902e, 0x2520, 0x7b88,
14363 +       0x7a8c, 0x7884, 0x7990, 0x0804, 0x446b, 0x7984, 0x7888, 0x2114,
14364 +       0x200a, 0x0804, 0x305f, 0x7984, 0x2114, 0x0804, 0x305f, 0x20e1,
14365 +       0x0000, 0x2099, 0x0021, 0x20e9, 0x0000, 0x20a1, 0x0021, 0x20a9,
14366 +       0x001f, 0x4003, 0x7984, 0x7a88, 0x7b8c, 0x0804, 0x305f, 0x7884,
14367 +       0x2060, 0x04d8, 0x2009, 0x0003, 0x2011, 0x0002, 0x2019, 0x000a,
14368 +       0x789b, 0x0117, 0x0804, 0x305f, 0x2039, 0x0001, 0x7d98, 0x7c9c,
14369 +       0x0800, 0x2039, 0x0001, 0x7d98, 0x7c9c, 0x0848, 0x79a0, 0x9182,
14370 +       0x0040, 0x0210, 0x0804, 0x3092, 0x2138, 0x7d98, 0x7c9c, 0x0804,
14371 +       0x3099, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x3092, 0x2138,
14372 +       0x7d98, 0x7c9c, 0x0804, 0x30a7, 0x79a0, 0x9182, 0x0040, 0x0210,
14373 +       0x0804, 0x3092, 0x21e8, 0x7984, 0x7888, 0x20a9, 0x0001, 0x21a0,
14374 +       0x4004, 0x0804, 0x305f, 0x2061, 0x0800, 0xe10c, 0x9006, 0x2c15,
14375 +       0x9200, 0x8c60, 0x8109, 0x1dd8, 0x2010, 0x9005, 0x0904, 0x305f,
14376 +       0x0804, 0x308c, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x3092,
14377 +       0x21e0, 0x20a9, 0x0001, 0x7984, 0x2198, 0x4012, 0x0804, 0x305f,
14378 +       0x2069, 0x1852, 0x7884, 0x7990, 0x911a, 0x1a04, 0x3092, 0x8019,
14379 +       0x0904, 0x3092, 0x684a, 0x6942, 0x788c, 0x6852, 0x7888, 0x6856,
14380 +       0x9006, 0x685a, 0x685e, 0x080c, 0x6b71, 0x0804, 0x305f, 0x2069,
14381 +       0x1852, 0x7884, 0x7994, 0x911a, 0x1a04, 0x3092, 0x8019, 0x0904,
14382 +       0x3092, 0x684e, 0x6946, 0x788c, 0x6862, 0x7888, 0x6866, 0x9006,
14383 +       0x686a, 0x686e, 0x0126, 0x2091, 0x8000, 0x080c, 0x5f97, 0x012e,
14384 +       0x0804, 0x305f, 0x902e, 0x2520, 0x81ff, 0x1904, 0x308f, 0x7984,
14385 +       0x7b88, 0x7a8c, 0x20a9, 0x0005, 0x20e9, 0x0001, 0x20a1, 0x189a,
14386 +       0x4101, 0x080c, 0x441f, 0x0904, 0x308f, 0x2009, 0x0020, 0xa85c,
14387 +       0x9080, 0x0019, 0xaf60, 0x080c, 0x4468, 0x701b, 0x3170, 0x0005,
14388 +       0xa864, 0x2008, 0x9084, 0x00ff, 0x9096, 0x0011, 0x0168, 0x9096,
14389 +       0x0019, 0x0150, 0x9096, 0x0015, 0x0138, 0x9096, 0x0048, 0x0120,
14390 +       0x9096, 0x0029, 0x1904, 0x308f, 0x810f, 0x918c, 0x00ff, 0x0904,
14391 +       0x308f, 0x710e, 0x700c, 0x8001, 0x0548, 0x700e, 0x080c, 0x441f,
14392 +       0x0904, 0x308f, 0x2009, 0x0020, 0x7064, 0x2040, 0xa28c, 0xa390,
14393 +       0xa494, 0xa598, 0x9290, 0x0040, 0x9399, 0x0000, 0x94a1, 0x0000,
14394 +       0x95a9, 0x0000, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x4468,
14395 +       0x701b, 0x31ab, 0x0005, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0002,
14396 +       0x0120, 0x9096, 0x000a, 0x1904, 0x308f, 0x08a0, 0x7010, 0x2048,
14397 +       0xa868, 0xc0fd, 0xa86a, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0029,
14398 +       0x1160, 0xc2fd, 0xaa7a, 0x080c, 0x57e4, 0x0150, 0x0126, 0x2091,
14399 +       0x8000, 0xa87a, 0xa982, 0x012e, 0x0050, 0x080c, 0x5ac6, 0x1128,
14400 +       0x7007, 0x0003, 0x701b, 0x31d7, 0x0005, 0x080c, 0x63d1, 0x0126,
14401 +       0x2091, 0x8000, 0x20a9, 0x0005, 0x20e1, 0x0001, 0x2099, 0x189a,
14402 +       0x400a, 0x2100, 0x9210, 0x9399, 0x0000, 0x94a1, 0x0000, 0x95a9,
14403 +       0x0000, 0xa85c, 0x9080, 0x0019, 0x2009, 0x0020, 0x012e, 0xaf60,
14404 +       0x0804, 0x446b, 0x61b4, 0x7884, 0x60b6, 0x0804, 0x305f, 0x2091,
14405 +       0x8000, 0x7837, 0x4000, 0x7833, 0x0010, 0x7883, 0x4000, 0x7887,
14406 +       0x4953, 0x788b, 0x5020, 0x788f, 0x2020, 0x2009, 0x017f, 0x2104,
14407 +       0x7892, 0x3f00, 0x7896, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200,
14408 +       0x603c, 0x8007, 0x9205, 0x789a, 0x2009, 0x04fd, 0x2104, 0x789e,
14409 +       0x2091, 0x5000, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084,
14410 +       0x0180, 0x2001, 0x19e7, 0x2004, 0x9005, 0x0128, 0x2001, 0x008b,
14411 +       0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, 0x0002, 0x2003,
14412 +       0x1001, 0x2071, 0x0080, 0x0804, 0x0427, 0x81ff, 0x1904, 0x308f,
14413 +       0x7984, 0x080c, 0x5c0d, 0x1904, 0x3092, 0x7e98, 0x9684, 0x3fff,
14414 +       0x9082, 0x4000, 0x0210, 0x0804, 0x3092, 0x7c88, 0x7d8c, 0x080c,
14415 +       0x5d70, 0x080c, 0x5d3f, 0x0000, 0x1518, 0x2061, 0x1cd0, 0x0126,
14416 +       0x2091, 0x8000, 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x904d,
14417 +       0x0130, 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, 0x0150, 0x012e,
14418 +       0x9ce0, 0x0018, 0x2001, 0x1818, 0x2004, 0x9c02, 0x1a04, 0x308f,
14419 +       0x0c30, 0x080c, 0xad1e, 0x012e, 0x0904, 0x308f, 0x0804, 0x305f,
14420 +       0x900e, 0x2001, 0x0005, 0x080c, 0x63d1, 0x0126, 0x2091, 0x8000,
14421 +       0x080c, 0xb37a, 0x080c, 0x61a9, 0x012e, 0x0804, 0x305f, 0x00a6,
14422 +       0x2950, 0xb198, 0x080c, 0x5c0d, 0x1904, 0x32ca, 0xb6a4, 0x9684,
14423 +       0x3fff, 0x9082, 0x4000, 0x0208, 0x04e8, 0xb49c, 0xb5a0, 0x080c,
14424 +       0x5d70, 0x080c, 0x5d3f, 0x1520, 0x2061, 0x1cd0, 0x0126, 0x2091,
14425 +       0x8000, 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x904d, 0x0130,
14426 +       0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, 0x0158, 0x012e, 0x9ce0,
14427 +       0x0018, 0x2001, 0x1818, 0x2004, 0x9c02, 0x2009, 0x000d, 0x12b0,
14428 +       0x0c28, 0x080c, 0xad1e, 0x012e, 0x2009, 0x0003, 0x0178, 0x00e0,
14429 +       0x900e, 0x2001, 0x0005, 0x080c, 0x63d1, 0x0126, 0x2091, 0x8000,
14430 +       0x080c, 0xb37a, 0x080c, 0x61a9, 0x012e, 0x0070, 0xb097, 0x4005,
14431 +       0xb19a, 0x0010, 0xb097, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001,
14432 +       0x0030, 0x2a48, 0x00ae, 0x0005, 0xb097, 0x4000, 0x9006, 0x918d,
14433 +       0x0001, 0x2008, 0x2a48, 0x00ae, 0x0005, 0x81ff, 0x1904, 0x308f,
14434 +       0x080c, 0x4436, 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904, 0x308f,
14435 +       0x080c, 0x5d76, 0x0904, 0x308f, 0x0804, 0x3fc8, 0x81ff, 0x1904,
14436 +       0x308f, 0x080c, 0x4452, 0x0904, 0x3092, 0x080c, 0x5e04, 0x0904,
14437 +       0x308f, 0x2019, 0x0005, 0x79a8, 0x080c, 0x5d91, 0x0904, 0x308f,
14438 +       0x7888, 0x908a, 0x1000, 0x1a04, 0x3092, 0x8003, 0x800b, 0x810b,
14439 +       0x9108, 0x080c, 0x7826, 0x7984, 0xd184, 0x1904, 0x305f, 0x0804,
14440 +       0x3fc8, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009, 0x0001,
14441 +       0x0450, 0x2029, 0x07ff, 0x6454, 0x2400, 0x9506, 0x01f8, 0x2508,
14442 +       0x080c, 0x5c0d, 0x11d8, 0x080c, 0x5e04, 0x1128, 0x2009, 0x0002,
14443 +       0x62bc, 0x2518, 0x00c0, 0x2019, 0x0004, 0x900e, 0x080c, 0x5d91,
14444 +       0x1118, 0x2009, 0x0006, 0x0078, 0x7884, 0x908a, 0x1000, 0x1270,
14445 +       0x8003, 0x800b, 0x810b, 0x9108, 0x080c, 0x7826, 0x8529, 0x1ae0,
14446 +       0x012e, 0x0804, 0x305f, 0x012e, 0x0804, 0x308f, 0x012e, 0x0804,
14447 +       0x3092, 0x080c, 0x4436, 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904,
14448 +       0x308f, 0xbaa0, 0x2019, 0x0005, 0x00c6, 0x2061, 0x0000, 0x080c,
14449 +       0x7d55, 0x0076, 0x2039, 0x0000, 0x080c, 0x7c4d, 0x900e, 0x080c,
14450 +       0xc73e, 0x007e, 0x00ce, 0x080c, 0x5d70, 0x0804, 0x305f, 0x080c,
14451 +       0x4436, 0x0904, 0x3092, 0x080c, 0x5d70, 0x2208, 0x0804, 0x305f,
14452 +       0x0156, 0x00d6, 0x00e6, 0x2069, 0x1904, 0x6810, 0x6914, 0x910a,
14453 +       0x1208, 0x900e, 0x6816, 0x9016, 0x901e, 0x20a9, 0x007e, 0x2069,
14454 +       0x1000, 0x2d04, 0x905d, 0x0118, 0xb84c, 0x0059, 0x9210, 0x8d68,
14455 +       0x1f04, 0x3381, 0x2300, 0x9218, 0x00ee, 0x00de, 0x015e, 0x0804,
14456 +       0x305f, 0x00f6, 0x0016, 0x907d, 0x0138, 0x9006, 0x8000, 0x2f0c,
14457 +       0x81ff, 0x0110, 0x2178, 0x0cd0, 0x001e, 0x00fe, 0x0005, 0x2069,
14458 +       0x1904, 0x6910, 0x62b8, 0x0804, 0x305f, 0x81ff, 0x1904, 0x308f,
14459 +       0x6154, 0x9190, 0x2e6e, 0x2215, 0x9294, 0x00ff, 0x6374, 0x83ff,
14460 +       0x0108, 0x6278, 0x67d8, 0x97c4, 0x000a, 0x98c6, 0x000a, 0x1118,
14461 +       0x2031, 0x0001, 0x00f0, 0x97c4, 0x0022, 0x98c6, 0x0022, 0x1118,
14462 +       0x2031, 0x0003, 0x00b0, 0x97c4, 0x0012, 0x98c6, 0x0012, 0x1118,
14463 +       0x2031, 0x0002, 0x0070, 0x080c, 0x6877, 0x1118, 0x2031, 0x0004,
14464 +       0x0040, 0xd79c, 0x0120, 0x2009, 0x0005, 0x0804, 0x308f, 0x2031,
14465 +       0x0000, 0x7e9a, 0x7f9e, 0x0804, 0x305f, 0x6144, 0x6248, 0x2019,
14466 +       0x1953, 0x231c, 0x2001, 0x1954, 0x2004, 0x789a, 0x0804, 0x305f,
14467 +       0x0126, 0x2091, 0x8000, 0x6134, 0x6238, 0x633c, 0x012e, 0x0804,
14468 +       0x305f, 0x080c, 0x4452, 0x0904, 0x3092, 0xba44, 0xbb38, 0x0804,
14469 +       0x305f, 0x080c, 0x0d84, 0x6144, 0x6248, 0x7884, 0x6046, 0x7b88,
14470 +       0x634a, 0x2069, 0x1852, 0x831f, 0x9305, 0x6816, 0x788c, 0x2069,
14471 +       0x1953, 0x2d1c, 0x206a, 0x7e98, 0x9682, 0x0014, 0x1210, 0x2031,
14472 +       0x07d0, 0x2069, 0x1954, 0x2d04, 0x266a, 0x789a, 0x0804, 0x305f,
14473 +       0x0126, 0x2091, 0x8000, 0x6134, 0x7884, 0x6036, 0x910e, 0xd1b4,
14474 +       0x190c, 0x0e56, 0xd0c4, 0x01a8, 0x00d6, 0x78a8, 0x2009, 0x196a,
14475 +       0x200a, 0x78ac, 0x2011, 0x196b, 0x2012, 0x2069, 0x0100, 0x6838,
14476 +       0x9086, 0x0007, 0x1118, 0x2214, 0x6a5a, 0x0010, 0x210c, 0x695a,
14477 +       0x00de, 0x7884, 0x7888, 0x603a, 0x2011, 0x0114, 0x220c, 0x7888,
14478 +       0xd08c, 0x0118, 0x918d, 0x0080, 0x0010, 0x918c, 0xff7f, 0x2112,
14479 +       0x613c, 0x788c, 0x603e, 0x910e, 0xd1e4, 0x190c, 0x0e73, 0x603c,
14480 +       0xd0cc, 0x0120, 0x78b0, 0x2011, 0x0114, 0x2012, 0x012e, 0x0804,
14481 +       0x305f, 0x00f6, 0x2079, 0x1800, 0x7a34, 0xa898, 0x9084, 0xfebf,
14482 +       0x9215, 0xa89c, 0x9084, 0xfebf, 0x8002, 0x9214, 0x79ec, 0x7834,
14483 +       0x9084, 0x0140, 0x9215, 0x7a36, 0xa897, 0x4000, 0x900e, 0x9085,
14484 +       0x0001, 0x2001, 0x0000, 0x00fe, 0x0005, 0x7898, 0x9005, 0x01a8,
14485 +       0x7888, 0x9025, 0x0904, 0x3092, 0x788c, 0x902d, 0x0904, 0x3092,
14486 +       0x900e, 0x080c, 0x5c0d, 0x1120, 0xba44, 0xbb38, 0xbc46, 0xbd3a,
14487 +       0x9186, 0x07ff, 0x0190, 0x8108, 0x0ca0, 0x080c, 0x4452, 0x0904,
14488 +       0x3092, 0x7888, 0x900d, 0x0904, 0x3092, 0x788c, 0x9005, 0x0904,
14489 +       0x3092, 0xba44, 0xb946, 0xbb38, 0xb83a, 0x0804, 0x305f, 0x2011,
14490 +       0xbc09, 0x0010, 0x2011, 0xbc05, 0x080c, 0x4dfe, 0x1904, 0x308f,
14491 +       0x00c6, 0x2061, 0x0100, 0x7984, 0x9186, 0x00ff, 0x1130, 0x2001,
14492 +       0x1816, 0x2004, 0x9085, 0xff00, 0x0088, 0x9182, 0x007f, 0x16e8,
14493 +       0x9188, 0x2e6e, 0x210d, 0x918c, 0x00ff, 0x2001, 0x1816, 0x2004,
14494 +       0x0026, 0x9116, 0x002e, 0x0588, 0x810f, 0x9105, 0x0126, 0x2091,
14495 +       0x8000, 0x0006, 0x080c, 0x94fe, 0x000e, 0x0518, 0x6016, 0x600b,
14496 +       0xbc05, 0x7984, 0x00b6, 0x080c, 0x5bb0, 0x2b08, 0x00be, 0x1500,
14497 +       0x6112, 0x6023, 0x0001, 0x080c, 0x441f, 0x01d0, 0x9006, 0xa866,
14498 +       0x7007, 0x0003, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x701b, 0x34fb,
14499 +       0x2900, 0x6016, 0x2009, 0x0032, 0x080c, 0x95ce, 0x012e, 0x00ce,
14500 +       0x0005, 0x012e, 0x00ce, 0x0804, 0x308f, 0x00ce, 0x0804, 0x3092,
14501 +       0x080c, 0x9554, 0x0cb0, 0xa830, 0x9086, 0x0100, 0x0904, 0x308f,
14502 +       0x0804, 0x305f, 0x2061, 0x1a3d, 0x0126, 0x2091, 0x8000, 0x6000,
14503 +       0xd084, 0x0170, 0x6104, 0x6208, 0x2061, 0x1800, 0x634c, 0x606c,
14504 +       0x789a, 0x60bc, 0x789e, 0x60b8, 0x78aa, 0x012e, 0x0804, 0x305f,
14505 +       0x900e, 0x2110, 0x0c88, 0x81ff, 0x1904, 0x308f, 0x080c, 0x6877,
14506 +       0x0904, 0x308f, 0x0126, 0x2091, 0x8000, 0x624c, 0x606c, 0x9202,
14507 +       0x0248, 0x9085, 0x0001, 0x080c, 0x2466, 0x080c, 0x4fc7, 0x012e,
14508 +       0x0804, 0x305f, 0x012e, 0x0804, 0x3092, 0x0006, 0x0016, 0x00c6,
14509 +       0x00e6, 0x2001, 0x1976, 0x2070, 0x2061, 0x1852, 0x6008, 0x2072,
14510 +       0x900e, 0x2011, 0x1400, 0x080c, 0x7a4b, 0x7206, 0x00ee, 0x00ce,
14511 +       0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0128,
14512 +       0x012e, 0x2021, 0x400b, 0x0804, 0x3061, 0x7884, 0xd0fc, 0x0148,
14513 +       0x2001, 0x002a, 0x2004, 0x9082, 0x00e1, 0x02a8, 0x012e, 0x0804,
14514 +       0x3092, 0x2001, 0x002a, 0x2004, 0x2069, 0x1852, 0x6908, 0x9102,
14515 +       0x1218, 0x012e, 0x0804, 0x3092, 0x614c, 0x606c, 0x9106, 0x0118,
14516 +       0x012e, 0x0804, 0x308f, 0x080c, 0x94d3, 0x0dd0, 0x7884, 0xd0fc,
14517 +       0x0904, 0x35ca, 0x00c6, 0x080c, 0x441f, 0x00ce, 0x0d88, 0xa867,
14518 +       0x0000, 0x7884, 0xa80a, 0x7898, 0xa80e, 0x789c, 0xa812, 0x2001,
14519 +       0x002e, 0x2004, 0xa81a, 0x2001, 0x002f, 0x2004, 0xa81e, 0x2001,
14520 +       0x0030, 0x2004, 0xa822, 0x2001, 0x0031, 0x2004, 0xa826, 0x2001,
14521 +       0x0034, 0x2004, 0xa82a, 0x2001, 0x0035, 0x2004, 0xa82e, 0x2001,
14522 +       0x002a, 0x2004, 0x9080, 0x0003, 0x9084, 0x00fc, 0x8004, 0xa816,
14523 +       0x080c, 0x3750, 0x0928, 0x7010, 0x2048, 0xad2c, 0xac28, 0xab1c,
14524 +       0xaa18, 0xa930, 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021,
14525 +       0x0000, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0,
14526 +       0x9080, 0x001b, 0x080c, 0x4468, 0x701b, 0x368d, 0x701f, 0x0001,
14527 +       0x012e, 0x0005, 0x0046, 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6,
14528 +       0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3535, 0x2001, 0x196c, 0x2003,
14529 +       0x0000, 0x2021, 0x000a, 0x2061, 0x0100, 0x6104, 0x0016, 0x60bb,
14530 +       0x0000, 0x60bf, 0x32e1, 0x60bf, 0x0012, 0x080c, 0x37bf, 0x080c,
14531 +       0x377e, 0x00f6, 0x00e6, 0x0086, 0x2940, 0x2071, 0x1a33, 0x2079,
14532 +       0x0090, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0140, 0x2001,
14533 +       0x0035, 0x2004, 0x780e, 0x2001, 0x0034, 0x2004, 0x780a, 0x00de,
14534 +       0x2011, 0x0001, 0x080c, 0x3b2b, 0x008e, 0x00ee, 0x00fe, 0x080c,
14535 +       0x3a61, 0x080c, 0x396a, 0x05b8, 0x2001, 0x020b, 0x2004, 0x9084,
14536 +       0x0140, 0x1db8, 0x080c, 0x3b7f, 0x00f6, 0x2079, 0x0300, 0x78bc,
14537 +       0x00fe, 0x908c, 0x0070, 0x1560, 0x2071, 0x0200, 0x7037, 0x0000,
14538 +       0x7050, 0x9084, 0xff00, 0x9086, 0x3200, 0x1510, 0x7037, 0x0001,
14539 +       0x7050, 0x9084, 0xff00, 0x9086, 0xe100, 0x11d0, 0x7037, 0x0000,
14540 +       0x7054, 0x7037, 0x0000, 0x715c, 0x9106, 0x1190, 0x2001, 0x181e,
14541 +       0x2004, 0x9106, 0x1168, 0x00c6, 0x2061, 0x0100, 0x6024, 0x9084,
14542 +       0x1e00, 0x00ce, 0x0138, 0x080c, 0x3974, 0x080c, 0x3779, 0x0058,
14543 +       0x080c, 0x3779, 0x080c, 0x3ac3, 0x080c, 0x3a57, 0x2001, 0x020b,
14544 +       0x2004, 0xd0e4, 0x0dd8, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061,
14545 +       0x0100, 0x6027, 0x0002, 0x001e, 0x6106, 0x2011, 0x020d, 0x2013,
14546 +       0x0020, 0x60bb, 0x0000, 0x60bf, 0x0108, 0x60bf, 0x0012, 0x2001,
14547 +       0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, 0x1245, 0x2009,
14548 +       0x0028, 0x080c, 0x2014, 0x2001, 0x0227, 0x200c, 0x2102, 0x00fe,
14549 +       0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, 0x004e,
14550 +       0x2001, 0x196c, 0x2004, 0x9005, 0x1118, 0x012e, 0x0804, 0x305f,
14551 +       0x012e, 0x2021, 0x400c, 0x0804, 0x3061, 0x0016, 0x0026, 0x0036,
14552 +       0x0046, 0x0056, 0x0076, 0x0086, 0x0096, 0x00d6, 0x0156, 0x7010,
14553 +       0x2048, 0x701c, 0x20a8, 0x8000, 0x701e, 0xa804, 0x9005, 0x0904,
14554 +       0x36e9, 0x2048, 0x1f04, 0x369d, 0x7064, 0x2040, 0xa28c, 0xa390,
14555 +       0xa494, 0xa598, 0xa930, 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000,
14556 +       0x2021, 0x0000, 0x0096, 0x7010, 0x2048, 0xa864, 0x009e, 0x9086,
14557 +       0x0103, 0x0170, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084,
14558 +       0xffc0, 0x9080, 0x001b, 0x080c, 0x4468, 0x701b, 0x368d, 0x00b0,
14559 +       0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080,
14560 +       0x001b, 0x21a8, 0x27e0, 0x2098, 0x27e8, 0x20a0, 0x0006, 0x080c,
14561 +       0x0f2b, 0x000e, 0x080c, 0x446b, 0x701b, 0x368d, 0x015e, 0x00de,
14562 +       0x009e, 0x008e, 0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e,
14563 +       0x0005, 0x7010, 0x2048, 0xa864, 0x9086, 0x0103, 0x1118, 0x701b,
14564 +       0x374e, 0x0450, 0x7010, 0x2048, 0xa868, 0xc0fd, 0xa86a, 0x2009,
14565 +       0x007f, 0x080c, 0x5bb0, 0x0110, 0x9006, 0x0030, 0xb813, 0x00ff,
14566 +       0xb817, 0xfffd, 0x080c, 0xb535, 0x015e, 0x00de, 0x009e, 0x008e,
14567 +       0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, 0x0904, 0x308f,
14568 +       0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0076, 0x0086, 0x0096,
14569 +       0x00d6, 0x0156, 0x701b, 0x3720, 0x7007, 0x0003, 0x0804, 0x36de,
14570 +       0x0076, 0xa830, 0x9086, 0x0100, 0x2021, 0x400c, 0x0904, 0x3061,
14571 +       0xad10, 0xac0c, 0xab24, 0xaa20, 0xa930, 0xa808, 0xd0b4, 0x1120,
14572 +       0x2029, 0x0000, 0x2021, 0x0000, 0x8906, 0x8006, 0x8007, 0x90bc,
14573 +       0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x21a8, 0x27e0, 0x2098,
14574 +       0x27e8, 0x20a0, 0x0006, 0x080c, 0x0f2b, 0x000e, 0x080c, 0x446b,
14575 +       0x007e, 0x701b, 0x368d, 0x701f, 0x0001, 0x0005, 0x0804, 0x305f,
14576 +       0x0156, 0x00c6, 0xa814, 0x908a, 0x001e, 0x0218, 0xa833, 0x001e,
14577 +       0x0010, 0xa832, 0x0078, 0x81ff, 0x0168, 0x0016, 0x080c, 0x441f,
14578 +       0x001e, 0x0130, 0xa800, 0x2040, 0xa008, 0xa80a, 0x2100, 0x0c58,
14579 +       0x9006, 0x0010, 0x9085, 0x0001, 0x00ce, 0x015e, 0x0005, 0x0006,
14580 +       0x00f6, 0x2079, 0x0000, 0x7880, 0x9086, 0x0044, 0x00fe, 0x000e,
14581 +       0x0005, 0x2001, 0x196c, 0x2003, 0x0001, 0x0005, 0x00f6, 0x00e6,
14582 +       0x00c6, 0x2061, 0x0200, 0x2001, 0x1977, 0x2004, 0x601a, 0x2061,
14583 +       0x0100, 0x2001, 0x1976, 0x2004, 0x60ce, 0x6104, 0xc1ac, 0x6106,
14584 +       0x080c, 0x441f, 0xa813, 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a,
14585 +       0x2001, 0x002e, 0x2004, 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a,
14586 +       0x2061, 0x0090, 0x2079, 0x0100, 0x2001, 0x1976, 0x2004, 0x6036,
14587 +       0x2009, 0x0040, 0x080c, 0x2014, 0x2001, 0x002a, 0x2004, 0x9084,
14588 +       0xfff8, 0xa86e, 0x601a, 0xa873, 0x0000, 0x601f, 0x0000, 0x78ca,
14589 +       0x9006, 0x600a, 0x600e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00e6,
14590 +       0x080c, 0x441f, 0x2940, 0xa013, 0x0019, 0xa017, 0x0001, 0x2800,
14591 +       0xa05a, 0x2001, 0x0030, 0x2004, 0xa866, 0x2001, 0x0031, 0x2004,
14592 +       0xa86a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa86e, 0xa873,
14593 +       0x0000, 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x0300, 0x2003,
14594 +       0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001, 0x0004, 0x200c,
14595 +       0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000,
14596 +       0x81ff, 0x0148, 0x080c, 0x27e7, 0x1130, 0x9006, 0x080c, 0x2747,
14597 +       0x9006, 0x080c, 0x272a, 0x7884, 0x9084, 0x0007, 0x0002, 0x380a,
14598 +       0x3813, 0x381c, 0x3807, 0x3807, 0x3807, 0x3807, 0x3807, 0x012e,
14599 +       0x0804, 0x3092, 0x2009, 0x0114, 0x2104, 0x9085, 0x0800, 0x200a,
14600 +       0x080c, 0x39ba, 0x00c0, 0x2009, 0x0114, 0x2104, 0x9085, 0x4000,
14601 +       0x200a, 0x080c, 0x39ba, 0x0078, 0x080c, 0x6877, 0x1128, 0x012e,
14602 +       0x2009, 0x0016, 0x0804, 0x308f, 0x81ff, 0x0128, 0x012e, 0x2021,
14603 +       0x400b, 0x0804, 0x3061, 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6,
14604 +       0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3535, 0x2009, 0x0101, 0x210c,
14605 +       0x0016, 0x7ec8, 0x7dcc, 0x9006, 0x2068, 0x2060, 0x2058, 0x080c,
14606 +       0x3c52, 0x080c, 0x3bab, 0x903e, 0x2720, 0x00f6, 0x00e6, 0x0086,
14607 +       0x2940, 0x2071, 0x1a33, 0x2079, 0x0090, 0x00d6, 0x2069, 0x0000,
14608 +       0x6884, 0xd0b4, 0x0120, 0x68d4, 0x780e, 0x68d0, 0x780a, 0x00de,
14609 +       0x2011, 0x0001, 0x080c, 0x3b2b, 0x080c, 0x27ef, 0x080c, 0x27ef,
14610 +       0x080c, 0x27ef, 0x080c, 0x27ef, 0x080c, 0x3b2b, 0x008e, 0x00ee,
14611 +       0x00fe, 0x080c, 0x3a61, 0x2001, 0x020b, 0x2004, 0x9084, 0x0140,
14612 +       0x1dd0, 0x00f6, 0x2079, 0x0000, 0x7884, 0x00fe, 0xd0bc, 0x0178,
14613 +       0x2001, 0x0201, 0x200c, 0x81ff, 0x0150, 0x080c, 0x3a3f, 0x2d00,
14614 +       0x9c05, 0x9b05, 0x0120, 0x080c, 0x3974, 0x0804, 0x3921, 0x080c,
14615 +       0x3b7f, 0x080c, 0x3ac3, 0x080c, 0x3a22, 0x080c, 0x3a57, 0x00f6,
14616 +       0x2079, 0x0100, 0x7824, 0xd0ac, 0x0130, 0x8b58, 0x080c, 0x3974,
14617 +       0x00fe, 0x0804, 0x3921, 0x00fe, 0x080c, 0x396a, 0x1150, 0x8d68,
14618 +       0x2001, 0x0032, 0x2602, 0x2001, 0x0033, 0x2502, 0x080c, 0x3974,
14619 +       0x0080, 0x87ff, 0x0138, 0x2001, 0x0201, 0x2004, 0x9005, 0x1908,
14620 +       0x8739, 0x0038, 0x2001, 0x1a30, 0x2004, 0x9086, 0x0000, 0x1904,
14621 +       0x3871, 0x2001, 0x032f, 0x2003, 0x00f6, 0x8631, 0x1208, 0x8529,
14622 +       0x2500, 0x9605, 0x0904, 0x3921, 0x7884, 0xd0bc, 0x0128, 0x2d00,
14623 +       0x9c05, 0x9b05, 0x1904, 0x3921, 0xa013, 0x0019, 0x2001, 0x032a,
14624 +       0x2003, 0x0004, 0x7884, 0xd0ac, 0x1148, 0x2001, 0x1a30, 0x2003,
14625 +       0x0003, 0x2001, 0x032a, 0x2003, 0x0009, 0x0030, 0xa017, 0x0001,
14626 +       0x78b4, 0x9005, 0x0108, 0xa016, 0x2800, 0xa05a, 0x2009, 0x0040,
14627 +       0x080c, 0x2014, 0x2900, 0xa85a, 0xa813, 0x0019, 0x7884, 0xd0a4,
14628 +       0x1180, 0xa817, 0x0000, 0x00c6, 0x20a9, 0x0004, 0x2061, 0x0090,
14629 +       0x602b, 0x0008, 0x2001, 0x0203, 0x2004, 0x1f04, 0x38f8, 0x00ce,
14630 +       0x0030, 0xa817, 0x0001, 0x78b0, 0x9005, 0x0108, 0xa816, 0x00f6,
14631 +       0x00c6, 0x2079, 0x0100, 0x2061, 0x0090, 0x7827, 0x0002, 0x2001,
14632 +       0x002a, 0x2004, 0x9084, 0xfff8, 0x601a, 0x0006, 0x2001, 0x002b,
14633 +       0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, 0x00ce, 0x00fe, 0x0804,
14634 +       0x3845, 0x001e, 0x00c6, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061,
14635 +       0x0100, 0x6027, 0x0002, 0x6106, 0x2011, 0x020d, 0x2013, 0x0020,
14636 +       0x2001, 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, 0x1245,
14637 +       0x7884, 0x9084, 0x0003, 0x9086, 0x0002, 0x01a0, 0x2009, 0x0028,
14638 +       0x080c, 0x2014, 0x2001, 0x0227, 0x200c, 0x2102, 0x6050, 0x9084,
14639 +       0xb7ef, 0x6052, 0x602f, 0x0000, 0x604b, 0xf7f7, 0x6043, 0x0090,
14640 +       0x6043, 0x0010, 0x00ce, 0x2d08, 0x2c10, 0x2b18, 0x2b00, 0x9c05,
14641 +       0x9d05, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e,
14642 +       0x008e, 0x1118, 0x012e, 0x0804, 0x305f, 0x012e, 0x2021, 0x400c,
14643 +       0x0804, 0x3061, 0x9085, 0x0001, 0x1d04, 0x3973, 0x2091, 0x6000,
14644 +       0x8420, 0x9486, 0x0064, 0x0005, 0x2001, 0x0105, 0x2003, 0x0010,
14645 +       0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x1a30, 0x2003, 0x0000,
14646 +       0x0051, 0x2009, 0x0048, 0x080c, 0x2014, 0x2001, 0x0227, 0x2024,
14647 +       0x2402, 0x9026, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1a33, 0x7000,
14648 +       0x9086, 0x0000, 0x0520, 0x2079, 0x0090, 0x2009, 0x0206, 0x2104,
14649 +       0x2009, 0x0203, 0x210c, 0x9106, 0x1120, 0x2009, 0x0040, 0x080c,
14650 +       0x2014, 0x782c, 0xd0fc, 0x0d88, 0x080c, 0x3b7f, 0x7000, 0x9086,
14651 +       0x0000, 0x1d58, 0x782b, 0x0004, 0x782c, 0xd0ac, 0x1de8, 0x2009,
14652 +       0x0040, 0x080c, 0x2014, 0x782b, 0x0002, 0x7003, 0x0000, 0x00ee,
14653 +       0x00fe, 0x0005, 0x00f6, 0x2079, 0x0100, 0x2001, 0x1816, 0x200c,
14654 +       0x7932, 0x7936, 0x080c, 0x2446, 0x7850, 0x9084, 0xfbff, 0x9085,
14655 +       0x0030, 0x7852, 0x2019, 0x01f4, 0x8319, 0x1df0, 0x9084, 0xffcf,
14656 +       0x9085, 0x2000, 0x7852, 0x20a9, 0x0046, 0x1d04, 0x39d5, 0x2091,
14657 +       0x6000, 0x1f04, 0x39d5, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfff,
14658 +       0x7852, 0x2001, 0x0021, 0x2004, 0x9084, 0x0003, 0x9086, 0x0001,
14659 +       0x1120, 0x7850, 0x9084, 0xdfff, 0x7852, 0x784b, 0xf7f7, 0x7843,
14660 +       0x0090, 0x7843, 0x0010, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x39f5,
14661 +       0x7850, 0x9085, 0x1400, 0x7852, 0x2019, 0x61a8, 0x7854, 0xa001,
14662 +       0xa001, 0xd08c, 0x1110, 0x8319, 0x1dc8, 0x7827, 0x0048, 0x7850,
14663 +       0x9085, 0x0400, 0x7852, 0x7843, 0x0040, 0x2019, 0x01f4, 0xa001,
14664 +       0xa001, 0x8319, 0x1de0, 0x2001, 0x0100, 0x080c, 0x28a5, 0x7827,
14665 +       0x0020, 0x7843, 0x0000, 0x9006, 0x080c, 0x28a5, 0x7827, 0x0048,
14666 +       0x00fe, 0x0005, 0x7884, 0xd0ac, 0x11c8, 0x00f6, 0x00e6, 0x2071,
14667 +       0x1a30, 0x2079, 0x0320, 0x2001, 0x0201, 0x2004, 0x9005, 0x0160,
14668 +       0x7000, 0x9086, 0x0000, 0x1140, 0x0051, 0xd0bc, 0x0108, 0x8738,
14669 +       0x7003, 0x0003, 0x782b, 0x0019, 0x00ee, 0x00fe, 0x0005, 0x00f6,
14670 +       0x2079, 0x0300, 0x78bc, 0x00fe, 0x908c, 0x0070, 0x0178, 0x2009,
14671 +       0x0032, 0x260a, 0x2009, 0x0033, 0x250a, 0xd0b4, 0x0108, 0x8c60,
14672 +       0xd0ac, 0x0108, 0x8d68, 0xd0a4, 0x0108, 0x8b58, 0x0005, 0x00f6,
14673 +       0x2079, 0x0200, 0x781c, 0xd084, 0x0110, 0x7837, 0x0050, 0x00fe,
14674 +       0x0005, 0x00e6, 0x2071, 0x0100, 0x2001, 0x1977, 0x2004, 0x70e2,
14675 +       0x080c, 0x376f, 0x1188, 0x2001, 0x181e, 0x2004, 0x2009, 0x181d,
14676 +       0x210c, 0x918c, 0x00ff, 0x706e, 0x716a, 0x7066, 0x918d, 0x3200,
14677 +       0x7162, 0x7073, 0xe109, 0x0080, 0x702c, 0x9085, 0x0002, 0x702e,
14678 +       0x2009, 0x1816, 0x210c, 0x716e, 0x7063, 0x0100, 0x7166, 0x719e,
14679 +       0x706b, 0x0000, 0x7073, 0x0809, 0x7077, 0x0008, 0x7078, 0x9080,
14680 +       0x0100, 0x707a, 0x7080, 0x8000, 0x7082, 0x7087, 0xaaaa, 0x9006,
14681 +       0x708a, 0x708e, 0x707e, 0x70d6, 0x70ab, 0x0036, 0x70af, 0x95d5,
14682 +       0x7014, 0x9084, 0x1984, 0x9085, 0x0012, 0x7016, 0x080c, 0x3b7f,
14683 +       0x00f6, 0x2071, 0x1a30, 0x2079, 0x0320, 0x00d6, 0x2069, 0x0000,
14684 +       0x6884, 0xd0b4, 0x0120, 0x689c, 0x780e, 0x6898, 0x780a, 0x00de,
14685 +       0x2011, 0x0011, 0x080c, 0x3b2b, 0x2011, 0x0001, 0x080c, 0x3b2b,
14686 +       0x00fe, 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1a30, 0x2079,
14687 +       0x0320, 0x792c, 0xd1fc, 0x0904, 0x3b28, 0x782b, 0x0002, 0x9026,
14688 +       0xd19c, 0x1904, 0x3b24, 0x7000, 0x0002, 0x3b28, 0x3ad9, 0x3b09,
14689 +       0x3b24, 0xd1bc, 0x1170, 0xd1dc, 0x1190, 0x8001, 0x7002, 0x2011,
14690 +       0x0001, 0x080c, 0x3b2b, 0x0904, 0x3b28, 0x080c, 0x3b2b, 0x0804,
14691 +       0x3b28, 0x00f6, 0x2079, 0x0300, 0x78bf, 0x0000, 0x00fe, 0x7810,
14692 +       0x7914, 0x782b, 0x0004, 0x7812, 0x7916, 0x2001, 0x0201, 0x200c,
14693 +       0x81ff, 0x0de8, 0x080c, 0x3a3f, 0x2009, 0x0001, 0x00f6, 0x2079,
14694 +       0x0300, 0x78b8, 0x00fe, 0xd0ec, 0x0110, 0x2009, 0x0011, 0x792a,
14695 +       0x00f8, 0x8001, 0x7002, 0x9184, 0x0880, 0x1140, 0x782c, 0xd0fc,
14696 +       0x1904, 0x3acd, 0x2011, 0x0001, 0x00b1, 0x0090, 0xa010, 0x9092,
14697 +       0x0004, 0x9086, 0x0015, 0x1120, 0xa000, 0xa05a, 0x2011, 0x0031,
14698 +       0xa212, 0xd1dc, 0x1960, 0x0828, 0x782b, 0x0004, 0x7003, 0x0000,
14699 +       0x00ee, 0x00fe, 0x0005, 0xa014, 0x9005, 0x0540, 0x8001, 0x0036,
14700 +       0x0096, 0xa016, 0xa058, 0x2048, 0xa010, 0x2009, 0x0025, 0x911a,
14701 +       0x831c, 0x831c, 0x938a, 0x0004, 0x1a0c, 0x0d84, 0x9398, 0x3b57,
14702 +       0x231d, 0x083f, 0x9080, 0x0004, 0x7a2a, 0x7100, 0x8108, 0x7102,
14703 +       0x009e, 0x003e, 0x908a, 0x0029, 0x1130, 0xa058, 0x2048, 0xa804,
14704 +       0xa05a, 0x2001, 0x0019, 0xa012, 0x9085, 0x0001, 0x0005, 0x3b76,
14705 +       0x3b6d, 0x3b64, 0x3b5b, 0xa964, 0x7902, 0xa968, 0x7906, 0xa96c,
14706 +       0x7912, 0xa970, 0x7916, 0x0005, 0xa974, 0x7902, 0xa978, 0x7906,
14707 +       0xa97c, 0x7912, 0xa980, 0x7916, 0x0005, 0xa984, 0x7902, 0xa988,
14708 +       0x7906, 0xa98c, 0x7912, 0xa990, 0x7916, 0x0005, 0xa994, 0x7902,
14709 +       0xa998, 0x7906, 0xa99c, 0x7912, 0xa9a0, 0x7916, 0x0005, 0x00f6,
14710 +       0x00e6, 0x0086, 0x2071, 0x1a33, 0x2079, 0x0090, 0x792c, 0xd1fc,
14711 +       0x01f0, 0x782b, 0x0002, 0x2940, 0x9026, 0x7000, 0x0002, 0x3ba7,
14712 +       0x3b92, 0x3b9e, 0x8001, 0x7002, 0xd19c, 0x1188, 0x2011, 0x0001,
14713 +       0x080c, 0x3b2b, 0x0160, 0x080c, 0x3b2b, 0x0048, 0x8001, 0x7002,
14714 +       0x782c, 0xd0fc, 0x1d30, 0x2011, 0x0001, 0x080c, 0x3b2b, 0x008e,
14715 +       0x00ee, 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x2061,
14716 +       0x0200, 0x2001, 0x1977, 0x2004, 0x601a, 0x2061, 0x0100, 0x2001,
14717 +       0x1976, 0x2004, 0x60ce, 0x6104, 0xc1ac, 0x6106, 0x2001, 0x002c,
14718 +       0x2004, 0x9005, 0x0518, 0x2038, 0x2001, 0x002e, 0x2024, 0x2001,
14719 +       0x002f, 0x201c, 0x080c, 0x441f, 0xa813, 0x0019, 0xaf16, 0x2900,
14720 +       0xa85a, 0x978a, 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010,
14721 +       0x2708, 0x903e, 0x0096, 0xa858, 0x2048, 0xa85c, 0x9080, 0x0019,
14722 +       0x009e, 0x04c1, 0x1d70, 0x2900, 0xa85a, 0x0080, 0x080c, 0x441f,
14723 +       0xa813, 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a, 0x2001, 0x002e,
14724 +       0x2004, 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a, 0x2061, 0x0090,
14725 +       0x2079, 0x0100, 0x2001, 0x1976, 0x2004, 0x6036, 0x2009, 0x0040,
14726 +       0x080c, 0x2014, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa86e,
14727 +       0x601a, 0x0006, 0x2001, 0x002b, 0x2004, 0xa872, 0x601e, 0x78c6,
14728 +       0x000e, 0x78ca, 0x9006, 0x600a, 0x600e, 0x008e, 0x00ce, 0x00ee,
14729 +       0x00fe, 0x0005, 0x00e6, 0x2071, 0x0080, 0xaa60, 0x22e8, 0x20a0,
14730 +       0x20e1, 0x0000, 0x2099, 0x0088, 0x702b, 0x0026, 0x7402, 0x7306,
14731 +       0x9006, 0x700a, 0x700e, 0x810b, 0x810b, 0x21a8, 0x810b, 0x7112,
14732 +       0x702b, 0x0041, 0x702c, 0xd0fc, 0x0de8, 0x702b, 0x0002, 0x702b,
14733 +       0x0040, 0x4005, 0x7400, 0x7304, 0x87ff, 0x0190, 0x0086, 0x0096,
14734 +       0x2940, 0x0086, 0x080c, 0x441f, 0x008e, 0xa058, 0x00a6, 0x2050,
14735 +       0x2900, 0xb006, 0xa05a, 0x00ae, 0x009e, 0x008e, 0x9085, 0x0001,
14736 +       0x00ee, 0x0005, 0x00e6, 0x2001, 0x002d, 0x2004, 0x9005, 0x0528,
14737 +       0x2038, 0x2001, 0x0030, 0x2024, 0x2001, 0x0031, 0x201c, 0x080c,
14738 +       0x441f, 0x2940, 0xa813, 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a,
14739 +       0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e,
14740 +       0x0096, 0xa858, 0x2048, 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c,
14741 +       0x3c1a, 0x1d68, 0x2900, 0xa85a, 0x00d8, 0x080c, 0x441f, 0x2940,
14742 +       0xa013, 0x0019, 0xa017, 0x0001, 0x2800, 0xa05a, 0x2001, 0x0030,
14743 +       0x2004, 0xa066, 0x2001, 0x0031, 0x2004, 0xa06a, 0x2001, 0x002a,
14744 +       0x2004, 0x9084, 0xfff8, 0xa06e, 0x2001, 0x002b, 0x2004, 0xa072,
14745 +       0x2001, 0x032a, 0x2003, 0x0004, 0x7884, 0xd0ac, 0x1180, 0x2001,
14746 +       0x0101, 0x200c, 0x918d, 0x0200, 0x2102, 0xa017, 0x0000, 0x2001,
14747 +       0x1a30, 0x2003, 0x0003, 0x2001, 0x032a, 0x2003, 0x0009, 0x2001,
14748 +       0x0300, 0x2003, 0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001,
14749 +       0x0004, 0x200c, 0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126,
14750 +       0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0x1840, 0x20e9, 0x0001,
14751 +       0x20a0, 0x9006, 0x4004, 0x2009, 0x013c, 0x200a, 0x012e, 0x7880,
14752 +       0x9086, 0x0052, 0x0108, 0x0005, 0x0804, 0x305f, 0x7d98, 0x7c9c,
14753 +       0x0804, 0x3154, 0x080c, 0x6877, 0x0110, 0x080c, 0x569e, 0x2069,
14754 +       0x1852, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98,
14755 +       0x2039, 0x0001, 0x080c, 0x4468, 0x701b, 0x3cef, 0x0005, 0x080c,
14756 +       0x4df9, 0x1130, 0x3b00, 0x3a08, 0xc194, 0xc095, 0x20d8, 0x21d0,
14757 +       0x2069, 0x1852, 0x6800, 0x9005, 0x0904, 0x3092, 0x6804, 0xd0ac,
14758 +       0x0118, 0xd0a4, 0x0904, 0x3092, 0xd094, 0x00c6, 0x2061, 0x0100,
14759 +       0x6104, 0x0138, 0x6200, 0x9292, 0x0005, 0x0218, 0x918c, 0xffdf,
14760 +       0x0010, 0x918d, 0x0020, 0x6106, 0x00ce, 0xd08c, 0x00c6, 0x2061,
14761 +       0x0100, 0x6104, 0x0118, 0x918d, 0x0010, 0x0010, 0x918c, 0xffef,
14762 +       0x6106, 0x00ce, 0xd084, 0x0158, 0x6a28, 0x928a, 0x007f, 0x1a04,
14763 +       0x3092, 0x9288, 0x2e6e, 0x210d, 0x918c, 0x00ff, 0x615e, 0xd0dc,
14764 +       0x0130, 0x6828, 0x908a, 0x007f, 0x1a04, 0x3092, 0x6056, 0x6888,
14765 +       0x9084, 0x0030, 0x8004, 0x8004, 0x8004, 0x8004, 0x0006, 0x2009,
14766 +       0x197e, 0x9080, 0x2539, 0x2005, 0x200a, 0x000e, 0x2009, 0x197f,
14767 +       0x9080, 0x253d, 0x2005, 0x200a, 0x6808, 0x908a, 0x0100, 0x0a04,
14768 +       0x3092, 0x908a, 0x0841, 0x1a04, 0x3092, 0x9084, 0x0007, 0x1904,
14769 +       0x3092, 0x680c, 0x9005, 0x0904, 0x3092, 0x6810, 0x9005, 0x0904,
14770 +       0x3092, 0x6848, 0x6940, 0x910a, 0x1a04, 0x3092, 0x8001, 0x0904,
14771 +       0x3092, 0x684c, 0x6944, 0x910a, 0x1a04, 0x3092, 0x8001, 0x0904,
14772 +       0x3092, 0x6980, 0xd1e4, 0x0140, 0x00c6, 0x2061, 0x0100, 0x6004,
14773 +       0x9085, 0x0100, 0x6006, 0x00ce, 0x2009, 0x194e, 0x200b, 0x0000,
14774 +       0x2001, 0x1874, 0x2004, 0xd0c4, 0x0140, 0x7884, 0x200a, 0x2009,
14775 +       0x017f, 0x200a, 0x3b00, 0xc085, 0x20d8, 0x6814, 0x908c, 0x00ff,
14776 +       0x6146, 0x8007, 0x9084, 0x00ff, 0x604a, 0x080c, 0x6b71, 0x080c,
14777 +       0x5f63, 0x080c, 0x5f97, 0x6808, 0x602a, 0x080c, 0x1f86, 0x2009,
14778 +       0x0170, 0x200b, 0x0080, 0xa001, 0xa001, 0x200b, 0x0000, 0x0036,
14779 +       0x6b08, 0x080c, 0x24a0, 0x003e, 0x6000, 0x9086, 0x0000, 0x1904,
14780 +       0x3e96, 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217,
14781 +       0x831f, 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148,
14782 +       0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f,
14783 +       0x0010, 0x9084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, 0x8007,
14784 +       0x810f, 0x8217, 0x831f, 0x20a9, 0x0004, 0x20a1, 0x1980, 0x20e9,
14785 +       0x0001, 0x4001, 0x20a9, 0x0004, 0x20a1, 0x199a, 0x20e9, 0x0001,
14786 +       0x4001, 0x080c, 0x791c, 0x00c6, 0x900e, 0x20a9, 0x0001, 0x6b70,
14787 +       0xd384, 0x0510, 0x0068, 0x2009, 0x0100, 0x210c, 0x918e, 0x0008,
14788 +       0x1110, 0x839d, 0x0010, 0x83f5, 0x3e18, 0x12b0, 0x3508, 0x8109,
14789 +       0x080c, 0x70f4, 0x6878, 0x6016, 0x6874, 0x2008, 0x9084, 0xff00,
14790 +       0x8007, 0x600a, 0x9184, 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003,
14791 +       0x0003, 0x0010, 0x6003, 0x0001, 0x1f04, 0x3deb, 0x00ce, 0x00c6,
14792 +       0x2061, 0x1969, 0x6a88, 0x9284, 0xc000, 0x2010, 0x9286, 0x0000,
14793 +       0x1158, 0x2063, 0x0000, 0x2001, 0x0001, 0x080c, 0x2747, 0x2001,
14794 +       0x0001, 0x080c, 0x272a, 0x0088, 0x9286, 0x4000, 0x1148, 0x2063,
14795 +       0x0001, 0x9006, 0x080c, 0x2747, 0x9006, 0x080c, 0x272a, 0x0028,
14796 +       0x9286, 0x8000, 0x1d30, 0x2063, 0x0002, 0x00ce, 0x00e6, 0x2c70,
14797 +       0x080c, 0x0e3b, 0x00ee, 0x6888, 0xd0ec, 0x0130, 0x2011, 0x0114,
14798 +       0x2204, 0x9085, 0x0100, 0x2012, 0x6a80, 0x9284, 0x0030, 0x9086,
14799 +       0x0030, 0x1128, 0x9294, 0xffcf, 0x9295, 0x0020, 0x6a82, 0x2001,
14800 +       0x194b, 0x6a80, 0x9294, 0x0030, 0x928e, 0x0000, 0x0170, 0x928e,
14801 +       0x0010, 0x0118, 0x928e, 0x0020, 0x0140, 0x2003, 0xaaaa, 0x080c,
14802 +       0x2515, 0x2001, 0x193c, 0x2102, 0x0008, 0x2102, 0x00c6, 0x2061,
14803 +       0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c, 0x6877,
14804 +       0x0128, 0x080c, 0x46fa, 0x0110, 0x080c, 0x2466, 0x60d0, 0x9005,
14805 +       0x01c0, 0x6003, 0x0001, 0x2009, 0x3e7e, 0x00d0, 0x080c, 0x6877,
14806 +       0x1168, 0x2011, 0x6739, 0x080c, 0x781a, 0x2011, 0x672c, 0x080c,
14807 +       0x78e7, 0x080c, 0x6b45, 0x080c, 0x67be, 0x0040, 0x080c, 0x55a0,
14808 +       0x0028, 0x6003, 0x0004, 0x2009, 0x3e96, 0x0010, 0x0804, 0x305f,
14809 +       0x2001, 0x0170, 0x2004, 0x9084, 0x00ff, 0x9086, 0x004c, 0x1118,
14810 +       0x2091, 0x30bd, 0x0817, 0x2091, 0x303d, 0x0817, 0x6000, 0x9086,
14811 +       0x0000, 0x0904, 0x308f, 0x2069, 0x1852, 0x7890, 0x6842, 0x7894,
14812 +       0x6846, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98,
14813 +       0x2039, 0x0001, 0x0804, 0x446b, 0x9006, 0x080c, 0x2466, 0x81ff,
14814 +       0x1904, 0x308f, 0x080c, 0x6877, 0x1168, 0x080c, 0x6b40, 0x080c,
14815 +       0x56d9, 0x080c, 0x2e69, 0x0118, 0x6130, 0xc18d, 0x6132, 0x080c,
14816 +       0x67be, 0x0020, 0x080c, 0x569e, 0x080c, 0x55a0, 0x0804, 0x305f,
14817 +       0x81ff, 0x1904, 0x308f, 0x080c, 0x6877, 0x1110, 0x0804, 0x308f,
14818 +       0x618c, 0x81ff, 0x01a8, 0x704b, 0x0000, 0x2001, 0x1c80, 0x2009,
14819 +       0x0040, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0126, 0x2091, 0x8000,
14820 +       0x2039, 0x0001, 0x080c, 0x446b, 0x701b, 0x305d, 0x012e, 0x0005,
14821 +       0x704b, 0x0001, 0x00d6, 0x2069, 0x1c80, 0x20a9, 0x0040, 0x20e9,
14822 +       0x0001, 0x20a1, 0x1c80, 0x2019, 0xffff, 0x4304, 0x6554, 0x9588,
14823 +       0x2e6e, 0x210d, 0x918c, 0x00ff, 0x216a, 0x900e, 0x2011, 0x0002,
14824 +       0x2100, 0x9506, 0x01a8, 0x080c, 0x5c0d, 0x1190, 0xb814, 0x821c,
14825 +       0x0238, 0x9398, 0x1c80, 0x9085, 0xff00, 0x8007, 0x201a, 0x0038,
14826 +       0x9398, 0x1c80, 0x2324, 0x94a4, 0xff00, 0x9405, 0x201a, 0x8210,
14827 +       0x8108, 0x9182, 0x0080, 0x1208, 0x0c18, 0x8201, 0x8007, 0x2d0c,
14828 +       0x9105, 0x206a, 0x00de, 0x20a9, 0x0040, 0x20a1, 0x1c80, 0x2099,
14829 +       0x1c80, 0x080c, 0x5634, 0x0804, 0x3ee5, 0x080c, 0x4452, 0x0904,
14830 +       0x3092, 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804, 0x308f,
14831 +       0x080c, 0x4dea, 0xd0b4, 0x0558, 0x7884, 0x908e, 0x007e, 0x0538,
14832 +       0x908e, 0x007f, 0x0520, 0x908e, 0x0080, 0x0508, 0x080c, 0x2e64,
14833 +       0x1148, 0xb800, 0xd08c, 0x11d8, 0xb804, 0x9084, 0x00ff, 0x9086,
14834 +       0x0006, 0x11a8, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c,
14835 +       0xb258, 0x1120, 0x2009, 0x0003, 0x0804, 0x308f, 0x7007, 0x0003,
14836 +       0x701b, 0x3f73, 0x0005, 0x080c, 0x4452, 0x0904, 0x3092, 0x20a9,
14837 +       0x002b, 0xb8b4, 0x20e0, 0xb8b8, 0x2098, 0xa860, 0x20e8, 0xa85c,
14838 +       0x9080, 0x0002, 0x20a0, 0x4003, 0x20a9, 0x0008, 0x9080, 0x0006,
14839 +       0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x080c,
14840 +       0x0f2b, 0x0070, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x000a, 0x20a0,
14841 +       0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x000a, 0x2098, 0x080c, 0x0f2b,
14842 +       0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080,
14843 +       0x0002, 0x2009, 0x002b, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804,
14844 +       0x446b, 0x81ff, 0x1904, 0x308f, 0x080c, 0x4436, 0x0904, 0x3092,
14845 +       0x080c, 0x5d7f, 0x0904, 0x308f, 0x0058, 0xa878, 0x9005, 0x0120,
14846 +       0x2009, 0x0004, 0x0804, 0x308f, 0xa974, 0xaa94, 0x0804, 0x305f,
14847 +       0x080c, 0x4df2, 0x0904, 0x305f, 0x701b, 0x3fbd, 0x7007, 0x0003,
14848 +       0x0005, 0x81ff, 0x1904, 0x308f, 0x7888, 0x908a, 0x1000, 0x1a04,
14849 +       0x3092, 0x080c, 0x4452, 0x0904, 0x3092, 0x080c, 0x5e04, 0x0904,
14850 +       0x308f, 0x2019, 0x0004, 0x900e, 0x080c, 0x5d91, 0x0904, 0x308f,
14851 +       0x7984, 0x7a88, 0x0499, 0x08e0, 0xa89c, 0x908a, 0x1000, 0x12c8,
14852 +       0x080c, 0x4450, 0x01b0, 0x080c, 0x5e04, 0x2009, 0x0002, 0x0168,
14853 +       0x2009, 0x0002, 0x2019, 0x0004, 0x080c, 0x5d91, 0x2009, 0x0003,
14854 +       0x0120, 0xa998, 0xaa9c, 0x00d1, 0x0060, 0xa897, 0x4005, 0xa99a,
14855 +       0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030,
14856 +       0x0005, 0xa897, 0x4000, 0x080c, 0x4df2, 0x0110, 0x9006, 0x0018,
14857 +       0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x9186, 0x00ff,
14858 +       0x0110, 0x0071, 0x0060, 0x2029, 0x007e, 0x2061, 0x1800, 0x6454,
14859 +       0x2400, 0x9506, 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005,
14860 +       0x080c, 0x5c0d, 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0x9108,
14861 +       0x080c, 0x7826, 0x0005, 0x81ff, 0x1904, 0x308f, 0x080c, 0x4436,
14862 +       0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904, 0x308f, 0x080c, 0x5d88,
14863 +       0x0904, 0x308f, 0x0804, 0x3fc8, 0x81ff, 0x1904, 0x308f, 0x080c,
14864 +       0x4436, 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904, 0x308f, 0x080c,
14865 +       0x5d76, 0x0904, 0x308f, 0x0804, 0x3fc8, 0x6100, 0x0804, 0x305f,
14866 +       0x080c, 0x4452, 0x0904, 0x3092, 0x080c, 0x4dfe, 0x1904, 0x308f,
14867 +       0x79a8, 0xd184, 0x1158, 0xb834, 0x8007, 0x789e, 0xb830, 0x8007,
14868 +       0x789a, 0xbb2c, 0x831f, 0xba28, 0x8217, 0x0050, 0xb824, 0x8007,
14869 +       0x789e, 0xb820, 0x8007, 0x789a, 0xbb1c, 0x831f, 0xba18, 0x8217,
14870 +       0xb900, 0x918c, 0x0200, 0x0804, 0x305f, 0x78a8, 0x909c, 0x0003,
14871 +       0xd0b4, 0x1150, 0x939a, 0x0003, 0x1a04, 0x308f, 0x6254, 0x9294,
14872 +       0x00ff, 0x7884, 0x9206, 0x1560, 0x2031, 0x1848, 0x2009, 0x013c,
14873 +       0x2136, 0x2001, 0x1840, 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c,
14874 +       0x7d98, 0x2039, 0x0001, 0x0006, 0x78a8, 0x9084, 0x0080, 0x1118,
14875 +       0x000e, 0x0804, 0x446b, 0x000e, 0x2031, 0x0000, 0x2061, 0x18ac,
14876 +       0x2c44, 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, 0xa496,
14877 +       0xa59a, 0x080c, 0x108c, 0x7007, 0x0002, 0x701b, 0x40df, 0x0005,
14878 +       0x81ff, 0x1904, 0x308f, 0x080c, 0x4452, 0x0904, 0x3092, 0x080c,
14879 +       0x5f2d, 0x1904, 0x308f, 0x00c6, 0x080c, 0x441f, 0x00ce, 0x0904,
14880 +       0x308f, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xb1fe,
14881 +       0x0904, 0x308f, 0x7007, 0x0003, 0x701b, 0x40e3, 0x0005, 0x080c,
14882 +       0x3cbf, 0x0804, 0x305f, 0xa830, 0x9086, 0x0100, 0x0904, 0x308f,
14883 +       0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080,
14884 +       0x001b, 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804,
14885 +       0x446b, 0x9006, 0x080c, 0x2466, 0x78a8, 0x9084, 0x00ff, 0x9086,
14886 +       0x00ff, 0x0118, 0x81ff, 0x1904, 0x308f, 0x080c, 0x6877, 0x0110,
14887 +       0x080c, 0x569e, 0x7888, 0x908a, 0x1000, 0x1a04, 0x3092, 0x7984,
14888 +       0x9186, 0x00ff, 0x0138, 0x9182, 0x007f, 0x1a04, 0x3092, 0x2100,
14889 +       0x080c, 0x2430, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2061,
14890 +       0x19c7, 0x601b, 0x0000, 0x601f, 0x0000, 0x080c, 0x6877, 0x1158,
14891 +       0x080c, 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001, 0x080c, 0x68c0,
14892 +       0x080c, 0x67be, 0x00d0, 0x080c, 0x94da, 0x2061, 0x0100, 0x2001,
14893 +       0x1816, 0x2004, 0x9084, 0x00ff, 0x810f, 0x9105, 0x604a, 0x6043,
14894 +       0x0090, 0x6043, 0x0010, 0x2009, 0x1966, 0x200b, 0x0000, 0x2009,
14895 +       0x002d, 0x2011, 0x55ca, 0x080c, 0x78a5, 0x7984, 0x080c, 0x6877,
14896 +       0x1110, 0x2009, 0x00ff, 0x7a88, 0x080c, 0x401e, 0x012e, 0x00ce,
14897 +       0x002e, 0x0804, 0x305f, 0x7984, 0x080c, 0x5bb0, 0x2b08, 0x1904,
14898 +       0x3092, 0x0804, 0x305f, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804,
14899 +       0x308f, 0x60d8, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005,
14900 +       0x0804, 0x308f, 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804,
14901 +       0x308f, 0x7984, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080,
14902 +       0x0019, 0x7026, 0xaf60, 0x7732, 0x080c, 0x4468, 0x701b, 0x4189,
14903 +       0x0005, 0x2009, 0x0080, 0x080c, 0x5c0d, 0x1118, 0x080c, 0x5f2d,
14904 +       0x0120, 0x2021, 0x400a, 0x0804, 0x3061, 0x00d6, 0x0096, 0xa964,
14905 +       0xaa6c, 0xab70, 0xac74, 0xad78, 0xae7c, 0xa884, 0x90be, 0x0100,
14906 +       0x0904, 0x4222, 0x90be, 0x0112, 0x0904, 0x4222, 0x90be, 0x0113,
14907 +       0x0904, 0x4222, 0x90be, 0x0114, 0x0904, 0x4222, 0x90be, 0x0117,
14908 +       0x0904, 0x4222, 0x90be, 0x011a, 0x0904, 0x4222, 0x90be, 0x011c,
14909 +       0x0904, 0x4222, 0x90be, 0x0121, 0x0904, 0x4209, 0x90be, 0x0131,
14910 +       0x0904, 0x4209, 0x90be, 0x0171, 0x0904, 0x4222, 0x90be, 0x0173,
14911 +       0x0904, 0x4222, 0x90be, 0x01a1, 0x1128, 0xa894, 0x8007, 0xa896,
14912 +       0x0804, 0x422d, 0x90be, 0x0212, 0x0904, 0x4216, 0x90be, 0x0213,
14913 +       0x05e8, 0x90be, 0x0214, 0x0500, 0x90be, 0x0217, 0x0188, 0x90be,
14914 +       0x021a, 0x1120, 0xa89c, 0x8007, 0xa89e, 0x04e0, 0x90be, 0x021f,
14915 +       0x05c8, 0x90be, 0x0300, 0x05b0, 0x009e, 0x00de, 0x0804, 0x3092,
14916 +       0x7024, 0x9080, 0x0010, 0x2098, 0x20a0, 0x7030, 0x20e0, 0x20e8,
14917 +       0x20a9, 0x0007, 0x080c, 0x426b, 0x7024, 0x9080, 0x000e, 0x2098,
14918 +       0x20a0, 0x7030, 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, 0x426b,
14919 +       0x00c8, 0x7024, 0x9080, 0x000c, 0x2098, 0x20a0, 0x7030, 0x20e0,
14920 +       0x20e8, 0x20a9, 0x0001, 0x080c, 0x4278, 0x00b8, 0x7024, 0x9080,
14921 +       0x000e, 0x2098, 0x20a0, 0x7030, 0x20e0, 0x20e8, 0x20a9, 0x0001,
14922 +       0x080c, 0x4278, 0x7024, 0x9080, 0x000c, 0x2098, 0x20a0, 0x7030,
14923 +       0x20e0, 0x20e8, 0x20a9, 0x0001, 0x04f1, 0x00c6, 0x080c, 0x441f,
14924 +       0x0550, 0xa868, 0xc0fd, 0xa86a, 0xa867, 0x0119, 0x9006, 0xa882,
14925 +       0xa87f, 0x0020, 0xa88b, 0x0001, 0x810b, 0xa9ae, 0xa8b2, 0xaab6,
14926 +       0xabba, 0xacbe, 0xadc2, 0xa9c6, 0xa8ca, 0x00ce, 0x009e, 0x00de,
14927 +       0xa866, 0xa822, 0xa868, 0xc0fd, 0xa86a, 0xa804, 0x2048, 0x080c,
14928 +       0xb219, 0x1120, 0x2009, 0x0003, 0x0804, 0x308f, 0x7007, 0x0003,
14929 +       0x701b, 0x4262, 0x0005, 0x00ce, 0x009e, 0x00de, 0x2009, 0x0002,
14930 +       0x0804, 0x308f, 0xa820, 0x9086, 0x8001, 0x1904, 0x305f, 0x2009,
14931 +       0x0004, 0x0804, 0x308f, 0x0016, 0x0026, 0x3510, 0x20a9, 0x0002,
14932 +       0x4002, 0x4104, 0x4004, 0x8211, 0x1dc8, 0x002e, 0x001e, 0x0005,
14933 +       0x0016, 0x0026, 0x0036, 0x0046, 0x3520, 0x20a9, 0x0004, 0x4002,
14934 +       0x4304, 0x4204, 0x4104, 0x4004, 0x8421, 0x1db8, 0x004e, 0x003e,
14935 +       0x002e, 0x001e, 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804,
14936 +       0x308f, 0x60d8, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005,
14937 +       0x0804, 0x308f, 0x7984, 0x78a8, 0x2040, 0x080c, 0x94d3, 0x1120,
14938 +       0x9182, 0x007f, 0x0a04, 0x3092, 0x9186, 0x00ff, 0x0904, 0x3092,
14939 +       0x9182, 0x0800, 0x1a04, 0x3092, 0x7a8c, 0x7b88, 0x6074, 0x9306,
14940 +       0x1140, 0x6078, 0x924e, 0x0904, 0x3092, 0x99cc, 0xff00, 0x0904,
14941 +       0x3092, 0x080c, 0x435a, 0x0538, 0x90c6, 0x4000, 0x1170, 0x00c6,
14942 +       0x0006, 0x900e, 0x080c, 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc,
14943 +       0x0108, 0xc18d, 0x000e, 0x00ce, 0x0098, 0x90c6, 0x4007, 0x1110,
14944 +       0x2408, 0x0070, 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0040,
14945 +       0x90c6, 0x4009, 0x1108, 0x0020, 0x2001, 0x4005, 0x2009, 0x000a,
14946 +       0x2020, 0x0804, 0x3061, 0x2b00, 0x7022, 0x0016, 0x00b6, 0x00c6,
14947 +       0x00e6, 0x2c70, 0x080c, 0x95a1, 0x0904, 0x4330, 0x2b00, 0x6012,
14948 +       0x080c, 0xb4e6, 0x2e58, 0x00ee, 0x00e6, 0x00c6, 0x080c, 0x441f,
14949 +       0x00ce, 0x2b70, 0x1150, 0x080c, 0x9554, 0x00ee, 0x00ce, 0x00be,
14950 +       0x001e, 0x2009, 0x0002, 0x0804, 0x308f, 0x900e, 0xa966, 0xa96a,
14951 +       0x2900, 0x6016, 0xa932, 0xa868, 0xc0fd, 0xd88c, 0x0108, 0xc0f5,
14952 +       0xa86a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2d1a, 0x012e, 0x6023,
14953 +       0x0001, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0002, 0x080c, 0x5b61,
14954 +       0x2009, 0x0002, 0x080c, 0x95ce, 0x78a8, 0xd094, 0x0138, 0x00ee,
14955 +       0x7020, 0x00e6, 0x2058, 0xb8bc, 0xc08d, 0xb8be, 0x9085, 0x0001,
14956 +       0x00ee, 0x00ce, 0x00be, 0x001e, 0x1120, 0x2009, 0x0003, 0x0804,
14957 +       0x308f, 0x7007, 0x0003, 0x701b, 0x433e, 0x0005, 0xa830, 0x9086,
14958 +       0x0100, 0x7020, 0x2058, 0x1138, 0x2009, 0x0004, 0xba04, 0x9294,
14959 +       0x00ff, 0x0804, 0x4d49, 0x900e, 0xa868, 0xd0f4, 0x1904, 0x305f,
14960 +       0x080c, 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d,
14961 +       0x0804, 0x305f, 0x00e6, 0x00d6, 0x2029, 0x0000, 0x080c, 0x94d3,
14962 +       0x0138, 0x2021, 0x0000, 0x20a9, 0x0800, 0x2071, 0x1000, 0x0030,
14963 +       0x2021, 0x0080, 0x20a9, 0x0780, 0x2071, 0x1080, 0x2e04, 0x9005,
14964 +       0x1130, 0x2100, 0x9406, 0x1550, 0x2428, 0xc5fd, 0x0438, 0x2058,
14965 +       0xbf10, 0x2700, 0x9306, 0x11a0, 0xbe14, 0x2600, 0x9206, 0x1180,
14966 +       0x2400, 0x9106, 0x1150, 0xd884, 0x0550, 0xd894, 0x1540, 0x080c,
14967 +       0x5f2d, 0x1528, 0x2001, 0x4000, 0x0418, 0x2001, 0x4007, 0x0400,
14968 +       0x2400, 0x9106, 0x1158, 0xbe14, 0x87ff, 0x1128, 0x86ff, 0x09e0,
14969 +       0x080c, 0x94d3, 0x19c8, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70,
14970 +       0x1f04, 0x436e, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001,
14971 +       0x0001, 0x0030, 0x080c, 0x5bb0, 0x1dd0, 0xbb12, 0xba16, 0x9006,
14972 +       0x9005, 0x00de, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x308f, 0x080c,
14973 +       0x441f, 0x0904, 0x308f, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a,
14974 +       0x7884, 0x9005, 0x0904, 0x3092, 0x9096, 0x00ff, 0x0120, 0x9092,
14975 +       0x0004, 0x1a04, 0x3092, 0x2010, 0x2918, 0x080c, 0x2cc0, 0x0904,
14976 +       0x308f, 0x7007, 0x0003, 0x701b, 0x43d6, 0x0005, 0xa830, 0x9086,
14977 +       0x0100, 0x0904, 0x308f, 0x0804, 0x305f, 0x7984, 0x080c, 0x94d3,
14978 +       0x1120, 0x9182, 0x0080, 0x0a04, 0x3092, 0x9186, 0x00ff, 0x0904,
14979 +       0x3092, 0x9182, 0x0800, 0x1a04, 0x3092, 0x2001, 0x9000, 0x080c,
14980 +       0x4da2, 0x1904, 0x308f, 0x0804, 0x305f, 0xa998, 0x080c, 0x94d3,
14981 +       0x1118, 0x9182, 0x0080, 0x0280, 0x9186, 0x00ff, 0x0168, 0x9182,
14982 +       0x0800, 0x1250, 0x2001, 0x9000, 0x080c, 0x4da2, 0x11a8, 0x0060,
14983 +       0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085,
14984 +       0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0x900e, 0x9085,
14985 +       0x0001, 0x2001, 0x0000, 0x0005, 0x2009, 0x000a, 0x0c48, 0x080c,
14986 +       0x0fae, 0x0198, 0x9006, 0xa802, 0x7010, 0x9005, 0x1120, 0x2900,
14987 +       0x7012, 0x7016, 0x0040, 0x7014, 0xa802, 0x0086, 0x2040, 0x2900,
14988 +       0xa006, 0x7016, 0x008e, 0x9085, 0x0001, 0x0005, 0x7984, 0x080c,
14989 +       0x5c0d, 0x1130, 0x7e88, 0x9684, 0x3fff, 0x9082, 0x4000, 0x0208,
14990 +       0x905e, 0x8bff, 0x0005, 0xa998, 0x080c, 0x5c0d, 0x1130, 0xae9c,
14991 +       0x9684, 0x3fff, 0x9082, 0x4000, 0x0208, 0x905e, 0x8bff, 0x0005,
14992 +       0xae98, 0x0008, 0x7e84, 0x2608, 0x080c, 0x5c0d, 0x1108, 0x0008,
14993 +       0x905e, 0x8bff, 0x0005, 0x0016, 0x7110, 0x81ff, 0x0128, 0x2148,
14994 +       0xa904, 0x080c, 0x0fe0, 0x0cc8, 0x7112, 0x7116, 0x001e, 0x0005,
14995 +       0x2031, 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0x18ac, 0x2c44,
14996 +       0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, 0xa496, 0xa59a,
14997 +       0x080c, 0x108c, 0x7007, 0x0002, 0x701b, 0x305f, 0x0005, 0x00f6,
14998 +       0x0126, 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0x18a4, 0x2004,
14999 +       0x9005, 0x1188, 0x0e04, 0x449b, 0x7a36, 0x7833, 0x0012, 0x7a82,
15000 +       0x7b86, 0x7c8a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084,
15001 +       0x190c, 0x113e, 0x0408, 0x0016, 0x00c6, 0x00e6, 0x2071, 0x1893,
15002 +       0x7144, 0x9182, 0x0010, 0x0218, 0x7034, 0x2060, 0x0078, 0x7034,
15003 +       0x90e0, 0x0004, 0x9c82, 0x18ee, 0x0210, 0x2061, 0x18ae, 0x2c00,
15004 +       0x7036, 0x81ff, 0x1108, 0x703a, 0x8108, 0x7146, 0x2262, 0x6306,
15005 +       0x640a, 0x00ee, 0x00ce, 0x001e, 0x012e, 0x00fe, 0x0005, 0x00e6,
15006 +       0x2071, 0x1893, 0x7044, 0x9005, 0x0590, 0x0126, 0x2091, 0x8000,
15007 +       0x0e04, 0x44f6, 0x00f6, 0x2079, 0x0000, 0x00c6, 0x7038, 0x2060,
15008 +       0x2c04, 0x7836, 0x7833, 0x0012, 0x7882, 0x6004, 0x7886, 0x6008,
15009 +       0x788a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c,
15010 +       0x113e, 0x7044, 0x8001, 0x7046, 0x9005, 0x1130, 0x7037, 0x18ae,
15011 +       0x703b, 0x18ae, 0x00ce, 0x0048, 0x9c80, 0x0004, 0x90fa, 0x18ee,
15012 +       0x0210, 0x2001, 0x18ae, 0x703a, 0x00ce, 0x00fe, 0x012e, 0x00ee,
15013 +       0x0005, 0x0026, 0x080c, 0x4dea, 0xd0c4, 0x0120, 0x2011, 0x8014,
15014 +       0x080c, 0x447f, 0x002e, 0x0005, 0x81ff, 0x1904, 0x308f, 0x0126,
15015 +       0x2091, 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c,
15016 +       0x6877, 0x1158, 0x080c, 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001,
15017 +       0x080c, 0x68c0, 0x080c, 0x67be, 0x0010, 0x080c, 0x55a0, 0x012e,
15018 +       0x0804, 0x305f, 0x7884, 0x2008, 0x918c, 0xfffd, 0x1128, 0x61e4,
15019 +       0x910d, 0x61e6, 0x0804, 0x305f, 0x0804, 0x3092, 0x81ff, 0x1904,
15020 +       0x308f, 0x080c, 0x4dfe, 0x1904, 0x308f, 0x080c, 0x5f25, 0x1904,
15021 +       0x308f, 0x080c, 0x2e64, 0x0128, 0x7984, 0x080c, 0x5bb0, 0x1904,
15022 +       0x3092, 0x080c, 0x4452, 0x0904, 0x3092, 0x2b00, 0x7022, 0x080c,
15023 +       0x5f2d, 0x7888, 0x1170, 0x9084, 0x0005, 0x1158, 0x900e, 0x080c,
15024 +       0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804,
15025 +       0x305f, 0x080c, 0x441f, 0x0904, 0x308f, 0x9006, 0xa866, 0xa832,
15026 +       0xa868, 0xc0fd, 0xa86a, 0x080c, 0xb2a8, 0x0904, 0x308f, 0x7888,
15027 +       0xd094, 0x0118, 0xb8bc, 0xc08d, 0xb8be, 0x7007, 0x0003, 0x701b,
15028 +       0x45bd, 0x0005, 0x2061, 0x1800, 0x080c, 0x4dfe, 0x2009, 0x0007,
15029 +       0x1570, 0x080c, 0x5f25, 0x2009, 0x0008, 0x1548, 0x080c, 0x2e64,
15030 +       0x0120, 0xa998, 0x080c, 0x5bb0, 0x1530, 0x080c, 0x4450, 0x0518,
15031 +       0x080c, 0x5f2d, 0xa89c, 0x1168, 0x9084, 0x0005, 0x1150, 0x900e,
15032 +       0x080c, 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d,
15033 +       0x00d0, 0xa868, 0xc0fc, 0xa86a, 0x080c, 0xb2a8, 0x11e0, 0xa89c,
15034 +       0xd094, 0x0118, 0xb8bc, 0xc08d, 0xb8be, 0x2009, 0x0003, 0xa897,
15035 +       0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001,
15036 +       0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0xa99a, 0x9006, 0x918d,
15037 +       0x0001, 0x2008, 0x0005, 0x9006, 0x0005, 0xa830, 0x9086, 0x0100,
15038 +       0x7020, 0x2058, 0x1110, 0x0804, 0x4d49, 0x900e, 0x080c, 0x5e2d,
15039 +       0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x305f,
15040 +       0x080c, 0x4dfe, 0x1904, 0x308f, 0x7f84, 0x7a8c, 0x7b88, 0x7c9c,
15041 +       0x7d98, 0x080c, 0x441f, 0x0904, 0x308f, 0x900e, 0x2130, 0x7122,
15042 +       0x712e, 0xa860, 0x20e8, 0x7032, 0xa85c, 0x9080, 0x0005, 0x7026,
15043 +       0x20a0, 0x080c, 0x5c0d, 0x1904, 0x464d, 0x080c, 0x5f2d, 0x0120,
15044 +       0x080c, 0x5f35, 0x1904, 0x464d, 0x080c, 0x5f25, 0x1130, 0x080c,
15045 +       0x5e2d, 0x1118, 0xd79c, 0x0904, 0x464d, 0xd794, 0x1110, 0xd784,
15046 +       0x01a8, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x3400,
15047 +       0xd794, 0x0160, 0x20a9, 0x0008, 0x4003, 0x2098, 0x20a0, 0x3d00,
15048 +       0x20e0, 0x20a9, 0x0002, 0x080c, 0x4278, 0x0048, 0x20a9, 0x0004,
15049 +       0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x4278, 0x4104,
15050 +       0xd794, 0x0528, 0xb8b4, 0x20e0, 0xb8b8, 0x2060, 0x9c80, 0x0000,
15051 +       0x2098, 0x20a9, 0x0002, 0x4003, 0x9c80, 0x0003, 0x2098, 0x20a9,
15052 +       0x0001, 0x4005, 0x9c80, 0x0004, 0x2098, 0x3400, 0x20a9, 0x0002,
15053 +       0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x426b, 0x9c80,
15054 +       0x0026, 0x2098, 0xb8b4, 0x20e0, 0x20a9, 0x0002, 0x4003, 0xd794,
15055 +       0x0110, 0x96b0, 0x000b, 0x96b0, 0x0005, 0x8108, 0x080c, 0x94d3,
15056 +       0x0118, 0x9186, 0x0800, 0x0040, 0xd78c, 0x0120, 0x9186, 0x0800,
15057 +       0x0170, 0x0018, 0x9186, 0x007e, 0x0150, 0xd794, 0x0118, 0x9686,
15058 +       0x0020, 0x0010, 0x9686, 0x0028, 0x0150, 0x0804, 0x45e9, 0x86ff,
15059 +       0x1120, 0x7120, 0x810b, 0x0804, 0x305f, 0x702f, 0x0001, 0x711e,
15060 +       0x7020, 0x9600, 0x7022, 0x772a, 0x2061, 0x18ac, 0x2c44, 0xa06b,
15061 +       0x0000, 0xa67a, 0x7030, 0xa072, 0x7024, 0xa076, 0xa28e, 0xa392,
15062 +       0xa496, 0xa59a, 0x080c, 0x108c, 0x7007, 0x0002, 0x701b, 0x4689,
15063 +       0x0005, 0x702c, 0x9005, 0x1180, 0x711c, 0x7024, 0x20a0, 0x7728,
15064 +       0x9036, 0x7030, 0x20e8, 0x2061, 0x18ac, 0x2c44, 0xa28c, 0xa390,
15065 +       0xa494, 0xa598, 0x0804, 0x45e9, 0x7120, 0x810b, 0x0804, 0x305f,
15066 +       0x2029, 0x007e, 0x7984, 0x7a88, 0x7b8c, 0x7c98, 0x9184, 0xff00,
15067 +       0x8007, 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04, 0x3092,
15068 +       0x9184, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04,
15069 +       0x3092, 0x9284, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x3092,
15070 +       0x9502, 0x0a04, 0x3092, 0x9284, 0x00ff, 0x90e2, 0x0020, 0x0a04,
15071 +       0x3092, 0x9502, 0x0a04, 0x3092, 0x9384, 0xff00, 0x8007, 0x90e2,
15072 +       0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04, 0x3092, 0x9384, 0x00ff,
15073 +       0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04, 0x3092, 0x9484,
15074 +       0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04,
15075 +       0x3092, 0x9484, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502,
15076 +       0x0a04, 0x3092, 0x2061, 0x1956, 0x6102, 0x6206, 0x630a, 0x640e,
15077 +       0x0804, 0x305f, 0x0006, 0x080c, 0x4dea, 0xd0cc, 0x000e, 0x0005,
15078 +       0x0006, 0x080c, 0x4dee, 0xd0bc, 0x000e, 0x0005, 0x616c, 0x7a84,
15079 +       0x6300, 0x82ff, 0x1118, 0x7986, 0x0804, 0x305f, 0x83ff, 0x1904,
15080 +       0x3092, 0x2001, 0xfff0, 0x9200, 0x1a04, 0x3092, 0x2019, 0xffff,
15081 +       0x6070, 0x9302, 0x9200, 0x0a04, 0x3092, 0x7986, 0x626e, 0x0804,
15082 +       0x305f, 0x080c, 0x4dfe, 0x1904, 0x308f, 0x7c88, 0x7d84, 0x7e98,
15083 +       0x7f8c, 0x080c, 0x441f, 0x0904, 0x308f, 0x900e, 0x901e, 0x7322,
15084 +       0x732e, 0xa860, 0x20e8, 0x7032, 0xa85c, 0x9080, 0x0003, 0x7026,
15085 +       0x20a0, 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x5f2d,
15086 +       0x0118, 0x080c, 0x5f35, 0x1148, 0x20a9, 0x0001, 0xb814, 0x4004,
15087 +       0xb810, 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800,
15088 +       0x0120, 0x9386, 0x003c, 0x0170, 0x0c20, 0x83ff, 0x1148, 0x7220,
15089 +       0x900e, 0x2001, 0x0003, 0x080c, 0x7a4b, 0x2208, 0x0804, 0x305f,
15090 +       0x702f, 0x0001, 0x711e, 0x7020, 0x9300, 0x7022, 0x2061, 0x18ac,
15091 +       0x2c44, 0xa06b, 0x0000, 0xa37a, 0x7024, 0xa076, 0x7030, 0xa072,
15092 +       0xa48e, 0xa592, 0xa696, 0xa79a, 0x080c, 0x108c, 0x7007, 0x0002,
15093 +       0x701b, 0x477b, 0x0005, 0x702c, 0x9005, 0x1178, 0x711c, 0x7024,
15094 +       0x20a0, 0x901e, 0x7030, 0x20e8, 0x2061, 0x18ac, 0x2c44, 0xa48c,
15095 +       0xa590, 0xa694, 0xa798, 0x0804, 0x4739, 0x7220, 0x900e, 0x2001,
15096 +       0x0003, 0x080c, 0x7a4b, 0x2208, 0x0804, 0x305f, 0x00f6, 0x00e6,
15097 +       0x080c, 0x4dfe, 0x2009, 0x0007, 0x1904, 0x480e, 0x2071, 0x1893,
15098 +       0x7458, 0x84ff, 0x2009, 0x000e, 0x1904, 0x480e, 0xac9c, 0xad98,
15099 +       0xaea4, 0xafa0, 0x0096, 0x080c, 0x0fc7, 0x2009, 0x0002, 0x0904,
15100 +       0x480e, 0x2900, 0x705a, 0x900e, 0x901e, 0x7352, 0x735e, 0xa860,
15101 +       0x7062, 0xa85c, 0x9080, 0x0003, 0x7056, 0x20a0, 0x91d8, 0x1000,
15102 +       0x2b5c, 0x8bff, 0x0178, 0x080c, 0x5f2d, 0x0118, 0x080c, 0x5f35,
15103 +       0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810, 0x4004, 0x4104,
15104 +       0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, 0x9386, 0x003c,
15105 +       0x01e8, 0x0c20, 0x83ff, 0x11c0, 0x7250, 0x900e, 0x2001, 0x0003,
15106 +       0x080c, 0x7a4b, 0x2208, 0x009e, 0xa897, 0x4000, 0xa99a, 0x7158,
15107 +       0x81ff, 0x090c, 0x0d84, 0x2148, 0x080c, 0x0fe0, 0x9006, 0x705a,
15108 +       0x918d, 0x0001, 0x2008, 0x0418, 0x705f, 0x0001, 0x714e, 0x7050,
15109 +       0x9300, 0x7052, 0x2061, 0x18ad, 0x2c44, 0xa37a, 0x7054, 0xa076,
15110 +       0x7060, 0xa072, 0xa48e, 0xa592, 0xa696, 0xa79a, 0xa09f, 0x481a,
15111 +       0x000e, 0xa0a2, 0x080c, 0x108c, 0x9006, 0x0048, 0x009e, 0xa897,
15112 +       0x4005, 0xa99a, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x00ee,
15113 +       0x00fe, 0x0005, 0x00f6, 0xa0a0, 0x904d, 0x090c, 0x0d84, 0x00e6,
15114 +       0x2071, 0x1893, 0xa06c, 0x908e, 0x0100, 0x0138, 0xa87b, 0x0030,
15115 +       0xa883, 0x0000, 0xa897, 0x4002, 0x00d8, 0x705c, 0x9005, 0x1158,
15116 +       0x714c, 0x7054, 0x20a0, 0x901e, 0x7060, 0x20e8, 0xa48c, 0xa590,
15117 +       0xa694, 0xa798, 0x0428, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897,
15118 +       0x4000, 0x7250, 0x900e, 0x2001, 0x0003, 0x080c, 0x7a4b, 0xaa9a,
15119 +       0x7158, 0x81ff, 0x090c, 0x0d84, 0x2148, 0x080c, 0x0fe0, 0x705b,
15120 +       0x0000, 0xa0a0, 0x2048, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9,
15121 +       0x012e, 0xa09f, 0x0000, 0xa0a3, 0x0000, 0x00ee, 0x00fe, 0x0005,
15122 +       0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x5f2d, 0x0118,
15123 +       0x080c, 0x5f35, 0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810,
15124 +       0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120,
15125 +       0x9386, 0x003c, 0x0518, 0x0c20, 0x83ff, 0x11f0, 0x7150, 0x810c,
15126 +       0xa99a, 0xa897, 0x4000, 0x7158, 0x81ff, 0x090c, 0x0d84, 0x2148,
15127 +       0x080c, 0x0fe0, 0x9006, 0x705a, 0x918d, 0x0001, 0x2008, 0xa0a0,
15128 +       0x2048, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0xa09f,
15129 +       0x0000, 0xa0a3, 0x0000, 0x0070, 0x705f, 0x0001, 0x714e, 0x7050,
15130 +       0x9300, 0x7052, 0xa37a, 0xa48e, 0xa592, 0xa696, 0xa79a, 0x080c,
15131 +       0x108c, 0x9006, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x308f, 0x60d8,
15132 +       0xd0ac, 0x1118, 0xd09c, 0x0904, 0x308f, 0x080c, 0x441f, 0x0904,
15133 +       0x308f, 0x7984, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080,
15134 +       0x0019, 0xaf60, 0x080c, 0x4468, 0x701b, 0x48c7, 0x0005, 0x0096,
15135 +       0xa88c, 0x90be, 0x7000, 0x0148, 0x90be, 0x7100, 0x0130, 0x90be,
15136 +       0x7200, 0x0118, 0x009e, 0x0804, 0x3092, 0xa884, 0xa988, 0x080c,
15137 +       0x23fd, 0x1500, 0x080c, 0x5bb0, 0x11e8, 0x7122, 0xbe12, 0xbd16,
15138 +       0xae7c, 0x080c, 0x441f, 0x01b0, 0x080c, 0x441f, 0x0198, 0x009e,
15139 +       0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0xa887, 0x0000, 0xa804,
15140 +       0x2048, 0x080c, 0xb239, 0x0904, 0x308f, 0x7007, 0x0003, 0x701b,
15141 +       0x48fd, 0x0005, 0x009e, 0x0804, 0x308f, 0x7120, 0x080c, 0x2e11,
15142 +       0xa884, 0x9086, 0x8001, 0x0904, 0x308f, 0x2900, 0x701e, 0xa804,
15143 +       0x2040, 0x0086, 0xa05c, 0x9080, 0x0002, 0x2098, 0x20a0, 0xa060,
15144 +       0x20e0, 0x20e8, 0x20a9, 0x002a, 0x080c, 0x0f2b, 0xaa6c, 0xab70,
15145 +       0xac74, 0xad78, 0x2061, 0x18ac, 0x2c44, 0xa06b, 0x0000, 0xae64,
15146 +       0xaf8c, 0x97c6, 0x7000, 0x1108, 0x0018, 0x97c6, 0x7100, 0x1190,
15147 +       0x96c2, 0x0004, 0x0a04, 0x3092, 0x2009, 0x0004, 0x009e, 0x8906,
15148 +       0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002,
15149 +       0x0804, 0x446b, 0x97c6, 0x7200, 0x1904, 0x3092, 0x96c2, 0x0054,
15150 +       0x0a04, 0x3092, 0x009e, 0x2061, 0x18ac, 0x2c44, 0x8906, 0x8006,
15151 +       0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0xa076,
15152 +       0xa772, 0xa07b, 0x002a, 0xa28e, 0xa392, 0xa496, 0xa59a, 0x080c,
15153 +       0x108c, 0x7007, 0x0002, 0x701b, 0x495e, 0x0005, 0x701c, 0x2048,
15154 +       0xa804, 0x2048, 0xa804, 0x2048, 0x8906, 0x8006, 0x8007, 0x90bc,
15155 +       0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0x2098, 0x20a0, 0x27e0,
15156 +       0x27e8, 0x20a9, 0x002a, 0x080c, 0x0f2b, 0x2100, 0x2238, 0x2061,
15157 +       0x18ac, 0x2c44, 0xa28c, 0xa390, 0xa494, 0xa598, 0x2009, 0x002a,
15158 +       0x0804, 0x446b, 0x81ff, 0x1904, 0x308f, 0x798c, 0x2001, 0x194d,
15159 +       0x2102, 0x080c, 0x4436, 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904,
15160 +       0x308f, 0x0126, 0x2091, 0x8000, 0x080c, 0x5d9a, 0x012e, 0x0904,
15161 +       0x308f, 0x0804, 0x3fc8, 0xa9a0, 0x2001, 0x194d, 0xc18d, 0x2102,
15162 +       0x080c, 0x4443, 0x0170, 0x080c, 0x5cd4, 0x2009, 0x0002, 0x0128,
15163 +       0x080c, 0x5d9a, 0x1170, 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a,
15164 +       0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030,
15165 +       0x0005, 0xa897, 0x4000, 0x080c, 0x4df2, 0x0110, 0x9006, 0x0018,
15166 +       0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x78a8, 0xd08c,
15167 +       0x1118, 0xd084, 0x0904, 0x3f3d, 0x080c, 0x4452, 0x0904, 0x3092,
15168 +       0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804, 0x308f, 0x080c,
15169 +       0x5f2d, 0x0130, 0x908e, 0x0004, 0x0118, 0x908e, 0x0005, 0x15a0,
15170 +       0x78a8, 0xd08c, 0x0120, 0xb800, 0xc08c, 0xb802, 0x0028, 0x080c,
15171 +       0x4dea, 0xd0b4, 0x0904, 0x3f77, 0x7884, 0x908e, 0x007e, 0x0904,
15172 +       0x3f77, 0x908e, 0x007f, 0x0904, 0x3f77, 0x908e, 0x0080, 0x0904,
15173 +       0x3f77, 0xb800, 0xd08c, 0x1904, 0x3f77, 0xa867, 0x0000, 0xa868,
15174 +       0xc0fd, 0xa86a, 0x080c, 0xb258, 0x1120, 0x2009, 0x0003, 0x0804,
15175 +       0x308f, 0x7007, 0x0003, 0x701b, 0x4a0e, 0x0005, 0x080c, 0x4452,
15176 +       0x0904, 0x3092, 0x0804, 0x3f77, 0x080c, 0x2e64, 0x0108, 0x0005,
15177 +       0x2009, 0x1833, 0x210c, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804,
15178 +       0x308f, 0x080c, 0x4dfe, 0x0120, 0x2009, 0x0007, 0x0804, 0x308f,
15179 +       0x080c, 0x5f25, 0x0120, 0x2009, 0x0008, 0x0804, 0x308f, 0xb89c,
15180 +       0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x3f77, 0x9006, 0xa866, 0xa832,
15181 +       0xa868, 0xc0fd, 0xa86a, 0x080c, 0xb2a8, 0x1120, 0x2009, 0x0003,
15182 +       0x0804, 0x308f, 0x7007, 0x0003, 0x701b, 0x4a47, 0x0005, 0xa830,
15183 +       0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x4d49, 0x080c,
15184 +       0x4452, 0x0904, 0x3092, 0x0804, 0x49e0, 0x81ff, 0x2009, 0x0001,
15185 +       0x1904, 0x308f, 0x080c, 0x4dfe, 0x2009, 0x0007, 0x1904, 0x308f,
15186 +       0x080c, 0x5f25, 0x2009, 0x0008, 0x1904, 0x308f, 0x080c, 0x4452,
15187 +       0x0904, 0x3092, 0x080c, 0x5f2d, 0x2009, 0x0009, 0x1904, 0x308f,
15188 +       0x080c, 0x441f, 0x2009, 0x0002, 0x0904, 0x308f, 0x9006, 0xa866,
15189 +       0xa832, 0xa868, 0xc0fd, 0xa86a, 0x7988, 0x9194, 0xff00, 0x918c,
15190 +       0x00ff, 0x9006, 0x82ff, 0x1128, 0xc0ed, 0xa952, 0x798c, 0xa956,
15191 +       0x0038, 0x928e, 0x0100, 0x1904, 0x3092, 0xc0e5, 0xa952, 0xa956,
15192 +       0xa83e, 0x080c, 0xb4e7, 0x2009, 0x0003, 0x0904, 0x308f, 0x7007,
15193 +       0x0003, 0x701b, 0x4a9c, 0x0005, 0xa830, 0x9086, 0x0100, 0x2009,
15194 +       0x0004, 0x0904, 0x308f, 0x0804, 0x305f, 0x7aa8, 0x9284, 0xc000,
15195 +       0x0148, 0xd2ec, 0x01a0, 0x080c, 0x4dfe, 0x1188, 0x2009, 0x0014,
15196 +       0x0804, 0x308f, 0xd2dc, 0x1568, 0x81ff, 0x2009, 0x0001, 0x1904,
15197 +       0x308f, 0x080c, 0x4dfe, 0x2009, 0x0007, 0x1904, 0x308f, 0xd2f4,
15198 +       0x0130, 0x9284, 0x5000, 0x080c, 0x4dc5, 0x0804, 0x305f, 0xd2fc,
15199 +       0x0158, 0x080c, 0x4452, 0x0904, 0x3092, 0x7984, 0x9284, 0x9000,
15200 +       0x080c, 0x4da2, 0x0804, 0x305f, 0x080c, 0x4452, 0x0904, 0x3092,
15201 +       0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x2009, 0x0009, 0x1904,
15202 +       0x4b85, 0x080c, 0x441f, 0x2009, 0x0002, 0x0904, 0x4b85, 0xa85c,
15203 +       0x9080, 0x001b, 0xaf60, 0x2009, 0x0008, 0x7a8c, 0x7b88, 0x7c9c,
15204 +       0x7d98, 0x080c, 0x4468, 0x701b, 0x4af6, 0x0005, 0xa86c, 0x9086,
15205 +       0x0500, 0x1138, 0xa870, 0x9005, 0x1120, 0xa874, 0x9084, 0xff00,
15206 +       0x0110, 0x1904, 0x3092, 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a,
15207 +       0x080c, 0x4452, 0x1110, 0x0804, 0x3092, 0x2009, 0x0043, 0x080c,
15208 +       0xb54f, 0x2009, 0x0003, 0x0904, 0x4b85, 0x7007, 0x0003, 0x701b,
15209 +       0x4b1a, 0x0005, 0xa830, 0x9086, 0x0100, 0x2009, 0x0004, 0x0904,
15210 +       0x4b85, 0x7984, 0x7aa8, 0x9284, 0x1000, 0x080c, 0x4da2, 0x0804,
15211 +       0x305f, 0x00c6, 0xaab0, 0x9284, 0xc000, 0x0140, 0xd2ec, 0x0168,
15212 +       0x080c, 0x4dfe, 0x1150, 0x2009, 0x0014, 0x04f0, 0x2061, 0x1800,
15213 +       0x080c, 0x4dfe, 0x2009, 0x0007, 0x15b8, 0xd2f4, 0x0128, 0x9284,
15214 +       0x5000, 0x080c, 0x4dc5, 0x0050, 0xd2fc, 0x0178, 0x080c, 0x4450,
15215 +       0x0588, 0xa998, 0x9284, 0x9000, 0x080c, 0x4da2, 0xa87b, 0x0000,
15216 +       0xa883, 0x0000, 0xa897, 0x4000, 0x0438, 0x080c, 0x4450, 0x0510,
15217 +       0x080c, 0x5f2d, 0x2009, 0x0009, 0x11b8, 0xa8c4, 0x9086, 0x0500,
15218 +       0x11c8, 0xa8c8, 0x9005, 0x11b0, 0xa8cc, 0x9084, 0xff00, 0x1190,
15219 +       0x080c, 0x4450, 0x1108, 0x0070, 0x2009, 0x004b, 0x080c, 0xb54f,
15220 +       0x2009, 0x0003, 0x0108, 0x0078, 0x0429, 0x19c0, 0xa897, 0x4005,
15221 +       0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001,
15222 +       0x0030, 0x00ce, 0x0005, 0x9006, 0x0ce0, 0x7aa8, 0xd2dc, 0x0904,
15223 +       0x308f, 0x0016, 0x7984, 0x9284, 0x1000, 0xc0fd, 0x080c, 0x4da2,
15224 +       0x001e, 0x1904, 0x308f, 0x0804, 0x305f, 0x00f6, 0x2d78, 0x0011,
15225 +       0x00fe, 0x0005, 0xaab0, 0xd2dc, 0x0150, 0x0016, 0xa998, 0x9284,
15226 +       0x1000, 0xc0fd, 0x080c, 0x4da2, 0x001e, 0x9085, 0x0001, 0x0005,
15227 +       0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x308f, 0x080c, 0x4dfe,
15228 +       0x0120, 0x2009, 0x0007, 0x0804, 0x308f, 0x7984, 0x7ea8, 0x96b4,
15229 +       0x00ff, 0x080c, 0x5c0d, 0x1904, 0x3092, 0x9186, 0x007f, 0x0138,
15230 +       0x080c, 0x5f2d, 0x0120, 0x2009, 0x0009, 0x0804, 0x308f, 0x080c,
15231 +       0x441f, 0x1120, 0x2009, 0x0002, 0x0804, 0x308f, 0xa867, 0x0000,
15232 +       0xa868, 0xc0fd, 0xa86a, 0x2001, 0x0100, 0x8007, 0xa80a, 0x080c,
15233 +       0xb272, 0x1120, 0x2009, 0x0003, 0x0804, 0x308f, 0x7007, 0x0003,
15234 +       0x701b, 0x4be3, 0x0005, 0xa808, 0x8007, 0x9086, 0x0100, 0x1120,
15235 +       0x2009, 0x0004, 0x0804, 0x308f, 0xa8e0, 0xa866, 0xa810, 0x8007,
15236 +       0x9084, 0x00ff, 0x800c, 0xa814, 0x8007, 0x9084, 0x00ff, 0x8004,
15237 +       0x9080, 0x0002, 0x9108, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f,
15238 +       0x9084, 0xffc0, 0x9080, 0x0004, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98,
15239 +       0x0804, 0x446b, 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804,
15240 +       0x308f, 0x7984, 0x9194, 0xff00, 0x918c, 0x00ff, 0x8217, 0x82ff,
15241 +       0x1118, 0x701f, 0x1980, 0x0040, 0x92c6, 0x0001, 0x1118, 0x701f,
15242 +       0x199a, 0x0010, 0x0804, 0x3092, 0x2009, 0x001a, 0x7a8c, 0x7b88,
15243 +       0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x4468,
15244 +       0x701b, 0x4c33, 0x0005, 0x2001, 0x182c, 0x2003, 0x0001, 0xa85c,
15245 +       0x9080, 0x0019, 0x2098, 0xa860, 0x20e0, 0x20a9, 0x001a, 0x701c,
15246 +       0x20a0, 0x20e9, 0x0001, 0x4003, 0x0804, 0x305f, 0x080c, 0x441f,
15247 +       0x1120, 0x2009, 0x0002, 0x0804, 0x308f, 0x7984, 0x9194, 0xff00,
15248 +       0x918c, 0x00ff, 0x8217, 0x82ff, 0x1118, 0x2099, 0x1980, 0x0040,
15249 +       0x92c6, 0x0001, 0x1118, 0x2099, 0x199a, 0x0010, 0x0804, 0x3092,
15250 +       0xa85c, 0x9080, 0x0019, 0x20a0, 0xa860, 0x20e8, 0x20a9, 0x001a,
15251 +       0x20e1, 0x0001, 0x4003, 0x2009, 0x001a, 0x7a8c, 0x7b88, 0x7c9c,
15252 +       0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x0804, 0x446b, 0x7884,
15253 +       0x908a, 0x1000, 0x1a04, 0x3092, 0x0126, 0x2091, 0x8000, 0x8003,
15254 +       0x800b, 0x810b, 0x9108, 0x00c6, 0x2061, 0x19c7, 0x6146, 0x00ce,
15255 +       0x012e, 0x0804, 0x305f, 0x00c6, 0x080c, 0x6877, 0x1160, 0x080c,
15256 +       0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001, 0x080c, 0x68c0, 0x080c,
15257 +       0x67be, 0x080c, 0x0d84, 0x2061, 0x1800, 0x6030, 0xc09d, 0x6032,
15258 +       0x080c, 0x55a0, 0x00ce, 0x0005, 0x00c6, 0x2001, 0x1800, 0x2004,
15259 +       0x908e, 0x0000, 0x0904, 0x308f, 0x7884, 0x9005, 0x0188, 0x7888,
15260 +       0x2061, 0x1969, 0x2c0c, 0x2062, 0x080c, 0x27d7, 0x01a0, 0x080c,
15261 +       0x27df, 0x0188, 0x080c, 0x27e7, 0x0170, 0x2162, 0x0804, 0x3092,
15262 +       0x2061, 0x0100, 0x6038, 0x9086, 0x0007, 0x1118, 0x2009, 0x0001,
15263 +       0x0010, 0x2009, 0x0000, 0x7884, 0x9086, 0x0002, 0x1548, 0x2061,
15264 +       0x0100, 0x6028, 0xc09c, 0x602a, 0x0026, 0x2011, 0x0003, 0x080c,
15265 +       0x8e99, 0x2011, 0x0002, 0x080c, 0x8ea3, 0x002e, 0x080c, 0x8d59,
15266 +       0x0036, 0x901e, 0x080c, 0x8dfe, 0x003e, 0x60e3, 0x0000, 0x080c,
15267 +       0xcd0a, 0x080c, 0xcd25, 0x9085, 0x0001, 0x080c, 0x68c0, 0x9006,
15268 +       0x080c, 0x28a5, 0x2001, 0x1800, 0x2003, 0x0004, 0x6027, 0x0008,
15269 +       0x00ce, 0x0804, 0x305f, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804,
15270 +       0x308f, 0x080c, 0x4dfe, 0x0120, 0x2009, 0x0007, 0x0804, 0x308f,
15271 +       0x7984, 0x7ea8, 0x96b4, 0x00ff, 0x080c, 0x5c0d, 0x1904, 0x3092,
15272 +       0x9186, 0x007f, 0x0138, 0x080c, 0x5f2d, 0x0120, 0x2009, 0x0009,
15273 +       0x0804, 0x308f, 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804,
15274 +       0x308f, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xb275,
15275 +       0x1120, 0x2009, 0x0003, 0x0804, 0x308f, 0x7007, 0x0003, 0x701b,
15276 +       0x4d32, 0x0005, 0xa830, 0x9086, 0x0100, 0x1120, 0x2009, 0x0004,
15277 +       0x0804, 0x308f, 0xa8e0, 0xa866, 0xa834, 0x8007, 0x800c, 0xa85c,
15278 +       0x9080, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xaf60, 0x0804,
15279 +       0x446b, 0xa898, 0x9086, 0x000d, 0x1904, 0x308f, 0x2021, 0x4005,
15280 +       0x0126, 0x2091, 0x8000, 0x0e04, 0x4d56, 0x0010, 0x012e, 0x0cc0,
15281 +       0x7c36, 0x9486, 0x4000, 0x0118, 0x7833, 0x0011, 0x0010, 0x7833,
15282 +       0x0010, 0x7883, 0x4005, 0xa998, 0x7986, 0xa9a4, 0x799a, 0xa9a8,
15283 +       0x799e, 0x080c, 0x445b, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004,
15284 +       0xd084, 0x190c, 0x113e, 0x7007, 0x0001, 0x2091, 0x5000, 0x012e,
15285 +       0x0005, 0x0126, 0x2091, 0x8000, 0x00c6, 0x2061, 0x19c7, 0x7984,
15286 +       0x6156, 0x6152, 0x605b, 0x0000, 0x604f, 0x0009, 0x7898, 0x606e,
15287 +       0x789c, 0x606a, 0x7888, 0x6066, 0x788c, 0x6062, 0x2001, 0x19d5,
15288 +       0x2044, 0x2001, 0x19dd, 0xa076, 0xa060, 0xa072, 0xa07b, 0x0001,
15289 +       0xa07f, 0x0002, 0xa06b, 0x0000, 0xa09f, 0x0000, 0x00ce, 0x012e,
15290 +       0x0804, 0x305f, 0x0126, 0x2091, 0x8000, 0x00b6, 0x00c6, 0x90e4,
15291 +       0xc000, 0x0128, 0x0006, 0x080c, 0xb0e3, 0x000e, 0x1198, 0xd0e4,
15292 +       0x0160, 0x9180, 0x1000, 0x2004, 0x905d, 0x0160, 0x080c, 0x56f3,
15293 +       0x080c, 0x94d3, 0x0110, 0xb817, 0x0000, 0x9006, 0x00ce, 0x00be,
15294 +       0x012e, 0x0005, 0x9085, 0x0001, 0x0cc8, 0x0126, 0x2091, 0x8000,
15295 +       0x0156, 0x2010, 0x900e, 0x20a9, 0x0800, 0x0016, 0x9180, 0x1000,
15296 +       0x2004, 0x9005, 0x0180, 0x9186, 0x007e, 0x0168, 0x9186, 0x007f,
15297 +       0x0150, 0x9186, 0x0080, 0x0138, 0x9186, 0x00ff, 0x0120, 0x0026,
15298 +       0x2200, 0x0801, 0x002e, 0x001e, 0x8108, 0x1f04, 0x4dcd, 0x015e,
15299 +       0x012e, 0x0005, 0x2001, 0x1853, 0x2004, 0x0005, 0x2001, 0x1872,
15300 +       0x2004, 0x0005, 0x0006, 0x2001, 0x180f, 0x2004, 0xd0d4, 0x000e,
15301 +       0x0005, 0x2001, 0x180d, 0x2004, 0xd0b4, 0x0005, 0x2001, 0x1800,
15302 +       0x2004, 0x9086, 0x0003, 0x0005, 0x0126, 0x0156, 0x0136, 0x0146,
15303 +       0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2061, 0x0100,
15304 +       0x2069, 0x0200, 0x2071, 0x1800, 0x6044, 0xd0a4, 0x11e8, 0xd084,
15305 +       0x0118, 0x080c, 0x4fa3, 0x0068, 0xd08c, 0x0118, 0x080c, 0x4eb6,
15306 +       0x0040, 0xd094, 0x0118, 0x080c, 0x4e86, 0x0018, 0xd09c, 0x0108,
15307 +       0x0099, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e,
15308 +       0x013e, 0x015e, 0x012e, 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110,
15309 +       0xc19d, 0x612a, 0x001e, 0x0c68, 0x0006, 0x7090, 0x9005, 0x000e,
15310 +       0x0120, 0x7093, 0x0000, 0x708b, 0x0000, 0x624c, 0x9286, 0xf0f0,
15311 +       0x1150, 0x6048, 0x9086, 0xf0f0, 0x0130, 0x624a, 0x6043, 0x0090,
15312 +       0x6043, 0x0010, 0x0490, 0x9294, 0xff00, 0x9296, 0xf700, 0x0178,
15313 +       0x7134, 0xd1a4, 0x1160, 0x6240, 0x9295, 0x0100, 0x6242, 0x9294,
15314 +       0x0010, 0x0128, 0x2009, 0x00f7, 0x080c, 0x5660, 0x00f0, 0x6040,
15315 +       0x9084, 0x0010, 0x9085, 0x0140, 0x6042, 0x6043, 0x0000, 0x707f,
15316 +       0x0000, 0x709b, 0x0001, 0x70c3, 0x0000, 0x70db, 0x0000, 0x2009,
15317 +       0x1c80, 0x200b, 0x0000, 0x708f, 0x0000, 0x7083, 0x000f, 0x2009,
15318 +       0x000f, 0x2011, 0x5546, 0x080c, 0x78a5, 0x0005, 0x2001, 0x1874,
15319 +       0x2004, 0xd08c, 0x0110, 0x7057, 0xffff, 0x7080, 0x9005, 0x1528,
15320 +       0x2011, 0x5546, 0x080c, 0x781a, 0x6040, 0x9094, 0x0010, 0x9285,
15321 +       0x0020, 0x6042, 0x20a9, 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04,
15322 +       0x4e9c, 0x6242, 0x7093, 0x0000, 0x6040, 0x9094, 0x0010, 0x9285,
15323 +       0x0080, 0x6042, 0x6242, 0x0048, 0x6242, 0x7093, 0x0000, 0x7087,
15324 +       0x0000, 0x9006, 0x080c, 0x56de, 0x0000, 0x0005, 0x7084, 0x908a,
15325 +       0x0003, 0x1a0c, 0x0d84, 0x000b, 0x0005, 0x4ec0, 0x4f07, 0x4fa2,
15326 +       0x00f6, 0x7087, 0x0001, 0x6803, 0x00fc, 0x20a9, 0x0004, 0x6800,
15327 +       0x9084, 0x00fc, 0x0120, 0x1f04, 0x4ec7, 0x080c, 0x0d84, 0x68a0,
15328 +       0x68a2, 0x689c, 0x689e, 0x6898, 0x689a, 0xa001, 0x6803, 0x1600,
15329 +       0x6837, 0x0020, 0x080c, 0x56ba, 0x2079, 0x1c00, 0x7833, 0x1101,
15330 +       0x7837, 0x0000, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0001,
15331 +       0x20a1, 0x1c0e, 0x20a9, 0x0004, 0x4003, 0x080c, 0x9363, 0x20e1,
15332 +       0x0001, 0x2099, 0x1c00, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9,
15333 +       0x0014, 0x4003, 0x60c3, 0x000c, 0x600f, 0x0000, 0x080c, 0x557c,
15334 +       0x00fe, 0x9006, 0x708a, 0x6043, 0x0008, 0x6042, 0x0005, 0x00f6,
15335 +       0x7088, 0x708b, 0x0000, 0x9025, 0x0904, 0x4f7f, 0x6020, 0xd0b4,
15336 +       0x1904, 0x4f7d, 0x7198, 0x81ff, 0x0904, 0x4f6b, 0x9486, 0x000c,
15337 +       0x1904, 0x4f78, 0x9480, 0x0018, 0x8004, 0x20a8, 0x080c, 0x56b3,
15338 +       0x2011, 0x0260, 0x2019, 0x1c00, 0x220c, 0x2304, 0x9106, 0x11e8,
15339 +       0x8210, 0x8318, 0x1f04, 0x4f24, 0x6043, 0x0004, 0x2061, 0x0140,
15340 +       0x605b, 0xbc94, 0x605f, 0xf0f0, 0x2061, 0x0100, 0x6043, 0x0006,
15341 +       0x7087, 0x0002, 0x7093, 0x0002, 0x2009, 0x07d0, 0x2011, 0x554d,
15342 +       0x080c, 0x78a5, 0x080c, 0x56ba, 0x04c0, 0x080c, 0x56b3, 0x2079,
15343 +       0x0260, 0x7930, 0x918e, 0x1101, 0x1558, 0x7834, 0x9005, 0x1540,
15344 +       0x7900, 0x918c, 0x00ff, 0x1118, 0x7804, 0x9005, 0x0190, 0x080c,
15345 +       0x56b3, 0x2011, 0x026e, 0x2019, 0x1805, 0x20a9, 0x0004, 0x220c,
15346 +       0x2304, 0x9102, 0x0230, 0x11a0, 0x8210, 0x8318, 0x1f04, 0x4f5f,
15347 +       0x0078, 0x709b, 0x0000, 0x080c, 0x56b3, 0x20e1, 0x0000, 0x2099,
15348 +       0x0260, 0x20e9, 0x0001, 0x20a1, 0x1c00, 0x20a9, 0x0014, 0x4003,
15349 +       0x6043, 0x0008, 0x6043, 0x0000, 0x0010, 0x00fe, 0x0005, 0x6040,
15350 +       0x9085, 0x0100, 0x6042, 0x6020, 0xd0b4, 0x1db8, 0x080c, 0x9363,
15351 +       0x20e1, 0x0001, 0x2099, 0x1c00, 0x20e9, 0x0000, 0x20a1, 0x0240,
15352 +       0x20a9, 0x0014, 0x4003, 0x60c3, 0x000c, 0x2011, 0x19be, 0x2013,
15353 +       0x0000, 0x708b, 0x0000, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c,
15354 +       0x8b47, 0x08d8, 0x0005, 0x7090, 0x908a, 0x001d, 0x1a0c, 0x0d84,
15355 +       0x000b, 0x0005, 0x4fd4, 0x4fe7, 0x5010, 0x5030, 0x5056, 0x5085,
15356 +       0x50ab, 0x50e3, 0x5109, 0x5137, 0x5172, 0x51aa, 0x51c8, 0x51f3,
15357 +       0x5215, 0x5230, 0x523a, 0x526e, 0x5294, 0x52c3, 0x52e9, 0x5321,
15358 +       0x5365, 0x53a2, 0x53c3, 0x541c, 0x543e, 0x546c, 0x546c, 0x00c6,
15359 +       0x2061, 0x1800, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, 0x9084,
15360 +       0xfff9, 0x6006, 0x00ce, 0x0005, 0x2061, 0x0140, 0x605b, 0xbc94,
15361 +       0x605f, 0xf0f0, 0x2061, 0x0100, 0x6043, 0x0002, 0x7093, 0x0001,
15362 +       0x2009, 0x07d0, 0x2011, 0x554d, 0x080c, 0x78a5, 0x0005, 0x00f6,
15363 +       0x7088, 0x9086, 0x0014, 0x1510, 0x6042, 0x6020, 0xd0b4, 0x11f0,
15364 +       0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1102, 0x11a0,
15365 +       0x7834, 0x9005, 0x1188, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005,
15366 +       0x1110, 0x70c3, 0x0001, 0x2011, 0x554d, 0x080c, 0x781a, 0x7093,
15367 +       0x0010, 0x080c, 0x523a, 0x0010, 0x708b, 0x0000, 0x00fe, 0x0005,
15368 +       0x00f6, 0x7093, 0x0003, 0x6043, 0x0004, 0x2011, 0x554d, 0x080c,
15369 +       0x781a, 0x080c, 0x5642, 0x2079, 0x0240, 0x7833, 0x1102, 0x7837,
15370 +       0x0000, 0x20a9, 0x0008, 0x9f88, 0x000e, 0x200b, 0x0000, 0x8108,
15371 +       0x1f04, 0x5025, 0x60c3, 0x0014, 0x080c, 0x557c, 0x00fe, 0x0005,
15372 +       0x00f6, 0x7088, 0x9005, 0x0500, 0x2011, 0x554d, 0x080c, 0x781a,
15373 +       0x9086, 0x0014, 0x11b8, 0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30,
15374 +       0x9296, 0x1102, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc,
15375 +       0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, 0x0004,
15376 +       0x0029, 0x0010, 0x080c, 0x568f, 0x00fe, 0x0005, 0x00f6, 0x7093,
15377 +       0x0005, 0x080c, 0x5642, 0x2079, 0x0240, 0x7833, 0x1103, 0x7837,
15378 +       0x0000, 0x080c, 0x56b3, 0x080c, 0x5696, 0x1170, 0x707c, 0x9005,
15379 +       0x1158, 0x7154, 0x9186, 0xffff, 0x0138, 0x2011, 0x0008, 0x080c,
15380 +       0x54fa, 0x0168, 0x080c, 0x5677, 0x20a9, 0x0008, 0x20e1, 0x0000,
15381 +       0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3,
15382 +       0x0014, 0x080c, 0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005,
15383 +       0x0500, 0x2011, 0x554d, 0x080c, 0x781a, 0x9086, 0x0014, 0x11b8,
15384 +       0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1103, 0x1178,
15385 +       0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005,
15386 +       0x1110, 0x70c3, 0x0001, 0x7093, 0x0006, 0x0029, 0x0010, 0x080c,
15387 +       0x568f, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0007, 0x080c, 0x5642,
15388 +       0x2079, 0x0240, 0x7833, 0x1104, 0x7837, 0x0000, 0x080c, 0x56b3,
15389 +       0x080c, 0x5696, 0x11b8, 0x707c, 0x9005, 0x11a0, 0x715c, 0x9186,
15390 +       0xffff, 0x0180, 0x9180, 0x2e6e, 0x200d, 0x918c, 0xff00, 0x810f,
15391 +       0x2011, 0x0008, 0x080c, 0x54fa, 0x0180, 0x080c, 0x4700, 0x0110,
15392 +       0x080c, 0x2466, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e,
15393 +       0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c,
15394 +       0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x0500, 0x2011,
15395 +       0x554d, 0x080c, 0x781a, 0x9086, 0x0014, 0x11b8, 0x080c, 0x56b3,
15396 +       0x2079, 0x0260, 0x7a30, 0x9296, 0x1104, 0x1178, 0x7834, 0x9005,
15397 +       0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3,
15398 +       0x0001, 0x7093, 0x0008, 0x0029, 0x0010, 0x080c, 0x568f, 0x00fe,
15399 +       0x0005, 0x00f6, 0x7093, 0x0009, 0x080c, 0x5642, 0x2079, 0x0240,
15400 +       0x7833, 0x1105, 0x7837, 0x0100, 0x080c, 0x5696, 0x1150, 0x707c,
15401 +       0x9005, 0x1138, 0x080c, 0x546d, 0x1188, 0x9085, 0x0001, 0x080c,
15402 +       0x2466, 0x20a9, 0x0008, 0x080c, 0x56b3, 0x20e1, 0x0000, 0x2099,
15403 +       0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014,
15404 +       0x080c, 0x557c, 0x0010, 0x080c, 0x4fc7, 0x00fe, 0x0005, 0x00f6,
15405 +       0x7088, 0x9005, 0x05a8, 0x2011, 0x554d, 0x080c, 0x781a, 0x9086,
15406 +       0x0014, 0x1560, 0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296,
15407 +       0x1105, 0x1520, 0x7834, 0x9084, 0x0100, 0x2011, 0x0100, 0x921e,
15408 +       0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3,
15409 +       0x0001, 0x7093, 0x000a, 0x00b1, 0x0098, 0x9005, 0x1178, 0x7a38,
15410 +       0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x708f,
15411 +       0x0000, 0x7093, 0x000e, 0x080c, 0x5215, 0x0010, 0x080c, 0x568f,
15412 +       0x00fe, 0x0005, 0x00f6, 0x7093, 0x000b, 0x2011, 0x1c0e, 0x20e9,
15413 +       0x0001, 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, 0x4304, 0x080c,
15414 +       0x5642, 0x2079, 0x0240, 0x7833, 0x1106, 0x7837, 0x0000, 0x080c,
15415 +       0x5696, 0x0118, 0x2013, 0x0000, 0x0020, 0x7058, 0x9085, 0x0100,
15416 +       0x2012, 0x20a9, 0x0040, 0x2009, 0x024e, 0x2011, 0x1c0e, 0x220e,
15417 +       0x8210, 0x8108, 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, 0x6812,
15418 +       0x2009, 0x0240, 0x1f04, 0x5197, 0x60c3, 0x0084, 0x080c, 0x557c,
15419 +       0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01c0, 0x2011, 0x554d,
15420 +       0x080c, 0x781a, 0x9086, 0x0084, 0x1178, 0x080c, 0x56b3, 0x2079,
15421 +       0x0260, 0x7a30, 0x9296, 0x1106, 0x1138, 0x7834, 0x9005, 0x1120,
15422 +       0x7093, 0x000c, 0x0029, 0x0010, 0x080c, 0x568f, 0x00fe, 0x0005,
15423 +       0x00f6, 0x7093, 0x000d, 0x080c, 0x5642, 0x2079, 0x0240, 0x7833,
15424 +       0x1107, 0x7837, 0x0000, 0x080c, 0x56b3, 0x20a9, 0x0040, 0x2011,
15425 +       0x026e, 0x2009, 0x024e, 0x220e, 0x8210, 0x8108, 0x9186, 0x0260,
15426 +       0x1150, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x6814, 0x8000,
15427 +       0x6816, 0x2011, 0x0260, 0x1f04, 0x51db, 0x60c3, 0x0084, 0x080c,
15428 +       0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01e0, 0x2011,
15429 +       0x554d, 0x080c, 0x781a, 0x9086, 0x0084, 0x1198, 0x080c, 0x56b3,
15430 +       0x2079, 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834, 0x9005,
15431 +       0x1140, 0x708f, 0x0001, 0x080c, 0x5614, 0x7093, 0x000e, 0x0029,
15432 +       0x0010, 0x080c, 0x568f, 0x00fe, 0x0005, 0x918d, 0x0001, 0x080c,
15433 +       0x56de, 0x7093, 0x000f, 0x708b, 0x0000, 0x2061, 0x0140, 0x605b,
15434 +       0xbc85, 0x605f, 0xb5b5, 0x2061, 0x0100, 0x6043, 0x0005, 0x6043,
15435 +       0x0004, 0x2009, 0x07d0, 0x2011, 0x554d, 0x080c, 0x780e, 0x0005,
15436 +       0x7088, 0x9005, 0x0130, 0x2011, 0x554d, 0x080c, 0x781a, 0x7093,
15437 +       0x0000, 0x0005, 0x7093, 0x0011, 0x080c, 0x9363, 0x080c, 0x56b3,
15438 +       0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, 0x0240,
15439 +       0x7488, 0x9480, 0x0018, 0x9080, 0x0007, 0x9084, 0x03f8, 0x8004,
15440 +       0x20a8, 0x4003, 0x080c, 0x5696, 0x11a0, 0x7174, 0x81ff, 0x0188,
15441 +       0x900e, 0x7078, 0x9084, 0x00ff, 0x0160, 0x080c, 0x23fd, 0x9186,
15442 +       0x007e, 0x0138, 0x9186, 0x0080, 0x0120, 0x2011, 0x0008, 0x080c,
15443 +       0x54fa, 0x60c3, 0x0014, 0x080c, 0x557c, 0x0005, 0x00f6, 0x7088,
15444 +       0x9005, 0x0500, 0x2011, 0x554d, 0x080c, 0x781a, 0x9086, 0x0014,
15445 +       0x11b8, 0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1103,
15446 +       0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0,
15447 +       0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, 0x0012, 0x0029, 0x0010,
15448 +       0x708b, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0013, 0x080c,
15449 +       0x5650, 0x2079, 0x0240, 0x7833, 0x1103, 0x7837, 0x0000, 0x080c,
15450 +       0x56b3, 0x080c, 0x5696, 0x1170, 0x707c, 0x9005, 0x1158, 0x7154,
15451 +       0x9186, 0xffff, 0x0138, 0x2011, 0x0008, 0x080c, 0x54fa, 0x0168,
15452 +       0x080c, 0x5677, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e,
15453 +       0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c,
15454 +       0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x0500, 0x2011,
15455 +       0x554d, 0x080c, 0x781a, 0x9086, 0x0014, 0x11b8, 0x080c, 0x56b3,
15456 +       0x2079, 0x0260, 0x7a30, 0x9296, 0x1104, 0x1178, 0x7834, 0x9005,
15457 +       0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3,
15458 +       0x0001, 0x7093, 0x0014, 0x0029, 0x0010, 0x708b, 0x0000, 0x00fe,
15459 +       0x0005, 0x00f6, 0x7093, 0x0015, 0x080c, 0x5650, 0x2079, 0x0240,
15460 +       0x7833, 0x1104, 0x7837, 0x0000, 0x080c, 0x56b3, 0x080c, 0x5696,
15461 +       0x11b8, 0x707c, 0x9005, 0x11a0, 0x715c, 0x9186, 0xffff, 0x0180,
15462 +       0x9180, 0x2e6e, 0x200d, 0x918c, 0xff00, 0x810f, 0x2011, 0x0008,
15463 +       0x080c, 0x54fa, 0x0180, 0x080c, 0x4700, 0x0110, 0x080c, 0x2466,
15464 +       0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000,
15465 +       0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x557c, 0x00fe,
15466 +       0x0005, 0x00f6, 0x7088, 0x9005, 0x05f0, 0x2011, 0x554d, 0x080c,
15467 +       0x781a, 0x9086, 0x0014, 0x15a8, 0x080c, 0x56b3, 0x2079, 0x0260,
15468 +       0x7a30, 0x9296, 0x1105, 0x1568, 0x7834, 0x9084, 0x0100, 0x2011,
15469 +       0x0100, 0x921e, 0x1168, 0x9085, 0x0001, 0x080c, 0x56de, 0x7a38,
15470 +       0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x0080,
15471 +       0x9005, 0x11b8, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110,
15472 +       0x70c3, 0x0001, 0x9085, 0x0001, 0x080c, 0x56de, 0x708f, 0x0000,
15473 +       0x7a38, 0xd2f4, 0x0110, 0x70db, 0x0008, 0x7093, 0x0016, 0x0029,
15474 +       0x0010, 0x708b, 0x0000, 0x00fe, 0x0005, 0x080c, 0x9363, 0x080c,
15475 +       0x56b3, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1,
15476 +       0x0240, 0x20a9, 0x000e, 0x4003, 0x2011, 0x026d, 0x2204, 0x9084,
15477 +       0x0100, 0x2011, 0x024d, 0x2012, 0x2011, 0x026e, 0x7093, 0x0017,
15478 +       0x080c, 0x5696, 0x1150, 0x707c, 0x9005, 0x1138, 0x080c, 0x546d,
15479 +       0x1188, 0x9085, 0x0001, 0x080c, 0x2466, 0x20a9, 0x0008, 0x080c,
15480 +       0x56b3, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1,
15481 +       0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x557c, 0x0010, 0x080c,
15482 +       0x4fc7, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01d8, 0x2011, 0x554d,
15483 +       0x080c, 0x781a, 0x9086, 0x0084, 0x1190, 0x080c, 0x56b3, 0x2079,
15484 +       0x0260, 0x7a30, 0x9296, 0x1106, 0x1150, 0x7834, 0x9005, 0x1138,
15485 +       0x9006, 0x080c, 0x56de, 0x7093, 0x0018, 0x0029, 0x0010, 0x708b,
15486 +       0x0000, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0019, 0x080c, 0x5650,
15487 +       0x2079, 0x0240, 0x7833, 0x1106, 0x7837, 0x0000, 0x080c, 0x56b3,
15488 +       0x2009, 0x026e, 0x2039, 0x1c0e, 0x20a9, 0x0040, 0x213e, 0x8738,
15489 +       0x8108, 0x9186, 0x0280, 0x1128, 0x6814, 0x8000, 0x6816, 0x2009,
15490 +       0x0260, 0x1f04, 0x53d6, 0x2039, 0x1c0e, 0x080c, 0x5696, 0x11e8,
15491 +       0x2728, 0x2514, 0x8207, 0x9084, 0x00ff, 0x8000, 0x2018, 0x9294,
15492 +       0x00ff, 0x8007, 0x9205, 0x202a, 0x7058, 0x2310, 0x8214, 0x92a0,
15493 +       0x1c0e, 0x2414, 0x938c, 0x0001, 0x0118, 0x9294, 0xff00, 0x0018,
15494 +       0x9294, 0x00ff, 0x8007, 0x9215, 0x2222, 0x20a9, 0x0040, 0x2009,
15495 +       0x024e, 0x270e, 0x8738, 0x8108, 0x9186, 0x0260, 0x1128, 0x6810,
15496 +       0x8000, 0x6812, 0x2009, 0x0240, 0x1f04, 0x5409, 0x60c3, 0x0084,
15497 +       0x080c, 0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01e0,
15498 +       0x2011, 0x554d, 0x080c, 0x781a, 0x9086, 0x0084, 0x1198, 0x080c,
15499 +       0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834,
15500 +       0x9005, 0x1140, 0x708f, 0x0001, 0x080c, 0x5614, 0x7093, 0x001a,
15501 +       0x0029, 0x0010, 0x708b, 0x0000, 0x00fe, 0x0005, 0x9085, 0x0001,
15502 +       0x080c, 0x56de, 0x7093, 0x001b, 0x080c, 0x9363, 0x080c, 0x56b3,
15503 +       0x2011, 0x0260, 0x2009, 0x0240, 0x7488, 0x9480, 0x0018, 0x9080,
15504 +       0x0007, 0x9084, 0x03f8, 0x8004, 0x20a8, 0x220e, 0x8210, 0x8108,
15505 +       0x9186, 0x0260, 0x1150, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240,
15506 +       0x6814, 0x8000, 0x6816, 0x2011, 0x0260, 0x1f04, 0x5455, 0x60c3,
15507 +       0x0084, 0x080c, 0x557c, 0x0005, 0x0005, 0x0086, 0x0096, 0x2029,
15508 +       0x1853, 0x252c, 0x20a9, 0x0008, 0x2041, 0x1c0e, 0x20e9, 0x0001,
15509 +       0x28a0, 0x080c, 0x56b3, 0x20e1, 0x0000, 0x2099, 0x026e, 0x4003,
15510 +       0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0108, 0x9016, 0x2800,
15511 +       0x9200, 0x200c, 0x91a6, 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210,
15512 +       0x0008, 0x8211, 0x1f04, 0x5487, 0x0804, 0x54f6, 0x82ff, 0x1160,
15513 +       0xd5d4, 0x0120, 0x91a6, 0x3fff, 0x0d90, 0x0020, 0x91a6, 0x3fff,
15514 +       0x0904, 0x54f6, 0x918d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001,
15515 +       0xd5d4, 0x0110, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423,
15516 +       0x0008, 0x8424, 0x1240, 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318,
15517 +       0x1f04, 0x54ad, 0x04d8, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425,
15518 +       0x1f04, 0x54bf, 0x2328, 0x8529, 0x92be, 0x0007, 0x0158, 0x0006,
15519 +       0x2039, 0x0007, 0x2200, 0x973a, 0x000e, 0x27a8, 0x95a8, 0x0010,
15520 +       0x1f04, 0x54ce, 0x7556, 0x95c8, 0x2e6e, 0x292d, 0x95ac, 0x00ff,
15521 +       0x757a, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x2446, 0x001e,
15522 +       0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304, 0x9405, 0x201a, 0x707f,
15523 +       0x0001, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x20e1, 0x0001, 0x2898,
15524 +       0x20a9, 0x0008, 0x4003, 0x9085, 0x0001, 0x0008, 0x9006, 0x009e,
15525 +       0x008e, 0x0005, 0x0156, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x22a8,
15526 +       0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x2011, 0x024e,
15527 +       0x22a0, 0x4003, 0x014e, 0x013e, 0x01de, 0x01ce, 0x015e, 0x2118,
15528 +       0x9026, 0x2001, 0x0007, 0x939a, 0x0010, 0x0218, 0x8420, 0x8001,
15529 +       0x0cd0, 0x2118, 0x84ff, 0x0120, 0x939a, 0x0010, 0x8421, 0x1de0,
15530 +       0x2021, 0x0001, 0x83ff, 0x0118, 0x8423, 0x8319, 0x1de8, 0x9238,
15531 +       0x2029, 0x026e, 0x9528, 0x2504, 0x942c, 0x11b8, 0x9405, 0x203a,
15532 +       0x7156, 0x91a0, 0x2e6e, 0x242d, 0x95ac, 0x00ff, 0x757a, 0x6532,
15533 +       0x6536, 0x0016, 0x2508, 0x080c, 0x2446, 0x001e, 0x60e7, 0x0000,
15534 +       0x65ea, 0x707f, 0x0001, 0x9084, 0x0000, 0x0005, 0x00e6, 0x2071,
15535 +       0x1800, 0x7083, 0x0000, 0x00ee, 0x0005, 0x00e6, 0x00f6, 0x2079,
15536 +       0x0100, 0x2071, 0x0140, 0x080c, 0x5603, 0x080c, 0x8b50, 0x7004,
15537 +       0x9084, 0x4000, 0x0138, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006,
15538 +       0x080c, 0x28a5, 0x0126, 0x2091, 0x8000, 0x2071, 0x1824, 0x2073,
15539 +       0x0000, 0x7840, 0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, 0x5660,
15540 +       0x001e, 0x9094, 0x0010, 0x9285, 0x0080, 0x7842, 0x7a42, 0x002e,
15541 +       0x012e, 0x00fe, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x2011,
15542 +       0x19be, 0x2013, 0x0000, 0x708b, 0x0000, 0x012e, 0x60a3, 0x0056,
15543 +       0x60a7, 0x9575, 0x080c, 0x8b47, 0x6144, 0xd184, 0x0120, 0x7190,
15544 +       0x918d, 0x2000, 0x0018, 0x7184, 0x918d, 0x1000, 0x2011, 0x1966,
15545 +       0x2112, 0x2009, 0x07d0, 0x2011, 0x554d, 0x080c, 0x78a5, 0x0005,
15546 +       0x0016, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x94da,
15547 +       0x2009, 0x00f7, 0x080c, 0x5660, 0x2061, 0x19c7, 0x900e, 0x611a,
15548 +       0x611e, 0x2061, 0x1800, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043,
15549 +       0x0090, 0x6043, 0x0010, 0x2009, 0x1966, 0x200b, 0x0000, 0x2009,
15550 +       0x002d, 0x2011, 0x55ca, 0x080c, 0x780e, 0x012e, 0x00ce, 0x002e,
15551 +       0x001e, 0x0005, 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, 0x0499,
15552 +       0x2071, 0x0100, 0x080c, 0x8b50, 0x2071, 0x0140, 0x7004, 0x9084,
15553 +       0x4000, 0x0138, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c,
15554 +       0x28a5, 0x080c, 0x687f, 0x0188, 0x080c, 0x689a, 0x1170, 0x080c,
15555 +       0x6b4a, 0x0016, 0x080c, 0x2515, 0x2001, 0x193c, 0x2102, 0x001e,
15556 +       0x080c, 0x6b45, 0x080c, 0x67be, 0x0050, 0x2009, 0x0001, 0x080c,
15557 +       0x27f5, 0x2001, 0x0001, 0x080c, 0x23a6, 0x080c, 0x55a0, 0x012e,
15558 +       0x000e, 0x00ee, 0x0005, 0x2001, 0x180d, 0x2004, 0xd0bc, 0x0158,
15559 +       0x0026, 0x0036, 0x2011, 0x8017, 0x2001, 0x1966, 0x201c, 0x080c,
15560 +       0x447f, 0x003e, 0x002e, 0x0005, 0x20a9, 0x0012, 0x20e9, 0x0001,
15561 +       0x20a1, 0x1c80, 0x080c, 0x56b3, 0x20e9, 0x0000, 0x2099, 0x026e,
15562 +       0x0099, 0x20a9, 0x0020, 0x080c, 0x56ad, 0x2099, 0x0260, 0x20a1,
15563 +       0x1c92, 0x0051, 0x20a9, 0x000e, 0x080c, 0x56b0, 0x2099, 0x0260,
15564 +       0x20a1, 0x1cb2, 0x0009, 0x0005, 0x0016, 0x0026, 0x3410, 0x3308,
15565 +       0x2104, 0x8007, 0x2012, 0x8108, 0x8210, 0x1f04, 0x5638, 0x002e,
15566 +       0x001e, 0x0005, 0x080c, 0x9363, 0x20e1, 0x0001, 0x2099, 0x1c00,
15567 +       0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005,
15568 +       0x080c, 0x9363, 0x080c, 0x56b3, 0x20e1, 0x0000, 0x2099, 0x0260,
15569 +       0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005,
15570 +       0x00c6, 0x0006, 0x2061, 0x0100, 0x810f, 0x2001, 0x1833, 0x2004,
15571 +       0x9005, 0x1138, 0x2001, 0x1816, 0x2004, 0x9084, 0x00ff, 0x9105,
15572 +       0x0010, 0x9185, 0x00f7, 0x604a, 0x000e, 0x00ce, 0x0005, 0x0016,
15573 +       0x0046, 0x080c, 0x5f29, 0x0158, 0x9006, 0x2020, 0x2009, 0x002a,
15574 +       0x080c, 0xc9c5, 0x2001, 0x180c, 0x200c, 0xc195, 0x2102, 0x2019,
15575 +       0x002a, 0x900e, 0x080c, 0x2ce5, 0x004e, 0x001e, 0x0005, 0x080c,
15576 +       0x55a0, 0x7093, 0x0000, 0x708b, 0x0000, 0x0005, 0x0006, 0x2001,
15577 +       0x180c, 0x2004, 0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, 0x0016,
15578 +       0x0126, 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0x918d, 0x0006,
15579 +       0x2102, 0x012e, 0x001e, 0x000e, 0x0005, 0x2009, 0x0001, 0x0020,
15580 +       0x2009, 0x0002, 0x0008, 0x900e, 0x6814, 0x9084, 0xffc0, 0x910d,
15581 +       0x6916, 0x0005, 0x00f6, 0x0156, 0x0146, 0x01d6, 0x9006, 0x20a9,
15582 +       0x0080, 0x20e9, 0x0001, 0x20a1, 0x1c00, 0x4004, 0x2079, 0x1c00,
15583 +       0x7803, 0x2200, 0x7807, 0x00ef, 0x780f, 0x00ef, 0x7813, 0x0138,
15584 +       0x7823, 0xffff, 0x7827, 0xffff, 0x01de, 0x014e, 0x015e, 0x00fe,
15585 +       0x0005, 0x2001, 0x1800, 0x2003, 0x0001, 0x0005, 0x2001, 0x1973,
15586 +       0x0118, 0x2003, 0x0001, 0x0010, 0x2003, 0x0000, 0x0005, 0x0156,
15587 +       0x20a9, 0x0800, 0x2009, 0x1000, 0x9006, 0x200a, 0x8108, 0x1f04,
15588 +       0x56ed, 0x015e, 0x0005, 0x00d6, 0x0036, 0x0156, 0x0136, 0x0146,
15589 +       0x2069, 0x1852, 0x9006, 0xb802, 0xb8be, 0xb807, 0x0707, 0xb80a,
15590 +       0xb80e, 0xb812, 0x9198, 0x2e6e, 0x231d, 0x939c, 0x00ff, 0xbb16,
15591 +       0x0016, 0x0026, 0xb8b2, 0x080c, 0x94d3, 0x1120, 0x9192, 0x007e,
15592 +       0x1208, 0xbbb2, 0x20a9, 0x0004, 0xb8b4, 0x20e8, 0xb9b8, 0x9198,
15593 +       0x0006, 0x9006, 0x23a0, 0x4004, 0x20a9, 0x0004, 0x9198, 0x000a,
15594 +       0x23a0, 0x4004, 0x002e, 0x001e, 0xb83e, 0xb842, 0xb84e, 0xb852,
15595 +       0xb856, 0xb85a, 0xb85e, 0xb862, 0xb866, 0xb86a, 0xb86f, 0x0100,
15596 +       0xb872, 0xb876, 0xb87a, 0xb88a, 0xb88e, 0xb893, 0x0008, 0xb896,
15597 +       0xb89a, 0xb89e, 0xb8ae, 0xb9a2, 0x0096, 0xb8a4, 0x904d, 0x0110,
15598 +       0x080c, 0x0fe0, 0xb8a7, 0x0000, 0x009e, 0x9006, 0xb84a, 0x6810,
15599 +       0xb83a, 0x680c, 0xb846, 0x6814, 0x9084, 0x00ff, 0xb842, 0x014e,
15600 +       0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, 0x8000,
15601 +       0xa974, 0xae78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1a04, 0x57c2,
15602 +       0x9182, 0x0800, 0x1a04, 0x57c6, 0x2001, 0x180c, 0x2004, 0x9084,
15603 +       0x0003, 0x1904, 0x57cc, 0x9188, 0x1000, 0x2104, 0x905d, 0x0518,
15604 +       0xb804, 0x9084, 0x00ff, 0x908e, 0x0006, 0x1508, 0xb8a4, 0x900d,
15605 +       0x1904, 0x57de, 0xb850, 0x900d, 0x1148, 0xa802, 0x2900, 0xb852,
15606 +       0xb84e, 0x080c, 0x7be8, 0x9006, 0x012e, 0x0005, 0x00a6, 0x2150,
15607 +       0x2900, 0xb002, 0xa803, 0x0000, 0x00ae, 0xb852, 0x0c90, 0x2001,
15608 +       0x0005, 0x900e, 0x04b0, 0x2001, 0x0028, 0x900e, 0x0490, 0x9082,
15609 +       0x0006, 0x1288, 0x080c, 0x94d3, 0x1158, 0xb8a0, 0xd0bc, 0x1140,
15610 +       0xb900, 0xd1fc, 0x0998, 0x2001, 0x0029, 0x2009, 0x1000, 0x0408,
15611 +       0x2001, 0x0028, 0x00a8, 0x2009, 0x180c, 0x210c, 0xd18c, 0x0118,
15612 +       0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, 0x0040,
15613 +       0x2001, 0x0029, 0xb900, 0xd1fc, 0x0118, 0x2009, 0x1000, 0x0048,
15614 +       0x900e, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, 0x2001, 0x0029,
15615 +       0x900e, 0x9005, 0x012e, 0x0005, 0x2001, 0x180c, 0x2004, 0xd084,
15616 +       0x19d0, 0x9188, 0x1000, 0x2104, 0x905d, 0x09a8, 0x080c, 0x5f2d,
15617 +       0x1990, 0xb800, 0xd0c4, 0x0978, 0x0804, 0x5776, 0x080c, 0x5da9,
15618 +       0x0904, 0x578f, 0x0804, 0x577a, 0x00b6, 0x00e6, 0x0126, 0x2091,
15619 +       0x8000, 0xa974, 0x9182, 0x0800, 0x1a04, 0x583f, 0x9188, 0x1000,
15620 +       0x2104, 0x905d, 0x0528, 0xb8a0, 0x9086, 0x007f, 0x0130, 0x080c,
15621 +       0x5f35, 0x0118, 0x080c, 0x5f2d, 0x11f0, 0xa87c, 0xd0fc, 0x0138,
15622 +       0xa894, 0x9005, 0x0120, 0x2060, 0x2900, 0x6016, 0x0058, 0x080c,
15623 +       0x94fe, 0x05e0, 0x2b00, 0x6012, 0x2900, 0x6016, 0x600b, 0xffff,
15624 +       0x6023, 0x000a, 0x2009, 0x0003, 0x080c, 0x95ce, 0x9006, 0x0450,
15625 +       0x2001, 0x0028, 0x0430, 0x9082, 0x0006, 0x1288, 0x080c, 0x94d3,
15626 +       0x1158, 0xb8a0, 0xd0bc, 0x1140, 0xb900, 0xd1fc, 0x09b0, 0x2001,
15627 +       0x0029, 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009,
15628 +       0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184,
15629 +       0x0118, 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001,
15630 +       0x0029, 0x9005, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2001, 0x002c,
15631 +       0x0cc0, 0x00f6, 0x00b6, 0x0126, 0x2091, 0x8000, 0xa8e0, 0x9005,
15632 +       0x1550, 0xa8dc, 0x9082, 0x0101, 0x1630, 0xa8c8, 0x9005, 0x1518,
15633 +       0xa8c4, 0x9082, 0x0101, 0x12f8, 0xa974, 0x2079, 0x1800, 0x9182,
15634 +       0x0800, 0x12e8, 0x7830, 0x9084, 0x0003, 0x1130, 0xaa98, 0xab94,
15635 +       0xa878, 0x9084, 0x0007, 0x00ea, 0x7930, 0xd18c, 0x0118, 0x2001,
15636 +       0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001,
15637 +       0x0029, 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001,
15638 +       0x0029, 0x900e, 0x9006, 0x0008, 0x9005, 0x012e, 0x00be, 0x00fe,
15639 +       0x0005, 0x58d5, 0x5891, 0x58a7, 0x58d5, 0x58d5, 0x58d5, 0x58d5,
15640 +       0x58d5, 0x2100, 0x9082, 0x007e, 0x1270, 0x080c, 0x5bb0, 0x0140,
15641 +       0xb810, 0x9306, 0x1904, 0x58dd, 0xb814, 0x9206, 0x15f0, 0x0028,
15642 +       0xbb12, 0xba16, 0x0010, 0x080c, 0x435a, 0x0150, 0x04b0, 0x080c,
15643 +       0x5c0d, 0x1598, 0xb810, 0x9306, 0x1580, 0xb814, 0x9206, 0x1568,
15644 +       0x080c, 0x94fe, 0x0530, 0x2b00, 0x6012, 0x080c, 0xb4e6, 0x2900,
15645 +       0x6016, 0x600b, 0xffff, 0x6023, 0x000a, 0xa878, 0x9086, 0x0001,
15646 +       0x1170, 0x080c, 0x2d1a, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0002,
15647 +       0x080c, 0x5b61, 0x2001, 0x0200, 0xb86e, 0xb893, 0x0002, 0x2009,
15648 +       0x0003, 0x080c, 0x95ce, 0x9006, 0x0068, 0x2001, 0x0001, 0x900e,
15649 +       0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001, 0x0028, 0x900e,
15650 +       0x9005, 0x0000, 0x012e, 0x00be, 0x00fe, 0x0005, 0x00b6, 0x00f6,
15651 +       0x00e6, 0x0126, 0x2091, 0x8000, 0xa894, 0x90c6, 0x0015, 0x0904,
15652 +       0x5aa6, 0x90c6, 0x0056, 0x0904, 0x5aaa, 0x90c6, 0x0066, 0x0904,
15653 +       0x5aae, 0x90c6, 0x0071, 0x0904, 0x5ab2, 0x90c6, 0x0074, 0x0904,
15654 +       0x5ab6, 0x90c6, 0x007c, 0x0904, 0x5aba, 0x90c6, 0x007e, 0x0904,
15655 +       0x5abe, 0x90c6, 0x0037, 0x0904, 0x5ac2, 0x9016, 0x2079, 0x1800,
15656 +       0xa974, 0x9186, 0x00ff, 0x0904, 0x5aa1, 0x9182, 0x0800, 0x1a04,
15657 +       0x5aa1, 0x080c, 0x5c0d, 0x1190, 0xb804, 0x9084, 0x00ff, 0x9082,
15658 +       0x0006, 0x1260, 0xa894, 0x90c6, 0x006f, 0x0140, 0x080c, 0x94d3,
15659 +       0x1904, 0x5a8a, 0xb8a0, 0xd0bc, 0x1904, 0x5a8a, 0xa894, 0x90c6,
15660 +       0x006f, 0x0158, 0x90c6, 0x005e, 0x0904, 0x59e6, 0x90c6, 0x0064,
15661 +       0x0904, 0x5a12, 0x2008, 0x0804, 0x59a8, 0xa998, 0xa8b0, 0x2040,
15662 +       0x080c, 0x94d3, 0x1120, 0x9182, 0x007f, 0x0a04, 0x59a8, 0x9186,
15663 +       0x00ff, 0x0904, 0x59a8, 0x9182, 0x0800, 0x1a04, 0x59a8, 0xaaa0,
15664 +       0xab9c, 0x7874, 0x9306, 0x1188, 0x7878, 0x0096, 0x924e, 0x1128,
15665 +       0x2208, 0x2310, 0x009e, 0x0804, 0x59a8, 0x99cc, 0xff00, 0x009e,
15666 +       0x1120, 0x2208, 0x2310, 0x0804, 0x59a8, 0x080c, 0x435a, 0x0904,
15667 +       0x59b2, 0x900e, 0x9016, 0x90c6, 0x4000, 0x1558, 0x0006, 0x080c,
15668 +       0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x20a9,
15669 +       0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031, 0x20a0, 0xb8b4,
15670 +       0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x080c, 0x0f2b, 0x20a9,
15671 +       0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0035, 0x20a0, 0xb8b4,
15672 +       0x20e0, 0xb8b8, 0x9080, 0x000a, 0x2098, 0x080c, 0x0f2b, 0x000e,
15673 +       0x0098, 0x90c6, 0x4007, 0x1110, 0x2408, 0x0070, 0x90c6, 0x4008,
15674 +       0x1118, 0x2708, 0x2610, 0x0040, 0x90c6, 0x4009, 0x1108, 0x0020,
15675 +       0x2001, 0x4005, 0x2009, 0x000a, 0xa896, 0xa99a, 0xaa9e, 0x2001,
15676 +       0x0030, 0x0470, 0x080c, 0x94fe, 0x1130, 0x2001, 0x4005, 0x2009,
15677 +       0x0003, 0x9016, 0x0c88, 0x2b00, 0x6012, 0x080c, 0xb4e6, 0x2900,
15678 +       0x6016, 0x6023, 0x0001, 0xa868, 0xd88c, 0x0108, 0xc0f5, 0xa86a,
15679 +       0x0126, 0x2091, 0x8000, 0x080c, 0x2d1a, 0x012e, 0x9006, 0x080c,
15680 +       0x5b4d, 0x2001, 0x0002, 0x080c, 0x5b61, 0x2009, 0x0002, 0x080c,
15681 +       0x95ce, 0xa8b0, 0xd094, 0x0118, 0xb8bc, 0xc08d, 0xb8be, 0x9006,
15682 +       0x9005, 0x012e, 0x00ee, 0x00fe, 0x00be, 0x0005, 0x080c, 0x4dfe,
15683 +       0x0118, 0x2009, 0x0007, 0x0410, 0xa998, 0xaeb0, 0x080c, 0x5c0d,
15684 +       0x0120, 0x2009, 0x000a, 0x0804, 0x59a8, 0x9186, 0x007f, 0x0130,
15685 +       0x080c, 0x5f2d, 0x0118, 0x2009, 0x0009, 0x0080, 0x0096, 0x080c,
15686 +       0x0fae, 0x1120, 0x009e, 0x2009, 0x0002, 0x0040, 0x2900, 0x009e,
15687 +       0xa806, 0x080c, 0xb275, 0x1998, 0x2009, 0x0003, 0x2001, 0x4005,
15688 +       0x0804, 0x59ac, 0xa998, 0xaeb0, 0x080c, 0x5c0d, 0x0120, 0x2009,
15689 +       0x000a, 0x0804, 0x59a8, 0x0096, 0x080c, 0x0fae, 0x1128, 0x009e,
15690 +       0x2009, 0x0002, 0x0804, 0x5a69, 0x2900, 0x009e, 0xa806, 0x0096,
15691 +       0x2048, 0x20a9, 0x002b, 0xb8b4, 0x20e0, 0xb8b8, 0x2098, 0xa860,
15692 +       0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, 0x20a9, 0x0008,
15693 +       0x9080, 0x0006, 0x20a0, 0xbbb8, 0x9398, 0x0006, 0x2398, 0x080c,
15694 +       0x0f2b, 0x009e, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000,
15695 +       0xd684, 0x1168, 0x080c, 0x4dea, 0xd0b4, 0x1118, 0xa89b, 0x000b,
15696 +       0x00e0, 0xb800, 0xd08c, 0x0118, 0xa89b, 0x000c, 0x00b0, 0x080c,
15697 +       0x5f2d, 0x0118, 0xa89b, 0x0009, 0x0080, 0x080c, 0x4dfe, 0x0118,
15698 +       0xa89b, 0x0007, 0x0050, 0x080c, 0xb258, 0x1904, 0x59df, 0x2009,
15699 +       0x0003, 0x2001, 0x4005, 0x0804, 0x59ac, 0xa87b, 0x0030, 0xa897,
15700 +       0x4005, 0xa804, 0x8006, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084,
15701 +       0xffc0, 0x2009, 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031,
15702 +       0x0000, 0x2041, 0x11e3, 0x080c, 0x9a1f, 0x1904, 0x59df, 0x2009,
15703 +       0x0002, 0x08f8, 0x2001, 0x0028, 0x900e, 0x0804, 0x59e0, 0x2009,
15704 +       0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, 0xd184,
15705 +       0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, 0x900e, 0x0804,
15706 +       0x59e0, 0x2001, 0x0029, 0x900e, 0x0804, 0x59e0, 0x080c, 0x327f,
15707 +       0x0804, 0x59e1, 0x080c, 0x4b29, 0x0804, 0x59e1, 0x080c, 0x3fec,
15708 +       0x0804, 0x59e1, 0x080c, 0x43f5, 0x0804, 0x59e1, 0x080c, 0x4572,
15709 +       0x0804, 0x59e1, 0x080c, 0x4796, 0x0804, 0x59e1, 0x080c, 0x499b,
15710 +       0x0804, 0x59e1, 0x080c, 0x3459, 0x0804, 0x59e1, 0x00b6, 0xa974,
15711 +       0xae78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1618, 0x9182, 0x0800,
15712 +       0x1268, 0x9188, 0x1000, 0x2104, 0x905d, 0x0140, 0x080c, 0x5f2d,
15713 +       0x1148, 0x00e9, 0x080c, 0x5d38, 0x9006, 0x00b0, 0x2001, 0x0028,
15714 +       0x900e, 0x0090, 0x9082, 0x0006, 0x1240, 0xb900, 0xd1fc, 0x0d88,
15715 +       0x2001, 0x0029, 0x2009, 0x1000, 0x0038, 0x2001, 0x0029, 0x900e,
15716 +       0x0018, 0x2001, 0x0029, 0x900e, 0x9005, 0x00be, 0x0005, 0x0126,
15717 +       0x2091, 0x8000, 0xb850, 0x900d, 0x0150, 0x2900, 0x0096, 0x2148,
15718 +       0xa802, 0x009e, 0xa803, 0x0000, 0xb852, 0x012e, 0x0005, 0x2900,
15719 +       0xb852, 0xb84e, 0xa803, 0x0000, 0x0cc0, 0x0126, 0x2091, 0x8000,
15720 +       0xb84c, 0x9005, 0x0170, 0x00e6, 0x2071, 0x19b4, 0x7004, 0x9086,
15721 +       0x0002, 0x0168, 0x00ee, 0xb84c, 0xa802, 0x2900, 0xb84e, 0x012e,
15722 +       0x0005, 0x2900, 0xb852, 0xb84e, 0xa803, 0x0000, 0x0cc0, 0x701c,
15723 +       0x9b06, 0x1d80, 0xb84c, 0x00a6, 0x2050, 0xb000, 0xa802, 0x2900,
15724 +       0xb002, 0x00ae, 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000,
15725 +       0xb84c, 0x904d, 0x0130, 0xa800, 0x9005, 0x1108, 0xb852, 0xb84e,
15726 +       0x9905, 0x012e, 0x0005, 0xb84c, 0x904d, 0x0130, 0xa800, 0x9005,
15727 +       0x1108, 0xb852, 0xb84e, 0x9905, 0x0005, 0x00b6, 0x0126, 0x00c6,
15728 +       0x0026, 0x2091, 0x8000, 0x6210, 0x2258, 0xba00, 0x9005, 0x0110,
15729 +       0xc285, 0x0008, 0xc284, 0xba02, 0x002e, 0x00ce, 0x012e, 0x00be,
15730 +       0x0005, 0x00b6, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6210, 0x2258,
15731 +       0xba04, 0x0006, 0x9086, 0x0006, 0x1170, 0xb89c, 0xd0ac, 0x0158,
15732 +       0x080c, 0x5f29, 0x0140, 0x9284, 0xff00, 0x8007, 0x9086, 0x0007,
15733 +       0x1110, 0x2011, 0x0600, 0x000e, 0x9294, 0xff00, 0x9215, 0xba06,
15734 +       0x0006, 0x9086, 0x0006, 0x1120, 0xba90, 0x82ff, 0x090c, 0x0d84,
15735 +       0x000e, 0x00ce, 0x012e, 0x00be, 0x0005, 0x00b6, 0x0126, 0x00c6,
15736 +       0x2091, 0x8000, 0x6210, 0x2258, 0xba04, 0x0006, 0x9086, 0x0006,
15737 +       0x1168, 0xb89c, 0xd0a4, 0x0150, 0x080c, 0x5f25, 0x1138, 0x9284,
15738 +       0x00ff, 0x9086, 0x0007, 0x1110, 0x2011, 0x0006, 0x000e, 0x9294,
15739 +       0x00ff, 0x8007, 0x9215, 0xba06, 0x00ce, 0x012e, 0x00be, 0x0005,
15740 +       0x00d6, 0x0026, 0x9182, 0x0800, 0x0218, 0x9085, 0x0001, 0x00b0,
15741 +       0x9190, 0x1000, 0x2204, 0x905d, 0x1180, 0x0096, 0x080c, 0x0fae,
15742 +       0x2958, 0x009e, 0x0d90, 0x2b00, 0x2012, 0xb85c, 0xb8ba, 0xb860,
15743 +       0xb8b6, 0x9006, 0xb8a6, 0x080c, 0x56f3, 0x9006, 0x002e, 0x00de,
15744 +       0x0005, 0x00b6, 0x0096, 0x0126, 0x2091, 0x8000, 0x0026, 0x9182,
15745 +       0x0800, 0x0218, 0x9085, 0x0001, 0x0458, 0x00d6, 0x9190, 0x1000,
15746 +       0x2204, 0x905d, 0x0518, 0x2013, 0x0000, 0xb8a4, 0x904d, 0x0110,
15747 +       0x080c, 0x0fe0, 0x00d6, 0x00c6, 0xb8ac, 0x2060, 0x8cff, 0x0168,
15748 +       0x600c, 0x0006, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0110, 0x080c,
15749 +       0x0f60, 0x080c, 0x9554, 0x00ce, 0x0c88, 0x00ce, 0x00de, 0x2b48,
15750 +       0xb8b8, 0xb85e, 0xb8b4, 0xb862, 0x080c, 0x0ff0, 0x00de, 0x9006,
15751 +       0x002e, 0x012e, 0x009e, 0x00be, 0x0005, 0x0016, 0x9182, 0x0800,
15752 +       0x0218, 0x9085, 0x0001, 0x0030, 0x9188, 0x1000, 0x2104, 0x905d,
15753 +       0x0dc0, 0x9006, 0x001e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146,
15754 +       0x9006, 0xb80a, 0xb80e, 0xb800, 0xc08c, 0xb802, 0x080c, 0x6877,
15755 +       0x1510, 0xb8a0, 0x9086, 0x007e, 0x0120, 0x080c, 0x94d3, 0x11d8,
15756 +       0x0078, 0x7040, 0xd0e4, 0x01b8, 0x00c6, 0x2061, 0x194f, 0x7048,
15757 +       0x2062, 0x704c, 0x6006, 0x7050, 0x600a, 0x7054, 0x600e, 0x00ce,
15758 +       0x703c, 0x2069, 0x0140, 0x9005, 0x1110, 0x2001, 0x0001, 0x6886,
15759 +       0x2069, 0x1800, 0x68ae, 0x7040, 0xb85e, 0x7048, 0xb862, 0x704c,
15760 +       0xb866, 0x20e1, 0x0000, 0x2099, 0x0276, 0xb8b4, 0x20e8, 0xb8b8,
15761 +       0x9088, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2099, 0x027a,
15762 +       0x9088, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2069, 0x0200,
15763 +       0x6817, 0x0001, 0x7040, 0xb86a, 0x7144, 0xb96e, 0x7048, 0xb872,
15764 +       0x7050, 0xb876, 0x2069, 0x0200, 0x6817, 0x0000, 0xb8a0, 0x9086,
15765 +       0x007e, 0x1110, 0x7144, 0xb96e, 0x9182, 0x0211, 0x1218, 0x2009,
15766 +       0x0008, 0x0400, 0x9182, 0x0259, 0x1218, 0x2009, 0x0007, 0x00d0,
15767 +       0x9182, 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0x9182, 0x0349,
15768 +       0x1218, 0x2009, 0x0005, 0x0070, 0x9182, 0x0421, 0x1218, 0x2009,
15769 +       0x0004, 0x0040, 0x9182, 0x0581, 0x1218, 0x2009, 0x0003, 0x0010,
15770 +       0x2009, 0x0002, 0xb992, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005,
15771 +       0x0016, 0x0026, 0x00e6, 0x2071, 0x0260, 0x7034, 0xb896, 0x703c,
15772 +       0xb89a, 0x7054, 0xb89e, 0x0036, 0xbbbc, 0xc384, 0xba00, 0x2009,
15773 +       0x1872, 0x210c, 0xd0bc, 0x0120, 0xd1ec, 0x0110, 0xc2ad, 0x0008,
15774 +       0xc2ac, 0xd0c4, 0x0148, 0xd1e4, 0x0138, 0xc2bd, 0xd0cc, 0x0128,
15775 +       0xd38c, 0x1108, 0xc385, 0x0008, 0xc2bc, 0xba02, 0xbbbe, 0x003e,
15776 +       0x00ee, 0x002e, 0x001e, 0x0005, 0x0096, 0x0126, 0x2091, 0x8000,
15777 +       0xb8a4, 0x904d, 0x0578, 0xa900, 0x81ff, 0x15c0, 0xaa04, 0x9282,
15778 +       0x0010, 0x16c8, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x8906, 0x8006,
15779 +       0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, 0x9080, 0x0004,
15780 +       0x2098, 0x2009, 0x0010, 0x20a9, 0x0001, 0x4002, 0x9086, 0xffff,
15781 +       0x0120, 0x8109, 0x1dd0, 0x080c, 0x0d84, 0x3c00, 0x20e8, 0x3300,
15782 +       0x8001, 0x20a0, 0x4604, 0x8210, 0xaa06, 0x01de, 0x01ce, 0x014e,
15783 +       0x013e, 0x0060, 0x080c, 0x0fae, 0x0170, 0x2900, 0xb8a6, 0xa803,
15784 +       0x0000, 0x080c, 0x5dc9, 0xa807, 0x0001, 0xae12, 0x9085, 0x0001,
15785 +       0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0126, 0x2091, 0x8000,
15786 +       0x0096, 0xb8a4, 0x904d, 0x0188, 0xa800, 0x9005, 0x1150, 0x080c,
15787 +       0x5dd8, 0x1158, 0xa804, 0x908a, 0x0002, 0x0218, 0x8001, 0xa806,
15788 +       0x0020, 0x080c, 0x0fe0, 0xb8a7, 0x0000, 0x009e, 0x012e, 0x0005,
15789 +       0x0126, 0x2091, 0x8000, 0x080c, 0x7be8, 0x012e, 0x0005, 0x901e,
15790 +       0x0010, 0x2019, 0x0001, 0x900e, 0x0126, 0x2091, 0x8000, 0xb84c,
15791 +       0x2048, 0xb800, 0xd0dc, 0x1170, 0x89ff, 0x0500, 0x83ff, 0x0120,
15792 +       0xa878, 0x9606, 0x0158, 0x0030, 0xa86c, 0x9406, 0x1118, 0xa870,
15793 +       0x9506, 0x0120, 0x2908, 0xa800, 0x2048, 0x0c70, 0x080c, 0x8eec,
15794 +       0xaa00, 0xb84c, 0x9906, 0x1110, 0xba4e, 0x0020, 0x00a6, 0x2150,
15795 +       0xb202, 0x00ae, 0x82ff, 0x1110, 0xb952, 0x89ff, 0x012e, 0x0005,
15796 +       0x9016, 0x0489, 0x1110, 0x2011, 0x0001, 0x0005, 0x080c, 0x5e2d,
15797 +       0x0118, 0x080c, 0xb15e, 0x0010, 0x9085, 0x0001, 0x0005, 0x080c,
15798 +       0x5e2d, 0x0118, 0x080c, 0xb0f8, 0x0010, 0x9085, 0x0001, 0x0005,
15799 +       0x080c, 0x5e2d, 0x0118, 0x080c, 0xb15b, 0x0010, 0x9085, 0x0001,
15800 +       0x0005, 0x080c, 0x5e2d, 0x0118, 0x080c, 0xb11c, 0x0010, 0x9085,
15801 +       0x0001, 0x0005, 0x080c, 0x5e2d, 0x0118, 0x080c, 0xb188, 0x0010,
15802 +       0x9085, 0x0001, 0x0005, 0xb8a4, 0x900d, 0x1118, 0x9085, 0x0001,
15803 +       0x0005, 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, 0x810e,
15804 +       0x810f, 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0004,
15805 +       0x2098, 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, 0x0128,
15806 +       0x8109, 0x1dd8, 0x9085, 0x0001, 0x0008, 0x9006, 0x01ce, 0x013e,
15807 +       0x0005, 0x0146, 0x01d6, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0004,
15808 +       0x20a0, 0x20a9, 0x0010, 0x2009, 0xffff, 0x4104, 0x01de, 0x014e,
15809 +       0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, 0x810e, 0x810f,
15810 +       0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0004, 0x2098,
15811 +       0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, 0x0128, 0x8109,
15812 +       0x1dd8, 0x9085, 0x0001, 0x0068, 0x0146, 0x01d6, 0x3300, 0x8001,
15813 +       0x20a0, 0x3c00, 0x20e8, 0x2001, 0xffff, 0x4004, 0x01de, 0x014e,
15814 +       0x9006, 0x01ce, 0x013e, 0x0005, 0x0096, 0x0126, 0x2091, 0x8000,
15815 +       0xb8a4, 0x904d, 0x1128, 0x080c, 0x0fae, 0x0168, 0x2900, 0xb8a6,
15816 +       0x080c, 0x5dc9, 0xa803, 0x0001, 0xa807, 0x0000, 0x9085, 0x0001,
15817 +       0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0096, 0x0126, 0x2091,
15818 +       0x8000, 0xb8a4, 0x904d, 0x0130, 0xb8a7, 0x0000, 0x080c, 0x0fe0,
15819 +       0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0xb89c, 0xd0a4, 0x0005,
15820 +       0x00b6, 0x00f6, 0x080c, 0x6877, 0x01b0, 0x71c0, 0x81ff, 0x1198,
15821 +       0x71d8, 0xd19c, 0x0180, 0x2001, 0x007e, 0x9080, 0x1000, 0x2004,
15822 +       0x905d, 0x0148, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1118,
15823 +       0xb800, 0xc0ed, 0xb802, 0x2079, 0x1852, 0x7804, 0xd0a4, 0x01d0,
15824 +       0x0156, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x5c0d, 0x1168,
15825 +       0xb804, 0x9084, 0xff00, 0x8007, 0x9096, 0x0004, 0x0118, 0x9086,
15826 +       0x0006, 0x1118, 0xb800, 0xc0ed, 0xb802, 0x001e, 0x8108, 0x1f04,
15827 +       0x5e54, 0x015e, 0x080c, 0x5eeb, 0x0120, 0x2001, 0x1952, 0x200c,
15828 +       0x0038, 0x2079, 0x1852, 0x7804, 0xd0a4, 0x0130, 0x2009, 0x07d0,
15829 +       0x2011, 0x5e7f, 0x080c, 0x78a5, 0x00fe, 0x00be, 0x0005, 0x00b6,
15830 +       0x2011, 0x5e7f, 0x080c, 0x781a, 0x080c, 0x5eeb, 0x01d8, 0x2001,
15831 +       0x107e, 0x2004, 0x2058, 0xb900, 0xc1ec, 0xb902, 0x080c, 0x5f29,
15832 +       0x0130, 0x2009, 0x07d0, 0x2011, 0x5e7f, 0x080c, 0x78a5, 0x00e6,
15833 +       0x2071, 0x1800, 0x9006, 0x7076, 0x7058, 0x707a, 0x080c, 0x2b1e,
15834 +       0x00ee, 0x0488, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016,
15835 +       0x080c, 0x5c0d, 0x1510, 0xb800, 0xd0ec, 0x01f8, 0x0046, 0xbaa0,
15836 +       0x2220, 0x9006, 0x2009, 0x0029, 0x080c, 0xc9c5, 0xb800, 0xc0e5,
15837 +       0xc0ec, 0xb802, 0xb804, 0x9084, 0x00ff, 0x9085, 0x0700, 0xb806,
15838 +       0x2019, 0x0029, 0x080c, 0x7d55, 0x0076, 0x903e, 0x080c, 0x7c4d,
15839 +       0x900e, 0x080c, 0xc73e, 0x007e, 0x004e, 0x001e, 0x8108, 0x1f04,
15840 +       0x5ea7, 0x00ce, 0x015e, 0x00be, 0x0005, 0x00b6, 0x6010, 0x2058,
15841 +       0xb800, 0xc0ec, 0xb802, 0x00be, 0x0005, 0x7810, 0x00b6, 0x2058,
15842 +       0xb800, 0x00be, 0xd0ac, 0x0005, 0x7810, 0x00b6, 0x2058, 0xb800,
15843 +       0x00be, 0xd0bc, 0x0005, 0x00b6, 0x00f6, 0x2001, 0x107e, 0x2004,
15844 +       0x905d, 0x0110, 0xb800, 0xd0ec, 0x00fe, 0x00be, 0x0005, 0x0126,
15845 +       0x0026, 0x2091, 0x8000, 0x0006, 0xbaa0, 0x9290, 0x1000, 0x2204,
15846 +       0x9b06, 0x190c, 0x0d84, 0x000e, 0xba00, 0x9005, 0x0110, 0xc2fd,
15847 +       0x0008, 0xc2fc, 0xba02, 0x002e, 0x012e, 0x0005, 0x2011, 0x1836,
15848 +       0x2204, 0xd0cc, 0x0138, 0x2001, 0x1950, 0x200c, 0x2011, 0x5f1b,
15849 +       0x080c, 0x78a5, 0x0005, 0x2011, 0x5f1b, 0x080c, 0x781a, 0x2011,
15850 +       0x1836, 0x2204, 0xc0cc, 0x2012, 0x0005, 0x080c, 0x4dea, 0xd0ac,
15851 +       0x0005, 0x080c, 0x4dea, 0xd0a4, 0x0005, 0x0016, 0xb904, 0x9184,
15852 +       0x00ff, 0x908e, 0x0006, 0x001e, 0x0005, 0x0016, 0xb904, 0x9184,
15853 +       0xff00, 0x8007, 0x908e, 0x0006, 0x001e, 0x0005, 0x00b6, 0x00f6,
15854 +       0x080c, 0xb759, 0x0158, 0x70d8, 0x9084, 0x0028, 0x0138, 0x2001,
15855 +       0x107f, 0x2004, 0x905d, 0x0110, 0xb8bc, 0xd094, 0x00fe, 0x00be,
15856 +       0x0005, 0x2071, 0x1904, 0x7003, 0x0001, 0x7007, 0x0000, 0x9006,
15857 +       0x7012, 0x7016, 0x701a, 0x701e, 0x700a, 0x7046, 0x2001, 0x1917,
15858 +       0x2003, 0x0000, 0x0005, 0x0016, 0x00e6, 0x2071, 0x1918, 0x900e,
15859 +       0x710a, 0x080c, 0x4dea, 0xd0fc, 0x1140, 0x080c, 0x4dea, 0x900e,
15860 +       0xd09c, 0x0108, 0x8108, 0x7102, 0x00f8, 0x2001, 0x1872, 0x200c,
15861 +       0x9184, 0x0007, 0x0002, 0x5f6d, 0x5f6d, 0x5f6d, 0x5f6d, 0x5f6d,
15862 +       0x5f83, 0x5f91, 0x5f6d, 0x7003, 0x0003, 0x2009, 0x1873, 0x210c,
15863 +       0x9184, 0xff00, 0x8007, 0x9005, 0x1110, 0x2001, 0x0002, 0x7006,
15864 +       0x0018, 0x7003, 0x0005, 0x0c88, 0x00ee, 0x001e, 0x0005, 0x00e6,
15865 +       0x2071, 0x0050, 0x684c, 0x9005, 0x1150, 0x00e6, 0x2071, 0x1904,
15866 +       0x7028, 0xc085, 0x702a, 0x00ee, 0x9085, 0x0001, 0x0488, 0x6844,
15867 +       0x9005, 0x0158, 0x080c, 0x6bb2, 0x6a60, 0x9200, 0x7002, 0x6864,
15868 +       0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6860, 0x7002, 0x6864,
15869 +       0x7006, 0x6868, 0x700a, 0x686c, 0x700e, 0x6844, 0x9005, 0x1110,
15870 +       0x7012, 0x7016, 0x684c, 0x701a, 0x701c, 0x9085, 0x0040, 0x701e,
15871 +       0x7037, 0x0019, 0x702b, 0x0001, 0x00e6, 0x2071, 0x1904, 0x7028,
15872 +       0xc084, 0x702a, 0x7007, 0x0001, 0x700b, 0x0000, 0x00ee, 0x9006,
15873 +       0x00ee, 0x0005, 0xa868, 0xd0fc, 0x11c8, 0x00e6, 0x0026, 0x2001,
15874 +       0x1918, 0x2004, 0x9005, 0x0904, 0x61ae, 0xa87c, 0xd0bc, 0x1904,
15875 +       0x61ae, 0xa978, 0xa874, 0x9105, 0x1904, 0x61ae, 0x2001, 0x1918,
15876 +       0x2004, 0x0002, 0x61ae, 0x6017, 0x6051, 0x6051, 0x0005, 0xa868,
15877 +       0xd0fc, 0x11e0, 0x00e6, 0x0026, 0x2009, 0x1918, 0x210c, 0x81ff,
15878 +       0x0904, 0x61ae, 0xa87c, 0xd0cc, 0x0904, 0x61ae, 0xa880, 0x9084,
15879 +       0x00ff, 0x9086, 0x0001, 0x1904, 0x61ae, 0x9186, 0x0003, 0x0904,
15880 +       0x6051, 0xa84f, 0x8021, 0xa853, 0x0017, 0x0028, 0x0005, 0xa84f,
15881 +       0x8020, 0xa853, 0x0016, 0x2071, 0x1904, 0x701c, 0x9005, 0x1904,
15882 +       0x6360, 0x0e04, 0x63a9, 0x2071, 0x0000, 0xa84c, 0x7082, 0xa850,
15883 +       0x7032, 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0x2091, 0x4080,
15884 +       0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2071, 0x1800,
15885 +       0x2011, 0x0001, 0xa804, 0x900d, 0x702c, 0x1148, 0xa802, 0x2900,
15886 +       0x702e, 0x70bc, 0x9200, 0x70be, 0x002e, 0x00ee, 0x0005, 0x0096,
15887 +       0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x009e,
15888 +       0x0c68, 0xa84f, 0x0000, 0x00f6, 0x2079, 0x0050, 0x2071, 0x1904,
15889 +       0xa803, 0x0000, 0x7010, 0x9005, 0x1904, 0x6136, 0x782c, 0x908c,
15890 +       0x0780, 0x190c, 0x64ce, 0x8004, 0x8004, 0x8004, 0x9084, 0x0003,
15891 +       0x0002, 0x606f, 0x6136, 0x6092, 0x60d5, 0x080c, 0x0d84, 0x2071,
15892 +       0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x1170, 0x2071, 0x19c7,
15893 +       0x7040, 0x9005, 0x1328, 0x2001, 0x1919, 0x2004, 0x8005, 0x7042,
15894 +       0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, 0x2148, 0xa904,
15895 +       0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200,
15896 +       0x70be, 0x0c20, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d,
15897 +       0x1570, 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148,
15898 +       0x2009, 0x182f, 0x210c, 0x918a, 0x0040, 0x0218, 0x7022, 0x00ee,
15899 +       0x0048, 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc,
15900 +       0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4,
15901 +       0x1d00, 0x2071, 0x19c7, 0x7040, 0x9005, 0x1328, 0x2001, 0x1919,
15902 +       0x2004, 0x8005, 0x7042, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016,
15903 +       0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8,
15904 +       0x702e, 0x70bc, 0x9200, 0x70be, 0x0820, 0x0096, 0x00e6, 0x7824,
15905 +       0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc,
15906 +       0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4,
15907 +       0x1d70, 0x00ee, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd09c,
15908 +       0x11a0, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, 0x1560, 0x2071,
15909 +       0x19c7, 0x7040, 0x9005, 0x1328, 0x2001, 0x1919, 0x2004, 0x8005,
15910 +       0x7042, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x009e, 0x2908, 0x7010,
15911 +       0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008,
15912 +       0x711e, 0x2148, 0xa804, 0x900d, 0x1170, 0x2071, 0x19c7, 0x7040,
15913 +       0x9005, 0x1328, 0x2001, 0x1919, 0x2004, 0x8005, 0x7042, 0x00fe,
15914 +       0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148,
15915 +       0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc,
15916 +       0x9200, 0x70be, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2908, 0x7010,
15917 +       0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008,
15918 +       0x711e, 0x2148, 0xa804, 0x900d, 0x1904, 0x6189, 0x782c, 0x9094,
15919 +       0x0780, 0x190c, 0x64ce, 0xd09c, 0x1198, 0x701c, 0x904d, 0x0180,
15920 +       0x7010, 0x8001, 0x7012, 0x1108, 0x701a, 0xa800, 0x701e, 0x2900,
15921 +       0x7822, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd09c, 0x0d68,
15922 +       0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x01a0, 0x00e6,
15923 +       0x7824, 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e,
15924 +       0x70bc, 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce,
15925 +       0xd0a4, 0x1d70, 0x00ee, 0x2071, 0x19c7, 0x7040, 0x9005, 0x1328,
15926 +       0x2001, 0x1919, 0x2004, 0x8005, 0x7042, 0x00fe, 0x002e, 0x00ee,
15927 +       0x0005, 0x00e6, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904,
15928 +       0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200,
15929 +       0x70be, 0x00ee, 0x0804, 0x6146, 0xa868, 0xd0fc, 0x1904, 0x61ea,
15930 +       0x0096, 0xa804, 0xa807, 0x0000, 0x904d, 0x190c, 0x0f60, 0x009e,
15931 +       0x0018, 0xa868, 0xd0fc, 0x15f0, 0x00e6, 0x0026, 0xa84f, 0x0000,
15932 +       0x00f6, 0x2079, 0x0050, 0x2071, 0x1800, 0x70f0, 0x8001, 0x01d0,
15933 +       0x1678, 0x2071, 0x1904, 0xa803, 0x0000, 0x7010, 0x9005, 0x1904,
15934 +       0x62de, 0x782c, 0x908c, 0x0780, 0x190c, 0x64ce, 0x8004, 0x8004,
15935 +       0x8004, 0x9084, 0x0003, 0x0002, 0x61eb, 0x62de, 0x6204, 0x6271,
15936 +       0x080c, 0x0d84, 0x70f3, 0x0fa0, 0x71ec, 0x8107, 0x9106, 0x9094,
15937 +       0x00c0, 0x9184, 0xff3f, 0x9205, 0x70ee, 0x3b08, 0x3a00, 0x9104,
15938 +       0x918d, 0x00c0, 0x21d8, 0x9084, 0xff3f, 0x9205, 0x20d0, 0x0888,
15939 +       0x70f2, 0x0878, 0x0005, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804,
15940 +       0x900d, 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c,
15941 +       0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e,
15942 +       0x70bc, 0x9200, 0x70be, 0x0c70, 0x2071, 0x1800, 0x2900, 0x7822,
15943 +       0xa804, 0x900d, 0x1904, 0x6262, 0x7830, 0x8007, 0x9084, 0x001f,
15944 +       0x9082, 0x0005, 0x1220, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7824,
15945 +       0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148, 0x2009, 0x182f,
15946 +       0x210c, 0x918a, 0x0040, 0x0218, 0x7022, 0x00ee, 0x0048, 0x00ee,
15947 +       0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be,
15948 +       0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x1d00, 0x0e04,
15949 +       0x6259, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000,
15950 +       0x6836, 0x6833, 0x0013, 0x00de, 0x2001, 0x1915, 0x200c, 0xc184,
15951 +       0x2102, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c,
15952 +       0x113e, 0x2009, 0x1917, 0x200b, 0x0000, 0x00fe, 0x002e, 0x00ee,
15953 +       0x0005, 0x2001, 0x1915, 0x200c, 0xc185, 0x2102, 0x00fe, 0x002e,
15954 +       0x00ee, 0x0005, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210,
15955 +       0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x0804,
15956 +       0x6217, 0x0096, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c,
15957 +       0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094,
15958 +       0x0780, 0x190c, 0x64ce, 0xd0a4, 0x1d70, 0x00ee, 0x0e04, 0x62b3,
15959 +       0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836,
15960 +       0x6833, 0x0013, 0x00de, 0x7044, 0xc084, 0x7046, 0x2091, 0x4080,
15961 +       0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2009, 0x1917,
15962 +       0x200b, 0x0000, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd09c,
15963 +       0x1170, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, 0x11e0, 0x00fe,
15964 +       0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, 0x0c58, 0x009e,
15965 +       0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110,
15966 +       0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, 0x1120, 0x00fe,
15967 +       0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148,
15968 +       0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc,
15969 +       0x9200, 0x70be, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2908, 0x7010,
15970 +       0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008,
15971 +       0x711e, 0x2148, 0xa804, 0x900d, 0x1904, 0x634d, 0x782c, 0x9094,
15972 +       0x0780, 0x190c, 0x64ce, 0xd09c, 0x11b0, 0x701c, 0x904d, 0x0198,
15973 +       0xa84c, 0x9005, 0x1180, 0x7010, 0x8001, 0x7012, 0x1108, 0x701a,
15974 +       0xa800, 0x701e, 0x2900, 0x7822, 0x782c, 0x9094, 0x0780, 0x190c,
15975 +       0x64ce, 0xd09c, 0x0d50, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce,
15976 +       0xd0a4, 0x05b8, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c,
15977 +       0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094,
15978 +       0x0780, 0x190c, 0x64ce, 0xd0a4, 0x1d70, 0x00ee, 0x0e04, 0x6346,
15979 +       0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836,
15980 +       0x6833, 0x0013, 0x00de, 0x7044, 0xc084, 0x7046, 0x2091, 0x4080,
15981 +       0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2009, 0x1917,
15982 +       0x200b, 0x0000, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085,
15983 +       0x7046, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800,
15984 +       0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff,
15985 +       0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x00ee, 0x0804, 0x62ee,
15986 +       0x2071, 0x1904, 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, 0x7012,
15987 +       0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148,
15988 +       0xa804, 0x900d, 0x1128, 0x1e04, 0x6389, 0x002e, 0x00ee, 0x0005,
15989 +       0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210,
15990 +       0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x0e04,
15991 +       0x6375, 0x2071, 0x1904, 0x701c, 0x2048, 0xa84c, 0x900d, 0x0d28,
15992 +       0x2071, 0x0000, 0x7182, 0xa850, 0x7032, 0xa86c, 0x7086, 0x7036,
15993 +       0xa870, 0x708a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084,
15994 +       0x190c, 0x113e, 0x2071, 0x1904, 0x080c, 0x64ba, 0x002e, 0x00ee,
15995 +       0x0005, 0x2071, 0x1904, 0xa803, 0x0000, 0x2908, 0x7010, 0x8000,
15996 +       0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e,
15997 +       0x2148, 0xa804, 0x900d, 0x1118, 0x002e, 0x00ee, 0x0005, 0x2071,
15998 +       0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900,
15999 +       0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x002e, 0x00ee,
16000 +       0x0005, 0x0006, 0xa87c, 0x0006, 0xa867, 0x0103, 0x20a9, 0x001c,
16001 +       0xa860, 0x20e8, 0xa85c, 0x9080, 0x001d, 0x20a0, 0x9006, 0x4004,
16002 +       0x000e, 0x9084, 0x00ff, 0xa87e, 0x000e, 0xa87a, 0xa982, 0x0005,
16003 +       0x2071, 0x1904, 0x7004, 0x0002, 0x63f2, 0x63f3, 0x64b9, 0x63f3,
16004 +       0x0d84, 0x64b9, 0x0005, 0x2001, 0x1918, 0x2004, 0x0002, 0x63fd,
16005 +       0x63fd, 0x6452, 0x6453, 0x63fd, 0x6453, 0x0126, 0x2091, 0x8000,
16006 +       0x1e0c, 0x64d9, 0x701c, 0x904d, 0x01e0, 0xa84c, 0x9005, 0x01d8,
16007 +       0x0e04, 0x6421, 0xa94c, 0x2071, 0x0000, 0x7182, 0xa850, 0x7032,
16008 +       0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0x2091, 0x4080, 0x2001,
16009 +       0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2071, 0x1904, 0x080c,
16010 +       0x64ba, 0x012e, 0x0470, 0x2001, 0x005b, 0x2004, 0x9094, 0x0780,
16011 +       0x190c, 0x64ce, 0xd09c, 0x2071, 0x1904, 0x1510, 0x2071, 0x1904,
16012 +       0x700f, 0x0001, 0xa964, 0x9184, 0x00ff, 0x9086, 0x0003, 0x1130,
16013 +       0x810f, 0x918c, 0x00ff, 0x8101, 0x0108, 0x710e, 0x2900, 0x00d6,
16014 +       0x2069, 0x0050, 0x6822, 0x00de, 0x2071, 0x1904, 0x701c, 0x2048,
16015 +       0x7010, 0x8001, 0x7012, 0xa800, 0x701e, 0x9005, 0x1108, 0x701a,
16016 +       0x012e, 0x0005, 0x0005, 0x00d6, 0x2008, 0x2069, 0x19c7, 0x6840,
16017 +       0x9005, 0x0760, 0x0158, 0x9186, 0x0003, 0x0540, 0x2001, 0x1813,
16018 +       0x2004, 0x2009, 0x1a8a, 0x210c, 0x9102, 0x1500, 0x0126, 0x2091,
16019 +       0x8000, 0x2069, 0x0050, 0x693c, 0x6838, 0x9106, 0x0190, 0x0e04,
16020 +       0x6485, 0x2069, 0x0000, 0x6837, 0x8040, 0x6833, 0x0012, 0x6883,
16021 +       0x8040, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c,
16022 +       0x113e, 0x2069, 0x19c7, 0x6843, 0xffff, 0x012e, 0x00de, 0x0126,
16023 +       0x2091, 0x8000, 0x1e0c, 0x654b, 0x701c, 0x904d, 0x0540, 0x2001,
16024 +       0x005b, 0x2004, 0x9094, 0x0780, 0x15c9, 0xd09c, 0x1500, 0x2071,
16025 +       0x1904, 0x700f, 0x0001, 0xa964, 0x9184, 0x00ff, 0x9086, 0x0003,
16026 +       0x1130, 0x810f, 0x918c, 0x00ff, 0x8101, 0x0108, 0x710e, 0x2900,
16027 +       0x00d6, 0x2069, 0x0050, 0x6822, 0x00de, 0x701c, 0x2048, 0x7010,
16028 +       0x8001, 0x7012, 0xa800, 0x701e, 0x9005, 0x1108, 0x701a, 0x012e,
16029 +       0x0005, 0x0005, 0x0126, 0x2091, 0x8000, 0x701c, 0x904d, 0x0160,
16030 +       0x7010, 0x8001, 0x7012, 0xa800, 0x701e, 0x9005, 0x1108, 0x701a,
16031 +       0x012e, 0x080c, 0x0fe0, 0x0005, 0x012e, 0x0005, 0x2091, 0x8000,
16032 +       0x0e04, 0x64d0, 0x0006, 0x0016, 0x2001, 0x8004, 0x0006, 0x0804,
16033 +       0x0d8d, 0x0096, 0x00f6, 0x2079, 0x0050, 0x7044, 0xd084, 0x01e0,
16034 +       0xc084, 0x7046, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069,
16035 +       0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, 0x2001,
16036 +       0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2009, 0x1917, 0x200b,
16037 +       0x0000, 0x00fe, 0x009e, 0x0005, 0x782c, 0x9094, 0x0780, 0x1971,
16038 +       0xd0a4, 0x0db8, 0x2001, 0x1918, 0x2004, 0x2009, 0x1917, 0x2104,
16039 +       0x8000, 0x200a, 0x9082, 0x000f, 0x0e60, 0x00e6, 0x2071, 0x1800,
16040 +       0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148, 0x2009,
16041 +       0x182f, 0x210c, 0x918a, 0x0040, 0x0218, 0x7022, 0x00ee, 0x0048,
16042 +       0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000,
16043 +       0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x1d00,
16044 +       0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836,
16045 +       0x6833, 0x0013, 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004,
16046 +       0xd084, 0x190c, 0x113e, 0x2009, 0x1917, 0x200b, 0x0000, 0x00ee,
16047 +       0x00fe, 0x009e, 0x0005, 0x00f6, 0x2079, 0x0050, 0x7044, 0xd084,
16048 +       0x01b8, 0xc084, 0x7046, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6,
16049 +       0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, 0x4080,
16050 +       0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x00fe, 0x0005,
16051 +       0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x0db8, 0x00e6,
16052 +       0x2071, 0x1800, 0x7824, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e,
16053 +       0x70bc, 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce,
16054 +       0xd0a4, 0x1d80, 0x00d6, 0x2069, 0x0050, 0x693c, 0x2069, 0x1918,
16055 +       0x6808, 0x690a, 0x2069, 0x19c7, 0x9102, 0x1118, 0x6840, 0x9005,
16056 +       0x1328, 0x2001, 0x1919, 0x200c, 0x810d, 0x6942, 0x00de, 0x00ee,
16057 +       0x00fe, 0x0005, 0x7090, 0x908a, 0x0029, 0x1a0c, 0x0d84, 0x9082,
16058 +       0x001d, 0x001b, 0x6027, 0x1e00, 0x0005, 0x666d, 0x65f7, 0x6613,
16059 +       0x663b, 0x665c, 0x669c, 0x66ae, 0x6613, 0x6684, 0x65b2, 0x65e0,
16060 +       0x65b1, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, 0x9005, 0x1180,
16061 +       0x6808, 0x9005, 0x1518, 0x7093, 0x0028, 0x2069, 0x195c, 0x2d04,
16062 +       0x7002, 0x080c, 0x69a3, 0x6028, 0x9085, 0x0600, 0x602a, 0x00b0,
16063 +       0x7093, 0x0028, 0x2069, 0x195c, 0x2d04, 0x7002, 0x6028, 0x9085,
16064 +       0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0x1a30,
16065 +       0x080c, 0x1827, 0x005e, 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005,
16066 +       0x00d6, 0x2069, 0x0200, 0x6804, 0x9005, 0x1178, 0x6808, 0x9005,
16067 +       0x1160, 0x7093, 0x0028, 0x2069, 0x195c, 0x2d04, 0x7002, 0x080c,
16068 +       0x6a2d, 0x6028, 0x9085, 0x0600, 0x602a, 0x00de, 0x0005, 0x0006,
16069 +       0x2001, 0x0090, 0x080c, 0x28a5, 0x000e, 0x6124, 0xd1e4, 0x1190,
16070 +       0x080c, 0x671b, 0xd1d4, 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150,
16071 +       0x7093, 0x0020, 0x080c, 0x671b, 0x0028, 0x7093, 0x001d, 0x0010,
16072 +       0x7093, 0x001f, 0x0005, 0x2001, 0x0088, 0x080c, 0x28a5, 0x6124,
16073 +       0xd1cc, 0x11d8, 0xd1dc, 0x11b0, 0xd1e4, 0x1188, 0x9184, 0x1e00,
16074 +       0x11c8, 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x68a3,
16075 +       0x2001, 0x0080, 0x080c, 0x28a5, 0x7093, 0x0028, 0x0058, 0x7093,
16076 +       0x001e, 0x0040, 0x7093, 0x001d, 0x0028, 0x7093, 0x0020, 0x0010,
16077 +       0x7093, 0x001f, 0x0005, 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e,
16078 +       0x080c, 0x68a3, 0x2001, 0x0080, 0x080c, 0x28a5, 0x6124, 0xd1d4,
16079 +       0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0x9184, 0x1e00, 0x1158,
16080 +       0x7093, 0x0028, 0x0040, 0x7093, 0x001e, 0x0028, 0x7093, 0x001d,
16081 +       0x0010, 0x7093, 0x001f, 0x0005, 0x2001, 0x00a0, 0x080c, 0x28a5,
16082 +       0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, 0x1851, 0x7093,
16083 +       0x001e, 0x0010, 0x7093, 0x001d, 0x0005, 0x080c, 0x6794, 0x6124,
16084 +       0xd1dc, 0x1188, 0x080c, 0x671b, 0x0016, 0x080c, 0x1851, 0x001e,
16085 +       0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x7093, 0x001e, 0x0020, 0x7093,
16086 +       0x001f, 0x080c, 0x671b, 0x0005, 0x0006, 0x2001, 0x00a0, 0x080c,
16087 +       0x28a5, 0x000e, 0x6124, 0xd1d4, 0x1160, 0xd1cc, 0x1150, 0xd1dc,
16088 +       0x1128, 0xd1e4, 0x0140, 0x7093, 0x001e, 0x0028, 0x7093, 0x001d,
16089 +       0x0010, 0x7093, 0x0021, 0x0005, 0x080c, 0x6794, 0x6124, 0xd1d4,
16090 +       0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x7093, 0x001e, 0x0028,
16091 +       0x7093, 0x001d, 0x0010, 0x7093, 0x001f, 0x0005, 0x0006, 0x2001,
16092 +       0x0090, 0x080c, 0x28a5, 0x000e, 0x6124, 0xd1d4, 0x1178, 0xd1cc,
16093 +       0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x7093, 0x001e, 0x0040,
16094 +       0x7093, 0x001d, 0x0028, 0x7093, 0x0020, 0x0010, 0x7093, 0x001f,
16095 +       0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, 0x2061, 0x0100,
16096 +       0x2069, 0x0140, 0x2071, 0x1800, 0x2091, 0x8000, 0x080c, 0x6877,
16097 +       0x11d8, 0x2001, 0x180c, 0x200c, 0xd1b4, 0x01b0, 0xc1b4, 0x2102,
16098 +       0x6027, 0x0200, 0x080c, 0x27ef, 0x6024, 0xd0cc, 0x0148, 0x2001,
16099 +       0x00a0, 0x080c, 0x28a5, 0x080c, 0x6b40, 0x080c, 0x56d9, 0x0428,
16100 +       0x6028, 0xc0cd, 0x602a, 0x0408, 0x080c, 0x6891, 0x0150, 0x080c,
16101 +       0x6888, 0x1138, 0x2001, 0x0001, 0x080c, 0x23a6, 0x080c, 0x6853,
16102 +       0x00a0, 0x080c, 0x6791, 0x0178, 0x2001, 0x0001, 0x080c, 0x23a6,
16103 +       0x7090, 0x9086, 0x001e, 0x0120, 0x7090, 0x9086, 0x0022, 0x1118,
16104 +       0x7093, 0x0025, 0x0010, 0x7093, 0x0021, 0x012e, 0x00ee, 0x00de,
16105 +       0x00ce, 0x001e, 0x0005, 0x0026, 0x2011, 0x672c, 0x080c, 0x78e7,
16106 +       0x002e, 0x0016, 0x0026, 0x2009, 0x0064, 0x2011, 0x672c, 0x080c,
16107 +       0x78de, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00f6, 0x0016, 0x080c,
16108 +       0x8b50, 0x2071, 0x1800, 0x080c, 0x66c9, 0x001e, 0x00fe, 0x00ee,
16109 +       0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x00f6,
16110 +       0x0126, 0x080c, 0x8b50, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071,
16111 +       0x1800, 0x2091, 0x8000, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003,
16112 +       0x080c, 0x8e99, 0x2011, 0x0002, 0x080c, 0x8ea3, 0x080c, 0x8d59,
16113 +       0x080c, 0x7893, 0x0036, 0x901e, 0x080c, 0x8dfe, 0x003e, 0x60e3,
16114 +       0x0000, 0x080c, 0xcd0a, 0x080c, 0xcd25, 0x2009, 0x0004, 0x080c,
16115 +       0x27f5, 0x080c, 0x2718, 0x2001, 0x1800, 0x2003, 0x0004, 0x6027,
16116 +       0x0008, 0x080c, 0x0b69, 0x2001, 0x0001, 0x080c, 0x23a6, 0x012e,
16117 +       0x00fe, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005,
16118 +       0x0026, 0x00e6, 0x2011, 0x6739, 0x2071, 0x19c7, 0x701c, 0x9206,
16119 +       0x1118, 0x7018, 0x9005, 0x0110, 0x9085, 0x0001, 0x00ee, 0x002e,
16120 +       0x0005, 0x6020, 0xd09c, 0x0005, 0x6800, 0x9084, 0xfffe, 0x9086,
16121 +       0x00c0, 0x01b8, 0x2001, 0x00c0, 0x080c, 0x28a5, 0x0156, 0x20a9,
16122 +       0x002d, 0x1d04, 0x67a1, 0x2091, 0x6000, 0x1f04, 0x67a1, 0x015e,
16123 +       0x00d6, 0x2069, 0x1800, 0x6894, 0x8001, 0x0220, 0x0118, 0x6896,
16124 +       0x00de, 0x0005, 0x6897, 0x0014, 0x68ec, 0xd0dc, 0x0dc8, 0x6800,
16125 +       0x9086, 0x0001, 0x1da8, 0x080c, 0x78f3, 0x0c90, 0x00c6, 0x00d6,
16126 +       0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2001,
16127 +       0x194c, 0x200c, 0x9186, 0x0000, 0x0158, 0x9186, 0x0001, 0x0158,
16128 +       0x9186, 0x0002, 0x0158, 0x9186, 0x0003, 0x0158, 0x0804, 0x6843,
16129 +       0x7093, 0x0022, 0x0040, 0x7093, 0x0021, 0x0028, 0x7093, 0x0023,
16130 +       0x0010, 0x7093, 0x0024, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001,
16131 +       0x0001, 0x080c, 0x2471, 0x0026, 0x080c, 0x94da, 0x002e, 0x7000,
16132 +       0x908e, 0x0004, 0x0118, 0x602b, 0x0028, 0x0010, 0x602b, 0x0020,
16133 +       0x0156, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x6024, 0xd0ac,
16134 +       0x0120, 0x012e, 0x015e, 0x0804, 0x684f, 0x6800, 0x9084, 0x00a1,
16135 +       0xc0bd, 0x6802, 0x080c, 0x27ef, 0x6904, 0xd1d4, 0x1140, 0x2001,
16136 +       0x0100, 0x080c, 0x28a5, 0x1f04, 0x67fe, 0x080c, 0x68d0, 0x012e,
16137 +       0x015e, 0x080c, 0x6888, 0x01a8, 0x6044, 0x9005, 0x0168, 0x6050,
16138 +       0x0006, 0x9085, 0x0020, 0x6052, 0x080c, 0x68d0, 0x9006, 0x8001,
16139 +       0x1df0, 0x000e, 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c,
16140 +       0x68d0, 0x0016, 0x0026, 0x7000, 0x908e, 0x0004, 0x0130, 0x2009,
16141 +       0x00c8, 0x2011, 0x6739, 0x080c, 0x78a5, 0x002e, 0x001e, 0x2001,
16142 +       0x194c, 0x2003, 0x0004, 0x080c, 0x659a, 0x080c, 0x6888, 0x0138,
16143 +       0x6804, 0xd0d4, 0x1120, 0xd0dc, 0x1100, 0x080c, 0x6b45, 0x00ee,
16144 +       0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100,
16145 +       0x2069, 0x0140, 0x2071, 0x1800, 0x080c, 0x6b4f, 0x2001, 0x193c,
16146 +       0x2003, 0x0000, 0x9006, 0x7092, 0x60e2, 0x6886, 0x080c, 0x2471,
16147 +       0x9006, 0x080c, 0x28a5, 0x6043, 0x0090, 0x6043, 0x0010, 0x6027,
16148 +       0xffff, 0x602b, 0x182f, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0006,
16149 +       0x2001, 0x194b, 0x2004, 0x9086, 0xaaaa, 0x000e, 0x0005, 0x0006,
16150 +       0x080c, 0x4dee, 0x9084, 0x0030, 0x9086, 0x0000, 0x000e, 0x0005,
16151 +       0x0006, 0x080c, 0x4dee, 0x9084, 0x0030, 0x9086, 0x0030, 0x000e,
16152 +       0x0005, 0x0006, 0x080c, 0x4dee, 0x9084, 0x0030, 0x9086, 0x0010,
16153 +       0x000e, 0x0005, 0x0006, 0x080c, 0x4dee, 0x9084, 0x0030, 0x9086,
16154 +       0x0020, 0x000e, 0x0005, 0x0036, 0x0016, 0x2001, 0x180c, 0x2004,
16155 +       0x908c, 0x0013, 0x0190, 0x9084, 0x0011, 0x0120, 0x080c, 0x2491,
16156 +       0x900e, 0x0028, 0x080c, 0x5f25, 0x1dc8, 0x2009, 0x0002, 0x2019,
16157 +       0x0028, 0x080c, 0x2ce5, 0x9006, 0x0019, 0x001e, 0x003e, 0x0005,
16158 +       0x00e6, 0x2071, 0x180c, 0x2e04, 0x0130, 0x080c, 0xb752, 0x1128,
16159 +       0x9085, 0x0010, 0x0010, 0x9084, 0xffef, 0x2072, 0x00ee, 0x0005,
16160 +       0x6050, 0x0006, 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, 0x0006,
16161 +       0x6028, 0x0006, 0x0016, 0x6138, 0x6050, 0x9084, 0xfbff, 0x9085,
16162 +       0x2000, 0x6052, 0x613a, 0x20a9, 0x0012, 0x1d04, 0x68e5, 0x2091,
16163 +       0x6000, 0x1f04, 0x68e5, 0x602f, 0x0100, 0x602f, 0x0000, 0x6050,
16164 +       0x9085, 0x0400, 0x9084, 0xdfff, 0x6052, 0x613a, 0x001e, 0x602f,
16165 +       0x0040, 0x602f, 0x0000, 0x000e, 0x602a, 0x000e, 0x6006, 0x000e,
16166 +       0x600e, 0x000e, 0x60ee, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001,
16167 +       0x0001, 0x080c, 0x2471, 0x2001, 0x00a0, 0x080c, 0x28a5, 0x000e,
16168 +       0x6052, 0x6058, 0x0006, 0xc0e5, 0x605a, 0x00f6, 0x2079, 0x0100,
16169 +       0x080c, 0x2764, 0x00fe, 0x000e, 0x605a, 0x0005, 0x0156, 0x0016,
16170 +       0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069,
16171 +       0x0140, 0x2071, 0x1800, 0x6020, 0x9084, 0x0080, 0x0138, 0x2001,
16172 +       0x180c, 0x200c, 0xc1c5, 0x2102, 0x0804, 0x6996, 0x2001, 0x180c,
16173 +       0x200c, 0xc1c4, 0x2102, 0x6028, 0x9084, 0xe1ff, 0x602a, 0x6027,
16174 +       0x0200, 0x2001, 0x0090, 0x080c, 0x28a5, 0x20a9, 0x0366, 0x6024,
16175 +       0xd0cc, 0x11f0, 0x1d04, 0x6947, 0x2091, 0x6000, 0x1f04, 0x6947,
16176 +       0x2011, 0x0003, 0x080c, 0x8e99, 0x2011, 0x0002, 0x080c, 0x8ea3,
16177 +       0x080c, 0x8d59, 0x901e, 0x080c, 0x8dfe, 0x2001, 0x00a0, 0x080c,
16178 +       0x28a5, 0x080c, 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001, 0x0470,
16179 +       0x86ff, 0x1110, 0x080c, 0x1851, 0x60e3, 0x0000, 0x2001, 0x193c,
16180 +       0x2004, 0x080c, 0x2471, 0x60e2, 0x2001, 0x0080, 0x080c, 0x28a5,
16181 +       0x20a9, 0x0366, 0x6027, 0x1e00, 0x2009, 0x1e00, 0x080c, 0x27ef,
16182 +       0x6024, 0x910c, 0x0138, 0x1d04, 0x697a, 0x2091, 0x6000, 0x1f04,
16183 +       0x697a, 0x0830, 0x6028, 0x9085, 0x1e00, 0x602a, 0x70ac, 0x9005,
16184 +       0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x9006, 0x080c, 0xb759,
16185 +       0x0110, 0x080c, 0x0cfc, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e,
16186 +       0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6,
16187 +       0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800, 0x2069, 0x0140,
16188 +       0x6020, 0x9084, 0x00c0, 0x0120, 0x6884, 0x9005, 0x1904, 0x69f7,
16189 +       0x2001, 0x0088, 0x080c, 0x28a5, 0x9006, 0x60e2, 0x6886, 0x080c,
16190 +       0x2471, 0x2069, 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, 0x9005,
16191 +       0x01c0, 0x6028, 0x9084, 0xfbff, 0x602a, 0x6027, 0x0400, 0x2069,
16192 +       0x195c, 0x7000, 0x206a, 0x7093, 0x0026, 0x7003, 0x0001, 0x20a9,
16193 +       0x0002, 0x1d04, 0x69d9, 0x2091, 0x6000, 0x1f04, 0x69d9, 0x0804,
16194 +       0x6a25, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027, 0x1e00, 0x2009,
16195 +       0x1e00, 0x080c, 0x27ef, 0x6024, 0x910c, 0x0508, 0x9084, 0x1a00,
16196 +       0x11f0, 0x1d04, 0x69e5, 0x2091, 0x6000, 0x1f04, 0x69e5, 0x2011,
16197 +       0x0003, 0x080c, 0x8e99, 0x2011, 0x0002, 0x080c, 0x8ea3, 0x080c,
16198 +       0x8d59, 0x901e, 0x080c, 0x8dfe, 0x2001, 0x00a0, 0x080c, 0x28a5,
16199 +       0x080c, 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001, 0x00b0, 0x2001,
16200 +       0x0080, 0x080c, 0x28a5, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70ac,
16201 +       0x9005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0x193c,
16202 +       0x2004, 0x080c, 0x2471, 0x60e2, 0x9006, 0x00ee, 0x00de, 0x00ce,
16203 +       0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026,
16204 +       0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800,
16205 +       0x6020, 0x9084, 0x00c0, 0x01c8, 0x2011, 0x0003, 0x080c, 0x8e99,
16206 +       0x2011, 0x0002, 0x080c, 0x8ea3, 0x080c, 0x8d59, 0x901e, 0x080c,
16207 +       0x8dfe, 0x2069, 0x0140, 0x2001, 0x00a0, 0x080c, 0x28a5, 0x080c,
16208 +       0x6b40, 0x080c, 0x56d9, 0x0804, 0x6ac0, 0x2001, 0x180c, 0x200c,
16209 +       0xd1b4, 0x1160, 0xc1b5, 0x2102, 0x080c, 0x6721, 0x2069, 0x0140,
16210 +       0x2001, 0x0080, 0x080c, 0x28a5, 0x60e3, 0x0000, 0x2069, 0x0200,
16211 +       0x6804, 0x9005, 0x1118, 0x6808, 0x9005, 0x0180, 0x6028, 0x9084,
16212 +       0xfdff, 0x602a, 0x6027, 0x0200, 0x2069, 0x195c, 0x7000, 0x206a,
16213 +       0x7093, 0x0027, 0x7003, 0x0001, 0x0804, 0x6ac0, 0x6027, 0x1e00,
16214 +       0x2009, 0x1e00, 0x080c, 0x27ef, 0x6024, 0x910c, 0x01c8, 0x9084,
16215 +       0x1c00, 0x11b0, 0x1d04, 0x6a7e, 0x0006, 0x0016, 0x00c6, 0x00d6,
16216 +       0x00e6, 0x080c, 0x7778, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e,
16217 +       0x00e6, 0x2071, 0x19c7, 0x7018, 0x00ee, 0x9005, 0x19f8, 0x0500,
16218 +       0x0026, 0x2011, 0x6739, 0x080c, 0x781a, 0x2011, 0x672c, 0x080c,
16219 +       0x78e7, 0x002e, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70ac, 0x9005,
16220 +       0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0x193c, 0x2004,
16221 +       0x080c, 0x2471, 0x60e2, 0x2001, 0x180c, 0x200c, 0xc1b4, 0x2102,
16222 +       0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005,
16223 +       0x0156, 0x0016, 0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, 0x2061,
16224 +       0x0100, 0x2071, 0x1800, 0x080c, 0xb752, 0x1904, 0x6b2e, 0x7130,
16225 +       0xd184, 0x1170, 0x080c, 0x2e69, 0x0138, 0xc18d, 0x7132, 0x2011,
16226 +       0x1853, 0x2214, 0xd2ac, 0x1120, 0x7030, 0xd08c, 0x0904, 0x6b2e,
16227 +       0x2011, 0x1853, 0x220c, 0xd1a4, 0x0538, 0x0016, 0x2019, 0x000e,
16228 +       0x080c, 0xc941, 0x0156, 0x00b6, 0x20a9, 0x007f, 0x900e, 0x9186,
16229 +       0x007e, 0x01a0, 0x9186, 0x0080, 0x0188, 0x080c, 0x5c0d, 0x1170,
16230 +       0x2120, 0x9006, 0x0016, 0x2009, 0x000e, 0x080c, 0xc9c5, 0x2009,
16231 +       0x0001, 0x2011, 0x0100, 0x080c, 0x7a0a, 0x001e, 0x8108, 0x1f04,
16232 +       0x6af7, 0x00be, 0x015e, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009,
16233 +       0x0002, 0x2019, 0x0004, 0x080c, 0x2ce5, 0x001e, 0x0078, 0x0156,
16234 +       0x00b6, 0x20a9, 0x007f, 0x900e, 0x080c, 0x5c0d, 0x1110, 0x080c,
16235 +       0x56f3, 0x8108, 0x1f04, 0x6b24, 0x00be, 0x015e, 0x080c, 0x1851,
16236 +       0x080c, 0x94da, 0x60e3, 0x0000, 0x080c, 0x56d9, 0x080c, 0x67be,
16237 +       0x00ee, 0x00ce, 0x004e, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005,
16238 +       0x2001, 0x194c, 0x2003, 0x0001, 0x0005, 0x2001, 0x194c, 0x2003,
16239 +       0x0000, 0x0005, 0x2001, 0x194b, 0x2003, 0xaaaa, 0x0005, 0x2001,
16240 +       0x194b, 0x2003, 0x0000, 0x0005, 0x2071, 0x18ee, 0x7003, 0x0000,
16241 +       0x7007, 0x0000, 0x080c, 0x0fc7, 0x090c, 0x0d84, 0xa8ab, 0xdcb0,
16242 +       0x2900, 0x704e, 0x080c, 0x0fc7, 0x090c, 0x0d84, 0xa8ab, 0xdcb0,
16243 +       0x2900, 0x7052, 0xa867, 0x0000, 0xa86b, 0x0001, 0xa89f, 0x0000,
16244 +       0x0005, 0x00e6, 0x2071, 0x0040, 0x6848, 0x9005, 0x1118, 0x9085,
16245 +       0x0001, 0x04b0, 0x6840, 0x9005, 0x0150, 0x04a1, 0x6a50, 0x9200,
16246 +       0x7002, 0x6854, 0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6850,
16247 +       0x7002, 0x6854, 0x7006, 0x6858, 0x700a, 0x685c, 0x700e, 0x6840,
16248 +       0x9005, 0x1110, 0x7012, 0x7016, 0x6848, 0x701a, 0x701c, 0x9085,
16249 +       0x0040, 0x701e, 0x2001, 0x0019, 0x7036, 0x702b, 0x0001, 0x2001,
16250 +       0x0004, 0x200c, 0x918c, 0xfff7, 0x918d, 0x8000, 0x2102, 0x00d6,
16251 +       0x2069, 0x18ee, 0x6807, 0x0001, 0x00de, 0x080c, 0x70f9, 0x9006,
16252 +       0x00ee, 0x0005, 0x900e, 0x0156, 0x20a9, 0x0006, 0x8003, 0x2011,
16253 +       0x0100, 0x2214, 0x9296, 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5,
16254 +       0x3e08, 0x1f04, 0x6bb6, 0x015e, 0x0005, 0x2079, 0x0040, 0x2071,
16255 +       0x18ee, 0x7004, 0x0002, 0x6bd5, 0x6bd6, 0x6c0b, 0x6c66, 0x6d61,
16256 +       0x6bd3, 0x6bd3, 0x6d8b, 0x080c, 0x0d84, 0x0005, 0x2079, 0x0040,
16257 +       0x782c, 0x908c, 0x0780, 0x190c, 0x7185, 0xd0a4, 0x01f0, 0x7824,
16258 +       0x2048, 0x9006, 0xa802, 0xa806, 0xa864, 0x9084, 0x00ff, 0x908a,
16259 +       0x0040, 0x12c0, 0x04db, 0x2001, 0x1800, 0x200c, 0x9186, 0x0003,
16260 +       0x1160, 0x7104, 0x9186, 0x0004, 0x0140, 0x9186, 0x0007, 0x0128,
16261 +       0x9186, 0x0003, 0x19e8, 0x080c, 0x6c66, 0x782c, 0xd09c, 0x090c,
16262 +       0x70f9, 0x0005, 0x9082, 0x005a, 0x1218, 0x2100, 0x002b, 0x0c18,
16263 +       0x080c, 0x6c9c, 0x0c90, 0x0005, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16264 +       0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6cbe, 0x6c9c, 0x6c9c, 0x6c9c,
16265 +       0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16266 +       0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16267 +       0x6ca8, 0x6c9c, 0x6e60, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16268 +       0x6ca8, 0x6ea1, 0x6ee2, 0x6f29, 0x6f3d, 0x6c9c, 0x6c9c, 0x6cbe,
16269 +       0x6ca8, 0x6c9c, 0x6c9c, 0x6d35, 0x6fe8, 0x7003, 0x6c9c, 0x6cbe,
16270 +       0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6d2b, 0x7003, 0x6c9c, 0x6c9c,
16271 +       0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6cd2,
16272 +       0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16273 +       0x6c9c, 0x7129, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6ce6,
16274 +       0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x2079, 0x0040,
16275 +       0x7004, 0x9086, 0x0003, 0x1198, 0x782c, 0x080c, 0x7122, 0xd0a4,
16276 +       0x0170, 0x7824, 0x2048, 0x9006, 0xa802, 0xa806, 0xa864, 0x9084,
16277 +       0x00ff, 0x908a, 0x001a, 0x1210, 0x002b, 0x0c50, 0x00e9, 0x080c,
16278 +       0x70f9, 0x0005, 0x6c9c, 0x6ca8, 0x6e4c, 0x6c9c, 0x6ca8, 0x6c9c,
16279 +       0x6ca8, 0x6ca8, 0x6c9c, 0x6ca8, 0x6e4c, 0x6ca8, 0x6ca8, 0x6ca8,
16280 +       0x6ca8, 0x6ca8, 0x6c9c, 0x6ca8, 0x6e4c, 0x6c9c, 0x6c9c, 0x6ca8,
16281 +       0x6c9c, 0x6c9c, 0x6c9c, 0x6ca8, 0x00e6, 0x2071, 0x18ee, 0x2009,
16282 +       0x0400, 0x0071, 0x00ee, 0x0005, 0x2009, 0x1000, 0x0049, 0x0005,
16283 +       0x2009, 0x2000, 0x0029, 0x0005, 0x2009, 0x0800, 0x0009, 0x0005,
16284 +       0x7007, 0x0001, 0xa868, 0x9084, 0x00ff, 0x9105, 0xa86a, 0x0126,
16285 +       0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0x0005, 0xa864, 0x8007,
16286 +       0x9084, 0x00ff, 0x0d08, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804,
16287 +       0x6e0a, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b,
16288 +       0x6e0a, 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, 0x0968, 0x8001,
16289 +       0x1120, 0x7007, 0x0001, 0x0804, 0x6e25, 0x7007, 0x0003, 0x7012,
16290 +       0x2900, 0x7016, 0x701a, 0x704b, 0x6e25, 0x0005, 0xa864, 0x8007,
16291 +       0x9084, 0x00ff, 0x9086, 0x0001, 0x1904, 0x6ca4, 0x7007, 0x0001,
16292 +       0x2009, 0x1833, 0x210c, 0x81ff, 0x11a8, 0xa868, 0x9084, 0x00ff,
16293 +       0xa86a, 0xa883, 0x0000, 0x080c, 0x58e6, 0x1108, 0x0005, 0x0126,
16294 +       0x2091, 0x8000, 0xa867, 0x0139, 0xa87a, 0xa982, 0x080c, 0x61a9,
16295 +       0x012e, 0x0ca0, 0xa994, 0x9186, 0x0071, 0x0d38, 0x9186, 0x0064,
16296 +       0x0d20, 0x9186, 0x007c, 0x0d08, 0x9186, 0x0028, 0x09f0, 0x9186,
16297 +       0x0038, 0x09d8, 0x9186, 0x0078, 0x09c0, 0x9186, 0x005f, 0x09a8,
16298 +       0x9186, 0x0056, 0x0990, 0xa897, 0x4005, 0xa89b, 0x0001, 0x2001,
16299 +       0x0030, 0x900e, 0x08a0, 0xa87c, 0x9084, 0x00c0, 0x9086, 0x00c0,
16300 +       0x1120, 0x7007, 0x0001, 0x0804, 0x701a, 0x2900, 0x7016, 0x701a,
16301 +       0x20a9, 0x0004, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0030, 0x2098,
16302 +       0x7050, 0x2040, 0xa060, 0x20e8, 0xa05c, 0x9080, 0x0023, 0x20a0,
16303 +       0x4003, 0xa888, 0x7012, 0x9082, 0x0401, 0x1a04, 0x6cac, 0xaab4,
16304 +       0x928a, 0x0002, 0x1a04, 0x6cac, 0x82ff, 0x1138, 0xa8b8, 0xa9bc,
16305 +       0x9105, 0x0118, 0x2001, 0x6dc8, 0x0018, 0x9280, 0x6dbe, 0x2005,
16306 +       0x7056, 0x7010, 0x9015, 0x0904, 0x6da9, 0x080c, 0x0fc7, 0x1118,
16307 +       0x7007, 0x0004, 0x0005, 0x2900, 0x7022, 0x7054, 0x2060, 0xe000,
16308 +       0xa866, 0xe004, 0x7050, 0x2040, 0xa95c, 0x9100, 0xa076, 0xa860,
16309 +       0xa072, 0xe008, 0x920a, 0x1210, 0x900e, 0x2200, 0x7112, 0xe20c,
16310 +       0x8003, 0x800b, 0x9296, 0x0004, 0x0108, 0x9108, 0xa17a, 0x810b,
16311 +       0xa17e, 0x080c, 0x108c, 0xa06c, 0x908e, 0x0100, 0x0170, 0x9086,
16312 +       0x0200, 0x0118, 0x7007, 0x0007, 0x0005, 0x7020, 0x2048, 0x080c,
16313 +       0x0fe0, 0x7014, 0x2048, 0x0804, 0x6cac, 0x7020, 0x2048, 0x7018,
16314 +       0xa802, 0xa807, 0x0000, 0x2908, 0x2048, 0xa906, 0x711a, 0x0804,
16315 +       0x6d61, 0x7014, 0x2048, 0x7007, 0x0001, 0xa8b4, 0x9005, 0x1128,
16316 +       0xa8b8, 0xa9bc, 0x9105, 0x0108, 0x00b9, 0xa864, 0x9084, 0x00ff,
16317 +       0x9086, 0x001e, 0x0904, 0x701a, 0x0804, 0x6e0a, 0x6dc0, 0x6dc4,
16318 +       0x0002, 0x001d, 0x0007, 0x0004, 0x000a, 0x001b, 0x0005, 0x0006,
16319 +       0x000a, 0x001d, 0x0005, 0x0004, 0x0076, 0x0066, 0xafb8, 0xaebc,
16320 +       0xa804, 0x2050, 0xb0c0, 0xb0e2, 0xb0bc, 0xb0de, 0xb0b8, 0xb0d2,
16321 +       0xb0b4, 0xb0ce, 0xb6da, 0xb7d6, 0xb0b0, 0xb0ca, 0xb0ac, 0xb0c6,
16322 +       0xb0a8, 0xb0ba, 0xb0a4, 0xb0b6, 0xb6c2, 0xb7be, 0xb0a0, 0xb0b2,
16323 +       0xb09c, 0xb0ae, 0xb098, 0xb0a2, 0xb094, 0xb09e, 0xb6aa, 0xb7a6,
16324 +       0xb090, 0xb09a, 0xb08c, 0xb096, 0xb088, 0xb08a, 0xb084, 0xb086,
16325 +       0xb692, 0xb78e, 0xb080, 0xb082, 0xb07c, 0xb07e, 0xb078, 0xb072,
16326 +       0xb074, 0xb06e, 0xb67a, 0xb776, 0xb004, 0x9055, 0x1958, 0x006e,
16327 +       0x007e, 0x0005, 0x2009, 0x1833, 0x210c, 0x81ff, 0x1178, 0x080c,
16328 +       0x5755, 0x1108, 0x0005, 0x080c, 0x63d1, 0x0126, 0x2091, 0x8000,
16329 +       0x080c, 0xb374, 0x080c, 0x61a9, 0x012e, 0x0ca0, 0x080c, 0xb752,
16330 +       0x1d70, 0x2001, 0x0028, 0x900e, 0x0c70, 0x2009, 0x1833, 0x210c,
16331 +       0x81ff, 0x11d8, 0xa888, 0x9005, 0x01e0, 0xa883, 0x0000, 0xa87c,
16332 +       0xd0f4, 0x0120, 0x080c, 0x5849, 0x1138, 0x0005, 0x9006, 0xa87a,
16333 +       0x080c, 0x57e4, 0x1108, 0x0005, 0x0126, 0x2091, 0x8000, 0xa87a,
16334 +       0xa982, 0x080c, 0x61a9, 0x012e, 0x0cb0, 0x2001, 0x0028, 0x900e,
16335 +       0x0c98, 0x2001, 0x0000, 0x0c80, 0x7018, 0xa802, 0x2908, 0x2048,
16336 +       0xa906, 0x711a, 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0003,
16337 +       0x0030, 0x7014, 0x2048, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005,
16338 +       0x00b6, 0x7007, 0x0001, 0xa974, 0xa878, 0x9084, 0x00ff, 0x9096,
16339 +       0x0004, 0x0540, 0x20a9, 0x0001, 0x9096, 0x0001, 0x0190, 0x900e,
16340 +       0x20a9, 0x0800, 0x9096, 0x0002, 0x0160, 0x9005, 0x11d8, 0xa974,
16341 +       0x080c, 0x5c0d, 0x11b8, 0x0066, 0xae80, 0x080c, 0x5d1d, 0x006e,
16342 +       0x0088, 0x0046, 0x2011, 0x180c, 0x2224, 0xc484, 0x2412, 0x004e,
16343 +       0x00c6, 0x080c, 0x5c0d, 0x1110, 0x080c, 0x5e1d, 0x8108, 0x1f04,
16344 +       0x6e89, 0x00ce, 0xa87c, 0xd084, 0x1120, 0x080c, 0x0fe0, 0x00be,
16345 +       0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0x00be,
16346 +       0x0005, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x080c, 0x5f29,
16347 +       0x0580, 0x2061, 0x1a3d, 0x6100, 0xd184, 0x0178, 0xa888, 0x9084,
16348 +       0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0x9005, 0x1538,
16349 +       0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, 0xa890,
16350 +       0x9005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0xa888, 0x9084,
16351 +       0x00ff, 0x0178, 0x6006, 0xa888, 0x8007, 0x9084, 0x00ff, 0x0148,
16352 +       0x600a, 0xa888, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, 0x0804,
16353 +       0x70e3, 0x012e, 0x0804, 0x70dd, 0x012e, 0x0804, 0x70d7, 0x012e,
16354 +       0x0804, 0x70da, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x080c,
16355 +       0x5f29, 0x05e0, 0x2061, 0x1a3d, 0x6000, 0xd084, 0x05b8, 0x6204,
16356 +       0x6308, 0xd08c, 0x1530, 0xac78, 0x9484, 0x0003, 0x0170, 0xa988,
16357 +       0x918c, 0x00ff, 0x8001, 0x1120, 0x2100, 0x9210, 0x0620, 0x0028,
16358 +       0x8001, 0x1508, 0x2100, 0x9212, 0x02f0, 0x9484, 0x000c, 0x0188,
16359 +       0xa988, 0x810f, 0x918c, 0x00ff, 0x9082, 0x0004, 0x1120, 0x2100,
16360 +       0x9318, 0x0288, 0x0030, 0x9082, 0x0004, 0x1168, 0x2100, 0x931a,
16361 +       0x0250, 0xa890, 0x9005, 0x0110, 0x8000, 0x6016, 0x6206, 0x630a,
16362 +       0x012e, 0x0804, 0x70e3, 0x012e, 0x0804, 0x70e0, 0x012e, 0x0804,
16363 +       0x70dd, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2061, 0x1a3d,
16364 +       0x6300, 0xd38c, 0x1120, 0x6308, 0x8318, 0x0220, 0x630a, 0x012e,
16365 +       0x0804, 0x70f1, 0x012e, 0x0804, 0x70e0, 0x00b6, 0x0126, 0x00c6,
16366 +       0x2091, 0x8000, 0x7007, 0x0001, 0xa87c, 0xd0ac, 0x0148, 0x00c6,
16367 +       0x2061, 0x1a3d, 0x6000, 0x9084, 0xfcff, 0x6002, 0x00ce, 0x0440,
16368 +       0xa888, 0x9005, 0x05d8, 0xa88c, 0x9065, 0x0598, 0x2001, 0x1833,
16369 +       0x2004, 0x9005, 0x0118, 0x080c, 0x9584, 0x0068, 0x6017, 0xf400,
16370 +       0x605b, 0x0000, 0xa97c, 0xd1a4, 0x0110, 0xa980, 0x615a, 0x2009,
16371 +       0x0041, 0x080c, 0x95ce, 0xa988, 0x918c, 0xff00, 0x9186, 0x2000,
16372 +       0x1138, 0x0026, 0x900e, 0x2011, 0xfdff, 0x080c, 0x7a0a, 0x002e,
16373 +       0xa87c, 0xd0c4, 0x0148, 0x2061, 0x1a3d, 0x6000, 0xd08c, 0x1120,
16374 +       0x6008, 0x8000, 0x0208, 0x600a, 0x00ce, 0x012e, 0x00be, 0x0804,
16375 +       0x70e3, 0x00ce, 0x012e, 0x00be, 0x0804, 0x70dd, 0xa984, 0x9186,
16376 +       0x002e, 0x0d30, 0x9186, 0x002d, 0x0d18, 0x9186, 0x0045, 0x0510,
16377 +       0x9186, 0x002a, 0x1130, 0x2001, 0x180c, 0x200c, 0xc194, 0x2102,
16378 +       0x08b8, 0x9186, 0x0020, 0x0158, 0x9186, 0x0029, 0x1d10, 0xa974,
16379 +       0x080c, 0x5c0d, 0x1968, 0xb800, 0xc0e4, 0xb802, 0x0848, 0xa88c,
16380 +       0x9065, 0x09b8, 0x6007, 0x0024, 0x2001, 0x1953, 0x2004, 0x601a,
16381 +       0x0804, 0x6f78, 0xa88c, 0x9065, 0x0960, 0x00e6, 0xa890, 0x9075,
16382 +       0x2001, 0x1833, 0x2004, 0x9005, 0x0150, 0x080c, 0x9584, 0x8eff,
16383 +       0x0118, 0x2e60, 0x080c, 0x9584, 0x00ee, 0x0804, 0x6f78, 0x6024,
16384 +       0xc0dc, 0xc0d5, 0x6026, 0x2e60, 0x6007, 0x003a, 0xa8a0, 0x9005,
16385 +       0x0130, 0x6007, 0x003b, 0xa8a4, 0x602e, 0xa8a8, 0x6016, 0x6003,
16386 +       0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x00ee, 0x0804, 0x6f78,
16387 +       0x2061, 0x1a3d, 0x6000, 0xd084, 0x0190, 0xd08c, 0x1904, 0x70f1,
16388 +       0x0126, 0x2091, 0x8000, 0x6204, 0x8210, 0x0220, 0x6206, 0x012e,
16389 +       0x0804, 0x70f1, 0x012e, 0xa883, 0x0016, 0x0804, 0x70ea, 0xa883,
16390 +       0x0007, 0x0804, 0x70ea, 0xa864, 0x8007, 0x9084, 0x00ff, 0x0130,
16391 +       0x8001, 0x1138, 0x7007, 0x0001, 0x0069, 0x0005, 0x080c, 0x6ca4,
16392 +       0x0040, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b,
16393 +       0x701a, 0x0005, 0x00b6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x903e,
16394 +       0x2061, 0x1800, 0x61cc, 0x81ff, 0x1904, 0x709c, 0x6130, 0xd194,
16395 +       0x1904, 0x70c6, 0xa878, 0x2070, 0x9e82, 0x1cd0, 0x0a04, 0x7090,
16396 +       0x6060, 0x9e02, 0x1a04, 0x7090, 0x7120, 0x9186, 0x0006, 0x1904,
16397 +       0x7082, 0x7010, 0x905d, 0x0904, 0x709c, 0xb800, 0xd0e4, 0x1904,
16398 +       0x70c0, 0x2061, 0x1a3d, 0x6100, 0x9184, 0x0301, 0x9086, 0x0001,
16399 +       0x15a0, 0x7024, 0xd0dc, 0x1904, 0x70c9, 0xa883, 0x0000, 0xa803,
16400 +       0x0000, 0x2908, 0x7014, 0x9005, 0x1198, 0x7116, 0xa87c, 0xd0f4,
16401 +       0x1904, 0x70cc, 0x080c, 0x4dea, 0xd09c, 0x1118, 0xa87c, 0xc0cc,
16402 +       0xa87e, 0x2e60, 0x080c, 0x792a, 0x012e, 0x00ee, 0x00be, 0x0005,
16403 +       0x2048, 0xa800, 0x9005, 0x1de0, 0xa902, 0x2148, 0xa87c, 0xd0f4,
16404 +       0x1904, 0x70cc, 0x012e, 0x00ee, 0x00be, 0x0005, 0x012e, 0x00ee,
16405 +       0xa883, 0x0006, 0x00be, 0x0804, 0x70ea, 0xd184, 0x0db8, 0xd1c4,
16406 +       0x1190, 0x00a0, 0xa974, 0x080c, 0x5c0d, 0x15d0, 0xb800, 0xd0e4,
16407 +       0x15b8, 0x7120, 0x9186, 0x0007, 0x1118, 0xa883, 0x0002, 0x0490,
16408 +       0xa883, 0x0008, 0x0478, 0xa883, 0x000e, 0x0460, 0xa883, 0x0017,
16409 +       0x0448, 0xa883, 0x0035, 0x0430, 0x080c, 0x4dee, 0xd0fc, 0x01e8,
16410 +       0xa878, 0x2070, 0x9e82, 0x1cd0, 0x02c0, 0x6060, 0x9e02, 0x12a8,
16411 +       0x7120, 0x9186, 0x0006, 0x1188, 0x7010, 0x905d, 0x0170, 0xb800,
16412 +       0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0x9086, 0x0007, 0x1904,
16413 +       0x7026, 0x7003, 0x0002, 0x0804, 0x7026, 0xa883, 0x0028, 0x0010,
16414 +       0xa883, 0x0029, 0x012e, 0x00ee, 0x00be, 0x0420, 0xa883, 0x002a,
16415 +       0x0cc8, 0xa883, 0x0045, 0x0cb0, 0x2e60, 0x2019, 0x0002, 0x601b,
16416 +       0x0014, 0x080c, 0xc58e, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2009,
16417 +       0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028,
16418 +       0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0xa884, 0x9084, 0xff00,
16419 +       0x9105, 0xa886, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e,
16420 +       0x0005, 0x080c, 0x0fe0, 0x0005, 0x00d6, 0x080c, 0x7921, 0x00de,
16421 +       0x0005, 0x00d6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x0040,
16422 +       0x702c, 0xd084, 0x01d8, 0x908c, 0x0780, 0x190c, 0x7185, 0xd09c,
16423 +       0x11a8, 0x2071, 0x1800, 0x70bc, 0x90ea, 0x0040, 0x0278, 0x8001,
16424 +       0x70be, 0x702c, 0x2048, 0xa800, 0x702e, 0x9006, 0xa802, 0xa806,
16425 +       0x2071, 0x0040, 0x2900, 0x7022, 0x702c, 0x0c28, 0x012e, 0x00ee,
16426 +       0x00de, 0x0005, 0x0006, 0x9084, 0x0780, 0x190c, 0x7185, 0x000e,
16427 +       0x0005, 0x00d6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x00b6, 0x7007,
16428 +       0x0001, 0xaa74, 0x9282, 0x0004, 0x1a04, 0x7176, 0xa97c, 0x9188,
16429 +       0x1000, 0x2104, 0x905d, 0xb804, 0xd284, 0x0140, 0x05e8, 0x8007,
16430 +       0x9084, 0x00ff, 0x9084, 0x0006, 0x1108, 0x04b0, 0x2b10, 0x080c,
16431 +       0x94fe, 0x1118, 0x080c, 0x95a1, 0x05a8, 0x6212, 0xa874, 0x0002,
16432 +       0x7154, 0x7159, 0x715c, 0x7162, 0x2019, 0x0002, 0x080c, 0xc941,
16433 +       0x0060, 0x080c, 0xc8dd, 0x0048, 0x2019, 0x0002, 0xa980, 0x080c,
16434 +       0xc8f8, 0x0018, 0xa980, 0x080c, 0xc8dd, 0x080c, 0x9554, 0xa887,
16435 +       0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0x00be,
16436 +       0x001e, 0x002e, 0x003e, 0x00ce, 0x00de, 0x0005, 0xa887, 0x0006,
16437 +       0x0c80, 0xa887, 0x0002, 0x0c68, 0xa887, 0x0005, 0x0c50, 0xa887,
16438 +       0x0004, 0x0c38, 0xa887, 0x0007, 0x0c20, 0x2091, 0x8000, 0x0e04,
16439 +       0x7187, 0x0006, 0x0016, 0x2001, 0x8003, 0x0006, 0x0804, 0x0d8d,
16440 +       0x0005, 0x00f6, 0x2079, 0x0300, 0x2001, 0x0200, 0x200c, 0xc1e5,
16441 +       0xc1dc, 0x2102, 0x2009, 0x0218, 0x210c, 0xd1ec, 0x1120, 0x080c,
16442 +       0x1426, 0x00fe, 0x0005, 0x2001, 0x020d, 0x2003, 0x0020, 0x781f,
16443 +       0x0300, 0x00fe, 0x0005, 0x781c, 0xd08c, 0x05e8, 0x7d44, 0x7c40,
16444 +       0x9584, 0x00f6, 0x1508, 0x9484, 0x7000, 0x0138, 0x908a, 0x2000,
16445 +       0x1258, 0x9584, 0x0700, 0x8007, 0x04a8, 0x7000, 0x9084, 0xff00,
16446 +       0x9086, 0x8100, 0x0db0, 0x00b0, 0x9484, 0x0fff, 0x1130, 0x7000,
16447 +       0x9084, 0xff00, 0x9086, 0x8100, 0x11c0, 0x080c, 0xcce2, 0x080c,
16448 +       0x7692, 0x7817, 0x0140, 0x00a8, 0x9584, 0x0076, 0x1118, 0x080c,
16449 +       0x76f0, 0x19c8, 0xd5a4, 0x0148, 0x0046, 0x0056, 0x080c, 0x724d,
16450 +       0x080c, 0x1f79, 0x005e, 0x004e, 0x0020, 0x080c, 0xcce2, 0x7817,
16451 +       0x0140, 0x080c, 0x722e, 0x2001, 0x19bd, 0x2004, 0x9005, 0x090c,
16452 +       0x8125, 0x0005, 0x0002, 0x7204, 0x74c3, 0x71fb, 0x71fb, 0x71fb,
16453 +       0x71fb, 0x71fb, 0x71fb, 0x7817, 0x0140, 0x2001, 0x19bd, 0x2004,
16454 +       0x9005, 0x090c, 0x8125, 0x0005, 0x7000, 0x908c, 0xff00, 0x9194,
16455 +       0xf000, 0x810f, 0x9484, 0x0fff, 0x688a, 0x9286, 0x2000, 0x1150,
16456 +       0x6800, 0x9086, 0x0001, 0x1118, 0x080c, 0x4e04, 0x0070, 0x080c,
16457 +       0x726d, 0x0058, 0x9286, 0x3000, 0x1118, 0x080c, 0x73fe, 0x0028,
16458 +       0x9286, 0x8000, 0x1110, 0x080c, 0x75c8, 0x7817, 0x0140, 0x2001,
16459 +       0x19bd, 0x2004, 0x9005, 0x090c, 0x8125, 0x0005, 0x2001, 0x180f,
16460 +       0x2004, 0xd08c, 0x0178, 0x2001, 0x1800, 0x2004, 0x9086, 0x0003,
16461 +       0x1148, 0x0026, 0x0036, 0x2011, 0x8048, 0x2518, 0x080c, 0x447f,
16462 +       0x003e, 0x002e, 0x0005, 0x0036, 0x0046, 0x0056, 0x00f6, 0x2079,
16463 +       0x0200, 0x2019, 0xfffe, 0x7c30, 0x0050, 0x0036, 0x0046, 0x0056,
16464 +       0x00f6, 0x2079, 0x0200, 0x7d44, 0x7c40, 0x2019, 0xffff, 0x2001,
16465 +       0x180f, 0x2004, 0xd08c, 0x0160, 0x2001, 0x1800, 0x2004, 0x9086,
16466 +       0x0003, 0x1130, 0x0026, 0x2011, 0x8048, 0x080c, 0x447f, 0x002e,
16467 +       0x00fe, 0x005e, 0x004e, 0x003e, 0x0005, 0x00b6, 0x00c6, 0x7010,
16468 +       0x9084, 0xff00, 0x8007, 0x9096, 0x0001, 0x0120, 0x9096, 0x0023,
16469 +       0x1904, 0x73cf, 0x9186, 0x0023, 0x1550, 0x080c, 0x7657, 0x0904,
16470 +       0x73cf, 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, 0x1130, 0x2009,
16471 +       0x0015, 0x080c, 0x95ce, 0x0804, 0x73cf, 0x908e, 0x0214, 0x0118,
16472 +       0x908e, 0x0210, 0x1130, 0x2009, 0x0015, 0x080c, 0x95ce, 0x0804,
16473 +       0x73cf, 0x908e, 0x0100, 0x1904, 0x73cf, 0x7034, 0x9005, 0x1904,
16474 +       0x73cf, 0x2009, 0x0016, 0x080c, 0x95ce, 0x0804, 0x73cf, 0x9186,
16475 +       0x0022, 0x1904, 0x73cf, 0x7030, 0x908e, 0x0300, 0x1580, 0x68d8,
16476 +       0xd0a4, 0x0528, 0xc0b5, 0x68da, 0x7100, 0x918c, 0x00ff, 0x6976,
16477 +       0x7004, 0x687a, 0x00f6, 0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006,
16478 +       0x9084, 0x00ff, 0x0016, 0x2008, 0x080c, 0x2446, 0x7932, 0x7936,
16479 +       0x001e, 0x000e, 0x00fe, 0x080c, 0x23fd, 0x6956, 0x703c, 0x00e6,
16480 +       0x2071, 0x0140, 0x7086, 0x2071, 0x1800, 0x70ae, 0x00ee, 0x7034,
16481 +       0x9005, 0x1904, 0x73cf, 0x2009, 0x0017, 0x0804, 0x739c, 0x908e,
16482 +       0x0400, 0x1190, 0x7034, 0x9005, 0x1904, 0x73cf, 0x080c, 0x6877,
16483 +       0x0120, 0x2009, 0x001d, 0x0804, 0x739c, 0x68d8, 0xc0a5, 0x68da,
16484 +       0x2009, 0x0030, 0x0804, 0x739c, 0x908e, 0x0500, 0x1140, 0x7034,
16485 +       0x9005, 0x1904, 0x73cf, 0x2009, 0x0018, 0x0804, 0x739c, 0x908e,
16486 +       0x2010, 0x1120, 0x2009, 0x0019, 0x0804, 0x739c, 0x908e, 0x2110,
16487 +       0x1120, 0x2009, 0x001a, 0x0804, 0x739c, 0x908e, 0x5200, 0x1140,
16488 +       0x7034, 0x9005, 0x1904, 0x73cf, 0x2009, 0x001b, 0x0804, 0x739c,
16489 +       0x908e, 0x5000, 0x1140, 0x7034, 0x9005, 0x1904, 0x73cf, 0x2009,
16490 +       0x001c, 0x0804, 0x739c, 0x908e, 0x1300, 0x1120, 0x2009, 0x0034,
16491 +       0x0804, 0x739c, 0x908e, 0x1200, 0x1140, 0x7034, 0x9005, 0x1904,
16492 +       0x73cf, 0x2009, 0x0024, 0x0804, 0x739c, 0x908c, 0xff00, 0x918e,
16493 +       0x2400, 0x1120, 0x2009, 0x002d, 0x0804, 0x739c, 0x908c, 0xff00,
16494 +       0x918e, 0x5300, 0x1120, 0x2009, 0x002a, 0x0804, 0x739c, 0x908e,
16495 +       0x0f00, 0x1120, 0x2009, 0x0020, 0x0804, 0x739c, 0x908e, 0x5300,
16496 +       0x1108, 0x00d8, 0x908e, 0x6104, 0x11c0, 0x2011, 0x026d, 0x8208,
16497 +       0x2204, 0x9082, 0x0004, 0x8004, 0x8004, 0x20a8, 0x2011, 0x8015,
16498 +       0x211c, 0x8108, 0x0046, 0x2124, 0x080c, 0x447f, 0x004e, 0x8108,
16499 +       0x1f04, 0x735e, 0x2009, 0x0023, 0x0478, 0x908e, 0x6000, 0x1118,
16500 +       0x2009, 0x003f, 0x0448, 0x908e, 0x7800, 0x1118, 0x2009, 0x0045,
16501 +       0x0418, 0x908e, 0x1000, 0x1118, 0x2009, 0x004e, 0x00e8, 0x908e,
16502 +       0x6300, 0x1118, 0x2009, 0x004a, 0x00b8, 0x908c, 0xff00, 0x918e,
16503 +       0x5600, 0x1118, 0x2009, 0x004f, 0x0078, 0x908c, 0xff00, 0x918e,
16504 +       0x5700, 0x1118, 0x2009, 0x0050, 0x0038, 0x2009, 0x001d, 0x6834,
16505 +       0xd0d4, 0x0110, 0x2009, 0x004c, 0x0016, 0x2011, 0x0263, 0x2204,
16506 +       0x8211, 0x220c, 0x080c, 0x23fd, 0x1568, 0x080c, 0x5bb0, 0x1550,
16507 +       0xbe12, 0xbd16, 0x001e, 0x0016, 0xb8b0, 0x9005, 0x1168, 0x9186,
16508 +       0x0046, 0x1150, 0x6874, 0x9606, 0x1138, 0x6878, 0x9506, 0x9084,
16509 +       0xff00, 0x1110, 0x001e, 0x0098, 0x080c, 0x94fe, 0x01a8, 0x2b08,
16510 +       0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x9186, 0x004c,
16511 +       0x1110, 0x6023, 0x000a, 0x0016, 0x001e, 0x080c, 0x95ce, 0x00ce,
16512 +       0x00be, 0x0005, 0x001e, 0x0cd8, 0x2001, 0x180d, 0x2004, 0xd0ec,
16513 +       0x0120, 0x2011, 0x8049, 0x080c, 0x447f, 0x080c, 0x95a1, 0x0d90,
16514 +       0x2b08, 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x0016,
16515 +       0x9186, 0x0017, 0x0118, 0x9186, 0x0030, 0x1128, 0x6007, 0x0009,
16516 +       0x6017, 0x2900, 0x0020, 0x6007, 0x0051, 0x6017, 0x0000, 0x602f,
16517 +       0x0009, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x08a0, 0x080c, 0x2e39,
16518 +       0x1140, 0x7010, 0x9084, 0xff00, 0x8007, 0x908e, 0x0008, 0x1108,
16519 +       0x0009, 0x0005, 0x00b6, 0x00c6, 0x0046, 0x7000, 0x908c, 0xff00,
16520 +       0x810f, 0x9186, 0x0033, 0x11e8, 0x080c, 0x7657, 0x0904, 0x745b,
16521 +       0x7124, 0x610a, 0x7030, 0x908e, 0x0200, 0x1140, 0x7034, 0x9005,
16522 +       0x15d0, 0x2009, 0x0015, 0x080c, 0x95ce, 0x04a8, 0x908e, 0x0100,
16523 +       0x1590, 0x7034, 0x9005, 0x1578, 0x2009, 0x0016, 0x080c, 0x95ce,
16524 +       0x0450, 0x9186, 0x0032, 0x1538, 0x7030, 0x908e, 0x1400, 0x1518,
16525 +       0x2009, 0x0038, 0x0016, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c,
16526 +       0x080c, 0x23fd, 0x11b8, 0x080c, 0x5bb0, 0x11a0, 0xbe12, 0xbd16,
16527 +       0x080c, 0x94fe, 0x0178, 0x2b08, 0x6112, 0x080c, 0xb4e6, 0x6023,
16528 +       0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x95ce, 0x080c, 0x8125,
16529 +       0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x00be, 0x0005, 0x00b6,
16530 +       0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0x9696, 0x00ff, 0x11b8,
16531 +       0x9592, 0xfffc, 0x02a0, 0x9596, 0xfffd, 0x1120, 0x2009, 0x007f,
16532 +       0x0804, 0x74bd, 0x9596, 0xfffe, 0x1120, 0x2009, 0x007e, 0x0804,
16533 +       0x74bd, 0x9596, 0xfffc, 0x1118, 0x2009, 0x0080, 0x04f0, 0x2011,
16534 +       0x0000, 0x2019, 0x1836, 0x231c, 0xd3ac, 0x0130, 0x9026, 0x20a9,
16535 +       0x0800, 0x2071, 0x1000, 0x0030, 0x2021, 0x0081, 0x20a9, 0x077f,
16536 +       0x2071, 0x1081, 0x2e1c, 0x93dd, 0x0000, 0x1140, 0x82ff, 0x11d0,
16537 +       0x9496, 0x00ff, 0x01b8, 0x2410, 0xc2fd, 0x00a0, 0xbf10, 0x2600,
16538 +       0x9706, 0xb814, 0x1120, 0x9546, 0x1110, 0x2408, 0x00b0, 0x9745,
16539 +       0x1148, 0x94c6, 0x007e, 0x0130, 0x94c6, 0x007f, 0x0118, 0x94c6,
16540 +       0x0080, 0x1d20, 0x8420, 0x8e70, 0x1f04, 0x7492, 0x82ff, 0x1118,
16541 +       0x9085, 0x0001, 0x0018, 0xc2fc, 0x2208, 0x9006, 0x00de, 0x00ee,
16542 +       0x004e, 0x00be, 0x0005, 0x7000, 0x908c, 0xff00, 0x810f, 0x9184,
16543 +       0x000f, 0x0002, 0x74da, 0x74da, 0x74da, 0x7669, 0x74da, 0x74e3,
16544 +       0x750e, 0x759d, 0x74da, 0x74da, 0x74da, 0x74da, 0x74da, 0x74da,
16545 +       0x74da, 0x74da, 0x7817, 0x0140, 0x2001, 0x19bd, 0x2004, 0x9005,
16546 +       0x090c, 0x8125, 0x0005, 0x00b6, 0x7110, 0xd1bc, 0x01e8, 0x7120,
16547 +       0x2160, 0x9c8c, 0x0007, 0x11c0, 0x9c8a, 0x1cd0, 0x02a8, 0x6860,
16548 +       0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910,
16549 +       0x9106, 0x1150, 0x700c, 0xb914, 0x9106, 0x1130, 0x7124, 0x610a,
16550 +       0x2009, 0x0046, 0x080c, 0x95ce, 0x7817, 0x0140, 0x2001, 0x19bd,
16551 +       0x2004, 0x9005, 0x090c, 0x8125, 0x00be, 0x0005, 0x00b6, 0x00c6,
16552 +       0x9484, 0x0fff, 0x0904, 0x7573, 0x7110, 0xd1bc, 0x1904, 0x7573,
16553 +       0x7108, 0x700c, 0x2028, 0x918c, 0x00ff, 0x2130, 0x9094, 0xff00,
16554 +       0x15b8, 0x81ff, 0x15a8, 0x9080, 0x2e6e, 0x200d, 0x918c, 0xff00,
16555 +       0x810f, 0x2001, 0x0080, 0x9106, 0x0904, 0x7573, 0x080c, 0x5bb0,
16556 +       0x1904, 0x7573, 0xbe12, 0xbd16, 0xb800, 0xd0ec, 0x15e0, 0xba04,
16557 +       0x9294, 0xff00, 0x9286, 0x0600, 0x11a0, 0x080c, 0x94fe, 0x05f0,
16558 +       0x2b08, 0x7028, 0x604a, 0x702c, 0x6046, 0x6112, 0x6023, 0x0006,
16559 +       0x7120, 0x610a, 0x7130, 0x6156, 0x2009, 0x0044, 0x080c, 0xbfdb,
16560 +       0x0410, 0x080c, 0x5f2d, 0x2010, 0x1138, 0xb807, 0x0606, 0x0c28,
16561 +       0x190c, 0x745f, 0x11c0, 0x0890, 0x080c, 0x94fe, 0x2b08, 0x0198,
16562 +       0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x9286, 0x0004, 0x1118,
16563 +       0x6007, 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c,
16564 +       0x7c1d, 0x080c, 0x8125, 0x7817, 0x0140, 0x2001, 0x19bd, 0x2004,
16565 +       0x9005, 0x090c, 0x8125, 0x00ce, 0x00be, 0x0005, 0x2001, 0x180d,
16566 +       0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x447f, 0x080c,
16567 +       0x95a1, 0x0d48, 0x2b08, 0x6112, 0x6023, 0x0006, 0x7120, 0x610a,
16568 +       0x7130, 0x6156, 0x6017, 0xf300, 0x6003, 0x0001, 0x6007, 0x0041,
16569 +       0x080c, 0x7bcb, 0x080c, 0x8125, 0x08b0, 0x00b6, 0x7110, 0xd1bc,
16570 +       0x01e8, 0x7020, 0x2060, 0x9c84, 0x0007, 0x11c0, 0x9c82, 0x1cd0,
16571 +       0x02a8, 0x6860, 0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110,
16572 +       0x2158, 0xb910, 0x9106, 0x1150, 0x700c, 0xb914, 0x9106, 0x1130,
16573 +       0x7124, 0x610a, 0x2009, 0x0045, 0x080c, 0x95ce, 0x7817, 0x0140,
16574 +       0x2001, 0x19bd, 0x2004, 0x9005, 0x090c, 0x8125, 0x00be, 0x0005,
16575 +       0x080c, 0x2e39, 0x1168, 0x7010, 0x9084, 0xff00, 0x8007, 0x9086,
16576 +       0x0000, 0x1130, 0x9184, 0x000f, 0x908a, 0x0006, 0x1208, 0x000b,
16577 +       0x0005, 0x75df, 0x75e0, 0x75df, 0x75df, 0x763f, 0x764b, 0x0005,
16578 +       0x00b6, 0x7110, 0xd1bc, 0x0120, 0x702c, 0xd084, 0x0904, 0x763d,
16579 +       0x700c, 0x7108, 0x080c, 0x23fd, 0x1904, 0x763d, 0x080c, 0x5bb0,
16580 +       0x1904, 0x763d, 0xbe12, 0xbd16, 0x7110, 0xd1bc, 0x01d8, 0x080c,
16581 +       0x5f2d, 0x0118, 0x9086, 0x0004, 0x1588, 0x00c6, 0x080c, 0x7657,
16582 +       0x00ce, 0x05d8, 0x080c, 0x94fe, 0x2b08, 0x05b8, 0x6112, 0x080c,
16583 +       0xb4e6, 0x6023, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x080c,
16584 +       0x95ce, 0x0458, 0x080c, 0x5f2d, 0x0148, 0x9086, 0x0004, 0x0130,
16585 +       0x080c, 0x5f35, 0x0118, 0x9086, 0x0004, 0x1180, 0x080c, 0x94fe,
16586 +       0x2b08, 0x01d8, 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0005, 0x7120,
16587 +       0x610a, 0x2009, 0x0088, 0x080c, 0x95ce, 0x0078, 0x080c, 0x94fe,
16588 +       0x2b08, 0x0158, 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0004, 0x7120,
16589 +       0x610a, 0x2009, 0x0001, 0x080c, 0x95ce, 0x00be, 0x0005, 0x7110,
16590 +       0xd1bc, 0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, 0x2009, 0x0089,
16591 +       0x080c, 0x95ce, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x0041, 0x0130,
16592 +       0x7124, 0x610a, 0x2009, 0x008a, 0x080c, 0x95ce, 0x0005, 0x7020,
16593 +       0x2060, 0x9c84, 0x0007, 0x1158, 0x9c82, 0x1cd0, 0x0240, 0x2001,
16594 +       0x1818, 0x2004, 0x9c02, 0x1218, 0x9085, 0x0001, 0x0005, 0x9006,
16595 +       0x0ce8, 0x00b6, 0x7110, 0xd1bc, 0x11d8, 0x7024, 0x2060, 0x9c84,
16596 +       0x0007, 0x11b0, 0x9c82, 0x1cd0, 0x0298, 0x6860, 0x9c02, 0x1280,
16597 +       0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910, 0x9106, 0x1140,
16598 +       0x700c, 0xb914, 0x9106, 0x1120, 0x2009, 0x0051, 0x080c, 0x95ce,
16599 +       0x7817, 0x0140, 0x2001, 0x19bd, 0x2004, 0x9005, 0x090c, 0x8125,
16600 +       0x00be, 0x0005, 0x2031, 0x0105, 0x0069, 0x0005, 0x2031, 0x0206,
16601 +       0x0049, 0x0005, 0x2031, 0x0207, 0x0029, 0x0005, 0x2031, 0x0213,
16602 +       0x0009, 0x0005, 0x00c6, 0x0096, 0x00f6, 0x7000, 0x9084, 0xf000,
16603 +       0x9086, 0xc000, 0x05d0, 0x080c, 0x94fe, 0x05b8, 0x0066, 0x00c6,
16604 +       0x0046, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x23fd,
16605 +       0x15a0, 0x080c, 0x5bb0, 0x1588, 0xbe12, 0xbd16, 0x2b00, 0x004e,
16606 +       0x00ce, 0x6012, 0x080c, 0xb4e6, 0x080c, 0x0fae, 0x0510, 0x2900,
16607 +       0x605a, 0x9006, 0xa802, 0xa866, 0xac6a, 0xa85c, 0x90f8, 0x001b,
16608 +       0x20a9, 0x000e, 0xa860, 0x20e8, 0x20e1, 0x0000, 0x2fa0, 0x2e98,
16609 +       0x4003, 0x006e, 0x6616, 0x6007, 0x003e, 0x6023, 0x0001, 0x6003,
16610 +       0x0001, 0x080c, 0x7c1d, 0x080c, 0x8125, 0x00fe, 0x009e, 0x00ce,
16611 +       0x0005, 0x080c, 0x9554, 0x006e, 0x0cc0, 0x004e, 0x00ce, 0x0cc8,
16612 +       0x00c6, 0x7000, 0x908c, 0xff00, 0x9184, 0xf000, 0x810f, 0x9086,
16613 +       0x2000, 0x1904, 0x7747, 0x9186, 0x0022, 0x15f0, 0x2001, 0x0111,
16614 +       0x2004, 0x9005, 0x1904, 0x7749, 0x7030, 0x908e, 0x0400, 0x0904,
16615 +       0x7749, 0x908e, 0x6000, 0x05e8, 0x908e, 0x5400, 0x05d0, 0x908e,
16616 +       0x0300, 0x11d8, 0x2009, 0x1836, 0x210c, 0xd18c, 0x1590, 0xd1a4,
16617 +       0x1580, 0x080c, 0x5eeb, 0x0558, 0x68a8, 0x9084, 0x00ff, 0x7100,
16618 +       0x918c, 0x00ff, 0x9106, 0x1518, 0x6878, 0x69a8, 0x918c, 0xff00,
16619 +       0x9105, 0x7104, 0x9106, 0x11d8, 0x00e0, 0x2009, 0x0103, 0x210c,
16620 +       0xd1b4, 0x11a8, 0x908e, 0x5200, 0x09e8, 0x908e, 0x0500, 0x09d0,
16621 +       0x908e, 0x5000, 0x09b8, 0x0058, 0x9186, 0x0023, 0x1140, 0x080c,
16622 +       0x7657, 0x0128, 0x6004, 0x9086, 0x0002, 0x0118, 0x0000, 0x9006,
16623 +       0x0010, 0x9085, 0x0001, 0x00ce, 0x0005, 0x2071, 0x19c7, 0x7003,
16624 +       0x0003, 0x700f, 0x0361, 0x9006, 0x701a, 0x7076, 0x7012, 0x7017,
16625 +       0x1cd0, 0x7007, 0x0000, 0x7026, 0x702b, 0x8b66, 0x7032, 0x7037,
16626 +       0x8bc9, 0x703f, 0xffff, 0x7043, 0xffff, 0x7046, 0x704b, 0x4c8b,
16627 +       0x704e, 0x705f, 0x78ae, 0x080c, 0x0fc7, 0x090c, 0x0d84, 0x2900,
16628 +       0x703a, 0xa867, 0x0003, 0xa86f, 0x0100, 0xa8ab, 0xdcb0, 0x0005,
16629 +       0x2071, 0x19c7, 0x1d04, 0x7809, 0x2091, 0x6000, 0x700c, 0x8001,
16630 +       0x700e, 0x1510, 0x2001, 0x1874, 0x2004, 0xd0c4, 0x0158, 0x3a00,
16631 +       0xd08c, 0x1140, 0x20d1, 0x0000, 0x20d1, 0x0001, 0x20d1, 0x0000,
16632 +       0x080c, 0x0d84, 0x700f, 0x0361, 0x7007, 0x0001, 0x0126, 0x2091,
16633 +       0x8000, 0x080c, 0x78f3, 0x7044, 0x900d, 0x0148, 0x8109, 0x7146,
16634 +       0x1130, 0x7048, 0x080f, 0x0018, 0x0126, 0x2091, 0x8000, 0x7024,
16635 +       0x900d, 0x0188, 0x7020, 0x8001, 0x7022, 0x1168, 0x7023, 0x0009,
16636 +       0x8109, 0x7126, 0x9186, 0x03e8, 0x1110, 0x7028, 0x080f, 0x81ff,
16637 +       0x1110, 0x7028, 0x080f, 0x7030, 0x900d, 0x0180, 0x702c, 0x8001,
16638 +       0x702e, 0x1160, 0x702f, 0x0009, 0x8109, 0x7132, 0x0128, 0x9184,
16639 +       0x007f, 0x090c, 0x8c48, 0x0010, 0x7034, 0x080f, 0x703c, 0x9005,
16640 +       0x0118, 0x0310, 0x8001, 0x703e, 0x7040, 0x9005, 0x0118, 0x0310,
16641 +       0x8001, 0x7042, 0x7050, 0x900d, 0x0168, 0x704c, 0x8001, 0x704e,
16642 +       0x1148, 0x704f, 0x0009, 0x8109, 0x7152, 0x1120, 0x7154, 0x7152,
16643 +       0x705c, 0x080f, 0x7018, 0x900d, 0x01d8, 0x0016, 0x7074, 0x900d,
16644 +       0x0158, 0x7070, 0x8001, 0x7072, 0x1138, 0x7073, 0x0009, 0x8109,
16645 +       0x7176, 0x1110, 0x7078, 0x080f, 0x001e, 0x7008, 0x8001, 0x700a,
16646 +       0x1138, 0x700b, 0x0009, 0x8109, 0x711a, 0x1110, 0x701c, 0x080f,
16647 +       0x012e, 0x7004, 0x0002, 0x782f, 0x7830, 0x784a, 0x00e6, 0x2071,
16648 +       0x19c7, 0x7018, 0x9005, 0x1120, 0x711a, 0x721e, 0x700b, 0x0009,
16649 +       0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, 0x19c7, 0x701c, 0x9206,
16650 +       0x1110, 0x701a, 0x701e, 0x000e, 0x00ee, 0x0005, 0x00e6, 0x2071,
16651 +       0x19c7, 0xb888, 0x9102, 0x0208, 0xb98a, 0x00ee, 0x0005, 0x0005,
16652 +       0x00b6, 0x7110, 0x080c, 0x5c0d, 0x1158, 0xb888, 0x8001, 0x0240,
16653 +       0xb88a, 0x1130, 0x0126, 0x2091, 0x8000, 0x080c, 0x8125, 0x012e,
16654 +       0x8108, 0x9182, 0x0800, 0x0218, 0x900e, 0x7007, 0x0002, 0x7112,
16655 +       0x00be, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, 0x8000, 0x6040,
16656 +       0x9005, 0x0128, 0x8001, 0x6042, 0x1110, 0x080c, 0xb38b, 0x6018,
16657 +       0x9005, 0x0510, 0x8001, 0x601a, 0x11f8, 0x6120, 0x9186, 0x0003,
16658 +       0x0118, 0x9186, 0x0006, 0x11b0, 0x6014, 0x2048, 0xa884, 0x908a,
16659 +       0x199a, 0x0280, 0x9082, 0x1999, 0xa886, 0x908a, 0x199a, 0x0210,
16660 +       0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0xa87c,
16661 +       0xd0e4, 0x0110, 0x080c, 0xaddd, 0x012e, 0x9c88, 0x0018, 0x7116,
16662 +       0x2001, 0x1818, 0x2004, 0x9102, 0x0220, 0x7017, 0x1cd0, 0x7007,
16663 +       0x0000, 0x0005, 0x00e6, 0x2071, 0x19c7, 0x7027, 0x07d0, 0x7023,
16664 +       0x0009, 0x00ee, 0x0005, 0x2001, 0x19d0, 0x2003, 0x0000, 0x0005,
16665 +       0x00e6, 0x2071, 0x19c7, 0x7132, 0x702f, 0x0009, 0x00ee, 0x0005,
16666 +       0x2011, 0x19d3, 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071, 0x19c7,
16667 +       0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x0086, 0x0026,
16668 +       0x7058, 0x8000, 0x705a, 0x2001, 0x19d5, 0x2044, 0xa06c, 0x9086,
16669 +       0x0000, 0x0150, 0x706c, 0xa09a, 0x7068, 0xa096, 0x7064, 0xa092,
16670 +       0x7060, 0xa08e, 0x080c, 0x108c, 0x002e, 0x008e, 0x0005, 0x0006,
16671 +       0x0016, 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6,
16672 +       0x0156, 0x080c, 0x7778, 0x015e, 0x00fe, 0x00ee, 0x00de, 0x00ce,
16673 +       0x00be, 0x00ae, 0x009e, 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071,
16674 +       0x19c7, 0x7176, 0x727a, 0x7073, 0x0009, 0x00ee, 0x0005, 0x00e6,
16675 +       0x0006, 0x2071, 0x19c7, 0x7078, 0x9206, 0x1110, 0x7076, 0x707a,
16676 +       0x000e, 0x00ee, 0x0005, 0x2069, 0x1800, 0x69ec, 0xd1e4, 0x1518,
16677 +       0x0026, 0xd1ec, 0x0140, 0x684c, 0x9082, 0x0200, 0x0288, 0x8117,
16678 +       0x9294, 0x00c0, 0x0088, 0x9184, 0x0007, 0x01a0, 0x8109, 0x9184,
16679 +       0x0007, 0x0110, 0x69ee, 0x0070, 0x8107, 0x9084, 0x0007, 0x910d,
16680 +       0x8107, 0x9106, 0x9094, 0x00c0, 0x9184, 0xff3f, 0x9205, 0x68ee,
16681 +       0x080c, 0x0e8d, 0x002e, 0x0005, 0x00c6, 0x2061, 0x1a3d, 0x00ce,
16682 +       0x0005, 0x9184, 0x000f, 0x8003, 0x8003, 0x8003, 0x9080, 0x1a3d,
16683 +       0x2060, 0x0005, 0xa884, 0x908a, 0x199a, 0x1638, 0x9005, 0x1150,
16684 +       0x00c6, 0x2061, 0x1a3d, 0x6014, 0x00ce, 0x9005, 0x1130, 0x2001,
16685 +       0x001e, 0x0018, 0x908e, 0xffff, 0x01b0, 0x8003, 0x800b, 0x810b,
16686 +       0x9108, 0x611a, 0xa87c, 0x908c, 0x00c0, 0x918e, 0x00c0, 0x0904,
16687 +       0x79b4, 0xd0b4, 0x1168, 0xd0bc, 0x1904, 0x798d, 0x2009, 0x0006,
16688 +       0x080c, 0x79e1, 0x0005, 0x900e, 0x0c60, 0x2001, 0x1999, 0x08b0,
16689 +       0xd0fc, 0x0160, 0x908c, 0x0003, 0x0120, 0x918e, 0x0003, 0x1904,
16690 +       0x79db, 0x908c, 0x2020, 0x918e, 0x2020, 0x01a8, 0x6024, 0xd0d4,
16691 +       0x11e8, 0x2009, 0x1874, 0x2104, 0xd084, 0x1138, 0x87ff, 0x1120,
16692 +       0x2009, 0x0043, 0x0804, 0x95ce, 0x0005, 0x87ff, 0x1de8, 0x2009,
16693 +       0x0042, 0x0804, 0x95ce, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be,
16694 +       0xd1ac, 0x0d20, 0x6024, 0xc0cd, 0x6026, 0x0c00, 0xc0d4, 0x6026,
16695 +       0xa890, 0x602e, 0xa88c, 0x6032, 0x08e0, 0xd0fc, 0x0160, 0x908c,
16696 +       0x0003, 0x0120, 0x918e, 0x0003, 0x1904, 0x79db, 0x908c, 0x2020,
16697 +       0x918e, 0x2020, 0x0170, 0x0076, 0x00f6, 0x2c78, 0x080c, 0x150d,
16698 +       0x00fe, 0x007e, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, 0x95ce,
16699 +       0x0005, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1ac, 0x0d58,
16700 +       0x6124, 0xc1cd, 0x6126, 0x0c38, 0xd0fc, 0x0188, 0x908c, 0x2020,
16701 +       0x918e, 0x2020, 0x01a8, 0x9084, 0x0003, 0x908e, 0x0002, 0x0148,
16702 +       0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, 0x95ce, 0x0005, 0x00b9,
16703 +       0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x95ce, 0x0cb0,
16704 +       0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1ac, 0x0d20, 0x6124,
16705 +       0xc1cd, 0x6126, 0x0c00, 0x2009, 0x0004, 0x0019, 0x0005, 0x2009,
16706 +       0x0001, 0x0096, 0x080c, 0xb0ad, 0x0518, 0x6014, 0x2048, 0xa982,
16707 +       0xa800, 0x6016, 0x9186, 0x0001, 0x1188, 0xa97c, 0x918c, 0x8100,
16708 +       0x918e, 0x8100, 0x1158, 0x00c6, 0x2061, 0x1a3d, 0x6200, 0xd28c,
16709 +       0x1120, 0x6204, 0x8210, 0x0208, 0x6206, 0x00ce, 0x080c, 0x5ff7,
16710 +       0x6014, 0x904d, 0x0076, 0x2039, 0x0000, 0x190c, 0x792a, 0x007e,
16711 +       0x009e, 0x0005, 0x0156, 0x00c6, 0x2061, 0x1a3d, 0x6000, 0x81ff,
16712 +       0x0110, 0x9205, 0x0008, 0x9204, 0x6002, 0x00ce, 0x015e, 0x0005,
16713 +       0x6800, 0xd08c, 0x1138, 0x6808, 0x9005, 0x0120, 0x8001, 0x680a,
16714 +       0x9085, 0x0001, 0x0005, 0x0126, 0x2091, 0x8000, 0x0036, 0x0046,
16715 +       0x20a9, 0x0010, 0x9006, 0x8004, 0x2019, 0x0100, 0x231c, 0x93a6,
16716 +       0x0008, 0x1118, 0x8086, 0x818e, 0x0020, 0x80f6, 0x3e00, 0x81f6,
16717 +       0x3e08, 0x1208, 0x9200, 0x1f04, 0x7a2c, 0x93a6, 0x0008, 0x1118,
16718 +       0x8086, 0x818e, 0x0020, 0x80f6, 0x3e00, 0x81f6, 0x3e08, 0x004e,
16719 +       0x003e, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0076, 0x0156,
16720 +       0x20a9, 0x0010, 0x9005, 0x0510, 0x911a, 0x1600, 0x8213, 0x2039,
16721 +       0x0100, 0x273c, 0x97be, 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5,
16722 +       0x3e08, 0x0228, 0x911a, 0x1220, 0x1f04, 0x7a56, 0x0028, 0x911a,
16723 +       0x2308, 0x8210, 0x1f04, 0x7a56, 0x0006, 0x3200, 0x9084, 0xefff,
16724 +       0x2080, 0x000e, 0x015e, 0x007e, 0x012e, 0x0005, 0x0006, 0x3200,
16725 +       0x9085, 0x1000, 0x0ca8, 0x0126, 0x2091, 0x2800, 0x2079, 0x19b4,
16726 +       0x012e, 0x00d6, 0x2069, 0x19b4, 0x6803, 0x0005, 0x0156, 0x0146,
16727 +       0x01d6, 0x20e9, 0x0000, 0x2069, 0x0200, 0x080c, 0x9363, 0x0401,
16728 +       0x080c, 0x934e, 0x00e9, 0x080c, 0x9351, 0x00d1, 0x080c, 0x9354,
16729 +       0x00b9, 0x080c, 0x9357, 0x00a1, 0x080c, 0x935a, 0x0089, 0x080c,
16730 +       0x935d, 0x0071, 0x080c, 0x9360, 0x0059, 0x01de, 0x014e, 0x015e,
16731 +       0x2069, 0x0004, 0x2d04, 0x9085, 0x8001, 0x206a, 0x00de, 0x0005,
16732 +       0x20a9, 0x0020, 0x20a1, 0x0240, 0x9006, 0x4004, 0x0005, 0x00c6,
16733 +       0x6027, 0x0001, 0x7804, 0x9084, 0x0007, 0x0002, 0x7ac8, 0x7aec,
16734 +       0x7b36, 0x7ace, 0x7aec, 0x7ac8, 0x7ac6, 0x7ac6, 0x080c, 0x0d84,
16735 +       0x080c, 0x7893, 0x080c, 0x8125, 0x00ce, 0x0005, 0x62c0, 0x82ff,
16736 +       0x1110, 0x00ce, 0x0005, 0x2011, 0x554d, 0x080c, 0x781a, 0x7828,
16737 +       0x9092, 0x00c8, 0x1228, 0x8000, 0x782a, 0x080c, 0x558a, 0x0c88,
16738 +       0x62c0, 0x080c, 0x9367, 0x080c, 0x554d, 0x7807, 0x0003, 0x7827,
16739 +       0x0000, 0x782b, 0x0000, 0x0c28, 0x080c, 0x7893, 0x6220, 0xd2a4,
16740 +       0x0178, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824, 0x9065,
16741 +       0x090c, 0x0d84, 0x2009, 0x0013, 0x080c, 0x95ce, 0x00ce, 0x0005,
16742 +       0x00c6, 0x7824, 0x9065, 0x090c, 0x0d84, 0x7804, 0x9086, 0x0004,
16743 +       0x0904, 0x7b74, 0x7828, 0x9092, 0xc350, 0x1230, 0x8000, 0x782a,
16744 +       0x00ce, 0x080c, 0x8b2c, 0x0c50, 0x2011, 0x0130, 0x2214, 0x080c,
16745 +       0x9367, 0x6104, 0x9186, 0x0003, 0x1188, 0x00e6, 0x2071, 0x1800,
16746 +       0x70e4, 0x00ee, 0xd08c, 0x0150, 0x00c6, 0x00e6, 0x2061, 0x0100,
16747 +       0x2071, 0x1800, 0x080c, 0x55a0, 0x00ee, 0x00ce, 0x080c, 0xcd1f,
16748 +       0x2009, 0x0014, 0x080c, 0x95ce, 0x00ce, 0x0840, 0x2001, 0x19d0,
16749 +       0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824,
16750 +       0x9065, 0x090c, 0x0d84, 0x2009, 0x0013, 0x080c, 0x9620, 0x00ce,
16751 +       0x0005, 0x00b6, 0x00c6, 0x00d6, 0x7824, 0x9005, 0x090c, 0x0d84,
16752 +       0x781c, 0x905d, 0x090c, 0x0d84, 0x080c, 0x9367, 0xb800, 0xc0dc,
16753 +       0xb802, 0x7924, 0x2160, 0x080c, 0x9554, 0xb93c, 0x81ff, 0x090c,
16754 +       0x0d84, 0x8109, 0xb93e, 0xb854, 0x9015, 0x0110, 0x7a1e, 0x0010,
16755 +       0x7918, 0x791e, 0x7807, 0x0000, 0x7827, 0x0000, 0x00de, 0x00ce,
16756 +       0x00be, 0x080c, 0x8125, 0x0898, 0x6104, 0x9186, 0x0002, 0x0128,
16757 +       0x9186, 0x0004, 0x0110, 0x0804, 0x7b0a, 0x7808, 0x9c06, 0x0904,
16758 +       0x7b0a, 0x080c, 0x8026, 0x080c, 0x7c1d, 0x00ce, 0x080c, 0x8125,
16759 +       0x0804, 0x7afe, 0x00c6, 0x6024, 0x6027, 0x0002, 0xd0f4, 0x1580,
16760 +       0x62c8, 0x60c4, 0x9205, 0x1170, 0x783c, 0x9065, 0x0130, 0x2009,
16761 +       0x0049, 0x080c, 0x95ce, 0x00ce, 0x0005, 0x2011, 0x19d3, 0x2013,
16762 +       0x0000, 0x0cc8, 0x793c, 0x81ff, 0x0dc0, 0x7944, 0x9192, 0x7530,
16763 +       0x12f0, 0x8108, 0x7946, 0x793c, 0x9188, 0x0008, 0x210c, 0x918e,
16764 +       0x0006, 0x1138, 0x6014, 0x9084, 0x1984, 0x9085, 0x0012, 0x6016,
16765 +       0x0c10, 0x6014, 0x9084, 0x1984, 0x9085, 0x0016, 0x6016, 0x08d8,
16766 +       0x793c, 0x2160, 0x2009, 0x004a, 0x080c, 0x95ce, 0x08a0, 0x7848,
16767 +       0xc085, 0x784a, 0x0880, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091,
16768 +       0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0x19b4, 0x6020, 0x8000,
16769 +       0x6022, 0x6010, 0x9005, 0x0148, 0x9080, 0x0003, 0x2102, 0x6112,
16770 +       0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0,
16771 +       0x00d6, 0x2069, 0x19b4, 0xb800, 0xd0d4, 0x01b8, 0x6820, 0x8000,
16772 +       0x6822, 0x9086, 0x0001, 0x1110, 0x2b00, 0x681e, 0x2001, 0x180c,
16773 +       0x2004, 0xd0fc, 0x0118, 0x00de, 0x0804, 0x8125, 0x6804, 0x9084,
16774 +       0x0007, 0x0804, 0x813c, 0x00de, 0x0005, 0xc0d5, 0xb802, 0x6818,
16775 +       0x9005, 0x0168, 0xb856, 0xb85b, 0x0000, 0x0086, 0x0006, 0x2b00,
16776 +       0x681a, 0x008e, 0xa05a, 0x008e, 0x2069, 0x19b4, 0x08b8, 0xb856,
16777 +       0xb85a, 0x2b00, 0x681a, 0x681e, 0x0888, 0x0006, 0x0016, 0x00c6,
16778 +       0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0x19b4,
16779 +       0x6020, 0x8000, 0x6022, 0x6008, 0x9005, 0x0148, 0x9080, 0x0003,
16780 +       0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, 0x610e,
16781 +       0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, 0x2c08, 0x2061, 0x19b4,
16782 +       0x6034, 0x9005, 0x0130, 0x9080, 0x0003, 0x2102, 0x6136, 0x00ce,
16783 +       0x0005, 0x613a, 0x6136, 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6,
16784 +       0x00c6, 0x00b6, 0x0096, 0x0076, 0x0066, 0x0056, 0x0036, 0x0026,
16785 +       0x0016, 0x0006, 0x0126, 0x902e, 0x2071, 0x19b4, 0x7638, 0x2660,
16786 +       0x2678, 0x2091, 0x8000, 0x8cff, 0x0904, 0x7cc4, 0x6010, 0x2058,
16787 +       0xb8a0, 0x9206, 0x1904, 0x7cbf, 0x87ff, 0x0120, 0x6054, 0x9106,
16788 +       0x1904, 0x7cbf, 0x703c, 0x9c06, 0x1178, 0x0036, 0x2019, 0x0001,
16789 +       0x080c, 0x8dfe, 0x7033, 0x0000, 0x9006, 0x703e, 0x7042, 0x7046,
16790 +       0x704a, 0x003e, 0x2029, 0x0001, 0x7038, 0x9c36, 0x1110, 0x660c,
16791 +       0x763a, 0x7034, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00,
16792 +       0x7036, 0x0010, 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06,
16793 +       0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xb0ad,
16794 +       0x01c8, 0x6014, 0x2048, 0x6020, 0x9086, 0x0003, 0x1590, 0xa867,
16795 +       0x0103, 0xab7a, 0xa877, 0x0000, 0x0016, 0x0036, 0x0076, 0x080c,
16796 +       0xb374, 0x080c, 0xcc6b, 0x080c, 0x61a9, 0x007e, 0x003e, 0x001e,
16797 +       0x080c, 0xb278, 0x080c, 0x9584, 0x00ce, 0x0804, 0x7c63, 0x2c78,
16798 +       0x600c, 0x2060, 0x0804, 0x7c63, 0x85ff, 0x0120, 0x0036, 0x080c,
16799 +       0x820b, 0x003e, 0x012e, 0x000e, 0x001e, 0x002e, 0x003e, 0x005e,
16800 +       0x006e, 0x007e, 0x009e, 0x00be, 0x00ce, 0x00de, 0x00ee, 0x00fe,
16801 +       0x0005, 0x6020, 0x9086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0076,
16802 +       0x080c, 0xcc6b, 0x080c, 0xc970, 0x007e, 0x003e, 0x001e, 0x0890,
16803 +       0x6020, 0x9086, 0x000a, 0x0904, 0x7ca9, 0x0804, 0x7ca7, 0x0006,
16804 +       0x0066, 0x0096, 0x00c6, 0x00d6, 0x00f6, 0x9036, 0x0126, 0x2091,
16805 +       0x8000, 0x2079, 0x19b4, 0x7838, 0x9065, 0x0904, 0x7d3f, 0x600c,
16806 +       0x0006, 0x600f, 0x0000, 0x783c, 0x9c06, 0x1168, 0x0036, 0x2019,
16807 +       0x0001, 0x080c, 0x8dfe, 0x7833, 0x0000, 0x901e, 0x7b3e, 0x7b42,
16808 +       0x7b46, 0x7b4a, 0x003e, 0x080c, 0xb0ad, 0x0520, 0x6014, 0x2048,
16809 +       0x6020, 0x9086, 0x0003, 0x1568, 0x3e08, 0x918e, 0x0002, 0x1188,
16810 +       0x6010, 0x9005, 0x0170, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc,
16811 +       0x0140, 0x6040, 0x9005, 0x1180, 0x2001, 0x1955, 0x2004, 0x6042,
16812 +       0x0058, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x61a9,
16813 +       0x080c, 0xb278, 0x080c, 0x9584, 0x000e, 0x0804, 0x7cfc, 0x7e3a,
16814 +       0x7e36, 0x012e, 0x00fe, 0x00de, 0x00ce, 0x009e, 0x006e, 0x000e,
16815 +       0x0005, 0x6020, 0x9086, 0x0006, 0x1118, 0x080c, 0xc970, 0x0c50,
16816 +       0x6020, 0x9086, 0x000a, 0x09f8, 0x08e0, 0x0016, 0x0026, 0x0086,
16817 +       0x9046, 0x0099, 0x080c, 0x7e2b, 0x008e, 0x002e, 0x001e, 0x0005,
16818 +       0x00f6, 0x0126, 0x2079, 0x19b4, 0x2091, 0x8000, 0x080c, 0x7ec2,
16819 +       0x080c, 0x7f3a, 0x012e, 0x00fe, 0x0005, 0x00b6, 0x0096, 0x00f6,
16820 +       0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091,
16821 +       0x8000, 0x2071, 0x19b4, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0904,
16822 +       0x7dfc, 0x6010, 0x2058, 0xb8a0, 0x9206, 0x1904, 0x7df7, 0x88ff,
16823 +       0x0120, 0x6054, 0x9106, 0x1904, 0x7df7, 0x7024, 0x9c06, 0x1550,
16824 +       0x2069, 0x0100, 0x68c0, 0x9005, 0x0508, 0x080c, 0x7893, 0x080c,
16825 +       0x8b50, 0x68c3, 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x0036,
16826 +       0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100,
16827 +       0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x2069, 0x0100, 0x6824,
16828 +       0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009,
16829 +       0x630a, 0x04e8, 0x7014, 0x9c36, 0x1110, 0x660c, 0x7616, 0x7010,
16830 +       0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010,
16831 +       0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e,
16832 +       0x0008, 0x2678, 0x600f, 0x0000, 0x6014, 0x2048, 0x080c, 0xb0ad,
16833 +       0x01b8, 0x6020, 0x9086, 0x0003, 0x1550, 0xa867, 0x0103, 0xab7a,
16834 +       0xa877, 0x0000, 0x0016, 0x0036, 0x0086, 0x080c, 0xb374, 0x080c,
16835 +       0xcc6b, 0x080c, 0x61a9, 0x008e, 0x003e, 0x001e, 0x080c, 0xb278,
16836 +       0x080c, 0x9584, 0x080c, 0x8eec, 0x00ce, 0x0804, 0x7d7e, 0x2c78,
16837 +       0x600c, 0x2060, 0x0804, 0x7d7e, 0x012e, 0x000e, 0x001e, 0x006e,
16838 +       0x00ce, 0x00de, 0x00ee, 0x00fe, 0x009e, 0x00be, 0x0005, 0x6020,
16839 +       0x9086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0086, 0x080c, 0xcc6b,
16840 +       0x080c, 0xc970, 0x008e, 0x003e, 0x001e, 0x08d0, 0x080c, 0x9e99,
16841 +       0x6020, 0x9086, 0x0002, 0x1130, 0x6004, 0x9086, 0x0085, 0x0904,
16842 +       0x7ddd, 0x0870, 0x6020, 0x9086, 0x0005, 0x1950, 0x6004, 0x9086,
16843 +       0x0085, 0x0d08, 0x0828, 0x00b6, 0x00a6, 0x0096, 0x00c6, 0x0006,
16844 +       0x0126, 0x2091, 0x8000, 0x9280, 0x1000, 0x2004, 0x905d, 0x0904,
16845 +       0x7ebb, 0x00f6, 0x00e6, 0x00d6, 0x0066, 0x2071, 0x19b4, 0xbe54,
16846 +       0x7018, 0x9b06, 0x1108, 0x761a, 0x701c, 0x9b06, 0x1130, 0x86ff,
16847 +       0x1118, 0x7018, 0x701e, 0x0008, 0x761e, 0xb858, 0x904d, 0x0108,
16848 +       0xae56, 0x96d5, 0x0000, 0x0110, 0x2900, 0xb05a, 0xb857, 0x0000,
16849 +       0xb85b, 0x0000, 0xb800, 0xc0d4, 0xc0dc, 0xb802, 0x080c, 0x5b43,
16850 +       0x0904, 0x7eb7, 0x7624, 0x86ff, 0x0904, 0x7ea6, 0x9680, 0x0005,
16851 +       0x2004, 0x9906, 0x15d8, 0x00d6, 0x2069, 0x0100, 0x68c0, 0x9005,
16852 +       0x0560, 0x080c, 0x7893, 0x080c, 0x8b50, 0x68c3, 0x0000, 0x080c,
16853 +       0x900f, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384,
16854 +       0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c,
16855 +       0x28a5, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001,
16856 +       0x003e, 0x00de, 0x00c6, 0xb83c, 0x9005, 0x0110, 0x8001, 0xb83e,
16857 +       0x2660, 0x080c, 0x9584, 0x00ce, 0x0048, 0x00de, 0x00c6, 0x2660,
16858 +       0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x7e5e, 0x89ff, 0x0158,
16859 +       0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xb374, 0x080c,
16860 +       0xcc6b, 0x080c, 0x61a9, 0x080c, 0x8eec, 0x0804, 0x7e5e, 0x006e,
16861 +       0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce, 0x009e, 0x00ae,
16862 +       0x00be, 0x0005, 0x0096, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x9036,
16863 +       0x7814, 0x9065, 0x0904, 0x7f17, 0x600c, 0x0006, 0x600f, 0x0000,
16864 +       0x7824, 0x9c06, 0x1558, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0508,
16865 +       0x080c, 0x7893, 0x080c, 0x8b50, 0x68c3, 0x0000, 0x080c, 0x900f,
16866 +       0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000,
16867 +       0x0138, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5,
16868 +       0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e,
16869 +       0x0028, 0x6003, 0x0009, 0x630a, 0x2c30, 0x00b0, 0x6014, 0x2048,
16870 +       0x080c, 0xb0ab, 0x0168, 0x6020, 0x9086, 0x0003, 0x11c0, 0xa867,
16871 +       0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x61a9, 0x080c, 0xb278,
16872 +       0x080c, 0x9584, 0x080c, 0x8eec, 0x000e, 0x0804, 0x7ec9, 0x7e16,
16873 +       0x7e12, 0x00de, 0x00ce, 0x006e, 0x000e, 0x009e, 0x0005, 0x6020,
16874 +       0x9086, 0x0006, 0x1118, 0x080c, 0xc970, 0x0c50, 0x080c, 0x9e99,
16875 +       0x6020, 0x9086, 0x0002, 0x1128, 0x6004, 0x9086, 0x0085, 0x09b8,
16876 +       0x08f8, 0x6020, 0x9086, 0x0005, 0x19d8, 0x6004, 0x9086, 0x0085,
16877 +       0x0d50, 0x08b0, 0x0006, 0x0066, 0x0096, 0x00b6, 0x00c6, 0x00d6,
16878 +       0x7818, 0x905d, 0x0904, 0x7fb7, 0xb854, 0x0006, 0x9006, 0xb856,
16879 +       0xb85a, 0xb800, 0xc0d4, 0xc0dc, 0xb802, 0x080c, 0x5b43, 0x0904,
16880 +       0x7fb4, 0x7e24, 0x86ff, 0x0904, 0x7fa7, 0x9680, 0x0005, 0x2004,
16881 +       0x9906, 0x1904, 0x7fa7, 0x00d6, 0x2069, 0x0100, 0x68c0, 0x9005,
16882 +       0x05e8, 0x080c, 0x7893, 0x080c, 0x8b50, 0x68c3, 0x0000, 0x080c,
16883 +       0x900f, 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384,
16884 +       0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c,
16885 +       0x28a5, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001,
16886 +       0x003e, 0x00de, 0x00c6, 0x3e08, 0x918e, 0x0002, 0x1168, 0xb800,
16887 +       0xd0bc, 0x0150, 0x9680, 0x0010, 0x200c, 0x81ff, 0x1508, 0x2009,
16888 +       0x1955, 0x210c, 0x2102, 0x00e0, 0xb83c, 0x9005, 0x0110, 0x8001,
16889 +       0xb83e, 0x2660, 0x080c, 0x9584, 0x00ce, 0x0048, 0x00de, 0x00c6,
16890 +       0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x7f4d, 0x89ff,
16891 +       0x0138, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x61a9,
16892 +       0x080c, 0x8eec, 0x0804, 0x7f4d, 0x000e, 0x0804, 0x7f41, 0x781e,
16893 +       0x781a, 0x00de, 0x00ce, 0x00be, 0x009e, 0x006e, 0x000e, 0x0005,
16894 +       0x00e6, 0x00d6, 0x0096, 0x0066, 0xb800, 0xd0dc, 0x01a0, 0xb84c,
16895 +       0x904d, 0x0188, 0xa878, 0x9606, 0x1170, 0x2071, 0x19b4, 0x7024,
16896 +       0x9035, 0x0148, 0x9080, 0x0005, 0x2004, 0x9906, 0x1120, 0xb800,
16897 +       0xc0dc, 0xb802, 0x0029, 0x006e, 0x009e, 0x00de, 0x00ee, 0x0005,
16898 +       0x00f6, 0x2079, 0x0100, 0x78c0, 0x9005, 0x1138, 0x00c6, 0x2660,
16899 +       0x6003, 0x0009, 0x630a, 0x00ce, 0x04b8, 0x080c, 0x8b50, 0x78c3,
16900 +       0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x0036, 0x2079, 0x0140,
16901 +       0x7b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5,
16902 +       0x9006, 0x080c, 0x28a5, 0x2079, 0x0100, 0x7824, 0xd084, 0x0110,
16903 +       0x7827, 0x0001, 0x080c, 0x900f, 0x003e, 0x080c, 0x5b43, 0x00c6,
16904 +       0xb83c, 0x9005, 0x0110, 0x8001, 0xb83e, 0x2660, 0x080c, 0x9554,
16905 +       0x00ce, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xb374,
16906 +       0x080c, 0x61a9, 0x080c, 0x8eec, 0x00fe, 0x0005, 0x00b6, 0x00e6,
16907 +       0x00c6, 0x2001, 0x180c, 0x2014, 0xc2e4, 0x2202, 0x2071, 0x19b4,
16908 +       0x7004, 0x9084, 0x0007, 0x0002, 0x803e, 0x8042, 0x8059, 0x8082,
16909 +       0x80c0, 0x803e, 0x8059, 0x803c, 0x080c, 0x0d84, 0x00ce, 0x00ee,
16910 +       0x00be, 0x0005, 0x7024, 0x9065, 0x0148, 0x7020, 0x8001, 0x7022,
16911 +       0x600c, 0x9015, 0x0158, 0x7216, 0x600f, 0x0000, 0x7007, 0x0000,
16912 +       0x7027, 0x0000, 0x00ce, 0x00ee, 0x00be, 0x0005, 0x7216, 0x7212,
16913 +       0x0ca8, 0x6010, 0x2058, 0x080c, 0x5b43, 0xb800, 0xc0dc, 0xb802,
16914 +       0x7007, 0x0000, 0x7027, 0x0000, 0x7020, 0x8001, 0x7022, 0x1148,
16915 +       0x2001, 0x180c, 0x2014, 0xd2ec, 0x1180, 0x00ce, 0x00ee, 0x00be,
16916 +       0x0005, 0xb854, 0x9015, 0x0120, 0x721e, 0x080c, 0x8125, 0x0ca8,
16917 +       0x7218, 0x721e, 0x080c, 0x8125, 0x0c80, 0xc2ec, 0x2202, 0x080c,
16918 +       0x820b, 0x0c58, 0x7024, 0x9065, 0x05b8, 0x700c, 0x9c06, 0x1160,
16919 +       0x080c, 0x8eec, 0x600c, 0x9015, 0x0120, 0x720e, 0x600f, 0x0000,
16920 +       0x0448, 0x720e, 0x720a, 0x0430, 0x7014, 0x9c06, 0x1160, 0x080c,
16921 +       0x8eec, 0x600c, 0x9015, 0x0120, 0x7216, 0x600f, 0x0000, 0x00d0,
16922 +       0x7216, 0x7212, 0x00b8, 0x6020, 0x9086, 0x0003, 0x1198, 0x6010,
16923 +       0x2058, 0x080c, 0x5b43, 0xb800, 0xc0dc, 0xb802, 0x080c, 0x8eec,
16924 +       0x701c, 0x9065, 0x0138, 0xb854, 0x9015, 0x0110, 0x721e, 0x0010,
16925 +       0x7218, 0x721e, 0x7027, 0x0000, 0x00ce, 0x00ee, 0x00be, 0x0005,
16926 +       0x7024, 0x9065, 0x0140, 0x080c, 0x8eec, 0x600c, 0x9015, 0x0158,
16927 +       0x720e, 0x600f, 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x00ce,
16928 +       0x00ee, 0x00be, 0x0005, 0x720e, 0x720a, 0x0ca8, 0x00d6, 0x2069,
16929 +       0x19b4, 0x6830, 0x9084, 0x0003, 0x0002, 0x80e3, 0x80e5, 0x8109,
16930 +       0x80e1, 0x080c, 0x0d84, 0x00de, 0x0005, 0x00c6, 0x6840, 0x9086,
16931 +       0x0001, 0x01b8, 0x683c, 0x9065, 0x0130, 0x600c, 0x9015, 0x0170,
16932 +       0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x2011,
16933 +       0x19d3, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a, 0x6836,
16934 +       0x0c90, 0x6843, 0x0000, 0x6838, 0x9065, 0x0d68, 0x6003, 0x0003,
16935 +       0x0c50, 0x00c6, 0x9006, 0x6842, 0x6846, 0x684a, 0x683c, 0x9065,
16936 +       0x0160, 0x600c, 0x9015, 0x0130, 0x6a3a, 0x600f, 0x0000, 0x683f,
16937 +       0x0000, 0x0018, 0x683e, 0x683a, 0x6836, 0x00ce, 0x00de, 0x0005,
16938 +       0xc1e5, 0x2001, 0x180c, 0x2102, 0x0005, 0x2001, 0x180c, 0x200c,
16939 +       0xd1ec, 0x0138, 0xc1ec, 0x2102, 0x080c, 0x820b, 0x2001, 0x180c,
16940 +       0x200c, 0x9184, 0x0600, 0x9086, 0x0600, 0x0d50, 0x00d6, 0x2069,
16941 +       0x19b4, 0x6804, 0x9084, 0x0007, 0x0002, 0x8147, 0x81ea, 0x81ea,
16942 +       0x81ea, 0x81ea, 0x81ec, 0x81ea, 0x8145, 0x080c, 0x0d84, 0x6820,
16943 +       0x9005, 0x1110, 0x00de, 0x0005, 0x00c6, 0x680c, 0x9065, 0x0150,
16944 +       0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x8256, 0x00ce,
16945 +       0x00de, 0x0005, 0x6814, 0x9065, 0x0150, 0x6807, 0x0001, 0x6826,
16946 +       0x682b, 0x0000, 0x080c, 0x8256, 0x00ce, 0x00de, 0x0005, 0x00b6,
16947 +       0x00e6, 0x6a1c, 0x92dd, 0x0000, 0x0904, 0x81d6, 0xb84c, 0x900d,
16948 +       0x0118, 0xb888, 0x9005, 0x01a0, 0xb854, 0x905d, 0x0120, 0x920e,
16949 +       0x0904, 0x81d6, 0x0028, 0x6818, 0x920e, 0x0904, 0x81d6, 0x2058,
16950 +       0xb84c, 0x900d, 0x0d88, 0xb888, 0x9005, 0x1d70, 0x2b00, 0x681e,
16951 +       0xbb3c, 0xb838, 0x9302, 0x1e40, 0x080c, 0x952b, 0x0904, 0x81d6,
16952 +       0x8318, 0xbb3e, 0x6116, 0x2b10, 0x6212, 0x0096, 0x2148, 0xa880,
16953 +       0x9084, 0x00ff, 0x605e, 0xa883, 0x0000, 0xa884, 0x009e, 0x908a,
16954 +       0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0x9318,
16955 +       0x631a, 0x6114, 0x0096, 0x2148, 0xa964, 0x009e, 0x918c, 0x00ff,
16956 +       0x918e, 0x0048, 0x0538, 0x00f6, 0x2c78, 0x2061, 0x0100, 0xbab0,
16957 +       0x629a, 0x2069, 0x0200, 0x2071, 0x0240, 0x080c, 0x8786, 0x2069,
16958 +       0x19b4, 0xbb00, 0xc3dd, 0xbb02, 0x6807, 0x0002, 0x2f18, 0x6b26,
16959 +       0x682b, 0x0000, 0x7823, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040,
16960 +       0x00fe, 0x00ee, 0x00be, 0x00ce, 0x00de, 0x0005, 0x00ee, 0x00be,
16961 +       0x00ce, 0x0cd0, 0xbb00, 0xc3dd, 0xbb02, 0x6807, 0x0006, 0x2f18,
16962 +       0x6b26, 0x682b, 0x0000, 0x080c, 0x9387, 0x00ee, 0x00be, 0x00ce,
16963 +       0x00de, 0x0005, 0x00de, 0x0005, 0x00c6, 0x680c, 0x9065, 0x0138,
16964 +       0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x8256, 0x00ce,
16965 +       0x00de, 0x0005, 0x2001, 0x180c, 0x2014, 0xc2ed, 0x2202, 0x00de,
16966 +       0x00fe, 0x0005, 0x2001, 0x180c, 0x2014, 0xd2e4, 0x0120, 0xc2e4,
16967 +       0x2202, 0x080c, 0x8136, 0x00f6, 0x00d6, 0x2069, 0x19b4, 0x6830,
16968 +       0x9086, 0x0000, 0x11f0, 0x2001, 0x180c, 0x200c, 0xd1c4, 0x11e0,
16969 +       0x6838, 0x907d, 0x01b0, 0x6a04, 0x9296, 0x0000, 0x1588, 0x6833,
16970 +       0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6,
16971 +       0x2091, 0x2400, 0x002e, 0x080c, 0x1933, 0x1178, 0x012e, 0x080c,
16972 +       0x899e, 0x00de, 0x00fe, 0x0005, 0xc1c4, 0x2102, 0x0066, 0x2031,
16973 +       0x0001, 0x080c, 0x691e, 0x006e, 0x08d8, 0x012e, 0x6843, 0x0000,
16974 +       0x7803, 0x0002, 0x780c, 0x9015, 0x0140, 0x6a3a, 0x780f, 0x0000,
16975 +       0x6833, 0x0000, 0x683f, 0x0000, 0x0c20, 0x683a, 0x6836, 0x0cc0,
16976 +       0x6a04, 0x9296, 0x0006, 0x0958, 0x0804, 0x81fa, 0x6020, 0x9084,
16977 +       0x000f, 0x000b, 0x0005, 0x826a, 0x826f, 0x86ca, 0x874f, 0x826f,
16978 +       0x86ca, 0x874f, 0x826a, 0x826f, 0x826a, 0x826a, 0x826a, 0x826a,
16979 +       0x826a, 0x826a, 0x080c, 0x8026, 0x080c, 0x8125, 0x0005, 0x00b6,
16980 +       0x0156, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6,
16981 +       0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, 0x6004, 0x908a, 0x0053,
16982 +       0x1a0c, 0x0d84, 0x6110, 0x2158, 0xb9b0, 0x2c78, 0x2061, 0x0100,
16983 +       0x619a, 0x908a, 0x0040, 0x1a04, 0x82db, 0x005b, 0x00fe, 0x00ee,
16984 +       0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x00be,
16985 +       0x0005, 0x8451, 0x848c, 0x84b5, 0x8559, 0x857b, 0x8581, 0x858e,
16986 +       0x8596, 0x85a2, 0x85a8, 0x85b9, 0x85a8, 0x8611, 0x8596, 0x861d,
16987 +       0x8623, 0x85a2, 0x8623, 0x862f, 0x82d9, 0x82d9, 0x82d9, 0x82d9,
16988 +       0x82d9, 0x82d9, 0x82d9, 0x82d9, 0x82d9, 0x82d9, 0x82d9, 0x8c9a,
16989 +       0x8cb0, 0x8cba, 0x8cda, 0x8d0c, 0x858e, 0x82d9, 0x858e, 0x85a8,
16990 +       0x82d9, 0x84b5, 0x8559, 0x82d9, 0x90fc, 0x85a8, 0x82d9, 0x9118,
16991 +       0x85a8, 0x82d9, 0x85a2, 0x844b, 0x82fc, 0x82d9, 0x912e, 0x919a,
16992 +       0x9271, 0x82d9, 0x927e, 0x858b, 0x92a9, 0x82d9, 0x8d16, 0x92d6,
16993 +       0x82d9, 0x080c, 0x0d84, 0x2100, 0x005b, 0x00fe, 0x00ee, 0x00de,
16994 +       0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x00be, 0x0005,
16995 +       0x82fa, 0x82fa, 0x82fa, 0x8322, 0x83ce, 0x83d9, 0x82fa, 0x82fa,
16996 +       0x82fa, 0x8420, 0x842c, 0x833d, 0x82fa, 0x8358, 0x838c, 0x9447,
16997 +       0x948c, 0x85a8, 0x080c, 0x0d84, 0x00d6, 0x0096, 0x080c, 0x8642,
16998 +       0x7003, 0x2414, 0x7007, 0x0018, 0x700b, 0x0800, 0x7814, 0x2048,
16999 +       0xa83c, 0x700e, 0xa850, 0x7022, 0xa854, 0x7026, 0x60c3, 0x0018,
17000 +       0x080c, 0x8b24, 0x009e, 0x00de, 0x0005, 0x7810, 0x00b6, 0x2058,
17001 +       0xb8a0, 0x00be, 0x080c, 0x94d3, 0x1110, 0xd0bc, 0x0110, 0x9085,
17002 +       0x0001, 0x0005, 0x00d6, 0x0096, 0x080c, 0x8642, 0x7003, 0x0500,
17003 +       0x7814, 0x2048, 0xa874, 0x700a, 0xa878, 0x700e, 0xa87c, 0x7012,
17004 +       0xa880, 0x7016, 0xa884, 0x701a, 0xa888, 0x701e, 0x60c3, 0x0010,
17005 +       0x080c, 0x8b24, 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x080c,
17006 +       0x8642, 0x7003, 0x0500, 0x7814, 0x2048, 0xa8cc, 0x700a, 0xa8d0,
17007 +       0x700e, 0xa8d4, 0x7012, 0xa8d8, 0x7016, 0xa8dc, 0x701a, 0xa8e0,
17008 +       0x701e, 0x60c3, 0x0010, 0x080c, 0x8b24, 0x009e, 0x00de, 0x0005,
17009 +       0x00d6, 0x0096, 0x0126, 0x2091, 0x8000, 0x080c, 0x8642, 0x20e9,
17010 +       0x0000, 0x2001, 0x1970, 0x2003, 0x0000, 0x7814, 0x2048, 0xa814,
17011 +       0x8003, 0x60c2, 0xa830, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080,
17012 +       0x001b, 0x2098, 0x2001, 0x1970, 0x0016, 0x200c, 0x2001, 0x0001,
17013 +       0x080c, 0x1ff9, 0x080c, 0xbd44, 0x9006, 0x080c, 0x1ff9, 0x001e,
17014 +       0xa804, 0x9005, 0x0110, 0x2048, 0x0c28, 0x04d9, 0x080c, 0x8b24,
17015 +       0x012e, 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x0126, 0x2091,
17016 +       0x8000, 0x080c, 0x868d, 0x20e9, 0x0000, 0x2001, 0x1970, 0x2003,
17017 +       0x0000, 0x7814, 0x2048, 0xa86f, 0x0200, 0xa873, 0x0000, 0xa814,
17018 +       0x8003, 0x60c2, 0xa830, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080,
17019 +       0x001b, 0x2098, 0x2001, 0x1970, 0x0016, 0x200c, 0x080c, 0xbd44,
17020 +       0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c60, 0x0051, 0x7814,
17021 +       0x2048, 0x080c, 0x0f60, 0x080c, 0x8b24, 0x012e, 0x009e, 0x00de,
17022 +       0x0005, 0x60c0, 0x8004, 0x9084, 0x0003, 0x9005, 0x0130, 0x9082,
17023 +       0x0004, 0x20a3, 0x0000, 0x8000, 0x1de0, 0x0005, 0x080c, 0x8642,
17024 +       0x7003, 0x7800, 0x7808, 0x8007, 0x700a, 0x60c3, 0x0008, 0x0804,
17025 +       0x8b24, 0x00d6, 0x00e6, 0x080c, 0x868d, 0x7814, 0x9084, 0xff00,
17026 +       0x2073, 0x0200, 0x8e70, 0x8e70, 0x9095, 0x0010, 0x2272, 0x8e70,
17027 +       0x2073, 0x0034, 0x8e70, 0x2069, 0x1805, 0x20a9, 0x0004, 0x2d76,
17028 +       0x8d68, 0x8e70, 0x1f04, 0x83ef, 0x2069, 0x1801, 0x20a9, 0x0004,
17029 +       0x2d76, 0x8d68, 0x8e70, 0x1f04, 0x83f8, 0x2069, 0x1980, 0x9086,
17030 +       0xdf00, 0x0110, 0x2069, 0x199a, 0x20a9, 0x001a, 0x9e86, 0x0260,
17031 +       0x1148, 0x00c6, 0x2061, 0x0200, 0x6010, 0x8000, 0x6012, 0x00ce,
17032 +       0x2071, 0x0240, 0x2d04, 0x8007, 0x2072, 0x8d68, 0x8e70, 0x1f04,
17033 +       0x8406, 0x60c3, 0x004c, 0x080c, 0x8b24, 0x00ee, 0x00de, 0x0005,
17034 +       0x080c, 0x8642, 0x7003, 0x6300, 0x7007, 0x0028, 0x7808, 0x700e,
17035 +       0x60c3, 0x0008, 0x0804, 0x8b24, 0x00d6, 0x0026, 0x0016, 0x080c,
17036 +       0x868d, 0x7003, 0x0200, 0x7814, 0x700e, 0x00e6, 0x9ef0, 0x0004,
17037 +       0x2009, 0x0001, 0x2011, 0x000c, 0x2073, 0x0800, 0x8e70, 0x2073,
17038 +       0x0000, 0x00ee, 0x7206, 0x710a, 0x62c2, 0x080c, 0x8b24, 0x001e,
17039 +       0x002e, 0x00de, 0x0005, 0x2001, 0x1816, 0x2004, 0x609a, 0x0804,
17040 +       0x8b24, 0x080c, 0x8642, 0x7003, 0x5200, 0x2069, 0x1852, 0x6804,
17041 +       0xd084, 0x0130, 0x6828, 0x0016, 0x080c, 0x2430, 0x710e, 0x001e,
17042 +       0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000,
17043 +       0x20a1, 0x0250, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, 0x20a1,
17044 +       0x0254, 0x4003, 0x080c, 0x94d3, 0x1120, 0xb8a0, 0x9082, 0x007f,
17045 +       0x0248, 0x2001, 0x181d, 0x2004, 0x7032, 0x2001, 0x181e, 0x2004,
17046 +       0x7036, 0x0030, 0x2001, 0x1816, 0x2004, 0x9084, 0x00ff, 0x7036,
17047 +       0x60c3, 0x001c, 0x0804, 0x8b24, 0x080c, 0x8642, 0x7003, 0x0500,
17048 +       0x080c, 0x94d3, 0x1120, 0xb8a0, 0x9082, 0x007f, 0x0248, 0x2001,
17049 +       0x181d, 0x2004, 0x700a, 0x2001, 0x181e, 0x2004, 0x700e, 0x0030,
17050 +       0x2001, 0x1816, 0x2004, 0x9084, 0x00ff, 0x700e, 0x20a9, 0x0004,
17051 +       0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0250,
17052 +       0x4003, 0x60c3, 0x0010, 0x0804, 0x8b24, 0x080c, 0x8642, 0x9006,
17053 +       0x080c, 0x5ef7, 0xb8a0, 0x9086, 0x007e, 0x1130, 0x7003, 0x0400,
17054 +       0x620c, 0xc2b4, 0x620e, 0x0058, 0x7814, 0x0096, 0x904d, 0x0120,
17055 +       0x9006, 0xa89a, 0xa8a6, 0xa8aa, 0x009e, 0x7003, 0x0300, 0xb8a0,
17056 +       0x9086, 0x007e, 0x1904, 0x8520, 0x00d6, 0x2069, 0x193b, 0x2001,
17057 +       0x1836, 0x2004, 0xd0a4, 0x0178, 0x6800, 0x700a, 0x6808, 0x9084,
17058 +       0x2000, 0x7012, 0x680c, 0x7016, 0x701f, 0x2710, 0x6818, 0x7022,
17059 +       0x681c, 0x7026, 0x0080, 0x6800, 0x700a, 0x6804, 0x700e, 0x6808,
17060 +       0x080c, 0x6877, 0x1118, 0x9084, 0x37ff, 0x0010, 0x9084, 0x3fff,
17061 +       0x7012, 0x680c, 0x7016, 0x00de, 0x20a9, 0x0004, 0x20e1, 0x0001,
17062 +       0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0256, 0x4003, 0x20a9,
17063 +       0x0004, 0x2099, 0x1801, 0x20a1, 0x025a, 0x4003, 0x00d6, 0x080c,
17064 +       0x934e, 0x2069, 0x1943, 0x2071, 0x024e, 0x6800, 0xc0dd, 0x7002,
17065 +       0x080c, 0x4dee, 0xd0e4, 0x0110, 0x680c, 0x700e, 0x00de, 0x04a8,
17066 +       0x2001, 0x1836, 0x2004, 0xd0a4, 0x0170, 0x0016, 0x2001, 0x193c,
17067 +       0x200c, 0x60e0, 0x9106, 0x0130, 0x2100, 0x60e3, 0x0000, 0x080c,
17068 +       0x2471, 0x61e2, 0x001e, 0x20e1, 0x0001, 0x2099, 0x193b, 0x20e9,
17069 +       0x0000, 0x20a1, 0x024e, 0x20a9, 0x0008, 0x4003, 0x20a9, 0x0004,
17070 +       0x2099, 0x1805, 0x20a1, 0x0256, 0x4003, 0x20a9, 0x0004, 0x2099,
17071 +       0x1801, 0x20a1, 0x025a, 0x4003, 0x080c, 0x934e, 0x20a1, 0x024e,
17072 +       0x20a9, 0x0008, 0x2099, 0x1943, 0x4003, 0x60c3, 0x0074, 0x0804,
17073 +       0x8b24, 0x080c, 0x8642, 0x7003, 0x2010, 0x7007, 0x0014, 0x700b,
17074 +       0x0800, 0x700f, 0x2000, 0x9006, 0x00f6, 0x2079, 0x1852, 0x7904,
17075 +       0x00fe, 0xd1ac, 0x1110, 0x9085, 0x0020, 0xd1a4, 0x0110, 0x9085,
17076 +       0x0010, 0x9085, 0x0002, 0x00d6, 0x0804, 0x85f2, 0x7026, 0x60c3,
17077 +       0x0014, 0x0804, 0x8b24, 0x080c, 0x8642, 0x7003, 0x5000, 0x0804,
17078 +       0x84cf, 0x080c, 0x8642, 0x7003, 0x2110, 0x7007, 0x0014, 0x60c3,
17079 +       0x0014, 0x0804, 0x8b24, 0x080c, 0x8684, 0x0010, 0x080c, 0x868d,
17080 +       0x7003, 0x0200, 0x60c3, 0x0004, 0x0804, 0x8b24, 0x080c, 0x868d,
17081 +       0x7003, 0x0100, 0x700b, 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008,
17082 +       0x0804, 0x8b24, 0x080c, 0x868d, 0x7003, 0x0200, 0x0804, 0x84cf,
17083 +       0x080c, 0x868d, 0x7003, 0x0100, 0x782c, 0x9005, 0x0110, 0x700a,
17084 +       0x0010, 0x700b, 0x0003, 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804,
17085 +       0x8b24, 0x00d6, 0x080c, 0x868d, 0x7003, 0x0210, 0x7007, 0x0014,
17086 +       0x700b, 0x0800, 0xb894, 0x9086, 0x0014, 0x1198, 0xb99c, 0x9184,
17087 +       0x0030, 0x0190, 0xb998, 0x9184, 0xc000, 0x1140, 0xd1ec, 0x0118,
17088 +       0x700f, 0x2100, 0x0058, 0x700f, 0x0100, 0x0040, 0x700f, 0x0400,
17089 +       0x0028, 0x700f, 0x0700, 0x0010, 0x700f, 0x0800, 0x00f6, 0x2079,
17090 +       0x1852, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0x9085, 0x0020, 0xd1a4,
17091 +       0x0110, 0x9085, 0x0010, 0x2009, 0x1874, 0x210c, 0xd184, 0x1110,
17092 +       0x9085, 0x0002, 0x0026, 0x2009, 0x1872, 0x210c, 0xd1e4, 0x0150,
17093 +       0xc0c5, 0xbabc, 0xd28c, 0x1108, 0xc0cd, 0x9094, 0x0030, 0x9296,
17094 +       0x0010, 0x0140, 0xd1ec, 0x0130, 0x9094, 0x0030, 0x9296, 0x0010,
17095 +       0x0108, 0xc0bd, 0x002e, 0x7026, 0x60c3, 0x0014, 0x00de, 0x0804,
17096 +       0x8b24, 0x080c, 0x868d, 0x7003, 0x0210, 0x7007, 0x0014, 0x700f,
17097 +       0x0100, 0x60c3, 0x0014, 0x0804, 0x8b24, 0x080c, 0x868d, 0x7003,
17098 +       0x0200, 0x0804, 0x8455, 0x080c, 0x868d, 0x7003, 0x0100, 0x700b,
17099 +       0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008, 0x0804, 0x8b24, 0x080c,
17100 +       0x868d, 0x7003, 0x0100, 0x700b, 0x000b, 0x60c3, 0x0008, 0x0804,
17101 +       0x8b24, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x3200, 0x2021,
17102 +       0x0800, 0x0040, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x2200,
17103 +       0x2021, 0x0100, 0x080c, 0x9363, 0xb810, 0x9305, 0x7002, 0xb814,
17104 +       0x7006, 0x2069, 0x1800, 0x6874, 0x700a, 0x6878, 0x700e, 0x9485,
17105 +       0x0029, 0x7012, 0x004e, 0x003e, 0x00de, 0x080c, 0x8b12, 0x721a,
17106 +       0x9f95, 0x0000, 0x7222, 0x7027, 0xffff, 0x2071, 0x024c, 0x002e,
17107 +       0x0005, 0x0026, 0x080c, 0x9363, 0x7003, 0x02ff, 0x7007, 0xfffc,
17108 +       0x00d6, 0x2069, 0x1800, 0x6874, 0x700a, 0x6878, 0x700e, 0x00de,
17109 +       0x7013, 0x2029, 0x0c10, 0x7003, 0x0100, 0x7007, 0x0000, 0x700b,
17110 +       0xfc02, 0x700f, 0x0000, 0x0005, 0x0026, 0x00d6, 0x0036, 0x0046,
17111 +       0x2019, 0x3300, 0x2021, 0x0800, 0x0040, 0x0026, 0x00d6, 0x0036,
17112 +       0x0046, 0x2019, 0x2300, 0x2021, 0x0100, 0x080c, 0x9363, 0xb810,
17113 +       0x9305, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0xb810, 0x9005,
17114 +       0x1140, 0xb814, 0x9005, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffe,
17115 +       0x0020, 0x6874, 0x700a, 0x6878, 0x700e, 0x0000, 0x9485, 0x0098,
17116 +       0x7012, 0x004e, 0x003e, 0x00de, 0x080c, 0x8b12, 0x721a, 0x7a08,
17117 +       0x7222, 0x2f10, 0x7226, 0x2071, 0x024c, 0x002e, 0x0005, 0x080c,
17118 +       0x8b12, 0x721a, 0x7a08, 0x7222, 0x7814, 0x7026, 0x2071, 0x024c,
17119 +       0x002e, 0x0005, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2069,
17120 +       0x0200, 0x2071, 0x0240, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d84,
17121 +       0x908a, 0x0092, 0x1a0c, 0x0d84, 0x6110, 0x2158, 0xb9b0, 0x2c78,
17122 +       0x2061, 0x0100, 0x619a, 0x9082, 0x0085, 0x0033, 0x00fe, 0x00ee,
17123 +       0x00de, 0x00ce, 0x00be, 0x0005, 0x86fb, 0x8700, 0x870b, 0x86f9,
17124 +       0x86f9, 0x86f9, 0x86fb, 0x86f9, 0x86f9, 0x86f9, 0x86f9, 0x86f9,
17125 +       0x86f9, 0x080c, 0x0d84, 0x00c1, 0x60c3, 0x0000, 0x0804, 0x8b24,
17126 +       0x0431, 0x7808, 0x700a, 0x7814, 0x700e, 0x7017, 0xffff, 0x60c3,
17127 +       0x000c, 0x0804, 0x8b24, 0x0479, 0x7003, 0x0003, 0x7007, 0x0300,
17128 +       0x60c3, 0x0004, 0x0804, 0x8b24, 0x0026, 0x080c, 0x9363, 0xb810,
17129 +       0x9085, 0x8100, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6874,
17130 +       0x700a, 0x6878, 0x700e, 0x7013, 0x0009, 0x0804, 0x865d, 0x0026,
17131 +       0x080c, 0x9363, 0xb810, 0x9085, 0x8400, 0x7002, 0xb814, 0x7006,
17132 +       0x2069, 0x1800, 0x6874, 0x700a, 0x6878, 0x700e, 0x2001, 0x0099,
17133 +       0x7012, 0x0804, 0x86bf, 0x0026, 0x080c, 0x9363, 0xb810, 0x9085,
17134 +       0x8500, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6874, 0x700a,
17135 +       0x6878, 0x700e, 0x2001, 0x0099, 0x7012, 0x0804, 0x86bf, 0x00b6,
17136 +       0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2c78, 0x2069, 0x0200, 0x2071,
17137 +       0x0240, 0x7804, 0x908a, 0x0040, 0x0a0c, 0x0d84, 0x908a, 0x0054,
17138 +       0x1a0c, 0x0d84, 0x7910, 0x2158, 0xb9b0, 0x2061, 0x0100, 0x619a,
17139 +       0x9082, 0x0040, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be,
17140 +       0x0005, 0x8786, 0x882d, 0x8800, 0x894f, 0x8784, 0x8784, 0x8784,
17141 +       0x8784, 0x8784, 0x8784, 0x8784, 0x8eb9, 0x8ec5, 0x8ed1, 0x8edd,
17142 +       0x8784, 0x92b5, 0x8784, 0x8ead, 0x080c, 0x0d84, 0x0096, 0x780b,
17143 +       0xffff, 0x080c, 0x87dc, 0x7914, 0x2148, 0xa978, 0x7956, 0x7132,
17144 +       0xa97c, 0x9184, 0x000f, 0x1118, 0x2001, 0x0005, 0x0040, 0xd184,
17145 +       0x0118, 0x2001, 0x0004, 0x0018, 0x9084, 0x0006, 0x8004, 0x2010,
17146 +       0x785c, 0x9084, 0x00ff, 0x8007, 0x9205, 0x7042, 0xd1ac, 0x0128,
17147 +       0x7047, 0x0002, 0x080c, 0x150d, 0x0050, 0xd1b4, 0x0118, 0x7047,
17148 +       0x0001, 0x0028, 0x7047, 0x0000, 0x9016, 0x2230, 0x0010, 0xaab0,
17149 +       0xaeac, 0x726a, 0x766e, 0x20a9, 0x0008, 0x20e9, 0x0000, 0xa860,
17150 +       0x20e0, 0xa85c, 0x9080, 0x0023, 0x2098, 0x20a1, 0x0252, 0x2069,
17151 +       0x0200, 0x6813, 0x0018, 0x4003, 0x6813, 0x0008, 0x60c3, 0x0020,
17152 +       0x6017, 0x0009, 0x2001, 0x19d0, 0x2003, 0x07d0, 0x2001, 0x19cf,
17153 +       0x2003, 0x0009, 0x009e, 0x0005, 0x6813, 0x0008, 0xba8c, 0x8210,
17154 +       0xb8bc, 0xd084, 0x0128, 0x7a46, 0x7b14, 0x7b4a, 0x722e, 0x732a,
17155 +       0x9294, 0x00ff, 0xba8e, 0x8217, 0x721a, 0xba10, 0x9295, 0x0600,
17156 +       0x7202, 0xba14, 0x7206, 0x2069, 0x1800, 0x6a74, 0x720a, 0x6a78,
17157 +       0x720e, 0x7013, 0x0829, 0x2f10, 0x7222, 0x7027, 0xffff, 0x0005,
17158 +       0x00d6, 0x0096, 0x0081, 0x7814, 0x2048, 0xa890, 0x7002, 0xa88c,
17159 +       0x7006, 0xa8b0, 0x700a, 0xa8ac, 0x700e, 0x60c3, 0x000c, 0x009e,
17160 +       0x00de, 0x0804, 0x8b24, 0x6813, 0x0008, 0xb810, 0x9085, 0x0500,
17161 +       0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6874, 0x700a, 0x6878,
17162 +       0x700e, 0x7013, 0x0889, 0x080c, 0x8b12, 0x721a, 0x7a08, 0x7222,
17163 +       0x2f10, 0x7226, 0x2071, 0x024c, 0x0005, 0x00d6, 0x0096, 0x080c,
17164 +       0x892d, 0x7814, 0x2048, 0x080c, 0xb0ab, 0x1130, 0x7814, 0x9084,
17165 +       0x0700, 0x8007, 0x0033, 0x0010, 0x9006, 0x001b, 0x009e, 0x00de,
17166 +       0x0005, 0x884b, 0x88b4, 0x88c4, 0x88ea, 0x88f6, 0x8907, 0x890f,
17167 +       0x8849, 0x080c, 0x0d84, 0x0016, 0x0036, 0xa97c, 0x918c, 0x0003,
17168 +       0x0118, 0x9186, 0x0003, 0x1198, 0xaba8, 0x7824, 0xd0cc, 0x1168,
17169 +       0x7316, 0xa898, 0x701a, 0xa894, 0x701e, 0x003e, 0x001e, 0x2001,
17170 +       0x197e, 0x2004, 0x60c2, 0x0804, 0x8b24, 0xc3e5, 0x0c88, 0x9186,
17171 +       0x0001, 0x190c, 0x0d84, 0xaba8, 0x7824, 0xd0cc, 0x1904, 0x88b1,
17172 +       0x7316, 0xa898, 0x701a, 0xa894, 0x701e, 0xa8a4, 0x7026, 0xa8ac,
17173 +       0x702e, 0x2009, 0x0018, 0x9384, 0x0300, 0x0570, 0xd3c4, 0x0110,
17174 +       0xa8ac, 0x9108, 0xd3cc, 0x0110, 0xa8a4, 0x9108, 0x6810, 0x9085,
17175 +       0x0010, 0x6812, 0x2011, 0x0258, 0x20e9, 0x0000, 0x22a0, 0x0156,
17176 +       0x20a9, 0x0008, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x002c, 0x2098,
17177 +       0x4003, 0x6810, 0x8000, 0x6812, 0x2011, 0x0240, 0x22a0, 0x20a9,
17178 +       0x0005, 0x4003, 0x6810, 0xc084, 0x6812, 0x015e, 0x9184, 0x0003,
17179 +       0x0118, 0x2019, 0x0245, 0x201a, 0x61c2, 0x003e, 0x001e, 0x0804,
17180 +       0x8b24, 0xc3e5, 0x0804, 0x8870, 0x2011, 0x0008, 0x2001, 0x180e,
17181 +       0x2004, 0xd0a4, 0x0110, 0x2011, 0x0028, 0x7824, 0xd0cc, 0x1110,
17182 +       0x7216, 0x0470, 0x0ce8, 0xc2e5, 0x2011, 0x0302, 0x0016, 0x782c,
17183 +       0x701a, 0x7930, 0x711e, 0x9105, 0x0108, 0xc2dd, 0x001e, 0x7824,
17184 +       0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x7027, 0x0012, 0x702f, 0x0008,
17185 +       0x7043, 0x7000, 0x7047, 0x0500, 0x704f, 0x000a, 0x2069, 0x0200,
17186 +       0x6813, 0x0009, 0x2071, 0x0240, 0x700b, 0x2500, 0x60c3, 0x0032,
17187 +       0x0804, 0x8b24, 0x2011, 0x0028, 0x7824, 0xd0cc, 0x1128, 0x7216,
17188 +       0x60c3, 0x0018, 0x0804, 0x8b24, 0x0cd0, 0xc2e5, 0x2011, 0x0100,
17189 +       0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x702f, 0x0008, 0x7858,
17190 +       0x9084, 0x00ff, 0x7036, 0x60c3, 0x0020, 0x0804, 0x8b24, 0x2011,
17191 +       0x0008, 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x0c08, 0x0036,
17192 +       0x7b14, 0x9384, 0xff00, 0x7816, 0x9384, 0x00ff, 0x8001, 0x1138,
17193 +       0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x003e, 0x0888, 0x0046,
17194 +       0x2021, 0x0800, 0x0006, 0x7824, 0xd0cc, 0x000e, 0x0108, 0xc4e5,
17195 +       0x7416, 0x004e, 0x701e, 0x003e, 0x0818, 0x00d6, 0x6813, 0x0008,
17196 +       0xb810, 0x9085, 0x0700, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800,
17197 +       0x6874, 0x700a, 0x6878, 0x700e, 0x7824, 0xd0cc, 0x1168, 0x7013,
17198 +       0x0898, 0x080c, 0x8b12, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226,
17199 +       0x2071, 0x024c, 0x00de, 0x0005, 0x7013, 0x0889, 0x0c90, 0x0016,
17200 +       0x7814, 0x9084, 0x0700, 0x8007, 0x0013, 0x001e, 0x0005, 0x895f,
17201 +       0x895f, 0x8961, 0x895f, 0x895f, 0x895f, 0x897b, 0x895f, 0x080c,
17202 +       0x0d84, 0x7914, 0x918c, 0x08ff, 0x918d, 0xf600, 0x7916, 0x2009,
17203 +       0x0003, 0x00b9, 0x2069, 0x1852, 0x6804, 0xd0bc, 0x0130, 0x682c,
17204 +       0x9084, 0x00ff, 0x8007, 0x7032, 0x0010, 0x7033, 0x3f00, 0x60c3,
17205 +       0x0001, 0x0804, 0x8b24, 0x2009, 0x0003, 0x0019, 0x7033, 0x7f00,
17206 +       0x0cb0, 0x0016, 0x080c, 0x9363, 0x001e, 0xb810, 0x9085, 0x0100,
17207 +       0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6a74, 0x720a, 0x6a78,
17208 +       0x720e, 0x7013, 0x0888, 0x918d, 0x0008, 0x7116, 0x080c, 0x8b12,
17209 +       0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, 0x0005, 0x00b6, 0x0096,
17210 +       0x00e6, 0x00d6, 0x00c6, 0x0056, 0x0046, 0x0036, 0x2061, 0x0100,
17211 +       0x2071, 0x1800, 0x7158, 0x7810, 0x2058, 0xb8a0, 0x2028, 0xb910,
17212 +       0xba14, 0x7374, 0x7478, 0x7820, 0x90be, 0x0006, 0x0904, 0x8a81,
17213 +       0x90be, 0x000a, 0x1904, 0x8a3d, 0x609f, 0x0000, 0x7814, 0x2048,
17214 +       0xa87c, 0xd0fc, 0x05c8, 0xaf90, 0x9784, 0xff00, 0x9105, 0x6062,
17215 +       0x873f, 0x9784, 0xff00, 0x0006, 0x7814, 0x2048, 0xa878, 0x9005,
17216 +       0x000e, 0x1160, 0xaf94, 0x87ff, 0x0510, 0x2039, 0x0098, 0x9705,
17217 +       0x6072, 0x7808, 0x6082, 0x2f00, 0x6086, 0x0038, 0x9185, 0x2200,
17218 +       0x6062, 0x6073, 0x0129, 0x6077, 0x0000, 0x609f, 0x0000, 0x2001,
17219 +       0x1836, 0x2004, 0xd0ac, 0x11a8, 0xd09c, 0x0130, 0x7814, 0x2048,
17220 +       0xa874, 0x9082, 0x0080, 0x1268, 0xb814, 0x609e, 0x0050, 0x2039,
17221 +       0x0029, 0x9705, 0x6072, 0x0c48, 0x9185, 0x0200, 0x6062, 0x6073,
17222 +       0x2029, 0xa87c, 0xd0fc, 0x0118, 0xaf94, 0x87ff, 0x1120, 0x2f00,
17223 +       0x6082, 0x7808, 0x6086, 0x6266, 0x636a, 0x646e, 0x6077, 0x0000,
17224 +       0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, 0x607f,
17225 +       0x0000, 0xa838, 0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, 0xa844,
17226 +       0x60ca, 0xb86c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x080c,
17227 +       0x9348, 0x2009, 0x07d0, 0x60c4, 0x9084, 0xfff0, 0x9005, 0x0110,
17228 +       0x2009, 0x1b58, 0x080c, 0x7898, 0x003e, 0x004e, 0x005e, 0x00ce,
17229 +       0x00de, 0x00ee, 0x009e, 0x00be, 0x0005, 0x7804, 0x9086, 0x0040,
17230 +       0x0904, 0x8abd, 0x9185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e,
17231 +       0x6073, 0x0809, 0x6077, 0x0008, 0x60af, 0x95d5, 0x60d7, 0x0000,
17232 +       0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, 0x607f,
17233 +       0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7814, 0x2048, 0xa838,
17234 +       0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, 0xa844, 0x60ca, 0xb86c,
17235 +       0x60ce, 0xbab0, 0x629e, 0x080c, 0x9348, 0x2009, 0x07d0, 0x60c4,
17236 +       0x9084, 0xfff0, 0x9005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x7898,
17237 +       0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x009e, 0x00be,
17238 +       0x0005, 0x7814, 0x2048, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002,
17239 +       0x0904, 0x8ad9, 0x9185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e,
17240 +       0x6073, 0x0880, 0x6077, 0x0008, 0xb88c, 0x8000, 0x9084, 0x00ff,
17241 +       0xb88e, 0x8007, 0x607a, 0x7838, 0x607e, 0x2f00, 0x6086, 0x7808,
17242 +       0x6082, 0xa890, 0x608a, 0xa88c, 0x608e, 0xa8b0, 0x60c6, 0xa8ac,
17243 +       0x60ca, 0xa8ac, 0x7930, 0x9108, 0x7932, 0xa8b0, 0x792c, 0x9109,
17244 +       0x792e, 0xb86c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xbab0,
17245 +       0x629e, 0x080c, 0x9325, 0x0804, 0x8a6d, 0xb8bc, 0xd084, 0x0148,
17246 +       0xb88c, 0x7814, 0x2048, 0xb88c, 0x7846, 0xa836, 0x2900, 0xa83a,
17247 +       0xb04a, 0x9185, 0x0600, 0x6062, 0x6266, 0x636a, 0x646e, 0x6073,
17248 +       0x0829, 0x6077, 0x0000, 0x60af, 0x9575, 0x60d7, 0x0000, 0x0804,
17249 +       0x8a50, 0x9185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x7824,
17250 +       0xd0cc, 0x7826, 0x0118, 0x6073, 0x0889, 0x0010, 0x6073, 0x0898,
17251 +       0x6077, 0x0000, 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007,
17252 +       0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0xa838,
17253 +       0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, 0xa844, 0x60ca, 0xb86c,
17254 +       0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xbab0, 0x629e, 0x7824,
17255 +       0xd0cc, 0x0120, 0x080c, 0x9348, 0x0804, 0x8a6d, 0x080c, 0x9325,
17256 +       0x0804, 0x8a6d, 0x7a10, 0x00b6, 0x2258, 0xba8c, 0x8210, 0x9294,
17257 +       0x00ff, 0xba8e, 0x00be, 0x8217, 0x0005, 0x00d6, 0x2069, 0x19b4,
17258 +       0x6843, 0x0001, 0x00de, 0x0005, 0x60a3, 0x0056, 0x60a7, 0x9575,
17259 +       0x00f1, 0x080c, 0x788a, 0x0005, 0x0016, 0x2001, 0x180c, 0x200c,
17260 +       0x9184, 0x0600, 0x9086, 0x0600, 0x0128, 0x0089, 0x080c, 0x788a,
17261 +       0x001e, 0x0005, 0xc1e5, 0x2001, 0x180c, 0x2102, 0x2001, 0x19b5,
17262 +       0x2003, 0x0000, 0x2001, 0x19bd, 0x2003, 0x0000, 0x0c88, 0x0006,
17263 +       0x6014, 0x9084, 0x1804, 0x9085, 0x0009, 0x6016, 0x000e, 0x0005,
17264 +       0x0016, 0x00c6, 0x0006, 0x2061, 0x0100, 0x61a4, 0x60a7, 0x95f5,
17265 +       0x6014, 0x9084, 0x1804, 0x9085, 0x0008, 0x6016, 0x000e, 0xa001,
17266 +       0xa001, 0xa001, 0x61a6, 0x00ce, 0x001e, 0x0005, 0x00c6, 0x00d6,
17267 +       0x0016, 0x0026, 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x6877,
17268 +       0x1198, 0x2001, 0x19d0, 0x2004, 0x9005, 0x15d0, 0x0066, 0x2031,
17269 +       0x0001, 0x080c, 0x691e, 0x006e, 0x1118, 0x080c, 0x788a, 0x0480,
17270 +       0x00c6, 0x2061, 0x19b4, 0x00f0, 0x6904, 0x9194, 0x4000, 0x0568,
17271 +       0x0839, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5,
17272 +       0x00c6, 0x2061, 0x19b4, 0x6128, 0x9192, 0x00c8, 0x1258, 0x8108,
17273 +       0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, 0x080c, 0x788a, 0x080c,
17274 +       0x8b47, 0x0070, 0x6124, 0x91e5, 0x0000, 0x0140, 0x080c, 0xcd1f,
17275 +       0x080c, 0x7893, 0x2009, 0x0014, 0x080c, 0x95ce, 0x00ce, 0x0000,
17276 +       0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, 0x19d0, 0x2004,
17277 +       0x9005, 0x1db0, 0x00c6, 0x2061, 0x19b4, 0x6128, 0x9192, 0x0003,
17278 +       0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, 0x788a, 0x080c, 0x55a0,
17279 +       0x0c38, 0x0096, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, 0x080c,
17280 +       0x78a0, 0x2071, 0x19b4, 0x713c, 0x81ff, 0x0904, 0x8c3c, 0x2061,
17281 +       0x0100, 0x2069, 0x0140, 0x080c, 0x6877, 0x11b0, 0x0036, 0x2019,
17282 +       0x0002, 0x080c, 0x8dfe, 0x003e, 0x713c, 0x2160, 0x080c, 0xcd1f,
17283 +       0x2009, 0x004a, 0x080c, 0x95ce, 0x0066, 0x2031, 0x0001, 0x080c,
17284 +       0x691e, 0x006e, 0x0804, 0x8c3c, 0x6904, 0xd1f4, 0x0904, 0x8c43,
17285 +       0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x00c6,
17286 +       0x703c, 0x9065, 0x090c, 0x0d84, 0x6020, 0x00ce, 0x9086, 0x0006,
17287 +       0x1528, 0x61c8, 0x60c4, 0x9105, 0x1508, 0x2009, 0x180c, 0x2104,
17288 +       0xd0d4, 0x01e0, 0x6214, 0x9294, 0x1800, 0x1128, 0x6224, 0x9294,
17289 +       0x0002, 0x1510, 0x0030, 0xc0d4, 0x200a, 0xd0cc, 0x0110, 0x080c,
17290 +       0x2809, 0x6014, 0x9084, 0xe7fd, 0x9085, 0x0010, 0x6016, 0x703c,
17291 +       0x2060, 0x2009, 0x0049, 0x080c, 0x95ce, 0x0070, 0x0036, 0x2019,
17292 +       0x0001, 0x080c, 0x8dfe, 0x003e, 0x713c, 0x2160, 0x080c, 0xcd1f,
17293 +       0x2009, 0x004a, 0x080c, 0x95ce, 0x002e, 0x001e, 0x00ee, 0x00de,
17294 +       0x00ce, 0x009e, 0x0005, 0xd1ec, 0x1904, 0x8bf8, 0x0804, 0x8bff,
17295 +       0x0026, 0x00e6, 0x2071, 0x19b4, 0x7048, 0xd084, 0x01c0, 0x713c,
17296 +       0x81ff, 0x01a8, 0x2071, 0x0100, 0x9188, 0x0008, 0x2114, 0x928e,
17297 +       0x0006, 0x1138, 0x7014, 0x9084, 0x1984, 0x9085, 0x0012, 0x7016,
17298 +       0x0030, 0x7014, 0x9084, 0x1984, 0x9085, 0x0016, 0x7016, 0x00ee,
17299 +       0x002e, 0x0005, 0x00b6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056,
17300 +       0x0046, 0x0006, 0x0126, 0x2091, 0x8000, 0x6010, 0x2058, 0xbca0,
17301 +       0x2071, 0x19b4, 0x7018, 0x2058, 0x8bff, 0x0190, 0xb8a0, 0x9406,
17302 +       0x0118, 0xb854, 0x2058, 0x0cc0, 0x6014, 0x0096, 0x2048, 0xac6c,
17303 +       0xad70, 0xae78, 0x009e, 0x080c, 0x5d3f, 0x0110, 0x9085, 0x0001,
17304 +       0x012e, 0x000e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee,
17305 +       0x00be, 0x0005, 0x080c, 0x8642, 0x7003, 0x1200, 0x7820, 0x9086,
17306 +       0x0004, 0x1110, 0x6098, 0x0018, 0x2001, 0x1816, 0x2004, 0x700e,
17307 +       0x7838, 0x7012, 0x783c, 0x7016, 0x60c3, 0x002c, 0x0804, 0x8b24,
17308 +       0x080c, 0x8642, 0x7003, 0x0f00, 0x7808, 0x700e, 0x60c3, 0x0008,
17309 +       0x0804, 0x8b24, 0x0156, 0x080c, 0x868d, 0x7003, 0x0200, 0x2011,
17310 +       0x1848, 0x63f0, 0x2312, 0x20a9, 0x0006, 0x2011, 0x1840, 0x2019,
17311 +       0x1841, 0x9ef0, 0x0002, 0x2376, 0x8e70, 0x2276, 0x8e70, 0x9398,
17312 +       0x0002, 0x9290, 0x0002, 0x1f04, 0x8ccb, 0x60c3, 0x001c, 0x015e,
17313 +       0x0804, 0x8b24, 0x0016, 0x0026, 0x080c, 0x8669, 0x080c, 0x867b,
17314 +       0x9e80, 0x0004, 0x20e9, 0x0000, 0x20a0, 0x7814, 0x0096, 0x2048,
17315 +       0xa800, 0x2048, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098,
17316 +       0x009e, 0x7808, 0x9088, 0x0002, 0x21a8, 0x9192, 0x0010, 0x1250,
17317 +       0x4003, 0x9080, 0x0004, 0x8003, 0x60c2, 0x080c, 0x8b24, 0x002e,
17318 +       0x001e, 0x0005, 0x20a9, 0x0010, 0x4003, 0x080c, 0x934e, 0x20a1,
17319 +       0x0240, 0x22a8, 0x4003, 0x0c68, 0x080c, 0x8642, 0x7003, 0x6200,
17320 +       0x7808, 0x700e, 0x60c3, 0x0008, 0x0804, 0x8b24, 0x0016, 0x0026,
17321 +       0x080c, 0x8642, 0x20e9, 0x0000, 0x20a1, 0x024c, 0x7814, 0x0096,
17322 +       0x2048, 0xa800, 0x2048, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021,
17323 +       0x2098, 0x009e, 0x7808, 0x9088, 0x0002, 0x21a8, 0x4003, 0x8003,
17324 +       0x60c2, 0x080c, 0x8b24, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00c6,
17325 +       0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b4, 0x700c, 0x2060,
17326 +       0x8cff, 0x0178, 0x080c, 0xb295, 0x1110, 0x080c, 0x9e99, 0x600c,
17327 +       0x0006, 0x080c, 0xb4de, 0x080c, 0x9554, 0x080c, 0x8eec, 0x00ce,
17328 +       0x0c78, 0x2c00, 0x700e, 0x700a, 0x012e, 0x000e, 0x00ce, 0x00ee,
17329 +       0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026,
17330 +       0x0016, 0x0006, 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c,
17331 +       0xe7ff, 0x2102, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x19b4,
17332 +       0x7024, 0x2060, 0x8cff, 0x0904, 0x8db6, 0x080c, 0x8b50, 0x6ac0,
17333 +       0x68c3, 0x0000, 0x080c, 0x7893, 0x00c6, 0x2061, 0x0100, 0x080c,
17334 +       0x9367, 0x00ce, 0x2009, 0x0013, 0x080c, 0x95ce, 0x20a9, 0x01f4,
17335 +       0x6824, 0xd094, 0x0170, 0x6827, 0x0004, 0x7804, 0x9084, 0x4000,
17336 +       0x01d0, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5,
17337 +       0x0090, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, 0x8d88,
17338 +       0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5,
17339 +       0x9006, 0x080c, 0x28a5, 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce,
17340 +       0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001, 0x1800,
17341 +       0x2004, 0x9096, 0x0001, 0x05c0, 0x9096, 0x0004, 0x05a8, 0x080c,
17342 +       0x7893, 0x6814, 0x9084, 0x0001, 0x0110, 0x68a7, 0x95f5, 0x6817,
17343 +       0x0008, 0x68c3, 0x0000, 0x2011, 0x554d, 0x080c, 0x781a, 0x20a9,
17344 +       0x01f4, 0x6824, 0xd094, 0x0170, 0x6827, 0x0004, 0x7804, 0x9084,
17345 +       0x4000, 0x01d0, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c,
17346 +       0x28a5, 0x0090, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04,
17347 +       0x8dd1, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c,
17348 +       0x28a5, 0x9006, 0x080c, 0x28a5, 0x000e, 0x001e, 0x002e, 0x00ce,
17349 +       0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x0126, 0x0156,
17350 +       0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091,
17351 +       0x8000, 0x2001, 0x180c, 0x200c, 0x918c, 0xdbff, 0x2102, 0x2069,
17352 +       0x0100, 0x2079, 0x0140, 0x2071, 0x19b4, 0x703c, 0x2060, 0x8cff,
17353 +       0x0904, 0x8e8f, 0x9386, 0x0002, 0x1128, 0x6814, 0x9084, 0x0002,
17354 +       0x0904, 0x8e8f, 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, 0x00fa,
17355 +       0x8109, 0x1df0, 0x69c6, 0x68cb, 0x0008, 0x080c, 0x78a0, 0x080c,
17356 +       0x1c4f, 0x0046, 0x2009, 0x017f, 0x200b, 0x00a5, 0x2021, 0x0169,
17357 +       0x2404, 0x9084, 0x000f, 0x9086, 0x0004, 0x11f8, 0x68af, 0x95f5,
17358 +       0x68c6, 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0090, 0x2071,
17359 +       0x1a33, 0x6814, 0x9084, 0x1984, 0x9085, 0x0012, 0x6816, 0x782b,
17360 +       0x0008, 0x7003, 0x0000, 0x00fe, 0x00ee, 0x9386, 0x0002, 0x1128,
17361 +       0x7884, 0x9005, 0x1110, 0x7887, 0x0001, 0x2001, 0x194e, 0x2004,
17362 +       0x200a, 0x004e, 0x939d, 0x0000, 0x1120, 0x2009, 0x0049, 0x080c,
17363 +       0x95ce, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0170, 0x6827, 0x0004,
17364 +       0x7804, 0x9084, 0x4000, 0x01d0, 0x2001, 0x1000, 0x080c, 0x28a5,
17365 +       0x9006, 0x080c, 0x28a5, 0x0090, 0xd08c, 0x0118, 0x6827, 0x0002,
17366 +       0x0010, 0x1f04, 0x8e6b, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001,
17367 +       0x0100, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x6824, 0x000e,
17368 +       0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e,
17369 +       0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0x19b4, 0x6a06,
17370 +       0x012e, 0x00de, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069,
17371 +       0x19b4, 0x6a32, 0x012e, 0x00de, 0x0005, 0x080c, 0x87dc, 0x7814,
17372 +       0x080c, 0x4df2, 0x0108, 0x782c, 0x7032, 0x7042, 0x7047, 0x1000,
17373 +       0x0478, 0x080c, 0x87dc, 0x7814, 0x080c, 0x4df2, 0x0108, 0x782c,
17374 +       0x7032, 0x7042, 0x7047, 0x4000, 0x0418, 0x080c, 0x87dc, 0x7814,
17375 +       0x080c, 0x4df2, 0x0108, 0x782c, 0x7032, 0x7042, 0x7047, 0x2000,
17376 +       0x00b8, 0x080c, 0x87dc, 0x7814, 0x080c, 0x4df2, 0x0108, 0x782c,
17377 +       0x7032, 0x7042, 0x7047, 0x0400, 0x0058, 0x080c, 0x87dc, 0x7814,
17378 +       0x080c, 0x4df2, 0x0108, 0x782c, 0x7032, 0x7042, 0x7047, 0x0200,
17379 +       0x60c3, 0x0020, 0x0804, 0x8b24, 0x00e6, 0x2071, 0x19b4, 0x7020,
17380 +       0x9005, 0x0110, 0x8001, 0x7022, 0x00ee, 0x0005, 0x00f6, 0x00e6,
17381 +       0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006, 0x0126, 0x2091, 0x8000,
17382 +       0x2071, 0x19b4, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001, 0x87ff,
17383 +       0x0904, 0x8f8a, 0x8cff, 0x0904, 0x8f8a, 0x6020, 0x9086, 0x0006,
17384 +       0x1904, 0x8f85, 0x88ff, 0x0138, 0x2800, 0x9c06, 0x1904, 0x8f85,
17385 +       0x2039, 0x0000, 0x0050, 0x6010, 0x9b06, 0x1904, 0x8f85, 0x85ff,
17386 +       0x0120, 0x6054, 0x9106, 0x1904, 0x8f85, 0x7024, 0x9c06, 0x1578,
17387 +       0x2069, 0x0100, 0x68c0, 0x9005, 0x0530, 0x080c, 0x7893, 0x6820,
17388 +       0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000,
17389 +       0x080c, 0x900f, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04,
17390 +       0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006,
17391 +       0x080c, 0x28a5, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827,
17392 +       0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x0470, 0x7014,
17393 +       0x9c36, 0x1110, 0x660c, 0x7616, 0x7010, 0x9c36, 0x1140, 0x2c00,
17394 +       0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c,
17395 +       0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x89ff,
17396 +       0x1168, 0x600f, 0x0000, 0x6014, 0x0096, 0x2048, 0x080c, 0xb0ab,
17397 +       0x0110, 0x080c, 0xc970, 0x009e, 0x080c, 0x9584, 0x080c, 0x8eec,
17398 +       0x88ff, 0x1190, 0x00ce, 0x0804, 0x8f07, 0x2c78, 0x600c, 0x2060,
17399 +       0x0804, 0x8f07, 0x9006, 0x012e, 0x000e, 0x006e, 0x007e, 0x00ce,
17400 +       0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, 0x0000, 0x00ce, 0x98c5,
17401 +       0x0001, 0x0c88, 0x00f6, 0x00e6, 0x00d6, 0x0096, 0x00c6, 0x0066,
17402 +       0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b4, 0x7638,
17403 +       0x2660, 0x2678, 0x8cff, 0x0904, 0x8ffe, 0x6020, 0x9086, 0x0006,
17404 +       0x1904, 0x8ff9, 0x87ff, 0x0128, 0x2700, 0x9c06, 0x1904, 0x8ff9,
17405 +       0x0040, 0x6010, 0x9b06, 0x15e8, 0x85ff, 0x0118, 0x6054, 0x9106,
17406 +       0x15c0, 0x703c, 0x9c06, 0x1168, 0x0036, 0x2019, 0x0001, 0x080c,
17407 +       0x8dfe, 0x7033, 0x0000, 0x9006, 0x703e, 0x7042, 0x7046, 0x704a,
17408 +       0x003e, 0x7038, 0x9c36, 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36,
17409 +       0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037,
17410 +       0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008,
17411 +       0x2678, 0x600f, 0x0000, 0x6014, 0x2048, 0x080c, 0xb0ab, 0x0110,
17412 +       0x080c, 0xc970, 0x080c, 0x9584, 0x87ff, 0x1198, 0x00ce, 0x0804,
17413 +       0x8faa, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8faa, 0x9006, 0x012e,
17414 +       0x000e, 0x002e, 0x006e, 0x00ce, 0x009e, 0x00de, 0x00ee, 0x00fe,
17415 +       0x0005, 0x601b, 0x0000, 0x00ce, 0x97bd, 0x0001, 0x0c80, 0x00e6,
17416 +       0x2071, 0x19b4, 0x2001, 0x1800, 0x2004, 0x9086, 0x0002, 0x1118,
17417 +       0x7007, 0x0005, 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6,
17418 +       0x00e6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000,
17419 +       0x2071, 0x19b4, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0518,
17420 +       0x2200, 0x9c06, 0x11e0, 0x7038, 0x9c36, 0x1110, 0x660c, 0x763a,
17421 +       0x7034, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7036,
17422 +       0x0010, 0x7037, 0x0000, 0x660c, 0x2c00, 0x9f06, 0x0110, 0x7e0e,
17423 +       0x0008, 0x2678, 0x600f, 0x0000, 0x9085, 0x0001, 0x0020, 0x2c78,
17424 +       0x600c, 0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce,
17425 +       0x00ee, 0x00fe, 0x0005, 0x0096, 0x00f6, 0x00e6, 0x00d6, 0x00c6,
17426 +       0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b4,
17427 +       0x760c, 0x2660, 0x2678, 0x8cff, 0x0904, 0x90eb, 0x6010, 0x00b6,
17428 +       0x2058, 0xb8a0, 0x00be, 0x9206, 0x1904, 0x90e6, 0x7024, 0x9c06,
17429 +       0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0x90c2, 0x080c,
17430 +       0x8b50, 0x68c3, 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x0036,
17431 +       0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100,
17432 +       0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x2069, 0x0100, 0x6824,
17433 +       0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, 0x9c36, 0x1110,
17434 +       0x660c, 0x760e, 0x7008, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118,
17435 +       0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, 0x0066, 0x2c00,
17436 +       0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c,
17437 +       0xb284, 0x1158, 0x080c, 0x2d3f, 0x080c, 0xb295, 0x11f0, 0x080c,
17438 +       0x9e99, 0x00d8, 0x080c, 0x900f, 0x08c0, 0x080c, 0xb295, 0x1118,
17439 +       0x080c, 0x9e99, 0x0090, 0x6014, 0x2048, 0x080c, 0xb0ab, 0x0168,
17440 +       0x6020, 0x9086, 0x0003, 0x1508, 0xa867, 0x0103, 0xab7a, 0xa877,
17441 +       0x0000, 0x080c, 0x61a9, 0x080c, 0xb278, 0x080c, 0xb4de, 0x080c,
17442 +       0x9584, 0x080c, 0x8eec, 0x00ce, 0x0804, 0x906b, 0x2c78, 0x600c,
17443 +       0x2060, 0x0804, 0x906b, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce,
17444 +       0x00de, 0x00ee, 0x00fe, 0x009e, 0x0005, 0x6020, 0x9086, 0x0006,
17445 +       0x1d20, 0x080c, 0xc970, 0x0c08, 0x00d6, 0x080c, 0x868d, 0x7003,
17446 +       0x0200, 0x7007, 0x0014, 0x60c3, 0x0014, 0x20e1, 0x0001, 0x2099,
17447 +       0x1956, 0x20e9, 0x0000, 0x20a1, 0x0250, 0x20a9, 0x0004, 0x4003,
17448 +       0x7023, 0x0004, 0x7027, 0x7878, 0x080c, 0x8b24, 0x00de, 0x0005,
17449 +       0x080c, 0x868d, 0x7003, 0x0214, 0x7007, 0x0018, 0x700b, 0x0800,
17450 +       0x7814, 0x9084, 0xff00, 0x700e, 0x7814, 0x9084, 0x00ff, 0x7022,
17451 +       0x782c, 0x7026, 0x60c3, 0x0018, 0x0804, 0x8b24, 0x00b6, 0x00d6,
17452 +       0x0016, 0x00d6, 0x2f68, 0x2009, 0x0035, 0x080c, 0xb6d9, 0x00de,
17453 +       0x1904, 0x9192, 0x080c, 0x8642, 0x7003, 0x1300, 0x782c, 0x080c,
17454 +       0x9294, 0x2068, 0x6820, 0x9086, 0x0003, 0x0558, 0x7810, 0x2058,
17455 +       0xbaa0, 0x080c, 0x94d3, 0x11d0, 0x9286, 0x007e, 0x1128, 0x700b,
17456 +       0x00ff, 0x700f, 0xfffe, 0x0490, 0x9286, 0x007f, 0x1128, 0x700b,
17457 +       0x00ff, 0x700f, 0xfffd, 0x0450, 0xd2bc, 0x0180, 0x9286, 0x0080,
17458 +       0x1128, 0x700b, 0x00ff, 0x700f, 0xfffc, 0x0400, 0x92d8, 0x1000,
17459 +       0x2b5c, 0xb810, 0x700a, 0xb814, 0x700e, 0x00c0, 0x6098, 0x700e,
17460 +       0x00a8, 0x080c, 0x94d3, 0x1130, 0x7810, 0x2058, 0xb8a0, 0x9082,
17461 +       0x007e, 0x0250, 0x00d6, 0x2069, 0x181d, 0x2d04, 0x700a, 0x8d68,
17462 +       0x2d04, 0x700e, 0x00de, 0x0010, 0x6034, 0x700e, 0x7838, 0x7012,
17463 +       0x783c, 0x7016, 0x60c3, 0x000c, 0x001e, 0x00de, 0x080c, 0x8b24,
17464 +       0x00be, 0x0005, 0x781b, 0x0001, 0x7803, 0x0006, 0x001e, 0x00de,
17465 +       0x00be, 0x0005, 0x792c, 0x9180, 0x0008, 0x200c, 0x9186, 0x0006,
17466 +       0x01c0, 0x9186, 0x0003, 0x0904, 0x920c, 0x9186, 0x0005, 0x0904,
17467 +       0x91f5, 0x9186, 0x0004, 0x05d8, 0x9186, 0x0008, 0x0904, 0x91fd,
17468 +       0x7807, 0x0037, 0x782f, 0x0003, 0x7817, 0x1700, 0x080c, 0x9271,
17469 +       0x0005, 0x080c, 0x9232, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009,
17470 +       0x4000, 0x6800, 0x0002, 0x91d6, 0x91e1, 0x91d8, 0x91e1, 0x91dd,
17471 +       0x91d6, 0x91d6, 0x91e1, 0x91e1, 0x91e1, 0x91e1, 0x91d6, 0x91d6,
17472 +       0x91d6, 0x91d6, 0x91d6, 0x91e1, 0x91d6, 0x91e1, 0x080c, 0x0d84,
17473 +       0x6824, 0xd0e4, 0x0110, 0xd0cc, 0x0110, 0x900e, 0x0010, 0x2009,
17474 +       0x2000, 0x682c, 0x7022, 0x6830, 0x7026, 0x0804, 0x922b, 0x080c,
17475 +       0x9232, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x6a00,
17476 +       0x9286, 0x0002, 0x1108, 0x900e, 0x04b0, 0x04e1, 0x00d6, 0x0026,
17477 +       0x792c, 0x2168, 0x2009, 0x4000, 0x0470, 0x04a1, 0x00d6, 0x0026,
17478 +       0x792c, 0x2168, 0x2009, 0x4000, 0x9286, 0x0005, 0x0118, 0x9286,
17479 +       0x0002, 0x1108, 0x900e, 0x00f8, 0x0429, 0x00d6, 0x0026, 0x792c,
17480 +       0x2168, 0x6814, 0x0096, 0x2048, 0xa9ac, 0xa834, 0x9112, 0xa9b0,
17481 +       0xa838, 0x009e, 0x9103, 0x7022, 0x7226, 0x792c, 0x9180, 0x0000,
17482 +       0x2004, 0x908e, 0x0002, 0x0130, 0x908e, 0x0004, 0x0118, 0x2009,
17483 +       0x4000, 0x0008, 0x900e, 0x712a, 0x60c3, 0x0018, 0x002e, 0x00de,
17484 +       0x0804, 0x8b24, 0x00b6, 0x0036, 0x0046, 0x0056, 0x0066, 0x080c,
17485 +       0x868d, 0x9006, 0x7003, 0x0200, 0x7938, 0x710a, 0x793c, 0x710e,
17486 +       0x7810, 0x2058, 0xb8a0, 0x080c, 0x94d3, 0x1118, 0x9092, 0x007e,
17487 +       0x0268, 0x00d6, 0x2069, 0x181d, 0x2d2c, 0x8d68, 0x2d34, 0x90d8,
17488 +       0x1000, 0x2b5c, 0xbb10, 0xbc14, 0x00de, 0x0028, 0x901e, 0x6498,
17489 +       0x2029, 0x0000, 0x6634, 0x782c, 0x9080, 0x0008, 0x2004, 0x9086,
17490 +       0x0003, 0x1128, 0x7512, 0x7616, 0x731a, 0x741e, 0x0020, 0x7312,
17491 +       0x7416, 0x751a, 0x761e, 0x006e, 0x005e, 0x004e, 0x003e, 0x00be,
17492 +       0x0005, 0x080c, 0x868d, 0x7003, 0x0100, 0x782c, 0x700a, 0x7814,
17493 +       0x700e, 0x700e, 0x60c3, 0x0008, 0x0804, 0x8b24, 0x080c, 0x8639,
17494 +       0x7003, 0x1400, 0x7838, 0x700a, 0x0079, 0x783c, 0x700e, 0x782c,
17495 +       0x7012, 0x7830, 0x7016, 0x7834, 0x9084, 0x00ff, 0x8007, 0x701a,
17496 +       0x60c3, 0x0010, 0x0804, 0x8b24, 0x00e6, 0x2071, 0x0240, 0x0006,
17497 +       0x00f6, 0x2078, 0x7810, 0x00b6, 0x2058, 0xb8bc, 0xd084, 0x0120,
17498 +       0x7848, 0x702a, 0x7844, 0x702e, 0x00be, 0x00fe, 0x000e, 0x00ee,
17499 +       0x0005, 0x080c, 0x8684, 0x7003, 0x0100, 0x782c, 0x700a, 0x7814,
17500 +       0x700e, 0x60c3, 0x0008, 0x0804, 0x8b24, 0x0021, 0x60c3, 0x0000,
17501 +       0x0804, 0x8b24, 0x00d6, 0x080c, 0x9363, 0xb810, 0x9085, 0x0300,
17502 +       0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6874, 0x700a, 0x6878,
17503 +       0x700e, 0x7013, 0x0819, 0x080c, 0x8b12, 0x721a, 0x2f10, 0x7222,
17504 +       0x7a08, 0x7226, 0x2071, 0x024c, 0x00de, 0x0005, 0x0059, 0x7914,
17505 +       0x712a, 0x60c3, 0x0000, 0x60a7, 0x9575, 0x080c, 0x8b47, 0x080c,
17506 +       0x788a, 0x0005, 0x0036, 0x0096, 0x00d6, 0x00e6, 0x7858, 0x2048,
17507 +       0xaa7c, 0x9296, 0x00c0, 0x9294, 0xfffd, 0xaa7e, 0xaa80, 0x9294,
17508 +       0x0300, 0xaa82, 0xa96c, 0x9194, 0x00ff, 0xab74, 0x9384, 0x00ff,
17509 +       0x908d, 0xc200, 0xa96e, 0x9384, 0xff00, 0x9215, 0xaa76, 0xa870,
17510 +       0xaa78, 0xa87a, 0xaa72, 0x00d6, 0x2069, 0x0200, 0x080c, 0x9363,
17511 +       0x00de, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000a, 0xa860,
17512 +       0x20e0, 0xa85c, 0x9080, 0x001b, 0x2098, 0x4003, 0x60a3, 0x0035,
17513 +       0xaa68, 0x9294, 0x7000, 0x9286, 0x3000, 0x0110, 0x60a3, 0x0037,
17514 +       0x00ee, 0x00de, 0x009e, 0x003e, 0x0005, 0x900e, 0x7814, 0x0096,
17515 +       0x2048, 0xa87c, 0xd0fc, 0x01c0, 0x9084, 0x0003, 0x11a8, 0x2001,
17516 +       0x180c, 0x2004, 0xd0bc, 0x0180, 0x7824, 0xd0cc, 0x1168, 0xd0c4,
17517 +       0x1158, 0xa8a8, 0x9005, 0x1140, 0x2001, 0x180c, 0x200c, 0xc1d5,
17518 +       0x2102, 0x2009, 0x197f, 0x210c, 0x009e, 0x918d, 0x0092, 0x0010,
17519 +       0x2009, 0x0096, 0x60ab, 0x0036, 0x6116, 0x0005, 0x2009, 0x0009,
17520 +       0x00a0, 0x2009, 0x000a, 0x0088, 0x2009, 0x000b, 0x0070, 0x2009,
17521 +       0x000c, 0x0058, 0x2009, 0x000d, 0x0040, 0x2009, 0x000e, 0x0028,
17522 +       0x2009, 0x000f, 0x0010, 0x2009, 0x0008, 0x6912, 0x0005, 0x00d6,
17523 +       0x9290, 0x0018, 0x8214, 0x20e9, 0x0000, 0x2069, 0x0200, 0x6813,
17524 +       0x0000, 0x22a8, 0x9284, 0x00e0, 0x0128, 0x20a9, 0x0020, 0x9292,
17525 +       0x0020, 0x0008, 0x9016, 0x20a1, 0x0240, 0x9006, 0x4004, 0x82ff,
17526 +       0x0120, 0x6810, 0x8000, 0x6812, 0x0c60, 0x00de, 0x0005, 0x00d6,
17527 +       0x0096, 0x6014, 0x2048, 0x9006, 0xa836, 0xa83a, 0xa99c, 0xa946,
17528 +       0xa84a, 0x6023, 0x0003, 0x6007, 0x0040, 0x6003, 0x0003, 0x600b,
17529 +       0xffff, 0xa817, 0x0001, 0xa842, 0xa83e, 0x2900, 0xa85a, 0xa813,
17530 +       0x1cdb, 0x080c, 0x7c3a, 0x0126, 0x2091, 0x8000, 0x080c, 0x820b,
17531 +       0x012e, 0x009e, 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6,
17532 +       0x00a6, 0x0096, 0x0066, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b4,
17533 +       0x760c, 0x2660, 0x2678, 0x8cff, 0x0904, 0x9433, 0x7024, 0x9c06,
17534 +       0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0x940a, 0x080c,
17535 +       0x8b50, 0x68c3, 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x0036,
17536 +       0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100,
17537 +       0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x2069, 0x0100, 0x6824,
17538 +       0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, 0x9c36, 0x1110,
17539 +       0x660c, 0x760e, 0x7008, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118,
17540 +       0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, 0x0066, 0x2c00,
17541 +       0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c,
17542 +       0xb284, 0x1158, 0x080c, 0x2d3f, 0x080c, 0xb295, 0x11f0, 0x080c,
17543 +       0x9e99, 0x00d8, 0x080c, 0x900f, 0x08c0, 0x080c, 0xb295, 0x1118,
17544 +       0x080c, 0x9e99, 0x0090, 0x6014, 0x2048, 0x080c, 0xb0ab, 0x0168,
17545 +       0x6020, 0x9086, 0x0003, 0x1520, 0xa867, 0x0103, 0xab7a, 0xa877,
17546 +       0x0000, 0x080c, 0x61a9, 0x080c, 0xb278, 0x080c, 0xb4de, 0x080c,
17547 +       0x9584, 0x080c, 0x8eec, 0x00ce, 0x0804, 0x93bb, 0x2c78, 0x600c,
17548 +       0x2060, 0x0804, 0x93bb, 0x700f, 0x0000, 0x700b, 0x0000, 0x012e,
17549 +       0x006e, 0x009e, 0x00ae, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005,
17550 +       0x6020, 0x9086, 0x0006, 0x1d08, 0x080c, 0xc970, 0x08f0, 0x00d6,
17551 +       0x0156, 0x080c, 0x868d, 0x7a14, 0x82ff, 0x0138, 0x7003, 0x0100,
17552 +       0x700b, 0x0003, 0x60c3, 0x0008, 0x0490, 0x7003, 0x0200, 0x7007,
17553 +       0x0000, 0x2069, 0x1800, 0x901e, 0x6800, 0x9086, 0x0004, 0x1110,
17554 +       0xc38d, 0x0060, 0x080c, 0x6877, 0x1110, 0xc3ad, 0x0008, 0xc3a5,
17555 +       0x6ad8, 0xd29c, 0x1110, 0xd2ac, 0x0108, 0xc39d, 0x730e, 0x2011,
17556 +       0x1848, 0x63f0, 0x2312, 0x20a9, 0x0006, 0x2011, 0x1840, 0x2019,
17557 +       0x1841, 0x2071, 0x0250, 0x2376, 0x8e70, 0x2276, 0x8e70, 0x9398,
17558 +       0x0002, 0x9290, 0x0002, 0x1f04, 0x947b, 0x60c3, 0x0040, 0x080c,
17559 +       0x8b24, 0x015e, 0x00de, 0x0005, 0x0156, 0x080c, 0x868d, 0x7a14,
17560 +       0x82ff, 0x0168, 0x9286, 0xffff, 0x0118, 0x9282, 0x000e, 0x1238,
17561 +       0x7003, 0x0100, 0x700b, 0x0003, 0x60c3, 0x0008, 0x0488, 0x7003,
17562 +       0x0200, 0x7007, 0x001c, 0x700f, 0x0001, 0x2011, 0x198a, 0x2204,
17563 +       0x8007, 0x701a, 0x8210, 0x2204, 0x8007, 0x701e, 0x0421, 0x1120,
17564 +       0xb8a0, 0x9082, 0x007f, 0x0248, 0x2001, 0x181d, 0x2004, 0x7022,
17565 +       0x2001, 0x181e, 0x2004, 0x7026, 0x0030, 0x2001, 0x1816, 0x2004,
17566 +       0x9084, 0x00ff, 0x7026, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099,
17567 +       0x1805, 0x20e9, 0x0000, 0x20a1, 0x0256, 0x4003, 0x60c3, 0x001c,
17568 +       0x015e, 0x0804, 0x8b24, 0x0006, 0x2001, 0x1836, 0x2004, 0xd0ac,
17569 +       0x000e, 0x0005, 0x2011, 0x0003, 0x080c, 0x8e99, 0x2011, 0x0002,
17570 +       0x080c, 0x8ea3, 0x080c, 0x8d59, 0x0036, 0x901e, 0x080c, 0x8dfe,
17571 +       0x003e, 0x0005, 0x2071, 0x1882, 0x7000, 0x9005, 0x0140, 0x2001,
17572 +       0x0976, 0x2071, 0x1800, 0x706e, 0x7072, 0x7063, 0xffe0, 0x2071,
17573 +       0x1800, 0x706c, 0x704e, 0x7053, 0x1cd0, 0x0005, 0x00e6, 0x0126,
17574 +       0x2071, 0x1800, 0x2091, 0x8000, 0x754c, 0x9582, 0x0010, 0x0608,
17575 +       0x7050, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018,
17576 +       0x7060, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1cd0, 0x0c98, 0x6003,
17577 +       0x0008, 0x8529, 0x754e, 0x9ca8, 0x0018, 0x7060, 0x9502, 0x1230,
17578 +       0x7552, 0x9085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x7053, 0x1cd0,
17579 +       0x0cc0, 0x9006, 0x0cc0, 0x00e6, 0x2071, 0x1800, 0x754c, 0x9582,
17580 +       0x0010, 0x0600, 0x7050, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148,
17581 +       0x9ce0, 0x0018, 0x7060, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1cd0,
17582 +       0x0c98, 0x6003, 0x0008, 0x8529, 0x754e, 0x9ca8, 0x0018, 0x7060,
17583 +       0x9502, 0x1228, 0x7552, 0x9085, 0x0001, 0x00ee, 0x0005, 0x7053,
17584 +       0x1cd0, 0x0cc8, 0x9006, 0x0cc8, 0x9c82, 0x1cd0, 0x0a0c, 0x0d84,
17585 +       0x2001, 0x1818, 0x2004, 0x9c02, 0x1a0c, 0x0d84, 0x9006, 0x6006,
17586 +       0x600a, 0x600e, 0x6016, 0x601a, 0x6012, 0x6023, 0x0000, 0x6003,
17587 +       0x0000, 0x601e, 0x6056, 0x605a, 0x6026, 0x602a, 0x602e, 0x6032,
17588 +       0x6036, 0x603a, 0x603e, 0x6042, 0x2061, 0x1800, 0x604c, 0x8000,
17589 +       0x604e, 0x9086, 0x0001, 0x0108, 0x0005, 0x0126, 0x2091, 0x8000,
17590 +       0x080c, 0x8125, 0x012e, 0x0cc0, 0x0006, 0x6000, 0x9086, 0x0000,
17591 +       0x01b0, 0x601c, 0xd084, 0x190c, 0x17b0, 0x6017, 0x0000, 0x6023,
17592 +       0x0007, 0x2001, 0x1953, 0x2004, 0x0006, 0x9082, 0x0051, 0x000e,
17593 +       0x0208, 0x8004, 0x601a, 0x080c, 0xcc1f, 0x6043, 0x0000, 0x000e,
17594 +       0x0005, 0x00e6, 0x0126, 0x2071, 0x1800, 0x2091, 0x8000, 0x754c,
17595 +       0x9582, 0x0001, 0x0608, 0x7050, 0x2060, 0x6000, 0x9086, 0x0000,
17596 +       0x0148, 0x9ce0, 0x0018, 0x7060, 0x9c02, 0x1208, 0x0cb0, 0x2061,
17597 +       0x1cd0, 0x0c98, 0x6003, 0x0008, 0x8529, 0x754e, 0x9ca8, 0x0018,
17598 +       0x7060, 0x9502, 0x1230, 0x7552, 0x9085, 0x0001, 0x012e, 0x00ee,
17599 +       0x0005, 0x7053, 0x1cd0, 0x0cc0, 0x9006, 0x0cc0, 0x6020, 0x9084,
17600 +       0x000f, 0x0002, 0x95e1, 0x95ea, 0x9605, 0x9620, 0xb77d, 0xb79a,
17601 +       0xb7b5, 0x95e1, 0x95ea, 0x95e1, 0x963c, 0x95e1, 0x95e1, 0x95e1,
17602 +       0x95e1, 0x9186, 0x0013, 0x1128, 0x080c, 0x8026, 0x080c, 0x8125,
17603 +       0x0005, 0x0005, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d84,
17604 +       0x0013, 0x006e, 0x0005, 0x9603, 0x9d1f, 0x9ee0, 0x9603, 0x9f6e,
17605 +       0x98e8, 0x9603, 0x9603, 0x9ca1, 0xa463, 0x9603, 0x9603, 0x9603,
17606 +       0x9603, 0x9603, 0x9603, 0x080c, 0x0d84, 0x0066, 0x6000, 0x90b2,
17607 +       0x0016, 0x1a0c, 0x0d84, 0x0013, 0x006e, 0x0005, 0x961e, 0xaaef,
17608 +       0x961e, 0x961e, 0x961e, 0x961e, 0x961e, 0x961e, 0xaa94, 0xac61,
17609 +       0x961e, 0xab21, 0xaba0, 0xab21, 0xaba0, 0x961e, 0x080c, 0x0d84,
17610 +       0x6000, 0x9082, 0x0016, 0x1a0c, 0x0d84, 0x6000, 0x0002, 0x963a,
17611 +       0xa4a5, 0xa574, 0xa69f, 0xa838, 0x963a, 0x963a, 0x963a, 0xa47e,
17612 +       0xaa2b, 0xaa2e, 0x963a, 0x963a, 0x963a, 0x963a, 0xaa57, 0x963a,
17613 +       0x963a, 0x963a, 0x080c, 0x0d84, 0x0066, 0x6000, 0x90b2, 0x0016,
17614 +       0x1a0c, 0x0d84, 0x0013, 0x006e, 0x0005, 0x9655, 0x9655, 0x9694,
17615 +       0x972f, 0x979c, 0x9655, 0x9655, 0x9655, 0x9657, 0x9655, 0x9655,
17616 +       0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x080c, 0x0d84, 0x9186,
17617 +       0x004c, 0x0588, 0x9186, 0x0003, 0x190c, 0x0d84, 0x0096, 0x601c,
17618 +       0xc0ed, 0x601e, 0x6003, 0x0003, 0x6106, 0x6014, 0x2048, 0xa87c,
17619 +       0x9084, 0x8000, 0xc0b5, 0xa87e, 0xa8ac, 0xa846, 0xa8b0, 0xa84a,
17620 +       0x9006, 0xa836, 0xa83a, 0xa884, 0x9092, 0x199a, 0x0210, 0x2001,
17621 +       0x1999, 0x8003, 0x8013, 0x8213, 0x9210, 0x621a, 0x009e, 0x2c10,
17622 +       0x080c, 0x18b7, 0x080c, 0x7c3a, 0x0126, 0x2091, 0x8000, 0x080c,
17623 +       0x820b, 0x012e, 0x0005, 0x6010, 0x00b6, 0x2058, 0xbca0, 0x00be,
17624 +       0x2c00, 0x080c, 0x97be, 0x0005, 0x00d6, 0x0096, 0x00f6, 0x2079,
17625 +       0x1800, 0x7a88, 0x9290, 0x0018, 0x6014, 0x2048, 0xac78, 0x0046,
17626 +       0xa8e0, 0x9005, 0x1140, 0xa8dc, 0x921a, 0x0140, 0x0220, 0xa87b,
17627 +       0x0007, 0x2010, 0x0028, 0xa87b, 0x0015, 0x0010, 0xa87b, 0x0000,
17628 +       0x8214, 0xa883, 0x0000, 0xaa02, 0x0006, 0x0016, 0x0026, 0x00c6,
17629 +       0x00d6, 0x00e6, 0x00f6, 0x2400, 0x9005, 0x1108, 0x009a, 0x2100,
17630 +       0x9086, 0x0015, 0x1118, 0x2001, 0x0001, 0x0038, 0x2100, 0x9086,
17631 +       0x0016, 0x0118, 0x2001, 0x0001, 0x002a, 0x94a4, 0x0007, 0x8423,
17632 +       0x9405, 0x0002, 0x96f7, 0x96f7, 0x96f2, 0x96f5, 0x96f7, 0x96ef,
17633 +       0x96e2, 0x96e2, 0x96e2, 0x96e2, 0x96e2, 0x96e2, 0x96e2, 0x96e2,
17634 +       0x96e2, 0x96e2, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, 0x001e,
17635 +       0x000e, 0x004e, 0x00fe, 0x009e, 0x00de, 0x080c, 0x0d84, 0x080c,
17636 +       0xa0f1, 0x0028, 0x080c, 0xa1cf, 0x0010, 0x080c, 0xa2bc, 0x00fe,
17637 +       0x00ee, 0x00de, 0x00ce, 0x002e, 0x001e, 0x2c00, 0xa896, 0x000e,
17638 +       0x080c, 0x987c, 0x0530, 0xa804, 0xa80e, 0x00a6, 0x2050, 0xb100,
17639 +       0x00ae, 0x8006, 0x8006, 0x8007, 0x97bc, 0x003f, 0x9084, 0xffc0,
17640 +       0x9080, 0x0002, 0xaacc, 0xabd0, 0xacd4, 0xadd8, 0x2031, 0x0000,
17641 +       0x2041, 0x11fd, 0x080c, 0x9a1f, 0x0160, 0x000e, 0x9005, 0x0120,
17642 +       0x00fe, 0x009e, 0x00de, 0x0005, 0x00fe, 0x009e, 0x00de, 0x0804,
17643 +       0x9554, 0x2001, 0x002c, 0x900e, 0x080c, 0x98db, 0x0c70, 0x9182,
17644 +       0x0047, 0x0002, 0x973b, 0x973b, 0x973d, 0x9772, 0x973b, 0x973b,
17645 +       0x973b, 0x973b, 0x9785, 0x080c, 0x0d84, 0x00d6, 0x0016, 0x0096,
17646 +       0x080c, 0x80d6, 0x080c, 0x820b, 0x6003, 0x0004, 0x6114, 0x2148,
17647 +       0xa87c, 0xd0fc, 0x01b8, 0xa878, 0x9005, 0x1158, 0xa894, 0x9005,
17648 +       0x0140, 0x2001, 0x0000, 0x900e, 0x080c, 0x98db, 0x080c, 0x9554,
17649 +       0x00a8, 0x6003, 0x0002, 0xa8a4, 0xa9a8, 0x9105, 0x1178, 0xa8ae,
17650 +       0xa8b2, 0x0c78, 0xa87f, 0x0020, 0xa88c, 0xa88a, 0xa8a4, 0xa8ae,
17651 +       0xa8a8, 0xa8b2, 0xa8c7, 0x0000, 0xa8cb, 0x0000, 0x009e, 0x001e,
17652 +       0x00de, 0x0005, 0x080c, 0x80d6, 0x00d6, 0x0096, 0x6114, 0x2148,
17653 +       0x080c, 0xb0ad, 0x0120, 0xa87b, 0x0006, 0x080c, 0x61a9, 0x009e,
17654 +       0x00de, 0x080c, 0x9554, 0x0804, 0x820b, 0x080c, 0x80d6, 0x080c,
17655 +       0x2d1a, 0x080c, 0xb76c, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c,
17656 +       0xb0ad, 0x0120, 0xa87b, 0x0029, 0x080c, 0x61a9, 0x009e, 0x00de,
17657 +       0x080c, 0x9554, 0x0804, 0x820b, 0x9182, 0x0047, 0x0002, 0x97ac,
17658 +       0x97ae, 0x97ac, 0x97ac, 0x97ac, 0x97ac, 0x97ac, 0x97ac, 0x97ac,
17659 +       0x97ac, 0x97ac, 0x97ac, 0x97ae, 0x080c, 0x0d84, 0x00d6, 0x0096,
17660 +       0x080c, 0x1489, 0x6114, 0x2148, 0xa87b, 0x0000, 0xa883, 0x0000,
17661 +       0x080c, 0x61a9, 0x009e, 0x00de, 0x0804, 0x9554, 0x0026, 0x0036,
17662 +       0x0056, 0x0066, 0x0096, 0x00a6, 0x00f6, 0x0006, 0x080c, 0x0fae,
17663 +       0x000e, 0x090c, 0x0d84, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019,
17664 +       0x21a0, 0x900e, 0x20a9, 0x0020, 0x4104, 0xa87a, 0x2079, 0x1800,
17665 +       0x7988, 0x9188, 0x0018, 0x918c, 0x0fff, 0xa972, 0xac76, 0x2950,
17666 +       0x00a6, 0x2001, 0x0205, 0x2003, 0x0000, 0x901e, 0x2029, 0x0001,
17667 +       0x9182, 0x0034, 0x1228, 0x2011, 0x001f, 0x080c, 0xace6, 0x04c0,
17668 +       0x2130, 0x2009, 0x0034, 0x2011, 0x001f, 0x080c, 0xace6, 0x96b2,
17669 +       0x0034, 0xb004, 0x904d, 0x0110, 0x080c, 0x0f60, 0x080c, 0x0fae,
17670 +       0x01d0, 0x8528, 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406,
17671 +       0x968a, 0x003d, 0x1230, 0x2608, 0x2011, 0x001b, 0x080c, 0xace6,
17672 +       0x00b8, 0x96b2, 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b,
17673 +       0x080c, 0xace6, 0x0c18, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae,
17674 +       0x852f, 0x95ad, 0x0050, 0xb566, 0xb070, 0xc0fd, 0xb072, 0x0048,
17675 +       0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0050,
17676 +       0xb566, 0x2a48, 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, 0x61a9,
17677 +       0x000e, 0x2048, 0x9005, 0x1db0, 0x00fe, 0x00ae, 0x009e, 0x006e,
17678 +       0x005e, 0x003e, 0x002e, 0x0005, 0x00d6, 0x00f6, 0x0096, 0x0006,
17679 +       0x080c, 0x0fae, 0x000e, 0x090c, 0x0d84, 0xa960, 0x21e8, 0xa95c,
17680 +       0x9188, 0x0019, 0x21a0, 0x900e, 0x20a9, 0x0020, 0x4104, 0xaa66,
17681 +       0xa87a, 0x2079, 0x1800, 0x7988, 0x810c, 0x9188, 0x000c, 0x9182,
17682 +       0x001a, 0x0210, 0x2009, 0x001a, 0x21a8, 0x810b, 0xa972, 0xac76,
17683 +       0x2e98, 0xa85c, 0x9080, 0x001f, 0x20a0, 0x2001, 0x0205, 0x200c,
17684 +       0x918d, 0x0080, 0x2102, 0x4003, 0x2003, 0x0000, 0x080c, 0x61a9,
17685 +       0x009e, 0x00fe, 0x00de, 0x0005, 0x0016, 0x00d6, 0x00f6, 0x0096,
17686 +       0x0016, 0x2001, 0x0205, 0x200c, 0x918d, 0x0080, 0x2102, 0x001e,
17687 +       0x2079, 0x0200, 0x2e98, 0x2021, 0x003e, 0x901e, 0x9282, 0x0020,
17688 +       0x0218, 0x2011, 0x0020, 0x2018, 0x9486, 0x003e, 0x1170, 0x0096,
17689 +       0x080c, 0x0fae, 0x2900, 0x009e, 0x05b8, 0xa806, 0x2048, 0xa860,
17690 +       0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x3300, 0x908e, 0x0260,
17691 +       0x0140, 0x2009, 0x0280, 0x9102, 0x920a, 0x0218, 0x2010, 0x2100,
17692 +       0x9318, 0x2200, 0x9402, 0x1220, 0x2410, 0x9006, 0x9398, 0x0002,
17693 +       0x2020, 0x22a8, 0xa800, 0x9200, 0xa802, 0x20e1, 0x0000, 0x4003,
17694 +       0x83ff, 0x0180, 0x3300, 0x9086, 0x0280, 0x1130, 0x7814, 0x8000,
17695 +       0x9085, 0x0080, 0x7816, 0x2e98, 0x2310, 0x84ff, 0x0904, 0x988b,
17696 +       0x0804, 0x988d, 0x9085, 0x0001, 0x7817, 0x0000, 0x009e, 0x00fe,
17697 +       0x00de, 0x001e, 0x0005, 0x00d6, 0x0036, 0x0096, 0x6314, 0x2348,
17698 +       0xa87a, 0xa982, 0x080c, 0x619c, 0x009e, 0x003e, 0x00de, 0x0005,
17699 +       0x91b6, 0x0015, 0x1118, 0x080c, 0x9554, 0x0030, 0x91b6, 0x0016,
17700 +       0x190c, 0x0d84, 0x080c, 0x9554, 0x0005, 0x20a9, 0x000e, 0x20e1,
17701 +       0x0000, 0x2e98, 0x6014, 0x0096, 0x2048, 0xa860, 0x20e8, 0xa85c,
17702 +       0x20a0, 0x009e, 0x4003, 0x0136, 0x9080, 0x001b, 0x2011, 0x0006,
17703 +       0x20a9, 0x0001, 0x3418, 0x8318, 0x23a0, 0x4003, 0x3318, 0x8318,
17704 +       0x2398, 0x8211, 0x1db8, 0x2011, 0x0006, 0x013e, 0x20a0, 0x3318,
17705 +       0x8318, 0x2398, 0x4003, 0x3418, 0x8318, 0x23a0, 0x8211, 0x1db8,
17706 +       0x0096, 0x080c, 0xb0ad, 0x0130, 0x6014, 0x2048, 0xa807, 0x0000,
17707 +       0xa867, 0x0103, 0x009e, 0x0804, 0x9554, 0x0096, 0x00d6, 0x0036,
17708 +       0x7330, 0x9386, 0x0200, 0x11a8, 0x6010, 0x00b6, 0x2058, 0xb8bf,
17709 +       0x0000, 0x00be, 0x6014, 0x9005, 0x0130, 0x2048, 0xa807, 0x0000,
17710 +       0xa867, 0x0103, 0xab32, 0x080c, 0x9554, 0x003e, 0x00de, 0x009e,
17711 +       0x0005, 0x0011, 0x1d48, 0x0cc8, 0x0006, 0x0016, 0x080c, 0xb759,
17712 +       0x0188, 0x6014, 0x9005, 0x1170, 0x600b, 0x0003, 0x601b, 0x0000,
17713 +       0x6043, 0x0000, 0x2009, 0x0022, 0x080c, 0x9cf7, 0x9006, 0x001e,
17714 +       0x000e, 0x0005, 0x9085, 0x0001, 0x0cd0, 0x0096, 0x0016, 0x20a9,
17715 +       0x0014, 0x9e80, 0x000c, 0x20e1, 0x0000, 0x2098, 0x6014, 0x2048,
17716 +       0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, 0x2001,
17717 +       0x0205, 0x2003, 0x0001, 0x2099, 0x0260, 0x20a9, 0x0016, 0x4003,
17718 +       0x20a9, 0x000a, 0xa804, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080,
17719 +       0x0002, 0x20a0, 0x4003, 0x2001, 0x0205, 0x2003, 0x0002, 0x2099,
17720 +       0x0260, 0x20a9, 0x0020, 0x4003, 0x2003, 0x0000, 0x6014, 0x2048,
17721 +       0xa800, 0x2048, 0xa867, 0x0103, 0x080c, 0x9554, 0x001e, 0x009e,
17722 +       0x0005, 0x0096, 0x0016, 0x900e, 0x7030, 0x9086, 0x0100, 0x0140,
17723 +       0x7038, 0x9084, 0x00ff, 0x800c, 0x703c, 0x9084, 0x00ff, 0x8004,
17724 +       0x9080, 0x0004, 0x9108, 0x810b, 0x2011, 0x0002, 0x2019, 0x000c,
17725 +       0x6014, 0x2048, 0x080c, 0xace6, 0x080c, 0xb0ad, 0x0140, 0x6014,
17726 +       0x2048, 0xa807, 0x0000, 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c,
17727 +       0x9554, 0x001e, 0x009e, 0x0005, 0x0016, 0x0096, 0x7030, 0x9086,
17728 +       0x0100, 0x1118, 0x2009, 0x0004, 0x0010, 0x7034, 0x800c, 0x810b,
17729 +       0x2011, 0x000c, 0x2019, 0x000c, 0x6014, 0x2048, 0xa804, 0x0096,
17730 +       0x9005, 0x0108, 0x2048, 0x080c, 0xace6, 0x009e, 0x080c, 0xb0ad,
17731 +       0x0148, 0xa804, 0x9005, 0x1158, 0xa807, 0x0000, 0xa864, 0xa8e2,
17732 +       0xa867, 0x0103, 0x080c, 0x9554, 0x009e, 0x001e, 0x0005, 0x0086,
17733 +       0x2040, 0xa030, 0x8007, 0x9086, 0x0100, 0x1118, 0x080c, 0x9e99,
17734 +       0x00e0, 0xa034, 0x8007, 0x800c, 0x8806, 0x8006, 0x8007, 0x90bc,
17735 +       0x003f, 0x9084, 0xffc0, 0x9080, 0x000c, 0xa87b, 0x0000, 0xa883,
17736 +       0x0000, 0xa897, 0x4000, 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031,
17737 +       0x0000, 0x2041, 0x11e3, 0x0019, 0x0d08, 0x008e, 0x0898, 0x0096,
17738 +       0x0006, 0x080c, 0x0fae, 0x000e, 0x01b0, 0xa8ab, 0x0dcb, 0xa876,
17739 +       0x000e, 0xa8a2, 0x0006, 0xae6a, 0x2800, 0xa89e, 0xa97a, 0xaf72,
17740 +       0xaa8e, 0xab92, 0xac96, 0xad9a, 0x0086, 0x2940, 0x080c, 0x108c,
17741 +       0x008e, 0x9085, 0x0001, 0x009e, 0x0005, 0x00e6, 0x00d6, 0x0026,
17742 +       0x7008, 0x9084, 0x00ff, 0x6210, 0x00b6, 0x2258, 0xba10, 0x00be,
17743 +       0x9206, 0x1520, 0x700c, 0x6210, 0x00b6, 0x2258, 0xba14, 0x00be,
17744 +       0x9206, 0x11e0, 0x6043, 0x0000, 0x2c68, 0x0016, 0x2009, 0x0035,
17745 +       0x080c, 0xb6d9, 0x001e, 0x1158, 0x622c, 0x2268, 0x2071, 0x026c,
17746 +       0x6b20, 0x9386, 0x0003, 0x0130, 0x9386, 0x0006, 0x0128, 0x080c,
17747 +       0x9554, 0x0020, 0x0039, 0x0010, 0x080c, 0x9b31, 0x002e, 0x00de,
17748 +       0x00ee, 0x0005, 0x0096, 0x6814, 0x2048, 0x9186, 0x0015, 0x0904,
17749 +       0x9b19, 0x918e, 0x0016, 0x1904, 0x9b2f, 0x700c, 0x908c, 0xff00,
17750 +       0x9186, 0x1700, 0x0120, 0x9186, 0x0300, 0x1904, 0x9af3, 0x89ff,
17751 +       0x1138, 0x6800, 0x9086, 0x000f, 0x0904, 0x9ad6, 0x0804, 0x9b2d,
17752 +       0x6808, 0x9086, 0xffff, 0x1904, 0x9b1b, 0xa87c, 0x9084, 0x0060,
17753 +       0x9086, 0x0020, 0x1128, 0xa83c, 0xa940, 0x9105, 0x1904, 0x9b1b,
17754 +       0x6824, 0xd0b4, 0x1904, 0x9b1b, 0x080c, 0xb278, 0x685c, 0xa882,
17755 +       0xa87c, 0xc0dc, 0xc0f4, 0xc0d4, 0xa87e, 0x0026, 0x900e, 0x6a18,
17756 +       0x2001, 0x000a, 0x080c, 0x7a4b, 0xa884, 0x920a, 0x0208, 0x8011,
17757 +       0xaa86, 0x82ff, 0x002e, 0x1138, 0x00c6, 0x2d60, 0x080c, 0xae04,
17758 +       0x00ce, 0x0804, 0x9b2d, 0x00c6, 0xa868, 0xd0fc, 0x1118, 0x080c,
17759 +       0x5755, 0x0010, 0x080c, 0x5ac6, 0x00ce, 0x1904, 0x9b1b, 0x00c6,
17760 +       0x2d60, 0x080c, 0x9554, 0x00ce, 0x0804, 0x9b2d, 0x00c6, 0x080c,
17761 +       0x95a1, 0x0198, 0x6017, 0x0000, 0x6810, 0x6012, 0x080c, 0xb4e6,
17762 +       0x6023, 0x0003, 0x6904, 0x00c6, 0x2d60, 0x080c, 0x9554, 0x00ce,
17763 +       0x080c, 0x95ce, 0x00ce, 0x0804, 0x9b2d, 0x2001, 0x1955, 0x2004,
17764 +       0x6842, 0x00ce, 0x04d0, 0x7008, 0x9086, 0x000b, 0x11c8, 0x6010,
17765 +       0x00b6, 0x2058, 0xb900, 0xc1bc, 0xb902, 0x00be, 0x00c6, 0x2d60,
17766 +       0xa883, 0x0003, 0x080c, 0xb71f, 0x6007, 0x0085, 0x6003, 0x000b,
17767 +       0x6023, 0x0002, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x00ce, 0x00e8,
17768 +       0x700c, 0x9086, 0x2a00, 0x1138, 0x2001, 0x1955, 0x2004, 0x6842,
17769 +       0x00a0, 0x0479, 0x00a0, 0x89ff, 0x090c, 0x0d84, 0x00c6, 0x00d6,
17770 +       0x2d60, 0xa867, 0x0103, 0xa87b, 0x0003, 0x080c, 0xacd6, 0x080c,
17771 +       0xb278, 0x080c, 0x9584, 0x00de, 0x00ce, 0x080c, 0x9554, 0x009e,
17772 +       0x0005, 0x9186, 0x0015, 0x1128, 0x2001, 0x1955, 0x2004, 0x6842,
17773 +       0x0068, 0x918e, 0x0016, 0x1160, 0x00c6, 0x2d00, 0x2060, 0x080c,
17774 +       0xcc1f, 0x080c, 0x79df, 0x080c, 0x9554, 0x00ce, 0x080c, 0x9554,
17775 +       0x0005, 0x0026, 0x0036, 0x0046, 0x7228, 0xacb0, 0xabac, 0xd2f4,
17776 +       0x0130, 0x2001, 0x1955, 0x2004, 0x6842, 0x0804, 0x9ba9, 0x00c6,
17777 +       0x2d60, 0x080c, 0xad11, 0x00ce, 0x6804, 0x9086, 0x0050, 0x1168,
17778 +       0x00c6, 0x2d00, 0x2060, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c,
17779 +       0x7bcb, 0x080c, 0x8125, 0x00ce, 0x04e0, 0x6800, 0x9086, 0x000f,
17780 +       0x01b0, 0x89ff, 0x090c, 0x0d84, 0x6800, 0x9086, 0x0004, 0x1198,
17781 +       0xa87c, 0xd0ac, 0x0180, 0xa843, 0x0fff, 0xa83f, 0x0fff, 0xa880,
17782 +       0xc0f4, 0xc0fc, 0xa882, 0x2001, 0x0001, 0x6832, 0x00e8, 0x2001,
17783 +       0x0007, 0x6832, 0x00c8, 0xa87c, 0xd0b4, 0x1138, 0xd0ac, 0x0db8,
17784 +       0xa838, 0xa934, 0x9105, 0x0d98, 0x0c30, 0xd2ec, 0x1d80, 0x7024,
17785 +       0x9306, 0x1118, 0x7020, 0x9406, 0x0d50, 0x7020, 0x683e, 0x7024,
17786 +       0x683a, 0x2001, 0x0005, 0x6832, 0x080c, 0xb3e0, 0x080c, 0x8125,
17787 +       0x0010, 0x080c, 0x9554, 0x004e, 0x003e, 0x002e, 0x0005, 0x00e6,
17788 +       0x00d6, 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, 0x00b6, 0x2258,
17789 +       0xba10, 0x00be, 0x9206, 0x1904, 0x9c11, 0x700c, 0x6210, 0x00b6,
17790 +       0x2258, 0xba14, 0x00be, 0x9206, 0x1904, 0x9c11, 0x6038, 0x2068,
17791 +       0x6a20, 0x9286, 0x0007, 0x0904, 0x9c11, 0x9286, 0x0002, 0x0904,
17792 +       0x9c11, 0x9286, 0x0000, 0x05e8, 0x6808, 0x633c, 0x9306, 0x15c8,
17793 +       0x2071, 0x026c, 0x9186, 0x0015, 0x0570, 0x918e, 0x0016, 0x1100,
17794 +       0x00c6, 0x6038, 0x2060, 0x6104, 0x9186, 0x004b, 0x01c0, 0x9186,
17795 +       0x004c, 0x01a8, 0x9186, 0x004d, 0x0190, 0x9186, 0x004e, 0x0178,
17796 +       0x9186, 0x0052, 0x0160, 0x6014, 0x0096, 0x2048, 0x080c, 0xb0ad,
17797 +       0x090c, 0x0d84, 0xa883, 0x0003, 0x009e, 0x080c, 0xb71f, 0x6007,
17798 +       0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x7bcb, 0x080c,
17799 +       0x8125, 0x00ce, 0x0030, 0x6038, 0x2070, 0x2001, 0x1955, 0x2004,
17800 +       0x7042, 0x080c, 0x9554, 0x002e, 0x00de, 0x00ee, 0x0005, 0x00b6,
17801 +       0x0096, 0x00f6, 0x6014, 0x2048, 0x6010, 0x2058, 0x91b6, 0x0015,
17802 +       0x0130, 0xba08, 0xbb0c, 0xbc00, 0xc48c, 0xbc02, 0x0460, 0x0096,
17803 +       0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90, 0x0010, 0x2019, 0x000a,
17804 +       0x20a9, 0x0004, 0x080c, 0xa439, 0x002e, 0x003e, 0x015e, 0x009e,
17805 +       0x1904, 0x9c80, 0x0096, 0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90,
17806 +       0x0014, 0x2019, 0x0006, 0x20a9, 0x0004, 0x080c, 0xa439, 0x002e,
17807 +       0x003e, 0x015e, 0x009e, 0x15a0, 0x7238, 0xba0a, 0x733c, 0xbb0e,
17808 +       0xbc00, 0xc48d, 0xbc02, 0xa804, 0x9005, 0x1128, 0x00fe, 0x009e,
17809 +       0x00be, 0x0804, 0x9920, 0x0096, 0x2048, 0xaa12, 0xab16, 0xac0a,
17810 +       0x009e, 0x8006, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0,
17811 +       0x9080, 0x0002, 0x2009, 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4,
17812 +       0x2031, 0x0000, 0x2041, 0x11e3, 0x080c, 0x9a1f, 0x0130, 0x00fe,
17813 +       0x009e, 0x080c, 0x9554, 0x00be, 0x0005, 0x080c, 0x9e99, 0x0cb8,
17814 +       0x2b78, 0x00f6, 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x00fe, 0x00c6,
17815 +       0x080c, 0x94fe, 0x2f00, 0x6012, 0x6017, 0x0000, 0x6023, 0x0001,
17816 +       0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x080c, 0x5b61,
17817 +       0x080c, 0x5b8d, 0x080c, 0x7c1d, 0x080c, 0x8125, 0x00ce, 0x0804,
17818 +       0x9c53, 0x2100, 0x91b2, 0x0053, 0x1a0c, 0x0d84, 0x91b2, 0x0040,
17819 +       0x1a04, 0x9d09, 0x0002, 0x9cf7, 0x9cf7, 0x9ced, 0x9cf7, 0x9cf7,
17820 +       0x9cf7, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17821 +       0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17822 +       0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17823 +       0x9ceb, 0x9ceb, 0x9cf7, 0x9ceb, 0x9cf7, 0x9cf7, 0x9ceb, 0x9ceb,
17824 +       0x9ceb, 0x9ceb, 0x9ceb, 0x9ced, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17825 +       0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9cf7, 0x9cf7, 0x9ceb,
17826 +       0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17827 +       0x9cf7, 0x9ceb, 0x9ceb, 0x080c, 0x0d84, 0x0066, 0x00b6, 0x6610,
17828 +       0x2658, 0xb8bc, 0xc08c, 0xb8be, 0x00be, 0x006e, 0x0000, 0x6003,
17829 +       0x0001, 0x6106, 0x9186, 0x0032, 0x0118, 0x080c, 0x7c1d, 0x0010,
17830 +       0x080c, 0x7bcb, 0x0126, 0x2091, 0x8000, 0x080c, 0x8125, 0x012e,
17831 +       0x0005, 0x2600, 0x0002, 0x9d1d, 0x9d1d, 0x9d1d, 0x9cf7, 0x9cf7,
17832 +       0x9d1d, 0x9d1d, 0x9d1d, 0x9d1d, 0x9cf7, 0x9d1d, 0x9cf7, 0x9d1d,
17833 +       0x9cf7, 0x9d1d, 0x9d1d, 0x9d1d, 0x9d1d, 0x080c, 0x0d84, 0x6004,
17834 +       0x90b2, 0x0053, 0x1a0c, 0x0d84, 0x91b6, 0x0013, 0x0904, 0x9dd4,
17835 +       0x91b6, 0x0027, 0x1904, 0x9d8f, 0x080c, 0x8026, 0x6004, 0x080c,
17836 +       0xb284, 0x01a8, 0x080c, 0xb295, 0x01a0, 0x908e, 0x0021, 0x0904,
17837 +       0x9d8c, 0x908e, 0x0022, 0x1130, 0x080c, 0x994c, 0x0904, 0x9d88,
17838 +       0x0804, 0x9d89, 0x908e, 0x003d, 0x0904, 0x9d8c, 0x04d8, 0x080c,
17839 +       0x2d3f, 0x2001, 0x0007, 0x080c, 0x5b61, 0x6010, 0x00b6, 0x2058,
17840 +       0xb9a0, 0x00be, 0x080c, 0x9e99, 0x9186, 0x007e, 0x1148, 0x2001,
17841 +       0x1836, 0x2014, 0xc285, 0x080c, 0x6877, 0x1108, 0xc2ad, 0x2202,
17842 +       0x0036, 0x2019, 0x0028, 0x080c, 0x2e2f, 0x003e, 0x0016, 0x0026,
17843 +       0x0036, 0x2110, 0x2019, 0x0028, 0x080c, 0x7d55, 0x0076, 0x903e,
17844 +       0x080c, 0x7c4d, 0x6010, 0x00b6, 0x905d, 0x0100, 0x00be, 0x2c08,
17845 +       0x080c, 0xc73e, 0x007e, 0x003e, 0x002e, 0x001e, 0x080c, 0xb76c,
17846 +       0x080c, 0x5bd1, 0x080c, 0xb4de, 0x080c, 0x9554, 0x080c, 0x8125,
17847 +       0x0005, 0x080c, 0x9e99, 0x0cb0, 0x080c, 0x9ed5, 0x0c98, 0x9186,
17848 +       0x0014, 0x1db0, 0x080c, 0x8026, 0x6004, 0x908e, 0x0022, 0x1118,
17849 +       0x080c, 0x994c, 0x0d68, 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x080c,
17850 +       0xb284, 0x1190, 0x080c, 0x2d3f, 0x6010, 0x00b6, 0x2058, 0xb9a0,
17851 +       0x00be, 0x080c, 0x9e99, 0x9186, 0x007e, 0x1128, 0x2001, 0x1836,
17852 +       0x200c, 0xc185, 0x2102, 0x0870, 0x080c, 0xb295, 0x1118, 0x080c,
17853 +       0x9e99, 0x0840, 0x6004, 0x908e, 0x0032, 0x1160, 0x00e6, 0x00f6,
17854 +       0x2071, 0x1893, 0x2079, 0x0000, 0x080c, 0x308f, 0x00fe, 0x00ee,
17855 +       0x0804, 0x9d82, 0x6004, 0x908e, 0x0021, 0x0d48, 0x908e, 0x0022,
17856 +       0x090c, 0x9e99, 0x0804, 0x9d82, 0x90b2, 0x0040, 0x1a04, 0x9e82,
17857 +       0x2008, 0x0002, 0x9e1c, 0x9e1d, 0x9e20, 0x9e23, 0x9e26, 0x9e29,
17858 +       0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a,
17859 +       0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a,
17860 +       0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a,
17861 +       0x9e2c, 0x9e37, 0x9e1a, 0x9e39, 0x9e37, 0x9e1a, 0x9e1a, 0x9e1a,
17862 +       0x9e1a, 0x9e1a, 0x9e37, 0x9e37, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a,
17863 +       0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e69, 0x9e37, 0x9e1a, 0x9e33,
17864 +       0x9e1a, 0x9e1a, 0x9e1a, 0x9e34, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e37,
17865 +       0x9e60, 0x9e1a, 0x080c, 0x0d84, 0x00d0, 0x2001, 0x000b, 0x0410,
17866 +       0x2001, 0x0003, 0x00f8, 0x2001, 0x0005, 0x00e0, 0x2001, 0x0001,
17867 +       0x00c8, 0x2001, 0x0009, 0x00b0, 0x080c, 0x8026, 0x6003, 0x0005,
17868 +       0x080c, 0x8125, 0x0070, 0x0018, 0x0010, 0x080c, 0x5b61, 0x0804,
17869 +       0x9e7a, 0x080c, 0x8026, 0x080c, 0xb76f, 0x6003, 0x0004, 0x080c,
17870 +       0x8125, 0x0005, 0x080c, 0x5b61, 0x080c, 0x8026, 0x6003, 0x0002,
17871 +       0x0036, 0x2019, 0x185d, 0x2304, 0x9084, 0xff00, 0x1120, 0x2001,
17872 +       0x1953, 0x201c, 0x0040, 0x8007, 0x909a, 0x0004, 0x0ec0, 0x8003,
17873 +       0x801b, 0x831b, 0x9318, 0x631a, 0x003e, 0x080c, 0x8125, 0x0c08,
17874 +       0x080c, 0x8026, 0x080c, 0xb4de, 0x080c, 0x9554, 0x080c, 0x8125,
17875 +       0x08c0, 0x00e6, 0x00f6, 0x2071, 0x1893, 0x2079, 0x0000, 0x080c,
17876 +       0x308f, 0x00fe, 0x00ee, 0x080c, 0x8026, 0x080c, 0x9554, 0x080c,
17877 +       0x8125, 0x0838, 0x080c, 0x8026, 0x6003, 0x0002, 0x080c, 0xb76f,
17878 +       0x0804, 0x8125, 0x2600, 0x2008, 0x0002, 0x9e97, 0x9e97, 0x9e97,
17879 +       0x9e7a, 0x9e7a, 0x9e97, 0x9e97, 0x9e97, 0x9e97, 0x9e7a, 0x9e97,
17880 +       0x9e7a, 0x9e97, 0x9e7a, 0x9e97, 0x9e97, 0x9e97, 0x9e97, 0x080c,
17881 +       0x0d84, 0x00e6, 0x0096, 0x0026, 0x0016, 0x080c, 0xb0ad, 0x0568,
17882 +       0x6014, 0x2048, 0xa864, 0x9086, 0x0139, 0x11a8, 0xa894, 0x9086,
17883 +       0x0056, 0x1148, 0x080c, 0x4b95, 0x0130, 0x2001, 0x0000, 0x900e,
17884 +       0x2011, 0x4000, 0x0028, 0x2001, 0x0030, 0x900e, 0x2011, 0x4005,
17885 +       0x080c, 0xb644, 0x0090, 0xa868, 0xd0fc, 0x0178, 0xa807, 0x0000,
17886 +       0x0016, 0x6004, 0x908e, 0x0021, 0x0168, 0x908e, 0x003d, 0x0150,
17887 +       0x001e, 0xa867, 0x0103, 0xa833, 0x0100, 0x001e, 0x002e, 0x009e,
17888 +       0x00ee, 0x0005, 0x001e, 0x0009, 0x0cc0, 0x0096, 0x6014, 0x2048,
17889 +       0xa800, 0x2048, 0xa867, 0x0103, 0xa823, 0x8001, 0x009e, 0x0005,
17890 +       0x00b6, 0x6610, 0x2658, 0xb804, 0x9084, 0x00ff, 0x90b2, 0x000c,
17891 +       0x1a0c, 0x0d84, 0x6604, 0x96b6, 0x004d, 0x1120, 0x080c, 0xb56a,
17892 +       0x0804, 0x9f5d, 0x6604, 0x96b6, 0x0043, 0x1120, 0x080c, 0xb5b3,
17893 +       0x0804, 0x9f5d, 0x6604, 0x96b6, 0x004b, 0x1120, 0x080c, 0xb5df,
17894 +       0x0804, 0x9f5d, 0x6604, 0x96b6, 0x0033, 0x1120, 0x080c, 0xb500,
17895 +       0x0804, 0x9f5d, 0x6604, 0x96b6, 0x0028, 0x1120, 0x080c, 0xb2c4,
17896 +       0x0804, 0x9f5d, 0x6604, 0x96b6, 0x0029, 0x1120, 0x080c, 0xb305,
17897 +       0x0804, 0x9f5d, 0x6604, 0x96b6, 0x001f, 0x1118, 0x080c, 0x98f5,
17898 +       0x04e0, 0x6604, 0x96b6, 0x0000, 0x1118, 0x080c, 0x9c17, 0x04a8,
17899 +       0x6604, 0x96b6, 0x0022, 0x1118, 0x080c, 0x992d, 0x0470, 0x6604,
17900 +       0x96b6, 0x0035, 0x1118, 0x080c, 0x9a3d, 0x0438, 0x6604, 0x96b6,
17901 +       0x0039, 0x1118, 0x080c, 0x9baf, 0x0400, 0x6604, 0x96b6, 0x003d,
17902 +       0x1118, 0x080c, 0x9965, 0x00c8, 0x6604, 0x96b6, 0x0044, 0x1118,
17903 +       0x080c, 0x99a1, 0x0090, 0x6604, 0x96b6, 0x0049, 0x1118, 0x080c,
17904 +       0x99cc, 0x0058, 0x91b6, 0x0015, 0x1110, 0x0063, 0x0030, 0x91b6,
17905 +       0x0016, 0x1128, 0x00be, 0x0804, 0xa178, 0x00be, 0x0005, 0x080c,
17906 +       0x95e9, 0x0cd8, 0x9f7a, 0x9f7d, 0x9f7a, 0x9fc2, 0x9f7a, 0xa0f1,
17907 +       0xa185, 0x9f7a, 0x9f7a, 0xa152, 0x9f7a, 0xa166, 0x0096, 0x080c,
17908 +       0x1489, 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, 0x0103, 0x009e,
17909 +       0x0804, 0x9554, 0xa001, 0xa001, 0x0005, 0x00e6, 0x2071, 0x1800,
17910 +       0x7088, 0x9086, 0x0074, 0x1540, 0x080c, 0xc70f, 0x11b0, 0x6010,
17911 +       0x00b6, 0x2058, 0x7030, 0xd08c, 0x0128, 0xb800, 0xd0bc, 0x0110,
17912 +       0xc0c5, 0xb802, 0x00e9, 0x00be, 0x2001, 0x0006, 0x080c, 0x5b61,
17913 +       0x080c, 0x2d3f, 0x080c, 0x9554, 0x0088, 0x2001, 0x000a, 0x080c,
17914 +       0x5b61, 0x080c, 0x2d3f, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c,
17915 +       0x7c1d, 0x080c, 0x8125, 0x0010, 0x080c, 0xa0dc, 0x00ee, 0x0005,
17916 +       0x00d6, 0xb800, 0xd084, 0x0160, 0x9006, 0x080c, 0x5b4d, 0x2069,
17917 +       0x1852, 0x6804, 0xd0a4, 0x0120, 0x2001, 0x0006, 0x080c, 0x5b8d,
17918 +       0x00de, 0x0005, 0x00b6, 0x0096, 0x00d6, 0x2011, 0x1822, 0x2204,
17919 +       0x9086, 0x0074, 0x1904, 0xa0c0, 0x6010, 0x2058, 0xbaa0, 0x9286,
17920 +       0x007e, 0x1120, 0x080c, 0xa2c7, 0x0804, 0xa025, 0x080c, 0xa2bc,
17921 +       0x6010, 0x2058, 0xbaa0, 0x9286, 0x0080, 0x1510, 0x6014, 0x9005,
17922 +       0x01a8, 0x2048, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1140,
17923 +       0x2001, 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, 0xb644, 0x0030,
17924 +       0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0x0200, 0x2001, 0x0006,
17925 +       0x080c, 0x5b61, 0x080c, 0x2d3f, 0x080c, 0x9554, 0x0804, 0xa0c1,
17926 +       0x080c, 0xa0c5, 0x6014, 0x9005, 0x0190, 0x2048, 0xa868, 0xd0f4,
17927 +       0x0170, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1d08, 0x2001,
17928 +       0x0000, 0x900e, 0x2011, 0x4000, 0x080c, 0xb644, 0x08f8, 0x2001,
17929 +       0x0004, 0x080c, 0x5b61, 0x6003, 0x0001, 0x6007, 0x0003, 0x080c,
17930 +       0x7c1d, 0x080c, 0x8125, 0x0804, 0xa0c1, 0xb85c, 0xd0e4, 0x01d0,
17931 +       0x080c, 0xb480, 0x080c, 0x6877, 0x0110, 0xd0dc, 0x1938, 0x2011,
17932 +       0x1836, 0x2204, 0xc0ad, 0x2012, 0x2001, 0x193c, 0x2004, 0x00f6,
17933 +       0x2079, 0x0100, 0x78e3, 0x0000, 0x080c, 0x2471, 0x78e2, 0x00fe,
17934 +       0x0804, 0x9ff6, 0x080c, 0xb4bd, 0x2011, 0x1836, 0x2204, 0xc0a5,
17935 +       0x2012, 0x0006, 0x080c, 0xc860, 0x000e, 0x1904, 0x9ff6, 0xc0b5,
17936 +       0x2012, 0x2001, 0x0006, 0x080c, 0x5b61, 0x9006, 0x080c, 0x5b4d,
17937 +       0x00c6, 0x2001, 0x180e, 0x2004, 0xd09c, 0x0520, 0x00f6, 0x2079,
17938 +       0x0100, 0x00e6, 0x2071, 0x1800, 0x700c, 0x9084, 0x00ff, 0x78e6,
17939 +       0x7076, 0x7010, 0x78ea, 0x707a, 0x908c, 0x00ff, 0x00ee, 0x780c,
17940 +       0xc0b5, 0x780e, 0x00fe, 0x080c, 0x2446, 0x00f6, 0x2100, 0x900e,
17941 +       0x080c, 0x23fd, 0x7956, 0x00fe, 0x9186, 0x0081, 0x01d8, 0x2009,
17942 +       0x0081, 0x00c8, 0x2009, 0x00ef, 0x00f6, 0x2079, 0x0100, 0x79ea,
17943 +       0x7932, 0x7936, 0x780c, 0xc0b5, 0x780e, 0x00fe, 0x080c, 0x2446,
17944 +       0x00f6, 0x2079, 0x1800, 0x797a, 0x2100, 0x900e, 0x080c, 0x23fd,
17945 +       0x7956, 0x00fe, 0x8108, 0x080c, 0x5bb0, 0x2b00, 0x00ce, 0x1904,
17946 +       0x9ff6, 0x6012, 0x2009, 0x180e, 0x210c, 0xd19c, 0x0150, 0x2009,
17947 +       0x027c, 0x210c, 0x918c, 0x00ff, 0xb912, 0x2009, 0x027d, 0x210c,
17948 +       0xb916, 0x2001, 0x0002, 0x080c, 0x5b61, 0x6023, 0x0001, 0x6003,
17949 +       0x0001, 0x6007, 0x0002, 0x080c, 0x7c1d, 0x080c, 0x8125, 0x0008,
17950 +       0x00d9, 0x00de, 0x009e, 0x00be, 0x0005, 0x00e6, 0x080c, 0xccd1,
17951 +       0x0188, 0x2071, 0x0260, 0x7108, 0x720c, 0x918c, 0x00ff, 0x1118,
17952 +       0x9284, 0xff00, 0x0138, 0x6010, 0x2058, 0xb8a0, 0xd0bc, 0x1110,
17953 +       0xb912, 0xba16, 0x00ee, 0x0005, 0x2030, 0x2001, 0x0007, 0x080c,
17954 +       0x5b61, 0x080c, 0x4dfe, 0x1120, 0x2001, 0x0007, 0x080c, 0x5b8d,
17955 +       0x080c, 0x2d3f, 0x6020, 0x9086, 0x000a, 0x1108, 0x0005, 0x0804,
17956 +       0x9554, 0x00b6, 0x00e6, 0x0026, 0x0016, 0x2071, 0x1800, 0x7088,
17957 +       0x9086, 0x0014, 0x1904, 0xa149, 0x080c, 0x4dfe, 0x1170, 0x6014,
17958 +       0x9005, 0x1158, 0x0036, 0x0046, 0x6010, 0x2058, 0xbba0, 0x2021,
17959 +       0x0006, 0x080c, 0x44f9, 0x004e, 0x003e, 0x00d6, 0x6010, 0x2058,
17960 +       0x080c, 0x5ca8, 0x080c, 0x9fb0, 0x00de, 0x080c, 0xa38d, 0x1588,
17961 +       0x6010, 0x2058, 0xb890, 0x9005, 0x0560, 0x2001, 0x0006, 0x080c,
17962 +       0x5b61, 0x0096, 0x6014, 0x904d, 0x01d0, 0xa864, 0x9084, 0x00ff,
17963 +       0x9086, 0x0039, 0x1140, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000,
17964 +       0x080c, 0xb644, 0x0060, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0029,
17965 +       0x0130, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0x0200, 0x009e,
17966 +       0x080c, 0x2d3f, 0x6020, 0x9086, 0x000a, 0x0138, 0x080c, 0x9554,
17967 +       0x0020, 0x080c, 0x9e99, 0x080c, 0xa0dc, 0x001e, 0x002e, 0x00ee,
17968 +       0x00be, 0x0005, 0x2011, 0x1822, 0x2204, 0x9086, 0x0014, 0x1160,
17969 +       0x2001, 0x0002, 0x080c, 0x5b61, 0x6003, 0x0001, 0x6007, 0x0001,
17970 +       0x080c, 0x7c1d, 0x0804, 0x8125, 0x0804, 0xa0dc, 0x2030, 0x2011,
17971 +       0x1822, 0x2204, 0x9086, 0x0004, 0x1148, 0x96b6, 0x000b, 0x1120,
17972 +       0x2001, 0x0007, 0x080c, 0x5b61, 0x0804, 0x9554, 0x0804, 0xa0dc,
17973 +       0x0002, 0x9f7a, 0xa190, 0x9f7a, 0xa1cf, 0x9f7a, 0xa278, 0xa185,
17974 +       0x9f7a, 0x9f7a, 0xa28b, 0x9f7a, 0xa29b, 0x6604, 0x9686, 0x0003,
17975 +       0x0904, 0xa0f1, 0x96b6, 0x001e, 0x1110, 0x080c, 0x9554, 0x0005,
17976 +       0x00b6, 0x00d6, 0x00c6, 0x080c, 0xa2ab, 0x11a0, 0x9006, 0x080c,
17977 +       0x5b4d, 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x2001, 0x0002, 0x080c,
17978 +       0x5b61, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x7c1d, 0x080c,
17979 +       0x8125, 0x0408, 0x2009, 0x026e, 0x2104, 0x9086, 0x0009, 0x1160,
17980 +       0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0170, 0x8001,
17981 +       0xb842, 0x601b, 0x000a, 0x0078, 0x2009, 0x026f, 0x2104, 0x9084,
17982 +       0xff00, 0x9086, 0x1900, 0x1108, 0x08a0, 0x080c, 0x2d1a, 0x080c,
17983 +       0xb76c, 0x080c, 0xa0dc, 0x00ce, 0x00de, 0x00be, 0x0005, 0x0096,
17984 +       0x00b6, 0x0026, 0x9016, 0x080c, 0xa2b9, 0x00d6, 0x2069, 0x194b,
17985 +       0x2d04, 0x9005, 0x0168, 0x6010, 0x2058, 0xb8a0, 0x9086, 0x007e,
17986 +       0x1138, 0x2069, 0x181e, 0x2d04, 0x8000, 0x206a, 0x00de, 0x0010,
17987 +       0x00de, 0x0088, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0002, 0x080c,
17988 +       0x5b61, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x7c1d, 0x080c,
17989 +       0x8125, 0x0804, 0xa248, 0x080c, 0xb0ad, 0x01a0, 0x6014, 0x2048,
17990 +       0xa864, 0x2010, 0x9086, 0x0139, 0x1128, 0x2001, 0x0002, 0x080c,
17991 +       0xb69a, 0x00b0, 0x6014, 0x2048, 0xa864, 0xd0fc, 0x0118, 0x2001,
17992 +       0x0001, 0x0ca8, 0x2001, 0x180d, 0x2004, 0xd0dc, 0x0148, 0x6010,
17993 +       0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x1110, 0x9006, 0x0c38,
17994 +       0x080c, 0x9e99, 0x2009, 0x026e, 0x2134, 0x96b4, 0x00ff, 0x9686,
17995 +       0x0005, 0x0510, 0x9686, 0x000b, 0x01c8, 0x2009, 0x026f, 0x2104,
17996 +       0x9084, 0xff00, 0x1118, 0x9686, 0x0009, 0x01b0, 0x9086, 0x1900,
17997 +       0x1168, 0x9686, 0x0009, 0x0180, 0x2001, 0x0004, 0x080c, 0x5b61,
17998 +       0x2001, 0x0028, 0x601a, 0x6007, 0x0052, 0x0010, 0x080c, 0xa0dc,
17999 +       0x002e, 0x00be, 0x009e, 0x0005, 0x9286, 0x0139, 0x0160, 0x6014,
18000 +       0x2048, 0x080c, 0xb0ad, 0x0140, 0xa864, 0x9086, 0x0139, 0x0118,
18001 +       0xa868, 0xd0fc, 0x0108, 0x0c50, 0x6010, 0x2058, 0xb840, 0x9084,
18002 +       0x00ff, 0x9005, 0x0138, 0x8001, 0xb842, 0x601b, 0x000a, 0x6007,
18003 +       0x0016, 0x08f0, 0xb8a0, 0x9086, 0x007e, 0x1138, 0x00e6, 0x2071,
18004 +       0x1800, 0x080c, 0x5677, 0x00ee, 0x0010, 0x080c, 0x2d1a, 0x0870,
18005 +       0x080c, 0xa2b9, 0x1160, 0x2001, 0x0004, 0x080c, 0x5b61, 0x6003,
18006 +       0x0001, 0x6007, 0x0003, 0x080c, 0x7c1d, 0x0804, 0x8125, 0x080c,
18007 +       0x9e99, 0x0804, 0xa0dc, 0x0469, 0x1160, 0x2001, 0x0008, 0x080c,
18008 +       0x5b61, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, 0x7c1d, 0x0804,
18009 +       0x8125, 0x0804, 0xa0dc, 0x00e9, 0x1160, 0x2001, 0x000a, 0x080c,
18010 +       0x5b61, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x7c1d, 0x0804,
18011 +       0x8125, 0x0804, 0xa0dc, 0x2009, 0x026e, 0x2104, 0x9086, 0x0003,
18012 +       0x1138, 0x2009, 0x026f, 0x2104, 0x9084, 0xff00, 0x9086, 0x2a00,
18013 +       0x0005, 0x9085, 0x0001, 0x0005, 0x00b6, 0x00c6, 0x0016, 0x6110,
18014 +       0x2158, 0x080c, 0x5c1c, 0x001e, 0x00ce, 0x00be, 0x0005, 0x00b6,
18015 +       0x00f6, 0x00e6, 0x00d6, 0x0036, 0x0016, 0x6010, 0x2058, 0x2009,
18016 +       0x1836, 0x2104, 0x9085, 0x0003, 0x200a, 0x080c, 0xa35f, 0x0560,
18017 +       0x2009, 0x1836, 0x2104, 0xc0cd, 0x200a, 0x080c, 0x5f29, 0x0158,
18018 +       0x9006, 0x2020, 0x2009, 0x002a, 0x080c, 0xc9c5, 0x2001, 0x180c,
18019 +       0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0001, 0x080c,
18020 +       0x2ce5, 0x00e6, 0x2071, 0x1800, 0x080c, 0x2b1e, 0x00ee, 0x00c6,
18021 +       0x0156, 0x20a9, 0x0781, 0x2009, 0x007f, 0x080c, 0x2e11, 0x8108,
18022 +       0x1f04, 0xa2fd, 0x015e, 0x00ce, 0x080c, 0xa2bc, 0x2071, 0x0260,
18023 +       0x2079, 0x0200, 0x7817, 0x0001, 0x2001, 0x1836, 0x200c, 0xc1c5,
18024 +       0x7018, 0xd0fc, 0x0110, 0xd0dc, 0x0118, 0x7038, 0xd0dc, 0x1108,
18025 +       0xc1c4, 0x7817, 0x0000, 0x2001, 0x1836, 0x2102, 0x2079, 0x0100,
18026 +       0x2e04, 0x9084, 0x00ff, 0x2069, 0x181d, 0x206a, 0x78e6, 0x0006,
18027 +       0x8e70, 0x2e04, 0x2069, 0x181e, 0x206a, 0x78ea, 0x7832, 0x7836,
18028 +       0x2010, 0x9084, 0xff00, 0x001e, 0x9105, 0x2009, 0x182a, 0x200a,
18029 +       0x2200, 0x9084, 0x00ff, 0x2008, 0x080c, 0x2446, 0x080c, 0x6877,
18030 +       0x0170, 0x2071, 0x0260, 0x2069, 0x194f, 0x7048, 0x206a, 0x704c,
18031 +       0x6806, 0x7050, 0x680a, 0x7054, 0x680e, 0x080c, 0xb480, 0x0040,
18032 +       0x2001, 0x0006, 0x080c, 0x5b61, 0x080c, 0x2d3f, 0x080c, 0x9554,
18033 +       0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x00be, 0x0005, 0x0096,
18034 +       0x0026, 0x0036, 0x00e6, 0x0156, 0x2019, 0x182a, 0x231c, 0x83ff,
18035 +       0x01f0, 0x2071, 0x0260, 0x7200, 0x9294, 0x00ff, 0x7004, 0x9084,
18036 +       0xff00, 0x9205, 0x9306, 0x1198, 0x2011, 0x0276, 0x20a9, 0x0004,
18037 +       0x2b48, 0x2019, 0x000a, 0x080c, 0xa439, 0x1148, 0x2011, 0x027a,
18038 +       0x20a9, 0x0004, 0x2019, 0x0006, 0x080c, 0xa439, 0x1100, 0x015e,
18039 +       0x00ee, 0x003e, 0x002e, 0x009e, 0x0005, 0x00e6, 0x2071, 0x0260,
18040 +       0x7034, 0x9086, 0x0014, 0x11a8, 0x7038, 0x9086, 0x0800, 0x1188,
18041 +       0x703c, 0xd0ec, 0x0160, 0x9084, 0x0f00, 0x9086, 0x0100, 0x1138,
18042 +       0x7054, 0xd0a4, 0x1110, 0xd0ac, 0x0110, 0x9006, 0x0010, 0x9085,
18043 +       0x0001, 0x00ee, 0x0005, 0x00e6, 0x0096, 0x00c6, 0x0076, 0x0056,
18044 +       0x0046, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2029, 0x19bd,
18045 +       0x252c, 0x2021, 0x19c3, 0x2424, 0x2061, 0x1cd0, 0x2071, 0x1800,
18046 +       0x724c, 0x706c, 0x9202, 0x1a04, 0xa411, 0x080c, 0xc9f1, 0x0904,
18047 +       0xa40a, 0x6720, 0x9786, 0x0007, 0x05e8, 0x2500, 0x9c06, 0x05d0,
18048 +       0x2400, 0x9c06, 0x05b8, 0x3e08, 0x9186, 0x0002, 0x1148, 0x6010,
18049 +       0x9005, 0x0130, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1550,
18050 +       0x00c6, 0x6000, 0x9086, 0x0004, 0x1110, 0x080c, 0x17b0, 0x9786,
18051 +       0x0008, 0x1148, 0x080c, 0xb295, 0x1130, 0x00ce, 0x080c, 0x9e99,
18052 +       0x080c, 0x9584, 0x00b8, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0178,
18053 +       0x9786, 0x0003, 0x1500, 0x080c, 0xc810, 0x0110, 0xa867, 0x0103,
18054 +       0xab7a, 0xa877, 0x0000, 0x080c, 0x619c, 0x080c, 0xb278, 0x080c,
18055 +       0x9584, 0x00ce, 0x9ce0, 0x0018, 0x7060, 0x9c02, 0x1210, 0x0804,
18056 +       0xa3c0, 0x012e, 0x000e, 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce,
18057 +       0x009e, 0x00ee, 0x0005, 0x9786, 0x0006, 0x1118, 0x080c, 0xc970,
18058 +       0x0c30, 0x9786, 0x000a, 0x09e0, 0x08b0, 0x220c, 0x2304, 0x9106,
18059 +       0x1130, 0x8210, 0x8318, 0x1f04, 0xa425, 0x9006, 0x0005, 0x2304,
18060 +       0x9102, 0x0218, 0x2001, 0x0001, 0x0008, 0x9006, 0x918d, 0x0001,
18061 +       0x0005, 0x0136, 0x01c6, 0x0016, 0x8906, 0x8006, 0x8007, 0x908c,
18062 +       0x003f, 0x21e0, 0x9084, 0xffc0, 0x9300, 0x2098, 0x3518, 0x20a9,
18063 +       0x0001, 0x220c, 0x4002, 0x910e, 0x1140, 0x8210, 0x8319, 0x1dc8,
18064 +       0x9006, 0x001e, 0x01ce, 0x013e, 0x0005, 0x220c, 0x9102, 0x0218,
18065 +       0x2001, 0x0001, 0x0010, 0x2001, 0x0000, 0x918d, 0x0001, 0x001e,
18066 +       0x01ce, 0x013e, 0x0005, 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0d84,
18067 +       0x080c, 0xb284, 0x0120, 0x080c, 0xb295, 0x0168, 0x0028, 0x080c,
18068 +       0x2d3f, 0x080c, 0xb295, 0x0138, 0x080c, 0x8026, 0x080c, 0x9554,
18069 +       0x080c, 0x8125, 0x0005, 0x080c, 0x9e99, 0x0cb0, 0x9182, 0x0040,
18070 +       0x0002, 0xa495, 0xa495, 0xa495, 0xa495, 0xa495, 0xa495, 0xa495,
18071 +       0xa495, 0xa495, 0xa495, 0xa495, 0xa497, 0xa497, 0xa497, 0xa497,
18072 +       0xa495, 0xa495, 0xa495, 0xa497, 0xa495, 0x080c, 0x0d84, 0x600b,
18073 +       0xffff, 0x6003, 0x0001, 0x6106, 0x080c, 0x7bcb, 0x0126, 0x2091,
18074 +       0x8000, 0x080c, 0x8125, 0x012e, 0x0005, 0x9186, 0x0013, 0x1128,
18075 +       0x6004, 0x9082, 0x0040, 0x0804, 0xa536, 0x9186, 0x0027, 0x11f0,
18076 +       0x080c, 0x8026, 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x0096, 0x6114,
18077 +       0x2148, 0x080c, 0xb0ad, 0x0168, 0xa867, 0x0103, 0xa87b, 0x0029,
18078 +       0xa877, 0x0000, 0xa97c, 0xc1c5, 0xa97e, 0x080c, 0x61a9, 0x080c,
18079 +       0xb278, 0x009e, 0x080c, 0x9554, 0x0804, 0x8125, 0x9186, 0x0014,
18080 +       0x1120, 0x6004, 0x9082, 0x0040, 0x0440, 0x9186, 0x0046, 0x0150,
18081 +       0x9186, 0x0045, 0x0138, 0x9186, 0x0053, 0x0120, 0x9186, 0x0048,
18082 +       0x190c, 0x0d84, 0x2001, 0x0109, 0x2004, 0xd084, 0x01a8, 0x0126,
18083 +       0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x0036, 0x080c, 0x7ab7,
18084 +       0x003e, 0x002e, 0x001e, 0x000e, 0x012e, 0xa001, 0x6000, 0x9086,
18085 +       0x0002, 0x1110, 0x0804, 0xa574, 0x0005, 0x0002, 0xa514, 0xa512,
18086 +       0xa512, 0xa512, 0xa512, 0xa512, 0xa512, 0xa512, 0xa512, 0xa512,
18087 +       0xa512, 0xa52f, 0xa52f, 0xa52f, 0xa52f, 0xa512, 0xa52f, 0xa512,
18088 +       0xa52f, 0xa512, 0x080c, 0x0d84, 0x080c, 0x8026, 0x0096, 0x6114,
18089 +       0x2148, 0x080c, 0xb0ad, 0x0168, 0xa867, 0x0103, 0xa87b, 0x0006,
18090 +       0xa877, 0x0000, 0xa880, 0xc0ec, 0xa882, 0x080c, 0x61a9, 0x080c,
18091 +       0xb278, 0x009e, 0x080c, 0x9554, 0x080c, 0x8125, 0x0005, 0x080c,
18092 +       0x8026, 0x080c, 0x9554, 0x080c, 0x8125, 0x0005, 0x0002, 0xa54d,
18093 +       0xa54b, 0xa54b, 0xa54b, 0xa54b, 0xa54b, 0xa54b, 0xa54b, 0xa54b,
18094 +       0xa54b, 0xa54b, 0xa564, 0xa564, 0xa564, 0xa564, 0xa54b, 0xa56e,
18095 +       0xa54b, 0xa564, 0xa54b, 0x080c, 0x0d84, 0x0096, 0x080c, 0x8026,
18096 +       0x6014, 0x2048, 0x2001, 0x1955, 0x2004, 0x6042, 0xa97c, 0xd1ac,
18097 +       0x0140, 0x6003, 0x0004, 0xa87c, 0x9085, 0x0400, 0xa87e, 0x009e,
18098 +       0x0005, 0x6003, 0x0002, 0x0cb8, 0x080c, 0x8026, 0x080c, 0xb76f,
18099 +       0x080c, 0xb774, 0x6003, 0x000f, 0x0804, 0x8125, 0x080c, 0x8026,
18100 +       0x080c, 0x9554, 0x0804, 0x8125, 0x9182, 0x0040, 0x0002, 0xa58b,
18101 +       0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58d, 0xa66a, 0xa58b, 0xa58b,
18102 +       0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58b,
18103 +       0xa58b, 0xa58b, 0xa69e, 0x080c, 0x0d84, 0x00b6, 0x0096, 0x6114,
18104 +       0x2148, 0x7644, 0x96b4, 0x0fff, 0x86ff, 0x1528, 0x6010, 0x2058,
18105 +       0xb800, 0xd0bc, 0x1904, 0xa659, 0xa87b, 0x0000, 0xa867, 0x0103,
18106 +       0xae76, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, 0x9115, 0x190c,
18107 +       0xa82a, 0x080c, 0x5fda, 0x6210, 0x2258, 0xba3c, 0x82ff, 0x0110,
18108 +       0x8211, 0xba3e, 0x7044, 0xd0e4, 0x1904, 0xa63d, 0x080c, 0x9554,
18109 +       0x009e, 0x00be, 0x0005, 0x968c, 0x0c00, 0x0150, 0x6010, 0x2058,
18110 +       0xb800, 0xd0bc, 0x1904, 0xa641, 0x7348, 0xab92, 0x734c, 0xab8e,
18111 +       0x968c, 0x00ff, 0x9186, 0x0002, 0x0508, 0x9186, 0x0028, 0x1118,
18112 +       0xa87b, 0x001c, 0x00e8, 0xd6dc, 0x01a0, 0xa87b, 0x0015, 0xa87c,
18113 +       0xd0ac, 0x0170, 0xa938, 0xaa34, 0x2100, 0x9205, 0x0148, 0x7048,
18114 +       0x9106, 0x1118, 0x704c, 0x9206, 0x0118, 0xa992, 0xaa8e, 0xc6dc,
18115 +       0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000,
18116 +       0xa867, 0x0103, 0xae76, 0x901e, 0xd6c4, 0x01d8, 0x9686, 0x0100,
18117 +       0x1130, 0x7064, 0x9005, 0x1118, 0xc6c4, 0x0804, 0xa594, 0x735c,
18118 +       0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008,
18119 +       0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, 0xace6,
18120 +       0x003e, 0xd6cc, 0x0904, 0xa5a9, 0x7154, 0xa98a, 0x81ff, 0x0904,
18121 +       0xa5a9, 0x9192, 0x0021, 0x1278, 0x8304, 0x9098, 0x0018, 0x2011,
18122 +       0x0029, 0x080c, 0xace6, 0x2011, 0x0205, 0x2013, 0x0000, 0x080c,
18123 +       0xb706, 0x0804, 0xa5a9, 0xa868, 0xd0fc, 0x0120, 0x2009, 0x0020,
18124 +       0xa98a, 0x0c50, 0x00a6, 0x2950, 0x080c, 0xac85, 0x00ae, 0x080c,
18125 +       0xb706, 0x080c, 0xacd6, 0x0804, 0xa5ab, 0x080c, 0xb37e, 0x0804,
18126 +       0xa5b8, 0xa87c, 0xd0ac, 0x0904, 0xa5c4, 0xa880, 0xd0bc, 0x1904,
18127 +       0xa5c4, 0x7348, 0xa838, 0x9306, 0x11c8, 0x734c, 0xa834, 0x931e,
18128 +       0x0904, 0xa5c4, 0xd6d4, 0x0190, 0xab38, 0x9305, 0x0904, 0xa5c4,
18129 +       0x0068, 0xa87c, 0xd0ac, 0x0904, 0xa59c, 0xa838, 0xa934, 0x9105,
18130 +       0x0904, 0xa59c, 0xa880, 0xd0bc, 0x1904, 0xa59c, 0x080c, 0xb3ae,
18131 +       0x0804, 0xa5b8, 0x0096, 0x00f6, 0x6003, 0x0003, 0x6007, 0x0043,
18132 +       0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6014, 0x2048,
18133 +       0xa87c, 0xd0ac, 0x0140, 0x6003, 0x0002, 0x00fe, 0x009e, 0x0005,
18134 +       0x2130, 0x2228, 0x0058, 0x2400, 0xa9ac, 0x910a, 0x2300, 0xaab0,
18135 +       0x9213, 0x2600, 0x9102, 0x2500, 0x9203, 0x0e90, 0xac36, 0xab3a,
18136 +       0xae46, 0xad4a, 0x00fe, 0x6043, 0x0000, 0x2c10, 0x080c, 0x18b7,
18137 +       0x080c, 0x7c3a, 0x080c, 0x820b, 0x009e, 0x0005, 0x0005, 0x9182,
18138 +       0x0040, 0x0002, 0xa6b6, 0xa6b6, 0xa6b6, 0xa6b6, 0xa6b6, 0xa6b8,
18139 +       0xa74e, 0xa6b6, 0xa6b6, 0xa765, 0xa7f1, 0xa6b6, 0xa6b6, 0xa6b6,
18140 +       0xa6b6, 0xa806, 0xa6b6, 0xa6b6, 0xa6b6, 0xa6b6, 0x080c, 0x0d84,
18141 +       0x0076, 0x00a6, 0x00e6, 0x0096, 0x2071, 0x0260, 0x6114, 0x2150,
18142 +       0x7644, 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, 0xb77e, 0x6210,
18143 +       0x00b6, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e, 0x00be,
18144 +       0x86ff, 0x0904, 0xa749, 0x9694, 0xff00, 0x9284, 0x0c00, 0x0120,
18145 +       0x7048, 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, 0x0904, 0xa749,
18146 +       0x080c, 0x0fae, 0x090c, 0x0d84, 0x2900, 0xb07a, 0xb77c, 0xc7cd,
18147 +       0xb77e, 0xa867, 0x0103, 0xb068, 0xa86a, 0xb06c, 0xa86e, 0xb070,
18148 +       0xa872, 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, 0x734c,
18149 +       0xab8e, 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028,
18150 +       0x1118, 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, 0x0015,
18151 +       0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000,
18152 +       0xaf7e, 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, 0x0190,
18153 +       0x735c, 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019,
18154 +       0x0008, 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c,
18155 +       0xace6, 0x003e, 0xd6cc, 0x01e8, 0x7154, 0xa98a, 0x81ff, 0x01c8,
18156 +       0x9192, 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029,
18157 +       0x080c, 0xace6, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, 0xb068,
18158 +       0xd0fc, 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x2950, 0x080c,
18159 +       0xac85, 0x009e, 0x00ee, 0x00ae, 0x007e, 0x0005, 0x00f6, 0x00a6,
18160 +       0x6003, 0x0003, 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08,
18161 +       0x6014, 0x2050, 0xb436, 0xb33a, 0xb646, 0xb54a, 0x00ae, 0x00fe,
18162 +       0x2c10, 0x080c, 0x18b7, 0x0804, 0x8b1d, 0x6003, 0x0002, 0x6004,
18163 +       0x9086, 0x0040, 0x11c8, 0x0096, 0x6014, 0x2048, 0xa87c, 0xd0ac,
18164 +       0x0160, 0x601c, 0xd084, 0x1130, 0x00f6, 0x2c00, 0x2078, 0x080c,
18165 +       0x150d, 0x00fe, 0x6003, 0x0004, 0x0010, 0x6003, 0x0002, 0x009e,
18166 +       0x080c, 0x8026, 0x080c, 0x8125, 0x0096, 0x2001, 0x1955, 0x2004,
18167 +       0x6042, 0x080c, 0x80d6, 0x080c, 0x820b, 0x6114, 0x2148, 0xa97c,
18168 +       0xd1e4, 0x0904, 0xa7ec, 0xd1cc, 0x05a8, 0xa978, 0xa868, 0xd0fc,
18169 +       0x0538, 0x0016, 0xa87c, 0x0006, 0xa880, 0x0006, 0xa860, 0x20e8,
18170 +       0xa85c, 0x9080, 0x0019, 0x20a0, 0x810e, 0x810e, 0x810f, 0x9184,
18171 +       0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0019, 0x2098, 0x0156,
18172 +       0x20a9, 0x0020, 0x4003, 0x015e, 0x000e, 0xa882, 0x000e, 0xa87e,
18173 +       0x001e, 0xa874, 0x0006, 0x2148, 0x080c, 0x0f60, 0x001e, 0x0440,
18174 +       0x0016, 0x080c, 0x0f60, 0x009e, 0xa974, 0x0016, 0x080c, 0xacd6,
18175 +       0x001e, 0x00f0, 0xa867, 0x0103, 0xa974, 0x9184, 0x00ff, 0x90b6,
18176 +       0x0002, 0x0180, 0x9086, 0x0028, 0x1118, 0xa87b, 0x001c, 0x0060,
18177 +       0xd1dc, 0x0118, 0xa87b, 0x0015, 0x0038, 0xd1d4, 0x0118, 0xa87b,
18178 +       0x0007, 0x0010, 0xa87b, 0x0000, 0x0016, 0x080c, 0x5fda, 0x001e,
18179 +       0xd1e4, 0x1120, 0x080c, 0x9554, 0x009e, 0x0005, 0x080c, 0xb37e,
18180 +       0x0cd8, 0x6004, 0x9086, 0x0040, 0x1120, 0x080c, 0x8026, 0x080c,
18181 +       0x8125, 0x2019, 0x0001, 0x080c, 0x8dfe, 0x6003, 0x0002, 0x080c,
18182 +       0xb774, 0x080c, 0x80d6, 0x080c, 0x820b, 0x0005, 0x6004, 0x9086,
18183 +       0x0040, 0x1120, 0x080c, 0x8026, 0x080c, 0x8125, 0x080c, 0x80d6,
18184 +       0x080c, 0x2d1a, 0x080c, 0xb76c, 0x0096, 0x6114, 0x2148, 0x080c,
18185 +       0xb0ad, 0x0150, 0xa867, 0x0103, 0xa87b, 0x0029, 0xa877, 0x0000,
18186 +       0x080c, 0x61a9, 0x080c, 0xb278, 0x009e, 0x080c, 0x9554, 0x080c,
18187 +       0x820b, 0x0005, 0xa87b, 0x0015, 0xd1fc, 0x0138, 0xa87b, 0x0007,
18188 +       0x8002, 0x8000, 0x810a, 0x9189, 0x0000, 0xa992, 0xa88e, 0x0005,
18189 +       0x9182, 0x0040, 0x0002, 0xa84f, 0xa84f, 0xa84f, 0xa84f, 0xa84f,
18190 +       0xa851, 0xa84f, 0xa84f, 0xa8f4, 0xa84f, 0xa84f, 0xa84f, 0xa84f,
18191 +       0xa84f, 0xa84f, 0xa84f, 0xa84f, 0xa84f, 0xa84f, 0xaa22, 0x080c,
18192 +       0x0d84, 0x0076, 0x00a6, 0x00e6, 0x0096, 0x2071, 0x0260, 0x6114,
18193 +       0x2150, 0x7644, 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, 0xb77e,
18194 +       0x6210, 0x00b6, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e,
18195 +       0x00be, 0x86ff, 0x0904, 0xa8ed, 0x9694, 0xff00, 0x9284, 0x0c00,
18196 +       0x0120, 0x7048, 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, 0x0904,
18197 +       0xa8ed, 0x9686, 0x0100, 0x1130, 0x7064, 0x9005, 0x1118, 0xc6c4,
18198 +       0xb676, 0x0c38, 0x080c, 0x0fae, 0x090c, 0x0d84, 0x2900, 0xb07a,
18199 +       0xb77c, 0x97bd, 0x0200, 0xb77e, 0xa867, 0x0103, 0xb068, 0xa86a,
18200 +       0xb06c, 0xa86e, 0xb070, 0xa872, 0x7044, 0x9084, 0xf000, 0x9635,
18201 +       0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, 0x734c, 0xab8e,
18202 +       0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028, 0x1118,
18203 +       0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, 0x0015, 0x0038,
18204 +       0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, 0xaf7e,
18205 +       0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, 0x0190, 0x735c,
18206 +       0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008,
18207 +       0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, 0xace6,
18208 +       0x003e, 0xd6cc, 0x01d0, 0x7154, 0xa98a, 0x81ff, 0x01b0, 0x9192,
18209 +       0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029, 0x080c,
18210 +       0xace6, 0x2011, 0x0205, 0x2013, 0x0000, 0x0038, 0xb068, 0xd0fc,
18211 +       0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x080c, 0x178e, 0x009e,
18212 +       0x00ee, 0x00ae, 0x007e, 0x0005, 0x2001, 0x1955, 0x2004, 0x6042,
18213 +       0x0096, 0x6114, 0x2148, 0xa83c, 0xa940, 0x9105, 0x1118, 0xa87c,
18214 +       0xc0dc, 0xa87e, 0x6003, 0x0002, 0xa97c, 0xd1e4, 0x0904, 0xaa1d,
18215 +       0x6043, 0x0000, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc,
18216 +       0x11f8, 0xd1cc, 0x0904, 0xa9ec, 0xa978, 0xa868, 0xd0fc, 0x0904,
18217 +       0xa9ad, 0x0016, 0xa87c, 0x0006, 0xa880, 0x0006, 0x00a6, 0x2150,
18218 +       0xb174, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x0904, 0xa97b, 0x9086,
18219 +       0x0028, 0x15e8, 0xa87b, 0x001c, 0xb07b, 0x001c, 0x0804, 0xa983,
18220 +       0x6024, 0xd0f4, 0x11d0, 0xa838, 0xaa34, 0x9205, 0x09d0, 0xa838,
18221 +       0xaa90, 0x9206, 0x1120, 0xa88c, 0xaa34, 0x9206, 0x0990, 0x6024,
18222 +       0xd0d4, 0x1148, 0xa9ac, 0xa834, 0x9102, 0x603a, 0xa9b0, 0xa838,
18223 +       0x9103, 0x603e, 0x6024, 0xc0f5, 0x6026, 0x6010, 0x00b6, 0x2058,
18224 +       0xb83c, 0x8000, 0xb83e, 0x00be, 0x9006, 0xa876, 0xa892, 0xa88e,
18225 +       0xa87c, 0xc0e4, 0xa87e, 0xd0cc, 0x0130, 0x0096, 0xa878, 0x2048,
18226 +       0x080c, 0x0f60, 0x009e, 0x080c, 0xb3ae, 0x0804, 0xaa1d, 0xd1dc,
18227 +       0x0158, 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xb62d, 0x0118,
18228 +       0xb174, 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, 0x0007,
18229 +       0xb07b, 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938,
18230 +       0x9115, 0x190c, 0xa82a, 0xa87c, 0xb07e, 0xa890, 0xb092, 0xa88c,
18231 +       0xb08e, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0019, 0x20a0, 0x20a9,
18232 +       0x0020, 0x8a06, 0x8006, 0x8007, 0x9094, 0x003f, 0x22e0, 0x9084,
18233 +       0xffc0, 0x9080, 0x0019, 0x2098, 0x4003, 0x00ae, 0x000e, 0xa882,
18234 +       0x000e, 0xa87e, 0x080c, 0xb706, 0x001e, 0xa874, 0x0006, 0x2148,
18235 +       0x080c, 0x0f60, 0x001e, 0x0804, 0xaa19, 0x0016, 0x00a6, 0x2150,
18236 +       0xb174, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01e0, 0x9086, 0x0028,
18237 +       0x1128, 0xa87b, 0x001c, 0xb07b, 0x001c, 0x00e0, 0xd1dc, 0x0158,
18238 +       0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xb62d, 0x0118, 0xb174,
18239 +       0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, 0x0007, 0xb07b,
18240 +       0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, 0x9115,
18241 +       0x190c, 0xa82a, 0xa890, 0xb092, 0xa88c, 0xb08e, 0xa87c, 0xb07e,
18242 +       0x00ae, 0x080c, 0x0f60, 0x009e, 0x080c, 0xb706, 0xa974, 0x0016,
18243 +       0x080c, 0xacd6, 0x001e, 0x0468, 0xa867, 0x0103, 0xa974, 0x9184,
18244 +       0x00ff, 0x90b6, 0x0002, 0x01b0, 0x9086, 0x0028, 0x1118, 0xa87b,
18245 +       0x001c, 0x00d0, 0xd1dc, 0x0148, 0xa87b, 0x0015, 0x080c, 0xb62d,
18246 +       0x0118, 0xa974, 0xc1dc, 0xa976, 0x0078, 0xd1d4, 0x0118, 0xa87b,
18247 +       0x0007, 0x0050, 0xa87b, 0x0000, 0xa87c, 0xd0ac, 0x0128, 0xa834,
18248 +       0xa938, 0x9115, 0x190c, 0xa82a, 0xa974, 0x0016, 0x080c, 0x5fda,
18249 +       0x001e, 0xd1e4, 0x1120, 0x080c, 0x9554, 0x009e, 0x0005, 0x080c,
18250 +       0xb37e, 0x0cd8, 0x6114, 0x0096, 0x2148, 0xa97c, 0xd1e4, 0x190c,
18251 +       0x179c, 0x009e, 0x0005, 0x080c, 0x8026, 0x0010, 0x080c, 0x80d6,
18252 +       0x080c, 0xb0ad, 0x01c0, 0x0096, 0x6114, 0x2148, 0xa867, 0x0103,
18253 +       0x2009, 0x180c, 0x210c, 0xd18c, 0x11b8, 0xd184, 0x1190, 0x6108,
18254 +       0xa97a, 0x918e, 0x0029, 0x1110, 0x080c, 0xcc6b, 0xa877, 0x0000,
18255 +       0x080c, 0x61a9, 0x009e, 0x080c, 0x9554, 0x080c, 0x8125, 0x0804,
18256 +       0x820b, 0xa87b, 0x0004, 0x0c90, 0xa87b, 0x0004, 0x0c78, 0x9182,
18257 +       0x0040, 0x0002, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa70,
18258 +       0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e,
18259 +       0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0x080c, 0x0d84,
18260 +       0x080c, 0x4df2, 0x01f8, 0x6014, 0x7144, 0x918c, 0x0fff, 0x9016,
18261 +       0xd1c4, 0x0118, 0x7264, 0x9294, 0x00ff, 0x0096, 0x904d, 0x0188,
18262 +       0xa87b, 0x0000, 0xa864, 0x9086, 0x0139, 0x0128, 0xa867, 0x0103,
18263 +       0xa976, 0xaa96, 0x0030, 0xa897, 0x4000, 0xa99a, 0xaa9e, 0x080c,
18264 +       0x61a9, 0x009e, 0x0804, 0x9554, 0x9182, 0x0085, 0x0002, 0xaaa6,
18265 +       0xaaa4, 0xaaa4, 0xaab2, 0xaaa4, 0xaaa4, 0xaaa4, 0xaaa4, 0xaaa4,
18266 +       0xaaa4, 0xaaa4, 0xaaa4, 0xaaa4, 0x080c, 0x0d84, 0x6003, 0x0001,
18267 +       0x6106, 0x080c, 0x7bcb, 0x0126, 0x2091, 0x8000, 0x080c, 0x8125,
18268 +       0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, 0x00e6, 0x2071, 0x0260,
18269 +       0x7224, 0x6216, 0x7220, 0x080c, 0xb09b, 0x01a0, 0x2268, 0x6800,
18270 +       0x9086, 0x0000, 0x0178, 0x6010, 0x6d10, 0x952e, 0x1158, 0x00c6,
18271 +       0x2d60, 0x080c, 0xad11, 0x00ce, 0x0128, 0x6803, 0x0002, 0x6007,
18272 +       0x0086, 0x0010, 0x6007, 0x0087, 0x6003, 0x0001, 0x080c, 0x7bcb,
18273 +       0x080c, 0x8125, 0x9280, 0x0004, 0x00b6, 0x2058, 0xb800, 0x00be,
18274 +       0xd0bc, 0x0140, 0x6824, 0xd0ec, 0x0128, 0x00c6, 0x2260, 0x080c,
18275 +       0xb3ae, 0x00ce, 0x00ee, 0x00de, 0x005e, 0x002e, 0x0005, 0x9186,
18276 +       0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d84, 0x908a,
18277 +       0x0092, 0x1a0c, 0x0d84, 0x9082, 0x0085, 0x006a, 0x9186, 0x0027,
18278 +       0x0120, 0x9186, 0x0014, 0x190c, 0x0d84, 0x080c, 0x8026, 0x080c,
18279 +       0x9584, 0x0804, 0x8125, 0xab18, 0xab1a, 0xab1a, 0xab18, 0xab18,
18280 +       0xab18, 0xab18, 0xab18, 0xab18, 0xab18, 0xab18, 0xab18, 0xab18,
18281 +       0x080c, 0x0d84, 0x080c, 0x8026, 0x080c, 0x9584, 0x080c, 0x8125,
18282 +       0x0005, 0x9186, 0x0013, 0x1128, 0x6004, 0x9082, 0x0085, 0x2008,
18283 +       0x04b8, 0x9186, 0x0027, 0x11f8, 0x080c, 0x8026, 0x080c, 0x2d1a,
18284 +       0x080c, 0xb76c, 0x0096, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0150,
18285 +       0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, 0x0029, 0x080c, 0x61a9,
18286 +       0x080c, 0xb278, 0x009e, 0x080c, 0x9554, 0x080c, 0x8125, 0x0005,
18287 +       0x080c, 0x95e9, 0x0ce0, 0x9186, 0x0014, 0x1dd0, 0x080c, 0x8026,
18288 +       0x0096, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0d60, 0xa867, 0x0103,
18289 +       0xa877, 0x0000, 0xa87b, 0x0006, 0xa880, 0xc0ec, 0xa882, 0x08f0,
18290 +       0x0002, 0xab70, 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0xab88,
18291 +       0xab6e, 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0x080c, 0x0d84,
18292 +       0x080c, 0x8026, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039,
18293 +       0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x1953, 0x0010, 0x2001,
18294 +       0x1954, 0x2004, 0x601a, 0x6003, 0x000c, 0x080c, 0x8125, 0x0005,
18295 +       0x080c, 0x8026, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039,
18296 +       0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x1953, 0x0010, 0x2001,
18297 +       0x1954, 0x2004, 0x601a, 0x6003, 0x000e, 0x080c, 0x8125, 0x0005,
18298 +       0x9182, 0x0092, 0x1220, 0x9182, 0x0085, 0x0208, 0x0012, 0x0804,
18299 +       0x95e9, 0xabb6, 0xabb6, 0xabb6, 0xabb6, 0xabb8, 0xac05, 0xabb6,
18300 +       0xabb6, 0xabb6, 0xabb6, 0xabb6, 0xabb6, 0xabb6, 0x080c, 0x0d84,
18301 +       0x0096, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0168,
18302 +       0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186,
18303 +       0x0035, 0x1118, 0x009e, 0x0804, 0xac19, 0x080c, 0xb0ad, 0x1118,
18304 +       0x080c, 0xb278, 0x0068, 0x6014, 0x2048, 0xa87c, 0xd0e4, 0x1110,
18305 +       0x080c, 0xb278, 0xa867, 0x0103, 0x080c, 0xb739, 0x080c, 0x61a9,
18306 +       0x00d6, 0x2c68, 0x080c, 0x94fe, 0x01d0, 0x6003, 0x0001, 0x6007,
18307 +       0x001e, 0x600b, 0xffff, 0x2009, 0x026e, 0x210c, 0x613a, 0x2009,
18308 +       0x026f, 0x210c, 0x613e, 0x6910, 0x6112, 0x080c, 0xb4e6, 0x6954,
18309 +       0x6156, 0x6023, 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x2d60,
18310 +       0x00de, 0x080c, 0x9554, 0x009e, 0x0005, 0x6010, 0x00b6, 0x2058,
18311 +       0xb800, 0x00be, 0xd0bc, 0x0598, 0x6034, 0x908c, 0xff00, 0x810f,
18312 +       0x9186, 0x0035, 0x0130, 0x9186, 0x001e, 0x0118, 0x9186, 0x0039,
18313 +       0x1530, 0x00d6, 0x2c68, 0x080c, 0xb6d9, 0x1904, 0xac5e, 0x080c,
18314 +       0x94fe, 0x01d8, 0x6106, 0x6003, 0x0001, 0x6023, 0x0001, 0x6910,
18315 +       0x6112, 0x692c, 0x612e, 0x6930, 0x6132, 0x6934, 0x918c, 0x00ff,
18316 +       0x6136, 0x6938, 0x613a, 0x693c, 0x613e, 0x6954, 0x6156, 0x080c,
18317 +       0xb4e6, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x2d60, 0x00f8, 0x0096,
18318 +       0x6014, 0x2048, 0x080c, 0xb0ad, 0x01c8, 0xa867, 0x0103, 0xa880,
18319 +       0xd0b4, 0x0128, 0xc0ec, 0xa882, 0xa87b, 0x0006, 0x0048, 0xd0bc,
18320 +       0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, 0x0005, 0x080c, 0xb37a,
18321 +       0xa877, 0x0000, 0x080c, 0x61a9, 0x080c, 0xb278, 0x009e, 0x0804,
18322 +       0x9554, 0x0016, 0x0096, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0140,
18323 +       0xa867, 0x0103, 0xa87b, 0x0028, 0xa877, 0x0000, 0x080c, 0x61a9,
18324 +       0x009e, 0x001e, 0x9186, 0x0013, 0x0148, 0x9186, 0x0014, 0x0130,
18325 +       0x9186, 0x0027, 0x0118, 0x080c, 0x95e9, 0x0030, 0x080c, 0x8026,
18326 +       0x080c, 0x9584, 0x080c, 0x8125, 0x0005, 0x0056, 0x0066, 0x0096,
18327 +       0x00a6, 0x2029, 0x0001, 0x9182, 0x0101, 0x1208, 0x0010, 0x2009,
18328 +       0x0100, 0x2130, 0x8304, 0x9098, 0x0018, 0x2009, 0x0020, 0x2011,
18329 +       0x0029, 0x080c, 0xace6, 0x96b2, 0x0020, 0xb004, 0x904d, 0x0110,
18330 +       0x080c, 0x0f60, 0x080c, 0x0fae, 0x0520, 0x8528, 0xa867, 0x0110,
18331 +       0xa86b, 0x0000, 0x2920, 0xb406, 0x968a, 0x003d, 0x1228, 0x2608,
18332 +       0x2011, 0x001b, 0x0499, 0x00a8, 0x96b2, 0x003c, 0x2009, 0x003c,
18333 +       0x2950, 0x2011, 0x001b, 0x0451, 0x0c28, 0x2001, 0x0205, 0x2003,
18334 +       0x0000, 0x00ae, 0x852f, 0x95ad, 0x0003, 0xb566, 0x95ac, 0x0000,
18335 +       0x0048, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad,
18336 +       0x0003, 0xb566, 0x009e, 0x006e, 0x005e, 0x0005, 0x00a6, 0x89ff,
18337 +       0x0158, 0xa804, 0x9055, 0x0130, 0xa807, 0x0000, 0x080c, 0x61a9,
18338 +       0x2a48, 0x0cb8, 0x080c, 0x61a9, 0x00ae, 0x0005, 0x00f6, 0x2079,
18339 +       0x0200, 0x7814, 0x9085, 0x0080, 0x7816, 0xd184, 0x0108, 0x8108,
18340 +       0x810c, 0x20a9, 0x0001, 0xa860, 0x20e8, 0xa85c, 0x9200, 0x20a0,
18341 +       0x20e1, 0x0000, 0x2300, 0x9e00, 0x2098, 0x4003, 0x8318, 0x9386,
18342 +       0x0020, 0x1148, 0x2018, 0x2300, 0x9e00, 0x2098, 0x7814, 0x8000,
18343 +       0x9085, 0x0080, 0x7816, 0x8109, 0x1d80, 0x7817, 0x0000, 0x00fe,
18344 +       0x0005, 0x0066, 0x0126, 0x2091, 0x8000, 0x2031, 0x0001, 0x6020,
18345 +       0x9084, 0x000f, 0x0083, 0x012e, 0x006e, 0x0005, 0x0126, 0x2091,
18346 +       0x8000, 0x0066, 0x2031, 0x0000, 0x6020, 0x9084, 0x000f, 0x001b,
18347 +       0x006e, 0x012e, 0x0005, 0xad4c, 0xad4c, 0xad47, 0xad6e, 0xad3a,
18348 +       0xad47, 0xad6e, 0xad47, 0xad3a, 0xad3a, 0xad47, 0xad47, 0xad47,
18349 +       0xad3a, 0xad3a, 0x080c, 0x0d84, 0x0036, 0x2019, 0x0010, 0x080c,
18350 +       0xc58e, 0x6023, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0x9006,
18351 +       0x0005, 0x9085, 0x0001, 0x0005, 0x0096, 0x86ff, 0x11d8, 0x6014,
18352 +       0x2048, 0x080c, 0xb0ad, 0x01c0, 0xa864, 0x9086, 0x0139, 0x1128,
18353 +       0xa87b, 0x0005, 0xa883, 0x0000, 0x0028, 0x900e, 0x2001, 0x0005,
18354 +       0x080c, 0x63d1, 0x080c, 0xb37a, 0x080c, 0x61a9, 0x080c, 0x9584,
18355 +       0x9085, 0x0001, 0x009e, 0x0005, 0x9006, 0x0ce0, 0x6000, 0x908a,
18356 +       0x0016, 0x1a0c, 0x0d84, 0x0002, 0xad84, 0xada9, 0xad86, 0xadc7,
18357 +       0xada4, 0xad84, 0xad47, 0xad4c, 0xad4c, 0xad47, 0xad47, 0xad47,
18358 +       0xad47, 0xad47, 0xad47, 0xad47, 0x080c, 0x0d84, 0x86ff, 0x11c8,
18359 +       0x6020, 0x9086, 0x0006, 0x01a8, 0x0096, 0x6014, 0x2048, 0x080c,
18360 +       0xb0ad, 0x0110, 0x080c, 0xb37a, 0x009e, 0x080c, 0xb71b, 0x6007,
18361 +       0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x7bcb, 0x080c,
18362 +       0x8125, 0x9085, 0x0001, 0x0005, 0x0066, 0x080c, 0x17b0, 0x006e,
18363 +       0x08e8, 0x00e6, 0x2071, 0x19b4, 0x7024, 0x9c06, 0x1110, 0x080c,
18364 +       0x8d59, 0x6020, 0x9084, 0x000f, 0x9086, 0x0006, 0x1150, 0x0086,
18365 +       0x0096, 0x2049, 0x0001, 0x2c40, 0x080c, 0x8ef6, 0x009e, 0x008e,
18366 +       0x0010, 0x080c, 0x8c6a, 0x00ee, 0x1908, 0x0804, 0xad47, 0x0036,
18367 +       0x00e6, 0x2071, 0x19b4, 0x703c, 0x9c06, 0x1138, 0x901e, 0x080c,
18368 +       0x8dfe, 0x00ee, 0x003e, 0x0804, 0xad86, 0x080c, 0x901f, 0x00ee,
18369 +       0x003e, 0x1904, 0xad86, 0x0804, 0xad47, 0x00c6, 0x6020, 0x9084,
18370 +       0x000f, 0x0013, 0x00ce, 0x0005, 0xadfa, 0xaea2, 0xaff8, 0xae04,
18371 +       0x9584, 0xadfa, 0xc580, 0xb779, 0xaea2, 0xadf3, 0xb077, 0xadf3,
18372 +       0xadf3, 0xadf3, 0xadf3, 0x080c, 0x0d84, 0x080c, 0xb295, 0x1110,
18373 +       0x080c, 0x9e99, 0x0005, 0x080c, 0x8026, 0x080c, 0x8125, 0x0804,
18374 +       0x9554, 0x601b, 0x0001, 0x0005, 0x080c, 0xb0ad, 0x0130, 0x6014,
18375 +       0x0096, 0x2048, 0x2c00, 0xa896, 0x009e, 0x6000, 0x908a, 0x0016,
18376 +       0x1a0c, 0x0d84, 0x0002, 0xae23, 0xae25, 0xae49, 0xae5d, 0xae81,
18377 +       0xae23, 0xadfa, 0xadfa, 0xadfa, 0xae5d, 0xae5d, 0xae23, 0xae23,
18378 +       0xae23, 0xae23, 0xae67, 0x080c, 0x0d84, 0x00e6, 0x6014, 0x0096,
18379 +       0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x2071, 0x19b4, 0x7024,
18380 +       0x9c06, 0x01a0, 0x080c, 0x8c6a, 0x080c, 0xb71b, 0x6007, 0x0085,
18381 +       0x6003, 0x000b, 0x6023, 0x0002, 0x2001, 0x1954, 0x2004, 0x601a,
18382 +       0x080c, 0x7bcb, 0x080c, 0x8125, 0x00ee, 0x0005, 0x601b, 0x0001,
18383 +       0x0cd8, 0x0096, 0x6014, 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e,
18384 +       0x080c, 0xb71b, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002,
18385 +       0x080c, 0x7bcb, 0x080c, 0x8125, 0x0005, 0x0096, 0x601b, 0x0001,
18386 +       0x6014, 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x0005, 0x080c,
18387 +       0x4df2, 0x01a8, 0x6014, 0x0096, 0x904d, 0x0180, 0xa864, 0xa867,
18388 +       0x0103, 0xa87b, 0x0006, 0x9086, 0x0139, 0x1140, 0xa867, 0x0139,
18389 +       0xa897, 0x4005, 0xa89b, 0x0004, 0x080c, 0x61a9, 0x009e, 0x0804,
18390 +       0x9554, 0x6014, 0x0096, 0x904d, 0x01c0, 0xa97c, 0xd1e4, 0x01a8,
18391 +       0xa884, 0x009e, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0x2001,
18392 +       0x0037, 0x2c08, 0x080c, 0x1492, 0x6000, 0x9086, 0x0004, 0x1120,
18393 +       0x2009, 0x0048, 0x080c, 0x95ce, 0x0005, 0x009e, 0x080c, 0x17b0,
18394 +       0x0804, 0xae49, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d84, 0x000b,
18395 +       0x0005, 0xaeb9, 0xae01, 0xaebb, 0xaeb9, 0xaebb, 0xaebb, 0xadfb,
18396 +       0xaeb9, 0xadf5, 0xadf5, 0xaeb9, 0xaeb9, 0xaeb9, 0xaeb9, 0xaeb9,
18397 +       0xaeb9, 0x080c, 0x0d84, 0x6010, 0x00b6, 0x2058, 0xb804, 0x9084,
18398 +       0x00ff, 0x00be, 0x908a, 0x000c, 0x1a0c, 0x0d84, 0x00b6, 0x0013,
18399 +       0x00be, 0x0005, 0xaed6, 0xaf92, 0xaed8, 0xaf13, 0xaed8, 0xaf13,
18400 +       0xaed8, 0xaee6, 0xaed6, 0xaf13, 0xaed6, 0xaf02, 0x080c, 0x0d84,
18401 +       0x6004, 0x908e, 0x0016, 0x0598, 0x908e, 0x0004, 0x0580, 0x908e,
18402 +       0x0002, 0x0568, 0x908e, 0x0052, 0x0904, 0xaf8e, 0x6004, 0x080c,
18403 +       0xb295, 0x0904, 0xafab, 0x908e, 0x0021, 0x0904, 0xafaf, 0x908e,
18404 +       0x0022, 0x0904, 0xaff3, 0x908e, 0x003d, 0x0904, 0xafaf, 0x908e,
18405 +       0x0039, 0x0904, 0xafb3, 0x908e, 0x0035, 0x0904, 0xafb3, 0x908e,
18406 +       0x001e, 0x0178, 0x908e, 0x0001, 0x1140, 0x6010, 0x2058, 0xb804,
18407 +       0x9084, 0x00ff, 0x9086, 0x0006, 0x0110, 0x080c, 0x2d1a, 0x080c,
18408 +       0x9e99, 0x0804, 0x9584, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016,
18409 +       0x0904, 0xaf7f, 0x9186, 0x0002, 0x15b8, 0x2001, 0x1836, 0x2004,
18410 +       0xd08c, 0x1178, 0x080c, 0x6877, 0x1160, 0x2001, 0x194c, 0x2003,
18411 +       0x0001, 0x2001, 0x1800, 0x2003, 0x0001, 0x080c, 0x67be, 0x0804,
18412 +       0xafdc, 0x6010, 0x2058, 0x2001, 0x1836, 0x2004, 0xd0ac, 0x1904,
18413 +       0xafdc, 0xb8a0, 0xd0bc, 0x1904, 0xafdc, 0xb840, 0x9084, 0x00ff,
18414 +       0x9005, 0x0190, 0x8001, 0xb842, 0x6017, 0x0000, 0x6023, 0x0007,
18415 +       0x601b, 0x0398, 0x6043, 0x0000, 0x080c, 0x94fe, 0x0128, 0x2b00,
18416 +       0x6012, 0x6023, 0x0001, 0x0458, 0x00de, 0x00ce, 0x6004, 0x908e,
18417 +       0x0002, 0x11a0, 0x6010, 0x2058, 0xb8a0, 0x9086, 0x007e, 0x1170,
18418 +       0x2009, 0x1836, 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0x1800,
18419 +       0x080c, 0x5677, 0x00ee, 0x080c, 0x9e99, 0x0030, 0x080c, 0x9e99,
18420 +       0x080c, 0x2d1a, 0x080c, 0xb76c, 0x00e6, 0x0126, 0x2091, 0x8000,
18421 +       0x080c, 0x2d3f, 0x012e, 0x00ee, 0x080c, 0x9584, 0x0005, 0x2001,
18422 +       0x0002, 0x080c, 0x5b61, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c,
18423 +       0x7c1d, 0x080c, 0x8125, 0x00de, 0x00ce, 0x0c80, 0x080c, 0x2d3f,
18424 +       0x0804, 0xaf0f, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016, 0x0d38,
18425 +       0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0904, 0xaf54,
18426 +       0x8001, 0xb842, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x080c, 0x8125,
18427 +       0x00de, 0x00ce, 0x0898, 0x080c, 0x9e99, 0x0804, 0xaf11, 0x080c,
18428 +       0x9ed5, 0x0804, 0xaf11, 0x00d6, 0x2c68, 0x6104, 0x080c, 0xb6d9,
18429 +       0x00de, 0x0118, 0x080c, 0x9554, 0x00f0, 0x6004, 0x8007, 0x6134,
18430 +       0x918c, 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b,
18431 +       0x6023, 0x0002, 0x603c, 0x600a, 0x2001, 0x1954, 0x2004, 0x601a,
18432 +       0x602c, 0x2c08, 0x2060, 0x6024, 0xc0b5, 0x6026, 0x2160, 0x080c,
18433 +       0x7bcb, 0x080c, 0x8125, 0x0005, 0x00de, 0x00ce, 0x080c, 0x9e99,
18434 +       0x080c, 0x2d1a, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2d3f,
18435 +       0x6017, 0x0000, 0x6023, 0x0007, 0x601b, 0x0398, 0x6043, 0x0000,
18436 +       0x012e, 0x00ee, 0x0005, 0x080c, 0x994c, 0x1904, 0xafab, 0x0005,
18437 +       0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d84, 0x0096, 0x00d6, 0x001b,
18438 +       0x00de, 0x009e, 0x0005, 0xb013, 0xb013, 0xb013, 0xb013, 0xb013,
18439 +       0xb013, 0xb013, 0xb013, 0xb013, 0xadfa, 0xb013, 0xae01, 0xb015,
18440 +       0xae01, 0xb022, 0xb013, 0x080c, 0x0d84, 0x6004, 0x9086, 0x008b,
18441 +       0x0148, 0x6007, 0x008b, 0x6003, 0x000d, 0x080c, 0x7bcb, 0x080c,
18442 +       0x8125, 0x0005, 0x080c, 0xb74d, 0x0118, 0x080c, 0xb75e, 0x0010,
18443 +       0x080c, 0xb76c, 0x080c, 0xb278, 0x080c, 0xb0ad, 0x0570, 0x080c,
18444 +       0x2d1a, 0x080c, 0xb0ad, 0x0168, 0x6014, 0x2048, 0xa867, 0x0103,
18445 +       0xa87b, 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ed, 0xa882, 0x080c,
18446 +       0x61a9, 0x2c68, 0x080c, 0x94fe, 0x0150, 0x6810, 0x6012, 0x080c,
18447 +       0xb4e6, 0x00c6, 0x2d60, 0x080c, 0x9584, 0x00ce, 0x0008, 0x2d60,
18448 +       0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001,
18449 +       0x080c, 0x7c1d, 0x080c, 0x8125, 0x00c8, 0x080c, 0xb74d, 0x0138,
18450 +       0x6034, 0x9086, 0x4000, 0x1118, 0x080c, 0x2d1a, 0x08d0, 0x6034,
18451 +       0x908c, 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035,
18452 +       0x1118, 0x080c, 0x2d1a, 0x0868, 0x080c, 0x9584, 0x0005, 0x6000,
18453 +       0x908a, 0x0016, 0x1a0c, 0x0d84, 0x0002, 0xb08d, 0xb08d, 0xb08f,
18454 +       0xb08f, 0xb08f, 0xb08d, 0xb08d, 0xb08d, 0xb08d, 0xb08d, 0xb08d,
18455 +       0xb08d, 0xb08d, 0xb08d, 0xb08d, 0xb08d, 0x080c, 0x0d84, 0x080c,
18456 +       0x901f, 0x6114, 0x0096, 0x2148, 0xa87b, 0x0006, 0x080c, 0x61a9,
18457 +       0x009e, 0x0804, 0x9554, 0x9284, 0x0007, 0x1158, 0x9282, 0x1cd0,
18458 +       0x0240, 0x2001, 0x1818, 0x2004, 0x9202, 0x1218, 0x9085, 0x0001,
18459 +       0x0005, 0x9006, 0x0ce8, 0x0096, 0x0018, 0x0096, 0x6014, 0x2048,
18460 +       0x9984, 0xf000, 0x9086, 0xf000, 0x0110, 0x080c, 0x1057, 0x009e,
18461 +       0x0005, 0x00e6, 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000,
18462 +       0x2061, 0x1cd0, 0x2071, 0x1800, 0x734c, 0x706c, 0x9302, 0x12a8,
18463 +       0x6020, 0x9206, 0x1160, 0x080c, 0xb460, 0x0148, 0x080c, 0xb295,
18464 +       0x1110, 0x080c, 0x9e99, 0x00c6, 0x080c, 0x9554, 0x00ce, 0x9ce0,
18465 +       0x0018, 0x7060, 0x9c02, 0x1208, 0x0c38, 0x012e, 0x000e, 0x003e,
18466 +       0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0x9188, 0x1000,
18467 +       0x210c, 0x81ff, 0x0128, 0x2061, 0x1a72, 0x6112, 0x080c, 0x2d1a,
18468 +       0x9006, 0x0010, 0x9085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005,
18469 +       0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x94fe, 0x01d8, 0x080c,
18470 +       0x4df2, 0x0110, 0x662e, 0x0008, 0x6616, 0x2b00, 0x6012, 0x080c,
18471 +       0x4df2, 0x0118, 0x080c, 0xb1bc, 0x0168, 0x080c, 0xb4e6, 0x6023,
18472 +       0x0003, 0x2009, 0x004b, 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e,
18473 +       0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000,
18474 +       0xbaa0, 0x080c, 0x95a1, 0x0590, 0x080c, 0x4df2, 0x0118, 0x602f,
18475 +       0x0000, 0x0010, 0x6017, 0x0000, 0x2b00, 0x6012, 0x080c, 0xb4e6,
18476 +       0x6023, 0x0003, 0x0016, 0x080c, 0x7d55, 0x0076, 0x903e, 0x080c,
18477 +       0x7c4d, 0x2c08, 0x080c, 0xc73e, 0x007e, 0x001e, 0xd184, 0x0128,
18478 +       0x080c, 0x9554, 0x9085, 0x0001, 0x0070, 0x080c, 0x4df2, 0x0128,
18479 +       0xd18c, 0x1170, 0x080c, 0xb1bc, 0x0148, 0x2009, 0x004c, 0x080c,
18480 +       0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8,
18481 +       0x2900, 0x6016, 0x0c90, 0x2009, 0x004d, 0x0010, 0x2009, 0x004e,
18482 +       0x00f6, 0x00c6, 0x0046, 0x0016, 0x080c, 0x94fe, 0x2c78, 0x01d8,
18483 +       0x080c, 0x4df2, 0x0110, 0x7e2e, 0x0008, 0x7e16, 0x2b00, 0x7812,
18484 +       0x7823, 0x0003, 0x2021, 0x0005, 0x080c, 0xb1ce, 0x2f60, 0x080c,
18485 +       0x4df2, 0x0118, 0x080c, 0xb1bc, 0x0130, 0x001e, 0x0016, 0x080c,
18486 +       0x95ce, 0x9085, 0x0001, 0x001e, 0x004e, 0x00ce, 0x00fe, 0x0005,
18487 +       0x00f6, 0x00c6, 0x0046, 0x080c, 0x94fe, 0x2c78, 0x0530, 0x080c,
18488 +       0x4df2, 0x0110, 0x7e2e, 0x0008, 0x7e16, 0x2b00, 0x7812, 0x7823,
18489 +       0x0003, 0x0096, 0x2021, 0x0004, 0x0489, 0x009e, 0x2001, 0x194d,
18490 +       0x200c, 0xd1fc, 0x0120, 0x2f60, 0x080c, 0x9554, 0x0060, 0x2f60,
18491 +       0x080c, 0x4df2, 0x0120, 0xd18c, 0x1160, 0x0071, 0x0130, 0x2009,
18492 +       0x0052, 0x080c, 0x95ce, 0x9085, 0x0001, 0x004e, 0x00ce, 0x00fe,
18493 +       0x0005, 0x2900, 0x7816, 0x0c98, 0x00c6, 0x080c, 0x441f, 0x00ce,
18494 +       0x1120, 0x080c, 0x9554, 0x9006, 0x0005, 0xa867, 0x0000, 0xa86b,
18495 +       0x8000, 0x2900, 0x6016, 0x9085, 0x0001, 0x0005, 0x0096, 0x0076,
18496 +       0x0126, 0x2091, 0x8000, 0x080c, 0x5d41, 0x0158, 0x2001, 0xb1d3,
18497 +       0x0006, 0x900e, 0x2400, 0x080c, 0x63d1, 0x080c, 0x61a9, 0x000e,
18498 +       0x0807, 0x2418, 0x080c, 0x7fc0, 0xbaa0, 0x0086, 0x2041, 0x0001,
18499 +       0x2039, 0x0001, 0x2608, 0x080c, 0x7d6d, 0x008e, 0x080c, 0x7c4d,
18500 +       0x2f08, 0x2648, 0x080c, 0xc73e, 0xb93c, 0x81ff, 0x090c, 0x7e2b,
18501 +       0x080c, 0x8125, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126,
18502 +       0x2091, 0x8000, 0x080c, 0x94fe, 0x0190, 0x660a, 0x2b08, 0x6112,
18503 +       0x080c, 0xb4e6, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x001f,
18504 +       0x080c, 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006,
18505 +       0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x95a1, 0x01b8,
18506 +       0x660a, 0x2b08, 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0008, 0x2900,
18507 +       0x6016, 0x00f6, 0x2c78, 0x080c, 0x150d, 0x00fe, 0x2009, 0x0021,
18508 +       0x080c, 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006,
18509 +       0x0cd8, 0x2009, 0x003d, 0x00c6, 0x0126, 0x0016, 0x2091, 0x8000,
18510 +       0x080c, 0x94fe, 0x0198, 0x660a, 0x2b08, 0x6112, 0x080c, 0xb4e6,
18511 +       0x6023, 0x0001, 0x2900, 0x6016, 0x001e, 0x0016, 0x080c, 0x95ce,
18512 +       0x9085, 0x0001, 0x001e, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd0,
18513 +       0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x95a1, 0x0188, 0x2b08,
18514 +       0x6112, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009,
18515 +       0x0000, 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005,
18516 +       0x9006, 0x0cd8, 0x2009, 0x0044, 0x0830, 0x2009, 0x0049, 0x0818,
18517 +       0x0026, 0x00b6, 0x6210, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211,
18518 +       0xba3e, 0x00be, 0x002e, 0x0005, 0x0006, 0x0016, 0x6004, 0x908e,
18519 +       0x0002, 0x0140, 0x908e, 0x0003, 0x0128, 0x908e, 0x0004, 0x0110,
18520 +       0x9085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0096, 0x6014,
18521 +       0x904d, 0x0148, 0xa864, 0x9086, 0x0139, 0x0138, 0xa868, 0xd0fc,
18522 +       0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x009e, 0x000e, 0x0005,
18523 +       0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x94fe, 0x0198, 0x2b08,
18524 +       0x6112, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x2900, 0x6016, 0x080c,
18525 +       0x2d1a, 0x2009, 0x0028, 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e,
18526 +       0x00ce, 0x0005, 0x9006, 0x0cd8, 0x9186, 0x0015, 0x11a8, 0x2011,
18527 +       0x1822, 0x2204, 0x9086, 0x0074, 0x1178, 0x00b6, 0x080c, 0xa0c5,
18528 +       0x00be, 0x080c, 0xa2bc, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c,
18529 +       0x7c1d, 0x080c, 0x8125, 0x0078, 0x6014, 0x0096, 0x2048, 0xa868,
18530 +       0x009e, 0xd0fc, 0x0148, 0x2001, 0x0001, 0x080c, 0xb69a, 0x080c,
18531 +       0x9e99, 0x080c, 0x9554, 0x0005, 0x0096, 0x6014, 0x904d, 0x090c,
18532 +       0x0d84, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b,
18533 +       0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9,
18534 +       0x012e, 0x009e, 0x080c, 0x9554, 0x0c30, 0x0096, 0x9186, 0x0016,
18535 +       0x1128, 0x2001, 0x0004, 0x080c, 0x5b61, 0x00e8, 0x9186, 0x0015,
18536 +       0x1510, 0x2011, 0x1822, 0x2204, 0x9086, 0x0014, 0x11e0, 0x6010,
18537 +       0x00b6, 0x2058, 0x080c, 0x5ca8, 0x00be, 0x080c, 0xa38d, 0x1198,
18538 +       0x6010, 0x00b6, 0x2058, 0xb890, 0x00be, 0x9005, 0x0160, 0x2001,
18539 +       0x0006, 0x080c, 0x5b61, 0x6014, 0x2048, 0xa868, 0xd0fc, 0x0170,
18540 +       0x080c, 0x9920, 0x0048, 0x6014, 0x2048, 0xa868, 0xd0fc, 0x0528,
18541 +       0x080c, 0x9e99, 0x080c, 0x9554, 0x009e, 0x0005, 0x6014, 0x6310,
18542 +       0x2358, 0x904d, 0x090c, 0x0d84, 0xa87b, 0x0000, 0xa883, 0x0000,
18543 +       0xa897, 0x4000, 0x900e, 0x080c, 0x5e2d, 0x1108, 0xc185, 0xb800,
18544 +       0xd0bc, 0x0108, 0xc18d, 0xa99a, 0x0126, 0x2091, 0x8000, 0x080c,
18545 +       0x61a9, 0x012e, 0x080c, 0x9554, 0x08f8, 0x6014, 0x904d, 0x090c,
18546 +       0x0d84, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b,
18547 +       0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9,
18548 +       0x012e, 0x080c, 0x9554, 0x0840, 0xa878, 0x9086, 0x0005, 0x1108,
18549 +       0x0009, 0x0005, 0xa880, 0xc0ad, 0xa882, 0x0005, 0x6043, 0x0000,
18550 +       0x6017, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, 0x7bcb,
18551 +       0x080c, 0x8125, 0x0005, 0x00c6, 0x6010, 0x00b6, 0x2058, 0xb800,
18552 +       0x00be, 0xd0bc, 0x0120, 0x6020, 0x9084, 0x000f, 0x0013, 0x00ce,
18553 +       0x0005, 0xadfa, 0xb3aa, 0xb3aa, 0xb3ad, 0xca0f, 0xca2a, 0xca2d,
18554 +       0xadfa, 0xadfa, 0xadfa, 0xadfa, 0xadfa, 0xadfa, 0xadfa, 0xadfa,
18555 +       0x080c, 0x0d84, 0xa001, 0xa001, 0x0005, 0x0000, 0x6010, 0x00b6,
18556 +       0x2058, 0xb800, 0x00be, 0xd0bc, 0x0550, 0x00f6, 0x2c78, 0x080c,
18557 +       0x94fe, 0x1128, 0x2001, 0x1955, 0x2004, 0x7842, 0x00f8, 0x7810,
18558 +       0x6012, 0x080c, 0xb4e6, 0x7820, 0x9086, 0x0003, 0x0128, 0x7808,
18559 +       0x603a, 0x2f00, 0x603e, 0x0020, 0x7808, 0x603e, 0x2f00, 0x603a,
18560 +       0x602e, 0x6023, 0x0001, 0x6007, 0x0035, 0x6003, 0x0001, 0x7954,
18561 +       0x6156, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x2f60, 0x00fe, 0x0005,
18562 +       0x0016, 0x0096, 0x6814, 0x2048, 0xa87c, 0xd0e4, 0x0170, 0xc0e4,
18563 +       0xa87e, 0xa877, 0x0000, 0xa893, 0x0000, 0xa88f, 0x0000, 0xd0cc,
18564 +       0x0120, 0xa878, 0x2048, 0x080c, 0x0f60, 0x6830, 0x6036, 0x908e,
18565 +       0x0001, 0x0148, 0x6803, 0x0002, 0x9086, 0x0005, 0x0168, 0x9006,
18566 +       0x602e, 0x6032, 0x00c8, 0x681c, 0xc085, 0x681e, 0x6803, 0x0004,
18567 +       0x6824, 0xc0f4, 0xc0d5, 0x6826, 0x6814, 0x2048, 0xa8ac, 0x6938,
18568 +       0x9102, 0xa8b0, 0x693c, 0x9103, 0x1e50, 0x683c, 0x602e, 0x6838,
18569 +       0x9084, 0xfffc, 0x683a, 0x6032, 0x2d00, 0x603a, 0x6808, 0x603e,
18570 +       0x6910, 0x6112, 0x6954, 0x6156, 0x6023, 0x0001, 0x6007, 0x0039,
18571 +       0x6003, 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x009e, 0x001e,
18572 +       0x0005, 0x6024, 0xd0d4, 0x0510, 0xd0f4, 0x11f8, 0x6038, 0x940a,
18573 +       0x603c, 0x9303, 0x0230, 0x9105, 0x0120, 0x6024, 0xc0d4, 0xc0f5,
18574 +       0x0098, 0x643a, 0x633e, 0xac3e, 0xab42, 0x0046, 0x0036, 0x2400,
18575 +       0xacac, 0x9402, 0xa836, 0x2300, 0xabb0, 0x9303, 0xa83a, 0x003e,
18576 +       0x004e, 0x6024, 0xc0d4, 0x0000, 0x6026, 0x0005, 0xd0f4, 0x1138,
18577 +       0xa83c, 0x603a, 0xa840, 0x603e, 0x6024, 0xc0f5, 0x6026, 0x0005,
18578 +       0x0006, 0x0016, 0x6004, 0x908e, 0x0034, 0x01b8, 0x908e, 0x0035,
18579 +       0x01a0, 0x908e, 0x0036, 0x0188, 0x908e, 0x0037, 0x0170, 0x908e,
18580 +       0x0038, 0x0158, 0x908e, 0x0039, 0x0140, 0x908e, 0x003a, 0x0128,
18581 +       0x908e, 0x003b, 0x0110, 0x9085, 0x0001, 0x001e, 0x000e, 0x0005,
18582 +       0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x2001, 0x194f, 0x200c,
18583 +       0x8000, 0x2014, 0x2001, 0x0032, 0x080c, 0x7a4b, 0x2001, 0x1953,
18584 +       0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, 0x1951, 0x200c,
18585 +       0x8000, 0x2014, 0x2071, 0x193b, 0x711a, 0x721e, 0x2001, 0x0064,
18586 +       0x080c, 0x7a4b, 0x2001, 0x1954, 0x82ff, 0x1110, 0x2011, 0x0014,
18587 +       0x2202, 0x2001, 0x1955, 0x9288, 0x000a, 0x2102, 0x2001, 0x1a54,
18588 +       0x2102, 0x2001, 0x0032, 0x080c, 0x1492, 0x080c, 0x5f0e, 0x00ee,
18589 +       0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x00e6,
18590 +       0x2001, 0x1953, 0x2003, 0x0028, 0x2001, 0x1954, 0x2003, 0x0014,
18591 +       0x2071, 0x193b, 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001, 0x1955,
18592 +       0x2009, 0x001e, 0x2102, 0x2001, 0x1a54, 0x2102, 0x2001, 0x0032,
18593 +       0x080c, 0x1492, 0x00ee, 0x001e, 0x000e, 0x0005, 0x0096, 0x6058,
18594 +       0x904d, 0x0110, 0x080c, 0x0fe0, 0x009e, 0x0005, 0x0005, 0x00c6,
18595 +       0x0126, 0x2091, 0x8000, 0x080c, 0x94fe, 0x0180, 0x2b08, 0x6112,
18596 +       0x0ca9, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x0033, 0x080c,
18597 +       0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8,
18598 +       0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1500,
18599 +       0x7088, 0x9086, 0x0018, 0x11e0, 0x6014, 0x2048, 0xaa3c, 0xd2e4,
18600 +       0x1160, 0x2c78, 0x080c, 0x8315, 0x01d8, 0x7074, 0xaa50, 0x9206,
18601 +       0x1160, 0x7078, 0xaa54, 0x9206, 0x1140, 0x6210, 0x00b6, 0x2258,
18602 +       0xbaa0, 0x00be, 0x900e, 0x080c, 0x2d5f, 0x080c, 0x9920, 0x0020,
18603 +       0x080c, 0x9e99, 0x080c, 0x9554, 0x00fe, 0x00ee, 0x009e, 0x0005,
18604 +       0x7058, 0xaa54, 0x9206, 0x0d48, 0x0c80, 0x00c6, 0x0126, 0x2091,
18605 +       0x8000, 0x080c, 0x94fe, 0x0188, 0x2b08, 0x6112, 0x080c, 0xb4e6,
18606 +       0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x004d, 0x080c, 0x95ce,
18607 +       0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6,
18608 +       0x0126, 0x2091, 0x8000, 0x0016, 0x080c, 0x94fe, 0x0180, 0x2b08,
18609 +       0x6112, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x2900, 0x6016, 0x001e,
18610 +       0x080c, 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x001e,
18611 +       0x9006, 0x0cd0, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066,
18612 +       0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1568,
18613 +       0x7188, 0x6014, 0x2048, 0xa814, 0x8003, 0x9106, 0x1530, 0x20e1,
18614 +       0x0000, 0x2001, 0x196d, 0x2003, 0x0000, 0x6014, 0x2048, 0xa830,
18615 +       0x20a8, 0x8906, 0x8006, 0x8007, 0x9094, 0x003f, 0x22e8, 0x9084,
18616 +       0xffc0, 0x9080, 0x001b, 0x20a0, 0x2001, 0x196d, 0x0016, 0x200c,
18617 +       0x080c, 0xbcf8, 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c38,
18618 +       0x6014, 0x2048, 0xa867, 0x0103, 0x0010, 0x080c, 0x9e99, 0x080c,
18619 +       0x9554, 0x00fe, 0x00ee, 0x009e, 0x006e, 0x005e, 0x004e, 0x003e,
18620 +       0x002e, 0x001e, 0x0005, 0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800,
18621 +       0x9186, 0x0015, 0x11b8, 0x7088, 0x9086, 0x0004, 0x1198, 0x6014,
18622 +       0x2048, 0x2c78, 0x080c, 0x8315, 0x01a8, 0x7074, 0xaa74, 0x9206,
18623 +       0x1130, 0x7078, 0xaa78, 0x9206, 0x1110, 0x080c, 0x2d1a, 0x080c,
18624 +       0x9920, 0x0020, 0x080c, 0x9e99, 0x080c, 0x9554, 0x00fe, 0x00ee,
18625 +       0x009e, 0x0005, 0x7058, 0xaa78, 0x9206, 0x0d78, 0x0c80, 0x0096,
18626 +       0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1538, 0x7088,
18627 +       0x9086, 0x0004, 0x1518, 0x6014, 0x2048, 0x2c78, 0x080c, 0x8315,
18628 +       0x05b8, 0x7074, 0xaacc, 0x9206, 0x1180, 0x7078, 0xaad0, 0x9206,
18629 +       0x1160, 0x080c, 0x2d1a, 0x0016, 0xa998, 0xaab0, 0x9284, 0x1000,
18630 +       0xc0fd, 0x080c, 0x4da2, 0x001e, 0x0010, 0x080c, 0x4b95, 0xa87b,
18631 +       0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x0060, 0x080c, 0x4b95,
18632 +       0x6014, 0x2048, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005,
18633 +       0xa89b, 0x0004, 0x0126, 0x2091, 0x8000, 0xa867, 0x0139, 0x080c,
18634 +       0x61a9, 0x012e, 0x080c, 0x9554, 0x00fe, 0x00ee, 0x009e, 0x0005,
18635 +       0x7058, 0xaad0, 0x9206, 0x0968, 0x08c0, 0x0016, 0x0026, 0xa87c,
18636 +       0xd0ac, 0x0178, 0xa938, 0xaa34, 0x2100, 0x9205, 0x0150, 0xa890,
18637 +       0x9106, 0x1118, 0xa88c, 0x9206, 0x0120, 0xa992, 0xaa8e, 0x9085,
18638 +       0x0001, 0x002e, 0x001e, 0x0005, 0x00b6, 0x00d6, 0x0036, 0x0096,
18639 +       0x6314, 0x2348, 0xa87a, 0xa982, 0x929e, 0x4000, 0x1580, 0x6310,
18640 +       0x00c6, 0x2358, 0x2009, 0x0000, 0xa868, 0xd0f4, 0x1140, 0x080c,
18641 +       0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0xaa96,
18642 +       0xa99a, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031,
18643 +       0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x080c,
18644 +       0x0f2b, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x0035, 0x20a0, 0xb8b8,
18645 +       0x9080, 0x000a, 0x2098, 0x080c, 0x0f2b, 0x00ce, 0x0090, 0xaa96,
18646 +       0x3918, 0x9398, 0x0007, 0x231c, 0x6004, 0x9086, 0x0016, 0x0110,
18647 +       0xa89b, 0x0004, 0xaba2, 0x6310, 0x2358, 0xb804, 0x9084, 0x00ff,
18648 +       0xa89e, 0x080c, 0x619c, 0x6017, 0x0000, 0x009e, 0x003e, 0x00de,
18649 +       0x00be, 0x0005, 0x0026, 0x0036, 0x0046, 0x00b6, 0x0096, 0x00f6,
18650 +       0x6214, 0x2248, 0x6210, 0x2258, 0x2079, 0x0260, 0x9096, 0x0000,
18651 +       0x11a0, 0xb814, 0x9084, 0x00ff, 0x900e, 0x080c, 0x23fd, 0x2118,
18652 +       0x831f, 0x939c, 0xff00, 0x7838, 0x9084, 0x00ff, 0x931d, 0x7c3c,
18653 +       0x2011, 0x8018, 0x080c, 0x447f, 0x00a8, 0x9096, 0x0001, 0x1148,
18654 +       0x89ff, 0x0180, 0xa89b, 0x000d, 0x7838, 0xa8a6, 0x783c, 0xa8aa,
18655 +       0x0048, 0x9096, 0x0002, 0x1130, 0xa89b, 0x000d, 0x7838, 0xa8a6,
18656 +       0x783c, 0xa8aa, 0x00fe, 0x009e, 0x00be, 0x004e, 0x003e, 0x002e,
18657 +       0x0005, 0x00c6, 0x0026, 0x0016, 0x9186, 0x0035, 0x0110, 0x6a38,
18658 +       0x0008, 0x6a2c, 0x080c, 0xb09b, 0x01f0, 0x2260, 0x6120, 0x9186,
18659 +       0x0003, 0x0118, 0x9186, 0x0006, 0x1190, 0x6838, 0x9206, 0x0140,
18660 +       0x683c, 0x9206, 0x1160, 0x6108, 0x6838, 0x9106, 0x1140, 0x0020,
18661 +       0x6008, 0x693c, 0x9106, 0x1118, 0x6010, 0x6910, 0x9106, 0x001e,
18662 +       0x002e, 0x00ce, 0x0005, 0x9085, 0x0001, 0x0cc8, 0xa974, 0xd1cc,
18663 +       0x0188, 0x918c, 0x00ff, 0x918e, 0x0002, 0x1160, 0xa9a8, 0x918c,
18664 +       0x0f00, 0x810f, 0x918e, 0x0001, 0x1128, 0xa834, 0xa938, 0x9115,
18665 +       0x190c, 0xa82a, 0x0005, 0x0036, 0x2019, 0x0001, 0x0010, 0x0036,
18666 +       0x901e, 0x0459, 0x01a0, 0x080c, 0xb0ad, 0x0188, 0x6037, 0x4000,
18667 +       0x6014, 0x6017, 0x0000, 0x0096, 0x2048, 0xa87c, 0xa867, 0x0103,
18668 +       0xa877, 0x0000, 0x83ff, 0x1129, 0x080c, 0x61a9, 0x009e, 0x003e,
18669 +       0x0005, 0xa880, 0xd0b4, 0x0128, 0xa87b, 0x0006, 0xc0ec, 0xa882,
18670 +       0x0048, 0xd0bc, 0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, 0x0005,
18671 +       0x080c, 0xb37a, 0xa877, 0x0000, 0x0005, 0x2001, 0x180f, 0x2004,
18672 +       0xd0ec, 0x0005, 0x0006, 0x2001, 0x180f, 0x2004, 0xd0f4, 0x000e,
18673 +       0x0005, 0x2001, 0x180f, 0x2004, 0xd0e4, 0x0005, 0x0036, 0x0046,
18674 +       0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, 0x2021, 0x0007, 0x080c,
18675 +       0x44f9, 0x004e, 0x003e, 0x0005, 0x0c61, 0x1d81, 0x0005, 0x2001,
18676 +       0x1953, 0x2004, 0x601a, 0x0005, 0x2001, 0x1955, 0x2004, 0x6042,
18677 +       0x0005, 0x080c, 0x9554, 0x0804, 0x8125, 0x00b6, 0x0066, 0x6000,
18678 +       0x90b2, 0x0016, 0x1a0c, 0x0d84, 0x001b, 0x006e, 0x00be, 0x0005,
18679 +       0xb798, 0xbdf9, 0xbf54, 0xb798, 0xb798, 0xb798, 0xb798, 0xb798,
18680 +       0xb7cf, 0xbfcf, 0xb798, 0xb798, 0xb798, 0xb798, 0xb798, 0xb798,
18681 +       0x080c, 0x0d84, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d84,
18682 +       0x0013, 0x006e, 0x0005, 0xb7b3, 0xc519, 0xb7b3, 0xb7b3, 0xb7b3,
18683 +       0xb7b3, 0xb7b3, 0xb7b3, 0xc4c8, 0xc56d, 0xb7b3, 0xcb4c, 0xcb82,
18684 +       0xcb4c, 0xcb82, 0xb7b3, 0x080c, 0x0d84, 0x6000, 0x9082, 0x0016,
18685 +       0x1a0c, 0x0d84, 0x6000, 0x000a, 0x0005, 0xb7cd, 0xc1ad, 0xc29d,
18686 +       0xc2bf, 0xc366, 0xb7cd, 0xc43f, 0xc3ee, 0xbfdb, 0xc49e, 0xc4b3,
18687 +       0xb7cd, 0xb7cd, 0xb7cd, 0xb7cd, 0xb7cd, 0x080c, 0x0d84, 0x91b2,
18688 +       0x0053, 0x1a0c, 0x0d84, 0x2100, 0x91b2, 0x0040, 0x1a04, 0xbbfa,
18689 +       0x0002, 0xb819, 0xb9eb, 0xb819, 0xb819, 0xb819, 0xb9f4, 0xb819,
18690 +       0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819,
18691 +       0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819,
18692 +       0xb81b, 0xb871, 0xb880, 0xb8e1, 0xb908, 0xb97f, 0xb9d6, 0xb819,
18693 +       0xb819, 0xb9f7, 0xb819, 0xb819, 0xba0c, 0xba19, 0xb819, 0xb819,
18694 +       0xb819, 0xb819, 0xb819, 0xba9c, 0xb819, 0xb819, 0xbab0, 0xb819,
18695 +       0xb819, 0xba6b, 0xb819, 0xb819, 0xb819, 0xbac8, 0xb819, 0xb819,
18696 +       0xb819, 0xbb45, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819,
18697 +       0xbbc2, 0x080c, 0x0d84, 0x080c, 0x5eeb, 0x1150, 0x2001, 0x1836,
18698 +       0x2004, 0xd0cc, 0x1128, 0x9084, 0x0009, 0x9086, 0x0008, 0x1140,
18699 +       0x6007, 0x0009, 0x602f, 0x0009, 0x6017, 0x0000, 0x0804, 0xb9e4,
18700 +       0x080c, 0x5ed5, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x6210,
18701 +       0x2258, 0xbaa0, 0x0026, 0x2019, 0x0029, 0x080c, 0x7d55, 0x0076,
18702 +       0x903e, 0x080c, 0x7c4d, 0x2c08, 0x080c, 0xc73e, 0x007e, 0x001e,
18703 +       0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x6610, 0x2658, 0x080c,
18704 +       0x5c1c, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x0278, 0x080c,
18705 +       0xc675, 0x1904, 0xb8db, 0x080c, 0xc611, 0x1120, 0x6007, 0x0008,
18706 +       0x0804, 0xb9e4, 0x6007, 0x0009, 0x0804, 0xb9e4, 0x080c, 0xc860,
18707 +       0x0128, 0x080c, 0xc675, 0x0d78, 0x0804, 0xb8db, 0x6017, 0x1900,
18708 +       0x0c88, 0x080c, 0x2e39, 0x1904, 0xbbf7, 0x6106, 0x080c, 0xc5c8,
18709 +       0x6007, 0x0006, 0x0804, 0xb9e4, 0x6007, 0x0007, 0x0804, 0xb9e4,
18710 +       0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904, 0xbbf7,
18711 +       0x00d6, 0x6610, 0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006,
18712 +       0x1220, 0x2001, 0x0001, 0x080c, 0x5b4d, 0x96b4, 0xff00, 0x8637,
18713 +       0x9686, 0x0006, 0x0188, 0x9686, 0x0004, 0x0170, 0xbe04, 0x96b4,
18714 +       0x00ff, 0x9686, 0x0006, 0x0140, 0x9686, 0x0004, 0x0128, 0x9686,
18715 +       0x0005, 0x0110, 0x00de, 0x0478, 0x00e6, 0x2071, 0x0260, 0x7034,
18716 +       0x90b4, 0x0003, 0x1138, 0x90b2, 0x0014, 0x0220, 0x7030, 0x9084,
18717 +       0x0003, 0x0130, 0x00ee, 0x6017, 0x0000, 0x602f, 0x0007, 0x00b0,
18718 +       0x00ee, 0x080c, 0xc6d4, 0x1190, 0x9686, 0x0006, 0x1140, 0x0026,
18719 +       0x6210, 0x2258, 0xbaa0, 0x900e, 0x080c, 0x2d5f, 0x002e, 0x080c,
18720 +       0x5ca8, 0x6007, 0x000a, 0x00de, 0x0804, 0xb9e4, 0x6007, 0x000b,
18721 +       0x00de, 0x0804, 0xb9e4, 0x080c, 0x2d1a, 0x6007, 0x0001, 0x0804,
18722 +       0xb9e4, 0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904,
18723 +       0xbbf7, 0x2071, 0x0260, 0x7034, 0x90b4, 0x0003, 0x1958, 0x90b2,
18724 +       0x0014, 0x0a40, 0x7030, 0x9084, 0x0003, 0x1920, 0x6610, 0x2658,
18725 +       0xbe04, 0x9686, 0x0707, 0x09f8, 0x0026, 0x6210, 0x2258, 0xbaa0,
18726 +       0x900e, 0x080c, 0x2d5f, 0x002e, 0x6007, 0x000c, 0x0804, 0xb9e4,
18727 +       0x080c, 0x5eeb, 0x1140, 0x2001, 0x1836, 0x2004, 0x9084, 0x0009,
18728 +       0x9086, 0x0008, 0x1110, 0x0804, 0xb828, 0x080c, 0x5ed5, 0x6610,
18729 +       0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x06b8, 0x1138,
18730 +       0x0026, 0x2001, 0x0006, 0x080c, 0x5b8d, 0x002e, 0x0050, 0x96b4,
18731 +       0xff00, 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904,
18732 +       0xb8db, 0x080c, 0xc6e1, 0x1120, 0x6007, 0x000e, 0x0804, 0xb9e4,
18733 +       0x0046, 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, 0x2d1a, 0x004e,
18734 +       0x0016, 0x9006, 0x2009, 0x1853, 0x210c, 0xd1a4, 0x0148, 0x2009,
18735 +       0x0029, 0x080c, 0xc9c5, 0x6010, 0x2058, 0xb800, 0xc0e5, 0xb802,
18736 +       0x001e, 0x004e, 0x6007, 0x0001, 0x0804, 0xb9e4, 0x2001, 0x0001,
18737 +       0x080c, 0x5b4d, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004,
18738 +       0x2019, 0x1805, 0x2011, 0x0270, 0x080c, 0xa425, 0x003e, 0x002e,
18739 +       0x001e, 0x015e, 0x9005, 0x0168, 0x96b4, 0xff00, 0x8637, 0x9682,
18740 +       0x0004, 0x0a04, 0xb8db, 0x9682, 0x0007, 0x0a04, 0xb931, 0x0804,
18741 +       0xb8db, 0x6017, 0x1900, 0x6007, 0x0009, 0x0804, 0xb9e4, 0x080c,
18742 +       0x5eeb, 0x1140, 0x2001, 0x1836, 0x2004, 0x9084, 0x0009, 0x9086,
18743 +       0x0008, 0x1110, 0x0804, 0xb828, 0x080c, 0x5ed5, 0x6610, 0x2658,
18744 +       0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x0680, 0x96b4, 0xff00,
18745 +       0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, 0xb8db,
18746 +       0x080c, 0xc70f, 0x1130, 0x080c, 0xc611, 0x1118, 0x6007, 0x0010,
18747 +       0x04d8, 0x0046, 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, 0x2d1a,
18748 +       0x004e, 0x0016, 0x9006, 0x2009, 0x1853, 0x210c, 0xd1a4, 0x0148,
18749 +       0x2009, 0x0029, 0x080c, 0xc9c5, 0x6010, 0x2058, 0xb800, 0xc0e5,
18750 +       0xb802, 0x001e, 0x004e, 0x6007, 0x0001, 0x00f0, 0x080c, 0xc860,
18751 +       0x0140, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0988, 0x0804,
18752 +       0xb8db, 0x6017, 0x1900, 0x6007, 0x0009, 0x0070, 0x080c, 0x2e39,
18753 +       0x1904, 0xbbf7, 0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0xbd93,
18754 +       0x1904, 0xb8db, 0x6007, 0x0012, 0x6003, 0x0001, 0x080c, 0x7c1d,
18755 +       0x080c, 0x8125, 0x0005, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c,
18756 +       0x7c1d, 0x080c, 0x8125, 0x0cb0, 0x6007, 0x0005, 0x0c68, 0x080c,
18757 +       0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904, 0xbbf7, 0x080c,
18758 +       0xbd93, 0x1904, 0xb8db, 0x6007, 0x0020, 0x6003, 0x0001, 0x080c,
18759 +       0x7c1d, 0x080c, 0x8125, 0x0005, 0x080c, 0x2e39, 0x1904, 0xbbf7,
18760 +       0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x080c, 0x8125,
18761 +       0x0005, 0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904,
18762 +       0xbbf7, 0x080c, 0xbd93, 0x1904, 0xb8db, 0x0016, 0x0026, 0x00e6,
18763 +       0x2071, 0x0260, 0x7244, 0x9286, 0xffff, 0x0180, 0x2c08, 0x080c,
18764 +       0xb09b, 0x01b0, 0x2260, 0x7240, 0x6008, 0x9206, 0x1188, 0x6010,
18765 +       0x9190, 0x0004, 0x2214, 0x9206, 0x01b8, 0x0050, 0x7240, 0x2c08,
18766 +       0x9006, 0x080c, 0xc997, 0x1180, 0x7244, 0x9286, 0xffff, 0x01b0,
18767 +       0x2160, 0x6007, 0x0026, 0x6017, 0x1700, 0x7214, 0x9296, 0xffff,
18768 +       0x1180, 0x6007, 0x0025, 0x0068, 0x6020, 0x9086, 0x0007, 0x1d80,
18769 +       0x6004, 0x9086, 0x0024, 0x1110, 0x080c, 0x9554, 0x2160, 0x6007,
18770 +       0x0025, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x080c, 0x8125, 0x00ee,
18771 +       0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, 0x5b4d, 0x0156,
18772 +       0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0x1805, 0x2011,
18773 +       0x0276, 0x080c, 0xa425, 0x003e, 0x002e, 0x001e, 0x015e, 0x0120,
18774 +       0x6007, 0x0031, 0x0804, 0xb9e4, 0x080c, 0xa0dc, 0x080c, 0x6877,
18775 +       0x1190, 0x0006, 0x0026, 0x0036, 0x080c, 0x6891, 0x1138, 0x080c,
18776 +       0x6b40, 0x080c, 0x56d9, 0x080c, 0x67be, 0x0010, 0x080c, 0x6853,
18777 +       0x003e, 0x002e, 0x000e, 0x0005, 0x080c, 0x2e39, 0x1904, 0xbbf7,
18778 +       0x080c, 0xbd93, 0x1904, 0xb8db, 0x6106, 0x080c, 0xbdaf, 0x1120,
18779 +       0x6007, 0x002b, 0x0804, 0xb9e4, 0x6007, 0x002c, 0x0804, 0xb9e4,
18780 +       0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904, 0xbbf7,
18781 +       0x080c, 0xbd93, 0x1904, 0xb8db, 0x6106, 0x080c, 0xbdb3, 0x1120,
18782 +       0x6007, 0x002e, 0x0804, 0xb9e4, 0x6007, 0x002f, 0x0804, 0xb9e4,
18783 +       0x080c, 0x2e39, 0x1904, 0xbbf7, 0x00e6, 0x00d6, 0x00c6, 0x6010,
18784 +       0x2058, 0xb804, 0x9184, 0x00ff, 0x9086, 0x0006, 0x0158, 0x9184,
18785 +       0xff00, 0x8007, 0x9086, 0x0006, 0x0128, 0x00ce, 0x00de, 0x00ee,
18786 +       0x0804, 0xb9eb, 0x080c, 0x4dee, 0xd0e4, 0x0904, 0xbb42, 0x2071,
18787 +       0x026c, 0x7010, 0x603a, 0x7014, 0x603e, 0x7108, 0x720c, 0x080c,
18788 +       0x5f29, 0x0140, 0x6010, 0x2058, 0xb810, 0x9106, 0x1118, 0xb814,
18789 +       0x9206, 0x0510, 0x080c, 0x5f25, 0x15b8, 0x2069, 0x1800, 0x6878,
18790 +       0x9206, 0x1590, 0x6874, 0x9106, 0x1578, 0x7210, 0x080c, 0xb09b,
18791 +       0x0590, 0x080c, 0xbc80, 0x0578, 0x080c, 0xca3c, 0x0560, 0x622e,
18792 +       0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125,
18793 +       0x00ce, 0x00de, 0x00ee, 0x0005, 0x7214, 0x9286, 0xffff, 0x0150,
18794 +       0x080c, 0xb09b, 0x01c0, 0x9280, 0x0002, 0x2004, 0x7110, 0x9106,
18795 +       0x1190, 0x08e0, 0x7210, 0x2c08, 0x9085, 0x0001, 0x080c, 0xc997,
18796 +       0x2c10, 0x2160, 0x0140, 0x0890, 0x6007, 0x0037, 0x602f, 0x0009,
18797 +       0x6017, 0x1500, 0x08b8, 0x6007, 0x0037, 0x602f, 0x0003, 0x6017,
18798 +       0x1700, 0x0880, 0x6007, 0x0012, 0x0868, 0x080c, 0x2e39, 0x1904,
18799 +       0xbbf7, 0x6010, 0x2058, 0xb804, 0x9084, 0xff00, 0x8007, 0x9086,
18800 +       0x0006, 0x1904, 0xb9eb, 0x00e6, 0x00d6, 0x00c6, 0x080c, 0x4dee,
18801 +       0xd0e4, 0x0904, 0xbbba, 0x2069, 0x1800, 0x2071, 0x026c, 0x7008,
18802 +       0x603a, 0x720c, 0x623e, 0x9286, 0xffff, 0x1150, 0x7208, 0x00c6,
18803 +       0x2c08, 0x9085, 0x0001, 0x080c, 0xc997, 0x2c10, 0x00ce, 0x05e8,
18804 +       0x080c, 0xb09b, 0x05d0, 0x7108, 0x9280, 0x0002, 0x2004, 0x9106,
18805 +       0x15a0, 0x00c6, 0x0026, 0x2260, 0x080c, 0xad11, 0x002e, 0x00ce,
18806 +       0x7118, 0x918c, 0xff00, 0x810f, 0x9186, 0x0001, 0x0178, 0x9186,
18807 +       0x0005, 0x0118, 0x9186, 0x0007, 0x1198, 0x9280, 0x0005, 0x2004,
18808 +       0x9005, 0x0170, 0x080c, 0xbc80, 0x0904, 0xbb3b, 0x0056, 0x7510,
18809 +       0x7614, 0x080c, 0xca55, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005,
18810 +       0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, 0x6003, 0x0001,
18811 +       0x080c, 0x7bcb, 0x080c, 0x8125, 0x0c78, 0x6007, 0x003b, 0x602f,
18812 +       0x0003, 0x6017, 0x0300, 0x6003, 0x0001, 0x080c, 0x7bcb, 0x080c,
18813 +       0x8125, 0x0c10, 0x6007, 0x003b, 0x602f, 0x000b, 0x6017, 0x0000,
18814 +       0x0804, 0xbb12, 0x00e6, 0x0026, 0x080c, 0x5eeb, 0x0550, 0x080c,
18815 +       0x5ed5, 0x080c, 0xcc30, 0x1518, 0x2071, 0x1800, 0x70d8, 0x9085,
18816 +       0x0003, 0x70da, 0x00f6, 0x2079, 0x0100, 0x72a8, 0x9284, 0x00ff,
18817 +       0x7076, 0x78e6, 0x9284, 0xff00, 0x7278, 0x9205, 0x707a, 0x78ea,
18818 +       0x00fe, 0x70e3, 0x0000, 0x080c, 0x5f29, 0x0120, 0x2011, 0x19cd,
18819 +       0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2b1e, 0x0010, 0x080c,
18820 +       0xcc62, 0x002e, 0x00ee, 0x080c, 0x9554, 0x0804, 0xb9ea, 0x080c,
18821 +       0x9554, 0x0005, 0x2600, 0x0002, 0xbc0e, 0xbc0e, 0xbc0e, 0xbc0e,
18822 +       0xbc0e, 0xbc10, 0xbc0e, 0xbc0e, 0xbc0e, 0xbc0e, 0xbc2b, 0xbc0e,
18823 +       0xbc0e, 0xbc0e, 0xbc3d, 0xbc4a, 0xbc7b, 0xbc0e, 0x080c, 0x0d84,
18824 +       0x080c, 0xcbbe, 0x1d20, 0x080c, 0x2e39, 0x1d08, 0x080c, 0xbd93,
18825 +       0x1148, 0x7038, 0x6016, 0x6007, 0x0045, 0x6003, 0x0001, 0x080c,
18826 +       0x7c1d, 0x0005, 0x080c, 0x2d1a, 0x6007, 0x0001, 0x6003, 0x0001,
18827 +       0x080c, 0x7c1d, 0x0005, 0x080c, 0xcbbe, 0x1948, 0x080c, 0x2e39,
18828 +       0x1930, 0x080c, 0xbd93, 0x1d70, 0x703c, 0x6016, 0x6007, 0x004a,
18829 +       0x6003, 0x0001, 0x080c, 0x7c1d, 0x0005, 0x080c, 0xbc9b, 0x0904,
18830 +       0xbbf7, 0x6007, 0x004e, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x080c,
18831 +       0x8125, 0x0005, 0x6007, 0x004f, 0x6017, 0x0000, 0x7134, 0x918c,
18832 +       0x00ff, 0x81ff, 0x0508, 0x9186, 0x0001, 0x1160, 0x7140, 0x2001,
18833 +       0x198a, 0x2004, 0x9106, 0x11b0, 0x7144, 0x2001, 0x198b, 0x2004,
18834 +       0x9106, 0x0190, 0x9186, 0x0002, 0x1168, 0x2011, 0x0276, 0x20a9,
18835 +       0x0004, 0x6010, 0x0096, 0x2048, 0x2019, 0x000a, 0x080c, 0xa439,
18836 +       0x009e, 0x0110, 0x6017, 0x0001, 0x6003, 0x0001, 0x080c, 0x7c1d,
18837 +       0x080c, 0x8125, 0x0005, 0x6007, 0x0050, 0x703c, 0x6016, 0x0ca0,
18838 +       0x00e6, 0x2071, 0x0260, 0x00b6, 0x00c6, 0x2260, 0x6010, 0x2058,
18839 +       0xb8bc, 0xd084, 0x0150, 0x7128, 0x6048, 0x9106, 0x1120, 0x712c,
18840 +       0x6044, 0x9106, 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x00ce,
18841 +       0x00be, 0x00ee, 0x0005, 0x0016, 0x0096, 0x0086, 0x00e6, 0x01c6,
18842 +       0x01d6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x7088, 0x908a,
18843 +       0x00f9, 0x16e8, 0x20e1, 0x0000, 0x2001, 0x196d, 0x2003, 0x0000,
18844 +       0x080c, 0x0fc7, 0x05a0, 0x2900, 0x6016, 0x7088, 0x8004, 0xa816,
18845 +       0x908a, 0x001e, 0x02d0, 0xa833, 0x001e, 0x20a9, 0x001e, 0xa860,
18846 +       0x20e8, 0xa85c, 0x9080, 0x001b, 0x20a0, 0x2001, 0x196d, 0x0016,
18847 +       0x200c, 0x0471, 0x001e, 0x2940, 0x080c, 0x0fc7, 0x01c0, 0x2900,
18848 +       0xa006, 0x2100, 0x81ff, 0x0180, 0x0c18, 0xa832, 0x20a8, 0xa860,
18849 +       0x20e8, 0xa85c, 0x9080, 0x001b, 0x20a0, 0x2001, 0x196d, 0x0016,
18850 +       0x200c, 0x00b1, 0x001e, 0x0000, 0x9085, 0x0001, 0x0048, 0x2071,
18851 +       0x1800, 0x708b, 0x0000, 0x6014, 0x2048, 0x080c, 0x0f60, 0x9006,
18852 +       0x012e, 0x01de, 0x01ce, 0x00ee, 0x008e, 0x009e, 0x001e, 0x0005,
18853 +       0x0006, 0x0016, 0x0026, 0x0036, 0x00c6, 0x918c, 0xffff, 0x11a8,
18854 +       0x080c, 0x1fed, 0x2099, 0x026c, 0x2001, 0x0014, 0x3518, 0x9312,
18855 +       0x1218, 0x23a8, 0x4003, 0x00f8, 0x20a8, 0x4003, 0x22a8, 0x8108,
18856 +       0x080c, 0x1fed, 0x2099, 0x0260, 0x0ca8, 0x080c, 0x1fed, 0x2061,
18857 +       0x196d, 0x6004, 0x2098, 0x6008, 0x3518, 0x9312, 0x1218, 0x23a8,
18858 +       0x4003, 0x0048, 0x20a8, 0x4003, 0x22a8, 0x8108, 0x080c, 0x1fed,
18859 +       0x2099, 0x0260, 0x0ca8, 0x2061, 0x196d, 0x2019, 0x0280, 0x3300,
18860 +       0x931e, 0x0110, 0x6006, 0x0020, 0x2001, 0x0260, 0x6006, 0x8108,
18861 +       0x2162, 0x9292, 0x0021, 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e,
18862 +       0x002e, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036,
18863 +       0x00c6, 0x81ff, 0x11b8, 0x080c, 0x2005, 0x20a1, 0x024c, 0x2001,
18864 +       0x0014, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x0418, 0x20a8,
18865 +       0x4003, 0x82ff, 0x01f8, 0x22a8, 0x8108, 0x080c, 0x2005, 0x20a1,
18866 +       0x0240, 0x0c98, 0x080c, 0x2005, 0x2061, 0x1970, 0x6004, 0x20a0,
18867 +       0x6008, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x0058, 0x20a8,
18868 +       0x4003, 0x82ff, 0x0138, 0x22a8, 0x8108, 0x080c, 0x2005, 0x20a1,
18869 +       0x0240, 0x0c98, 0x2061, 0x1970, 0x2019, 0x0260, 0x3400, 0x931e,
18870 +       0x0110, 0x6006, 0x0020, 0x2001, 0x0240, 0x6006, 0x8108, 0x2162,
18871 +       0x9292, 0x0021, 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e,
18872 +       0x001e, 0x000e, 0x0005, 0x00b6, 0x0066, 0x6610, 0x2658, 0xbe04,
18873 +       0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0170, 0x9686, 0x0004,
18874 +       0x0158, 0xbe04, 0x96b4, 0x00ff, 0x9686, 0x0006, 0x0128, 0x9686,
18875 +       0x0004, 0x0110, 0x9085, 0x0001, 0x006e, 0x00be, 0x0005, 0x00d6,
18876 +       0x0441, 0x00de, 0x0005, 0x00d6, 0x0489, 0x11e8, 0x680c, 0x908c,
18877 +       0xff00, 0x6820, 0x9084, 0x00ff, 0x9115, 0x6216, 0x6824, 0x602e,
18878 +       0xd1e4, 0x0118, 0x2009, 0x0001, 0x0058, 0xd1ec, 0x0160, 0x6920,
18879 +       0x918c, 0x00ff, 0x6824, 0x080c, 0x23fd, 0x1128, 0x2110, 0x900e,
18880 +       0x080c, 0x2d5f, 0x0018, 0x9085, 0x0001, 0x0008, 0x9006, 0x00de,
18881 +       0x0005, 0x2069, 0x026d, 0x6800, 0x9082, 0x0010, 0x1228, 0x6017,
18882 +       0x0000, 0x9085, 0x0001, 0x0008, 0x9006, 0x0005, 0x6017, 0x0000,
18883 +       0x2069, 0x026c, 0x6808, 0x9084, 0xff00, 0x9086, 0x0800, 0x1140,
18884 +       0x6800, 0x9084, 0x00ff, 0x908e, 0x0014, 0x0110, 0x908e, 0x0010,
18885 +       0x0005, 0x6004, 0x90b2, 0x0053, 0x1a0c, 0x0d84, 0x91b6, 0x0013,
18886 +       0x1130, 0x2008, 0x91b2, 0x0040, 0x1a04, 0xbf24, 0x0092, 0x91b6,
18887 +       0x0027, 0x0120, 0x91b6, 0x0014, 0x190c, 0x0d84, 0x2001, 0x0007,
18888 +       0x080c, 0x5b8d, 0x080c, 0x8026, 0x080c, 0x9584, 0x080c, 0x8125,
18889 +       0x0005, 0xbe59, 0xbe5b, 0xbe59, 0xbe59, 0xbe59, 0xbe5b, 0xbe6a,
18890 +       0xbf1d, 0xbebc, 0xbf1d, 0xbece, 0xbf1d, 0xbe6a, 0xbf1d, 0xbf15,
18891 +       0xbf1d, 0xbf15, 0xbf1d, 0xbf1d, 0xbe59, 0xbe59, 0xbe59, 0xbe59,
18892 +       0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbe5b,
18893 +       0xbe59, 0xbf1d, 0xbe59, 0xbe59, 0xbf1d, 0xbe59, 0xbf1a, 0xbf1d,
18894 +       0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbf1d, 0xbf1d, 0xbe59, 0xbf1d,
18895 +       0xbf1d, 0xbe59, 0xbe65, 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbf19,
18896 +       0xbf1d, 0xbe59, 0xbe59, 0xbf1d, 0xbf1d, 0xbe59, 0xbe59, 0xbe59,
18897 +       0xbe59, 0x080c, 0x0d84, 0x080c, 0x8026, 0x080c, 0xb76f, 0x6003,
18898 +       0x0002, 0x080c, 0x8125, 0x0804, 0xbf23, 0x9006, 0x080c, 0x5b4d,
18899 +       0x0804, 0xbf1d, 0x080c, 0x5f25, 0x1904, 0xbf1d, 0x9006, 0x080c,
18900 +       0x5b4d, 0x6010, 0x2058, 0xb810, 0x9086, 0x00ff, 0x1140, 0x00f6,
18901 +       0x2079, 0x1800, 0x78a0, 0x8000, 0x78a2, 0x00fe, 0x0428, 0x6010,
18902 +       0x2058, 0xb8b0, 0x9005, 0x1178, 0x080c, 0xb759, 0x1904, 0xbf1d,
18903 +       0x0036, 0x0046, 0xbba0, 0x2021, 0x0007, 0x080c, 0x44f9, 0x004e,
18904 +       0x003e, 0x0804, 0xbf1d, 0x080c, 0x2e64, 0x1904, 0xbf1d, 0x2001,
18905 +       0x1800, 0x2004, 0x9086, 0x0002, 0x1138, 0x00f6, 0x2079, 0x1800,
18906 +       0x78a0, 0x8000, 0x78a2, 0x00fe, 0x2001, 0x0002, 0x080c, 0x5b61,
18907 +       0x080c, 0x8026, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
18908 +       0x080c, 0x7c1d, 0x080c, 0x8125, 0x6110, 0x2158, 0x2009, 0x0001,
18909 +       0x080c, 0x7826, 0x0804, 0xbf23, 0x6610, 0x2658, 0xbe04, 0x96b4,
18910 +       0xff00, 0x8637, 0x9686, 0x0006, 0x0904, 0xbf1d, 0x9686, 0x0004,
18911 +       0x0904, 0xbf1d, 0x2001, 0x0004, 0x0804, 0xbf1b, 0x2001, 0x1800,
18912 +       0x2004, 0x9086, 0x0003, 0x1158, 0x0036, 0x0046, 0x6010, 0x2058,
18913 +       0xbba0, 0x2021, 0x0006, 0x080c, 0x44f9, 0x004e, 0x003e, 0x2001,
18914 +       0x0006, 0x080c, 0xbf41, 0x6610, 0x2658, 0xbe04, 0x0066, 0x96b4,
18915 +       0xff00, 0x8637, 0x9686, 0x0006, 0x006e, 0x0168, 0x2001, 0x0006,
18916 +       0x080c, 0x5b8d, 0x9284, 0x00ff, 0x908e, 0x0007, 0x1120, 0x2001,
18917 +       0x0006, 0x080c, 0x5b61, 0x080c, 0x5f25, 0x11f8, 0x2001, 0x1836,
18918 +       0x2004, 0xd0a4, 0x01d0, 0xbe04, 0x96b4, 0x00ff, 0x9686, 0x0006,
18919 +       0x01a0, 0x00f6, 0x2079, 0x1800, 0x78a0, 0x8000, 0x78a2, 0x00fe,
18920 +       0x0804, 0xbea4, 0x2001, 0x0004, 0x0030, 0x2001, 0x0006, 0x0449,
18921 +       0x0020, 0x0018, 0x0010, 0x080c, 0x5b8d, 0x080c, 0x8026, 0x080c,
18922 +       0x9554, 0x080c, 0x8125, 0x0005, 0x2600, 0x0002, 0xbf38, 0xbf38,
18923 +       0xbf38, 0xbf38, 0xbf38, 0xbf3a, 0xbf38, 0xbf38, 0xbf38, 0xbf38,
18924 +       0xbf3a, 0xbf38, 0xbf38, 0xbf38, 0xbf3a, 0xbf3a, 0xbf3a, 0xbf3a,
18925 +       0x080c, 0x0d84, 0x080c, 0x8026, 0x080c, 0x9554, 0x080c, 0x8125,
18926 +       0x0005, 0x0016, 0x00b6, 0x00d6, 0x6110, 0x2158, 0xb900, 0xd184,
18927 +       0x0138, 0x080c, 0x5b61, 0x9006, 0x080c, 0x5b4d, 0x080c, 0x2d3f,
18928 +       0x00de, 0x00be, 0x001e, 0x0005, 0x6610, 0x2658, 0xb804, 0x9084,
18929 +       0xff00, 0x8007, 0x90b2, 0x000c, 0x1a0c, 0x0d84, 0x91b6, 0x0015,
18930 +       0x1110, 0x003b, 0x0028, 0x91b6, 0x0016, 0x190c, 0x0d84, 0x006b,
18931 +       0x0005, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0xbfb9,
18932 +       0xbf81, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a,
18933 +       0x9f7a, 0x9f7a, 0x9f7a, 0xbfb9, 0xbfc0, 0x9f7a, 0x9f7a, 0x9f7a,
18934 +       0x9f7a, 0x00f6, 0x080c, 0x5f25, 0x11c0, 0x6010, 0x905d, 0x01a8,
18935 +       0xb8b0, 0x9005, 0x0190, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0002,
18936 +       0x080c, 0x5b61, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
18937 +       0x080c, 0x7c1d, 0x080c, 0x8125, 0x00d0, 0x2011, 0x0263, 0x2204,
18938 +       0x8211, 0x220c, 0x080c, 0x23fd, 0x1190, 0x080c, 0x5c0d, 0x0118,
18939 +       0x080c, 0x9554, 0x0060, 0xb810, 0x0006, 0xb814, 0x0006, 0x080c,
18940 +       0x56f3, 0x000e, 0xb816, 0x000e, 0xb812, 0x080c, 0x9554, 0x00fe,
18941 +       0x0005, 0x6604, 0x96b6, 0x001e, 0x1110, 0x080c, 0x9554, 0x0005,
18942 +       0x080c, 0xa2b9, 0x1148, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c,
18943 +       0x7c1d, 0x080c, 0x8125, 0x0010, 0x080c, 0x9554, 0x0005, 0x6004,
18944 +       0x908a, 0x0053, 0x1a0c, 0x0d84, 0x080c, 0x8026, 0x080c, 0x9584,
18945 +       0x080c, 0x8125, 0x0005, 0x9182, 0x0040, 0x0002, 0xbff1, 0xbff1,
18946 +       0xbff1, 0xbff1, 0xbff3, 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1,
18947 +       0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1,
18948 +       0xbff1, 0x080c, 0x0d84, 0x0096, 0x00b6, 0x00d6, 0x00e6, 0x00f6,
18949 +       0x0046, 0x0026, 0x6210, 0x2258, 0xb8ac, 0x9005, 0x11a8, 0x6106,
18950 +       0x2071, 0x0260, 0x7444, 0x94a4, 0xff00, 0x0904, 0xc05a, 0x080c,
18951 +       0xcccc, 0x1170, 0x9486, 0x2000, 0x1158, 0x2009, 0x0001, 0x2011,
18952 +       0x0200, 0x080c, 0x7a0a, 0x0020, 0x9026, 0x080c, 0xcc03, 0x0c38,
18953 +       0x080c, 0x0fae, 0x090c, 0x0d84, 0x6003, 0x0007, 0xa867, 0x010d,
18954 +       0x9006, 0xa802, 0xa86a, 0xac8a, 0x2c00, 0xa88e, 0x6008, 0xa8e2,
18955 +       0x6010, 0x2058, 0xb8a0, 0x7130, 0xa97a, 0x0016, 0xa876, 0xa87f,
18956 +       0x0000, 0xa883, 0x0000, 0xa887, 0x0036, 0x080c, 0x61a9, 0x001e,
18957 +       0x080c, 0xcccc, 0x1904, 0xc0ba, 0x9486, 0x2000, 0x1130, 0x2019,
18958 +       0x0017, 0x080c, 0xc941, 0x0804, 0xc0ba, 0x9486, 0x0400, 0x1130,
18959 +       0x2019, 0x0002, 0x080c, 0xc8f8, 0x0804, 0xc0ba, 0x9486, 0x0200,
18960 +       0x1110, 0x080c, 0xc8dd, 0x9486, 0x1000, 0x1110, 0x080c, 0xc926,
18961 +       0x0804, 0xc0ba, 0x2069, 0x1a3d, 0x6a00, 0xd284, 0x0904, 0xc124,
18962 +       0x9284, 0x0300, 0x1904, 0xc11d, 0x6804, 0x9005, 0x0904, 0xc105,
18963 +       0x2d78, 0x6003, 0x0007, 0x080c, 0x0fc7, 0x0904, 0xc0c6, 0x7800,
18964 +       0xd08c, 0x1118, 0x7804, 0x8001, 0x7806, 0x6017, 0x0000, 0x2001,
18965 +       0x180e, 0x2004, 0xd084, 0x1904, 0xc128, 0x9006, 0xa802, 0xa867,
18966 +       0x0116, 0xa86a, 0x6008, 0xa8e2, 0x2c00, 0xa87a, 0x6010, 0x2058,
18967 +       0xb8a0, 0x7130, 0xa9b6, 0xa876, 0xb928, 0xa9ba, 0xb92c, 0xa9be,
18968 +       0xb930, 0xa9c2, 0xb934, 0xa9c6, 0xa883, 0x003d, 0x7044, 0x9084,
18969 +       0x0003, 0x9080, 0xc0c2, 0x2005, 0xa87e, 0x20a9, 0x000a, 0x2001,
18970 +       0x0270, 0xaa5c, 0x9290, 0x0021, 0x2009, 0x0205, 0x200b, 0x0080,
18971 +       0x20e1, 0x0000, 0xab60, 0x23e8, 0x2098, 0x22a0, 0x4003, 0x200b,
18972 +       0x0000, 0x2001, 0x027a, 0x200c, 0xa9b2, 0x8000, 0x200c, 0xa9ae,
18973 +       0x080c, 0x61a9, 0x002e, 0x004e, 0x00fe, 0x00ee, 0x00de, 0x00be,
18974 +       0x009e, 0x0005, 0x0000, 0x0080, 0x0040, 0x0000, 0x2001, 0x180f,
18975 +       0x2004, 0xd084, 0x0120, 0x080c, 0x0fae, 0x1904, 0xc06f, 0x6017,
18976 +       0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x7bcb, 0x080c,
18977 +       0x8125, 0x0c00, 0x2069, 0x0260, 0x6848, 0x9084, 0xff00, 0x9086,
18978 +       0x1200, 0x1198, 0x686c, 0x9084, 0x00ff, 0x0016, 0x6114, 0x918c,
18979 +       0xf700, 0x910d, 0x6116, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043,
18980 +       0x080c, 0x7bcb, 0x080c, 0x8125, 0x0828, 0x6868, 0x602e, 0x686c,
18981 +       0x6032, 0x6017, 0xf200, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c,
18982 +       0x7bcb, 0x080c, 0x8125, 0x0804, 0xc0ba, 0x2001, 0x180d, 0x2004,
18983 +       0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x447f, 0x6017, 0xf300,
18984 +       0x0010, 0x6017, 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c,
18985 +       0x7bcb, 0x080c, 0x8125, 0x0804, 0xc0ba, 0x6017, 0xf500, 0x0c98,
18986 +       0x6017, 0xf600, 0x0804, 0xc0da, 0x6017, 0xf200, 0x0804, 0xc0da,
18987 +       0xa867, 0x0146, 0xa86b, 0x0000, 0x6008, 0xa886, 0x2c00, 0xa87a,
18988 +       0x7044, 0x9084, 0x0003, 0x9080, 0xc0c2, 0x2005, 0xa87e, 0x2928,
18989 +       0x6010, 0x2058, 0xb8a0, 0xa876, 0xb828, 0xa88a, 0xb82c, 0xa88e,
18990 +       0xb830, 0xa892, 0xb834, 0xa896, 0xa883, 0x003d, 0x2009, 0x0205,
18991 +       0x2104, 0x9085, 0x0080, 0x200a, 0x20e1, 0x0000, 0x2011, 0x0210,
18992 +       0x2214, 0x9294, 0x0fff, 0xaaa2, 0x9282, 0x0111, 0x1a0c, 0x0d84,
18993 +       0x8210, 0x821c, 0x2001, 0x026c, 0x2098, 0xa860, 0x20e8, 0xa85c,
18994 +       0x9080, 0x0029, 0x20a0, 0x2011, 0xc1a4, 0x2041, 0x0001, 0x223d,
18995 +       0x9784, 0x00ff, 0x9322, 0x1208, 0x2300, 0x20a8, 0x4003, 0x931a,
18996 +       0x0530, 0x8210, 0xd7fc, 0x1130, 0x8d68, 0x2d0a, 0x2001, 0x0260,
18997 +       0x2098, 0x0c68, 0x2950, 0x080c, 0x0fc7, 0x0170, 0x2900, 0xb002,
18998 +       0xa867, 0x0147, 0xa86b, 0x0000, 0xa860, 0x20e8, 0xa85c, 0x9080,
18999 +       0x001b, 0x20a0, 0x8840, 0x08d8, 0x2548, 0xa800, 0x902d, 0x0118,
19000 +       0x080c, 0x0fe0, 0x0cc8, 0x080c, 0x0fe0, 0x0804, 0xc0c6, 0x2548,
19001 +       0x8847, 0x9885, 0x0046, 0xa866, 0x2009, 0x0205, 0x200b, 0x0000,
19002 +       0x080c, 0xc970, 0x0804, 0xc0ba, 0x8010, 0x0004, 0x801a, 0x0006,
19003 +       0x8018, 0x0008, 0x8016, 0x000a, 0x8014, 0x9186, 0x0013, 0x1160,
19004 +       0x6004, 0x908a, 0x0054, 0x1a0c, 0x0d84, 0x9082, 0x0040, 0x0a0c,
19005 +       0x0d84, 0x2008, 0x0804, 0xc255, 0x9186, 0x0051, 0x0108, 0x00c0,
19006 +       0x2001, 0x0109, 0x2004, 0xd084, 0x0904, 0xc206, 0x0126, 0x2091,
19007 +       0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x7ab7, 0x002e, 0x001e,
19008 +       0x000e, 0x012e, 0x6000, 0x9086, 0x0002, 0x1580, 0x0804, 0xc29d,
19009 +       0x9186, 0x0027, 0x0530, 0x9186, 0x0048, 0x0128, 0x9186, 0x0014,
19010 +       0x0500, 0x190c, 0x0d84, 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0,
19011 +       0x00c6, 0x0126, 0x2091, 0x2800, 0x00c6, 0x2061, 0x0100, 0x0006,
19012 +       0x0016, 0x0026, 0x080c, 0x7ab7, 0x002e, 0x001e, 0x000e, 0x00ce,
19013 +       0x012e, 0x00ce, 0x6000, 0x9086, 0x0004, 0x190c, 0x0d84, 0x0804,
19014 +       0xc366, 0x6004, 0x9082, 0x0040, 0x2008, 0x001a, 0x080c, 0x95e9,
19015 +       0x0005, 0xc21c, 0xc21e, 0xc21e, 0xc245, 0xc21c, 0xc21c, 0xc21c,
19016 +       0xc21c, 0xc21c, 0xc21c, 0xc21c, 0xc21c, 0xc21c, 0xc21c, 0xc21c,
19017 +       0xc21c, 0xc21c, 0xc21c, 0xc21c, 0x080c, 0x0d84, 0x080c, 0x8026,
19018 +       0x080c, 0x8125, 0x0036, 0x0096, 0x6014, 0x904d, 0x01d8, 0x080c,
19019 +       0xb0ad, 0x01c0, 0x6003, 0x0002, 0x6010, 0x00b6, 0x2058, 0xb800,
19020 +       0x00be, 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c, 0xc970, 0x6017,
19021 +       0x0000, 0x6018, 0x9005, 0x1120, 0x2001, 0x1954, 0x2004, 0x601a,
19022 +       0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x0096, 0x080c, 0x8026,
19023 +       0x080c, 0x8125, 0x080c, 0xb0ad, 0x0120, 0x6014, 0x2048, 0x080c,
19024 +       0x0fe0, 0x080c, 0x9584, 0x009e, 0x0005, 0x0002, 0xc269, 0xc280,
19025 +       0xc26b, 0xc297, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269,
19026 +       0xc269, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269,
19027 +       0xc269, 0x080c, 0x0d84, 0x0096, 0x080c, 0x8026, 0x6014, 0x2048,
19028 +       0xa87c, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, 0x0043, 0x080c,
19029 +       0x95ce, 0x0010, 0x6003, 0x0004, 0x080c, 0x8125, 0x009e, 0x0005,
19030 +       0x080c, 0x8026, 0x080c, 0xb0ad, 0x0138, 0x6114, 0x0096, 0x2148,
19031 +       0xa97c, 0x009e, 0xd1ec, 0x1138, 0x080c, 0x79df, 0x080c, 0x9554,
19032 +       0x080c, 0x8125, 0x0005, 0x080c, 0xcbc7, 0x0db0, 0x0cc8, 0x080c,
19033 +       0x8026, 0x2009, 0x0041, 0x0804, 0xc3ee, 0x9182, 0x0040, 0x0002,
19034 +       0xc2b3, 0xc2b5, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3,
19035 +       0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3,
19036 +       0xc2b3, 0xc2b6, 0xc2b3, 0x080c, 0x0d84, 0x0005, 0x00d6, 0x080c,
19037 +       0x79df, 0x00de, 0x080c, 0xcc1f, 0x080c, 0x9554, 0x0005, 0x9182,
19038 +       0x0040, 0x0002, 0xc2d5, 0xc2d5, 0xc2d5, 0xc2d5, 0xc2d5, 0xc2d5,
19039 +       0xc2d5, 0xc2d5, 0xc2d5, 0xc2d7, 0xc32e, 0xc2d5, 0xc2d5, 0xc2d5,
19040 +       0xc2d5, 0xc32e, 0xc2d5, 0xc2d5, 0xc2d5, 0x080c, 0x0d84, 0x2001,
19041 +       0x0105, 0x2004, 0x9084, 0x1800, 0x1904, 0xc32e, 0x2001, 0x1872,
19042 +       0x2004, 0xd0e4, 0x1528, 0x603b, 0x0000, 0x080c, 0x80d6, 0x6014,
19043 +       0x0096, 0x2048, 0xa87c, 0xd0fc, 0x0188, 0x908c, 0x0003, 0x918e,
19044 +       0x0002, 0x0508, 0x2001, 0x180c, 0x2004, 0xd0d4, 0x11e0, 0x080c,
19045 +       0x8202, 0x2009, 0x0041, 0x009e, 0x0804, 0xc3ee, 0x080c, 0x8202,
19046 +       0x6003, 0x0007, 0x601b, 0x0000, 0x080c, 0x79df, 0x009e, 0x0005,
19047 +       0x2001, 0x0100, 0x2004, 0x9082, 0x0005, 0x0aa8, 0x2001, 0x011f,
19048 +       0x2004, 0x603a, 0x0890, 0x2001, 0x180c, 0x200c, 0xc1d4, 0x2102,
19049 +       0xd1cc, 0x0110, 0x080c, 0x2809, 0x080c, 0x8202, 0x6014, 0x2048,
19050 +       0xa97c, 0xd1ec, 0x1130, 0x080c, 0x79df, 0x080c, 0x9554, 0x009e,
19051 +       0x0005, 0x080c, 0xcbc7, 0x0db8, 0x009e, 0x0005, 0x2001, 0x180c,
19052 +       0x200c, 0xc1d4, 0x2102, 0x0036, 0x080c, 0x80d6, 0x080c, 0x8202,
19053 +       0x6014, 0x0096, 0x2048, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be,
19054 +       0xd0bc, 0x0188, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x0140,
19055 +       0xa8ac, 0x6330, 0x931a, 0x6332, 0xa8b0, 0x632c, 0x931b, 0x632e,
19056 +       0x6003, 0x0002, 0x0080, 0x2019, 0x0004, 0x080c, 0xc970, 0x6018,
19057 +       0x9005, 0x1128, 0x2001, 0x1954, 0x2004, 0x8003, 0x601a, 0x6017,
19058 +       0x0000, 0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x9182, 0x0040,
19059 +       0x0002, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d,
19060 +       0xc37d, 0xc37f, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d,
19061 +       0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc3ca, 0x080c, 0x0d84, 0x6014,
19062 +       0x0096, 0x2048, 0xa834, 0xaa38, 0x6110, 0x00b6, 0x2058, 0xb900,
19063 +       0x00be, 0xd1bc, 0x1190, 0x920d, 0x1518, 0xa87c, 0xd0fc, 0x0128,
19064 +       0x2009, 0x0041, 0x00de, 0x0804, 0xc3ee, 0x6003, 0x0007, 0x601b,
19065 +       0x0000, 0x080c, 0x79df, 0x009e, 0x0005, 0x6124, 0xd1f4, 0x1d58,
19066 +       0x0006, 0x0046, 0xacac, 0x9422, 0xa9b0, 0x2200, 0x910b, 0x6030,
19067 +       0x9420, 0x6432, 0x602c, 0x9109, 0x612e, 0x004e, 0x000e, 0x08d8,
19068 +       0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1bc, 0x1178, 0x2009,
19069 +       0x180d, 0x210c, 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003,
19070 +       0x0006, 0x00e9, 0x080c, 0x79e1, 0x009e, 0x0005, 0x6003, 0x0002,
19071 +       0x009e, 0x0005, 0x6024, 0xd0f4, 0x0128, 0x080c, 0x1489, 0x1904,
19072 +       0xc37f, 0x0005, 0x6014, 0x0096, 0x2048, 0xa834, 0xa938, 0x009e,
19073 +       0x9105, 0x1120, 0x080c, 0x1489, 0x1904, 0xc37f, 0x0005, 0xd2fc,
19074 +       0x0140, 0x8002, 0x8000, 0x8212, 0x9291, 0x0000, 0x2009, 0x0009,
19075 +       0x0010, 0x2009, 0x0015, 0xaa9a, 0xa896, 0x0005, 0x9182, 0x0040,
19076 +       0x0208, 0x0062, 0x9186, 0x0013, 0x0120, 0x9186, 0x0014, 0x190c,
19077 +       0x0d84, 0x6024, 0xd0dc, 0x090c, 0x0d84, 0x0005, 0xc411, 0xc418,
19078 +       0xc424, 0xc430, 0xc411, 0xc411, 0xc411, 0xc411, 0xc411, 0xc413,
19079 +       0xc413, 0xc411, 0xc411, 0xc411, 0xc411, 0xc413, 0xc411, 0xc413,
19080 +       0xc411, 0x080c, 0x0d84, 0x6024, 0xd0dc, 0x090c, 0x0d84, 0x0005,
19081 +       0x6003, 0x0001, 0x6106, 0x080c, 0x7bcb, 0x0126, 0x2091, 0x8000,
19082 +       0x080c, 0x8125, 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c,
19083 +       0x7bcb, 0x0126, 0x2091, 0x8000, 0x080c, 0x8125, 0x012e, 0x0005,
19084 +       0x6003, 0x0003, 0x6106, 0x2c10, 0x080c, 0x18b7, 0x0126, 0x2091,
19085 +       0x8000, 0x080c, 0x7c3a, 0x080c, 0x820b, 0x012e, 0x0005, 0x0126,
19086 +       0x2091, 0x8000, 0x0036, 0x0096, 0x9182, 0x0040, 0x0023, 0x009e,
19087 +       0x003e, 0x012e, 0x0005, 0xc45b, 0xc45d, 0xc46f, 0xc489, 0xc45b,
19088 +       0xc45b, 0xc45b, 0xc45b, 0xc45b, 0xc45b, 0xc45b, 0xc45b, 0xc45b,
19089 +       0xc45b, 0xc45b, 0xc45b, 0x080c, 0x0d84, 0x6014, 0x2048, 0xa87c,
19090 +       0xd0fc, 0x01f8, 0x909c, 0x0003, 0x939e, 0x0003, 0x01d0, 0x6003,
19091 +       0x0001, 0x6106, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x0470, 0x6014,
19092 +       0x2048, 0xa87c, 0xd0fc, 0x0168, 0x909c, 0x0003, 0x939e, 0x0003,
19093 +       0x0140, 0x6003, 0x0001, 0x6106, 0x080c, 0x7bcb, 0x080c, 0x8125,
19094 +       0x00e0, 0x901e, 0x6316, 0x631a, 0x2019, 0x0004, 0x080c, 0xc970,
19095 +       0x00a0, 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x0d98, 0x909c, 0x0003,
19096 +       0x939e, 0x0003, 0x0d70, 0x6003, 0x0003, 0x6106, 0x2c10, 0x080c,
19097 +       0x18b7, 0x080c, 0x7c3a, 0x080c, 0x820b, 0x0005, 0x080c, 0x8026,
19098 +       0x6114, 0x81ff, 0x0158, 0x0096, 0x2148, 0x080c, 0xcc6b, 0x0036,
19099 +       0x2019, 0x0029, 0x080c, 0xc970, 0x003e, 0x009e, 0x080c, 0x9584,
19100 +       0x080c, 0x8125, 0x0005, 0x080c, 0x80d6, 0x6114, 0x81ff, 0x0158,
19101 +       0x0096, 0x2148, 0x080c, 0xcc6b, 0x0036, 0x2019, 0x0029, 0x080c,
19102 +       0xc970, 0x003e, 0x009e, 0x080c, 0x9584, 0x080c, 0x820b, 0x0005,
19103 +       0x9182, 0x0085, 0x0002, 0xc4da, 0xc4d8, 0xc4d8, 0xc4e6, 0xc4d8,
19104 +       0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8,
19105 +       0x080c, 0x0d84, 0x6003, 0x000b, 0x6106, 0x080c, 0x7bcb, 0x0126,
19106 +       0x2091, 0x8000, 0x080c, 0x8125, 0x012e, 0x0005, 0x0026, 0x00e6,
19107 +       0x080c, 0xcbbe, 0x0118, 0x080c, 0x9554, 0x0440, 0x2071, 0x0260,
19108 +       0x7224, 0x6216, 0x2001, 0x180d, 0x2004, 0xd0e4, 0x0150, 0x6010,
19109 +       0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00, 0x2011, 0x014e, 0x080c,
19110 +       0x9844, 0x7220, 0x080c, 0xc816, 0x0118, 0x6007, 0x0086, 0x0040,
19111 +       0x6007, 0x0087, 0x7224, 0x9296, 0xffff, 0x1110, 0x6007, 0x0086,
19112 +       0x6003, 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x00ee, 0x002e,
19113 +       0x0005, 0x9186, 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c,
19114 +       0x0d84, 0x908a, 0x0092, 0x1a0c, 0x0d84, 0x9082, 0x0085, 0x00a2,
19115 +       0x9186, 0x0027, 0x0130, 0x9186, 0x0014, 0x0118, 0x080c, 0x95e9,
19116 +       0x0050, 0x2001, 0x0007, 0x080c, 0x5b8d, 0x080c, 0x8026, 0x080c,
19117 +       0x9584, 0x080c, 0x8125, 0x0005, 0xc549, 0xc54b, 0xc54b, 0xc549,
19118 +       0xc549, 0xc549, 0xc549, 0xc549, 0xc549, 0xc549, 0xc549, 0xc549,
19119 +       0xc549, 0x080c, 0x0d84, 0x080c, 0x8026, 0x080c, 0x9584, 0x080c,
19120 +       0x8125, 0x0005, 0x9182, 0x0085, 0x0a0c, 0x0d84, 0x9182, 0x0092,
19121 +       0x1a0c, 0x0d84, 0x9182, 0x0085, 0x0002, 0xc56a, 0xc56a, 0xc56a,
19122 +       0xc56c, 0xc56a, 0xc56a, 0xc56a, 0xc56a, 0xc56a, 0xc56a, 0xc56a,
19123 +       0xc56a, 0xc56a, 0x080c, 0x0d84, 0x0005, 0x9186, 0x0013, 0x0148,
19124 +       0x9186, 0x0014, 0x0130, 0x9186, 0x0027, 0x0118, 0x080c, 0x95e9,
19125 +       0x0030, 0x080c, 0x8026, 0x080c, 0x9584, 0x080c, 0x8125, 0x0005,
19126 +       0x0036, 0x080c, 0xcc1f, 0x6043, 0x0000, 0x2019, 0x000b, 0x0031,
19127 +       0x6023, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0x0126, 0x0036,
19128 +       0x2091, 0x8000, 0x0086, 0x2c40, 0x0096, 0x904e, 0x080c, 0x8ef6,
19129 +       0x009e, 0x008e, 0x1550, 0x0076, 0x2c38, 0x080c, 0x8f9a, 0x007e,
19130 +       0x1520, 0x6000, 0x9086, 0x0000, 0x0500, 0x6020, 0x9086, 0x0007,
19131 +       0x01e0, 0x0096, 0x601c, 0xd084, 0x0140, 0x080c, 0xcc1f, 0x080c,
19132 +       0xb76f, 0x080c, 0x17b0, 0x6023, 0x0007, 0x6014, 0x2048, 0x080c,
19133 +       0xb0ad, 0x0110, 0x080c, 0xc970, 0x009e, 0x6017, 0x0000, 0x080c,
19134 +       0xcc1f, 0x6023, 0x0007, 0x080c, 0xb76f, 0x003e, 0x012e, 0x0005,
19135 +       0x00f6, 0x00c6, 0x00b6, 0x0036, 0x0156, 0x2079, 0x0260, 0x7938,
19136 +       0x783c, 0x080c, 0x23fd, 0x15b8, 0x0016, 0x00c6, 0x080c, 0x5c0d,
19137 +       0x1580, 0x001e, 0x00c6, 0x2160, 0x080c, 0xb76c, 0x00ce, 0x002e,
19138 +       0x0026, 0x0016, 0x2019, 0x0029, 0x080c, 0x905b, 0x080c, 0x7d55,
19139 +       0x0076, 0x903e, 0x080c, 0x7c4d, 0x007e, 0x001e, 0x0076, 0x903e,
19140 +       0x080c, 0xc73e, 0x007e, 0x0026, 0xba04, 0x9294, 0xff00, 0x8217,
19141 +       0x9286, 0x0006, 0x0118, 0x9286, 0x0004, 0x1118, 0xbaa0, 0x080c,
19142 +       0x2dd3, 0x002e, 0x001e, 0x080c, 0x56f3, 0xbe12, 0xbd16, 0x9006,
19143 +       0x0010, 0x00ce, 0x001e, 0x015e, 0x003e, 0x00be, 0x00ce, 0x00fe,
19144 +       0x0005, 0x00c6, 0x00d6, 0x00b6, 0x0016, 0x2009, 0x1822, 0x2104,
19145 +       0x9086, 0x0074, 0x1904, 0xc66a, 0x2069, 0x0260, 0x6944, 0x9182,
19146 +       0x0100, 0x06e0, 0x6940, 0x9184, 0x8000, 0x0904, 0xc667, 0x2001,
19147 +       0x194b, 0x2004, 0x9005, 0x1140, 0x6010, 0x2058, 0xb8b0, 0x9005,
19148 +       0x0118, 0x9184, 0x0800, 0x0598, 0x6948, 0x918a, 0x0001, 0x0648,
19149 +       0x080c, 0xccd1, 0x0118, 0x6978, 0xd1fc, 0x11b8, 0x2009, 0x0205,
19150 +       0x200b, 0x0001, 0x693c, 0x81ff, 0x1198, 0x6944, 0x9182, 0x0100,
19151 +       0x02a8, 0x6940, 0x81ff, 0x1178, 0x6948, 0x918a, 0x0001, 0x0288,
19152 +       0x6950, 0x918a, 0x0001, 0x0298, 0x00d0, 0x6017, 0x0100, 0x00a0,
19153 +       0x6017, 0x0300, 0x0088, 0x6017, 0x0500, 0x0070, 0x6017, 0x0700,
19154 +       0x0058, 0x6017, 0x0900, 0x0040, 0x6017, 0x0b00, 0x0028, 0x6017,
19155 +       0x0f00, 0x0010, 0x6017, 0x2d00, 0x9085, 0x0001, 0x0008, 0x9006,
19156 +       0x001e, 0x00be, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00b6, 0x0026,
19157 +       0x0036, 0x0156, 0x6210, 0x2258, 0xbb04, 0x9394, 0x00ff, 0x9286,
19158 +       0x0006, 0x0178, 0x9286, 0x0004, 0x0160, 0x9394, 0xff00, 0x8217,
19159 +       0x9286, 0x0006, 0x0130, 0x9286, 0x0004, 0x0118, 0x080c, 0x5c1c,
19160 +       0x04e0, 0x2011, 0x0276, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019,
19161 +       0x000a, 0x080c, 0xa439, 0x009e, 0x1588, 0x2011, 0x027a, 0x20a9,
19162 +       0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, 0xa439, 0x009e,
19163 +       0x1528, 0x0046, 0x0016, 0xbaa0, 0x2220, 0x9006, 0x2009, 0x1853,
19164 +       0x210c, 0xd1a4, 0x0138, 0x2009, 0x0029, 0x080c, 0xc9c5, 0xb800,
19165 +       0xc0e5, 0xb802, 0x2019, 0x0029, 0x080c, 0x7d55, 0x0076, 0x2039,
19166 +       0x0000, 0x080c, 0x7c4d, 0x2c08, 0x080c, 0xc73e, 0x007e, 0x2001,
19167 +       0x0007, 0x080c, 0x5b8d, 0x001e, 0x004e, 0x9006, 0x015e, 0x003e,
19168 +       0x002e, 0x00be, 0x00ce, 0x0005, 0x00d6, 0x2069, 0x026e, 0x6800,
19169 +       0x9086, 0x0800, 0x0118, 0x6017, 0x0000, 0x0008, 0x9006, 0x00de,
19170 +       0x0005, 0x00b6, 0x00f6, 0x0016, 0x0026, 0x0036, 0x0156, 0x2079,
19171 +       0x026c, 0x7930, 0x7834, 0x080c, 0x23fd, 0x11d0, 0x080c, 0x5c0d,
19172 +       0x11b8, 0x2011, 0x0270, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019,
19173 +       0x000a, 0x080c, 0xa439, 0x009e, 0x1158, 0x2011, 0x0274, 0x20a9,
19174 +       0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, 0xa439, 0x009e,
19175 +       0x015e, 0x003e, 0x002e, 0x001e, 0x00fe, 0x00be, 0x0005, 0x00b6,
19176 +       0x0006, 0x0016, 0x0026, 0x0036, 0x0156, 0x2011, 0x0263, 0x2204,
19177 +       0x8211, 0x220c, 0x080c, 0x23fd, 0x11d0, 0x080c, 0x5c0d, 0x11b8,
19178 +       0x2011, 0x0276, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a,
19179 +       0x080c, 0xa439, 0x009e, 0x1158, 0x2011, 0x027a, 0x20a9, 0x0004,
19180 +       0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, 0xa439, 0x009e, 0x015e,
19181 +       0x003e, 0x002e, 0x001e, 0x000e, 0x00be, 0x0005, 0x00e6, 0x00c6,
19182 +       0x0086, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0126, 0x2091,
19183 +       0x8000, 0x2740, 0x2029, 0x19bd, 0x252c, 0x2021, 0x19c3, 0x2424,
19184 +       0x2061, 0x1cd0, 0x2071, 0x1800, 0x764c, 0x706c, 0x81ff, 0x0150,
19185 +       0x0006, 0x9186, 0x1a72, 0x000e, 0x0128, 0x8001, 0x9602, 0x1a04,
19186 +       0xc7cf, 0x0018, 0x9606, 0x0904, 0xc7cf, 0x2100, 0x9c06, 0x0904,
19187 +       0xc7c6, 0x080c, 0xca01, 0x1904, 0xc7c6, 0x080c, 0xccd8, 0x0904,
19188 +       0xc7c6, 0x080c, 0xc9f1, 0x0904, 0xc7c6, 0x6720, 0x9786, 0x0001,
19189 +       0x1148, 0x080c, 0x2e64, 0x0904, 0xc7ea, 0x6004, 0x9086, 0x0000,
19190 +       0x1904, 0xc7ea, 0x9786, 0x0004, 0x0904, 0xc7ea, 0x9786, 0x0007,
19191 +       0x05e8, 0x2500, 0x9c06, 0x05d0, 0x2400, 0x9c06, 0x05b8, 0x88ff,
19192 +       0x0118, 0x6054, 0x9906, 0x1590, 0x0096, 0x6000, 0x9086, 0x0004,
19193 +       0x1120, 0x0016, 0x080c, 0x17b0, 0x001e, 0x9786, 0x0008, 0x1148,
19194 +       0x080c, 0xb295, 0x1130, 0x080c, 0x9e99, 0x009e, 0x080c, 0x9584,
19195 +       0x00e8, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x01a8, 0x9786, 0x0003,
19196 +       0x1540, 0x080c, 0xc810, 0x0110, 0xa867, 0x0103, 0xab7a, 0xa877,
19197 +       0x0000, 0x080c, 0xcc6b, 0x0016, 0x080c, 0xb374, 0x080c, 0x619c,
19198 +       0x001e, 0x080c, 0xb278, 0x009e, 0x080c, 0x9584, 0x9ce0, 0x0018,
19199 +       0x2001, 0x1818, 0x2004, 0x9c02, 0x1210, 0x0804, 0xc752, 0x012e,
19200 +       0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee,
19201 +       0x0005, 0x9786, 0x0006, 0x1150, 0x9386, 0x0005, 0x0128, 0x080c,
19202 +       0xcc6b, 0x080c, 0xc970, 0x08f8, 0x009e, 0x0c00, 0x9786, 0x000a,
19203 +       0x0968, 0x0838, 0x81ff, 0x09d0, 0x9180, 0x0001, 0x2004, 0x9086,
19204 +       0x0018, 0x0130, 0x9180, 0x0001, 0x2004, 0x9086, 0x002d, 0x1970,
19205 +       0x6000, 0x9086, 0x0002, 0x1950, 0x080c, 0xb284, 0x0130, 0x080c,
19206 +       0xb295, 0x1920, 0x080c, 0x9e99, 0x0038, 0x080c, 0x2d3f, 0x080c,
19207 +       0xb295, 0x1110, 0x080c, 0x9e99, 0x080c, 0x9584, 0x0804, 0xc7c6,
19208 +       0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x0005, 0x00c6, 0x00e6,
19209 +       0x0016, 0x2c08, 0x2170, 0x9006, 0x080c, 0xc997, 0x001e, 0x0120,
19210 +       0x6020, 0x9084, 0x000f, 0x001b, 0x00ee, 0x00ce, 0x0005, 0xc835,
19211 +       0xc835, 0xc835, 0xc835, 0xc835, 0xc835, 0xc837, 0xc835, 0xc835,
19212 +       0xc835, 0xc835, 0x9584, 0x9584, 0xc835, 0x9006, 0x0005, 0x0036,
19213 +       0x0046, 0x0016, 0x7010, 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00,
19214 +       0x2009, 0x0020, 0x080c, 0xc9c5, 0x001e, 0x004e, 0x2019, 0x0002,
19215 +       0x080c, 0xc58e, 0x003e, 0x9085, 0x0001, 0x0005, 0x0096, 0x080c,
19216 +       0xb0ad, 0x0140, 0x6014, 0x904d, 0x080c, 0xad1e, 0x687b, 0x0005,
19217 +       0x080c, 0x61a9, 0x009e, 0x080c, 0x9584, 0x9085, 0x0001, 0x0005,
19218 +       0x2001, 0x0001, 0x080c, 0x5b4d, 0x0156, 0x0016, 0x0026, 0x0036,
19219 +       0x20a9, 0x0004, 0x2019, 0x1805, 0x2011, 0x0276, 0x080c, 0xa425,
19220 +       0x003e, 0x002e, 0x001e, 0x015e, 0x9005, 0x0005, 0x00f6, 0x00e6,
19221 +       0x00c6, 0x0086, 0x0076, 0x0066, 0x00b6, 0x0126, 0x2091, 0x8000,
19222 +       0x2740, 0x2061, 0x1cd0, 0x2079, 0x0001, 0x8fff, 0x0904, 0xc8d0,
19223 +       0x2071, 0x1800, 0x764c, 0x706c, 0x8001, 0x9602, 0x1a04, 0xc8d0,
19224 +       0x88ff, 0x0120, 0x2800, 0x9c06, 0x1590, 0x2078, 0x080c, 0xc9f1,
19225 +       0x0570, 0x2400, 0x9c06, 0x0558, 0x6720, 0x9786, 0x0006, 0x1538,
19226 +       0x9786, 0x0007, 0x0520, 0x88ff, 0x1140, 0x6010, 0x9b06, 0x11f8,
19227 +       0x85ff, 0x0118, 0x6054, 0x9106, 0x11d0, 0x0096, 0x601c, 0xd084,
19228 +       0x0140, 0x080c, 0xcc1f, 0x080c, 0xb76f, 0x080c, 0x17b0, 0x6023,
19229 +       0x0007, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0120, 0x0046, 0x080c,
19230 +       0xc970, 0x004e, 0x009e, 0x080c, 0x9584, 0x88ff, 0x1198, 0x9ce0,
19231 +       0x0018, 0x2001, 0x1818, 0x2004, 0x9c02, 0x1210, 0x0804, 0xc885,
19232 +       0x9006, 0x012e, 0x00be, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee,
19233 +       0x00fe, 0x0005, 0x98c5, 0x0001, 0x0ca0, 0x00b6, 0x0076, 0x0056,
19234 +       0x0086, 0x9046, 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6210,
19235 +       0x2258, 0x0096, 0x904e, 0x080c, 0x8ef6, 0x009e, 0x008e, 0x903e,
19236 +       0x080c, 0x8f9a, 0x080c, 0xc876, 0x005e, 0x007e, 0x00be, 0x0005,
19237 +       0x00b6, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x2128,
19238 +       0x20a9, 0x007f, 0x900e, 0x0016, 0x0036, 0x080c, 0x5c0d, 0x1190,
19239 +       0x0056, 0x0086, 0x9046, 0x2508, 0x2029, 0x0001, 0x0096, 0x904e,
19240 +       0x080c, 0x8ef6, 0x009e, 0x008e, 0x903e, 0x080c, 0x8f9a, 0x080c,
19241 +       0xc876, 0x005e, 0x003e, 0x001e, 0x8108, 0x1f04, 0xc903, 0x015e,
19242 +       0x00ce, 0x007e, 0x005e, 0x004e, 0x00be, 0x0005, 0x00b6, 0x0076,
19243 +       0x0056, 0x6210, 0x2258, 0x0086, 0x9046, 0x2029, 0x0001, 0x2019,
19244 +       0x0048, 0x0096, 0x904e, 0x080c, 0x8ef6, 0x009e, 0x008e, 0x903e,
19245 +       0x080c, 0x8f9a, 0x2c20, 0x080c, 0xc876, 0x005e, 0x007e, 0x00be,
19246 +       0x0005, 0x00b6, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20,
19247 +       0x20a9, 0x007f, 0x900e, 0x0016, 0x0036, 0x080c, 0x5c0d, 0x11a0,
19248 +       0x0086, 0x9046, 0x2828, 0x0046, 0x2021, 0x0001, 0x080c, 0xcc03,
19249 +       0x004e, 0x0096, 0x904e, 0x080c, 0x8ef6, 0x009e, 0x008e, 0x903e,
19250 +       0x080c, 0x8f9a, 0x080c, 0xc876, 0x003e, 0x001e, 0x8108, 0x1f04,
19251 +       0xc94b, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x00be, 0x0005,
19252 +       0x0016, 0x00f6, 0x080c, 0xb0ab, 0x0198, 0xa864, 0x9084, 0x00ff,
19253 +       0x9086, 0x0046, 0x0180, 0xa800, 0x907d, 0x0138, 0xa803, 0x0000,
19254 +       0xab82, 0x080c, 0x61a9, 0x2f48, 0x0cb0, 0xab82, 0x080c, 0x61a9,
19255 +       0x00fe, 0x001e, 0x0005, 0xa800, 0x907d, 0x0130, 0xa803, 0x0000,
19256 +       0x080c, 0x61a9, 0x2f48, 0x0cb8, 0x080c, 0x61a9, 0x0c88, 0x00e6,
19257 +       0x0046, 0x0036, 0x2061, 0x1cd0, 0x9005, 0x1138, 0x2071, 0x1800,
19258 +       0x744c, 0x706c, 0x8001, 0x9402, 0x12d8, 0x2100, 0x9c06, 0x0168,
19259 +       0x6000, 0x9086, 0x0000, 0x0148, 0x6008, 0x9206, 0x1130, 0x6010,
19260 +       0x91a0, 0x0004, 0x2424, 0x9406, 0x0140, 0x9ce0, 0x0018, 0x2001,
19261 +       0x1818, 0x2004, 0x9c02, 0x1220, 0x0c40, 0x9085, 0x0001, 0x0008,
19262 +       0x9006, 0x003e, 0x004e, 0x00ee, 0x0005, 0x0096, 0x0006, 0x080c,
19263 +       0x0fae, 0x000e, 0x090c, 0x0d84, 0xa867, 0x010d, 0xa88e, 0x0026,
19264 +       0x2010, 0x080c, 0xb09b, 0x2001, 0x0000, 0x0120, 0x2200, 0x9080,
19265 +       0x0015, 0x2004, 0x002e, 0xa87a, 0xa986, 0xac76, 0xa87f, 0x0000,
19266 +       0x2001, 0x195b, 0x2004, 0xa882, 0x9006, 0xa8e2, 0xa802, 0xa86a,
19267 +       0xa88a, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0x009e,
19268 +       0x0005, 0x6700, 0x9786, 0x0000, 0x0158, 0x9786, 0x0001, 0x0140,
19269 +       0x9786, 0x000a, 0x0128, 0x9786, 0x0009, 0x0110, 0x9085, 0x0001,
19270 +       0x0005, 0x00e6, 0x6010, 0x9075, 0x0138, 0x00b6, 0x2058, 0xb8a0,
19271 +       0x00be, 0x9206, 0x00ee, 0x0005, 0x9085, 0x0001, 0x0cd8, 0x0016,
19272 +       0x6004, 0x908e, 0x001e, 0x11a0, 0x8007, 0x6134, 0x918c, 0x00ff,
19273 +       0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0005,
19274 +       0x2001, 0x1954, 0x2004, 0x601a, 0x080c, 0x7bcb, 0x080c, 0x8125,
19275 +       0x001e, 0x0005, 0xa001, 0xa001, 0x0005, 0x6024, 0xd0e4, 0x0158,
19276 +       0xd0cc, 0x0118, 0x080c, 0xb3ae, 0x0030, 0x080c, 0xcc1f, 0x080c,
19277 +       0x79df, 0x080c, 0x9554, 0x0005, 0x9280, 0x0008, 0x2004, 0x9084,
19278 +       0x000f, 0x0002, 0xca50, 0xca50, 0xca50, 0xca52, 0xca50, 0xca52,
19279 +       0xca52, 0xca50, 0xca52, 0xca50, 0xca50, 0xca50, 0xca50, 0xca50,
19280 +       0x9006, 0x0005, 0x9085, 0x0001, 0x0005, 0x9280, 0x0008, 0x2004,
19281 +       0x9084, 0x000f, 0x0002, 0xca69, 0xca69, 0xca69, 0xca69, 0xca69,
19282 +       0xca69, 0xca76, 0xca69, 0xca69, 0xca69, 0xca69, 0xca69, 0xca69,
19283 +       0xca69, 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, 0x6003,
19284 +       0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x0005, 0x0096, 0x00c6,
19285 +       0x2260, 0x080c, 0xcc1f, 0x6043, 0x0000, 0x6024, 0xc0f4, 0xc0e4,
19286 +       0x6026, 0x603b, 0x0000, 0x00ce, 0x00d6, 0x2268, 0x9186, 0x0007,
19287 +       0x1904, 0xcad0, 0x6814, 0x9005, 0x0138, 0x2048, 0xa87c, 0xd0fc,
19288 +       0x1118, 0x00de, 0x009e, 0x08a8, 0x6007, 0x003a, 0x6003, 0x0001,
19289 +       0x080c, 0x7bcb, 0x080c, 0x8125, 0x00c6, 0x2d60, 0x6100, 0x9186,
19290 +       0x0002, 0x1904, 0xcb48, 0x6014, 0x9005, 0x1138, 0x6000, 0x9086,
19291 +       0x0007, 0x190c, 0x0d84, 0x0804, 0xcb48, 0x2048, 0x080c, 0xb0ad,
19292 +       0x1130, 0x0028, 0x2048, 0xa800, 0x9005, 0x1de0, 0x2900, 0x2048,
19293 +       0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x1170, 0xa87c, 0xc0dc,
19294 +       0xc0f4, 0xa87e, 0xa880, 0xc0f4, 0xc0fc, 0xa882, 0x2009, 0x0043,
19295 +       0x080c, 0xc3ee, 0x0804, 0xcb48, 0x2009, 0x0041, 0x0804, 0xcb42,
19296 +       0x9186, 0x0005, 0x15a8, 0x6814, 0x2048, 0xa87c, 0xd0bc, 0x1120,
19297 +       0x00de, 0x009e, 0x0804, 0xca69, 0xd0b4, 0x0128, 0xd0fc, 0x090c,
19298 +       0x0d84, 0x0804, 0xca8a, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c,
19299 +       0x7bcb, 0x080c, 0x8125, 0x00c6, 0x2d60, 0x6100, 0x9186, 0x0002,
19300 +       0x0120, 0x9186, 0x0004, 0x1904, 0xcb48, 0x6814, 0x2048, 0xa97c,
19301 +       0xc1f4, 0xc1dc, 0xa97e, 0xa980, 0xc1f4, 0xc1fc, 0xc1bc, 0xa982,
19302 +       0x00f6, 0x2c78, 0x080c, 0x150d, 0x00fe, 0x2009, 0x0042, 0x04d0,
19303 +       0x0036, 0x080c, 0x0fae, 0x090c, 0x0d84, 0xa867, 0x010d, 0x9006,
19304 +       0xa802, 0xa86a, 0xa88a, 0x2d18, 0xab8e, 0xa887, 0x0045, 0x2c00,
19305 +       0xa892, 0x6038, 0xa8a2, 0x2360, 0x6024, 0xc0dd, 0x6026, 0x6010,
19306 +       0x00b6, 0x2058, 0xb8a0, 0x00be, 0x2004, 0x6354, 0xab7a, 0xa876,
19307 +       0x9006, 0xa87e, 0xa882, 0xad9a, 0xae96, 0xa89f, 0x0001, 0x080c,
19308 +       0x61a9, 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xc58e, 0x2d00,
19309 +       0x600a, 0x6023, 0x0006, 0x6003, 0x0007, 0x901e, 0x631a, 0x6342,
19310 +       0x003e, 0x0038, 0x6043, 0x0000, 0x6003, 0x0007, 0x080c, 0xc3ee,
19311 +       0x00ce, 0x00de, 0x009e, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004,
19312 +       0x9082, 0x0085, 0x2008, 0x00c2, 0x9186, 0x0027, 0x1178, 0x080c,
19313 +       0x8026, 0x0036, 0x0096, 0x6014, 0x2048, 0x2019, 0x0004, 0x080c,
19314 +       0xc970, 0x009e, 0x003e, 0x080c, 0x8125, 0x0005, 0x9186, 0x0014,
19315 +       0x0d70, 0x080c, 0x95e9, 0x0005, 0xcb7b, 0xcb79, 0xcb79, 0xcb79,
19316 +       0xcb79, 0xcb79, 0xcb7b, 0xcb79, 0xcb79, 0xcb79, 0xcb79, 0xcb79,
19317 +       0xcb79, 0x080c, 0x0d84, 0x080c, 0x8026, 0x6003, 0x000c, 0x080c,
19318 +       0x8125, 0x0005, 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, 0x0208,
19319 +       0x001a, 0x080c, 0x95e9, 0x0005, 0xcb99, 0xcb99, 0xcb99, 0xcb99,
19320 +       0xcb9b, 0xcbbb, 0xcb99, 0xcb99, 0xcb99, 0xcb99, 0xcb99, 0xcb99,
19321 +       0xcb99, 0x080c, 0x0d84, 0x00d6, 0x2c68, 0x080c, 0x94fe, 0x01b0,
19322 +       0x6003, 0x0001, 0x6007, 0x001e, 0x2009, 0x026e, 0x210c, 0x613a,
19323 +       0x2009, 0x026f, 0x210c, 0x613e, 0x600b, 0xffff, 0x6910, 0x6112,
19324 +       0x6023, 0x0004, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x2d60, 0x080c,
19325 +       0x9554, 0x00de, 0x0005, 0x080c, 0x9554, 0x0005, 0x00e6, 0x6010,
19326 +       0x00b6, 0x2058, 0xb800, 0x00be, 0xd0ec, 0x00ee, 0x0005, 0x2009,
19327 +       0x1872, 0x210c, 0xd1ec, 0x05b0, 0x6003, 0x0002, 0x6024, 0xc0e5,
19328 +       0x6026, 0xd0cc, 0x0150, 0x2001, 0x1955, 0x2004, 0x6042, 0x2009,
19329 +       0x1872, 0x210c, 0xd1f4, 0x1520, 0x00a0, 0x2009, 0x1872, 0x210c,
19330 +       0xd1f4, 0x0128, 0x6024, 0xc0e4, 0x6026, 0x9006, 0x00d8, 0x2001,
19331 +       0x1955, 0x200c, 0x2001, 0x1953, 0x2004, 0x9100, 0x9080, 0x000a,
19332 +       0x6042, 0x6010, 0x00b6, 0x2058, 0xb8ac, 0x00be, 0x0008, 0x2104,
19333 +       0x9005, 0x0118, 0x9088, 0x0003, 0x0cd0, 0x2c0a, 0x600f, 0x0000,
19334 +       0x9085, 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, 0x6154, 0xb8ac,
19335 +       0x2060, 0x8cff, 0x0180, 0x84ff, 0x1118, 0x6054, 0x9106, 0x1138,
19336 +       0x600c, 0x2072, 0x080c, 0x79df, 0x080c, 0x9554, 0x0010, 0x9cf0,
19337 +       0x0003, 0x2e64, 0x0c70, 0x00ee, 0x00ce, 0x001e, 0x0005, 0x00d6,
19338 +       0x00b6, 0x6010, 0x2058, 0xb8ac, 0x2068, 0x9005, 0x0130, 0x9c06,
19339 +       0x0110, 0x680c, 0x0cd0, 0x600c, 0x680e, 0x00be, 0x00de, 0x0005,
19340 +       0x0026, 0x0036, 0x0156, 0x2011, 0x182a, 0x2204, 0x9084, 0x00ff,
19341 +       0x2019, 0x026e, 0x2334, 0x9636, 0x1508, 0x8318, 0x2334, 0x2204,
19342 +       0x9084, 0xff00, 0x9636, 0x11d0, 0x2011, 0x0270, 0x20a9, 0x0004,
19343 +       0x6010, 0x0096, 0x2048, 0x2019, 0x000a, 0x080c, 0xa439, 0x009e,
19344 +       0x1168, 0x2011, 0x0274, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048,
19345 +       0x2019, 0x0006, 0x080c, 0xa439, 0x009e, 0x1100, 0x015e, 0x003e,
19346 +       0x002e, 0x0005, 0x00e6, 0x2071, 0x1800, 0x080c, 0x5677, 0x080c,
19347 +       0x2b1e, 0x00ee, 0x0005, 0x00e6, 0x6010, 0x00b6, 0x2058, 0xb800,
19348 +       0x00be, 0xd0fc, 0x0108, 0x0011, 0x00ee, 0x0005, 0xa880, 0xc0e5,
19349 +       0xa882, 0x0005, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0046,
19350 +       0x0026, 0x0016, 0x0126, 0x2091, 0x8000, 0x2029, 0x19bd, 0x252c,
19351 +       0x2021, 0x19c3, 0x2424, 0x2061, 0x1cd0, 0x2071, 0x1800, 0x764c,
19352 +       0x706c, 0x9606, 0x0578, 0x6720, 0x9786, 0x0001, 0x0118, 0x9786,
19353 +       0x0008, 0x1500, 0x2500, 0x9c06, 0x01e8, 0x2400, 0x9c06, 0x01d0,
19354 +       0x080c, 0xc9f1, 0x01b8, 0x080c, 0xca01, 0x11a0, 0x6000, 0x9086,
19355 +       0x0004, 0x1120, 0x0016, 0x080c, 0x17b0, 0x001e, 0x080c, 0xb284,
19356 +       0x1110, 0x080c, 0x2d3f, 0x080c, 0xb295, 0x1110, 0x080c, 0x9e99,
19357 +       0x080c, 0x9584, 0x9ce0, 0x0018, 0x2001, 0x1818, 0x2004, 0x9c02,
19358 +       0x1208, 0x0858, 0x012e, 0x001e, 0x002e, 0x004e, 0x005e, 0x006e,
19359 +       0x007e, 0x00ce, 0x00ee, 0x0005, 0x2001, 0x180f, 0x2004, 0xd0dc,
19360 +       0x0005, 0x0006, 0x2001, 0x1836, 0x2004, 0xd09c, 0x000e, 0x0005,
19361 +       0x6004, 0x9086, 0x0001, 0x1128, 0x080c, 0x905b, 0x080c, 0x9584,
19362 +       0x9006, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000,
19363 +       0x2071, 0x1840, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4,
19364 +       0x0118, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, 0x9084,
19365 +       0x0007, 0x908e, 0x0003, 0x0148, 0x908e, 0x0004, 0x0130, 0x908e,
19366 +       0x0005, 0x0118, 0x2071, 0x184a, 0x0089, 0x001e, 0x00ee, 0x000e,
19367 +       0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071,
19368 +       0x1842, 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, 0x2e04, 0x8000,
19369 +       0x2072, 0x1220, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x0005, 0x00e6,
19370 +       0x2071, 0x1840, 0x0c99, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1844,
19371 +       0x0c69, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000,
19372 +       0x2071, 0x1840, 0x7044, 0x8000, 0x7046, 0x00ee, 0x000e, 0x012e,
19373 +       0x0005, 0x0002, 0x0003, 0x03d6, 0x0000, 0x8064, 0x0008, 0x0010,
19374 +       0x0000, 0x8066, 0x0000, 0x0101, 0x0008, 0x4406, 0x000b, 0x8060,
19375 +       0x0000, 0x0400, 0x0000, 0x580c, 0x0003, 0x7934, 0x000b, 0x5090,
19376 +       0x000b, 0x4c09, 0x0003, 0xbac0, 0x0009, 0x0082, 0x0008, 0x0c09,
19377 +       0x000b, 0x15fe, 0x0008, 0x3409, 0x0003, 0x808c, 0x0008, 0x0001,
19378 +       0x0000, 0x0000, 0x0007, 0x4047, 0x000a, 0x808c, 0x0008, 0x0002,
19379 +       0x0000, 0x081b, 0x0003, 0x4022, 0x0000, 0x001c, 0x0003, 0x4122,
19380 +       0x0008, 0x4447, 0x0002, 0x0de7, 0x0003, 0x0bfe, 0x0008, 0x11a0,
19381 +       0x0001, 0x11c9, 0x000b, 0x0ca0, 0x0001, 0x11c9, 0x000b, 0x9180,
19382 +       0x0001, 0x0004, 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62,
19383 +       0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x442a, 0x0003, 0x808c,
19384 +       0x0008, 0x0000, 0x0008, 0x0060, 0x0008, 0x8062, 0x0008, 0x0004,
19385 +       0x0000, 0x8066, 0x0000, 0x0411, 0x0000, 0x4432, 0x0003, 0x03fe,
19386 +       0x0000, 0x43e0, 0x0001, 0x0dc6, 0x0003, 0xc2c0, 0x0009, 0x00ff,
19387 +       0x0008, 0x02e0, 0x0001, 0x0dc6, 0x0003, 0x9180, 0x0001, 0x0005,
19388 +       0x0008, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066,
19389 +       0x0000, 0x0019, 0x0000, 0x4441, 0x000b, 0x0240, 0x0002, 0x09c3,
19390 +       0x000b, 0x00fe, 0x0000, 0x31c6, 0x0003, 0x112a, 0x0000, 0x002e,
19391 +       0x0008, 0x022c, 0x0008, 0x3a44, 0x0002, 0x0c09, 0x000b, 0x808c,
19392 +       0x0008, 0x0002, 0x0000, 0x1760, 0x0008, 0x8062, 0x0008, 0x000f,
19393 +       0x0008, 0x8066, 0x0000, 0x0011, 0x0008, 0x4452, 0x0003, 0x01fe,
19394 +       0x0008, 0x42e0, 0x0009, 0x0db9, 0x000b, 0x00fe, 0x0000, 0x43e0,
19395 +       0x0001, 0x0db9, 0x000b, 0x1734, 0x0000, 0x1530, 0x0000, 0x1632,
19396 +       0x0008, 0x0d2a, 0x0008, 0x9880, 0x0001, 0x0010, 0x0000, 0x8060,
19397 +       0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x1e0a,
19398 +       0x0008, 0x4464, 0x0003, 0x808a, 0x0008, 0x0003, 0x0008, 0x1a60,
19399 +       0x0000, 0x8062, 0x0008, 0x0002, 0x0000, 0x586a, 0x0003, 0x8066,
19400 +       0x0000, 0x3679, 0x0000, 0x446d, 0x0003, 0x586e, 0x000b, 0x8054,
19401 +       0x0008, 0x0011, 0x0008, 0x8074, 0x0000, 0x1010, 0x0008, 0x1efe,
19402 +       0x0000, 0x3009, 0x000b, 0x0077, 0x0004, 0x0009, 0x000b, 0x1c60,
19403 +       0x0000, 0x1b62, 0x0000, 0x8066, 0x0000, 0x0231, 0x0008, 0x447b,
19404 +       0x000b, 0x587c, 0x000b, 0x0140, 0x0008, 0x0242, 0x0000, 0x1f43,
19405 +       0x0002, 0x0c86, 0x0003, 0x0d44, 0x0000, 0x0d46, 0x0008, 0x0348,
19406 +       0x0008, 0x044a, 0x0008, 0x008a, 0x0003, 0x0344, 0x0008, 0x0446,
19407 +       0x0008, 0x0548, 0x0008, 0x064a, 0x0000, 0x588a, 0x000b, 0x8054,
19408 +       0x0008, 0x0001, 0x0000, 0x8074, 0x0000, 0x2020, 0x0008, 0x4000,
19409 +       0x000f, 0x3a40, 0x000a, 0x0c0c, 0x000b, 0x2b24, 0x0008, 0x2b24,
19410 +       0x0008, 0x5894, 0x000b, 0x8054, 0x0008, 0x0002, 0x0000, 0x1242,
19411 +       0x0002, 0x08d8, 0x0003, 0x3a45, 0x000a, 0x08c9, 0x0003, 0x1e10,
19412 +       0x000a, 0x7f3c, 0x0000, 0x08c6, 0x0003, 0x1d00, 0x0002, 0x7f3a,
19413 +       0x0000, 0x0d60, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009,
19414 +       0x0008, 0x44a4, 0x0003, 0x00fe, 0x0000, 0x34c3, 0x0003, 0x1c60,
19415 +       0x0000, 0x8062, 0x0008, 0x0001, 0x0000, 0x8066, 0x0000, 0x0009,
19416 +       0x0008, 0x44ac, 0x000b, 0x00fe, 0x0000, 0x31a2, 0x000b, 0x0038,
19417 +       0x0000, 0x0060, 0x0008, 0x8062, 0x0008, 0x0019, 0x0000, 0x8066,
19418 +       0x0000, 0x0009, 0x0008, 0x44b5, 0x0003, 0x80c0, 0x0009, 0x00ff,
19419 +       0x0008, 0x7f3e, 0x0008, 0x0d60, 0x0000, 0x0efe, 0x0008, 0x1f80,
19420 +       0x0001, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x44bf,
19421 +       0x0003, 0x003a, 0x0008, 0x1dfe, 0x0000, 0x00a0, 0x000b, 0x0036,
19422 +       0x0008, 0x0077, 0x0004, 0x00d8, 0x000b, 0x8074, 0x0000, 0x2000,
19423 +       0x0000, 0x00d8, 0x000b, 0x3a44, 0x0002, 0x09cc, 0x000b, 0x8074,
19424 +       0x0000, 0x1000, 0x0000, 0x2d0e, 0x0000, 0x2d0e, 0x0000, 0x35a2,
19425 +       0x0003, 0x26fe, 0x0008, 0x26fe, 0x0008, 0x2700, 0x0008, 0x2700,
19426 +       0x0008, 0x00d0, 0x0009, 0x0ce6, 0x0003, 0x8074, 0x0000, 0x4040,
19427 +       0x0008, 0x58d8, 0x0003, 0x5090, 0x000b, 0x3a46, 0x000a, 0x0ce6,
19428 +       0x0003, 0x3a47, 0x0002, 0x08e3, 0x000b, 0x8054, 0x0008, 0x0004,
19429 +       0x0000, 0x8074, 0x0000, 0x8000, 0x0000, 0x0127, 0x0003, 0x92c0,
19430 +       0x0009, 0x0f88, 0x0008, 0x0809, 0x0003, 0x1a60, 0x0000, 0x8062,
19431 +       0x0008, 0x0002, 0x0000, 0x8066, 0x0000, 0x362a, 0x0000, 0x44eb,
19432 +       0x000b, 0x2000, 0x0000, 0x2000, 0x0000, 0x2102, 0x0000, 0x2102,
19433 +       0x0000, 0x2204, 0x0000, 0x2204, 0x0000, 0x2306, 0x0000, 0x2306,
19434 +       0x0000, 0x2408, 0x0000, 0x2408, 0x0000, 0x250a, 0x0000, 0x250a,
19435 +       0x0000, 0x260c, 0x0000, 0x260c, 0x0000, 0x270e, 0x0000, 0x270e,
19436 +       0x0000, 0x2810, 0x0000, 0x2810, 0x0000, 0x2912, 0x0000, 0x2912,
19437 +       0x0000, 0x1a60, 0x0000, 0x8062, 0x0008, 0x0007, 0x0000, 0x8066,
19438 +       0x0000, 0x0052, 0x0000, 0x4505, 0x0003, 0x92c0, 0x0009, 0x0780,
19439 +       0x0008, 0x0db3, 0x000b, 0x124b, 0x0002, 0x090e, 0x0003, 0x2e4d,
19440 +       0x0002, 0x2e4d, 0x0002, 0x09a2, 0x0003, 0x3a46, 0x000a, 0x0d1b,
19441 +       0x0003, 0x5910, 0x0003, 0x8054, 0x0008, 0x0004, 0x0000, 0x1243,
19442 +       0x000a, 0x0925, 0x0003, 0x8010, 0x0008, 0x000d, 0x0000, 0x0193,
19443 +       0x000c, 0x1810, 0x0000, 0x0193, 0x000c, 0x0125, 0x000b, 0x194d,
19444 +       0x000a, 0x091f, 0x0003, 0x1243, 0x000a, 0x09a9, 0x000b, 0x591f,
19445 +       0x0003, 0x8054, 0x0008, 0x0004, 0x0000, 0x0188, 0x000c, 0x1810,
19446 +       0x0000, 0x0193, 0x000c, 0x8074, 0x0000, 0xf000, 0x0008, 0x3a42,
19447 +       0x0002, 0x0d2d, 0x0003, 0x15fe, 0x0008, 0x344b, 0x0003, 0x0d30,
19448 +       0x0000, 0x0009, 0x000b, 0x0d30, 0x0000, 0x8074, 0x0000, 0x0501,
19449 +       0x0000, 0x8010, 0x0008, 0x000c, 0x0008, 0x0193, 0x000c, 0x0009,
19450 +       0x000b, 0xbbe0, 0x0009, 0x0030, 0x0008, 0x0d44, 0x0003, 0x18fe,
19451 +       0x0000, 0x3ce0, 0x0009, 0x0941, 0x000b, 0x15fe, 0x0008, 0x3ce0,
19452 +       0x0009, 0x0941, 0x000b, 0x0183, 0x0004, 0x8076, 0x0008, 0x0040,
19453 +       0x0000, 0x0180, 0x000b, 0x8076, 0x0008, 0x0041, 0x0008, 0x0180,
19454 +       0x000b, 0xbbe0, 0x0009, 0x0032, 0x0000, 0x0d49, 0x000b, 0x3c1e,
19455 +       0x0008, 0x0180, 0x000b, 0xbbe0, 0x0009, 0x0037, 0x0000, 0x0d65,
19456 +       0x0003, 0x18fe, 0x0000, 0x3ce0, 0x0009, 0x0d41, 0x0003, 0x1a60,
19457 +       0x0000, 0x8062, 0x0008, 0x000d, 0x0000, 0x2604, 0x0008, 0x2604,
19458 +       0x0008, 0x2706, 0x0008, 0x2706, 0x0008, 0x2808, 0x0000, 0x2808,
19459 +       0x0000, 0x290a, 0x0000, 0x290a, 0x0000, 0x8066, 0x0000, 0x0422,
19460 +       0x0000, 0x455c, 0x0003, 0x0188, 0x000c, 0x8054, 0x0008, 0x0004,
19461 +       0x0000, 0x8074, 0x0000, 0xf000, 0x0008, 0x8072, 0x0000, 0x8000,
19462 +       0x0000, 0x0127, 0x0003, 0xbbe0, 0x0009, 0x0038, 0x0000, 0x0d77,
19463 +       0x0003, 0x18fe, 0x0000, 0x3ce0, 0x0009, 0x0974, 0x000b, 0x15fe,
19464 +       0x0008, 0x3ce0, 0x0009, 0x0d3d, 0x000b, 0x0183, 0x0004, 0x8076,
19465 +       0x0008, 0x0040, 0x0000, 0x8072, 0x0000, 0x8000, 0x0000, 0x01c3,
19466 +       0x0003, 0x8076, 0x0008, 0x0042, 0x0008, 0x0180, 0x000b, 0xbbe0,
19467 +       0x0009, 0x0016, 0x0000, 0x0d80, 0x000b, 0x3a44, 0x0002, 0x0c0b,
19468 +       0x0003, 0x8072, 0x0000, 0x8000, 0x0000, 0x8000, 0x000f, 0x0009,
19469 +       0x000b, 0x8072, 0x0000, 0x8000, 0x0000, 0x0009, 0x000b, 0x3d30,
19470 +       0x000a, 0x7f00, 0x0000, 0xbc80, 0x0001, 0x0007, 0x0000, 0x018c,
19471 +       0x000b, 0x1930, 0x000a, 0x7f00, 0x0000, 0x9880, 0x0001, 0x0007,
19472 +       0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066,
19473 +       0x0000, 0x000a, 0x0008, 0x4591, 0x000b, 0x4000, 0x000f, 0x2193,
19474 +       0x000b, 0x0870, 0x0008, 0x4000, 0x000f, 0xbac0, 0x0009, 0x0090,
19475 +       0x0008, 0x099c, 0x000b, 0x8074, 0x0000, 0x0706, 0x0000, 0x019e,
19476 +       0x000b, 0x8074, 0x0000, 0x0703, 0x0000, 0x4000, 0x000f, 0x8010,
19477 +       0x0008, 0x0008, 0x0000, 0x01d1, 0x0003, 0x0188, 0x000c, 0x8010,
19478 +       0x0008, 0x0007, 0x0000, 0x0193, 0x000c, 0x1810, 0x0000, 0x0193,
19479 +       0x000c, 0x01db, 0x0003, 0x0188, 0x000c, 0x8010, 0x0008, 0x001b,
19480 +       0x0008, 0x0193, 0x000c, 0x1810, 0x0000, 0x0193, 0x000c, 0x8074,
19481 +       0x0000, 0xf080, 0x0000, 0x0d30, 0x0000, 0x0009, 0x000b, 0x8010,
19482 +       0x0008, 0x0009, 0x0008, 0x01d1, 0x0003, 0x8010, 0x0008, 0x0005,
19483 +       0x0008, 0x01d1, 0x0003, 0x808c, 0x0008, 0x0001, 0x0000, 0x8010,
19484 +       0x0008, 0x0004, 0x0000, 0x4143, 0x000a, 0x0859, 0x0003, 0x3a44,
19485 +       0x0002, 0x0c09, 0x000b, 0x0d2a, 0x0008, 0x01d1, 0x0003, 0x8010,
19486 +       0x0008, 0x0003, 0x0008, 0x01d3, 0x000b, 0x8010, 0x0008, 0x000b,
19487 +       0x0000, 0x01d3, 0x000b, 0x8010, 0x0008, 0x0002, 0x0000, 0x01d3,
19488 +       0x000b, 0x3a47, 0x0002, 0x0cd8, 0x000b, 0x8010, 0x0008, 0x0006,
19489 +       0x0008, 0x01d3, 0x000b, 0x8074, 0x0000, 0xf000, 0x0008, 0x0193,
19490 +       0x000c, 0x0196, 0x000c, 0x3a40, 0x000a, 0x0809, 0x0003, 0x8010,
19491 +       0x0008, 0x000c, 0x0008, 0x0193, 0x000c, 0x0009, 0x000b, 0x8074,
19492 +       0x0000, 0xf080, 0x0000, 0x0d30, 0x0000, 0x2e4d, 0x0002, 0x2e4d,
19493 +       0x0002, 0x09e4, 0x000b, 0x8054, 0x0008, 0x0019, 0x0000, 0x0009,
19494 +       0x000b, 0x8054, 0x0008, 0x0009, 0x0008, 0x0009, 0x000b, 0x3a44,
19495 +       0x0002, 0x0c09, 0x000b, 0x01c6, 0x0003, 0xc993, 0xf609, 0x0001,
19496 +       0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100,
19497 +       0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0xd29e
19498 +};
19499 +#ifdef UNIQUE_FW_NAME
19500 +unsigned short fw2300tpx_length01 = 0xc920;
19501 +#else
19502 +unsigned short risc_code_length01 = 0xc920;
19503 +#endif
19504 +
19505 --- /dev/null   Thu Apr 11 07:25:15 2002
19506 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_cfg.c   Thu Jul  3 15:34:42 2003
19507 @@ -0,0 +1,2780 @@
19508 +/******************************************************************************
19509 + *                  QLOGIC LINUX SOFTWARE
19510 + *
19511 + * QLogic ISP2x00 device driver for Linux 2.5.x
19512 + * Copyright (C) 2003 Qlogic Corporation
19513 + * (www.qlogic.com)
19514 + *
19515 + * This program is free software; you can redistribute it and/or modify it
19516 + * under the terms of the GNU General Public License as published by the
19517 + * Free Software Foundation; either version 2, or (at your option) any
19518 + * later version.
19519 + *
19520 + * This program is distributed in the hope that it will be useful, but
19521 + * WITHOUT ANY WARRANTY; without even the implied warranty of
19522 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19523 + * General Public License for more details.
19524 + *
19525 + ******************************************************************************/
19526 +
19527 +/*
19528 + * QLogic ISP2x00 Multi-path LUN Support Driver
19529 + *
19530 + */
19531 +
19532 +#include "qla_os.h"
19533 +#include "qla_def.h"
19534 +
19535 +#include "qlfo.h"
19536 +
19537 +/*
19538 + *  Local Function Prototypes.
19539 + */
19540 +
19541 +static uint32_t qla2x00_add_portname_to_mp_dev(mp_device_t *, uint8_t *);
19542 +
19543 +static mp_device_t * qla2x00_allocate_mp_dev(uint8_t *, uint8_t *);
19544 +static mp_path_t * qla2x00_allocate_path(mp_host_t *, uint16_t, fc_port_t *,
19545 +    uint16_t);
19546 +static mp_path_list_t * qla2x00_allocate_path_list(void);
19547 +
19548 +static mp_host_t * qla2x00_find_host_by_name(uint8_t *);
19549 +
19550 +static mp_device_t * qla2x00_find_or_allocate_mp_dev (mp_host_t *, uint16_t,
19551 +    fc_port_t *);
19552 +static mp_path_t * qla2x00_find_or_allocate_path(mp_host_t *, mp_device_t *,
19553 +    uint16_t, fc_port_t *);
19554 +
19555 +static uint32_t qla2x00_cfg_register_failover_lun(mp_device_t *,srb_t *,
19556 +    fc_lun_t *);
19557 +static uint32_t qla2x00_send_failover_notify(mp_device_t *, uint8_t,
19558 +    mp_path_t *, mp_path_t *);
19559 +static mp_path_t * qla2x00_select_next_path(mp_host_t *, mp_device_t *,
19560 +    uint8_t);
19561 +
19562 +static uint8_t qla2x00_update_mp_host(mp_host_t  *);
19563 +static uint32_t qla2x00_update_mp_tree (void);
19564 +
19565 +static fc_lun_t *qla2x00_find_matching_lun(uint8_t , mp_path_t *);
19566 +static mp_path_t *qla2x00_find_path_by_id(mp_device_t *, uint8_t);
19567 +static mp_device_t *qla2x00_find_mp_dev_by_id(mp_host_t *, uint8_t);
19568 +static mp_device_t *qla2x00_find_mp_dev_by_name(mp_host_t *, uint8_t *);
19569 +
19570 +static mp_path_t *qla2x00_get_visible_path(mp_device_t *dp);
19571 +static void qla2x00_map_os_targets(mp_host_t *);
19572 +static void qla2x00_map_os_luns(mp_host_t *, mp_device_t *, uint16_t);
19573 +static uint8_t qla2x00_map_a_oslun(mp_host_t *, mp_device_t *, uint16_t, uint16_t);
19574 +
19575 +static uint8_t qla2x00_is_ww_name_zero(uint8_t *);
19576 +static void qla2x00_add_path(mp_path_list_t *, mp_path_t *);
19577 +static void qla2x00_failback_single_lun(mp_device_t *, uint8_t, uint8_t);
19578 +static void qla2x00_failback_luns(mp_host_t *);
19579 +static void qla2x00_setup_new_path(mp_device_t *, mp_path_t *);
19580 +
19581 +/*
19582 + * Global data items
19583 + */
19584 +mp_host_t  *mp_hosts_base = NULL;
19585 +uint8_t   mp_config_required = FALSE;
19586 +static int    mp_num_hosts = 0;
19587 +static uint8_t   mp_initialized = FALSE;
19588 +
19589 +
19590 +/*
19591 + * ENTRY ROUTINES
19592 + */
19593 +
19594 +/*
19595 + * qla2x00_cfg_init
19596 + *      Initialize configuration structures to handle an instance of
19597 + *      an HBA, QLA2x000 card.
19598 + *
19599 + * Input:
19600 + *      ha = adapter state pointer.
19601 + *
19602 + * Returns:
19603 + *      qla2x00 local function return status code.
19604 + *
19605 + * Context:
19606 + *      Kernel context.
19607 + */
19608 +int
19609 +qla2x00_cfg_init(scsi_qla_host_t *ha)
19610 +{
19611 +       int     rval;
19612 +
19613 +       ENTER("qla2x00_cfg_init");
19614 +       set_bit(CFG_ACTIVE, &ha->cfg_flags);
19615 +       if (!mp_initialized) {
19616 +               /* First HBA, initialize the failover global properties */
19617 +               qla2x00_fo_init_params(ha);
19618 +
19619 +               /* If the user specified a device configuration then
19620 +                * it is use as the configuration. Otherwise, we wait
19621 +                * for path discovery.
19622 +                */
19623 +               if ( mp_config_required )
19624 +                       qla2x00_cfg_build_path_tree(ha);
19625 +       }
19626 +       rval = qla2x00_cfg_path_discovery(ha);
19627 +       clear_bit(CFG_ACTIVE, &ha->cfg_flags);
19628 +       LEAVE("qla2x00_cfg_init");
19629 +       return rval;
19630 +}
19631 +
19632 +/*
19633 + * qla2x00_cfg_path_discovery
19634 + *      Discover the path configuration from the device configuration
19635 + *      for the specified host adapter and build the path search tree.
19636 + *      This function is called after the lower level driver has
19637 + *      completed its port and lun discovery.
19638 + *
19639 + * Input:
19640 + *      ha = adapter state pointer.
19641 + *
19642 + * Returns:
19643 + *      qla2x00 local function return status code.
19644 + *
19645 + * Context:
19646 + *      Kernel context.
19647 + */
19648 +int
19649 +qla2x00_cfg_path_discovery(scsi_qla_host_t *ha)
19650 +{
19651 +       int             rval = QLA2X00_SUCCESS;
19652 +       mp_host_t       *host;
19653 +       uint8_t         *name;
19654 +
19655 +       ENTER("qla2x00_cfg_path_discovery");
19656 +
19657 +       name =  &ha->init_cb->node_name[0];
19658 +
19659 +       set_bit(CFG_ACTIVE, &ha->cfg_flags);
19660 +       /* Initialize the path tree for this adapter */
19661 +       host = qla2x00_find_host_by_name(name);
19662 +       if ( mp_config_required ) {
19663 +               if (host == NULL ) {
19664 +                       DEBUG4(printk("cfg_path_discovery: host not found, "
19665 +                               "node name = "
19666 +                               "%02x%02x%02x%02x%02x%02x%02x%02x\n",
19667 +                               name[0], name[1], name[2], name[3],
19668 +                               name[4], name[5], name[6], name[7]);)
19669 +                       rval = QLA2X00_FUNCTION_FAILED;
19670 +               } else if (ha->instance != host->instance) {
19671 +                       DEBUG4(printk("cfg_path_discovery: host instance "
19672 +                               "don't match - instance=%ld.\n",
19673 +                               ha->instance);)
19674 +                       rval = QLA2X00_FUNCTION_FAILED;
19675 +               }
19676 +       } else if ( host == NULL ) {
19677 +               /* New host adapter so allocate it */
19678 +               if ( (host = qla2x00_alloc_host(ha)) == NULL ) {
19679 +                       printk(KERN_INFO
19680 +                               "qla2x00(%d): Couldn't allocate "
19681 +                               "host - ha = %p.\n",
19682 +                               (int)ha->instance, ha);
19683 +                       rval = QLA2X00_FUNCTION_FAILED;
19684 +               }
19685 +       }
19686 +
19687 +       /* Fill in information about host */
19688 +       if (host != NULL ) {
19689 +               host->flags |= MP_HOST_FLAG_NEEDS_UPDATE;
19690 +               host->flags |= MP_HOST_FLAG_LUN_FO_ENABLED;
19691 +               host->fcports = &ha->fcports;
19692 +
19693 +               /* Check if multipath is enabled */
19694 +               if (!qla2x00_update_mp_host(host)) {
19695 +                       rval = QLA2X00_FUNCTION_FAILED;
19696 +               }
19697 +               host->flags &= ~MP_HOST_FLAG_LUN_FO_ENABLED;
19698 +       }
19699 +
19700 +       if (rval != QLA2X00_SUCCESS) {
19701 +               /* EMPTY */
19702 +               DEBUG4(printk("qla2x00_path_discovery: Exiting FAILED\n");)
19703 +       } else {
19704 +               LEAVE("qla2x00_cfg_path_discovery");
19705 +       }
19706 +       clear_bit(CFG_ACTIVE, &ha->cfg_flags);
19707 +
19708 +       return rval;
19709 +}
19710 +
19711 +/*
19712 + * qla2x00_cfg_event_notifiy
19713 + *      Callback for host driver to notify us of configuration changes.
19714 + *
19715 + * Input:
19716 + *      ha = adapter state pointer.
19717 + *      i_type = event type
19718 + *
19719 + * Returns:
19720 + *
19721 + * Context:
19722 + *      Kernel context.
19723 + */
19724 +int
19725 +qla2x00_cfg_event_notify(scsi_qla_host_t *ha, uint32_t i_type)
19726 +{
19727 +       mp_host_t       *host;                  /* host adapter pointer */
19728 +
19729 +       ENTER("qla2x00_cfg_event_notify");
19730 +
19731 +       set_bit(CFG_ACTIVE, &ha->cfg_flags);
19732 +       switch (i_type) {
19733 +               case MP_NOTIFY_RESET_DETECTED:
19734 +                       DEBUG(printk("scsi%ld: MP_NOTIFY_RESET_DETECTED "
19735 +                                       "- no action\n",
19736 +                                       ha->host_no);)
19737 +                               break;
19738 +               case MP_NOTIFY_PWR_LOSS:
19739 +                       DEBUG(printk("scsi%ld: MP_NOTIFY_PWR_LOSS - "
19740 +                                       "update tree\n",
19741 +                                       ha->host_no);)
19742 +                       /*
19743 +                        * Update our path tree in case we are
19744 +                        * losing the adapter
19745 +                        */
19746 +                       qla2x00_update_mp_tree();
19747 +                       /* Free our resources for adapter */
19748 +                       break;
19749 +               case MP_NOTIFY_LOOP_UP:
19750 +                       DEBUG(printk("scsi%ld: MP_NOTIFY_LOOP_UP - "
19751 +                                       "update host tree\n",
19752 +                                       ha->host_no);)
19753 +                       /* Adapter is back up with new configuration */
19754 +                       if ((host = qla2x00_cfg_find_host(ha)) != NULL) {
19755 +                               host->flags |= MP_HOST_FLAG_NEEDS_UPDATE;
19756 +                               host->fcports = &ha->fcports;
19757 +                               qla2x00_update_mp_tree();
19758 +                       }
19759 +                       break;
19760 +               case MP_NOTIFY_LOOP_DOWN:
19761 +               case MP_NOTIFY_BUS_RESET:
19762 +                       DEBUG(printk("scsi%ld: MP_NOTIFY_OTHERS - "
19763 +                                       "no action\n",
19764 +                                       ha->host_no);)
19765 +                       break;
19766 +               default:
19767 +                       break;
19768 +
19769 +       }
19770 +       clear_bit(CFG_ACTIVE, &ha->cfg_flags);
19771 +
19772 +       LEAVE("qla2x00_cfg_event_notify");
19773 +
19774 +       return QLA2X00_SUCCESS;
19775 +}
19776 +
19777 +/*
19778 + * qla2x00_cfg_failover
19779 + *      A problem has been detected with the current path for this
19780 + *      lun.  Select the next available path as the current path
19781 + *      for this device.
19782 + *
19783 + * Inputs:
19784 + *      ha = pointer to host adapter
19785 + *      fp - pointer to failed fc_lun (failback lun)
19786 + *      tgt - pointer to target
19787 + *
19788 + * Returns:
19789 + *      pointer to new fc_lun_t, or NULL if failover fails.
19790 + */
19791 +fc_lun_t *
19792 +qla2x00_cfg_failover(scsi_qla_host_t *ha, fc_lun_t *fp,
19793 +    os_tgt_t *tgt, srb_t *sp)
19794 +{
19795 +       mp_host_t       *host;                  /* host adapter pointer */
19796 +       mp_device_t     *dp;                    /* virtual device pointer */
19797 +       mp_path_t       *new_path;              /* new path pointer */
19798 +       fc_lun_t        *new_fp = NULL;
19799 +
19800 +       ENTER("qla2x00_cfg_failover");
19801 +       set_bit(CFG_ACTIVE, &ha->cfg_flags);
19802 +       if ((host = qla2x00_cfg_find_host(ha)) != NULL) {
19803 +               if ((dp = qla2x00_find_mp_dev_by_name(
19804 +                                       host, tgt->node_name)) != NULL ) {
19805 +
19806 +                       DEBUG3(printk("qla2x00_cfg_failover: dp = %p\n", dp);)
19807 +                       /*
19808 +                        * Point at the next path in the path list if there is
19809 +                        * one, and if it hasn't already been failed over by
19810 +                        * another I/O. If there is only one path continuer
19811 +                        * to point at it.
19812 +                        */
19813 +                       new_path = qla2x00_select_next_path(host, dp, fp->lun);
19814 +                       DEBUG3(printk("cfg_failover: new path @ %p\n",
19815 +                                               new_path);)
19816 +                       new_fp = qla2x00_find_matching_lun(fp->lun, new_path);
19817 +                       DEBUG3(printk("cfg_failover: new fp lun @ %p\n",
19818 +                                               new_fp);)
19819 +
19820 +                       qla2x00_cfg_register_failover_lun(dp, sp, new_fp);
19821 +               } else {
19822 +                       printk(KERN_INFO
19823 +                               "qla2x00(%d): Couldn't find device "
19824 +                               "to failover\n",
19825 +                               host->instance);
19826 +               }
19827 +       }
19828 +       clear_bit(CFG_ACTIVE, &ha->cfg_flags);
19829 +
19830 +       LEAVE("qla2x00_cfg_failover");
19831 +
19832 +       return new_fp;
19833 +}
19834 +
19835 +/*
19836 + * IOCTL support
19837 + */
19838 +#define CFG_IOCTL
19839 +#if defined(CFG_IOCTL)
19840 +/*
19841 + * qla2x00_cfg_get_paths
19842 + *      Get list of paths EXT_FO_GET_PATHS.
19843 + *
19844 + * Input:
19845 + *      ha = pointer to adapter
19846 + *      bp = pointer to buffer
19847 + *      cmd = Pointer to kernel copy of EXT_IOCTL.
19848 + *
19849 + * Return;
19850 + *      0 on success or errno.
19851 + *     driver ioctl errors are returned via cmd->Status.
19852 + *
19853 + * Context:
19854 + *      Kernel context.
19855 + */
19856 +int
19857 +qla2x00_cfg_get_paths(EXT_IOCTL *cmd, FO_GET_PATHS *bp, int mode)
19858 +{
19859 +       FO_PATHS_INFO   *paths, *u_paths;
19860 +       FO_PATH_ENTRY   *entry;
19861 +       EXT_DEST_ADDR   *sap = &bp->HbaAddr;
19862 +       mp_host_t       *host = NULL;   /* host adapter pointer */
19863 +       mp_device_t     *dp;            /* virtual device pointer */
19864 +       mp_path_t       *path;          /* path pointer */
19865 +       mp_path_list_t  *path_list;     /* path list pointer */
19866 +       int     cnt;
19867 +       int     rval = 0;
19868 +       scsi_qla_host_t *ha;
19869 +
19870 +       DEBUG9(printk("%s: entered.\n", __func__);)
19871 +
19872 +       u_paths = (FO_PATHS_INFO *) cmd->ResponseAdr;
19873 +       ha = qla2x00_get_hba((int)bp->HbaInstance);
19874 +
19875 +       if (!ha) {
19876 +               DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
19877 +                   __func__, bp->HbaInstance);)
19878 +
19879 +               cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
19880 +               return (rval);
19881 +       }
19882 +
19883 +       if (ha->flags.failover_enabled)
19884 +               if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
19885 +                       cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
19886 +                       cmd->DetailStatus = EXT_DSTATUS_HBA_INST;
19887 +                       DEBUG4(printk("%s: cannot find target (%ld)\n",
19888 +                           __func__, ha->instance);)
19889 +                       DEBUG9_10(printk("%s: cannot find host inst(%ld).\n",
19890 +                           __func__, ha->instance);)
19891 +
19892 +                       return rval;
19893 +               }
19894 +
19895 +       paths = (FO_PATHS_INFO *)qla2x00_kmem_zalloc(
19896 +           sizeof(FO_PATHS_INFO), GFP_ATOMIC, 20);
19897 +       if (paths == NULL) {
19898 +               DEBUG4(printk("%s: failed to allocate memory of size (%d)\n",
19899 +                   __func__, (int)sizeof(FO_PATHS_INFO));)
19900 +               DEBUG9_10(printk("%s: failed allocate memory size(%d).\n",
19901 +                   __func__, (int)sizeof(FO_PATHS_INFO));)
19902 +
19903 +               cmd->Status = EXT_STATUS_NO_MEMORY;
19904 +
19905 +               return -ENOMEM;
19906 +       }
19907 +
19908 +       if (!ha->flags.failover_enabled) {
19909 +               /* non-fo case. There's only one path. */
19910 +
19911 +               mp_path_list_t  *ptmp_plist;
19912 +#define STD_MAX_PATH_CNT       1
19913 +#define STD_VISIBLE_INDEX      0
19914 +               int             found;
19915 +               struct list_head *fcpl;
19916 +               fc_port_t       *fcport;
19917 +
19918 +               DEBUG9(printk("%s: non-fo case.\n", __func__);)
19919 +
19920 +               if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_plist,
19921 +                   sizeof(mp_path_list_t))) {
19922 +                       /* not enough memory */
19923 +                       DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
19924 +                           "lun_mask requested=%d.\n",
19925 +                           __func__, ha->host_no, ha->instance,
19926 +                           sizeof(mp_path_list_t));)
19927 +                       cmd->Status = EXT_STATUS_NO_MEMORY;
19928 +
19929 +                       return -ENOMEM;
19930 +               }
19931 +
19932 +               found = 0;
19933 +               fcport = NULL;
19934 +               list_for_each(fcpl, &ha->fcports) {
19935 +                       fcport = list_entry(fcpl, fc_port_t, list);
19936 +
19937 +                       if (memcmp(fcport->node_name, sap->DestAddr.WWNN,
19938 +                           EXT_DEF_WWN_NAME_SIZE) == 0) {
19939 +                               found++;
19940 +                               break;
19941 +                       }
19942 +               }
19943 +
19944 +               if (found) {
19945 +                       DEBUG9(printk("%s: found fcport:"
19946 +                           "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
19947 +                           __func__,
19948 +                           sap->DestAddr.WWNN[0],
19949 +                           sap->DestAddr.WWNN[1],
19950 +                           sap->DestAddr.WWNN[2],
19951 +                           sap->DestAddr.WWNN[3],
19952 +                           sap->DestAddr.WWNN[4],
19953 +                           sap->DestAddr.WWNN[5],
19954 +                           sap->DestAddr.WWNN[6],
19955 +                           sap->DestAddr.WWNN[7]);)
19956 +
19957 +                       paths->HbaInstance         = bp->HbaInstance;
19958 +                       paths->PathCount           = STD_MAX_PATH_CNT;
19959 +                       paths->VisiblePathIndex    = STD_VISIBLE_INDEX;
19960 +
19961 +                       /* Copy current path, which is the first one (0). */
19962 +                       memcpy(paths->CurrentPathIndex, ptmp_plist->current_path,
19963 +                           sizeof(paths->CurrentPathIndex));
19964 +
19965 +                       entry = &(paths->PathEntry[STD_VISIBLE_INDEX]);
19966 +
19967 +                       entry->Visible     = TRUE;
19968 +                       entry->HbaInstance = bp->HbaInstance;
19969 +
19970 +                       memcpy(entry->PortName, fcport->port_name,
19971 +                           EXT_DEF_WWP_NAME_SIZE);
19972 +
19973 +                       rval = verify_area(VERIFY_WRITE, (void *)u_paths,
19974 +                           cmd->ResponseLen);
19975 +                       if (rval) {
19976 +                               /* error */
19977 +                               DEBUG9_10(printk("%s: u_paths %p verify write"
19978 +                                   " error. paths->PathCount=%d.\n",
19979 +                                   __func__, u_paths, paths->PathCount);)
19980 +                       }
19981 +
19982 +                       /* Copy data to user */
19983 +                       if (rval == 0)
19984 +                               rval = copy_to_user(&u_paths->PathCount,
19985 +                                   &paths->PathCount, 4);
19986 +                       if (rval == 0)
19987 +                               rval = copy_to_user(&u_paths->CurrentPathIndex,
19988 +                                   &paths->CurrentPathIndex,
19989 +                                   sizeof(paths->CurrentPathIndex));
19990 +                       if (rval == 0)
19991 +                               rval = copy_to_user(&u_paths->PathEntry,
19992 +                                   &paths->PathEntry,
19993 +                                   sizeof(paths->PathEntry));
19994 +
19995 +                       if (rval) { /* if any of the above failed */
19996 +                               DEBUG9_10(printk("%s: data copy failed.\n",
19997 +                                   __func__);)
19998 +
19999 +                               cmd->Status = EXT_STATUS_COPY_ERR;
20000 +                       }
20001 +               } else {
20002 +                       cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20003 +                       cmd->DetailStatus = EXT_DSTATUS_TARGET;
20004 +
20005 +                       DEBUG10(printk("%s: cannot find fcport "
20006 +                           "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
20007 +                           __func__,
20008 +                           sap->DestAddr.WWNN[0],
20009 +                           sap->DestAddr.WWNN[1],
20010 +                           sap->DestAddr.WWNN[2],
20011 +                           sap->DestAddr.WWNN[3],
20012 +                           sap->DestAddr.WWNN[4],
20013 +                           sap->DestAddr.WWNN[5],
20014 +                           sap->DestAddr.WWNN[6],
20015 +                           sap->DestAddr.WWNN[7]);)
20016 +                       DEBUG4(printk("%s: cannot find fcport "
20017 +                           "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
20018 +                           __func__,
20019 +                           sap->DestAddr.WWNN[0],
20020 +                           sap->DestAddr.WWNN[1],
20021 +                           sap->DestAddr.WWNN[2],
20022 +                           sap->DestAddr.WWNN[3],
20023 +                           sap->DestAddr.WWNN[4],
20024 +                           sap->DestAddr.WWNN[5],
20025 +                           sap->DestAddr.WWNN[6],
20026 +                           sap->DestAddr.WWNN[7]);)
20027 +               }
20028 +
20029 +               qla2x00_free_ioctl_scrap_mem(ha);
20030 +               /* end of non-fo case. */
20031 +
20032 +       } else if (sap->DestType != EXT_DEF_DESTTYPE_WWNN) {
20033 +               /* Scan for mp_dev by nodename *ONLY* */
20034 +
20035 +               cmd->Status = EXT_STATUS_INVALID_PARAM;
20036 +               cmd->DetailStatus = EXT_DSTATUS_TARGET;
20037 +
20038 +               DEBUG4(printk("%s: target can be accessed by NodeName only.",
20039 +                   __func__);)
20040 +               DEBUG10(printk("%s: target can be accessed by NodeName only. "
20041 +                   "got type %d.\n",
20042 +                   __func__, sap->DestType);)
20043 +
20044 +       } else if ((dp = qla2x00_find_mp_dev_by_name(host,
20045 +           sap->DestAddr.WWNN)) != NULL) {
20046 +               DEBUG9(printk("%s: Found mp_dev:"
20047 +                   "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
20048 +                   __func__,
20049 +                   sap->DestAddr.WWNN[0],
20050 +                   sap->DestAddr.WWNN[1],
20051 +                   sap->DestAddr.WWNN[2],
20052 +                   sap->DestAddr.WWNN[3],
20053 +                   sap->DestAddr.WWNN[4],
20054 +                   sap->DestAddr.WWNN[5],
20055 +                   sap->DestAddr.WWNN[6],
20056 +                   sap->DestAddr.WWNN[7]);)
20057 +
20058 +               path_list = dp->path_list;
20059 +
20060 +               paths->HbaInstance = bp->HbaInstance;
20061 +               paths->PathCount           = path_list->path_cnt;
20062 +               paths->VisiblePathIndex    = path_list->visible;
20063 +
20064 +               /* copy current paths */
20065 +               memcpy(paths->CurrentPathIndex,
20066 +                   path_list->current_path,
20067 +                   sizeof(paths->CurrentPathIndex));
20068 +
20069 +               path = path_list->last;
20070 +               for (cnt = 0; cnt < path_list->path_cnt; cnt++) {
20071 +                       entry = &(paths->PathEntry[path->id]);
20072 +
20073 +                       entry->Visible    = (path->id == path_list->visible);
20074 +                       entry->HbaInstance = path->host->instance;
20075 +
20076 +                       memcpy(entry->PortName,
20077 +                           path->portname,
20078 +                           EXT_DEF_WWP_NAME_SIZE);
20079 +
20080 +                       path = path->next;
20081 +               }
20082 +
20083 +               rval = verify_area(VERIFY_WRITE, (void *)u_paths,
20084 +                   cmd->ResponseLen);
20085 +               if (rval) {
20086 +                       /* error */
20087 +                       DEBUG9_10(printk("%s: u_paths %p verify write"
20088 +                           " error. paths->PathCount=%d.\n",
20089 +                           __func__, u_paths, paths->PathCount);)
20090 +               }
20091 +
20092 +               /* copy data to user */
20093 +               if (rval == 0)
20094 +                       rval = copy_to_user(&u_paths->PathCount,
20095 +                           &paths->PathCount, 4);
20096 +               if (rval == 0)
20097 +                       rval = copy_to_user(&u_paths->CurrentPathIndex,
20098 +                           &paths->CurrentPathIndex,
20099 +                           sizeof(paths->CurrentPathIndex));
20100 +               if (rval == 0)
20101 +                       rval = copy_to_user(&u_paths->PathEntry,
20102 +                           &paths->PathEntry,
20103 +                           sizeof(paths->PathEntry));
20104 +
20105 +               if (rval != 0) {  /* if any of the above failed */
20106 +                       DEBUG9_10(printk("%s: u_paths %p copy"
20107 +                           " error. paths->PathCount=%d.\n",
20108 +                           __func__, u_paths, paths->PathCount);)
20109 +                       cmd->Status = EXT_STATUS_COPY_ERR;
20110 +               }
20111 +
20112 +       } else {
20113 +
20114 +               cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20115 +               cmd->DetailStatus = EXT_DSTATUS_TARGET;
20116 +
20117 +               DEBUG4(printk("%s: cannot find device "
20118 +                   "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
20119 +                   __func__,
20120 +                   sap->DestAddr.WWNN[0],
20121 +                   sap->DestAddr.WWNN[1],
20122 +                   sap->DestAddr.WWNN[2],
20123 +                   sap->DestAddr.WWNN[3],
20124 +                   sap->DestAddr.WWNN[4],
20125 +                   sap->DestAddr.WWNN[5],
20126 +                   sap->DestAddr.WWNN[6],
20127 +                   sap->DestAddr.WWNN[7]);)
20128 +       }
20129 +
20130 +       KMEM_FREE(paths, sizeof(FO_PATHS_INFO));
20131 +
20132 +       DEBUG9(printk("%s: exiting. rval=%d.\n", __func__, rval);)
20133 +
20134 +       return rval;
20135 +
20136 +} /* qla2x00_cfg_get_paths */
20137 +
20138 +/*
20139 + * qla2x00_cfg_set_current_path
20140 + *      Set the current failover path EXT_FO_GET_PATHS IOCTL call.
20141 + *
20142 + * Input:
20143 + *      ha = pointer to adapter
20144 + *      bp = pointer to buffer
20145 + *      cmd = Pointer to kernel copy of EXT_IOCTL.
20146 + *
20147 + * Return;
20148 + *      0 on success or errno.
20149 + *
20150 + * Context:
20151 + *      Kernel context.
20152 + */
20153 +int
20154 +qla2x00_cfg_set_current_path(EXT_IOCTL *cmd, FO_SET_CURRENT_PATH *bp, int mode )
20155 +{
20156 +       uint8_t         orig_id, new_id;
20157 +       mp_host_t       *host, *new_host;
20158 +       mp_device_t     *dp;
20159 +       mp_path_list_t  *path_list;
20160 +       EXT_DEST_ADDR   *sap = &bp->HbaAddr;
20161 +       uint32_t        rval = 0;
20162 +       scsi_qla_host_t *ha;
20163 +       mp_path_t       *new_path, *old_path;
20164 +
20165 +       DEBUG9(printk("%s: entered.\n", __func__);)
20166 +
20167 +       /* First find the adapter with the instance number. */
20168 +       ha = qla2x00_get_hba((int)bp->HbaInstance);
20169 +       if (!ha) {
20170 +               DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
20171 +                   __func__, bp->HbaInstance);)
20172 +
20173 +               cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20174 +               return (rval);
20175 +       }
20176 +
20177 +       if (!ha->flags.failover_enabled)
20178 +               /* non-failover mode. nothing to be done. */
20179 +               return 0;
20180 +
20181 +       if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
20182 +               cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20183 +               cmd->DetailStatus = EXT_DSTATUS_HBA_INST;
20184 +               DEBUG4(printk("%s: cannot find adapter.\n",
20185 +                   __func__);)
20186 +               return (rval);
20187 +       }
20188 +
20189 +       set_bit(CFG_ACTIVE, &ha->cfg_flags);
20190 +       sap = &bp->HbaAddr;
20191 +       /* Scan for mp_dev by nodename *ONLY* */
20192 +       if (sap->DestType != EXT_DEF_DESTTYPE_WWNN) {
20193 +               cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20194 +               cmd->DetailStatus = EXT_DSTATUS_TARGET;
20195 +               DEBUG4(printk("%s: target can be accessed by NodeName only.",
20196 +                   __func__);)
20197 +               DEBUG9_10(printk("%s: target can be accessed by NodeName only.",
20198 +                   __func__);)
20199 +       } else if ((dp = qla2x00_find_mp_dev_by_name(
20200 +           host, sap->DestAddr.WWNN)) != NULL) {
20201 +
20202 +               path_list = dp->path_list;
20203 +
20204 +               if (bp->NewCurrentPathIndex < MAX_PATHS_PER_DEVICE &&
20205 +                   sap->Lun < MAX_LUNS &&
20206 +                   bp->NewCurrentPathIndex < path_list->path_cnt) {
20207 +
20208 +                       orig_id = path_list->current_path[sap->Lun];
20209 +
20210 +                       DEBUG(printk("%s: dev no  %d, lun %d, "
20211 +                           "newindex %d, oldindex %d "
20212 +                           "nn=%02x%02x%02x%02x%02x%02x%02x%02x\n",
20213 +                           __func__, dp->dev_id, sap->Lun,
20214 +                           bp->NewCurrentPathIndex, orig_id,
20215 +                           host->nodename[0], host->nodename[1],
20216 +                           host->nodename[2], host->nodename[3],
20217 +                           host->nodename[4], host->nodename[5],
20218 +                           host->nodename[6], host->nodename[7]);)
20219 +
20220 +                       if (bp->NewCurrentPathIndex != orig_id) {
20221 +                               /* Acquire the update spinlock. */
20222 +
20223 +                               /* Set the new current path. */
20224 +                               new_id = path_list-> current_path[sap->Lun] =
20225 +                                   bp->NewCurrentPathIndex;
20226 +
20227 +                               /* Release the update spinlock. */
20228 +                               old_path = qla2x00_find_path_by_id(
20229 +                                   dp, orig_id);
20230 +                               new_path = qla2x00_find_path_by_id(dp, new_id);
20231 +                               new_host = new_path->host;
20232 +
20233 +                               /* remap the lun */
20234 +                               qla2x00_map_a_oslun(new_host, dp,
20235 +                                   dp->dev_id, sap->Lun);
20236 +
20237 +                               qla2x00_send_failover_notify(dp,
20238 +                                   sap->Lun, old_path, new_path);
20239 +                       } else {
20240 +                               /* EMPTY */
20241 +                               DEBUG4(printk("%s: path index not changed.\n",
20242 +                                   __func__);)
20243 +                       }
20244 +               } else {
20245 +                       cmd->Status = EXT_STATUS_INVALID_PARAM;
20246 +                       cmd->DetailStatus = EXT_DSTATUS_PATH_INDEX;
20247 +                       DEBUG4(printk("%s: invalid index for device.\n",
20248 +                           __func__);)
20249 +                       DEBUG9_10(printk("%s: invalid index for device.\n",
20250 +                           __func__);)
20251 +               }
20252 +       } else {
20253 +               cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20254 +               cmd->DetailStatus = EXT_DSTATUS_TARGET;
20255 +               DEBUG4(printk("%s: cannot find device.\n",
20256 +                   __func__);)
20257 +               DEBUG9_10(printk("%s: cannot find device.\n",
20258 +                   __func__);)
20259 +       }
20260 +       clear_bit(CFG_ACTIVE, &ha->cfg_flags);
20261 +
20262 +       DEBUG9(printk("%s: exiting. rval = %d.\n", __func__, rval);)
20263 +
20264 +       return rval;
20265 +}
20266 +#endif
20267 +
20268 +/*
20269 + * MP SUPPORT ROUTINES
20270 + */
20271 +
20272 +/*
20273 + * qla2x00_add_mp_host
20274 + *     Add the specified host the host list.
20275 + *
20276 + * Input:
20277 + *     node_name = pointer to node name
20278 + *
20279 + * Returns:
20280 + *
20281 + * Context:
20282 + *     Kernel context.
20283 + */
20284 +mp_host_t *
20285 +qla2x00_add_mp_host(uint8_t *node_name)
20286 +{
20287 +       mp_host_t   *host, *temp;
20288 +
20289 +       host = (mp_host_t *) KMEM_ZALLOC(sizeof(mp_host_t), 1);
20290 +       if (host != NULL) {
20291 +               memcpy(host->nodename, node_name, WWN_SIZE);
20292 +               host->next = NULL;
20293 +               /* add to list */
20294 +               if (mp_hosts_base == NULL) {
20295 +                       mp_hosts_base = host;
20296 +               } else {
20297 +                       temp = mp_hosts_base;
20298 +                       while (temp->next != NULL)
20299 +                               temp = temp->next;
20300 +                       temp->next = host;
20301 +               }
20302 +               mp_num_hosts++;
20303 +       }
20304 +       return host;
20305 +}
20306 +
20307 +/*
20308 + * qla2x00_alloc_host
20309 + *      Allocate and initialize an mp host structure.
20310 + *
20311 + * Input:
20312 + *      ha = pointer to base driver's adapter structure.
20313 + *
20314 + * Returns:
20315 + *      Pointer to host structure or null on error.
20316 + *
20317 + * Context:
20318 + *      Kernel context.
20319 + */
20320 +mp_host_t   *
20321 +qla2x00_alloc_host(scsi_qla_host_t *ha)
20322 +{
20323 +       mp_host_t       *host, *temp;
20324 +       uint8_t         *name, *portname;
20325 +
20326 +       name =  &ha->init_cb->node_name[0];
20327 +       portname = &ha->init_cb->port_name[0];
20328 +
20329 +       ENTER("qla2x00_alloc_host");
20330 +
20331 +       host = (mp_host_t *) KMEM_ZALLOC(sizeof(mp_host_t), 2);
20332 +
20333 +       if (host != NULL) {
20334 +               host->ha = ha;
20335 +               memcpy(host->nodename, name, WWN_SIZE);
20336 +               memcpy(host->portname, portname, WWN_SIZE);
20337 +               host->next = NULL;
20338 +               host->flags = MP_HOST_FLAG_NEEDS_UPDATE;
20339 +               host->instance = ha->instance;
20340 +               /* host->MaxLunsPerTarget = qla_fo_params.MaxLunsPerTarget; */
20341 +
20342 +               if (qla2x00_fo_enabled(host->ha, host->instance)) {
20343 +                       host->flags |= MP_HOST_FLAG_FO_ENABLED;
20344 +                       DEBUG4(printk("%s: Failover enabled.\n",
20345 +                           __func__);)
20346 +               } else {
20347 +                       /* EMPTY */
20348 +                       DEBUG4(printk("%s: Failover disabled.\n",
20349 +                           __func__);)
20350 +               }
20351 +               /* add to list */
20352 +               if (mp_hosts_base == NULL) {
20353 +                       mp_hosts_base = host;
20354 +               } else {
20355 +                       temp = mp_hosts_base;
20356 +                       while (temp->next != NULL)
20357 +                               temp = temp->next;
20358 +                       temp->next = host;
20359 +               }
20360 +               mp_num_hosts++;
20361 +
20362 +               DEBUG4(printk("%s: Alloc host @ %p\n", __func__, host);)
20363 +       } else {
20364 +               /* EMPTY */
20365 +               DEBUG4(printk("%s: Failed\n", __func__);)
20366 +       }
20367 +
20368 +       return host;
20369 +}
20370 +
20371 +/*
20372 + * qla2x00_add_portname_to_mp_dev
20373 + *      Add the specific port name to the list of port names for a
20374 + *      multi-path device.
20375 + *
20376 + * Input:
20377 + *      dp = pointer ti virtual device
20378 + *      portname = Port name to add to device
20379 + *
20380 + * Returns:
20381 + *      qla2x00 local function return status code.
20382 + *
20383 + * Context:
20384 + *      Kernel context.
20385 + */
20386 +static uint32_t
20387 +qla2x00_add_portname_to_mp_dev(mp_device_t *dp, uint8_t *portname)
20388 +{
20389 +       uint8_t         index;
20390 +       uint32_t        rval = QLA2X00_SUCCESS;
20391 +
20392 +       ENTER("qla2x00_add_portname_to_mp_dev");
20393 +
20394 +       /* Look for an empty slot and add the specified portname.   */
20395 +       for (index = 0; index < MAX_NUMBER_PATHS; index++) {
20396 +               if (qla2x00_is_ww_name_zero(&dp->portnames[index][0])) {
20397 +                       DEBUG4(printk("%s: adding portname to dp = "
20398 +                           "%p at index = %d\n",
20399 +                           __func__, dp, index);)
20400 +                       memcpy(&dp->portnames[index][0], portname, WWN_SIZE);
20401 +                       break;
20402 +               }
20403 +       }
20404 +       if (index == MAX_NUMBER_PATHS) {
20405 +               rval = QLA2X00_FUNCTION_FAILED;
20406 +               DEBUG4(printk("%s: Fail no room\n", __func__);)
20407 +       } else {
20408 +               /* EMPTY */
20409 +               DEBUG4(printk("%s: Exit OK\n", __func__);)
20410 +       }
20411 +
20412 +       LEAVE("qla2x00_add_portname_to_mp_dev");
20413 +
20414 +       return rval;
20415 +}
20416 +
20417 +
20418 +/*
20419 + *  qla2x00_allocate_mp_dev
20420 + *      Allocate an fc_mp_dev, clear the memory, and log a system
20421 + *      error if the allocation fails. After fc_mp_dev is allocated
20422 + *
20423 + *  Inputs:
20424 + *      nodename  = pointer to nodename of new device
20425 + *      portname  = pointer to portname of new device
20426 + *
20427 + *  Returns:
20428 + *      Pointer to new mp_device_t, or NULL if the allocation fails.
20429 + *
20430 + * Context:
20431 + *      Kernel context.
20432 + */
20433 +static mp_device_t *
20434 +qla2x00_allocate_mp_dev(uint8_t  *nodename, uint8_t *portname)
20435 +{
20436 +       mp_device_t   *dp;            /* Virtual device pointer */
20437 +
20438 +       ENTER("qla2x00_allocate_mp_dev");
20439 +
20440 +       dp = (mp_device_t *)KMEM_ZALLOC(sizeof(mp_device_t), 3);
20441 +
20442 +       if (dp != NULL) {
20443 +               DEBUG3(printk("%s: mp_device_t allocated at %p\n",
20444 +                   __func__, dp);)
20445 +
20446 +               /*
20447 +                * Copy node name into the mp_device_t.
20448 +                */
20449 +               if (nodename)
20450 +                       memcpy(dp->nodename, nodename, WWN_SIZE);
20451 +
20452 +               /*
20453 +                * Since this is the first port, it goes at
20454 +                * index zero.
20455 +                */
20456 +               if (portname)
20457 +                       memcpy(&dp->portnames[0][0], portname, PORT_NAME_SIZE);
20458 +
20459 +               /* Allocate an PATH_LIST for the fc_mp_dev. */
20460 +               if ((dp->path_list = qla2x00_allocate_path_list()) == NULL) {
20461 +                       DEBUG4(printk("%s: allocate path_list Failed.\n",
20462 +                           __func__);)
20463 +                       KMEM_FREE(dp, sizeof(mp_device_t));
20464 +                       dp = NULL;
20465 +               } else {
20466 +                       DEBUG4(printk("%s: mp_path_list_t allocated at %p\n",
20467 +                           __func__, dp->path_list);)
20468 +                       /* EMPTY */
20469 +                       DEBUG4(printk("qla2x00_allocate_mp_dev: Exit Okay\n");)
20470 +               }
20471 +       } else {
20472 +               /* EMPTY */
20473 +               DEBUG4(printk("%s: Allocate failed.\n", __func__);)
20474 +       }
20475 +
20476 +       LEAVE("qla2x00_allocate_mp_dev");
20477 +
20478 +       return dp;
20479 +}
20480 +
20481 +/*
20482 + *  qla2x00_allocate_path
20483 + *      Allocate a PATH.
20484 + *
20485 + *  Inputs:
20486 + *     host   Host adapter for the device.
20487 + *     path_id  path number
20488 + *     port   port for device.
20489 + *      dev_id  device number
20490 + *
20491 + *  Returns:
20492 + *      Pointer to new PATH, or NULL if the allocation failed.
20493 + *
20494 + * Context:
20495 + *      Kernel context.
20496 + */
20497 +static mp_path_t *
20498 +qla2x00_allocate_path(mp_host_t *host, uint16_t path_id,
20499 +    fc_port_t *port, uint16_t dev_id)
20500 +{
20501 +       mp_path_t       *path;
20502 +       uint16_t        lun;
20503 +
20504 +       ENTER("qla2x00_allocate_path");
20505 +
20506 +       path = (mp_path_t *) KMEM_ZALLOC(sizeof(mp_path_t), 4);
20507 +       if (path != NULL) {
20508 +               DEBUG3(printk("%s: mp_path_t allocated at %p\n",
20509 +                   __func__, path); )
20510 +
20511 +               /* Copy the supplied information into the MP_PATH.  */
20512 +               path->host = host;
20513 +               if (!(port->flags & FC_CONFIG) ||
20514 +                       port->loop_id != FC_NO_LOOP_ID) {
20515 +
20516 +                       path->port = port;
20517 +               }
20518 +               path->id   = path_id;
20519 +               port->cur_path = path->id;
20520 +               path->mp_byte  = port->mp_byte;
20521 +               path->next  = NULL;
20522 +               memcpy(path->portname, port->port_name, WWN_SIZE);
20523 +               for (lun = 0; lun < MAX_LUNS; lun++) {
20524 +                       path->lun_data.data[lun] |= LUN_DATA_ENABLED;
20525 +               }
20526 +       } else {
20527 +               /* EMPTY */
20528 +               DEBUG4(printk("%s: Failed\n", __func__);)
20529 +       }
20530 +
20531 +       return path;
20532 +}
20533 +
20534 +
20535 +/*
20536 + *  qla2x00_allocate_path_list
20537 + *      Allocate a PATH_LIST
20538 + *
20539 + *  Input:
20540 + *             None
20541 + *
20542 + *  Returns:
20543 + *      Pointer to new PATH_LIST, or NULL if the allocation fails.
20544 + *
20545 + * Context:
20546 + *      Kernel context.
20547 + */
20548 +static mp_path_list_t *
20549 +qla2x00_allocate_path_list( void )
20550 +{
20551 +       mp_path_list_t  *path_list;
20552 +       uint16_t                i;
20553 +       uint8_t                 l;
20554 +
20555 +       path_list = (mp_path_list_t *) KMEM_ZALLOC(sizeof(mp_path_list_t), 5);
20556 +
20557 +       if (path_list != NULL) {
20558 +               DEBUG4(printk("%s: allocated at %p\n",
20559 +                   __func__, path_list);)
20560 +
20561 +               path_list->visible = PATH_INDEX_INVALID;
20562 +               /* Initialized current path */
20563 +               for (i = 0; i < MAX_LUNS_PER_DEVICE; i++) {
20564 +                       l = (uint8_t)(i & 0xFF);
20565 +                       path_list->current_path[l] = PATH_INDEX_INVALID;
20566 +               }
20567 +               path_list->last = NULL;
20568 +
20569 +       } else {
20570 +               /* EMPTY */
20571 +               DEBUG4(printk("%s: Alloc pool failed for MP_PATH_LIST.\n",
20572 +                   __func__);)
20573 +       }
20574 +
20575 +       return path_list;
20576 +}
20577 +
20578 +/*
20579 + *  qla2x00_cfg_find_host
20580 + *      Look through the existing multipath tree, and find
20581 + *      a host adapter to match the specified ha.
20582 + *
20583 + *  Input:
20584 + *      ha = pointer to host adapter
20585 + *
20586 + *  Return:
20587 + *      Pointer to new host, or NULL if no match found.
20588 + *
20589 + * Context:
20590 + *      Kernel context.
20591 + */
20592 +mp_host_t *
20593 +qla2x00_cfg_find_host(scsi_qla_host_t *ha)
20594 +{
20595 +       mp_host_t     *host = NULL;     /* Host found and null if not */
20596 +       mp_host_t     *tmp_host;
20597 +
20598 +       ENTER("qla2x00_cfg_find_host");
20599 +
20600 +       for (tmp_host = mp_hosts_base; (tmp_host); tmp_host = tmp_host->next) {
20601 +               if (tmp_host->ha == ha) {
20602 +                       host = tmp_host;
20603 +                       DEBUG3(printk("%s: Found host =%p, instance %d\n",
20604 +                           __func__, host, host->instance);)
20605 +                       break;
20606 +               }
20607 +       }
20608 +
20609 +       LEAVE("qla2x00_cfg_find_host");
20610 +
20611 +       return host;
20612 +}
20613 +
20614 +/*
20615 + *  qla2x00_find_host_by_name
20616 + *      Look through the existing multipath tree, and find
20617 + *      a host adapter to match the specified name.
20618 + *
20619 + *  Input:
20620 + *      name = node name to match.
20621 + *
20622 + *  Return:
20623 + *      Pointer to new host, or NULL if no match found.
20624 + *
20625 + * Context:
20626 + *      Kernel context.
20627 + */
20628 +mp_host_t *
20629 +qla2x00_find_host_by_name(uint8_t   *name)
20630 +{
20631 +       mp_host_t     *host;            /* Host found and null if not */
20632 +
20633 +       for (host = mp_hosts_base; (host); host = host->next) {
20634 +               if (memcmp(host->nodename, name, WWN_SIZE) == 0)
20635 +                       break;
20636 +       }
20637 +       return host;
20638 +}
20639 +
20640 +
20641 +/*
20642 + *  qla2x00_find_or_allocate_mp_dev
20643 + *      Look through the existing multipath control tree, and find
20644 + *      an mp_device_t with the supplied world-wide node name.  If
20645 + *      one cannot be found, allocate one.
20646 + *
20647 + *  Input:
20648 + *      host      Adapter to add device to.
20649 + *      dev_id    Index of device on adapter.
20650 + *      port      port database information.
20651 + *
20652 + *  Returns:
20653 + *      Pointer to new mp_device_t, or NULL if the allocation fails.
20654 + *
20655 + *  Side Effects:
20656 + *      If the MP HOST does not already point to the mp_device_t,
20657 + *      a pointer is added at the proper port offset.
20658 + *
20659 + * Context:
20660 + *      Kernel context.
20661 + */
20662 +static mp_device_t *
20663 +qla2x00_find_or_allocate_mp_dev(mp_host_t *host, uint16_t dev_id,
20664 +    fc_port_t *port)
20665 +{
20666 +       mp_device_t     *dp = NULL;  /* pointer to multi-path device   */
20667 +       uint8_t         node_found;  /* Found matching node name. */
20668 +       uint8_t         port_found;  /* Found matching port name. */
20669 +       uint8_t         names_valid; /* Node name and port name are not zero */ 
20670 +       mp_host_t       *temp_host;  /* pointer to temporary host */
20671 +
20672 +       uint16_t        j;
20673 +       mp_device_t     *temp_dp;
20674 +
20675 +       ENTER("qla2x00_find_or_allocate_mp_dev");
20676 +
20677 +       DEBUG3(printk("%s: host =%p, port =%p, id = %d\n",
20678 +           __func__, host, port, dev_id);)
20679 +
20680 +       temp_dp = qla2x00_find_mp_dev_by_id(host,dev_id);
20681 +
20682 +       DEBUG3(printk("%s: temp dp =%p\n", __func__, temp_dp);)
20683 +       /* if Device already known at this port. */
20684 +       if (temp_dp != NULL) {
20685 +               node_found = qla2x00_is_nodename_equal(temp_dp->nodename,
20686 +                                       port->node_name);
20687 +               port_found = qla2x00_is_portname_in_device(temp_dp,
20688 +                                       port->port_name);
20689 +
20690 +               if (node_found && port_found) {
20691 +                       DEBUG3(printk("%s: port exists in device %p\n",
20692 +                           __func__, temp_dp);)
20693 +                       dp = temp_dp;
20694 +
20695 +                       /*
20696 +                        * Copy the LUN configuration data
20697 +                        * into the mp_device_t.
20698 +                        */
20699 +               }
20700 +       }
20701 +
20702 +
20703 +       /* Sanity check the port information  */
20704 +       names_valid = (!qla2x00_is_ww_name_zero(port->node_name) &&
20705 +                       !qla2x00_is_ww_name_zero(port->port_name));
20706 +
20707 +       /*
20708 +        * If the optimized check failed, loop through each known
20709 +        * device on each known adapter looking for the node name.
20710 +        */
20711 +       if (dp == NULL && names_valid) {
20712 +               DEBUG3(printk("%s: Searching each adapter for the device...\n",
20713 +                   __func__);)
20714 +
20715 +               for (temp_host = mp_hosts_base; (temp_host);
20716 +                   temp_host = temp_host->next) {
20717 +
20718 +                       /* Loop through each potential device on adapter. */
20719 +                       for (j = 0; j < MAX_MP_DEVICES; j++) {
20720 +                               temp_dp = temp_host->mp_devs[j];
20721 +
20722 +                               if (temp_dp == NULL)
20723 +                                       continue;
20724 +
20725 +                               node_found = qla2x00_is_nodename_equal(
20726 +                                               temp_dp->nodename,
20727 +                                               port->node_name);
20728 +                               port_found = qla2x00_is_portname_in_device(
20729 +                                               temp_dp,
20730 +                                               port->port_name);
20731 +
20732 +                               if (node_found || port_found) {
20733 +                                       DEBUG3(printk("%s: Matching device "
20734 +                                           "found at %p @ %d\n",
20735 +                                           __func__, temp_dp, j);)
20736 +                                       /*
20737 +                                        * If the node name matches but
20738 +                                        * the port name was not found,
20739 +                                        * add the port name to the list
20740 +                                        * of port names.
20741 +                                        */
20742 +                                       if (!port_found) {
20743 +                                               qla2x00_add_portname_to_mp_dev(
20744 +                                                               temp_dp,
20745 +                                                               port->port_name);
20746 +                                       }
20747 +
20748 +                                       /*
20749 +                                        * Set the flag that we have
20750 +                                        * found the device.
20751 +                                        */
20752 +                                       dp = temp_dp;
20753 +                                       host->mp_devs[j] = dp;
20754 +                                       dp->use_cnt++;
20755 +
20756 +                                       /* Fixme(dg)
20757 +                                        * Copy the LUN info into
20758 +                                        * the mp_device_t
20759 +                                        */
20760 +                                       break;
20761 +                               }
20762 +                       }
20763 +
20764 +                       /* Break outer loop if inner loop succeeded. */
20765 +                       if (dp != NULL)
20766 +                               break;
20767 +               }
20768 +
20769 +       }
20770 +
20771 +       /* If we couldn't find one, allocate one. */
20772 +       if (dp == NULL &&
20773 +               ((port->flags & FC_CONFIG) || !mp_config_required ) ) {
20774 +
20775 +               dp = qla2x00_allocate_mp_dev(port->node_name, port->port_name);
20776 +               host->mp_devs[dev_id] = dp;
20777 +               dp->dev_id = dev_id;
20778 +               dp->use_cnt++;
20779 +       }
20780 +
20781 +       LEAVE("qla2x00_allocate_mp_dev");
20782 +
20783 +       return dp;
20784 +}
20785 +
20786 +
20787 +/*
20788 + *  qla2x00_find_or_allocate_path
20789 + *      Look through the path list for the supplied device, and either
20790 + *      find the supplied adapter (path) for the adapter, or create
20791 + *      a new one and add it to the path list.
20792 + *
20793 + *  Input:
20794 + *      host      Adapter (path) for the device.
20795 + *      dp       Device and path list for the device.
20796 + *      dev_id    Index of device on adapter.
20797 + *      port     Device data from port database.
20798 + *
20799 + *  Returns:
20800 + *      Pointer to new PATH, or NULL if the allocation fails.
20801 + *
20802 + *  Side Effects:
20803 + *      1. If the PATH_LIST does not already point to the PATH,
20804 + *         a new PATH is added to the PATH_LIST.
20805 + *      2. If the new path is found to be a second visible path, it is
20806 + *         marked as hidden, and the device database is updated to be
20807 + *         hidden as well, to keep the miniport synchronized.
20808 + *
20809 + * Context:
20810 + *      Kernel context.
20811 + */
20812 +/* ARGSUSED */
20813 +static mp_path_t *
20814 +qla2x00_find_or_allocate_path(mp_host_t *host, mp_device_t *dp,
20815 +    uint16_t dev_id, fc_port_t *port)
20816 +{
20817 +       mp_path_list_t  *path_list = dp->path_list;
20818 +       mp_path_t               *path;
20819 +       uint8_t                 id;
20820 +
20821 +
20822 +       ENTER("qla2x00_find_or_allocate_path");
20823 +
20824 +       DEBUG4(printk("%s: host =%p, port =%p, dp=%p, dev id = %d\n",
20825 +           __func__, host, port, dp, dev_id);)
20826 +       /*
20827 +        * Loop through each known path in the path list.  Look for
20828 +        * a PATH that matches both the adapter and the port name.
20829 +        */
20830 +       path = qla2x00_find_path_by_name(host, path_list, port->port_name);
20831 +
20832 +
20833 +       if (path != NULL ) {
20834 +               DEBUG3(printk("%s: Found an existing "
20835 +                   "path -  host =%p, port =%p, path id = %d\n",
20836 +                   __func__, host, path->port, path->id);)
20837 +               DEBUG3(printk("%s: Luns for path_id %d, instance %d\n",
20838 +                   __func__, path->id, host->instance);)
20839 +               DEBUG3(qla2x00_dump_buffer(
20840 +                   (char *)&path->lun_data.data[0], 64);)
20841 +
20842 +               /* If we found an existing path, look for any changes to it. */
20843 +               if (path->port == NULL) {
20844 +                       DEBUG3(printk("%s: update path %p, path id= %d, "
20845 +                           "mp_byte=0x%x port=%p\n",
20846 +                           __func__, path, path->id,
20847 +                           path->mp_byte, path->port);)
20848 +                       path->port = port;
20849 +                       port->mp_byte = path->mp_byte;
20850 +               } else {
20851 +                       if ((path->mp_byte & MP_MASK_HIDDEN) &&
20852 +                               !(port->mp_byte & MP_MASK_HIDDEN)) {
20853 +
20854 +                               DEBUG3(printk("%s: Adapter(%p) "
20855 +                                   "Device (%p) Path (%d) "
20856 +                                   "has become visible.\n",
20857 +                                   __func__, host, dp, path->id);)
20858 +
20859 +                               path->mp_byte &= ~MP_MASK_HIDDEN;
20860 +                       }
20861 +
20862 +                       if (!(path->mp_byte & MP_MASK_HIDDEN) &&
20863 +                                       (port->mp_byte & MP_MASK_HIDDEN)) {
20864 +
20865 +                               DEBUG3(printk("%s: Adapter(%p) "
20866 +                                   "Device (%p) Path (%d) "
20867 +                                   "has become hidden.\n",
20868 +                                   __func__, host, dp, path->id);)
20869 +
20870 +                               path->mp_byte |= MP_MASK_HIDDEN;
20871 +                       }
20872 +               }
20873 +
20874 +       } else {
20875 +               /*
20876 +                * If we couldn't find an existing path, and there is still
20877 +                * room to add one, allocate one and put it in the list.
20878 +                */
20879 +               if (path_list->path_cnt < MAX_PATHS_PER_DEVICE &&
20880 +                       path_list->path_cnt < qla_fo_params.MaxPathsPerDevice) {
20881 +
20882 +                       id = path_list->path_cnt;
20883 +
20884 +                       /* Update port with bitmask info */
20885 +                       path = qla2x00_allocate_path(host, id, port, dev_id);
20886 +                       DEBUG3(printk("%s: new path %p, path id= %d, "
20887 +                           "mp_byte=0x%x port=%p\n",
20888 +                           __func__, path, id,
20889 +                           path->mp_byte, path->port);)
20890 +                       qla2x00_add_path(path_list, path);
20891 +
20892 +                       /* Reconcile the new path against the existing ones. */
20893 +                       qla2x00_setup_new_path(dp, path);
20894 +               } else {
20895 +                       /* EMPTY */
20896 +                       DEBUG4(printk("%s: Err exit, no space to add path.\n",
20897 +                           __func__);)
20898 +               }
20899 +
20900 +       }
20901 +
20902 +       LEAVE("qla2x00_find_or_allocate_path");
20903 +
20904 +       return path;
20905 +}
20906 +
20907 +static uint32_t
20908 +qla2x00_cfg_register_failover_lun(mp_device_t *dp, srb_t *sp, fc_lun_t *new_lp)
20909 +{
20910 +       uint32_t        status = QLA2X00_SUCCESS;
20911 +       os_tgt_t        *tq;
20912 +       os_lun_t        *lq;
20913 +       fc_lun_t        *old_lp;
20914 +
20915 +       DEBUG2(printk("%s: NEW fclun = %p, sp = %p\n",
20916 +           __func__, new_lp, sp);)
20917 +
20918 +       /*
20919 +        * Fix lun descriptors to point to new fclun which is a new fcport.
20920 +        */
20921 +       if (new_lp == NULL) {
20922 +               DEBUG2(printk("%s: Failed new lun %p\n",
20923 +                   __func__, new_lp);)
20924 +               return QLA2X00_FUNCTION_FAILED;
20925 +       }
20926 +
20927 +       tq = sp->tgt_queue;
20928 +       lq = sp->lun_queue;
20929 +       if (tq == NULL) {
20930 +               DEBUG2(printk("%s: Failed to get old tq %p\n",
20931 +                   __func__, tq);)
20932 +               return QLA2X00_FUNCTION_FAILED;
20933 +       }
20934 +       if (lq == NULL) {
20935 +               DEBUG2(printk("%s: Failed to get old lq %p\n",
20936 +                   __func__, lq);)
20937 +               return QLA2X00_FUNCTION_FAILED;
20938 +       }
20939 +       old_lp = lq->fclun;
20940 +       lq->fclun = new_lp;
20941 +
20942 +       /* Log the failover to console */
20943 +       printk(KERN_INFO
20944 +               "qla2x00: FAILOVER device %d from "
20945 +               "%02x%02x%02x%02x%02x%02x%02x%02x -> "
20946 +               "%02x%02x%02x%02x%02x%02x%02x%02x - "
20947 +               "LUN %02x, reason=0x%x\n",
20948 +               dp->dev_id,
20949 +               old_lp->fcport->port_name[0], old_lp->fcport->port_name[1],
20950 +               old_lp->fcport->port_name[2], old_lp->fcport->port_name[3],
20951 +               old_lp->fcport->port_name[4], old_lp->fcport->port_name[5],
20952 +               old_lp->fcport->port_name[6], old_lp->fcport->port_name[7],
20953 +               new_lp->fcport->port_name[0], new_lp->fcport->port_name[1],
20954 +               new_lp->fcport->port_name[2], new_lp->fcport->port_name[3],
20955 +               new_lp->fcport->port_name[4], new_lp->fcport->port_name[5],
20956 +               new_lp->fcport->port_name[6], new_lp->fcport->port_name[7],
20957 +               new_lp->lun, sp->err_id);
20958 +       printk(KERN_INFO
20959 +               "qla2x00: FROM HBA %d to HBA %d\n",
20960 +               (int)old_lp->fcport->ha->instance,
20961 +               (int)new_lp->fcport->ha->instance);
20962 +
20963 +       DEBUG3(printk("%s: NEW fclun = %p , port =%p, "
20964 +           "loop_id =0x%x, instance %ld\n",
20965 +           __func__,
20966 +           new_lp, new_lp->fcport,
20967 +           new_lp->fcport->loop_id,
20968 +           new_lp->fcport->ha->instance);)
20969 +
20970 +       return status;
20971 +}
20972 +
20973 +
20974 +/*
20975 + * qla2x00_send_failover_notify
20976 + *      A failover operation has just been done from an old path
20977 + *      index to a new index.  Call lower level driver
20978 + *      to perform the failover notification.
20979 + *
20980 + * Inputs:
20981 + *      device           Device being failed over.
20982 + *      lun                LUN being failed over.
20983 + *      newpath           path that was failed over too.
20984 + *      oldpath           path that was failed over from.
20985 + *
20986 + * Return:
20987 + *      Local function status code.
20988 + *
20989 + * Context:
20990 + *      Kernel context.
20991 + */
20992 +/* ARGSUSED */
20993 +static uint32_t
20994 +qla2x00_send_failover_notify(mp_device_t *dp,
20995 +    uint8_t lun, mp_path_t *newpath, mp_path_t *oldpath)
20996 +{
20997 +       fc_lun_t        *old_lp, *new_lp;
20998 +       uint32_t        status = QLA2X00_SUCCESS;
20999 +
21000 +       ENTER("qla2x00_send_failover_notify");
21001 +
21002 +       old_lp = qla2x00_find_matching_lun(lun, oldpath);
21003 +       new_lp = qla2x00_find_matching_lun(lun, newpath);
21004 +
21005 +       /*
21006 +        * If the target is the same target, but a new HBA has been selected,
21007 +        * send a third party logout if required.
21008 +        */
21009 +       if ((qla_fo_params.FailoverNotifyType &
21010 +                        FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET ||
21011 +                       qla_fo_params.FailoverNotifyType &
21012 +                        FO_NOTIFY_TYPE_LOGOUT_OR_CDB) &&
21013 +                       qla2x00_is_portname_equal(
21014 +                               oldpath->portname, newpath->portname)) {
21015 +
21016 +               status =  qla2x00_send_fo_notification(old_lp, new_lp);
21017 +               if (status == QLA2X00_SUCCESS) {
21018 +                       /* EMPTY */
21019 +                       DEBUG4(printk("%s: Logout succeded\n",
21020 +                           __func__);)
21021 +               } else {
21022 +                       /* EMPTY */
21023 +                       DEBUG4(printk("%s: Logout Failed\n",
21024 +                           __func__);)
21025 +               }
21026 +       } else if ((qla_fo_params.FailoverNotifyType &
21027 +                        FO_NOTIFY_TYPE_LUN_RESET) ||
21028 +                       (qla_fo_params.FailoverNotifyType &
21029 +                        FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET)) {
21030 +
21031 +               /*
21032 +                * If desired, send a LUN reset as the
21033 +                * failover notification type.
21034 +                */
21035 +               if (newpath->lun_data.data[lun] & LUN_DATA_ENABLED) {
21036 +                       status = qla2x00_send_fo_notification(old_lp, new_lp);
21037 +                       if (status == QLA2X00_SUCCESS) {
21038 +                               /* EMPTY */
21039 +                               DEBUG4(printk("%s: LUN reset succeeded.\n",
21040 +                                   __func__);)
21041 +                       } else {
21042 +                               /* EMPTY */
21043 +                               DEBUG4(printk("%s: Failed reset LUN.\n",
21044 +                                   __func__);)
21045 +                       }
21046 +               }
21047 +
21048 +       } else if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_CDB ||
21049 +                       qla_fo_params.FailoverNotifyType ==
21050 +                        FO_NOTIFY_TYPE_LOGOUT_OR_CDB) {
21051 +
21052 +               if (newpath->lun_data.data[lun] & LUN_DATA_ENABLED) {
21053 +                       status = qla2x00_send_fo_notification(old_lp, new_lp);
21054 +                       if (status == QLA2X00_SUCCESS) {
21055 +                               /* EMPTY */
21056 +                               DEBUG4(printk("%s: Send CDB succeeded.\n",
21057 +                                   __func__);)
21058 +                       } else {
21059 +                               /* EMPTY */
21060 +                               DEBUG4(printk("%s: Send CDB Error "
21061 +                                   "lun=(%d).\n", __func__, lun);)
21062 +                       }
21063 +               }
21064 +       } else {
21065 +               /* EMPTY */
21066 +               DEBUG4(printk("%s: failover disabled or no notify routine "
21067 +                   "defined.\n", __func__);)
21068 +       }
21069 +
21070 +       return status;
21071 +}
21072 +
21073 +/*
21074 + *  qla2x00_select_next_path
21075 + *      A problem has been detected with the current path for this
21076 + *      device.  Try to select the next available path as the current
21077 + *      path for this device.  If there are no more paths, the same
21078 + *      path will still be selected.
21079 + *
21080 + *  Inputs:
21081 + *      dp           pointer of device structure.
21082 + *      lun                LUN to failover.
21083 + *
21084 + *  Return Value:
21085 + *             new path or same path
21086 + *
21087 + * Context:
21088 + *      Kernel context.
21089 + */
21090 +static mp_path_t *
21091 +qla2x00_select_next_path(mp_host_t *host, mp_device_t *dp, uint8_t lun)
21092 +{
21093 +       mp_path_t       *path = NULL;
21094 +       mp_path_list_t  *path_list;
21095 +       mp_path_t       *orig_path;
21096 +       int             id;
21097 +       uint32_t        status;
21098 +       mp_host_t *new_host;
21099 +
21100 +       ENTER("qla2x00_select_next_path:");
21101 +
21102 +       path_list = dp->path_list;
21103 +       if (path_list == NULL)
21104 +               return NULL;
21105 +
21106 +       /* Get current path */
21107 +       id = path_list->current_path[lun];
21108 +
21109 +       /* Get path for current path id  */
21110 +       if ((orig_path = qla2x00_find_path_by_id(dp, id)) != NULL) {
21111 +
21112 +               /* select next path */
21113 +               path = orig_path->next;
21114 +               new_host = path->host;
21115 +
21116 +               /* FIXME may need to check for HBA being reset */
21117 +               DEBUG3(printk("%s: orig path = %p new path = %p " 
21118 +                   "curr idx = %d, new idx = %d\n",
21119 +                   __func__, orig_path, path, orig_path->id, path->id);)
21120 +               DEBUG3(printk("  FAILOVER: device nodename: "
21121 +                   "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21122 +                   dp->nodename[0], dp->nodename[1],
21123 +                   dp->nodename[2], dp->nodename[3],
21124 +                   dp->nodename[4], dp->nodename[5],
21125 +                   dp->nodename[6], dp->nodename[7]);)
21126 +               DEBUG3(printk(" Original  - host nodename: "
21127 +                   "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21128 +                   orig_path->host->nodename[0],
21129 +                   orig_path->host->nodename[1],
21130 +                   orig_path->host->nodename[2],
21131 +                   orig_path->host->nodename[3],
21132 +                   orig_path->host->nodename[4],
21133 +                   orig_path->host->nodename[5],
21134 +                   orig_path->host->nodename[6],
21135 +                   orig_path->host->nodename[7]);)
21136 +               DEBUG3(printk("   portname: "
21137 +                   "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21138 +                   orig_path->port->port_name[0],
21139 +                   orig_path->port->port_name[1],
21140 +                   orig_path->port->port_name[2],
21141 +                   orig_path->port->port_name[3],
21142 +                   orig_path->port->port_name[4],
21143 +                   orig_path->port->port_name[5],
21144 +                   orig_path->port->port_name[6],
21145 +                   orig_path->port->port_name[7]);)
21146 +               DEBUG3(printk(" New  - host nodename: "
21147 +                   "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21148 +                   new_host->nodename[0], new_host->nodename[1],
21149 +                   new_host->nodename[2], new_host->nodename[3],
21150 +                   new_host->nodename[4], new_host->nodename[5],
21151 +                   new_host->nodename[6], new_host->nodename[7]);)
21152 +               DEBUG3(printk("   portname: "
21153 +                   "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21154 +                   path->port->port_name[0],
21155 +                   path->port->port_name[1],
21156 +                   path->port->port_name[2],
21157 +                   path->port->port_name[3],
21158 +                   path->port->port_name[4],
21159 +                   path->port->port_name[5],
21160 +                   path->port->port_name[6],
21161 +                   path->port->port_name[7]);)
21162 +
21163 +               path_list->current_path[lun] = path->id;
21164 +
21165 +               /* If we selected a new path, do failover notification. */
21166 +               if (path != orig_path) {
21167 +                       status = qla2x00_send_failover_notify(
21168 +                                       dp, lun, path, orig_path);
21169 +
21170 +                       /*
21171 +                        * Currently we ignore the returned status from
21172 +                        * the notify. however, if failover notify fails
21173 +                        */
21174 +               }
21175 +       }
21176 +
21177 +       LEAVE("qla2x00_select_next_path:");
21178 +
21179 +       return  path ;
21180 +}
21181 +
21182 +
21183 +
21184 +/*
21185 + *  qla2x00_update_mp_host
21186 + *      Update the multipath control information from the port
21187 + *      database for that adapter.
21188 + *
21189 + *  Input:
21190 + *      host      Adapter to update. Devices that are new are
21191 + *                      known to be attached to this adapter.
21192 + *
21193 + *  Returns:
21194 + *      TRUE if updated successfully; FALSE if error.
21195 + *
21196 + */
21197 +static uint8_t
21198 +qla2x00_update_mp_host(mp_host_t  *host)
21199 +{
21200 +       uint8_t         success = TRUE;
21201 +       uint16_t        dev_id;
21202 +       struct list_head        *fcpl;
21203 +       fc_port_t       *fcport;
21204 +       scsi_qla_host_t *ha = host->ha;
21205 +
21206 +       ENTER("qla2x00_update_mp_host");
21207 +
21208 +       /*
21209 +        * We make sure each port is attached to some virtual device.
21210 +        */
21211 +       dev_id = 0;
21212 +       fcport = NULL;
21213 +       list_for_each(fcpl, &ha->fcports) {
21214 +               fcport = list_entry(fcpl, fc_port_t, list);
21215 +
21216 +               success |= qla2x00_update_mp_device(host, fcport, dev_id);
21217 +
21218 +               dev_id++;
21219 +       }
21220 +       if (success) {
21221 +               DEBUG2(printk("%s: Exit OK\n", __func__);)
21222 +               qla2x00_map_os_targets(host);
21223 +       } else {
21224 +               /* EMPTY */
21225 +               DEBUG2(printk("%s: Exit FAILED\n", __func__);)
21226 +       }
21227 +
21228 +       LEAVE("qla2x00_update_mp_host");
21229 +
21230 +       return success;
21231 +}
21232 +
21233 +/*
21234 + *  qla2x00_update_mp_device
21235 + *      Update the multipath control information from the port
21236 + *      database for that adapter.
21237 + *
21238 + *  Inputs:
21239 + *             host   Host adapter structure
21240 + *      port   Device to add to the path tree.
21241 + *             dev_id  Device id
21242 + *
21243 + *  Synchronization:
21244 + *      The Adapter Lock should have already been acquired
21245 + *      before calling this routine.
21246 + *
21247 + *  Return
21248 + *      TRUE if updated successfully; FALSE if error.
21249 + *
21250 + */
21251 +uint8_t
21252 +qla2x00_update_mp_device(mp_host_t *host, fc_port_t *port, uint16_t dev_id)
21253 +{
21254 +       uint8_t         success = TRUE;
21255 +       mp_device_t *dp;
21256 +       mp_path_t  *path;
21257 +
21258 +       ENTER("qla2x00_update_mp_device");
21259 +
21260 +       DEBUG3(printk("%s: host =%p, port =%p, id = %d\n",
21261 +           __func__, host, port, dev_id);)
21262 +
21263 +       if (!qla2x00_is_ww_name_zero(port->port_name)) {
21264 +
21265 +               /*
21266 +                * Search for a device with a matching node name,
21267 +                * or create one.
21268 +                */
21269 +               dp = qla2x00_find_or_allocate_mp_dev(host, dev_id, port);
21270 +
21271 +               /*
21272 +                * We either have found or created a path list. Find this
21273 +                * host's path in the path list or allocate a new one
21274 +                * and add it to the list.
21275 +                */
21276 +               if (dp == NULL) {
21277 +                       DEBUG4(printk("%s: Device NOT found or created at.\n",
21278 +                           __func__);)
21279 +                       return FALSE;
21280 +               }
21281 +
21282 +               /*
21283 +                * Find the path in the current path list, or allocate
21284 +                * a new one and put it in the list if it doesn't exist.
21285 +                * Note that we do NOT set bSuccess to FALSE in the case
21286 +                * of failure here.  We must tolerate the situation where
21287 +                * the customer has more paths to a device than he can
21288 +                * get into a PATH_LIST.
21289 +                */
21290 +
21291 +               path = qla2x00_find_or_allocate_path(host, dp, dev_id, port);
21292 +               if (path == NULL) {
21293 +                       DEBUG4(printk("%s:Path NOT found or created.\n",
21294 +                           __func__);)
21295 +                       return FALSE;
21296 +               }
21297 +
21298 +               /* Set the PATH flag to match the device flag
21299 +                * of whether this device needs a relogin.  If any
21300 +                * device needs relogin, set the relogin countdown.
21301 +                */
21302 +               if (port->flags & FC_CONFIG)
21303 +                       path->config = TRUE;
21304 +
21305 +               if (atomic_read(&port->state) != FC_ONLINE) {
21306 +                       path->relogin = TRUE;
21307 +                       if (host->relogin_countdown == 0)
21308 +                               host->relogin_countdown = 30;
21309 +               } else {
21310 +                       path->relogin = FALSE;
21311 +               }
21312 +
21313 +       } else {
21314 +               /* EMPTY */
21315 +               DEBUG4(printk("%s: Failed portname empty.\n",
21316 +                   __func__);)
21317 +       }
21318 +
21319 +       LEAVE("qla2x00_update_mp_device");
21320 +
21321 +       return success;
21322 +}
21323 +
21324 +/*
21325 + * qla2x00_update_mp_tree
21326 + *      Get port information from each adapter, and build or rebuild
21327 + *      the multipath control tree from this data.  This is called
21328 + *      from init and during port database notification.
21329 + *
21330 + * Input:
21331 + *      None
21332 + *
21333 + * Return:
21334 + *      Local function return code.
21335 + *
21336 + */
21337 +static uint32_t
21338 +qla2x00_update_mp_tree(void)
21339 +{
21340 +       mp_host_t       *host;
21341 +       uint32_t        rval = QLA2X00_SUCCESS;
21342 +
21343 +       ENTER("qla2x00_update_mp_tree:");
21344 +
21345 +       /* Loop through each adapter and see what needs updating. */
21346 +       for (host = mp_hosts_base; (host) ; host = host->next) {
21347 +
21348 +               DEBUG4(printk("%s: hba(%d) flags (%x)\n",
21349 +                   __func__, host->instance, host->flags);)
21350 +               /* Clear the countdown; it may be reset in the update. */
21351 +               host->relogin_countdown = 0;
21352 +
21353 +               /* Override the NEEDS_UPDATE flag if disabled. */
21354 +               if (host->flags & MP_HOST_FLAG_DISABLE ||
21355 +                   list_empty(host->fcports))
21356 +                       host->flags &= ~MP_HOST_FLAG_NEEDS_UPDATE;
21357 +
21358 +               if (host->flags & MP_HOST_FLAG_NEEDS_UPDATE) {
21359 +
21360 +                       /*
21361 +                        * Perform the actual updates.  If this succeeds, clear
21362 +                        * the flag that an update is needed, and failback all
21363 +                        * devices that are visible on this path to use this
21364 +                        * path.  If the update fails, leave set the flag that
21365 +                        * an update is needed, and it will be picked back up
21366 +                        * during the next timer routine.
21367 +                        */
21368 +                       if (qla2x00_update_mp_host(host)) {
21369 +                               host->flags &= ~MP_HOST_FLAG_NEEDS_UPDATE;
21370 +
21371 +                               qla2x00_failback_luns(host);
21372 +                       } else
21373 +                               rval = QLA2X00_FUNCTION_FAILED;
21374 +
21375 +               }
21376 +
21377 +       }
21378 +
21379 +       if (rval != QLA2X00_SUCCESS) {
21380 +               /* EMPTY */
21381 +               DEBUG4(printk("%s: Exit FAILED.\n", __func__);)
21382 +
21383 +       } else {
21384 +               /* EMPTY */
21385 +               DEBUG4(printk("%s: Exit OK.\n", __func__);)
21386 +       }
21387 +       return rval;
21388 +}
21389 +
21390 +
21391 +
21392 +/*
21393 + * qla2x00_find_matching_lun
21394 + *      Find the lun in the path that matches the
21395 + *  specified lun number.
21396 + *
21397 + * Input:
21398 + *      lun  = lun number
21399 + *      newpath = path to search for lun
21400 + *
21401 + * Returns:
21402 + *      NULL or pointer to lun
21403 + *
21404 + * Context:
21405 + *      Kernel context.
21406 + * (dg)
21407 + */
21408 +static fc_lun_t  *
21409 +qla2x00_find_matching_lun(uint8_t lun, mp_path_t *newpath)
21410 +{
21411 +       fc_lun_t *lp = NULL;    /* lun ptr */
21412 +       struct list_head        *fcll;
21413 +       fc_lun_t *nlp;                  /* Next lun ptr */
21414 +       fc_port_t *fcport;              /* port ptr */
21415 +
21416 +       if ((fcport = newpath->port) != NULL) {
21417 +               list_for_each(fcll, &fcport->fcluns) {
21418 +                       nlp = list_entry(fcll, fc_lun_t, list);
21419 +
21420 +                       if (lun == nlp->lun) {
21421 +                               lp = nlp;
21422 +                               break;
21423 +                       }
21424 +               }
21425 +       }
21426 +       return lp;
21427 +}
21428 +
21429 +/*
21430 + * qla2x00_find_path_by_name
21431 + *      Find the path specified portname from the pathlist
21432 + *
21433 + * Input:
21434 + *      host = host adapter pointer.
21435 + *     pathlist =  multi-path path list
21436 + *      portname       portname to search for
21437 + *
21438 + * Returns:
21439 + * pointer to the path or NULL
21440 + *
21441 + * Context:
21442 + *      Kernel context.
21443 + */
21444 +mp_path_t *
21445 +qla2x00_find_path_by_name(mp_host_t *host, mp_path_list_t *plp,
21446 +    uint8_t *portname)
21447 +{
21448 +       mp_path_t  *path = NULL;                /* match if not NULL */
21449 +       mp_path_t  *tmp_path;
21450 +       int cnt;
21451 +
21452 +       if ((tmp_path = plp->last) != NULL) {
21453 +               for (cnt = 0; cnt < plp->path_cnt; cnt++) {
21454 +                       if (tmp_path->host == host &&
21455 +                               qla2x00_is_portname_equal(
21456 +                                       tmp_path->portname, portname)) {
21457 +
21458 +                               path = tmp_path;
21459 +                               break;
21460 +                       }
21461 +                       tmp_path = tmp_path->next;
21462 +               }
21463 +       }
21464 +       return path ;
21465 +}
21466 +
21467 +/*
21468 + * qla2x00_find_path_by_id
21469 + *      Find the path for the specified path id.
21470 + *
21471 + * Input:
21472 + *     dp              multi-path device
21473 + *     id              path id
21474 + *
21475 + * Returns:
21476 + *      pointer to the path or NULL
21477 + *
21478 + * Context:
21479 + *      Kernel context.
21480 + */
21481 +static mp_path_t *
21482 +qla2x00_find_path_by_id(mp_device_t *dp, uint8_t id)
21483 +{
21484 +       mp_path_t  *path = NULL;
21485 +       mp_path_t  *tmp_path;
21486 +       mp_path_list_t          *path_list;
21487 +       int cnt;
21488 +
21489 +       path_list = dp->path_list;
21490 +       tmp_path = path_list->last;
21491 +       for (cnt = 0; (tmp_path) && cnt < path_list->path_cnt; cnt++) {
21492 +               if (tmp_path->id == id) {
21493 +                       path = tmp_path;
21494 +                       break;
21495 +               }
21496 +               tmp_path = tmp_path->next;
21497 +       }
21498 +       return path ;
21499 +}
21500 +
21501 +/*
21502 + * qla2x00_find_mp_dev_by_id
21503 + *      Find the mp_dev for the specified target id.
21504 + *
21505 + * Input:
21506 + *      host = host adapter pointer.
21507 + *      tgt  = Target id
21508 + *
21509 + * Returns:
21510 + *
21511 + * Context:
21512 + *      Kernel context.
21513 + */
21514 +static mp_device_t  *
21515 +qla2x00_find_mp_dev_by_id(mp_host_t *host, uint8_t id )
21516 +{
21517 +       if (id < MAX_MP_DEVICES)
21518 +               return host->mp_devs[id];
21519 +       else
21520 +               return NULL;
21521 +}
21522 +
21523 +/*
21524 + * qla2x00_find_mp_dev_by_name
21525 + *      Find the mp_dev for the specified target name.
21526 + *
21527 + * Input:
21528 + *      host = host adapter pointer.
21529 + *      name  = Target name
21530 + *
21531 + * Returns:
21532 + *
21533 + * Context:
21534 + *      Kernel context.
21535 + */
21536 +static mp_device_t  *
21537 +qla2x00_find_mp_dev_by_name(mp_host_t *host, uint8_t *name )
21538 +{
21539 +       int id;
21540 +       mp_device_t *dp;
21541 +
21542 +       ENTER("qla2x00_find_mp_dev_by_name");
21543 +
21544 +       for (id= 0; id < MAX_MP_DEVICES; id++) {
21545 +               if ((dp = host->mp_devs[id] ) == NULL)
21546 +                       continue;
21547 +
21548 +               if (qla2x00_is_nodename_equal(dp->nodename, name)) {
21549 +                       DEBUG3(printk("%s: Found matching device @ index %d:\n",
21550 +                           __func__, id);)
21551 +                       return dp;
21552 +               }
21553 +       }
21554 +
21555 +       LEAVE("qla2x00_find_mp_dev_by_name");
21556 +
21557 +       return NULL;
21558 +}
21559 +
21560 +/*
21561 + * qla2x00_get_visible_path
21562 + * Find the the visible path for the specified device.
21563 + *
21564 + * Input:
21565 + *      dp = device pointer
21566 + *
21567 + * Returns:
21568 + *      NULL or path
21569 + *
21570 + * Context:
21571 + *      Kernel context.
21572 + */
21573 +static mp_path_t *
21574 +qla2x00_get_visible_path(mp_device_t *dp)
21575 +{
21576 +       uint16_t        id;
21577 +       mp_path_list_t  *path_list;
21578 +       mp_path_t       *path;
21579 +
21580 +       path_list = dp->path_list;
21581 +       /* if we don't have a visible path skip it */
21582 +       if ((id = path_list->visible) == PATH_INDEX_INVALID) {
21583 +               return NULL;
21584 +       }
21585 +
21586 +       if ((path = qla2x00_find_path_by_id(dp,id))== NULL)
21587 +               return NULL;
21588 +
21589 +       return path ;
21590 +}
21591 +
21592 +/*
21593 + * qla2x00_map_os_targets
21594 + * Allocate the luns and setup the OS target.
21595 + *
21596 + * Input:
21597 + *      host = host adapter pointer.
21598 + *
21599 + * Returns:
21600 + *      None
21601 + *
21602 + * Context:
21603 + *      Kernel context.
21604 + */
21605 +static void
21606 +qla2x00_map_os_targets(mp_host_t *host)
21607 +{
21608 +       scsi_qla_host_t *ha = host->ha;
21609 +       mp_path_t       *path;
21610 +       mp_device_t     *dp;
21611 +       os_tgt_t        *tgt;
21612 +       int             t;
21613 +
21614 +       ENTER("qla2x00_map_os_targets ");
21615 +
21616 +       for (t = 0; t < MAX_TARGETS; t++ ) {
21617 +               dp = host->mp_devs[t];
21618 +               if (dp != NULL) {
21619 +                       DEBUG3(printk("%s: (%d) found a dp=%p, "
21620 +                           "host=%p, ha=%p\n",
21621 +                           __func__, t, dp, host,ha);)
21622 +
21623 +                       if ((path = qla2x00_get_visible_path(dp)) == NULL) {
21624 +                               printk(KERN_INFO
21625 +                                   "qla_cfg(%d): No visible path "
21626 +                                   "for target %d, dp = %p\n",
21627 +                                   host->instance, t, dp);
21628 +                               continue;
21629 +                       }
21630 +
21631 +                       /* if not the visible path skip it */
21632 +                       if (path->host == host) {
21633 +                               if (TGT_Q(ha, t) == NULL) {
21634 +                                       tgt = qla2x00_tgt_alloc(ha, t);
21635 +                                       memcpy(tgt->node_name,
21636 +                                                       dp->nodename,
21637 +                                                       WWN_SIZE);
21638 +                                       tgt->vis_port = path->port;
21639 +                               }
21640 +                               DEBUG3(printk("%s(%ld): host=%d, "
21641 +                                   "device= %p has VISIBLE "
21642 +                                   "path=%p, path id=%d\n",
21643 +                                   __func__, ha->host_no,
21644 +                                   host->instance,
21645 +                                   dp, path, path->id);)
21646 +                       } else {
21647 +                       /* EMPTY */
21648 +                               DEBUG3(printk("%s(%ld): host=%d, "
21649 +                                   "device= %p has HIDDEN "
21650 +                                   "path=%p, path id=%d\n",
21651 +                                   __func__, ha->host_no,
21652 +                                   host->instance, dp, path,path->id);)
21653 +                       }
21654 +                       qla2x00_map_os_luns(host, dp, t);
21655 +               } else {
21656 +                       if ((tgt= TGT_Q(ha,t)) != NULL) {
21657 +                               qla2x00_tgt_free(ha,t);
21658 +                       }
21659 +               }
21660 +       }
21661 +
21662 +       LEAVE("qla2x00_map_os_targets ");
21663 +}
21664 +
21665 +/*
21666 + * qla2x00_map_os_luns
21667 + *      Allocate the luns for the OS target.
21668 + *
21669 + * Input:
21670 + *      dp = pointer to device
21671 + *      t  = OS target number.
21672 + *
21673 + * Returns:
21674 + *      None
21675 + *
21676 + * Context:
21677 + *     Kernel context.
21678 + */
21679 +static void
21680 +qla2x00_map_os_luns(mp_host_t *host, mp_device_t *dp, uint16_t t)
21681 +{
21682 +       uint16_t lun;
21683 +       int     i;
21684 +
21685 +       for (lun = 0; lun < MAX_LUNS; lun++ ) {
21686 +               if ( qla2x00_map_a_oslun(host, dp, t, lun) &&
21687 +                       (host->flags & MP_HOST_FLAG_LUN_FO_ENABLED) ){
21688 +                       /* find a path for us to use */
21689 +                       for ( i = 0; i < dp->path_list->path_cnt; i++ ){
21690 +                               qla2x00_select_next_path(host, dp, lun);
21691 +                               if( !qla2x00_map_a_oslun(host, dp, t, lun))
21692 +                                       break;
21693 +                       }
21694 +               }
21695 +       }
21696 +}
21697 +
21698 +/*
21699 + * qla2x00_map_a_osluns
21700 + *      Map the OS lun to the current path
21701 + *
21702 + * Input:
21703 + *      host = pointer to host
21704 + *      dp = pointer to device
21705 + *      lun  = OS lun number.
21706 + *
21707 + * Returns:
21708 + *      None
21709 + *
21710 + * Context:
21711 + *     Kernel context.
21712 + */
21713 +
21714 +static uint8_t
21715 +qla2x00_map_a_oslun(mp_host_t *host, mp_device_t *dp, uint16_t t, uint16_t lun)
21716 +{
21717 +       fc_port_t       *fcport;
21718 +       fc_lun_t        *fclun;
21719 +       os_lun_t        *lq;
21720 +       uint16_t        id;
21721 +       mp_path_t       *path, *vis_path;
21722 +       mp_host_t       *vis_host;
21723 +       uint8_t         status = FALSE;
21724 +
21725 +       if ((id = dp->path_list->current_path[lun]) != PATH_INDEX_INVALID) {
21726 +               path = qla2x00_find_path_by_id(dp,id);
21727 +               if (path) {
21728 +                       fcport = path->port;
21729 +                       if (fcport) {
21730 +                               /* dg 04/26/02 */
21731 +                               fcport->cur_path = id;
21732 +                               fclun = qla2x00_find_matching_lun(lun,path);
21733 +
21734 +                               /* Always map all luns if they are enabled */
21735 +                               if (fclun &&
21736 +                                       (path->lun_data.data[lun] &
21737 +                                        LUN_DATA_ENABLED) ) {
21738 +
21739 +                                       /*
21740 +                                        * Mapped lun on the visible path
21741 +                                        */
21742 +                                       if ((vis_path =
21743 +                                           qla2x00_get_visible_path(dp)) ==
21744 +                                           NULL ) {
21745 +
21746 +                                               printk(KERN_INFO
21747 +                                                   "qla2x00(%d): No visible "
21748 +                                                   "path for target %d, "
21749 +                                                   "dp = %p\n",
21750 +                                                   host->instance,
21751 +                                                   t, dp);
21752 +
21753 +                                               return FALSE;
21754 +                                       }
21755 +
21756 +                                       vis_host = vis_path->host;
21757 +
21758 +                                       /* ra 11/30/01 */
21759 +                                       /*
21760 +                                        * Always alloc LUN 0 so kernel
21761 +                                        * will scan past LUN 0.
21762 +                                        */
21763 +                                       if (lun != 0 &&
21764 +                                           (EXT_IS_LUN_BIT_SET(
21765 +                                               &(fcport->lun_mask), lun))) {
21766 +
21767 +                                               /* mask this LUN */
21768 +                                               return FALSE;
21769 +                                       }
21770 +
21771 +                                       if ((lq = qla2x00_lun_alloc(
21772 +                                                       vis_host->ha,
21773 +                                                       t, lun)) != NULL) {
21774 +
21775 +                                               lq->fclun = fclun;
21776 +                                       }
21777 +                               }
21778 +                       }
21779 +                       else
21780 +                               status = TRUE;
21781 +               }
21782 +       }
21783 +       return status;
21784 +}
21785 +
21786 +/*
21787 + * qla2x00_is_ww_name_zero
21788 + *
21789 + * Input:
21790 + *      ww_name = Pointer to WW name to check
21791 + *
21792 + * Returns:
21793 + *      TRUE if name is 0 else FALSE
21794 + *
21795 + * Context:
21796 + *      Kernel context.
21797 + */
21798 +static uint8_t
21799 +qla2x00_is_ww_name_zero(uint8_t *nn)
21800 +{
21801 +       int cnt;
21802 +
21803 +       /* Check for zero node name */
21804 +       for (cnt = 0; cnt < WWN_SIZE ; cnt++, nn++) {
21805 +               if (*nn != 0)
21806 +                       break;
21807 +       }
21808 +       /* if zero return TRUE */
21809 +       if (cnt == WWN_SIZE)
21810 +               return TRUE;
21811 +       else
21812 +               return FALSE;
21813 +}
21814 +
21815 +/*
21816 + * qla2x00_add_path
21817 + * Add a path to the pathlist
21818 + *
21819 + * Input:
21820 + * pathlist -- path list of paths
21821 + * path -- path to be added to list
21822 + *
21823 + * Returns:
21824 + *      None
21825 + *
21826 + * Context:
21827 + *      Kernel context.
21828 + */
21829 +static void
21830 +qla2x00_add_path( mp_path_list_t *pathlist, mp_path_t *path )
21831 +{
21832 +       mp_path_t *last = pathlist->last;
21833 +
21834 +       ENTER("qla2x00_add_path");
21835 +
21836 +       DEBUG3(printk("%s: pathlist =%p, path =%p, cnt = %d\n",
21837 +           __func__, pathlist, path, pathlist->path_cnt);)
21838 +       if (last == NULL) {
21839 +               last = path;
21840 +       } else {
21841 +               path->next = last->next;
21842 +       }
21843 +
21844 +       last->next = path;
21845 +       pathlist->last = path;
21846 +       pathlist->path_cnt++;
21847 +
21848 +       LEAVE("qla2x00_add_path");
21849 +}
21850 +
21851 +
21852 +/*
21853 + * qla2x00_is_portname_in_device
21854 + *     Search for the specified "portname" in the device list.
21855 + *
21856 + * Input:
21857 + *     dp = device pointer
21858 + *     portname = portname to searched for in device
21859 + *
21860 + * Returns:
21861 + *      qla2x00 local function return status code.
21862 + *
21863 + * Context:
21864 + *      Kernel context.
21865 + */
21866 +uint8_t
21867 +qla2x00_is_portname_in_device(mp_device_t *dp, uint8_t *portname)
21868 +{
21869 +       int idx;
21870 +
21871 +       for (idx = 0; idx < MAX_PATHS_PER_DEVICE; idx++) {
21872 +               if (memcmp(&dp->portnames[idx][0], portname, WWN_SIZE) == 0)
21873 +                       return TRUE;
21874 +       }
21875 +       return FALSE;
21876 +}
21877 +
21878 +
21879 +/*
21880 + *  qla2x00_set_lun_data_from_bitmask
21881 + *      Set or clear the LUN_DATA_ENABLED bits in the LUN_DATA from
21882 + *      a LUN bitmask provided from the miniport driver.
21883 + *
21884 + *  Inputs:
21885 + *      lun_data = Extended LUN_DATA buffer to set.
21886 + *      lun_mask = Pointer to lun bit mask union.
21887 + *
21888 + *  Return Value: none.
21889 + */
21890 +void
21891 +qla2x00_set_lun_data_from_bitmask(mp_lun_data_t *lun_data,
21892 +    lun_bit_mask_t *lun_mask)
21893 +{
21894 +       int16_t lun;
21895 +
21896 +       ENTER("qla2x00_set_lun_data_from_bitmask");
21897 +
21898 +       for (lun = 0; lun < MAX_LUNS; lun++) {
21899 +               /* our bit mask is inverted */
21900 +               if (!(EXT_IS_LUN_BIT_SET(lun_mask,lun)))
21901 +                       lun_data->data[lun] |= LUN_DATA_ENABLED;
21902 +               else
21903 +                       lun_data->data[lun] &= ~LUN_DATA_ENABLED;
21904 +
21905 +               DEBUG5(printk("%s: lun data[%d] = 0x%x\n",
21906 +                   __func__, lun, lun_data->data[lun]);)
21907 +       }
21908 +
21909 +       LEAVE("qla2x00_set_lun_data_from_bitmask");
21910 +
21911 +       return;
21912 +}
21913 +
21914 +static void
21915 +qla2x00_failback_single_lun(mp_device_t *dp, uint8_t lun, uint8_t new)
21916 +{
21917 +       mp_path_list_t   *pathlist;
21918 +       mp_path_t        *new_path, *old_path;
21919 +       uint8_t         old;
21920 +       mp_host_t  *host;
21921 +       os_lun_t *lq;
21922 +       mp_path_t       *vis_path;
21923 +       mp_host_t       *vis_host;
21924 +
21925 +       /* Failback and update statistics. */
21926 +       if ((pathlist = dp->path_list) == NULL)
21927 +               return;
21928 +
21929 +       old = pathlist->current_path[lun];
21930 +       pathlist->current_path[lun] = new;
21931 +
21932 +       if ((new_path = qla2x00_find_path_by_id(dp, new)) == NULL)
21933 +               return;
21934 +       if ((old_path = qla2x00_find_path_by_id(dp, old)) == NULL)
21935 +               return;
21936 +
21937 +       /* An fclun should exist for the failbacked lun */
21938 +       if (qla2x00_find_matching_lun(lun, new_path) == NULL)
21939 +               return;
21940 +       if (qla2x00_find_matching_lun(lun, old_path) == NULL)
21941 +               return;
21942 +
21943 +       /* Log to console and to event log. */
21944 +       printk(KERN_INFO
21945 +               "qla2x00: FAILBACK device %d -> "
21946 +               "%02x%02x%02x%02x%02x%02x%02x%02x LUN %02x\n",
21947 +               dp->dev_id,
21948 +               dp->nodename[0], dp->nodename[1],
21949 +               dp->nodename[2], dp->nodename[3],
21950 +               dp->nodename[4], dp->nodename[5],
21951 +               dp->nodename[6], dp->nodename[7],
21952 +               lun);
21953 +
21954 +       printk(KERN_INFO
21955 +               "qla2x00: FROM HBA %d to HBA %d \n",
21956 +               old_path->host->instance,
21957 +               new_path->host->instance);
21958 +
21959 +
21960 +       /* Send a failover notification. */
21961 +#if 0
21962 +       qla2x00_send_failover_notify(dp, lun, new_path, old_path);
21963 +#endif
21964 +
21965 +       host =  new_path->host;
21966 +
21967 +       /* remap the lun */
21968 +       qla2x00_map_a_oslun(host, dp, dp->dev_id, lun);
21969 +
21970 +       /* 7/16
21971 +        * Reset counts on the visible path
21972 +        */
21973 +       if ((vis_path = qla2x00_get_visible_path(dp)) == NULL) {
21974 +               printk(KERN_INFO
21975 +                       "qla2x00(%d): No visible path for "
21976 +                       "target %d, dp = %p\n",
21977 +                       host->instance,
21978 +                       dp->dev_id, dp);
21979 +               return;
21980 +       }
21981 +
21982 +       vis_host = vis_path->host;
21983 +       if ((lq = qla2x00_lun_alloc(vis_host->ha, dp->dev_id, lun)) != NULL) {
21984 +               qla2x00_delay_lun(vis_host->ha, lq, recoveryTime);
21985 +               qla2x00_flush_failover_q(vis_host->ha, lq);
21986 +               qla2x00_reset_lun_fo_counts(vis_host->ha, lq);
21987 +       }
21988 +}
21989 +
21990 +/*
21991 +*  qla2x00_failback_luns
21992 +*      This routine looks through the devices on an adapter, and
21993 +*      for each device that has this adapter as the visible path,
21994 +*      it forces that path to be the current path.  This allows us
21995 +*      to keep some semblance of static load balancing even after
21996 +*      an adapter goes away and comes back.
21997 +*
21998 +*  Arguments:
21999 +*      host          Adapter that has just come back online.
22000 +*
22001 +*  Return:
22002 +*      None.
22003 +*/
22004 +static void
22005 +qla2x00_failback_luns( mp_host_t  *host)
22006 +{
22007 +       uint16_t          dev_no;
22008 +       uint8_t           l;
22009 +       uint16_t          lun;
22010 +       int i;
22011 +       mp_device_t      *dp;
22012 +       mp_path_list_t   *path_list;
22013 +       mp_path_t        *path;
22014 +       fc_lun_t        *new_fp;
22015 +
22016 +       ENTER("qla2x00_failback_luns");
22017 +
22018 +       for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
22019 +               dp = host->mp_devs[dev_no];
22020 +
22021 +               if (dp == NULL)
22022 +                       continue;
22023 +
22024 +               path_list = dp->path_list;
22025 +               for (path = path_list->last, i= 0;
22026 +                       i < path_list->path_cnt;
22027 +                       i++, path = path->next) {
22028 +
22029 +                       if (path->host != host )
22030 +                               continue;
22031 +
22032 +                       if (path->port == NULL)
22033 +                               continue;
22034 +
22035 +                       if (atomic_read(&path->port->state) == FC_DEVICE_DEAD)
22036 +                               continue;
22037 +
22038 +                       /* 
22039 +                        * Failback all the paths for this host,
22040 +                        * the luns could be preferred across all paths 
22041 +                        */
22042 +                       DEBUG2(printk("%s(%d): Lun Data for device %p, "
22043 +                           "id=%d, path id=%d\n",
22044 +                           __func__, host->instance, dp, dp->dev_id,
22045 +                           path->id);)
22046 +                       DEBUG4(qla2x00_dump_buffer(
22047 +                           (char *)&path->lun_data.data[0], 64);)
22048 +                       DEBUG4(printk("%s(%d): Perferrred Path data:\n",
22049 +                           __func__, host->instance);)
22050 +                       DEBUG4(qla2x00_dump_buffer(
22051 +                           (char *)&path_list->current_path[0], 64);)
22052 +
22053 +                       for (lun = 0; lun < MAX_LUNS_PER_DEVICE; lun++) {
22054 +                               l = (uint8_t)(lun & 0xFF);
22055 +
22056 +                               /*
22057 +                                * if this is the preferred lun and not
22058 +                                * the current path then failback lun.
22059 +                                */
22060 +                               DEBUG4(printk("%s: target=%d, cur path id =%d, "
22061 +                                   "lun data[%d] = %d)\n",
22062 +                                   __func__, dp->dev_id, path->id,
22063 +                                   lun, path->lun_data.data[lun]);)
22064 +
22065 +                               if ((path->lun_data.data[l] &
22066 +                                               LUN_DATA_PREFERRED_PATH) &&
22067 +                                       /* !path->relogin && */
22068 +                                       path_list->current_path[l] !=
22069 +                                               path->id) {
22070 +                                       /* No point in failing back a
22071 +                                          disconnected lun */
22072 +                                       new_fp = qla2x00_find_matching_lun(
22073 +                                                       l, path);
22074 +
22075 +                                       if (new_fp == NULL)
22076 +                                               continue;
22077 +                                       if (new_fp->flags & FC_DISCON_LUN)
22078 +                                               continue;
22079 +
22080 +                                       qla2x00_failback_single_lun(
22081 +                                                       dp, l, path->id);
22082 +                               }
22083 +                       }
22084 +               }
22085 +
22086 +       }
22087 +
22088 +       LEAVE("qla2x00_failback_luns");
22089 +
22090 +       return;
22091 +}
22092 +
22093 +/*
22094 + *  qla2x00_setup_new_path
22095 + *      Checks the path against the existing paths to see if there
22096 + *      are any incompatibilities.  It then checks and sets up the
22097 + *      current path indices.
22098 + *
22099 + *  Inputs:
22100 + *      dp   =  pointer to device
22101 + *      path = new path
22102 + *
22103 + *  Returns:
22104 + *      None
22105 + */
22106 +static void
22107 +qla2x00_setup_new_path( mp_device_t *dp, mp_path_t *path)
22108 +{
22109 +       mp_path_list_t  *path_list = dp->path_list;
22110 +       mp_path_t       *tmp_path, *first_path;
22111 +       mp_host_t       *first_host;
22112 +       mp_host_t       *tmp_host;
22113 +
22114 +       uint16_t        lun;
22115 +       uint8_t         l;
22116 +       int             i;
22117 +
22118 +       ENTER("qla2x00_setup_new_path");
22119 +
22120 +       /* If this is a visible path, and there is not already a
22121 +        * visible path, save it as the visible path.  If there
22122 +        * is already a visible path, log an error and make this
22123 +        * path invisible.
22124 +        */
22125 +       if (!(path->mp_byte & (MP_MASK_HIDDEN | MP_MASK_UNCONFIGURED))) {
22126 +
22127 +               /* No known visible path */
22128 +               if (path_list->visible == PATH_INDEX_INVALID) {
22129 +                       DEBUG3(printk("%s: No know visible path - make this "
22130 +                           "path visible\n",
22131 +                           __func__);)
22132 +                               
22133 +                       path_list->visible = path->id;
22134 +                       path->mp_byte &= ~MP_MASK_HIDDEN;
22135 +               } else {
22136 +                       DEBUG3(printk("%s: Second visible path found- make "
22137 +                           "this one hidden\n",
22138 +                           __func__);)
22139 +
22140 +                       path->mp_byte |= MP_MASK_HIDDEN;
22141 +               }
22142 +       }
22143 +
22144 +       /*
22145 +        * If this is not the first path added, and the setting for
22146 +        * MaxLunsPerTarget does not match that of the first path
22147 +        * then disable qla_cfg for all adapters.
22148 +        */
22149 +       first_path = qla2x00_find_path_by_id(dp, 0);
22150 +
22151 +       if (first_path != NULL) {
22152 +               first_host = first_path->host;
22153 +               if ((path->id != 0) &&
22154 +                       (first_host->MaxLunsPerTarget !=
22155 +                        path->host->MaxLunsPerTarget)) {
22156 +
22157 +                       for (tmp_path = path_list->last, i = 0;
22158 +                               (tmp_path) && i <= path->id; i++) {
22159 +
22160 +                               tmp_host = tmp_path->host;
22161 +                               if (!(tmp_host->flags &
22162 +                                               MP_HOST_FLAG_DISABLE)) {
22163 +
22164 +                                       DEBUG4(printk("%s: 2nd visible "
22165 +                                           "path (%p)\n",
22166 +                                           __func__, tmp_host);)
22167 +
22168 +                                       tmp_host->flags |= MP_HOST_FLAG_DISABLE;
22169 +                               }
22170 +                       }
22171 +               }
22172 +       }
22173 +
22174 +       /*
22175 +        * For each LUN, evaluate whether the new path that is added
22176 +        * is better than the existing path.  If it is, make it the
22177 +        * current path for the LUN.
22178 +        */
22179 +       for (lun = 0; lun < MAX_LUNS_PER_DEVICE; lun++) {
22180 +               l = (uint8_t)(lun & 0xFF);
22181 +
22182 +               /* If this is the first path added, it is the only
22183 +                * available path, so make it the current path.
22184 +                */
22185 +
22186 +               DEBUG4(printk("%s: lun_data 0x%x, LUN %d\n",
22187 +                   __func__, path->lun_data.data[l], lun);)
22188 +
22189 +               if (first_path == path) {
22190 +                       path_list->current_path[l] = 0;
22191 +                       path->lun_data.data[l] |=  LUN_DATA_PREFERRED_PATH;
22192 +               } else if (path->lun_data.data[l] & LUN_DATA_PREFERRED_PATH) {
22193 +                       /*
22194 +                        * If this is not the first path added, if this is
22195 +                        * the preferred path, make it the current path.
22196 +                        */
22197 +                       path_list->current_path[l] = path->id;
22198 +               }
22199 +       }
22200 +
22201 +       LEAVE("qla2x00_setup_new_path");
22202 +
22203 +       return;
22204 +}
22205 +
22206 +/*
22207 + * qla2x00_cfg_mem_free
22208 + *     Free all configuration structures.
22209 + *
22210 + * Input:
22211 + *      ha = adapter state pointer.
22212 + *
22213 + * Context:
22214 + *      Kernel context.
22215 + */
22216 +void
22217 +qla2x00_cfg_mem_free(scsi_qla_host_t *ha)
22218 +{
22219 +       mp_device_t *dp;
22220 +       mp_path_list_t  *path_list;
22221 +       mp_path_t       *tmp_path, *path;
22222 +       mp_host_t       *host, *temp;
22223 +       int     id, cnt;
22224 +
22225 +       if ((host = qla2x00_cfg_find_host(ha)) != NULL) {
22226 +               if( mp_num_hosts == 0 )
22227 +                       return;
22228 +
22229 +               for (id= 0; id < MAX_MP_DEVICES; id++) {
22230 +                       if ((dp = host->mp_devs[id]) == NULL)
22231 +                               continue;
22232 +                       if ((path_list = dp->path_list) == NULL)
22233 +                               continue;
22234 +                       if ((tmp_path = path_list->last) == NULL)
22235 +                               continue;
22236 +                       for (cnt = 0; cnt < path_list->path_cnt; cnt++) {
22237 +                               path = tmp_path;
22238 +                               tmp_path = tmp_path->next;
22239 +                               DEBUG(printk(KERN_INFO
22240 +                                               "host%d - Removing path[%d] "
22241 +                                               "= %p\n",
22242 +                                               host->instance,
22243 +                                               cnt, path);)
22244 +                               KMEM_FREE(path,sizeof(mp_path_t));
22245 +                       }
22246 +                       KMEM_FREE(path_list, sizeof(mp_path_list_t));
22247 +                       host->mp_devs[id] = NULL;
22248 +                       /* remove dp from other hosts */
22249 +                       for (temp = mp_hosts_base; (temp); temp = temp->next) {
22250 +                               if (temp->mp_devs[id] == dp) {
22251 +                                       DEBUG(printk(KERN_INFO
22252 +                                               "host%d - Removing host[%d] = "
22253 +                                               "%p\n",
22254 +                                               host->instance,
22255 +                                               temp->instance,temp);)
22256 +                                       temp->mp_devs[id] = NULL;
22257 +                               }
22258 +                       }
22259 +                       KMEM_FREE(dp, sizeof(mp_device_t));
22260 +               }
22261 +
22262 +               /* remove this host from host list */
22263 +               temp = mp_hosts_base;
22264 +               if (temp != NULL) {
22265 +                       /* Remove from top of queue */
22266 +                       if (temp == host) {
22267 +                               mp_hosts_base = host->next;
22268 +                       } else {
22269 +                               /*
22270 +                                * Remove from middle of queue
22271 +                                * or bottom of queue
22272 +                                */
22273 +                               for (temp = mp_hosts_base;
22274 +                                               temp != NULL;
22275 +                                               temp = temp->next) {
22276 +
22277 +                                       if (temp->next == host) {
22278 +                                               temp->next = host->next;
22279 +                                               break;
22280 +                                       }
22281 +                               }
22282 +                       }
22283 +               }
22284 +               KMEM_FREE(host, sizeof(mp_host_t));
22285 +               mp_num_hosts--;
22286 +       }
22287 +}
22288 --- /dev/null   Thu Apr 11 07:25:15 2002
22289 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_cfg.h   Thu Jul  3 15:34:42 2003
22290 @@ -0,0 +1,181 @@
22291 +/******************************************************************************
22292 + *                  QLOGIC LINUX SOFTWARE
22293 + *
22294 + * QLogic ISP2x00 device driver for Linux 2.5.x
22295 + * Copyright (C) 2003 Qlogic Corporation
22296 + * (www.qlogic.com)
22297 + *
22298 + * This program is free software; you can redistribute it and/or modify it
22299 + * under the terms of the GNU General Public License as published by the
22300 + * Free Software Foundation; either version 2, or (at your option) any
22301 + * later version.
22302 + *
22303 + * This program is distributed in the hope that it will be useful, but
22304 + * WITHOUT ANY WARRANTY; without even the implied warranty of
22305 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22306 + * General Public License for more details.
22307 + *
22308 + ******************************************************************************/
22309 +
22310 +/*
22311 + * QLogic ISP2x00 Multi-path LUN Support
22312 + * Multi-path include file.
22313 + */
22314 +
22315 +#if !defined(_QLA_CFG_H)
22316 +#define        _QLA_CFG_H
22317 +
22318 +#if defined(__cplusplus)
22319 +extern "C"
22320 +{
22321 +#endif
22322 +
22323 +/*
22324 + * Failover definitions
22325 + */
22326 +#define FAILOVER_TYPE_COUNT            4
22327 +#define MP_NOTIFY_RESET_DETECTED       1
22328 +#define MP_NOTIFY_PWR_LOSS             2
22329 +#define MP_NOTIFY_LOOP_UP              3
22330 +#define MP_NOTIFY_LOOP_DOWN            4
22331 +#define MP_NOTIFY_BUS_RESET            5
22332 +#define FAILOVER_TYPE_ERROR_RETRY      1
22333 +#define MAX_NUMBER_PATHS               FO_MAX_PATHS
22334 +#define PORT_NAME_SIZE                 WWN_SIZE
22335 +#define FAILOVER_NOTIFY_STATUS_ERROR   QLA2X00_SUCCESS
22336 +#define FAILOVER_NOTIFY_STATUS_SUCCESS  QLA2X00_SUCCESS
22337 +#define FAILOVER_NOTIFY_CDB_LENGTH_MAX FO_NOTIFY_CDB_LENGTH_MAX
22338 +#define MAX_TARGETS_PER_DEVICE         SDM_DEF_MAX_TARGETS_PER_DEVICE
22339 +
22340 +/*
22341 + * Limits definitions.
22342 + */
22343 +#define MAX_LUNS_PER_DEVICE    MAX_LUNS        /* Maximum # of luns */
22344 +#define MAX_MP_DEVICES         MAX_TARGETS     /* Maximum # of virtual devs */
22345 +#define MAX_PATHS_PER_DEVICE   8               /* Maximum # of paths */
22346 +#if !defined(MAX_LUNS)
22347 +#define        MAX_LUNS                256
22348 +#endif
22349 +#define MAX_HOSTS              MAX_HOST_COUNT
22350 +
22351 +/* Async notification types */
22352 +#define NOTIFY_EVENT_LINK_DOWN      1          /* Link went down */
22353 +#define NOTIFY_EVENT_LINK_UP        2          /* Link is back up */
22354 +#define NOTIFY_EVENT_RESET_DETECTED 3          /* Reset detected */
22355 +
22356 +/* MACROS */
22357 +#define qla2x00_is_portname_equal(N1,N2) \
22358 +       ((memcmp((N1),(N2),WWN_SIZE)==0?TRUE:FALSE))
22359 +#define qla2x00_is_nodename_equal(N1,N2) \
22360 +       ((memcmp((N1),(N2),WWN_SIZE)==0?TRUE:FALSE))
22361 +#if 0
22362 +#define qla2x00_allocate_path_list() \
22363 +    ((mp_path_list_t *)KMEM_ZALLOC(sizeof(mp_path_list_t)))
22364 +#endif
22365 +
22366 +/*
22367 + * Per-multipath driver parameters
22368 + */
22369 +typedef struct _mp_lun_data {
22370 +       uint8_t         data[MAX_LUNS];
22371 +#define LUN_DATA_ENABLED               BIT_7
22372 +#define LUN_DATA_PREFERRED_PATH                BIT_6
22373 +}
22374 +mp_lun_data_t;
22375 +
22376 +
22377 +#define PATH_INDEX_INVALID             0xff
22378 +
22379 +/*
22380 + * Per-device collection of all paths.
22381 + */
22382 +typedef struct _mp_path_list {
22383 +       struct _mp_path *last;          /* ptrs to end of circular list of paths */
22384 +       uint8_t         path_cnt;       /* number of paths */
22385 +       uint8_t         visible;        /* visible path */
22386 +       uint16_t        reserved1;      /* Memory alignment */
22387 +       uint32_t        reserved2;      /* Memory alignment */
22388 +       uint8_t         current_path[ MAX_LUNS_PER_DEVICE ]; /* current path for a given lun */
22389 +       uint16_t        failover_cnt[ FAILOVER_TYPE_COUNT ];
22390 +}
22391 +mp_path_list_t;
22392 +
22393 +/*
22394 + * Definitions for failover notify SRBs.  These SRBs contain failover notify
22395 + * CDBs to notify a target that a failover has occurred.
22396 + *
22397 + */
22398 +typedef struct _failover_notify_srb {
22399 +       srb_t           *srb;
22400 +       uint16_t        status;
22401 +       uint16_t        reserved;
22402 +}
22403 +failover_notify_srb_t;
22404 +
22405 +/*
22406 + * Per-device multipath control data.
22407 + */
22408 +typedef struct _mp_device {
22409 +       mp_path_list_t  *path_list;             /* Path list for device.  */
22410 +       int                             dev_id;
22411 +       int                     use_cnt;        /* number of users */
22412 +       uint8_t         nodename[WWN_SIZE];     /* World-wide node name. */
22413 +       /* World-wide port names. */
22414 +       uint8_t         portnames[MAX_PATHS_PER_DEVICE][WWN_SIZE];
22415 +}
22416 +mp_device_t;
22417 +
22418 +/*
22419 + * Per-adapter multipath Host
22420 + */
22421 +typedef struct _mp_host {
22422 +       struct _mp_host *next;  /* ptr to next host adapter in list */
22423 +       scsi_qla_host_t *ha;    /* ptr to lower-level driver adapter struct */
22424 +       int             instance;       /* OS instance number */
22425 +       struct list_head *fcports;      /* Port chain for this adapter */
22426 +       mp_device_t     *mp_devs[MAX_MP_DEVICES]; /* Multipath devices */
22427 +
22428 +       uint32_t        flags;
22429 +#define MP_HOST_FLAG_NEEDS_UPDATE  BIT_0  /* Need to update device data. */
22430 +#define MP_HOST_FLAG_FO_ENABLED           BIT_1  /* Failover enabled for this host */
22431 +#define MP_HOST_FLAG_DISABLE      BIT_2  /* Bypass qla_cfg. */
22432 +#define MP_HOST_FLAG_LUN_FO_ENABLED   BIT_3  /* lun Failover enabled */
22433 +
22434 +       uint8_t         nodename[WWN_SIZE];
22435 +       uint8_t         portname[WWN_SIZE];
22436 +       uint16_t        MaxLunsPerTarget;
22437 +
22438 +       uint16_t        relogin_countdown;
22439 +}
22440 +mp_host_t;
22441 +
22442 +/*
22443 + * Describes path a single.
22444 + */
22445 +typedef struct _mp_path {
22446 +       struct _mp_path  *next;                 /* next path in list  */
22447 +       struct _mp_host *host;                  /* Pointer to adapter */
22448 +       fc_port_t       *port;                  /* FC port info  */
22449 +       uint16_t       id;                      /* Path id (index) */
22450 +       uint8_t        mp_byte;                 /* Multipath control byte */
22451 +#define MP_MASK_HIDDEN 0x80
22452 +#define MP_MASK_UNCONFIGURED   0x40
22453 +#define MP_MASK_PRIORITY       0x07
22454 +
22455 +       uint8_t        relogin;                 /* Need to relogin to port */
22456 +       uint8_t        config;                  /* User configured path */
22457 +       uint8_t        reserved[3];
22458 +       mp_lun_data_t   lun_data;               /* Lun data information */
22459 +       uint8_t        portname[WWN_SIZE];      /* Port name of this target. */
22460 +}
22461 +mp_path_t;
22462 +
22463 +/*
22464 + * Failover notification requests from host driver.
22465 + */
22466 +typedef struct failover_notify_entry {
22467 +       struct scsi_address             *os_addr;
22468 +}
22469 +failover_notify_t;
22470 +
22471 +#endif /* _QLA_CFG_H */
22472 --- /dev/null   Thu Apr 11 07:25:15 2002
22473 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_cfgln.c Thu Jul  3 15:34:42 2003
22474 @@ -0,0 +1,726 @@
22475 +/******************************************************************************
22476 + *                  QLOGIC LINUX SOFTWARE
22477 + *
22478 + * QLogic ISP2x00 device driver for Linux 2.5.x
22479 + * Copyright (C) 2003 Qlogic Corporation
22480 + * (www.qlogic.com)
22481 + *
22482 + * This program is free software; you can redistribute it and/or modify it
22483 + * under the terms of the GNU General Public License as published by the
22484 + * Free Software Foundation; either version 2, or (at your option) any
22485 + * later version.
22486 + *
22487 + * This program is distributed in the hope that it will be useful, but
22488 + * WITHOUT ANY WARRANTY; without even the implied warranty of
22489 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22490 + * General Public License for more details.
22491 + *
22492 + ******************************************************************************/
22493 +
22494 +/*
22495 + * QLogic ISP2x00 Multi-path LUN Support Driver 
22496 + * Solaris specific functions
22497 + *
22498 + */
22499 +
22500 +#include "qla_os.h"
22501 +#include "qla_def.h"
22502 +
22503 +#include "qlfo.h"
22504 +
22505 +#define MAX_SEARCH_STR_SIZE    512
22506 +
22507 +/*
22508 + * qla2x00_set_lun_data_from_config
22509 + * Set lun_data byte from the configuration parameters.
22510 + *
22511 + * Input:
22512 + * host -- pointer to host adapter structure.
22513 + * port -- pointer to port
22514 + * tgt  -- target number
22515 + * dev_no  -- device number
22516 + */
22517 +void
22518 +qla2x00_set_lun_data_from_config(mp_host_t *host, fc_port_t *port,
22519 +    uint16_t tgt, uint16_t dev_no)
22520 +{
22521 +       char            *propbuf;  /* As big as largest search string */
22522 +       int             rval;
22523 +       int16_t         lun, l;
22524 +       scsi_qla_host_t *ha = host->ha;
22525 +       mp_device_t     *dp;
22526 +       lun_bit_mask_t  *plun_mask;
22527 +       lun_bit_mask_t  *mask_ptr;
22528 +       mp_path_list_t  *pathlist;
22529 +#if 0
22530 +       uint8_t         control_byte;
22531 +#endif
22532 +
22533 +       mp_path_t *path;
22534 +
22535 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&propbuf,
22536 +           MAX_SEARCH_STR_SIZE)) {
22537 +               /* not enough memory */
22538 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
22539 +                   "propbuf requested=%d.\n",
22540 +                   __func__, ha->host_no, ha->instance,
22541 +                   MAX_SEARCH_STR_SIZE);)
22542 +               return;
22543 +       }
22544 +
22545 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&plun_mask,
22546 +           sizeof(lun_bit_mask_t))) {
22547 +               /* not enough memory */
22548 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
22549 +                   "lun_mask requested=%d.\n",
22550 +                   __func__, ha->host_no, ha->instance,
22551 +                   sizeof(lun_bit_mask_t));)
22552 +               qla2x00_free_ioctl_scrap_mem(ha);
22553 +               return;
22554 +       }
22555 +       mask_ptr = plun_mask;
22556 +
22557 +       dp = host->mp_devs[tgt];
22558 +       if (dp == NULL) {
22559 +               printk("qla2x00_set_lun_data_from_config: Target %d "
22560 +                   "not found for hba %d\n",tgt, host->instance);
22561 +               qla2x00_free_ioctl_scrap_mem(ha);
22562 +               return;
22563 +       }
22564 +       if ( (pathlist = dp->path_list) == NULL ) {
22565 +               printk("qla2x00_set_lun_data_from_config: path list "
22566 +                   "not found for target %d\n", tgt);
22567 +               qla2x00_free_ioctl_scrap_mem(ha);
22568 +               return;
22569 +       }
22570 +
22571 +       if ((path = qla2x00_find_path_by_name(host, pathlist,
22572 +           port->port_name)) == NULL ) {
22573 +               printk("qla2x00_set_lun_data_from_config: No path found "
22574 +                   "for target %d\n", tgt);
22575 +               qla2x00_free_ioctl_scrap_mem(ha);
22576 +               return;
22577 +       }
22578 +
22579 +       /* clear port information */
22580 +       path->port = NULL;
22581 +
22582 +#if 0
22583 +       /* 02/06/01 - move to build path tree */
22584 +       /*
22585 +        * Get "target-N-device-N-control" if property is present then all
22586 +        * luns are visible.
22587 +        */
22588 +       sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-control",
22589 +                       host->instance, tgt, dev_no);
22590 +       DEBUG3(printk("build_tree: %s\n",propbuf);)
22591 +       rval = qla2x00_get_prop_xstr(ha, propbuf,
22592 +                       (uint8_t *)(&control_byte), sizeof(control_byte));
22593 +       if (rval != -1) {
22594 +               if (!((control_byte & MP_MASK_HIDDEN) ||
22595 +                       (control_byte & MP_MASK_UNCONFIGURED))) {
22596 +                       pathlist->visible = path->id;
22597 +                       DEBUG(printk("qla2x00_set_lun_data_from_config: "
22598 +                                       "found visible path id %d hba %d\n",
22599 +                                       path->id, host->instance);)
22600 +               } else {
22601 +                       pathlist->visible = PATH_INDEX_INVALID; /* 01/30 */
22602 +                       DEBUG(printk("qla2x00_set_lun_data_from_config: "
22603 +                                       "found hidden path id %d hba %d\n",
22604 +                                       path->id, host->instance);)
22605 +               }
22606 +               path->mp_byte = control_byte;
22607 +               DEBUG(printk("qla2x00_set_lun_data_from_config: "
22608 +                               "control byte 0x%x for path id %d hba %d\n",
22609 +                               path->mp_byte, path->id, host->instance);)
22610 +       }
22611 +#endif
22612 +
22613 +       /* Get "target-N-device-N-preferred" as a 256 bit lun_mask*/
22614 +       sprintf(propbuf, "scsi-qla%ld-tgt-%d-di-%d-preferred",
22615 +           ha->instance, tgt, dev_no);
22616 +       DEBUG2(printk("build_tree: %s\n",propbuf);)
22617 +
22618 +       rval = qla2x00_get_prop_xstr(ha, propbuf,
22619 +           (uint8_t *)(plun_mask), sizeof(lun_bit_mask_t));
22620 +
22621 +       if (rval == -1) {
22622 +               /* EMPTY */
22623 +               DEBUG2(printk("qla2x00_set_lun_data_from_config: "
22624 +                   "NO Preferred mask  - ret %d\n", rval);)
22625 +       } else {
22626 +               if (rval != sizeof(lun_bit_mask_t)) {
22627 +                       /* EMPTY */
22628 +                       printk("qla2x00_set_lun_data_from_config: "
22629 +                           "Preferred mask len %d is incorrect.\n", rval);
22630 +               }
22631 +
22632 +               DEBUG3(printk("qla2x00_set_lun_data_from_config: "
22633 +                   "Preferred mask read:\n");)
22634 +               DEBUG3(qla2x00_dump_buffer((char *)plun_mask,
22635 +                   sizeof(lun_bit_mask_t));)
22636 +
22637 +               for (lun = MAX_LUNS-1, l =0; lun >= 0; lun--, l++ ) {
22638 +                       if (EXT_IS_LUN_BIT_SET(mask_ptr, lun)) {
22639 +                               path->lun_data.data[l] |=
22640 +                                   LUN_DATA_PREFERRED_PATH;
22641 +                               pathlist->current_path[l] = path->id;
22642 +                       } else {
22643 +                               path->lun_data.data[l] &=
22644 +                                   ~LUN_DATA_PREFERRED_PATH;
22645 +                       }
22646 +               }
22647 +
22648 +       }
22649 +
22650 +       /* Get "target-N-device-N-lun-disable" as a 256 bit lun_mask*/
22651 +       sprintf(propbuf, "scsi-qla%ld-tgt-%d-di-%d-lun-disabled",
22652 +           ha->instance, tgt, dev_no);
22653 +       DEBUG3(printk("build_tree: %s\n",propbuf);)
22654 +
22655 +       rval = qla2x00_get_prop_xstr(ha, propbuf,
22656 +           (uint8_t *)plun_mask, sizeof(lun_bit_mask_t));
22657 +       if (rval == -1) {
22658 +               /* default: all luns enabled */
22659 +               for (lun = 0; lun < MAX_LUNS; lun++) {
22660 +                       path->lun_data.data[lun] |= LUN_DATA_ENABLED;
22661 +               }
22662 +       } else {
22663 +               if (rval != sizeof(lun_bit_mask_t)) {
22664 +                       printk("qla2x00_set_lun_data_from_config: Enable "
22665 +                           "mask has wrong size %d != %d\n",
22666 +                           rval, (int)sizeof(lun_bit_mask_t));
22667 +               } else {
22668 +                       for (lun = MAX_LUNS-1, l =0; lun >= 0; lun--, l++) {
22669 +                               /* our bit mask is inverted */
22670 +                               if (!EXT_IS_LUN_BIT_SET(mask_ptr,lun))
22671 +                                       path->lun_data.data[l] |=
22672 +                                           LUN_DATA_ENABLED;
22673 +                               else
22674 +                                       path->lun_data.data[l] &=
22675 +                                           ~LUN_DATA_ENABLED;
22676 +                       }
22677 +               }
22678 +       }
22679 +
22680 +       DEBUG3(printk("qla2x00_set_lun_data_from_config: Luns data for "
22681 +           "device %p, instance %d, path id=%d\n",
22682 +           dp,host->instance,path->id);)
22683 +       DEBUG3(qla2x00_dump_buffer((char *)&path->lun_data.data[0], 64);)
22684 +
22685 +       qla2x00_free_ioctl_scrap_mem(ha);
22686 +       LEAVE("qla2x00_set_lun_data_from_config");
22687 +}
22688 +
22689 +
22690 +
22691 +/*
22692 + * qla2x00_cfg_build_path_tree
22693 + *     Find all path properties and build a path tree. The
22694 + *  resulting tree has no actual port assigned to it
22695 + *  until the port discovery is done by the lower level.
22696 + *
22697 + * Input:
22698 + *     ha = adapter block pointer.
22699 + *
22700 + * Context:
22701 + *     Kernel context.
22702 + */
22703 +void
22704 +qla2x00_cfg_build_path_tree(scsi_qla_host_t *ha)
22705 +{
22706 +       char            *propbuf;
22707 +       uint8_t         node_name[WWN_SIZE];
22708 +       uint8_t         port_name[WWN_SIZE];
22709 +       fc_port_t       *port;
22710 +       uint16_t        dev_no = 0, tgt_no;
22711 +       int             instance, rval;
22712 +       mp_host_t       *host = NULL;
22713 +       uint8_t         *name;
22714 +       int             done;
22715 +       uint8_t         control_byte;
22716 +
22717 +
22718 +       ENTER("qla2x00_cfg_build_path_tree");
22719 +
22720 +       printk(KERN_INFO
22721 +           "qla02%d: ConfigRequired is set. \n", (int)ha->instance);
22722 +       DEBUG(printk("qla2x00_cfg_build_path_tree: hba =%d",
22723 +           (int)ha->instance);)
22724 +
22725 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&propbuf,
22726 +           MAX_SEARCH_STR_SIZE)) {
22727 +               /* not enough memory */
22728 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
22729 +                   "propbuf requested=%d.\n",
22730 +                   __func__, ha->host_no, ha->instance,
22731 +                   MAX_SEARCH_STR_SIZE);)
22732 +               return;
22733 +       }
22734 +
22735 +       /* Look for adapter nodename in properties */
22736 +       sprintf(propbuf, "scsi-qla%ld-adapter-port", ha->instance);
22737 +       DEBUG(printk("build_tree: %s\n",propbuf);)
22738 +
22739 +       rval = qla2x00_get_prop_xstr(ha, propbuf, port_name, WWN_SIZE);
22740 +       if (rval != WWN_SIZE) {
22741 +               qla2x00_free_ioctl_scrap_mem(ha);
22742 +               return;
22743 +       }
22744 +
22745 +       /* Does nodename match the host adapter nodename? */
22746 +       name =  &ha->init_cb->port_name[0];
22747 +       if (!qla2x00_is_nodename_equal(name, port_name)) {
22748 +               printk(KERN_INFO
22749 +                   "scsi(%d): Adapter nodenames don't match - ha = %p.\n",
22750 +                   (int)ha->instance,ha);
22751 +               DEBUG(printk("qla(%d): Adapter nodenames don't match - "
22752 +                   "ha = %p.\n",
22753 +                   (int)ha->instance,ha);)
22754 +               qla2x00_free_ioctl_scrap_mem(ha);
22755 +               return;
22756 +       }
22757 +
22758 +       instance = ha->instance;
22759 +       if ((host = qla2x00_alloc_host(ha)) == NULL) {
22760 +               printk(KERN_INFO
22761 +                   "scsi(%d): Couldn't allocate host - ha = %p.\n",
22762 +                   (int)instance,ha);
22763 +       } else {
22764 +               /* create a dummy port */
22765 +               port = (fc_port_t *)KMEM_ZALLOC(sizeof (fc_port_t),9);
22766 +               if (port == NULL) {
22767 +                       printk(KERN_INFO
22768 +                           "scsi(%d): Couldn't allocate port.\n",
22769 +                           (int)instance);
22770 +                       DEBUG(printk("qla(%d): Couldn't allocate port.\n",
22771 +                           (int)host->instance);)
22772 +                       /* remove host */
22773 +                       qla2x00_free_ioctl_scrap_mem(ha);
22774 +                       return;
22775 +               }
22776 +
22777 +               done = 0;
22778 +
22779 +               /* For each target on the host bus adapter */
22780 +               for (tgt_no = 0; tgt_no < MAX_MP_DEVICES &&
22781 +                   !done; tgt_no++) {
22782 +
22783 +                       /* get all paths for this target */
22784 +                       for (dev_no = 0; dev_no < MAX_PATHS_PER_DEVICE &&
22785 +                           !done ; dev_no++) {
22786 +
22787 +                               /*
22788 +                                * O(N*M) scan, should ideally check if there
22789 +                                * are any tgt entries present, if not, then
22790 +                                * continue.
22791 +                                *
22792 +                                *   sprintf(propbuf,
22793 +                                *              "scsi-qla%d-tgt-%d-",
22794 +                                *              instance, tgt_no);
22795 +                                *   if (strstr(ha->cmdline, propbuf) == NULL)
22796 +                                *      continue;
22797 +                                *
22798 +                                */
22799 +                               memset(port, 0, sizeof (fc_port_t));
22800 +
22801 +                               /*
22802 +                                * Get "target-N-device-N-node" is a 16-chars
22803 +                                * number
22804 +                                */
22805 +                               sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-node",
22806 +                                   instance, tgt_no, dev_no);
22807 +                               DEBUG(printk("build_tree: %s\n",propbuf);)
22808 +
22809 +                               rval = qla2x00_get_prop_xstr(ha, propbuf,
22810 +                                   node_name, WWN_SIZE);
22811 +                               if (rval != WWN_SIZE)
22812 +                                       continue;
22813 +
22814 +                               memcpy(port->node_name, node_name, WWN_SIZE);
22815 +
22816 +                               /*
22817 +                                * Get "target-N-device-N-port" is a 16-chars
22818 +                                * number
22819 +                                */
22820 +                               sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-port",
22821 +                                   instance,  tgt_no, dev_no);
22822 +                               DEBUG(printk("build_tree: %s\n",propbuf);)
22823 +
22824 +                               rval = qla2x00_get_prop_xstr(ha, propbuf,
22825 +                                   port_name, WWN_SIZE);
22826 +                               if (rval != WWN_SIZE)
22827 +                                       continue;
22828 +
22829 +                               memcpy(port->node_name, node_name, WWN_SIZE);
22830 +                               memcpy(port->port_name, port_name, WWN_SIZE);
22831 +                               port->flags |= FC_CONFIG;
22832 +
22833 +                               /*
22834 +                                * Get "target-N-device-N-control" if property 
22835 +                                * is present then all luns are visible.
22836 +                                */
22837 +                               sprintf(propbuf,
22838 +                                   "scsi-qla%d-tgt-%d-di-%d-control",
22839 +                                   instance, tgt_no, dev_no);
22840 +                               DEBUG3(printk("build_tree: %s\n",propbuf);)
22841 +
22842 +                               rval = qla2x00_get_prop_xstr(ha, propbuf,
22843 +                                   (uint8_t *)(&control_byte),
22844 +                                   sizeof(control_byte));
22845 +                               if (rval == -1) {
22846 +                                       /* error getting string. go to next. */
22847 +                                       continue;
22848 +                               }
22849 +
22850 +                               DEBUG(printk("build_tree: control byte 0x%x\n",
22851 +                                   control_byte);)
22852 +
22853 +                               port->mp_byte = control_byte;
22854 +                               DEBUG(printk("build_tree: update_mp_device "
22855 +                                   "host=%p, port=%p, tgt_no=%d\n",
22856 +                                   host, port, tgt_no);)
22857 +
22858 +                               qla2x00_update_mp_device(host, port, tgt_no);
22859 +                               qla2x00_set_lun_data_from_config(host,
22860 +                                   port, tgt_no, dev_no);
22861 +                       }
22862 +               }
22863 +               KMEM_FREE(port, sizeof (fc_port_t));
22864 +       }
22865 +
22866 +       qla2x00_free_ioctl_scrap_mem(ha);
22867 +
22868 +       LEAVE("qla2x00_cfg_build_path_tree");
22869 +       DEBUG(printk("Leaving: qla2x00_cfg_build_path_tree\n");)
22870 +}
22871 +
22872 +/*
22873 + * qla2x00_cfg_display_devices
22874 + *      This routine will the node names of the different devices found
22875 + *      after port inquiry.
22876 + *
22877 + * Input:
22878 + *
22879 + * Returns:
22880 + *      None.
22881 + */
22882 +void qla2x00_cfg_display_devices(void)
22883 +{
22884 +       mp_host_t     *host;
22885 +       int     id;
22886 +       mp_device_t     *dp;
22887 +       mp_path_t  *path;
22888 +       mp_path_list_t  *path_list;
22889 +       int cnt, i, dev_no;
22890 +       int instance;
22891 +       lun_bit_mask_t  lun_mask;
22892 +       int     mask_set;
22893 +       uint8_t l;
22894 +
22895 +       printk("qla2x00_cfg_display_devices\n");
22896 +       for (host = mp_hosts_base; (host); host = host->next) {
22897 +
22898 +               instance = (int) host->instance;
22899 +               /* Display the node name for adapter */
22900 +               printk(KERN_INFO
22901 +                       "scsi-qla%d-adapter-port="
22902 +                       "%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
22903 +                       instance,
22904 +                       host->portname[0],
22905 +                       host->portname[1],
22906 +                       host->portname[2],
22907 +                       host->portname[3],
22908 +                       host->portname[4],
22909 +                       host->portname[5],
22910 +                       host->portname[6],
22911 +                       host->portname[7]);
22912 +
22913 +               for (id = 0; id < MAX_MP_DEVICES; id++) {
22914 +                       if( (dp = host->mp_devs[id] ) == NULL )
22915 +                               continue;
22916 +
22917 +                       path_list = dp->path_list;
22918 +
22919 +
22920 +                       if( (path = path_list->last) != NULL ) {
22921 +                               /* Print out device port names */
22922 +                               path = path->next; /* first path */
22923 +                               for (dev_no = 0,  cnt = 0;
22924 +                                       cnt < path_list->path_cnt;
22925 +                                       path = path->next, cnt++) {
22926 +
22927 +                                       /* skip others if not our host */
22928 +                                       if (host != path->host)
22929 +                                               continue;
22930 +                                       printk(KERN_INFO
22931 +                                               "scsi-qla%d-tgt-%d-di-%d-node="
22932 +                                               "%02x%02x%02x%02x"
22933 +                                               "%02x%02x%02x%02x\\;\n",
22934 +                                               instance, id, path->id,
22935 +                                               dp->nodename[0],
22936 +                                               dp->nodename[1],
22937 +                                               dp->nodename[2],
22938 +                                               dp->nodename[3],
22939 +                                               dp->nodename[4],
22940 +                                               dp->nodename[5],
22941 +                                               dp->nodename[6],
22942 +                                               dp->nodename[7]);
22943 +
22944 +                                       /* port_name */
22945 +                                       printk(KERN_INFO
22946 +                                               "scsi-qla%d-tgt-%d-di-%d-port="
22947 +                                               "%02x%02x%02x%02x"
22948 +                                               "%02x%02x%02x%02x\\;\n",
22949 +                                               instance, id, path->id,
22950 +                                               path->portname[0],
22951 +                                               path->portname[1],
22952 +                                               path->portname[2],
22953 +                                               path->portname[3],
22954 +                                               path->portname[4],
22955 +                                               path->portname[5],
22956 +                                               path->portname[6],
22957 +                                               path->portname[7]);
22958 +
22959 +                                       /* control byte */
22960 +                                       printk(KERN_INFO
22961 +                                               "scsi-qla%d-tgt-%d-di-%d-"
22962 +                                               "control=%02x\\;\n",
22963 +                                               instance, id, path->id,
22964 +                                               path->mp_byte);
22965 +
22966 +                                       /*
22967 +                                        * Build preferred bit mask for this
22968 +                                        * path */
22969 +                                       memset(&lun_mask, 0, sizeof(lun_mask));
22970 +                                       mask_set = 0;
22971 +                                       for (i = 0; i < MAX_LUNS; i++) {
22972 +                                               l = (uint8_t)(i & 0xFF);
22973 +                                               if (path_list->current_path[l] == path->id ) {
22974 +                                                       EXT_SET_LUN_BIT((&lun_mask),l);
22975 +                                                       mask_set++;
22976 +                                               }
22977 +                                       }
22978 +                                       if (mask_set) {
22979 +                                               printk(KERN_INFO
22980 +                                                       "scsi-qla%d-tgt-%d-di-%d-preferred=%08x%08x%08x%08x%08x%08x%08x%08x\\;\n",
22981 +                                                       instance,  id, path->id,
22982 +                                                       *((uint32_t *) &lun_mask.mask[28]),
22983 +                                                       *((uint32_t *) &lun_mask.mask[24]),
22984 +                                                       *((uint32_t *) &lun_mask.mask[20]),
22985 +                                                       *((uint32_t *) &lun_mask.mask[16]),
22986 +                                                       *((uint32_t *) &lun_mask.mask[12]),
22987 +                                                       *((uint32_t *) &lun_mask.mask[8]),
22988 +                                                       *((uint32_t *) &lun_mask.mask[4]),
22989 +                                                       *((uint32_t *) &lun_mask.mask[0]) );
22990 +                                       }
22991 +                                       /*
22992 +                                        * Build disable bit mask for this path
22993 +                                        */
22994 +                                       mask_set = 0;
22995 +                                       for (i = 0; i < MAX_LUNS; i++) {
22996 +                                               l = (uint8_t)(i & 0xFF);
22997 +                                               if (!(path->lun_data.data[l] &
22998 +                                                       LUN_DATA_ENABLED) ) {
22999 +
23000 +                                                       mask_set++;
23001 +                                               }
23002 +                                       }
23003 +                                       if (mask_set) {
23004 +                                               printk(KERN_INFO
23005 +                                                       "scsi-qla%d-tgt-%d-di-%d-lun-disable=%08x%08x%08x%08x%08x%08x%08x%08x\\;\n",
23006 +                                                       instance,  id, path->id,
23007 +                                                       *((uint32_t *) &lun_mask.mask[28]),
23008 +                                                       *((uint32_t *) &lun_mask.mask[24]),
23009 +                                                       *((uint32_t *) &lun_mask.mask[20]),
23010 +                                                       *((uint32_t *) &lun_mask.mask[16]),
23011 +                                                       *((uint32_t *) &lun_mask.mask[12]),
23012 +                                                       *((uint32_t *) &lun_mask.mask[8]),
23013 +                                                       *((uint32_t *) &lun_mask.mask[4]),
23014 +                                                       *((uint32_t *) &lun_mask.mask[0]) );
23015 +                                       }
23016 +                                       dev_no++;
23017 +                               }
23018 +
23019 +                       }
23020 +               }
23021 +       }
23022 +}
23023 +
23024 +#if 0
23025 +int qla2x00_cfg_build_range( mp_path_t *path, uint8_t *buf, int siz, uint8_t mask )
23026 +{
23027 +        int    i;
23028 +        int    max, min;
23029 +        int    colonflg = FALSE;
23030 +        int    len = 0;
23031 +
23032 +        max = -1;
23033 +        min = 0;
23034 +        for (i = 0; i < MAX_LUNS; i++) {
23035 +                if( (path->lun_data.data[i] & mask) ) {
23036 +                        max = i;
23037 +                } else {
23038 +                        if( colonflg && max >= min ) {
23039 +                                len += sprintf(&buf[len],":");
23040 +                                if( len > siz)
23041 +                                        return len;
23042 +                                colonflg = FALSE;
23043 +                        }
23044 +                        if (max > min ) {
23045 +                                len += sprintf(&buf[len],"%02x-%02x",min,max);
23046 +                                if( len > siz)
23047 +                                        return len;
23048 +                                colonflg = TRUE;
23049 +                        } else if ( max == min ) {
23050 +                                len += sprintf(&buf[len],"%02x",max);
23051 +                                if( len > siz)
23052 +                                        return len;
23053 +                                colonflg = TRUE;
23054 +                        }
23055 +                        min = i + 1;
23056 +                        max = i;
23057 +                }
23058 +        }
23059 +        DEBUG4(printk("build_range: return len =%d\n",len);)
23060 +        return(len);
23061 +}
23062 +#endif
23063 +
23064 +#if 0
23065 +/*
23066 + * qla2x00_cfg_proc_display_devices
23067 + *      This routine will the node names of the different devices found
23068 + *      after port inquiry.
23069 + *
23070 + * Input:
23071 + *
23072 + * Returns:
23073 + *      None.
23074 + */
23075 +int qla2x00_cfg_proc_display_devices(scsi_qla_host_t *ha)
23076 +{
23077 +        mp_host_t     *host;
23078 +        int     id;
23079 +        mp_device_t    *dp;
23080 +        mp_path_t  *path;
23081 +        mp_path_list_t *path_list;
23082 +        int cnt, i;
23083 +        int instance;
23084 +        lun_bit_mask_t lun_mask;
23085 +        int    mask_set;
23086 +        uint8_t        l;
23087 +        fc_port_t      *port;
23088 +        int len = 0;
23089 +
23090 +        for (host = mp_hosts_base; (host); host = host->next) {
23091 +
23092 +                if( host->ha != ha )
23093 +                        continue;
23094 +
23095 +                instance = (int) host->instance;
23096 +
23097 +                /* Display the node name for adapter */
23098 +                len += sprintf(PROC_BUF,
23099 +                                "scsi-qla%d-adapter-node="
23100 +                               "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
23101 +                                instance,
23102 +                                host->nodename[0],
23103 +                                host->nodename[1],
23104 +                                host->nodename[2],
23105 +                                host->nodename[3],
23106 +                                host->nodename[4],
23107 +                                host->nodename[5],
23108 +                                host->nodename[6],
23109 +                                host->nodename[7]);
23110 +
23111 +
23112 +                for (id = 0; id < MAX_MP_DEVICES; id++) {
23113 +                        if( (dp = host->mp_devs[id] ) == NULL )
23114 +                                continue;
23115 +
23116 +                        path_list = dp->path_list;
23117 +
23118 +                        if( (path = path_list->last) != NULL ) {
23119 +                                /* Print out device port names */
23120 +                                path = path->next; /* first path */
23121 +                                for (cnt = 0; cnt < path_list->path_cnt; path = path->next, cnt++) {
23122 +                                        /* skip others if not our host */
23123 +                                        if (host != path->host)
23124 +                                                continue;
23125 +                                        len += sprintf(PROC_BUF,
23126 +                                                       "scsi-qla%d-target-%d-path-%d-node=%02x%02x%02x%02x%02x%02x%02x%02x;\n",
23127 +                                                       instance,  id, path->id,
23128 +                                                       dp->nodename[0],
23129 +                                                       dp->nodename[1],
23130 +                                                       dp->nodename[2],
23131 +                                                       dp->nodename[3],
23132 +                                                       dp->nodename[4],
23133 +                                                       dp->nodename[5],
23134 +                                                       dp->nodename[6],
23135 +                                                       dp->nodename[7]);
23136 +
23137 +                                        /* port_name */
23138 +                                        len += sprintf(PROC_BUF,
23139 +                                                       "scsi-qla%d-target-%d-path-%d-port=%02x%02x%02x%02x%02x%02x%02x%02x;\n",
23140 +                                                       instance,  id, path->id,
23141 +                                                       path->portname[0],
23142 +                                                       path->portname[1],
23143 +                                                       path->portname[2],
23144 +                                                       path->portname[3],
23145 +                                                       path->portname[4],
23146 +                                                       path->portname[5],
23147 +                                                       path->portname[6],
23148 +                                                       path->portname[7]);
23149 +
23150 +                                        if( path_list->visible == path->id ) {
23151 +                                                len += sprintf(PROC_BUF, "scsi-qla%d-target-%d-path-%d-visible=%02x;\n",
23152 +                                                               instance,  id, path->id, path->id);
23153 +                                        }
23154 +
23155 +                                        len +=sprintf(PROC_BUF, "scsi-qla%d-target-%d-path-%d-control=%02x;\n",
23156 +                                                      instance,  id, path->id, path->mp_byte);
23157 +
23158 +                                        /* Build preferred bit mask for this path */
23159 +                                        memset(&lun_mask, 0, sizeof(lun_mask));
23160 +                                        mask_set = 0;
23161 +                                        for (i = 0; i < MAX_LUNS_PER_DEVICE; i++) {
23162 +                                                l = (uint8_t)(i & 0xFF);
23163 +                                                if( path_list->current_path[l] == path->id ) {
23164 +                                                        EXT_SET_LUN_BIT((&lun_mask),l);
23165 +                                                        mask_set++;
23166 +                                                }
23167 +                                        }
23168 +                                        if( mask_set && EXT_DEF_MAX_LUNS <= 256 ) {
23169 +                                                len += sprintf(PROC_BUF,
23170 +                                                               "scsi-qla%d-target-%d-path-%d-preferred=%08x%08x%08x%08x%08x%08x%08x%08x;\n",
23171 +                                                               instance,  id, path->id,
23172 +                                                               *((uint32_t *) &lun_mask.mask[0]),
23173 +                                                               *((uint32_t *) &lun_mask.mask[4]),
23174 +                                                               *((uint32_t *) &lun_mask.mask[8]),
23175 +                                                               *((uint32_t *) &lun_mask.mask[12]),
23176 +                                                               *((uint32_t *) &lun_mask.mask[16]),
23177 +                                                               *((uint32_t *) &lun_mask.mask[20]),
23178 +                                                               *((uint32_t *) &lun_mask.mask[24]),
23179 +                                                               *((uint32_t *) &lun_mask.mask[28]) );
23180 +                                        }
23181 +
23182 +                                        len += sprintf(PROC_BUF,
23183 +                                                       "scsi-qla%d-target-%d-path-%d-lun-enable=%08x%08x%08x%08x%08x%08x%08x%08x;\n",
23184 +                                                       instance,  id, path->id,
23185 +                                                       *((uint32_t *) &path->lun_data.data[0]),
23186 +                                                       *((uint32_t *) &path->lun_data.data[4]),
23187 +                                                       *((uint32_t *) &path->lun_data.data[8]),
23188 +                                                       *((uint32_t *) &path->lun_data.data[12]),
23189 +                                                       *((uint32_t *) &path->lun_data.data[16]),
23190 +                                                       *((uint32_t *) &path->lun_data.data[20]),
23191 +                                                       *((uint32_t *) &path->lun_data.data[24]),
23192 +                                                       *((uint32_t *) &path->lun_data.data[28]) );
23193 +
23194 +                                } /* for */
23195 +                        }
23196 +                }
23197 +        }
23198 +        return( len );
23199 +}
23200 +#endif
23201 --- /dev/null   Thu Apr 11 07:25:15 2002
23202 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_dbg.c   Thu Jul  3 15:34:42 2003
23203 @@ -0,0 +1,1000 @@
23204 +/*
23205 + *                  QLOGIC LINUX SOFTWARE
23206 + *
23207 + * QLogic ISP2x00 device driver for Linux 2.5.x
23208 + * Copyright (C) 2003 Qlogic Corporation
23209 + * (www.qlogic.com)
23210 + *
23211 + * This program is free software; you can redistribute it and/or modify it
23212 + * under the terms of the GNU General Public License as published by the
23213 + * Free Software Foundation; either version 2, or (at your option) any
23214 + * later version.
23215 + *
23216 + * This program is distributed in the hope that it will be useful, but
23217 + * WITHOUT ANY WARRANTY; without even the implied warranty of
23218 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23219 + * General Public License for more details.
23220 + *
23221 + */
23222 +#include "qla_os.h"
23223 +
23224 +#include "qla_def.h"
23225 +
23226 +
23227 +#if defined(ISP2300)
23228 +/**
23229 + * qla2x00_fw_dump() - Dumps binary data from the 2300 firmware.
23230 + * @ha: SCSI driver HA context
23231 + * @hardware_locked: Called with the hardware_lock
23232 + */
23233 +void
23234 +qla2x00_dump_isp(scsi_qla_host_t *ha, int hardware_locked)
23235 +{
23236 +       int             rval;
23237 +       uint32_t        i;
23238 +       uint32_t        cnt, timer;
23239 +       uint32_t        risc_address;
23240 +       uint16_t        risc_code_size;
23241 +       uint16_t        mb0, mb2;
23242 +
23243 +       uint16_t        data, stat;
23244 +       device_reg_t    *reg;
23245 +       uint16_t        *dmp_reg;
23246 +       unsigned long   flags;
23247 +
23248 +
23249 +       reg = ha->iobase;
23250 +       flags = 0;
23251 +
23252 +       if (!hardware_locked)
23253 +               spin_lock_irqsave(&ha->hardware_lock, flags);
23254 +
23255 +       printk("\n\n[==>BEG]\n");
23256 +
23257 +       printk("HCCR Register:\n");
23258 +       printk("%04x\n\n", RD_REG_WORD(&reg->hccr));
23259 +
23260 +       WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC); 
23261 +       SYS_DELAY(100);
23262 +
23263 +       printk("PBIU Registers:\n");
23264 +       dmp_reg = (uint16_t *)(reg + 0);
23265 +       for (i = 0; i < 8; i++) 
23266 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23267 +
23268 +       printk("\n\n");
23269 +
23270 +       printk("ReqQ-RspQ-Risc2Host Status registers:\n");
23271 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x10);
23272 +       for (i = 0; i < 8; i++) 
23273 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23274 +
23275 +       printk("\n\n");
23276 +
23277 +       printk("Mailbox Registers:");
23278 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x40);
23279 +       for (i = 0; i < 32; i++) {
23280 +               if ((i % 8) == 0)
23281 +                       printk("\n");
23282 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23283 +       }
23284 +
23285 +       printk("\n\n");
23286 +
23287 +       WRT_REG_WORD(&reg->ctrl_status, 0x40);
23288 +       printk("Auto Request Response DMA Registers:");
23289 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23290 +       for (i = 0; i < 32; i++) {
23291 +               if ((i % 8) == 0)
23292 +                       printk("\n");
23293 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23294 +       }
23295 +
23296 +       printk("\n\n");
23297 +
23298 +       WRT_REG_WORD(&reg->ctrl_status, 0x50); 
23299 +       printk("DMA Registers:");
23300 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23301 +       for (i = 0; i < 48; i++) {
23302 +               if ((i % 8) == 0)
23303 +                       printk("\n");
23304 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23305 +       }
23306 +
23307 +       printk("\n\n");
23308 +
23309 +       WRT_REG_WORD(&reg->ctrl_status, 0x00); 
23310 +       printk("RISC Hardware Registers:");
23311 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0xA0);
23312 +       for (i = 0; i < 16; i++) {
23313 +               if ((i % 8) == 0)
23314 +                       printk("\n");
23315 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23316 +       }
23317 +
23318 +       printk("\n\n");
23319 +
23320 +       WRT_REG_WORD(&reg->pcr, 0x2000); 
23321 +       printk("RISC GP0 Registers:");
23322 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23323 +       for (i = 0; i < 16; i++) {
23324 +               if ((i % 8) == 0)
23325 +                       printk("\n");
23326 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23327 +       }
23328 +
23329 +       printk("\n\n");
23330 +
23331 +       WRT_REG_WORD(&reg->pcr, 0x2200); 
23332 +       printk("RISC GP1 Registers:");
23333 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23334 +       for (i = 0; i < 16; i++) {
23335 +               if ((i % 8) == 0)
23336 +                       printk("\n");
23337 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23338 +       }
23339 +
23340 +       printk("\n\n");
23341 +
23342 +       WRT_REG_WORD(&reg->pcr, 0x2400); 
23343 +       printk("RISC GP2 Registers:");
23344 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23345 +       for (i = 0; i < 16; i++) {
23346 +               if ((i % 8) == 0)
23347 +                       printk("\n");
23348 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23349 +       }
23350 +
23351 +       printk("\n\n");
23352 +
23353 +       WRT_REG_WORD(&reg->pcr, 0x2600); 
23354 +       printk("RISC GP3 Registers:");
23355 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23356 +       for (i = 0; i < 16; i++) {
23357 +               if ((i % 8) == 0)
23358 +                       printk("\n");
23359 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23360 +       }
23361 +
23362 +       printk("\n\n");
23363 +
23364 +       WRT_REG_WORD(&reg->pcr, 0x2800); 
23365 +       printk("RISC GP4 Registers:");
23366 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23367 +       for (i = 0; i < 16; i++) {
23368 +               if ((i % 8) == 0)
23369 +                       printk("\n");
23370 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23371 +       }
23372 +
23373 +       printk("\n\n");
23374 +
23375 +       WRT_REG_WORD(&reg->pcr, 0x2A00); 
23376 +       printk("RISC GP5 Registers:");
23377 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23378 +       for (i = 0; i < 16; i++) {
23379 +               if ((i % 8) == 0)
23380 +                       printk("\n");
23381 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23382 +       }
23383 +
23384 +       printk("\n\n");
23385 +
23386 +       WRT_REG_WORD(&reg->pcr, 0x2C00); 
23387 +       printk("RISC GP6 Registers:");
23388 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23389 +       for (i = 0; i < 16; i++) {
23390 +               if ((i % 8) == 0)
23391 +                       printk("\n");
23392 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23393 +       }
23394 +
23395 +       printk("\n\n");
23396 +
23397 +       WRT_REG_WORD(&reg->pcr, 0x2E00); 
23398 +       printk("RISC GP7 Registers:");
23399 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23400 +       for (i = 0; i < 16; i++) {
23401 +               if ((i % 8) == 0)
23402 +                       printk("\n");
23403 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23404 +       }
23405 +
23406 +       printk("\n\n");
23407 +
23408 +       WRT_REG_WORD(&reg->ctrl_status, 0x10); 
23409 +       printk("Frame Buffer Hardware Registers:");
23410 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23411 +       for (i = 0; i < 64; i++) {
23412 +               if ((i % 8) == 0)
23413 +                       printk("\n");
23414 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23415 +       }
23416 +
23417 +       printk("\n\n");
23418 +
23419 +       WRT_REG_WORD(&reg->ctrl_status, 0x20); 
23420 +       printk("FPM B0 Registers:");
23421 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23422 +       for (i = 0; i < 64; i++) {
23423 +               if ((i % 8) == 0)
23424 +                       printk("\n");
23425 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23426 +       }
23427 +
23428 +       printk("\n\n");
23429 +
23430 +       WRT_REG_WORD(&reg->ctrl_status, 0x30); 
23431 +       printk("FPM B1 Registers:");
23432 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23433 +       for (i = 0; i < 64; i++) {
23434 +               if ((i % 8) == 0)
23435 +                       printk("\n");
23436 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23437 +       }
23438 +
23439 +       printk("\n\n");
23440 +
23441 +       WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
23442 +
23443 +       data = RD_REG_WORD(&reg->ctrl_status);
23444 +       for (i = 6000000; i && data & CSR_ISP_SOFT_RESET; i--) {
23445 +               SYS_DELAY(5);
23446 +               data = RD_REG_WORD(&reg->ctrl_status);
23447 +       }
23448 +       if (ha->pdev->device == QLA2312_DEVICE_ID ||
23449 +           ha->pdev->device == QLA2322_DEVICE_ID) {
23450 +               SYS_DELAY(10);
23451 +       } else {
23452 +               data = RD_REG_WORD(&reg->mailbox0);
23453 +               for (i = 6000000; i && data == MBS_BUSY; i--) {
23454 +                       SYS_DELAY(5);
23455 +                       data = RD_REG_WORD(&reg->mailbox0);
23456 +               }
23457 +       }
23458 +
23459 +       rval = QLA2X00_SUCCESS;
23460 +       mb0 = mb2 = 0;
23461 +       printk("Code RAM Dump:");
23462 +       risc_address      = 0x800;
23463 +       risc_code_size    = 0xffff - 0x800 + 1;
23464 +       WRT_REG_WORD(&reg->mailbox0, MBC_READ_RAM_WORD);
23465 +       clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23466 +       for (cnt = 0; cnt < risc_code_size && rval == QLA2X00_SUCCESS; cnt++) {
23467 +               if ((cnt % 8) == 0)
23468 +                       printk("\n%04x: ", cnt + 0x0800);
23469 +               WRT_REG_WORD(&reg->mailbox1, (uint16_t)risc_address++);
23470 +               WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
23471 +
23472 +               for (timer = 6000000; timer != 0; timer--) {
23473 +                       /* Check for pending interrupts. */
23474 +                       if ((stat = RD_REG_WORD(&reg->host_status_lo)) & HSR_INT) {
23475 +                               stat &= 0xff;
23476 +
23477 +                               if (stat == 0x1 || stat == 0x2) {
23478 +                                       set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23479 +
23480 +                                       mb0 = RD_REG_WORD(&reg->mailbox0);
23481 +                                       mb2 = RD_REG_WORD(&reg->mailbox2);
23482 +
23483 +                                       /* Release mailbox registers. */
23484 +                                       WRT_REG_WORD(&reg->semaphore, 0);
23485 +                                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23486 +                                       break;
23487 +                               } else if (stat == 0x10 || stat == 0x11) {
23488 +                                       set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23489 +
23490 +                                       mb0 = RD_REG_WORD(&reg->mailbox0);
23491 +                                       mb2 = RD_REG_WORD(&reg->mailbox2);
23492 +
23493 +                                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23494 +                                       break;
23495 +                               }
23496 +
23497 +                               /* clear this intr; it wasn't a mailbox intr */
23498 +                               WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23499 +                       }
23500 +
23501 +                       mdelay(5);
23502 +               }
23503 +
23504 +               if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
23505 +                       rval = mb0 & MBS_MASK;
23506 +                       printk("%04x ", mb2);
23507 +               } else {
23508 +                       rval = QLA2X00_FUNCTION_FAILED;
23509 +               }
23510 +       }
23511 +
23512 +       printk("\n\n");
23513 +
23514 +       mb0 = mb2 = 0;
23515 +       printk("Stack RAM Dump:");
23516 +       risc_address      = 0x10000;
23517 +       risc_code_size    = 0x107ff - 0x10000 + 1;
23518 +       WRT_REG_WORD(&reg->mailbox0, 0xf /* MBC_READ_RAM_EXTENDED */);
23519 +       clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23520 +
23521 +       for (cnt = 0; cnt < risc_code_size && rval == QLA2X00_SUCCESS; cnt++) {
23522 +               if ((cnt % 8) == 0)
23523 +                       printk("\n%05x: ", cnt + 0x10000);
23524 +               WRT_REG_WORD(&reg->mailbox1, LSW(risc_address));
23525 +               WRT_REG_WORD(&reg->mailbox8, MSW(risc_address++));
23526 +               WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
23527 +
23528 +               for (timer = 6000000; timer != 0; timer--) {
23529 +                       /* Check for pending interrupts. */
23530 +                       if ((stat = RD_REG_WORD(&reg->host_status_lo)) & HSR_INT) {
23531 +                               stat &= 0xff;
23532 +
23533 +                               if (stat == 0x1 || stat == 0x2) {
23534 +                                       set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23535 +
23536 +                                       mb0 = RD_REG_WORD(&reg->mailbox0);
23537 +                                       mb2 = RD_REG_WORD(&reg->mailbox2);
23538 +
23539 +                                       /* Release mailbox registers. */
23540 +                                       WRT_REG_WORD(&reg->semaphore, 0);
23541 +                                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23542 +                                       break;
23543 +                               } else if (stat == 0x10 || stat == 0x11) {
23544 +                                       set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23545 +
23546 +                                       mb0 = RD_REG_WORD(&reg->mailbox0);
23547 +                                       mb2 = RD_REG_WORD(&reg->mailbox2);
23548 +
23549 +                                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23550 +                                       break;
23551 +                               }
23552 +
23553 +                               /* clear this intr; it wasn't a mailbox intr */
23554 +                               WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23555 +                       }
23556 +
23557 +                       mdelay(5);
23558 +               }
23559 +
23560 +               if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
23561 +                       rval = mb0 & MBS_MASK;
23562 +                       printk("%04x ", mb2);
23563 +               } else {
23564 +                       rval = QLA2X00_FUNCTION_FAILED;
23565 +               }
23566 +       }
23567 +
23568 +       printk("\n\n");
23569 +
23570 +       mb0 = mb2 = 0;
23571 +       printk("Data RAM Dump:");
23572 +       risc_address      = 0x10800;
23573 +       risc_code_size    = 0x1ffff - 0x10800 + 1;
23574 +       WRT_REG_WORD(&reg->mailbox0, 0xf /* MBC_READ_RAM_EXTENDED */);
23575 +       clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23576 +
23577 +       for (cnt = 0; cnt < risc_code_size && rval == QLA2X00_SUCCESS; cnt++) {
23578 +               if ((cnt % 8) == 0)
23579 +                       printk("\n%05x: ", cnt + 0x10800);
23580 +               WRT_REG_WORD(&reg->mailbox1, LSW(risc_address));
23581 +               WRT_REG_WORD(&reg->mailbox8, MSW(risc_address++));
23582 +               WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
23583 +
23584 +               for (timer = 6000000; timer != 0; timer--) {
23585 +                       /* Check for pending interrupts. */
23586 +                       if ((stat = RD_REG_WORD(&reg->host_status_lo)) & HSR_INT) {
23587 +                               stat &= 0xff;
23588 +
23589 +                               if (stat == 0x1 || stat == 0x2) {
23590 +                                       set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23591 +
23592 +                                       mb0 = RD_REG_WORD(&reg->mailbox0);
23593 +                                       mb2 = RD_REG_WORD(&reg->mailbox2);
23594 +
23595 +                                       /* Release mailbox registers. */
23596 +                                       WRT_REG_WORD(&reg->semaphore, 0);
23597 +                                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23598 +                                       break;
23599 +                               } else if (stat == 0x10 || stat == 0x11) {
23600 +                                       set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23601 +
23602 +                                       mb0 = RD_REG_WORD(&reg->mailbox0);
23603 +                                       mb2 = RD_REG_WORD(&reg->mailbox2);
23604 +
23605 +                                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23606 +                                       break;
23607 +                               }
23608 +
23609 +                               /* clear this intr; it wasn't a mailbox intr */
23610 +                               WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23611 +                       }
23612 +
23613 +                       mdelay(5);
23614 +               }
23615 +
23616 +               if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
23617 +                       rval = mb0 & MBS_MASK;
23618 +                       printk("%04x ", mb2);
23619 +               } else {
23620 +                       rval = QLA2X00_FUNCTION_FAILED;
23621 +               }
23622 +       }
23623 +
23624 +       printk("\n[<==END] ISP DEBUG DUMP\n");
23625 +
23626 +       if (!hardware_locked)
23627 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
23628 +}
23629 +
23630 +#elif defined(ISP2200)
23631 +
23632 +/**
23633 + * qla2x00_fw_dump() - Dumps binary data from the 2200 firmware.
23634 + * @ha: SCSI driver HA context
23635 + * @hardware_locked: Called with the hardware_lock
23636 + */
23637 +void
23638 +qla2x00_dump_isp(scsi_qla_host_t *ha, int hardware_locked)
23639 +{
23640 +       int             rval;
23641 +       uint32_t        i;
23642 +       uint32_t        cnt, timer;
23643 +       uint32_t        risc_address;
23644 +       uint16_t        risc_code_size;
23645 +       uint16_t        mb0, mb2;
23646 +
23647 +       uint16_t        data, stat;
23648 +       device_reg_t    *reg;
23649 +       uint16_t        *dmp_reg;
23650 +       unsigned long   flags;
23651 +
23652 +
23653 +       reg = ha->iobase;
23654 +       flags = 0;
23655 +
23656 +       if (!hardware_locked)
23657 +               spin_lock_irqsave(&ha->hardware_lock, flags);
23658 +
23659 +       printk("\n\n[==>BEG]\n");
23660 +
23661 +       printk("HCCR Register:\n");
23662 +       printk("%04x\n\n", RD_REG_WORD(&reg->hccr));
23663 +
23664 +       /* Pause RISC. */
23665 +       WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC); 
23666 +       for (cnt = 30000; cnt; cnt--) {
23667 +               if ((RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) != 0)
23668 +                       break;
23669 +               SYS_DELAY(10);
23670 +       }
23671 +       if (!cnt)
23672 +               goto done;
23673 +
23674 +       printk("PBIU Registers:\n");
23675 +       dmp_reg = (uint16_t *)(reg + 0);
23676 +       for (i = 0; i < 8; i++) 
23677 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23678 +
23679 +       printk("\n\n");
23680 +
23681 +       printk("Mailbox Registers:");
23682 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x10);
23683 +       for (i = 0; i < 32; i++) {
23684 +               if (i == 8)
23685 +                       dmp_reg = (uint16_t *)((uint8_t *)reg + 0xe0);
23686 +
23687 +               if ((i % 8) == 0)
23688 +                       printk("\n");
23689 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23690 +       }
23691 +
23692 +       printk("\n\n");
23693 +
23694 +       printk("DMA Registers:");
23695 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x20);
23696 +       for (i = 0; i < 48; i++) {
23697 +               if ((i % 8) == 0)
23698 +                       printk("\n");
23699 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23700 +       }
23701 +
23702 +       printk("\n\n");
23703 +
23704 +       WRT_REG_WORD(&reg->ctrl_status, 0x00); 
23705 +       printk("RISC Hardware Registers:");
23706 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0xA0);
23707 +       for (i = 0; i < 16; i++) {
23708 +               if ((i % 8) == 0)
23709 +                       printk("\n");
23710 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23711 +       }
23712 +
23713 +       printk("\n\n");
23714 +
23715 +       WRT_REG_WORD(&reg->pcr, 0x2000); 
23716 +       printk("RISC GP0 Registers:");
23717 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23718 +       for (i = 0; i < 16; i++) {
23719 +               if ((i % 8) == 0)
23720 +                       printk("\n");
23721 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23722 +       }
23723 +
23724 +       printk("\n\n");
23725 +
23726 +       WRT_REG_WORD(&reg->pcr, 0x2100); 
23727 +       printk("RISC GP1 Registers:");
23728 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23729 +       for (i = 0; i < 16; i++) {
23730 +               if ((i % 8) == 0)
23731 +                       printk("\n");
23732 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23733 +       }
23734 +
23735 +       printk("\n\n");
23736 +
23737 +       WRT_REG_WORD(&reg->pcr, 0x2200); 
23738 +       printk("RISC GP2 Registers:");
23739 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23740 +       for (i = 0; i < 16; i++) {
23741 +               if ((i % 8) == 0)
23742 +                       printk("\n");
23743 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23744 +       }
23745 +
23746 +       printk("\n\n");
23747 +
23748 +       WRT_REG_WORD(&reg->pcr, 0x2300); 
23749 +       printk("RISC GP3 Registers:");
23750 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23751 +       for (i = 0; i < 16; i++) {
23752 +               if ((i % 8) == 0)
23753 +                       printk("\n");
23754 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23755 +       }
23756 +
23757 +       printk("\n\n");
23758 +
23759 +       WRT_REG_WORD(&reg->pcr, 0x2400); 
23760 +       printk("RISC GP4 Registers:");
23761 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23762 +       for (i = 0; i < 16; i++) {
23763 +               if ((i % 8) == 0)
23764 +                       printk("\n");
23765 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23766 +       }
23767 +
23768 +       printk("\n\n");
23769 +
23770 +       WRT_REG_WORD(&reg->pcr, 0x2500); 
23771 +       printk("RISC GP5 Registers:");
23772 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23773 +       for (i = 0; i < 16; i++) {
23774 +               if ((i % 8) == 0)
23775 +                       printk("\n");
23776 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23777 +       }
23778 +
23779 +       printk("\n\n");
23780 +
23781 +       WRT_REG_WORD(&reg->pcr, 0x2600); 
23782 +       printk("RISC GP6 Registers:");
23783 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23784 +       for (i = 0; i < 16; i++) {
23785 +               if ((i % 8) == 0)
23786 +                       printk("\n");
23787 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23788 +       }
23789 +
23790 +       printk("\n\n");
23791 +
23792 +       WRT_REG_WORD(&reg->pcr, 0x2700); 
23793 +       printk("RISC GP7 Registers:");
23794 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23795 +       for (i = 0; i < 16; i++) {
23796 +               if ((i % 8) == 0)
23797 +                       printk("\n");
23798 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23799 +       }
23800 +
23801 +       printk("\n\n");
23802 +
23803 +       WRT_REG_WORD(&reg->ctrl_status, 0x10); 
23804 +       printk("Frame Buffer Hardware Registers:");
23805 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23806 +       for (i = 0; i < 16; i++) {
23807 +               if ((i % 8) == 0)
23808 +                       printk("\n");
23809 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23810 +       }
23811 +
23812 +       printk("\n\n");
23813 +
23814 +       WRT_REG_WORD(&reg->ctrl_status, 0x20); 
23815 +       printk("FPM B0 Registers:");
23816 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23817 +       for (i = 0; i < 64; i++) {
23818 +               if ((i % 8) == 0)
23819 +                       printk("\n");
23820 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23821 +       }
23822 +
23823 +       printk("\n\n");
23824 +
23825 +       WRT_REG_WORD(&reg->ctrl_status, 0x30); 
23826 +       printk("FPM B1 Registers:");
23827 +       dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23828 +       for (i = 0; i < 64; i++) {
23829 +               if ((i % 8) == 0)
23830 +                       printk("\n");
23831 +               printk("%04x ", RD_REG_WORD(dmp_reg++));
23832 +       }
23833 +
23834 +       printk("\n\n");
23835 +
23836 +       WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
23837 +
23838 +       data = RD_REG_WORD(&reg->ctrl_status);
23839 +       for (i = 6000000; i && data & CSR_ISP_SOFT_RESET; i--) {
23840 +               SYS_DELAY(5);
23841 +               data = RD_REG_WORD(&reg->ctrl_status);
23842 +       }
23843 +       data = RD_REG_WORD(&reg->mailbox0);
23844 +       for (i = 6000000; i && data == MBS_BUSY; i--) {
23845 +               SYS_DELAY(5);
23846 +               data = RD_REG_WORD(&reg->mailbox0);
23847 +       }
23848 +
23849 +       /* Pause RISC. */
23850 +       WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC); 
23851 +       for (cnt = 30000; cnt; cnt--) {
23852 +               if ((RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) != 0)
23853 +                       break;
23854 +               SYS_DELAY(10);
23855 +       }
23856 +       if (!cnt)
23857 +               goto done;
23858 +
23859 +       rval = QLA2X00_SUCCESS;
23860 +       mb0 = mb2 = 0;
23861 +       printk("RISC SRAM:");
23862 +       risc_address      = 0x1000;
23863 +       risc_code_size    = 0xffff - 0x1000 + 1;
23864 +       WRT_REG_WORD(&reg->mailbox0, MBC_READ_RAM_WORD);
23865 +       clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23866 +       for (cnt = 0; cnt < risc_code_size && rval == QLA2X00_SUCCESS; cnt++) {
23867 +               if ((cnt % 8) == 0)
23868 +                       printk("\n%04x: ", cnt + 0x1000);
23869 +               WRT_REG_WORD(&reg->mailbox1, (uint16_t)risc_address++);
23870 +               WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
23871 +
23872 +               for (timer = 6000000; timer != 0; timer--) {
23873 +                       /* Check for pending interrupts. */
23874 +                       if ((stat = RD_REG_WORD(&reg->host_status_lo)) & HSR_INT) {
23875 +                               stat &= 0xff;
23876 +
23877 +                               if (stat == 0x1 || stat == 0x2) {
23878 +                                       set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23879 +
23880 +                                       mb0 = RD_REG_WORD(&reg->mailbox0);
23881 +                                       mb2 = RD_REG_WORD(&reg->mailbox2);
23882 +
23883 +                                       /* Release mailbox registers. */
23884 +                                       WRT_REG_WORD(&reg->semaphore, 0);
23885 +                                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23886 +                                       break;
23887 +                               } else if (stat == 0x10 || stat == 0x11) {
23888 +                                       set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23889 +
23890 +                                       mb0 = RD_REG_WORD(&reg->mailbox0);
23891 +                                       mb2 = RD_REG_WORD(&reg->mailbox2);
23892 +
23893 +                                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23894 +                                       break;
23895 +                               }
23896 +
23897 +                               /* clear this intr; it wasn't a mailbox intr */
23898 +                               WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
23899 +                       }
23900 +
23901 +                       mdelay(5);
23902 +               }
23903 +
23904 +               if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
23905 +                       rval = mb0 & MBS_MASK;
23906 +                       printk("%04x ", mb2);
23907 +               } else {
23908 +                       rval = QLA2X00_FUNCTION_FAILED;
23909 +               }
23910 +       }
23911 +
23912 +       printk("\n[<==END] ISP DEBUG DUMP\n");
23913 +
23914 +done:
23915 +       if (!hardware_locked)
23916 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
23917 +}
23918 +#else /* if defined(ISP2100) */
23919 +
23920 +/**
23921 + * qla2x00_fw_dump() - Dumps binary data from the 2100 firmware.
23922 + * @ha: SCSI driver HA context
23923 + * @hardware_locked: Called with the hardware_lock
23924 + *
23925 + * NOTE: On the ISP2100, this function will not be implemented.
23926 + */
23927 +void
23928 +qla2x00_dump_isp(scsi_qla_host_t *ha, int hardware_locked)
23929 +{
23930 +       /* NO-OP */
23931 +       printk("\n\n[==>BEG]\n");
23932 +       printk("\n[<==END] ISP DEBUG DUMP\n");
23933 +}
23934 +
23935 +#endif /* if defined(ISP2300) */
23936 +
23937 +//FIXME
23938 +
23939 +/****************************************************************************/
23940 +/*                         Driver Debug Functions.                          */
23941 +/****************************************************************************/
23942 +
23943 +void 
23944 +qla2x00_dump_regs(struct Scsi_Host *host) 
23945 +{
23946 +       /* Assumes non-memory mapped I/O */
23947 +       printk("Mailbox registers:\n");
23948 +       printk("scsi(%d): mbox 0 0x%04x \n",
23949 +           host->host_no, inw(host->io_port + 0x10));
23950 +       printk("scsi(%d): mbox 1 0x%04x \n",
23951 +           host->host_no, inw(host->io_port + 0x12));
23952 +       printk("scsi(%d): mbox 2 0x%04x \n",
23953 +           host->host_no, inw(host->io_port + 0x14));
23954 +       printk("scsi(%d): mbox 3 0x%04x \n",
23955 +           host->host_no, inw(host->io_port + 0x16));
23956 +       printk("scsi(%d): mbox 4 0x%04x \n",
23957 +           host->host_no, inw(host->io_port + 0x18));
23958 +       printk("scsi(%d): mbox 5 0x%04x \n",
23959 +           host->host_no, inw(host->io_port + 0x1a));
23960 +}
23961 +
23962 +
23963 +void
23964 +qla2x00_dump_buffer(uint8_t * b, uint32_t size) 
23965 +{
23966 +       uint32_t cnt;
23967 +       uint8_t c;
23968 +
23969 +       printk(" 0   1   2   3   4   5   6   7   8   9   "
23970 +           "Ah  Bh  Ch  Dh  Eh  Fh\n");
23971 +       printk("-----------------------------------------"
23972 +           "----------------------\n");
23973 +
23974 +       for (cnt = 0; cnt < size;) {
23975 +               c = *b++;
23976 +               printk("%02x",(uint32_t) c);
23977 +               cnt++;
23978 +               if (!(cnt % 16))
23979 +                       printk("\n");
23980 +               else
23981 +                       printk("  ");
23982 +       }
23983 +       if (cnt % 16)
23984 +               printk("\n");
23985 +}
23986 +
23987 +/**************************************************************************
23988 + *   qla2x00_print_scsi_cmd
23989 + *      Dumps out info about the scsi cmd and srb.
23990 + *   Input      
23991 + *      cmd : Scsi_Cmnd
23992 + **************************************************************************/
23993 +void
23994 +qla2x00_print_scsi_cmd(Scsi_Cmnd * cmd) 
23995 +{
23996 +       struct scsi_qla_host *ha;
23997 +       struct Scsi_Host *host;
23998 +       srb_t *sp;
23999 +       struct os_lun *lq;
24000 +       fc_port_t *fcport;
24001 +
24002 +       int i;
24003 +
24004 +       host = cmd->device->host;
24005 +       ha = (struct scsi_qla_host *) host->hostdata;
24006 +
24007 +       sp = (srb_t *) CMD_SP(cmd);
24008 +       printk("SCSI Command @= 0x%p, Handle=0x%08lx\n", 
24009 +                       cmd, (u_long) CMD_HANDLE(cmd));
24010 +       printk("  chan=%d, target = 0x%02x, lun = 0x%02x, cmd_len = 0x%02x\n",
24011 +                       SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), SCSI_LUN_32(cmd),
24012 +                       cmd->cmd_len);
24013 +       printk(" CDB = ");
24014 +       for (i = 0; i < cmd->cmd_len; i++) {
24015 +               printk("0x%02x ", cmd->cmnd[i]);
24016 +       }
24017 +       printk("\n  seg_cnt =%d, retries=%d, serial_number_at_timeout=0x%lx\n",
24018 +                       cmd->use_sg,
24019 +                       cmd->retries, cmd->serial_number_at_timeout);
24020 +       printk("  request buffer=0x%p, request buffer len=0x%x\n", 
24021 +                       cmd->request_buffer,
24022 +                       cmd->request_bufflen);
24023 +       printk("  tag=%d, flags=0x%x, transfersize=0x%x \n", 
24024 +                       cmd->tag, cmd->flags, cmd->transfersize);
24025 +       printk("  serial_number=%d, SP=%p\n", (int) cmd->serial_number,sp); 
24026 +       printk("  data direction=%d\n", cmd->sc_data_direction);
24027 +       if (sp) {
24028 +               printk("  sp flags=0x%x\n", sp->flags);
24029 +               printk("  r_start=0x%lx, u_start=0x%lx, "
24030 +                               "f_start=0x%lx, state=%d\n", 
24031 +                               sp->r_start, sp->u_start,
24032 +                               sp->f_start, sp->state);
24033 +
24034 +               lq = sp->lun_queue;
24035 +               fcport = lq->fclun->fcport;
24036 +               printk(" e_start= 0x%lx, ext_history= %d, "
24037 +                               "fo retry=%d, loopid =%x, port path=%d\n", 
24038 +                               sp->e_start, sp->ext_history,
24039 +                               sp->fo_retry_cnt,
24040 +                               fcport->loop_id, 
24041 +                               fcport->cur_path);
24042 +       }
24043 +}
24044 +
24045 +/*
24046 + * qla2x00_print_q_info
24047 + *      Prints queue info
24048 + * Input
24049 + *      q: lun queue    
24050 + */ 
24051 +void 
24052 +qla2x00_print_q_info(struct os_lun *q) 
24053 +{
24054 +       printk("Queue info: flags=0x%lx\n", q->q_flag);
24055 +}
24056 +
24057 +#if defined(QL_DEBUG_ROUTINES)
24058 +/*
24059 + * qla2x00_formatted_dump_buffer
24060 + *       Prints string plus buffer.
24061 + *
24062 + * Input:
24063 + *       string  = Null terminated string (no newline at end).
24064 + *       buffer  = buffer address.
24065 + *       wd_size = word size 8, 16, 32 or 64 bits
24066 + *       count   = number of words.
24067 + */
24068 +void
24069 +qla2x00_formatted_dump_buffer(char *string, uint8_t * buffer, 
24070 +                               uint8_t wd_size, uint32_t count) 
24071 +{
24072 +       uint32_t cnt;
24073 +       uint16_t *buf16;
24074 +       uint32_t *buf32;
24075 +
24076 +       if (strcmp(string, "") != 0)
24077 +               printk("%s\n",string);
24078 +
24079 +       switch (wd_size) {
24080 +               case 8:
24081 +                       printk(" 0    1    2    3    4    5    6    7    "
24082 +                               "8    9    Ah   Bh   Ch   Dh   Eh   Fh\n");
24083 +                       printk("-----------------------------------------"
24084 +                               "-------------------------------------\n");
24085 +
24086 +                       for (cnt = 1; cnt <= count; cnt++, buffer++) {
24087 +                               printk("%02x",*buffer);
24088 +                               if (cnt % 16 == 0)
24089 +                                       printk("\n");
24090 +                               else
24091 +                                       printk("  ");
24092 +                       }
24093 +                       if (cnt % 16 != 0)
24094 +                               printk("\n");
24095 +                       break;
24096 +               case 16:
24097 +                       printk("   0      2      4      6      8      Ah "
24098 +                               "       Ch     Eh\n");
24099 +                       printk("-----------------------------------------"
24100 +                               "-------------\n");
24101 +
24102 +                       buf16 = (uint16_t *) buffer;
24103 +                       for (cnt = 1; cnt <= count; cnt++, buf16++) {
24104 +                               printk("%4x",*buf16);
24105 +
24106 +                               if (cnt % 8 == 0)
24107 +                                       printk("\n");
24108 +                               else if (*buf16 < 10)
24109 +                                       printk("   ");
24110 +                               else
24111 +                                       printk("  ");
24112 +                       }
24113 +                       if (cnt % 8 != 0)
24114 +                               printk("\n");
24115 +                       break;
24116 +               case 32:
24117 +                       printk("       0          4          8          Ch\n");
24118 +                       printk("------------------------------------------\n");
24119 +
24120 +                       buf32 = (uint32_t *) buffer;
24121 +                       for (cnt = 1; cnt <= count; cnt++, buf32++) {
24122 +                               printk("%8x", *buf32);
24123 +
24124 +                               if (cnt % 4 == 0)
24125 +                                       printk("\n");
24126 +                               else if (*buf32 < 10)
24127 +                                       printk("   ");
24128 +                               else
24129 +                                       printk("  ");
24130 +                       }
24131 +                       if (cnt % 4 != 0)
24132 +                               printk("\n");
24133 +                       break;
24134 +               default:
24135 +                       break;
24136 +       }
24137 +}
24138 +
24139 +#endif
24140 +
24141 +
24142 +#if STOP_ON_ERROR
24143 +/**************************************************************************
24144 +*   qla2x00_panic
24145 +*
24146 +**************************************************************************/
24147 +static void 
24148 +qla2x00_panic(char *cp, struct Scsi_Host *host) 
24149 +{
24150 +       struct scsi_qla_host *ha;
24151 +       long *fp;
24152 +
24153 +       ha = (struct scsi_qla_host *) host->hostdata;
24154 +       DEBUG2(ql2x_debug_print = 1;);
24155 +       printk("qla2100 - PANIC:  %s\n", cp);
24156 +       printk("Current time=0x%lx\n", jiffies);
24157 +       printk("Number of pending commands =0x%lx\n", ha->actthreads);
24158 +       printk("Number of queued commands =0x%lx\n", ha->qthreads);
24159 +       printk("Number of free entries = (%d)\n", ha->req_q_cnt);
24160 +       printk("Request Queue @ 0x%lx, Response Queue @ 0x%lx\n",
24161 +                              ha->request_dma, ha->response_dma);
24162 +       printk("Request In Ptr %d\n", ha->req_ring_index);
24163 +       fp = (long *) &ha->flags;
24164 +       printk("HA flags =0x%lx\n", *fp);
24165 +       qla2x00_dump_requests(ha);
24166 +       qla2x00_dump_regs(host);
24167 +       cli();
24168 +       for (;;) {
24169 +               udelay(2);
24170 +               barrier();
24171 +               /* cpu_relax();*/
24172 +       }
24173 +       sti();
24174 +}
24175 +
24176 +#endif
24177 +
24178 +/**************************************************************************
24179 +*   qla2x00_dump_requests
24180 +*
24181 +**************************************************************************/
24182 +void
24183 +qla2x00_dump_requests(scsi_qla_host_t *ha) 
24184 +{
24185 +
24186 +       Scsi_Cmnd       *cp;
24187 +       srb_t           *sp;
24188 +       int i;
24189 +
24190 +       printk("Outstanding Commands on controller:\n");
24191 +
24192 +       for (i = 1; i < MAX_OUTSTANDING_COMMANDS; i++) {
24193 +               if ((sp = ha->outstanding_cmds[i]) == NULL)
24194 +                       continue;
24195 +               if ((cp = sp->cmd) == NULL)
24196 +                       continue;
24197 +
24198 +               printk("(%d): Pid=%d, sp flags=0x%lx, cmd=0x%p\n", 
24199 +                       i, 
24200 +                       (int)sp->cmd->serial_number, 
24201 +                       (long)sp->flags,CMD_SP(sp->cmd));
24202 +       }
24203 +}
24204 --- /dev/null   Thu Apr 11 07:25:15 2002
24205 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_dbg.h   Thu Jul  3 15:34:42 2003
24206 @@ -0,0 +1,138 @@
24207 +/******************************************************************************
24208 + *                  QLOGIC LINUX SOFTWARE
24209 + *
24210 + * QLogic ISP2x00 device driver for Linux 2.5.x
24211 + * Copyright (C) 2003 Qlogic Corporation
24212 + * (www.qlogic.com)
24213 + *
24214 + * This program is free software; you can redistribute it and/or modify it
24215 + * under the terms of the GNU General Public License as published by the
24216 + * Free Software Foundation; either version 2, or (at your option) any
24217 + * later version.
24218 + *
24219 + * This program is distributed in the hope that it will be useful, but
24220 + * WITHOUT ANY WARRANTY; without even the implied warranty of
24221 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24222 + * General Public License for more details.
24223 + *
24224 + ******************************************************************************/
24225 +
24226 +#undef ENTER_TRACE
24227 +/*
24228 +* Macros use for debugging the driver.
24229 +*/
24230 +#if defined(ENTER_TRACE)
24231 +#define ENTER(x)       do { printk("qla2100 : Entering %s()\n", x); } while (0)
24232 +#define LEAVE(x)       do { printk("qla2100 : Leaving %s()\n", x);  } while (0)
24233 +#define ENTER_INTR(x)  do { printk("qla2100 : Entering %s()\n", x); } while (0)
24234 +#define LEAVE_INTR(x)  do { printk("qla2100 : Leaving %s()\n", x);  } while (0)
24235 +#else
24236 +#define ENTER(x)       do {} while (0)
24237 +#define LEAVE(x)       do {} while (0)
24238 +#define ENTER_INTR(x)  do {} while (0)
24239 +#define LEAVE_INTR(x)   do {} while (0)
24240 +#endif
24241 +
24242 +#if  DEBUG_QLA2100
24243 +#define DEBUG(x)       do {x;} while (0);
24244 +#else
24245 +#define DEBUG(x)       do {} while (0);
24246 +#endif
24247 +
24248 +#if defined(QL_DEBUG_LEVEL_1)
24249 +#define DEBUG1(x)      do {x;} while (0);
24250 +#else
24251 +#define DEBUG1(x)      do {} while (0);
24252 +#endif
24253 +
24254 +#if defined(QL_DEBUG_LEVEL_2)
24255 +#define DEBUG2(x)       do {x;} while (0);
24256 +#define DEBUG2_3(x)     do {x;} while (0);
24257 +#define DEBUG2_3_11(x)  do {x;} while (0);
24258 +#define DEBUG2_9_10(x)    do {x;} while (0);
24259 +#define DEBUG2_11(x)    do {x;} while (0);
24260 +#else
24261 +#define DEBUG2(x)      do {} while (0);
24262 +#endif
24263 +
24264 +#if defined(QL_DEBUG_LEVEL_3)
24265 +#define DEBUG3(x)      do {x;} while (0);
24266 +#define DEBUG2_3(x)    do {x;} while (0);
24267 +#define DEBUG2_3_11(x) do {x;} while (0);
24268 +#define DEBUG3_11(x)   do {x;} while (0);
24269 +#else
24270 +#define DEBUG3(x)      do {} while (0);
24271 +  #if !defined(QL_DEBUG_LEVEL_2)
24272 +  #define DEBUG2_3(x)  do {} while (0);
24273 +  #endif
24274 +#endif
24275 +
24276 +#if defined(QL_DEBUG_LEVEL_4)
24277 +#define DEBUG4(x)      do {x;} while (0);
24278 +#else
24279 +#define DEBUG4(x)      do {} while (0);
24280 +#endif
24281 +
24282 +#if defined(QL_DEBUG_LEVEL_5)
24283 +#define DEBUG5(x)          do {x;} while (0);
24284 +#else
24285 +#define DEBUG5(x)      do {} while (0);
24286 +#endif
24287 +
24288 +#if defined(QL_DEBUG_LEVEL_7)
24289 +#define DEBUG7(x)          do {x;} while (0);
24290 +#else
24291 +#define DEBUG7(x)         do {} while (0);
24292 +#endif
24293 +
24294 +#if defined(QL_DEBUG_LEVEL_9)
24295 +#define DEBUG9(x)       do {x;} while (0);
24296 +#define DEBUG9_10(x)    do {x;} while (0);
24297 +#define DEBUG2_9_10(x) do {x;} while (0);
24298 +#else
24299 +#define DEBUG9(x)      do {} while (0);
24300 +#endif
24301 +
24302 +#if defined(QL_DEBUG_LEVEL_10)
24303 +#define DEBUG10(x)      do {x;} while (0);
24304 +#define DEBUG2_9_10(x) do {x;} while (0);
24305 +#define DEBUG9_10(x)   do {x;} while (0);
24306 +#else
24307 +#define DEBUG10(x)     do {} while (0);
24308 +  #if !defined(DEBUG2_9_10)
24309 +  #define DEBUG2_9_10(x)       do {} while (0);
24310 +  #endif
24311 +  #if !defined(DEBUG9_10)
24312 +  #define DEBUG9_10(x) do {} while (0);
24313 +  #endif
24314 +#endif
24315 +
24316 +#if defined(QL_DEBUG_LEVEL_11)
24317 +#define DEBUG11(x)      do{x;} while(0);
24318 +#if !defined(DEBUG2_11)
24319 +#define DEBUG2_11(x)    do{x;} while(0);
24320 +#endif
24321 +#if !defined(DEBUG2_3_11)
24322 +#define DEBUG2_3_11(x)  do{x;} while(0);
24323 +#endif
24324 +#if !defined(DEBUG3_11)
24325 +#define DEBUG3_11(x)    do{x;} while(0);
24326 +#endif
24327 +#else
24328 +#define DEBUG11(x)     do{} while(0);
24329 +  #if !defined(QL_DEBUG_LEVEL_2)
24330 +  #define DEBUG2_11(x) do{} while(0);
24331 +    #if !defined(QL_DEBUG_LEVEL_3)
24332 +    #define DEBUG2_3_11(x) do{} while(0);
24333 +    #endif
24334 +  #endif
24335 +  #if !defined(QL_DEBUG_LEVEL_3)
24336 +  #define DEBUG3_11(x) do{} while(0);
24337 +  #endif
24338 +#endif
24339 +
24340 +#if defined(QL_DEBUG_LEVEL_12)
24341 +#define DEBUG12(x)      do {x;} while (0);
24342 +#else
24343 +#define DEBUG12(x)     do {} while (0);
24344 +#endif
24345 --- /dev/null   Thu Apr 11 07:25:15 2002
24346 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_def.h   Thu Jul  3 15:34:42 2003
24347 @@ -0,0 +1,2484 @@
24348 +/********************************************************************************
24349 +*                  QLOGIC LINUX SOFTWARE
24350 +*
24351 +* QLogic ISP2x00 device driver for Linux 2.5.x
24352 +* Copyright (C) 2003 Qlogic Corporation
24353 +* (www.qlogic.com)
24354 +*
24355 +* This program is free software; you can redistribute it and/or modify it
24356 +* under the terms of the GNU General Public License as published by the
24357 +* Free Software Foundation; either version 2, or (at your option) any
24358 +* later version.
24359 +*
24360 +* This program is distributed in the hope that it will be useful, but
24361 +* WITHOUT ANY WARRANTY; without even the implied warranty of
24362 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24363 +* General Public License for more details.
24364 +**
24365 +******************************************************************************/
24366 +
24367 +#ifndef __QLA_DEF_H
24368 +#define __QLA_DEF_H
24369 +
24370 +#if defined(qla23xx)
24371 +       #define MAILBOX_REGISTER_COUNT  32
24372 +       #define ISP_NAME                "23xx"
24373 +       #define DRIVER_NAME             "qla2300"
24374 +       #define ISP2300
24375 +       #undef ISP2322
24376 +#elif defined(qla22xx)
24377 +       #define MAILBOX_REGISTER_COUNT  32
24378 +       #define ISP_NAME                "22xx"
24379 +       #define DRIVER_NAME             "qla2200"
24380 +       #define ISP2200
24381 +#else /* qla21xx */
24382 +       #define MAILBOX_REGISTER_COUNT  8
24383 +       #define ISP_NAME                "21xx"
24384 +       #define DRIVER_NAME             "qla2100"
24385 +       #define ISP2100
24386 +#endif
24387 +
24388 +/*****************************************/
24389 +/*   ISP Boards supported by this driver */
24390 +/*****************************************/
24391 +#define QLA2X00_VENDOR_ID      0x1077
24392 +
24393 +#define QLA2100_DEVICE_ID      0x2100
24394 +
24395 +#define QLA2200_DEVICE_ID      0x2200
24396 +#define QLA2200A_RISC_ROM_VER  4
24397 +
24398 +#define QLA2300_DEVICE_ID      0x2300
24399 +#define QLA2312_DEVICE_ID      0x2312
24400 +#define QLA2322_DEVICE_ID      0x2322
24401 +#define FPM_2300               6
24402 +#define FPM_2310               7
24403 +
24404 +#include "qla_settings.h"
24405 +#include "exioct.h"
24406 +#include "inioct.h"
24407 +
24408 +/* 
24409 + * Data bit definitions
24410 + */
24411 +#define BIT_0  0x1
24412 +#define BIT_1  0x2
24413 +#define BIT_2  0x4
24414 +#define BIT_3  0x8
24415 +#define BIT_4  0x10
24416 +#define BIT_5  0x20
24417 +#define BIT_6  0x40
24418 +#define BIT_7  0x80
24419 +#define BIT_8  0x100
24420 +#define BIT_9  0x200
24421 +#define BIT_10 0x400
24422 +#define BIT_11 0x800
24423 +#define BIT_12 0x1000
24424 +#define BIT_13 0x2000
24425 +#define BIT_14 0x4000
24426 +#define BIT_15 0x8000
24427 +#define BIT_16 0x10000
24428 +#define BIT_17 0x20000
24429 +#define BIT_18 0x40000
24430 +#define BIT_19 0x80000
24431 +#define BIT_20 0x100000
24432 +#define BIT_21 0x200000
24433 +#define BIT_22 0x400000
24434 +#define BIT_23 0x800000
24435 +#define BIT_24 0x1000000
24436 +#define BIT_25 0x2000000
24437 +#define BIT_26 0x4000000
24438 +#define BIT_27 0x8000000
24439 +#define BIT_28 0x10000000
24440 +#define BIT_29 0x20000000
24441 +#define BIT_30 0x40000000
24442 +#define BIT_31 0x80000000
24443 +
24444 +#define LSB(x) ((uint8_t)(x))
24445 +#define MSB(x) ((uint8_t)((uint16_t)(x) >> 8))
24446 +
24447 +#define LSW(x) ((uint16_t)(x))
24448 +#define MSW(x) ((uint16_t)((uint32_t)(x) >> 16))
24449 +
24450 +#define LSD(x) ((uint32_t)((uint64_t)(x)))
24451 +#define MSD(x) ((uint32_t)((uint64_t)(x) >> 32))
24452 +
24453 +
24454 +/*
24455 + * I/O register
24456 +*/
24457 +/* #define MEMORY_MAPPED_IO  */    /* Enable memory mapped I/O */
24458 +#undef MEMORY_MAPPED_IO            /* Disable memory mapped I/O */
24459 +
24460 +#if defined(MEMORY_MAPPED_IO)
24461 +#define RD_REG_BYTE(addr)              readb(addr)
24462 +#define RD_REG_WORD(addr)              readw(addr)
24463 +#define RD_REG_DWORD(addr)             readl(addr)
24464 +#define WRT_REG_BYTE(addr, data)       writeb(data,addr)
24465 +#define WRT_REG_WORD(addr, data)       writew(data,addr)
24466 +#define WRT_REG_DWORD(addr, data)      writel(data,addr)
24467 +#else   /* MEMORY_MAPPED_IO */
24468 +#define RD_REG_BYTE(addr)              (inb((unsigned long)addr))
24469 +#define RD_REG_WORD(addr)              (inw((unsigned long)addr))
24470 +#define RD_REG_DWORD(addr)             (inl((unsigned long)addr))
24471 +#define WRT_REG_BYTE(addr, data)       (outb(data,(unsigned long)addr))
24472 +#define WRT_REG_WORD(addr, data)       (outw(data,(unsigned long)addr))
24473 +#define WRT_REG_DWORD(addr, data)      (outl(data,(unsigned long)addr))
24474 +#endif  /* MEMORY_MAPPED_IO */
24475 +
24476 +/*
24477 + * Fibre Channel device definitions.
24478 + */
24479 +#define WWN_SIZE               8       /* Size of WWPN, WWN & WWNN */
24480 +#define MAX_FIBRE_DEVICES      256
24481 +#define MAX_FIBRE_LUNS         256
24482 +#define        MAX_RSCN_COUNT          10
24483 +#define        MAX_HOST_COUNT          16
24484 +
24485 +/*
24486 + * Host adapter default definitions.
24487 + */
24488 +#define MAX_BUSES              1  /* We only have one bus today */
24489 +#define MAX_TARGETS_2100       MAX_FIBRE_DEVICES
24490 +#define MAX_TARGETS_2200       MAX_FIBRE_DEVICES
24491 +#define MAX_TARGETS            MAX_FIBRE_DEVICES
24492 +#define MIN_LUNS               8
24493 +#define MAX_LUNS               MAX_FIBRE_LUNS
24494 +#define MAX_CMDS_PER_LUN       255 
24495 +#define MAX_SRBS               4096
24496 +                                    
24497 +/*
24498 + * Fibre Channel device definitions.
24499 + */
24500 +#define LAST_LOCAL_LOOP_ID     0x7d
24501 +#define SNS_FL_PORT            0x7e
24502 +#define FABRIC_CONTROLLER      0x7f
24503 +#define SIMPLE_NAME_SERVER     0x80
24504 +#define SNS_FIRST_LOOP_ID      0x81
24505 +#define LAST_SNS_LOOP_ID       0xfe
24506 +#define MANAGEMENT_SERVER      0xfe
24507 +#define BROADCAST              0xff
24508 +#define SNS_ACCEPT             0x0280  /* 8002 swapped */
24509 +#define SNS_REJECT             0x0180  /* 8001 swapped */
24510 +
24511 +/* Loop ID's used as database flags, must be higher than any valid Loop ID */
24512 +#define PORT_UNUSED            0x100   /* Port never been used. */
24513 +#define PORT_AVAILABLE         0x101   /* Device does not exist on port. */
24514 +#define PORT_NEED_MAP          0x102       
24515 +#define PORT_LOST_ID           0x200       
24516 +#define PORT_LOGIN_NEEDED      0x400       
24517 +
24518 +/*
24519 + * Timeout timer counts in seconds
24520 + */
24521 +#define QLA2100_WDG_TIME_QUANTUM       5       /* In seconds */
24522 +#define PORT_RETRY_TIME                        2
24523 +#define LOOP_DOWN_TIMEOUT              60
24524 +#define LOOP_DOWN_TIME                 120     /* 240 */
24525 +#define        LOOP_DOWN_RESET                 (LOOP_DOWN_TIME - 30)
24526 +
24527 +/* Maximum outstanding commands in ISP queues (1-65535) */
24528 +#define MAX_OUTSTANDING_COMMANDS       1024
24529 +
24530 +/* ISP request and response entry counts (37-65535) */
24531 +#define REQUEST_ENTRY_CNT              1024    /* Number of request entries. */
24532 +#if defined(ISP2100) || defined(ISP2200)
24533 +#define RESPONSE_ENTRY_CNT             64      /* Number of response entries.*/
24534 +#else
24535 +#define RESPONSE_ENTRY_CNT             512     /* Number of response entries.*/
24536 +#endif
24537 +
24538 +/* Number of segments 1 - 65535 */
24539 +#define SG_SEGMENTS     32             /* Cmd entry + 6 continuations */
24540 +
24541 +/*
24542 + * SCSI Request Block 
24543 + */
24544 +typedef struct srb {
24545 +       struct list_head   list;
24546 +
24547 +       Scsi_Cmnd  *cmd;                /* Linux SCSI command pkt */
24548 +       struct scsi_qla_host *ha;       /* ha this SP is queued on */
24549 +
24550 +       uint8_t     dir;                /* direction of transfer */
24551 +       uint8_t     unused1;
24552 +
24553 +       uint16_t    flags;              /* Status flags - defined below */
24554 +
24555 +       uint16_t     state;
24556 +#define SRB_FREE_STATE          0      /* Request returned back */
24557 +#define SRB_PENDING_STATE       1      /* Request being queued in LUN Q */
24558 +#define SRB_ACTIVE_STATE        2      /* Request in Active Array */
24559 +#define SRB_DONE_STATE          3      /* Request Queued in Done Queue */
24560 +#define SRB_RETRY_STATE         4      /* Request in Retry Queue */
24561 +#define SRB_SUSPENDED_STATE     5      /* Request in suspended state */
24562 +#define SRB_NO_QUEUE_STATE      6      /* Request is in between states */
24563 +#define SRB_ACTIVE_TIMEOUT_STATE 7     /* Request in Active Array but timed out */
24564 +#define SRB_FAILOVER_STATE     8       /* Request in Failover Queue */
24565 +#define SRB_SCSI_RETRY_STATE    9      /* Request in Scsi Retry Queue */
24566 +
24567 +       uint8_t     used;               /* used by allocation code */
24568 +       uint8_t     ref_num;            /* reference SRB number */      
24569 +       uint16_t    magic;              /* qlogic magic number */
24570 +#define SRB_MAGIC       0x10CB
24571 +
24572 +       u_long      host_no;            /* Host number of allocating host */
24573 +       struct      timer_list   timer; /* used to timeout command */
24574 +       dma_addr_t       saved_dma_handle;      /* for unmap of single transfers */
24575 +
24576 +       atomic_t         ref_count;     /* reference count for this structure */                        
24577 +
24578 +       /* Target/LUN queue pointers. */
24579 +       struct os_tgt   *tgt_queue;     /* ptr to visible ha's target */
24580 +       struct os_lun   *lun_queue;     /* ptr to visible ha's lun */
24581 +       struct fc_lun   *fclun;         /* FC LUN context pointer. */
24582 +
24583 +       /* Raw completion info for use by failover ? */
24584 +       uint8_t fo_retry_cnt;   /* Retry count this request */
24585 +       uint8_t err_id;         /* error id */
24586 +       uint8_t cmd_length;     /* command length */
24587 +       uint8_t unused3;
24588 +
24589 +       int      delay;        /* delay in seconds */
24590 +       int      ext_history;   /*  */
24591 +
24592 +       u_long      e_start;    /* jiffies at start of extend timeout */
24593 +       u_long      r_start;    /* jiffies at start of request */
24594 +       u_long      u_start;    /* jiffies when sent to F/W    */
24595 +       u_long      f_start;    /* ra 10/29/01*/
24596 +                               /*jiffies when put in failover queue*/
24597 +
24598 +       uint32_t    resid;      /* Residual transfer length */
24599 +       uint16_t    sense_len;  /* Sense data length */
24600 +       uint32_t    request_sense_length;
24601 +       void        *request_sense_ptr;
24602 +
24603 +#if defined(IOCB_THROLLE_USAGE)
24604 +       uint32_t         iocb_cnt;
24605 +#endif
24606 +} srb_t;
24607 +
24608 +/*
24609 + * SRB flag definitions
24610 + */
24611 +#define SRB_TIMEOUT            BIT_0   /* Command timed out */
24612 +#define SRB_DMA_VALID          BIT_1   /* Command sent to ISP */
24613 +#define SRB_WATCHDOG           BIT_2   /* Command on watchdog list */
24614 +#define SRB_ABORT_PENDING      BIT_3   /* Command abort sent to device */
24615 +
24616 +#define SRB_ABORTED            BIT_4   /* Command aborted command already */
24617 +#define SRB_RETRY              BIT_5   /* Command needs retrying */
24618 +#define SRB_GOT_SENSE          BIT_6   /* Command has sense data */
24619 +#define SRB_FAILOVER           BIT_7   /* Command in failover state */
24620 +
24621 +#define SRB_BUSY               BIT_8   /* Command is in busy retry state */
24622 +#define SRB_FO_CANCEL          BIT_9   /* Command don't need to do failover */
24623 +#define        SRB_IOCTL               BIT_10  /* IOCTL command. */
24624 +#define        SRB_ISP_STARTED         BIT_11  /* Command sent to ISP. */
24625 +
24626 +#define        SRB_ISP_COMPLETED       BIT_12  /* ISP finished with command */
24627 +
24628 +
24629 +/*
24630 + *  ISP PCI Configuration Register Set
24631 + */
24632 +typedef volatile struct {
24633 +    uint16_t vendor_id;                 /* 0x0 */
24634 +    uint16_t device_id;                 /* 0x2 */
24635 +    uint16_t command;                   /* 0x4 */
24636 +    uint16_t status;                    /* 0x6 */
24637 +    uint8_t revision_id;                /* 0x8 */
24638 +    uint8_t programming_interface;      /* 0x9 */
24639 +    uint8_t sub_class;                  /* 0xa */
24640 +    uint8_t base_class;                 /* 0xb */
24641 +    uint8_t cache_line;                 /* 0xc */
24642 +    uint8_t latency_timer;              /* 0xd */
24643 +    uint8_t header_type;                /* 0xe */
24644 +    uint8_t bist;                       /* 0xf */
24645 +    uint32_t base_port;                 /* 0x10 */
24646 +    uint32_t mem_base_addr;             /* 0x14 */
24647 +    uint32_t base_addr[4];              /* 0x18-0x24 */
24648 +    uint32_t reserved_1[2];             /* 0x28-0x2c */
24649 +    uint16_t expansion_rom;             /* 0x30 */
24650 +    uint32_t reserved_2[2];             /* 0x34-0x38 */
24651 +    uint8_t interrupt_line;             /* 0x3c */
24652 +    uint8_t interrupt_pin;              /* 0x3d */
24653 +    uint8_t min_grant;                  /* 0x3e */
24654 +    uint8_t max_latency;                /* 0x3f */
24655 +} config_reg_t __attribute__((packed));
24656 +
24657 +
24658 +/*
24659 + * ISP I/O Register Set structure definitions.
24660 + */
24661 +typedef volatile struct {
24662 +       volatile uint16_t flash_address; /* Flash BIOS address */
24663 +       volatile uint16_t flash_data;   /* Flash BIOS data */
24664 +       uint16_t unused_1[1];           /* Gap */
24665 +       volatile uint16_t ctrl_status;  /* Control/Status */
24666 +#define CSR_FLASH_64K_BANK     BIT_3   /* Flash upper 64K bank select */ 
24667 +#define CSR_FLASH_ENABLE       BIT_1   /* Flash BIOS Read/Write enable */
24668 +#define CSR_ISP_SOFT_RESET     BIT_0   /* ISP soft reset */
24669 +
24670 +       volatile uint16_t ictrl;        /* Interrupt control */
24671 +#define ICR_EN_INT             BIT_15  /* ISP enable interrupts. */
24672 +#define ICR_EN_RISC            BIT_3   /* ISP enable RISC interrupts. */
24673 +
24674 +       volatile uint16_t istatus;      /* Interrupt status */
24675 +#define ISR_RISC_INT           BIT_3   /* RISC interrupt */
24676 +
24677 +       volatile uint16_t semaphore;    /* Semaphore */
24678 +       volatile uint16_t nvram;        /* NVRAM register. */
24679 +#define NVR_DESELECT           0
24680 +#define NVR_CLOCK              BIT_0
24681 +#define NVR_SELECT             BIT_1
24682 +#define NVR_DATA_OUT           BIT_2
24683 +#define NVR_DATA_IN            BIT_3
24684 +#define NVR_BUSY               BIT_15
24685 +
24686 +#if defined(ISP2100) || defined(ISP2200)
24687 +       volatile uint16_t mailbox0;
24688 +       volatile uint16_t mailbox1;
24689 +       volatile uint16_t mailbox2;
24690 +       volatile uint16_t mailbox3;
24691 +       volatile uint16_t mailbox4;
24692 +#define        ISP_REQ_Q_IN(reg)       (&(reg)->mailbox4)
24693 +#define        ISP_REQ_Q_OUT(reg)      (&(reg)->mailbox4)
24694 +       volatile uint16_t mailbox5;
24695 +#define        ISP_RSP_Q_IN(reg)       (&(reg)->mailbox5)
24696 +#define        ISP_RSP_Q_OUT(reg)      (&(reg)->mailbox5)
24697 +       volatile uint16_t mailbox6;
24698 +       volatile uint16_t mailbox7;
24699 +       uint16_t unused_2[0x3b];        /* Gap */
24700 +#else /* defined(ISP2300) */
24701 +       volatile uint16_t req_q_in;     /* Request Queue In-Pointer */
24702 +#define        ISP_REQ_Q_IN(reg)       (&(reg)->req_q_in)
24703 +       volatile uint16_t req_q_out;    /* Request Queue Out-Pointer */
24704 +#define        ISP_REQ_Q_OUT(reg)      (&(reg)->req_q_out)
24705 +       volatile uint16_t rsp_q_in;     /* Response Queue In-Pointer */
24706 +#define        ISP_RSP_Q_IN(reg)       (&(reg)->rsp_q_in)
24707 +       volatile uint16_t rsp_q_out;    /* Response Queue Out-Pointer */
24708 +#define        ISP_RSP_Q_OUT(reg)      (&(reg)->rsp_q_out)
24709 +
24710 +       volatile uint16_t host_status_lo; /* RISC to Host Status Low */
24711 +#define HSR_INT                        BIT_15  /* RISC int */
24712 +#define HSR_RISC_PAUSED                BIT_8   /* RISC Paused */
24713 +       volatile uint16_t host_status_hi; /* RISC to Host Status High */
24714 +#define HSR_ROM_MB_CMD_COMP    0x01    /* ROM mailbox cmd complete */
24715 +#define HSR_ROM_MB_CMD_ERROR   0x02    /*ROM mailbox cmd unsuccessful*/
24716 +#define HSR_MB_CMD_COMP                0x10    /* Mailbox cmd complete */
24717 +#define HSR_MB_CMD_ERROR       0x11    /* Mailbox cmd unsuccessful */
24718 +#define HSR_ASYNC_EVENT                0x12    /* Asynchronous event */
24719 +#define HSR_RESPONSE_QUEUE_UP  0x13    /* Response Queue update */
24720 +#define HSR_RIO_ONE            0x15    /* RIO one 16 bit handle */
24721 +#define HSR_FAST_SCSI_COMP     0x16    /* Fast Post SCSI complete */
24722 +
24723 +       volatile uint16_t host_semaphore; /* Host to Host Semaphore */
24724 +       uint16_t unused_3[0x11];        /* Gap */
24725 +       volatile uint16_t mailbox0;
24726 +       volatile uint16_t mailbox1;
24727 +       volatile uint16_t mailbox2;
24728 +       volatile uint16_t mailbox3;
24729 +       volatile uint16_t mailbox4;
24730 +       volatile uint16_t mailbox5;
24731 +       volatile uint16_t mailbox6;
24732 +       volatile uint16_t mailbox7;
24733 +       volatile uint16_t mailbox8;
24734 +       volatile uint16_t mailbox9;
24735 +       volatile uint16_t mailbox10;
24736 +       volatile uint16_t mailbox11;
24737 +       volatile uint16_t mailbox12;
24738 +       volatile uint16_t mailbox13;
24739 +       volatile uint16_t mailbox14;
24740 +       volatile uint16_t mailbox15;
24741 +       volatile uint16_t mailbox16;
24742 +       volatile uint16_t mailbox17;
24743 +       volatile uint16_t mailbox18;
24744 +       volatile uint16_t mailbox19;
24745 +       volatile uint16_t mailbox20;
24746 +       volatile uint16_t mailbox21;
24747 +       volatile uint16_t mailbox22;
24748 +       volatile uint16_t mailbox23;
24749 +       volatile uint16_t mailbox24;
24750 +       volatile uint16_t mailbox25;
24751 +       volatile uint16_t mailbox26;
24752 +       volatile uint16_t mailbox27;
24753 +       volatile uint16_t mailbox28;
24754 +       volatile uint16_t mailbox29;
24755 +       volatile uint16_t mailbox30;
24756 +       volatile uint16_t mailbox31;
24757 +       volatile uint16_t fb_cmd;
24758 +       uint16_t unused_4[0xa];         /* Gap */
24759 +#endif /* defined(ISP2100) || defined(ISP2200) */
24760 +       volatile uint16_t fpm_diag_config;
24761 +       uint16_t unused_5[0x6];         /* Gap */
24762 +       volatile uint16_t pcr;          /* Processor Control Register. */
24763 +       uint16_t unused_6[0x5];         /* Gap */
24764 +       volatile uint16_t mctr;         /* Memory Configuration and Timing. */
24765 +       uint16_t unused_7[0x3];         /* Gap */
24766 +#if defined(ISP2100) || defined(ISP2200)
24767 +       volatile uint16_t fb_cmd;
24768 +#else /* defined(ISP2300) */
24769 +       uint16_t unused_11;
24770 +#endif /* defined(ISP2100) || defined(ISP2200) */
24771 +       uint16_t unused_8[0x3];         /* Gap */
24772 +       volatile uint16_t hccr;         /* Host command & control register. */
24773 +#define HCCR_HOST_INT          BIT_7   /* Host interrupt bit */
24774 +#define HCCR_RISC_PAUSE                BIT_5   /* Pause mode bit */
24775 +                                       /* HCCR commands */
24776 +#define HCCR_RESET_RISC                0x1000  /* Reset RISC */
24777 +#define HCCR_PAUSE_RISC                0x2000  /* Pause RISC */
24778 +#define HCCR_RELEASE_RISC      0x3000  /* Release RISC from reset. */
24779 +#define HCCR_SET_HOST_INT      0x5000  /* Set host interrupt */
24780 +#define HCCR_CLR_HOST_INT      0x6000  /* Clear HOST interrupt */
24781 +#define HCCR_CLR_RISC_INT      0x7000  /* Clear RISC interrupt */
24782 +#define        HCCR_DISABLE_PARITY_PAUSE 0x4001 /* Disable parity error RISC pause. */
24783 +#define HCCR_ENABLE_PARITY     0xA000  /* Enable PARITY interrupt */
24784 +
24785 +       uint16_t unused_9[5];           /* Gap */
24786 +       volatile uint16_t gpiod;        /* GPIO Data register. */
24787 +       volatile uint16_t gpioe;        /* GPIO Enable register. */
24788 +#if defined(ISP2200)
24789 +       uint16_t unused_10[8];          /* Gap */
24790 +       volatile uint16_t mailbox8;
24791 +       volatile uint16_t mailbox9;
24792 +       volatile uint16_t mailbox10;
24793 +       volatile uint16_t mailbox11;
24794 +       volatile uint16_t mailbox12;
24795 +       volatile uint16_t mailbox13;
24796 +       volatile uint16_t mailbox14;
24797 +       volatile uint16_t mailbox15;
24798 +       volatile uint16_t mailbox16;
24799 +       volatile uint16_t mailbox17;
24800 +       volatile uint16_t mailbox18;
24801 +       volatile uint16_t mailbox19;
24802 +       volatile uint16_t mailbox20;
24803 +       volatile uint16_t mailbox21;
24804 +       volatile uint16_t mailbox22;
24805 +       volatile uint16_t mailbox23;    /* Also probe reg. */
24806 +#endif /* defined(ISP2200) */
24807 +} device_reg_t;
24808 +
24809 +typedef struct {
24810 +       uint32_t        out_mb;         /* outbound from driver */
24811 +       uint32_t        in_mb;                  /* Incoming from RISC */
24812 +       uint16_t        mb[MAILBOX_REGISTER_COUNT];
24813 +       long            buf_size;
24814 +       void            *bufp;
24815 +       uint32_t        tov;
24816 +       uint8_t         flags;
24817 +#define MBX_DMA_IN     BIT_0
24818 +#define        MBX_DMA_OUT     BIT_1
24819 +#define IOCTL_CMD      BIT_2
24820 +} mbx_cmd_t;
24821 +
24822 +#define        MBX_TOV_SECONDS 30
24823 +
24824 +/*
24825 + *  ISP product identification definitions in mailboxes after reset.
24826 + */
24827 +#define PROD_ID_1              0x4953
24828 +#define PROD_ID_2              0x0000
24829 +#define PROD_ID_2a             0x5020
24830 +#define PROD_ID_3              0x2020
24831 +#define PROD_ID_4              0x1
24832 +#define PROD_ID_4a             0x2
24833 +
24834 +/*
24835 + * ISP mailbox Self-Test status codes
24836 + */
24837 +#define MBS_FRM_ALIVE          0       /* Firmware Alive. */
24838 +#define MBS_CHKSUM_ERR         1       /* Checksum Error. */
24839 +#define MBS_BUSY               4       /* Busy. */
24840 +
24841 +/*
24842 + * ISP mailbox command complete status codes
24843 + */
24844 +#define MBS_CMD_CMP            0x4000  /* Command Complete. */
24845 +#define MBS_INV_CMD            0x4001  /* Invalid Command. */
24846 +#define MBS_HOST_INF_ERR       0x4002  /* Host Interface Error. */
24847 +#define MBS_TEST_FAILED                0x4003  /* Test Failed. */
24848 +#define MBS_CMD_ERR            0x4005  /* Command Error. */
24849 +#define MBS_CMD_PARAM_ERR      0x4006  /* Command Parameter Error. */
24850 +#define MBS_FATAL_ERROR                0xF000  /* Command Fatal Error. */
24851 +//TODO consolidate these definitions
24852 +#define MBS_FIRMWARE_ALIVE     0x0000 
24853 +#define MBS_COMMAND_COMPLETE   0x4000 
24854 +#define MBS_INVALID_COMMAND    0x4001 
24855 +
24856 +/* QLogic subroutine status definitions */
24857 +#define QL_STATUS_SUCCESS              0
24858 +#define QL_STATUS_ERROR                        1
24859 +#define QL_STATUS_FATAL_ERROR          2
24860 +#define QL_STATUS_RESOURCE_ERROR       3
24861 +#define QL_STATUS_LOOP_ID_IN_USE       4
24862 +#define QL_STATUS_NO_DATA              5
24863 +#define QL_STATUS_TIMEOUT              6
24864 +/*
24865 + * ISP mailbox asynchronous event status codes
24866 + */
24867 +#define MBA_ASYNC_EVENT                0x8000  /* Asynchronous event. */
24868 +#define MBA_RESET              0x8001  /* Reset Detected. */
24869 +#define MBA_SYSTEM_ERR         0x8002  /* System Error. */
24870 +#define MBA_REQ_TRANSFER_ERR   0x8003  /* Request Transfer Error. */
24871 +#define MBA_RSP_TRANSFER_ERR   0x8004  /* Response Transfer Error. */
24872 +#define MBA_WAKEUP_THRES       0x8005  /* Request Queue Wake-up. */
24873 +#define MBA_LIP_OCCURRED       0x8010  /* Loop Initialization Procedure */
24874 +                                       /* occurred. */
24875 +#define MBA_LOOP_UP            0x8011  /* FC Loop UP. */
24876 +#define MBA_LOOP_DOWN          0x8012  /* FC Loop Down. */
24877 +#define MBA_LIP_RESET          0x8013  /* LIP reset occurred. */
24878 +#define MBA_PORT_UPDATE                0x8014  /* Port Database update. */
24879 +#define MBA_SCR_UPDATE         0x8015  /* State Change Registration. */
24880 +#define MBA_RSCN_UPDATE                MBA_SCR_UPDATE
24881 +#define MBA_SCSI_COMPLETION    0x8020  /* SCSI Command Complete. */
24882 +#define MBA_CTIO_COMPLETION    0x8021  /* CTIO Complete. */
24883 +#if !defined(ISP2100)
24884 +#define MBA_LINK_MODE_UP       0x8030  /* FC Link Mode UP. */
24885 +#define MBA_UPDATE_CONFIG      0x8036  /* FC Update Configuration. */
24886 +#endif
24887 +
24888 +/*
24889 + * ISP mailbox commands
24890 + */
24891 +#define MBC_LOAD_RAM              1     /* Load RAM. */
24892 +#define MBC_EXECUTE_FIRMWARE      2     /* Execute firmware. */
24893 +#define MBC_WRITE_RAM_WORD        4     /* Write RAM word. */
24894 +#define MBC_READ_RAM_WORD         5     /* Read RAM word. */
24895 +#define MBC_MAILBOX_REGISTER_TEST 6     /* Wrap incoming mailboxes */
24896 +#define MBC_VERIFY_CHECKSUM       7     /* Verify checksum. */
24897 +#define MBC_ABOUT_FIRMWARE        8     /* Get firmware revision. */
24898 +#define MBC_LOAD_RAM_A64          9     /* Load RAM by 64-bit address. */
24899 +#define MBC_DUMP_RAM              0xA   /* READ BACK FW */
24900 +#define MBC_LOAD_RAM_EXTENDED     0xB   /* Load Extended RAM */
24901 +#define MBC_DUMP_SRAM             0xC   /* Dump SRAM    */
24902 +#define MBC_WRITE_RAM_WORD_EXTENDED    0xD     /* Write RAM word extended */
24903 +#define MBC_IOCB_EXECUTE          0x12  /* Execute an IOCB command */
24904 +#define MBC_ABORT_COMMAND         0x15  /* Abort IOCB command. */
24905 +#define MBC_ABORT_DEVICE          0x16  /* Abort device (ID/LUN). */
24906 +#define MBC_ABORT_TARGET          0x17  /* Abort target (ID). */
24907 +#define MBC_TARGET_RESET_ALL      0x18  /* Reset all local targets. */
24908 +#define MBC_GET_ADAPTER_LOOP_ID   0x20  /* Get loop id of ISP2100. */
24909 +#define MBC_GET_RETRY_COUNT       0x22  /* GET RATOV & retry count */
24910 +#define MBC_GET_FIRMWARE_OPTIONS  0x28  /* Get firmware options. */
24911 +#define MBC_SET_RETRY_COUNT       0x32  /* SET RATOV & retry count. */
24912 +#define MBC_SET_FIRMWARE_OPTIONS  0x38  /* Set firmware options. */
24913 +#define MBC_GET_RESOURCE_COUNTS   0x42  /* GET Resource counts */
24914 +#define MBC_DIAGNOSTIC_LOOP_BACK  0x45  /* Perform LoopBack diagnostic */
24915 +#define MBC_ENHANCED_GET_PORT_DATABASE     0x47  /* Get port database. */
24916 +#define MBC_IOCB_EXECUTE_A64     0x54  /* Execute an IOCB command (64bit) */
24917 +#define        MBC_SEND_RNID_ELS         0x57  /* Send RNID ELS request */
24918 +#define        MBC_SET_RNID_PARAMS       0x59  /* Set RNID parameters */
24919 +#define        MBC_GET_RNID_PARAMS       0x5a  /* Get RNID parameters */
24920 +#define MBC_INITIALIZE_FIRMWARE   0x60  /* Initialize firmware */
24921 +#define MBC_INITIATE_LIP          0x62  /* Initiate Loop Initialization */
24922 +                                        /* Procedure */
24923 +#define MBC_GET_FCAL_MAP       0x63  /* Get FC/AL position map */
24924 +#define MBC_GET_PORT_DATABASE     0x64  /* Get port database. */
24925 +#define MBC_TARGET_RESET         0x66  /* Target reset. */
24926 +#define MBC_GET_FIRMWARE_STATE    0x69  /* Get firmware state. */
24927 +#define MBC_GET_PORT_NAME         0x6a  /* Get port name. */
24928 +#define MBC_GET_LINK_STATUS       0x6b  /* Get link status. */
24929 +#define MBC_LIP_RESET             0x6c  /* LIP reset. */
24930 +#define MBC_SEND_SNS_COMMAND      0x6e  /* Send Simple Name Server command. */
24931 +#define MBC_LOGIN_FABRIC_PORT     0x6f  /* Login fabric port. */
24932 +#define MBC_LOGOUT_FABRIC_PORT    0x71  /* Logout fabric port. */
24933 +#define MBC_LIP_FULL_LOGIN        0x72  /* Full login LIP. */
24934 +#define        MBC_LOGIN_LOOP_PORT       0x74  /* Login Loop Port. */
24935 +#define MBC_GET_PORT_LIST         0x75  /* Get port list. */
24936 +#define        MBC_INITIALIZE_RECEIVE_QUEUE    0x77    /* Initialize receive queue */
24937 +#define        MBC_SEND_FARP_REQ_COMMAND       0x78    /* FARP request. */
24938 +#define        MBC_SEND_FARP_REPLY_COMMAND     0x79    /* FARP reply. */
24939 +#define        MBC_PORT_LOOP_NAME_LIST         0x7C    /* Get port/node name list. */
24940 +#define        MBC_SEND_LFA_COMMAND            0x7D    /* Send Loop Fabric Address */
24941 +#define        MBC_LUN_RESET                   0x7E    /* Send LUN reset */
24942 +
24943 +/* Firmware return data sizes */
24944 +#define FCAL_MAP_SIZE  128
24945 +
24946 +/* Mailbox bit definitions for out_mb and in_mb */
24947 +#define        MBX_31          BIT_31
24948 +#define        MBX_30          BIT_30
24949 +#define        MBX_29          BIT_29
24950 +#define        MBX_28          BIT_28
24951 +#define        MBX_27          BIT_27
24952 +#define        MBX_26          BIT_26
24953 +#define        MBX_25          BIT_25
24954 +#define        MBX_24          BIT_24
24955 +#define        MBX_23          BIT_23
24956 +#define        MBX_22          BIT_22
24957 +#define        MBX_21          BIT_21
24958 +#define        MBX_20          BIT_20
24959 +#define        MBX_19          BIT_19
24960 +#define        MBX_18          BIT_18
24961 +#define        MBX_17          BIT_17
24962 +#define        MBX_16          BIT_16
24963 +#define        MBX_15          BIT_15
24964 +#define        MBX_14          BIT_14
24965 +#define        MBX_13          BIT_13
24966 +#define        MBX_12          BIT_12
24967 +#define        MBX_11          BIT_11
24968 +#define        MBX_10          BIT_10
24969 +#define        MBX_9           BIT_9
24970 +#define        MBX_8           BIT_8
24971 +#define        MBX_7           BIT_7
24972 +#define        MBX_6           BIT_6
24973 +#define        MBX_5           BIT_5
24974 +#define        MBX_4           BIT_4
24975 +#define        MBX_3           BIT_3
24976 +#define        MBX_2           BIT_2
24977 +#define        MBX_1           BIT_1
24978 +#define        MBX_0           BIT_0
24979 +
24980 +/*
24981 + * Firmware state codes from get firmware state mailbox command
24982 + */
24983 +#define FSTATE_CONFIG_WAIT      0
24984 +#define FSTATE_WAIT_AL_PA       1
24985 +#define FSTATE_WAIT_LOGIN       2
24986 +#define FSTATE_READY            3
24987 +#define FSTATE_LOSS_OF_SYNC     4
24988 +#define FSTATE_ERROR            5
24989 +#define FSTATE_REINIT           6
24990 +#define FSTATE_NON_PART         7
24991 +
24992 +#define FSTATE_CONFIG_CORRECT      0
24993 +#define FSTATE_P2P_RCV_LIP         1
24994 +#define FSTATE_P2P_CHOOSE_LOOP     2
24995 +#define FSTATE_P2P_RCV_UNIDEN_LIP  3
24996 +#define FSTATE_FATAL_ERROR         4
24997 +#define FSTATE_LOOP_BACK_CONN      5
24998 +
24999 +/*
25000 + * Port Database structure definition
25001 + * Little endian except where noted.
25002 + */
25003 +#define        PORT_DATABASE_SIZE      128     /* bytes */
25004 +typedef struct {
25005 +       uint8_t options;
25006 +       uint8_t control;
25007 +       uint8_t master_state;
25008 +       uint8_t slave_state;
25009 +#define        PD_STATE_DISCOVERY                      0
25010 +#define        PD_STATE_WAIT_DISCOVERY_ACK             1
25011 +#define        PD_STATE_PORT_LOGIN                     2
25012 +#define        PD_STATE_WAIT_PORT_LOGIN_ACK            3
25013 +#define        PD_STATE_PROCESS_LOGIN                  4
25014 +#define        PD_STATE_WAIT_PROCESS_LOGIN_ACK         5
25015 +#define        PD_STATE_PORT_LOGGED_IN                 6
25016 +#define        PD_STATE_PORT_UNAVAILABLE               7
25017 +#define        PD_STATE_PROCESS_LOGOUT                 8
25018 +#define        PD_STATE_WAIT_PROCESS_LOGOUT_ACK        9
25019 +#define        PD_STATE_PORT_LOGOUT                    10
25020 +#define        PD_STATE_WAIT_PORT_LOGOUT_ACK           11
25021 +       uint8_t reserved[2];
25022 +       uint8_t hard_address;
25023 +       uint8_t reserved_1;
25024 +       uint8_t port_id[4];
25025 +       uint8_t node_name[8];                   /* Big endian. */
25026 +       uint8_t port_name[8];                   /* Big endian. */
25027 +       uint16_t execution_throttle;
25028 +       uint16_t execution_count;
25029 +       uint8_t reset_count;
25030 +       uint8_t reserved_2;
25031 +       uint16_t resource_allocation;
25032 +       uint16_t current_allocation;
25033 +       uint16_t queue_head;
25034 +       uint16_t queue_tail;
25035 +       uint16_t transmit_execution_list_next;
25036 +       uint16_t transmit_execution_list_previous;
25037 +       uint16_t common_features;
25038 +       uint16_t total_concurrent_sequences;
25039 +       uint16_t RO_by_information_category;
25040 +       uint8_t recipient;
25041 +       uint8_t initiator;
25042 +       uint16_t receive_data_size;
25043 +       uint16_t concurrent_sequences;
25044 +       uint16_t open_sequences_per_exchange;
25045 +       uint16_t lun_abort_flags;
25046 +       uint16_t lun_stop_flags;
25047 +       uint16_t stop_queue_head;
25048 +       uint16_t stop_queue_tail;
25049 +       uint16_t port_retry_timer;
25050 +       uint16_t next_sequence_id;
25051 +       uint16_t frame_count;
25052 +       uint16_t PRLI_payload_length;
25053 +       uint8_t prli_svc_param_word_0[2];       /* Big endian */
25054 +                                               /* Bits 15-0 of word 0 */
25055 +       uint8_t prli_svc_param_word_3[2];       /* Big endian */
25056 +                                               /* Bits 15-0 of word 3 */
25057 +       uint16_t loop_id;
25058 +       uint16_t extended_lun_info_list_pointer;
25059 +       uint16_t extended_lun_stop_list_pointer;
25060 +} port_database_t;
25061 +
25062 +/*
25063 + * ISP Initialization Control Block.
25064 + */
25065 +
25066 +#define SO_DATA_RATE_1GB       0
25067 +#define SO_DATA_RATE_2GB       1
25068 +#define SO_DATA_RATE_AUTO      2
25069 +
25070 +/*
25071 + * ISP Initialization Control Block.
25072 + * Little endian except where noted.
25073 + */
25074 +#define        ICB_VERSION 1
25075 +typedef struct {
25076 +       uint8_t  version;
25077 +       uint8_t  reserved_1;
25078 +
25079 +       /*
25080 +        * LSB BIT 0  = Enable Hard Loop Id
25081 +        * LSB BIT 1  = Enable Fairness
25082 +        * LSB BIT 2  = Enable Full-Duplex
25083 +        * LSB BIT 3  = Enable Fast Posting
25084 +        * LSB BIT 4  = Enable Target Mode
25085 +        * LSB BIT 5  = Disable Initiator Mode
25086 +        * LSB BIT 6  = Enable ADISC
25087 +        * LSB BIT 7  = Enable Target Inquiry Data
25088 +        *
25089 +        * MSB BIT 0  = Enable PDBC Notify
25090 +        * MSB BIT 1  = Non Participating LIP
25091 +        * MSB BIT 2  = Descending Loop ID Search
25092 +        * MSB BIT 3  = Acquire Loop ID in LIPA
25093 +        * MSB BIT 4  = Stop PortQ on Full Status
25094 +        * MSB BIT 5  = Full Login after LIP
25095 +        * MSB BIT 6  = Node Name Option
25096 +        * MSB BIT 7  = Ext IFWCB enable bit
25097 +        */
25098 +       uint8_t  firmware_options[2];
25099 +
25100 +       uint16_t frame_payload_size;
25101 +       uint16_t max_iocb_allocation;
25102 +       uint16_t execution_throttle;
25103 +       uint8_t  retry_count;
25104 +       uint8_t  retry_delay;                   /* unused */
25105 +       uint8_t  port_name[WWN_SIZE];           /* Big endian. */
25106 +       uint16_t hard_address;
25107 +       uint8_t  inquiry_data;
25108 +       uint8_t  login_timeout;
25109 +       uint8_t  node_name[WWN_SIZE];           /* Big endian. */
25110 +
25111 +       uint16_t request_q_outpointer;
25112 +       uint16_t response_q_inpointer;
25113 +       uint16_t request_q_length;
25114 +       uint16_t response_q_length;
25115 +       uint32_t request_q_address[2];
25116 +       uint32_t response_q_address[2];
25117 +
25118 +       uint16_t lun_enables;
25119 +       uint8_t  command_resource_count;
25120 +       uint8_t  immediate_notify_resource_count;
25121 +       uint16_t timeout;
25122 +       uint8_t  reserved_2[2];
25123 +
25124 +       /*
25125 +        * LSB BIT 0 = Timer Operation mode bit 0
25126 +        * LSB BIT 1 = Timer Operation mode bit 1
25127 +        * LSB BIT 2 = Timer Operation mode bit 2
25128 +        * LSB BIT 3 = Timer Operation mode bit 3
25129 +        * LSB BIT 4 = Init Config Mode bit 0
25130 +        * LSB BIT 5 = Init Config Mode bit 1
25131 +        * LSB BIT 6 = Init Config Mode bit 2
25132 +        * LSB BIT 7 = Enable Non part on LIHA failure
25133 +        *
25134 +        * MSB BIT 0 = Enable class 2
25135 +        * MSB BIT 1 = Enable ACK0
25136 +        * MSB BIT 2 =
25137 +        * MSB BIT 3 =
25138 +        * MSB BIT 4 = FC Tape Enable
25139 +        * MSB BIT 5 = Enable FC Confirm
25140 +        * MSB BIT 6 = Enable command queuing in target mode
25141 +        * MSB BIT 7 = No Logo On Link Down
25142 +        */
25143 +       uint8_t  add_firmware_options[2];
25144 +
25145 +       uint8_t  response_accumulation_timer;
25146 +       uint8_t  interrupt_delay_timer;
25147 +
25148 +       /*
25149 +        * LSB BIT 0 = Enable Read xfr_rdy
25150 +        * LSB BIT 1 = Soft ID only
25151 +        * LSB BIT 2 =
25152 +        * LSB BIT 3 =
25153 +        * LSB BIT 4 = FCP RSP Payload [0]
25154 +        * LSB BIT 5 = FCP RSP Payload [1] / Sbus enable - 2200
25155 +        * LSB BIT 6 = Enable Out-of-Order frame handling
25156 +        * LSB BIT 7 = Disable Automatic PLOGI on Local Loop
25157 +        *
25158 +        * MSB BIT 0 = Sbus enable - 2300
25159 +        * MSB BIT 1 =
25160 +        * MSB BIT 2 =
25161 +        * MSB BIT 3 =
25162 +        * MSB BIT 4 =
25163 +        * MSB BIT 5 = enable 50 ohm termination
25164 +        * MSB BIT 6 = Data Rate (2300 only)
25165 +        * MSB BIT 7 = Data Rate (2300 only)
25166 +        */
25167 +       uint8_t  special_options[2];
25168 +
25169 +       uint8_t  reserved_3[26];
25170 +} init_cb_t;
25171 +
25172 +/*
25173 + * ISP Get/Set Target Parameters mailbox command control flags.
25174 + */
25175 +
25176 +/*
25177 + * Get Link Status mailbox command return buffer.
25178 + */
25179 +typedef struct {
25180 +       uint32_t        link_fail_cnt;
25181 +       uint32_t        loss_sync_cnt;
25182 +       uint32_t        loss_sig_cnt;
25183 +       uint32_t        prim_seq_err_cnt;
25184 +       uint32_t        inval_xmit_word_cnt;
25185 +       uint32_t        inval_crc_cnt;
25186 +} link_stat_t;
25187 +
25188 +/*
25189 + * NVRAM Command values.
25190 + */
25191 +#define NV_START_BIT            BIT_2
25192 +#define NV_WRITE_OP             (BIT_26+BIT_24)
25193 +#define NV_READ_OP              (BIT_26+BIT_25)
25194 +#define NV_ERASE_OP             (BIT_26+BIT_25+BIT_24)
25195 +#define NV_MASK_OP              (BIT_26+BIT_25+BIT_24)
25196 +#define NV_DELAY_COUNT          10
25197 +
25198 +/*
25199 + * QLogic ISP2100, ISP2200 and ISP2300 NVRAM structure definition.
25200 + */
25201 +typedef struct {
25202 +       /*
25203 +        * NVRAM header
25204 +        */
25205 +       uint8_t id[4];
25206 +       uint8_t nvram_version;
25207 +       uint8_t reserved_0;
25208 +
25209 +       /*
25210 +        * NVRAM RISC parameter block
25211 +        */
25212 +       uint8_t parameter_block_version;
25213 +       uint8_t reserved_1;
25214 +
25215 +       /*
25216 +        * LSB BIT 0  = Enable Hard Loop Id
25217 +        * LSB BIT 1  = Enable Fairness
25218 +        * LSB BIT 2  = Enable Full-Duplex
25219 +        * LSB BIT 3  = Enable Fast Posting
25220 +        * LSB BIT 4  = Enable Target Mode
25221 +        * LSB BIT 5  = Disable Initiator Mode
25222 +        * LSB BIT 6  = Enable ADISC
25223 +        * LSB BIT 7  = Enable Target Inquiry Data
25224 +        *
25225 +        * MSB BIT 0  = Enable PDBC Notify
25226 +        * MSB BIT 1  = Non Participating LIP
25227 +        * MSB BIT 2  = Descending Loop ID Search
25228 +        * MSB BIT 3  = Acquire Loop ID in LIPA
25229 +        * MSB BIT 4  = Stop PortQ on Full Status
25230 +        * MSB BIT 5  = Full Login after LIP
25231 +        * MSB BIT 6  = Node Name Option
25232 +        * MSB BIT 7  = Ext IFWCB enable bit
25233 +        */
25234 +       uint8_t  firmware_options[2];
25235 +
25236 +       uint16_t frame_payload_size;
25237 +       uint16_t max_iocb_allocation;
25238 +       uint16_t execution_throttle;
25239 +       uint8_t  retry_count;
25240 +       uint8_t  retry_delay;                   /* unused */
25241 +       uint8_t  port_name[WWN_SIZE];           /* Big endian. */
25242 +       uint16_t hard_address;
25243 +       uint8_t  inquiry_data;
25244 +       uint8_t  login_timeout;
25245 +       uint8_t  node_name[WWN_SIZE];           /* Big endian. */
25246 +
25247 +       /*
25248 +        * LSB BIT 0 = Timer Operation mode bit 0
25249 +        * LSB BIT 1 = Timer Operation mode bit 1
25250 +        * LSB BIT 2 = Timer Operation mode bit 2
25251 +        * LSB BIT 3 = Timer Operation mode bit 3
25252 +        * LSB BIT 4 = Init Config Mode bit 0
25253 +        * LSB BIT 5 = Init Config Mode bit 1
25254 +        * LSB BIT 6 = Init Config Mode bit 2
25255 +        * LSB BIT 7 = Enable Non part on LIHA failure
25256 +        *
25257 +        * MSB BIT 0 = Enable class 2
25258 +        * MSB BIT 1 = Enable ACK0
25259 +        * MSB BIT 2 =
25260 +        * MSB BIT 3 =
25261 +        * MSB BIT 4 = FC Tape Enable
25262 +        * MSB BIT 5 = Enable FC Confirm
25263 +        * MSB BIT 6 = Enable command queuing in target mode
25264 +        * MSB BIT 7 = No Logo On Link Down
25265 +        */
25266 +       uint8_t  add_firmware_options[2];
25267 +
25268 +       uint8_t  response_accumulation_timer;
25269 +       uint8_t  interrupt_delay_timer;
25270 +
25271 +       /*
25272 +        * LSB BIT 0 = Enable Read xfr_rdy
25273 +        * LSB BIT 1 = Soft ID only
25274 +        * LSB BIT 2 =
25275 +        * LSB BIT 3 =
25276 +        * LSB BIT 4 = FCP RSP Payload [0]
25277 +        * LSB BIT 5 = FCP RSP Payload [1] / Sbus enable - 2200
25278 +        * LSB BIT 6 = Enable Out-of-Order frame handling
25279 +        * LSB BIT 7 = Disable Automatic PLOGI on Local Loop
25280 +        *
25281 +        * MSB BIT 0 = Sbus enable - 2300
25282 +        * MSB BIT 1 =
25283 +        * MSB BIT 2 =
25284 +        * MSB BIT 3 =
25285 +        * MSB BIT 4 =
25286 +        * MSB BIT 5 = enable 50 ohm termination
25287 +        * MSB BIT 6 = Data Rate (2300 only)
25288 +        * MSB BIT 7 = Data Rate (2300 only)
25289 +        */
25290 +       uint8_t  special_options[2];
25291 +
25292 +       /* Reserved for expanded RISC parameter block */
25293 +       uint8_t reserved_2[24];
25294 +
25295 +       /*
25296 +        * LSB BIT 0 = Output Swing 1G bit 0
25297 +        * LSB BIT 1 = Output Swing 1G bit 1
25298 +        * LSB BIT 2 = Output Swing 1G bit 2
25299 +        * LSB BIT 3 = Output Emphasis 1G bit 0
25300 +        * LSB BIT 4 = Output Emphasis 1G bit 1
25301 +        * LSB BIT 5 = Output Swing 2G bit 0
25302 +        * LSB BIT 6 = Output Swing 2G bit 1
25303 +        * LSB BIT 7 = Output Swing 2G bit 2
25304 +        *            
25305 +        * MSB BIT 0 = Output Emphasis 2G bit 0
25306 +        * MSB BIT 1 = Output Emphasis 2G bit 1
25307 +        * MSB BIT 2 = Output Enable
25308 +        * MSB BIT 3 =
25309 +        * MSB BIT 4 =
25310 +        * MSB BIT 5 =
25311 +        * MSB BIT 6 =
25312 +        * MSB BIT 7 =
25313 +        */
25314 +       uint8_t seriallink_options[2];
25315 +
25316 +       /*
25317 +        * NVRAM host parameter block
25318 +        *
25319 +        * LSB BIT 0 = Enable spinup delay
25320 +        * LSB BIT 1 = Disable BIOS
25321 +        * LSB BIT 2 = Enable Memory Map BIOS
25322 +        * LSB BIT 3 = Enable Selectable Boot
25323 +        * LSB BIT 4 = Disable RISC code load
25324 +        * LSB BIT 5 = Set cache line size 1
25325 +        * LSB BIT 6 = PCI Parity Disable
25326 +        * LSB BIT 7 = Enable extended logging
25327 +        *
25328 +        * MSB BIT 0 = Enable 64bit addressing
25329 +        * MSB BIT 1 = Enable lip reset
25330 +        * MSB BIT 2 = Enable lip full login
25331 +        * MSB BIT 3 = Enable target reset
25332 +        * MSB BIT 4 = Enable database storage
25333 +        * MSB BIT 5 = Enable cache flush read
25334 +        * MSB BIT 6 = Enable database load
25335 +        * MSB BIT 7 = Enable alternate WWN
25336 +        */
25337 +       uint8_t host_p[2];
25338 +
25339 +       uint8_t boot_node_name[WWN_SIZE];
25340 +       uint8_t boot_lun_number;
25341 +       uint8_t reset_delay;
25342 +       uint8_t port_down_retry_count;
25343 +       uint8_t boot_id_number;
25344 +       uint16_t max_luns_per_target;
25345 +       uint8_t fcode_boot_port_name[WWN_SIZE];
25346 +       uint8_t alternate_port_name[WWN_SIZE];
25347 +       uint8_t alternate_node_name[WWN_SIZE];
25348 +
25349 +       /*
25350 +        * BIT 0 = Boot Zoning
25351 +        * BIT 1 = Alt-Boot Enable
25352 +        * BIT 2 = Report SCSI Path
25353 +        * BIT 3 = unused
25354 +        * BIT 4 = unused
25355 +        * BIT 5 = unused
25356 +        * BIT 6 = unused
25357 +        * BIT 7 = unused
25358 +        */
25359 +       uint8_t efi_parameters;
25360 +
25361 +       uint8_t link_down_timeout;
25362 +
25363 +       uint8_t adapter_id_0[4];
25364 +       uint8_t adapter_id_1[4];
25365 +       uint8_t adapter_id_2[4];
25366 +       uint8_t adapter_id_3[4];
25367 +
25368 +       uint8_t alt1_boot_node_name[WWN_SIZE];
25369 +       uint16_t alt1_boot_lun_number;
25370 +       uint8_t alt2_boot_node_name[WWN_SIZE];
25371 +       uint16_t alt2_boot_lun_number;
25372 +       uint8_t alt3_boot_node_name[WWN_SIZE];
25373 +       uint16_t alt3_boot_lun_number;
25374 +       uint8_t alt4_boot_node_name[WWN_SIZE];
25375 +       uint16_t alt4_boot_lun_number;
25376 +       uint8_t alt5_boot_node_name[WWN_SIZE];
25377 +       uint16_t alt5_boot_lun_number;
25378 +       uint8_t alt6_boot_node_name[WWN_SIZE];
25379 +       uint16_t alt6_boot_lun_number;
25380 +       uint8_t alt7_boot_node_name[WWN_SIZE];
25381 +       uint16_t alt7_boot_lun_number;
25382 +
25383 +       uint8_t reserved_3[2];
25384 +
25385 +       uint8_t oem_id;
25386 +       uint8_t oem_specific[31];
25387 +
25388 +       /*
25389 +        * NVRAM Adapter Features offset 232-239
25390 +        *
25391 +        * LSB BIT 0 = External GBIC
25392 +        * LSB BIT 1 = Risc RAM parity
25393 +        * LSB BIT 2 = Buffer Plus Module
25394 +        * LSB BIT 3 = Multi Chip Adapter
25395 +        * LSB BIT 4 = Internal connector
25396 +        * LSB BIT 5 =
25397 +        * LSB BIT 6 =
25398 +        * LSB BIT 7 =
25399 +        *
25400 +        * MSB BIT 0 =
25401 +        * MSB BIT 1 =
25402 +        * MSB BIT 2 =
25403 +        * MSB BIT 3 =
25404 +        * MSB BIT 4 =
25405 +        * MSB BIT 5 =
25406 +        * MSB BIT 6 =
25407 +        * MSB BIT 7 =
25408 +        */
25409 +       uint8_t adapter_features[2];
25410 +
25411 +       uint8_t reserved_4[16];
25412 +
25413 +       /* Subsystem vendor ID for ISP2200 */
25414 +       uint16_t subsystem_vendor_id_2200;
25415 +
25416 +       /* Subsystem device ID for ISP2200 */
25417 +       uint16_t subsystem_device_id_2200;
25418 +
25419 +       uint8_t  reserved_5;
25420 +       uint8_t  checksum;
25421 +} nvram_t;
25422 +
25423 +
25424 +/*
25425 + * ISP queue - command entry structure definition.
25426 + */
25427 +#define MAX_CMDSZ   16                 /* SCSI maximum CDB size. */
25428 +typedef struct {
25429 +       uint8_t         entry_type;     /* Entry type. */
25430 +#define COMMAND_TYPE   0x11            /* Command entry */
25431 +       uint8_t         entry_count;    /* Entry count. */
25432 +       uint8_t         sys_define;     /* System defined. */
25433 +       uint8_t         entry_status;   /* Entry Status. */
25434 +       uint32_t        handle;         /* System handle. */
25435 +#if defined(EXTENDED_IDS)
25436 +       uint16_t        target;         /* SCSI ID */
25437 +#else
25438 +       uint8_t         reserved;
25439 +       uint8_t         target;         /* SCSI ID */
25440 +#endif
25441 +       uint16_t        lun;            /* SCSI LUN */
25442 +       uint16_t        control_flags;  /* Control flags. */
25443 +#define CF_HEAD_TAG    BIT_1
25444 +#define CF_ORDERED_TAG BIT_2
25445 +#define CF_SIMPLE_TAG  BIT_3
25446 +#define CF_READ                BIT_5
25447 +#define CF_WRITE       BIT_6
25448 +       uint16_t        reserved_1;
25449 +       uint16_t        timeout;        /* Command timeout. */
25450 +       uint16_t        dseg_count;     /* Data segment count. */
25451 +       uint8_t         scsi_cdb[MAX_CMDSZ];    /* SCSI command words. */
25452 +       uint32_t        byte_count;     /* Total byte count. */
25453 +       uint32_t        dseg_0_address; /* Data segment 0 address. */
25454 +       uint32_t        dseg_0_length;  /* Data segment 0 length. */
25455 +       uint32_t        dseg_1_address; /* Data segment 1 address. */
25456 +       uint32_t        dseg_1_length;  /* Data segment 1 length. */
25457 +       uint32_t        dseg_2_address; /* Data segment 2 address. */
25458 +       uint32_t        dseg_2_length;  /* Data segment 2 length. */
25459 +} cmd_entry_t;
25460 +
25461 +/*
25462 + * ISP queue - 64-Bit addressing, command entry structure definition.
25463 + */
25464 +#define COMMAND_A64_TYPE       0x19    /* Command A64 entry */
25465 +typedef struct {
25466 +       uint8_t         entry_type;     /* Entry type. */
25467 +       uint8_t         entry_count;    /* Entry count. */
25468 +       uint8_t         sys_define;     /* System defined. */
25469 +       uint8_t         entry_status;   /* Entry Status. */
25470 +       uint32_t        handle;         /* System handle. */
25471 +#if defined(EXTENDED_IDS)
25472 +       uint16_t        target;         /* SCSI ID */
25473 +#else
25474 +       uint8_t         reserved;
25475 +       uint8_t         target;         /* SCSI ID */
25476 +#endif
25477 +       uint16_t        lun;            /* SCSI LUN */
25478 +       uint16_t        control_flags;  /* Control flags. */
25479 +       uint16_t        reserved_1;
25480 +       uint16_t        timeout;        /* Command timeout. */
25481 +       uint16_t        dseg_count;     /* Data segment count. */
25482 +       uint8_t         scsi_cdb[MAX_CMDSZ];    /* SCSI command words. */
25483 +       uint32_t        byte_count;     /* Total byte count. */
25484 +       uint32_t        dseg_0_address[2];      /* Data segment 0 address. */
25485 +       uint32_t        dseg_0_length;          /* Data segment 0 length. */
25486 +       uint32_t        dseg_1_address[2];      /* Data segment 1 address. */
25487 +       uint32_t        dseg_1_length;          /* Data segment 1 length. */
25488 +} cmd_a64_entry_t, request_t;
25489 +
25490 +/*
25491 + * ISP queue - continuation entry structure definition.
25492 + */
25493 +#define CONTINUE_TYPE          0x02    /* Continuation entry. */
25494 +typedef struct {
25495 +       uint8_t         entry_type;     /* Entry type. */
25496 +       uint8_t         entry_count;    /* Entry count. */
25497 +       uint8_t         sys_define;     /* System defined. */
25498 +       uint8_t         entry_status;   /* Entry Status. */
25499 +       uint32_t        reserved;
25500 +       uint32_t        dseg_0_address; /* Data segment 0 address. */
25501 +       uint32_t        dseg_0_length;  /* Data segment 0 length. */
25502 +       uint32_t        dseg_1_address; /* Data segment 1 address. */
25503 +       uint32_t        dseg_1_length;  /* Data segment 1 length. */
25504 +       uint32_t        dseg_2_address; /* Data segment 2 address. */
25505 +       uint32_t        dseg_2_length;  /* Data segment 2 length. */
25506 +       uint32_t        dseg_3_address; /* Data segment 3 address. */
25507 +       uint32_t        dseg_3_length;  /* Data segment 3 length. */
25508 +       uint32_t        dseg_4_address; /* Data segment 4 address. */
25509 +       uint32_t        dseg_4_length;  /* Data segment 4 length. */
25510 +       uint32_t        dseg_5_address; /* Data segment 5 address. */
25511 +       uint32_t        dseg_5_length;  /* Data segment 5 length. */
25512 +       uint32_t        dseg_6_address; /* Data segment 6 address. */
25513 +       uint32_t        dseg_6_length;  /* Data segment 6 length. */
25514 +} cont_entry_t;
25515 +
25516 +/*
25517 + * ISP queue - 64-Bit addressing, continuation entry structure definition.
25518 + */
25519 +#define CONTINUE_A64_TYPE      0x0A    /* Continuation A64 entry. */
25520 +typedef struct {
25521 +       uint8_t         entry_type;     /* Entry type. */
25522 +       uint8_t         entry_count;    /* Entry count. */
25523 +       uint8_t         sys_define;     /* System defined. */
25524 +       uint8_t         entry_status;   /* Entry Status. */
25525 +       uint32_t        dseg_0_address[2]; /* Data segment 0 address. */
25526 +       uint32_t        dseg_0_length;  /* Data segment 0 length. */
25527 +       uint32_t        dseg_1_address[2]; /* Data segment 1 address. */
25528 +       uint32_t        dseg_1_length;  /* Data segment 1 length. */
25529 +       uint32_t        dseg_2_address[2]; /* Data segment 2 address. */
25530 +       uint32_t        dseg_2_length;  /* Data segment 2 length. */
25531 +       uint32_t        dseg_3_address[2]; /* Data segment 3 address. */
25532 +       uint32_t        dseg_3_length;  /* Data segment 3 length. */
25533 +       uint32_t        dseg_4_address[2]; /* Data segment 4 address. */
25534 +       uint32_t        dseg_4_length;  /* Data segment 4 length. */
25535 +} cont_a64_entry_t;
25536 +
25537 +/*
25538 + * ISP queue - status entry structure definition.
25539 + */
25540 +#define STATUS_TYPE            0x03    /* Status entry. */
25541 +#define STS_SENSE_BUF_LEN      32
25542 +typedef struct {
25543 +       uint8_t         entry_type;     /* Entry type. */
25544 +       uint8_t         entry_count;    /* Entry count. */
25545 +       uint8_t         sys_define;     /* System defined. */
25546 +       uint8_t         entry_status;   /* Entry Status. */
25547 +#define RF_INV_E_ORDER BIT_5           /* Invalid entry order. */
25548 +#define RF_INV_E_COUNT BIT_4           /* Invalid entry count. */
25549 +#define RF_INV_E_PARAM BIT_3           /* Invalid entry parameter. */
25550 +#define RF_INV_E_TYPE  BIT_2           /* Invalid entry type. */
25551 +#define RF_BUSY                BIT_1           /* Busy */
25552 +       uint32_t        handle;         /* System handle. */
25553 +       uint16_t        scsi_status;    /* SCSI status. */
25554 +       uint16_t        comp_status;    /* Completion status. */
25555 +       uint16_t        state_flags;    /* State flags. */
25556 +       uint16_t        status_flags;   /* Status flags. */
25557 +#define IOCBSTAT_SF_LOGO BIT_13                /* Logo after 2 abts w/no */
25558 +                                       /* response (2 sec) */
25559 +       uint16_t        rsp_info_len;   /* Response Info Length. */
25560 +       uint16_t        req_sense_length; /* Request sense data length. */
25561 +       uint32_t        residual_length;  /* Residual transfer length. */
25562 +       uint8_t         rsp_info[8];    /* FCP response information. */
25563 +                                       /* Request sense data. */
25564 +       uint8_t         req_sense_data[STS_SENSE_BUF_LEN];
25565 +} sts_entry_t, response_t;
25566 +
25567 +/*
25568 + * ISP queue - marker entry structure definition.
25569 + */
25570 +#define MARKER_TYPE    0x04            /* Marker entry. */
25571 +typedef struct {
25572 +       uint8_t         entry_type;     /* Entry type. */
25573 +       uint8_t         entry_count;    /* Entry count. */
25574 +       uint8_t         sys_define;     /* System defined. */
25575 +       uint8_t         entry_status;   /* Entry Status. */
25576 +       uint32_t        sys_define_2;   /* System defined. */
25577 +#if defined(EXTENDED_IDS)
25578 +       uint16_t        target;         /* SCSI ID */
25579 +#else
25580 +       uint8_t         reserved;
25581 +       uint8_t         target;         /* SCSI ID */
25582 +#endif
25583 +       uint8_t         modifier;       /* Modifier (7-0). */
25584 +#define MK_SYNC_ID_LUN 0               /* Synchronize ID/LUN */
25585 +#define MK_SYNC_ID     1               /* Synchronize ID */
25586 +#define MK_SYNC_ALL    2               /* Synchronize all ID/LUN */
25587 +#define MK_SYNC_LIP    3               /* Synchronize all ID/LUN, */
25588 +                                       /* clear port changed, */
25589 +                                       /* use sequence number. */
25590 +       uint8_t         reserved_1;
25591 +       uint16_t        sequence_number; /* Sequence number of event */
25592 +       uint16_t        lun;            /* SCSI LUN */
25593 +       uint8_t         reserved_2[48];
25594 +} mrk_entry_t;
25595 +
25596 +/*
25597 + * ISP queue - Status Contination entry structure definition.
25598 + */
25599 +#define STATUS_CONT_TYPE       0x10    /* Status contination entry */
25600 +#define EXT_STS_SENSE_BUF_LEN  60
25601 +typedef struct {
25602 +       uint8_t         entry_type;     /* Entry type. */
25603 +       uint8_t         entry_count;    /* Entry count. */
25604 +       uint8_t         reserved;
25605 +       uint8_t         entry_status;   /* Entry Status. */
25606 +                                       /* Extended sense data. */
25607 +       uint8_t         req_sense_data[EXT_STS_SENSE_BUF_LEN];   
25608 +} sts_cont_entry_t;
25609 +
25610 +/*
25611 + * ISP queue - Management Server entry structure definition.
25612 + */
25613 +#define MS_IOCB_TYPE           0x29    /* Management Server IOCB entry */
25614 +typedef struct {
25615 +       uint8_t         entry_type;     /* Entry type. */
25616 +       uint8_t         entry_count;    /* Entry count. */
25617 +       uint8_t         sys_define;     /* System defined. */
25618 +       uint8_t         entry_status;   /* Entry Status. */
25619 +       uint32_t        handle1;        /* System handle. */
25620 +#if defined(EXTENDED_IDS)
25621 +       uint16_t        loop_id;
25622 +#else
25623 +       uint8_t         reserved;
25624 +       uint8_t         loop_id;
25625 +#endif
25626 +       uint16_t        status;
25627 +       uint16_t        control_flags;  /* Control flags. */
25628 +       uint16_t        reserved2;
25629 +       uint16_t        timeout;
25630 +       uint16_t        cmd_dsd_count;
25631 +       uint16_t        total_dsd_count;
25632 +       uint8_t         type;
25633 +       uint8_t         r_ctl;
25634 +       uint16_t        rx_id;
25635 +       uint16_t        reserved3;
25636 +       uint32_t        handle2;
25637 +       uint32_t        rsp_bytecount;
25638 +       uint32_t        req_bytecount;
25639 +       uint32_t        dseg_req_address[2]; /* Data segment 0 address. */
25640 +       uint32_t        dseg_req_length;     /* Data segment 0 length. */
25641 +       uint32_t        dseg_rsp_address[2]; /* Data segment 1 address. */
25642 +       uint32_t        dseg_rsp_length;     /* Data segment 1 length. */
25643 +} ms_iocb_entry_t;
25644 +
25645 +
25646 +/*
25647 + * ISP queue - Mailbox Command entry structure definition.
25648 + */
25649 +#define ET_MAILBOX_COMMAND     0x39
25650 +struct mbx_entry {
25651 +       uint8_t         entry_type;
25652 +
25653 +       uint8_t         entry_count;
25654 +       uint8_t         sys_define1;
25655 +       /* Use sys_define1 for source type */
25656 +#define SOURCE_SCSI    0x00
25657 +#define SOURCE_IP      0x01
25658 +#define SOURCE_VI      0x02
25659 +#define SOURCE_SCTP    0x03
25660 +#define SOURCE_MP      0x04
25661 +#define SOURCE_MPIOCTL 0x05
25662 +
25663 +       uint8_t         entry_status;
25664 +
25665 +       uint32_t        handle;
25666 +#if defined(EXTENDED_IDS)
25667 +       uint16_t        loop_id;
25668 +#else
25669 +       uint8_t         reserved_1;
25670 +       uint8_t         loop_id;
25671 +#endif
25672 +
25673 +       uint16_t        status;
25674 +       uint16_t        state_flags;
25675 +       uint16_t        status_flags;
25676 +       uint16_t        sys_define2[4];
25677 +       uint16_t        mb0;
25678 +       /* Mailbox command completion status */
25679 +#define MBS_PORT_ID_IN_USE             0x4007
25680 +#define MBS_LOOP_ID_IN_USE             0x4008
25681 +#define MBS_ALL_LOOP_IDS_IN_USE                0x4009
25682 +#define MBS_NAME_SERVER_NOT_LOGGED_IN  0x400A
25683 +
25684 +       uint16_t        mb1;
25685 +       /* Fabric login mailbox command option bits */
25686 +#define MBC_NO_PLOGI_IF_LOGGED_IN      0x01
25687 +#define MBC_NO_PROCESS_LOGIN           0x02
25688 +
25689 +       uint16_t        mb2;
25690 +       uint16_t        mb3;
25691 +       uint16_t        mb6;
25692 +       uint16_t        mb7;
25693 +#if defined(EXTENDED_IDS)
25694 +       uint16_t        mb9;
25695 +       uint16_t        mb10;
25696 +       uint32_t        reserved_2[6];
25697 +#else
25698 +       uint32_t        reserved_2[7];
25699 +#endif
25700 +};
25701 +
25702 +/*
25703 + * ISP request and response queue entry sizes
25704 + */
25705 +#define RESPONSE_ENTRY_SIZE    (sizeof(response_t))
25706 +#define REQUEST_ENTRY_SIZE     (sizeof(request_t))
25707 +
25708 +/*
25709 + * ISP status entry - completion status definitions.
25710 + */
25711 +#define CS_COMPLETE            0x0     /* No errors */
25712 +#define CS_INCOMPLETE          0x1     /* Incomplete transfer of cmd. */
25713 +#define CS_DMA                 0x2     /* A DMA direction error. */
25714 +#define CS_TRANSPORT           0x3     /* Transport error. */
25715 +#define CS_RESET               0x4     /* SCSI bus reset occurred */
25716 +#define CS_ABORTED             0x5     /* System aborted command. */
25717 +#define CS_TIMEOUT             0x6     /* Timeout error. */
25718 +#define CS_DATA_OVERRUN                0x7     /* Data overrun. */
25719 +#define CS_DATA_UNDERRUN       0x15    /* Data Underrun. */
25720 +#define CS_ABORT_MSG           0xE     /* Target rejected abort msg. */
25721 +#define CS_DEV_RESET_MSG       0x12    /* Target rejected dev rst msg. */
25722 +#define CS_PORT_UNAVAILABLE    0x28    /* Port unavailable (selection timeout) */
25723 +#define CS_PORT_LOGGED_OUT     0x29    /* Port Logged Out */
25724 +#define CS_PORT_CONFIG_CHG     0x2A    /* Port Configuration Changed */
25725 +#define CS_PORT_BUSY           0x2B    /* Port Busy */
25726 +#define CS_BAD_PAYLOAD         0x80    /* Driver defined */
25727 +#define CS_UNKNOWN             0x81    /* Driver defined */
25728 +#define CS_RETRY               0x82    /* Driver defined */
25729 +#define CS_QUEUE_FULL          0x1c    /* Target queue full*/
25730 +
25731 +/*
25732 + * ISP status entry - SCSI status byte bit definitions.
25733 + */
25734 +#define SS_MASK                        0xfff /* Mask off reserved bits BIT_12-BIT_15*/
25735 +#define SS_RESIDUAL_UNDER      BIT_11
25736 +#define SS_RESIDUAL_OVER       BIT_10
25737 +#define SS_SENSE_LEN_VALID     BIT_9
25738 +#if defined(ISP2100)
25739 +#define SS_RESIDUAL_LEN_VALID  BIT_8
25740 +#else
25741 +#define SS_RESPONSE_INFO_LEN_VALID     BIT_8
25742 +#endif
25743 +
25744 +#define SS_RESERVE_CONFLICT    (BIT_4 | BIT_3)
25745 +#define SS_BUSY_CONDITION      BIT_3
25746 +#define SS_CONDITION_MET       BIT_2
25747 +#define SS_CHECK_CONDITION     BIT_1
25748 +
25749 +/*
25750 + * 24 bit port ID type definition.
25751 + */
25752 +typedef union {
25753 +       uint32_t        b24 : 24;
25754 +
25755 +       struct {
25756 +               uint8_t d_id[3];
25757 +               uint8_t rsvd_1;
25758 +       } r;
25759 +
25760 +       struct {
25761 +               uint8_t al_pa;
25762 +               uint8_t area;
25763 +               uint8_t domain;
25764 +               uint8_t rsvd_1;
25765 +       } b;
25766 +} port_id_t;
25767 +
25768 +/*
25769 + * Switch info gathering structure.
25770 + */
25771 +typedef struct {
25772 +       port_id_t       d_id;
25773 +       uint8_t         node_name[WWN_SIZE];
25774 +       uint8_t         port_name[WWN_SIZE];
25775 +       uint32_t        type;
25776 +#define SW_TYPE_SCSI   BIT_0
25777 +#define SW_TYPE_IP     BIT_1
25778 +} sw_info_t;
25779 +
25780 +//TODO This should be removed (simplified fcport list)
25781 +typedef struct
25782 +{
25783 +    port_id_t d_id;
25784 +    uint8_t   name[WWN_SIZE];
25785 +    uint8_t   wwn[WWN_SIZE];          /* port name */
25786 +    uint16_t  loop_id;
25787 +    uint16_t   flag;
25788 +  /* flags bits defined as follows */
25789 +#define DEV_PUBLIC          BIT_0
25790 +#define DEV_LUNMASK_SET     BIT_1  /* some LUNs masked for this device */
25791 +#define        DEV_TAPE_DEVICE         BIT_2
25792 +#define        DEV_RELOGIN             BIT_3
25793 +#define        DEV_PORT_DOWN       BIT_4
25794 +#define        DEV_CONFIGURED          BIT_5
25795 +#define        DEV_ABSENCE             BIT_6
25796 +#define        DEV_RETURN              BIT_7
25797 +#define        DEV_INITIATOR           BIT_8
25798 +#define        DEV_FLAG_VSA            BIT_9
25799 +       int                     port_login_retry_count;
25800 +    uint8_t  port_timer;
25801 +}fcdev_t;
25802 +
25803 +/* New device name list struct; used in configure_fabric. */
25804 +struct new_dev {
25805 +    port_id_t  d_id;
25806 +    uint8_t    name[WWN_SIZE];
25807 +    uint8_t    wwn[WWN_SIZE];          /* port name */
25808 +};
25809 +#define LOGOUT_PERFORMED  0x01
25810 +
25811 +
25812 +/*
25813 + * Inquiry command structure.
25814 + */
25815 +#define INQ_SCSI_OPCODE                0x12
25816 +#define        INQ_DATA_SIZE           36
25817 +
25818 +/*
25819 + * Inquiry mailbox IOCB packet definition.
25820 + */
25821 +typedef struct {
25822 +       union {
25823 +               cmd_a64_entry_t cmd;
25824 +               sts_entry_t     rsp;
25825 +       } p;
25826 +       uint8_t         inq[INQ_DATA_SIZE];
25827 +} inq_cmd_rsp_t;
25828 +
25829 +/*
25830 + * Report LUN command structure.
25831 + */
25832 +#define RPT_LUN_SCSI_OPCODE    0xA0
25833 +#define CHAR_TO_SHORT(a, b)    (uint16_t)((uint8_t)b << 8 | (uint8_t)a)
25834 +
25835 +typedef struct {
25836 +       uint32_t        len;
25837 +       uint32_t        rsrv;
25838 +} rpt_hdr_t;
25839 +
25840 +typedef struct {
25841 +       struct {
25842 +               uint8_t b : 6;
25843 +               uint8_t address_method : 2;
25844 +       } msb;
25845 +       uint8_t         lsb;
25846 +       uint8_t         unused[6];
25847 +} rpt_lun_t;
25848 +
25849 +typedef struct {
25850 +       rpt_hdr_t       hdr;
25851 +       rpt_lun_t       lst[MAX_LUNS];
25852 +} rpt_lun_lst_t;
25853 +
25854 +/*
25855 + * Report Lun mailbox IOCB packet definition.
25856 + */
25857 +typedef struct {
25858 +       union {
25859 +               cmd_a64_entry_t cmd;
25860 +               sts_entry_t rsp;
25861 +       } p;
25862 +       rpt_lun_lst_t list;
25863 +} rpt_lun_cmd_rsp_t;
25864 +
25865 +//TODO Continue formatting
25866 +/*
25867 + * SCSI Target Queue structure
25868 + */
25869 +typedef struct os_tgt {
25870 +       struct os_lun           *olun[MAX_LUNS]; /* LUN context pointer. */
25871 +       uint8_t                 port_down_retry_count;
25872 +       struct scsi_qla_host    *ha;
25873 +       uint32_t                down_timer;
25874 +
25875 +       /* Persistent binding information */
25876 +       port_id_t               d_id;
25877 +       uint8_t                 node_name[WWN_SIZE];
25878 +       uint8_t                 port_name[WWN_SIZE];
25879 +       struct fc_port          *vis_port;
25880 +
25881 +       uint8_t                 flags;
25882 +#define        TGT_BUSY                BIT_0           /* Reached hi-water mark */
25883 +#define        TGT_TAGGED_QUEUE        BIT_1           /* Tagged queuing. */
25884 +} os_tgt_t;
25885 +
25886 +/*
25887 + * SCSI LUN Queue structure
25888 + */
25889 +typedef struct os_lun {
25890 +       struct fc_lun   *fclun;         /* FC LUN context pointer. */
25891 +       spinlock_t      q_lock;       /* Lun Lock */
25892 +
25893 +       u_long          io_cnt;     /* total xfer count since boot */
25894 +       u_long          out_cnt;    /* total outstanding IO count */
25895 +       u_long          w_cnt;      /* total writes */
25896 +       u_long          r_cnt;      /* total reads */
25897 +       u_long          avg_time;      /*  */
25898 +
25899 +       unsigned long   q_flag;
25900 +#define        LUN_MPIO_BUSY           2       /* Lun is changing paths  */
25901 +#define        LUN_SCSI_SCAN_DONE      BIT_3   /* indicates the scsi scan is done */
25902 +#define        LUN_EXEC_DELAYED        7       /* Lun execution is delayed */
25903 +
25904 +       u_long          q_timeout;           /* total command timeouts */
25905 +       atomic_t        q_timer;  /* suspend timer */
25906 +       uint32_t        q_count;        /* current count */
25907 +       uint32_t        q_max;          /* maxmum count lun can be suspended */
25908 +       uint8_t         q_state;        /* lun State */
25909 +#define        LUN_STATE_READY 1       /* indicates the lun is ready for i/o */
25910 +#define        LUN_STATE_RUN   2       /* indicates the lun has a timer running */
25911 +#define        LUN_STATE_WAIT  3       /* indicates the lun is suspended */
25912 +#define        LUN_STATE_TIMEOUT  4    /* indicates the lun has timed out */
25913 +
25914 +} os_lun_t;
25915 +
25916 +
25917 +/* LUN BitMask structure definition, array of 32bit words,
25918 + * 1 bit per lun.  When bit == 1, the lun is masked.
25919 + * Most significant bit of mask[0] is lun 0, bit 24 is lun 7.
25920 + */
25921 +typedef struct lun_bit_mask {
25922 +       /* Must allocate at least enough bits to accomodate all LUNs */
25923 +#if ((MAX_FIBRE_LUNS & 0x7) == 0)
25924 +       UINT8   mask[MAX_FIBRE_LUNS >> 3];
25925 +#else
25926 +       uint8_t mask[(MAX_FIBRE_LUNS + 8) >> 3];
25927 +#endif
25928 +} lun_bit_mask_t;
25929 +
25930 +/*
25931 + * Fibre channel port structure.
25932 + */
25933 +typedef struct fc_port {
25934 +       struct list_head        list;
25935 +
25936 +       struct list_head        fcluns;
25937 +
25938 +       struct scsi_qla_host    *ha;
25939 +       struct scsi_qla_host    *vis_ha; /* only used when suspending lun */
25940 +       port_id_t               d_id;
25941 +       uint16_t                loop_id;
25942 +       uint16_t                old_loop_id;
25943 +       int16_t                 lun_cnt;
25944 +       int16_t                 dev_id; /* index in fc_dev table */
25945 +#define FC_NO_LOOP_ID          0x100
25946 +       uint8_t                 node_name[WWN_SIZE];    /* Big Endian. */
25947 +       uint8_t                 port_name[WWN_SIZE];    /* Big Endian. */
25948 +       uint8_t                 mp_byte;        /* multi-path byte (not used) */
25949 +       uint8_t         cur_path;               /* current path id */
25950 +       int                     port_login_retry_count;
25951 +       int             login_retry;
25952 +       atomic_t                state;          /* port state */
25953 +#define FC_DEVICE_DEAD         1
25954 +#define FC_DEVICE_LOST         2
25955 +#define FC_ONLINE              3
25956 +#define FC_LOGIN_NEEDED                4
25957 +
25958 +       uint8_t                 flags;
25959 +#define        FC_FABRIC_DEVICE        BIT_0
25960 +#define        FC_TAPE_DEVICE          BIT_1
25961 +#define        FC_INITIATOR_DEVICE     BIT_2
25962 +#define        FC_CONFIG               BIT_3
25963 +#define        FC_VSA                  BIT_4
25964 +#define        FC_HD_DEVICE            BIT_5
25965 +#define        FC_SUPPORT_RPT_LUNS     BIT_6
25966 +       atomic_t        port_down_timer;
25967 +       lun_bit_mask_t  lun_mask;
25968 +} fc_port_t;
25969 +
25970 +/*
25971 + * Fibre channel LUN structure.
25972 + */
25973 +typedef struct fc_lun {
25974 +        struct list_head       list;
25975 +
25976 +       fc_port_t               *fcport;
25977 +       uint16_t                lun;
25978 +       uint8_t                 max_path_retries;
25979 +       uint8_t                 flags;
25980 +#define        FC_DISCON_LUN           BIT_0
25981 +} fc_lun_t;
25982 +
25983 +typedef struct
25984 +{
25985 +    uint8_t   in_use;
25986 +}fabricid_t;
25987 +
25988 +typedef struct {
25989 +       struct list_head        list;
25990 +
25991 +       uint8_t         node_name[WWN_SIZE];
25992 +       uint8_t         port_name[WWN_SIZE];
25993 +       port_id_t       d_id;
25994 +       uint16_t        loop_id;
25995 +} fc_initiator_t;
25996 +
25997 +/*
25998 + * Registered State Change Notification structures.
25999 + */
26000 +typedef struct {
26001 +    port_id_t d_id;
26002 +    uint8_t format;
26003 +} rscn_t;
26004 +
26005 +/*
26006 + * Flash Database structures.
26007 + */
26008 +#define FLASH_DATABASE_0        0x1c000
26009 +#define FLASH_DATABASE_1        0x18000
26010 +#define FLASH_DATABASE_VERSION  1
26011 +
26012 +typedef struct
26013 +{
26014 +    uint32_t seq;
26015 +    uint8_t  version;
26016 +    uint8_t  checksum;
26017 +    uint16_t size;
26018 +    uint8_t  spares[8];
26019 +}flash_hdr_t;
26020 +
26021 +typedef struct
26022 +{
26023 +    uint8_t name[WWN_SIZE];
26024 +    uint8_t  spares[8];
26025 +}flash_node_t;
26026 +
26027 +typedef struct
26028 +{
26029 +    flash_hdr_t  hdr;
26030 +    flash_node_t node[MAX_FIBRE_DEVICES];
26031 +}flash_database_t;
26032 +//TODO End formatting
26033 +
26034 +/*
26035 + * FC-CT interface
26036 + *
26037 + * NOTE: All structures are in big-endian in form.
26038 + */
26039 +
26040 +#define CT_REJECT_RESPONSE     0x8001
26041 +#define CT_ACCEPT_RESPONSE     0x8002
26042 +
26043 +#define NS_N_PORT_TYPE 0x01
26044 +#define NS_NL_PORT_TYPE        0x02
26045 +#define NS_NX_PORT_TYPE        0x7F
26046 +
26047 +#define        GA_NXT_CMD      0x100
26048 +#define        GA_NXT_REQ_SIZE (16 + 4)
26049 +#define        GA_NXT_RSP_SIZE (16 + 620)
26050 +
26051 +#define        GID_PT_CMD      0x1A1
26052 +#define        GID_PT_REQ_SIZE (16 + 4)
26053 +#define        GID_PT_RSP_SIZE (16 + (MAX_FIBRE_DEVICES * 4))
26054 +
26055 +#define        GPN_ID_CMD      0x112
26056 +#define        GPN_ID_REQ_SIZE (16 + 4)
26057 +#define        GPN_ID_RSP_SIZE (16 + 8)
26058 +
26059 +#define        GNN_ID_CMD      0x113
26060 +#define        GNN_ID_REQ_SIZE (16 + 4)
26061 +#define        GNN_ID_RSP_SIZE (16 + 8)
26062 +
26063 +#define        GFT_ID_CMD      0x117
26064 +#define        GFT_ID_REQ_SIZE (16 + 4)
26065 +#define        GFT_ID_RSP_SIZE (16 + 32)
26066 +
26067 +#define        RFT_ID_CMD      0x217
26068 +#define        RFT_ID_REQ_SIZE (16 + 4 + 32)
26069 +#define        RFT_ID_RSP_SIZE 16
26070 +
26071 +#define        RFF_ID_CMD      0x21F
26072 +#define        RFF_ID_REQ_SIZE (16 + 4 + 2 + 1 + 1)
26073 +#define        RFF_ID_RSP_SIZE 16
26074 +
26075 +#define        RNN_ID_CMD      0x213
26076 +#define        RNN_ID_REQ_SIZE (16 + 4 + 8)
26077 +#define        RNN_ID_RSP_SIZE 16
26078 +
26079 +#define        RSNN_NN_CMD      0x239
26080 +#define        RSNN_NN_REQ_SIZE (16 + 8 + 1 + 255)
26081 +#define        RSNN_NN_RSP_SIZE 16
26082 +
26083 +/* CT command header -- request/response common fields */
26084 +struct ct_cmd_hdr {
26085 +       uint8_t revision;
26086 +       uint8_t in_id[3];
26087 +       uint8_t gs_type;
26088 +       uint8_t gs_subtype;
26089 +       uint8_t options;
26090 +       uint8_t reserved;
26091 +};
26092 +
26093 +/* CT command request */
26094 +struct ct_sns_req {
26095 +       struct ct_cmd_hdr header;
26096 +       uint16_t        command;
26097 +       uint16_t        max_rsp_size;
26098 +       uint32_t        reserved;
26099 +
26100 +       union {
26101 +               /* GA_NXT, GPN_ID, GNN_ID, GFT_ID */
26102 +               struct {
26103 +                       uint8_t reserved;
26104 +                       uint8_t port_id[3];
26105 +               } port_id;
26106 +
26107 +               struct {
26108 +                       uint8_t port_type;
26109 +                       uint8_t domain;
26110 +                       uint8_t area;
26111 +                       uint8_t reserved;
26112 +               } gid_pt;
26113 +
26114 +               struct {
26115 +                       uint8_t reserved;
26116 +                       uint8_t port_id[3];
26117 +                       uint8_t fc4_types[32];
26118 +               } rft_id;
26119 +
26120 +               struct {
26121 +                       uint8_t reserved;
26122 +                       uint8_t port_id[3];
26123 +                       uint16_t reserved2;
26124 +                       uint8_t fc4_feature;
26125 +                       uint8_t fc4_type;
26126 +               } rff_id;
26127 +
26128 +               struct {
26129 +                       uint8_t reserved;
26130 +                       uint8_t port_id[3];
26131 +                       uint8_t node_name[8];
26132 +               } rnn_id;
26133 +
26134 +               struct {
26135 +                       uint8_t node_name[8];
26136 +                       uint8_t name_len;
26137 +                       uint8_t sym_node_name[255];
26138 +               } rsnn_nn;
26139 +       } req;
26140 +};
26141 +
26142 +/* CT command response header */
26143 +struct ct_rsp_hdr {
26144 +       struct ct_cmd_hdr header;
26145 +       uint16_t        response;
26146 +       uint16_t        residual;
26147 +       uint8_t         reserved;
26148 +       uint8_t         reason_code;
26149 +       uint8_t         explanation_code;
26150 +       uint8_t         vendor_unique;
26151 +};
26152 +
26153 +struct ct_sns_gid_pt_data {
26154 +       uint8_t control_byte;
26155 +       uint8_t port_id[3];
26156 +};
26157 +
26158 +struct ct_sns_rsp {
26159 +       struct ct_rsp_hdr header;
26160 +
26161 +       union {
26162 +               struct {
26163 +                       uint8_t port_type;
26164 +                       uint8_t port_id[3];
26165 +                       uint8_t port_name[8];
26166 +                       uint8_t sym_port_name_len;
26167 +                       uint8_t sym_port_name[255];
26168 +                       uint8_t node_name[8];
26169 +                       uint8_t sym_node_name_len;
26170 +                       uint8_t sym_node_name[255];
26171 +                       uint8_t init_proc_assoc[8];
26172 +                       uint8_t node_ip_addr[16];
26173 +                       uint8_t class_of_service[4];
26174 +                       uint8_t fc4_types[32];
26175 +                       uint8_t ip_address[16];
26176 +                       uint8_t fabric_port_name[8];
26177 +                       uint8_t reserved;
26178 +                       uint8_t hard_address[3];
26179 +               } ga_nxt;
26180 +
26181 +               struct {
26182 +                       struct ct_sns_gid_pt_data entries[MAX_FIBRE_DEVICES];
26183 +               } gid_pt;
26184 +
26185 +               struct {
26186 +                       uint8_t port_name[8];
26187 +               } gpn_id;
26188 +
26189 +               struct {
26190 +                       uint8_t node_name[8];
26191 +               } gnn_id;
26192 +
26193 +               struct {
26194 +                       uint8_t fc4_types[32];
26195 +               } gft_id;
26196 +       } rsp;
26197 +};
26198 +
26199 +struct ct_sns_pkt {
26200 +       union {
26201 +               struct ct_sns_req req;
26202 +               struct ct_sns_rsp rsp;
26203 +       } p;
26204 +};
26205 +
26206 +#if defined(ISP2100)
26207 +#define GN_LIST_LENGTH  126 * sizeof(port_list_entry_t)
26208 +#else
26209 +#define GN_LIST_LENGTH  256 * sizeof(port_list_entry_t)
26210 +#endif
26211 +
26212 +/*
26213 + * Structure used in Get Port List mailbox command (0x75).
26214 + */
26215 +typedef struct {
26216 +       uint8_t         name[WWN_SIZE];
26217 +       uint16_t        loop_id;
26218 +} port_list_entry_t;
26219 +
26220 +/*
26221 + * Structure used for device info.
26222 + */
26223 +typedef struct {
26224 +       uint8_t         name[WWN_SIZE];
26225 +       uint8_t         wwn[WWN_SIZE];
26226 +       uint16_t                loop_id;
26227 +       uint8_t         port_id[3];
26228 +} device_data_t;
26229 +
26230 +//TODO Complete Formatting...
26231 +
26232 +/* Mailbox command completion status */
26233 +#define MBS_PORT_ID_IN_USE              0x4007
26234 +#define MBS_LOOP_ID_IN_USE              0x4008
26235 +#define MBS_ALL_LOOP_IDS_IN_USE         0x4009
26236 +#define MBS_NAME_SERVER_NOT_LOGGED_IN   0x400A
26237 +
26238 +
26239 +#define MAX_IOCTL_WAIT_THREADS 32
26240 +typedef struct _wait_q_t {
26241 +       uint8_t                 flags;
26242 +#define WQ_IN_USE      0x1
26243 +
26244 +       struct semaphore        wait_q_sem;
26245 +       struct _wait_q_t        *pnext;
26246 +} wait_q_t;
26247 +
26248 +typedef struct hba_ioctl{
26249 +
26250 +       /* Ioctl cmd serialization */
26251 +       uint16_t        access_bits; /* bits should be used atomically */
26252 +#define IOCTL_ACTIVE   1 /* first bit */
26253 +#define IOCTL_WANT     2 /* 2nd bit */
26254 +
26255 +       spinlock_t      wait_q_lock; /* IOCTL wait_q Queue Lock */
26256 +       wait_q_t        wait_q_arr[MAX_IOCTL_WAIT_THREADS];
26257 +       wait_q_t        *wait_q_head;
26258 +       wait_q_t        *wait_q_tail;
26259 +
26260 +       /* Passthru cmd/completion */
26261 +       struct semaphore        cmpl_sem;
26262 +       struct timer_list       cmpl_timer;
26263 +       uint8_t         ioctl_tov;
26264 +       uint8_t         SCSIPT_InProgress;
26265 +       uint8_t         MSIOCB_InProgress;
26266 +
26267 +       os_tgt_t        *ioctl_tq;
26268 +       os_lun_t        *ioctl_lq;
26269 +
26270 +       /* AEN queue */
26271 +       void            *aen_tracking_queue;/* points to async events buffer */
26272 +       uint8_t         aen_q_head;     /* index to the current head of q */
26273 +       uint8_t         aen_q_tail;     /* index to the current tail of q */
26274 +
26275 +       /* Misc. */
26276 +       uint32_t        flags;
26277 +#define        IOCTL_OPEN                      BIT_0
26278 +#define        IOCTL_AEN_TRACKING_ENABLE       BIT_1
26279 +       uint8_t         *scrap_mem;     /* per ha scrap buf for ioctl usage */
26280 +       uint32_t        scrap_mem_size; /* total size */
26281 +       uint32_t        scrap_mem_used; /* portion used */
26282 +
26283 +} hba_ioctl_context;
26284 +
26285 +/* Mailbox command semaphore queue for command serialization */
26286 +typedef struct _mbx_cmdq_t {
26287 +       struct semaphore        cmd_sem;
26288 +       struct _mbx_cmdq_t      *pnext;
26289 +} mbx_cmdq_t;
26290 +
26291 +/*
26292 + * Linux Host Adapter structure
26293 + */
26294 +typedef struct scsi_qla_host
26295 +{
26296 +       struct list_head        list;
26297 +
26298 +       /* Linux adapter configuration data */
26299 +       struct Scsi_Host *host;             /* pointer to host data */
26300 +       struct pci_dev   *pdev;
26301 +
26302 +       u_long            host_no;
26303 +       u_long            instance;
26304 +
26305 +       device_reg_t     *iobase;           /* Base Memory-mapped I/O address */
26306 +       volatile unsigned char  *mmpbase;      /* memory mapped address */
26307 +
26308 +       struct qla_board_info   *brd_info;
26309 +       uint16_t                fw_major_version;
26310 +       uint16_t                fw_minor_version;
26311 +       uint16_t                fw_subminor_version;
26312 +       uint16_t                fw_attributes;
26313 +       uint32_t                fw_transfer_size;
26314 +
26315 +       uint16_t                fw_options1;
26316 +       uint16_t                fw_options2;
26317 +       uint16_t                fw_options3;
26318 +       uint8_t                 fw_seriallink_options[2];
26319 +
26320 +       ms_iocb_entry_t         *ms_iocb;
26321 +       dma_addr_t              ms_iocb_dma;
26322 +       struct ct_sns_pkt       *ct_sns;
26323 +       dma_addr_t              ct_sns_dma;
26324 +
26325 +       uint16_t                isp_ctrl_status;
26326 +
26327 +       uint16_t           revision;
26328 +       uint8_t           ports;
26329 +       u_long            actthreads;
26330 +       u_long            ipreq_cnt;
26331 +       u_long            qthreads;
26332 +       u_long            spurious_int;
26333 +       uint32_t        total_isr_cnt;          /* Interrupt count */
26334 +       uint32_t        total_isp_aborts;       /* controller err cnt */
26335 +       uint32_t        total_lip_cnt;          /* LIP cnt */
26336 +       uint32_t        total_dev_errs;         /* device error cnt */
26337 +       uint32_t        total_ios;              /* IO cnt */
26338 +       uint64_t        total_bytes;            /* xfr byte cnt */
26339 +
26340 +       /* Adapter I/O statistics for failover */
26341 +       uint64_t        IosRequested;
26342 +       uint64_t        BytesRequested;
26343 +       uint64_t        IosExecuted;
26344 +       uint64_t        BytesExecuted;
26345 +
26346 +       /* ISP connection configuration data */
26347 +       uint16_t         max_public_loop_ids;
26348 +       uint16_t         min_external_loopid; /* First external loop Id */
26349 +       uint8_t          current_topology; /* Current ISP configuration */
26350 +       uint8_t          prev_topology;    /* Previous ISP configuration */
26351 +                     #define ISP_CFG_NL     1
26352 +                     #define ISP_CFG_N      2
26353 +                     #define ISP_CFG_FL     4
26354 +                     #define ISP_CFG_F      8
26355 +       uint8_t         id;                 /* Host adapter SCSI id */
26356 +       uint16_t        loop_id;       /* Host adapter loop id */
26357 +       port_id_t       d_id;           /* Host adapter port id */
26358 +
26359 +       uint8_t         operating_mode;  /* current F/W operating mode */
26360 +               #define LOOP      0
26361 +               #define P2P       1
26362 +               #define LOOP_P2P  2
26363 +               #define P2P_LOOP  3
26364 +
26365 +       uint8_t         active_fc4_types;/* active fc4 types */
26366 +       uint8_t         current_speed;   /* current F/W operating speed */
26367 +
26368 +       /* NVRAM configuration data */
26369 +       uint16_t        loop_reset_delay;   /* Loop reset delay. */
26370 +       uint16_t        hiwat;              /* High water mark per device. */
26371 +       uint16_t        execution_throttle; /* queue depth */ 
26372 +       uint16_t        minimum_timeout;    /* Minimum timeout. */
26373 +       uint8_t         retry_count;
26374 +       uint8_t         login_timeout;
26375 +       int             port_down_retry_count;
26376 +       uint8_t         loop_down_timeout;
26377 +       uint16_t        max_probe_luns;
26378 +       uint16_t        max_luns;
26379 +       uint16_t        max_targets;
26380 +       
26381 +       /* Fibre Channel Device List. */
26382 +        struct list_head       fcports;
26383 +
26384 +       /* OS target queue pointers. */
26385 +       os_tgt_t                *otgt[MAX_FIBRE_DEVICES];
26386 +
26387 +       /* Fibre Channel Device Database and LIP sequence. */
26388 +       fcdev_t           fc_db[MAX_FIBRE_DEVICES]; /* Driver database. */
26389 +       uint32_t          flash_db;         /* Flash database address in use. */
26390 +       fabricid_t        fabricid[MAX_FIBRE_DEVICES]; /* Fabric ids table . */
26391 +       uint32_t          flash_seq;        /* Flash database seq # in use. */
26392 +       volatile uint16_t lip_seq;          /* LIP sequence number. */
26393 +       
26394 +       /* Tracks host adapters we find */      
26395 +       struct list_head        fcinitiators;   /* Initiator database */
26396 +    
26397 +         /* RSCN queue. */
26398 +       rscn_t rscn_queue[MAX_RSCN_COUNT];
26399 +       uint8_t rscn_in_ptr;
26400 +       uint8_t rscn_out_ptr;
26401 +
26402 +       /* Doneq bottom half handler */
26403 +       struct work_struct run_qla_task;
26404 +
26405 +       /* __get_free_pages() srb_t pool */
26406 +       srb_t   *srb_pool;
26407 +       int     srb_pool_order;
26408 +
26409 +       /*
26410 +        * Need to hold the list_lock with irq's disabled in order to
26411 +        * access the following list.
26412 +        * This list_lock is of lower priority than the io_request_lock.
26413 +        */
26414 +       /*********************************************************/
26415 +        spinlock_t              list_lock;      /* lock to guard lists which 
26416 +                                                  hold srb_t's*/
26417 +        struct list_head        retry_queue;    /* watchdog queue */
26418 +        struct list_head        done_queue;     /* job on done queue */
26419 +        struct list_head        failover_queue; /* failover list link. */
26420 +       struct list_head        free_queue;     /* SRB free queue */
26421 +       struct list_head        scsi_retry_queue;     /* SCSI retry queue */
26422 +       
26423 +       struct list_head        pending_queue;  /* SCSI command pending queue */
26424 +
26425 +        /*********************************************************/
26426 +
26427 +       /* This spinlock is used to protect "io transactions", you must 
26428 +        * aquire it before doing any IO to the card, eg with RD_REG*() and
26429 +        * WRT_REG*() for the duration of your entire commandtransaction.
26430 +        *
26431 +        * This spinlock is of lower priority than the io request lock.
26432 +        */
26433 +
26434 +       spinlock_t              hardware_lock;
26435 +
26436 +       /* Linux kernel thread */
26437 +#if 0
26438 +       struct task_struct  *dpc_handler;     /* kernel thread */
26439 +       struct semaphore    *dpc_notify;     /* requester waits for DPC on this semaphore */
26440 +       struct semaphore    dpc_sem;       /* DPC's semaphore */
26441 +#endif
26442 +       pid_t                   dpc_pid;
26443 +       int                     dpc_should_die;
26444 +       struct completion       dpc_inited;
26445 +       struct completion       dpc_exited;
26446 +       struct semaphore        *dpc_wait;
26447 +
26448 +       uint8_t dpc_active;                  /* DPC routine is active */
26449 +
26450 +       /* Received ISP mailbox data. */
26451 +       volatile uint16_t mailbox_out[MAILBOX_REGISTER_COUNT];
26452 +
26453 +       /* Outstandings ISP commands. */
26454 +       srb_t           *outstanding_cmds[MAX_OUTSTANDING_COMMANDS];
26455 +       uint32_t current_outstanding_cmd; 
26456 +
26457 +       /* ISP ring lock, rings, and indexes */
26458 +       dma_addr_t      request_dma;        /* Physical address. */
26459 +       request_t       *request_ring;      /* Base virtual address */
26460 +       request_t       *request_ring_ptr;  /* Current address. */
26461 +       uint16_t        req_ring_index;     /* Current index. */
26462 +       uint16_t        req_q_cnt;          /* Number of available entries. */
26463 +
26464 +       dma_addr_t      response_dma;       /* Physical address. */
26465 +       response_t      *response_ring;     /* Base virtual address */
26466 +       response_t      *response_ring_ptr; /* Current address. */
26467 +       uint16_t        rsp_ring_index;     /* Current index. */
26468 +    
26469 +#if defined(FC_IP_SUPPORT)
26470 +       /* Data for IP support */
26471 +       uint8_t         ip_port_name[WWN_SIZE];
26472 +
26473 +       struct risc_rec_entry *risc_rec_q;      /* RISC receive queue */
26474 +       dma_addr_t      risc_rec_q_dma;         /*  physical address */
26475 +       uint16_t        rec_entries_in;
26476 +       uint16_t        rec_entries_out;
26477 +
26478 +       struct send_cb  *active_scb_q[MAX_SEND_PACKETS];
26479 +       uint32_t        current_scb_q_idx;
26480 +
26481 +       uint32_t        mtu;
26482 +       uint16_t        header_size;
26483 +       uint16_t        max_receive_buffers;
26484 +       struct buffer_cb *receive_buffers;
26485 +       uint32_t        receive_buff_data_size;
26486 +
26487 +       void            (*send_completion_routine)
26488 +                               (struct send_cb *scb);
26489 +       void            *receive_packets_context;
26490 +       void            (*receive_packets_routine)
26491 +                               (void *context, struct buffer_cb *bcb);
26492 +       void            *notify_context;
26493 +       void            (*notify_routine)
26494 +                               (void *context, uint32_t type);
26495 +
26496 +       struct ip_device ipdev_db[QLLAN_MAX_IP_DEVICES];
26497 +       struct ip_device *ipdev_db_next_free;
26498 +       struct ip_device *ipdev_db_top;
26499 +       struct ip_device *ipdev_db_bottom;
26500 +#endif
26501 +
26502 +       /* Firmware Initialization Control Block data */
26503 +       dma_addr_t      init_cb_dma;         /* Physical address. */
26504 +       init_cb_t       *init_cb;
26505 +  
26506 +       /* Timeout timers. */
26507 +       uint8_t         queue_restart_timer;   
26508 +       atomic_t         loop_down_timer;         /* loop down timer */
26509 +       uint8_t         loop_down_abort_time;    /* port down timer */
26510 +       uint32_t        timer_active;
26511 +       uint32_t        forceLip;
26512 +       struct timer_list        timer;
26513 +
26514 +       /* These are used by mailbox operations. */
26515 +       mbx_cmd_t       *mcp;
26516 +       unsigned long   mbx_cmd_flags;
26517 +#define MBX_CMD_ACTIVE 1 /* first bit */
26518 +#define MBX_CMD_WANT   2 /* 2nd bit */
26519 +#define MBX_INTERRUPT  3 /* 3rd bit */
26520 +#define MBX_INTR_WAIT   4 /* 4rd bit */
26521 +
26522 +       spinlock_t      mbx_reg_lock;   /* Mbx Cmd Register Lock */
26523 +       spinlock_t      mbx_q_lock;     /* Mbx Active Cmd Queue Lock */
26524 +       spinlock_t      mbx_bits_lock;  /* Mailbox access bits Lock */
26525 +
26526 +       uint32_t        mbx_lock_bits;  /* controlled by mbx_bits_lock */
26527 +#define MBX_CMD_LOCK   1 /* first bit */
26528 +#define MBX_CMD_WANT   2 /* 2nd bit */
26529 +
26530 +       struct semaphore  mbx_intr_sem;  /* Used for completion notification */
26531 +
26532 +       mbx_cmdq_t      *mbx_sem_pool_head;  /* Head Pointer to a list of
26533 +                                             * recyclable mbx semaphore pool
26534 +                                             * to be used during run time.
26535 +                                             */
26536 +       mbx_cmdq_t      *mbx_sem_pool_tail;  /* Tail Pointer to semaphore pool*/
26537 +#define MBQ_INIT_LEN   16 /* initial mbx sem pool q len. actual len may vary */
26538 +
26539 +       mbx_cmdq_t      *mbx_q_head; /* Head Pointer to sem q for active cmds */
26540 +       mbx_cmdq_t      *mbx_q_tail; /* Tail Pointer to sem q for active cmds */
26541 +
26542 +
26543 +        uint32_t       retry_q_cnt; 
26544 +        uint32_t       scsi_retry_q_cnt; 
26545 +        uint32_t       failover_cnt; 
26546 +
26547 +       uint8_t *cmdline;
26548 +
26549 +        uint32_t       login_retry_count; 
26550 +    
26551 +       volatile struct
26552 +       {
26553 +               uint32_t     online                  :1;   /* 0 */
26554 +               uint32_t     enable_64bit_addressing :1;   /* 1 */
26555 +               uint32_t     mbox_int                :1;   /* 2 */
26556 +               uint32_t     mbox_busy               :1;   /* 3 */
26557 +               // UNUSED and UNASSIGNED
26558 +               uint32_t     port_name_used          :1;   /* 4 */
26559 +               uint32_t     failover_enabled        :1;   /* 5 */
26560 +               uint32_t     watchdog_enabled        :1;   /* 6 */
26561 +               uint32_t     cfg_suspended           :1;   /* 7 */
26562 +
26563 +               uint32_t     disable_host_adapter    :1;   /* 8 */
26564 +               uint32_t     rscn_queue_overflow     :1;   /* 9 */
26565 +               uint32_t     reset_active            :1;   /* 10 */
26566 +               uint32_t     link_down_error_enable  :1;   /* 11 */
26567 +
26568 +               uint32_t     disable_risc_code_load  :1;   /* 12 */
26569 +               uint32_t     set_cache_line_size_1   :1;   /* 13 */
26570 +               uint32_t     enable_target_mode      :1;   /* 14 */
26571 +               uint32_t     disable_luns            :1;   /* 15 */
26572 +
26573 +               uint32_t     enable_lip_reset        :1;   /* 16 */
26574 +               uint32_t     enable_lip_full_login   :1;   /* 17 */
26575 +               uint32_t     enable_target_reset     :1;   /* 18 */
26576 +               uint32_t     updated_fc_db           :1;   /* 19 */
26577 +
26578 +               uint32_t     enable_flash_db_update  :1;   /* 20 */
26579 +               uint32_t     in_isr                  :1;   /* 21 */
26580 +               uint32_t     dpc_sched               :1;   /* 23 */
26581 +
26582 +               uint32_t     nvram_config_done       :1;   /* 24 */
26583 +               uint32_t     update_config_needed    :1;   /* 25 */
26584 +               uint32_t     management_server_logged_in    :1; /* 26 */
26585 +#if defined(FC_IP_SUPPORT)
26586 +                uint32_t     enable_ip               :1;   /* 27 */
26587 +#endif
26588 +
26589 +       } flags;
26590 +
26591 +       uint32_t     device_flags;
26592 +#define DFLG_LOCAL_DEVICES             BIT_0
26593 +#define DFLG_RETRY_LOCAL_DEVICES       BIT_1
26594 +#define DFLG_FABRIC_DEVICES            BIT_2
26595 +#define        SWITCH_FOUND                    BIT_3
26596 +#define        DFLG_NO_CABLE                   BIT_4
26597 +
26598 +       unsigned long   cpu_flags;
26599 +
26600 +        uint8_t                marker_needed; 
26601 +       uint8_t         missing_targets;
26602 +       uint8_t         sns_retry_cnt;
26603 +       uint8_t         cmd_wait_cnt;
26604 +       uint8_t         mem_err;
26605 +
26606 +       unsigned long   dpc_flags;
26607 +#define        RESET_MARKER_NEEDED     0       /* initiate sending a marker to ISP */
26608 +#define        RESET_ACTIVE            1
26609 +#define        ISP_ABORT_NEEDED        2       /* initiate ISP Abort */
26610 +#define        ABORT_ISP_ACTIVE        3       /* isp abort in progress */
26611 +
26612 +#define        LOOP_RESYNC_NEEDED      4       /* initiate a configure fabric sequence */
26613 +#define        LOOP_RESYNC_ACTIVE      5
26614 +#define        COMMAND_WAIT_NEEDED     6
26615 +#define        COMMAND_WAIT_ACTIVE     7
26616 +
26617 +#define LOCAL_LOOP_UPDATE       8      /* Perform a local loop update */
26618 +#define RSCN_UPDATE             9      /* Perform a RSCN update */
26619 +#define MAILBOX_RETRY           10
26620 +#define ISP_RESET_NEEDED        11     /* Initiate a ISP reset ??? */
26621 +
26622 +#define FAILOVER_EVENT_NEEDED   12
26623 +#define FAILOVER_EVENT         13
26624 +#define FAILOVER_NEEDED        14
26625 +#define LOOP_RESET_NEEDED      15
26626 +
26627 +#define DEVICE_RESET_NEEDED    16
26628 +#define DEVICE_ABORT_NEEDED    17
26629 +#define SCSI_RESTART_NEEDED    18      /* Processes any requests in scsi retry queue */
26630 +#define PORT_RESTART_NEEDED    19      /* Processes any requests in retry queue */
26631 +
26632 +#define RESTART_QUEUES_NEEDED  20      /* Restarts requeusts in the lun queue */
26633 +#define ABORT_QUEUES_NEEDED    21
26634 +#define RELOGIN_NEEDED         22
26635 +#define LOGIN_RETRY_NEEDED     23      /* initiates any fabric logins that are required */ 
26636 +#define REGISTER_FC4_NEEDED    24      /* set when need to register again.*/
26637 +
26638 +#define TASKLET_SCHED          25      /* Tasklet is scheduled.  */ 
26639 +#define DONE_RUNNING           26      /* Done task is running. */
26640 +#define ISP_ABORT_RETRY         27      /* ISP aborted. */
26641 +
26642 +
26643 +/* macro for timer to start dpc for handling mailbox commands */
26644 +#define MAILBOX_CMD_NEEDED     (LOOP_RESET_NEEDED|DEVICE_RESET_NEEDED|   \
26645 +    DEVICE_ABORT_NEEDED|ISP_ABORT_NEEDED)
26646 +
26647 +       /* These 3 fields are used by the reset done in dpc thread */
26648 +       uint16_t        reset_bus_id;
26649 +       uint16_t        reset_tgt_id;
26650 +       uint16_t        reset_lun;
26651 +
26652 +       uint8_t         interrupts_on;
26653 +       uint8_t         init_done;
26654 +
26655 +       volatile uint16_t loop_state;
26656 +#define LOOP_TIMEOUT 0x01
26657 +#define LOOP_DOWN    0x02
26658 +#define LOOP_UP      0x04
26659 +#define LOOP_UPDATE  0x08
26660 +#define LOOP_READY   0x10
26661 +
26662 +       mbx_cmd_t       mc;
26663 +       uint32_t        mbx_flags;
26664 +#define  MBX_IN_PROGRESS  BIT_0
26665 +#define  MBX_BUSY       BIT_1 /* Got the Access */
26666 +#define  MBX_SLEEPING_ON_SEM  BIT_2 
26667 +#define  MBX_POLLING_FOR_COMP  BIT_3
26668 +#define  MBX_COMPLETED      BIT_4
26669 +#define  MBX_TIMEDOUT       BIT_5 
26670 +#define  MBX_ACCESS_TIMEDOUT BIT_6
26671 +
26672 +/* following are new and needed for IOCTL support */
26673 +       hba_ioctl_context *ioctl;
26674 +       uint8_t     node_name[WWN_SIZE];
26675 +
26676 +       uint8_t     optrom_major; 
26677 +       uint8_t     optrom_minor; 
26678 +
26679 +       uint8_t     nvram_version; 
26680 +
26681 +       void        *ioctl_mem;
26682 +       dma_addr_t  ioctl_mem_phys;
26683 +       uint32_t    ioctl_mem_size;
26684 +       uint32_t    isp_abort_cnt;
26685 +
26686 +       /* HBA serial number */
26687 +       uint8_t     serial0;
26688 +       uint8_t     serial1;
26689 +       uint8_t     serial2;
26690 +
26691 +       /* oem related items */
26692 +       uint8_t oem_id;
26693 +       uint8_t oem_specific[31];
26694 +
26695 +       uint32_t    dump_done;
26696 +       unsigned long    done_q_cnt;
26697 +       unsigned long    pending_in_q;
26698 +
26699 +       uint32_t failover_type;
26700 +       uint32_t failback_delay;
26701 +       unsigned long   cfg_flags;
26702 +#define        CFG_ACTIVE      0       /* CFG during a failover, event update, or ioctl */
26703 +       /* uint8_t      cfg_active; */
26704 +       int     eh_start;
26705 +
26706 +#if defined(IOCB_THROLLE_USAGE)
26707 +       uint32_t         iocb_hiwat;
26708 +       uint32_t         iocb_cnt;
26709 +       uint32_t         iocb_overflow_cnt;
26710 +#endif
26711 +       
26712 +       int     srb_cnt;
26713 +       int     srb_alloc_cnt;  /*Number of allocated SRBs  */
26714 +
26715 +       uint32_t mbox_trace;
26716 +
26717 +       uint32_t        binding_type;
26718 +#define BIND_BY_PORT_NAME      0
26719 +#define BIND_BY_PORT_ID                1
26720 +#define BIND_BY_NODE_NAME      2
26721 +
26722 +       srb_t   *status_srb;    /* Keep track of Status Continuation Entries */
26723 +
26724 +       uint32_t        dropped_frame_error_cnt;
26725 +} scsi_qla_host_t;
26726 +
26727 +#if defined(__BIG_ENDIAN)
26728 +/* Big endian machine correction defines. */
26729 +#define        LITTLE_ENDIAN_16(x)     qla2x00_chg_endian((uint8_t *)&(x), 2)
26730 +#define        LITTLE_ENDIAN_24(x)     qla2x00_chg_endian((uint8_t *)&(x), 3)
26731 +#define        LITTLE_ENDIAN_32(x)     qla2x00_chg_endian((uint8_t *)&(x), 4)
26732 +#define        LITTLE_ENDIAN_64(x)     qla2x00_chg_endian((uint8_t *)&(x), 8)
26733 +#define        BIG_ENDIAN_16(x)
26734 +#define        BIG_ENDIAN_24(x)
26735 +#define        BIG_ENDIAN_32(x)
26736 +#define        BIG_ENDIAN_64(x)
26737 +
26738 +#else
26739 +/* Little endian machine correction defines. */
26740 +#define        LITTLE_ENDIAN_16(x)
26741 +#define        LITTLE_ENDIAN_24(x)
26742 +#define        LITTLE_ENDIAN_32(x)
26743 +#define        LITTLE_ENDIAN_64(x)
26744 +#define        BIG_ENDIAN_16(x)        qla2x00_chg_endian((uint8_t *)&(x), 2)
26745 +#define        BIG_ENDIAN_24(x)        qla2x00_chg_endian((uint8_t *)&(x), 3)
26746 +#define        BIG_ENDIAN_32(x)        qla2x00_chg_endian((uint8_t *)&(x), 4)
26747 +#define        BIG_ENDIAN_64(x)        qla2x00_chg_endian((uint8_t *)&(x), 8)
26748 +
26749 +#endif
26750 +
26751 +/*
26752 + * Macros to help code, maintain, etc.
26753 + */
26754 +#define        LOOP_TRANSITION(ha)     ( test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || \
26755 +                                 test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) )
26756 +
26757 +#define        LOOP_NOT_READY(ha)       ( (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || \
26758 +                                   test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags) || \
26759 +                                    test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || \
26760 +                                   test_bit(LOOP_RESYNC_ACTIVE, &ha->dpc_flags) || \
26761 +                                   test_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags) || \
26762 +                                    test_bit(COMMAND_WAIT_ACTIVE, &ha->dpc_flags)) ||  \
26763 +                                ha->loop_state == LOOP_DOWN)
26764 +                                
26765 +#define        LOOP_RDY(ha)     ( !LOOP_NOT_READY(ha) )
26766 +
26767 +#define        TGT_Q(ha, t)            (ha->otgt[t])
26768 +#define        LUN_Q(ha, t, l)         (TGT_Q(ha, t)->olun[l])
26769 +#define GET_LU_Q(ha, t, l)  ( (TGT_Q(ha,t) != NULL)? TGT_Q(ha, t)->olun[l] : NULL)
26770 +#define PORT_DOWN_TIMER(ha, t)    ((ha)->fc_db[(t)].port_timer)
26771 +#define PORT(ha, t)                    ((ha)->fc_db[(t)])
26772 +#define PORT_LOGIN_RETRY(fcport)    ((fcport)->port_login_retry_count)
26773 +
26774 +#define MBOX_TRACE(ha,b)               {(ha)->mbox_trace |= (b);}
26775 +
26776 +#define        MBS_MASK                        0x3fff
26777 +#define        MBS_END                         0x100
26778 +#define        QLA2X00_SUCCESS         (MBS_COMMAND_COMPLETE & MBS_MASK)
26779 +#define        QLA2X00_FAILED          (MBS_END + 2)
26780 +#define        QLA2X00_FUNCTION_FAILED         (MBS_END + 2)
26781 +
26782 +#define  KMEM_ZALLOC(siz,id)   qla2x00_kmem_zalloc((siz), GFP_ATOMIC, (id))
26783 +#define  KMEM_FREE(ip,siz)     kfree((ip))
26784 +
26785 +/*
26786 + * LOCK MACROS
26787 + */
26788 +#define QLA_MBX_REG_LOCK(ha)   \
26789 +    spin_lock_irqsave(&(ha)->mbx_reg_lock, mbx_flags);
26790 +#define QLA_MBX_REG_UNLOCK(ha) \
26791 +    spin_unlock_irqrestore(&(ha)->mbx_reg_lock, mbx_flags);
26792 +
26793 +/*
26794 +* Stat info for all adpaters
26795 +*/
26796 +struct _qla2x00stats  {
26797 +        unsigned long   mboxtout;            /* mailbox timeouts */
26798 +        unsigned long   mboxerr;             /* mailbox errors */
26799 +        unsigned long   ispAbort;            /* ISP aborts */
26800 +        unsigned long   debugNo;
26801 +        unsigned long   loop_resync;
26802 +        unsigned long   outarray_full;
26803 +        unsigned long   retry_q_cnt;
26804 +};
26805 +
26806 +#define SYS_DELAY(x)           udelay(x);barrier()
26807 +#define QLA2100_DELAY(sec)     mdelay(sec * HZ)
26808 +#define NVRAM_DELAY()          udelay(10)
26809 +#define UDELAY(x)              udelay(x)
26810 +
26811 +#define  CACHE_FLUSH(a) (RD_REG_WORD(a))
26812 +#define  INVALID_HANDLE    (MAX_OUTSTANDING_COMMANDS+1)
26813 +
26814 +#define  ABORTS_ACTIVE  ((test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags)) || \
26815 +                       (test_bit(DEVICE_RESET_NEEDED, &ha->dpc_flags)) || \
26816 +                       (test_bit(DEVICE_ABORT_NEEDED, &ha->dpc_flags)) || \
26817 +                       (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)))
26818 +
26819 +/*
26820 + * Flash support definitions
26821 + */
26822 +#define FLASH_IMAGE_SIZE       131072
26823 +
26824 +#include "qla_fo.h"
26825 +#include "qla_cfg.h"
26826 +#include "qla_gbl.h"
26827 +#include "qla_dbg.h"
26828 +#include "qla_inline.h"
26829 +#include "qla_listops.h"
26830 +
26831 +#endif
26832 --- /dev/null   Thu Apr 11 07:25:15 2002
26833 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_fo.c    Thu Jul  3 15:34:42 2003
26834 @@ -0,0 +1,1681 @@
26835 +/********************************************************************************
26836 +*                  QLOGIC LINUX SOFTWARE
26837 +*
26838 +* QLogic ISP2x00 device driver for Linux 2.5.x
26839 +* Copyright (C) 2003 Qlogic Corporation
26840 +* (www.qlogic.com)
26841 +*
26842 +* This program is free software; you can redistribute it and/or modify it
26843 +* under the terms of the GNU General Public License as published by the
26844 +* Free Software Foundation; either version 2, or (at your option) any
26845 +* later version.
26846 +*
26847 +* This program is distributed in the hope that it will be useful, but
26848 +* WITHOUT ANY WARRANTY; without even the implied warranty of
26849 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
26850 +* General Public License for more details.
26851 +*
26852 +******************************************************************************
26853 +* Failover include file
26854 +******************************************************************************/
26855 +
26856 +#include "qla_os.h"
26857 +#include "qla_def.h"
26858 +
26859 +#include "qlfo.h"
26860 +#include "qlfolimits.h"
26861 +
26862 +//TODO Why??
26863 +#include "qla_fo.cfg"
26864 +
26865 +/*
26866 + * Global variables
26867 + */
26868 +SysFoParams_t qla_fo_params;
26869 +
26870 +/*
26871 + * Local routines
26872 + */
26873 +#if !defined(linux)
26874 +static int qla2x00_sdm_setup(EXT_IOCTL *cmd_stp, void *arg, int mode);
26875 +#endif
26876 +static uint32_t qla2x00_fo_get_params(PFO_PARAMS pp);
26877 +static uint32_t qla2x00_fo_set_params(PFO_PARAMS pp);
26878 +static uint8_t qla2x00_fo_count_retries(scsi_qla_host_t *ha, srb_t *sp);
26879 +static int qla2x00_fo_get_lun_data(EXT_IOCTL *pext,
26880 +               FO_LUN_DATA_INPUT *bp, int mode);
26881 +static int qla2x00_fo_set_lun_data(EXT_IOCTL *pext,
26882 +               FO_LUN_DATA_INPUT *bp, int mode);
26883 +static uint32_t qla2x00_fo_stats(FO_HBA_STAT *stat_p, uint8_t reset);
26884 +static int qla2x00_fo_set_target_data(EXT_IOCTL *pext,
26885 +               FO_TARGET_DATA_INPUT *bp, int mode);
26886 +static int qla2x00_fo_get_target_data(EXT_IOCTL *pext,
26887 +               FO_TARGET_DATA_INPUT *bp, int mode);
26888 +
26889 +/*
26890 + * qla2x00_get_hba
26891 + *     Searches the hba structure chain for the requested instance
26892 + *      aquires the mutex and returns a pointer to the hba structure.
26893 + *
26894 + * Input:
26895 + *     inst = adapter instance number.
26896 + *
26897 + * Returns:
26898 + *     Return value is a pointer to the adapter structure or
26899 + *      NULL if instance not found.
26900 + *
26901 + * Context:
26902 + *     Kernel context.
26903 + */
26904 +scsi_qla_host_t *
26905 +qla2x00_get_hba(int instance)
26906 +{
26907 +       int     found;
26908 +       struct list_head *hal;
26909 +       scsi_qla_host_t *ha;
26910 +
26911 +       ha = NULL;
26912 +       found = 0;
26913 +       read_lock(&qla_hostlist_lock);
26914 +       list_for_each(hal, &qla_hostlist) {
26915 +               ha = list_entry(hal, scsi_qla_host_t, list);
26916 +
26917 +               if (ha->instance == instance) {
26918 +                       found++;
26919 +                       break;
26920 +               }
26921 +       }
26922 +       read_unlock(&qla_hostlist_lock);
26923 +
26924 +       return (found ? ha : NULL);
26925 +}
26926 +
26927 +/*
26928 + * qla2x00_fo_stats
26929 + *     Searches the hba structure chan for the requested instance
26930 + *      aquires the mutex and returns a pointer to the hba structure.
26931 + *
26932 + * Input:
26933 + *     stat_p = Pointer to FO_HBA_STAT union.
26934 + *      reset  = Flag, TRUE = reset statistics.
26935 + *                     FALSE = return statistics values.
26936 + *
26937 + * Returns:
26938 + *     0 = success
26939 + *
26940 + * Context:
26941 + *     Kernel context.
26942 + */
26943 +static uint32_t
26944 +qla2x00_fo_stats(FO_HBA_STAT *stat_p, uint8_t reset)
26945 +{
26946 +       int32_t inst, idx;
26947 +       uint32_t rval = 0;
26948 +       struct list_head *hal;
26949 +       scsi_qla_host_t *ha;
26950 +
26951 +       DEBUG9(printk("%s: entered.\n", __func__);)
26952 +
26953 +       inst = stat_p->input.HbaInstance;
26954 +       stat_p->info.HbaCount = 0;
26955 +
26956 +       ha = NULL;
26957 +
26958 +       read_lock(&qla_hostlist_lock);
26959 +       list_for_each(hal, &qla_hostlist) {
26960 +               ha = list_entry(hal, scsi_qla_host_t, list);
26961 +
26962 +               if (inst == FO_ADAPTER_ALL) {
26963 +                       stat_p->info.HbaCount++;
26964 +                       idx = ha->instance;
26965 +               } else if (ha->instance == inst) {
26966 +                       stat_p->info.HbaCount = 1;
26967 +                       idx = inst;
26968 +               }
26969 +               if (reset == TRUE) {
26970 +                       DEBUG9(printk("%s: reset stats.\n", __func__);)
26971 +                       ha->IosRequested = 0;
26972 +                       ha->BytesRequested = 0;
26973 +                       ha->IosExecuted = 0;
26974 +                       ha->BytesExecuted = 0;
26975 +               } else {
26976 +                       DEBUG9(printk("%s: get stats for inst %d.\n",
26977 +                           __func__, inst);)
26978
26979 +#if 0
26980 +                       stat_p->info.StatEntry[idx].IosRequested =
26981 +                               ha->IosRequested;
26982 +                       stat_p->info.StatEntry[idx].BytesRequested =
26983 +                               ha->BytesRequested;
26984 +                       stat_p->info.StatEntry[idx].IosExecuted =
26985 +                               ha->IosExecuted;
26986 +                       stat_p->info.StatEntry[idx].BytesExecuted =
26987 +                               ha->BytesExecuted;
26988 +#endif
26989 +               }
26990 +               if (inst != FO_ADAPTER_ALL)
26991 +                       break;
26992 +       }
26993 +       read_unlock(&qla_hostlist_lock);
26994
26995 +       DEBUG9(printk("%s: exiting.\n", __func__);)
26996
26997 +       return rval;
26998 +}
26999 +
27000 +/*
27001 + * qla2x00_fo_get_lun_data
27002 + *      Get lun data from all devices attached to a HBA (FO_GET_LUN_DATA).
27003 + *      Gets lun mask if failover not enabled.
27004 + *
27005 + * Input:
27006 + *      ha = pointer to adapter
27007 + *      bp = pointer to buffer
27008 + *
27009 + * Return;
27010 + *      0 on success or errno.
27011 + *
27012 + * Context:
27013 + *      Kernel context.
27014 + */
27015 +static int
27016 +qla2x00_fo_get_lun_data(EXT_IOCTL *pext, FO_LUN_DATA_INPUT *bp, int mode)
27017 +{
27018 +       scsi_qla_host_t  *ha;
27019 +       struct list_head        *fcports, *fcpl;
27020 +       fc_port_t        *fcport;
27021 +       int              ret = 0;
27022 +       mp_host_t        *host = NULL;
27023 +       mp_device_t      *dp;
27024 +       mp_path_t        *path;
27025 +       mp_path_list_t   *pathlist;
27026 +       os_tgt_t         *ostgt;
27027 +       uint8_t          path_id;
27028 +       uint16_t         dev_no;
27029 +       uint16_t         cnt;
27030 +       uint16_t         lun;
27031 +       FO_EXTERNAL_LUN_DATA_ENTRY *u_entry, *entry;
27032 +       FO_LUN_DATA_LIST *u_list, *list;
27033 +
27034 +
27035 +       DEBUG9(printk("%s: entered.\n", __func__);)
27036 +
27037 +       ha = qla2x00_get_hba((int)bp->HbaInstance);
27038 +
27039 +       if (!ha) {
27040 +               DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
27041 +                   __func__, bp->HbaInstance);)
27042 +
27043 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27044 +               return (ret);
27045 +       }
27046 +
27047 +       DEBUG9(printk("%s: ha inst %ld, buff %p.\n",
27048 +           __func__, ha->instance, bp);)
27049 +       DEBUG4(printk("%s: hba %p, buff %p bp->HbaInstance(%x).\n",
27050 +           __func__, ha, bp, (int)bp->HbaInstance));
27051 +
27052 +       if (ha->flags.failover_enabled)
27053 +               if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
27054 +                       DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n",
27055 +                           __func__, ha->instance);)
27056 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27057 +                       return (ret);
27058 +               }
27059 +
27060 +       list = (FO_LUN_DATA_LIST *)qla2x00_kmem_zalloc(
27061 +           sizeof(FO_LUN_DATA_LIST), GFP_ATOMIC, 12);
27062 +       if (list == NULL) {
27063 +               DEBUG2_9_10(printk("%s: failed to alloc memory of size (%d)\n",
27064 +                   __func__, (int)sizeof(FO_LUN_DATA_LIST));)
27065 +               pext->Status = EXT_STATUS_NO_MEMORY;
27066 +               return (-ENOMEM);
27067 +       }
27068 +
27069 +       entry = &list->DataEntry[0];
27070 +
27071 +       u_list = (FO_LUN_DATA_LIST *)pext->ResponseAdr;
27072 +       u_entry = &u_list->DataEntry[0];
27073 +
27074 +       /* find the correct fcport list */
27075 +       if (!ha->flags.failover_enabled)
27076 +               fcports = &ha->fcports;
27077 +       else
27078 +               fcports = host->fcports;
27079 +
27080 +       /* Check thru this adapter's fcport list */
27081 +       fcport = NULL;
27082 +       list_for_each(fcpl, fcports) {
27083 +               fcport = list_entry(fcpl, fc_port_t, list);
27084 +
27085 +               memcpy(entry->NodeName,
27086 +                   fcport->node_name, EXT_DEF_WWN_NAME_SIZE);
27087 +               memcpy(entry->PortName,
27088 +                   fcport->port_name, EXT_DEF_WWN_NAME_SIZE);
27089 +
27090 +               if (!ha->flags.failover_enabled) {
27091 +                       /*
27092 +                        * Failover disabled. Just return LUN mask info
27093 +                        * in lun data entry of this port.
27094 +                        */
27095 +                       entry->TargetId = 0;
27096 +                       for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
27097 +                               if (!(ostgt = ha->otgt[cnt])) {
27098 +                                       continue;
27099 +                               }
27100 +
27101 +                               if (ostgt->vis_port == fcport) {
27102 +                                       entry->TargetId = cnt;
27103 +                                       break;
27104 +                               }
27105 +                       }
27106 +                       if (cnt == MAX_FIBRE_DEVICES) {
27107 +                               /* Not found?  For now just go to next port. */
27108 +#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_10)
27109 +                               uint8_t          *tmp_name;
27110 +
27111 +                               tmp_name = fcport->port_name;
27112 +
27113 +                               printk("%s(%ld): ERROR - port "
27114 +                                   "%02x%02x%02x%02x%02x%02x%02x%02x "
27115 +                                   "not configured.\n",
27116 +                                   __func__, ha->host_no,
27117 +                                   tmp_name[0], tmp_name[1], tmp_name[2],
27118 +                                   tmp_name[3], tmp_name[4], tmp_name[5],
27119 +                                   tmp_name[6], tmp_name[7]);
27120 +#endif /* DEBUG */
27121 +
27122 +                               continue;
27123 +                       }
27124 +
27125 +                       /* Got a valid port */
27126 +                       list->EntryCount++;
27127 +
27128 +                       for (lun = 0; lun < MAX_LUNS; lun++) {
27129 +                               /* set MSB if masked */
27130 +                               entry->Data[lun] = LUN_DATA_PREFERRED_PATH;
27131 +                               if (!EXT_IS_LUN_BIT_SET(&(fcport->lun_mask),
27132 +                                   lun)) {
27133 +                                       entry->Data[lun] |= LUN_DATA_ENABLED;
27134 +                               }
27135 +                       }
27136 +
27137 +                       DEBUG9(printk("%s: got lun_mask for tgt %d\n",
27138 +                           __func__, cnt);)
27139 +                       DEBUG9(qla2x00_dump_buffer((char *)&(fcport->lun_mask),
27140 +                           sizeof(lun_bit_mask_t));)
27141
27142 +                       ret = verify_area(VERIFY_WRITE, (void *)u_entry,
27143 +                           sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27144 +                       if (ret) {
27145 +                               /* error */
27146 +                               DEBUG9_10(printk("%s: u_entry %p verify write"
27147 +                                   " error. list->EntryCount=%d.\n",
27148 +                                   __func__, u_entry, list->EntryCount);)
27149 +                               pext->Status = EXT_STATUS_COPY_ERR;
27150 +                               break;
27151 +                       }
27152
27153 +                       ret = copy_to_user(u_entry, entry,
27154 +                           sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27155
27156 +                       if (ret) {
27157 +                               /* error */
27158 +                               DEBUG9_10(printk("%s: u_entry %p copy "
27159 +                                   "error. list->EntryCount=%d.\n",
27160 +                                   __func__, u_entry, list->EntryCount);)
27161 +                               pext->Status = EXT_STATUS_COPY_ERR;
27162 +                               break;
27163 +                       }
27164 +
27165 +                       copy_to_user(u_entry, entry,
27166 +                                       sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27167 +
27168 +                       /* Go to next port */
27169 +                       u_entry++;
27170 +                       continue;
27171 +               }
27172 +
27173 +               /*
27174 +                * Failover is enabled. Go through the mp_devs list and return
27175 +                * lun data in configured path.
27176 +                */
27177 +               for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
27178 +                       dp = host->mp_devs[dev_no];
27179 +
27180 +                       if (dp == NULL)
27181 +                               continue;
27182 +
27183 +                       /* Lookup entry name */
27184 +                       if (!qla2x00_is_portname_in_device(dp, entry->PortName))
27185 +                               continue;
27186 +
27187 +                       if ((pathlist = dp->path_list) == NULL)
27188 +                               continue;
27189 +
27190 +                       path = pathlist->last;
27191 +                       for (path_id = 0; path_id < pathlist->path_cnt;
27192 +                           path_id++, path = path->next) {
27193 +
27194 +                               if (path->host != host)
27195 +                                       continue;
27196 +
27197 +                               if (!qla2x00_is_portname_equal(path->portname,
27198 +                                   entry->PortName))
27199 +                                       continue;
27200 +
27201 +                               /* Got an entry */
27202 +                               entry->TargetId = dp->dev_id;
27203 +                               entry->Dev_No = path->id;
27204 +                               list->EntryCount++;
27205 +
27206 +                               for (lun = 0; lun < MAX_LUNS; lun++) {
27207 +                                       entry->Data[lun] =
27208 +                                           path->lun_data.data[lun];
27209 +                               }
27210 +
27211 +                               ret = verify_area(VERIFY_WRITE, (void *)u_entry,
27212 +                                   sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27213 +                               if (ret) {
27214 +                                       /* error */
27215 +                                       DEBUG2_9_10(printk("%s: u_entry %p "
27216 +                                           "verify wrt err. EntryCount=%d.\n",
27217 +                                           __func__, u_entry, list->EntryCount);)
27218 +                                       pext->Status = EXT_STATUS_COPY_ERR;
27219 +                                       break;
27220 +                               }
27221 +
27222 +                               ret = copy_to_user(u_entry, entry,
27223 +                                   sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27224 +                               if (ret) {
27225 +                                       /* error */
27226 +                                       DEBUG2_9_10(printk("%s: u_entry %p "
27227 +                                           "copy out err. EntryCount=%d.\n",
27228 +                                           __func__, u_entry, list->EntryCount);)
27229 +                                       pext->Status = EXT_STATUS_COPY_ERR;
27230 +                                       break;
27231 +                               }
27232 +
27233 +                               u_entry++;
27234 +
27235 +                               DEBUG9(printk("%s: (output) get_lun_data - "
27236 +                                   "u_entry(%p) - lun entry[%d] :\n",
27237 +                                   __func__, u_entry,list->EntryCount - 1);)
27238 +
27239 +                               DEBUG9(qla2x00_dump_buffer((void *)entry, 64);)
27240 +
27241 +                               /*
27242 +                                * We found the right path for this port.
27243 +                                * Continue with next port.
27244 +                                */
27245 +                               break;
27246 +                       }
27247 +
27248 +                       /* Continue with next port. */
27249 +                       break;
27250 +               }
27251 +       }
27252 +
27253 +       DEBUG9(printk("%s: get_lun_data - entry count = [%d]\n",
27254 +           __func__, list->EntryCount);)
27255 +       DEBUG4(printk("%s: get_lun_data - entry count = [%d]\n",
27256 +           __func__, list->EntryCount);)
27257 +
27258 +       if (ret == 0) {
27259 +               ret = verify_area(VERIFY_WRITE, (void *)&u_list->EntryCount,
27260 +                   sizeof(list->EntryCount));
27261 +               if (ret) {
27262 +                       /* error */
27263 +                       DEBUG2_9_10(printk("%s: u_list->EntryCount %p verify "
27264 +                           " write error. list->EntryCount=%d.\n",
27265 +                           __func__, u_entry, list->EntryCount);)
27266 +                       pext->Status = EXT_STATUS_COPY_ERR;
27267 +               } else {
27268 +                       /* copy number of entries */
27269 +                       ret = copy_to_user(&u_list->EntryCount, &list->EntryCount,
27270 +                           sizeof(list->EntryCount));
27271 +                       pext->ResponseLen = FO_LUN_DATA_LIST_MAX_SIZE;
27272 +               }
27273 +       }
27274 +
27275 +       KMEM_FREE(list, sizeof(FO_LUN_DATA_LIST));
27276 +
27277 +       DEBUG9(printk("%s: exiting. ret=%d.\n", __func__, ret);)
27278 +
27279 +       return ret;
27280 +}
27281 +
27282 +/*
27283 + * qla2x00_fo_set_lun_data
27284 + *      Set lun data for the specified device on the attached hba
27285 + *      (FO_SET_LUN_DATA).
27286 + *      Sets lun mask if failover not enabled.
27287 + *
27288 + * Input:
27289 + *      bp = pointer to buffer
27290 + *
27291 + * Return;
27292 + *      0 on success or errno.
27293 + *
27294 + * Context:
27295 + *      Kernel context.
27296 + */
27297 +static int
27298 +qla2x00_fo_set_lun_data(EXT_IOCTL *pext, FO_LUN_DATA_INPUT  *bp, int mode)
27299 +{
27300 +       scsi_qla_host_t  *ha;
27301 +       fc_port_t        *fcport;
27302 +       int              i;
27303 +       int              ret = 0;
27304 +       mp_host_t        *host = NULL;
27305 +       mp_device_t      *dp;
27306 +       mp_path_t        *path;
27307 +       mp_path_list_t   *pathlist;
27308 +       os_tgt_t         *ostgt;
27309 +       uint8_t          path_id;
27310 +       uint16_t         dev_no;
27311 +       uint16_t         lun;
27312 +       FO_LUN_DATA_LIST *u_list, *list;
27313 +       FO_EXTERNAL_LUN_DATA_ENTRY *u_entry, *entry;
27314 +
27315 +       typedef struct _tagStruct {
27316 +               FO_LUN_DATA_INPUT   foLunDataInput;
27317 +               FO_LUN_DATA_LIST    foLunDataList;
27318 +       }
27319 +       com_struc;
27320 +       com_struc *com_iter;
27321 +
27322 +
27323 +       DEBUG9(printk("%s: entered.\n", __func__);)
27324 +
27325 +       ha = qla2x00_get_hba((int)bp->HbaInstance);
27326 +
27327 +       if (!ha) {
27328 +               DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
27329 +                   __func__, bp->HbaInstance);)
27330 +
27331 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27332 +               return (ret);
27333 +       }
27334 +
27335 +       DEBUG9(printk("%s: ha inst %ld, buff %p.\n",
27336 +           __func__, ha->instance, bp);)
27337 +
27338 +       if (ha->flags.failover_enabled)
27339 +               if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
27340 +                       DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n",
27341 +                           __func__, ha->instance);)
27342 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27343 +                       return (ret);
27344 +               }
27345 +
27346 +       list = (FO_LUN_DATA_LIST *)qla2x00_kmem_zalloc(
27347 +           sizeof(FO_LUN_DATA_LIST), GFP_ATOMIC, 13);
27348 +       if (list == NULL) {
27349 +               DEBUG2_9_10(printk("%s: failed to alloc memory of size (%d)\n",
27350 +                   __func__, (int)sizeof(FO_LUN_DATA_LIST));)
27351 +               pext->Status = EXT_STATUS_NO_MEMORY;
27352 +               return (-ENOMEM);
27353 +       }
27354 +
27355 +       entry = &list->DataEntry[0];
27356 +
27357 +       /* get lun data list from user */
27358 +       com_iter = (com_struc *)pext->RequestAdr;
27359 +       u_list = &(com_iter->foLunDataList);
27360 +       u_entry = &u_list->DataEntry[0];
27361 +
27362 +       ret = verify_area(VERIFY_READ, (void *)u_list,
27363 +           sizeof(FO_LUN_DATA_LIST));
27364 +       if (ret) {
27365 +               /* error */
27366 +               DEBUG2_9_10(printk("%s: u_list %p verify read error.\n",
27367 +                   __func__, u_list);)
27368 +               pext->Status = EXT_STATUS_COPY_ERR;
27369 +               KMEM_FREE(list, FO_LUN_DATA_LIST);
27370 +               return (ret);
27371 +       }
27372 +
27373 +       ret = copy_from_user(list, u_list, sizeof(FO_LUN_DATA_LIST));
27374 +       if (ret) {
27375 +               /* error */
27376 +               DEBUG2_9_10(printk("%s: u_list %p copy error.\n",
27377 +                   __func__, u_list);)
27378 +               pext->Status = EXT_STATUS_COPY_ERR;
27379 +               KMEM_FREE(list, FO_LUN_DATA_LIST);
27380 +               return (ret);
27381 +       }
27382 +
27383 +       DEBUG2(printk("qla_fo_set_lun_data: pext->RequestAdr(%p) u_list (%p) "
27384 +                       "sizeof(FO_LUN_DATA_INPUT) =(%d) and 64 bytes...\n",
27385 +                       pext->RequestAdr, u_list,
27386 +                       (int)sizeof(FO_LUN_DATA_INPUT));)
27387 +       DEBUG2(qla2x00_dump_buffer((void *)u_list, 64);)
27388 +
27389 +       for (i = 0; i < list->EntryCount; i++, u_entry++) {
27390 +
27391 +               ret = verify_area(VERIFY_READ, (void *)u_entry,
27392 +                   sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27393 +               if (ret) {
27394 +                       /* error */
27395 +                       DEBUG2_9_10(printk("%s: u_entry %p verify "
27396 +                           " read error.\n",
27397 +                           __func__, u_entry);)
27398 +                       pext->Status = EXT_STATUS_COPY_ERR;
27399 +                       break;
27400 +               }
27401 +               ret = copy_from_user(entry, u_entry,
27402 +                   sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27403 +               if (ret) {
27404 +                       /* error */
27405 +                       DEBUG2_9_10(printk("%s: u_entry %p copy error.\n",
27406 +                           __func__, u_entry);)
27407 +                       pext->Status = EXT_STATUS_COPY_ERR;
27408 +                       break;
27409 +               }
27410 +
27411 +               if (!ha->flags.failover_enabled) {
27412 +                       /*
27413 +                        * Failover disabled. Just find the port and set
27414 +                        * LUN mask values in lun_mask field of this port.
27415 +                        */
27416 +
27417 +                       if (entry->TargetId >= MAX_FIBRE_DEVICES)
27418 +                               /* ERROR */
27419 +                               continue;
27420 +
27421 +                       if (!(ostgt = ha->otgt[entry->TargetId]))
27422 +                               /* ERROR */
27423 +                               continue;
27424 +
27425 +                       if (!(fcport = ostgt->vis_port))
27426 +                               /* ERROR */
27427 +                               continue;
27428 +
27429 +                       for (lun = 0; lun < MAX_LUNS; lun++) {
27430 +                               /* set MSB if masked */
27431 +                               if (entry->Data[lun] | LUN_DATA_ENABLED) {
27432 +                                       EXT_CLR_LUN_BIT(&(fcport->lun_mask),
27433 +                                                               lun);
27434 +                               } else {
27435 +                                       EXT_SET_LUN_BIT(&(fcport->lun_mask),
27436 +                                                               lun);
27437 +                               }
27438 +                       }
27439 +
27440 +                       /* Go to next entry */
27441 +                       continue;
27442 +               }
27443 +
27444 +               /*
27445 +                * Failover is enabled. Go through the mp_devs list and set lun
27446 +                * data in configured path.
27447 +                */
27448 +               for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
27449 +                       dp = host->mp_devs[dev_no];
27450 +
27451 +                       if (dp == NULL)
27452 +                               continue;
27453 +
27454 +                       /* Lookup entry name */
27455 +                       if (!qla2x00_is_portname_in_device(dp, entry->PortName))
27456 +                                       continue;
27457 +
27458 +                       if ((pathlist = dp->path_list) == NULL)
27459 +                                       continue;
27460 +
27461 +                       path = pathlist->last;
27462 +                       for (path_id = 0; path_id < pathlist->path_cnt;
27463 +                           path_id++, path = path->next) {
27464 +
27465 +                               if (path->host != host)
27466 +                                       continue;
27467 +
27468 +                               if (!qla2x00_is_portname_equal(path->portname,
27469 +                                   entry->PortName))
27470 +                                       continue;
27471 +
27472 +                               for (lun = 0; lun < MAX_LUNS; lun++) {
27473 +                                       path->lun_data.data[lun] =
27474 +                                           entry->Data[lun];
27475 +                                       DEBUG4(printk("cfg_set_lun_data: lun "
27476 +                                           "data[%d] = 0x%x \n", lun,
27477 +                                           path->lun_data.data[lun]);)
27478 +                               }
27479 +
27480 +                               break;
27481 +                       }
27482 +                       break;
27483 +               }
27484 +       }
27485 +
27486 +       KMEM_FREE(list, FO_LUN_DATA_LIST);
27487 +
27488 +       DEBUG9(printk("%s: exiting. ret = %d.\n", __func__, ret);)
27489 +
27490 +       return ret;
27491 +}
27492 +
27493 +/*
27494 + * qla2x00_fo_get_target_data
27495 + *      Get the target control byte for all devices attached to a HBA.
27496 + *
27497 + * Input:
27498 + *      bp = pointer to buffer
27499 + *
27500 + * Return;
27501 + *      0 on success or errno.
27502 + *
27503 + * Context:
27504 + *      Kernel context.
27505 + */
27506 +static int
27507 +qla2x00_fo_get_target_data(EXT_IOCTL *pext, FO_TARGET_DATA_INPUT *bp, int mode)
27508 +{
27509 +       scsi_qla_host_t  *ha;
27510 +       struct list_head        *fcports, *fcpl;
27511 +       fc_port_t        *fcport;
27512 +       int              ret = 0;
27513 +       mp_host_t        *host = NULL;
27514 +       mp_device_t      *dp;
27515 +       mp_path_t        *path;
27516 +       mp_path_list_t   *pathlist;
27517 +       os_tgt_t         *ostgt;
27518 +       uint8_t          i, cnt;
27519 +       uint8_t          path_id;
27520 +       uint16_t         dev_no;
27521 +       FO_DEVICE_DATA   *entry, *u_entry;
27522 +       uint32_t        b;
27523 +
27524 +
27525 +       DEBUG9(printk("%s: entered.\n", __func__);)
27526 +
27527 +       ha = qla2x00_get_hba((int)bp->HbaInstance);
27528 +
27529 +       if (!ha) {
27530 +               DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
27531 +                   __func__, bp->HbaInstance);)
27532 +
27533 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27534 +               return (ret);
27535 +       }
27536 +
27537 +       DEBUG9(printk("%s: ha inst %ld, buff %p.\n",
27538 +           __func__, ha->instance, bp);)
27539 +
27540 +       if (ha->flags.failover_enabled)
27541 +               if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
27542 +                       DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n",
27543 +                           __func__, ha->instance);)
27544 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27545 +                       return (ret);
27546 +               }
27547 +
27548 +       entry = (FO_DEVICE_DATA *)qla2x00_kmem_zalloc(
27549 +           sizeof(FO_DEVICE_DATA), GFP_ATOMIC, 14);
27550 +       if (entry == NULL) {
27551 +               DEBUG2_9_10(printk("%s: failed to alloc memory of size (%d)\n",
27552 +                   __func__, (int)sizeof(FO_DEVICE_DATA));)
27553 +               pext->Status = EXT_STATUS_NO_MEMORY;
27554 +               return (-ENOMEM);
27555 +       }
27556 +
27557 +       u_entry = (FO_DEVICE_DATA *) pext->ResponseAdr;
27558 +
27559 +       /* find the correct fcport list */
27560 +       if (!ha->flags.failover_enabled)
27561 +               fcports = &ha->fcports;
27562 +       else
27563 +               fcports = host->fcports;
27564 +
27565 +       /* Check thru this adapter's fcport list */
27566 +       i = 0;
27567 +       fcport = NULL;
27568 +       list_for_each(fcpl, fcports) {
27569 +               fcport = list_entry(fcpl, fc_port_t, list);
27570 +
27571 +               if (i >= MAX_TARGETS)
27572 +                       break;
27573 +
27574 +               memcpy(entry->WorldWideName,
27575 +                   fcport->node_name, EXT_DEF_WWN_NAME_SIZE);
27576 +               memcpy(entry->PortName,
27577 +                   fcport->port_name, EXT_DEF_WWN_NAME_SIZE);
27578 +
27579 +               for (b = 0; b < 3 ; b++)
27580 +                       entry->PortId[b] = fcport->d_id.r.d_id[2-b];
27581 +
27582 +               if (!ha->flags.failover_enabled) {
27583 +                       /*
27584 +                        * Failover disabled. Just find the port and return
27585 +                        * target info.
27586 +                        */
27587 +                       for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
27588 +                               if (!(ostgt = ha->otgt[cnt])) {
27589 +                                       continue;
27590 +                               }
27591 +
27592 +                               if (ostgt->vis_port == fcport) {
27593 +                                       entry->TargetId = cnt;
27594 +                                       break;
27595 +                               }
27596 +                       }
27597 +                       if (cnt == MAX_FIBRE_DEVICES) {
27598 +                               /* Not found?  For now just go to next port. */
27599 +#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_10)
27600 +                               uint8_t          *tmp_name;
27601 +
27602 +                               tmp_name = fcport->port_name;
27603 +
27604 +                               printk("fo_get_target_data(%ld): ERROR "
27605 +                                   "port %02x%02x%02x%02x%02x%02x%02x%02x "
27606 +                                   "not configured.\n", ha->host_no,
27607 +                                   tmp_name[0], tmp_name[1], tmp_name[2],
27608 +                                   tmp_name[3], tmp_name[4], tmp_name[5],
27609 +                                   tmp_name[6], tmp_name[7]);
27610 +#endif /* DEBUG */
27611 +
27612 +                               continue;
27613 +                       }
27614 +
27615 +                       entry->MultipathControl = 0; /* always configured */
27616 +
27617 +                       ret = verify_area(VERIFY_WRITE, (void *)u_entry,
27618 +                           sizeof(FO_DEVICE_DATA));
27619 +                       if (ret) {
27620 +                               /* error */
27621 +                               DEBUG2_9_10(printk("%s: u_entry %p verify "
27622 +                                   " wrt err. tgt id=%d.\n",
27623 +                                   __func__, u_entry, cnt);)
27624 +                               pext->Status = EXT_STATUS_COPY_ERR;
27625 +                               break;
27626 +                       }
27627 +
27628 +                       ret = copy_to_user(u_entry, entry,
27629 +                           sizeof(FO_DEVICE_DATA));
27630 +                       if (ret) {
27631 +                               /* error */
27632 +                               DEBUG2_9_10(printk("%s: u_entry %p copy "
27633 +                                   "out err. tgt id=%d.\n",
27634 +                                   __func__, u_entry, cnt);)
27635 +                               pext->Status = EXT_STATUS_COPY_ERR;
27636 +                               break;
27637 +                       }
27638 +
27639 +                       u_entry++;
27640 +
27641 +                       i++;
27642 +                       continue;
27643 +               }
27644 +
27645 +               /*
27646 +                * Failover is enabled. Go through the mp_devs list and
27647 +                * get target data in configured path.
27648 +                */
27649 +               for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
27650 +                       dp = host->mp_devs[dev_no];
27651 +
27652 +                       if (dp == NULL)
27653 +                               continue;
27654 +
27655 +                       /* Lookup entry name */
27656 +                       if (!qla2x00_is_portname_in_device(dp, entry->PortName))
27657 +                               continue;
27658 +
27659 +                       if ((pathlist = dp->path_list) == NULL)
27660 +                               continue;
27661 +
27662 +                       path = pathlist->last;
27663 +                       for (path_id = 0; path_id < pathlist->path_cnt;
27664 +                           path_id++, path= path->next) {
27665 +
27666 +                               if (path->host != host)
27667 +                                       continue;
27668 +
27669 +                               if (!qla2x00_is_portname_equal(path->portname,
27670 +                                   entry->PortName))
27671 +                                       continue;
27672 +
27673 +                               entry->TargetId = dp->dev_id;
27674 +                               entry->Dev_No = path->id;
27675 +                               entry->MultipathControl = path->mp_byte;
27676 +
27677 +                               DEBUG9(printk("cfg_get_target_data: path->id "
27678 +                                   "= %d, target data = 0x%x \n",
27679 +                                   path->id, path->mp_byte);)
27680 +
27681 +                               ret = verify_area(VERIFY_WRITE, (void *)u_entry,
27682 +                                   sizeof(FO_DEVICE_DATA));
27683 +                               if (ret) {
27684 +                                       /* error */
27685 +                                       DEBUG2_9_10(printk("%s: u_entry %p "
27686 +                                           "verify wrt err. tgt id=%d.\n",
27687 +                                           __func__, u_entry, dp->dev_id);)
27688 +                                       pext->Status = EXT_STATUS_COPY_ERR;
27689 +                                       break;
27690 +                               }
27691 +
27692 +                               ret = copy_to_user(u_entry, entry,
27693 +                                   sizeof(FO_DEVICE_DATA));
27694 +                               if (ret) {
27695 +                                       /* error */
27696 +                                       DEBUG2_9_10(printk("%s: u_entry %p "
27697 +                                           "copy out err. tgt id=%d.\n",
27698 +                                           __func__, u_entry, dp->dev_id);)
27699 +                                       pext->Status = EXT_STATUS_COPY_ERR;
27700 +                                       break;
27701 +                               }
27702 +
27703 +                               u_entry++;
27704 +
27705 +                               /* Path found. Continue with next fcport */
27706 +                               break;
27707 +                       }
27708 +                       break;
27709 +               }
27710 +               i++;
27711 +       }
27712 +
27713 +       if (ret == 0) {
27714 +               pext->ResponseLen = sizeof(FO_DEVICE_DATABASE);
27715 +       }
27716 +
27717 +       KMEM_FREE(entry, sizeof(FO_DEVICE_DATA));
27718 +
27719 +       DEBUG9(printk("%s: exiting. ret = %d.\n", __func__, ret);)
27720 +
27721 +       return (ret);
27722 +}
27723 +
27724 +/*
27725 + * qla2x00_fo_set_target_data
27726 + *      Set multipath control byte for all devices on the attached hba
27727 + *
27728 + * Input:
27729 + *      bp = pointer to buffer
27730 + *
27731 + * Return;
27732 + *      0 on success or errno.
27733 + *
27734 + * Context:
27735 + *      Kernel context.
27736 + */
27737 +static int
27738 +qla2x00_fo_set_target_data(EXT_IOCTL *pext, FO_TARGET_DATA_INPUT  *bp, int mode)
27739 +{
27740 +       scsi_qla_host_t  *ha;
27741 +       int              i;
27742 +       int              ret = 0;
27743 +       mp_host_t        *host;
27744 +       mp_device_t      *dp;
27745 +       mp_path_t        *path;
27746 +       mp_path_list_t   *pathlist;
27747 +       uint16_t         dev_no;
27748 +       uint8_t          path_id;
27749 +       FO_DEVICE_DATA *entry, *u_entry;
27750 +
27751 +       DEBUG9(printk("%s: entered.\n", __func__);)
27752 +
27753 +       ha = qla2x00_get_hba((int)bp->HbaInstance);
27754 +
27755 +       if (!ha) {
27756 +               DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
27757 +                   __func__, bp->HbaInstance);)
27758 +
27759 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27760 +               return (ret);
27761 +       }
27762 +
27763 +       DEBUG9(printk("%s: ha inst %ld, buff %p.\n",
27764 +           __func__, ha->instance, bp);)
27765 +
27766 +       if (!ha->flags.failover_enabled)
27767 +               /* non-failover mode. nothing to be done. */
27768 +               return 0;
27769 +
27770 +       if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
27771 +               DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n",
27772 +                   __func__, ha->instance);)
27773 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27774 +               return (ret);
27775 +       }
27776 +
27777 +       entry = (FO_DEVICE_DATA *)qla2x00_kmem_zalloc(
27778 +           sizeof(FO_DEVICE_DATA), GFP_ATOMIC, 15);
27779 +       if (entry == NULL) {
27780 +               DEBUG2_9_10(printk("%s: failed to alloc memory of size (%d)\n",
27781 +                   __func__, (int)sizeof(FO_DEVICE_DATA));)
27782 +               pext->Status = EXT_STATUS_NO_MEMORY;
27783 +               return (-ENOMEM);
27784 +       }
27785 +
27786 +       u_entry = (FO_DEVICE_DATA *)(pext->RequestAdr +
27787 +           sizeof(FO_TARGET_DATA_INPUT));
27788 +
27789 +       for (i = 0; i < MAX_TARGETS; i++, u_entry++) {
27790 +               ret = verify_area(VERIFY_READ, (void *)u_entry,
27791 +                   sizeof(FO_DEVICE_DATA));
27792 +               if (ret) {
27793 +                       /* error */
27794 +                       DEBUG2_9_10(printk("%s: u_entry %p verify read err.\n",
27795 +                           __func__, u_entry);)
27796 +                       pext->Status = EXT_STATUS_COPY_ERR;
27797 +                       break;
27798 +               }
27799 +
27800 +               ret = copy_from_user(entry, u_entry, sizeof(FO_DEVICE_DATA));
27801 +
27802 +               if (ret) {
27803 +                       /* error */
27804 +                       DEBUG2_9_10(printk("%s: u_entry %p copy error.\n",
27805 +                           __func__, u_entry);)
27806 +                       pext->Status = EXT_STATUS_COPY_ERR;
27807 +                       break;
27808 +               }
27809 +
27810 +               for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
27811 +                       dp = host->mp_devs[dev_no];
27812 +
27813 +                       if (dp == NULL)
27814 +                               continue;
27815 +
27816 +                       /* Lookup entry name */
27817 +                       if (!qla2x00_is_portname_in_device(dp, entry->PortName))
27818 +                               continue;
27819 +
27820 +                       if ((pathlist = dp->path_list) == NULL)
27821 +                               continue;
27822 +
27823 +                       path = pathlist->last;
27824 +                       for (path_id = 0; path_id < pathlist->path_cnt;
27825 +                           path_id++, path= path->next) {
27826 +
27827 +                               if (path->host != host)
27828 +                                       continue;
27829 +
27830 +                               if (!qla2x00_is_portname_equal(path->portname,
27831 +                                   entry->PortName))
27832 +                                       continue;
27833 +
27834 +                               path->mp_byte = entry->MultipathControl;
27835 +
27836 +                               DEBUG9(printk("cfg_set_target_data: %d target "
27837 +                                   "data = 0x%x \n",
27838 +                                   path->id,path->mp_byte);)
27839 +
27840 +                               /*
27841 +                                * If this is the visible path, then make it
27842 +                                * available on next reboot.
27843 +                                */
27844 +                               if (!((path->mp_byte & MP_MASK_HIDDEN) ||
27845 +                                   (path->mp_byte & MP_MASK_UNCONFIGURED))) {
27846 +                                       pathlist->visible = path->id;
27847 +                               }
27848 +
27849 +                               /* Found path. Go to next entry. */
27850 +                               break;
27851 +                       }
27852 +                       break;
27853 +               }
27854 +       }
27855 +
27856 +       KMEM_FREE(entry, sizeof(FO_DEVICE_DATA));
27857 +
27858 +       DEBUG9(printk("%s: exiting. ret = %d.\n", __func__, ret);)
27859 +
27860 +       return (ret);
27861 +
27862 +}
27863 +
27864 +/*
27865 + * qla2x00_fo_ioctl
27866 + *     Provides functions for failover ioctl() calls.
27867 + *
27868 + * Input:
27869 + *     ha = adapter state pointer.
27870 + *     ioctl_code = ioctl function to perform
27871 + *     arg = Address of application EXT_IOCTL cmd data
27872 + *     mode = flags
27873 + *
27874 + * Returns:
27875 + *     Return value is the ioctl rval_p return value.
27876 + *     0 = success
27877 + *
27878 + * Context:
27879 + *     Kernel context.
27880 + */
27881 +/* ARGSUSED */
27882 +int
27883 +qla2x00_fo_ioctl(scsi_qla_host_t *ha, int ioctl_code, void *ret_arg, int mode)
27884 +{
27885 +       static EXT_IOCTL cmd_struct;
27886 +       int    rval = 0;
27887 +       size_t  in_size, out_size;
27888 +       static  union {
27889 +               FO_PARAMS params;
27890 +               FO_GET_PATHS path;
27891 +               FO_SET_CURRENT_PATH set_path;
27892 +               /* FO_HBA_STAT_INPUT stat; */
27893 +               FO_HBA_STAT stat;
27894 +               FO_LUN_DATA_INPUT lun_data;
27895 +               FO_TARGET_DATA_INPUT target_data;
27896 +       } buff;
27897 +
27898 +
27899 +       ENTER("qla2x00_fo_ioctl");
27900 +       DEBUG9(printk("%s: entered. arg (%p):\n", __func__, ret_arg);)
27901 +
27902 +       memcpy(&cmd_struct, ret_arg, sizeof(cmd_struct));
27903 +
27904 +       /*
27905 +        * default case for this switch not needed,
27906 +        * ioctl_code validated by caller.
27907 +        */
27908 +       in_size = out_size = 0;
27909 +       switch (ioctl_code) {
27910 +               case FO_CC_GET_PARAMS:
27911 +                       out_size = sizeof(FO_PARAMS);
27912 +                       break;
27913 +               case FO_CC_SET_PARAMS:
27914 +                       in_size = sizeof(FO_PARAMS);
27915 +                       break;
27916 +               case FO_CC_GET_PATHS:
27917 +                       in_size = sizeof(FO_GET_PATHS);
27918 +                       break;
27919 +               case FO_CC_SET_CURRENT_PATH:
27920 +                       in_size = sizeof(FO_SET_CURRENT_PATH);
27921 +                       break;
27922 +               case FO_CC_GET_HBA_STAT:
27923 +               case FO_CC_RESET_HBA_STAT:
27924 +                       in_size = sizeof(FO_HBA_STAT_INPUT);
27925 +                       break;
27926 +               case FO_CC_GET_LUN_DATA:
27927 +                       in_size = sizeof(FO_LUN_DATA_INPUT);
27928 +                       break;
27929 +               case FO_CC_SET_LUN_DATA:
27930 +                       in_size = sizeof(FO_LUN_DATA_INPUT);
27931 +                       break;
27932 +               case FO_CC_GET_TARGET_DATA:
27933 +                       in_size = sizeof(FO_TARGET_DATA_INPUT);
27934 +                       break;
27935 +               case FO_CC_SET_TARGET_DATA:
27936 +                       in_size = sizeof(FO_TARGET_DATA_INPUT);
27937 +                       break;
27938 +
27939 +       }
27940 +       if (in_size != 0) {
27941 +               if ((int)cmd_struct.RequestLen < in_size) {
27942 +                       cmd_struct.Status = EXT_STATUS_INVALID_PARAM;
27943 +                       cmd_struct.DetailStatus = EXT_DSTATUS_REQUEST_LEN;
27944 +                       DEBUG10(printk("%s: got invalie req len (%d).\n",
27945 +                           __func__, cmd_struct.RequestLen);)
27946 +
27947 +               } else {
27948 +
27949 +                       rval = verify_area(VERIFY_READ,
27950 +                           (void *)cmd_struct.RequestAdr, in_size);
27951 +                       if (rval) {
27952 +                               /* error */
27953 +                               DEBUG2_9_10(printk("%s: req buf verify read "
27954 +                                   "error. size=%d.\n",
27955 +                                   __func__, in_size);)
27956 +                               cmd_struct.Status = EXT_STATUS_COPY_ERR;
27957 +                       }
27958 +                       rval = copy_from_user(&buff,
27959 +                           (void *)cmd_struct.RequestAdr, in_size);
27960 +
27961 +                       if (rval) {
27962 +                               DEBUG2_9_10(printk("%s: req buf copy error. "
27963 +                                   "size=%d.\n",
27964 +                                   __func__, in_size);)
27965 +
27966 +                               cmd_struct.Status = EXT_STATUS_COPY_ERR;
27967 +                       } else {
27968 +                               DEBUG9(printk("qla2x00_fo_ioctl: req buf "
27969 +                                   "copied ok.\n"));
27970 +                       }
27971 +               }
27972 +       } else if (out_size != 0 && (int)cmd_struct.ResponseLen < out_size) {
27973 +               cmd_struct.Status = EXT_STATUS_BUFFER_TOO_SMALL;
27974 +               cmd_struct.DetailStatus = out_size;
27975 +               DEBUG10(printk("%s: got invalie resp len (%d).\n",
27976 +                   __func__, cmd_struct.ResponseLen);)
27977 +       }
27978 +
27979 +       if (rval != 0 || cmd_struct.Status != 0)
27980 +               goto done_fo_ioctl;
27981 +
27982 +       cmd_struct.Status = EXT_STATUS_OK;
27983 +       cmd_struct.DetailStatus = EXT_STATUS_OK;
27984 +
27985 +       switch (ioctl_code) {
27986 +               case FO_CC_GET_PARAMS:
27987 +                       rval = qla2x00_fo_get_params(&buff.params);
27988 +                       break;
27989 +               case FO_CC_SET_PARAMS:
27990 +                       rval = qla2x00_fo_set_params(&buff.params);
27991 +                       break;
27992 +               case FO_CC_GET_PATHS:
27993 +                       rval = qla2x00_cfg_get_paths(&cmd_struct,
27994 +                                       &buff.path,mode);
27995 +                       if (rval != 0)
27996 +                               out_size = 0;
27997 +                       break;
27998 +               case FO_CC_SET_CURRENT_PATH:
27999 +                       rval = qla2x00_cfg_set_current_path(&cmd_struct,
28000 +                                       &buff.set_path,mode);
28001 +                       break;
28002 +               case FO_CC_RESET_HBA_STAT:
28003 +                       rval = qla2x00_fo_stats(&buff.stat, TRUE);
28004 +                       break;
28005 +               case FO_CC_GET_HBA_STAT:
28006 +                       rval = qla2x00_fo_stats(&buff.stat, FALSE);
28007 +                       break;
28008 +               case FO_CC_GET_LUN_DATA:
28009 +
28010 +                       DEBUG4(printk("calling qla2x00_fo_get_lun_data\n");)
28011 +                       DEBUG4(printk("cmd_struct.RequestAdr (%p):\n",
28012 +                                       cmd_struct.RequestAdr);)
28013 +
28014 +                       rval = qla2x00_fo_get_lun_data(&cmd_struct,
28015 +                           &buff.lun_data, mode);
28016 +
28017 +                       if (rval != 0)
28018 +                               out_size = 0;
28019 +                       break;
28020 +               case FO_CC_SET_LUN_DATA:
28021 +
28022 +                       DEBUG4(printk("calling qla2x00_fo_set_lun_data\n");)
28023 +                       DEBUG4(printk(" cmd_struct.RequestAdr (%p):\n",
28024 +                           cmd_struct.RequestAdr);)
28025 +
28026 +                       rval = qla2x00_fo_set_lun_data(&cmd_struct,
28027 +                           &buff.lun_data, mode);
28028 +                       break;
28029 +               case FO_CC_GET_TARGET_DATA:
28030 +                       DEBUG4(printk("calling qla2x00_fo_get_target_data\n");)
28031 +                       DEBUG4(printk("cmd_struct.RequestAdr (%p):\n",
28032 +                           cmd_struct.RequestAdr);)
28033 +
28034 +                       rval = qla2x00_fo_get_target_data(&cmd_struct,
28035 +                           &buff.target_data, mode);
28036 +
28037 +                       if (rval != 0) {
28038 +                               out_size = 0;
28039 +                       }
28040 +                       break;
28041 +               case FO_CC_SET_TARGET_DATA:
28042 +                       DEBUG4(printk("calling qla2x00_fo_set_target_data\n");)
28043 +                       DEBUG4(printk(" cmd_struct.RequestAdr (%p):\n",
28044 +                           cmd_struct.RequestAdr);)
28045 +                       rval = qla2x00_fo_set_target_data(&cmd_struct,
28046 +                           &buff.target_data, mode);
28047 +                       break;
28048 +
28049 +       }
28050 +
28051 +       if (rval == 0 && (cmd_struct.ResponseLen = out_size) != 0) {
28052 +               rval = verify_area(VERIFY_WRITE, (void *)cmd_struct.ResponseAdr,
28053 +                   out_size);
28054 +               if (rval != 0) {
28055 +                       DEBUG10(printk("%s: resp buf very write error.\n",
28056 +                           __func__);)
28057 +                       cmd_struct.Status = EXT_STATUS_COPY_ERR;
28058 +               }
28059 +       }
28060 +
28061 +       if (rval == 0) {
28062 +               rval = copy_to_user((void *)cmd_struct.ResponseAdr,
28063 +                   &buff, out_size);
28064 +
28065 +               if (rval != 0) {
28066 +                       DEBUG10(printk("%s: resp buf copy error. size=%d.\n",
28067 +                           __func__, out_size);)
28068 +                       cmd_struct.Status = EXT_STATUS_COPY_ERR;
28069 +               }
28070 +       }
28071 +
28072 +done_fo_ioctl:
28073 +
28074 +       /* Set Status and DetailStatus fields in application EXT_IOCTL */
28075 +       (((EXT_IOCTL*)ret_arg)->Status)         = cmd_struct.Status;
28076 +       (((EXT_IOCTL*)ret_arg)->DetailStatus)   = cmd_struct.DetailStatus;
28077 +       (((EXT_IOCTL*)ret_arg)->ResponseLen)    = cmd_struct.ResponseLen;
28078 +
28079 +       if (rval != 0) {
28080 +               /*EMPTY*/
28081 +               DEBUG10(printk("%s: **** FAILED ****\n", __func__);)
28082 +       } else {
28083 +               /*EMPTY*/
28084 +               DEBUG9(printk("%s: exiting normally\n", __func__);)
28085 +       }
28086 +
28087 +       return rval;
28088 +}
28089 +
28090 +
28091 +/*
28092 + * qla2x00_fo_count_retries
28093 + *     Increment the retry counter for the command.
28094 + *      Set or reset the SRB_RETRY flag.
28095 + *
28096 + * Input:
28097 + *     sp = Pointer to command.
28098 + *
28099 + * Returns:
28100 + *     TRUE -- retry
28101 + *     FALSE -- don't retry
28102 + *
28103 + * Context:
28104 + *     Kernel context.
28105 + */
28106 +static uint8_t
28107 +qla2x00_fo_count_retries(scsi_qla_host_t *ha, srb_t *sp)
28108 +{
28109 +       uint8_t         retry = TRUE;
28110 +       os_lun_t        *lq;
28111 +       os_tgt_t        *tq;
28112 +
28113 +       DEBUG9(printk("%s: entered.\n", __func__);)
28114 +
28115 +       if (++sp->fo_retry_cnt >  qla_fo_params.MaxRetriesPerIo) {
28116 +               /* no more failovers for this request */
28117 +               retry = FALSE;
28118 +               sp->fo_retry_cnt = 0;
28119 +               printk(KERN_INFO
28120 +                   "qla2x00: no more failovers for request - "
28121 +                   "pid= %ld\n", sp->cmd->serial_number);
28122 +       } else {
28123 +               /*
28124 +                * We haven't exceeded the max retries for this request, check
28125 +                * max retries this path
28126 +                */
28127 +               if ((sp->fo_retry_cnt % qla_fo_params.MaxRetriesPerPath) == 0) {
28128 +                       DEBUG(printk(" qla2x00_fo_count_retries: FAILOVER - "
28129 +                           "queuing ha=%ld, sp=%p, pid =%ld, "
28130 +                           "fo retry= %d \n",
28131 +                           ha->host_no,
28132 +                           sp, sp->cmd->serial_number,
28133 +                           sp->fo_retry_cnt);)
28134 +
28135 +                       /*
28136 +                        * Note: we don't want it to timeout, so it is
28137 +                        * recycling on the retry queue and the fialover queue.
28138 +                        */
28139 +                       lq = sp->lun_queue;
28140 +                       tq = sp->tgt_queue;
28141 +                       set_bit(LUN_MPIO_BUSY, &lq->q_flag);
28142 +
28143 +                       /*
28144 +                        * ??? We can get a path error on any ha, but always
28145 +                        * queue failover on originating ha. This will allow us
28146 +                        * to syncronized the requests for a given lun.
28147 +                        */
28148 +                       sp->f_start=jiffies;/*ra 10/29/01*/
28149 +                       /* Now queue it on to be failover */
28150 +                       sp->ha = ha;
28151 +                       add_to_failover_queue(ha,sp);
28152 +               }
28153 +       }
28154 +
28155 +       DEBUG9(printk("%s: exiting. retry = %d.\n", __func__, retry);)
28156 +
28157 +       return retry ;
28158 +}
28159 +
28160 +
28161 +/*
28162 + * qla2x00_fo_check
28163 + *     This function is called from the done routine to see if
28164 + *  the SRB requires a failover.
28165 + *
28166 + *     This function examines the available os returned status and
28167 + *  if meets condition, the command(srb) is placed ont the failover
28168 + *  queue for processing.
28169 + *
28170 + * Input:
28171 + *     sp  = Pointer to the SCSI Request Block
28172 + *
28173 + * Output:
28174 + *      sp->flags SRB_RETRY bit id command is to
28175 + *      be retried otherwise bit is reset.
28176 + *
28177 + * Returns:
28178 + *      None.
28179 + *
28180 + * Context:
28181 + *     Kernel/Interrupt context.
28182 + */
28183 +uint8_t
28184 +qla2x00_fo_check(scsi_qla_host_t *ha, srb_t *sp)
28185 +{
28186 +       uint8_t         retry = FALSE;
28187 +       int host_status;
28188 +#if DEBUG_QLA2100
28189 +       static char *reason[] = {
28190 +               "DID_OK",
28191 +               "DID_NO_CONNECT",
28192 +               "DID_BUS_BUSY",
28193 +               "DID_TIME_OUT",
28194 +               "DID_BAD_TARGET",
28195 +               "DID_ABORT",
28196 +               "DID_PARITY",
28197 +               "DID_ERROR",
28198 +               "DID_RESET",
28199 +               "DID_BAD_INTR"
28200 +       };
28201 +#endif
28202 +
28203 +       DEBUG9(printk("%s: entered.\n", __func__);)
28204 +
28205 +       /* we failover on selction timeouts only */
28206 +       host_status = CMD_RESULT(sp->cmd) >>16;
28207 +       if( host_status == DID_NO_CONNECT) {
28208 +               if( qla2x00_fo_count_retries(ha,sp) ) {
28209 +                       /* Force a retry  on this request, it will
28210 +                        * cause the LINUX timer to get reset, while we
28211 +                        * we are processing the failover.
28212 +                        */
28213 +                       CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
28214 +                       retry = TRUE;
28215 +               }
28216 +               DEBUG(printk("qla2x00_fo_check: pid= %ld sp %p "
28217 +                               "retry count=%d, retry flag = %d, "
28218 +                               "host status (%s)\n\r",
28219 +                               sp->cmd->serial_number,
28220 +                               sp, sp->fo_retry_cnt,
28221 +                               retry, reason[host_status]);)
28222 +       }
28223 +
28224 +       DEBUG9(printk("%s: exiting. retry = %d.\n", __func__, retry);)
28225 +
28226 +       return retry;
28227 +}
28228 +
28229 +/*
28230 + * qla2x00_fo_path_change
28231 + *     This function is called from configuration mgr to notify
28232 + *     of a path change.
28233 + *
28234 + * Input:
28235 + *      type    = Failover notify type, FO_NOTIFY_LUN_RESET or FO_NOTIFY_LOGOUT
28236 + *      newlunp = Pointer to the fc_lun struct for current path.
28237 + *      oldlunp = Pointer to fc_lun struct for previous path.
28238 + *
28239 + * Returns:
28240 + *
28241 + * Context:
28242 + *     Kernel context.
28243 + */
28244 +uint32_t
28245 +qla2x00_fo_path_change(uint32_t type, fc_lun_t *newlunp, fc_lun_t *oldlunp)
28246 +{
28247 +       uint32_t        ret = QLA2X00_SUCCESS;
28248 +
28249 +       newlunp->max_path_retries = 0;
28250 +       return ret;
28251 +}
28252 +
28253 +/*
28254 + * qla2x00_fo_get_params
28255 + *     Process an ioctl request to get system wide failover parameters.
28256 + *
28257 + * Input:
28258 + *     pp = Pointer to FO_PARAMS structure.
28259 + *
28260 + * Returns:
28261 + *     EXT_STATUS code.
28262 + *
28263 + * Context:
28264 + *     Kernel context.
28265 + */
28266 +static uint32_t
28267 +qla2x00_fo_get_params(PFO_PARAMS pp)
28268 +{
28269 +       DEBUG9(printk("%s: entered.\n", __func__);)
28270 +
28271 +       pp->MaxPathsPerDevice = qla_fo_params.MaxPathsPerDevice;
28272 +       pp->MaxRetriesPerPath = qla_fo_params.MaxRetriesPerPath;
28273 +       pp->MaxRetriesPerIo = qla_fo_params.MaxRetriesPerIo;
28274 +       pp->Flags = qla_fo_params.Flags;
28275 +       pp->FailoverNotifyType = qla_fo_params.FailoverNotifyType;
28276 +       pp->FailoverNotifyCdbLength = qla_fo_params.FailoverNotifyCdbLength;
28277 +       memset(pp->FailoverNotifyCdb, 0, sizeof(pp->FailoverNotifyCdb));
28278 +       memcpy(pp->FailoverNotifyCdb,
28279 +           &qla_fo_params.FailoverNotifyCdb[0], sizeof(pp->FailoverNotifyCdb));
28280 +
28281 +       DEBUG9(printk("%s: exiting.\n", __func__);)
28282 +
28283 +       return EXT_STATUS_OK;
28284 +}
28285 +
28286 +/*
28287 + * qla2x00_fo_set_params
28288 + *     Process an ioctl request to set system wide failover parameters.
28289 + *
28290 + * Input:
28291 + *     pp = Pointer to FO_PARAMS structure.
28292 + *
28293 + * Returns:
28294 + *     EXT_STATUS code.
28295 + *
28296 + * Context:
28297 + *     Kernel context.
28298 + */
28299 +static uint32_t
28300 +qla2x00_fo_set_params(PFO_PARAMS pp)
28301 +{
28302 +       DEBUG9(printk("%s: entered.\n", __func__);)
28303 +
28304 +       /* Check values for defined MIN and MAX */
28305 +       if ((pp->MaxPathsPerDevice > SDM_DEF_MAX_PATHS_PER_DEVICE) ||
28306 +           (pp->MaxRetriesPerPath < FO_MAX_RETRIES_PER_PATH_MIN) ||
28307 +           (pp->MaxRetriesPerPath > FO_MAX_RETRIES_PER_PATH_MAX) ||
28308 +           (pp->MaxRetriesPerIo < FO_MAX_RETRIES_PER_IO_MIN) ||
28309 +           (pp->MaxRetriesPerPath > FO_MAX_RETRIES_PER_IO_MAX)) {
28310 +               DEBUG2_9_10(printk("%s: got invalid params.\n", __func__);)
28311 +               return EXT_STATUS_INVALID_PARAM;
28312 +       }
28313 +
28314 +       /* Update the global structure. */
28315 +       qla_fo_params.MaxPathsPerDevice = pp->MaxPathsPerDevice;
28316 +       qla_fo_params.MaxRetriesPerPath = pp->MaxRetriesPerPath;
28317 +       qla_fo_params.MaxRetriesPerIo = pp->MaxRetriesPerIo;
28318 +       qla_fo_params.Flags = pp->Flags;
28319 +       qla_fo_params.FailoverNotifyType = pp->FailoverNotifyType;
28320 +       qla_fo_params.FailoverNotifyCdbLength = pp->FailoverNotifyCdbLength;
28321 +       if (pp->FailoverNotifyType & FO_NOTIFY_TYPE_CDB) {
28322 +               if (pp->FailoverNotifyCdbLength >
28323 +                   sizeof(qla_fo_params.FailoverNotifyCdb)) {
28324 +                       DEBUG2_9_10(printk("%s: got invalid cdb length.\n",
28325 +                           __func__);)
28326 +                       return EXT_STATUS_INVALID_PARAM;
28327 +               }
28328 +
28329 +               memcpy(qla_fo_params.FailoverNotifyCdb,
28330 +                   pp->FailoverNotifyCdb,
28331 +                   sizeof(qla_fo_params.FailoverNotifyCdb));
28332 +       }
28333 +
28334 +       DEBUG9(printk("%s: exiting.\n", __func__);)
28335 +
28336 +       return EXT_STATUS_OK;
28337 +}
28338 +
28339 +
28340 +/*
28341 + * qla2x00_fo_init_params
28342 + *     Gets driver configuration file failover properties to initalize
28343 + *     the global failover parameters structure.
28344 + *
28345 + * Input:
28346 + *     ha = adapter block pointer.
28347 + *
28348 + * Context:
28349 + *     Kernel context.
28350 + */
28351 +void
28352 +qla2x00_fo_init_params(scsi_qla_host_t *ha)
28353 +{
28354 +       DEBUG3(printk("%s: entered.\n", __func__);)
28355 +
28356 +       /* For parameters that are not completely implemented yet, */
28357 +
28358 +       memset(&qla_fo_params, 0, sizeof(qla_fo_params));
28359 +
28360 +       if(MaxPathsPerDevice) {
28361 +               qla_fo_params.MaxPathsPerDevice = MaxPathsPerDevice;
28362 +       } else
28363 +               qla_fo_params.MaxPathsPerDevice =FO_MAX_PATHS_PER_DEVICE_DEF ;
28364 +       if(MaxRetriesPerPath) {
28365 +               qla_fo_params.MaxRetriesPerPath = MaxRetriesPerPath;
28366 +       } else
28367 +               qla_fo_params.MaxRetriesPerPath =FO_MAX_RETRIES_PER_PATH_DEF;
28368 +       if(MaxRetriesPerIo) {
28369 +               qla_fo_params.MaxRetriesPerIo =MaxRetriesPerIo;
28370 +       } else
28371 +               qla_fo_params.MaxRetriesPerIo =FO_MAX_RETRIES_PER_IO_DEF;
28372 +
28373 +       qla_fo_params.Flags =  0;
28374 +       qla_fo_params.FailoverNotifyType = FO_NOTIFY_TYPE_NONE;
28375 +
28376 +       DEBUG3(printk("%s: exiting.\n", __func__);)
28377 +
28378 +}
28379 +
28380 +/*
28381 + * qla2x00_send_fo_notification
28382 + *      Sends failover notification if needed.  Change the fc_lun pointer
28383 + *      in the old path lun queue.
28384 + *
28385 + * Input:
28386 + *      old_lp = Pointer to old fc_lun.
28387 + *      new_lp = Pointer to new fc_lun.
28388 + *
28389 + * Returns:
28390 + *      Local function status code.
28391 + *
28392 + * Context:
28393 + *      Kernel context.
28394 + */
28395 +uint32_t
28396 +qla2x00_send_fo_notification(fc_lun_t *old_lp, fc_lun_t *new_lp)
28397 +{
28398 +       scsi_qla_host_t *old_ha = old_lp->fcport->ha;
28399 +       int             rval = QLA2X00_SUCCESS;
28400 +       inq_cmd_rsp_t   *pkt;
28401 +       uint16_t        loop_id, lun;
28402 +       dma_addr_t      phys_address;
28403 +
28404 +
28405 +       ENTER("qla2x00_send_fo_notification");
28406 +       DEBUG3(printk("%s: entered.\n", __func__);)
28407 +
28408 +       loop_id = old_lp->fcport->loop_id;
28409 +       lun = old_lp->lun;
28410 +
28411 +       if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_LUN_RESET) {
28412 +               rval = qla2x00_lun_reset(old_ha, loop_id, lun);
28413 +               if (rval == QLA2X00_SUCCESS) {
28414 +                       DEBUG4(printk("qla2x00_send_fo_notification: LUN "
28415 +                           "reset succeded\n");)
28416 +               } else {
28417 +                       DEBUG4(printk("qla2x00_send_fo_notification: LUN "
28418 +                           "reset failed\n");)
28419 +               }
28420 +
28421 +       }
28422 +       if ( (qla_fo_params.FailoverNotifyType ==
28423 +            FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET) ||
28424 +           (qla_fo_params.FailoverNotifyType ==
28425 +            FO_NOTIFY_TYPE_LOGOUT_OR_CDB) )  {
28426 +
28427 +               rval = qla2x00_fabric_logout(old_ha, loop_id);
28428 +               if (rval == QLA2X00_SUCCESS) {
28429 +                       DEBUG4(printk("qla2x00_send_fo_failover_notify: "
28430 +                           "logout succeded\n");)
28431 +               } else {
28432 +                       DEBUG4(printk("qla2x00_send_fo_failover_notify: "
28433 +                           "logout failed\n");)
28434 +               }
28435 +
28436 +       }
28437 +
28438 +       if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_CDB) {
28439 +               pkt = pci_alloc_consistent(old_ha->pdev,
28440 +                   sizeof(inq_cmd_rsp_t), &phys_address);
28441 +               if (pkt == NULL) {
28442 +                       DEBUG4(printk("qla2x00_send_fo_failover_notify: "
28443 +                           "memory allocation failed\n");)
28444 +
28445 +                       return(QLA2X00_FUNCTION_FAILED);
28446 +               }
28447 +
28448 +               memset(pkt,0, sizeof(inq_cmd_rsp_t));
28449 +               pkt->p.cmd.entry_type = COMMAND_A64_TYPE;
28450 +               pkt->p.cmd.entry_count = 1;
28451 +               pkt->p.cmd.lun = lun;
28452 +               pkt->p.cmd.target = (uint8_t)loop_id;
28453 +               pkt->p.cmd.control_flags = CF_SIMPLE_TAG;
28454 +               memcpy(pkt->p.cmd.scsi_cdb,
28455 +                   qla_fo_params.FailoverNotifyCdb,
28456 +                   qla_fo_params.FailoverNotifyCdbLength);
28457 +               /* FIXME This setup needs to be verified with Dennis. */
28458 +               pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1);
28459 +               pkt->p.cmd.byte_count = __constant_cpu_to_le32(0);
28460 +               pkt->p.cmd.dseg_0_address[0] = cpu_to_le32(
28461 +                   LSD(phys_address + sizeof (sts_entry_t)));
28462 +               pkt->p.cmd.dseg_0_address[1] = cpu_to_le32(
28463 +                   MSD(phys_address + sizeof (sts_entry_t)));
28464 +               pkt->p.cmd.dseg_0_length = __constant_cpu_to_le32(0);
28465 +
28466 +               rval = qla2x00_issue_iocb(old_ha,
28467 +                   pkt, phys_address, sizeof (inq_cmd_rsp_t));
28468 +
28469 +               if (rval != QLA2X00_SUCCESS ||
28470 +                   pkt->p.rsp.comp_status != CS_COMPLETE ||
28471 +                   pkt->p.rsp.scsi_status & SS_CHECK_CONDITION ||
28472 +                   pkt->inq[0] == 0x7f) {
28473 +
28474 +                       DEBUG4(printk("qla2x00_fo_notification: send CDB "
28475 +                           "failed: comp_status = %x"
28476 +                           "scsi_status = %x inq[0] = %x\n",
28477 +                           pkt->p.rsp.comp_status,
28478 +                           pkt->p.rsp.scsi_status,
28479 +                           pkt->inq[0]);)
28480 +               }
28481 +
28482 +               pci_free_consistent(old_ha->pdev,
28483 +                   sizeof(inq_cmd_rsp_t), pkt, phys_address);
28484 +       }
28485 +
28486 +       DEBUG3(printk("%s: exiting. rval = %d.\n", __func__, rval);)
28487 +
28488 +       return rval;
28489 +}
28490 +
28491 +
28492 +/*
28493 + * qla2100_fo_enabled
28494 + *      Reads and validates the failover enabled property.
28495 + *
28496 + * Input:
28497 + *      ha = adapter state pointer.
28498 + *      instance = HBA number.
28499 + *
28500 + * Returns:
28501 + *      TRUE when failover is authorized else FALSE
28502 + *
28503 + * Context:
28504 + *      Kernel context.
28505 + */
28506 +uint8_t
28507 +qla2x00_fo_enabled(scsi_qla_host_t *ha, int instance)
28508 +{
28509 +       uint8_t enable = FALSE;
28510 +
28511 +       if (ha->flags.failover_enabled)
28512 +               enable = TRUE;
28513 +
28514 +       return enable;
28515 +}
28516 --- /dev/null   Thu Apr 11 07:25:15 2002
28517 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_fo.cfg  Thu Jul  3 15:34:42 2003
28518 @@ -0,0 +1,31 @@
28519 +/******************************************************************************
28520 + *                  QLOGIC LINUX SOFTWARE
28521 + *
28522 + * QLogic ISP2x00 device driver for Linux 2.4.x
28523 + * Copyright (C) 2003 Qlogic Corporation
28524 + * (www.qlogic.com)
28525 + *
28526 + * This program is free software; you can redistribute it and/or modify it
28527 + * under the terms of the GNU General Public License as published by the
28528 + * Free Software Foundation; either version 2, or (at your option) any
28529 + * later version.
28530 + *
28531 + * This program is distributed in the hope that it will be useful, but
28532 + * WITHOUT ANY WARRANTY; without even the implied warranty of
28533 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
28534 + * General Public License for more details.
28535 + *
28536 + ******************************************************************************/
28537 +
28538 +/*
28539 + * QLogic ISP2x00 Multi-path LUN Support Driver
28540 + */
28541 +int    MaxPathsPerDevice = 0;
28542 +int    MaxRetriesPerPath =0 ;
28543 +int    MaxRetriesPerIo =0;
28544 +#if defined(MODULE)
28545 +/* insmod qla2100 <options> ql2xopts=<string> */
28546 +MODULE_PARM(MaxPathsPerDevice, "i");
28547 +MODULE_PARM(MaxRetriesPerPath, "i");
28548 +MODULE_PARM(MaxRetriesPerIo, "i");
28549 +#endif
28550 --- /dev/null   Thu Apr 11 07:25:15 2002
28551 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_fo.h    Thu Jul  3 15:34:42 2003
28552 @@ -0,0 +1,75 @@
28553 +/******************************************************************************
28554 + *                  QLOGIC LINUX SOFTWARE
28555 + *
28556 + * QLogic ISP2x00 device driver for Linux 2.5.x
28557 + * Copyright (C) 2003 Qlogic Corporation
28558 + * (www.qlogic.com)
28559 + *
28560 + * This program is free software; you can redistribute it and/or modify it
28561 + * under the terms of the GNU General Public License as published by the
28562 + * Free Software Foundation; either version 2, or (at your option) any
28563 + * later version.
28564 + *
28565 + * This program is distributed in the hope that it will be useful, but
28566 + * WITHOUT ANY WARRANTY; without even the implied warranty of
28567 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
28568 + * General Public License for more details.
28569 + *
28570 + ******************************************************************************/
28571 +
28572 +/*
28573 + * QLogic ISP2x00 Failover Header 
28574 + *
28575 + */
28576 +#ifndef _QLA_FO_H
28577 +#define _QLA_FO_H
28578 +
28579 +#if defined(__cplusplus)
28580 +extern "C"
28581 +{
28582 +#endif
28583 +
28584 +#include "qlfo.h"
28585 +        /*
28586 +         * This structure definition is for a scsi I/O request NOT subject to
28587 +         * failover re-routing.  It is for the use of configuration operations
28588 +         * and diagnostics functions as definted in ExIoct.h
28589 +         */
28590 +        typedef struct scsi_cdb_request {
28591 +                struct adapter_state           *ha;
28592 +                uint16_t       target;
28593 +                uint16_t       lun;
28594 +                uint8_t                *cdb_ptr;       /* Pointer to cdb to be sent */
28595 +                uint8_t                cdb_len;        /* cdb length */
28596 +                uint8_t                direction;      /* Direction of I/O for buffer */
28597 +                uint8_t                scb_len;        /* Scsi completion block length */
28598 +                uint8_t                *scb_ptr;       /* Scsi completion block pointer */
28599 +                uint8_t                *buf_ptr;       /* Pointer to I/O buffer */
28600 +                uint16_t       buf_len;        /* Buffer size */
28601 +        }
28602 +        SCSI_REQ_t, *SCSI_REQ_p;
28603 +
28604 +
28605 +        /*
28606 +        * Special defines
28607 +        */
28608 +        typedef        union   _FO_HBA_STAT {
28609 +                FO_HBA_STAT_INPUT      input;
28610 +                FO_HBA_STAT_INFO       info;
28611 +        } FO_HBA_STAT;
28612 +
28613 +        typedef        union   _FO_LUN_DATA {
28614 +                FO_LUN_DATA_INPUT      input;
28615 +                FO_LUN_DATA_LIST       list;
28616 +        } FO_LUN_DATA;
28617 +
28618 +        typedef union  _FO_TARGET_DATA {
28619 +                FO_TARGET_DATA_INPUT    input;
28620 +                FO_DEVICE_DATABASE    list;
28621 +        } FO_TARGET_DATA;
28622 +
28623 +#if defined(__cplusplus)
28624 +}
28625 +#endif
28626 +
28627 +#endif /* ifndef _QLA_FO_H */
28628 --- /dev/null   Thu Apr 11 07:25:15 2002
28629 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_gbl.h   Thu Jul  3 15:34:42 2003
28630 @@ -0,0 +1,395 @@
28631 +/********************************************************************************
28632 +*                  QLOGIC LINUX SOFTWARE
28633 +*
28634 +* QLogic ISP2x00 device driver for Linux 2.5.x
28635 +* Copyright (C) 2003 Qlogic Corporation
28636 +* (www.qlogic.com)
28637 +*
28638 +* This program is free software; you can redistribute it and/or modify it
28639 +* under the terms of the GNU General Public License as published by the
28640 +* Free Software Foundation; either version 2, or (at your option) any
28641 +* later version.
28642 +*
28643 +* This program is distributed in the hope that it will be useful, but
28644 +* WITHOUT ANY WARRANTY; without even the implied warranty of
28645 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
28646 +* General Public License for more details.
28647 +*
28648 +******************************************************************************
28649 +* Global include file.
28650 +******************************************************************************/
28651 +
28652 +
28653 +#ifndef __QLA_GBL_H
28654 +#define        __QLA_GBL_H
28655 +
28656 +/*
28657 + * Global Data in FW files.
28658 + */
28659 +extern unsigned char  fw2100tp_version[];
28660 +extern unsigned char  fw2100tp_version_str[];
28661 +extern unsigned short fw2100tp_addr01;
28662 +extern unsigned short fw2100tp_code01[];
28663 +extern unsigned short fw2100tp_length01;
28664 +
28665 +extern unsigned char  fw2200ip_version[];
28666 +extern unsigned char  fw2200ip_version_str[];
28667 +extern unsigned short fw2200ip_addr01;
28668 +extern unsigned short fw2200ip_code01[];
28669 +extern unsigned short fw2200ip_length01;
28670 +
28671 +extern unsigned char  fw2300tpx_version[];
28672 +extern unsigned char  fw2300tpx_version_str[];
28673 +extern unsigned short fw2300tpx_addr01;
28674 +extern unsigned short fw2300tpx_code01[];
28675 +extern unsigned short fw2300tpx_length01;
28676 +
28677 +extern unsigned char  fw2300ipx_version[];
28678 +extern unsigned char  fw2300ipx_version_str[];
28679 +extern unsigned short fw2300ipx_addr01;
28680 +extern unsigned short fw2300ipx_code01[];
28681 +extern unsigned short fw2300ipx_length01;
28682 +
28683 +#if defined(ISP2322)
28684 +extern unsigned char  fw2322tpx_version[];
28685 +extern unsigned char  fw2322tpx_version_str[];
28686 +extern unsigned short fw2322tpx_addr01;
28687 +extern unsigned short fw2322tpx_code01[];
28688 +extern unsigned short fw2322tpx_length01;
28689 +extern unsigned long rseqtpx_code_addr01;
28690 +extern unsigned short rseqtpx_code01[];
28691 +extern unsigned short rseqtpx_code_length01;
28692 +extern unsigned long xseqtpx_code_addr01;
28693 +extern unsigned short xseqtpx_code01[];
28694 +extern unsigned short xseqtpx_code_length01;
28695 +
28696 +extern unsigned char  fw2322ipx_version[];
28697 +extern unsigned char  fw2322ipx_version_str[];
28698 +extern unsigned short fw2322ipx_addr01;
28699 +extern unsigned short fw2322ipx_code01[];
28700 +extern unsigned short fw2322ipx_length01;
28701 +extern unsigned long rseqipx_code_addr01;
28702 +extern unsigned short rseqipx_code01[];
28703 +extern unsigned short rseqipx_code_length01;
28704 +extern unsigned long xseqipx_code_addr01;
28705 +extern unsigned short xseqipx_code01[];
28706 +extern unsigned short xseqipx_code_length01;
28707 +#endif
28708 +
28709 +/*
28710 + * Global Function Prototypes in qla_init.c source file.
28711 + */
28712 +extern uint8_t qla2x00_initialize_adapter(scsi_qla_host_t *);
28713 +extern uint8_t qla2x00_loop_resync(scsi_qla_host_t *);
28714 +extern void qla2x00_tgt_free(scsi_qla_host_t *ha, uint16_t t);
28715 +extern uint8_t qla2x00_fabric_login(scsi_qla_host_t *, fcdev_t *);
28716 +extern uint8_t qla2x00_local_device_login(scsi_qla_host_t *, uint16_t);
28717 +
28718 +extern void qla2x00_restart_queues(scsi_qla_host_t *, uint8_t);
28719 +
28720 +extern os_tgt_t *qla2x00_tgt_alloc(scsi_qla_host_t *, uint16_t);
28721 +extern os_lun_t * qla2x00_lun_alloc(scsi_qla_host_t *, uint16_t, uint16_t);
28722 +
28723 +extern uint8_t qla2x00_abort_isp(scsi_qla_host_t *, uint8_t);
28724 +
28725 +
28726 +/*
28727 + * Global Data in qla_os.c source file.
28728 + */
28729 +extern char qla2x00_version_str[];
28730 +extern unsigned long qla2x00_verbose;
28731 +extern unsigned long qla2x00_quiet;
28732 +extern unsigned long qla2x00_reinit;
28733 +extern unsigned long qla2x00_req_dmp;
28734 +
28735 +extern int num_hosts;
28736 +extern int apiHBAInstance;
28737 +
28738 +extern struct _qla2x00stats qla2x00_stats;
28739 +extern char *ql2xdevconf;
28740 +extern int ql2xretrycount;
28741 +extern int qla2xenbinq;
28742 +extern int max_srbs;
28743 +#if defined(ISP2200) || defined(ISP2300)
28744 +extern int ql2xlogintimeout;
28745 +extern int qlport_down_retry;
28746 +#endif
28747 +extern int ql2xmaxqdepth;
28748 +extern int displayConfig;
28749 +
28750 +extern int ql2xfailover;
28751 +
28752 +extern int ConfigRequired;
28753 +extern int recoveryTime;
28754 +extern int failbackTime;
28755 +
28756 +extern int Bind;
28757 +extern int ql2xsuspendcount;
28758 +extern int qla2x00_retryq_dmp;
28759 +#if defined(MODULE)
28760 +extern char *ql2xopts;
28761 +#endif
28762 +extern struct list_head qla_hostlist;
28763 +extern rwlock_t qla_hostlist_lock;
28764 +
28765 +extern int qla2x00_queuecommand(Scsi_Cmnd *, void (*)(Scsi_Cmnd *));
28766 +
28767 +extern uint8_t 
28768 +__qla2x00_suspend_lun(scsi_qla_host_t *, os_lun_t *, int, int, int);
28769 +
28770 +extern int qla2x00_done(scsi_qla_host_t *);
28771 +extern void qla2x00_next(scsi_qla_host_t *);
28772 +extern void qla2x00_flush_failover_q(scsi_qla_host_t *, os_lun_t *);
28773 +extern void qla2x00_reset_lun_fo_counts(scsi_qla_host_t *, os_lun_t *);
28774 +
28775 +extern uint8_t qla2x00_check_tgt_status(scsi_qla_host_t *, Scsi_Cmnd *);
28776 +extern uint8_t qla2x00_check_port_status(scsi_qla_host_t *, fc_port_t *);
28777 +
28778 +extern void qla2x00_extend_timeout(Scsi_Cmnd *, int);
28779 +extern srb_t * qla2x00_get_new_sp (scsi_qla_host_t *ha);
28780 +
28781 +extern void qla2x00_mark_device_lost(scsi_qla_host_t *, fc_port_t *);
28782 +extern void qla2x00_mark_all_devices_lost(scsi_qla_host_t *);
28783 +
28784 +extern int qla2x00_get_prop_xstr(scsi_qla_host_t *, char *, uint8_t *, int);
28785 +
28786 +extern void qla2x00_abort_queues(scsi_qla_host_t *, uint8_t);
28787 +
28788 +/*
28789 + * Global Function Prototypes in qla_iocb.c source file.
28790 + */
28791 +extern request_t *qla2x00_req_pkt(scsi_qla_host_t *);
28792 +extern request_t *qla2x00_ms_req_pkt(scsi_qla_host_t *, srb_t *);
28793 +extern void qla2x00_isp_cmd(scsi_qla_host_t *);
28794 +extern int qla2x00_start_scsi(srb_t *sp);
28795 +int qla2x00_marker(scsi_qla_host_t *, uint16_t, uint16_t, uint8_t);
28796 +int __qla2x00_marker(scsi_qla_host_t *, uint16_t, uint16_t, uint8_t);
28797 +
28798 +/*
28799 + * Global Function Prototypes in qla_mbx.c source file.
28800 + */
28801 +extern uint8_t
28802 +qla2x00_mailbox_command(scsi_qla_host_t *, mbx_cmd_t *);
28803 +
28804 +extern int
28805 +qla2x00_load_ram(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t);
28806 +
28807 +extern int
28808 +qla2x00_load_ram_ext(scsi_qla_host_t *, dma_addr_t, uint32_t, uint16_t);
28809 +
28810 +extern int
28811 +qla2x00_execute_fw(scsi_qla_host_t *);
28812 +
28813 +extern void
28814 +qla2x00_get_fw_version(scsi_qla_host_t *, uint16_t *,
28815 +    uint16_t *, uint16_t *, uint16_t *);
28816 +
28817 +extern int
28818 +qla2x00_get_fw_options(scsi_qla_host_t *, uint16_t *, uint16_t *, uint16_t *);
28819 +
28820 +extern int
28821 +qla2x00_set_fw_options(scsi_qla_host_t *,
28822 +    uint16_t, uint16_t, uint16_t, uint16_t, uint16_t);
28823 +
28824 +extern int
28825 +qla2x00_read_ram_word(scsi_qla_host_t *, uint16_t, uint16_t *);
28826 +extern int
28827 +qla2x00_write_ram_word(scsi_qla_host_t *, uint16_t, uint16_t);
28828 +extern int
28829 +qla2x00_write_ram_word_ext(scsi_qla_host_t *, uint32_t, uint16_t);
28830 +
28831 +extern int
28832 +qla2x00_mbx_reg_test(scsi_qla_host_t *);
28833 +
28834 +extern int
28835 +qla2x00_verify_checksum(scsi_qla_host_t *);
28836 +
28837 +extern int
28838 +qla2x00_issue_iocb(scsi_qla_host_t *, void *, dma_addr_t, size_t);
28839 +
28840 +extern int
28841 +qla2x00_abort_command(scsi_qla_host_t *, srb_t *);
28842 +
28843 +extern int
28844 +qla2x00_abort_device(scsi_qla_host_t *, uint16_t, uint16_t);
28845 +
28846 +#if USE_ABORT_TGT
28847 +extern int
28848 +qla2x00_abort_target(fc_port_t *fcport);
28849 +#endif
28850 +
28851 +extern int
28852 +qla2x00_target_reset(scsi_qla_host_t *, uint16_t, uint16_t);
28853 +
28854 +extern int
28855 +qla2x00_get_adapter_id(scsi_qla_host_t *, uint16_t *, uint8_t *, uint8_t *,
28856 +    uint8_t *, uint16_t *);
28857 +
28858 +extern int
28859 +qla2x00_get_retry_cnt(scsi_qla_host_t *, uint8_t *, uint8_t *);
28860 +
28861 +int
28862 +qla2x00_loopback_test(scsi_qla_host_t *, INT_LOOPBACK_REQ *, uint16_t *);
28863 +
28864 +extern int
28865 +qla2x00_init_firmware(scsi_qla_host_t *, uint16_t);
28866 +
28867 +extern int
28868 +qla2x00_get_port_database(scsi_qla_host_t *, fcdev_t *, uint8_t);
28869 +
28870 +extern int
28871 +qla2x00_get_firmware_state(scsi_qla_host_t *, uint16_t *);
28872 +
28873 +extern int
28874 +qla2x00_get_port_name(scsi_qla_host_t *, uint16_t, uint8_t *, uint8_t);
28875 +
28876 +extern uint8_t
28877 +qla2x00_get_link_status(scsi_qla_host_t *, uint8_t, void *, uint16_t *);
28878 +
28879 +extern int
28880 +qla2x00_lip_reset(scsi_qla_host_t *);
28881 +
28882 +extern int
28883 +qla2x00_send_sns(scsi_qla_host_t *, dma_addr_t, uint16_t, size_t);
28884 +
28885 +extern int
28886 +qla2x00_login_fabric(scsi_qla_host_t *, uint16_t, uint8_t, uint8_t, uint8_t,
28887 +    uint16_t *, uint8_t);
28888 +
28889 +extern int
28890 +qla2x00_login_local_device(scsi_qla_host_t *, uint16_t, uint16_t *, uint8_t);
28891 +
28892 +extern int
28893 +qla2x00_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id);
28894 +
28895 +extern int
28896 +qla2x00_full_login_lip(scsi_qla_host_t *ha);
28897 +
28898 +extern int
28899 +qla2x00_get_port_list(scsi_qla_host_t *, port_list_entry_t *, dma_addr_t,
28900 +    uint16_t, uint16_t *);
28901 +
28902 +#if 0 /* not yet needed */
28903 +extern int
28904 +qla2x00_dump_ram(scsi_qla_host_t *, uint32_t, dma_addr_t, uint32_t);
28905 +#endif
28906 +
28907 +extern int
28908 +qla2x00_lun_reset(scsi_qla_host_t *, uint16_t, uint16_t);
28909 +
28910 +extern int
28911 +qla2x00_send_rnid_mbx(scsi_qla_host_t *, uint16_t, uint8_t, dma_addr_t,
28912 +    size_t, uint16_t *);
28913 +
28914 +extern int
28915 +qla2x00_set_rnid_params_mbx(scsi_qla_host_t *, dma_addr_t, size_t, uint16_t *);
28916 +
28917 +extern int
28918 +qla2x00_get_rnid_params_mbx(scsi_qla_host_t *, dma_addr_t, size_t, uint16_t *);
28919 +
28920 +#if defined(QL_DEBUG_LEVEL_3)
28921 +extern int
28922 +qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map);
28923 +#endif
28924 +
28925 +/*
28926 + * Global Data in qla_fo.c source file.
28927 + */
28928 +extern SysFoParams_t qla_fo_params;
28929 +
28930 +/*
28931 + * Global Function Prototypes in qla_fo.c source file.
28932 + */
28933 +extern scsi_qla_host_t *qla2x00_get_hba(int);
28934 +extern uint32_t qla2x00_send_fo_notification(fc_lun_t *fclun_p, fc_lun_t *olun_p);
28935 +extern void qla2x00_fo_init_params(scsi_qla_host_t *ha);
28936 +extern uint8_t qla2x00_fo_enabled(scsi_qla_host_t *ha, int instance);
28937 +
28938 +/*
28939 + * Global Data in qla_cfg.c source file.
28940 + */
28941 +extern mp_host_t  *mp_hosts_base;
28942 +extern uint8_t   mp_config_required;
28943 +/*
28944 + * Global Function Prototypes in qla_cfg.c source file.
28945 + */
28946 +extern mp_host_t * qla2x00_cfg_find_host(scsi_qla_host_t *);
28947 +extern uint8_t qla2x00_is_portname_in_device(mp_device_t *, uint8_t *);
28948 +extern int qla2x00_cfg_init (scsi_qla_host_t *ha);
28949 +extern int qla2x00_cfg_path_discovery(scsi_qla_host_t *ha);
28950 +extern int qla2x00_cfg_event_notify(scsi_qla_host_t *ha, uint32_t i_type);
28951 +extern fc_lun_t *qla2x00_cfg_failover(scsi_qla_host_t *ha, fc_lun_t *fp,
28952 +                                             os_tgt_t *tgt, srb_t *sp);
28953 +extern int qla2x00_cfg_get_paths( EXT_IOCTL *, FO_GET_PATHS *, int);
28954 +extern int qla2x00_cfg_set_current_path( EXT_IOCTL *,
28955 +                       FO_SET_CURRENT_PATH *, int);
28956 +extern void qla2x00_fo_properties(scsi_qla_host_t *ha);
28957 +extern mp_host_t * qla2x00_add_mp_host(uint8_t *);
28958 +extern void qla2x00_cfg_mem_free(scsi_qla_host_t *ha);
28959 +extern mp_host_t * qla2x00_alloc_host(scsi_qla_host_t *);
28960 +extern uint8_t qla2x00_fo_check(scsi_qla_host_t *ha, srb_t *sp);
28961 +extern mp_path_t *qla2x00_find_path_by_name(mp_host_t *, mp_path_list_t *,
28962 +                       uint8_t *name);
28963 +
28964 +/*
28965 + * Global Function Prototypes in qla_cfgln.c source file.
28966 + */
28967 +extern void qla2x00_cfg_build_path_tree( scsi_qla_host_t *ha);
28968 +extern uint8_t qla2x00_update_mp_device(mp_host_t *,
28969 +                                            fc_port_t  *, uint16_t     );
28970 +extern void qla2x00_cfg_display_devices(void);
28971 +
28972 +/*
28973 + * Global Function Prototypes in qla_xioctl.c source file.
28974 + */
28975 +extern void qla2x00_enqueue_aen(scsi_qla_host_t *, uint16_t, void *);
28976 +extern int qla2x00_fo_ioctl(scsi_qla_host_t *, int, void *, int);
28977 +extern int qla2x00_alloc_ioctl_mem(scsi_qla_host_t *);
28978 +extern void qla2x00_free_ioctl_mem(scsi_qla_host_t *);
28979 +extern int qla2x00_get_ioctl_scrap_mem(scsi_qla_host_t *, void **, uint32_t);
28980 +extern void qla2x00_free_ioctl_scrap_mem(scsi_qla_host_t *);
28981 +
28982 +/*
28983 + * Global Function Prototypes in qla_inioctl.c source file.
28984 + */
28985 +extern int qla2x00_read_nvram(scsi_qla_host_t *, EXT_IOCTL *, int);
28986 +extern int qla2x00_update_nvram(scsi_qla_host_t *, EXT_IOCTL *, int);
28987 +extern int qla2x00_write_nvram_word(scsi_qla_host_t *, uint8_t, uint16_t);
28988 +extern int qla2x00_send_loopback(scsi_qla_host_t *, EXT_IOCTL *, int);
28989 +extern int qla2x00_read_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int);
28990 +extern int qla2x00_update_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int);
28991 +
28992 +
28993 +/*
28994 + * Global Function Prototypes in qla_isr.c source file.
28995 + */
28996 +extern irqreturn_t qla2x00_intr_handler(int, void *, struct pt_regs *);
28997 +
28998 +
28999 +/*
29000 + * Global Function Prototypes in qla_sup.c source file.
29001 + */
29002 +extern uint16_t qla2x00_get_nvram_word(scsi_qla_host_t *, uint32_t);
29003 +extern void qla2x00_nv_write(scsi_qla_host_t *, uint16_t);
29004 +extern void qla2x00_nv_deselect(scsi_qla_host_t *);
29005 +extern uint8_t qla2x00_read_flash_byte(scsi_qla_host_t *, uint32_t);
29006 +extern uint8_t qla2x00_get_flash_manufacturer(scsi_qla_host_t *);
29007 +extern uint16_t qla2x00_get_flash_version(scsi_qla_host_t *);
29008 +extern uint16_t qla2x00_get_flash_image(scsi_qla_host_t *, uint8_t *);
29009 +extern uint16_t qla2x00_set_flash_image(scsi_qla_host_t *, uint8_t *);
29010 +
29011 +/*
29012 + * Global Function Prototypes in qla_vendor.c source file.
29013 + */
29014 +void qla2x00_set_vend_direction(scsi_qla_host_t *, Scsi_Cmnd *, cmd_entry_t *);
29015 +
29016 +/*
29017 + * Global Function Prototypes in qla_dbg.c source file.
29018 + */
29019 +extern void qla2x00_dump_isp(scsi_qla_host_t *, int);
29020 +extern void qla2x00_dump_regs(struct Scsi_Host *);
29021 +extern void qla2x00_dump_buffer(uint8_t *, uint32_t);
29022 +extern void qla2x00_print_scsi_cmd(Scsi_Cmnd *);
29023 +extern void qla2x00_print_q_info(struct os_lun *);
29024 +
29025 +#endif /* _QLA_GBL_H */
29026 --- /dev/null   Thu Apr 11 07:25:15 2002
29027 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_inioct.c        Thu Jul  3 15:34:42 2003
29028 @@ -0,0 +1,495 @@
29029 +/******************************************************************************
29030 + *                  QLOGIC LINUX SOFTWARE
29031 + *
29032 + * QLogic ISP2x00 device driver for Linux 2.5.x
29033 + * Copyright (C) 2003 Qlogic Corporation
29034 + * (www.qlogic.com)
29035 + *
29036 + * This program is free software; you can redistribute it and/or modify it
29037 + * under the terms of the GNU General Public License as published by the
29038 + * Free Software Foundation; either version 2, or (at your option) any
29039 + * later version.
29040 + *
29041 + * This program is distributed in the hope that it will be useful, but
29042 + * WITHOUT ANY WARRANTY; without even the implied warranty of
29043 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29044 + * General Public License for more details.
29045 + *
29046 + ******************************************************************************/
29047 +
29048 +#include "qla_os.h"
29049 +#include "qla_def.h"
29050 +
29051 +#include "inioct.h"
29052 +
29053 +extern int qla2x00_loopback_test(scsi_qla_host_t *ha, INT_LOOPBACK_REQ *req,
29054 +    uint16_t *ret_mb);
29055 +
29056 +int qla2x00_read_nvram(scsi_qla_host_t *, EXT_IOCTL *, int);
29057 +int qla2x00_update_nvram(scsi_qla_host_t *, EXT_IOCTL *, int);
29058 +int qla2x00_write_nvram_word(scsi_qla_host_t *, uint8_t, uint16_t);
29059 +int qla2x00_send_loopback(scsi_qla_host_t *, EXT_IOCTL *, int);
29060 +int qla2x00_read_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int);
29061 +int qla2x00_update_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int);
29062 +
29063 +int
29064 +qla2x00_read_nvram(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29065 +{
29066 +       uint8_t  *usr_temp, *kernel_tmp;
29067 +       uint16_t data;
29068 +       uint32_t i, cnt;
29069 +       uint32_t transfer_size;
29070 +
29071 +       DEBUG9(printk("qla2x00_read_nvram: entered.\n");)
29072 +
29073 +       if (pext->ResponseLen < sizeof(nvram_t))
29074 +               transfer_size = pext->ResponseLen / 2;
29075 +       else
29076 +               transfer_size = sizeof(nvram_t) / 2;
29077 +
29078 +       /* Dump NVRAM. */
29079 +       usr_temp = (uint8_t *)pext->ResponseAdr;
29080 +       for (i = 0, cnt = 0; cnt < transfer_size; cnt++, i++) {
29081 +               data = cpu_to_le16(qla2x00_get_nvram_word(ha, cnt));
29082 +
29083 +               kernel_tmp = (uint8_t *)&data;
29084 +
29085 +               __put_user(*kernel_tmp, usr_temp);
29086 +
29087 +               /* next byte */
29088 +               usr_temp++;
29089 +               kernel_tmp++;
29090 +
29091 +               __put_user(*kernel_tmp, usr_temp);
29092 +
29093 +               usr_temp++;
29094 +       }
29095 +
29096 +       pext->Status       = EXT_STATUS_OK;
29097 +       pext->DetailStatus = EXT_STATUS_OK;
29098 +
29099 +       DEBUG9(printk("qla2x00_read_nvram: exiting.\n");)
29100 +
29101 +       return 0;
29102 +}
29103 +
29104 +/*
29105 + * qla2x00_update_nvram
29106 + *     Write data to NVRAM.
29107 + *
29108 + * Input:
29109 + *     ha = adapter block pointer.
29110 + *     pext = pointer to driver internal IOCTL structure.
29111 + *
29112 + * Returns:
29113 + *
29114 + * Context:
29115 + *     Kernel context.
29116 + */
29117 +int
29118 +qla2x00_update_nvram(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29119 +{
29120 +       uint8_t i, cnt;
29121 +       uint8_t *usr_tmp, *kernel_tmp;
29122 +       nvram_t *pnew_nv;
29123 +       uint16_t *wptr;
29124 +       uint16_t data;
29125 +       uint32_t transfer_size;
29126 +       uint8_t chksum = 0;
29127 +       int ret = 0;
29128 +
29129 +       // FIXME: Endianess?
29130 +       DEBUG9(printk("qla2x00_update_nvram: entered.\n");)
29131 +
29132 +       if (pext->RequestLen < sizeof(nvram_t))
29133 +               transfer_size = pext->RequestLen;
29134 +       else
29135 +               transfer_size = sizeof(nvram_t);
29136 +
29137 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pnew_nv,
29138 +           sizeof(nvram_t))) {
29139 +               /* not enough memory */
29140 +               pext->Status = EXT_STATUS_NO_MEMORY;
29141 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
29142 +                   "size requested=%d.\n",
29143 +                   __func__, ha->host_no, ha->instance,
29144 +                   sizeof(nvram_t));)
29145 +               return (ret);
29146 +       }
29147 +
29148 +       /* Read from user buffer */
29149 +       kernel_tmp = (uint8_t *)pnew_nv;
29150 +       usr_tmp = (uint8_t *)pext->RequestAdr;
29151 +
29152 +       ret = verify_area(VERIFY_READ, (void *)usr_tmp, transfer_size);
29153 +       if (ret) {
29154 +               DEBUG9_10(printk(
29155 +                   "qla2x00_update_nvram: ERROR in buffer verify READ. "
29156 +                   "RequestAdr=%p\n", pext->RequestAdr);)
29157 +               qla2x00_free_ioctl_scrap_mem(ha);
29158 +               return ret;
29159 +       }
29160 +
29161 +       copy_from_user(kernel_tmp, usr_tmp, transfer_size);
29162 +
29163 +       kernel_tmp = (uint8_t *)pnew_nv;
29164 +
29165 +       /* we need to checksum the nvram */
29166 +       for (i = 0; i < sizeof(nvram_t) - 1; i++) {
29167 +               chksum += *kernel_tmp;
29168 +               kernel_tmp++;
29169 +       }
29170 +
29171 +       chksum = ~chksum + 1;
29172 +
29173 +       *kernel_tmp = chksum;
29174 +
29175 +       /* Write to NVRAM */
29176 +       wptr = (uint16_t *)pnew_nv;
29177 +       for (cnt = 0; cnt < transfer_size / 2; cnt++) {
29178 +               data = *wptr++;
29179 +               qla2x00_write_nvram_word(ha, cnt, data);
29180 +       }
29181 +
29182 +       pext->Status       = EXT_STATUS_OK;
29183 +       pext->DetailStatus = EXT_STATUS_OK;
29184 +
29185 +       DEBUG9(printk("qla2x00_update_nvram: exiting.\n");)
29186 +
29187 +       qla2x00_free_ioctl_scrap_mem(ha);
29188 +       return 0;
29189 +}
29190 +
29191 +int
29192 +qla2x00_write_nvram_word(scsi_qla_host_t *ha, uint8_t addr, uint16_t data)
29193 +{
29194 +       int count;
29195 +       uint16_t word;
29196 +       uint32_t nv_cmd;
29197 +       device_reg_t *reg = ha->iobase;
29198 +
29199 +       qla2x00_nv_write(ha, NVR_DATA_OUT);
29200 +       qla2x00_nv_write(ha, 0);
29201 +       qla2x00_nv_write(ha, 0);
29202 +
29203 +       for (word = 0; word < 8; word++)
29204 +               qla2x00_nv_write(ha, NVR_DATA_OUT);
29205 +
29206 +       qla2x00_nv_deselect(ha);
29207 +
29208 +       /* Erase Location */
29209 +       nv_cmd = (addr << 16) | NV_ERASE_OP;
29210 +       nv_cmd <<= 5;
29211 +       for (count = 0; count < 11; count++) {
29212 +               if (nv_cmd & BIT_31)
29213 +                       qla2x00_nv_write(ha, NVR_DATA_OUT);
29214 +               else
29215 +                       qla2x00_nv_write(ha, 0);
29216 +
29217 +               nv_cmd <<= 1;
29218 +       }
29219 +
29220 +       qla2x00_nv_deselect(ha);
29221 +
29222 +       /* Wait for Erase to Finish */
29223 +       WRT_REG_WORD(&reg->nvram, NVR_SELECT);
29224 +       do {
29225 +               NVRAM_DELAY();
29226 +               word = RD_REG_WORD(&reg->nvram);
29227 +       } while ((word & NVR_DATA_IN) == 0);
29228 +
29229 +       qla2x00_nv_deselect(ha);
29230 +
29231 +       /* Write data */
29232 +       nv_cmd = (addr << 16) | NV_WRITE_OP;
29233 +       nv_cmd |= data;
29234 +       nv_cmd <<= 5;
29235 +       for (count = 0; count < 27; count++) {
29236 +               if (nv_cmd & BIT_31)
29237 +                       qla2x00_nv_write(ha, NVR_DATA_OUT);
29238 +               else
29239 +                       qla2x00_nv_write(ha, 0);
29240 +
29241 +               nv_cmd <<= 1;
29242 +       }
29243 +
29244 +       qla2x00_nv_deselect(ha);
29245 +
29246 +       /* Wait for NVRAM to become ready */
29247 +       WRT_REG_WORD(&reg->nvram, NVR_SELECT);
29248 +       do {
29249 +               NVRAM_DELAY();
29250 +               word = RD_REG_WORD(&reg->nvram);
29251 +       } while ((word & NVR_DATA_IN) == 0);
29252 +
29253 +       qla2x00_nv_deselect(ha);
29254 +
29255 +       /* Disable writes */
29256 +       qla2x00_nv_write(ha, NVR_DATA_OUT);
29257 +       for (count = 0; count < 10; count++)
29258 +               qla2x00_nv_write(ha, 0);
29259 +
29260 +       qla2x00_nv_deselect(ha);
29261 +
29262 +       DEBUG9(printk("qla2x00_write_nvram_word: exiting.\n");)
29263 +
29264 +       return 0;
29265 +}
29266 +
29267 +int
29268 +qla2x00_send_loopback(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29269 +{
29270 +       int             status;
29271 +       uint16_t        ret_mb[MAILBOX_REGISTER_COUNT];
29272 +       INT_LOOPBACK_REQ req;
29273 +       INT_LOOPBACK_RSP rsp;
29274 +
29275 +       DEBUG9(printk("qla2x00_send_loopback: entered.\n");)
29276 +
29277 +
29278 +       if (pext->RequestLen != sizeof(INT_LOOPBACK_REQ)) {
29279 +               pext->Status = EXT_STATUS_INVALID_PARAM;
29280 +               DEBUG9_10(printk(
29281 +                   "qla2x00_send_loopback: invalid RequestLen =%d.\n",
29282 +                   pext->RequestLen);)
29283 +               return pext->Status;
29284 +       }
29285 +
29286 +       if (pext->ResponseLen != sizeof(INT_LOOPBACK_RSP)) {
29287 +               pext->Status = EXT_STATUS_INVALID_PARAM;
29288 +               DEBUG9_10(printk(
29289 +                   "qla2x00_send_loopback: invalid ResponseLen =%d.\n",
29290 +                   pext->ResponseLen);)
29291 +               return pext->Status;
29292 +       }
29293 +
29294 +       status = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
29295 +                       pext->RequestLen);
29296 +       if (status) {
29297 +               pext->Status = EXT_STATUS_COPY_ERR;
29298 +               DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of "
29299 +                   "request buffer.\n");)
29300 +               return pext->Status;
29301 +       }
29302 +
29303 +       copy_from_user((uint8_t *)&req, (uint8_t *)pext->RequestAdr,
29304 +           pext->RequestLen);
29305 +
29306 +       status = verify_area(VERIFY_READ, (void *)pext->ResponseAdr,
29307 +                       pext->ResponseLen);
29308 +       if (status) {
29309 +               pext->Status = EXT_STATUS_COPY_ERR;
29310 +               DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of "
29311 +                   "response buffer.\n");)
29312 +               return pext->Status;
29313 +       }
29314 +
29315 +       copy_from_user((uint8_t *)&rsp, (uint8_t *)pext->ResponseAdr,
29316 +           pext->ResponseLen);
29317 +
29318 +       if (req.TransferCount > req.BufferLength ||
29319 +           req.TransferCount > rsp.BufferLength) {
29320 +
29321 +               /* Buffer lengths not large enough. */
29322 +               pext->Status = EXT_STATUS_INVALID_PARAM;
29323 +
29324 +               DEBUG9_10(printk(
29325 +                   "qla2x00_send_loopback: invalid TransferCount =%d. "
29326 +                   "req BufferLength =%d rspBufferLength =%d.\n",
29327 +                   req.TransferCount, req.BufferLength, rsp.BufferLength);)
29328 +
29329 +               return pext->Status;
29330 +       }
29331 +
29332 +       status = verify_area(VERIFY_READ, (void *)req.BufferAddress,
29333 +           req.TransferCount);
29334 +       if (status) {
29335 +               pext->Status = EXT_STATUS_COPY_ERR;
29336 +               DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of "
29337 +                   "user loopback data buffer.\n");)
29338 +               return pext->Status;
29339 +       }
29340 +
29341 +       copy_from_user((uint8_t *)ha->ioctl_mem, (uint8_t *)req.BufferAddress,
29342 +           req.TransferCount);
29343 +
29344 +       DEBUG9(printk("qla2x00_send_loopback: req -- bufadr=%p, buflen=%x, "
29345 +           "xfrcnt=%x, rsp -- bufadr=%p, buflen=%x.\n",
29346 +           req.BufferAddress, req.BufferLength, req.TransferCount,
29347 +           rsp.BufferAddress, rsp.BufferLength);)
29348 +
29349 +       /*
29350 +        * AV - the caller of this IOCTL expects the FW to handle
29351 +        * a loopdown situation and return a good status for the
29352 +        * call function and a LOOPDOWN status for the test operations
29353 +        */
29354 +       /*if (ha->loop_state != LOOP_READY || */
29355 +       if (
29356 +           (test_bit(CFG_ACTIVE, &ha->cfg_flags)) ||
29357 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
29358 +           ABORTS_ACTIVE || ha->dpc_active) {
29359 +
29360 +               pext->Status = EXT_STATUS_BUSY;
29361 +               DEBUG9_10(printk("qla2x00_send_loopback(%ld): "
29362 +                   "loop not ready.\n", ha->host_no);)
29363 +               return pext->Status;
29364 +       }
29365 +
29366 +       status = qla2x00_loopback_test(ha, &req, ret_mb);
29367 +
29368 +       if (status) {
29369 +               if (status == QL_STATUS_TIMEOUT ) {
29370 +                       pext->Status = EXT_STATUS_BUSY;
29371 +                       DEBUG9_10(printk("qla2x00_send_loopback: ERROR "
29372 +                           "command timed out.\n");)
29373 +                       return pext->Status;
29374 +               } else {
29375 +                       /* EMPTY. Just proceed to copy back mailbox reg
29376 +                        * values for users to interpret.
29377 +                        */
29378 +                       DEBUG10(printk("qla2x00_send_loopback: ERROR "
29379 +                           "loopback command failed 0x%x.\n", ret_mb[0]);)
29380 +               }
29381 +       }
29382 +
29383 +       status = verify_area(VERIFY_WRITE, (void *)rsp.BufferAddress,
29384 +           req.TransferCount);
29385 +       if (status) {
29386 +               pext->Status = EXT_STATUS_COPY_ERR;
29387 +               DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify "
29388 +                   "write of return data buffer.\n");)
29389 +               return pext->Status;
29390 +       }
29391 +
29392 +       DEBUG9(printk("qla2x00_send_loopback: loopback mbx cmd ok. "
29393 +           "copying data.\n");)
29394 +
29395 +       /* put loopback return data in user buffer */
29396 +       copy_to_user((uint8_t *)rsp.BufferAddress,
29397 +           (uint8_t *)ha->ioctl_mem, req.TransferCount);
29398 +
29399 +       rsp.CompletionStatus = ret_mb[0];
29400 +       if (rsp.CompletionStatus == INT_DEF_LB_COMPLETE) {
29401 +               rsp.CrcErrorCount = ret_mb[1];
29402 +               rsp.DisparityErrorCount = ret_mb[2];
29403 +               rsp.FrameLengthErrorCount = ret_mb[3];
29404 +               rsp.IterationCountLastError = (ret_mb[19] << 16) | ret_mb[18];
29405 +       }
29406 +
29407 +       status = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
29408 +           pext->ResponseLen);
29409 +       if (status) {
29410 +               pext->Status = EXT_STATUS_COPY_ERR;
29411 +               DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify "
29412 +                   "write of response buffer.\n");)
29413 +               return pext->Status;
29414 +       }
29415 +
29416 +       copy_to_user((uint8_t *)pext->ResponseAdr, (uint8_t *)&rsp,
29417 +           pext->ResponseLen);
29418 +
29419 +       pext->Status       = EXT_STATUS_OK;
29420 +       pext->DetailStatus = EXT_STATUS_OK;
29421 +
29422 +       DEBUG9(printk("qla2x00_send_loopback: exiting.\n");)
29423 +
29424 +       return pext->Status;
29425 +}
29426 +
29427 +int qla2x00_read_option_rom(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29428 +{
29429 +       uint8_t         *usr_tmp;
29430 +       uint32_t        addr;
29431 +       uint32_t        midpoint;
29432 +       uint32_t        transfer_size;
29433 +       uint8_t         data;
29434 +       device_reg_t    *reg = ha->iobase;
29435 +       unsigned long   cpu_flags;
29436 +
29437 +       DEBUG9(printk("%s: entered.\n", __func__);)
29438 +
29439 +       if (pext->ResponseLen != FLASH_IMAGE_SIZE) {
29440 +               pext->Status = EXT_STATUS_BUFFER_TOO_SMALL;
29441 +               return (1);
29442 +       }
29443 +
29444 +       transfer_size = FLASH_IMAGE_SIZE;
29445 +
29446 +       midpoint = FLASH_IMAGE_SIZE / 2;
29447 +       usr_tmp = (uint8_t *)pext->ResponseAdr;
29448 +
29449 +       /* Dump FLASH. */
29450 +       spin_lock_irqsave(&ha->hardware_lock, cpu_flags);
29451 +       WRT_REG_WORD(&reg->nvram, 0);
29452 +       for (addr = 0; addr < transfer_size; addr++, usr_tmp++) {
29453 +               if (addr == midpoint)
29454 +                       WRT_REG_WORD(&reg->nvram, NVR_SELECT);
29455 +
29456 +               data = qla2x00_read_flash_byte(ha, addr);
29457 +               __put_user(data, usr_tmp);
29458 +       }
29459 +       spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
29460 +
29461 +       pext->Status = EXT_STATUS_OK;
29462 +       pext->DetailStatus = EXT_STATUS_OK;
29463 +
29464 +       DEBUG9(printk("%s: exiting.\n", __func__);)
29465 +
29466 +       return (0);
29467 +}
29468 +
29469 +int qla2x00_update_option_rom(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29470 +{
29471 +       int             ret;
29472 +       uint8_t         *usr_tmp;
29473 +       uint8_t         *kern_tmp;
29474 +       uint16_t        status;
29475 +       unsigned long   cpu_flags;
29476 +
29477 +       DEBUG9(printk("%s: entered.\n", __func__);)
29478 +
29479 +       if (pext->RequestLen != FLASH_IMAGE_SIZE) {
29480 +               pext->Status = EXT_STATUS_COPY_ERR;
29481 +               return (1);
29482 +       }
29483 +
29484 +       pext->Status = EXT_STATUS_OK;
29485 +       pext->DetailStatus = EXT_STATUS_OK;
29486 +
29487 +       /* Read from user buffer */
29488 +       usr_tmp = (uint8_t *)pext->RequestAdr;
29489 +       ret = verify_area(VERIFY_READ, (void *)usr_tmp, FLASH_IMAGE_SIZE);
29490 +       if (ret) {
29491 +               pext->Status = EXT_STATUS_COPY_ERR;
29492 +               DEBUG9_10(printk("%s: ERROR in buffer verify READ. "
29493 +                               "RequestAdr=%p\n",
29494 +                               __func__, pext->RequestAdr);)
29495 +               return (ret);
29496 +       }
29497 +
29498 +       kern_tmp = (uint8_t *)KMEM_ZALLOC(FLASH_IMAGE_SIZE, 30);
29499 +       if (kern_tmp == NULL) {
29500 +               pext->Status = EXT_STATUS_COPY_ERR;
29501 +               printk(KERN_WARNING
29502 +                       "%s: ERROR in flash allocation.\n", __func__);
29503 +               return (1);
29504 +       }
29505 +       copy_from_user(kern_tmp, usr_tmp, FLASH_IMAGE_SIZE);
29506 +
29507 +       /* Go with update */
29508 +       spin_lock_irqsave(&ha->hardware_lock, cpu_flags);
29509 +       status = qla2x00_set_flash_image(ha, kern_tmp);
29510 +       spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
29511 +
29512 +       KMEM_FREE(kern_tmp, FLASH_IMAGE_SIZE);
29513 +
29514 +       if (status) {
29515 +               ret = 1;
29516 +               pext->Status = EXT_STATUS_COPY_ERR;
29517 +               DEBUG9_10(printk("%s: ERROR updating flash.\n", __func__);)
29518 +       }
29519 +
29520 +       DEBUG9(printk("%s: exiting.\n", __func__);)
29521 +
29522 +       return (ret);
29523 +}
29524 --- /dev/null   Thu Apr 11 07:25:15 2002
29525 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_init.c  Thu Jul  3 15:34:42 2003
29526 @@ -0,0 +1,5945 @@
29527 +/*
29528 + *                  QLOGIC LINUX SOFTWARE
29529 + *
29530 + * QLogic ISP2x00 device driver for Linux 2.5.x
29531 + * Copyright (C) 2003 Qlogic Corporation
29532 + * (www.qlogic.com)
29533 + *
29534 + * This program is free software; you can redistribute it and/or modify it
29535 + * under the terms of the GNU General Public License as published by the
29536 + * Free Software Foundation; either version 2, or (at your option) any
29537 + * later version.
29538 + *
29539 + * This program is distributed in the hope that it will be useful, but
29540 + * WITHOUT ANY WARRANTY; without even the implied warranty of
29541 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29542 + * General Public License for more details.
29543 + *
29544 + */
29545 +#include "qla_os.h"
29546 +
29547 +#include "qla_def.h"
29548 +
29549 +/*
29550 +*  QLogic ISP2x00 Hardware Support Function Prototypes.
29551 +*/
29552 +uint8_t qla2x00_initialize_adapter(scsi_qla_host_t *);
29553 +
29554 +static uint8_t qla2x00_isp_firmware(scsi_qla_host_t *);
29555 +static void qla2x00_reset_chip(scsi_qla_host_t *);
29556 +static uint8_t qla2x00_pci_config(scsi_qla_host_t *);
29557 +static uint8_t qla2x00_set_cache_line(scsi_qla_host_t *);
29558 +static uint8_t qla2x00_chip_diag(scsi_qla_host_t *);
29559 +static uint8_t qla2x00_setup_chip(scsi_qla_host_t *ha);
29560 +static uint8_t qla2x00_init_rings(scsi_qla_host_t *ha);
29561 +static uint8_t qla2x00_fw_ready(scsi_qla_host_t *ha);
29562 +static uint8_t qla2x00_nvram_config(scsi_qla_host_t *);
29563 +
29564 +static void qla2x00_init_fc_db(scsi_qla_host_t *);
29565 +static void qla2x00_init_tgt_map(scsi_qla_host_t *);
29566 +
29567 +static uint8_t qla2x00_configure_loop(scsi_qla_host_t *);
29568 +static uint8_t qla2x00_configure_local_loop(scsi_qla_host_t *, uint8_t );
29569 +static uint8_t qla2x00_configure_fabric(scsi_qla_host_t *, uint8_t );
29570 +static uint8_t qla2x00_find_all_fabric_devs(scsi_qla_host_t *,
29571 +    struct new_dev *, uint16_t *, uint8_t *);
29572 +static void qla2x00_device_resync(scsi_qla_host_t *);
29573 +static int qla2x00_ga_nxt(scsi_qla_host_t *, sw_info_t *);
29574 +static int qla2x00_gid_pt(scsi_qla_host_t *, sw_info_t *);
29575 +static int qla2x00_gpn_id(scsi_qla_host_t *, sw_info_t *);
29576 +static int qla2x00_gnn_id(scsi_qla_host_t *, sw_info_t *);
29577 +static int qla2x00_gft_id(scsi_qla_host_t *, sw_info_t *);
29578 +static int qla2x00_rft_id(scsi_qla_host_t *);
29579 +static int qla2x00_rff_id(scsi_qla_host_t *);
29580 +static int qla2x00_rnn_id(scsi_qla_host_t *);
29581 +static int qla2x00_rsnn_nn(scsi_qla_host_t *);
29582 +
29583 +static int qla2x00_add_initiator_device(scsi_qla_host_t *, fcdev_t *);
29584 +
29585 +uint8_t qla2x00_fabric_login(scsi_qla_host_t *, fcdev_t *);
29586 +uint8_t qla2x00_local_device_login(scsi_qla_host_t *, uint16_t);
29587 +
29588 +static uint8_t qla2x00_update_fc_database(scsi_qla_host_t *,
29589 +    fcdev_t *, uint8_t);
29590 +static int qla2x00_build_fcport_list(scsi_qla_host_t *ha);
29591 +static void qla2x00_config_os(scsi_qla_host_t *ha);
29592 +static uint16_t qla2x00_fcport_bind(scsi_qla_host_t *ha, fc_port_t *fcport);
29593 +static int qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport, int);
29594 +static int qla2x00_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport, int);
29595 +static int qla2x00_rpt_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport);
29596 +static void qla2x00_cfg_lun(fc_port_t *fcport, uint16_t lun);
29597 +
29598 +static void qla2x00_lun_free(scsi_qla_host_t *, uint16_t, uint16_t);
29599 +
29600 +static void qla2x00_get_lun_mask_from_config(scsi_qla_host_t *,
29601 +    fc_port_t *, uint16_t, uint16_t);
29602 +static int qla2x00_bstr_to_hex(char *, uint8_t *, int);
29603 +
29604 +static uint8_t qla2x00_find_propname(scsi_qla_host_t *,
29605 +    char *, char *, char *, int);
29606 +static int qla2x00_get_prop_16chars(scsi_qla_host_t *,
29607 +    char *, char *, char *);
29608 +static void qla2x00_get_properties(scsi_qla_host_t *, char *);
29609 +
29610 +static void qla2x00_cfg_persistent_binding(scsi_qla_host_t *);
29611 +
29612 +static int qla2x00_restart_isp(scsi_qla_host_t *);
29613 +static void qla2x00_reset_adapter(scsi_qla_host_t *);
29614 +
29615 +#define MAX_LOCAL_LOOP_IDS     127
29616 +static uint8_t alpa_table[MAX_LOCAL_LOOP_IDS] = {
29617 +       0xEF, 0xE8, 0xE4, 0xE2, 0xE1, 0xE0, 0xDC, 0xDA,
29618 +       0xD9, 0xD6, 0xD5, 0xD4, 0xD3, 0xD2, 0xD1, 0xCE,
29619 +       0xCD, 0xCC, 0xCB, 0xCA, 0xC9, 0xC7, 0xC6, 0xC5,
29620 +       0xC3, 0xBC, 0xBA, 0xB9, 0xB6, 0xB5, 0xB4, 0xB3,
29621 +       0xB2, 0xB1, 0xAE, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9,
29622 +       0xA7, 0xA6, 0xA5, 0xA3, 0x9F, 0x9E, 0x9D, 0x9B,
29623 +       0x98, 0x97, 0x90, 0x8F, 0x88, 0x84, 0x82, 0x81,
29624 +       0x80, 0x7C, 0x7A, 0x79, 0x76, 0x75, 0x74, 0x73,
29625 +       0x72, 0x71, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69,
29626 +       0x67, 0x66, 0x65, 0x63, 0x5C, 0x5A, 0x59, 0x56,
29627 +       0x55, 0x54, 0x53, 0x52, 0x51, 0x4E, 0x4D, 0x4C,
29628 +       0x4B, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x43, 0x3C,
29629 +       0x3A, 0x39, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
29630 +       0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x27, 0x26,
29631 +       0x25, 0x23, 0x1F, 0x1E, 0x1D, 0x1B, 0x18, 0x17,
29632 +       0x10, 0x0F, 0x08, 0x04, 0x02, 0x01, 0x00
29633 +};
29634 +
29635 +/****************************************************************************/
29636 +/*                QLogic ISP2x00 Hardware Support Functions.                */
29637 +/****************************************************************************/
29638 +
29639 +/*
29640 +* qla2x00_initialize_adapter
29641 +*      Initialize board.
29642 +*
29643 +* Input:
29644 +*      ha = adapter block pointer.
29645 +*
29646 +* Returns:
29647 +*      0 = success
29648 +*/
29649 +uint8_t
29650 +qla2x00_initialize_adapter(scsi_qla_host_t *ha)
29651 +{
29652 +       uint8_t status;
29653 +       uint8_t isp_init = 0;
29654 +       uint8_t restart_risc = 0;
29655 +       uint8_t retry;
29656 +       unsigned long   wait_device = 0;
29657 +
29658 +       ENTER(__func__);
29659 +
29660 +       /* Clear adapter flags. */
29661 +       ha->forceLip = 0;
29662 +       ha->flags.online = FALSE;
29663 +       ha->flags.disable_host_adapter = FALSE;
29664 +       ha->flags.reset_active = FALSE;
29665 +       ha->flags.watchdog_enabled = FALSE;
29666 +       atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
29667 +       ha->loop_state = LOOP_DOWN;
29668 +       ha->device_flags = 0;
29669 +       ha->sns_retry_cnt = 0;
29670 +       ha->device_flags = 0;
29671 +       ha->dpc_flags = 0;
29672 +       ha->sns_retry_cnt = 0;
29673 +       ha->failback_delay = 0;
29674 +#if defined(IOCB_THROLLE_USAGE)
29675 +       ha->iocb_cnt = 0;
29676 +       ha->iocb_overflow_cnt = 0;
29677 +#endif
29678 +       ha->flags.management_server_logged_in = 0;
29679 +       ha->marker_needed = 0;
29680 +       ha->mbx_flags = 0;
29681 +       ha->isp_abort_cnt = 0;
29682 +
29683 +       if (!(status = qla2x00_pci_config(ha))) {
29684 +
29685 +               qla2x00_reset_chip(ha);
29686 +
29687 +               /* Initialize Fibre Channel database. */
29688 +               qla2x00_init_fc_db(ha);
29689 +
29690 +               /* Initialize target map database. */
29691 +               qla2x00_init_tgt_map(ha);
29692 +
29693 +               /* Get Flash Version */
29694 +               qla2x00_get_flash_version(ha);
29695 +
29696 +               if (qla2x00_verbose)
29697 +                       printk("scsi(%ld): Configure NVRAM parameters...\n",
29698 +                               ha->host_no);
29699 +
29700 +               qla2x00_nvram_config(ha);
29701 +
29702 +               ha->retry_count = ql2xretrycount;
29703 +
29704 +               if (qla2x00_verbose)
29705 +                       printk("scsi(%ld): Verifying loaded RISC code...\n",
29706 +                               ha->host_no);
29707 +
29708 +               qla2x00_set_cache_line(ha);
29709 +
29710 +               /*
29711 +                * If the user specified a device configuration on the command
29712 +                * line then use it as the configuration.  Otherwise, we scan
29713 +                * for all devices.
29714 +                */
29715 +               if (ql2xdevconf) {
29716 +                       ha->cmdline = ql2xdevconf;
29717 +                       if (!ha->flags.failover_enabled)
29718 +                               qla2x00_get_properties(ha, ql2xdevconf);
29719 +               }
29720 +
29721 +               retry = 10;
29722 +               /*
29723 +                * Try an configure the loop.
29724 +                */
29725 +               do {
29726 +                       restart_risc = 0;
29727 +                       isp_init = 0;
29728 +
29729 +                       /* If firmware needs to be loaded */
29730 +                       if (qla2x00_isp_firmware(ha)) {
29731 +                               if (qla2x00_verbose)
29732 +                                       printk("scsi(%ld): Verifying chip...\n",
29733 +                                               ha->host_no);
29734 +
29735 +                               if (!(status = qla2x00_chip_diag(ha)))
29736 +                                       status = qla2x00_setup_chip(ha);
29737 +
29738 +                               if (!status) {
29739 +                                       DEBUG(printk("scsi(%ld): Chip verified "
29740 +                                                       "and RISC loaded...\n",
29741 +                                                       ha->host_no));
29742 +                               }
29743 +                       }
29744 +
29745 +                       /* Retrieve firmware information */
29746 +                       qla2x00_get_fw_version(ha, &ha->fw_major_version,
29747 +                           &ha->fw_minor_version, &ha->fw_subminor_version,
29748 +                           &ha->fw_attributes);
29749 +
29750 +                       if (!status && !(status = qla2x00_init_rings(ha))) {
29751 +                               /* dg - 7/3/1999
29752 +                                *
29753 +                                * Wait for a successful LIP up to a maximum 
29754 +                                * of (in seconds): RISC login timeout value,
29755 +                                * RISC retry count value, and port down retry
29756 +                                * value OR a minimum of 4 seconds OR If no 
29757 +                                * cable, only 5 seconds.
29758 +                                */
29759 +                               DEBUG(printk("scsi(%ld): Init rings OK..."
29760 +                                   "calling qla2x00_fw_ready()...\n",
29761 +                                   ha->host_no));
29762 +
29763 +                               if (!qla2x00_fw_ready(ha)) {
29764 +                                       clear_bit(RESET_MARKER_NEEDED,
29765 +                                                       &ha->dpc_flags);
29766 +                                       clear_bit(COMMAND_WAIT_NEEDED,
29767 +                                                       &ha->dpc_flags);
29768 +
29769 +                                       /*
29770 +                                        * Go setup flash database devices 
29771 +                                        * with proper Loop ID's.
29772 +                                        */
29773 +                                       do {
29774 +                                               clear_bit(LOOP_RESYNC_NEEDED,
29775 +                                                               &ha->dpc_flags);
29776 +                                               status = qla2x00_configure_loop(ha);
29777 +
29778 +                                               /*
29779 +                                                * Temp code: delay a while for certain
29780 +                                                * slower devices to become ready.
29781 +                                                */
29782 +                                               for ((wait_device = jiffies + HZ);
29783 +                                                       !time_after_eq(jiffies,wait_device);) {
29784 +                                                       qla2x00_check_fabric_devices(ha);
29785 +
29786 +                                                       set_current_state(TASK_INTERRUPTIBLE);
29787 +                                                       schedule_timeout(5);
29788 +                                               }
29789 +
29790 +                                       } while (!atomic_read(&ha->loop_down_timer) &&
29791 +                                               !(test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) &&
29792 +                                               (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) );
29793 +                               }
29794 +
29795 +                               if (ha->flags.update_config_needed) {
29796 +                                       ha->init_cb->add_firmware_options[0] |=
29797 +                                           ((ha->operating_mode << 4) &
29798 +                                               (BIT_6 | BIT_5 | BIT_4));
29799 +
29800 +                                       restart_risc = 1;
29801 +                               }
29802 +
29803 +                               if (ha->mem_err) {
29804 +                                       restart_risc = 1;
29805 +                               }
29806 +                               isp_init = 1;
29807 +
29808 +                       }
29809 +               } while (restart_risc && retry--);
29810 +
29811 +               if (isp_init) {
29812 +                       clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
29813 +                       ha->marker_needed = 1;
29814 +                       qla2x00_marker(ha, 0, 0, MK_SYNC_ALL);
29815 +                       ha->marker_needed = 0;
29816 +
29817 +                       ha->flags.online = TRUE;
29818 +               }
29819 +
29820 +       }
29821 +
29822 +#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3)
29823 +       if (status)
29824 +               printk("%s(): **** FAILED ****\n", __func__);
29825 +#endif
29826 +
29827 +       LEAVE(__func__);
29828 +
29829 +       return (status);
29830 +}
29831 +
29832 +/**
29833 + * qla2x00_isp_firmware() - Choose firmware image.
29834 + * @ha: HA context
29835 + *
29836 + * Returns 0 on success.
29837 + */
29838 +static uint8_t
29839 +qla2x00_isp_firmware(scsi_qla_host_t *ha)
29840 +{
29841 +       uint8_t  status;
29842 +
29843 +
29844 +       ENTER(__func__);
29845 +
29846 +       /* Assume loading risc code */
29847 +       status = 1; 
29848 +
29849 +       if (ha->flags.disable_risc_code_load) {
29850 +               DEBUG2(printk("scsi(%ld): RISC CODE NOT loaded\n",
29851 +                   ha->host_no));
29852 +               printk(KERN_INFO
29853 +                   "scsi(%ld): RISC CODE NOT loaded\n", ha->host_no);
29854 +
29855 +               /* Verify checksum of loaded RISC code. */
29856 +               status = qla2x00_verify_checksum(ha);
29857 +       }
29858 +
29859 +       if (status) {
29860 +               DEBUG2_3(printk("scsi(%ld): **** Load RISC code ****\n",
29861 +                   ha->host_no));
29862 +       }
29863 +
29864 +       LEAVE(__func__);
29865 +
29866 +       return (status);
29867 +}
29868 +
29869 +/**
29870 + * qla2x00_reset_chip() - Reset ISP chip.
29871 + * @ha: HA context
29872 + *
29873 + * Returns 0 on success.
29874 + */
29875 +static void
29876 +qla2x00_reset_chip(scsi_qla_host_t *ha) 
29877 +{
29878 +       unsigned long   flags = 0;
29879 +       device_reg_t    *reg = ha->iobase;
29880 +       uint32_t        cnt;
29881 +       unsigned long   mbx_flags = 0;
29882 +       uint16_t        cmd;
29883 +
29884 +       ENTER(__func__);
29885 +
29886 +       /* Disable ISP interrupts. */
29887 +       qla2x00_disable_intrs(ha);
29888 +
29889 +       spin_lock_irqsave(&ha->hardware_lock, flags);
29890 +
29891 +       /* Turn off master enable */
29892 +       cmd = 0;
29893 +       pci_read_config_word(ha->pdev, PCI_COMMAND, &cmd);
29894 +       cmd &= ~PCI_COMMAND_MASTER;
29895 +       pci_write_config_word(ha->pdev, PCI_COMMAND, cmd);
29896 +
29897 +#if defined(ISP2200) || defined(ISP2300)
29898 +       /* Pause RISC. */
29899 +       WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC);
29900 +       if (ha->pdev->device == QLA2312_DEVICE_ID ||
29901 +           ha->pdev->device == QLA2322_DEVICE_ID) {
29902 +               for (cnt = 0; cnt < 30000; cnt++) {
29903 +                       if ((RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) != 0)
29904 +                               break;
29905 +                       udelay(100);
29906 +               }
29907 +       } else {
29908 +               udelay(10);
29909 +       }
29910 +
29911 +       /* Select FPM registers. */
29912 +       WRT_REG_WORD(&reg->ctrl_status, 0x20);
29913 +
29914 +       /* FPM Soft Reset. */
29915 +       WRT_REG_WORD(&reg->fpm_diag_config, 0x100);
29916 +
29917 +#if defined(ISP2300)
29918 +       /* Toggle Fpm Reset. */
29919 +       WRT_REG_WORD(&reg->fpm_diag_config, 0x0);
29920 +#endif
29921 +
29922 +       /* Select frame buffer registers. */
29923 +       WRT_REG_WORD(&reg->ctrl_status, 0x10);
29924 +
29925 +       /* Reset frame buffer FIFOs. */
29926 +#if defined(ISP2200)
29927 +       WRT_REG_WORD(&reg->fb_cmd, 0xa000);
29928 +#else
29929 +       WRT_REG_WORD(&reg->fb_cmd, 0x00fc);
29930 +
29931 +       /* Read back fb_cmd until zero or 3 seconds max */
29932 +       for (cnt = 0; cnt < 3000; cnt++) {
29933 +               if ((RD_REG_WORD(&reg->fb_cmd) & 0xff) == 0)
29934 +                       break;
29935 +               udelay(100);
29936 +       }
29937 +#endif /* defined(ISP2200) */
29938 +
29939 +       /* Select RISC module registers. */
29940 +       WRT_REG_WORD(&reg->ctrl_status, 0);
29941 +
29942 +       /* Reset RISC processor. */
29943 +       WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC);
29944 +
29945 +       /* Release RISC processor. */
29946 +       WRT_REG_WORD(&reg->hccr, HCCR_RELEASE_RISC);
29947 +
29948 +#endif /* defined(ISP2200) || defined(ISP2300) */
29949 +
29950 +       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
29951 +       WRT_REG_WORD(&reg->hccr, HCCR_CLR_HOST_INT);
29952 +
29953 +       /* Reset ISP chip. */
29954 +       WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
29955 +
29956 +       /* Wait for RISC to recover from reset. */
29957 +       if (ha->pdev->device == QLA2312_DEVICE_ID ||
29958 +           ha->pdev->device == QLA2322_DEVICE_ID) {
29959 +               udelay(10);
29960 +       } else {
29961 +               for (cnt = 30000; cnt; cnt--) {
29962 +                       if ((RD_REG_WORD(&reg->ctrl_status) &
29963 +                           CSR_ISP_SOFT_RESET) == 0)
29964 +                               break;
29965 +                       udelay(100);
29966 +               }
29967 +       }
29968 +
29969 +       /* Reset RISC processor. */
29970 +       WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC);
29971 +
29972 +       WRT_REG_WORD(&reg->semaphore, 0);
29973 +
29974 +       /* Release RISC processor. */
29975 +       WRT_REG_WORD(&reg->hccr, HCCR_RELEASE_RISC);
29976 +
29977 +       if (ha->pdev->device == QLA2312_DEVICE_ID ||
29978 +           ha->pdev->device == QLA2322_DEVICE_ID) {
29979 +               udelay(100);
29980 +       } else {
29981 +               for (cnt = 0; cnt < 30000; cnt++) {
29982 +                       if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)))
29983 +                               QLA_MBX_REG_LOCK(ha);
29984 +
29985 +                       if (RD_REG_WORD(&reg->mailbox0) != MBS_BUSY) {
29986 +                               if (!(test_bit(ABORT_ISP_ACTIVE,
29987 +                                   &ha->dpc_flags)))
29988 +                                       QLA_MBX_REG_UNLOCK(ha);
29989 +                               break;
29990 +                       }
29991 +
29992 +                       if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)))
29993 +                               QLA_MBX_REG_UNLOCK(ha);
29994 +
29995 +                       udelay(100);
29996 +               }
29997 +       }
29998 +
29999 +       /* Turn on master enable */
30000 +       cmd |= PCI_COMMAND_MASTER;
30001 +       pci_write_config_word(ha->pdev, PCI_COMMAND, cmd);
30002 +
30003 +#if defined(ISP2200) || defined(ISP2300)
30004 +       /* Disable RISC pause on FPM parity error. */
30005 +       WRT_REG_WORD(&reg->hccr, HCCR_DISABLE_PARITY_PAUSE);
30006 +#endif
30007 +
30008 +       /* Save PCI information. */
30009 +       ha->isp_ctrl_status = RD_REG_WORD(&reg->ctrl_status);
30010 +
30011 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
30012 +
30013 +       LEAVE(__func__);
30014 +}
30015 +
30016 +/**
30017 + * qla2x00_pci_config() - Setup device PCI configuration registers.
30018 + * @ha: HA context
30019 + *
30020 + * Returns 0 on success.
30021 + */
30022 +static uint8_t
30023 +qla2x00_pci_config(scsi_qla_host_t *ha)
30024 +{
30025 +       uint8_t         status;
30026 +       uint16_t        w;
30027 +#if defined(ISP2300)
30028 +       uint32_t        cnt;
30029 +       unsigned long   flags = 0;
30030 +#endif
30031 +#if MEMORY_MAPPED_IO
30032 +       uint32_t        mmapbase;
30033 +       uint32_t        page_offset, base;
30034 +#endif
30035 +
30036 +       ENTER(__func__);
30037 +
30038 +       if (qla2x00_verbose)
30039 +               printk("scsi(%ld): Configuring PCI space...\n",
30040 +                       ha->host_no);
30041 +
30042 +       /* 
30043 +        * Turn on PCI master; for system BIOSes that don't turn it on by
30044 +        * default.
30045 +        */
30046 +       pci_set_master(ha->pdev);
30047 +       pci_read_config_word(ha->pdev, PCI_REVISION_ID, &ha->revision);
30048 +
30049 +       if (ha->iobase)
30050 +               return 0;
30051 +
30052 +       /*
30053 +        * We want to respect framework's setting of PCI configuration space
30054 +        * command register and also want to make sure that all bits of
30055 +        * interest to us are properly set in command register.
30056 +        */
30057 +       pci_read_config_word(ha->pdev, PCI_COMMAND, &w);
30058 +       w |= (PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | 
30059 +           PCI_COMMAND_INVALIDATE | PCI_COMMAND_PARITY | PCI_COMMAND_SERR);
30060 +
30061 +#if MEMORY_MAPPED_IO
30062 +       DEBUG(printk("scsi(%ld): I/O SPACE and MEMORY MAPPED I/O enabled.\n",
30063 +           ha->host_no));
30064 +#else
30065 +       DEBUG(printk("scsi(%ld): I/O SPACE enabled and MEMORY MAPPED I/O "
30066 +           "disabled.\n", ha->host_no));
30067 +
30068 +       w &= ~PCI_COMMAND_MEMORY;
30069 +#endif
30070 +
30071 +#if defined(ISP2300)
30072 +       /* PCI Specification Revision 2.3 changes */
30073 +       if (ha->pdev->device == QLA2322_DEVICE_ID) {
30074 +               /* Command Register -- Reset Interrupt Disable -- BIT_10 */
30075 +               w &= ~BIT_10;
30076 +       }
30077 +
30078 +       /*
30079 +        * If this is a 2300 card and not 2312, reset the COMMAND_INVALIDATE
30080 +        * due to a bug in the 2300. Unfortunately, the 2310 also reports
30081 +        * itself as a 2300 so we need to get the fb revision level -- a 6
30082 +        * indicates it really is a 2300 and not a 2310.
30083 +        */
30084 +       if (ha->pdev->device == QLA2300_DEVICE_ID) {
30085 +               spin_lock_irqsave(&ha->hardware_lock, flags);
30086 +
30087 +               /* Pause RISC. */
30088 +               WRT_REG_WORD(&ha->iobase->hccr, HCCR_PAUSE_RISC);
30089 +               for (cnt = 0; cnt < 30000; cnt++) {
30090 +                       if ((RD_REG_WORD(&ha->iobase->hccr) &
30091 +                           HCCR_RISC_PAUSE) != 0)
30092 +                               break;
30093 +
30094 +                       udelay(10);
30095 +               }
30096 +
30097 +               /* Select FPM registers. */
30098 +               WRT_REG_WORD(&ha->iobase->ctrl_status, 0x20);
30099 +
30100 +               /* Get the fb rev level */
30101 +               if (RD_REG_WORD(&ha->iobase->fb_cmd) == FPM_2300)
30102 +                       w &= ~PCI_COMMAND_INVALIDATE;
30103 +
30104 +               /* Deselect FPM registers. */
30105 +               WRT_REG_WORD(&ha->iobase->ctrl_status, 0x0);
30106 +
30107 +               /* Release RISC module. */
30108 +               WRT_REG_WORD(&ha->iobase->hccr, HCCR_RELEASE_RISC);
30109 +               for (cnt = 0; cnt < 30000; cnt++) {
30110 +                       if ((RD_REG_WORD(&ha->iobase->hccr) &
30111 +                           HCCR_RISC_PAUSE) == 0)
30112 +                               break;
30113 +
30114 +                       udelay(10);
30115 +               }
30116 +
30117 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
30118 +       }
30119 +#endif
30120 +
30121 +       pci_write_config_word(ha->pdev, PCI_COMMAND, w);
30122 +
30123 +       /* Reset expansion ROM address decode enable */
30124 +       pci_read_config_word(ha->pdev, PCI_ROM_ADDRESS, &w);
30125 +       w &= ~PCI_ROM_ADDRESS_ENABLE;
30126 +       pci_write_config_word(ha->pdev, PCI_ROM_ADDRESS, w);
30127 +
30128 +       status = 0;
30129 +#if MEMORY_MAPPED_IO
30130 +       /* Get memory mapped I/O address */
30131 +       pci_read_config_dword(ha->pdev, PCI_BASE_ADDRESS_1, &mmapbase);
30132 +       mmapbase &= PCI_BASE_ADDRESS_MEM_MASK;
30133 +
30134 +       /* Find proper memory chunk for memory map I/O reg */
30135 +       base = mmapbase & PAGE_MASK;
30136 +       page_offset = mmapbase - base;
30137 +
30138 +       /* Get virtual address for I/O registers  */
30139 +       ha->mmpbase = ioremap(base, page_offset + 256);
30140 +       if (ha->mmpbase) {
30141 +               ha->mmpbase += page_offset;
30142 +               ha->iobase = ha->mmpbase;
30143 +               status = 0;
30144 +       }
30145 +#endif
30146 +
30147 +       LEAVE(__func__);
30148 +
30149 +       return (status);
30150 +}
30151 +
30152 +/**
30153 + * qla2x00_set_cache_line() - Sets PCI cache line parameter.
30154 + * @ha: HA context
30155 + *
30156 + * Returns 0 on success.
30157 + */
30158 +static uint8_t
30159 +qla2x00_set_cache_line(struct scsi_qla_host * ha)
30160 +{
30161 +       unsigned char cache_size;
30162 +
30163 +       ENTER(__func__);
30164 +
30165 +       /* Set the cache line. */
30166 +       if (!ha->flags.set_cache_line_size_1) {
30167 +               LEAVE(__func__);
30168 +
30169 +               return (0);
30170 +       }
30171 +
30172 +       /* Taken from drivers/net/acenic.c */
30173 +       pci_read_config_byte(ha->pdev, PCI_CACHE_LINE_SIZE, &cache_size);
30174 +       cache_size <<= 2;
30175 +       if (cache_size != SMP_CACHE_BYTES) {
30176 +               printk(KERN_INFO
30177 +                   "scsi(%ld): PCI cache line size set incorrectly "
30178 +                   "(%d bytes) by BIOS/FW, ",
30179 +                   ha->host_no, cache_size);
30180 +
30181 +               if (cache_size > SMP_CACHE_BYTES) {
30182 +                       printk(KERN_INFO "expecting %d.\n", SMP_CACHE_BYTES);
30183 +               } else {
30184 +                       printk(KERN_INFO
30185 +                           "correcting to %d.\n", SMP_CACHE_BYTES);
30186 +                       pci_write_config_byte(ha->pdev,
30187 +                           PCI_CACHE_LINE_SIZE, SMP_CACHE_BYTES >> 2);
30188 +               }
30189 +       }
30190 +
30191 +       LEAVE(__func__);
30192 +
30193 +       return (0);
30194 +}
30195 +
30196 +/**
30197 + * qla2x00_chip_diag() - Test chip for proper operation.
30198 + * @ha: HA context
30199 + *
30200 + * Returns 0 on success.
30201 + */
30202 +static uint8_t
30203 +qla2x00_chip_diag(scsi_qla_host_t *ha)
30204 +{
30205 +       uint8_t         status;
30206 +       device_reg_t    *reg = ha->iobase;
30207 +       unsigned long   flags = 0;
30208 +       uint16_t        data;
30209 +       uint32_t        cnt;
30210 +       uint16_t        mb[5];
30211 +
30212 +       ENTER(__func__);
30213 +
30214 +       /* Assume a failed state */
30215 +       status = 1;
30216 +
30217 +       DEBUG3(printk("scsi(%ld): Testing device at %lx.\n",
30218 +           ha->host_no, (u_long)&reg->flash_address));
30219 +
30220 +       spin_lock_irqsave(&ha->hardware_lock, flags);
30221 +
30222 +       /* Reset ISP chip. */
30223 +       WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
30224 +       data = qla2x00_debounce_register(&reg->ctrl_status);
30225 +       for (cnt = 6000000 ; cnt && (data & CSR_ISP_SOFT_RESET); cnt--) {
30226 +               udelay(5);
30227 +               data = RD_REG_WORD(&reg->ctrl_status);
30228 +               barrier();
30229 +       }
30230 +
30231 +       if (!cnt)
30232 +               goto chip_diag_failed;
30233 +
30234 +       DEBUG3(printk("scsi(%ld): Reset register cleared by chip reset\n",
30235 +           ha->host_no));
30236 +
30237 +       /* Reset RISC processor. */
30238 +       WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC);
30239 +       WRT_REG_WORD(&reg->hccr, HCCR_RELEASE_RISC);
30240 +
30241 +#if defined(ISP2300)
30242 +       /* Workaround for QLA2312 PCI parity error */
30243 +       if (ha->pdev->device == QLA2312_DEVICE_ID ||
30244 +           ha->pdev->device == QLA2322_DEVICE_ID) {
30245 +               udelay(10);
30246 +       } else {
30247 +               data = qla2x00_debounce_register(&reg->mailbox0);
30248 +               for (cnt = 6000000; cnt && (data == MBS_BUSY); cnt--) {
30249 +                       udelay(5);
30250 +                       data = RD_REG_WORD(&reg->mailbox0);
30251 +                       barrier(); 
30252 +               }
30253 +       }
30254 +#else
30255 +       data = qla2x00_debounce_register(&reg->mailbox0);
30256 +       for (cnt = 6000000; cnt && (data == MBS_BUSY); cnt--) {
30257 +               udelay(5);
30258 +               data = RD_REG_WORD(&reg->mailbox0);
30259 +               barrier(); 
30260 +       }
30261 +#endif
30262 +       if (!cnt)
30263 +               goto chip_diag_failed;
30264 +
30265 +       /* Check product ID of chip */
30266 +       DEBUG3(printk("scsi(%ld): Checking product ID of chip\n",
30267 +           ha->host_no));
30268 +
30269 +       mb[1] = RD_REG_WORD(&reg->mailbox1);
30270 +       mb[2] = RD_REG_WORD(&reg->mailbox2);
30271 +       mb[3] = RD_REG_WORD(&reg->mailbox3);
30272 +       mb[4] = qla2x00_debounce_register(&reg->mailbox4);
30273 +
30274 +       if (mb[1] != PROD_ID_1 ||
30275 +           (mb[2] != PROD_ID_2 && mb[2] != PROD_ID_2a) ||
30276 +           mb[3] != PROD_ID_3 ||
30277 +           (mb[4] != PROD_ID_4 && mb[4] != PROD_ID_4a)) {
30278 +
30279 +               printk(KERN_WARNING
30280 +                   "scsi(%ld): Wrong product ID = 0x%x,0x%x,0x%x,0x%x\n",
30281 +                   ha->host_no, mb[1], mb[2], mb[3], mb[4]);
30282 +
30283 +               goto chip_diag_failed;
30284 +       }
30285 +
30286 +       /* Adjust fw RISC transfer size */
30287 +       ha->fw_transfer_size = REQUEST_ENTRY_SIZE * REQUEST_ENTRY_CNT;
30288 +#if defined(ISP2200)
30289 +       if (ha->pdev->device == QLA2200_DEVICE_ID &&
30290 +           RD_REG_WORD(&reg->mailbox7) == QLA2200A_RISC_ROM_VER) {
30291 +
30292 +               /* Limit firmware transfer size with a 2200A */
30293 +               DEBUG3(printk("scsi(%ld): Found QLA2200A chip.\n",
30294 +                   ha->host_no));
30295 +
30296 +               ha->fw_transfer_size = 128;
30297 +       }
30298 +#endif
30299 +
30300 +       /* Wrap Incoming Mailboxes Test. */
30301 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
30302 +
30303 +       DEBUG3(printk("scsi(%ld): Checking mailboxes.\n", ha->host_no));
30304 +       status = qla2x00_mbx_reg_test(ha);
30305 +       if (status) {
30306 +               DEBUG(printk("scsi(%ld): Failed mailbox send register test\n",
30307 +                   ha->host_no));
30308 +               printk(KERN_WARNING
30309 +                   "scsi(%ld): Failed mailbox send register test\n",
30310 +                   ha->host_no);
30311 +       }
30312 +       else {
30313 +               /* Flag a successful status */
30314 +               status = 0;
30315 +       }
30316 +       spin_lock_irqsave(&ha->hardware_lock, flags);
30317 +
30318 +chip_diag_failed:
30319 +       if (status)
30320 +               DEBUG2_3(printk("scsi(%ld): Chip diagnostics **** FAILED "
30321 +                   "****\n", ha->host_no));
30322 +
30323 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
30324 +
30325 +       LEAVE(__func__);
30326 +
30327 +       return (status);
30328 +}
30329 +
30330 +/**
30331 + * qla2x00_setup_chip() - Load and start RISC firmware.
30332 + * @ha: HA context
30333 + *
30334 + * Returns 0 on success.
30335 + */
30336 +static uint8_t
30337 +qla2x00_setup_chip(scsi_qla_host_t *ha)
30338 +{
30339 +       uint8_t         status = 0;
30340 +       uint16_t        cnt;
30341 +       uint16_t        *risc_code;
30342 +       unsigned long   risc_address;
30343 +       unsigned long   risc_code_size;
30344 +       int             num;
30345 +       int             i;
30346 +       uint16_t        *req_ring;
30347 +       struct qla_fw_info      *fw_iter;
30348 +
30349 +       ENTER(__func__);
30350 +
30351 +       /* Load firmware sequences */
30352 +       fw_iter = ha->brd_info->fwinfo;
30353 +       while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) {
30354 +               risc_code = fw_iter->fwcode;
30355 +               risc_code_size = *fw_iter->fwlen;
30356 +
30357 +               if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) {
30358 +                       risc_address = *fw_iter->fwstart;
30359 +               } else {
30360 +                       /* Extended address */
30361 +                       risc_address = *fw_iter->lfwstart;
30362 +               }
30363 +
30364 +               num = 0;
30365 +               status = 0;
30366 +               while (risc_code_size > 0 && !status) {
30367 +                       cnt = (uint16_t)(ha->fw_transfer_size >> 1);
30368 +                       if (cnt > risc_code_size)
30369 +                               cnt = risc_code_size;
30370 +
30371 +                       DEBUG7(printk("scsi(%ld): Loading risc segment@ "
30372 +                           "addr %p, number of bytes 0x%x, offset 0x%lx.\n",
30373 +                           ha->host_no, risc_code, cnt, risc_address));
30374 +
30375 +                       req_ring = (uint16_t *)ha->request_ring;
30376 +                       for (i = 0; i < cnt; i++)
30377 +                               req_ring[i] = cpu_to_le16(risc_code[i]);
30378 +
30379 +                       /*
30380 +                        * Flush written firmware to the ha->request_ring buffer
30381 +                        * before DMA.
30382 +                        */
30383 +                       flush_cache_all();
30384 +
30385 +                       if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) {
30386 +                               status = qla2x00_load_ram(ha,
30387 +                                   ha->request_dma, risc_address, cnt);
30388 +                       } else {
30389 +                               status = qla2x00_load_ram_ext(ha,
30390 +                                   ha->request_dma, risc_address, cnt);
30391 +                       }
30392 +                       if (status) {
30393 +                               DEBUG(printk("scsi(%ld): [ERROR] Failed to "
30394 +                                   "load segment %d of firmware\n",
30395 +                                   ha->host_no, num));
30396 +                               printk(KERN_WARNING
30397 +                                   "scsi(%ld): [ERROR] Failed to load "
30398 +                                   "segment %d of firmware\n",
30399 +                                   ha->host_no, num);
30400 +
30401 +                               qla2x00_dump_regs(ha->host);
30402 +                               break;
30403 +                       }
30404 +
30405 +                       risc_code += cnt;
30406 +                       risc_address += cnt;
30407 +                       risc_code_size -= cnt;
30408 +                       num++;
30409 +               }
30410 +
30411 +               /* Next firmware sequence */
30412 +               fw_iter++;
30413 +       }
30414 +
30415 +       /* Verify checksum of loaded RISC code. */
30416 +       if (!status) {
30417 +               DEBUG(printk("scsi(%ld): Verifying Checksum of loaded RISC "
30418 +                   "code.\n", ha->host_no));
30419 +
30420 +               status = qla2x00_verify_checksum(ha);
30421 +               if (status == QL_STATUS_SUCCESS) {
30422 +                       /* Start firmware execution. */
30423 +                       DEBUG(printk("scsi(%ld): Checksum OK, start "
30424 +                           "firmware.\n", ha->host_no));
30425 +
30426 +                       status = qla2x00_execute_fw(ha);
30427 +               }
30428 +               else {
30429 +                       DEBUG2(printk(KERN_INFO
30430 +                           "scsi(%ld): ISP Firmware failed checksum.\n",
30431 +                           ha->host_no));
30432 +               }
30433 +       }
30434 +
30435 +       if (status) {
30436 +               DEBUG2_3(printk("scsi(%ld): Setup chip **** FAILED ****.\n",
30437 +                   ha->host_no));
30438 +       }
30439 +
30440 +       return (status);
30441 +}
30442 +
30443 +/**
30444 + * qla2x00_init_rings() - Initializes firmware.
30445 + * @ha: HA context
30446 + *
30447 + * Beginning of request ring has initialization control block already built
30448 + * by nvram config routine.
30449 + *
30450 + * Returns 0 on success.
30451 + */
30452 +static uint8_t
30453 +qla2x00_init_rings(scsi_qla_host_t *ha)
30454 +{
30455 +       unsigned long flags = 0;
30456 +       uint8_t  status;
30457 +       int cnt;
30458 +       device_reg_t *reg = ha->iobase;
30459 +
30460 +
30461 +       spin_lock_irqsave(&ha->hardware_lock, flags);
30462 +
30463 +       /* Clear outstanding commands array. */
30464 +       for (cnt = 0; cnt < MAX_OUTSTANDING_COMMANDS; cnt++)
30465 +               ha->outstanding_cmds[cnt] = 0;
30466 +
30467 +       ha->current_outstanding_cmd = 0;
30468 +
30469 +       /* Clear RSCN queue. */
30470 +       ha->rscn_in_ptr = 0;
30471 +       ha->rscn_out_ptr = 0;
30472 +
30473 +       /* Initialize firmware. */
30474 +       ha->request_ring_ptr  = ha->request_ring;
30475 +       ha->req_ring_index    = 0;
30476 +       ha->req_q_cnt         = REQUEST_ENTRY_CNT;
30477 +       ha->response_ring_ptr = ha->response_ring;
30478 +       ha->rsp_ring_index    = 0;
30479 +
30480 +       WRT_REG_WORD(ISP_REQ_Q_IN(reg), 0);
30481 +       WRT_REG_WORD(ISP_REQ_Q_OUT(reg), 0);
30482 +       WRT_REG_WORD(ISP_RSP_Q_IN(reg), 0);
30483 +       WRT_REG_WORD(ISP_RSP_Q_OUT(reg), 0);
30484 +
30485 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
30486 +
30487 +       DEBUG(printk("scsi(%ld): Issue init firmware.\n", ha->host_no));
30488 +       status = qla2x00_init_firmware(ha, sizeof(init_cb_t));
30489 +       if (status) {
30490 +               DEBUG2_3(printk("scsi(%ld): Init firmware **** FAILED ****.\n",
30491 +                   ha->host_no));
30492 +       } else {
30493 +               /* Setup seriallink options */
30494 +               uint16_t swing, emphasis;
30495 +               uint16_t opt10, opt11;
30496 +
30497 +               DEBUG3(printk("scsi(%ld): Serial link options:\n",
30498 +                   ha->host_no));
30499 +               DEBUG3(qla2x00_dump_buffer(
30500 +                   (uint8_t *)&ha->fw_seriallink_options,
30501 +                   sizeof(ha->fw_seriallink_options)));
30502 +
30503 +               qla2x00_get_fw_options(ha,
30504 +                   &ha->fw_options1, &ha->fw_options2, &ha->fw_options3);
30505 +
30506 +               ha->fw_options1 &= ~BIT_8;
30507 +               if (ha->fw_seriallink_options[1] & BIT_2)
30508 +                       ha->fw_options1 |= BIT_8;
30509 +
30510 +               /* 1G settings */
30511 +               swing = ha->fw_seriallink_options[0] & (BIT_2 | BIT_1 | BIT_0);
30512 +               emphasis = ha->fw_seriallink_options[0] & (BIT_4 | BIT_3);
30513 +               emphasis >>= 3;
30514 +               opt10 = (emphasis << 14) | (swing << 8) | 0x3;
30515 +
30516 +               /* 2G settings */
30517 +               swing = ha->fw_seriallink_options[0] & (BIT_7 | BIT_6 | BIT_5);
30518 +               swing >>= 5;
30519 +               emphasis = ha->fw_seriallink_options[1] & (BIT_1 | BIT_0);
30520 +               opt11 = (emphasis << 14) | (swing << 8) | 0x3;
30521 +
30522 +               qla2x00_set_fw_options(ha, ha->fw_options1,
30523 +                   ha->fw_options2, ha->fw_options3, opt10, opt11);
30524 +
30525 +               DEBUG3(printk("scsi(%ld): Init firmware -- success.\n",
30526 +                   ha->host_no));
30527 +       }
30528 +
30529 +       return (status);
30530 +}
30531 +
30532 +/**
30533 + * qla2x00_fw_ready() - Waits for firmware ready.
30534 + * @ha: HA context
30535 + *
30536 + * Returns 0 on success.
30537 + */
30538 +static uint8_t
30539 +qla2x00_fw_ready(scsi_qla_host_t *ha)
30540 +{
30541 +       uint8_t         status = 0;
30542 +       unsigned long   wtime, mtime;
30543 +       uint16_t        min_wait;       /* Minimum wait time if loop is down */
30544 +       uint16_t        wait_time;      /* Wait time if loop is coming ready */
30545 +       uint16_t        pause_time;
30546 +       uint16_t        fw_state;
30547 +
30548 +       /* 20 seconds for loop down. */
30549 +       min_wait = 20;          
30550 +       ha->device_flags &= ~DFLG_NO_CABLE;
30551 +
30552 +       /*
30553 +        * Firmware should take at most one RATOV to login, plus 5 seconds for
30554 +        * our own processing.
30555 +        */
30556 +       if ((wait_time = (ha->retry_count*ha->login_timeout) + 5) < min_wait) {
30557 +               wait_time = min_wait;
30558 +       }
30559 +
30560 +       pause_time = 1000;      /* 1000 usec */
30561 +
30562 +       /* Min wait time if loop down */
30563 +       mtime = jiffies + (min_wait * HZ);
30564 +
30565 +       /* wait time before firmware ready */
30566 +       wtime = jiffies + (wait_time * HZ);
30567 +
30568 +       /* Wait for ISP to finish LIP */
30569 +       if (!qla2x00_quiet)
30570 +               printk(KERN_INFO
30571 +                   "scsi(%ld): Waiting for LIP to complete...\n", ha->host_no);
30572 +
30573 +       DEBUG3(printk("scsi(%ld): Waiting for LIP to complete...\n",
30574 +           ha->host_no));
30575 +
30576 +       do {
30577 +               status = qla2x00_get_firmware_state(ha, &fw_state);
30578 +
30579 +               if (status == QL_STATUS_SUCCESS) {
30580 +                       if (fw_state == FSTATE_READY) {
30581 +                               DEBUG(printk("scsi(%ld): F/W Ready - OK \n",
30582 +                                   ha->host_no));
30583 +
30584 +                               qla2x00_get_retry_cnt(ha,
30585 +                                   &ha->retry_count, &ha->login_timeout);
30586 +
30587 +                               status = QL_STATUS_SUCCESS;
30588 +                               break;
30589 +                       }
30590 +
30591 +                       status = QL_STATUS_ERROR;
30592 +
30593 +                       if (atomic_read(&ha->loop_down_timer) ||
30594 +                           fw_state == FSTATE_LOSS_OF_SYNC) {
30595 +
30596 +                               /* Loop down. Timeout on min_wait */
30597 +                               if (time_after_eq(jiffies, mtime)) {
30598 +                                       printk(KERN_INFO
30599 +                                           "scsi(%ld): Cable is "
30600 +                                           "unplugged...\n",
30601 +                                           ha->host_no);
30602 +
30603 +                                       ha->device_flags |= DFLG_NO_CABLE;
30604 +                                       break;
30605 +                               }
30606 +                       }
30607 +               } else {
30608 +                       /* Mailbox cmd failed. Timeout on min_wait. */
30609 +                       if (time_after_eq(jiffies, mtime))
30610 +                               break;
30611 +               }
30612 +
30613 +               if (time_after_eq(jiffies, wtime))
30614 +                       break;
30615 +
30616 +               /* Delay for a while */
30617 +               set_current_state(TASK_INTERRUPTIBLE);
30618 +               schedule_timeout(HZ / 2);
30619 +
30620 +               DEBUG3(printk("scsi(%ld): fw_state=%x curr time=%lx.\n",
30621 +                   ha->host_no, fw_state, jiffies));
30622 +       } while (1);
30623 +
30624 +       DEBUG(printk("scsi(%ld): fw_state=%x curr time=%lx.\n",
30625 +           ha->host_no, fw_state, jiffies));
30626 +
30627 +       if (status) {
30628 +               DEBUG2_3(printk("scsi(%ld): Firmware ready **** FAILED ****.\n",
30629 +                   ha->host_no));
30630 +       }
30631 +
30632 +       return (status);
30633 +}
30634 +
30635 +/*
30636 +*  qla2x00_configure_hba
30637 +*      Setup adapter context.
30638 +*
30639 +* Input:
30640 +*      ha = adapter state pointer.
30641 +*
30642 +* Returns:
30643 +*      0 = success
30644 +*
30645 +* Context:
30646 +*      Kernel context.
30647 +*/
30648 +static uint8_t
30649 +qla2x00_configure_hba(scsi_qla_host_t *ha)
30650 +{
30651 +       uint8_t       rval;
30652 +       uint16_t      loop_id;
30653 +       uint16_t      topo;
30654 +       uint8_t       al_pa;
30655 +       uint8_t       area;
30656 +       uint8_t       domain;
30657 +       char            connect_type[22];
30658 +
30659 +       ENTER(__func__);
30660 +
30661 +       /* Get host addresses. */
30662 +       rval = qla2x00_get_adapter_id(ha,
30663 +           &loop_id, &al_pa, &area, &domain, &topo);
30664 +       if (rval != QL_STATUS_SUCCESS) {
30665 +               printk(KERN_WARNING
30666 +                   "scsi(%ld): ERROR -- Unable to get host loop ID.\n",
30667 +                   ha->host_no);
30668 +               return (rval);
30669 +       }
30670 +
30671 +       if (topo == 4) {
30672 +               printk(KERN_INFO
30673 +                       "scsi(%ld): Cannot get topology - retrying.\n",
30674 +                       ha->host_no);
30675 +               return (QL_STATUS_ERROR);
30676 +       }
30677 +
30678 +       ha->loop_id = loop_id;
30679 +
30680 +#if defined(ISP2100)
30681 +       /* Make sure 2100 only has loop, in case of any firmware bug. */
30682 +       topo = 0;
30683 +#endif
30684 +
30685 +       /* initialize */
30686 +       ha->min_external_loopid = SNS_FIRST_LOOP_ID;
30687 +       ha->operating_mode = LOOP;
30688 +
30689 +       switch (topo) {
30690 +       case 0:
30691 +               DEBUG3(printk("scsi(%ld): HBA in NL topology.\n",
30692 +                   ha->host_no));
30693 +               ha->current_topology = ISP_CFG_NL;
30694 +               strcpy(connect_type, "(Loop)");
30695 +               break;
30696 +
30697 +       case 1:
30698 +               DEBUG3(printk("scsi(%ld): HBA in FL topology.\n",
30699 +                   ha->host_no));
30700 +               ha->current_topology = ISP_CFG_FL;
30701 +               strcpy(connect_type, "(FL_Port)");
30702 +               break;
30703 +
30704 +       case 2:
30705 +               DEBUG3(printk("scsi(%ld): HBA in N P2P topology.\n",
30706 +                   ha->host_no));
30707 +               ha->operating_mode = P2P;
30708 +               ha->current_topology = ISP_CFG_N;
30709 +               strcpy(connect_type, "(N_Port-to-N_Port)");
30710 +               break;
30711 +
30712 +       case 3:
30713 +               DEBUG3(printk("scsi(%ld): HBA in F P2P topology.\n",
30714 +                   ha->host_no));
30715 +               ha->operating_mode = P2P;
30716 +               ha->current_topology = ISP_CFG_F;
30717 +               strcpy(connect_type, "(F_Port)");
30718 +               break;
30719 +
30720 +       default:
30721 +               DEBUG3(printk("scsi(%ld): HBA in unknown topology %x. "
30722 +                   "Using NL.\n",
30723 +                   ha->host_no, topo));
30724 +               ha->current_topology = ISP_CFG_NL;
30725 +               strcpy(connect_type, "(Loop)");
30726 +               break;
30727 +       }
30728 +
30729 +       /* Save Host port and loop ID. */
30730 +       /* byte order - Big Endian */
30731 +       ha->d_id.b.domain = domain;
30732 +       ha->d_id.b.area = area;
30733 +       ha->d_id.b.al_pa = al_pa;
30734 +
30735 +       if (!qla2x00_quiet)
30736 +               printk(KERN_INFO
30737 +                   "scsi(%ld): Topology - %s, Host Loop address 0x%x\n",
30738 +                   ha->host_no, connect_type, ha->loop_id);
30739 +
30740 +       if (rval) {
30741 +               DEBUG2_3(printk("scsi(%ld): FAILED.\n", ha->host_no));
30742 +       } else {
30743 +               DEBUG3(printk("scsi(%ld): exiting normally.\n", ha->host_no));
30744 +       }
30745 +
30746 +       return(rval);
30747 +}
30748 +
30749 +/*
30750 +* NVRAM configuration for ISP 2xxx
30751 +*
30752 +* Input:
30753 +*      ha                = adapter block pointer.
30754 +*
30755 +* Output:
30756 +*      initialization control block in response_ring
30757 +*      host adapters parameters in host adapter block
30758 +*
30759 +* Returns:
30760 +*      0 = success.
30761 +*/
30762 +static uint8_t
30763 +qla2x00_nvram_config(scsi_qla_host_t *ha)
30764 +{
30765 +       uint8_t   status = 0;
30766 +       uint8_t   chksum = 0;
30767 +       uint16_t  cnt, base;
30768 +       uint8_t   *dptr1, *dptr2;
30769 +       init_cb_t *icb   = ha->init_cb;
30770 +       nvram_t *nv    = (nvram_t *)ha->request_ring;
30771 +       uint16_t  *wptr  = (uint16_t *)ha->request_ring;
30772 +#if defined(ISP2300)
30773 +       device_reg_t *reg = ha->iobase;
30774 +       uint16_t  data;
30775 +#endif
30776 +
30777 +       if (ha->flags.nvram_config_done)
30778 +               return (status);
30779 +
30780 +       ENTER(__func__);
30781
30782 +       /* Determine NVRAM starting address. */
30783 +       base = 0;
30784 +#if defined(ISP2300)
30785 +       if (ha->pdev->device == QLA2312_DEVICE_ID ||
30786 +           ha->pdev->device == QLA2322_DEVICE_ID) {
30787 +               data = RD_REG_WORD(&reg->ctrl_status);
30788 +               if ((data >> 14) == 1)
30789 +                       base = 0x80;
30790 +
30791 +               data = RD_REG_WORD(&reg->nvram);
30792 +               while (data & NVR_BUSY) {
30793 +                       udelay(100);
30794 +                       data = RD_REG_WORD(&reg->nvram);
30795 +               }
30796 +
30797 +               /* Lock resource */
30798 +               WRT_REG_WORD(&reg->host_semaphore, 0x1);
30799 +               udelay(5);
30800 +               data = RD_REG_WORD(&reg->host_semaphore);
30801 +               while ((data & BIT_0) == 0) {
30802 +                       /* Lock failed */
30803 +                       udelay(100);
30804 +                       WRT_REG_WORD(&reg->host_semaphore, 0x1);
30805 +                       udelay(5);
30806 +                       data = RD_REG_WORD(&reg->host_semaphore);
30807 +               }
30808 +       }
30809 +#endif
30810 +
30811 +       /* Get NVRAM data and calculate checksum. */
30812 +       for (cnt = 0; cnt < sizeof(nvram_t)/2; cnt++) {
30813 +               *wptr = cpu_to_le16(qla2x00_get_nvram_word(ha, (cnt+base)));
30814 +               chksum += (uint8_t)*wptr;
30815 +               chksum += (uint8_t)(*wptr >> 8);
30816 +               wptr++;
30817 +       }
30818 +
30819 +#if defined(ISP2300)
30820 +       if (ha->pdev->device == QLA2312_DEVICE_ID ||
30821 +           ha->pdev->device == QLA2322_DEVICE_ID) {
30822 +               /* Unlock resource */
30823 +               WRT_REG_WORD(&reg->host_semaphore, 0);
30824 +       }
30825 +#endif
30826 +
30827 +       DEBUG5(printk("scsi(%ld): Contents of NVRAM\n", ha->host_no));
30828 +       DEBUG5(qla2x00_dump_buffer(
30829 +           (uint8_t *)ha->request_ring, sizeof(nvram_t)));
30830 +
30831 +       /* Bad NVRAM data, set defaults parameters. */
30832 +       if (chksum || nv->id[0] != 'I' || nv->id[1] != 'S' ||
30833 +           nv->id[2] != 'P' || nv->id[3] != ' ' || nv->nvram_version < 1) {
30834 +
30835 +               /* Reset NVRAM data. */
30836 +               DEBUG(printk("scsi(%ld): Using defaults for NVRAM - "
30837 +                   "checksum=0x%x, Id=%c, version=0x%x\n",
30838 +                   ha->host_no,
30839 +                   chksum, nv->id[0], nv->nvram_version));
30840 +
30841 +               memset(nv, 0, sizeof(nvram_t));
30842 +
30843 +               /*
30844 +                * Set default initialization control block.
30845 +                */
30846 +               nv->parameter_block_version = ICB_VERSION;
30847 +
30848 +#if defined(ISP2300)
30849 +               nv->firmware_options[0] = BIT_2 | BIT_1;
30850 +               nv->firmware_options[1] = BIT_7 | BIT_5;
30851 +               nv->add_firmware_options[0] = BIT_5;
30852 +               nv->add_firmware_options[1] = BIT_5 | BIT_4;
30853 +               nv->frame_payload_size  = __constant_cpu_to_le16(2048);
30854 +#elif defined(ISP2200)
30855 +               nv->firmware_options[0] = BIT_3 | BIT_2 | BIT_1;
30856 +               nv->firmware_options[1] = BIT_7 | BIT_5;
30857 +               nv->add_firmware_options[0] = BIT_5 | BIT_4;
30858 +               nv->add_firmware_options[1] = BIT_5 | BIT_4;
30859 +               nv->frame_payload_size  = __constant_cpu_to_le16(1024);
30860 +#else /* defined(ISP2100) */
30861 +               nv->firmware_options[0] = BIT_3 | BIT_1;
30862 +               nv->firmware_options[1] = BIT_5;
30863 +               nv->frame_payload_size  = __constant_cpu_to_le16(1024);
30864 +#endif
30865 +
30866 +               nv->max_iocb_allocation = __constant_cpu_to_le16(256);
30867 +               nv->execution_throttle  = __constant_cpu_to_le16(16);
30868 +               nv->retry_count = 8;
30869 +               nv->retry_delay = 1;
30870 +
30871 +               nv->port_name[0] = 33;
30872 +               nv->port_name[3] = 224;
30873 +               nv->port_name[4] = 139;
30874 +
30875 +               nv->login_timeout = 4;
30876 +
30877 +               /*
30878 +                * Set default host adapter parameters
30879 +                */
30880 +               nv->host_p[1] = BIT_2;
30881 +               nv->reset_delay = 5;
30882 +               nv->port_down_retry_count = 8;
30883 +               nv->max_luns_per_target = __constant_cpu_to_le16(8);
30884 +
30885 +               status = 1;
30886 +       }
30887 +
30888 +       /* Reset Initialization control block */
30889 +       memset(icb, 0, sizeof(init_cb_t));
30890 +
30891 +       /*
30892 +        * Setup driver NVRAM options.
30893 +        */
30894 +       nv->firmware_options[0] |= (BIT_6 | BIT_1);
30895 +       nv->firmware_options[0] &= ~(BIT_5 | BIT_4);
30896 +       nv->firmware_options[1] |= (BIT_5 | BIT_0);
30897 +       nv->firmware_options[1] &= ~BIT_4;
30898 +#if defined(ISP2300)
30899 +       nv->firmware_options[0] |= BIT_2;
30900 +       nv->firmware_options[0] &= ~BIT_3;
30901 +#elif defined(ISP2200)
30902 +       nv->firmware_options[0] |= BIT_2;
30903 +#endif
30904 +
30905 +#if !defined(FC_IP_SUPPORT)
30906 +       /* Enable FC-Tape support */
30907 +       nv->firmware_options[1] |= BIT_7;
30908 +       nv->add_firmware_options[1] |= (BIT_5 | BIT_4);
30909 +#endif
30910 +
30911 +       /*
30912 +        * Copy over NVRAM RISC parameter block to initialization control block.
30913 +        */
30914 +       dptr1 = (uint8_t *)icb;
30915 +       dptr2 = (uint8_t *)&nv->parameter_block_version;
30916 +       cnt = (uint8_t *)&icb->request_q_outpointer - (uint8_t *)&icb->version;
30917 +       while (cnt--)
30918 +               *dptr1++ = *dptr2++;
30919 +
30920 +       /* Copy 2nd half. */
30921 +       dptr1 = (uint8_t *)icb->add_firmware_options;
30922 +       cnt = (uint8_t *)icb->reserved_3 - (uint8_t *)icb->add_firmware_options;
30923 +       while (cnt--)
30924 +               *dptr1++ = *dptr2++;
30925 +
30926 +       /* Prepare nodename */
30927 +       if ((icb->firmware_options[1] & BIT_6) == 0) {
30928 +               /*
30929 +                * Firmware will apply the following mask if the nodename was
30930 +                * not provided.
30931 +                */
30932 +               memcpy(icb->node_name, icb->port_name, WWN_SIZE);
30933 +               icb->node_name[0] &= 0xF0;
30934 +       }
30935 +
30936 +       /*
30937 +        * Set host adapter parameters.
30938 +        */
30939 +       ha->nvram_version = nv->nvram_version;
30940 +
30941 +       ha->flags.disable_luns = ((nv->host_p[0] & BIT_2) ? 1 : 0);
30942 +       ha->flags.disable_risc_code_load = ((nv->host_p[0] & BIT_4) ? 1 : 0);
30943 +       ha->flags.set_cache_line_size_1 = ((nv->host_p[0] & BIT_5) ? 1 : 0);
30944 +       ha->flags.enable_64bit_addressing = ((nv->host_p[1] & BIT_0) ? 1 : 0);
30945 +       ha->flags.enable_lip_reset = ((nv->host_p[1] & BIT_1) ? 1 : 0);
30946 +       ha->flags.enable_lip_full_login = ((nv->host_p[1] & BIT_2) ? 1 : 0);
30947 +       ha->flags.enable_target_reset = ((nv->host_p[1] & BIT_3) ? 1 : 0);
30948 +       ha->flags.enable_flash_db_update = ((nv->host_p[1] & BIT_4) ? 1 : 0);
30949 +
30950 +       ha->flags.link_down_error_enable  = 1;
30951 +
30952 +       ha->flags.enable_target_mode =
30953 +           ((icb->firmware_options[0] & BIT_4) ? 1 : 0);
30954 +       ha->operating_mode =
30955 +           (icb->add_firmware_options[0] & (BIT_6 | BIT_5 | BIT_4)) >> 4;
30956 +
30957 +       qla2x00_config_dma_addressing(ha);
30958 +
30959 +       ha->fw_seriallink_options[0] = nv->seriallink_options[0];
30960 +       ha->fw_seriallink_options[1] = nv->seriallink_options[1];
30961 +
30962 +       /* save HBA serial number */
30963 +       ha->serial0 = icb->port_name[5];
30964 +       ha->serial1 = icb->port_name[6];
30965 +       ha->serial2 = icb->port_name[7];
30966 +       memcpy(ha->node_name, icb->node_name, WWN_SIZE);
30967 +#if defined(FC_IP_SUPPORT)
30968 +       memcpy(ha->ip_port_name, icb->port_name, WWN_SIZE);
30969 +#endif
30970 +
30971 +       ha->hiwat = le16_to_cpu(icb->max_iocb_allocation);
30972 +       ha->execution_throttle = 0xFFFF;
30973 +       icb->execution_throttle = __constant_cpu_to_le16(0xFFFF);
30974 +
30975 +       ha->retry_count = nv->retry_count;
30976 +
30977 +       /* Set minimum login_timeout to 4 seconds. */
30978 +       if (nv->login_timeout < ql2xlogintimeout)
30979 +               nv->login_timeout = ql2xlogintimeout;
30980 +       if (nv->login_timeout < 4)
30981 +               nv->login_timeout = 4;
30982 +       ha->login_timeout = nv->login_timeout;
30983 +       icb->login_timeout = nv->login_timeout;
30984 +
30985 +/* FIXME
30986 + *
30987 + * port_down_retry_count updated twice
30988 + *
30989 + */
30990 +       ha->port_down_retry_count = nv->port_down_retry_count;
30991 +       ha->minimum_timeout =
30992 +           (ha->login_timeout * ha->retry_count) + ha->port_down_retry_count;
30993 +       ha->loop_reset_delay = nv->reset_delay;
30994 +
30995 +       /* Will get the value from NVRAM. */
30996 +       ha->loop_down_timeout = LOOP_DOWN_TIMEOUT;
30997 +       ha->loop_down_abort_time = LOOP_DOWN_TIME - ha->loop_down_timeout;
30998 +
30999 +       /* save OEM related items for QLA2200s and QLA2300s */
31000 +       ha->oem_id = nv->oem_id;
31001 +       memcpy(ha->oem_specific, nv->oem_specific, sizeof(ha->oem_specific));
31002 +
31003 +       ha->max_probe_luns = le16_to_cpu(nv->max_luns_per_target);
31004 +       if (ha->max_probe_luns == 0)
31005 +               ha->max_probe_luns = MIN_LUNS;
31006 +
31007 +#if defined(IOCB_THROLLE_USAGE)
31008 +       /* High-water mark of IOCBs */
31009 +       ha->iocb_hiwat = MAX_IOCBS_AVAILBALE;
31010 +#endif
31011 +
31012 +#if USE_BIOS_MAX_LUNS
31013 +       ha->max_luns = le16_to_cpu(nv->max_luns_per_target);
31014 +       if (ha->max_luns == 0)
31015 +               ha->max_luns = MAX_LUNS;
31016 +       else if (ha->max_luns > MAX_LUNS)
31017 +               ha->max_luns = MAX_LUNS;
31018 +#else
31019 +       ha->max_luns = MAX_LUNS;
31020 +#endif
31021 +
31022 +/* FIXME
31023 + *
31024 + * port_down_retry_count updated twice
31025 + *
31026 + */
31027 +       /*
31028 +        * Need enough time to try and get the port back.
31029 +        */
31030 +       if (qlport_down_retry)
31031 +               ha->port_down_retry_count = qlport_down_retry;
31032 +       /* Set login_retry_count */
31033 +       ha->login_retry_count  = nv->retry_count;
31034 +       if (ha->port_down_retry_count == nv->port_down_retry_count &&
31035 +           ha->port_down_retry_count > 3)
31036 +               ha->login_retry_count = ha->port_down_retry_count;
31037 +       else if (ha->port_down_retry_count > ha->login_retry_count)
31038 +               ha->login_retry_count = ha->port_down_retry_count;
31039 +
31040 +       ha->binding_type = Bind;
31041 +       if ((ha->binding_type != BIND_BY_PORT_NAME) &&
31042 +           (ha->binding_type != BIND_BY_PORT_ID) &&
31043 +           (ha->binding_type != BIND_BY_NODE_NAME)) {
31044 +
31045 +               printk(KERN_WARNING
31046 +                   "scsi(%ld): Invalid binding type specified (%d), "
31047 +                   "defaulting to BIND_BY_PORT_NAME!!!\n",
31048 +                   ha->host_no, ha->binding_type);
31049 +
31050 +               ha->binding_type = BIND_BY_PORT_NAME;
31051 +       }
31052 +
31053 +       /*
31054 +        * Setup ring parameters in initialization control block
31055 +        */
31056 +       icb->request_q_outpointer = __constant_cpu_to_le16(0);
31057 +       icb->response_q_inpointer = __constant_cpu_to_le16(0);
31058 +       icb->request_q_length = __constant_cpu_to_le16(REQUEST_ENTRY_CNT);
31059 +       icb->response_q_length = __constant_cpu_to_le16(RESPONSE_ENTRY_CNT);
31060 +       icb->request_q_address[0] = cpu_to_le32(LSD(ha->request_dma));
31061 +       icb->request_q_address[1] = cpu_to_le32(MSD(ha->request_dma));
31062 +       icb->response_q_address[0] = cpu_to_le32(LSD(ha->response_dma));
31063 +       icb->response_q_address[1] = cpu_to_le32(MSD(ha->response_dma));
31064 +
31065 +       icb->lun_enables = __constant_cpu_to_le16(0);
31066 +       icb->command_resource_count = 0;
31067 +       icb->immediate_notify_resource_count = 0;
31068 +       icb->timeout = __constant_cpu_to_le16(0);
31069 +
31070 +       ha->flags.nvram_config_done = 1;
31071 +
31072 +       if (status) {
31073 +               DEBUG2_3(printk(KERN_WARNING
31074 +                   "scsi(%ld): NVRAM configuration failed!\n", ha->host_no));
31075 +       }
31076 +
31077 +       LEAVE(__func__);
31078 +
31079 +       return (status);
31080 +}
31081 +
31082 +/*
31083 +* qla2x00_init_fc_db
31084 +*      Initializes Fibre Channel Device Database.
31085 +*
31086 +* Input:
31087 +*      ha = adapter block pointer.
31088 +*
31089 +* Output:
31090 +*      ha->fc_db = initialized
31091 +*/
31092 +static void
31093 +qla2x00_init_fc_db(scsi_qla_host_t *ha)
31094 +{
31095 +       uint16_t cnt;
31096 +
31097 +       ENTER(__func__);
31098 +
31099 +       /* Initialize fc database if it is not initialized. */
31100 +       if (!ha->fc_db[0].loop_id && !ha->fc_db[1].loop_id) {
31101 +               ha->flags.updated_fc_db = FALSE;
31102 +
31103 +               /* Initialize target database. */
31104 +               for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
31105 +                       ha->fc_db[cnt].name[0] = 0L;
31106 +                       ha->fc_db[cnt].name[1] = 0L;
31107 +                       ha->fc_db[cnt].loop_id = PORT_UNUSED;
31108 +                       ha->fc_db[cnt].port_login_retry_count =
31109 +                           ha->port_down_retry_count * PORT_RETRY_TIME;
31110 +                       ha->fc_db[cnt].flag = 0;   /* v2.19.5b3 */
31111 +               }
31112 +       }
31113 +
31114 +       LEAVE(__func__);
31115 +}
31116 +
31117 +
31118 +/*
31119 +* qla2x00_init_tgt_map
31120 +*      Initializes target map.
31121 +*
31122 +* Input:
31123 +*      ha = adapter block pointer.
31124 +*
31125 +* Output:
31126 +*      TGT_Q initialized
31127 +*/
31128 +static void
31129 +qla2x00_init_tgt_map(scsi_qla_host_t *ha)
31130 +{
31131 +       uint32_t t;
31132 +
31133 +       ENTER(__func__);
31134 +
31135 +       for (t = 0; t < MAX_TARGETS; t++)
31136 +               TGT_Q(ha, t) = (os_tgt_t *)NULL;
31137 +
31138 +       LEAVE(__func__);
31139 +}
31140 +
31141 +/*
31142 + * qla2x00_configure_loop
31143 + *      Updates Fibre Channel Device Database with what is actually on loop.
31144 + *
31145 + * Input:
31146 + *      ha                = adapter block pointer.
31147 + *
31148 + * Output:
31149 + *      ha->fc_db = updated
31150 + *
31151 + * Returns:
31152 + *      0 = success.
31153 + *      1 = error.
31154 + *      2 = database was full and device was not configured.
31155 + */
31156 +static uint8_t
31157 +qla2x00_configure_loop(scsi_qla_host_t *ha) 
31158 +{
31159 +       uint8_t  rval = 0;
31160 +       uint8_t  rval1 = 0;
31161 +       uint8_t  enable_slot_reuse = FALSE;
31162 +       uint16_t  cnt;
31163 +       static unsigned long  flags, save_flags;
31164 +#if defined(FC_IP_SUPPORT)
31165 +       struct ip_device        *ipdev;
31166 +#endif
31167 +
31168 +       ENTER(__func__);
31169 +
31170 +       DEBUG(printk("scsi(%ld): Begin configure loop.\n", ha->host_no));
31171 +
31172 +       /* Get Initiator ID */
31173 +       if (qla2x00_configure_hba(ha)) {
31174 +               DEBUG(printk("scsi(%ld): Unable to configure HBA.\n",
31175 +                   ha->host_no));
31176 +               return(1);
31177 +       }
31178 +
31179 +#if defined(FC_IP_SUPPORT)
31180 +       /* Disable all IP devices in linked list */
31181 +       for (ipdev = ha->ipdev_db_top; ipdev; ipdev = ipdev->next)
31182 +               ipdev->flags &= ~IP_DEV_FLAG_PRESENT;
31183 +#endif /* FC_IP_SUPPORT */
31184 +
31185 +       save_flags = flags = ha->dpc_flags;
31186 +       DEBUG(printk("scsi(%ld): Configure loop -- dpc flags =0x%lx\n",
31187 +           ha->host_no, flags));
31188 +
31189 +       /* dg 02/26/02 ha->dpc_flags &= ~(LOCAL_LOOP_UPDATE | RSCN_UPDATE); */
31190 +
31191 +       /*
31192 +        * If we have both an RSCN and PORT UPDATE pending then handle them
31193 +        * both at the same time.
31194 +        */
31195 +       clear_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
31196 +       clear_bit(RSCN_UPDATE, &ha->dpc_flags);
31197 +       ha->mem_err = 0 ;
31198 +
31199 +       /* Determine what we need to do */
31200 +       if (ha->current_topology == ISP_CFG_FL &&
31201 +           (test_bit(LOCAL_LOOP_UPDATE, &flags))) {
31202 +
31203 +               ha->flags.rscn_queue_overflow = TRUE;
31204 +               set_bit(RSCN_UPDATE, &flags);
31205 +
31206 +       } else if (ha->current_topology == ISP_CFG_F &&
31207 +           (test_bit(LOCAL_LOOP_UPDATE, &flags))) {
31208 +
31209 +               ha->flags.rscn_queue_overflow = TRUE;
31210 +               set_bit(RSCN_UPDATE, &flags);
31211 +               clear_bit(LOCAL_LOOP_UPDATE, &flags);
31212 +
31213 +       } else if (!ha->flags.online ||
31214 +           (test_bit(ABORT_ISP_ACTIVE, &flags))) {
31215 +
31216 +               ha->flags.rscn_queue_overflow = TRUE;
31217 +               set_bit(RSCN_UPDATE, &flags);
31218 +               set_bit(LOCAL_LOOP_UPDATE, &flags);
31219 +       }
31220 +
31221 +       do {
31222 +               if (test_bit(LOCAL_LOOP_UPDATE, &flags)) {
31223 +                       rval = rval |
31224 +                           qla2x00_configure_local_loop(ha, enable_slot_reuse);
31225 +               }
31226 +
31227 +               if (test_bit(RSCN_UPDATE, &flags)) {
31228 +                       rval1 = qla2x00_configure_fabric(ha, enable_slot_reuse);
31229 +                       if ((rval1 & BIT_0) && ha->sns_retry_cnt < 8) {
31230 +                               ha->sns_retry_cnt++;
31231 +                               set_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags);
31232 +                       }
31233 +               }
31234 +
31235 +               /* If devices not configured first time try reusing slots.*/
31236 +               if (enable_slot_reuse == FALSE && (rval & BIT_1))
31237 +                       enable_slot_reuse = TRUE;
31238 +               else
31239 +                       enable_slot_reuse = FALSE;
31240 +
31241 +               /* Isolate error status. */
31242 +               if (rval & BIT_0) {
31243 +                       rval = 1;
31244 +               } else {
31245 +                       rval = 0;
31246 +               }
31247 +
31248 +       } while (enable_slot_reuse == TRUE && rval == 0);
31249 +
31250 +       if (!atomic_read(&ha->loop_down_timer) &&
31251 +           !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))) {
31252 +
31253 +               /* Mark devices that are not present as DEV_ABSENCE */
31254 +               for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
31255 +                       if (ha->fc_db[cnt].loop_id & PORT_LOST_ID) {
31256 +                               ha->fc_db[cnt].flag |= DEV_ABSENCE;
31257 +                       } else {
31258 +                               /* device returned */
31259 +                               if (ha->fc_db[cnt].loop_id <
31260 +                                   LAST_SNS_LOOP_ID &&
31261 +                                   ha->fc_db[cnt].flag & DEV_ABSENCE) {
31262 +                                       ha->fc_db[cnt].flag &= ~DEV_ABSENCE;
31263 +                                       ha->fc_db[cnt].flag |= DEV_RETURN;
31264 +                                       ha->fc_db[cnt].port_login_retry_count =
31265 +                                           ha->port_down_retry_count *
31266 +                                            PORT_RETRY_TIME;
31267 +                               }
31268 +                       }
31269 +               }
31270 +
31271 +               rval1 = qla2x00_build_fcport_list(ha);
31272 +               if (((rval1 & BIT_0) || ha->mem_err != 0) &&
31273 +                   ha->sns_retry_cnt < 8) {
31274 +
31275 +                       ha->sns_retry_cnt++;
31276 +                       set_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags);
31277 +               }
31278 +
31279 +               if (!ha->flags.failover_enabled)
31280 +                       qla2x00_config_os(ha);
31281 +
31282 +               /* If we found all devices then go ready */
31283 +               if (!(test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags))) {
31284 +                       ha->loop_state = LOOP_READY;
31285 +
31286 +                       if (ha->flags.failover_enabled) {
31287 +                               DEBUG(printk("scsi(%ld): schedule FAILBACK "
31288 +                                   "EVENT\n", ha->host_no));
31289 +                               if (!(test_and_set_bit(FAILOVER_EVENT_NEEDED,
31290 +                                   &ha->dpc_flags))) {
31291 +                                       ha->failback_delay = failbackTime;
31292 +                               }
31293 +                               set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
31294 +                               ha->failover_type = MP_NOTIFY_LOOP_UP;
31295 +                       }
31296 +
31297 +                       DEBUG(printk("scsi(%ld): LOOP READY\n", ha->host_no));
31298 +               } else {
31299 +                       if (test_bit(LOCAL_LOOP_UPDATE, &save_flags))
31300 +                               set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
31301 +                       if (test_bit(RSCN_UPDATE, &save_flags))
31302 +                               set_bit(RSCN_UPDATE, &ha->dpc_flags);
31303 +               }
31304 +       } else {
31305 +               DEBUG(printk("scsi(%ld): Loop down counter running= %d or "
31306 +                   "Resync needed- dpc flags= %ld\n",
31307 +                   ha->host_no,
31308 +                   atomic_read(&ha->loop_down_timer), ha->dpc_flags));
31309 +               /* ???? dg 02/26/02  rval = 1; */
31310 +       }
31311 +
31312 +       if (rval) {
31313 +               DEBUG2_3(printk("%s(%ld): *** FAILED ***\n",
31314 +                   __func__, ha->host_no));
31315 +       } else {
31316 +               DEBUG3(printk("%s: exiting normally\n", __func__));
31317 +       }
31318 +
31319 +       return(rval);
31320 +}
31321 +
31322 +/*
31323 + * qla2x00_configure_local_loop
31324 + *     Updates Fibre Channel Device Database with local loop devices.
31325 + *
31326 + * Input:
31327 + *     ha = adapter block pointer.
31328 + *     enable_slot_reuse = allows the use of PORT_AVAILABLE slots.
31329 + *
31330 + * Returns:
31331 + *     0 = success.
31332 + *     BIT_0 = error.
31333 + *     BIT_1 = database was full and a device was not configured.
31334 + */
31335 +static uint8_t
31336 +qla2x00_configure_local_loop(scsi_qla_host_t *ha, uint8_t enable_slot_reuse) 
31337 +{
31338 +       uint8_t  status = 0;
31339 +       uint8_t  rval;
31340 +       uint8_t  port_name[8];
31341 +       uint8_t  update_status = 0;
31342 +       uint16_t index, size;
31343 +       dma_addr_t phys_address = 0;
31344 +       fcdev_t device;
31345 +       port_list_entry_t *gn_list, *port_entry;
31346 +       uint16_t localdevices = 0;
31347 +#if defined(FC_IP_SUPPORT)
31348 +       uint16_t list_entry_loop_id;
31349 +#endif
31350 +
31351 +       ENTER(__func__);
31352 +
31353 +       /*
31354 +        * No point in continuing if the loop is in a volatile state -- 
31355 +        * reschedule LOCAL_LOOP_UPDATE for later processing
31356 +        */
31357 +       if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) {
31358 +               set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
31359 +               return (0);
31360 +       }
31361 +
31362 +       gn_list = pci_alloc_consistent(ha->pdev,
31363 +           sizeof(GN_LIST_LENGTH), &phys_address);
31364 +       if (gn_list == NULL) {
31365 +               DEBUG2(printk("scsi(%ld): Failed to allocate memory, No local "
31366 +                   "loop\n",
31367 +                   ha->host_no));
31368 +
31369 +               printk(KERN_WARNING
31370 +                   "scsi(%ld): Memory Allocation failed - port_list",
31371 +                   ha->host_no);
31372 +
31373 +               ha->mem_err++;
31374 +               return (BIT_0);
31375 +       }
31376 +       memset(gn_list, 0, sizeof(GN_LIST_LENGTH));
31377 +
31378 +       /* Mark all local devices PORT_LOST_ID first */
31379 +       for (index = 0; index < MAX_FIBRE_DEVICES; index++) {
31380 +               if (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID &&
31381 +                   !(ha->fc_db[index].flag & DEV_PUBLIC)) {
31382 +
31383 +                       DEBUG(printk("scsi(%ld): Marking port lost @ slot "
31384 +                           "%d %02x%02x%02x\n",
31385 +                           ha->host_no,
31386 +                           index,
31387 +                           ha->fc_db[index].d_id.b.domain,
31388 +                           ha->fc_db[index].d_id.b.area,
31389 +                           ha->fc_db[index].d_id.b.al_pa));
31390 +
31391 +                       ha->fc_db[index].loop_id |= PORT_LOST_ID;
31392 +               }
31393 +       }
31394 +
31395 +       DEBUG3(printk("scsi(%ld): Getting FCAL position map\n", ha->host_no));
31396 +       DEBUG3(qla2x00_get_fcal_position_map(ha, NULL));
31397 +
31398 +       /* Get port name list
31399 +        *
31400 +        * Via qla2x00_get_port_list:
31401 +        *
31402 +        *      Bit 0 - return node names,
31403 +        *      Bit 1 - loop IDs 0-255
31404 +        */
31405 +#if defined(FC_IP_SUPPORT)
31406 +       if (ha->flags.enable_ip == FALSE)
31407 +               rval = qla2x00_get_port_list(ha,
31408 +                   gn_list, phys_address, BIT_0, &size);
31409 +       else
31410 +               rval = qla2x00_get_port_list(ha,
31411 +                   gn_list, phys_address, BIT_0|BIT_1, &size);
31412 +#else
31413 +       rval = qla2x00_get_port_list(ha, gn_list, phys_address, BIT_0, &size);
31414 +#endif
31415 +       if (rval) {
31416 +               status = BIT_0;
31417 +               goto cleanup_allocation;
31418 +       }
31419 +
31420 +       DEBUG3(printk("scsi(%ld): Port list size (%d)\n", ha->host_no, size));
31421 +       DEBUG3(qla2x00_dump_buffer((uint8_t *)gn_list, size));
31422 +
31423 +       /* Any valid entries returned? */
31424 +       if (size / sizeof(port_list_entry_t) == 0)
31425 +               goto cleanup_allocation;
31426 +
31427 +       port_entry = gn_list;
31428 +       for ( ; size >= sizeof(port_list_entry_t);
31429 +           size -= sizeof(port_list_entry_t), port_entry++) {
31430 +
31431 +               device.loop_id = le16_to_cpu(port_entry->loop_id);
31432 +
31433 +#if defined(FC_IP_SUPPORT)
31434 +               list_entry_loop_id = device.loop_id;
31435 +               device.loop_id &= LOOP_ID_MASK; 
31436 +#endif
31437 +
31438 +               /* Skip any non-local loop-ids - this includes 'known ports' */
31439 +               if (device.loop_id > LAST_LOCAL_LOOP_ID) 
31440 +                       continue;
31441 +#if NOT_NEEDED
31442 +               /* Skip the known ports. */
31443 +               if ((device.loop_id == SNS_FL_PORT) ||
31444 +                       (device.loop_id == FABRIC_CONTROLLER) ||
31445 +                       (device.loop_id == SIMPLE_NAME_SERVER))
31446 +                       continue;
31447 +#endif
31448 +
31449 +               device.flag = 0;
31450 +
31451 +               /* Prep node name -- big-endian format */
31452 +               *((u64 *)device.name) = __swab64p((u64 *)port_entry->name);
31453 +
31454 +               /* Retrieve port name */
31455 +               rval = qla2x00_get_port_name(ha, device.loop_id, port_name, 0);
31456 +               if (rval || qla2x00_is_wwn_zero(port_name)) {
31457 +                       DEBUG2(printk("scsi(%ld): Loop -- error retrieving "
31458 +                           "port_name.\n",
31459 +                           ha->host_no));
31460 +
31461 +                       status = BIT_0;
31462 +                       break;
31463 +               }
31464 +               memcpy(device.wwn, port_name, WWN_SIZE);
31465 +
31466 +               /* Derive portid from alpa table */
31467 +               device.d_id.b24 = 0;
31468 +               device.d_id.b.al_pa = alpa_table[device.loop_id];
31469 +
31470 +               DEBUG2_3(printk("scsi(%ld): Loop scan found device - "
31471 +                   "nodename %02x%02x%02x%02x%02x%02x%02x%02x "
31472 +                   "portname %02x%02x%02x%02x%02x%02x%02x%02x "
31473 +                   "portid %02x%02x%02x.\n", 
31474 +                   ha->host_no,
31475 +                   device.name[0], device.name[1],
31476 +                   device.name[2], device.name[3],
31477 +                   device.name[4], device.name[5],
31478 +                   device.name[6], device.name[7],
31479 +                   device.wwn[0], device.wwn[1], device.wwn[2], device.wwn[3],
31480 +                   device.wwn[4], device.wwn[5], device.wwn[6], device.wwn[7],
31481 +                   device.d_id.b.domain,
31482 +                   device.d_id.b.area,
31483 +                   device.d_id.b.al_pa));
31484 +
31485 +#if !defined(FC_IP_SUPPORT)
31486 +               /* SCSI type device */
31487 +               update_status = qla2x00_update_fc_database(ha,
31488 +                   &device, enable_slot_reuse);
31489 +               if (update_status)
31490 +                       status |= update_status;
31491 +               else
31492 +                       localdevices++;
31493 +#else
31494 +               if (!(list_entry_loop_id & PLE_NOT_SCSI_DEVICE)) {
31495 +                       /* SCSI type device */
31496 +                       update_status = qla2x00_update_fc_database(ha,
31497 +                           &device, enable_slot_reuse);
31498 +
31499 +                       if (update_status)
31500 +                               status |= update_status;
31501 +                       else
31502 +                               localdevices++;
31503 +               } else if (ha->flags.enable_ip == TRUE) {
31504 +                       /* SCSI login failed, assume it is IP device */
31505 +                       DEBUG12(printk("scsi(%ld): Loop scan found IP device "
31506 +                           "WWNN:%02x%02x%02x%02x%02x%02x%02x%02x "
31507 +                           "DID:%02x%02x%02x.\n",
31508 +                           ha->host_no,
31509 +                           device.name[0], device.name[1],
31510 +                           device.name[2], device.name[3],
31511 +                           device.name[4], device.name[5],
31512 +                           device.name[6], device.name[7],
31513 +                           device.d_id.b.domain,
31514 +                           device.d_id.b.area,
31515 +                           device.d_id.b.al_pa));
31516 +
31517 +                       update_status =
31518 +                           qla2x00_update_ip_device_data(ha, &device);
31519 +                       if (update_status == QL_STATUS_SUCCESS)
31520 +                               localdevices++;
31521 +                       else if (update_status == QL_STATUS_RESOURCE_ERROR)
31522 +                               status |= BIT_1;
31523 +                       else
31524 +                               status |= BIT_0;
31525 +               }
31526 +#endif
31527 +       } /* for each port entry */
31528 +
31529 +cleanup_allocation:
31530 +       pci_free_consistent(ha->pdev,
31531 +           sizeof(GN_LIST_LENGTH), gn_list, phys_address);
31532 +
31533 +       if (status & BIT_0) {
31534 +               DEBUG2(printk("scsi(%ld): Configure local loop error exit: "
31535 +                   "rval=%x\n", ha->host_no, rval));
31536 +       }
31537 +
31538 +       if (localdevices > 0) {
31539 +               ha->device_flags |= DFLG_LOCAL_DEVICES;
31540 +               ha->device_flags &= ~DFLG_RETRY_LOCAL_DEVICES;
31541 +       }
31542 +
31543 +       LEAVE(__func__);
31544 +
31545 +       return (status);
31546 +}
31547 +
31548 +/*
31549 + * qla2x00_configure_fabric
31550 + *      Setup SNS devices with loop ID's.
31551 + *
31552 + * Input:
31553 + *      ha = adapter block pointer.
31554 + *
31555 + * Returns:
31556 + *      0 = success.
31557 + *      BIT_0 = error
31558 + *      BIT_1 = database was full and device was not configured.
31559 + */
31560 +#define MAX_PUBLIC_LOOP_IDS LAST_SNS_LOOP_ID + 1
31561 +
31562 +static uint8_t
31563 +qla2x00_configure_fabric(scsi_qla_host_t *ha, uint8_t enable_slot_reuse) 
31564 +{
31565 +       uint8_t     rval = 0;
31566 +       uint8_t     rval1;
31567 +       uint8_t     local_flags = 0;
31568 +       uint8_t     tmp_name[8];
31569 +       fcdev_t     dev;
31570 +       uint16_t    i, index, found_cnt;
31571 +       uint16_t    new_dev_cnt;
31572 +       uint16_t    tmp_loop_id;
31573 +       uint16_t    tmp_topo;
31574 +       struct new_dev *new_dev_list;
31575 +       struct list_head *fcil, *fcitemp;
31576 +       fc_initiator_t  *fcinitiator;
31577 +
31578 +       ENTER(__func__);
31579 +
31580 +       DEBUG2(printk("scsi(%ld): Begin configure fabric -- hba=%p\n",
31581 +           ha->host_no, ha));
31582 +
31583 +       /* If FL port exists, then SNS is present */
31584 +       rval1 = qla2x00_get_port_name(ha, SNS_FL_PORT, tmp_name, 0);
31585 +       if (rval1 || qla2x00_is_wwn_zero(tmp_name)) {
31586 +               DEBUG2(printk("scsi(%ld): MBC_GET_PORT_NAME Failed, No FL "
31587 +                   "Port\n", ha->host_no));
31588 +
31589 +               ha->device_flags &= ~SWITCH_FOUND;
31590 +               return (0);
31591 +       }
31592 +
31593 +       new_dev_list = kmalloc(sizeof(struct new_dev) * MAX_FIBRE_DEVICES,
31594 +           GFP_ATOMIC);
31595 +       if (new_dev_list == NULL) {
31596 +               DEBUG2(printk("scsi(%ld): Configure Fabric allocation failed, "
31597 +                   "device list\n", ha->host_no));
31598 +               ha->mem_err++;
31599 +               return (BIT_0);
31600 +       }
31601 +
31602 +       /* Get adapter port ID. */
31603 +       rval = qla2x00_get_adapter_id(ha, &tmp_loop_id,
31604 +           &ha->d_id.b.al_pa, &ha->d_id.b.area, &ha->d_id.b.domain, &tmp_topo);
31605 +
31606 +       /* Mark devices that need re-synchronization. */
31607 +       qla2x00_device_resync(ha);
31608 +       found_cnt = 0;
31609 +       do {
31610 +               if (test_and_clear_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags)) {
31611 +                       if (qla2x00_rft_id(ha)) {
31612 +                               /* EMPTY */
31613 +                               DEBUG2(printk("scsi(%ld): Register FC-4 "
31614 +                                   "TYPE failed.\n", ha->host_no));
31615 +                       }
31616 +                       if (qla2x00_rff_id(ha)) {
31617 +                               /* EMPTY */
31618 +                               DEBUG2(printk("scsi(%ld): Register FC-4 "
31619 +                                   "Features failed.\n", ha->host_no));
31620 +                       }
31621 +                       if (qla2x00_rnn_id(ha)) {
31622 +                               /* EMPTY */
31623 +                               DEBUG2(printk("scsi(%ld): Register Node Name "
31624 +                                   "failed.\n", ha->host_no));
31625 +                       }
31626 +                       if (qla2x00_rsnn_nn(ha)) {
31627 +                               /* EMPTY */
31628 +                               DEBUG2(printk("scsi(%ld): Register Symbolic "
31629 +                                   "Node Name failed.\n", ha->host_no));
31630 +                       }
31631 +               }
31632 +
31633 +               rval = qla2x00_find_all_fabric_devs(ha,
31634 +                   new_dev_list, &new_dev_cnt, &local_flags);
31635 +               if (rval != 0)
31636 +                       break;
31637 +
31638 +               /*
31639 +                * Logout all previous fabric devices marked lost, except
31640 +                * tape devices.
31641 +                */
31642 +               for (index = 0; index < MAX_FIBRE_DEVICES &&
31643 +                   !atomic_read(&ha->loop_down_timer) &&
31644 +                   !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); index++) {
31645 +
31646 +                       if (ha->fc_db[index].loop_id & PORT_LOST_ID &&
31647 +                           (ha->fc_db[index].flag & DEV_PUBLIC) &&
31648 +                           !(ha->fc_db[index].flag & DEV_TAPE_DEVICE)) {
31649 +
31650 +                               qla2x00_fabric_logout(ha,
31651 +                                   ha->fc_db[index].loop_id & 0xff);
31652 +                               local_flags |= LOGOUT_PERFORMED;
31653 +                       }
31654 +               }
31655 +
31656 +               /* Logout and remove any lost initiator devices */
31657 +               list_for_each_safe(fcil, fcitemp, &ha->fcinitiators) {
31658 +                       fcinitiator = list_entry(fcil, fc_initiator_t, list);
31659 +
31660 +                       if ((fcinitiator->loop_id & PORT_LOST_ID) == 0)
31661 +                               continue;
31662 +
31663 +                       qla2x00_fabric_logout(ha, fcinitiator->loop_id & 0xff);
31664 +                       ha->fabricid[fcinitiator->loop_id &0xFF].in_use = FALSE;
31665 +
31666 +                       list_del(&fcinitiator->list);
31667 +                       kfree(fcinitiator);
31668 +               }
31669 +
31670 +               /*
31671 +                * Scan through our database and login entries already in our
31672 +                * database.
31673 +                */
31674 +               for (index = 0; index < MAX_FIBRE_DEVICES &&
31675 +                   !atomic_read(&ha->loop_down_timer) &&
31676 +                   !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); index++) {
31677 +
31678 +                       if (!(ha->fc_db[index].loop_id & PORT_LOGIN_NEEDED))
31679 +                               continue;
31680 +
31681 +                       ha->fc_db[index].loop_id &= ~PORT_LOGIN_NEEDED;
31682 +                       if (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID) {
31683 +                               /* loop_id reusable */
31684 +                               dev.loop_id = ha->fc_db[index].loop_id & 0xff;
31685 +                       } else {
31686 +                               for (i = ha->min_external_loopid;
31687 +                                   i < MAX_PUBLIC_LOOP_IDS; i++) {
31688 +
31689 +                                       if (!ha->fabricid[i].in_use) {
31690 +                                               ha->fabricid[i].in_use = TRUE;
31691 +                                               dev.loop_id = i;
31692 +                                               break;
31693 +                                       }
31694 +                               }
31695 +
31696 +                               if (i == MAX_PUBLIC_LOOP_IDS)
31697 +                                       break;
31698 +                       }
31699 +
31700 +                       dev.d_id.b24 = ha->fc_db[index].d_id.b24;
31701 +
31702 +                       /* login and update database */
31703 +                       if (qla2x00_fabric_login(ha, &dev) == 0) {
31704 +                               ha->fc_db[index].loop_id = dev.loop_id;
31705 +                               found_cnt++;
31706 +                       }
31707 +               }
31708 +
31709 +               /*
31710 +                * Scan through new device list and login and add to our
31711 +                * database.
31712 +                */
31713 +               for (index = 0; index < new_dev_cnt &&
31714 +                   !atomic_read(&ha->loop_down_timer) &&
31715 +                   !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); index++) {
31716 +
31717 +                       memcpy(&dev,
31718 +                           &new_dev_list[index], sizeof(struct new_dev));
31719 +
31720 +                       dev.flag = DEV_PUBLIC;
31721 +
31722 +                       for (i = ha->min_external_loopid;
31723 +                           i < MAX_PUBLIC_LOOP_IDS; i++) {
31724 +
31725 +                               if (!ha->fabricid[i].in_use) {
31726 +                                       ha->fabricid[i].in_use = TRUE;
31727 +                                       dev.loop_id = i;
31728 +                                       break;
31729 +                               }
31730 +                       }
31731 +
31732 +                       if (i == MAX_PUBLIC_LOOP_IDS)
31733 +                               break;
31734 +
31735 +                       if (qla2x00_fabric_login(ha, &dev) == 0) {
31736 +                               found_cnt++;
31737 +                               rval = qla2x00_update_fc_database(ha,
31738 +                                   &dev, enable_slot_reuse);
31739 +
31740 +                               if (rval) {
31741 +                                       qla2x00_fabric_logout(ha, dev.loop_id);
31742 +                                       ha->fabricid[i].in_use = FALSE;
31743 +                                       break;
31744 +                               }
31745 +                       }
31746 +               }
31747 +       } while(0);
31748 +
31749 +       kfree(new_dev_list);
31750 +
31751 +       if (rval) {
31752 +               DEBUG2(printk("scsi(%ld): Configure fabric error exit: "
31753 +                   "rval=%d\n", ha->host_no, rval));
31754 +       } else {
31755 +               /* EMPTY */
31756 +               DEBUG2(if (found_cnt))
31757 +               DEBUG2(printk("scsi(%ld) Found (%d) ports\n",
31758 +                   ha->host_no, found_cnt));
31759 +       }
31760 +
31761 +       LEAVE(__func__);
31762 +
31763 +       return(rval);
31764 +}
31765 +
31766 +
31767 +/*
31768 + * qla2x00_find_all_fabric_devs
31769 + *     Go through GAN list to find all fabric devices.  Will perform
31770 + *     necessary logout of previously existed devices that have changed
31771 + *     and save new devices in a new device list.
31772 + *
31773 + * Input:
31774 + *     ha = adapter block pointer.
31775 + *     dev = database device entry pointer.
31776 + *
31777 + * Returns:
31778 + *     0 = success.
31779 + *     BIT_0 = error.
31780 + *
31781 + * Context:
31782 + *     Kernel context.
31783 + */
31784 +static uint8_t
31785 +qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha, 
31786 +    struct new_dev *new_dev_list, uint16_t *new_dev_cnt, uint8_t *flags) 
31787 +{
31788 +       fcdev_t         dev;
31789 +       uint8_t         rval = 0;
31790 +       int             status = 0;
31791 +       uint16_t        i;
31792 +       uint16_t        index;
31793 +       uint16_t        new_cnt;
31794 +       uint16_t        public_count;
31795 +       uint16_t        initiator;
31796 +       struct list_head *fcil;
31797 +       fc_initiator_t  *fcinitiator;
31798 +
31799 +       sw_info_t       *swl;
31800 +       sw_info_t       swl_entry;
31801 +       int             swl_idx;
31802 +       int             first_dev, last_dev;
31803 +       port_id_t       wrap;
31804 +       int             ip_dev;
31805 +
31806 +       ENTER(__func__);
31807 +
31808 +       /* Try GID_PT to get device list, else GAN. */
31809 +       swl = kmalloc(sizeof(sw_info_t) * MAX_FIBRE_DEVICES, GFP_ATOMIC);
31810 +       if (swl == NULL) {
31811 +               /*EMPTY*/
31812 +               DEBUG2(printk("scsi(%ld): GID_PT allocations failed, fallback "
31813 +                   "on GAN\n", ha->host_no));
31814 +       } else if (qla2x00_gid_pt(ha, swl) != QL_STATUS_SUCCESS) {
31815 +               kfree(swl);
31816 +               swl = NULL;
31817 +       } else if (qla2x00_gpn_id(ha, swl) != QL_STATUS_SUCCESS) {
31818 +               kfree(swl);
31819 +               swl = NULL;
31820 +       } else if (qla2x00_gnn_id(ha, swl) != QL_STATUS_SUCCESS) {
31821 +               kfree(swl);
31822 +               swl = NULL;
31823 +       } else if (qla2x00_gft_id(ha, swl) != QL_STATUS_SUCCESS) {
31824 +               kfree(swl);
31825 +               swl = NULL;
31826 +       }
31827 +       swl_idx = 0;
31828 +
31829 +       /*
31830 +        * Loop getting devices from switch. Logout the devices that were in
31831 +        * our database but changed port ID.
31832 +        */
31833 +#if defined(ISP2100)
31834 +       ha->max_public_loop_ids = LAST_SNS_LOOP_ID - SNS_FIRST_LOOP_ID + 1;
31835 +       public_count = ha->max_public_loop_ids;
31836 +#else
31837 +       ha->max_public_loop_ids = MAX_PUBLIC_LOOP_IDS;
31838 +       public_count = ha->max_public_loop_ids - ha->min_external_loopid + 2;
31839 +#endif
31840 +
31841 +       /* Set start port ID scan at adapter ID. */
31842 +       swl_entry.d_id.b24 = ha->d_id.b24;
31843 +       first_dev = 1;
31844 +       last_dev = 0;
31845 +
31846 +       new_cnt = 0;    /* new device count */
31847 +
31848 +       for (i = 0;
31849 +           i < public_count && !atomic_read(&ha->loop_down_timer) &&
31850 +           !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); i++) {
31851 +
31852 +               if (swl != NULL) {
31853 +                       if (last_dev) {
31854 +                               wrap.b24 = dev.d_id.b24;
31855 +                       } else {
31856 +                               dev.flag = DEV_PUBLIC;
31857 +                               dev.d_id.b24 = swl[swl_idx].d_id.b24;
31858 +                               memcpy(dev.name,
31859 +                                   swl[swl_idx].node_name, WWN_SIZE);
31860 +                               memcpy(dev.wwn,
31861 +                                   swl[swl_idx].port_name, WWN_SIZE);
31862 +
31863 +                               /* IP capable device */
31864 +                               ip_dev = 0;
31865 +                               if (swl[swl_idx].type & SW_TYPE_IP)
31866 +                                       ip_dev = 1;
31867 +
31868 +                               if (swl[swl_idx].d_id.b.rsvd_1 != 0) {
31869 +                                       last_dev = 1;
31870 +                               }
31871 +                               swl_idx++;
31872 +                       }
31873 +               } else {
31874 +                       /* Send GAN to the switch */
31875 +                       rval = 0;
31876 +                       if (qla2x00_ga_nxt(ha, &swl_entry) !=
31877 +                           QL_STATUS_SUCCESS) {
31878 +                               rval |= BIT_0;
31879 +                               break;
31880 +                       }
31881 +
31882 +                       dev.flag = DEV_PUBLIC;
31883 +                       dev.d_id.b24 = swl_entry.d_id.b24;
31884 +                       memcpy(dev.name, swl_entry.node_name, WWN_SIZE);
31885 +                       memcpy(dev.wwn, swl_entry.port_name, WWN_SIZE);
31886 +
31887 +                       /* IP capable device */
31888 +                       ip_dev = 0;
31889 +                       if (swl_entry.type & SW_TYPE_IP)
31890 +                               ip_dev = 1;
31891 +               }
31892 +
31893 +               /* If wrap on switch device list, exit. */
31894 +               if (first_dev) {
31895 +                       wrap.b24 = dev.d_id.b24;
31896 +                       first_dev = 0;
31897 +               } else if (dev.d_id.b24 == wrap.b24) {
31898 +                       DEBUG2(printk("scsi(%ld): device wrap (%02x%02x%02x)\n",
31899 +                           ha->host_no,
31900 +                           dev.d_id.b.domain, 
31901 +                           dev.d_id.b.area, 
31902 +                           dev.d_id.b.al_pa));
31903 +                       break;
31904 +               }
31905 +
31906 +               DEBUG(printk("scsi(%ld): Fabric scan found device(%d) - port "
31907 +                   "Id=%02x%02x%02x\n",
31908 +                   ha->host_no, i,
31909 +                   dev.d_id.b.domain, dev.d_id.b.area, dev.d_id.b.al_pa));
31910 +
31911 +               /* Bypass if host adapter. */
31912 +               if (dev.d_id.b24 == ha->d_id.b24)
31913 +                       continue;
31914 +
31915 +               /* Bypass reserved domain fields. */
31916 +               if ((dev.d_id.b.domain & 0xf0) == 0xf0)
31917 +                       continue;
31918 +
31919 +               /* Bypass if same domain and area of adapter. */
31920 +               if ((dev.d_id.b24 & 0xffff00) == (ha->d_id.b24 & 0xffff00))
31921 +                       continue;
31922 +
31923 +#if defined(FC_IP_SUPPORT)
31924 +               /* Check for IP device */
31925 +               if (ip_dev) {
31926 +                       /* Found IP device */
31927 +                       DEBUG12(printk("scsi(%ld): IP fabric "
31928 +                           "WWN: %02x%02x%02x%02x%02x%02x%02x%02x "
31929 +                           "DID: %02x%02x%02x.\n",
31930 +                           ha->host_no,
31931 +                           dev.name[0], dev.name[1], dev.name[2], dev.name[3],
31932 +                           dev.name[4], dev.name[5], dev.name[6], dev.name[7],
31933 +                           dev.d_id.b.domain, 
31934 +                           dev.d_id.b.area, 
31935 +                           dev.d_id.b.al_pa));
31936 +
31937 +                       qla2x00_update_ip_device_data(ha, &dev);
31938 +                       continue;
31939 +               }
31940 +#endif
31941 +
31942 +               /* Bypass if initiator */
31943 +               initiator = FALSE;
31944 +               list_for_each(fcil, &ha->fcinitiators) {
31945 +                       fcinitiator = list_entry(fcil, fc_initiator_t, list);
31946 +
31947 +                       if (memcmp(dev.wwn, fcinitiator->port_name, 8) != 0)
31948 +                               continue;
31949 +
31950 +                       initiator = TRUE;
31951 +                       DEBUG(printk("scsi(%ld): found host "
31952 +                           "%02x%02x%02x%02x%02x%02x%02x%02x, "
31953 +                           "portid=%02x%02x%02x.\n",
31954 +                           ha->host_no,
31955 +                           dev.name[0], dev.name[1], dev.name[2], dev.name[3],
31956 +                           dev.name[4], dev.name[5], dev.name[6], dev.name[7],
31957 +                           dev.d_id.b.domain, 
31958 +                           dev.d_id.b.area, 
31959 +                           dev.d_id.b.al_pa));
31960 +
31961 +                       /*
31962 +                        * If the initiator was marked as lost, perform the
31963 +                        * required logout and relogin the initiator by
31964 +                        * assuming a new device.
31965 +                        */
31966 +                       if ((fcinitiator->loop_id & PORT_LOST_ID) == 0)
31967 +                               break;
31968 +
31969 +                       initiator = FALSE;
31970 +                       break;
31971 +               }
31972 +
31973 +               /* Bypass if initiator */
31974 +               if (initiator)
31975 +                       continue;
31976 +
31977 +               /* Locate matching device in database. */
31978 +               for (index = 0; index < MAX_FIBRE_DEVICES; index++) {
31979 +                       if (ha->fc_db[index].loop_id == PORT_UNUSED)
31980 +                               continue;
31981 +
31982 +                       status = 1;
31983 +                       switch (ha->binding_type) {
31984 +                       case BIND_BY_PORT_NAME:
31985 +                               status = memcmp(dev.wwn,
31986 +                                   ha->fc_db[index].wwn, WWN_SIZE);
31987 +                               break;
31988 +
31989 +                       case BIND_BY_PORT_ID:
31990 +                               status = (dev.d_id.b24 !=
31991 +                                   ha->fc_db[index].d_id.b24);
31992 +                               break;
31993 +
31994 +                       case BIND_BY_NODE_NAME:
31995 +                               status = memcmp(dev.name,
31996 +                                   ha->fc_db[index].name, WWN_SIZE);
31997 +                               break;
31998 +                       }
31999 +                       if (status)
32000 +                               continue;
32001 +
32002 +                       /*
32003 +                        * Update volatile unbound fields for PortID binding
32004 +                        * only
32005 +                        */
32006 +                       if (ha->binding_type == BIND_BY_PORT_ID) {
32007 +                               memcpy(ha->fc_db[index].name,
32008 +                                   dev.name, WWN_SIZE);
32009 +                               memcpy(ha->fc_db[index].wwn,
32010 +                                   dev.wwn, WWN_SIZE);
32011 +                       }
32012 +
32013 +                       /* Now we found a matching device name */
32014 +                       DEBUG(printk("scsi(%ld): Found fabric dev %d in "
32015 +                           "tgt %d db, flags= 0x%x, loop_id=0x%04x, port="
32016 +                           "%02x%02x%02x, "
32017 +                           "name=%02x%02x%02x%02x%02x%02x%02x%02x.\n",
32018 +                           ha->host_no, i, index,
32019 +                           ha->fc_db[index].flag,
32020 +                           ha->fc_db[index].loop_id,
32021 +                           ha->fc_db[index].d_id.b.domain,
32022 +                           ha->fc_db[index].d_id.b.area,
32023 +                           ha->fc_db[index].d_id.b.al_pa,
32024 +                           dev.wwn[0], dev.wwn[1], dev.wwn[2], dev.wwn[3],
32025 +                           dev.wwn[4], dev.wwn[5], dev.wwn[6], dev.wwn[7]));
32026 +
32027 +                       if (!(ha->fc_db[index].flag & DEV_PUBLIC)) {
32028 +                               /*
32029 +                                * This was in our database as a local device.
32030 +                                * Here we assume this device either has
32031 +                                * changed location so configure_local_loop has
32032 +                                * already done necessary clean up, or it's
32033 +                                * saved here due to persistent name binding.
32034 +                                * We'll just add it in as a fabric device.
32035 +                                */
32036 +                               /* Copy port id and name fields. */
32037 +                               ha->fc_db[index].flag |= DEV_PUBLIC;
32038 +                               ha->fc_db[index].d_id.b24 = dev.d_id.b24;
32039 +                               ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED;
32040 +
32041 +                               break;
32042 +                       }
32043 +
32044 +                       /* This was in our database as a fabric device. */
32045 +                       if ((ha->fc_db[index].d_id.b24 == dev.d_id.b24) &&
32046 +                           (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID))
32047 +                               /* Device didn't change */
32048 +                               break;
32049 +
32050 +                       if (ha->fc_db[index].loop_id == PORT_AVAILABLE) {
32051 +                               ha->fc_db[index].flag |= DEV_PUBLIC;
32052 +                               ha->fc_db[index].d_id.b24 = dev.d_id.b24;
32053 +                               ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED;
32054 +                               break;
32055 +                       }
32056 +
32057 +                       /*
32058 +                        * Port ID changed or device was marked to be updated;
32059 +                        * logout and mark it for relogin later.
32060 +                        */
32061 +                       qla2x00_fabric_logout(ha,
32062 +                           ha->fc_db[index].loop_id & 0xff);
32063 +                       ha->fc_db[index].flag |= DEV_PUBLIC;
32064 +                       ha->fc_db[index].d_id.b24 = dev.d_id.b24;
32065 +
32066 +                       ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED;
32067 +                       ha->fc_db[index].loop_id &= ~PORT_LOST_ID;
32068 +
32069 +                       *flags |= LOGOUT_PERFORMED;
32070 +
32071 +                       break;
32072 +               }
32073 +
32074 +               if (index == MAX_FIBRE_DEVICES) {
32075 +                       /*
32076 +                        * Did not find a match in our database.  This is a new
32077 +                        * device.
32078 +                        */
32079 +                       DEBUG3(printk("scsi(%ld): Found new device "
32080 +                           "%02x%02x%02x%02x%02x%02x%02x%02x.\n",
32081 +                           ha->host_no,
32082 +                           dev.wwn[0], dev.wwn[1], dev.wwn[2], dev.wwn[3],
32083 +                           dev.wwn[4], dev.wwn[5], dev.wwn[6], dev.wwn[7]));
32084 +
32085 +                       memcpy(&new_dev_list[new_cnt],
32086 +                           &dev, sizeof(struct new_dev));
32087 +                       new_cnt++;
32088 +               }
32089 +       }
32090 +
32091 +       if (swl)
32092 +               kfree(swl);
32093 +
32094 +       *new_dev_cnt = new_cnt;
32095 +
32096 +       if (new_cnt >  0)
32097 +               ha->device_flags |= DFLG_FABRIC_DEVICES;
32098 +
32099 +       LEAVE(__func__);
32100 +
32101 +       return (rval);
32102 +}
32103 +
32104 +/*
32105 + * qla2x00_device_resync
32106 + *     Marks devices in the database that needs resynchronization.
32107 + *
32108 + * Input:
32109 + *     ha = adapter block pointer.
32110 + *
32111 + * Context:
32112 + *     Kernel context.
32113 + */
32114 +static void
32115 +qla2x00_device_resync(scsi_qla_host_t *ha) 
32116 +{
32117 +       uint16_t index;
32118 +       uint32_t mask;
32119 +       rscn_t dev;
32120 +       struct list_head *fcil;
32121 +       fc_initiator_t  *fcinitiator;
32122 +
32123 +       ENTER(__func__);
32124 +
32125 +       while (ha->rscn_out_ptr != ha->rscn_in_ptr ||
32126 +           ha->flags.rscn_queue_overflow) {
32127 +
32128 +               memcpy(&dev, &ha->rscn_queue[ha->rscn_out_ptr], sizeof(rscn_t));
32129 +
32130 +               DEBUG(printk("scsi(%ld): device_resync: rscn_queue[%d], "
32131 +                   "portID=%02x%02x%02x.\n",
32132 +                   ha->host_no,
32133 +                   ha->rscn_out_ptr,
32134 +                   ha->rscn_queue[ha->rscn_out_ptr].d_id.b.domain,
32135 +                   ha->rscn_queue[ha->rscn_out_ptr].d_id.b.area,
32136 +                   ha->rscn_queue[ha->rscn_out_ptr].d_id.b.al_pa));
32137 +
32138 +               ha->rscn_out_ptr++;
32139 +               if (ha->rscn_out_ptr == MAX_RSCN_COUNT)
32140 +                       ha->rscn_out_ptr = 0;
32141 +
32142 +               /* Queue overflow, set switch default case. */
32143 +               if (ha->flags.rscn_queue_overflow) {
32144 +                       DEBUG(printk("scsi(%ld): device_resync: rscn "
32145 +                           "overflow.\n", ha->host_no));
32146 +
32147 +                       dev.format = 3;
32148 +                       ha->flags.rscn_queue_overflow = 0;
32149 +               }
32150 +
32151 +               switch (dev.format) {
32152 +               case 0:
32153 +                       mask = 0xffffff;
32154 +                       break;
32155 +               case 1:
32156 +                       mask = 0xffff00;
32157 +                       break;
32158 +               case 2:
32159 +                       mask = 0xff0000;
32160 +                       break;
32161 +               default:
32162 +                       mask = 0x0;
32163 +                       dev.d_id.b24 = 0;
32164 +                       ha->rscn_out_ptr = ha->rscn_in_ptr;
32165 +                       break;
32166 +               }
32167 +
32168 +               /* Mark target devices indicated by RSCN for later processing */
32169 +               for (index = 0; index < MAX_FIBRE_DEVICES; index++) {
32170 +                       if ((ha->fc_db[index].flag & DEV_PUBLIC) &&
32171 +                           (ha->fc_db[index].d_id.b24 & mask) ==
32172 +                            dev.d_id.b24) {
32173 +
32174 +                               /* fabric device */
32175 +                               if (ha->fc_db[index].loop_id != PORT_UNUSED) {
32176 +                                       ha->fc_db[index].loop_id |=
32177 +                                           PORT_LOST_ID;
32178 +
32179 +                                       DEBUG(printk("scsi(%ld): RSCN port @ "
32180 +                                           "slot %d port_id=%02x%02x%02x.\n",
32181 +                                           ha->host_no,
32182 +                                           index,
32183 +                                           ha->fc_db[index].d_id.b.domain,
32184 +                                           ha->fc_db[index].d_id.b.area,
32185 +                                           ha->fc_db[index].d_id.b.al_pa));
32186 +                               }
32187 +                       }
32188 +               }
32189 +
32190 +               if (dev.format == 3)
32191 +                       continue;
32192 +
32193 +               /*
32194 +                * Invalidate initiator devices indicated by RSCN so we know
32195 +                * they are no longer logged in.
32196 +                */
32197 +               list_for_each(fcil, &ha->fcinitiators) {
32198 +                       fcinitiator = list_entry(fcil, fc_initiator_t, list);
32199 +
32200 +                       if ((fcinitiator->d_id.b24 & mask) != dev.d_id.b24)
32201 +                               continue;
32202 +                       if (fcinitiator->loop_id & PORT_LOST_ID ||
32203 +                               fcinitiator->loop_id & PORT_LOGIN_NEEDED)
32204 +                               continue;
32205 +
32206 +                       fcinitiator->loop_id |= PORT_LOST_ID;
32207 +                       fcinitiator->d_id.b24 = 0;
32208 +               }
32209 +       }
32210 +
32211 +       LEAVE(__func__);
32212 +}
32213 +
32214 +
32215 +/*
32216 + *  qla2x00_loop_resync
32217 + *      Resync with fibre channel devices.
32218 + *
32219 + * Input:
32220 + *      ha = adapter block pointer.
32221 + *
32222 + * Returns:
32223 + *      0 = success
32224 + */
32225 +uint8_t
32226 +qla2x00_loop_resync(scsi_qla_host_t *ha) 
32227 +{
32228 +       uint8_t   status;
32229 +
32230 +       ENTER(__func__);
32231 +
32232 +       ha->loop_state = LOOP_UPDATE;
32233 +       qla2x00_stats.loop_resync++;
32234 +       clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
32235 +       if (ha->flags.online) {
32236 +               if (!(status = qla2x00_fw_ready(ha))) {
32237 +                       do {
32238 +                               /* v2.19.05b6 */
32239 +                               ha->loop_state = LOOP_UPDATE;
32240 +
32241 +                               /*
32242 +                                * Issue marker command only when we are going
32243 +                                * to start the I/O .
32244 +                                */
32245 +                               ha->marker_needed = 1;
32246 +
32247 +                               /* Remap devices on Loop. */
32248 +                               clear_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
32249 +
32250 +                               qla2x00_configure_loop(ha);
32251 +
32252 +                       } while (!atomic_read(&ha->loop_down_timer) &&
32253 +                               !(test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) &&
32254 +                               (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)));
32255 +               }
32256 +               qla2x00_restart_queues(ha,TRUE);
32257 +       } else
32258 +               status = 0;
32259 +
32260 +       if (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) {
32261 +               return (1);
32262 +       }
32263 +
32264 +       if (status) {
32265 +               DEBUG2_3(printk("%s(): **** FAILED ****\n", __func__));
32266 +       }
32267 +
32268 +       LEAVE(__func__);
32269 +
32270 +       return(status);
32271 +}
32272 +
32273 +/*
32274 + * qla2x00_fabric_login
32275 + *     Issue fabric login command.
32276 + *
32277 + * Input:
32278 + *     ha = adapter block pointer.
32279 + *     device = pointer to FC device type structure.
32280 + *
32281 + * Returns:
32282 + *      0 - Login successfully
32283 + *      1 - Login failed
32284 + *      2 - Initiator device
32285 + *      3 - Fatal error
32286 + */
32287 +uint8_t
32288 +qla2x00_fabric_login(scsi_qla_host_t *ha, fcdev_t *device) 
32289 +{
32290 +       uint16_t        status[3];
32291 +
32292 +       for (;;) {
32293 +               DEBUG(printk("scsi(%ld): Trying Fabric Login w/loop id 0x%04x "
32294 +                   "for port %02x%02x%02x.\n",
32295 +                   ha->host_no, device->loop_id,
32296 +                   device->d_id.b.domain,
32297 +                   device->d_id.b.area,
32298 +                   device->d_id.b.al_pa));
32299 +
32300 +               /* Login device on switch. */
32301 +               qla2x00_login_fabric(ha,
32302 +                   device->loop_id, device->d_id.b.domain,
32303 +                   device->d_id.b.area, device->d_id.b.al_pa, 
32304 +                   &status[0], BIT_0);
32305 +
32306 +               if (status[0] == 0x4007) {
32307 +                       ha->fabricid[device->loop_id].in_use = FALSE;
32308 +                       device->loop_id = status[1];
32309 +
32310 +                       DEBUG(printk("Fabric Login: port in use - next "
32311 +                           "loop id=0x%04x, port Id=%02x%02x%02x.\n",
32312 +                           device->loop_id,
32313 +                           device->d_id.b.domain,
32314 +                           device->d_id.b.area,
32315 +                           device->d_id.b.al_pa));
32316 +
32317 +                       if (device->loop_id <= LAST_SNS_LOOP_ID)
32318 +                               ha->fabricid[device->loop_id].in_use = TRUE;
32319 +                       else
32320 +                               return 1;
32321 +
32322 +               } else if (status[0] == 0x4000) {
32323 +                       if (status[1] & 0x0001) {
32324 +                               /* Initiator only device */
32325 +                               qla2x00_add_initiator_device(ha, device);
32326 +
32327 +                               return 2;
32328 +                       }
32329 +
32330 +                       /* This is target capable device */
32331 +                       qla2x00_get_port_database(ha, device, 0);
32332 +
32333 +                       DEBUG(printk("scsi(%ld): Fabric Login OK. loop "
32334 +                           "id=0x%04x, port Id=%02x%02x%02x.\n",
32335 +                           ha->host_no,
32336 +                           device->loop_id,
32337 +                           device->d_id.b.domain,
32338 +                           device->d_id.b.area,
32339 +                           device->d_id.b.al_pa));
32340 +                       return 0;
32341 +
32342 +               } else if (status[0] == 0x4008) {
32343 +                       if (device->loop_id++ <= LAST_SNS_LOOP_ID)
32344 +                               ha->fabricid[device->loop_id].in_use = TRUE;
32345 +                       else
32346 +                               return 1;
32347 +
32348 +               } else if (status[0] == 0x4006) {
32349 +                       /* No more retry needed. */
32350 +                       return 3;
32351 +               } else {
32352 +                       DEBUG2(printk("%s(%ld): failed=%x port_id=%02x%02x%02x "
32353 +                           "loop_id=%x jiffies=%lx.\n", 
32354 +                           __func__, ha->host_no, status[0], 
32355 +                           device->d_id.b.domain,
32356 +                           device->d_id.b.area,
32357 +                           device->d_id.b.al_pa,
32358 +                           device->loop_id, jiffies));
32359 +                       return 1;
32360 +               }
32361 +       }
32362 +}
32363 +
32364 +/*
32365 + * qla2x00_local_device_login
32366 + *     Issue local device login command.
32367 + *
32368 + * Input:
32369 + *     ha = adapter block pointer.
32370 + *     loop_id = loop id of device to login to.
32371 + *
32372 + * Returns (Where's the #define!!!!):
32373 + *      0 - Login successfully
32374 + *      1 - Login failed
32375 + *      3 - Fatal error
32376 + */
32377 +uint8_t
32378 +qla2x00_local_device_login(scsi_qla_host_t *ha, uint16_t loop_id)
32379 +{
32380 +       int             rval;
32381 +       uint16_t        mb[MAILBOX_REGISTER_COUNT];
32382 +
32383 +       memset(mb, 0, sizeof(mb));
32384 +       rval = qla2x00_login_local_device(ha, loop_id, mb, BIT_0);
32385 +       if (rval == QL_STATUS_SUCCESS) {
32386 +               /* Interrogate mailbox registers for any errors */
32387 +               if (mb[0] == 0x4005)
32388 +                       rval = 1;
32389 +               else if (mb[0] == 0x4006)
32390 +                       /* device not in PCB table */
32391 +                       rval = 3;
32392 +       }
32393 +       return rval;
32394 +}
32395 +
32396 +
32397 +/**
32398 + * qla2x00_ga_nxt() - SNS scan for fabric devices via GA_NXT command.
32399 + * @ha: HA context
32400 + * @swl_entry: switch info entry to updated
32401 + *
32402 + * NOTE: Non-Nx_Ports are skipped.
32403 + *
32404 + * Returns 0 on success.
32405 + */
32406 +static int
32407 +qla2x00_ga_nxt(scsi_qla_host_t *ha, sw_info_t *swl_entry)
32408 +{
32409 +       int             rval;
32410 +
32411 +       ms_iocb_entry_t *ms_pkt;
32412 +       struct ct_sns_req       *ct_req;
32413 +       struct ct_sns_rsp       *ct_rsp;
32414 +
32415 +       ENTER(__func__);
32416 +
32417 +retry_ga_nxt:
32418 +       /* Issue GA_NXT */
32419 +       /* Prepare common MS IOCB */
32420 +       ms_pkt = qla2x00_prep_ms_iocb(ha, GA_NXT_REQ_SIZE, GA_NXT_RSP_SIZE);
32421 +
32422 +       /* Prepare CT request */
32423 +       ct_req = &ha->ct_sns->p.req;
32424 +       ct_rsp = &ha->ct_sns->p.rsp;
32425 +       memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32426 +
32427 +       ct_req->header.revision = 0x01;
32428 +       ct_req->header.gs_type = 0xFC;
32429 +       ct_req->header.gs_subtype = 0x02;
32430 +       ct_req->command = __constant_cpu_to_be16(GA_NXT_CMD);
32431 +       ct_req->max_rsp_size =
32432 +           __constant_cpu_to_be16((GA_NXT_RSP_SIZE - 16) / 4);
32433 +
32434 +       /* Prepare CT arguments -- port_id */
32435 +       ct_req->req.port_id.port_id[0] = swl_entry->d_id.b.domain;
32436 +       ct_req->req.port_id.port_id[1] = swl_entry->d_id.b.area;
32437 +       ct_req->req.port_id.port_id[2] = swl_entry->d_id.b.al_pa;
32438 +
32439 +       /* Execute MS IOCB */
32440 +       rval = qla2x00_issue_iocb(ha,
32441 +           ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32442 +       if (rval != QL_STATUS_SUCCESS) {
32443 +               /*EMPTY*/
32444 +               DEBUG2_3(printk("scsi(%ld): GA_NXT issue IOCB failed (%d).\n",
32445 +                   ha->host_no, rval));
32446 +       } else if (ct_rsp->header.response !=
32447 +           __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32448 +               DEBUG2_3(printk("scsi(%ld): GA_NXT failed, rejected request, "
32449 +                   "ga_nxt_rsp:\n", ha->host_no));
32450 +               DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32451 +                   sizeof(struct ct_rsp_hdr)));
32452 +               rval = QL_STATUS_ERROR;
32453 +       } else if (ct_rsp->rsp.ga_nxt.port_type != NS_N_PORT_TYPE &&
32454 +           ct_rsp->rsp.ga_nxt.port_type != NS_NL_PORT_TYPE) {
32455 +               /* We're only interested in Nx ports */
32456 +               DEBUG2_3(printk("scsi(%ld): GA_NXT skipping *NON* Nx_Port - "
32457 +                   "nodename %02x%02x%02x%02x%02x%02x%02x%02x "
32458 +                   "portname %02x%02x%02x%02x%02x%02x%02x%02x "
32459 +                   "portid=%02x%02x%02x port_type=%x.\n",
32460 +                   ha->host_no,
32461 +                   ct_rsp->rsp.ga_nxt.node_name[0],
32462 +                   ct_rsp->rsp.ga_nxt.node_name[1], 
32463 +                   ct_rsp->rsp.ga_nxt.node_name[2], 
32464 +                   ct_rsp->rsp.ga_nxt.node_name[3], 
32465 +                   ct_rsp->rsp.ga_nxt.node_name[4], 
32466 +                   ct_rsp->rsp.ga_nxt.node_name[5], 
32467 +                   ct_rsp->rsp.ga_nxt.node_name[6], 
32468 +                   ct_rsp->rsp.ga_nxt.node_name[7], 
32469 +                   ct_rsp->rsp.ga_nxt.port_name[0],
32470 +                   ct_rsp->rsp.ga_nxt.port_name[1], 
32471 +                   ct_rsp->rsp.ga_nxt.port_name[2], 
32472 +                   ct_rsp->rsp.ga_nxt.port_name[3], 
32473 +                   ct_rsp->rsp.ga_nxt.port_name[4], 
32474 +                   ct_rsp->rsp.ga_nxt.port_name[5], 
32475 +                   ct_rsp->rsp.ga_nxt.port_name[6], 
32476 +                   ct_rsp->rsp.ga_nxt.port_name[7], 
32477 +                   ct_rsp->rsp.ga_nxt.port_id[0], 
32478 +                   ct_rsp->rsp.ga_nxt.port_id[1], 
32479 +                   ct_rsp->rsp.ga_nxt.port_id[2],
32480 +                   ct_rsp->rsp.ga_nxt.port_type));
32481 +               goto retry_ga_nxt;
32482 +       } else {
32483 +               /* Populate switch info entry. */
32484 +               swl_entry->d_id.b.domain = ct_rsp->rsp.ga_nxt.port_id[0];
32485 +               swl_entry->d_id.b.area = ct_rsp->rsp.ga_nxt.port_id[1];
32486 +               swl_entry->d_id.b.al_pa = ct_rsp->rsp.ga_nxt.port_id[2];
32487 +
32488 +               memcpy(swl_entry->node_name,
32489 +                   ct_rsp->rsp.ga_nxt.node_name, WWN_SIZE);
32490 +               memcpy(swl_entry->port_name,
32491 +                   ct_rsp->rsp.ga_nxt.port_name, WWN_SIZE);
32492 +
32493 +               swl_entry->type = SW_TYPE_SCSI;
32494 +               if (ct_rsp->rsp.ga_nxt.fc4_types[3] & 0x20)
32495 +                       swl_entry->type |= SW_TYPE_IP;
32496 +
32497 +               DEBUG2_3(printk("scsi(%ld): GA_NXT entry - "
32498 +                   "nodename %02x%02x%02x%02x%02x%02x%02x%02x "
32499 +                   "portname %02x%02x%02x%02x%02x%02x%02x%02x "
32500 +                   "portid=%02x%02x%02x type=%02x.\n",
32501 +                   ha->host_no,
32502 +                   swl_entry->node_name[0], swl_entry->node_name[1],
32503 +                   swl_entry->node_name[2], swl_entry->node_name[3],
32504 +                   swl_entry->node_name[4], swl_entry->node_name[5],
32505 +                   swl_entry->node_name[6], swl_entry->node_name[7],
32506 +                   swl_entry->port_name[0], swl_entry->port_name[1],
32507 +                   swl_entry->port_name[2], swl_entry->port_name[3],
32508 +                   swl_entry->port_name[4], swl_entry->port_name[5],
32509 +                   swl_entry->port_name[6], swl_entry->port_name[7],
32510 +                   swl_entry->d_id.b.domain,
32511 +                   swl_entry->d_id.b.area,
32512 +                   swl_entry->d_id.b.al_pa,
32513 +                   swl_entry->type));
32514 +       }
32515 +
32516 +       LEAVE(__func__);
32517 +
32518 +       return (rval);
32519 +}
32520 +
32521 +/**
32522 + * qla2x00_gid_pt() - SNS scan for fabric devices via GID_PT command.
32523 + * @ha: HA context
32524 + * @list: switch info entries to populate
32525 + *
32526 + * NOTE: Non-Nx_Ports are not requested.
32527 + *
32528 + * Returns 0 on success.
32529 + */
32530 +static int
32531 +qla2x00_gid_pt(scsi_qla_host_t *ha, sw_info_t *list)
32532 +{
32533 +       int             rval;
32534 +       uint16_t        i;
32535 +
32536 +       ms_iocb_entry_t *ms_pkt;
32537 +       struct ct_sns_req       *ct_req;
32538 +       struct ct_sns_rsp       *ct_rsp;
32539 +
32540 +       struct ct_sns_gid_pt_data *gid_data;
32541 +
32542 +       ENTER(__func__);
32543 +
32544 +       gid_data = NULL;
32545 +
32546 +       /* Issue GID_PT */
32547 +       /* Prepare common MS IOCB */
32548 +       ms_pkt = qla2x00_prep_ms_iocb(ha, GID_PT_REQ_SIZE, GID_PT_RSP_SIZE);
32549 +
32550 +       /* Prepare CT request */
32551 +       ct_req = &ha->ct_sns->p.req;
32552 +       ct_rsp = &ha->ct_sns->p.rsp;
32553 +       memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32554 +
32555 +       ct_req->header.revision = 0x01;
32556 +       ct_req->header.gs_type = 0xFC;
32557 +       ct_req->header.gs_subtype = 0x02;
32558 +       ct_req->command = __constant_cpu_to_be16(GID_PT_CMD);
32559 +       ct_req->max_rsp_size =
32560 +           __constant_cpu_to_be16((GID_PT_RSP_SIZE - 16) / 4);
32561 +
32562 +       /* Prepare CT arguments -- port_type */
32563 +       ct_req->req.gid_pt.port_type = NS_NX_PORT_TYPE;
32564 +
32565 +       /* Execute MS IOCB */
32566 +       rval = qla2x00_issue_iocb(ha,
32567 +           ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32568 +       if (rval != QL_STATUS_SUCCESS) {
32569 +               /*EMPTY*/
32570 +               DEBUG2_3(printk("scsi(%ld): GID_PT issue IOCB failed (%d).\n",
32571 +                   ha->host_no, rval));
32572 +       } else if (ct_rsp->header.response !=
32573 +           __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32574 +               DEBUG2_3(printk("scsi(%ld): GID_PT failed, rejected request, "
32575 +                   "gid_pt_rsp:\n", ha->host_no));
32576 +               DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32577 +                   sizeof(struct ct_rsp_hdr)));
32578 +               rval = QL_STATUS_ERROR;
32579 +       } else {
32580 +               /* Set port IDs in switch info list. */
32581 +               for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
32582 +                       memset(&list[i], 0, sizeof(sw_info_t));
32583 +                       gid_data = &ct_rsp->rsp.gid_pt.entries[i];
32584 +                       list[i].d_id.b.domain = gid_data->port_id[0];
32585 +                       list[i].d_id.b.area = gid_data->port_id[1];
32586 +                       list[i].d_id.b.al_pa = gid_data->port_id[2];
32587 +
32588 +                       /* Last one exit. */
32589 +                       if (gid_data->control_byte & BIT_7) {
32590 +                               list[i].d_id.b.rsvd_1 = gid_data->control_byte;
32591 +                               break;
32592 +                       }
32593 +               }
32594 +       }
32595 +
32596 +       LEAVE(__func__);
32597 +
32598 +       return (rval);
32599 +}
32600 +
32601 +/**
32602 + * qla2x00_gpn_id() - SNS Get Port Name (GPN_ID) query.
32603 + * @ha: HA context
32604 + * @list: switch info entries to populate
32605 + *
32606 + * Returns 0 on success.
32607 + */
32608 +static int
32609 +qla2x00_gpn_id(scsi_qla_host_t *ha, sw_info_t *list)
32610 +{
32611 +       int             rval;
32612 +       uint16_t        i;
32613 +
32614 +       ms_iocb_entry_t *ms_pkt;
32615 +       struct ct_sns_req       *ct_req;
32616 +       struct ct_sns_rsp       *ct_rsp;
32617 +
32618 +       ENTER(__func__);
32619 +
32620 +       for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
32621 +               /* Issue GPN_ID */
32622 +               /* Prepare common MS IOCB */
32623 +               ms_pkt = qla2x00_prep_ms_iocb(ha,
32624 +                   GPN_ID_REQ_SIZE, GPN_ID_RSP_SIZE);
32625 +
32626 +               /* Prepare CT request */
32627 +               ct_req = &ha->ct_sns->p.req;
32628 +               ct_rsp = &ha->ct_sns->p.rsp;
32629 +               memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32630 +
32631 +               ct_req->header.revision = 0x01;
32632 +               ct_req->header.gs_type = 0xFC;
32633 +               ct_req->header.gs_subtype = 0x02;
32634 +               ct_req->command = __constant_cpu_to_be16(GPN_ID_CMD);
32635 +               ct_req->max_rsp_size =
32636 +                   __constant_cpu_to_be16((GPN_ID_RSP_SIZE - 16) / 4);
32637 +
32638 +               /* Prepare CT arguments -- port_id */
32639 +               ct_req->req.port_id.port_id[0] = list[i].d_id.b.domain;
32640 +               ct_req->req.port_id.port_id[1] = list[i].d_id.b.area;
32641 +               ct_req->req.port_id.port_id[2] = list[i].d_id.b.al_pa;
32642 +
32643 +               /* Execute MS IOCB */
32644 +               rval = qla2x00_issue_iocb(ha,
32645 +                   ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32646 +               if (rval != QL_STATUS_SUCCESS) {
32647 +                       /*EMPTY*/
32648 +                       DEBUG2_3(printk("scsi(%ld): GPN_ID issue IOCB failed "
32649 +                           "(%d).\n",
32650 +                           ha->host_no, rval));
32651 +               } else if (ct_rsp->header.response !=
32652 +                   __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32653 +                       DEBUG2_3(printk("scsi(%ld): GPN_ID failed, rejected "
32654 +                           "request, gpn_id_rsp:\n", ha->host_no));
32655 +                       DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32656 +                           sizeof(struct ct_rsp_hdr)));
32657 +                       rval = QL_STATUS_ERROR;
32658 +               } else {
32659 +                       /* Save portname */
32660 +                       memcpy(list[i].port_name,
32661 +                           ct_rsp->rsp.gpn_id.port_name, WWN_SIZE);
32662 +               }
32663 +
32664 +               /* Last device exit. */
32665 +               if (list[i].d_id.b.rsvd_1 != 0)
32666 +                       break;
32667 +       }
32668 +
32669 +       LEAVE(__func__);
32670 +
32671 +       return (rval);
32672 +}
32673 +
32674 +/**
32675 + * qla2x00_gnn_id() - SNS Get Node Name (GPN_ID) query.
32676 + * @ha: HA context
32677 + * @list: switch info entries to populate
32678 + *
32679 + * Returns 0 on success.
32680 + */
32681 +static int
32682 +qla2x00_gnn_id(scsi_qla_host_t *ha, sw_info_t *list)
32683 +{
32684 +       int             rval;
32685 +       uint16_t        i;
32686 +
32687 +       ms_iocb_entry_t *ms_pkt;
32688 +       struct ct_sns_req       *ct_req;
32689 +       struct ct_sns_rsp       *ct_rsp;
32690 +
32691 +       ENTER(__func__);
32692 +
32693 +       for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
32694 +               /* Issue GNN_ID */
32695 +               /* Prepare common MS IOCB */
32696 +               ms_pkt = qla2x00_prep_ms_iocb(ha,
32697 +                   GNN_ID_REQ_SIZE, GNN_ID_RSP_SIZE);
32698 +
32699 +               /* Prepare CT request */
32700 +               ct_req = &ha->ct_sns->p.req;
32701 +               ct_rsp = &ha->ct_sns->p.rsp;
32702 +               memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32703 +
32704 +               ct_req->header.revision = 0x01;
32705 +               ct_req->header.gs_type = 0xFC;
32706 +               ct_req->header.gs_subtype = 0x02;
32707 +               ct_req->command = __constant_cpu_to_be16(GNN_ID_CMD);
32708 +               ct_req->max_rsp_size =
32709 +                   __constant_cpu_to_be16((GNN_ID_RSP_SIZE - 16) / 4);
32710 +
32711 +               /* Prepare CT arguments -- port_id */
32712 +               ct_req->req.port_id.port_id[0] = list[i].d_id.b.domain;
32713 +               ct_req->req.port_id.port_id[1] = list[i].d_id.b.area;
32714 +               ct_req->req.port_id.port_id[2] = list[i].d_id.b.al_pa;
32715 +
32716 +               /* Execute MS IOCB */
32717 +               rval = qla2x00_issue_iocb(ha,
32718 +                   ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32719 +               if (rval != QL_STATUS_SUCCESS) {
32720 +                       /*EMPTY*/
32721 +                       DEBUG2_3(printk("scsi(%ld): GNN_ID issue IOCB failed "
32722 +                           "(%d).\n",
32723 +                           ha->host_no, rval));
32724 +               } else if (ct_rsp->header.response !=
32725 +                   __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32726 +                       DEBUG2_3(printk("scsi(%ld): GNN_ID failed, rejected "
32727 +                           "request, gnn_id_rsp:\n", ha->host_no));
32728 +                       DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32729 +                           sizeof(struct ct_rsp_hdr)));
32730 +                       rval = QL_STATUS_ERROR;
32731 +               } else {
32732 +                       /* Save nodename */
32733 +                       memcpy(list[i].node_name,
32734 +                           ct_rsp->rsp.gnn_id.node_name, WWN_SIZE);
32735 +               }
32736 +
32737 +               /* Last device exit. */
32738 +               if (list[i].d_id.b.rsvd_1 != 0)
32739 +                       break;
32740 +       }
32741 +
32742 +       LEAVE(__func__);
32743 +
32744 +       return (rval);
32745 +}
32746 +
32747 +/**
32748 + * qla2x00_gft_id() - SNS Get FC-4 TYPEs (GFT_ID) query.
32749 + * @ha: HA context
32750 + * @list: switch info entries to populate
32751 + *
32752 + * Returns 0 on success.
32753 + */
32754 +static int
32755 +qla2x00_gft_id(scsi_qla_host_t *ha, sw_info_t *list)
32756 +{
32757 +       int             rval;
32758 +       uint16_t        i;
32759 +
32760 +       ms_iocb_entry_t *ms_pkt;
32761 +       struct ct_sns_req       *ct_req;
32762 +       struct ct_sns_rsp       *ct_rsp;
32763 +
32764 +       ENTER(__func__);
32765 +
32766 +       for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
32767 +               /* Issue GFT_ID */
32768 +               /* Prepare common MS IOCB */
32769 +               ms_pkt = qla2x00_prep_ms_iocb(ha,
32770 +                   GFT_ID_REQ_SIZE, GFT_ID_RSP_SIZE);
32771 +
32772 +               /* Prepare CT request */
32773 +               ct_req = &ha->ct_sns->p.req;
32774 +               ct_rsp = &ha->ct_sns->p.rsp;
32775 +               memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32776 +
32777 +               ct_req->header.revision = 0x01;
32778 +               ct_req->header.gs_type = 0xFC;
32779 +               ct_req->header.gs_subtype = 0x02;
32780 +               ct_req->command = __constant_cpu_to_be16(GFT_ID_CMD);
32781 +               ct_req->max_rsp_size =
32782 +                   __constant_cpu_to_be16((GFT_ID_RSP_SIZE - 16) / 4);
32783 +
32784 +               /* Prepare CT arguments -- port_id */
32785 +               ct_req->req.port_id.port_id[0] = list[i].d_id.b.domain;
32786 +               ct_req->req.port_id.port_id[1] = list[i].d_id.b.area;
32787 +               ct_req->req.port_id.port_id[2] = list[i].d_id.b.al_pa;
32788 +
32789 +               /* Execute MS IOCB */
32790 +               rval = qla2x00_issue_iocb(ha,
32791 +                   ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32792 +               if (rval != QL_STATUS_SUCCESS) {
32793 +                       /*EMPTY*/
32794 +                       DEBUG2_3(printk("scsi(%ld): GFT_ID issue IOCB failed "
32795 +                           "(%d).\n",
32796 +                           ha->host_no, rval));
32797 +               } else if (ct_rsp->header.response !=
32798 +                   __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32799 +                       DEBUG2_3(printk("scsi(%ld): GFT_ID failed, rejected "
32800 +                           "request, gft_id_rsp:\n", ha->host_no));
32801 +                       DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32802 +                           sizeof(struct ct_rsp_hdr)));
32803 +                       rval = QL_STATUS_ERROR;
32804 +               } else {
32805 +                       /* FCP-3 check necessary?  No, assume FCP-3 */
32806 +                       /*if (ct_rsp->rsp.gft_id.fc4_types[2] & 0x01)*/
32807 +                       list[i].type = SW_TYPE_SCSI;
32808 +                       if (ct_rsp->rsp.gft_id.fc4_types[3] & 0x20)
32809 +                               list[i].type |= SW_TYPE_IP;
32810 +
32811 +                       DEBUG2_3(printk("scsi(%ld): GID_PT entry - "
32812 +                           "nodename %02x%02x%02x%02x%02x%02x%02x%02x "
32813 +                           "portname %02x%02x%02x%02x%02x%02x%02x%02x "
32814 +                           "portid=%02x%02x%02x type=%02x.\n",
32815 +                           ha->host_no,
32816 +                           list[i].node_name[0], list[i].node_name[1],
32817 +                           list[i].node_name[2], list[i].node_name[3],
32818 +                           list[i].node_name[4], list[i].node_name[5],
32819 +                           list[i].node_name[6], list[i].node_name[7],
32820 +                           list[i].port_name[0], list[i].port_name[1],
32821 +                           list[i].port_name[2], list[i].port_name[3],
32822 +                           list[i].port_name[4], list[i].port_name[5],
32823 +                           list[i].port_name[6], list[i].port_name[7],
32824 +                           list[i].d_id.b.domain,
32825 +                           list[i].d_id.b.area,
32826 +                           list[i].d_id.b.al_pa,
32827 +                           list[i].type));
32828 +               }
32829 +
32830 +               /* Last device exit. */
32831 +               if (list[i].d_id.b.rsvd_1 != 0)
32832 +                       break;
32833 +       }
32834 +
32835 +       LEAVE(__func__);
32836 +
32837 +       return (rval);
32838 +}
32839 +
32840 +/**
32841 + * qla2x00_rft_id() - SNS Register FC-4 TYPEs (RFT_ID) supported by the HBA.
32842 + * @ha: HA context
32843 + *
32844 + * Returns 0 on success.
32845 + */
32846 +static int
32847 +qla2x00_rft_id(scsi_qla_host_t *ha)
32848 +{
32849 +       int             rval;
32850 +
32851 +       ms_iocb_entry_t *ms_pkt;
32852 +       struct ct_sns_req       *ct_req;
32853 +       struct ct_sns_rsp       *ct_rsp;
32854 +
32855 +       ENTER(__func__);
32856 +
32857 +       /* Issue RFT_ID */
32858 +       /* Prepare common MS IOCB */
32859 +       ms_pkt = qla2x00_prep_ms_iocb(ha, RFT_ID_REQ_SIZE, RFT_ID_RSP_SIZE);
32860 +
32861 +       /* Prepare CT request */
32862 +       ct_req = &ha->ct_sns->p.req;
32863 +       ct_rsp = &ha->ct_sns->p.rsp;
32864 +       memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32865 +
32866 +       ct_req->header.revision = 0x01;
32867 +       ct_req->header.gs_type = 0xFC;
32868 +       ct_req->header.gs_subtype = 0x02;
32869 +       ct_req->command = __constant_cpu_to_be16(RFT_ID_CMD);
32870 +       ct_req->max_rsp_size =
32871 +           __constant_cpu_to_be16((RFT_ID_RSP_SIZE - 16) / 4);
32872 +
32873 +       /* Prepare CT arguments -- port_id, FC-4 types */
32874 +       ct_req->req.rft_id.port_id[0] = ha->d_id.b.domain;
32875 +       ct_req->req.rft_id.port_id[1] = ha->d_id.b.area;
32876 +       ct_req->req.rft_id.port_id[2] = ha->d_id.b.al_pa;
32877 +
32878 +       ct_req->req.rft_id.fc4_types[2] = 0x01;         /* FCP-3 */
32879 +       ha->active_fc4_types = EXT_DEF_FC4_TYPE_SCSI;
32880 +
32881 +#if defined(FC_IP_SUPPORT)
32882 +       if (ha->flags.enable_ip) {
32883 +               ct_req->req.rft_id.fc4_types[3] = 0x20; /* IP over FC */
32884 +               ha->active_fc4_types |= EXT_DEF_FC4_TYPE_IP;
32885 +       }
32886 +#endif
32887 +#if defined(FC_VI_SUPPORT)
32888 +       ct_req->req.rft_id.fc4_types[8] = 0x01;         /* FC-VI */
32889 +       ha->active_fc4_types |= EXT_DEF_FC4_TYPE_VI;
32890 +#endif
32891 +
32892 +       /* Execute MS IOCB */
32893 +       rval = qla2x00_issue_iocb(ha,
32894 +           ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32895 +       if (rval != QL_STATUS_SUCCESS) {
32896 +               /*EMPTY*/
32897 +               DEBUG2_3(printk("scsi(%ld): RFT_ID issue IOCB failed (%d).\n",
32898 +                   ha->host_no, rval));
32899 +       } else if (ct_rsp->header.response !=
32900 +           __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32901 +               DEBUG2_3(printk("scsi(%ld): RFT_ID failed, rejected "
32902 +                   "request, rft_id_rsp:\n", ha->host_no));
32903 +               DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32904 +                   sizeof(struct ct_rsp_hdr)));
32905 +               rval = QL_STATUS_ERROR;
32906 +       } else {
32907 +               DEBUG2(printk("scsi(%ld): RFT_ID exiting normally.\n",
32908 +                   ha->host_no));
32909 +       }
32910 +
32911 +       LEAVE(__func__);
32912 +
32913 +       return (rval);
32914 +}
32915 +
32916 +/**
32917 + * qla2x00_rff_id() - SNS Register FC-4 Features (RFF_ID) supported by the HBA.
32918 + * @ha: HA context
32919 + *
32920 + * Returns 0 on success.
32921 + */
32922 +static int
32923 +qla2x00_rff_id(scsi_qla_host_t *ha)
32924 +{
32925 +       int             rval;
32926 +
32927 +       ms_iocb_entry_t *ms_pkt;
32928 +       struct ct_sns_req       *ct_req;
32929 +       struct ct_sns_rsp       *ct_rsp;
32930 +
32931 +       ENTER(__func__);
32932 +
32933 +       /* Issue RFF_ID */
32934 +       /* Prepare common MS IOCB */
32935 +       ms_pkt = qla2x00_prep_ms_iocb(ha, RFF_ID_REQ_SIZE, RFF_ID_RSP_SIZE);
32936 +
32937 +       /* Prepare CT request */
32938 +       ct_req = &ha->ct_sns->p.req;
32939 +       ct_rsp = &ha->ct_sns->p.rsp;
32940 +       memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32941 +
32942 +       ct_req->header.revision = 0x01;
32943 +       ct_req->header.gs_type = 0xFC;
32944 +       ct_req->header.gs_subtype = 0x02;
32945 +       ct_req->command = __constant_cpu_to_be16(RFF_ID_CMD);
32946 +       ct_req->max_rsp_size =
32947 +           __constant_cpu_to_be16((RFF_ID_RSP_SIZE - 16) / 4);
32948 +
32949 +       /* Prepare CT arguments -- port_id, FC-4 feature, FC-4 type */
32950 +       ct_req->req.rff_id.port_id[0] = ha->d_id.b.domain;
32951 +       ct_req->req.rff_id.port_id[1] = ha->d_id.b.area;
32952 +       ct_req->req.rff_id.port_id[2] = ha->d_id.b.al_pa;
32953 +
32954 +       if (!ha->flags.enable_target_mode)
32955 +               ct_req->req.rff_id.fc4_feature = 0x02;  /* SCSI Initiator */
32956 +
32957 +       ct_req->req.rff_id.fc4_type = 0x08;             /* SCSI - FCP */
32958 +
32959 +       /* Execute MS IOCB */
32960 +       rval = qla2x00_issue_iocb(ha,
32961 +           ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32962 +       if (rval != QL_STATUS_SUCCESS) {
32963 +               /*EMPTY*/
32964 +               DEBUG2_3(printk("scsi(%ld): RFF_ID issue IOCB failed (%d).\n",
32965 +                   ha->host_no, rval));
32966 +       } else if (ct_rsp->header.response !=
32967 +           __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32968 +               DEBUG2_3(printk("scsi(%ld): RFF_ID failed, rejected "
32969 +                   "request, rff_id_rsp:\n", ha->host_no));
32970 +               DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32971 +                   sizeof(struct ct_rsp_hdr)));
32972 +               rval = QL_STATUS_ERROR;
32973 +       } else {
32974 +               DEBUG2(printk("scsi(%ld): RFF_ID exiting normally.\n",
32975 +                   ha->host_no));
32976 +       }
32977 +
32978 +       LEAVE(__func__);
32979 +
32980 +       return (rval);
32981 +}
32982 +
32983 +/**
32984 + * qla2x00_rnn_id() - SNS Register Node Name (RNN_ID) of the HBA.
32985 + * @ha: HA context
32986 + *
32987 + * Returns 0 on success.
32988 + */
32989 +static int
32990 +qla2x00_rnn_id(scsi_qla_host_t *ha)
32991 +{
32992 +       int             rval;
32993 +
32994 +       ms_iocb_entry_t *ms_pkt;
32995 +       struct ct_sns_req       *ct_req;
32996 +       struct ct_sns_rsp       *ct_rsp;
32997 +
32998 +       ENTER(__func__);
32999 +
33000 +       /* Issue RNN_ID */
33001 +       /* Prepare common MS IOCB */
33002 +       ms_pkt = qla2x00_prep_ms_iocb(ha, RNN_ID_REQ_SIZE, RNN_ID_RSP_SIZE);
33003 +
33004 +       /* Prepare CT request */
33005 +       ct_req = &ha->ct_sns->p.req;
33006 +       ct_rsp = &ha->ct_sns->p.rsp;
33007 +       memset(ct_req, 0, sizeof(struct ct_sns_pkt));
33008 +
33009 +       ct_req->header.revision = 0x01;
33010 +       ct_req->header.gs_type = 0xFC;
33011 +       ct_req->header.gs_subtype = 0x02;
33012 +       ct_req->command = __constant_cpu_to_be16(RNN_ID_CMD);
33013 +       ct_req->max_rsp_size =
33014 +           __constant_cpu_to_be16((RNN_ID_RSP_SIZE - 16) / 4);
33015 +
33016 +       /* Prepare CT arguments -- port_id, node_name */
33017 +       ct_req->req.rnn_id.port_id[0] = ha->d_id.b.domain;
33018 +       ct_req->req.rnn_id.port_id[1] = ha->d_id.b.area;
33019 +       ct_req->req.rnn_id.port_id[2] = ha->d_id.b.al_pa;
33020 +
33021 +       memcpy(ct_req->req.rnn_id.node_name, ha->init_cb->node_name, WWN_SIZE);
33022 +
33023 +       /* Execute MS IOCB */
33024 +       rval = qla2x00_issue_iocb(ha,
33025 +           ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
33026 +       if (rval != QL_STATUS_SUCCESS) {
33027 +               /*EMPTY*/
33028 +               DEBUG2_3(printk("scsi(%ld): RNN_ID issue IOCB failed (%d).\n",
33029 +                   ha->host_no, rval));
33030 +       } else if (ct_rsp->header.response !=
33031 +           __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
33032 +               DEBUG2_3(printk("scsi(%ld): RNN_ID failed, rejected "
33033 +                   "request, rnn_id_rsp:\n", ha->host_no));
33034 +               DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
33035 +                   sizeof(struct ct_rsp_hdr)));
33036 +               rval = QL_STATUS_ERROR;
33037 +       } else {
33038 +               DEBUG2(printk("scsi(%ld): RNN_ID exiting normally.\n",
33039 +                   ha->host_no));
33040 +       }
33041 +
33042 +       LEAVE(__func__);
33043 +
33044 +       return (rval);
33045 +}
33046 +
33047 +/**
33048 + * qla2x00_rsnn_nn() - SNS Register Symbolic Node Name (RSNN_NN) of the HBA.
33049 + * @ha: HA context
33050 + *
33051 + * Returns 0 on success.
33052 + */
33053 +static int
33054 +qla2x00_rsnn_nn(scsi_qla_host_t *ha)
33055 +{
33056 +       int             rval;
33057 +       uint8_t         *snn;
33058 +       uint8_t         version[20];
33059 +
33060 +       ms_iocb_entry_t *ms_pkt;
33061 +       struct ct_sns_req       *ct_req;
33062 +       struct ct_sns_rsp       *ct_rsp;
33063 +
33064 +       ENTER(__func__);
33065 +
33066 +       /* Issue RSNN_NN */
33067 +       /* Prepare common MS IOCB */
33068 +       /*   Request size adjusted after CT preparation */
33069 +       ms_pkt = qla2x00_prep_ms_iocb(ha, 0, RSNN_NN_RSP_SIZE);
33070 +
33071 +       /* Prepare CT request */
33072 +       ct_req = &ha->ct_sns->p.req;
33073 +       ct_rsp = &ha->ct_sns->p.rsp;
33074 +       memset(ct_req, 0, sizeof(struct ct_sns_pkt));
33075 +
33076 +       ct_req->header.revision = 0x01;
33077 +       ct_req->header.gs_type = 0xFC;
33078 +       ct_req->header.gs_subtype = 0x02;
33079 +       ct_req->command = __constant_cpu_to_be16(RSNN_NN_CMD);
33080 +       ct_req->max_rsp_size =
33081 +           __constant_cpu_to_be16((RSNN_NN_RSP_SIZE - 16) / 4);
33082 +
33083 +       /* Prepare CT arguments -- node_name, symbolic node_name, size */
33084 +       memcpy(ct_req->req.rsnn_nn.node_name, ha->init_cb->node_name, WWN_SIZE);
33085 +       
33086 +       /* Prepare the Symbolic Node Name */
33087 +       /* Board type */
33088 +       snn = ct_req->req.rsnn_nn.sym_node_name;
33089 +#if defined(ISP2300)
33090 +       if (ha->pdev->device == QLA2312_DEVICE_ID) {
33091 +               switch (ha->pdev->subsystem_device) {
33092 +               case 0x0100:
33093 +                       strcpy(snn , "QLA2340");
33094 +                       break;
33095 +
33096 +               case 0x0101:
33097 +                       strcpy(snn , "QLA2342");
33098 +                       break;
33099 +
33100 +               case 0x0102:
33101 +                       strcpy(snn , "QLA2312");
33102 +                       break;
33103 +
33104 +               default:
33105 +                       strcpy(snn , "QLA2312");
33106 +                       break;
33107 +               }
33108 +       } else {
33109 +               strcpy(snn ,"QLA23xx");
33110 +       }
33111 +#else
33112 +       sprintf(snn, "QLA%04x", ha->pdev->device);
33113 +#endif
33114 +
33115 +       /* Firmware version */
33116 +       strcat(snn, " FW:v");
33117 +       sprintf(version, "%d.%02d.%02d", ha->fw_major_version,
33118 +           ha->fw_minor_version, ha->fw_subminor_version);
33119 +       strcat(snn, version);
33120 +
33121 +       /* Driver version */
33122 +       strcat(snn, " DVR:v");
33123 +       strcat(snn, qla2x00_version_str);
33124 +
33125 +       /* Calculate SNN length */
33126 +       ct_req->req.rsnn_nn.name_len = (uint8_t)strlen(snn);
33127 +
33128 +       /* Update MS IOCB request */
33129 +       ms_pkt->req_bytecount =
33130 +           cpu_to_le32(24 + 1 + ct_req->req.rsnn_nn.name_len);
33131 +       ms_pkt->dseg_req_length = ms_pkt->req_bytecount;
33132 +
33133 +       /* Execute MS IOCB */
33134 +       rval = qla2x00_issue_iocb(ha,
33135 +           ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
33136 +       if (rval != QL_STATUS_SUCCESS) {
33137 +               /*EMPTY*/
33138 +               DEBUG2_3(printk("scsi(%ld): RSNN_NN issue IOCB failed (%d).\n",
33139 +                   ha->host_no, rval));
33140 +       } else if (ct_rsp->header.response !=
33141 +           __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
33142 +               DEBUG2_3(printk("scsi(%ld): RSNN_NN failed, rejected "
33143 +                   "request, rsnn_id_rsp:\n", ha->host_no));
33144 +               DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
33145 +                   sizeof(struct ct_rsp_hdr)));
33146 +               rval = QL_STATUS_ERROR;
33147 +       } else {
33148 +               DEBUG2(printk("scsi(%ld): RSNN_NN exiting normally.\n",
33149 +                   ha->host_no));
33150 +       }
33151 +
33152 +       LEAVE(__func__);
33153 +
33154 +       return (rval);
33155 +}
33156 +
33157 +static int
33158 +qla2x00_add_initiator_device(scsi_qla_host_t *ha, fcdev_t *device)
33159 +{
33160 +       int     ret;
33161 +       fc_initiator_t  *fcinitiator;
33162 +
33163 +       ret = 1;
33164 +       fcinitiator = kmalloc(sizeof(fc_initiator_t), GFP_ATOMIC);
33165 +       if (fcinitiator != NULL) {
33166 +               /* Setup initiator structure. */
33167 +               memset(fcinitiator, 0, sizeof(fc_initiator_t));
33168 +       
33169 +               memcpy(fcinitiator->node_name, device->name, WWN_SIZE);
33170 +               memcpy(fcinitiator->port_name, device->wwn, WWN_SIZE);
33171 +               fcinitiator->d_id.b24 = device->d_id.b24;
33172 +               fcinitiator->loop_id = device->loop_id;
33173 +               list_add_tail(&fcinitiator->list, &ha->fcinitiators);
33174 +               ret = 0;
33175 +       } else {
33176 +               printk(KERN_WARNING
33177 +                   "%s(): Memory Allocation failed - FCINITIATOR\n",
33178 +                   __func__);
33179 +       }
33180 +
33181 +       return (ret);
33182 +}
33183 +
33184 +/*
33185 + *  qla2x00_restart_queues
33186 + *     Restart device queues.
33187 + *
33188 + * Input:
33189 + *     ha = adapter block pointer.
33190 + *
33191 + * Context:
33192 + *     Kernel/Interrupt context.
33193 + */
33194 +void
33195 +qla2x00_restart_queues(scsi_qla_host_t *ha, uint8_t flush) 
33196 +{
33197 +       srb_t           *sp;
33198 +       int             retry_q_cnt = 0;
33199 +       int             pending_q_cnt = 0;
33200 +       struct list_head *list, *temp;
33201 +       unsigned long flags = 0;
33202 +       struct list_head *hal;
33203 +       scsi_qla_host_t *vis_ha;
33204 +
33205 +
33206 +       ENTER(__func__);
33207 +
33208 +       clear_bit(RESTART_QUEUES_NEEDED, &ha->dpc_flags);
33209 +
33210 +       /*
33211 +        * start pending queue
33212 +        */
33213 +       pending_q_cnt = ha->qthreads;
33214 +       if (flush) {
33215 +               spin_lock_irqsave(&ha->list_lock,flags);
33216 +               list_for_each_safe(list, temp, &ha->pending_queue) {
33217 +                       sp = list_entry(list, srb_t, list);
33218 +                       /* 
33219 +                        * When time expire return request back to OS as BUSY 
33220 +                        */
33221 +                       __del_from_pending_queue(ha, sp);
33222 +                       CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
33223 +                       CMD_HANDLE(sp->cmd) = (unsigned char *)NULL;
33224 +                       __add_to_done_queue(ha, sp);
33225 +               }
33226 +               spin_unlock_irqrestore(&ha->list_lock, flags);
33227 +       } else {
33228 +               if (!list_empty(&ha->pending_queue))
33229 +                       qla2x00_next(ha);
33230 +       }
33231 +
33232 +       /*
33233 +        * Clear out our retry queue
33234 +        */
33235 +       if (flush) {
33236 +               spin_lock_irqsave(&ha->list_lock, flags);
33237 +               retry_q_cnt = ha->retry_q_cnt;
33238 +               list_for_each_safe(list, temp, &ha->retry_queue) {
33239 +                       sp = list_entry(list, srb_t, list);
33240 +                       /* when time expire return request back to OS as BUSY */
33241 +                       __del_from_retry_queue(ha, sp);
33242 +                       CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
33243 +                       CMD_HANDLE(sp->cmd) = (unsigned char *) NULL;
33244 +                       __add_to_done_queue(ha, sp);
33245 +               }
33246 +               spin_unlock_irqrestore(&ha->list_lock, flags);
33247 +
33248 +               DEBUG2(printk("%s(%ld): callback %d commands.\n",
33249 +                               __func__,
33250 +                               ha->host_no,
33251 +                               retry_q_cnt);)
33252 +       }
33253 +
33254 +       DEBUG2(printk("%s(%ld): active=%ld, retry=%d, pending=%d, "
33255 +                       "done=%ld, failover=%d, scsi retry=%d commands.\n",
33256 +                       __func__,
33257 +                       ha->host_no,
33258 +                       ha->actthreads,
33259 +                       ha->retry_q_cnt,
33260 +                       pending_q_cnt,
33261 +                       ha->done_q_cnt,
33262 +                       ha->failover_cnt,
33263 +                       ha->scsi_retry_q_cnt);)
33264 +
33265 +       if (ha->flags.failover_enabled) {
33266 +               /* Try and start all visible adapters */
33267 +               read_lock(&qla_hostlist_lock);
33268 +               list_for_each(hal, &qla_hostlist) {
33269 +                       vis_ha = list_entry(hal, scsi_qla_host_t, list);
33270 +
33271 +                       if (!list_empty(&vis_ha->pending_queue))
33272 +                               qla2x00_next(vis_ha);
33273 +
33274 +                       DEBUG2(printk("host(%ld):Commands busy=%d "
33275 +                                       "failed=%d\nin_recovery=%d "
33276 +                                       "eh_active=%d\n ",
33277 +                                       vis_ha->host_no,
33278 +                                       vis_ha->host->host_busy,
33279 +                                       vis_ha->host->host_failed,
33280 +                                       vis_ha->host->in_recovery,
33281 +                                       vis_ha->host->eh_active);)      
33282 +               }
33283 +               read_unlock(&qla_hostlist_lock);
33284 +       }
33285 +
33286 +       if (!list_empty(&ha->done_queue))
33287 +               schedule_work(&ha->run_qla_task);
33288 +
33289 +       LEAVE(__func__);
33290 +}
33291 +
33292 +/*
33293 + * qla2x00_update_fc_database
33294 + *      This routine updates the device data in the database.
33295 + *
33296 + * Input:
33297 + *      ha = adapter block pointer.
33298 + *      device = device data pointer.
33299 + *
33300 + * Returns:
33301 + *      0 = success, if device found or added to database.
33302 + *      BIT_0 = error
33303 + *      BIT_1 = database was full and device was not configured.
33304 + */
33305 +static uint8_t
33306 +qla2x00_update_fc_database(scsi_qla_host_t *ha,
33307 +    fcdev_t *device, uint8_t enable_slot_reuse) 
33308 +{
33309 +       int             rval;
33310 +       uint16_t        cnt, i;
33311 +
33312 +       DEBUG(printk("scsi(%ld): Found device - "
33313 +           "nodename=%02x%02x%02x%02x%02x%02x%02x%02x, "
33314 +           "portname=%02x%02x%02x%02x%02x%02x%02x%02x, "
33315 +           "port Id=%02x%02x%02x, loop id=%04x\n",
33316 +           ha->host_no,
33317 +           device->name[0], device->name[1],
33318 +           device->name[2], device->name[3],
33319 +           device->name[4], device->name[5],
33320 +           device->name[6], device->name[7],
33321 +           device->wwn[0], device->wwn[1],
33322 +           device->wwn[2], device->wwn[3],
33323 +           device->wwn[4], device->wwn[5],
33324 +           device->wwn[6], device->wwn[7],
33325 +           device->d_id.b.domain, device->d_id.b.area, device->d_id.b.al_pa,
33326 +           device->loop_id));
33327 +
33328 +       /* Look for device in database. */
33329 +       for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
33330 +               if (ha->fc_db[cnt].loop_id == PORT_UNUSED)
33331 +                       continue;
33332 +
33333 +               rval = 1;
33334 +               switch (ha->binding_type) {
33335 +               case BIND_BY_PORT_NAME:
33336 +                       rval = memcmp(device->wwn,
33337 +                           ha->fc_db[cnt].wwn, WWN_SIZE);
33338 +                       break;
33339 +
33340 +               case BIND_BY_PORT_ID:
33341 +                       rval = (device->d_id.b24 != ha->fc_db[cnt].d_id.b24);
33342 +                       break;
33343 +
33344 +               case BIND_BY_NODE_NAME:
33345 +                       rval = memcmp(device->name,
33346 +                           ha->fc_db[cnt].name, WWN_SIZE);
33347 +                       break;
33348 +               }
33349 +               if (rval)
33350 +                       continue;
33351 +
33352 +               DEBUG(printk("scsi(%ld): Reusing slot %d for device "
33353 +                   "%02x%02x%02x%02x%02x%02x%02x%02x\n",
33354 +                   ha->host_no, cnt,
33355 +                   device->wwn[0],
33356 +                   device->wwn[1],
33357 +                   device->wwn[2],
33358 +                   device->wwn[3],
33359 +                   device->wwn[4],
33360 +                   device->wwn[5],
33361 +                   device->wwn[6],
33362 +                   device->wwn[7]));
33363 +
33364 +               if (device->flag & DEV_PUBLIC) {
33365 +                       ha->fc_db[cnt].flag |= DEV_PUBLIC;
33366 +               } else {
33367 +                       if (ha->fc_db[cnt].flag & DEV_PUBLIC) {
33368 +                               ha->fc_db[cnt].flag &= ~DEV_PUBLIC;
33369 +                               ha->fabricid[ha->fc_db[cnt].loop_id].in_use 
33370 +                                   = FALSE;
33371 +                       }
33372 +               }
33373 +
33374 +               ha->fc_db[cnt].loop_id = device->loop_id;
33375 +               ha->fc_db[cnt].d_id.b24 = device->d_id.b24;
33376 +
33377 +               /* Update volatile unbound fields for PortID binding only */
33378 +               if (ha->binding_type == BIND_BY_PORT_ID) {
33379 +                       memcpy(ha->fc_db[cnt].name, device->name, WWN_SIZE);
33380 +                       memcpy(ha->fc_db[cnt].wwn, device->wwn, WWN_SIZE);
33381 +               }
33382 +
33383 +               return (0);
33384 +       }
33385 +
33386 +       /* Find a empty slot and add device into database. */
33387 +       for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
33388 +
33389 +/* FlexServ Patch */
33390 +#if QLA2XXX_HOTSWAP_ENUMERATION
33391 +               /*
33392 +                * Enumerate upon the actual ID so add-single-device works
33393 +                */
33394 +               if (i != device->loop_id) {
33395 +                       continue;
33396 +               }
33397 +#endif
33398 +
33399 +               if ((ha->fc_db[i].loop_id == PORT_UNUSED) ||
33400 +                       (ha->fc_db[i].loop_id == PORT_NEED_MAP)) {
33401 +
33402 +                       DEBUG(printk("scsi(%ld): New slot %d for device "
33403 +                           "%02x%02x%02x%02x%02x%02x%02x%02x\n",
33404 +                           ha->host_no, i,
33405 +                           device->wwn[0],
33406 +                           device->wwn[1],
33407 +                           device->wwn[2],
33408 +                           device->wwn[3],
33409 +                           device->wwn[4],
33410 +                           device->wwn[5],
33411 +                           device->wwn[6],
33412 +                           device->wwn[7]));
33413 +
33414 +                       memcpy(ha->fc_db[i].name, device->name, WWN_SIZE);
33415 +                       memcpy(ha->fc_db[i].wwn, device->wwn, WWN_SIZE);
33416 +                       ha->fc_db[i].loop_id = device->loop_id;
33417 +                       ha->fc_db[i].d_id.b24 = device->d_id.b24;
33418 +
33419 +                       if (device->flag & DEV_PUBLIC)
33420 +                               ha->fc_db[i].flag |= DEV_PUBLIC;
33421 +
33422 +                       ha->flags.updated_fc_db = TRUE;
33423 +
33424 +                       return (0);
33425 +               }
33426 +       }
33427 +
33428 +       if (enable_slot_reuse) {
33429 +               for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
33430 +                       if (ha->fc_db[i].loop_id == PORT_AVAILABLE) {
33431 +                               DEBUG(printk("scsi(%ld): Assigned slot %d "
33432 +                                   "reuse for device "
33433 +                                   "%02x%02x%02x%02x%02x%02x%02x%02x\n",
33434 +                                   ha->host_no, i, 
33435 +                                   device->wwn[0],
33436 +                                   device->wwn[1],
33437 +                                   device->wwn[2],
33438 +                                   device->wwn[3],
33439 +                                   device->wwn[4],
33440 +                                   device->wwn[5],
33441 +                                   device->wwn[6],
33442 +                                   device->wwn[7]));
33443 +
33444 +                               memcpy(ha->fc_db[i].name,
33445 +                                   device->name, WWN_SIZE);
33446 +                               memcpy(ha->fc_db[i].wwn,
33447 +                                   device->wwn, WWN_SIZE);
33448 +                               ha->fc_db[i].loop_id = device->loop_id;
33449 +                               ha->fc_db[i].d_id.b24 = device->d_id.b24;
33450 +
33451 +                               if (device->flag & DEV_PUBLIC)
33452 +                                       ha->fc_db[i].flag |= DEV_PUBLIC;
33453 +
33454 +                               ha->flags.updated_fc_db = TRUE;
33455 +
33456 +                               return (0);
33457 +                       }
33458 +               }
33459 +       }
33460 +
33461 +       return(BIT_1);
33462 +}
33463 +
33464 +/*
33465 + * qla2x00_build_fcport_list
33466 + *     Updates device on list.
33467 + *
33468 + * Input:
33469 + *     ha = adapter block pointer.
33470 + *     fcport = port structure pointer.
33471 + *
33472 + * Return:
33473 + *     0  - Success
33474 + *  BIT_0 - error
33475 + *
33476 + * Context:
33477 + *     Kernel context.
33478 + */
33479 +static int 
33480 +qla2x00_build_fcport_list(scsi_qla_host_t *ha) 
33481 +{
33482 +// FIXME: FIX THIS C*!P!!!
33483 +       int     rval;
33484 +       fcdev_t         *dev;
33485 +       int     found = 0;
33486 +       int cnt, i;
33487 +       struct list_head        *fcpl;
33488 +       fc_port_t       *fcport;
33489 +
33490 +       ENTER(__func__);
33491 +
33492 +       for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
33493 +               dev = &ha->fc_db[cnt];
33494 +
33495 +               /* Skip if zero port name */
33496 +               if (qla2x00_is_wwn_zero(dev->wwn)) {
33497 +                       continue;
33498 +               }
33499 +
33500 +               DEBUG3(printk("scsi(%ld): found tgt %d in fc_db.\n",
33501 +                   ha->host_no, cnt));
33502 +
33503 +               /* Check for matching device in port list. */
33504 +               i = 0;
33505 +               found = 0;
33506 +               fcport = NULL;
33507 +               list_for_each(fcpl, &ha->fcports) {
33508 +                       fcport = list_entry(fcpl, fc_port_t, list);
33509 +
33510 +                       rval = 1;
33511 +                       switch (ha->binding_type) {
33512 +                               case BIND_BY_PORT_NAME:
33513 +                                       rval = memcmp(dev->wwn,
33514 +                                                       fcport->port_name,
33515 +                                                       WWN_SIZE);
33516 +                                       break;
33517 +
33518 +                               case BIND_BY_PORT_ID:
33519 +                                       rval = (dev->d_id.b24 !=
33520 +                                                fcport->d_id.b24);
33521 +                                       break;
33522 +
33523 +                               case BIND_BY_NODE_NAME:
33524 +                                       rval = memcmp(dev->name,
33525 +                                                       fcport->node_name,
33526 +                                                       WWN_SIZE);
33527 +                                       break;
33528 +                       }
33529 +                       if (rval) {
33530 +                               i++;
33531 +                               continue;
33532 +                       }
33533 +
33534 +                       /*
33535 +                        * Update volatile unbound fields for PortID binding
33536 +                        * only
33537 +                        */
33538 +                       if (ha->binding_type == BIND_BY_PORT_ID) {
33539 +                               memcpy(fcport->node_name, dev->name, WWN_SIZE);
33540 +                               memcpy(fcport->port_name, dev->wwn, WWN_SIZE);
33541 +                       }
33542 +
33543 +                       DEBUG(printk("%s(): Found matching port %02x%02x%02x, "
33544 +                                       "device flags= 0x%x\n",
33545 +                                       __func__,
33546 +                                       dev->d_id.b.domain,
33547 +                                       dev->d_id.b.area,
33548 +                                       dev->d_id.b.al_pa,
33549 +                                       dev->flag);)
33550 +
33551 +                       /* if device found is missing then mark it */
33552 +                       if (dev->flag & DEV_ABSENCE) {
33553 +                               DEBUG(printk("%s(): Port missing ---  "
33554 +                                               "(port_name) -> "
33555 +                                               "%02x%02x%02x%02x%02x"
33556 +                                               "%02x%02x%02x, "
33557 +                                               "loop id = 0x%04x\n",
33558 +                                               __func__,
33559 +                                               fcport->port_name[0],
33560 +                                               fcport->port_name[1],
33561 +                                               fcport->port_name[2],
33562 +                                               fcport->port_name[3],
33563 +                                               fcport->port_name[4],
33564 +                                               fcport->port_name[5],
33565 +                                               fcport->port_name[6],
33566 +                                               fcport->port_name[7],
33567 +                                               fcport->loop_id);)
33568 +
33569 +                               fcport->loop_id = FC_NO_LOOP_ID;
33570 +
33571 +                               qla2x00_mark_device_lost(ha, fcport);
33572 +
33573 +                               found++;
33574 +                               break;
33575 +                       }
33576 +
33577 +                       /* if device was missing but returned */
33578 +                       if (fcport->loop_id == FC_NO_LOOP_ID ||
33579 +                               !(dev->flag & DEV_PUBLIC) ||
33580 +                               atomic_read(&fcport->state) != FC_ONLINE) {
33581 +
33582 +                               DEBUG(printk("%s(): Port returned +++  "
33583 +                                               "(port_name) -> "
33584 +                                               "%02x%02x%02x%02x%02x"
33585 +                                               "%02x%02x%02x, "
33586 +                                               "loop id = 0x%04x\n",
33587 +                                               __func__,
33588 +                                               fcport->port_name[0],
33589 +                                               fcport->port_name[1],
33590 +                                               fcport->port_name[2],
33591 +                                               fcport->port_name[3],
33592 +                                               fcport->port_name[4],
33593 +                                               fcport->port_name[5],
33594 +                                               fcport->port_name[6],
33595 +                                               fcport->port_name[7],
33596 +                                               fcport->loop_id);)
33597 +
33598 +                               fcport->loop_id = dev->loop_id;
33599 +                               fcport->old_loop_id = dev->loop_id;
33600 +                               fcport->d_id.b24 = dev->d_id.b24;
33601 +
33602 +                               if (qla2x00_update_fcport(ha, fcport, cnt)) {
33603 +                                       DEBUG2(printk("%s(%ld): update_fcport "
33604 +                                                       "failed.\n",
33605 +                                                       __func__,
33606 +                                                       ha->host_no);)
33607 +
33608 +                                       return BIT_0;
33609 +                               }
33610 +
33611 +                               found++;
33612 +                               break;
33613 +                       }
33614 +
33615 +                       DEBUG(printk("%s(): Match - fcport[%d] = fc_db[%d] "
33616 +                                       "(ignored) -> "
33617 +                                       "%02x%02x%02x%02x%02x%02x%02x%02x, "
33618 +                                       "loop id = 0x%04x\n",
33619 +                                       __func__,
33620 +                                       i, 
33621 +                                       cnt,
33622 +                                       fcport->port_name[0],
33623 +                                       fcport->port_name[1],
33624 +                                       fcport->port_name[2],
33625 +                                       fcport->port_name[3],
33626 +                                       fcport->port_name[4],
33627 +                                       fcport->port_name[5],
33628 +                                       fcport->port_name[6],
33629 +                                       fcport->port_name[7],
33630 +                                       fcport->loop_id);)
33631 +
33632 +                       fcport->loop_id = dev->loop_id;
33633 +                       fcport->old_loop_id = dev->loop_id;
33634 +
33635 +                       found++;
33636 +                       break;
33637 +               }
33638 +               if (found)
33639 +                       continue;
33640 +
33641 +               /* Add device to port list. */
33642 +               DEBUG3(printk("%s(%ld): adding new device to list.\n",
33643 +                               __func__,
33644 +                               ha->host_no);)
33645 +
33646 +               fcport = kmalloc(sizeof(fc_port_t), GFP_ATOMIC);
33647 +               if (fcport == NULL)
33648 +                       break;
33649 +
33650 +               memset(fcport, 0, sizeof(fc_port_t));
33651 +
33652 +               INIT_LIST_HEAD(&fcport->fcluns);
33653 +
33654 +               /* copy fields into fcport */
33655 +               memcpy(fcport->port_name, dev->wwn, WWN_SIZE);
33656 +               memcpy(fcport->node_name, dev->name, WWN_SIZE);
33657 +
33658 +               fcport->dev_id = cnt;
33659 +
33660 +               if (dev->flag & DEV_ABSENCE) {
33661 +                       DEBUG(printk("%s(): Port missing --- "
33662 +                                       "(port_name) -> "
33663 +                                       "%02x%02x%02x%02x"
33664 +                                       "%02x%02x%02x%02x, "
33665 +                                       "loop id = 0x%04x\n",
33666 +                                       __func__,
33667 +                                       fcport->port_name[0],
33668 +                                       fcport->port_name[1],
33669 +                                       fcport->port_name[2],
33670 +                                       fcport->port_name[3],
33671 +                                       fcport->port_name[4],
33672 +                                       fcport->port_name[5],
33673 +                                       fcport->port_name[6],
33674 +                                       fcport->port_name[7],
33675 +                                       fcport->loop_id);)
33676 +
33677 +                       fcport->loop_id = FC_NO_LOOP_ID;
33678
33679 +                       qla2x00_mark_device_lost(ha, fcport);
33680 +               } else {
33681 +                       fcport->loop_id = dev->loop_id;
33682 +                       fcport->old_loop_id = dev->loop_id;
33683 +               }
33684
33685 +               fcport->d_id.b24 = dev->d_id.b24;
33686
33687 +               DEBUG(printk("%s(): New Device +++ (port_name) -> "
33688 +                               "%02x%02x%02x%02x%02x%02x%02x%02x, "
33689 +                               "loop id = 0x%04x\n",
33690 +                               __func__,
33691 +                               fcport->port_name[0],
33692 +                               fcport->port_name[1],
33693 +                               fcport->port_name[2],
33694 +                               fcport->port_name[3],
33695 +                               fcport->port_name[4],
33696 +                               fcport->port_name[5],
33697 +                               fcport->port_name[6],
33698 +                               fcport->port_name[7],
33699 +                               fcport->loop_id);)
33700
33701 +               /* flags */
33702 +               if (dev->flag & DEV_PUBLIC)
33703 +                       fcport->flags |= FC_FABRIC_DEVICE;
33704
33705 +               if (dev->flag & DEV_INITIATOR)
33706 +                       fcport->flags |= FC_INITIATOR_DEVICE;
33707
33708 +               /* Assume the device supports RLC */
33709 +               fcport->flags |= FC_SUPPORT_RPT_LUNS;
33710
33711 +               if (!ha->flags.failover_enabled)
33712 +                       qla2x00_get_lun_mask_from_config(ha, fcport, cnt, 0);
33713
33714 +               /* Add to our list */
33715 +               list_add_tail(&fcport->list, &ha->fcports);
33716
33717 +               if (qla2x00_update_fcport(ha, fcport, cnt)) {
33718 +                       DEBUG2(printk("%s(%ld): update_fcport failed.\n",
33719 +                                       __func__,
33720 +                                       ha->host_no);)
33721
33722 +                       return BIT_0;
33723 +               }
33724 +       }
33725 +
33726 +       LEAVE(__func__);
33727 +
33728 +       return (0);
33729 +}
33730 +
33731 +/*
33732 + * qla2x00_config_os
33733 + *     Setup OS target and LUN structures.
33734 + *
33735 + * Input:
33736 + *     ha = adapter state pointer.
33737 + *
33738 + * Context:
33739 + *     Kernel context.
33740 + */
33741 +static void
33742 +qla2x00_config_os(scsi_qla_host_t *ha) 
33743 +{
33744 +       struct list_head        *fcpl;
33745 +       fc_port_t       *fcport;
33746 +       struct list_head        *fcll;
33747 +       fc_lun_t        *fclun;
33748 +       os_lun_t        *lq;
33749 +       uint16_t        t, l;
33750 +
33751 +
33752 +       DEBUG3(printk("%s(%ld): entered.\n", __func__, ha->host_no);)
33753 +
33754 +       list_for_each(fcpl, &ha->fcports) {
33755 +               fcport = list_entry(fcpl, fc_port_t, list);
33756 +
33757 +               /* Allocate target */
33758 +#if 0
33759 +               if (fcport->loop_id == FC_NO_LOOP_ID)
33760 +                       continue;
33761 +#endif
33762 +
33763 +               /* Bind fcport to target number. */
33764 +               DEBUG5(printk("%s(%ld): fcport bind= %p\n",
33765 +                               __func__,
33766 +                               ha->host_no, fcport);)
33767 +
33768 +               if ((t = qla2x00_fcport_bind(ha, fcport)) == MAX_TARGETS)
33769 +                       continue;
33770 +
33771 +#if VSA
33772 +               if ((ha->fc_db[t].flag & DEV_FLAG_VSA))
33773 +                       fcport->flags |= FC_VSA;
33774 +#endif
33775 +               DEBUG5(printk("%s(%ld): going to alloc lun for tgt %d. mask="
33776 +                               "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
33777 +                               "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
33778 +                               "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
33779 +                               ".\n",
33780 +                               __func__,
33781 +                               ha->host_no, 
33782 +                               t, 
33783 +                               fcport->lun_mask.mask[0],
33784 +                               fcport->lun_mask.mask[1],
33785 +                               fcport->lun_mask.mask[2],
33786 +                               fcport->lun_mask.mask[3],
33787 +                               fcport->lun_mask.mask[4],
33788 +                               fcport->lun_mask.mask[5],
33789 +                               fcport->lun_mask.mask[6],
33790 +                               fcport->lun_mask.mask[7],
33791 +                               fcport->lun_mask.mask[8],
33792 +                               fcport->lun_mask.mask[9],
33793 +                               fcport->lun_mask.mask[10],
33794 +                               fcport->lun_mask.mask[11],
33795 +                               fcport->lun_mask.mask[12],
33796 +                               fcport->lun_mask.mask[13],
33797 +                               fcport->lun_mask.mask[14],
33798 +                               fcport->lun_mask.mask[15],
33799 +                               fcport->lun_mask.mask[16],
33800 +                               fcport->lun_mask.mask[17],
33801 +                               fcport->lun_mask.mask[18],
33802 +                               fcport->lun_mask.mask[19],
33803 +                               fcport->lun_mask.mask[20],
33804 +                               fcport->lun_mask.mask[21],
33805 +                               fcport->lun_mask.mask[22],
33806 +                               fcport->lun_mask.mask[23],
33807 +                               fcport->lun_mask.mask[24],
33808 +                               fcport->lun_mask.mask[25],
33809 +                               fcport->lun_mask.mask[26],
33810 +                               fcport->lun_mask.mask[27],
33811 +                               fcport->lun_mask.mask[28],
33812 +                               fcport->lun_mask.mask[29],
33813 +                               fcport->lun_mask.mask[30],
33814 +                               fcport->lun_mask.mask[31]);)
33815 +
33816 +               /* Allocate LUNs */
33817 +               list_for_each(fcll, &fcport->fcluns) {
33818 +                       fclun = list_entry(fcll, fc_lun_t, list);
33819 +
33820 +                       l = fclun->lun;         /* Must not exceed MAX_LUN */
33821 +
33822 +                       /*
33823 +                        * Always alloc LUN 0 so kernel will scan past LUN 0.
33824 +                        */
33825 +                       if (l != 0 &&
33826 +                           (EXT_IS_LUN_BIT_SET(&(fcport->lun_mask), l))) {
33827 +
33828 +                               /* mask this LUN */
33829 +                               continue;
33830 +                       }
33831 +
33832 +                       if ((lq = qla2x00_lun_alloc(ha, t, l)) == NULL)
33833 +                               continue;
33834 +
33835 +                       lq->fclun = fclun;
33836 +               }
33837 +       }
33838 +
33839 +       DEBUG3(printk("%s(%ld): exiting normally.\n", __func__, ha->host_no);)
33840 +}
33841 +
33842 +/*
33843 + * qla2x00_fcport_bind
33844 + *     Locates a target number for FC port.
33845 + *
33846 + * Input:
33847 + *     ha = adapter state pointer.
33848 + *     fcport = FC port structure pointer.
33849 + *
33850 + * Returns:
33851 + *     target number
33852 + *
33853 + * Context:
33854 + *     Kernel context.
33855 + */
33856 +static uint16_t
33857 +qla2x00_fcport_bind(scsi_qla_host_t *ha, fc_port_t *fcport) 
33858 +{
33859 +       int             rval;
33860 +       uint16_t        t;
33861 +       os_tgt_t        *tq;
33862 +
33863 +       ENTER(__func__);
33864 +
33865 +       /* Check for tgt already allocated for persistent binding. */
33866 +       for (t = 0; t < MAX_TARGETS; t++) {
33867 +               if ((tq = TGT_Q(ha, t)) == NULL)
33868 +                       continue;
33869 +
33870 +               rval = 0;
33871 +               switch (ha->binding_type) {
33872 +               case BIND_BY_PORT_NAME:
33873 +                       rval = memcmp(fcport->port_name,
33874 +                           tq->port_name, WWN_SIZE);
33875 +                       break;
33876 +
33877 +               case BIND_BY_PORT_ID:
33878 +                       rval = (fcport->d_id.b24 != tq->d_id.b24);
33879 +                       break;
33880 +
33881 +               case BIND_BY_NODE_NAME:
33882 +                       rval = memcmp(fcport->node_name,
33883 +                           tq->node_name, WWN_SIZE);
33884 +                       break;
33885 +               }
33886 +               /* Found a persistently bound match */
33887 +               if (rval == 0)
33888 +                       break;
33889 +       }
33890 +
33891 +       if (fcport->loop_id == FC_NO_LOOP_ID) {
33892 +               DEBUG(tq = TGT_Q(ha, t);)
33893 +               DEBUG(printk("scsi%ld: Missing target ID %02x @ %p to "
33894 +                               "loop id: %04x, port state=0x%x, "
33895 +                               "port down retry=%d\n",
33896 +                               ha->host_no,
33897 +                               t,
33898 +                               tq,
33899 +                               fcport->loop_id,
33900 +                               atomic_read(&fcport->state),
33901 +                               atomic_read(&fcport->port_down_timer));)
33902 +               return (MAX_TARGETS);
33903 +       }
33904 +
33905 +       if (t != MAX_TARGETS) {
33906 +               tq = TGT_Q(ha, t);
33907 +               tq->vis_port = fcport;
33908 +
33909 +               DEBUG(printk("scsi%ld: Assigning target ID %02x @ %p to "
33910 +                               "loop id: %04x, port state=0x%x, "
33911 +                               "port down retry=%d\n",
33912 +                               ha->host_no,
33913 +                               t,
33914 +                               tq,
33915 +                               fcport->loop_id,
33916 +                               atomic_read(&fcport->state),
33917 +                               atomic_read(&fcport->port_down_timer));)
33918 +               return (t);
33919 +       }
33920 +
33921 +       /* Check for persistent binding not yet configured. */
33922 +       for (t = 0; t < MAX_TARGETS; t++) {
33923 +               rval = 0;
33924 +               switch (ha->binding_type) {
33925 +                       case BIND_BY_PORT_NAME:
33926 +                               rval = memcmp(fcport->port_name,
33927 +                                               ha->fc_db[t].wwn, WWN_SIZE);
33928 +                               break;
33929 +
33930 +                       case BIND_BY_PORT_ID:
33931 +                               rval = (fcport->d_id.b24 !=
33932 +                                               ha->fc_db[t].d_id.b24);
33933 +                               break;
33934 +
33935 +                       case BIND_BY_NODE_NAME:
33936 +                               rval = memcmp(fcport->node_name,
33937 +                                               ha->fc_db[t].name, WWN_SIZE);
33938 +                               break;
33939 +               }
33940 +               /* Found not-yet-allocated target at t */
33941 +               if (rval == 0)
33942 +                       break;
33943 +       }
33944 +
33945 +       if (t == MAX_TARGETS) {
33946 +               /* Check if slot at loop ID is available. */
33947 +               t = fcport->loop_id;
33948 +               if (TGT_Q(ha, t) != NULL) {
33949 +                       /* Locate first free target id in db for device. */
33950 +                       for (t = 0; t < MAX_TARGETS; t++) {
33951 +                               if (TGT_Q(ha, t) == NULL)
33952 +                                       break;
33953 +                       }
33954 +               }
33955 +       }
33956 +
33957 +       if (t != MAX_TARGETS) {
33958 +               tq = qla2x00_tgt_alloc(ha, t);
33959 +               if (tq != NULL) {
33960 +                       memcpy(tq->port_name, fcport->port_name, WWN_SIZE);
33961 +                       tq->d_id.b24 = fcport->d_id.b24;
33962 +                       memcpy(tq->node_name, fcport->node_name, WWN_SIZE);
33963 +               }
33964 +               else
33965 +                       t = MAX_TARGETS;
33966 +       }
33967 +
33968 +       if (t == MAX_TARGETS) {
33969 +               DEBUG2(printk("%s(): **** FAILED ****", __func__);)
33970 +               printk(KERN_WARNING
33971 +                       "%s(): **** FAILED ****", __func__);
33972 +       } else {
33973 +               if (!ha->flags.failover_enabled) {
33974 +                       /* fcport IS the visible port in non-failover mode */
33975 +                       tq = TGT_Q(ha, t);
33976 +                       tq->vis_port = fcport;
33977 +               }
33978 +
33979 +               DEBUG(tq = TGT_Q(ha, t);)
33980 +               DEBUG(printk("scsi%ld: Assigning target ID %02x @ %p to "
33981 +                               "loop id: %04x, port state=0x%x, "
33982 +                               "port down retry=%d\n",
33983 +                               ha->host_no,
33984 +                               t,
33985 +                               tq,
33986 +                               fcport->loop_id,
33987 +                               atomic_read(&fcport->state),
33988 +                               atomic_read(&fcport->port_down_timer));)
33989 +       }
33990 +
33991 +       LEAVE(__func__);
33992 +
33993 +       return (t);
33994 +}
33995 +
33996 +/*
33997 + * qla2x00_update_fcport
33998 + *     Updates device on list.
33999 + *
34000 + * Input:
34001 + *     ha = adapter block pointer.
34002 + *     fcport = port structure pointer.
34003 + *
34004 + * Return:
34005 + *     0  - Success
34006 + *  BIT_0 - error
34007 + *
34008 + * Context:
34009 + *     Kernel context.
34010 + */
34011 +static int
34012 +qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport, int index) 
34013 +{
34014 +       DEBUG4(printk("%s(): entered, loop_id = %d\n",
34015 +                       __func__,
34016 +                       fcport->loop_id);)
34017 +
34018 +       fcport->port_login_retry_count =
34019 +           ha->port_down_retry_count * PORT_RETRY_TIME;
34020 +       atomic_set(&fcport->state, FC_ONLINE);
34021 +       fcport->login_retry = 0;
34022 +       fcport->ha = ha;
34023 +       atomic_set(&fcport->port_down_timer,
34024 +           ha->port_down_retry_count * PORT_RETRY_TIME);
34025 +
34026 +       /* Do LUN discovery. */
34027 +       return (qla2x00_lun_discovery(ha, fcport, index));
34028 +}
34029 +
34030 +/*
34031 + * qla2x00_lun_discovery
34032 + *     Issue SCSI inquiry command for LUN discovery.
34033 + *
34034 + * Input:
34035 + *     ha = adapter block pointer.
34036 + *     fcport = FC port structure pointer.
34037 + *
34038 + * Return:
34039 + *     0  - Success
34040 + *  BIT_0 - error
34041 + *
34042 + * Context:
34043 + *     Kernel context.
34044 + */
34045 +static int
34046 +qla2x00_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport, int index) 
34047 +{
34048 +       inq_cmd_rsp_t   *pkt;
34049 +       int             rval;
34050 +       uint16_t        lun;
34051 +       struct list_head        *fcll;
34052 +       fc_lun_t        *fclun;
34053 +       int             found;
34054 +       dma_addr_t      phys_address = 0;
34055 +       int             disconnected;
34056 +       int             retry;
34057 +       fcdev_t         dev;
34058 +       int             rlc_succeeded;
34059 +       uint16_t        comp_status;
34060 +       uint16_t        scsi_status;
34061 +
34062 +       ENTER(__func__);
34063 +
34064 +       /* 
34065 +        * Immediately issue a RLC to the fcport
34066 +        */
34067 +       rlc_succeeded = 0;
34068 +       if (qla2x00_rpt_lun_discovery(ha, fcport) == QLA2X00_SUCCESS) {
34069 +               /* 
34070 +                * We always need at least LUN 0 to be present in our fclun
34071 +                * list if RLC succeeds.
34072 +                */
34073 +               qla2x00_cfg_lun(fcport, 0);
34074 +               /* 
34075 +                * At least do an inquiry on LUN 0 to determine peripheral
34076 +                * qualifier type.
34077 +                */
34078 +               rlc_succeeded = 1;
34079 +       }
34080 +
34081 +       /*
34082 +        * RLC failed for some reason, try basic inquiries
34083 +        */
34084 +       pkt = pci_alloc_consistent(ha->pdev,
34085 +           sizeof(inq_cmd_rsp_t), &phys_address);
34086 +       if (pkt == NULL) {
34087 +               printk(KERN_WARNING
34088 +                   "scsi(%ld): Memory Allocation failed - INQ\n",
34089 +                   ha->host_no);
34090 +
34091 +               ha->mem_err++;
34092 +               return BIT_0;
34093 +       }
34094 +
34095 +       for (lun = 0; lun < ha->max_probe_luns; lun++) {
34096 +               retry = 2;
34097 +               do {
34098 +                       memset(pkt, 0, sizeof(inq_cmd_rsp_t));
34099 +                       pkt->p.cmd.entry_type = COMMAND_A64_TYPE;
34100 +                       pkt->p.cmd.entry_count = 1;
34101 +                       pkt->p.cmd.lun = cpu_to_le16(lun);
34102 +#if defined(EXTENDED_IDS)
34103 +                       pkt->p.cmd.target = cpu_to_le16(fcport->loop_id & 0xFF);
34104 +#else
34105 +                       pkt->p.cmd.target = (uint8_t)fcport->loop_id;
34106 +#endif
34107 +                       pkt->p.cmd.control_flags =
34108 +                           __constant_cpu_to_le16(CF_READ | CF_SIMPLE_TAG);
34109 +                       pkt->p.cmd.scsi_cdb[0] = INQ_SCSI_OPCODE;
34110 +                       pkt->p.cmd.scsi_cdb[4] = INQ_DATA_SIZE;
34111 +                       pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1);
34112 +                       pkt->p.cmd.timeout = __constant_cpu_to_le16(10);
34113 +                       pkt->p.cmd.byte_count =
34114 +                           __constant_cpu_to_le32(INQ_DATA_SIZE);
34115 +                       pkt->p.cmd.dseg_0_address[0] = cpu_to_le32(
34116 +                           LSD(phys_address + sizeof(sts_entry_t)));
34117 +                       pkt->p.cmd.dseg_0_address[1] = cpu_to_le32(
34118 +                           MSD(phys_address + sizeof(sts_entry_t)));
34119 +                       pkt->p.cmd.dseg_0_length =
34120 +                           __constant_cpu_to_le32(INQ_DATA_SIZE);
34121 +
34122 +                       DEBUG5(printk("scsi(%ld): Lun Inquiry - fcport=%p,"
34123 +                           " lun (%d)\n",
34124 +                           ha->host_no, fcport, lun));
34125 +
34126 +                       rval = qla2x00_issue_iocb(ha,
34127 +                           pkt, phys_address, sizeof(inq_cmd_rsp_t));
34128 +
34129 +                       comp_status = le16_to_cpu(pkt->p.rsp.comp_status);
34130 +                       scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status);
34131 +
34132 +                       DEBUG5(printk("scsi(%ld): lun (%d) inquiry - "
34133 +                           "inq[0]= 0x%x, comp status 0x%x, scsi status 0x%x, "
34134 +                           "rval=%d\n",
34135 +                           ha->host_no,
34136 +                           lun, pkt->inq[0],
34137 +                           comp_status, scsi_status, rval));
34138 +
34139 +                       /* if port not logged in then try and login */
34140 +                       if (lun == 0 && comp_status == CS_PORT_LOGGED_OUT) {
34141 +                               memset(&dev, 0, sizeof (dev));
34142 +                               dev.d_id.b24 = ha->fc_db[index].d_id.b24;
34143 +
34144 +                               /* login and update database */
34145 +                               if (qla2x00_fabric_login(ha, &dev) == 0)
34146 +                                       ha->fc_db[index].loop_id = dev.loop_id;
34147 +                       }
34148 +               } while ((rval != QLA2X00_SUCCESS ||
34149 +                   comp_status != CS_COMPLETE) && retry--);
34150 +
34151 +               if (rval != QLA2X00_SUCCESS ||
34152 +                   comp_status != CS_COMPLETE ||
34153 +                   (scsi_status & SS_CHECK_CONDITION)) {
34154 +
34155 +                       DEBUG(printk("scsi(%ld): Failed lun inquiry - "
34156 +                           "inq[0]= 0x%x, comp status 0x%x, scsi status 0x%x. "
34157 +                           "loop_id=%d\n",
34158 +                           ha->host_no,
34159 +                           pkt->inq[0],
34160 +                           comp_status, scsi_status,
34161 +                           fcport->loop_id));
34162 +
34163 +                       break;
34164 +               }
34165 +
34166 +               disconnected = 0;
34167 +
34168 +               /*
34169 +                * We only need to issue an inquiry on LUN 0 to determine the
34170 +                * port's peripheral qualifier type
34171 +                */
34172 +               if (rlc_succeeded == 1) {
34173 +                       if (pkt->inq[0] == 0 || pkt->inq[0] == 0xc) {
34174 +                               fcport->flags &= ~(FC_TAPE_DEVICE);
34175 +                               ha->fc_db[index].flag &= ~DEV_TAPE_DEVICE;
34176 +                       } else if (pkt->inq[0] == 1 || pkt->inq[0] == 8) {
34177 +                               fcport->flags |= FC_TAPE_DEVICE;
34178 +                               ha->fc_db[index].flag |= DEV_TAPE_DEVICE;
34179 +                       }
34180 +
34181 +                       /* Stop the scan */
34182 +                       break;
34183 +               }
34184 +
34185 +               /* inq[0] ==:
34186 +                *       0x0- Hard Disk.
34187 +                *       0xc- is a processor device.    
34188 +                *       0x1- is a Tape Device.
34189 +                *       0x8- is a medium changer device
34190 +                *            which is basically a Tape device.
34191 +                */
34192 +               if (pkt->inq[0] == 0 || pkt->inq[0] == 0xc) {
34193 +                       fcport->flags &= ~(FC_TAPE_DEVICE);
34194 +                       ha->fc_db[index].flag &= ~DEV_TAPE_DEVICE;
34195 +               } else if (pkt->inq[0] == 1 || pkt->inq[0] == 8) {
34196 +                       fcport->flags |= FC_TAPE_DEVICE;
34197 +                       ha->fc_db[index].flag |= DEV_TAPE_DEVICE;
34198 +               } else if (pkt->inq[0] == 0x20 || pkt->inq[0] == 0x7f) {
34199 +                       disconnected++;
34200 +               } else {
34201 +                       continue;
34202 +               }
34203 +               
34204 +               /* Allocate LUN if not already allocated. */
34205 +               found = 0;
34206 +               list_for_each(fcll, &fcport->fcluns) {
34207 +                       fclun = list_entry(fcll, fc_lun_t, list);
34208 +
34209 +                       if (fclun->lun == lun) {
34210 +                               found++;
34211 +                               break;
34212 +                       }
34213 +               }
34214 +               if (found)
34215 +                       continue;
34216 +
34217 +               /* Add this lun to our list */
34218 +               fclun = kmalloc(sizeof(fc_lun_t), GFP_ATOMIC);
34219 +               if (fclun != NULL) {
34220 +                       fcport->lun_cnt++;
34221 +                       /* Setup LUN structure. */
34222 +                       memset(fclun, 0, sizeof(fc_lun_t));
34223 +
34224 +                       fclun->fcport = fcport;
34225 +                       fclun->lun = lun;
34226 +
34227 +                       if (disconnected)
34228 +                               fclun->flags |= FC_DISCON_LUN;
34229 +
34230 +                       list_add_tail(&fclun->list, &fcport->fcluns);
34231 +
34232 +                       DEBUG5(printk("scsi(%ld): Allocated fclun %p, lun=%d"
34233 +                           "disconnected=%d\n",
34234 +                           ha->host_no,
34235 +                           fclun,
34236 +                           fclun->lun,
34237 +                           disconnected));
34238 +               } else {
34239 +                       printk(KERN_WARNING
34240 +                           "scsi(%ld): Memory Allocation failed - fclun\n",
34241 +                           ha->host_no);
34242 +
34243 +                       ha->mem_err++;
34244 +                       pci_free_consistent(ha->pdev,
34245 +                           sizeof(inq_cmd_rsp_t), pkt, phys_address);
34246 +
34247 +                       return BIT_0;
34248 +               }
34249 +
34250 +       }
34251 +
34252 +       DEBUG(printk("scsi(%ld): fcport lun count=%d, fcport= %p\n",
34253 +           ha->host_no, fcport->lun_cnt, fcport));
34254 +
34255 +       pci_free_consistent(ha->pdev, sizeof(inq_cmd_rsp_t), pkt, phys_address);
34256 +
34257 +       LEAVE(__func__);
34258 +
34259 +       return 0;
34260 +}
34261 +
34262 +/*
34263 + * qla2x00_rpt_lun_discovery
34264 + *     Issue SCSI report LUN command for LUN discovery.
34265 + *
34266 + * Input:
34267 + *     ha:             adapter state pointer.
34268 + *     fcport:         FC port structure pointer.
34269 + *
34270 + * Returns:
34271 + *     qla2x00 local function return status code.
34272 + *
34273 + * Context:
34274 + *     Kernel context.
34275 + */
34276 +static int
34277 +qla2x00_rpt_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport) 
34278 +{
34279 +       rpt_lun_cmd_rsp_t       *pkt;
34280 +       dma_addr_t              phys_address = 0;
34281 +       int                     rval;
34282 +       uint32_t                len, cnt;
34283 +       uint8_t                 retries;
34284 +       uint16_t                lun;
34285 +       uint16_t                comp_status;
34286 +       uint16_t                scsi_status;
34287 +
34288 +       ENTER(__func__);
34289 +
34290 +       /* Assume a failed status */
34291 +       rval = QLA2X00_FAILED;
34292 +
34293 +       /* No point in continuing if the device doesn't support RLC */
34294 +       if (!(fcport->flags & FC_SUPPORT_RPT_LUNS))
34295 +               return (rval);
34296 +
34297 +       pkt = pci_alloc_consistent(ha->pdev,
34298 +           sizeof(rpt_lun_cmd_rsp_t), &phys_address);
34299 +       if (pkt == NULL) {
34300 +               printk(KERN_WARNING
34301 +                       "scsi(%ld): Memory Allocation failed - RLC",
34302 +                       ha->host_no);
34303 +
34304 +               ha->mem_err++;
34305 +               return BIT_0;
34306 +       }
34307 +
34308 +       for (retries = 4; retries; retries--) {
34309 +               memset(pkt, 0, sizeof(rpt_lun_cmd_rsp_t));
34310 +               pkt->p.cmd.entry_type = COMMAND_A64_TYPE;
34311 +               pkt->p.cmd.entry_count = 1;
34312 +#if defined(EXTENDED_IDS)
34313 +               pkt->p.cmd.target = cpu_to_le16(fcport->loop_id & 0xFF);
34314 +#else
34315 +               pkt->p.cmd.target = (uint8_t)fcport->loop_id;
34316 +#endif
34317 +               pkt->p.cmd.control_flags =
34318 +                   __constant_cpu_to_le16(CF_READ | CF_SIMPLE_TAG);
34319 +               pkt->p.cmd.scsi_cdb[0] = RPT_LUN_SCSI_OPCODE;
34320 +               pkt->p.cmd.scsi_cdb[8] = MSB(sizeof(rpt_lun_lst_t));
34321 +               pkt->p.cmd.scsi_cdb[9] = LSB(sizeof(rpt_lun_lst_t));
34322 +               pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1);
34323 +               pkt->p.cmd.timeout = __constant_cpu_to_le16(10);
34324 +               pkt->p.cmd.byte_count =
34325 +                   __constant_cpu_to_le32(sizeof(rpt_lun_lst_t));
34326 +               pkt->p.cmd.dseg_0_address[0] = cpu_to_le32(
34327 +                   LSD(phys_address + sizeof(sts_entry_t)));
34328 +               pkt->p.cmd.dseg_0_address[1] = cpu_to_le32(
34329 +                   MSD(phys_address + sizeof(sts_entry_t)));
34330 +               pkt->p.cmd.dseg_0_length =
34331 +                   __constant_cpu_to_le32(sizeof(rpt_lun_lst_t));
34332 +
34333 +               rval = qla2x00_issue_iocb(ha,
34334 +                   pkt, phys_address, sizeof(rpt_lun_cmd_rsp_t));
34335 +
34336 +               comp_status = le16_to_cpu(pkt->p.rsp.comp_status);
34337 +               scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status);
34338 +
34339 +               if (rval != QLA2X00_SUCCESS ||
34340 +                   comp_status != CS_COMPLETE ||
34341 +                   scsi_status & SS_CHECK_CONDITION) {
34342 +
34343 +                       /* Device underrun, treat as OK. */
34344 +                       if (comp_status == CS_DATA_UNDERRUN &&
34345 +                           scsi_status & SS_RESIDUAL_UNDER) {
34346 +
34347 +                               rval = QLA2X00_SUCCESS;
34348 +                               break;
34349 +                       }
34350 +
34351 +                       DEBUG(printk("scsi(%ld): RLC failed to issue iocb! "
34352 +                           "fcport = %p rval = %x cs = %x ss = %x\n",
34353 +                           ha->host_no,
34354 +                           fcport,
34355 +                           rval, comp_status, scsi_status));
34356 +
34357 +                       rval = QLA2X00_FAILED;
34358 +                       if (scsi_status & SS_CHECK_CONDITION) {
34359 +                               DEBUG2(printk("scsi(%ld): RLC "
34360 +                                   "SS_CHECK_CONDITION Sense Data "
34361 +                                   "%02x %02x %02x %02x %02x %02x %02x %02x\n",
34362 +                                   ha->host_no,
34363 +                                   pkt->p.rsp.req_sense_data[0],
34364 +                                   pkt->p.rsp.req_sense_data[1],
34365 +                                   pkt->p.rsp.req_sense_data[2],
34366 +                                   pkt->p.rsp.req_sense_data[3],
34367 +                                   pkt->p.rsp.req_sense_data[4],
34368 +                                   pkt->p.rsp.req_sense_data[5],
34369 +                                   pkt->p.rsp.req_sense_data[6],
34370 +                                   pkt->p.rsp.req_sense_data[7]));
34371 +                               /* No point in retrying if ILLEGAL REQUEST */
34372 +                               if (pkt->p.rsp.req_sense_data[2] ==
34373 +                                   ILLEGAL_REQUEST) {
34374 +                                       /* Clear RLC support flag */
34375 +                                       fcport->flags &= ~(FC_SUPPORT_RPT_LUNS);
34376 +                                       break;
34377 +                               }
34378 +                       }
34379 +               } else {
34380 +                       break;
34381 +               }
34382 +       }
34383 +
34384 +       /* Test for report LUN failure. */
34385 +       if (rval == QLA2X00_SUCCESS) {
34386 +               /* Configure LUN list. */
34387 +               len = be32_to_cpu(pkt->list.hdr.len);
34388 +               len /= 8;
34389 +               if (len == 0) {
34390 +                       rval = QLA2X00_FAILED;
34391 +               } else {
34392 +                       for (cnt = 0; cnt < len; cnt++) {
34393 +                               lun = CHAR_TO_SHORT(pkt->list.lst[cnt].lsb,
34394 +                                   pkt->list.lst[cnt].msb.b);
34395 +
34396 +                               DEBUG3(printk("scsi(%ld): RLC lun = (%d)\n",
34397 +                                   ha->host_no, lun));
34398 +
34399 +                               /* We only support 0 through MAX_LUNS-1 range */
34400 +                               if (lun < MAX_LUNS) {
34401 +                                       qla2x00_cfg_lun(fcport, lun);
34402 +                               }
34403 +                       }
34404 +                       rval = QLA2X00_SUCCESS;
34405 +               }
34406 +       } else {
34407 +               rval = QLA2X00_FAILED;
34408 +       }
34409 +
34410 +       pci_free_consistent(ha->pdev,
34411 +           sizeof(rpt_lun_cmd_rsp_t), pkt, phys_address);
34412 +
34413 +
34414 +       LEAVE(__func__);
34415 +
34416 +       return (rval);
34417 +}
34418 +
34419 +/*
34420 + * qla2x00_cfg_lun
34421 + *     Configures LUN into fcport LUN list.
34422 + *
34423 + * Input:
34424 + *     fcport:         FC port structure pointer.
34425 + *     lun:            LUN number.
34426 + *
34427 + * Context:
34428 + *     Kernel context.
34429 + */
34430 +static void
34431 +qla2x00_cfg_lun(fc_port_t *fcport, uint16_t lun) 
34432 +{
34433 +       int                     found;
34434 +       struct list_head        *fcll;
34435 +       fc_lun_t                *fclun;
34436 +
34437 +       /* Allocate LUN if not already allocated. */
34438 +       found = 0;
34439 +       list_for_each(fcll, &fcport->fcluns) {
34440 +               fclun = list_entry(fcll, fc_lun_t, list);
34441 +
34442 +               if (fclun->lun == lun) {
34443 +                       found++;
34444 +                       break;
34445 +               }
34446 +       }
34447 +       if (!found) {
34448 +               fclun = kmalloc(sizeof(fc_lun_t), GFP_ATOMIC);
34449 +               if (fclun != NULL) {
34450 +                       fcport->lun_cnt++;
34451 +                       /* Setup LUN structure. */
34452 +                       memset(fclun, 0, sizeof(fc_lun_t));
34453 +                       fclun->fcport = fcport;
34454 +                       fclun->lun = lun;
34455 +                       /* How dow we assign the following */
34456 +                       /*  fclun->state = FCS_ONLINE; */
34457 +
34458 +                       list_add_tail(&fclun->list, &fcport->fcluns);
34459 +               } else {
34460 +                       printk(KERN_WARNING
34461 +                               "%s(): Memory Allocation failed - FCLUN\n",
34462 +                               __func__);
34463 +               }
34464 +       }
34465 +}
34466 +
34467 +/*
34468 + * qla2x00_tgt_alloc
34469 + *     Allocate and pre-initialize target queue.
34470 + *
34471 + * Input:
34472 + *     ha = adapter block pointer.
34473 + *     t = SCSI target number.
34474 + *
34475 + * Returns:
34476 + *     NULL = failure
34477 + *
34478 + * Context:
34479 + *     Kernel context.
34480 + */
34481 +os_tgt_t *
34482 +qla2x00_tgt_alloc(scsi_qla_host_t *ha, uint16_t t) 
34483 +{
34484 +       os_tgt_t        *tq;
34485 +
34486 +       ENTER(__func__);
34487 +
34488 +       /*
34489 +        * If SCSI addressing OK, allocate TGT queue and lock.
34490 +        */
34491 +       if (t >= MAX_TARGETS) {
34492 +               DEBUG2(printk("%s(%ld): *** Invalid target number, exiting ***",
34493 +                               __func__,
34494 +                               ha->host_no);)
34495 +               return (NULL);
34496 +       }
34497 +
34498 +       tq = TGT_Q(ha, t);
34499 +       if (tq == NULL) {
34500 +               tq = kmalloc(sizeof(os_tgt_t), GFP_ATOMIC);
34501 +               if (tq != NULL) {
34502 +                       DEBUG(printk("Alloc Target %d @ %p\n", t, tq);)
34503 +
34504 +                       memset(tq, 0, sizeof(os_tgt_t));
34505 +                       tq->flags = TGT_TAGGED_QUEUE;
34506 +                       tq->ha = ha;
34507 +
34508 +                       TGT_Q(ha, t) = tq;
34509 +               }
34510 +       }
34511 +       if (tq != NULL) {
34512 +               tq->port_down_retry_count = ha->port_down_retry_count;
34513 +       } else {
34514 +               printk(KERN_WARNING
34515 +                       "%s(%ld): Failed to allocate target\n",
34516 +                       __func__,
34517 +                       ha->host_no);
34518 +               ha->mem_err++;
34519 +       }
34520 +
34521 +       LEAVE(__func__);
34522 +
34523 +       return (tq);
34524 +}
34525 +
34526 +/*
34527 + * qla2x00_tgt_free
34528 + *     Frees target and LUN queues.
34529 + *
34530 + * Input:
34531 + *     ha = adapter block pointer.
34532 + *     t = SCSI target number.
34533 + *
34534 + * Context:
34535 + *     Kernel context.
34536 + */
34537 +void
34538 +qla2x00_tgt_free(scsi_qla_host_t *ha, uint16_t t) 
34539 +{
34540 +       os_tgt_t        *tq;
34541 +       uint16_t        l;
34542 +
34543 +       ENTER(__func__);
34544 +
34545 +       /*
34546 +        * If SCSI addressing OK, allocate TGT queue and lock.
34547 +        */
34548 +       if (t >= MAX_TARGETS) {
34549 +               DEBUG2(printk("%s(): **** FAILED exiting ****", __func__);)
34550 +
34551 +               return;
34552 +       }
34553 +
34554 +       tq = TGT_Q(ha, t);
34555 +       if (tq != NULL) {
34556 +               TGT_Q(ha, t) = NULL;
34557 +               DEBUG(printk("Dealloc target @ %p -- deleted\n", tq);)
34558 +
34559 +               /* Free LUN structures. */
34560 +               for (l = 0; l < MAX_LUNS; l++)
34561 +                       qla2x00_lun_free(ha, t, l);
34562 +
34563 +               kfree(tq);
34564 +       }
34565 +
34566 +       LEAVE(__func__);
34567 +
34568 +       return;
34569 +}
34570 +
34571 +/*
34572 + * qla2x00_lun_alloc
34573 + *     Allocate and initialize LUN queue.
34574 + *
34575 + * Input:
34576 + *     ha = adapter block pointer.
34577 + *     t = SCSI target number.
34578 + *     l = LUN number.
34579 + *
34580 + * Returns:
34581 + *     NULL = failure
34582 + *
34583 + * Context:
34584 + *     Kernel context.
34585 + */
34586 +os_lun_t *
34587 +qla2x00_lun_alloc(scsi_qla_host_t *ha, uint16_t t, uint16_t l) 
34588 +{
34589 +       os_lun_t        *lq;
34590 +
34591 +       ENTER(__func__);
34592 +
34593 +       /*
34594 +        * If SCSI addressing OK, allocate LUN queue.
34595 +        */
34596 +       if (t >= MAX_TARGETS || 
34597 +               l >= MAX_LUNS || 
34598 +               TGT_Q(ha, t) == NULL) {
34599 +
34600 +               DEBUG2(printk("%s(): tgt=%d, tgt_q= %p, lun=%d, "
34601 +                               "instance=%ld **** FAILED exiting ****\n",
34602 +                               __func__,
34603 +                               t,
34604 +                               TGT_Q(ha,t),
34605 +                               l,
34606 +                               ha->instance);)
34607 +
34608 +               return (NULL);
34609 +       }
34610 +
34611 +       lq = LUN_Q(ha, t, l);
34612 +       if (lq == NULL) {
34613 +               lq = kmalloc(sizeof(os_lun_t), GFP_ATOMIC);
34614 +               if (lq != NULL) {
34615 +
34616 +                       DEBUG5(printk("Alloc Lun %d @ %p \n",l,lq);)
34617 +
34618 +                       memset(lq, 0, sizeof (os_lun_t));
34619 +                       LUN_Q(ha, t, l) = lq;
34620 +                       /*
34621 +                        * The following lun queue initialization code
34622 +                        * must be duplicated in alloc_ioctl_mem function
34623 +                        * for ioctl_lq.
34624 +                        */
34625 +                       lq->q_state = LUN_STATE_READY;
34626 +                       spin_lock_init(&lq->q_lock);
34627 +               } else {
34628 +                       /*EMPTY*/
34629 +                       DEBUG2(printk("%s(): Failed to allocate lun %d ***\n",
34630 +                                       __func__,
34631 +                                       l);)
34632 +                       printk(KERN_WARNING
34633 +                               "scsi(%ld): Memory Allocation failed - FCLUN\n",
34634 +                               ha->host_no);
34635 +                       ha->mem_err++;
34636 +               }
34637 +       }
34638 +
34639 +       if (lq == NULL) {
34640 +               DEBUG2(printk("%s(): **** FAILED exiting ****\n", __func__);)
34641 +       } else {
34642 +               LEAVE(__func__);
34643 +       }
34644 +
34645 +       return (lq);
34646 +}
34647 +
34648 +/*
34649 + * qla2x00_lun_free
34650 + *     Frees LUN queue.
34651 + *
34652 + * Input:
34653 + *     ha = adapter block pointer.
34654 + *     t = SCSI target number.
34655 + *
34656 + * Context:
34657 + *     Kernel context.
34658 + */
34659 +static void
34660 +qla2x00_lun_free(scsi_qla_host_t *ha, uint16_t t, uint16_t l) 
34661 +{
34662 +       os_lun_t        *lq;
34663 +
34664 +       ENTER(__func__);
34665 +
34666 +       /*
34667 +        * If SCSI addressing OK, allocate TGT queue and lock.
34668 +        */
34669 +       if (t >= MAX_TARGETS || l >= MAX_LUNS) {
34670 +               DEBUG2(printk("%s(): **** FAILED exiting ****", __func__);)
34671 +
34672 +               return;
34673 +       }
34674 +
34675 +       if (TGT_Q(ha, t) != NULL && 
34676 +               (lq = LUN_Q(ha, t, l)) != NULL) {
34677 +
34678 +               LUN_Q(ha, t, l) = NULL;
34679 +               kfree(lq);
34680 +
34681 +               DEBUG3(printk("Dealloc lun @ %p -- deleted\n", lq);)
34682 +       }
34683 +
34684 +       LEAVE(__func__);
34685 +
34686 +       return;
34687 +}
34688 +
34689 +
34690 +/*
34691 + * qla2x00_get_lun_mask_from_config
34692 + *      Get lun mask from the configuration parameters.
34693 + *      Bit order is little endian.
34694 + *
34695 + * Input:
34696 + * ha  -- Host adapter
34697 + * tgt  -- target/device number
34698 + * port -- pointer to port
34699 + */
34700 +static void
34701 +qla2x00_get_lun_mask_from_config(scsi_qla_host_t *ha, 
34702 +               fc_port_t *port, uint16_t tgt, uint16_t dev_no) 
34703 +{
34704 +       char            propbuf[60]; /* size of search string */
34705 +       int             rval, lun, l;
34706 +       lun_bit_mask_t  lun_mask, *mask_ptr = &lun_mask;
34707 +
34708 +       /* Get "target-N-device-N-lun-mask" as a 256 bit lun_mask*/
34709 +       sprintf(propbuf, "scsi-qla%ld-tgt-%d-di-%d-lun-disabled",
34710 +                       ha->instance, tgt, dev_no);
34711 +
34712 +       rval = qla2x00_get_prop_xstr(ha, propbuf, (uint8_t *)&lun_mask,
34713 +                       sizeof(lun_bit_mask_t));
34714 +       if (rval != -1 && 
34715 +               (rval == sizeof(lun_bit_mask_t))) {
34716 +
34717 +               DEBUG3(printk("%s(%ld): lun mask for port %p from file:\n",
34718 +                               __func__,
34719 +                               ha->host_no, 
34720 +                               port);)
34721 +               DEBUG3(qla2x00_dump_buffer((uint8_t *)&port->lun_mask,
34722 +                                       sizeof(lun_bit_mask_t));)
34723 +
34724 +               for (lun = 8 * sizeof(lun_bit_mask_t) - 1, l = 0; 
34725 +                       lun >= 0; 
34726 +                       lun--, l++) {
34727 +
34728 +                       if (EXT_IS_LUN_BIT_SET(mask_ptr, lun))
34729 +                               EXT_SET_LUN_BIT((&port->lun_mask),l);
34730 +                       else
34731 +                               EXT_CLR_LUN_BIT((&port->lun_mask),l);
34732 +               }
34733 +
34734 +               DEBUG3(printk("%s(%ld): returning lun mask for port "
34735 +                               "%02x%02x%02x%02x%02x%02x%02x%02x:\n",
34736 +                               __func__,
34737 +                               ha->host_no, 
34738 +                               port->port_name[0], port->port_name[1],
34739 +                               port->port_name[2], port->port_name[3],
34740 +                               port->port_name[4], port->port_name[5],
34741 +                               port->port_name[6], port->port_name[7]);)
34742 +               DEBUG3(qla2x00_dump_buffer((uint8_t *)&port->lun_mask,
34743 +                               sizeof(lun_bit_mask_t));)
34744 +       }
34745 +}
34746 +
34747 +/*
34748 + * qla2x00_bstr_to_hex
34749 + *     Convert hex byte string to number.
34750 + *
34751 + * Input:
34752 + *     s = byte string pointer.
34753 + *     bp = byte pointer for number.
34754 + *     size = number of bytes.
34755 + *
34756 + * Context:
34757 + *     Kernel/Interrupt context.
34758 + */
34759 +static int
34760 +qla2x00_bstr_to_hex(char *s, uint8_t *bp, int size) 
34761 +{
34762 +       int             cnt;
34763 +       uint8_t         n;
34764 +
34765 +       ENTER(__func__);
34766 +
34767 +       for (cnt = 0; *s != '\0' && cnt / 2 < size; cnt++) {
34768 +               if (*s >= 'A' && *s <= 'F') {
34769 +                       n = (*s++ - 'A') + 10;
34770 +               } else if (*s >= 'a' && *s <= 'f') {
34771 +                       n = (*s++ - 'a') + 10;
34772 +               } else if (*s >= '0' && *s <= '9') {
34773 +                       n = *s++ - '0';
34774 +               } else {
34775 +                       cnt = 0;
34776 +                       break;
34777 +               }
34778 +
34779 +               if (cnt & BIT_0)
34780 +                       *bp++ |= n;
34781 +               else
34782 +                       *bp = n << 4;
34783 +       }
34784 +       /* fixme(dg) Need to swap data little endian */
34785 +
34786 +       LEAVE(__func__);
34787 +
34788 +       return (cnt / 2);
34789 +}
34790 +
34791 +/*
34792 + * qla2x00_get_prop_xstr
34793 + *      Get a string property value for the specified property name and
34794 + *      convert from the property string found in the configuration file,
34795 + *      which are ASCII characters representing nibbles, 2 characters represent
34796 + *      the hexdecimal value for a byte in the byte array.
34797 + *      The byte array is initialized to zero.
34798 + *      The resulting converted value is in big endian format (MSB at byte0).
34799 + *
34800 + * Input:
34801 + *      ha = adapter state pointer.
34802 + *      propname = property name pointer.
34803 + *      propval  = pointer where to store converted property val.
34804 + *      size = max or expected size of 'propval' array.
34805 + *
34806 + * Returns:
34807 + *      0 = empty value string or invalid character in string
34808 + *      >0 = count of characters converted
34809 + *      -1 = property not found
34810 + *
34811 + * Context:
34812 + *      Kernel context.
34813 + */
34814 +int
34815 +qla2x00_get_prop_xstr(scsi_qla_host_t *ha, 
34816 +               char *propname, uint8_t *propval, int size) 
34817 +{
34818 +       char            *propstr;
34819 +       int             rval = -1;
34820 +       static char     buf[LINESIZE];
34821 +
34822 +       ENTER(__func__);
34823 +
34824 +       /* Get the requested property string */
34825 +       rval = qla2x00_find_propname(ha, propname, buf, ha->cmdline, size*2);
34826 +       DEBUG3(printk("%s(): Ret rval from find propname = %d\n",
34827 +                       __func__,
34828 +                       rval);)
34829 +
34830 +       propstr = &buf[0];
34831 +       if (*propstr == '=')
34832 +               propstr++;   /* ignore equal sign */
34833 +
34834 +       if (rval == 0) {  /* not found */
34835 +               LEAVE(__func__);
34836 +               return (-1);
34837 +       }
34838 +
34839 +       rval = qla2x00_bstr_to_hex(propstr, (uint8_t *)propval, size);
34840 +       if (rval == 0) {
34841 +               /* Invalid character in value string */
34842 +               printk(KERN_INFO
34843 +                       "%s(): %s Invalid hex string for property\n",
34844 +                       __func__,
34845 +                       propname);
34846 +               printk(KERN_INFO
34847 +                       " Invalid string - %s\n", 
34848 +                       propstr);
34849 +       }
34850 +
34851 +       LEAVE(__func__);
34852 +
34853 +       return (rval);
34854 +}
34855 +
34856 +/*
34857 + * qla2x00_find_propname
34858 + *     Get property in database.
34859 + *
34860 + * Input:
34861 + *     ha = adapter structure pointer.
34862 + *      db = pointer to database
34863 + *      propstr = pointer to dest array for string
34864 + *     propname = name of property to search for.
34865 + *     siz = size of property
34866 + *
34867 + * Returns:
34868 + *     0 = no property
34869 + *      size = index of property
34870 + *
34871 + * Context:
34872 + *     Kernel context.
34873 + */
34874 +static uint8_t
34875 +qla2x00_find_propname(scsi_qla_host_t *ha, 
34876 +                       char *propname, char *propstr, 
34877 +                       char *db, int siz) 
34878 +{
34879 +       char    *cp;
34880 +
34881 +       /* find the specified string */
34882 +       if (db) {
34883 +               /* find the property name */
34884 +               if ((cp = strstr(db,propname)) != NULL) {
34885 +                       while ((*cp)  && *cp != '=')
34886 +                               cp++;
34887 +                       if (*cp) {
34888 +                               strncpy(propstr, cp, siz+1);
34889 +                               propstr[siz+1] = '\0';
34890 +                               DEBUG(printk("qla2x00_find_propname: found "
34891 +                                               "property = {%s}\n",
34892 +                                               propstr);)
34893 +                               return (siz);   /* match */
34894 +                       }
34895 +               }
34896 +       }
34897 +
34898 +       return (0);
34899 +}
34900 +
34901 +
34902 +/*
34903 + * qla2x00_get_prop_16chars
34904 + *     Get an 8-byte property value for the specified property name by
34905 + *      converting from the property string found in the configuration file.
34906 + *      The resulting converted value is in big endian format (MSB at byte0).
34907 + *
34908 + * Input:
34909 + *     ha = adapter state pointer.
34910 + *     propname = property name pointer.
34911 + *     propval  = pointer to location for the converted property val.
34912 + *      db = pointer to database
34913 + *
34914 + * Returns:
34915 + *     0 = value returned successfully.
34916 + *
34917 + * Context:
34918 + *     Kernel context.
34919 + */
34920 +static int
34921 +qla2x00_get_prop_16chars(scsi_qla_host_t *ha,
34922 +                               char *propname, char *propval, char *db) 
34923 +{
34924 +       char            *propstr;
34925 +       int             i, k;
34926 +       int             rval;
34927 +       uint8_t         nval;
34928 +       uint8_t         *pchar;
34929 +       uint8_t         *ret_byte;
34930 +       uint8_t         *tmp_byte;
34931 +       uint8_t         *retval = (uint8_t*)propval;
34932 +       uint8_t         tmpval[8] = {0, 0, 0, 0, 0, 0, 0, 0};
34933 +       uint16_t        max_byte_cnt = 8; /* 16 chars = 8 bytes */
34934 +       uint16_t        max_strlen = 16;
34935 +       static char     buf[LINESIZE];
34936 +
34937 +       rval = qla2x00_find_propname(ha, propname, buf, db, max_strlen);
34938 +
34939 +       propstr = &buf[0];
34940 +       if (*propstr == '=')
34941 +               propstr++;   /* ignore equal sign */
34942 +
34943 +       if (rval == 0) {
34944 +               return (1);
34945 +       }
34946 +
34947 +       /* Convert string to numbers. */
34948 +       pchar = (uint8_t *)propstr;
34949 +       tmp_byte = (uint8_t *)tmpval;
34950 +
34951 +       rval = 0;
34952 +       for (i = 0; i < max_strlen; i++) {
34953 +               /*
34954 +                * Check for invalid character, two at a time,
34955 +                * then convert them starting with first byte.
34956 +                */
34957 +
34958 +               if ((pchar[i] >= '0') && (pchar[i] <= '9')) {
34959 +                       nval = pchar[i] - '0';
34960 +               } else if ((pchar[i] >= 'A') && (pchar[i] <= 'F')) {
34961 +                       nval = pchar[i] - 'A' + 10;
34962 +               } else if ((pchar[i] >= 'a') && (pchar[i] <= 'f')) {
34963 +                       nval = pchar[i] - 'a' + 10;
34964 +               } else {
34965 +                       /* invalid character */
34966 +                       rval = 1;
34967 +                       break;
34968 +               }
34969 +
34970 +               if (i & BIT_0) {
34971 +                       *tmp_byte = *tmp_byte | nval;
34972 +                       tmp_byte++;
34973 +               } else {
34974 +                       *tmp_byte = *tmp_byte | nval << 4;
34975 +               }
34976 +       }
34977 +
34978 +       if (rval != 0) {
34979 +               /* Encountered invalid character. */
34980 +               return (rval);
34981 +       }
34982 +
34983 +       /* Copy over the converted value. */
34984 +       ret_byte = retval;
34985 +       tmp_byte = tmpval;
34986 +
34987 +       i = max_byte_cnt;
34988 +       k = 0;
34989 +       while (i--) {
34990 +               *ret_byte++ = *tmp_byte++;
34991 +       }
34992 +
34993 +       /* big endian retval[0]; */
34994 +       return (0);
34995 +}
34996 +
34997 +/*
34998 +* qla2x00_get_properties
34999 +*      Find all properties for the specified adapeter in
35000 +*      command line.
35001 +*
35002 +* Input:
35003 +*      ha = adapter block pointer.
35004 +*      cmdline = pointer to command line string
35005 +*
35006 +* Context:
35007 +*      Kernel context.
35008 +*/
35009 +static void
35010 +qla2x00_get_properties(scsi_qla_host_t *ha, char *cmdline) 
35011 +{
35012 +       static char     propbuf[LINESIZE];
35013 +       uint8_t         tmp_name[8];
35014 +
35015 +       /* Adapter FC node names. */
35016 +       sprintf(propbuf, "scsi-qla%d-adapter-node", (int) ha->instance);
35017 +       qla2x00_get_prop_16chars (ha, 
35018 +                       propbuf,
35019 +                       (uint8_t *)(&ha->init_cb->node_name), 
35020 +                       cmdline);
35021 +
35022 +       sprintf(propbuf, "scsi-qla%d-adapter-port", (int) ha->instance);
35023 +
35024 +       /* DG 04/07 check portname of adapter */
35025 +       qla2x00_get_prop_16chars (ha, 
35026 +                       propbuf,
35027 +                       tmp_name, 
35028 +                       cmdline);
35029 +       if (memcmp(ha->init_cb->port_name, tmp_name, 8) != 0) {
35030 +               /*
35031 +                * Adapter port name is WWN, and cannot be changed.
35032 +                * Inform users of the mismatch, then just continue driver
35033 +                * loading using the original adapter port name in NVRAM.
35034 +                */
35035 +               printk(KERN_WARNING
35036 +                       "qla2x00: qla%ld found mismatch in "
35037 +                       "adapter port names.\n",
35038 +                       ha->instance);
35039 +               printk(KERN_INFO
35040 +                       "       qla%ld port name found in NVRAM "
35041 +                       "-> %02x%02x%02x%02x%02x%02x%02x%02x\n",
35042 +                       ha->instance,
35043 +                       ha->init_cb->port_name[0],
35044 +                       ha->init_cb->port_name[1],
35045 +                       ha->init_cb->port_name[2],
35046 +                       ha->init_cb->port_name[3],
35047 +                       ha->init_cb->port_name[4],
35048 +                       ha->init_cb->port_name[5],
35049 +                       ha->init_cb->port_name[6],
35050 +                       ha->init_cb->port_name[7]);
35051 +               printk(KERN_INFO
35052 +                       "      qla%ld port name found on command line "
35053 +                       "-> %02x%02x%02x%02x%02x%02x%02x%02x\n",
35054 +                       ha->instance,
35055 +                       tmp_name[0],
35056 +                       tmp_name[1],
35057 +                       tmp_name[2],
35058 +                       tmp_name[3],
35059 +                       tmp_name[4],
35060 +                       tmp_name[5],
35061 +                       tmp_name[6],
35062 +                       tmp_name[7]);
35063 +               printk(KERN_INFO
35064 +                       "      Using port name from NVRAM.\n");
35065 +       }
35066 +
35067 +       qla2x00_cfg_persistent_binding(ha);
35068 +}
35069 +
35070 +/*
35071 + * qla2x00_cfg_persistent_binding
35072 + *     Get driver configuration file target persistent binding entries.
35073 + *
35074 + * Input:
35075 + *     ha = adapter block pointer.
35076 + *
35077 + * Context:
35078 + *     Kernel context.
35079 + */
35080 +static void
35081 +qla2x00_cfg_persistent_binding(scsi_qla_host_t *ha) 
35082 +{
35083 +       int             rval;
35084 +       static char     propbuf[LINESIZE];
35085 +       uint16_t        tgt;
35086 +       uint16_t        dev_no = 0; /* not used */
35087 +       char            *cmdline = ha->cmdline;
35088 +       port_id_t       d_id, *pd_id;
35089 +       uint8_t         portid[3];
35090 +       uint8_t         node_name[8], *pnn;
35091 +       uint8_t         port_name[8], *ppn;
35092 +       os_tgt_t        *tq;
35093 +
35094 +       ENTER(__func__);
35095 +
35096 +       /* FC name for devices */
35097 +       for (tgt = 0; tgt < MAX_FIBRE_DEVICES; tgt++) {
35098 +
35099 +               /*
35100 +                * Retrive as much information as possible (PN/PID/NN).
35101 +                *
35102 +                * Based on binding type, skip incomplete entries.
35103 +                */
35104 +               ppn = port_name;
35105 +               sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-port",
35106 +                               (int)ha->instance, tgt, dev_no);
35107 +               rval = qla2x00_get_prop_16chars(ha, propbuf, ppn, cmdline);
35108 +               if (rval != 0)
35109 +                       ppn = NULL;
35110 +               if (ha->binding_type == BIND_BY_PORT_NAME && rval != 0)
35111 +                       continue;
35112 +
35113 +               pd_id = &d_id;
35114 +               sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-pid",
35115 +                               (int)ha->instance, tgt, dev_no);
35116 +               rval = qla2x00_get_prop_xstr(ha,
35117 +                               propbuf, portid, sizeof(portid));
35118 +               if (rval == -1 || rval != sizeof(portid))
35119 +                       pd_id = NULL;
35120 +               if (ha->binding_type == BIND_BY_PORT_ID &&
35121 +                       (rval == -1 || rval != sizeof(portid)))
35122 +                       continue;
35123 +
35124 +               pnn = node_name;
35125 +               sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-node",
35126 +                               (int)ha->instance, tgt, dev_no);
35127 +               rval = qla2x00_get_prop_16chars(ha, propbuf, pnn, cmdline);
35128 +               if (rval != 0)
35129 +                       pnn = NULL;
35130 +               if (ha->binding_type == BIND_BY_NODE_NAME && rval != 0)
35131 +                       continue;
35132 +
35133 +               tq = qla2x00_tgt_alloc(ha, tgt);
35134 +               if (tq == NULL) {
35135 +                       printk(KERN_WARNING
35136 +                               "%s(): Unable to allocate memory for target\n",
35137 +                               __func__);
35138 +                       continue;
35139 +               }
35140 +
35141 +               ha->fc_db[tgt].loop_id = PORT_AVAILABLE;
35142 +               ha->fc_db[tgt].flag = 0;  /* v2.19.05b3 */
35143 +               ha->fc_db[tgt].flag |= DEV_CONFIGURED;
35144 +
35145 +               if (ppn != NULL) {
35146 +                       memcpy(tq->port_name, ppn, WWN_SIZE);
35147 +                       memcpy(ha->fc_db[tgt].wwn, ppn, WWN_SIZE);
35148 +               }
35149 +               if (pd_id != NULL) {
35150 +                       /*
35151 +                        * The portid is read in big-endian format, convert 
35152 +                        * before updating information
35153 +                        */
35154 +                       pd_id->r.d_id[0] = portid[2];
35155 +                       pd_id->r.d_id[1] = portid[1];
35156 +                       pd_id->r.d_id[2] = portid[0];
35157 +                       tq->d_id.b24 = pd_id->b24;
35158 +                       ha->fc_db[tgt].d_id.b24 = pd_id->b24;
35159 +               }
35160 +               if (pnn != NULL) {
35161 +                       memcpy(tq->node_name, pnn, WWN_SIZE);
35162 +                       memcpy(ha->fc_db[tgt].name, pnn, WWN_SIZE);
35163 +               }
35164 +
35165 +               DEBUG(printk("Target %03d - configured by user: ",tgt);)
35166 +               switch (ha->binding_type) {
35167 +                       case BIND_BY_PORT_NAME:
35168 +                               DEBUG(printk("tgt-%03d="
35169 +                                       "%02x%02x%02x%02x%02x%02x%02x%02x\n",
35170 +                                       tgt,
35171 +                                       ppn[0], ppn[1], ppn[2], ppn[3],
35172 +                                       ppn[4], ppn[5], ppn[6], ppn[7]);)
35173 +                               break;
35174 +
35175 +                       case BIND_BY_PORT_ID:
35176 +                               DEBUG(printk("tgt-%03d=%02x%02x%02x\n",
35177 +                                       tgt,
35178 +                                       pd_id->b.domain,
35179 +                                       pd_id->b.area,
35180 +                                       pd_id->b.al_pa));
35181 +                               break;
35182 +
35183 +                       case BIND_BY_NODE_NAME:
35184 +                               DEBUG(printk("tgt-%03d="
35185 +                                       "%02x%02x%02x%02x%02x%02x%02x%02x\n",
35186 +                                       tgt,
35187 +                                       pnn[0], pnn[1], pnn[2], pnn[3],
35188 +                                       pnn[4], pnn[5], pnn[6], pnn[7]);)
35189 +                               break;
35190 +               }
35191 +               /* look for VSA */
35192 +#if VSA
35193 +               qla2x00_get_vsa_opt_from_config(ha, tgt, dev_no);
35194 +#endif
35195 +
35196 +       }
35197 +
35198 +       LEAVE(__func__);
35199 +}
35200 +
35201 +/*
35202 +*  qla2x00_abort_isp
35203 +*      Resets ISP and aborts all outstanding commands.
35204 +*
35205 +* Input:
35206 +*      ha           = adapter block pointer.
35207 +*
35208 +* Returns:
35209 +*      0 = success
35210 +*/
35211 +uint8_t
35212 +qla2x00_abort_isp(scsi_qla_host_t *ha, uint8_t flag)
35213 +{
35214 +       unsigned long flags = 0;
35215 +       uint16_t       cnt;
35216 +       srb_t          *sp;
35217 +       uint8_t        status = 0;
35218 +
35219 +       ENTER("qla2x00_abort_isp");
35220 +
35221 +       if (ha->flags.online) {
35222 +               ha->flags.online = FALSE;
35223 +               clear_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
35224 +               clear_bit(COMMAND_WAIT_ACTIVE, &ha->dpc_flags);
35225 +               clear_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
35226 +               qla2x00_stats.ispAbort++;
35227 +               ha->total_isp_aborts++;  /* used by ioctl */
35228 +               ha->sns_retry_cnt = 0;
35229 +
35230 +               printk(KERN_INFO
35231 +                   "scsi(%ld): Performing ISP error recovery - ha= %p.\n",
35232 +                   ha->host_no, ha);
35233 +               qla2x00_reset_chip(ha);
35234 +
35235 +               if (ha->loop_state != LOOP_DOWN) {
35236 +                       ha->loop_state = LOOP_DOWN;
35237 +                       atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
35238 +                       qla2x00_mark_all_devices_lost(ha);
35239 +               }
35240 +
35241 +#if defined(FC_IP_SUPPORT)
35242 +               /* Return all IP send packets */
35243 +               for (cnt = 0; cnt < MAX_SEND_PACKETS; cnt++) {
35244 +                       if (ha->active_scb_q[cnt] != NULL) {
35245 +                               /* Via IP callback */
35246 +                               (*ha->send_completion_routine)
35247 +                                       (ha->active_scb_q[cnt]);
35248 +
35249 +                               ha->active_scb_q[cnt] = NULL;
35250 +                       }
35251 +               }
35252 +#endif
35253 +
35254 +               spin_lock_irqsave(&ha->hardware_lock, flags);
35255 +               /* Requeue all commands in outstanding command list. */
35256 +               for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) {
35257 +                       sp = ha->outstanding_cmds[cnt];
35258 +                       if (sp) {
35259 +                               ha->outstanding_cmds[cnt] = 0;
35260 +                               if( ha->actthreads )
35261 +                                       ha->actthreads--;
35262 +                               sp->lun_queue->out_cnt--;
35263 +#if defined(IOCB_THROLLE_USAGE)
35264 +                               ha->iocb_cnt -= sp->iocb_cnt;
35265 +#endif
35266 +                               
35267 +                               sp->flags = 0;
35268 +
35269 +                               /* 
35270 +                                * We need to send the command back to OS now 
35271 +                                * if returning RESET status for kernel's 
35272 +                                * error handling.
35273 +                                */
35274 +                               if (flag == 0) {
35275 +                                       CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
35276 +                               } else {
35277 +                                       CMD_RESULT(sp->cmd) = DID_RESET << 16;
35278 +                               }
35279 +                               CMD_HANDLE(sp->cmd) = (unsigned char *) NULL;
35280 +                               add_to_done_queue(ha, sp);
35281 +                       }
35282 +               }
35283 +
35284 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
35285 +
35286 +#if defined(ISP2100)
35287 +               qla2100_nvram_config(ha);
35288 +#else
35289 +               qla2x00_nvram_config(ha);
35290 +#endif
35291 +
35292 +               if (!qla2x00_restart_isp(ha)) {
35293 +                       clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
35294 +
35295 +                       if (!atomic_read(&ha->loop_down_timer)) {
35296 +                               /*
35297 +                                * Issue marker command only when we are going
35298 +                                * to start the I/O .
35299 +                                */
35300 +                               ha->marker_needed = 1;
35301 +                       }
35302 +
35303 +                       ha->flags.online = TRUE;
35304 +
35305 +#if defined(FC_IP_SUPPORT)
35306 +                       /* Reenable IP support */
35307 +                       if (ha->flags.enable_ip) {
35308 +                               set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
35309 +                               qla2x00_ip_initialize(ha);
35310 +                       }
35311 +#endif
35312 +                       /* Enable ISP interrupts. */
35313 +                       qla2x00_enable_intrs(ha);
35314 +
35315 +                       /* v2.19.5b6 Return all commands */
35316 +                       qla2x00_abort_queues(ha, TRUE);
35317 +
35318 +                       /* Restart queues that may have been stopped. */
35319 +                       qla2x00_restart_queues(ha,TRUE);
35320 +                       ha->isp_abort_cnt = 0; 
35321 +                       clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
35322 +               } else {        /* failed the ISP abort */
35323 +                       ha->flags.online = TRUE;
35324 +                       if( test_bit(ISP_ABORT_RETRY, &ha->dpc_flags) ){
35325 +                               if( ha->isp_abort_cnt == 0 ){
35326 +                                       printk(KERN_WARNING
35327 +                                       "qla2x00(%ld): ISP error recovery failed - "
35328 +                                       "board disabled\n",ha->host_no);
35329 +                                       /* 
35330 +                                        * The next call disables the board
35331 +                                        * completely.
35332 +                                        */
35333 +                                       qla2x00_reset_adapter(ha);
35334 +                                       qla2x00_abort_queues(ha, FALSE);
35335 +                                       ha->flags.online = TRUE;
35336 +                                       clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
35337 +                                       status = 0;
35338 +                               } else { /* schedule another ISP abort */
35339 +                                       ha->isp_abort_cnt--;
35340 +                                       DEBUG(printk("qla%ld: ISP abort - retry remainning %d\n",
35341 +                                       ha->host_no, 
35342 +                                       ha->isp_abort_cnt);)
35343 +                                       status = 1;
35344 +                               }
35345 +                       } else {
35346 +                               ha->isp_abort_cnt = MAX_RETRIES_OF_ISP_ABORT;
35347 +                               DEBUG(printk( "qla2x00(%ld): ISP error recovery - "
35348 +                               "retrying (%d) more times\n",ha->host_no,
35349 +                               ha->isp_abort_cnt);)
35350 +                               set_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
35351 +                               status = 1;
35352 +                       }
35353 +               }
35354 +                      
35355 +       }
35356 +
35357 +       if (status) {
35358 +               printk(KERN_INFO
35359 +                       "qla2x00_abort_isp(%ld): **** FAILED ****\n",
35360 +                       ha->host_no);
35361 +       } else {
35362 +               DEBUG(printk(KERN_INFO
35363 +                               "qla2x00_abort_isp(%ld): exiting.\n",
35364 +                               ha->host_no);)
35365 +       }
35366 +
35367 +       return(status);
35368 +}
35369 +
35370 +/*
35371 +*  qla2x00_restart_isp
35372 +*      restarts the ISP after a reset
35373 +*
35374 +* Input:
35375 +*      ha = adapter block pointer.
35376 +*
35377 +* Returns:
35378 +*      0 = success
35379 +*/
35380 +static int
35381 +qla2x00_restart_isp(scsi_qla_host_t *ha)
35382 +{
35383 +       uint8_t         status = 0;
35384 +#if defined(ISP2300)
35385 +       device_reg_t    *reg;
35386 +       unsigned long   flags = 0;
35387 +#endif
35388 +
35389 +       /* If firmware needs to be loaded */
35390 +       if (qla2x00_isp_firmware(ha)) {
35391 +               ha->flags.online = FALSE;
35392 +               if (!(status = qla2x00_chip_diag(ha))) {
35393 +#if defined(ISP2300)
35394 +                       reg = ha->iobase;
35395 +                       spin_lock_irqsave(&ha->hardware_lock, flags);
35396 +                       /* Disable SRAM, Instruction RAM and GP RAM parity. */
35397 +                       WRT_REG_WORD(&reg->hccr, (HCCR_ENABLE_PARITY + 0x0));
35398 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
35399 +#endif
35400 +                       status = qla2x00_setup_chip(ha);
35401 +#if defined(ISP2300)
35402 +                       spin_lock_irqsave(&ha->hardware_lock, flags);
35403
35404 +                       /* Enable proper parity */
35405 +                       if (ha->pdev->device == QLA2312_DEVICE_ID ||
35406 +                           ha->pdev->device == QLA2322_DEVICE_ID)
35407 +                               /* SRAM, Instruction RAM and GP RAM parity */
35408 +                               WRT_REG_WORD(&reg->hccr,
35409 +                                   (HCCR_ENABLE_PARITY + 0x7));
35410 +                       else
35411 +                               /* SRAM parity */
35412 +                               WRT_REG_WORD(&reg->hccr,
35413 +                                   (HCCR_ENABLE_PARITY + 0x1));
35414 +
35415 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
35416 +#endif
35417 +               }
35418 +       }
35419 +       if (!status && !(status = qla2x00_init_rings(ha))) {
35420 +               clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
35421 +               clear_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
35422 +               if (!(status = qla2x00_fw_ready(ha))) {
35423 +                       DEBUG(printk("%s(): Start configure loop, "
35424 +                                       "status = %d\n",
35425 +                                       __func__,
35426 +                                       status);)
35427 +                       ha->flags.online = TRUE;
35428 +                       do {
35429 +                               clear_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
35430 +                               qla2x00_configure_loop(ha);
35431 +                       } while (!atomic_read(&ha->loop_down_timer) &&
35432 +                               !(test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) &&
35433 +                               (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)));
35434 +               }
35435 +
35436 +               /* if no cable then assume it's good */
35437 +               if ((ha->device_flags & DFLG_NO_CABLE)) 
35438 +                       status = 0;
35439 +
35440 +               DEBUG(printk("%s(): Configure loop done, status = 0x%x\n",
35441 +                               __func__,
35442 +                               status);)
35443 +       }
35444 +       return (status);
35445 +}
35446 +
35447 +/*
35448 +* qla2x00_reset_adapter
35449 +*      Reset adapter.
35450 +*
35451 +* Input:
35452 +*      ha = adapter block pointer.
35453 +*/
35454 +static void
35455 +qla2x00_reset_adapter(scsi_qla_host_t *ha)
35456 +{
35457 +       unsigned long flags = 0;
35458 +       device_reg_t *reg = ha->iobase;
35459 +
35460 +       ENTER(__func__);
35461 +
35462 +       ha->flags.online = FALSE;
35463 +       qla2x00_disable_intrs(ha);
35464 +       /* Reset RISC processor. */
35465 +       spin_lock_irqsave(&ha->hardware_lock, flags);
35466 +       WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC);
35467 +       WRT_REG_WORD(&reg->hccr, HCCR_RELEASE_RISC);
35468 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
35469 +
35470 +       LEAVE(__func__);
35471 +}
35472 --- /dev/null   Thu Apr 11 07:25:15 2002
35473 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_inline.h        Thu Jul  3 15:34:42 2003
35474 @@ -0,0 +1,375 @@
35475 +/*
35476 + *                  QLOGIC LINUX SOFTWARE
35477 + *
35478 + * QLogic ISP2x00 device driver for Linux 2.5.x
35479 + * Copyright (C) 2003 Qlogic Corporation
35480 + * (www.qlogic.com)
35481 + *
35482 + * This program is free software; you can redistribute it and/or modify it
35483 + * under the terms of the GNU General Public License as published by the
35484 + * Free Software Foundation; either version 2, or (at your option) any
35485 + * later version.
35486 + *
35487 + * This program is distributed in the hope that it will be useful, but
35488 + * WITHOUT ANY WARRANTY; without even the implied warranty of
35489 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
35490 + * General Public License for more details.
35491 + *
35492 + */
35493 +
35494 +
35495 +static __inline__ uint16_t qla2x00_debounce_register(volatile uint16_t *);
35496 +/*
35497 + * qla2x00_debounce_register
35498 + *      Debounce register.
35499 + *
35500 + * Input:
35501 + *      port = register address.
35502 + *
35503 + * Returns:
35504 + *      register value.
35505 + */
35506 +static __inline__ uint16_t
35507 +qla2x00_debounce_register(volatile uint16_t *addr) 
35508 +{
35509 +       volatile uint16_t first;
35510 +       volatile uint16_t second;
35511 +
35512 +       do {
35513 +               first = RD_REG_WORD(addr);
35514 +               barrier();
35515 +               second = RD_REG_WORD(addr);
35516 +       } while (first != second);
35517 +
35518 +       return (first);
35519 +}
35520 +
35521 +static __inline__ void qla2x00_config_dma_addressing(scsi_qla_host_t *ha);
35522 +
35523 +/**
35524 + * qla2x00_config_dma_addressing() - Configure OS DMA addressing method.
35525 + * @ha: HA context
35526 + *
35527 + * At exit, the @ha's flags.enable_64bit_addressing set to indicated
35528 + * supported addressing method.
35529 + */
35530 +static __inline__ void
35531 +qla2x00_config_dma_addressing(scsi_qla_host_t *ha)
35532 +{
35533 +       /*
35534 +        * Given the two variants pci_set_dma_mask(), allow the compiler to
35535 +        * assist in setting the proper dma mask.
35536 +        */
35537 +       if (sizeof(dma_addr_t) > 4) {
35538 +               ha->flags.enable_64bit_addressing = 1;
35539 +               /* Update our PCI device dma_mask for full 64 bits */
35540 +               if (pci_set_dma_mask(ha->pdev, 0xffffffffffffffffULL)) {
35541 +                       printk("scsi(%ld): Failed to set 64 bit PCI DMA mask, "
35542 +                           "using 32 bits\n",
35543 +                           ha->host_no);
35544 +                       ha->flags.enable_64bit_addressing = 0;
35545 +                       pci_set_dma_mask(ha->pdev, 0xffffffff);
35546 +               }
35547 +       }
35548 +       else {
35549 +               ha->flags.enable_64bit_addressing = 0;
35550 +               pci_set_dma_mask(ha->pdev, 0xffffffff);
35551 +       }
35552 +       printk(KERN_INFO
35553 +           "scsi(%ld): %d Bit DMA Addressing Enabled.\n",
35554 +           ha->host_no,
35555 +           (ha->flags.enable_64bit_addressing ? 64 : 32));
35556 +}
35557 +
35558 +
35559 +static __inline__ int qla2x00_normalize_dma_addr(
35560 +    dma_addr_t *e_addr,  uint32_t *e_len,
35561 +    dma_addr_t *ne_addr, uint32_t *ne_len);
35562 +
35563 +/**
35564 + * qla2x00_normalize_dma_addr() - Normalize an DMA address.
35565 + * @e_addr: Raw DMA address
35566 + * @e_len: Raw DMA length
35567 + * @ne_addr: Normalized second DMA address
35568 + * @ne_len: Normalized second DMA length
35569 + *
35570 + * If the address does not span a 4GB page boundary, the contents of @ne_addr
35571 + * and @ne_len are undefined.  @e_len is updated to reflect a normalization.
35572 + *
35573 + * Example:
35574 + *
35575 + *     ffffabc0ffffeeee        (e_addr) start of DMA address
35576 + *     0000000020000000        (e_len)  length of DMA transfer
35577 + *     ffffabc11fffeeed        end of DMA transfer
35578 + *
35579 + * Is the 4GB boundary crossed?
35580 + *
35581 + *     ffffabc0ffffeeee        (e_addr)
35582 + *     ffffabc11fffeeed        (e_addr + e_len - 1)
35583 + *     00000001e0000003        ((e_addr ^ (e_addr + e_len - 1))
35584 + *     0000000100000000        ((e_addr ^ (e_addr + e_len - 1)) & ~(0xffffffff)
35585 + *
35586 + * Compute start of second DMA segment:
35587 + *
35588 + *     ffffabc0ffffeeee        (e_addr)
35589 + *     ffffabc1ffffeeee        (0x100000000 + e_addr)
35590 + *     ffffabc100000000        (0x100000000 + e_addr) & ~(0xffffffff)
35591 + *     ffffabc100000000        (ne_addr)
35592 + *     
35593 + * Compute length of second DMA segment:
35594 + *
35595 + *     00000000ffffeeee        (e_addr & 0xffffffff)
35596 + *     0000000000001112        (0x100000000 - (e_addr & 0xffffffff))
35597 + *     000000001fffeeee        (e_len - (0x100000000 - (e_addr & 0xffffffff))
35598 + *     000000001fffeeee        (ne_len)
35599 + *
35600 + * Adjust length of first DMA segment
35601 + *
35602 + *     0000000020000000        (e_len)
35603 + *     0000000000001112        (e_len - ne_len)
35604 + *     0000000000001112        (e_len)
35605 + *
35606 + * Returns non-zero if the specified address was normalized, else zero.
35607 + */
35608 +static __inline__ int
35609 +qla2x00_normalize_dma_addr(
35610 +    dma_addr_t *e_addr,  uint32_t *e_len,
35611 +    dma_addr_t *ne_addr, uint32_t *ne_len)
35612 +{
35613 +       int normalized;
35614 +
35615 +       normalized = 0;
35616 +       if ((*e_addr ^ (*e_addr + *e_len - 1)) & ~(0xFFFFFFFFULL)) {
35617 +               /* Compute normalized crossed address and len */
35618 +               *ne_addr = (0x100000000ULL + *e_addr) & ~(0xFFFFFFFFULL);
35619 +               *ne_len = *e_len - (0x100000000ULL - (*e_addr & 0xFFFFFFFFULL));
35620 +               *e_len -= *ne_len;
35621 +
35622 +               normalized++;
35623 +       }
35624 +       return (normalized);
35625 +}
35626 +
35627 +static __inline__ void qla2x00_poll(scsi_qla_host_t *);
35628 +static inline void 
35629 +qla2x00_poll(scsi_qla_host_t *ha)
35630 +{
35631 +       qla2x00_intr_handler(0, ha, NULL);
35632 +}
35633 +
35634 +
35635 +static __inline__ void qla2x00_enable_intrs(scsi_qla_host_t *);
35636 +static __inline__ void qla2x00_disable_intrs(scsi_qla_host_t *);
35637 +
35638 +static inline void 
35639 +qla2x00_enable_intrs(scsi_qla_host_t *ha)
35640 +{
35641 +       unsigned long flags = 0;
35642 +       device_reg_t *reg;
35643 +
35644 +       spin_lock_irqsave(&ha->hardware_lock, flags);
35645 +       reg = ha->iobase;
35646 +       ha->interrupts_on = 1;
35647 +       /* enable risc and host interrupts */
35648 +       WRT_REG_WORD(&reg->ictrl, ICR_EN_INT | ICR_EN_RISC);
35649 +       CACHE_FLUSH(&reg->ictrl);
35650 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
35651 +
35652 +}
35653 +
35654 +static inline void 
35655 +qla2x00_disable_intrs(scsi_qla_host_t *ha)
35656 +{
35657 +       unsigned long flags = 0;
35658 +       device_reg_t *reg;
35659 +
35660 +       spin_lock_irqsave(&ha->hardware_lock, flags);
35661 +       reg = ha->iobase;
35662 +       ha->interrupts_on = 0;
35663 +       /* disable risc and host interrupts */
35664 +       WRT_REG_WORD(&reg->ictrl, 0);
35665 +       CACHE_FLUSH(&reg->ictrl);
35666 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
35667 +}
35668 +
35669 +
35670 +static __inline__ int qla2x00_is_wwn_zero(uint8_t *);
35671 +
35672 +/*
35673 + * qla2x00_is_wwn_zero - Check for zero node name
35674 + *
35675 + * Input:
35676 + *      wwn = Pointer to WW name to check
35677 + *
35678 + * Returns:
35679 + *      TRUE if name is 0 else FALSE
35680 + *
35681 + * Context:
35682 + *      Kernel context.
35683 + */
35684 +static __inline__ int
35685 +qla2x00_is_wwn_zero(uint8_t *wwn)
35686 +{
35687 +       int cnt;
35688 +
35689 +       for (cnt = 0; cnt < WWN_SIZE ; cnt++, wwn++) {
35690 +               if (*wwn != 0)
35691 +                       break;
35692 +       }
35693 +       /* if zero return TRUE */
35694 +       if (cnt == WWN_SIZE)
35695 +               return (1);
35696 +       else
35697 +               return (0);
35698 +}
35699 +
35700 +static __inline__ uint8_t
35701 +qla2x00_suspend_lun(scsi_qla_host_t *, os_lun_t *, int, int);
35702 +static __inline__ uint8_t
35703 +qla2x00_delay_lun(scsi_qla_host_t *, os_lun_t *, int);
35704 +
35705 +static __inline__ uint8_t
35706 +qla2x00_suspend_lun(scsi_qla_host_t *ha, os_lun_t *lq, int time, int count)
35707 +{
35708 +       return (__qla2x00_suspend_lun(ha, lq, time, count, 0));
35709 +}
35710 +
35711 +static __inline__ uint8_t
35712 +qla2x00_delay_lun(scsi_qla_host_t *ha, os_lun_t *lq, int time)
35713 +{
35714 +       return (__qla2x00_suspend_lun(ha, lq, time, 1, 1));
35715 +}
35716 +
35717 +
35718 +
35719 +static __inline__ void qla2x00_chg_endian(uint8_t *, size_t);
35720 +/*
35721 + * qla2x00_chg_endian
35722 + *     Change endianess of byte array.
35723 + *
35724 + * Input:
35725 + *     buf = array pointer.
35726 + *     size = size of array in bytes.
35727 + *
35728 + * Context:
35729 + *     Kernel context.
35730 + */
35731 +static __inline__ void
35732 +qla2x00_chg_endian(uint8_t *buf, size_t size) 
35733 +{
35734 +       uint8_t byte;
35735 +       size_t cnt1;
35736 +       size_t cnt;
35737 +
35738 +       cnt1 = size - 1;
35739 +       for (cnt = 0; cnt < size / 2; cnt++) {
35740 +               byte = buf[cnt1];
35741 +               buf[cnt1] = buf[cnt];
35742 +               buf[cnt] = byte;
35743 +               cnt1--;
35744 +       }
35745 +}
35746 +
35747 +static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *);
35748 +/*
35749 + * This routine will wait for fabric devices for
35750 + * the reset delay.
35751 + */
35752 +static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *ha) 
35753 +{
35754 +       uint16_t        fw_state;
35755 +
35756 +       qla2x00_get_firmware_state(ha, &fw_state);
35757 +}
35758 +
35759 +static inline void qla2x00_filter_command(scsi_qla_host_t *ha, srb_t *sp);
35760 +static inline void
35761 +qla2x00_filter_command(scsi_qla_host_t *ha, srb_t *sp)
35762 +{
35763 +       Scsi_Cmnd       *cp = sp->cmd;
35764 +       uint8_t         *strp;
35765 +
35766 +       /*
35767 +        * Special case considertaion on an Inquiry command (0x12) for Lun 0,
35768 +        * device responds with no devices (0x7F), then Linux will not scan
35769 +        * further Luns. While reporting that some device exists on Lun 0 Linux
35770 +        * will scan all devices on this target.
35771 +        */
35772 +       if (qla2xenbinq && (cp->cmnd[0] == INQUIRY) && (SCSI_LUN_32(cp) == 0)) {
35773 +               strp = (uint8_t *)cp->request_buffer;
35774 +               if (*strp == 0x7f) {
35775 +                       /* Make lun unassigned and processor type */
35776 +                       *strp = 0x23;
35777 +               }
35778 +       }
35779 +}
35780 +
35781 +static __inline__ void * qla2x00_kmem_zalloc(int, int, int);
35782 +/*
35783 + * qla2x00_kmem_zalloc
35784 + * Allocate and zero out the block of memory
35785 + */
35786 +static __inline__ void *
35787 +qla2x00_kmem_zalloc(int siz, int code, int id) 
35788 +{
35789 +       uint8_t *bp;
35790 +
35791 +       if ((bp = kmalloc(siz, code)) != NULL) {
35792 +               memset(bp, 0, siz);
35793 +       }
35794 +#if QL_TRACE_MEMORY
35795 +       if (mem_trace_ptr == 1000)
35796 +               mem_trace_ptr = 0;
35797 +       mem_trace[mem_trace_ptr] = (u_long ) bp;
35798 +       mem_id[mem_trace_ptr++] = (u_long ) id;
35799 +#endif
35800 +
35801 +       return ((void *)bp);
35802 +}
35803 +
35804 +
35805 +static __inline__ ms_iocb_entry_t *
35806 +qla2x00_prep_ms_iocb(scsi_qla_host_t *, uint32_t, uint32_t);
35807 +/**
35808 + * qla2x00_prep_ms_iocb() - Prepare common MS IOCB fields for SNS CT query.
35809 + * @ha: HA context
35810 + * @req_size: request size in bytes
35811 + * @rsp_size: response size in bytes
35812 + *
35813 + * Returns a pointer to the @ha's ms_iocb.
35814 + */
35815 +static __inline__ ms_iocb_entry_t *
35816 +qla2x00_prep_ms_iocb(scsi_qla_host_t *ha, uint32_t req_size, uint32_t rsp_size)
35817 +{
35818 +       ms_iocb_entry_t *ms_pkt;
35819 +
35820 +       ms_pkt = ha->ms_iocb;
35821 +       memset(ms_pkt, 0, sizeof(ms_iocb_entry_t));
35822 +
35823 +       ms_pkt->entry_type = MS_IOCB_TYPE;
35824 +       ms_pkt->entry_count = 1;
35825 +#if defined(EXTENDED_IDS)
35826 +       ms_pkt->loop_id = __constant_cpu_to_le16(SIMPLE_NAME_SERVER);
35827 +#else
35828 +       ms_pkt->loop_id = SIMPLE_NAME_SERVER;
35829 +#endif
35830 +       ms_pkt->control_flags =
35831 +           __constant_cpu_to_le16(CF_READ | CF_HEAD_TAG);
35832 +       ms_pkt->timeout = __constant_cpu_to_le16(25);
35833 +       ms_pkt->cmd_dsd_count = __constant_cpu_to_le16(1);
35834 +       ms_pkt->total_dsd_count = __constant_cpu_to_le16(2);
35835 +       ms_pkt->rsp_bytecount = cpu_to_le32(rsp_size);
35836 +       ms_pkt->req_bytecount = cpu_to_le32(req_size);
35837 +
35838 +       ms_pkt->dseg_req_address[0] = cpu_to_le32(LSD(ha->ct_sns_dma));
35839 +       ms_pkt->dseg_req_address[1] = cpu_to_le32(MSD(ha->ct_sns_dma));
35840 +       ms_pkt->dseg_req_length = ms_pkt->req_bytecount;
35841 +
35842 +       ms_pkt->dseg_rsp_address[0] = cpu_to_le32(LSD(ha->ct_sns_dma));
35843 +       ms_pkt->dseg_rsp_address[1] = cpu_to_le32(MSD(ha->ct_sns_dma));
35844 +       ms_pkt->dseg_rsp_length = ms_pkt->rsp_bytecount;
35845 +
35846 +       return (ms_pkt);
35847 +}
35848 +
35849 +
35850 --- /dev/null   Thu Apr 11 07:25:15 2002
35851 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_iocb.c  Thu Jul  3 15:34:42 2003
35852 @@ -0,0 +1,1276 @@
35853 +/******************************************************************************
35854 + *                  QLOGIC LINUX SOFTWARE
35855 + *
35856 + * QLogic ISP2x00 device driver for Linux 2.5.x
35857 + * Copyright (C) 2003 Qlogic Corporation
35858 + * (www.qlogic.com)
35859 + *
35860 + * This program is free software; you can redistribute it and/or modify it
35861 + * under the terms of the GNU General Public License as published by the
35862 + * Free Software Foundation; either version 2, or (at your option) any
35863 + * later version.
35864 + *
35865 + * This program is distributed in the hope that it will be useful, but
35866 + * WITHOUT ANY WARRANTY; without even the implied warranty of
35867 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
35868 + * General Public License for more details.
35869 + *
35870 + ******************************************************************************/
35871 +
35872 +#include "qla_os.h"
35873 +#include "qla_def.h"
35874 +
35875 +static inline uint16_t qla2x00_get_cmd_direction(Scsi_Cmnd *cmd);
35876 +
35877 +static inline int qla2x00_cmd_build_iocb(scsi_qla_host_t *ha,
35878 +    srb_t *sp, cmd_entry_t *cmd_pkt, uint16_t *req_q_cnt,
35879 +    uint16_t *req_ring_index, request_t **request_ring_ptr,
35880 +    uint16_t *tot_iocbs, uint16_t *tot_dsds);
35881 +
35882 +static inline int qla2x00_cmd_build_64bit_iocbs(scsi_qla_host_t *ha,
35883 +    srb_t *sp, cmd_entry_t *cmd_pkt, uint16_t *req_q_cnt,
35884 +    uint16_t *req_ring_index, request_t **request_ring_ptr,
35885 +    uint16_t *tot_iocbs, uint16_t *tot_dsds);
35886 +
35887 +static inline int qla2x00_cmd_build_32bit_iocbs(scsi_qla_host_t *ha,
35888 +    srb_t *sp, cmd_entry_t *cmd_pkt, uint16_t *req_q_cnt,
35889 +    uint16_t *req_ring_index, request_t **request_ring_ptr,
35890 +    uint16_t *tot_iocbs, uint16_t *tot_dsds);
35891 +
35892 +static inline int qla2x00_check_request_ring(scsi_qla_host_t *ha,
35893 +    uint16_t tot_iocbs, uint16_t req_ring_index, uint16_t *req_q_cnt);
35894 +
35895 +static inline cont_a64_entry_t *qla2x00_prep_a64_cont_packet(
35896 +    scsi_qla_host_t *ha,
35897 +    uint16_t *req_ring_index, request_t **request_ring_ptr);
35898 +
35899 +static inline cont_entry_t *qla2x00_prep_cont_packet(scsi_qla_host_t *ha,
35900 +    uint16_t *req_ring_index, request_t **request_ring_ptr);
35901 +
35902 +
35903 +/* Command queuing function */
35904 +
35905 +/**
35906 + * qla2x00_get_cmd_direction() - Determine control_flag data direction.
35907 + * @cmd: SCSI command
35908 + *
35909 + * This is ridiculous, the mid-layer applications should perform this step for
35910 + * all commands sent down through the SCSI layers.  The following is a terrible
35911 + * hack.
35912 + *
35913 + * Returns the proper CF_* direction based on CDB.
35914 + */
35915 +static inline uint16_t
35916 +qla2x00_get_cmd_direction(Scsi_Cmnd *cmd)
35917 +{
35918 +       uint16_t cflags;
35919 +
35920 +       cflags = 0;
35921 +
35922 +#if defined(SANE_USAGE_OF_CMD_DIRECTION)
35923 +       /* Set transfer direction */
35924 +       if (cmd->sc_data_direction == SCSI_DATA_WRITE)
35925 +               cflags = CF_WRITE;
35926 +       else if (cmd->sc_data_direction == SCSI_DATA_READ)
35927 +               cflags = CF_READ;
35928 +       else {
35929 +               switch (cmd->data_cmnd[0]) {
35930 +               case WRITE_6:
35931 +               case WRITE_10:
35932 +               case WRITE_12:
35933 +               case WRITE_BUFFER:
35934 +               case WRITE_LONG:
35935 +               case WRITE_SAME:
35936 +               case WRITE_VERIFY:
35937 +               case WRITE_VERIFY_12:
35938 +               case FORMAT_UNIT:
35939 +               case SEND_VOLUME_TAG:
35940 +               case MODE_SELECT:
35941 +               case SEND_DIAGNOSTIC:
35942 +               case MODE_SELECT_10:
35943 +                       cflags = CF_WRITE;
35944 +                       break;
35945 +               default:
35946 +                       cflags = CF_READ;
35947 +                       break;
35948 +               }
35949 +       }
35950 +#else
35951 +       switch (cmd->data_cmnd[0]) {
35952 +       case WRITE_6:
35953 +       case WRITE_10:
35954 +       case WRITE_12:
35955 +       case WRITE_BUFFER:
35956 +       case WRITE_LONG:
35957 +       case WRITE_SAME:
35958 +       case WRITE_VERIFY:
35959 +       case WRITE_VERIFY_12:
35960 +       case FORMAT_UNIT:
35961 +       case SEND_VOLUME_TAG:
35962 +       case MODE_SELECT:
35963 +       case SEND_DIAGNOSTIC:
35964 +       case MODE_SELECT_10:
35965 +               cflags = CF_WRITE;
35966 +               break;
35967 +       default:
35968 +               if (cmd->sc_data_direction == SCSI_DATA_WRITE)
35969 +                       cflags = CF_WRITE;
35970 +               else
35971 +                       cflags = CF_READ;
35972 +               break;
35973 +       }
35974 +#endif
35975 +
35976 +       return (cflags);
35977 +}
35978 +
35979 +/**
35980 + * qla2x00_check_request_ring() - Checks request ring for additional IOCB space.
35981 + * @ha: HA context
35982 + * @tot_iocbs: Number of IOCBs required
35983 + * @req_ring_index: Current index to request ring
35984 + * @req_q_cnt: Number of free request entries
35985 + *
35986 + * Returns non-zero if no additional room available on request ring, else zero.
35987 + */
35988 +static inline int
35989 +qla2x00_check_request_ring(scsi_qla_host_t *ha,
35990 +    uint16_t tot_iocbs, uint16_t req_ring_index, uint16_t *req_q_cnt)
35991 +{
35992 +       uint16_t        ret;
35993 +       uint16_t        cnt;
35994 +       device_reg_t    *reg;
35995 +
35996 +       reg = ha->iobase;
35997 +
35998 +       /* If room for request in request ring for at least N IOCB */
35999 +       ret = 0;
36000 +       if ((tot_iocbs + 2) >= *req_q_cnt) {
36001 +               /*
36002 +                * Calculate number of free request entries.
36003 +                */
36004 +               cnt = RD_REG_WORD(ISP_REQ_Q_OUT(reg));
36005 +               if (req_ring_index < cnt)
36006 +                       *req_q_cnt = cnt - req_ring_index;
36007 +               else
36008 +                       *req_q_cnt = REQUEST_ENTRY_CNT - (req_ring_index - cnt);
36009 +       }
36010 +       if ((tot_iocbs + 2) >= *req_q_cnt) {
36011 +               DEBUG5(printk("scsi(%ld): in-ptr=%x req_q_cnt=%x "
36012 +                   "tot_iocbs=%x.\n",
36013 +                   ha->host_no, req_ring_index, *req_q_cnt, tot_iocbs));
36014 +
36015 +               ret++;
36016 +       }
36017 +#if defined(IOCB_THROLLE_USAGE)
36018 +       if ((ha->iocb_cnt + tot_iocbs) >= ha->iocb_hiwat) {
36019 +               DEBUG5(printk("%s(): Not Enough IOCBS for request. "
36020 +                   "iocb_cnt=%x, tot_iocbs=%x, hiwat=%x.\n",
36021 +                   __func__, ha->iocb_cnt, tot_iocbs, ha->iocb_hiwat));
36022 +#if defined(IOCB_HIT_RATE)
36023 +               ha->iocb_overflow_cnt++;
36024 +#endif
36025 +               ret++;
36026 +       }
36027 +#endif
36028 +
36029 +       return (ret);
36030 +}
36031 +
36032 +/**
36033 + * qla2x00_prep_a64_cont_packet() - Initialize an A64 continuation packet.
36034 + * @ha: HA context
36035 + * @req_ring_index: Current index to request ring
36036 + * @req_ring_ptr: Current pointer to request ring
36037 + *
36038 + * Returns a pointer to the continuation packet.
36039 + */
36040 +static inline cont_a64_entry_t *
36041 +qla2x00_prep_a64_cont_packet(scsi_qla_host_t *ha,
36042 +    uint16_t *req_ring_index, request_t **request_ring_ptr)
36043 +{
36044 +       cont_a64_entry_t *cont_pkt;
36045 +
36046 +       /* Adjust ring index. */
36047 +       *req_ring_index += 1;
36048 +       if (*req_ring_index == REQUEST_ENTRY_CNT) {
36049 +               *req_ring_index = 0;
36050 +               *request_ring_ptr = ha->request_ring;
36051 +       } else
36052 +               *request_ring_ptr += 1;
36053 +
36054 +       cont_pkt = (cont_a64_entry_t *)(*request_ring_ptr);
36055 +
36056 +       /* Load packet defaults. */
36057 +       *((uint32_t *)(&cont_pkt->entry_type)) =
36058 +           __constant_cpu_to_le32(CONTINUE_A64_TYPE);
36059 +       //cont_pkt->entry_type = CONTINUE_A64_TYPE;
36060 +       //cont_pkt->entry_count = 0;
36061 +       //cont_pkt->sys_define = (uint8_t)req_ring_index;
36062 +
36063 +       return (cont_pkt);
36064 +}
36065 +
36066 +/**
36067 + * qla2x00_prep_cont_packet() - Initialize a continuation packet.
36068 + * @ha: HA context
36069 + * @req_ring_index: Current index to request ring
36070 + * @req_ring_ptr: Current pointer to request ring
36071 + *
36072 + * Returns a pointer to the continuation packet.
36073 + */
36074 +static inline cont_entry_t *
36075 +qla2x00_prep_cont_packet(scsi_qla_host_t *ha,
36076 +    uint16_t *req_ring_index, request_t **request_ring_ptr)
36077 +{
36078 +       cont_entry_t *cont_pkt;
36079 +
36080 +       /* Adjust ring index. */
36081 +       *req_ring_index += 1;
36082 +       if (*req_ring_index == REQUEST_ENTRY_CNT) {
36083 +               *req_ring_index = 0;
36084 +               *request_ring_ptr = ha->request_ring;
36085 +       } else
36086 +               *request_ring_ptr += 1;
36087 +
36088 +       cont_pkt = (cont_entry_t *)(*request_ring_ptr);
36089 +
36090 +       /* Load packet defaults. */
36091 +       *((uint32_t *)(&cont_pkt->entry_type)) =
36092 +           __constant_cpu_to_le32(CONTINUE_TYPE);
36093 +       //cont_pkt->entry_type = CONTINUE_TYPE;
36094 +       //cont_pkt->entry_count = 0;
36095 +       //cont_pkt->sys_define = (uint8_t)req_ring_index;
36096 +
36097 +       return (cont_pkt);
36098 +}
36099 +
36100 +static inline int
36101 +qla2x00_cmd_build_64bit_iocbs(scsi_qla_host_t *ha,
36102 +    srb_t *sp,
36103 +    cmd_entry_t *cmd_pkt,
36104 +    uint16_t *req_q_cnt,
36105 +    uint16_t *req_ring_index, request_t **request_ring_ptr,
36106 +    uint16_t *tot_iocbs, uint16_t *tot_dsds)
36107 +{
36108 +       uint16_t        avail_dsds;
36109 +       uint32_t        *cur_dsd;
36110 +       Scsi_Cmnd       *cmd;
36111 +
36112 +       cmd = sp->cmd;
36113 +
36114 +       /* No data transfer */
36115 +       if (cmd->request_bufflen == 0 ||
36116 +           cmd->sc_data_direction == SCSI_DATA_NONE) {
36117 +               cmd_pkt->byte_count = __constant_cpu_to_le32(0);
36118 +               return (QL_STATUS_SUCCESS);
36119 +       }
36120 +
36121 +       cmd_pkt->control_flags |= cpu_to_le16(qla2x00_get_cmd_direction(cmd));
36122 +       sp->dir = cmd_pkt->control_flags &
36123 +           __constant_cpu_to_le16(CF_READ | CF_WRITE);
36124 +
36125 +       /* Two DSDs are available in the command 64 IOCB */
36126 +       avail_dsds = 2;
36127 +       cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address;
36128 +
36129 +       /* Load data segments */
36130 +       if (cmd->use_sg != 0) {
36131 +               struct  scatterlist *cur_seg;
36132 +               struct  scatterlist *end_seg;
36133 +               int     nseg;
36134 +
36135 +               cur_seg = (struct scatterlist *)cmd->request_buffer;
36136 +               nseg = pci_map_sg(ha->pdev, cur_seg, cmd->use_sg,
36137 +                   scsi_to_pci_dma_dir(cmd->sc_data_direction));
36138 +               end_seg = cur_seg + nseg;
36139 +               while (cur_seg < end_seg) {
36140 +                       int             failed;
36141 +                       dma_addr_t      sle_dma;
36142 +                       uint32_t        sle_len;
36143 +                       dma_addr_t      nml_dma;
36144 +                       uint32_t        nml_len;
36145 +                       uint32_t        normalized;
36146 +                       cont_a64_entry_t *cont_pkt;
36147 +
36148 +                       /* Allocate additional continuation packets? */
36149 +                       if (avail_dsds == 0) {
36150 +                               *tot_iocbs += 1;
36151 +                               failed = qla2x00_check_request_ring(ha,
36152 +                                   *tot_iocbs,
36153 +                                   *req_ring_index,
36154 +                                   req_q_cnt);
36155 +                               if (failed) {
36156 +                                       goto mapped_queuing_error_64;
36157 +                               }
36158 +
36159 +                               cont_pkt = qla2x00_prep_a64_cont_packet(ha,
36160 +                                   req_ring_index,
36161 +                                   request_ring_ptr);
36162 +
36163 +                               cur_dsd = (uint32_t *)&cont_pkt->dseg_0_address;
36164 +                               avail_dsds = 5;
36165 +                       }
36166 +
36167 +                       sle_dma = sg_dma_address(cur_seg);
36168 +                       sle_len = sg_dma_len(cur_seg);
36169 +
36170 +                       normalized = qla2x00_normalize_dma_addr(
36171 +                           &sle_dma, &sle_len,
36172 +                           &nml_dma, &nml_len);
36173 +
36174 +                       /* One entry always consumed */
36175 +                       *cur_dsd++ = cpu_to_le32(LSD(sle_dma));
36176 +                       *cur_dsd++ = cpu_to_le32(MSD(sle_dma));
36177 +                       *cur_dsd++ = cpu_to_le32(sle_len);
36178 +                       *tot_dsds += 1;
36179 +                       avail_dsds--;
36180 +
36181 +                       cur_seg++;
36182 +                       if (!normalized)
36183 +                               continue;
36184 +
36185 +                       /*
36186 +                        * Allocate additional continuation packets?
36187 +                        */
36188 +                       if (avail_dsds == 0) {
36189 +                               *tot_iocbs += 1;
36190 +                               failed = qla2x00_check_request_ring(ha,
36191 +                                   *tot_iocbs,
36192 +                                   *req_ring_index,
36193 +                                   req_q_cnt);
36194 +                               if (failed)
36195 +                                       goto mapped_queuing_error_64;
36196 +
36197 +                               cont_pkt = qla2x00_prep_a64_cont_packet(ha,
36198 +                                   req_ring_index,
36199 +                                   request_ring_ptr);
36200 +
36201 +                               cur_dsd = (uint32_t *)&cont_pkt->dseg_0_address;
36202 +                               avail_dsds = 5;
36203 +                       }
36204 +
36205 +                       *cur_dsd++ = cpu_to_le32(LSD(nml_dma));
36206 +                       *cur_dsd++ = cpu_to_le32(MSD(nml_dma));
36207 +                       *cur_dsd++ = cpu_to_le32(nml_len);
36208 +                       *tot_dsds += 1;
36209 +                       avail_dsds--;
36210 +               }
36211 +       }
36212 +       else {
36213 +               /*
36214 +                * No more than 1 (one) IOCB is needed for this type of 
36215 +                * request, even if the DMA address spans the 4GB page 
36216 +                * boundary.
36217 +                *
36218 +                * @tot_dsds == 1 if non-spanning, else 2
36219 +                */
36220 +               dma_addr_t      req_dma;
36221 +               uint32_t        req_len;
36222 +               dma_addr_t      nml_dma;
36223 +               uint32_t        nml_len;
36224 +               uint32_t        normalized;
36225 +               struct page     *page;
36226 +               unsigned long   offset;
36227 +
36228 +               page = virt_to_page(cmd->request_buffer);
36229 +               offset = ((unsigned long)cmd->request_buffer & ~PAGE_MASK);
36230 +               req_dma = pci_map_page(ha->pdev,
36231 +                   page,
36232 +                   offset,
36233 +                   cmd->request_bufflen,
36234 +                   scsi_to_pci_dma_dir(cmd->sc_data_direction));
36235 +               req_len = cmd->request_bufflen;
36236 +
36237 +               sp->saved_dma_handle = req_dma;
36238 +
36239 +               normalized = qla2x00_normalize_dma_addr(
36240 +                   &req_dma, &req_len,
36241 +                   &nml_dma, &nml_len);
36242 +
36243 +               /* One entry always consumed */
36244 +               *cur_dsd++ = cpu_to_le32(LSD(req_dma));
36245 +               *cur_dsd++ = cpu_to_le32(MSD(req_dma));
36246 +               *cur_dsd++ = cpu_to_le32(req_len);
36247 +               *tot_dsds += 1;
36248 +
36249 +               if (normalized) {
36250 +                       *cur_dsd++ = cpu_to_le32(LSD(nml_dma));
36251 +                       *cur_dsd++ = cpu_to_le32(MSD(nml_dma));
36252 +                       *cur_dsd++ = cpu_to_le32(nml_len);
36253 +                       *tot_dsds += 1;
36254 +               }
36255 +       }
36256 +
36257 +       return (QL_STATUS_SUCCESS);
36258 +
36259 +mapped_queuing_error_64:
36260 +       pci_unmap_sg(ha->pdev, (struct scatterlist *)cmd->request_buffer,
36261 +           cmd->use_sg, scsi_to_pci_dma_dir(cmd->sc_data_direction));
36262 +       return (QL_STATUS_ERROR);
36263 +}
36264 +
36265 +static inline int
36266 +qla2x00_cmd_build_32bit_iocbs(scsi_qla_host_t *ha,
36267 +    srb_t *sp,
36268 +    cmd_entry_t *cmd_pkt,
36269 +    uint16_t *req_q_cnt,
36270 +    uint16_t *req_ring_index, request_t **request_ring_ptr,
36271 +    uint16_t *tot_iocbs, uint16_t *tot_dsds)
36272 +{
36273 +       uint16_t        avail_dsds;
36274 +       uint32_t        *cur_dsd;
36275 +       Scsi_Cmnd       *cmd;
36276 +
36277 +       cmd = sp->cmd;
36278 +
36279 +       /* No data transfer */
36280 +       if (cmd->request_bufflen == 0 ||
36281 +           cmd->sc_data_direction == SCSI_DATA_NONE) {
36282 +               cmd_pkt->byte_count = __constant_cpu_to_le32(0);
36283 +               return (QL_STATUS_SUCCESS);
36284 +       }
36285 +
36286 +       cmd_pkt->control_flags |= cpu_to_le16(qla2x00_get_cmd_direction(cmd));
36287 +       sp->dir = cmd_pkt->control_flags &
36288 +           __constant_cpu_to_le16(CF_READ | CF_WRITE);
36289 +
36290 +       /* Three DSDs are available in the command IOCB */
36291 +       avail_dsds = 3;
36292 +       cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address;
36293 +
36294 +       /* Load data segments */
36295 +       if (cmd->use_sg != 0) {
36296 +               struct  scatterlist *cur_seg;
36297 +               struct  scatterlist *end_seg;
36298 +               int     nseg;
36299 +
36300 +               cur_seg = (struct scatterlist *)cmd->request_buffer;
36301 +               nseg = pci_map_sg(ha->pdev, cur_seg, cmd->use_sg,
36302 +                   scsi_to_pci_dma_dir(cmd->sc_data_direction));
36303 +               end_seg = cur_seg + nseg;
36304 +
36305 +               while (cur_seg < end_seg) {
36306 +                       int             failed;
36307 +                       dma_addr_t      sle_dma;
36308 +                       uint32_t        sle_len;
36309 +                       cont_entry_t    *cont_pkt;
36310 +
36311 +                       /* Allocate additional continuation packets? */
36312 +                       if (avail_dsds == 0) {
36313 +                               *tot_iocbs += 1;
36314 +                               failed = qla2x00_check_request_ring(ha,
36315 +                                   *tot_iocbs,
36316 +                                   *req_ring_index,
36317 +                                   req_q_cnt);
36318 +                               if (failed) {
36319 +                                       goto mapped_queuing_error_32;
36320 +                               }
36321 +
36322 +                               cont_pkt = qla2x00_prep_cont_packet(ha,
36323 +                                   req_ring_index,
36324 +                                   request_ring_ptr);
36325 +
36326 +                               cur_dsd = (uint32_t *)&cont_pkt->dseg_0_address;
36327 +                               avail_dsds = 7;
36328 +                       }
36329 +
36330 +                       sle_dma = sg_dma_address(cur_seg);
36331 +                       sle_len = sg_dma_len(cur_seg);
36332 +
36333 +                       /* One entry always consumed */
36334 +                       *cur_dsd++ = cpu_to_le32(sle_dma);
36335 +                       *cur_dsd++ = cpu_to_le32(sle_len);
36336 +                       *tot_dsds += 1;
36337 +                       avail_dsds--;
36338 +
36339 +                       cur_seg++;
36340 +               }
36341 +       }
36342 +       else {
36343 +               /*
36344 +                * No more than 1 (one) IOCB is needed for this type of request.
36345 +                */
36346 +               dma_addr_t      req_dma;
36347 +               uint32_t        req_len;
36348 +               struct page     *page;
36349 +               unsigned long   offset;
36350 +
36351 +               page = virt_to_page(cmd->request_buffer);
36352 +               offset = ((unsigned long)cmd->request_buffer & ~PAGE_MASK);
36353 +               req_dma = pci_map_page(ha->pdev,
36354 +                   page,
36355 +                   offset,
36356 +                   cmd->request_bufflen,
36357 +                   scsi_to_pci_dma_dir(cmd->sc_data_direction));
36358 +               req_len = cmd->request_bufflen;
36359 +
36360 +               sp->saved_dma_handle = req_dma;
36361 +
36362 +               /* One entry always consumed */
36363 +               *cur_dsd++ = cpu_to_le32(req_dma);
36364 +               *cur_dsd++ = cpu_to_le32(req_len);
36365 +               *tot_dsds += 1;
36366 +       }
36367 +
36368 +       return (QL_STATUS_SUCCESS);
36369 +
36370 +mapped_queuing_error_32:
36371 +       pci_unmap_sg(ha->pdev, (struct scatterlist *)cmd->request_buffer,
36372 +           cmd->use_sg, scsi_to_pci_dma_dir(cmd->sc_data_direction));
36373 +       return (QL_STATUS_ERROR);
36374 +}
36375 +
36376 +static inline int
36377 +qla2x00_cmd_build_iocb(scsi_qla_host_t *ha,
36378 +    srb_t *sp,
36379 +    cmd_entry_t *cmd_pkt,
36380 +    uint16_t *req_q_cnt,
36381 +    uint16_t *req_ring_index, request_t **request_ring_ptr,
36382 +    uint16_t *tot_iocbs, uint16_t *tot_dsds)
36383 +{
36384 +       int             ret;
36385 +
36386 +       ret = QL_STATUS_ERROR;
36387 +
36388 +       if (ha->flags.enable_64bit_addressing) {
36389 +               *((uint32_t *)(&cmd_pkt->entry_type)) =
36390 +                   __constant_cpu_to_le32(COMMAND_A64_TYPE);
36391 +               //cmd_pkt->entry_type = COMMAND_A64_TYPE;
36392 +               //cmd_pkt->entry_count = (uint8_t)tot_iocbs;
36393 +               //cmd_pkt->sys_define = (uint8_t)ha->req_ring_index;
36394 +               //cmd_pkt->entry_status = 0;
36395 +
36396 +               ret = qla2x00_cmd_build_64bit_iocbs(ha,
36397 +                   sp, cmd_pkt, req_q_cnt, req_ring_index, request_ring_ptr,
36398 +                   tot_iocbs, tot_dsds);
36399 +
36400 +       } else {
36401 +               *((uint32_t *)(&cmd_pkt->entry_type)) =
36402 +                   __constant_cpu_to_le32(COMMAND_TYPE);
36403 +               //cmd_pkt->entry_type = COMMAND_TYPE;
36404 +               //cmd_pkt->entry_count = (uint8_t)tot_iocbs;
36405 +               //cmd_pkt->sys_define = (uint8_t)ha->req_ring_index;
36406 +               //cmd_pkt->entry_status = 0;
36407 +
36408 +               ret = qla2x00_cmd_build_32bit_iocbs(ha,
36409 +                   sp, cmd_pkt, req_q_cnt, req_ring_index, request_ring_ptr,
36410 +                   tot_iocbs, tot_dsds);
36411 +       }
36412 +
36413 +       return (ret);
36414 +}
36415 +
36416 +/**
36417 + * qla2x00_start_scsi() - Send a SCSI command to the ISP
36418 + * @sp: command to send to the ISP
36419 + *
36420 + * Returns non-zero if a failure occured, else zero.
36421 + */
36422 +int
36423 +qla2x00_start_scsi(srb_t *sp)
36424 +{
36425 +       int             ret;
36426 +       unsigned long   flags;
36427 +       uint16_t        failed;
36428 +       scsi_qla_host_t *ha;
36429 +       fc_lun_t        *fclun;
36430 +       Scsi_Cmnd       *cmd;
36431 +       uint16_t        req_q_cnt;
36432 +       uint16_t        req_ring_index;
36433 +       request_t       *request_ring_ptr;
36434 +       uint32_t        *clr_ptr;
36435 +       uint32_t        found;
36436 +       uint32_t        index;
36437 +       uint32_t        handle;
36438 +       uint16_t        tot_iocbs;
36439 +       uint16_t        tot_dsds;
36440 +       cmd_entry_t     *cmd_pkt;
36441 +       uint32_t        timeout;
36442 +
36443 +       device_reg_t    *reg;
36444 +       uint16_t        reg_flushed;
36445 +
36446 +       ENTER(__func__);
36447 +
36448 +       /* Setup device pointers. */
36449 +       ret = 0;
36450 +       fclun = sp->lun_queue->fclun;
36451 +       ha = fclun->fcport->ha;
36452 +
36453 +       cmd = sp->cmd;
36454 +       reg = ha->iobase;
36455 +
36456 +       DEBUG3(printk("scsi(%ld): cmd=%p sp=%p CDB=%x\n",
36457 +           ha->host_no,
36458 +           cmd, sp, cmd->cmnd[0]));
36459 +
36460 +       /* Send marker if required */
36461 +       if (ha->marker_needed != 0) {
36462 +               if (qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS) {
36463 +                       return (QL_STATUS_ERROR);
36464 +               }
36465 +               ha->marker_needed = 0;
36466 +       }
36467 +
36468 +       /* Acquire ring specific lock */
36469 +       spin_lock_irqsave(&ha->hardware_lock, flags);
36470 +
36471 +       /* Save ha fields for post-update */
36472 +       req_ring_index = ha->req_ring_index;
36473 +       request_ring_ptr = ha->request_ring_ptr;
36474 +       req_q_cnt = ha->req_q_cnt;
36475 +
36476 +       tot_dsds = 0;
36477 +       tot_iocbs = 1;
36478 +
36479 +       /* Allocate space for an additional IOCB */
36480 +       failed = qla2x00_check_request_ring(ha,
36481 +           tot_iocbs, req_ring_index, &req_q_cnt);
36482 +       if (failed)
36483 +               goto queuing_error;
36484 +
36485 +       /* Check for room in outstanding command list. */
36486 +       found = 0;
36487 +       handle = ha->current_outstanding_cmd;
36488 +       for (index = 1; index < MAX_OUTSTANDING_COMMANDS; index++) {
36489 +               handle++;
36490 +               if (handle == MAX_OUTSTANDING_COMMANDS)
36491 +                       handle = 1;
36492 +               if (ha->outstanding_cmds[handle] == 0) {
36493 +                       found = 1;
36494 +                       ha->current_outstanding_cmd = handle;
36495 +                       break;
36496 +               }
36497 +       }
36498 +       if (!found) {
36499 +               DEBUG5(printk("scsi(%ld): Unable to queue command -- NO ROOM "
36500 +                   "IN OUTSTANDING ARRAY (req_q_cnt=%lx).\n",
36501 +                   ha->host_no,
36502 +                   (u_long)ha->req_q_cnt));
36503 +               goto queuing_error;
36504 +       }
36505 +
36506 +       /*
36507 +        * Build command packet.
36508 +        */
36509 +       cmd_pkt = (cmd_entry_t *)request_ring_ptr;
36510 +
36511 +       cmd_pkt->handle = handle;
36512 +
36513 +       /* Zero out remaining portion of packet. */
36514 +       clr_ptr = (uint32_t *)cmd_pkt + 2;
36515 +       for (index = 2; index < REQUEST_ENTRY_SIZE / 4; index++)
36516 +               *clr_ptr++ = 0;
36517 +
36518 +       /* Set target ID */
36519 +#if defined(EXTENDED_IDS)
36520 +       cmd_pkt->target = cpu_to_le16(fclun->fcport->loop_id & 0xFF);
36521 +#else
36522 +       cmd_pkt->target = (uint8_t)fclun->fcport->loop_id;
36523 +#endif
36524 +
36525 +       /* Set LUN number*/
36526 +#if VSA
36527 +       if ((cmd->data_cmnd[0] == 0x26) ||
36528 +           (cmd->data_cmnd[0] == 0xA0) ||
36529 +           (cmd->data_cmnd[0] == 0xCB) ) {
36530 +               cmd_pkt->lun = cpu_to_le16(fclun->lun);
36531 +       } else if ((fclun->fcport->flags & FC_VSA))
36532 +               cmd_pkt->lun = cpu_to_le16(fclun->lun | 0x4000);
36533 +       else
36534 +               cmd_pkt->lun = cpu_to_le16(fclun->lun);
36535 +#else
36536 +       cmd_pkt->lun = cpu_to_le16(fclun->lun);
36537 +#endif
36538 +
36539 +       /* Update tagged queuing modifier */
36540 +       cmd_pkt->control_flags = __constant_cpu_to_le16(CF_SIMPLE_TAG);
36541 +       if (cmd->device->tagged_queue) {
36542 +               switch (cmd->tag) {
36543 +               case HEAD_OF_QUEUE_TAG:
36544 +                       cmd_pkt->control_flags =
36545 +                           __constant_cpu_to_le16(CF_HEAD_TAG);
36546 +                       break;
36547 +               case ORDERED_QUEUE_TAG:
36548 +                       cmd_pkt->control_flags =
36549 +                           __constant_cpu_to_le16(CF_ORDERED_TAG);
36550 +                       break;
36551 +               }
36552 +       }
36553 +
36554 +       /*
36555 +        * Allocate at least 5 (+ QLA_CMD_TIMER_DELTA) seconds for RISC timeout.
36556 +        */
36557 +       timeout = (uint32_t) CMD_TIMEOUT(cmd)/HZ;
36558 +       if (timeout > 65535)
36559 +               cmd_pkt->timeout = __constant_cpu_to_le16(0);
36560 +       if (timeout > 25)
36561 +               cmd_pkt->timeout = cpu_to_le16((uint16_t)timeout -
36562 +                   (5 + QLA_CMD_TIMER_DELTA));
36563 +       else
36564 +               cmd_pkt->timeout = cpu_to_le16((uint16_t)timeout);
36565 +
36566 +       /* Load SCSI command packet. */
36567 +       memcpy(cmd_pkt->scsi_cdb, cmd->cmnd, cmd->cmd_len);
36568 +
36569 +       cmd_pkt->byte_count = cpu_to_le32((uint32_t)cmd->request_bufflen);
36570 +
36571 +       /* Load IOCB segments */
36572 +       ret = qla2x00_cmd_build_iocb(ha,
36573 +           sp,
36574 +           cmd_pkt,
36575 +           &req_q_cnt, &req_ring_index, &request_ring_ptr,
36576 +           &tot_iocbs, &tot_dsds);
36577 +       if (ret)
36578 +               goto queuing_error;
36579 +
36580 +       /* Set total data segment count. */
36581 +       cmd_pkt->dseg_count = cpu_to_le16(tot_dsds);
36582 +       cmd_pkt->entry_count = (uint8_t)tot_iocbs;
36583 +
36584 +       /* Update ha fields */
36585 +       ha->req_ring_index = req_ring_index;
36586 +       ha->request_ring_ptr = request_ring_ptr;
36587 +       ha->req_q_cnt = req_q_cnt;
36588 +       ha->req_q_cnt -= tot_iocbs;
36589 +#if defined(IOCB_THROLLE_USAGE)
36590 +       ha->iocb_cnt += tot_iocbs;
36591 +
36592 +       sp->iocb_cnt = tot_iocbs;
36593 +#endif
36594 +
36595 +       /* Add command to the active array */
36596 +       ha->outstanding_cmds[handle] = sp;
36597 +       CMD_HANDLE(sp->cmd) = (unsigned char *)(u_long)handle;
36598 +
36599 +       /* Adjust ring index. */
36600 +       ha->req_ring_index++;
36601 +       if (ha->req_ring_index == REQUEST_ENTRY_CNT) {
36602 +               ha->req_ring_index = 0;
36603 +               ha->request_ring_ptr = ha->request_ring;
36604 +       } else
36605 +               ha->request_ring_ptr++;
36606 +
36607 +       ha->actthreads++;
36608 +       ha->total_ios++;
36609 +       sp->ha = ha;
36610 +       sp->lun_queue->out_cnt++;
36611 +       sp->flags |= SRB_DMA_VALID;
36612 +       sp->state = SRB_ACTIVE_STATE;
36613 +       sp->u_start = jiffies;
36614 +
36615 +       /* Set chip new ring index. */
36616 +       reg_flushed = CACHE_FLUSH(ISP_REQ_Q_IN(reg));
36617 +       WRT_REG_WORD(ISP_REQ_Q_IN(reg), ha->req_ring_index);
36618 +
36619 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
36620 +       return (QL_STATUS_SUCCESS);
36621 +
36622 +queuing_error:
36623 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
36624 +       return (QL_STATUS_ERROR);
36625 +}
36626 +
36627 +
36628 +/**
36629 + * qla2x00_marker() - Send a marker IOCB to the firmware.
36630 + * @ha: HA context
36631 + * @loop_id: loop ID
36632 + * @lun: LUN
36633 + * @type: marker modifier
36634 + *
36635 + * Can be called from both normal and interrupt context.
36636 + *
36637 + * Returns non-zero if a failure occured, else zero.
36638 + */
36639 +int
36640 +__qla2x00_marker(scsi_qla_host_t *ha,
36641 +    uint16_t loop_id,
36642 +    uint16_t lun,
36643 +    uint8_t type)
36644 +{
36645 +       mrk_entry_t     *pkt;
36646 +
36647 +       ENTER(__func__);
36648 +
36649 +       pkt = (mrk_entry_t *)qla2x00_req_pkt(ha);
36650 +       if (pkt == NULL) {
36651 +               DEBUG2_3(printk("%s(): **** FAILED ****\n", __func__));
36652 +
36653 +               return (QL_STATUS_ERROR);
36654 +       }
36655 +
36656 +       pkt->entry_type = MARKER_TYPE;
36657 +       pkt->modifier = type;
36658 +
36659 +       if (type != MK_SYNC_ALL) {
36660 +               pkt->lun = cpu_to_le16(lun);
36661 +#if defined(EXTENDED_IDS)
36662 +               pkt->target = cpu_to_le16(loop_id & 0xFF);
36663 +#else
36664 +               pkt->target = (uint8_t)loop_id;
36665 +#endif
36666 +       }
36667 +
36668 +       /* Issue command to ISP */
36669 +       qla2x00_isp_cmd(ha);
36670 +
36671 +       LEAVE(__func__);
36672 +
36673 +       return (QL_STATUS_SUCCESS);
36674 +}
36675 +
36676 +int 
36677 +qla2x00_marker(scsi_qla_host_t *ha,
36678 +    uint16_t loop_id,
36679 +    uint16_t lun,
36680 +    uint8_t type)
36681 +{
36682 +       int ret;
36683 +       unsigned long flags = 0;
36684 +
36685 +       spin_lock_irqsave(&ha->hardware_lock, flags);
36686 +       ret = __qla2x00_marker(ha, loop_id, lun, type);
36687 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
36688 +
36689 +       return (ret);
36690 +}
36691 +
36692 +/**
36693 + * qla2x00_req_pkt() - Retrieve a request packet from the request ring.
36694 + * @ha: HA context
36695 + *
36696 + * Note: The caller must hold the hardware lock before calling this routine.
36697 + *
36698 + * Returns NULL if function failed, else, a pointer to the request packet.
36699 + */
36700 +request_t *
36701 +qla2x00_req_pkt(scsi_qla_host_t *ha)
36702 +{
36703 +       device_reg_t    *reg = ha->iobase;
36704 +       request_t       *pkt = NULL;
36705 +       uint16_t        cnt;
36706 +       uint32_t        *dword_ptr;
36707 +       uint32_t        timer;
36708 +       uint16_t        req_cnt = 1;
36709 +
36710 +       ENTER(__func__);
36711 +
36712 +       /* Wait 1 second for slot. */
36713 +       for (timer = HZ; timer; timer--) {
36714 +               if ((req_cnt + 2) >= ha->req_q_cnt) {
36715 +                       /* Calculate number of free request entries. */
36716 +                       cnt = qla2x00_debounce_register(ISP_REQ_Q_OUT(reg));
36717 +                       if  (ha->req_ring_index < cnt)
36718 +                               ha->req_q_cnt = cnt - ha->req_ring_index;
36719 +                       else
36720 +                               ha->req_q_cnt = REQUEST_ENTRY_CNT -
36721 +                                   (ha->req_ring_index - cnt);
36722 +               }
36723 +               /* If room for request in request ring. */
36724 +               if ((req_cnt + 2) < ha->req_q_cnt) {
36725 +                       ha->req_q_cnt--;
36726 +                       pkt = ha->request_ring_ptr;
36727 +
36728 +                       /* Zero out packet. */
36729 +                       dword_ptr = (uint32_t *)pkt;
36730 +                       for (cnt = 0; cnt < REQUEST_ENTRY_SIZE / 4; cnt++)
36731 +                               *dword_ptr++ = 0;
36732 +
36733 +                       /* Set system defined field. */
36734 +                       pkt->sys_define = (uint8_t)ha->req_ring_index;
36735 +
36736 +                       /* Set entry count. */
36737 +                       pkt->entry_count = 1;
36738 +
36739 +                       break;
36740 +               }
36741 +
36742 +               /* Release ring specific lock */
36743 +               spin_unlock(&ha->hardware_lock);
36744 +
36745 +               udelay(2);   /* 2 us */
36746 +
36747 +               /* Check for pending interrupts. */
36748 +               /* During init we issue marker directly */
36749 +               if (!ha->marker_needed)
36750 +                       qla2x00_poll(ha);
36751 +
36752 +               spin_lock_irq(&ha->hardware_lock);
36753 +       }
36754 +       if (!pkt) {
36755 +               DEBUG2_3(printk("%s(): **** FAILED ****\n", __func__));
36756 +       }
36757 +
36758 +       LEAVE(__func__);
36759 +
36760 +       return (pkt);
36761 +}
36762 +
36763 +/**
36764 + * qla2x00_ms_req_pkt() - Retrieve a Management Server request packet from
36765 + *                             the request ring.
36766 + * @ha: HA context
36767 + * @sp: pointer to handle post function call
36768 + *
36769 + * Note: The caller must hold the hardware lock before calling this routine.
36770 + *
36771 + * Returns NULL if function failed, else, a pointer to the request packet.
36772 + */
36773 +request_t *
36774 +qla2x00_ms_req_pkt(scsi_qla_host_t *ha, srb_t  *sp)
36775 +{
36776 +       device_reg_t    *reg = ha->iobase;
36777 +       request_t       *pkt = NULL;
36778 +       uint16_t        cnt, i, index;
36779 +       uint32_t        *dword_ptr;
36780 +       uint32_t        timer;
36781 +       uint8_t         found = 0;
36782 +       uint16_t        req_cnt = 1;
36783 +
36784 +       ENTER(__func__);
36785 +
36786 +       /* Wait 1 second for slot. */
36787 +       for (timer = HZ; timer; timer--) {
36788 +               if ((req_cnt + 2) >= ha->req_q_cnt) {
36789 +                       /* Calculate number of free request entries. */
36790 +                       cnt = qla2x00_debounce_register(ISP_REQ_Q_OUT(reg));
36791 +                       if (ha->req_ring_index < cnt) {
36792 +                               ha->req_q_cnt = cnt - ha->req_ring_index;
36793 +                       } else {
36794 +                               ha->req_q_cnt = REQUEST_ENTRY_CNT -
36795 +                                   (ha->req_ring_index - cnt);
36796 +                       }
36797 +               }
36798 +
36799 +               /* Check for room in outstanding command list. */
36800 +               cnt = ha->current_outstanding_cmd;
36801 +               for (index = 1; index < MAX_OUTSTANDING_COMMANDS; index++) {
36802 +                       cnt++;
36803 +                       if (cnt == MAX_OUTSTANDING_COMMANDS)
36804 +                               cnt = 1;
36805 +
36806 +                       if (ha->outstanding_cmds[cnt] == 0) {
36807 +                               found = 1;
36808 +                               ha->current_outstanding_cmd = cnt;
36809 +                               break;
36810 +                       }
36811 +               }
36812 +
36813 +               /* If room for request in request ring. */
36814 +               if (found && (req_cnt + 2) < ha->req_q_cnt) {
36815 +                       pkt = ha->request_ring_ptr;
36816 +
36817 +                       /* Zero out packet. */
36818 +                       dword_ptr = (uint32_t *)pkt;
36819 +                       for (i = 0; i < REQUEST_ENTRY_SIZE / 4; i++ )
36820 +                               *dword_ptr++ = 0;
36821 +
36822 +                       DEBUG5(printk("%s(): putting sp=%p in "
36823 +                           "outstanding_cmds[%x]\n",
36824 +                           __func__,
36825 +                           sp, cnt));
36826 +
36827 +                       ha->outstanding_cmds[cnt] = sp;
36828 +
36829 +                       /* save the handle */
36830 +                       CMD_HANDLE(sp->cmd) = (unsigned char *) (u_long) cnt;
36831 +                       CMD_SP(sp->cmd) = (void *)sp;
36832 +
36833 +                       ha->req_q_cnt--;
36834 +                       pkt->handle = (uint32_t)cnt;
36835 +
36836 +                       /* Set system defined field. */
36837 +                       pkt->sys_define = (uint8_t)ha->req_ring_index;
36838 +                       pkt->entry_status = 0;
36839 +
36840 +                       break;
36841 +               }
36842 +
36843 +               /* Release ring specific lock */
36844 +               spin_unlock(&ha->hardware_lock);
36845 +               udelay(20);
36846 +
36847 +               /* Check for pending interrupts. */
36848 +               qla2x00_poll(ha);
36849 +
36850 +               spin_lock_irq(&ha->hardware_lock);
36851 +       }
36852 +       if (!pkt) {
36853 +               DEBUG2_3(printk("%s(): **** FAILED ****\n", __func__));
36854 +       }
36855 +
36856 +       LEAVE(__func__);
36857 +
36858 +       return (pkt);
36859 +}
36860 +
36861 +/**
36862 + * qla2x00_isp_cmd() - Modify the request ring pointer.
36863 + * @ha: HA context
36864 + *
36865 + * Note: The caller must hold the hardware lock before calling this routine.
36866 + */
36867 +void
36868 +qla2x00_isp_cmd(scsi_qla_host_t *ha)
36869 +{
36870 +       device_reg_t *reg = ha->iobase;
36871 +
36872 +       ENTER(__func__);
36873 +
36874 +       DEBUG5(printk("%s(): IOCB data:\n", __func__));
36875 +       DEBUG5(qla2x00_dump_buffer(
36876 +           (uint8_t *)ha->request_ring_ptr, REQUEST_ENTRY_SIZE));
36877 +
36878 +       /* Adjust ring index. */
36879 +       ha->req_ring_index++;
36880 +       if (ha->req_ring_index == REQUEST_ENTRY_CNT) {
36881 +               ha->req_ring_index = 0;
36882 +               ha->request_ring_ptr = ha->request_ring;
36883 +       } else
36884 +               ha->request_ring_ptr++;
36885 +
36886 +       /* Set chip new ring index. */
36887 +       WRT_REG_WORD(ISP_REQ_Q_IN(reg), ha->req_ring_index);
36888 +
36889 +       LEAVE(__func__);
36890 +}
36891 +
36892 +// TODO: Complete implementation.
36893 +// TODO: Add support for EXTENDED_IDS.
36894 +#ifdef COMPLETE_IMPLEMENTATION
36895 +
36896 +/* MAILBOX IOCB stuff */
36897 +
36898 +/**
36899 + * qla2x00_send_login_port_iocb() - Login to a device.
36900 + * @ha: SCSI driver HA context
36901 + * @ipdev: IP device to login to
36902 + *
36903 + * This routine will build and send a mailbox IOCB to login to a fabric port.
36904 + *
36905 + * The qla2x00_mailbox_iocb_done() routine will be called upon IOCB
36906 + * completion, where further processing is performed.
36907 + *
36908 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
36909 + */
36910 +static int
36911 +qla2x00_send_login_port_iocb(scsi_qla_host_t *ha, fcdev_t *device)
36912 +{
36913 +       unsigned long   flags = 0;
36914 +       struct mbx_entry *mbxentry;
36915 +
36916 +       DEBUG2(printk("%s(): port ID: %x\n",
36917 +                       __func__,
36918 +                       device->port_id[2]<<16 |
36919 +                       device->port_id[1]<<8 |
36920 +                       device->port_id[0]);)
36921 +
36922 +       /* Send marker if required */
36923 +       if (ha->marker_needed != 0) {
36924 +               if (qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
36925 +                       return (QL_STATUS_ERROR);
36926 +               ha->marker_needed = 0;
36927 +       }
36928 +
36929 +       spin_lock_irqsave(&ha->hardware_lock, flags);
36930 +
36931 +       mbxentry = (struct mbx_entry *)qla2x00_req_pkt(ha);
36932 +       if (mbxentry == NULL) {
36933 +               DEBUG2(printk("%s(): failed\n", __func__);)
36934 +
36935 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
36936 +
36937 +               return (QL_STATUS_ERROR);
36938 +       }
36939 +
36940 +       /* Build fabric login MBX IOCB */
36941 +       mbxentry->entry_type = ET_MAILBOX_COMMAND;
36942 +       mbxentry->entry_count = 1;
36943 +       mbxentry->sys_define1 = SOURCE_SCSI;
36944 +       mbxentry->entry_status = 0;
36945 +       mbxentry->handle = cpu_to_le32(device->dev_id |
36946 +                               (MBC_LOGIN_FABRIC_PORT << 16));
36947 +       mbxentry->loop_id = device->loop_id;
36948 +       mbxentry->mb0 = __constant_cpu_to_le16(MBC_LOGIN_FABRIC_PORT);
36949 +       mbxentry->mb1 = cpu_to_le16((device->loop_id << 8) | 
36950 +                               (MBC_NO_PROCESS_LOGIN |
36951 +                                MBC_NO_PLOGI_IF_LOGGED_IN));
36952 +       mbxentry->mb2 = cpu_to_le16(device->port_id[2]);
36953 +       mbxentry->mb3 = cpu_to_le16((device->port_id[1] << 8) |
36954 +                               device->port_id[0]);
36955 +       mbxentry->mb6 = __constant_cpu_to_le16(0);
36956 +       mbxentry->mb7 = __constant_cpu_to_le16(0);
36957 +
36958 +       /* Issue command to ISP */
36959 +       qla2x00_isp_cmd(ha);
36960 +
36961 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
36962 +
36963 +       return (QL_STATUS_SUCCESS);
36964 +}
36965 +
36966 +/**
36967 + * qla2x00_send_logout_port_iocb() - Logout an FC device.
36968 + * @ha: SCSI driver HA context
36969 + * @device: FC device to logout
36970 + *
36971 + * This routine will build and send a mailbox IOCB to logout a fabric port.
36972 + *
36973 + * The qla2x00_mailbox_iocb_done() routine will be called upon IOCB
36974 + * completion, where further processing is performed.
36975 + *
36976 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
36977 + */
36978 +static int
36979 +qla2x00_send_logout_port_iocb(scsi_qla_host_t *ha, fcdev_t *device)
36980 +{
36981 +       unsigned long   flags = 0;
36982 +       struct mbx_entry *mbxentry;
36983 +
36984 +       DEBUG2(printk("%s(): port ID: %x\n",
36985 +                       __func__,
36986 +                       device->port_id[2]<<16 |
36987 +                       device->port_id[1]<<8 |
36988 +                       device->port_id[0]);)
36989 +
36990 +       /* Send marker if required */
36991 +       if (ha->marker_needed != 0) {
36992 +               if (qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
36993 +                       return (QL_STATUS_ERROR);
36994 +               ha->marker_needed = 0;
36995 +       }
36996 +
36997 +       spin_lock_irqsave(&ha->hardware_lock, flags);
36998 +
36999 +       mbxentry = (struct mbx_entry *)qla2x00_req_pkt(ha);
37000 +       if (mbxentry == NULL) {
37001 +               DEBUG3(printk("%s(): failed\n", __func__);)
37002 +
37003 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
37004 +
37005 +               return (QL_STATUS_ERROR);
37006 +       }
37007 +
37008 +       /* Build fabric logout MBX IOCB */
37009 +       mbxentry->entry_type = ET_MAILBOX_COMMAND;
37010 +       mbxentry->entry_count = 1;
37011 +       mbxentry->sys_define1 = SOURCE_SCSI;
37012 +       mbxentry->entry_status = 0;
37013 +       mbxentry->handle = cpu_to_le32(device->dev_id |
37014 +                               (MBC_LOGOUT_FABRIC_PORT << 16));
37015 +       mbxentry->loop_id = device->loop_id;
37016 +       mbxentry->mb0 = __constant_cpu_to_le16(MBC_LOGOUT_FABRIC_PORT);
37017 +       mbxentry->mb1 = cpu_to_le16(device->loop_id << 8);
37018 +       mbxentry->mb2 = __constant_cpu_to_le16(0);
37019 +       mbxentry->mb3 = __constant_cpu_to_le16(0);
37020 +       mbxentry->mb6 = __constant_cpu_to_le16(0);
37021 +       mbxentry->mb7 = __constant_cpu_to_le16(0);
37022 +
37023 +       /* Issue command to ISP */
37024 +       qla2x00_isp_cmd(ha);
37025 +
37026 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
37027 +
37028 +       return (QL_STATUS_SUCCESS);
37029 +}
37030 +
37031 +/**
37032 + * qla2x00_mailbox_iocb_done() - Process an mailbox IOCB completion.
37033 + * @ha: SCSI driver HA context
37034 + * @mbxentry: completed mailbox IOCB entry
37035 + *
37036 + * This routine is currently used for fabric login and logouts only.
37037 + */
37038 +static void
37039 +qla2x00_mailbox_iocb_done(scsi_qla_host_t *ha, struct mbx_entry *mbxentry)
37040 +{
37041 +       int             status;
37042 +       uint16_t        cmd;
37043 +       uint16_t        index;
37044 +       fcdev           *device;
37045 +
37046 +// FIXME: endianess?
37047 +       /* Parse-out originating mailbox command */
37048 +       cmd = MSW(mbxentry->handle);
37049 +
37050 +       DEBUG2(printk("%s: cmd %x, status %x, mb0 %x, mb1 %x, mb2 %x\n",
37051 +                       __func__,
37052 +                       cmd,
37053 +                       mbxentry->status,
37054 +                       mbxentry->mb0,
37055 +                       mbxentry->mb1,
37056 +                       mbxentry->mb2);)
37057 +
37058 +       /* Get device block pointer */
37059 +       index = LSW(mbxentry->handle);
37060 +       if (index >= QLLAN_MAX_IP_DEVICES) {
37061 +               /* Bad handle from ISP */
37062 +               DEBUG3(printk("%s: bad handle from isp\n", __func__);)
37063 +
37064 +               /* TODO: Cleanup??? */
37065 +
37066 +               return;
37067 +       }
37068 +// FIXME FROM HERE!!!
37069 +       ipdev = &ha->ipdev_db[index];
37070 +
37071 +       if (cmd == MBC_LOGOUT_FABRIC_PORT) {
37072 +               /* Check fabric logout completion status */
37073 +               if (/*mbxentry->status == CS_COMPLETE && */
37074 +                       mbxentry->mb0 == MBS_COMMAND_COMPLETE) {
37075 +
37076 +                       /* Logout successful -- do nothing */
37077 +               }
37078 +               else {
37079 +                       DEBUG12(printk("%s: fabric logout failed\n", __func__);)
37080 +               }
37081 +       }
37082 +       else {
37083 +               /* Check fabric login completion status */
37084 +               /* Note: sometimes ISP returns Status=0x30 and MB0=0x4000 */
37085 +               /* Therefore, only check mb0 for now */
37086 +               if (/* mbxentry->status == CS_COMPLETE && */
37087 +                       mbxentry->mb0 == MBS_COMMAND_COMPLETE) {
37088 +
37089 +                       /* Login successful */
37090 +                       ipdev->flags |= IP_DEV_FLAG_PRESENT;
37091 +               }
37092 +               else if (mbxentry->mb0 == MBS_PORT_ID_IN_USE) {
37093 +                       /* Different loop ID already assigned to port ID */
37094 +                       /* Use the one that is already assigned */
37095 +                       qla2x00_free_loopid(ha, ipdev->loop_id);
37096 +                       ipdev->loop_id = mbxentry->mb1;
37097 +
37098 +                       /* Do logout first and then relogin */
37099 +                       qla2x00_ip_send_logout_port_iocb(ha, ipdev, 1);
37100 +                       qla2x00_ip_send_login_port_iocb(ha, ipdev, 1);
37101 +               }
37102 +               else if (mbxentry->mb0 == MBS_LOOP_ID_IN_USE) {
37103 +                       /* Loop ID already used for different port ID */
37104 +                       /* Get a new loop ID and reissue login request */
37105 +                       status = qla2x00_reserve_loopid(ha, &ipdev->loop_id);
37106 +                       if (status == QL_STATUS_SUCCESS) {
37107 +                               qla2x00_ip_send_login_port_iocb(ha, ipdev, 1);
37108 +                       }
37109 +                       else {
37110 +                               DEBUG12(printk("%s: out of loop IDs\n",
37111 +                                               __func__);)
37112 +
37113 +                               qla2x00_free_ip_block(ha, ipdev);
37114 +                       }
37115 +               }
37116 +               else {
37117 +                       /* Login failed, return resources */
37118 +                       DEBUG12(printk("%s: fabric login failed\n", __func__);)
37119 +
37120 +                       qla2x00_free_loopid(ha, ipdev->loop_id);
37121 +                       qla2x00_free_ip_block(ha, ipdev);
37122 +               }
37123 +       }
37124 +}
37125 +
37126 +#endif
37127 +
37128 +
37129 --- /dev/null   Thu Apr 11 07:25:15 2002
37130 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_ip.c    Thu Jul  3 15:34:42 2003
37131 @@ -0,0 +1,1769 @@
37132 +/******************************************************************************
37133 + *                  QLOGIC LINUX SOFTWARE
37134 + *
37135 + * QLogic ISP2x00 device driver for Linux 2.5.x
37136 + * Copyright (C) 2003 Qlogic Corporation
37137 + * (www.qlogic.com)
37138 + *
37139 + * This program is free software; you can redistribute it and/or modify it
37140 + * under the terms of the GNU General Public License as published by the
37141 + * Free Software Foundation; either version 2, or (at your option) any
37142 + * later version.
37143 + *
37144 + * This program is distributed in the hope that it will be useful, but
37145 + * WITHOUT ANY WARRANTY; without even the implied warranty of
37146 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
37147 + * General Public License for more details.
37148 + *
37149 + ******************************************************************************/
37150 +
37151 +/****************************************************************************
37152 +              Please see revision.notes for revision history.
37153 +*****************************************************************************/
37154 +
37155 +static __u8    hwbroadcast_addr[ETH_ALEN] = { [0 ... ETH_ALEN-1] = 0xFF };
37156 +
37157 +
37158 +/**
37159 + * qla2x00_ip_initialize() - Initialize RISC IP support.
37160 + * @ha: SCSI driver HA context
37161 + *
37162 + * Prior to RISC IP initialization, this routine, if necessary, will reset all
37163 + * buffers in the receive buffer ring.
37164 + *
37165 + * Returns TRUE if the RISC IP initialization succeeds.
37166 + */
37167 +static int
37168 +qla2x00_ip_initialize(scsi_qla_host_t *ha)
37169 +{
37170 +       int             i;
37171 +       int             status;
37172 +       unsigned long   flags;
37173 +       device_reg_t    *reg;
37174 +       static mbx_cmd_t mc;
37175 +       mbx_cmd_t       *mcp = &mc;
37176 +       struct ip_init_cb *ipinit_cb;
37177 +       dma_addr_t      ipinit_cb_dma;
37178 +
37179 +       DEBUG12(printk("%s: enter\n", __func__);)
37180 +
37181 +       status = FALSE;
37182 +
37183 +       /* Initialize IP data in ha */
37184 +       ha->ipdev_db_top = NULL;
37185 +       ha->ipdev_db_bottom = NULL;
37186 +       ha->ipdev_db_next_free = &ha->ipdev_db[0];
37187 +       for (i = 0; i < QLLAN_MAX_IP_DEVICES; i++) {
37188 +               ha->ipdev_db[i].index = i;
37189 +               ha->ipdev_db[i].next = &ha->ipdev_db[i+1];
37190 +       }
37191 +       ha->ipdev_db[QLLAN_MAX_IP_DEVICES-1].next = NULL;
37192 +
37193 +       /* Reset/pack buffers owned by RISC in receive buffer ring */
37194 +       if (ha->rec_entries_in != ha->rec_entries_out) {
37195 +               struct buffer_cb        *bcb;
37196 +               uint16_t                rec_out;
37197 +               struct risc_rec_entry   *rec_entry;
37198 +
37199 +               bcb = ha->receive_buffers;
37200 +               rec_out = ha->rec_entries_out;
37201 +
37202 +               /*
37203 +                * Must locate all RISC owned buffers and pack them in the
37204 +                * buffer ring.
37205 +                */
37206 +               /* between IpBufferOut and IpBufferIN */
37207 +               for (i = 0; i < ha->max_receive_buffers; i++, bcb++) {
37208 +                       if (test_bit(BCB_RISC_OWNS_BUFFER, &bcb->state)) {
37209 +                               /*
37210 +                                * Set RISC owned buffer into receive buffer
37211 +                                * ring.
37212 +                                */
37213 +                               rec_entry = &ha->risc_rec_q[rec_out];
37214 +                               rec_entry->handle = bcb->handle;
37215 +                               rec_entry->data_addr_low =
37216 +                                       LSD(bcb->skb_data_dma);
37217 +                               rec_entry->data_addr_high =
37218 +                                       MSD(bcb->skb_data_dma);
37219 +                               if (rec_out < IP_BUFFER_QUEUE_DEPTH - 1)
37220 +                                       rec_out++;
37221 +                               else
37222 +                                       rec_out = 0;
37223 +                       }
37224 +               }
37225 +
37226 +               /* Verify correct number of RISC owned buffers were found */
37227 +               if (rec_out != ha->rec_entries_in) {
37228 +                       /* Incorrect number of RISC owned buffers?? */
37229 +                       DEBUG12(printk("%s: incorrect number of RISC "
37230 +                                       "owned buffers, disable IP\n",
37231 +                                       __func__);)
37232 +                       ha->flags.enable_ip = FALSE;
37233 +                       return (FALSE);
37234 +               }
37235 +       }
37236 +
37237 +       /* Init RISC buffer pointer */
37238 +       spin_lock_irqsave(&ha->hardware_lock, flags);
37239 +       reg = ha->iobase;
37240 +       WRT_REG_WORD(&reg->mailbox8, ha->rec_entries_in);
37241 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
37242 +
37243 +       /* Wait for a ready state from the adapter */
37244 +       while (!ha->init_done || ha->dpc_active) {
37245 +               set_current_state(TASK_INTERRUPTIBLE);
37246 +               schedule_timeout(HZ);
37247 +       }
37248 +
37249 +       /* Setup IP initialization control block */
37250 +       ipinit_cb = pci_alloc_consistent(ha->pdev,
37251 +                               sizeof(struct ip_init_cb), 
37252 +                               &ipinit_cb_dma);
37253 +       if (ipinit_cb) {
37254 +               memset(ipinit_cb, 0, sizeof(struct ip_init_cb));
37255 +               ipinit_cb->version = IPICB_VERSION;
37256 +               ipinit_cb->firmware_options =
37257 +                       __constant_cpu_to_le16(
37258 +                               IPICB_OPTION_NO_BROADCAST_FASTPOST |
37259 +                                IPICB_OPTION_64BIT_ADDRESSING);
37260 +               ipinit_cb->header_size = cpu_to_le16(ha->header_size);
37261 +               ipinit_cb->mtu = cpu_to_le16((uint16_t)ha->mtu);
37262 +               ipinit_cb->receive_buffer_size =
37263 +                       cpu_to_le16((uint16_t)ha->receive_buff_data_size);
37264 +               ipinit_cb->receive_queue_size =
37265 +                        __constant_cpu_to_le16(IP_BUFFER_QUEUE_DEPTH);
37266 +               ipinit_cb->low_water_mark =
37267 +                        __constant_cpu_to_le16(IPICB_LOW_WATER_MARK);
37268 +               ipinit_cb->receive_queue_addr[0] =
37269 +                       cpu_to_le16(LSW(ha->risc_rec_q_dma));
37270 +               ipinit_cb->receive_queue_addr[1] =
37271 +                       cpu_to_le16(MSW(ha->risc_rec_q_dma));
37272 +               ipinit_cb->receive_queue_addr[2] =
37273 +                       cpu_to_le16(LSW(MSD(ha->risc_rec_q_dma)));
37274 +               ipinit_cb->receive_queue_addr[3] =
37275 +                       cpu_to_le16(MSW(MSD(ha->risc_rec_q_dma)));
37276 +               ipinit_cb->receive_queue_in = cpu_to_le16(ha->rec_entries_out);
37277 +               ipinit_cb->fast_post_count =
37278 +                        __constant_cpu_to_le16(IPICB_FAST_POST_COUNT);
37279 +               ipinit_cb->container_count =
37280 +                        __constant_cpu_to_le16(IPICB_BUFFER_CONTAINER_COUNT);
37281 +               ipinit_cb->resource_allocation =
37282 +                        __constant_cpu_to_le16(IPICB_IOCB_RESERVE_COUNT);
37283 +
37284 +               /* Issue mailbox command to initialize IP firmware */
37285 +               mcp->mb[0] = MBC_INITIALIZE_IP;
37286 +               mcp->mb[2] = MSW(ipinit_cb_dma);
37287 +               mcp->mb[3] = LSW(ipinit_cb_dma);
37288 +               mcp->mb[6] = MSW(MSD(ipinit_cb_dma));
37289 +               mcp->mb[7] = LSW(MSD(ipinit_cb_dma));
37290 +               mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
37291 +               mcp->in_mb = MBX_0;
37292 +               mcp->tov = 30;
37293 +               mcp->buf_size = sizeof(struct ip_init_cb);
37294 +               mcp->flags = MBX_DMA_OUT;
37295 +
37296 +               status = qla2x00_mailbox_command(ha, mcp);
37297 +               if (status == QL_STATUS_SUCCESS) {
37298 +                       /* IP initialization successful */
37299 +                       DEBUG12(printk("%s: successful\n", __func__);)
37300 +
37301 +                       ha->flags.enable_ip = TRUE;
37302 +
37303 +                       /* Force database update */
37304 +                       set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
37305 +                       set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
37306 +                       set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
37307 +
37308 +                       /* qla2x00_loop_resync(ha); */
37309 +                       if (ha->dpc_wait && !ha->dpc_active) {
37310 +                               up(ha->dpc_wait);
37311 +                       }
37312 +                       status = TRUE;
37313 +               }
37314 +               else {
37315 +                       DEBUG12(printk("%s: MBC_INITIALIZE_IP "
37316 +                                       "failed %x MB0 %x\n",
37317 +                                       __func__, 
37318 +                                       status,
37319 +                                       mcp->mb[0]);)
37320 +                       status = FALSE;
37321 +               }
37322 +               pci_free_consistent(ha->pdev, sizeof(struct ip_init_cb),
37323 +                                       ipinit_cb, ipinit_cb_dma);
37324 +
37325 +       }
37326 +       else {
37327 +               DEBUG12(printk("%s: memory allocation error\n", __func__);)
37328 +       }
37329 +
37330 +       return (status);
37331 +}
37332 +
37333 +/**
37334 + * qla2x00_ip_send_complete() - Handle IP send completion.
37335 + * @ha: SCSI driver HA context
37336 + * @handle: handle to completed send_cb
37337 + * @comp_status: Firmware completion status of send_cb
37338 + *
37339 + * Upon cleanup of the internal active-scb queue, the IP driver is notified of
37340 + * the completion.
37341 + */
37342 +static void
37343 +qla2x00_ip_send_complete(scsi_qla_host_t *ha,
37344 +                       uint32_t handle, uint16_t comp_status)
37345 +{
37346 +       struct send_cb *scb;
37347 +
37348 +       /* Set packet pointer from queue entry handle */
37349 +       if (handle < MAX_SEND_PACKETS) {
37350 +               scb = ha->active_scb_q[handle];
37351 +               if (scb) {
37352 +                       ha->ipreq_cnt--;
37353 +                       ha->active_scb_q[handle] = NULL;
37354 +
37355 +                       scb->comp_status = comp_status;
37356 +                       pci_unmap_single(ha->pdev,
37357 +                                       scb->skb_data_dma,
37358 +                                       scb->skb->len,
37359 +                                       PCI_DMA_TODEVICE);
37360 +       
37361 +                       /* Return send packet to IP driver */
37362 +                       (*ha->send_completion_routine)(scb);
37363 +                       return;
37364 +               }
37365 +       }
37366 +
37367 +       /* Invalid handle from RISC, reset RISC firmware */
37368 +       printk(KERN_WARNING
37369 +               "%s: Bad IP send handle %x - aborting ISP\n",
37370 +               __func__, handle);
37371 +
37372 +       set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37373 +}
37374 +
37375 +/**
37376 + * qla2x00_ip_receive() - Handle IP receive IOCB.
37377 + * @ha: SCSI driver HA context
37378 + * @pkt: RISC IP receive packet
37379 + *
37380 + * Upon preparation of one or more buffer_cbs, the IP driver is notified of
37381 + * the received packet.
37382 + */
37383 +static void
37384 +qla2x00_ip_receive(scsi_qla_host_t *ha, response_t *pkt)
37385 +{
37386 +       uint32_t        handle;
37387 +       uint32_t        packet_size;
37388 +       uint16_t        linked_bcb_cnt;
37389 +       uint32_t        rec_data_size;
37390 +       uint16_t        comp_status;
37391 +       struct buffer_cb *bcb;
37392 +       struct buffer_cb *nbcb;
37393 +       struct ip_rec_entry *iprec_entry;
37394 +
37395 +       DEBUG12(printk("%s: enter\n", __func__);)
37396 +
37397 +       iprec_entry = (struct ip_rec_entry *)pkt;
37398 +       comp_status = le16_to_cpu(iprec_entry->comp_status);
37399 +
37400 +       /* If split buffer, set header size for 1st buffer */
37401 +       if (comp_status & IPREC_STATUS_SPLIT_BUFFER)
37402 +               rec_data_size = ha->header_size;
37403 +       else
37404 +               rec_data_size = ha->receive_buff_data_size;
37405 +
37406 +       handle = iprec_entry->buffer_handles[0];
37407 +       if (handle >= ha->max_receive_buffers) {
37408 +               /* Invalid handle from RISC, reset RISC firmware */
37409 +               printk(KERN_WARNING
37410 +                       "%s: Bad IP buffer handle %x (> buffer_count)...Post "
37411 +                       "ISP Abort\n",
37412 +                       __func__,
37413 +                       handle);
37414 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37415 +               return;
37416 +       }
37417 +
37418 +       bcb = &ha->receive_buffers[handle];
37419 +
37420 +       if (!test_and_clear_bit(BCB_RISC_OWNS_BUFFER, &bcb->state)) {
37421 +               /* Invalid handle from RISC, reset RISC firmware */
37422 +               printk(KERN_WARNING
37423 +                       "%s: Bad IP buffer handle %x (!RISC_owned)...Post "
37424 +                       "ISP Abort\n",
37425 +                       __func__,
37426 +                       handle);
37427 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37428 +               return;
37429 +       }
37430 +
37431 +       packet_size = le16_to_cpu(iprec_entry->sequence_length);
37432 +       bcb->comp_status = comp_status;
37433 +       bcb->packet_size = packet_size;
37434 +       nbcb = bcb;
37435 +
37436 +       /* Prepare any linked buffers */
37437 +       for (linked_bcb_cnt = 1; ; linked_bcb_cnt++) {
37438 +               if (packet_size > rec_data_size) {
37439 +                       nbcb->rec_data_size = rec_data_size;
37440 +                       packet_size -= rec_data_size;
37441 +
37442 +                       /*
37443 +                        * If split buffer, only use header size on 1st buffer
37444 +                        */
37445 +                       rec_data_size = ha->receive_buff_data_size;
37446 +
37447 +                       handle = iprec_entry->buffer_handles[linked_bcb_cnt];
37448 +                       if (handle >= ha->max_receive_buffers) {
37449 +                               /*
37450 +                                * Invalid handle from RISC reset RISC firmware
37451 +                                */
37452 +                               printk(KERN_WARNING
37453 +                                       "%s: Bad IP buffer handle %x (> "
37454 +                                       "buffer_count - PS)...Post ISP Abort\n",
37455 +                                       __func__,
37456 +                                       handle);
37457 +                               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37458 +                               return;
37459 +                       }
37460 +                       nbcb->next_bcb = &ha->receive_buffers[handle];
37461 +                       nbcb = nbcb->next_bcb;
37462 +
37463 +                       if (!test_and_clear_bit(BCB_RISC_OWNS_BUFFER,
37464 +                                                       &nbcb->state)) {
37465 +                               /*
37466 +                                * Invalid handle from RISC reset RISC firmware
37467 +                                */
37468 +                               printk(KERN_WARNING
37469 +                                       "%s: Bad IP buffer handle %x "
37470 +                                       "(!RISC_owned - PS)...Post ISP Abort\n",
37471 +                                       __func__,
37472 +                                       handle);
37473 +                               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37474 +                               return;
37475 +                       }
37476 +               }
37477 +               else {
37478 +                       /* Single buffer_cb */
37479 +                       nbcb->rec_data_size = packet_size;
37480 +                       nbcb->next_bcb = NULL;
37481 +                       break;
37482 +               }
37483 +       }
37484 +
37485 +       /* Check for incoming ARP packet with matching IP address */
37486 +       if (le16_to_cpu(iprec_entry->service_class) == 0) {
37487 +               uint8_t port_id[3];
37488 +               struct ip_device *ipdev;
37489 +               struct packet_header *packethdr;
37490 +
37491 +               packethdr = (struct packet_header *)bcb->skb_data;
37492 +
37493 +               /* Scan list of IP devices to see if login needed */
37494 +               for (ipdev = ha->ipdev_db_top; ipdev; ipdev = ipdev->next) {
37495 +                       if (!memcmp(&ipdev->port_name[2],
37496 +                               packethdr->networkh.s.na.addr, ETH_ALEN)) {
37497 +                               /* Device already in IP list, skip login */
37498 +                               goto skip_device_login;
37499 +                       }
37500 +               }
37501 +
37502 +               /* Device not in list, need to do login */
37503 +               port_id[2] = iprec_entry->s_idhigh;
37504 +// FIXME: endianess?
37505 +               port_id[1] = MSB(iprec_entry->s_idlow);
37506 +               port_id[0] = LSB(iprec_entry->s_idlow);
37507 +
37508 +               /* Make sure its not a local device */
37509 +               if (port_id[2] == ha->d_id.b.domain &&
37510 +                       port_id[1] == ha->d_id.b.area) {
37511 +
37512 +                       goto skip_device_login;
37513 +               }
37514 +
37515 +               if (qla2x00_add_new_ip_device(ha,
37516 +                                       PUBLIC_LOOP_DEVICE,
37517 +                                       port_id,
37518 +                                       packethdr->networkh.s.fcaddr,
37519 +                                       TRUE,
37520 +                                       1) == QL_STATUS_FATAL_ERROR) {
37521 +
37522 +                       /* Fatal error, reinitialize */
37523 +                       set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37524 +               }
37525 +
37526 +       }
37527 +
37528 +skip_device_login:
37529 +
37530 +       /* Pass received packet to IP driver */
37531 +       bcb->linked_bcb_cnt = linked_bcb_cnt;
37532 +       (*ha->receive_packets_routine)(ha->receive_packets_context, bcb);
37533 +
37534 +       /* Keep track of RISC buffer pointer (for IP reinit) */
37535 +       ha->rec_entries_out += linked_bcb_cnt;
37536 +       if (ha->rec_entries_out >= IP_BUFFER_QUEUE_DEPTH)
37537 +               ha->rec_entries_out -= IP_BUFFER_QUEUE_DEPTH;
37538 +}
37539 +
37540 +/**
37541 + * qla2x00_ip_receive_fastpost() - Handle IP receive fastpost.
37542 + * @ha: SCSI driver HA context
37543 + * @type: RISC fastpost type
37544 + *
37545 + * Upon preparation of one or more buffer_cbs, the IP driver is notified of
37546 + * the received packet.
37547 + */
37548 +static void
37549 +qla2x00_ip_receive_fastpost(scsi_qla_host_t *ha, uint16_t type)
37550 +{
37551 +       uint32_t        handle;
37552 +       uint32_t        packet_size;
37553 +       uint16_t        linked_bcb_cnt;
37554 +       uint32_t        rec_data_size;
37555 +       volatile uint16_t *next_mb;
37556 +       device_reg_t    *reg = ha->iobase;
37557 +       struct buffer_cb *bcb;
37558 +       struct buffer_cb *nbcb;
37559 +
37560 +       DEBUG12(printk("%s: enter\n", __func__);)
37561 +
37562 +       next_mb = &reg->mailbox10;
37563 +
37564 +       /* If split buffer, set header size for 1st buffer */
37565 +       if (type == MBA_IP_RECEIVE_COMPLETE_SPLIT)
37566 +               rec_data_size = ha->header_size;
37567 +       else
37568 +               rec_data_size = ha->receive_buff_data_size;
37569 +
37570 +       handle = RD_REG_WORD(next_mb);
37571 +       if (handle >= ha->max_receive_buffers) {
37572 +               goto invalid_handle;
37573 +       }
37574 +
37575 +       bcb = &ha->receive_buffers[handle];
37576 +
37577 +       if (!test_and_clear_bit(BCB_RISC_OWNS_BUFFER, &bcb->state)) {
37578 +               goto invalid_handle;
37579 +       }
37580 +
37581 +       packet_size = RD_REG_WORD(&reg->mailbox3);
37582 +       /* Fastpost entries are always successfully transferred */
37583 +       bcb->comp_status = CS_COMPLETE;
37584 +       bcb->packet_size = packet_size;
37585 +       nbcb = bcb;
37586 +
37587 +       /* Prepare any linked buffers */
37588 +       for (linked_bcb_cnt = 1; ; linked_bcb_cnt++) {
37589 +               if (packet_size > rec_data_size) {
37590 +                       nbcb->rec_data_size = rec_data_size;
37591 +                       packet_size -= rec_data_size;
37592 +                       /*
37593 +                        * If split buffer, only use header size on 1st buffer
37594 +                        */
37595 +                       rec_data_size = ha->receive_buff_data_size;
37596 +
37597 +                       next_mb++;
37598 +                       handle = RD_REG_WORD(next_mb);
37599 +                       if (handle >= ha->max_receive_buffers) {
37600 +invalid_handle:
37601 +                               printk(KERN_WARNING
37602 +                                       "%s: bad IP receive fast post handle "
37603 +                                       "%x\n", 
37604 +                                       __func__,
37605 +                                       handle);
37606 +                               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37607 +                               return;
37608 +                       }
37609 +
37610 +                       nbcb->next_bcb = &ha->receive_buffers[handle];
37611 +                       nbcb = nbcb->next_bcb;
37612 +
37613 +                       if (!test_and_clear_bit(BCB_RISC_OWNS_BUFFER,
37614 +                                                       &nbcb->state)) {
37615 +                               goto invalid_handle;
37616 +                       }
37617 +               }
37618 +               else {
37619 +                       /* Single buffer_cb */
37620 +                       nbcb->rec_data_size = packet_size;
37621 +                       nbcb->next_bcb = NULL;
37622 +                       break;
37623 +               }
37624 +       }
37625 +
37626 +       /* Pass received packet to IP driver */
37627 +       bcb->linked_bcb_cnt = linked_bcb_cnt;
37628 +       (*ha->receive_packets_routine)(ha->receive_packets_context, bcb);
37629 +
37630 +       /* Keep track of RISC buffer pointer (for IP reinit) */
37631 +       ha->rec_entries_out += linked_bcb_cnt;
37632 +       if (ha->rec_entries_out >= IP_BUFFER_QUEUE_DEPTH)
37633 +               ha->rec_entries_out -= IP_BUFFER_QUEUE_DEPTH;
37634 +}
37635 +
37636 +/**
37637 + * qla2x00_convert_to_arp() - Convert an IP send packet to an ARP packet
37638 + * @ha: SCSI driver HA context
37639 + * @scb: The send_cb structure to convert
37640 + *
37641 + * Returns TRUE if conversion successful.
37642 + */
37643 +static int
37644 +qla2x00_convert_to_arp(scsi_qla_host_t *ha, struct send_cb *scb)
37645 +{
37646 +       struct sk_buff          *skb;
37647 +       struct packet_header    *packethdr;
37648 +       struct arp_header       *arphdr;
37649 +       struct ip_header        *iphdr;
37650 +
37651 +       DEBUG12(printk("%s: convert packet to ARP\n", __func__);)
37652 +
37653 +       skb = scb->skb;
37654 +       packethdr = scb->header;
37655 +       arphdr = (struct arp_header *)skb->data;
37656 +       iphdr  = (struct ip_header *)skb->data;
37657 +
37658 +       if (packethdr->snaph.ethertype == __constant_htons(ETH_P_IP)) {
37659 +               /* Convert IP packet to ARP packet */
37660 +               packethdr->networkh.d.na.naa = NAA_IEEE_MAC_TYPE;
37661 +               packethdr->networkh.d.na.unused = 0;
37662 +               memcpy(packethdr->networkh.d.na.addr,
37663 +                               hwbroadcast_addr, ETH_ALEN);
37664 +               packethdr->snaph.ethertype = __constant_htons(ETH_P_ARP);
37665 +
37666 +               arphdr->ar_tip = iphdr->iph.daddr;
37667 +               arphdr->ar_sip = iphdr->iph.saddr;
37668 +               arphdr->arph.ar_hrd = __constant_htons(ARPHRD_IEEE802);
37669 +               arphdr->arph.ar_pro = __constant_htons(ETH_P_IP);
37670 +               arphdr->arph.ar_hln = ETH_ALEN;
37671 +               arphdr->arph.ar_pln = sizeof(iphdr->iph.daddr); /* 4 */
37672 +               arphdr->arph.ar_op = __constant_htons(ARPOP_REQUEST);
37673 +               memcpy(arphdr->ar_sha, packethdr->networkh.s.na.addr, ETH_ALEN);
37674 +               memset(arphdr->ar_tha, 0, ETH_ALEN);
37675 +
37676 +               skb->len = sizeof(struct arp_header);
37677 +
37678 +               return (TRUE);
37679 +       }
37680 +       else {
37681 +               return (FALSE);
37682 +       }
37683 +}
37684 +
37685 +/**
37686 + * qla2x00_get_ip_loopid() - Retrieve loop id of an IP device.
37687 + * @ha: SCSI driver HA context
37688 + * @packethdr: IP device to remove
37689 + * @loop_id: loop id of discovered device
37690 + *
37691 + * This routine will interrogate the packet header to determine if the sender is
37692 + * in the list of active IP devices.  The first two bytes of the destination
37693 + * address will be modified to match the port name stored in the active IP
37694 + * device list.
37695 + *
37696 + * Returns TRUE if a valid loop id is returned.
37697 + */
37698 +static int
37699 +qla2x00_get_ip_loopid(scsi_qla_host_t *ha,
37700 +               struct packet_header *packethdr, uint8_t *loop_id)
37701 +{
37702 +       struct ip_device *ipdev;
37703 +
37704 +       /* Scan list of logged in IP devices for match */
37705 +       for (ipdev = ha->ipdev_db_top; ipdev; ipdev = ipdev->next) {
37706 +               if (memcmp(&ipdev->port_name[2],
37707 +                               &(packethdr->networkh.d.fcaddr[2]), ETH_ALEN))
37708 +                       continue;
37709 +
37710 +               /* Found match, return loop ID  */
37711 +               *loop_id = (uint8_t)ipdev->loop_id;
37712 +
37713 +               /* Update first 2 bytes of port name */
37714 +               packethdr->networkh.d.fcaddr[0] = ipdev->port_name[0];
37715 +               packethdr->networkh.d.fcaddr[1] = ipdev->port_name[1];
37716 +
37717 +               if (ipdev != ha->ipdev_db_top) {
37718 +                       /* Device not at top, move it to top of list */
37719 +                       /* Unhook it first */
37720 +                       if (ipdev == ha->ipdev_db_bottom) {
37721 +                               ha->ipdev_db_bottom = ipdev->last;
37722 +                               ipdev->last->next = NULL;
37723 +                       }
37724 +                       else {
37725 +                               ipdev->last->next = ipdev->next;
37726 +                               ipdev->next->last = ipdev->last;
37727 +                       }
37728 +
37729 +                       /* Now put it at top of list */
37730 +                       ipdev->next = ha->ipdev_db_top;
37731 +                       ipdev->last = NULL;
37732 +                       ha->ipdev_db_top->last = ipdev;
37733 +                       ha->ipdev_db_top = ipdev;
37734 +               }
37735 +               return (TRUE);
37736 +       }
37737 +
37738 +       /* Check for broadcast packet */
37739 +       if (!memcmp(packethdr->networkh.d.na.addr,
37740 +                               hwbroadcast_addr, ETH_ALEN)) {
37741 +               /* Broadcast packet, return broadcast loop ID  */
37742 +               *loop_id = BROADCAST;
37743 +
37744 +               /* Update destination NAA of header */
37745 +               packethdr->networkh.d.na.naa = NAA_IEEE_MAC_TYPE;
37746 +               packethdr->networkh.d.na.unused = 0;
37747 +
37748 +               return (TRUE);
37749 +       }
37750 +
37751 +       /* Check for multicast packet */
37752 +       if (packethdr->networkh.d.na.addr[0] & 0x01) {
37753 +               /* Use broadcast loop ID for multicast packets  */
37754 +               *loop_id = BROADCAST;
37755 +
37756 +               /* Update destination NAA of header */
37757 +               packethdr->networkh.d.na.naa = NAA_IEEE_MAC_TYPE;
37758 +               packethdr->networkh.d.na.unused = 0;
37759 +
37760 +               return (TRUE);
37761 +       }
37762 +
37763 +       /* TODO */
37764 +       /* Try sending FARP IOCB to request login */
37765 +
37766 +       DEBUG12(printk("%s: ID not found for "
37767 +                       "XX XX %02x %02x %02x %02x %02x %02x\n",
37768 +                       __func__,
37769 +                       packethdr->networkh.d.na.addr[0],
37770 +                       packethdr->networkh.d.na.addr[1],
37771 +                       packethdr->networkh.d.na.addr[2],
37772 +                       packethdr->networkh.d.na.addr[3],
37773 +                       packethdr->networkh.d.na.addr[4],
37774 +                       packethdr->networkh.d.na.addr[5]);)
37775 +
37776 +       return (FALSE);
37777 +}
37778 +
37779 +/**
37780 + * qla2x00_reserve_loopid() - Reserve an unused public loop id.
37781 + * @ha: SCSI driver HA context
37782 + * @loop_id: loop id reserved
37783 + *
37784 + * Returns QL_STATUS_SUCCESS if a valid loop id is returned.
37785 + */
37786 +static int
37787 +qla2x00_reserve_loopid(scsi_qla_host_t *ha, uint16_t *loop_id)
37788 +{
37789 +       int i;
37790 +
37791 +       /* Look for unused loop ID */
37792 +       for (i = ha->min_external_loopid; i < ha->max_public_loop_ids; i++) {
37793 +               if (ha->fabricid[i].in_use)
37794 +                       continue;
37795 +
37796 +               /* Found free loop ID */
37797 +               ha->fabricid[i].in_use = TRUE;
37798 +               *loop_id = i;
37799 +
37800 +               DEBUG12(printk("%s: assigned loop ID %x\n",
37801 +                               __func__,
37802 +                               *loop_id);)
37803 +
37804 +               return (QL_STATUS_SUCCESS);
37805 +       }
37806 +
37807 +       /* Out of loop IDs */
37808 +       *loop_id = ha->max_public_loop_ids + 1;     /* Set out of range */
37809 +
37810 +       DEBUG12(printk("%s: out of loop IDs\n", __func__);)
37811 +
37812 +       return (QL_STATUS_RESOURCE_ERROR);
37813 +}
37814 +
37815 +/**
37816 + * qla2x00_free_loopid() - Free a public loop id.
37817 + * @ha: SCSI driver HA context
37818 + * @loop_id: loop id to free
37819 + */
37820 +static void
37821 +qla2x00_free_loopid(scsi_qla_host_t *ha, uint16_t loop_id)
37822 +{
37823 +       if (loop_id < ha->max_public_loop_ids) {
37824 +               ha->fabricid[loop_id].in_use = FALSE;
37825 +               DEBUG12(printk("%s: free loop ID %x\n",
37826 +                               __func__,
37827 +                               loop_id);)
37828 +       }
37829 +       else {
37830 +               DEBUG12(printk("%s: loop ID %x out of range\n",
37831 +                               __func__,
37832 +                               loop_id);)
37833 +       }
37834 +}
37835 +
37836 +
37837 +/**
37838 + * qla2x00_add_new_ip_device() - Add a new IP capable device to the list.
37839 + * @ha: SCSI driver HA context
37840 + * @loop_id: loop id, if a private loop, of the new device
37841 + * @port_id: port id of the new device
37842 + * @port_name: port name of the new device
37843 + * @force_add: should the function force the addition of the device
37844 + * @ha_locked: Flag indicating if the function is called with the hardware lock
37845 + *
37846 + * Prior to RISC IP initialization, this routine, if necessary, will reset all
37847 + * buffers in the receive buffer ring.
37848 + *
37849 + * Returns QL_STATUS_SUCCESS if there were no errors adding the device.
37850 + */
37851 +static int
37852 +qla2x00_add_new_ip_device(scsi_qla_host_t *ha,
37853 +                            uint16_t loop_id,
37854 +                            uint8_t *port_id,
37855 +                            uint8_t *port_name,
37856 +                            int force_add,
37857 +                            uint32_t ha_locked)
37858 +{
37859 +       int     status;
37860 +       struct ip_device *ipdev;
37861 +
37862 +       /* Get free IP device block */
37863 +       status = qla2x00_reserve_ip_block(ha, &ipdev);
37864 +       if (status == QL_STATUS_RESOURCE_ERROR) {
37865 +               if (!force_add)
37866 +                       return (status);
37867 +
37868 +               /*
37869 +                * Out of IP blocks, bump public device at bottom of list
37870 +                */
37871 +               DEBUG12(printk("%s: bump device from IP list\n", __func__);)
37872 +
37873 +               for (ipdev = ha->ipdev_db_bottom; ipdev; ipdev = ipdev->last) {
37874 +                       if (!(ipdev->flags & IP_DEV_FLAG_PUBLIC_DEVICE))
37875 +                               continue;
37876 +
37877 +                       /* Do fabric logout and free loop ID */
37878 +                       qla2x00_ip_send_logout_port_iocb(ha, ipdev, ha_locked);
37879 +                       qla2x00_free_loopid(ha, ipdev->loop_id);
37880 +
37881 +                       /* Move device to top of list */
37882 +                       qla2x00_free_ip_block(ha, ipdev);
37883 +                       status = qla2x00_reserve_ip_block(ha, &ipdev);
37884 +                       break;
37885 +               }
37886 +               if (status != QL_STATUS_SUCCESS)
37887 +                       return (status);
37888 +       }
37889 +
37890 +       /* Save IP port name */
37891 +       memcpy(ipdev->port_name, port_name, WWN_SIZE);
37892 +
37893 +       if (loop_id != PUBLIC_LOOP_DEVICE) {
37894 +               /* Private loop device */
37895 +               ipdev->loop_id = loop_id;
37896 +               ipdev->flags = IP_DEV_FLAG_PRESENT;
37897 +
37898 +               DEBUG12(printk("%s: WWN:%02x%02x%02x%02x%02x%02x%02x%02x, "
37899 +                               "LoopID:%x\n",
37900 +                               __func__,
37901 +                               ipdev->port_name[0],
37902 +                               ipdev->port_name[1],
37903 +                               ipdev->port_name[2],
37904 +                               ipdev->port_name[3],
37905 +                               ipdev->port_name[4],
37906 +                               ipdev->port_name[5],
37907 +                               ipdev->port_name[6],
37908 +                               ipdev->port_name[7],
37909 +                               ipdev->loop_id);)
37910 +       }
37911 +       else {
37912 +               /* Public device */
37913 +               /* Reserve public loop ID, save it in database */
37914 +               status = qla2x00_reserve_loopid(ha, &ipdev->loop_id);
37915 +               if (status == QL_STATUS_RESOURCE_ERROR) {
37916 +                       struct ip_device *ipdev_bump;
37917 +
37918 +                       if (!force_add) { 
37919 +                               /* Failed to get loop ID */
37920 +                               DEBUG12(printk("%s: failed to get loop ID\n",
37921 +                                               __func__);)
37922 +                               qla2x00_free_ip_block(ha, ipdev);
37923 +
37924 +                               return (status);
37925 +                       }
37926 +
37927 +                       /*
37928 +                        * Out of loop IDs, bump public device at bottom of
37929 +                        * list.
37930 +                        */
37931 +                       DEBUG12(printk("%s: bump device from IP list\n",
37932 +                                       __func__);)
37933 +
37934 +                       for (ipdev_bump = ha->ipdev_db_bottom;
37935 +                               ipdev_bump;
37936 +                               ipdev_bump = ipdev_bump->last) {
37937 +
37938 +                               if (!(ipdev_bump->flags &
37939 +                                               IP_DEV_FLAG_PUBLIC_DEVICE))
37940 +                                       continue;
37941 +
37942 +                               /*
37943 +                                * Do fabric logout, steal loop ID, free bumped
37944 +                                * IP block.
37945 +                                */
37946 +                               qla2x00_ip_send_logout_port_iocb(ha,
37947 +                                               ipdev_bump, ha_locked);
37948 +                               ipdev->loop_id = ipdev_bump->loop_id;
37949 +                               qla2x00_free_ip_block(ha, ipdev_bump);
37950 +
37951 +                               status = QL_STATUS_SUCCESS;
37952 +                               break;
37953 +                       }
37954 +
37955 +                       if (status != QL_STATUS_SUCCESS) {
37956 +                               /* Failed to get loop ID */
37957 +                               DEBUG12(printk("%s: failed to get loop ID\n",
37958 +                                               __func__);)
37959 +                               qla2x00_free_ip_block(ha, ipdev);
37960 +
37961 +                               return (status);
37962 +                       }
37963 +               }
37964 +
37965 +               /* Save device data */
37966 +               ipdev->port_id[0] = port_id[0];
37967 +               ipdev->port_id[1] = port_id[1];
37968 +               ipdev->port_id[2] = port_id[2];
37969 +               ipdev->flags = IP_DEV_FLAG_PUBLIC_DEVICE;
37970 +
37971 +               /* Login public device */
37972 +               status = qla2x00_ip_send_login_port_iocb(ha, ipdev, ha_locked);
37973 +               if (status == QL_STATUS_SUCCESS) {
37974 +                       DEBUG12(printk("%s: "
37975 +                                       "WWN:%02x%02x%02x%02x%02x%02x%02x%02x, "
37976 +                                       "LoopID:%x, PortID:%x\n",
37977 +                                       __func__,
37978 +                                       ipdev->port_name[0],
37979 +                                       ipdev->port_name[1],
37980 +                                       ipdev->port_name[2],
37981 +                                       ipdev->port_name[3],
37982 +                                       ipdev->port_name[4],
37983 +                                       ipdev->port_name[5],
37984 +                                       ipdev->port_name[6],
37985 +                                       ipdev->port_name[7],
37986 +                                       ipdev->loop_id,
37987 +                                       ipdev->port_id[2]<<16 |
37988 +                                       ipdev->port_id[1]<<8 |
37989 +                                       ipdev->port_id[0]);)
37990 +               }
37991 +               else {
37992 +                       /* Login failed, return resources */
37993 +                       qla2x00_free_loopid(ha, ipdev->loop_id);
37994 +                       qla2x00_free_ip_block(ha, ipdev);
37995 +               }
37996 +       }
37997 +
37998 +       return (status);
37999 +}
38000 +
38001 +/**
38002 + * qla2x00_free_ip_block() - Remove an IP device from the active IP list.
38003 + * @ha: SCSI driver HA context
38004 + * @ipdev: IP device to remove
38005 + */
38006 +static void
38007 +qla2x00_free_ip_block(scsi_qla_host_t *ha, struct ip_device *ipdev)
38008 +{
38009 +       /* Unhook IP device block from active list */
38010 +       if (ipdev->last == NULL)
38011 +               ha->ipdev_db_top = ipdev->next;
38012 +       else
38013 +               ipdev->last->next = ipdev->next;
38014 +
38015 +       if (ipdev->next == NULL)
38016 +               ha->ipdev_db_bottom = ipdev->last;
38017 +       else
38018 +               ipdev->next->last = ipdev->last;
38019 +
38020 +       /* Add IP device block to free list */
38021 +       ipdev->next = ha->ipdev_db_next_free;
38022 +       ha->ipdev_db_next_free = ipdev;
38023 +}
38024 +
38025 +/**
38026 + * qla2x00_reserve_ip_block() - Move an IP device to the IP device list.
38027 + * @ha: SCSI driver HA context
38028 + * @ipdevblk: reserved IP device to add 
38029 + *
38030 + * This routine will move the unused @ipdevblk from the free list to the top of
38031 + * the active IP device list.
38032 + *
38033 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
38034 + */
38035 +static int
38036 +qla2x00_reserve_ip_block(scsi_qla_host_t *ha, struct ip_device **ipdevblk)
38037 +{
38038 +       struct ip_device *ipdev;
38039 +
38040 +       /* Get free IP device block */
38041 +       ipdev = ha->ipdev_db_next_free;
38042 +       if (ipdev) { 
38043 +               /* Remove IP device block from free list */
38044 +               ha->ipdev_db_next_free = ipdev->next;
38045 +
38046 +               /* Add IP device block to top of IP device list */
38047 +               ipdev->next = ha->ipdev_db_top;
38048 +               ipdev->last = NULL;
38049 +               if (ha->ipdev_db_top == NULL)
38050 +                       ha->ipdev_db_bottom = ipdev;
38051 +               else
38052 +                       ha->ipdev_db_top->last = ipdev;
38053 +               ha->ipdev_db_top = ipdev;
38054 +
38055 +               *ipdevblk = ipdev;
38056 +
38057 +               return (QL_STATUS_SUCCESS);
38058 +       }
38059 +
38060 +       /* Out of IP blocks */
38061 +       DEBUG12(printk("%s: out of IP blocks\n", __func__);)
38062 +
38063 +       return (QL_STATUS_RESOURCE_ERROR);
38064 +}
38065 +
38066 +/**
38067 + * qla2x00_update_ip_device_data() - Update IP device list with driver data.
38068 + * @ha: SCSI driver HA context
38069 + * @fcdev: SCSI driver FC device list
38070 + *
38071 + * This routine searchs for the device port name in the current IP database and
38072 + * updates the IP device list.
38073 + *
38074 + * If device found:
38075 + *     - Handle device movement between public and private loops
38076 + *     - Mark device present
38077 + *     - Log in device if necessary
38078 + * If device not found and private loop device:
38079 + *     - Insert the new entry in database
38080 + * If device not found and public IP device:
38081 + *     - Ignore device until packet received from device
38082 + *
38083 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
38084 + */
38085 +static int
38086 +qla2x00_update_ip_device_data(scsi_qla_host_t *ha, fcdev_t *fcdev)
38087 +{
38088 +       int     status;
38089 +       struct ip_device *ipdev;
38090 +
38091 +       status = 0;
38092 +
38093 +       if (!ha->flags.enable_ip) {
38094 +               /* IP not enabled, just return */
38095 +               return (QL_STATUS_SUCCESS);
38096 +       }
38097 +
38098 +       /* Scan list of IP devices for match */
38099 +       for (ipdev = ha->ipdev_db_top; ipdev; ipdev = ipdev->next) {
38100 +               if (memcmp(fcdev->wwn, ipdev->port_name, WWN_SIZE))
38101 +                       continue;
38102 +
38103 +               /* Found device in IP device list */
38104 +               DEBUG12(printk("%s: already in IP list, port ID: %x\n",
38105 +                               __func__,
38106 +                               ipdev->port_id[2] << 16 |
38107 +                                ipdev->port_id[1] << 8 |
38108 +                                ipdev->port_id[0]);)
38109 +
38110 +               if (fcdev->flag != DEV_PUBLIC &&
38111 +                       !(ipdev->flags & IP_DEV_FLAG_PUBLIC_DEVICE)) {
38112 +                       /*
38113 +                        * Device on private loop now, was on private loop
38114 +                        * before.
38115 +                        */
38116 +                       DEBUG12(printk("%s: was private loop, now "
38117 +                                       "private loop\n",
38118 +                                       __func__);)
38119 +
38120 +                       /* Update private loop ID in database */
38121 +                       ipdev->loop_id = fcdev->loop_id;
38122 +                       ipdev->flags |= IP_DEV_FLAG_PRESENT;
38123 +               }
38124 +               else if (fcdev->flag != DEV_PUBLIC &&
38125 +                               (ipdev->flags & IP_DEV_FLAG_PUBLIC_DEVICE)) {
38126 +                       /*
38127 +                        * Device on private loop now, was public device before.
38128 +                        */
38129 +                       DEBUG12(printk("%s: was public, now private loop\n",
38130 +                                       __func__);)
38131 +
38132 +                       /*
38133 +                        * If loop ID changed, logout device and free loop ID.
38134 +                        */
38135 +                       if (fcdev->loop_id != ipdev->loop_id) { 
38136 +                               qla2x00_ip_send_logout_port_iocb(ha, ipdev, 0);
38137 +                               qla2x00_free_loopid(ha, ipdev->loop_id);
38138 +
38139 +                               /*
38140 +                                * Clear public device flag and save private
38141 +                                * loop ID in database.
38142 +                                */
38143 +                               ipdev->flags &= ~IP_DEV_FLAG_PUBLIC_DEVICE;
38144 +                               ipdev->loop_id = fcdev->loop_id;
38145 +                       }
38146 +                       ipdev->flags |= IP_DEV_FLAG_PRESENT;
38147 +               }
38148 +               else if (fcdev->flag == DEV_PUBLIC &&
38149 +                               !(ipdev->flags & IP_DEV_FLAG_PUBLIC_DEVICE)) {
38150 +                       /*
38151 +                        * Device public now, was on private loop before.
38152 +                        */
38153 +                       DEBUG12(printk("%s: was private loop, now public\n",
38154 +                                       __func__);)
38155 +
38156 +                       /*
38157 +                        * Reserve public loop ID, save it in database.
38158 +                        */
38159 +                       status = qla2x00_reserve_loopid(ha, &ipdev->loop_id);
38160 +                       if (status == QL_STATUS_SUCCESS) { 
38161 +                               /*
38162 +                                * Save port ID and set public device flag.
38163 +                                */
38164 +                               ipdev->port_id[0] = fcdev->d_id.r.d_id[0];
38165 +                               ipdev->port_id[1] = fcdev->d_id.r.d_id[1];
38166 +                               ipdev->port_id[2] = fcdev->d_id.r.d_id[2];
38167 +                               ipdev->flags |= IP_DEV_FLAG_PUBLIC_DEVICE;
38168 +
38169 +                               /* Login public device */
38170 +                               status = qla2x00_ip_send_login_port_iocb(ha,
38171 +                                                       ipdev, 0);
38172 +                       }
38173 +                       if (status == QL_STATUS_RESOURCE_ERROR) {
38174 +                               /* Out of loop IDs */
38175 +                               ipdev->flags &= ~IP_DEV_FLAG_PUBLIC_DEVICE;
38176 +                       }
38177 +               }
38178 +               else {
38179 +                       /*
38180 +                        * Device public now, was public device before.
38181 +                        */
38182 +                       DEBUG12(printk("%s: was public, now public\n",
38183 +                                       __func__);)
38184 +
38185 +                       /* Check if port ID changed */
38186 +                       if (ipdev->port_id[0] != fcdev->d_id.r.d_id[0] ||
38187 +                               ipdev->port_id[1] != fcdev->d_id.r.d_id[1] ||
38188 +                               ipdev->port_id[2] != fcdev->d_id.r.d_id[2]) {
38189 +
38190 +                               /* Save new port ID */
38191 +                               ipdev->port_id[0] = fcdev->d_id.r.d_id[0];
38192 +                               ipdev->port_id[1] = fcdev->d_id.r.d_id[1];
38193 +                               ipdev->port_id[2] = fcdev->d_id.r.d_id[2];
38194 +
38195 +                               DEBUG12(printk("%s: Port ID changed\n",
38196 +                                               __func__);)
38197 +
38198 +                               /* Logout public device */
38199 +                               qla2x00_ip_send_logout_port_iocb(ha, ipdev, 0);
38200 +                       }
38201 +
38202 +                       /* Login public device */
38203 +                       status = qla2x00_ip_send_login_port_iocb(ha, ipdev, 0);
38204 +                       if (status == QL_STATUS_RESOURCE_ERROR) {
38205 +                               /* Out of loop IDs */
38206 +                               ipdev->flags &= ~IP_DEV_FLAG_PUBLIC_DEVICE;
38207 +                       }
38208 +               }
38209 +               return (status);
38210 +       }
38211 +
38212 +       /* Device not found in database */
38213 +       DEBUG12(printk("%s: device NOT in list\n", __func__);)
38214 +
38215 +       /* If private loop device, add device to IP list */
38216 +       /* Public devices will be added as needed when packet received */
38217 +       if (fcdev->flag != DEV_PUBLIC) {
38218 +               /* Add (force) new private loop device to IP list */
38219 +               status = qla2x00_add_new_ip_device(ha,
38220 +                                       fcdev->loop_id,
38221 +                                       NULL,
38222 +                                       fcdev->wwn,
38223 +                                       TRUE,
38224 +                                       0);
38225 +       }
38226 +
38227 +       /* The following code is temporary, until FARP supported */
38228 +       /* Login all IP public devices for now */
38229 +       if (fcdev->flag == DEV_PUBLIC) {
38230 +               /* Add (don't force) new public device to IP list */
38231 +               status = qla2x00_add_new_ip_device(ha,
38232 +                                       PUBLIC_LOOP_DEVICE,
38233 +                                       (uint8_t *)&fcdev->d_id,
38234 +                                       fcdev->wwn,
38235 +                                       FALSE,
38236 +                                       0);
38237 +       }
38238 +
38239 +       return (status);
38240 +}
38241 +
38242 +/**
38243 + * qla2x00_ip_send_login_port_iocb() - Login to an IP device.
38244 + * @ha: SCSI driver HA context
38245 + * @ipdev: IP device to login to
38246 + * @ha_locked: Flag indicating if the function is called with the hardware lock
38247 + *
38248 + * This routine will build and send a mailbox IOCB to login to a fabric port.
38249 + *
38250 + * The qla2x00_ip_mailbox_iocb_done() routine will be called upon IOCB
38251 + * completion, where further processing is performed.
38252 + *
38253 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
38254 + */
38255 +static int
38256 +qla2x00_ip_send_login_port_iocb(scsi_qla_host_t *ha,
38257 +                               struct ip_device *ipdev, uint32_t ha_locked)
38258 +{
38259 +       unsigned long   flags = 0;
38260 +       struct mbx_entry *mbxentry;
38261 +
38262 +       DEBUG12(printk("%s: port ID: %x\n",
38263 +                       __func__,
38264 +                       ipdev->port_id[2]<<16 |
38265 +                       ipdev->port_id[1]<<8 |
38266 +                       ipdev->port_id[0]);)
38267 +
38268 +       /* Send marker if required */
38269 +       if (ha->marker_needed != 0) {
38270 +               if (ha_locked) {
38271 +                       if(__qla2x00_marker(ha,
38272 +                                       0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
38273 +                               return (QL_STATUS_ERROR);
38274 +               }
38275 +               else {
38276 +                       if(qla2x00_marker(ha,
38277 +                                       0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
38278 +                               return (QL_STATUS_ERROR);
38279 +               }
38280 +               ha->marker_needed = 0;
38281 +       }
38282 +
38283 +       if (!ha_locked)
38284 +               spin_lock_irqsave(&ha->hardware_lock, flags);
38285 +
38286 +       mbxentry = (struct mbx_entry *)qla2x00_req_pkt(ha);
38287 +       if (mbxentry == NULL) {
38288 +               DEBUG12(printk("%s: failed\n", __func__);)
38289 +
38290 +               if (!ha_locked)
38291 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
38292 +
38293 +               return (QL_STATUS_ERROR);
38294 +       }
38295 +
38296 +       /* Build fabric login MBX IOCB */
38297 +       mbxentry->entry_type = ET_MAILBOX_COMMAND;
38298 +       mbxentry->entry_count = 1;
38299 +       mbxentry->sys_define1 = SOURCE_IP;
38300 +       mbxentry->entry_status = 0;
38301 +       mbxentry->handle = cpu_to_le32(ipdev->index |
38302 +                               (MBC_LOGIN_FABRIC_PORT << 16));
38303 +       mbxentry->loop_id = ipdev->loop_id;
38304 +       mbxentry->mb0 = __constant_cpu_to_le16(MBC_LOGIN_FABRIC_PORT);
38305 +       mbxentry->mb1 = cpu_to_le16((ipdev->loop_id << 8) | 
38306 +                               (MBC_NO_PROCESS_LOGIN |
38307 +                                MBC_NO_PLOGI_IF_LOGGED_IN));
38308 +       mbxentry->mb2 = cpu_to_le16(ipdev->port_id[2]);
38309 +       mbxentry->mb3 = cpu_to_le16((ipdev->port_id[1] << 8) |
38310 +                               ipdev->port_id[0]);
38311 +       mbxentry->mb6 = __constant_cpu_to_le16(0);
38312 +       mbxentry->mb7 = __constant_cpu_to_le16(0);
38313 +
38314 +       /* Issue command to ISP */
38315 +       qla2x00_isp_cmd(ha);
38316 +
38317 +       if (!ha_locked)
38318 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
38319 +
38320 +       return (QL_STATUS_SUCCESS);
38321 +}
38322 +
38323 +/**
38324 + * qla2x00_ip_send_logout_port_iocb() - Logout an IP device.
38325 + * @ha: SCSI driver HA context
38326 + * @ipdev: IP device to logout
38327 + * @ha_locked: Flag indicating if the function is called with the hardware lock
38328 + *
38329 + * This routine will build and send a mailbox IOCB to logout a fabric port.
38330 + *
38331 + * The qla2x00_ip_mailbox_iocb_done() routine will be called upon IOCB
38332 + * completion, where further processing is performed.
38333 + *
38334 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
38335 + */
38336 +static int
38337 +qla2x00_ip_send_logout_port_iocb(scsi_qla_host_t *ha,
38338 +                               struct ip_device *ipdev, uint32_t ha_locked)
38339 +{
38340 +       unsigned long   flags = 0;
38341 +       struct mbx_entry *mbxentry;
38342 +
38343 +       DEBUG12(printk("%s: port ID: %x\n",
38344 +                       __func__,
38345 +                       ipdev->port_id[2]<<16 |
38346 +                       ipdev->port_id[1]<<8 |
38347 +                       ipdev->port_id[0]);)
38348 +
38349 +       /* Send marker if required */
38350 +       if (ha->marker_needed != 0) {
38351 +               if (ha_locked) {
38352 +                       if(__qla2x00_marker(ha,
38353 +                                       0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
38354 +                               return (QL_STATUS_ERROR);
38355 +               }
38356 +               else {
38357 +                       if(qla2x00_marker(ha,
38358 +                                       0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
38359 +                               return (QL_STATUS_ERROR);
38360 +               }
38361 +               ha->marker_needed = 0;
38362 +       }
38363 +
38364 +       if (!ha_locked)
38365 +               spin_lock_irqsave(&ha->hardware_lock, flags);
38366 +
38367 +       mbxentry = (struct mbx_entry *)qla2x00_req_pkt(ha);
38368 +       if (mbxentry == NULL) {
38369 +               DEBUG12(printk("%s: failed\n", __func__);)
38370 +
38371 +               if (!ha_locked)
38372 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
38373 +
38374 +               return (QL_STATUS_ERROR);
38375 +       }
38376 +
38377 +       /* Build fabric logout MBX IOCB */
38378 +       mbxentry->entry_type = ET_MAILBOX_COMMAND;
38379 +       mbxentry->entry_count = 1;
38380 +       mbxentry->sys_define1 = SOURCE_IP;
38381 +       mbxentry->entry_status = 0;
38382 +       mbxentry->handle = cpu_to_le32(ipdev->index |
38383 +                               (MBC_LOGOUT_FABRIC_PORT << 16));
38384 +       mbxentry->loop_id = ipdev->loop_id;
38385 +       mbxentry->mb0 = __constant_cpu_to_le16(MBC_LOGOUT_FABRIC_PORT);
38386 +       mbxentry->mb1 = cpu_to_le16(ipdev->loop_id << 8);
38387 +       mbxentry->mb2 = __constant_cpu_to_le16(0);
38388 +       mbxentry->mb3 = __constant_cpu_to_le16(0);
38389 +       mbxentry->mb6 = __constant_cpu_to_le16(0);
38390 +       mbxentry->mb7 = __constant_cpu_to_le16(0);
38391 +
38392 +       /* Issue command to ISP */
38393 +       qla2x00_isp_cmd(ha);
38394 +
38395 +       if (!ha_locked)
38396 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
38397 +
38398 +       return (QL_STATUS_SUCCESS);
38399 +}
38400 +
38401 +/**
38402 + * qla2x00_ip_mailbox_iocb_done() - Process an mailbox IOCB completion.
38403 + * @ha: SCSI driver HA context
38404 + * @mbxentry: completed mailbox IOCB entry
38405 + *
38406 + * This routine is currently used for fabric login and logouts only.
38407 + */
38408 +static void
38409 +qla2x00_ip_mailbox_iocb_done(scsi_qla_host_t *ha, struct mbx_entry *mbxentry)
38410 +{
38411 +       int             status;
38412 +       uint16_t        cmd;
38413 +       uint16_t        index;
38414 +       struct ip_device *ipdev;
38415 +// FIXME: endianess?
38416 +       /* Parse-out originating mailbox command */
38417 +       cmd = MSW(mbxentry->handle);
38418 +
38419 +       DEBUG12(printk("%s: cmd %x, status %x, mb0 %x, mb1 %x, mb2 %x\n",
38420 +                       __func__,
38421 +                       cmd,
38422 +                       mbxentry->status,
38423 +                       mbxentry->mb0,
38424 +                       mbxentry->mb1,
38425 +                       mbxentry->mb2);)
38426 +
38427 +       /* Get device block pointer */
38428 +       index = LSW(mbxentry->handle);
38429 +       if (index >= QLLAN_MAX_IP_DEVICES) {
38430 +               /* Bad handle from ISP */
38431 +               DEBUG12(printk("%s: bad handle from isp\n", __func__);)
38432 +
38433 +               /* TODO: Cleanup??? */
38434 +
38435 +               return;
38436 +       }
38437 +
38438 +       ipdev = &ha->ipdev_db[index];
38439 +
38440 +       if (cmd == MBC_LOGOUT_FABRIC_PORT) {
38441 +               /* Check fabric logout completion status */
38442 +               if (/*mbxentry->status == CS_COMPLETE && */
38443 +                       mbxentry->mb0 == MBS_COMMAND_COMPLETE) {
38444 +
38445 +                       /* Logout successful -- do nothing */
38446 +               }
38447 +               else {
38448 +                       DEBUG12(printk("%s: fabric logout failed\n", __func__);)
38449 +               }
38450 +       }
38451 +       else {
38452 +               /* Check fabric login completion status */
38453 +               /* Note: sometimes ISP returns Status=0x30 and MB0=0x4000 */
38454 +               /* Therefore, only check mb0 for now */
38455 +               if (/* mbxentry->status == CS_COMPLETE && */
38456 +                       mbxentry->mb0 == MBS_COMMAND_COMPLETE) {
38457 +
38458 +                       /* Login successful */
38459 +                       ipdev->flags |= IP_DEV_FLAG_PRESENT;
38460 +               }
38461 +               else if (mbxentry->mb0 == MBS_PORT_ID_IN_USE) {
38462 +                       /* Different loop ID already assigned to port ID */
38463 +                       /* Use the one that is already assigned */
38464 +                       qla2x00_free_loopid(ha, ipdev->loop_id);
38465 +                       ipdev->loop_id = mbxentry->mb1;
38466 +
38467 +                       /* Do logout first and then relogin */
38468 +                       qla2x00_ip_send_logout_port_iocb(ha, ipdev, 1);
38469 +                       qla2x00_ip_send_login_port_iocb(ha, ipdev, 1);
38470 +               }
38471 +               else if (mbxentry->mb0 == MBS_LOOP_ID_IN_USE) {
38472 +                       /* Loop ID already used for different port ID */
38473 +                       /* Get a new loop ID and reissue login request */
38474 +                       status = qla2x00_reserve_loopid(ha, &ipdev->loop_id);
38475 +                       if (status == QL_STATUS_SUCCESS) {
38476 +                               qla2x00_ip_send_login_port_iocb(ha, ipdev, 1);
38477 +                       }
38478 +                       else {
38479 +                               DEBUG12(printk("%s: out of loop IDs\n",
38480 +                                               __func__);)
38481 +
38482 +                               qla2x00_free_ip_block(ha, ipdev);
38483 +                       }
38484 +               }
38485 +               else {
38486 +                       /* Login failed, return resources */
38487 +                       DEBUG12(printk("%s: fabric login failed\n", __func__);)
38488 +
38489 +                       qla2x00_free_loopid(ha, ipdev->loop_id);
38490 +                       qla2x00_free_ip_block(ha, ipdev);
38491 +               }
38492 +       }
38493 +}
38494 +
38495 +
38496 +/**
38497 + * qla2x00_ip_inquiry() - Discover IP-capable adapters.
38498 + * @adapter_num: adapter number to check (instance)
38499 + * @inq_data: return bd_inquiry data of the discovered adapter
38500 + *
38501 + * This routine is called by the IP driver to discover adapters that support IP
38502 + * and to get adapter parameters from the SCSI driver.
38503 + *
38504 + * Returns TRUE if the specified adapter supports IP.
38505 + */
38506 +#if defined (ISP2200)
38507 +int
38508 +qla2200_ip_inquiry(uint16_t adapter_num, struct bd_inquiry *inq_data)
38509 +#elif defined(ISP2300)
38510 +int
38511 +qla2300_ip_inquiry(uint16_t adapter_num, struct bd_inquiry *inq_data)
38512 +#endif
38513 +{
38514 +       int     found;
38515 +       struct list_head *hal;
38516 +       scsi_qla_host_t *ha;
38517 +
38518 +       /* Verify structure size and version */
38519 +       if ((inq_data->length != BDI_LENGTH) ||
38520 +               (inq_data->version != BDI_VERSION)) {
38521 +
38522 +               DEBUG12(printk("%s: incompatable structure\n", __func__);)
38523 +               return (FALSE);
38524 +       }
38525 +
38526 +       /* Find the specified host adapter */
38527 +       ha = NULL;
38528 +       found = 0;
38529 +       read_lock(&qla_hostlist_lock);
38530 +       list_for_each(hal, &qla_hostlist) {
38531 +               ha = list_entry(hal, scsi_qla_host_t, list);
38532 +
38533 +               if (ha->instance == adapter_num) {
38534 +                       found++;
38535 +                       break;
38536 +               }
38537 +       }
38538 +       read_unlock(&qla_hostlist_lock);
38539 +
38540 +       if (found) {
38541 +               if (!ha->flags.online)
38542 +                       return (FALSE);
38543 +
38544 +               DEBUG12(printk("%s: found adapter %d\n",
38545 +                               __func__,
38546 +                               adapter_num);)
38547 +
38548 +               /* Return inquiry data to backdoor IP driver */
38549 +               set_bit(BDI_IP_SUPPORT, &inq_data->options);
38550 +               if (ha->flags.enable_64bit_addressing)
38551 +                       set_bit(BDI_64BIT_ADDRESSING, &inq_data->options);
38552 +               inq_data->ha = ha;                
38553 +               inq_data->risc_rec_q = ha->risc_rec_q;
38554 +               inq_data->risc_rec_q_size = IP_BUFFER_QUEUE_DEPTH;
38555 +               inq_data->link_speed = ha->current_speed;
38556 +               memcpy(inq_data->port_name, ha->ip_port_name, WWN_SIZE);
38557 +               inq_data->pdev = ha->pdev;
38558 +               inq_data->ip_enable_routine = qla2x00_ip_enable;
38559 +               inq_data->ip_disable_routine = qla2x00_ip_disable;
38560 +               inq_data->ip_add_buffers_routine = qla2x00_add_buffers;
38561 +               inq_data->ip_send_packet_routine = qla2x00_send_packet;
38562 +               inq_data->ip_tx_timeout_routine = qla2x00_tx_timeout;
38563 +               return (TRUE);
38564 +       }
38565 +       return (FALSE);
38566 +}
38567 +
38568 +/**
38569 + * qla2x00_ip_enable() - Create IP-driver/SCSI-driver IP connection.
38570 + * @ha: SCSI driver HA context
38571 + * @enable_data: bd_enable data describing the IP connection
38572 + *
38573 + * This routine is called by the IP driver to enable an IP connection to the
38574 + * SCSI driver and to pass in IP driver parameters.
38575 + *
38576 + * The HA context is propagated with the specified @enable_data and the
38577 + * Firmware is initialized for IP support.
38578 + * 
38579 + * Returns TRUE if the IP connection was successfully enabled.
38580 + */
38581 +static int
38582 +qla2x00_ip_enable(scsi_qla_host_t *ha, struct bd_enable *enable_data)
38583 +{
38584 +       int status;
38585 +
38586 +       DEBUG12(printk("%s: enable adapter %d\n", __func__, (int)ha->host_no);)
38587 +
38588 +       status = FALSE;
38589 +
38590 +       /* Verify structure size and version and adapter online */
38591 +       if (!(ha->flags.online) ||
38592 +               (enable_data->length != BDE_LENGTH) ||
38593 +               (enable_data->version != BDE_VERSION)) {
38594 +
38595 +               DEBUG12(printk("%s: incompatable structure or offline\n",
38596 +                               __func__);)
38597 +               return (status);
38598 +       }
38599 +
38600 +       /* Save parameters from IP driver */
38601 +       ha->mtu = enable_data->mtu;
38602 +       ha->header_size = enable_data->header_size;
38603 +       ha->receive_buffers = enable_data->receive_buffers;
38604 +       ha->max_receive_buffers = enable_data->max_receive_buffers;
38605 +       ha->receive_buff_data_size = enable_data->receive_buff_data_size;
38606 +       if (test_bit(BDE_NOTIFY_ROUTINE, &enable_data->options)) {
38607 +               ha->notify_routine = enable_data->notify_routine;
38608 +               ha->notify_context = enable_data->notify_context;
38609 +       }
38610 +       ha->send_completion_routine = enable_data->send_completion_routine;
38611 +       ha->receive_packets_routine = enable_data->receive_packets_routine;
38612 +       ha->receive_packets_context = enable_data->receive_packets_context;
38613 +
38614 +       /* Enable RISC IP support */
38615 +       status = qla2x00_ip_initialize(ha);
38616 +       if (!status) {
38617 +               DEBUG12(printk("%s: IP initialization failed", __func__);)
38618 +               ha->notify_routine = NULL;
38619 +       }
38620 +       return (status);
38621 +}
38622 +
38623 +/**
38624 + * qla2x00_ip_disable() - Remove IP-driver/SCSI-driver IP connection.
38625 + * @ha: SCSI driver HA context
38626 + *
38627 + * This routine is called by the IP driver to disable a previously created IP
38628 + * connection.
38629 + *
38630 + * A Firmware call to disable IP support is issued.
38631 + */
38632 +static void
38633 +qla2x00_ip_disable(scsi_qla_host_t *ha)
38634 +{
38635 +       int     rval;
38636 +       static mbx_cmd_t mc;
38637 +       mbx_cmd_t *mcp = &mc;
38638 +
38639 +       DEBUG12(printk("%s: disable adapter %d\n", __func__, (int)ha->host_no);)
38640 +
38641 +       /* Wait for a ready state from the adapter */
38642 +       while (!ha->init_done || ha->dpc_active) {
38643 +               set_current_state(TASK_INTERRUPTIBLE);
38644 +               schedule_timeout(HZ);
38645 +       }
38646 +
38647 +       /* Disable IP support */
38648 +       ha->flags.enable_ip = FALSE;
38649 +
38650 +       mcp->mb[0] = MBC_DISABLE_IP;
38651 +       mcp->out_mb = MBX_0;
38652 +       mcp->in_mb = MBX_0;
38653 +       mcp->tov = 30;
38654 +       mcp->flags = 0;
38655 +       rval = qla2x00_mailbox_command(ha, mcp);
38656 +       if (rval == QL_STATUS_SUCCESS) {
38657 +               /* IP disabled successful */
38658 +               DEBUG12(printk(KERN_INFO
38659 +                               "%s: successful\n", __func__);)
38660 +       }
38661 +       else {
38662 +               DEBUG12(printk(KERN_WARNING
38663 +                               "%s: MBC_DISABLE_IP failed\n", __func__);)
38664 +       }
38665 +
38666 +       /* Reset IP parameters */
38667 +       ha->rec_entries_in = 0;
38668 +       ha->rec_entries_out = 0;
38669 +       ha->notify_routine = NULL;
38670 +}
38671 +
38672 +/**
38673 + * qla2x00_add_buffers() - Adds buffers to the receive buffer queue.
38674 + * @ha: SCSI driver HA context
38675 + * @rec_count: The number of receive buffers to add to the queue
38676 + * @ha_locked: Flag indicating if the function is called with the hardware lock
38677 + *
38678 + * This routine is called by the IP driver to pass new buffers to the receive
38679 + * buffer queue.
38680 + */
38681 +static void
38682 +qla2x00_add_buffers(scsi_qla_host_t *ha, uint16_t rec_count, int ha_locked)
38683 +{
38684 +       int             i;
38685 +       uint16_t        rec_in;
38686 +       uint16_t        handle;
38687 +       unsigned long   flags = 0;
38688 +       device_reg_t    *reg;
38689 +       struct risc_rec_entry *risc_rec_q;
38690 +       struct buffer_cb *bcbs;
38691 +
38692 +       flags = 0;
38693 +       risc_rec_q = ha->risc_rec_q;
38694 +       rec_in = ha->rec_entries_in;
38695 +       bcbs = ha->receive_buffers;
38696 +
38697 +       /* Set RISC owns buffer flag on new entries */
38698 +       for (i = 0; i < rec_count; i++) {
38699 +               handle = risc_rec_q[rec_in].handle;
38700 +               set_bit(BCB_RISC_OWNS_BUFFER, &(bcbs[handle].state));
38701 +               if (rec_in < IP_BUFFER_QUEUE_DEPTH - 1)
38702 +                       rec_in++;
38703 +               else
38704 +                       rec_in = 0;
38705 +       }
38706 +       
38707 +       /* Update RISC buffer pointer */
38708 +       if (!ha_locked)
38709 +               spin_lock_irqsave(&ha->hardware_lock, flags);
38710 +
38711 +       reg = ha->iobase;
38712 +       WRT_REG_WORD(&reg->mailbox8, rec_in);
38713 +       ha->rec_entries_in = rec_in;
38714 +
38715 +       if (!ha_locked)
38716 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
38717 +}
38718 +
38719 +/**
38720 + * qla2x00_send_packet() - Transmit a send_cb.
38721 + * @ha: SCSI driver HA context
38722 + * @scb: The send_cb structure to send
38723 + *
38724 + * This routine is called by the IP driver to pass @scb (IP packet) to the ISP
38725 + * for transmission.
38726 + *
38727 + * Returns QL_STATUS_SUCCESS if @scb was sent, QL_STATUS_RESOURCE_ERROR if the
38728 + * RISC was too busy to send, or QL_STATUS_ERROR.
38729 + */
38730 +static int
38731 +qla2x00_send_packet(scsi_qla_host_t *ha, struct send_cb *scb)
38732 +{
38733 +       int             i;
38734 +       uint16_t        cnt;
38735 +       uint16_t        temp;
38736 +       uint32_t        handle;
38737 +       unsigned long   flags;
38738 +       struct ip_cmd_entry *ipcmd_entry;
38739 +       struct sk_buff  *skb;
38740 +       device_reg_t    *reg;
38741 +
38742 +       DEBUG12(printk("%s: enter\n", __func__);)
38743 +
38744 +       skb = scb->skb;
38745 +       reg = ha->iobase;
38746 +
38747 +       /* Check adapter state */
38748 +       if (!ha->flags.online) {
38749 +               return (QL_STATUS_ERROR);
38750 +       }
38751 +
38752 +       /* Send marker if required */
38753 +       if (ha->marker_needed != 0) {
38754 +               if(qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS) {
38755 +                       printk(KERN_WARNING
38756 +                               "%s: Unable to issue marker.\n",
38757 +                               __func__);
38758 +                       return (QL_STATUS_ERROR);
38759 +               }
38760 +               ha->marker_needed = 0;
38761 +       }
38762 +
38763 +       /* Acquire ring specific lock */
38764 +       spin_lock_irqsave(&ha->hardware_lock, flags);
38765 +
38766 +       if (ha->req_q_cnt < 4) {
38767 +               /* Update number of free request entries */
38768 +               cnt = qla2x00_debounce_register(ISP_REQ_Q_OUT(reg));
38769 +               if (ha->req_ring_index < cnt)
38770 +                       ha->req_q_cnt = cnt - ha->req_ring_index;
38771 +               else
38772 +                       ha->req_q_cnt = REQUEST_ENTRY_CNT -
38773 +                                               (ha->req_ring_index - cnt);
38774 +       }
38775 +
38776 +       if (ha->req_q_cnt >= 4) {
38777 +               /* Get tag handle for command */
38778 +               handle = ha->current_scb_q_idx;
38779 +               for (i = 0; i < MAX_SEND_PACKETS; i++) {
38780 +                       handle++;
38781 +                       if (handle == MAX_SEND_PACKETS)
38782 +                               handle = 0;
38783 +                       if (ha->active_scb_q[handle] == NULL) {
38784 +                               ha->current_scb_q_idx = handle;
38785 +                               goto found_handle;
38786 +                       }
38787 +               }
38788 +       }
38789 +
38790 +       /* Low on resources, try again later */
38791 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
38792 +       printk(KERN_WARNING
38793 +               "%s: Low on resources, try again later...\n",
38794 +               __func__);
38795 +
38796 +       return (QL_STATUS_RESOURCE_ERROR);
38797 +
38798 +found_handle:
38799 +
38800 +       /* Build ISP command packet */
38801 +       ipcmd_entry = (struct ip_cmd_entry *)ha->request_ring_ptr;
38802 +
38803 +       /* OPTIMIZATION ??? */
38804 +       /* Throughput increases an additional 10 Mbps with the following code */
38805 +       *((uint32_t *)(&ipcmd_entry->entry_type)) = 
38806 +                        __constant_cpu_to_le32(ET_IP_COMMAND_64 | (1 << 8));
38807 +       //ipcmd_entry->entry_type = ET_IP_COMMAND_64;
38808 +       //ipcmd_entry->entry_count = 1;
38809 +       //ipcmd_entry->sys_define = 0;
38810 +       //ipcmd_entry->entry_status = 0;
38811 +       
38812 +       ipcmd_entry->handle = handle;
38813 +       ipcmd_entry->reserved_1 = 0;
38814 +
38815 +       /* Get destination loop ID for packet */
38816 +       if (!qla2x00_get_ip_loopid(ha, scb->header, &ipcmd_entry->loop_id)) {
38817 +               /* Failed to get loop ID, convert packet to ARP */
38818 +               if (qla2x00_convert_to_arp(ha, scb)) {
38819 +                       /* Broadcast ARP */
38820 +                       ipcmd_entry->loop_id = BROADCAST;
38821 +               }
38822 +               else {
38823 +                       /* Return packet */
38824 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
38825 +                       printk(KERN_WARNING
38826 +                               "%s: Unable to determine loop id for "
38827 +                               "destination.\n",
38828 +                               __func__);
38829 +                       return (QL_STATUS_ERROR);
38830 +               }
38831 +       }
38832 +
38833 +       /* Default five second firmware timeout */
38834 +       ipcmd_entry->timeout = __constant_cpu_to_le16(5);
38835 +       ipcmd_entry->control_flags = __constant_cpu_to_le16(CF_WRITE);
38836 +       ipcmd_entry->reserved_2 = 0;
38837 +       ipcmd_entry->service_class = __constant_cpu_to_le16(0);
38838 +
38839 +       ipcmd_entry->data_seg_count = __constant_cpu_to_le16(2);
38840 +       ipcmd_entry->ds.data_segs64[0].address[0] =
38841 +                       cpu_to_le32(LSD(scb->header_dma));
38842 +       ipcmd_entry->ds.data_segs64[0].address[1] =
38843 +                       cpu_to_le32(MSD(scb->header_dma));
38844 +       ipcmd_entry->ds.data_segs64[0].length =
38845 +                       __constant_cpu_to_le32(sizeof(struct packet_header));
38846 +       scb->skb_data_dma = pci_map_single(ha->pdev,
38847 +                                       skb->data, skb->len,
38848 +                                       PCI_DMA_TODEVICE);
38849 +       ipcmd_entry->ds.data_segs64[1].address[0] =
38850 +                       cpu_to_le32(LSD(scb->skb_data_dma));
38851 +       ipcmd_entry->ds.data_segs64[1].address[1] =
38852 +                       cpu_to_le32(MSD(scb->skb_data_dma));
38853 +       ipcmd_entry->ds.data_segs64[1].length = cpu_to_le32(skb->len);
38854 +
38855 +       ipcmd_entry->byte_count =
38856 +                       cpu_to_le32(skb->len + sizeof(struct packet_header));
38857 +
38858 +       /* Adjust ring index. */
38859 +       ha->req_ring_index++;
38860 +       if (ha->req_ring_index == REQUEST_ENTRY_CNT) {
38861 +               ha->req_ring_index = 0;
38862 +               ha->request_ring_ptr = ha->request_ring;
38863 +       } else
38864 +               ha->request_ring_ptr++;
38865 +
38866 +       ha->ipreq_cnt++;
38867 +       ha->req_q_cnt--;
38868 +       ha->active_scb_q[handle] = scb;
38869 +
38870 +       /* Set chip new ring index. */
38871 +       temp = CACHE_FLUSH(ISP_REQ_Q_IN(reg));
38872 +       WRT_REG_WORD(ISP_REQ_Q_IN(reg), ha->req_ring_index);
38873 +
38874 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
38875 +
38876 +       return (QL_STATUS_SUCCESS);
38877 +}
38878 +
38879 +/**
38880 + * qla2x00_tx_timeout() - Handle transmission timeout.
38881 + * @ha: SCSI driver HA context
38882 + *
38883 + * This routine is called by the IP driver to handle packet transmission
38884 + * timeouts.
38885 + *
38886 + * Returns QL_STATUS_SUCCESS if timeout handling completed successfully.
38887 + */
38888 +static int
38889 +qla2x00_tx_timeout(scsi_qla_host_t *ha)
38890 +{
38891 +       /* TODO: complete interface */
38892 +
38893 +       /* Reset RISC firmware for basic recovery */
38894 +       printk(KERN_WARNING
38895 +               "%s: A transmission timeout occured - aborting ISP\n",
38896 +               __func__);
38897 +       set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
38898 +
38899 +       return (QL_STATUS_SUCCESS);
38900 +}
38901 --- /dev/null   Thu Apr 11 07:25:15 2002
38902 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_ip.h    Thu Jul  3 15:34:42 2003
38903 @@ -0,0 +1,420 @@
38904 +/******************************************************************************
38905 + *                  QLOGIC LINUX SOFTWARE
38906 + *
38907 + * QLogic ISP2x00 IP network driver for Linux 2.5.x
38908 + * Copyright (C) 2003 Qlogic Corporation
38909 + * (www.qlogic.com)
38910 + *
38911 + * This program is free software; you can redistribute it and/or modify it
38912 + * under the terms of the GNU General Public License as published by the
38913 + * Free Software Foundation; either version 2, or (at your option) any
38914 + * later version.
38915 + *
38916 + * This program is distributed in the hope that it will be useful, but
38917 + * WITHOUT ANY WARRANTY; without even the implied warranty of
38918 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
38919 + * General Public License for more details.
38920 + *
38921 + ******************************************************************************/
38922 +
38923 +/****************************************************************************
38924 +              Please see revision.notes for revision history.
38925 +*****************************************************************************/
38926 +
38927 +#if !defined(_QLA_IP_H_)
38928 +#define _QLA_IP_H_
38929 +
38930 +#define MAX_SEND_PACKETS               32      /* Maximum # send packets */
38931 +#define MAX_RECEIVE_BUFFERS            64      /* Maximum # receive buffers */
38932 +#define MIN_RECEIVE_BUFFERS            8       /* Minimum # receive buffers */
38933 +#define IP_BUFFER_QUEUE_DEPTH          (MAX_RECEIVE_BUFFERS+1)
38934 +
38935 +/* Async notification types */
38936 +#define NOTIFY_EVENT_LINK_DOWN         1       /* Link went down */
38937 +#define NOTIFY_EVENT_LINK_UP           2       /* Link is back up */
38938 +#define NOTIFY_EVENT_RESET_DETECTED    3       /* Reset detected */
38939 +
38940 +/* QLogic subroutine status definitions */
38941 +#define QL_STATUS_SUCCESS              0
38942 +#define QL_STATUS_ERROR                        1
38943 +#define QL_STATUS_FATAL_ERROR          2
38944 +#define QL_STATUS_RESOURCE_ERROR       3
38945 +#define QL_STATUS_LOOP_ID_IN_USE       4
38946 +#define QL_STATUS_NO_DATA              5
38947 +
38948 +/************************************************************************/
38949 +/* RFC 2625 -- networking structure definitions                         */
38950 +/************************************************************************/
38951 +
38952 +/* Network header definitions */
38953 +struct network_address
38954 +{
38955 +#if defined(__LITTLE_ENDIAN_BITFIELD)
38956 +       __u16   unused:12,
38957 +               naa:4;
38958 +#elif defined (__BIG_ENDIAN_BITFIELD)
38959 +       __u16   naa:4,
38960 +               unused:12;
38961 +#else
38962 +#error  "Please fix <asm/byteorder.h>"
38963 +#endif
38964 +
38965 +#define NAA_IEEE_MAC_TYPE      1               /* NAA code - IEEE MAC addr */
38966 +
38967 +       __u8    addr[6];
38968 +};
38969 +
38970 +struct network_header
38971 +{
38972 +       union
38973 +       {
38974 +               struct network_address  na;
38975 +               __u8    fcaddr[8];
38976 +       } d;
38977 +
38978 +       union
38979 +       {
38980 +               struct network_address  na;
38981 +               __u8    fcaddr[8];
38982 +       } s;
38983 +};
38984 +
38985 +/* SNAP header definitions */
38986 +/* from linux/if_fc.h */
38987 +struct snap_header
38988 +{
38989 +       __u8  dsap;                             /* destination SAP */
38990 +       __u8  ssap;                             /* source SAP */
38991 +#define LLC_SAP_IEEE_802DOT2   0xAA            /* LLC SAP code - IEEE 802.2 */
38992 +
38993 +       __u8  llc;                              /* LLC control field */
38994 +#define LLC_CONTROL            0x03            /* LLC control code */
38995 +
38996 +       __u8  protid[3];                        /* protocol id */
38997 +#define SNAP_OUI               0x00            /* SNAP OUI code */
38998 +
38999 +       __u16 ethertype;                        /* ether type field */
39000 +};
39001 +
39002 +/* Packet header definitions */
39003 +struct packet_header
39004 +{
39005 +       struct network_header   networkh;
39006 +       struct snap_header      snaph;
39007 +};
39008 +
39009 +/* ARP header definitions */
39010 +/* from linux/if_arp.h */
39011 +struct arp_header
39012 +{
39013 +       struct arphdr   arph;
39014 +       __u8            ar_sha[ETH_ALEN];       /* sender hardware address */
39015 +       __u32           ar_sip;                 /* sender IP address */
39016 +        __u8           ar_tha[ETH_ALEN];       /* target hardware address */
39017 +       __u32           ar_tip;                 /* target IP address */
39018 +};
39019 +
39020 +/* IP header definitions */
39021 +struct ip_header
39022 +{
39023 +       struct iphdr    iph;
39024 +       __u32           options;                /* IP packet options */
39025 +};
39026 +
39027 +
39028 +/************************************************************************/
39029 +/* Support structures.                                                  */
39030 +/************************************************************************/
39031 +
39032 +/* Definitions for IP support */
39033 +#define LOOP_ID_MASK           0x00FF
39034 +#define PLE_NOT_SCSI_DEVICE    0x8000          /* Upper bit of loop ID set */
39035 +                                               /*  if not SCSI */
39036 +
39037 +/* Receive buffer control block definitions */
39038 +struct buffer_cb
39039 +{
39040 +       uint16_t        handle;                 /* ISP buffer handle */
39041 +       uint16_t        comp_status;            /* completion status from FW */
39042 +
39043 +       uint32_t        state;                  /* Buffer CB state */
39044 +#define BCB_RISC_OWNS_BUFFER   1
39045 +
39046 +       struct sk_buff  *skb;                   /* Socket buffer */
39047 +       uint8_t         *skb_data;              /* Socket buffer data */
39048 +       dma_addr_t      skb_data_dma;           /* SKB data physical address */
39049 +       uint32_t        rec_data_size;          /* Size of received data */
39050 +       uint32_t        packet_size;            /* Size of packet received */
39051 +
39052 +       uint16_t        linked_bcb_cnt;         /* # of linked CBs for packet */
39053 +       uint16_t        unused2;
39054 +       struct buffer_cb *next_bcb;             /* Next buffer CB */
39055 +};
39056 +
39057 +/* Send control block definitions */
39058 +struct send_cb
39059 +{
39060 +       uint16_t        comp_status;            /* completion status from FW */
39061 +#define SCB_CS_COMPLETE                0x0             
39062 +#define SCB_CS_INCOMPLETE      0x1
39063 +#define SCB_CS_RESET           0x4
39064 +#define SCB_CS_ABORTED         0x5
39065 +#define SCB_CS_TIMEOUT         0x6
39066 +#define SCB_CS_PORT_UNAVAILABLE        0x28
39067 +#define SCB_CS_PORT_LOGGED_OUT 0x29
39068 +#define SCB_CS_PORT_CONFIG_CHG 0x2A
39069 +#define SCB_CS_FW_RESOURCE_UNAVAILABLE 0x2C
39070 +
39071 +       uint16_t        unused1;
39072 +
39073 +       void            *qdev;                  /* netdev private structure */
39074 +
39075 +       struct packet_header *header;           /* Network and SNAP headers */
39076 +       dma_addr_t      header_dma;             /* Header physical address */
39077 +
39078 +       struct sk_buff  *skb;                   /* socket buffer to send */
39079 +       dma_addr_t      skb_data_dma;           /* skb data physical address */
39080 +};
39081 +
39082 +/* IP device data structure */
39083 +#define QLLAN_MAX_IP_DEVICES   64      /* Maximum number of IP devices */
39084 +
39085 +struct ip_device
39086 +{
39087 +       uint16_t        index;
39088 +       uint16_t        unused1;
39089 +
39090 +       uint32_t        flags;
39091 +#define IP_DEV_FLAG_PRESENT            0x00000001 
39092 +#define IP_DEV_FLAG_PUBLIC_DEVICE      0x00000002
39093 +
39094 +       uint16_t        loop_id;
39095 +#define PUBLIC_LOOP_DEVICE             ((uint16_t)-1)
39096 +
39097 +       uint16_t        unused2;
39098 +       uint8_t         port_id[3];
39099 +       uint8_t         unused3;
39100 +       uint8_t         port_name[8]; 
39101 +
39102 +       struct ip_device *next;
39103 +       struct ip_device *last;
39104 +};
39105 +
39106 +/************************************************************************/
39107 +/* Definitions for Backdoor Inquiry.                                   */
39108 +/************************************************************************/
39109 +
39110 +struct bd_inquiry
39111 +{
39112 +       uint16_t        length;                 /* Length of structure */
39113 +#define BDI_LENGTH             sizeof(struct bd_inquiry)
39114 +
39115 +       uint16_t        version;                /* Structure version number */
39116 +/* NOTE: Update this value anytime the structure changes */
39117 +#define BDI_VERSION            2
39118 +
39119 +                                               /* Exports */
39120 +       uint32_t        options;                /*  supported options */
39121 +#define BDI_IP_SUPPORT         1               /*   IP supported */
39122 +#define BDI_64BIT_ADDRESSING   2               /*   64bit address supported */
39123 +
39124 +       void            *ha;                    /*  Driver ha pointer */
39125 +       void            *risc_rec_q;            /*  RISC receive queue */
39126 +       uint16_t        risc_rec_q_size;        /*   size */
39127 +
39128 +       uint16_t        link_speed;             /* Current link speed */
39129 +#define BDI_1GBIT_PORTSPEED    1               /*   operating at 1GBIT */
39130 +#define BDI_2GBIT_PORTSPEED    2               /*   operating at 2GBIT */
39131 +#define BDI_10GBIT_PORTSPEED   4               /*   operating at 10GBIT */
39132 +
39133 +       uint8_t         port_name[8];           /*  Adapter port name */
39134 +
39135 +       struct pci_dev  *pdev;                  /* PCI device information */
39136 +
39137 +       /* Pointers to SCSI-backdoor callbacks */
39138 +       void            *ip_enable_routine;
39139 +       void            *ip_disable_routine;
39140 +       void            *ip_add_buffers_routine;
39141 +       void            *ip_send_packet_routine;
39142 +       void            *ip_tx_timeout_routine;
39143 +
39144 +       uint32_t        unused2[9];
39145 +};
39146 +
39147 +/************************************************************************/
39148 +/* Definitions for Backdoor Enable.                                    */
39149 +/************************************************************************/
39150 +
39151 +struct bd_enable
39152 +{
39153 +       uint16_t        length;                 /* Length of structure */
39154 +#define BDE_LENGTH             sizeof(struct bd_enable)
39155 +
39156 +       uint16_t        version;                /* Structure version number */
39157 +/* NOTE: Update this value anytime the structure changes */
39158 +#define BDE_VERSION            2
39159 +
39160 +                                               /* Imports */
39161 +       uint32_t        options;                /*  supported options */
39162 +#define BDE_NOTIFY_ROUTINE     1               /*  notify routine imported */
39163 +
39164 +       uint32_t        mtu;                    /*  maximum transfer size */
39165 +       uint16_t        header_size;            /*  split header size */
39166 +       uint16_t        unused1;
39167 +
39168 +       void            *receive_buffers;       /*  receive buffers array */
39169 +       uint16_t        max_receive_buffers;    /*  max # receive buffers */
39170 +       uint16_t        unused2;
39171 +       uint32_t        receive_buff_data_size; /*  buffer size */
39172 +
39173 +       /* Pointers to IP-backdoor callbacks */
39174 +       void            *notify_routine;
39175 +       void            *notify_context;
39176 +       void            *send_completion_routine;
39177 +       void            *receive_packets_routine;
39178 +       void            *receive_packets_context;
39179 +
39180 +       uint32_t        unused3[9];
39181 +};
39182 +
39183 +
39184 +/************************************************************************/
39185 +/* RISC interface structures                                            */
39186 +/************************************************************************/
39187 +
39188 +/* IP mailbox commands */
39189 +#define MBC_INITIALIZE_IP               0x0077
39190 +#define MBC_DISABLE_IP                  0x0079
39191 +
39192 +/* IP async events */
39193 +#define MBA_IP_TRANSMIT_COMPLETE        0x8022
39194 +#define MBA_IP_RECEIVE_COMPLETE         0x8023
39195 +#define MBA_IP_BROADCAST_RECEIVED       0x8024
39196 +#define MBA_IP_RECEIVE_BUFFERS_LOW      0x8025
39197 +#define MBA_IP_OUT_OF_BUFFERS           0x8026
39198 +#define MBA_IP_RECEIVE_COMPLETE_SPLIT   0x8027
39199 +
39200 +/* IP fast post completions for 2300 */
39201 +#define RHS_IP_SEND_COMPLETE            0x18
39202 +#define RHS_IP_RECV_COMPLETE            0x19
39203 +#define RHS_IP_RECV_DA_COMPLETE         0x1B
39204 +
39205 +/* RISC IP receive buffer queue entry structure */
39206 +struct risc_rec_entry
39207 +{
39208 +       uint32_t        data_addr_low;
39209 +       uint32_t        data_addr_high;
39210 +       uint16_t        handle;
39211 +       uint16_t        unused;
39212 +};
39213 +
39214 +/* Firmware IP initialization control block definitions */
39215 +struct ip_init_cb
39216 +{
39217 +       uint8_t         version;
39218 +#define IPICB_VERSION                          0x01
39219 +
39220 +       uint8_t         reserved_1;
39221 +
39222 +       uint16_t        firmware_options;
39223 +#define IPICB_OPTION_64BIT_ADDRESSING          0x0001
39224 +#define IPICB_OPTION_NO_BROADCAST_FASTPOST     0x0002
39225 +#define IPICB_OPTION_OUT_OF_BUFFERS_EVENT      0x0004
39226 +
39227 +       uint16_t        header_size;
39228 +       uint16_t        mtu;
39229 +       uint16_t        receive_buffer_size;
39230 +       uint16_t        reserved_2;
39231 +       uint16_t        reserved_3;
39232 +       uint16_t        reserved_4;
39233 +       uint16_t        reserved_5;
39234 +
39235 +       uint16_t        receive_queue_size;
39236 +       uint16_t        low_water_mark;
39237 +#define IPICB_LOW_WATER_MARK                   0
39238 +
39239 +       uint16_t        receive_queue_addr[4];
39240 +       uint16_t        receive_queue_in;
39241 +       uint16_t        fast_post_count;
39242 +#define IPICB_FAST_POST_COUNT                  4
39243 +
39244 +       uint16_t        container_count;
39245 +#define IPICB_BUFFER_CONTAINER_COUNT           64
39246 +
39247 +       uint16_t        resource_allocation;
39248 +#define IPICB_IOCB_RESERVE_COUNT               250
39249 +};
39250 +
39251 +
39252 +/* IP IOCB types */
39253 +
39254 +/* Data segment descriptor structures */
39255 +struct data_seg
39256 +{
39257 +       uint32_t        address;
39258 +       uint32_t        length;
39259 +};
39260 +
39261 +struct data_seg_a64
39262 +{
39263 +       uint32_t        address[2];
39264 +       uint32_t        length;
39265 +};
39266 +
39267 +/* IP Command IOCB structure */
39268 +struct ip_cmd_entry
39269 +{
39270 +       uint8_t         entry_type;
39271 +#define ET_IP_COMMAND_32               0x13
39272 +#define ET_IP_COMMAND_64               0x1B
39273 +
39274 +       uint8_t         entry_count;
39275 +       uint8_t         sys_define;
39276 +       uint8_t         entry_status;
39277 +
39278 +       uint32_t        handle;
39279 +       uint8_t         reserved_1;
39280 +       uint8_t         loop_id;
39281 +       uint16_t        comp_status;
39282 +       uint16_t        control_flags;
39283 +       uint16_t        reserved_2;
39284 +       uint16_t        timeout;
39285 +       uint16_t        data_seg_count;
39286 +       uint16_t        service_class;
39287 +       uint16_t        reserved_3[7];
39288 +       uint32_t        byte_count;
39289 +       union
39290 +       {
39291 +               struct data_seg         data_segs[3];
39292 +               struct data_seg_a64     data_segs64[2];
39293 +       } ds;
39294 +};
39295 +
39296 +/* IP Receive IOCB structure */
39297 +#define ET_IP_RECEIVE_CONTINUATION  0x2B
39298 +
39299 +struct ip_rec_entry
39300 +{
39301 +       uint8_t         entry_type;
39302 +#define ET_IP_RECEIVE                  0x23
39303 +
39304 +       uint8_t         entry_count;
39305 +       uint8_t         segment_count;
39306 +       uint8_t         entry_status;
39307 +
39308 +       uint16_t        s_idlow;
39309 +       uint8_t         s_idhigh;
39310 +       uint8_t         reserved_1;
39311 +       uint8_t         reserved_2;
39312 +       uint8_t         loop_id;
39313 +       uint16_t        comp_status;
39314 +#define IPREC_STATUS_SPLIT_BUFFER      0x0001
39315 +
39316 +       uint16_t        service_class;
39317 +       uint16_t        sequence_length;
39318 +
39319 +#define IPREC_MAX_HANDLES              24
39320 +       uint16_t        buffer_handles[IPREC_MAX_HANDLES];
39321 +};
39322 +
39323 +#endif /* _QLA_IP_H_ */
39324 --- /dev/null   Thu Apr 11 07:25:15 2002
39325 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_isr.c   Thu Jul  3 15:34:42 2003
39326 @@ -0,0 +1,1474 @@
39327 +/*
39328 + *                  QLOGIC LINUX SOFTWARE
39329 + *
39330 + * QLogic ISP2x00 device driver for Linux 2.5.x
39331 + * Copyright (C) 2003 Qlogic Corporation
39332 + * (www.qlogic.com)
39333 + *
39334 + * This program is free software; you can redistribute it and/or modify it
39335 + * under the terms of the GNU General Public License as published by the
39336 + * Free Software Foundation; either version 2, or (at your option) any
39337 + * later version.
39338 + *
39339 + * This program is distributed in the hope that it will be useful, but
39340 + * WITHOUT ANY WARRANTY; without even the implied warranty of
39341 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
39342 + * General Public License for more details.
39343 + *
39344 + */
39345 +
39346 +#include "qla_os.h"
39347 +
39348 +#include "qla_def.h"
39349 +
39350 +static void qla2x00_mbx_completion(scsi_qla_host_t *, uint16_t);
39351 +static void qla2x00_async_event(scsi_qla_host_t *, uint32_t);
39352 +static void qla2x00_process_completed_request(struct scsi_qla_host *, int);
39353 +static void qla2x00_response_pkt(scsi_qla_host_t *, uint16_t);
39354 +static void qla2x00_status_entry(scsi_qla_host_t *, sts_entry_t *);
39355 +static void qla2x00_status_cont_entry(scsi_qla_host_t *, sts_cont_entry_t *);
39356 +static void qla2x00_error_entry(scsi_qla_host_t *, response_t *);
39357 +static void qla2x00_ms_entry(scsi_qla_host_t *, ms_iocb_entry_t *);
39358 +
39359 +static int qla2x00_check_sense(Scsi_Cmnd *cp, os_lun_t *);
39360 +
39361 +/**
39362 + * qla2x00_intr_handler() - Process interrupts for the ISP.
39363 + * @irq:
39364 + * @dev_id: SCSI driver HA context
39365 + * @regs:
39366 + *
39367 + * Called by system whenever the host adapter generates an interrupt.
39368 + *
39369 + * Returns handled flag.
39370 + */
39371 +irqreturn_t
39372 +qla2x00_intr_handler(int irq, void *dev_id, struct pt_regs *regs)
39373 +{
39374 +       scsi_qla_host_t *ha;
39375 +       device_reg_t    *reg;
39376 +       uint32_t        mbx;
39377 +       uint16_t        stat;
39378 +       int             status = 0;
39379 +       unsigned long   flags = 0;
39380 +       unsigned long   mbx_flags = 0;
39381 +       unsigned long   intr_iter;
39382 +
39383 +       /* Don't loop forever, interrupt are OFF */
39384 +       intr_iter = 50; 
39385 +
39386 +       ha = (scsi_qla_host_t *) dev_id;
39387 +       if (!ha) {
39388 +               printk(KERN_INFO
39389 +                   "%s(): NULL host pointer\n", __func__);
39390 +               return (IRQ_NONE);
39391 +       }
39392 +
39393 +       reg = ha->iobase;
39394 +
39395 +       spin_lock_irqsave(&ha->hardware_lock, flags);
39396 +
39397 +       for (;;) {
39398 +               /* Relax CPU! */
39399 +               if (!(intr_iter--))
39400 +                       break;
39401 +
39402 +#if defined(ISP2100) || defined(ISP2200)
39403 +               if ((RD_REG_WORD(&reg->istatus) & ISR_RISC_INT) == 0) {
39404 +                       break;
39405 +               }
39406 +
39407 +               if (RD_REG_WORD(&reg->semaphore) & BIT_0) {
39408 +                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
39409 +
39410 +                       /* Get mailbox data. */
39411 +                       mbx = RD_REG_WORD(&reg->mailbox0);
39412 +                       if (mbx > 0x3fff && mbx < 0x8000) {
39413 +                               qla2x00_mbx_completion(ha, (uint16_t)mbx);
39414 +                               status |= MBX_INTERRUPT;
39415 +                       } else if (mbx > 0x7fff && mbx < 0xc000) {
39416 +                               qla2x00_async_event(ha, mbx);
39417 +                       } else {
39418 +                               /*EMPTY*/
39419 +                               DEBUG2(printk("scsi(%ld): Unrecognized "
39420 +                                   "interrupt type (%d)\n",
39421 +                                   ha->host_no, mbx));
39422 +                       }
39423 +                       /* Release mailbox registers. */
39424 +                       WRT_REG_WORD(&reg->semaphore, 0);
39425 +               } else {
39426 +                       stat = RD_REG_WORD(&reg->mailbox5);
39427 +                       qla2x00_response_pkt(ha, stat);
39428 +
39429 +                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
39430 +               }
39431 +
39432 +#else /* ISP2300 */
39433 +               if ((ha->pdev->device == QLA2312_DEVICE_ID ||
39434 +                   ha->pdev->device == QLA2322_DEVICE_ID) &&
39435 +                   (RD_REG_WORD(&reg->istatus) & ISR_RISC_INT) == 0) {
39436 +                       break;
39437 +               }
39438 +
39439 +               stat = RD_REG_WORD(&reg->host_status_lo);
39440 +               if ((stat & HSR_INT) == 0) {
39441 +                       break;
39442 +               }
39443 +               if (stat & HSR_RISC_PAUSED) {
39444 +                       uint16_t hccr;
39445 +
39446 +                       hccr = RD_REG_WORD(&reg->hccr);
39447 +                       printk(KERN_INFO
39448 +                           "scsi(%ld): RISC paused, dumping HCCR (%x)\n",
39449 +                           ha->host_no,
39450 +                           hccr);
39451 +
39452 +                       /*
39453 +                        * Issue a "HARD" reset in order for the RISC interrupt
39454 +                        * bit to be cleared.  Schedule a big hammmer to get
39455 +                        * out of the RISC PAUSED state.
39456 +                        */
39457 +                       WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC);
39458 +                       set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39459 +                       break;
39460 +               }
39461 +               mbx = RD_REG_WORD(&reg->host_status_hi);
39462 +               switch (stat & 0xff) {
39463 +               case 0x1:
39464 +               case 0x2:
39465 +               case 0x10:
39466 +               case 0x11:
39467 +                       qla2x00_mbx_completion(ha, (uint16_t)mbx);
39468 +                       status |= MBX_INTERRUPT;
39469 +
39470 +                       /* Release mailbox registers. */
39471 +                       WRT_REG_WORD(&reg->semaphore, 0);
39472 +                       break;
39473 +               case 0x12:
39474 +                       qla2x00_async_event(ha, mbx);
39475 +                       break;
39476 +               case 0x13:
39477 +                       qla2x00_response_pkt(ha, (uint16_t)mbx);
39478 +                       break;
39479 +               case 0x16:
39480 +                       mbx = mbx << 16 | MBA_SCSI_COMPLETION;
39481 +                       qla2x00_async_event(ha, mbx);
39482 +                       break;
39483 +#if defined(FC_IP_SUPPORT)
39484 +               case 0x18:
39485 +                       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
39486 +                       qla2x00_ip_send_complete(ha, mbx, CS_COMPLETE);
39487 +                       continue;
39488 +                       break;
39489 +               case 0x19:
39490 +                       qla2x00_ip_receive_fastpost(ha,
39491 +                           MBA_IP_RECEIVE_COMPLETE);
39492 +                       break;
39493 +               case 0x1b:
39494 +                       qla2x00_ip_receive_fastpost(ha,
39495 +                           MBA_IP_RECEIVE_COMPLETE_SPLIT);
39496 +                       break;
39497 +#endif
39498 +               default:
39499 +                       DEBUG2(printk("scsi(%ld): Unrecognized interrupt type "
39500 +                           "(%d)\n",
39501 +                           ha->host_no, stat & 0xff));
39502 +                       break;
39503 +               }
39504 +
39505 +               WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
39506 +#endif
39507 +       }
39508 +
39509 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
39510 +
39511 +       ha->total_isr_cnt++;
39512 +
39513 +       if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) &&
39514 +           (status & MBX_INTERRUPT) && ha->flags.mbox_int) {
39515 +
39516 +               /* There was a mailbox completion */
39517 +               DEBUG3(printk("%s(%ld): Going to get mbx reg lock.\n",
39518 +                   __func__, ha->host_no));
39519 +
39520 +               QLA_MBX_REG_LOCK(ha);
39521 +
39522 +               MBOX_TRACE(ha, BIT_5);
39523 +               if (ha->mcp == NULL) {
39524 +                       DEBUG3(printk("%s(%ld): Error mbx pointer.\n",
39525 +                           __func__, ha->host_no));
39526 +               } else {
39527 +                       DEBUG3(printk("%s(%ld): Going to set mbx intr flags. "
39528 +                           "cmd=%x.\n",
39529 +                           __func__, ha->host_no, ha->mcp->mb[0]));
39530 +               }
39531 +               set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
39532 +
39533 +               DEBUG3(printk("%s(%ld): Going to wake up mbx function for "
39534 +                   "completion.\n",
39535 +                   __func__, ha->host_no));
39536 +
39537 +               MBOX_TRACE(ha,BIT_6);
39538 +               up(&ha->mbx_intr_sem);
39539 +
39540 +               DEBUG3(printk("%s(%ld): Going to release mbx reg lock.\n",
39541 +                   __func__, ha->host_no));
39542 +               QLA_MBX_REG_UNLOCK(ha);
39543 +       }
39544 +
39545 +       if (!list_empty(&ha->done_queue))
39546 +               schedule_work(&ha->run_qla_task);
39547 +
39548 +       /* Wakeup the DPC routine */
39549 +       if ((!ha->flags.mbox_busy &&
39550 +           (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) ||
39551 +               test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) ||
39552 +               test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))) &&
39553 +                   ha->dpc_wait && !ha->dpc_active) {
39554 +
39555 +               up(ha->dpc_wait);
39556 +       }
39557 +
39558 +       return (IRQ_HANDLED);
39559 +}
39560 +
39561 +/**
39562 + * qla2x00_mbx_completion() - Process mailbox command completions.
39563 + * @ha: SCSI driver HA context
39564 + * @mb0: Mailbox0 register
39565 + */
39566 +static void
39567 +qla2x00_mbx_completion(scsi_qla_host_t *ha, uint16_t mb0)
39568 +{
39569 +       uint16_t                cnt;
39570 +       uint16_t                *wptr;
39571 +       device_reg_t            *reg = ha->iobase;
39572 +
39573 +       ENTER(__func__);
39574 +
39575 +       /* Load return mailbox registers. */
39576 +       ha->flags.mbox_int = TRUE;
39577 +       ha->mailbox_out[0] = mb0;
39578 +       wptr = (uint16_t *)&reg->mailbox1;
39579 +
39580 +       for (cnt = 1; cnt < MAILBOX_REGISTER_COUNT; cnt++) {
39581 +#if defined(ISP2200)
39582 +               if (cnt == 8) 
39583 +                       wptr = (uint16_t *)&reg->mailbox8;
39584 +#endif
39585 +               if (cnt == 4 || cnt == 5)
39586 +                       ha->mailbox_out[cnt] = qla2x00_debounce_register(wptr);
39587 +               else
39588 +                       ha->mailbox_out[cnt] = RD_REG_WORD(wptr);
39589 +       
39590 +               wptr++;
39591 +       }
39592 +
39593 +       if (ha->mcp) {
39594 +               DEBUG3(printk("%s(%ld): Got mailbox completion. cmd=%x.\n",
39595 +                   __func__, ha->host_no, ha->mcp->mb[0]));
39596 +       } else {
39597 +               DEBUG2_3(printk("%s(%ld): MBX pointer ERROR!\n",
39598 +                   __func__, ha->host_no));
39599 +       }
39600 +
39601 +       LEAVE(__func__);
39602 +}
39603 +
39604 +/**
39605 + * qla2x00_async_event() - Process aynchronous events.
39606 + * @ha: SCSI driver HA context
39607 + * @mb0: Mailbox0 register
39608 + */
39609 +static void
39610 +qla2x00_async_event(scsi_qla_host_t *ha, uint32_t mbx)
39611 +{
39612 +       uint32_t        index;
39613 +       uint16_t        mb[4];
39614 +       device_reg_t    *reg = ha->iobase;
39615 +       uint8_t         rscn_queue_index;
39616 +
39617 +       ENTER(__func__);
39618 +
39619 +       /* Setup to process completions */
39620 +       mb[0] = LSW(mbx);
39621 +       switch(mb[0]) {
39622 +       case MBA_SCSI_COMPLETION:       /* Fast Post */
39623 +#if defined(ISP2100) || defined(ISP2200)
39624 +               mb[1] = RD_REG_WORD(&reg->mailbox1);
39625 +#else
39626 +               mb[1] = MSW(mbx);
39627 +#endif
39628 +               mb[2] = RD_REG_WORD(&reg->mailbox2);
39629 +
39630 +               DEBUG5(printk("%s(): mailbox response completion.\n",
39631 +                   __func__));
39632 +
39633 +               if (!ha->flags.online)
39634 +                       break;
39635 +
39636 +               /* Get outstanding command index  */
39637 +               index = (uint32_t)(mb[2] << 16 | mb[1]);
39638 +               qla2x00_process_completed_request(ha, index);
39639 +               break;
39640 +
39641 +#if defined(FC_IP_SUPPORT)
39642 +       case MBA_IP_TRANSMIT_COMPLETE:  /* IP Completion */
39643 +               mb[1] = RD_REG_WORD(&reg->mailbox1);
39644 +
39645 +               qla2x00_ip_send_complete(ha, mb[1], CS_COMPLETE);
39646 +               break;
39647 +
39648 +       case MBA_IP__RECEIVE_COMPLETE:
39649 +       case MBA_IP_RECEIVE_COMPLETE_SPLIT:
39650 +               qla2x00_ip_receive_fastpost(ha, mb[0]);
39651 +               break;
39652 +#endif /* FC_IP_SUPPORT */
39653 +
39654 +       case MBA_RESET:                 /* Reset */
39655 +               DEBUG2(printk("scsi(%ld): Asynchronous RESET.\n", ha->host_no));
39656 +
39657 +               set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
39658 +               break;
39659 +
39660 +       case MBA_SYSTEM_ERR:            /* System Error */
39661 +               mb[1] = RD_REG_WORD(&reg->mailbox1);
39662 +               mb[2] = RD_REG_WORD(&reg->mailbox2);
39663 +               mb[3] = RD_REG_WORD(&reg->mailbox3);
39664 +
39665 +               printk(KERN_INFO
39666 +                   "scsi(%ld): ISP System Error - mbx1=%xh mbx2=%xh "
39667 +                   "mbx3=%xh.\n",
39668 +                   ha->host_no, mb[1], mb[2], mb[3]);
39669 +
39670 +               qla2x00_dump_isp(ha, 1);
39671 +
39672 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39673 +               break;
39674 +
39675 +       case MBA_REQ_TRANSFER_ERR:      /* Request Transfer Error */
39676 +               DEBUG2(printk("scsi(%ld): ISP Request Transfer Error.\n",
39677 +                   ha->host_no));
39678 +               printk(KERN_WARNING
39679 +                   "scsi(%ld): ISP Request Transfer Error.\n", ha->host_no);
39680 +
39681 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39682 +               break;
39683 +
39684 +       case MBA_RSP_TRANSFER_ERR:      /* Response Transfer Error */
39685 +               DEBUG2(printk("scsi(%ld): ISP Response Transfer Error.\n",
39686 +                   ha->host_no));
39687 +               printk(KERN_WARNING
39688 +                   "scsi(%ld): ISP Response Transfer Error.\n", ha->host_no);
39689 +
39690 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39691 +               break;
39692 +
39693 +       case MBA_WAKEUP_THRES:          /* Request Queue Wake-up */
39694 +               DEBUG2(printk("scsi(%ld): Asynchronous WAKEUP_THRES.\n",
39695 +                   ha->host_no));
39696 +               break;
39697 +
39698 +       case MBA_LIP_OCCURRED:          /* Loop Initialization Procedure */
39699 +               mb[1] = RD_REG_WORD(&reg->mailbox1);
39700 +
39701 +               DEBUG2(printk("scsi(%ld): Asynchronous LIP Occured.\n",
39702 +                   ha->host_no));
39703 +               printk(KERN_INFO
39704 +                   "scsi(%ld): Asynchronous LIP Occured.\n", ha->host_no);
39705 +
39706 +               /* Save LIP sequence. */
39707 +               ha->lip_seq = mb[1];
39708 +               if (ha->loop_state != LOOP_DOWN) {
39709 +                       ha->loop_state = LOOP_DOWN;
39710 +                       atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
39711 +                       qla2x00_mark_all_devices_lost(ha);
39712 +               }
39713 +
39714 +               set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
39715 +               set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
39716 +
39717 +               ha->flags.management_server_logged_in = 0;
39718 +
39719 +               /* Update AEN queue. */
39720 +               if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39721 +                       qla2x00_enqueue_aen(ha, MBA_LIP_OCCURRED, NULL);
39722 +               }
39723 +
39724 +               ha->total_lip_cnt++;
39725 +               break;
39726 +
39727 +       case MBA_LOOP_UP:               /* Loop Up Event */
39728 +               mb[1] = RD_REG_WORD(&reg->mailbox1);
39729 +
39730 +               DEBUG2(printk("scsi(%ld): Asynchronous LOOP UP.\n",
39731 +                   ha->host_no));
39732 +               printk(KERN_INFO
39733 +                   "scsi(%ld): LOOP UP detected.\n", ha->host_no);
39734 +
39735 +               ha->flags.management_server_logged_in = 0;
39736 +
39737 +               /* Update AEN queue. */
39738 +               if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39739 +                       qla2x00_enqueue_aen(ha, MBA_LOOP_UP, NULL);
39740 +               }
39741 +
39742 +               /* Save the current speed for use by ioctl and IP driver */
39743 +               ha->current_speed = EXT_DEF_PORTSPEED_1GBIT;
39744 +#if defined(ISP2300)
39745 +               if (mb[1] == 1)
39746 +                       ha->current_speed = EXT_DEF_PORTSPEED_2GBIT;
39747 +#endif
39748 +               break;
39749 +
39750 +       case MBA_LOOP_DOWN:             /* Loop Down Event */
39751 +               DEBUG2(printk("scsi(%ld): Asynchronous LOOP DOWN.\n",
39752 +                   ha->host_no));
39753 +               printk(KERN_INFO
39754 +                   "scsi(%ld): LOOP DOWN detected.\n", ha->host_no);
39755 +
39756 +               if (ha->loop_state != LOOP_DOWN) {
39757 +                       ha->loop_state = LOOP_DOWN;
39758 +                       atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
39759 +                       qla2x00_mark_all_devices_lost(ha);
39760 +               }
39761 +
39762 +               ha->flags.management_server_logged_in = 0;
39763 +               ha->current_speed = 0; /* reset value */
39764 +
39765 +               /* Update AEN queue. */
39766 +               if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39767 +                       qla2x00_enqueue_aen(ha, MBA_LOOP_DOWN, NULL);
39768 +               }
39769 +               break;
39770 +
39771 +       case MBA_LIP_RESET:             /* LIP reset occurred */
39772 +               DEBUG2(printk("scsi(%ld): Asynchronous LIP RESET.\n",
39773 +                   ha->host_no));
39774 +               printk(KERN_INFO
39775 +                   "scsi(%ld): LIP reset occured.\n", ha->host_no);
39776 +
39777 +               if (ha->loop_state != LOOP_DOWN) {
39778 +                       ha->loop_state = LOOP_DOWN;
39779 +                       atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
39780 +                       qla2x00_mark_all_devices_lost(ha);
39781 +               }
39782 +
39783 +               set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
39784 +               set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
39785 +
39786 +               ha->operating_mode = LOOP;
39787 +               ha->flags.management_server_logged_in = 0;
39788 +
39789 +               /* Update AEN queue. */
39790 +               if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39791 +                       qla2x00_enqueue_aen(ha, MBA_LIP_RESET, NULL);
39792 +               }
39793 +
39794 +               ha->total_lip_cnt++;
39795 +               break;
39796 +
39797 +#if !defined(ISP2100)
39798 +       case MBA_LINK_MODE_UP:          /* Link mode up. */
39799 +               DEBUG2(printk("scsi(%ld): Asynchronous LINK MODE UP.\n",
39800 +                   ha->host_no));
39801 +               printk(KERN_INFO
39802 +                   "scsi(%ld): Link mode is up.\n",
39803 +                   ha->host_no);
39804 +
39805 +               /*
39806 +                * Until there's a transition from loop down to loop up, treat
39807 +                * this as loop down only.
39808 +                */
39809 +               if (ha->loop_state != LOOP_DOWN) {
39810 +                       ha->loop_state = LOOP_DOWN;
39811 +                       if (!atomic_read(&ha->loop_down_timer))
39812 +                               atomic_set(&ha->loop_down_timer,
39813 +                                   LOOP_DOWN_TIME);
39814 +                       qla2x00_mark_all_devices_lost(ha);
39815 +               }
39816 +
39817 +               if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags))) {
39818 +                       set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
39819 +                       set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
39820 +               }
39821 +               set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
39822 +               break;
39823 +
39824 +       case MBA_UPDATE_CONFIG:         /* Update Configuration. */
39825 +               mb[1] = RD_REG_WORD(&reg->mailbox1);
39826 +
39827 +               DEBUG2(printk("scsi(%ld): Asynchronous UPDATE CONFIG.\n",
39828 +                   ha->host_no));
39829 +               printk(KERN_INFO
39830 +                   "scsi(%ld): Configuration change detected: value=%x.\n",
39831 +                   ha->host_no, mb[1]);
39832 +
39833 +               if (ha->loop_state != LOOP_DOWN) {
39834 +                       ha->loop_state = LOOP_DOWN;  
39835 +                       if (!atomic_read(&ha->loop_down_timer))
39836 +                               atomic_set(&ha->loop_down_timer,
39837 +                                   LOOP_DOWN_TIME);
39838 +                       qla2x00_mark_all_devices_lost(ha);
39839 +               }
39840 +
39841 +               set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
39842 +               set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
39843 +               break;
39844 +#endif /* #if !defined(ISP2100) */
39845 +
39846 +       case MBA_PORT_UPDATE:           /* Port database update */
39847 +               /*
39848 +                * If PORT UPDATE is global (recieved LIP_OCCURED/LIP_RESET
39849 +                * event etc. earlier indicating loop is down) then process
39850 +                * it.  Otherwise ignore it and Wait for RSCN to come in.
39851 +                */
39852 +               if (ha->loop_state != LOOP_DOWN) {
39853 +                       DEBUG2(printk("scsi(%ld): Asynchronous PORT UPDATE "
39854 +                           "ignored.\n", ha->host_no));
39855 +                       printk(KERN_INFO
39856 +                           "scsi(%ld): Asynchronous PORT UPDATE ignored.\n",
39857 +                           ha->host_no);
39858 +                       break;
39859 +               }
39860 +
39861 +               DEBUG2(printk("scsi(%ld): Asynchronous PORT UPDATE.\n",
39862 +                   ha->host_no));
39863 +               printk(KERN_INFO
39864 +                   "scsi(%ld): Port database changed.\n", ha->host_no);
39865 +
39866 +               /*
39867 +                * Mark all devices as missing so we will login again.
39868 +                */
39869 +               ha->loop_state = LOOP_UP;
39870 +
39871 +               atomic_set(&ha->loop_down_timer, 0);
39872 +               qla2x00_mark_all_devices_lost(ha);
39873 +
39874 +               ha->flags.rscn_queue_overflow = 1;
39875 +
39876 +               set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
39877 +               set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
39878 +
39879 +               /* Update AEN queue. */
39880 +               if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39881 +                       qla2x00_enqueue_aen(ha, MBA_PORT_UPDATE, NULL);
39882 +               }
39883 +               break;
39884 +
39885 +       case MBA_SCR_UPDATE:            /* State Change Registration */
39886 +               mb[1] = RD_REG_WORD(&reg->mailbox1);
39887 +               mb[2] = RD_REG_WORD(&reg->mailbox2);
39888 +
39889 +               DEBUG2(printk("scsi(%ld): Asynchronous RSCR UPDATE.\n",
39890 +                   ha->host_no));
39891 +               DEBUG(printk(KERN_INFO
39892 +                   "scsi(%ld): RSCN database changed - 0x%x, 0x%x.\n",
39893 +                   ha->host_no, mb[1], mb[2]));
39894 +
39895 +               rscn_queue_index = ha->rscn_in_ptr + 1;
39896 +               if (rscn_queue_index == MAX_RSCN_COUNT)
39897 +                       rscn_queue_index = 0;
39898 +               if (rscn_queue_index != ha->rscn_out_ptr) {
39899 +                       ha->rscn_queue[ha->rscn_in_ptr].format =
39900 +                           MSB(mb[1]);
39901 +                       ha->rscn_queue[ha->rscn_in_ptr].d_id.b.domain =
39902 +                           LSB(mb[1]);
39903 +                       ha->rscn_queue[ha->rscn_in_ptr].d_id.b.area =
39904 +                           MSB(mb[2]);
39905 +                       ha->rscn_queue[ha->rscn_in_ptr].d_id.b.al_pa =
39906 +                           LSB(mb[2]);
39907 +                       ha->rscn_in_ptr = rscn_queue_index;
39908 +               } else {
39909 +                       ha->flags.rscn_queue_overflow = 1;
39910 +               }
39911 +
39912 +               ha->loop_state = LOOP_UPDATE;
39913 +               atomic_set(&ha->loop_down_timer, 0);
39914 +               ha->flags.management_server_logged_in = 0;
39915 +
39916 +               set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
39917 +               set_bit(RSCN_UPDATE, &ha->dpc_flags);
39918 +
39919 +               /* Update AEN queue. */
39920 +               if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39921 +                       qla2x00_enqueue_aen(ha, MBA_RSCN_UPDATE, &mb[0]);
39922 +               }
39923 +               break;
39924 +       }
39925 +}
39926 +
39927 +/**
39928 + * qla2x00_process_completed_request() - Process a Fast Post response.
39929 + * @ha: SCSI driver HA context
39930 + * @index: SRB index
39931 + */
39932 +static void
39933 +qla2x00_process_completed_request(struct scsi_qla_host *ha, int index)
39934 +{
39935 +       srb_t *sp;
39936 +       struct scsi_qla_host *vis_ha;
39937 +
39938 +       ENTER(__func__);
39939 +
39940 +       /* Validate handle. */
39941 +       if (index >= MAX_OUTSTANDING_COMMANDS) {
39942 +               DEBUG2(printk("scsi(%ld): Invalid SCSI completion handle %d.\n",
39943 +                   ha->host_no, index));
39944 +               printk(KERN_WARNING
39945 +                   "scsi(%ld): Invalid SCSI completion handle %d.\n",
39946 +                   ha->host_no, index);
39947 +
39948 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39949 +               return;
39950 +       }
39951 +
39952 +       sp = ha->outstanding_cmds[index];
39953 +       if (sp) {
39954 +               /* Free outstanding command slot. */
39955 +               ha->outstanding_cmds[index] = 0;
39956 +#if defined(IOCB_THROLLE_USAGE)
39957 +               ha->iocb_cnt -= sp->iocb_cnt;
39958 +#endif
39959 +               vis_ha = (scsi_qla_host_t *)sp->cmd->device->host->hostdata;
39960 +               if (ha->actthreads)
39961 +                       ha->actthreads--;
39962 +               sp->lun_queue->out_cnt--;
39963 +               sp->flags |= SRB_ISP_COMPLETED;
39964 +               CMD_COMPL_STATUS(sp->cmd) = 0L;
39965 +               CMD_SCSI_STATUS(sp->cmd) = 0L;
39966 +
39967 +               /* Save ISP completion status */
39968 +               CMD_RESULT(sp->cmd) = DID_OK << 16;
39969 +               sp->fo_retry_cnt = 0;
39970 +               add_to_done_queue(ha, sp);
39971 +       } else {
39972 +               DEBUG2(printk("scsi(%ld): Invalid ISP SCSI completion handle\n",
39973 +                   ha->host_no));
39974 +               printk(KERN_WARNING
39975 +                   "scsi(%ld): Invalid ISP SCSI completion handle\n",
39976 +                   ha->host_no);
39977 +
39978 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39979 +       }
39980 +
39981 +       LEAVE(__func__);
39982 +}
39983 +
39984 +/**
39985 + * qla2x00_response_pkt() - Process response queue entries.
39986 + * @ha: SCSI driver HA context
39987 + * @index: Response queue out pointer
39988 + */
39989 +static void
39990 +qla2x00_response_pkt(scsi_qla_host_t *ha, uint16_t index) 
39991 +{
39992 +       device_reg_t    *reg = ha->iobase;
39993 +       response_t      *pkt;
39994 +
39995 +       ENTER(__func__);
39996 +
39997 +       if (!ha->flags.online)
39998 +               return;
39999 +
40000 +       if (index >= RESPONSE_ENTRY_CNT) {
40001 +               /* Invalid response pointer value. */
40002 +               DEBUG(printk("scsi(%ld): Response Pointer Error - index=%x.\n",
40003 +                   ha->host_no, index));
40004 +
40005 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40006 +               return;
40007 +       }
40008 +
40009 +       while (ha->rsp_ring_index != index) {
40010 +               pkt = ha->response_ring_ptr;
40011 +
40012 +               DEBUG5(printk("%s(%ld): ha->rsp_ring_index=%ld index=%ld.\n",
40013 +                   __func__, ha->host_no,
40014 +                   (u_long)ha->rsp_ring_index, (u_long)index));
40015 +               DEBUG5(printk("%s(%ld): response packet data:",
40016 +                   __func__, ha->host_no));
40017 +               DEBUG5(qla2x00_dump_buffer((uint8_t *)pkt,
40018 +                   RESPONSE_ENTRY_SIZE));
40019 +
40020 +               ha->rsp_ring_index++;
40021 +               if (ha->rsp_ring_index == RESPONSE_ENTRY_CNT) {
40022 +                       ha->rsp_ring_index = 0;
40023 +                       ha->response_ring_ptr = ha->response_ring;
40024 +               } else {
40025 +                       ha->response_ring_ptr++;
40026 +               }
40027 +
40028 +#if defined(FC_IP_SUPPORT)
40029 +               /*
40030 +                * This code is temporary until FW is fixed.  FW is mistakenly
40031 +                * setting bit 6 on Mailbox IOCB response
40032 +                */
40033 +               pkt->entry_status &= 0x3f;
40034 +#endif
40035 +
40036 +               if (pkt->entry_status != 0) {
40037 +                       DEBUG3(printk(KERN_INFO
40038 +                           "scsi(%ld): Process error entry.\n", ha->host_no));
40039 +
40040 +                       qla2x00_error_entry(ha, pkt);
40041 +                       continue;
40042 +               }
40043 +
40044 +               switch (pkt->entry_type) {
40045 +               case STATUS_TYPE:
40046 +                       qla2x00_status_entry(ha, (sts_entry_t *)pkt);
40047 +                       break;
40048 +
40049 +               case STATUS_CONT_TYPE:
40050 +                       qla2x00_status_cont_entry(ha, (sts_cont_entry_t *)pkt);
40051 +                       break;
40052 +
40053 +               case MS_IOCB_TYPE:
40054 +                       qla2x00_ms_entry(ha, (ms_iocb_entry_t *)pkt);
40055 +                       break;
40056 +
40057 +#if defined(FC_IP_SUPPORT)
40058 +               case ET_IP_COMMAND_64:
40059 +                       /* Handle IP send completion */
40060 +                       qla2x00_ip_send_complete(ha,
40061 +                           pkt->handle, le16_to_cpu(pkt->comp_status));
40062 +                       break;
40063 +
40064 +               case ET_IP_RECEIVE:
40065 +                       /* Handle IP receive packet */
40066 +                       qla2x00_ip_receive(ha, pkt);
40067 +                       break;
40068 +
40069 +               case ET_MAILBOX_COMMAND:
40070 +                   if (pkt->sys_define == SOURCE_IP) {
40071 +                           qla2x00_ip_mailbox_iocb_done(ha,
40072 +                               (struct mbx_entry *)pkt);
40073 +                           break;
40074 +                   }       
40075 +#endif  /* FC_IP_SUPPORT */
40076 +
40077 +               default:
40078 +                       /* Type Not Supported. */
40079 +                       DEBUG4(printk(KERN_WARNING
40080 +                           "scsi(%ld): Received unknown response pkt type %x "
40081 +                           "entry status=%x.\n",
40082 +                           ha->host_no, pkt->entry_type, pkt->entry_status));
40083 +                       break;
40084 +               }
40085 +       }
40086 +
40087 +       /* Adjust ring index */
40088 +       WRT_REG_WORD(ISP_RSP_Q_OUT(reg), ha->rsp_ring_index);
40089 +
40090 +       LEAVE(__func__);
40091 +}
40092 +
40093 +/**
40094 + * qla2x00_status_entry() - Process a Status IOCB entry.
40095 + * @ha: SCSI driver HA context
40096 + * @pkt: Entry pointer
40097 + */
40098 +static void
40099 +qla2x00_status_entry(scsi_qla_host_t *ha, sts_entry_t *pkt ) 
40100 +{
40101 +       uint32_t        b, t, l;
40102 +       scsi_qla_host_t *vis_ha;
40103 +       srb_t           *sp;
40104 +       os_lun_t        *lq;
40105 +       os_tgt_t        *tq;
40106 +       fc_port_t       *fcport;
40107 +       Scsi_Cmnd       *cp;
40108 +       uint16_t        comp_status;
40109 +       uint16_t        scsi_status;
40110 +       uint8_t         lscsi_status;
40111 +       uint32_t        resid;
40112 +       uint8_t         sense_sz = 0;
40113 +
40114 +
40115 +       ENTER(__func__);
40116 +
40117 +       /* Validate handle. */
40118 +       if (pkt->handle < MAX_OUTSTANDING_COMMANDS) {
40119 +               sp = ha->outstanding_cmds[pkt->handle];
40120 +               /* Free outstanding command slot. */
40121 +               ha->outstanding_cmds[pkt->handle] = 0;
40122 +       } else
40123 +               sp = NULL;
40124 +
40125 +       if (sp == NULL) {
40126 +               DEBUG2(printk("scsi(%ld): Status Entry invalid handle.\n",
40127 +                   ha->host_no));
40128 +               printk(KERN_WARNING
40129 +                   "scsi(%ld): Status Entry invalid handle.\n", ha->host_no);
40130 +
40131 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40132 +               if (ha->dpc_wait && !ha->dpc_active) 
40133 +                       up(ha->dpc_wait);
40134 +               return;
40135 +       }
40136 +
40137 +       cp = sp->cmd;
40138 +       if (cp == NULL) {
40139 +               DEBUG2(printk("scsi(%ld): Cmd already returned back to OS "
40140 +                   "pkt->handle: %d sp=%p sp->state:%d\n",
40141 +                   ha->host_no, pkt->handle, sp, sp->state));
40142 +               printk(KERN_WARNING
40143 +                   "scsi(%ld): Cmd is NULL: already returned to OS (sp=%p)\n",
40144 +                   ha->host_no, sp);
40145 +               return;
40146 +       }
40147 +
40148 +       /*
40149 +        * Set the visible adapter for lun Q access.
40150 +        */
40151 +       vis_ha = (scsi_qla_host_t *)cp->device->host->hostdata;
40152 +       if (ha->actthreads)
40153 +               ha->actthreads--;
40154 +
40155 +       if (sp->lun_queue == NULL) {
40156 +               DEBUG2(printk("scsi(%ld): Status Entry invalid lun "
40157 +                   "pointer.\n", ha->host_no));
40158 +               printk(KERN_WARNING
40159 +                   "scsi(%ld): Status Entry invalid lun pointer.\n",
40160 +                   ha->host_no);
40161 +
40162 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40163 +               if (ha->dpc_wait && !ha->dpc_active) 
40164 +                       up(ha->dpc_wait);
40165 +               return;
40166 +       }
40167 +
40168 +       sp->lun_queue->out_cnt--;
40169 +#if defined(IOCB_THROLLE_USAGE)
40170 +       ha->iocb_cnt -= sp->iocb_cnt;
40171 +#endif
40172 +
40173 +       comp_status = le16_to_cpu(pkt->comp_status);
40174 +       /* Mask of reserved bits 12-15.  Before we examine the scsi status */
40175 +       scsi_status = le16_to_cpu(pkt->scsi_status) & SS_MASK;
40176 +       lscsi_status = scsi_status & STATUS_MASK;
40177 +
40178 +       CMD_ENTRY_STATUS(cp) = pkt->entry_status;
40179 +       CMD_COMPL_STATUS(cp) = comp_status;
40180 +       CMD_SCSI_STATUS(cp) = scsi_status;
40181 +
40182 +       /* dg 10/11 */
40183 +       sp->flags |= SRB_ISP_COMPLETED;
40184 +
40185 +       /* Generate LU queue on cntrl, target, LUN */
40186 +       b = SCSI_BUS_32(cp);
40187 +       t = SCSI_TCN_32(cp);
40188 +       l = SCSI_LUN_32(cp);
40189 +
40190 +       tq = sp->tgt_queue;
40191 +       lq = sp->lun_queue;
40192 +
40193 +       /*
40194 +        * If loop is in transient state Report DID_BUS_BUSY
40195 +        */
40196 +       if (!(sp->flags & SRB_IOCTL) &&
40197 +           (atomic_read(&ha->loop_down_timer) ||
40198 +               ha->loop_state != LOOP_READY) &&
40199 +           (comp_status != CS_COMPLETE || scsi_status != 0)) {
40200 +
40201 +               DEBUG2(printk("scsi(%ld:%d:%d:%d): Loop Not Ready - "
40202 +                   "pid=%lx.\n",
40203 +                   ha->host_no,
40204 +                   b, t, l, sp->cmd->serial_number));
40205 +
40206 +               qla2x00_extend_timeout(sp->cmd, EXTEND_CMD_TIMEOUT);
40207 +               add_to_retry_queue(ha, sp);
40208 +               return;
40209 +       }
40210 +
40211 +       /*
40212 +        * Based on Host and scsi status generate status code for Linux
40213 +        */
40214 +       switch (comp_status) {
40215 +       case CS_COMPLETE:
40216 +               /*
40217 +                * Host complted command OK.  Check SCSI Status to determine
40218 +                * the correct Host status.
40219 +                */
40220 +               if (scsi_status == 0) {
40221 +                       CMD_RESULT(cp) = DID_OK << 16;
40222 +
40223 +                       /* Perform any post command processing */
40224 +                       qla2x00_filter_command(ha, sp);
40225 +               } else {   /* Check for non zero scsi status */
40226 +                       if (lscsi_status == SS_BUSY_CONDITION) {
40227 +                               CMD_RESULT(cp) =
40228 +                                   DID_BUS_BUSY << 16 | lscsi_status;
40229 +                       } else {
40230 +                               CMD_RESULT(cp) =
40231 +                                   DID_OK << 16 | lscsi_status;
40232 +
40233 +                               if (lscsi_status != SS_CHECK_CONDITION)
40234 +                                       break;
40235 +
40236 +                               /*
40237 +                                * Copy Sense Data into sense buffer
40238 +                                */
40239 +                               memset(cp->sense_buffer,
40240 +                                   0, sizeof(cp->sense_buffer));
40241 +
40242 +                               if (!(scsi_status & SS_SENSE_LEN_VALID))
40243 +                                       break;
40244 +
40245 +                               if (le16_to_cpu(pkt->req_sense_length) <
40246 +                                   CMD_SNSLEN(cp))
40247 +                                       sense_sz =
40248 +                                           le16_to_cpu(pkt->req_sense_length);
40249 +                               else
40250 +                                       sense_sz = CMD_SNSLEN(cp) - 1;
40251 +
40252 +                               CMD_ACTUAL_SNSLEN(cp) = sense_sz;
40253 +                               sp->request_sense_length = sense_sz;
40254 +                               sp->request_sense_ptr =
40255 +                                   (void *)cp->sense_buffer;
40256 +
40257 +                               if (sp->request_sense_length > 32) 
40258 +                                       sense_sz = 32;
40259 +
40260 +                               memcpy(cp->sense_buffer,
40261 +                                   pkt->req_sense_data, sense_sz);
40262 +
40263 +                               sp->request_sense_ptr += sense_sz;
40264 +                               sp->request_sense_length -= sense_sz;
40265 +                               if (sp->request_sense_length != 0)
40266 +                                       ha->status_srb = sp;
40267 +
40268 +                               if (!(sp->flags & SRB_IOCTL) &&
40269 +                                   qla2x00_check_sense(cp, lq) ==
40270 +                                       QL_STATUS_SUCCESS) {
40271 +                                       /*
40272 +                                        * Throw away status_cont if any
40273 +                                        */
40274 +                                       ha->status_srb = NULL;
40275 +                                       add_to_scsi_retry_queue(ha, sp);
40276 +                                       return;
40277 +                               }
40278 +
40279 +                               DEBUG5(printk("%s(): Check condition Sense "
40280 +                                   "data, scsi(%ld:%d:%d:%d) cmd=%p "
40281 +                                   "pid=%ld\n",
40282 +                                   __func__,
40283 +                                   ha->host_no,
40284 +                                   b, t, l,
40285 +                                   cp, cp->serial_number));
40286 +                               if (sense_sz)
40287 +                                       DEBUG5(qla2x00_dump_buffer(
40288 +                                           cp->sense_buffer,
40289 +                                           CMD_ACTUAL_SNSLEN(cp)));
40290 +                       }
40291 +               }
40292 +               break;
40293 +
40294 +       case CS_DATA_UNDERRUN:
40295 +               DEBUG2(printk(KERN_INFO
40296 +                   "scsi(%ld:%d:%d) UNDERRUN status detected 0x%x-0x%x.\n",
40297 +                   ha->host_no,
40298 +                   t, l, comp_status, scsi_status));
40299 +
40300 +               resid = le32_to_cpu(pkt->residual_length);
40301 +               CMD_RESID_LEN(cp) = resid;
40302 +
40303 +               /*
40304 +                * Check to see if SCSI Status is non zero.  If so report SCSI
40305 +                * Status.
40306 +                */
40307 +               if (lscsi_status != 0) {
40308 +                       if (lscsi_status == SS_BUSY_CONDITION) {
40309 +                               CMD_RESULT(cp) =
40310 +                                   DID_BUS_BUSY << 16 | lscsi_status;
40311 +                       } else {
40312 +                               CMD_RESULT(cp) =
40313 +                                   DID_OK << 16 | lscsi_status;
40314 +
40315 +                               if (lscsi_status != SS_CHECK_CONDITION)
40316 +                                       break;
40317 +
40318 +                               /*
40319 +                                * Copy Sense Data into sense buffer
40320 +                                */
40321 +                               memset(cp->sense_buffer,
40322 +                                   0, sizeof(cp->sense_buffer));
40323 +
40324 +                               if (!(scsi_status & SS_SENSE_LEN_VALID))
40325 +                                       break;
40326 +
40327 +                               if (le16_to_cpu(pkt->req_sense_length) <
40328 +                                   CMD_SNSLEN(cp))
40329 +                                       sense_sz =
40330 +                                           le16_to_cpu(pkt->req_sense_length);
40331 +                               else
40332 +                                       sense_sz = CMD_SNSLEN(cp) - 1;
40333 +
40334 +                               CMD_ACTUAL_SNSLEN(cp) = sense_sz;
40335 +                               sp->request_sense_length = sense_sz;
40336 +                               sp->request_sense_ptr =
40337 +                                   (void *)cp->sense_buffer;
40338 +
40339 +                               if (sp->request_sense_length > 32) 
40340 +                                       sense_sz = 32;
40341 +
40342 +                               memcpy(cp->sense_buffer,
40343 +                                   pkt->req_sense_data, sense_sz);
40344 +
40345 +                               sp->request_sense_ptr += sense_sz;
40346 +                               sp->request_sense_length -= sense_sz;
40347 +                               if (sp->request_sense_length != 0)
40348 +                                       ha->status_srb = sp;
40349 +
40350 +                               if (!(sp->flags & SRB_IOCTL) &&
40351 +                                   (qla2x00_check_sense(cp, lq) ==
40352 +                                       QL_STATUS_SUCCESS)) {
40353 +                                       ha->status_srb = NULL;
40354 +                                       add_to_scsi_retry_queue(ha,sp);
40355 +                                       return;
40356 +                               }
40357 +
40358 +                               DEBUG5(printk("%s(): Check condition Sense "
40359 +                                   "data, scsi(%ld:%d:%d:%d) cmd=%p "
40360 +                                   "pid=%ld\n",
40361 +                                   __func__,
40362 +                                   ha->host_no,
40363 +                                   b, t, l,
40364 +                                   cp, cp->serial_number));
40365 +                               if (sense_sz)
40366 +                                       DEBUG5(qla2x00_dump_buffer(
40367 +                                           cp->sense_buffer,
40368 +                                           CMD_ACTUAL_SNSLEN(cp)));
40369 +                       }
40370 +               } else {
40371 +                       /*
40372 +                        * If RISC reports underrun and target does not report
40373 +                        * it then we must have a lost frame, so tell upper
40374 +                        * layer to retry it by reporting a bus busy.
40375 +                        */
40376 +                       if (!(scsi_status & SS_RESIDUAL_UNDER)) {
40377 +                               DEBUG2(printk("scsi(%ld:%d:%d:%d) Dropped "
40378 +                                   "frame(s) detected (%x of %x bytes)..."
40379 +                                   "retrying command.\n",
40380 +                                   ha->host_no,
40381 +                                   b, t, l, resid, CMD_XFRLEN(cp)));
40382 +
40383 +                               CMD_RESULT(cp) = DID_BUS_BUSY << 16;
40384 +                               ha->dropped_frame_error_cnt++;
40385 +                               break;
40386 +                       }
40387 +
40388 +                       /*
40389 +                        * Handle mid-layer underflow???
40390 +                        *
40391 +                        * For kernels less than 2.4, the driver must return
40392 +                        * an error if an underflow is detected.  For kernels
40393 +                        * equal-to and above 2.4, the mid-layer will
40394 +                        * appearantly handle the underflow by detecting the
40395 +                        * residual count -- unfortunately, we do not see
40396 +                        * where this is actually being done.  In the interim,
40397 +                        * we will return DID_ERROR.
40398 +                        */
40399 +                       cp->resid = resid;
40400 +/* TODO:
40401 + *
40402 + * Determine if this is a valid check for 2.5
40403 + */
40404 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
40405 +                       if ((unsigned)(CMD_XFRLEN(cp) - resid) <
40406 +                           cp->underflow) {
40407 +                               printk(KERN_INFO
40408 +                                   "scsi(%ld): Mid-layer underflow detected "
40409 +                                   "(%x of %x bytes) wanted %x bytes..."
40410 +                                   "returning DID_ERROR status!\n",
40411 +                                   ha->host_no,
40412 +                                   resid, CMD_XFRLEN(cp), cp->underflow);
40413 +
40414 +                               CMD_RESULT(cp) = DID_ERROR << 16;
40415 +                               break;
40416 +                       }
40417 +#endif
40418 +                       /* Everybody online, looking good... */
40419 +                       CMD_RESULT(cp) = DID_OK << 16;
40420 +
40421 +                       /* Perform any post command processing */
40422 +                       qla2x00_filter_command(ha, sp);
40423 +               }
40424 +               break;
40425 +
40426 +       case CS_PORT_LOGGED_OUT:
40427 +       case CS_PORT_CONFIG_CHG:
40428 +       case CS_PORT_BUSY:
40429 +       case CS_INCOMPLETE:
40430 +       case CS_PORT_UNAVAILABLE:
40431 +               /*
40432 +                * If the port is in Target Down state, return all IOs for this
40433 +                * Target with DID_NO_CONNECT ELSE Queue the IOs in the
40434 +                * retry_queue.
40435 +                */
40436 +               fcport = lq->fclun->fcport;
40437 +               DEBUG2(printk("scsi(%ld:%d:%d): status_entry: Port Down "
40438 +                   "pid=%ld, compl status=0x%x, port state=0x%x\n",
40439 +                   ha->host_no,
40440 +                   t, l,
40441 +                   sp->cmd->serial_number,
40442 +                   comp_status,
40443 +                   atomic_read(&fcport->state)));
40444 +
40445 +               if ((sp->flags & SRB_IOCTL) ||
40446 +                   (atomic_read(&fcport->state) == FC_DEVICE_DEAD)) {
40447 +                       CMD_RESULT(cp) = DID_NO_CONNECT << 16;
40448 +                       add_to_done_queue(ha, sp);
40449 +               } else {
40450 +                       qla2x00_extend_timeout(cp, EXTEND_CMD_TIMEOUT);
40451 +                       add_to_retry_queue(ha, sp);
40452 +               }
40453 +
40454 +               if (atomic_read(&fcport->state) == FC_ONLINE) {
40455 +                       qla2x00_mark_device_lost(ha, fcport);
40456 +               }
40457 +
40458 +               return;
40459 +               break;
40460 +
40461 +       case CS_RESET:
40462 +               DEBUG2(printk(KERN_INFO
40463 +                   "scsi(%ld): RESET status detected 0x%x-0x%x.\n",
40464 +                   ha->host_no, comp_status, scsi_status));
40465 +
40466 +               if (sp->flags & SRB_IOCTL) {
40467 +                       CMD_RESULT(cp) = DID_RESET << 16;
40468 +               }
40469 +               else {
40470 +                       qla2x00_extend_timeout(cp, EXTEND_CMD_TIMEOUT);
40471 +                       add_to_retry_queue(ha, sp);
40472 +                       return;
40473 +               }
40474 +               break;
40475 +
40476 +       case CS_ABORTED:
40477 +               /* 
40478 +                * hv2.19.12 - DID_ABORT does not retry the request if we
40479 +                * aborted this request then abort otherwise it must be a
40480 +                * reset.
40481 +                */
40482 +               DEBUG2(printk(KERN_INFO
40483 +                   "scsi(%ld): ABORT status detected 0x%x-0x%x.\n",
40484 +                   ha->host_no, comp_status, scsi_status));
40485 +
40486 +               CMD_RESULT(cp) = DID_RESET << 16;
40487 +               break;
40488 +
40489 +       case CS_TIMEOUT:
40490 +               DEBUG2(printk(KERN_INFO
40491 +                   "scsi(%ld:%d:%d:%d): TIMEOUT status detected 0x%x-0x%x.\n",
40492 +                   ha->host_no,
40493 +                   b, t, l,
40494 +                   comp_status, scsi_status));
40495 +
40496 +               CMD_RESULT(cp) = DID_BUS_BUSY << 16;
40497 +
40498 +               fcport = lq->fclun->fcport;
40499 +// Dump FW
40500 +printk("***TIMEOUT cmd=(%lx) cdb=(%x)\n\n", cp->serial_number, cp->cmnd[0]);
40501 +//qla2x00_dump_isp(ha, 1);
40502 +
40503 +               /* 
40504 +                * Check to see if logout occurred
40505 +                */
40506 +               t = SCSI_TCN_32(cp);
40507 +               if ((le16_to_cpu(pkt->status_flags) & IOCBSTAT_SF_LOGO)) {
40508 +                       DEBUG2(printk("scsi: Timeout occurred with Logo, "
40509 +                           "status flag (%x) with public device loop id "
40510 +                           "(%x), attempt new recovery\n",
40511 +                           le16_to_cpu(pkt->status_flags),
40512 +                           ha->fc_db[t].loop_id));
40513 +
40514 +                       ha->fc_db[t].flag |= DEV_RELOGIN;
40515 +                       fcport->login_retry = ha->login_retry_count;
40516 +                       set_bit(RELOGIN_NEEDED, &ha->dpc_flags);
40517 +               }
40518 +               break;
40519 +
40520 +       case CS_QUEUE_FULL:
40521 +               DEBUG2(printk(KERN_INFO
40522 +                   "scsi(%ld): QUEUE FULL status detected 0x%x-0x%x.\n",
40523 +                   ha->host_no, comp_status, scsi_status));
40524 +
40525 +               /*
40526 +                * SCSI Mid-Layer handles device queue full.
40527 +                */                              
40528 +               CMD_RESULT(cp) = DID_OK << 16 | lscsi_status;
40529 +
40530 +/* Adjust queue depth */
40531 +{
40532 +int ret;
40533 +
40534 +ret = scsi_track_queue_full(cp->device, sp->lun_queue->out_cnt-1);
40535 +printk("scsi(%ld:%d:%d:%d): QUEUE FULL adjustments -- "
40536 +    "outstanding/adjusted (%ld/%d) -- qd/lqfd/lqfc (%d/%d/%d).\n",
40537 +    ha->host_no,
40538 +    cp->device->channel, cp->device->id, cp->device->lun,
40539 +    sp->lun_queue->out_cnt-1, ret,
40540 +    cp->device->queue_depth,
40541 +    cp->device->last_queue_full_count,
40542 +    cp->device->last_queue_full_depth);
40543 +}
40544 +
40545 +
40546 +               break;
40547 +
40548 +       default:
40549 +               DEBUG3(printk("scsi(%ld): Error detected (unknown status) "
40550 +                   "0x%x-0x%x.\n",
40551 +                   ha->host_no, comp_status, scsi_status));
40552 +               printk(KERN_INFO
40553 +                   "scsi(%ld): Unknown status detected 0x%x-0x%x.\n",
40554 +                   ha->host_no, comp_status, scsi_status);
40555 +
40556 +               CMD_RESULT(cp) = DID_ERROR << 16;
40557 +               break;
40558 +       }
40559 +
40560 +       /* Place command on done queue. */
40561 +       if (ha->status_srb == NULL)
40562 +               add_to_done_queue(ha, sp);
40563 +
40564 +       LEAVE(__func__);
40565 +}
40566 +
40567 +/**
40568 + * qla2x00_status_cont_entry() - Process a Status Continuations entry.
40569 + * @ha: SCSI driver HA context
40570 + * @pkt: Entry pointer
40571 + *
40572 + * Extended sense data.
40573 + */
40574 +static void
40575 +qla2x00_status_cont_entry(scsi_qla_host_t *ha, sts_cont_entry_t *pkt)
40576 +{
40577 +       uint8_t         sense_sz = 0;
40578 +       srb_t           *sp = ha->status_srb;
40579 +       Scsi_Cmnd       *cp;
40580 +
40581 +       ENTER(__func__);
40582 +
40583 +       if (sp != NULL && sp->request_sense_length != 0) {
40584 +               cp = sp->cmd;
40585 +               if (cp == NULL) {
40586 +                       DEBUG2(printk("%s(): Cmd already returned back to OS "
40587 +                           "sp=%p sp->state:%d\n",
40588 +                           __func__, sp, sp->state));
40589 +                       printk(KERN_INFO
40590 +                           "%s(): cmd is NULL: already returned to OS "
40591 +                           "(sp=%p)\n",
40592 +                           __func__, sp); 
40593 +
40594 +                       ha->status_srb = NULL;
40595 +                       return;
40596 +               }
40597 +
40598 +               if (sp->request_sense_length > sizeof (pkt->req_sense_data)) {
40599 +                       sense_sz = sizeof(pkt->req_sense_data);
40600 +               } else {
40601 +                       sense_sz = sp->request_sense_length;
40602 +               }
40603 +
40604 +               /* Move sense data. */
40605 +               memcpy(sp->request_sense_ptr, pkt->req_sense_data, sense_sz);
40606 +               DEBUG5(qla2x00_dump_buffer(sp->request_sense_ptr, sense_sz));
40607 +
40608 +               sp->request_sense_ptr += sense_sz;
40609 +               sp->request_sense_length -= sense_sz;
40610 +
40611 +               /* Place command on done queue. */
40612 +               if (sp->request_sense_length == 0) {
40613 +                       add_to_done_queue(ha, sp);
40614 +                       ha->status_srb = NULL;
40615 +               }
40616 +       }
40617 +
40618 +       LEAVE(__func__);
40619 +}
40620 +
40621 +/**
40622 + * qla2x00_error_entry() - Process an error entry.
40623 + * @ha: SCSI driver HA context
40624 + * @pkt: Entry pointer
40625 + */
40626 +static void
40627 +qla2x00_error_entry(scsi_qla_host_t *ha, response_t *pkt) 
40628 +{
40629 +       srb_t *sp;
40630 +
40631 +       ENTER(__func__);
40632 +
40633 +#if defined(QL_DEBUG_LEVEL_2)
40634 +       if (pkt->entry_status & RF_INV_E_ORDER)
40635 +               printk("%s(%ld): Invalid Entry Order\n",
40636 +                   __func__, ha->host_no);
40637 +       else if (pkt->entry_status & RF_INV_E_COUNT)
40638 +               printk("%s(%ld): Invalid Entry Count\n",
40639 +                   __func__, ha->host_no);
40640 +       else if (pkt->entry_status & RF_INV_E_PARAM)
40641 +               printk("%s(%ld): Invalid Entry Parameter\n",
40642 +                   __func__, ha->host_no);
40643 +       else if (pkt->entry_status & RF_INV_E_TYPE)
40644 +               printk("%s(%ld): Invalid Entry Type\n",
40645 +                   __func__, ha->host_no);
40646 +       else if (pkt->entry_status & RF_BUSY)
40647 +               printk("%s(%ld): Busy\n",
40648 +                   __func__, ha->host_no);
40649 +       else
40650 +               printk("%s(%ld): UNKNOWN flag error\n",
40651 +                   __func__, ha->host_no);
40652 +#endif
40653 +
40654 +       /* Validate handle. */
40655 +       if (pkt->handle < MAX_OUTSTANDING_COMMANDS)
40656 +               sp = ha->outstanding_cmds[pkt->handle];
40657 +       else
40658 +               sp = NULL;
40659 +
40660 +       if (sp) {
40661 +               /* Free outstanding command slot. */
40662 +               ha->outstanding_cmds[pkt->handle] = 0;
40663 +               if (ha->actthreads)
40664 +                       ha->actthreads--;
40665 +               sp->lun_queue->out_cnt--;
40666 +#if defined(IOCB_THROLLE_USAGE)
40667 +               ha->iocb_cnt -= sp->iocb_cnt;
40668 +#endif
40669 +
40670 +               sp->flags |= SRB_ISP_COMPLETED;
40671 +
40672 +               /* Bad payload or header */
40673 +               if (pkt->entry_status &
40674 +                   (RF_INV_E_ORDER | RF_INV_E_COUNT |
40675 +                    RF_INV_E_PARAM | RF_INV_E_TYPE)) {
40676 +                       CMD_RESULT(sp->cmd) = DID_ERROR << 16;
40677 +               } else if (pkt->entry_status & RF_BUSY) {
40678 +                       CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
40679 +               } else {
40680 +                       CMD_RESULT(sp->cmd) = DID_ERROR << 16;
40681 +               }
40682 +               /* Place command on done queue. */
40683 +               add_to_done_queue(ha, sp);
40684 +
40685 +       } else if (pkt->entry_type == COMMAND_A64_TYPE ||
40686 +           pkt->entry_type == COMMAND_TYPE) {
40687 +               DEBUG2(printk("scsi(%ld): Error entry - invalid handle\n",
40688 +                   ha->host_no));
40689 +               printk(KERN_WARNING
40690 +                   "scsi(%ld): Error entry - invalid handle\n",
40691 +                   ha->host_no);
40692 +
40693 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40694 +               if (ha->dpc_wait && !ha->dpc_active) 
40695 +                       up(ha->dpc_wait);
40696 +       }
40697 +
40698 +       LEAVE(__func__);
40699 +}
40700 +
40701 +/**
40702 + * qla2x00_ms_entry() - Process a Management Server entry.
40703 + * @ha: SCSI driver HA context
40704 + * @index: Response queue out pointer
40705 + */
40706 +static void
40707 +qla2x00_ms_entry(scsi_qla_host_t *ha, ms_iocb_entry_t *pkt) 
40708 +{
40709 +       srb_t          *sp;
40710 +
40711 +       ENTER(__func__);
40712 +
40713 +       DEBUG3(printk("%s(%ld): pkt=%p pkthandle=%d.\n",
40714 +           __func__, ha->host_no, pkt, pkt->handle1));
40715 +
40716 +       /* Validate handle. */
40717 +       if (pkt->handle1 < MAX_OUTSTANDING_COMMANDS)
40718 +               sp = ha->outstanding_cmds[pkt->handle1];
40719 +       else
40720 +               sp = NULL;
40721 +
40722 +       if (sp == NULL) {
40723 +               DEBUG2(printk("scsi(%ld): MS entry - invalid handle\n",
40724 +                   ha->host_no));
40725 +               printk(KERN_WARNING
40726 +                   "scsi(%ld): MS entry - invalid handle\n",
40727 +                   ha->host_no);
40728 +
40729 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40730 +               return;
40731 +       }
40732 +
40733 +       CMD_COMPL_STATUS(sp->cmd) = le16_to_cpu(pkt->status);
40734 +       CMD_ENTRY_STATUS(sp->cmd) = pkt->entry_status;
40735 +
40736 +       /* Free outstanding command slot. */
40737 +       ha->outstanding_cmds[pkt->handle1] = 0;
40738 +       sp->flags |= SRB_ISP_COMPLETED;
40739 +
40740 +       add_to_done_queue(ha, sp);
40741 +
40742 +       LEAVE(__func__);
40743 +}
40744 +
40745 +/**
40746 + * qla2x00_check_sense() - Perform any sense data interrogation.
40747 + * @cp: SCSI Command
40748 + * @lq: Lun queue
40749 + *
40750 + * Returns QL_STATUS_SUCCESS if the lun queue is suspended, else
40751 + * QL_STATUS_ERROR  (lun queue not suspended).
40752 + */
40753 +static int 
40754 +qla2x00_check_sense(Scsi_Cmnd *cp, os_lun_t *lq)
40755 +{
40756 +       scsi_qla_host_t *ha;
40757 +       srb_t           *sp;
40758 +       fc_port_t       *fcport;
40759 +
40760 +       ha = (scsi_qla_host_t *) cp->device->host->hostdata;
40761 +       if (((cp->sense_buffer[0] & 0x70) >> 4) != 7) {
40762 +               return (QL_STATUS_ERROR);
40763 +       }
40764 +
40765 +       sp = (srb_t * )CMD_SP(cp);
40766 +       sp->flags |= SRB_GOT_SENSE;
40767 +
40768 +       switch (cp->sense_buffer[2] & 0xf) {
40769 +       case RECOVERED_ERROR:
40770 +               CMD_RESULT(cp)  = DID_OK << 16;
40771 +               cp->sense_buffer[0] = 0;
40772 +               break;
40773 +
40774 +       case NOT_READY:
40775 +               fcport = lq->fclun->fcport;
40776 +
40777 +               /*
40778 +                * Suspend the lun only for hard disk device type.
40779 +                */
40780 +               if (!(fcport->flags & FC_TAPE_DEVICE) &&
40781 +                   lq->q_state != LUN_STATE_TIMEOUT) {
40782 +                       /*
40783 +                        * If target is in process of being ready then suspend
40784 +                        * lun for 6 secs and retry all the commands.
40785 +                        */
40786 +                       if (cp->sense_buffer[12] == 0x4 &&
40787 +                           cp->sense_buffer[13] == 0x1) {
40788 +
40789 +                               /* Suspend the lun for 6 secs */
40790 +                               qla2x00_suspend_lun(ha,
40791 +                                   lq, 6, ql2xsuspendcount);
40792 +
40793 +                               return (QL_STATUS_SUCCESS);
40794 +                       }
40795 +               }
40796 +               break;
40797 +       }
40798 +
40799 +       return (QL_STATUS_ERROR);
40800 +}
40801 --- /dev/null   Thu Apr 11 07:25:15 2002
40802 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_listops.h       Thu Jul  3 15:34:42 2003
40803 @@ -0,0 +1,397 @@
40804 +/******************************************************************************
40805 + *                  QLOGIC LINUX SOFTWARE
40806 + *
40807 + * QLogic ISP2x00 device driver for Linux 2.5.x
40808 + * Copyright (C) 2003 Qlogic Corporation
40809 + * (www.qlogic.com)
40810 + *
40811 + * This program is free software; you can redistribute it and/or modify it
40812 + * under the terms of the GNU General Public License as published by the
40813 + * Free Software Foundation; either version 2, or (at your option) any
40814 + * later version.
40815 + *
40816 + * This program is distributed in the hope that it will be useful, but
40817 + * WITHOUT ANY WARRANTY; without even the implied warranty of
40818 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
40819 + * General Public License for more details.
40820 + *
40821 + ******************************************************************************/
40822 +
40823 +/* Management functions for various lists */
40824 +
40825 +/*
40826 + * Found in kernel 2.4.9 and higher in include/linux/lists.h
40827 + *
40828 + * Iterate over a list safe against removal of list.
40829 + *
40830 + */
40831 +#if !defined(list_for_each_safe)
40832 +#define list_for_each_safe(pos, n, head) \
40833 +       for( pos= (head)->next, n = pos->next; pos != (head); \
40834 +               pos = n, n = pos->next )
40835 +#endif
40836 +
40837 +/* __add_to_done_queue()
40838 + * 
40839 + * Place SRB command on done queue.
40840 + *
40841 + * Input:
40842 + *      ha           = host pointer
40843 + *      sp           = srb pointer.
40844 + * Locking:
40845 + *     this function assumes the ha->list_lock is already taken
40846 + */
40847 +static inline void 
40848 +__add_to_done_queue(struct scsi_qla_host * ha, srb_t * sp)
40849 +{
40850 +       /*
40851 +        if (sp->state != SRB_NO_QUEUE_STATE && 
40852 +               sp->state != SRB_ACTIVE_STATE)
40853 +               BUG();
40854 +       */
40855 +
40856 +        /* Place block on done queue */
40857 +        sp->cmd->host_scribble = (unsigned char *) NULL;
40858 +        sp->state = SRB_DONE_STATE;
40859 +        list_add_tail(&sp->list,&ha->done_queue);
40860 +        ha->done_q_cnt++;
40861 +       sp->ha = ha;
40862 +}
40863 +
40864 +/* __add_to_free_queue()
40865 + * 
40866 + * Place SRB command on free queue.
40867 + *
40868 + * Input:
40869 + *      ha           = host pointer
40870 + *      sp           = srb pointer.
40871 + * Locking:
40872 + *     this function assumes the ha->list_lock is already taken
40873 + */
40874 +static inline void 
40875 +__add_to_free_queue(struct scsi_qla_host * ha, srb_t * sp)
40876 +{
40877 +       /*
40878 +        if (atomic_read(&sp->ref_count) != 0)
40879 +                BUG();
40880 +       */
40881 +
40882 +
40883 +        /* Place block on free queue */
40884 +        sp->state = SRB_FREE_STATE;
40885 +        list_add_tail(&sp->list,&ha->free_queue);
40886 +        ha->srb_cnt++;
40887 +}
40888 +
40889 +static inline void 
40890 +__add_to_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40891 +{
40892 +       /*
40893 +        if( sp->state != SRB_NO_QUEUE_STATE && 
40894 +               sp->state != SRB_ACTIVE_STATE)
40895 +               BUG();
40896 +       */
40897 +
40898 +        /* Place block on retry queue */
40899 +        list_add_tail(&sp->list,&ha->retry_queue);
40900 +        ha->retry_q_cnt++;
40901 +        sp->flags |= SRB_WATCHDOG;
40902 +        ha->flags.watchdog_enabled = TRUE;
40903 +        sp->state = SRB_RETRY_STATE;
40904 +       sp->ha = ha;
40905 +}
40906 +
40907 +static inline void 
40908 +__add_to_scsi_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40909 +{
40910 +       /*
40911 +        if( sp->state != SRB_NO_QUEUE_STATE && 
40912 +               sp->state != SRB_ACTIVE_STATE)
40913 +               BUG();
40914 +       */
40915 +
40916 +        /* Place block on retry queue */
40917 +        list_add_tail(&sp->list,&ha->scsi_retry_queue);
40918 +        ha->scsi_retry_q_cnt++;
40919 +        sp->state = SRB_SCSI_RETRY_STATE;
40920 +       sp->ha = ha;
40921 +}
40922 +
40923 +static inline void 
40924 +add_to_done_queue(struct scsi_qla_host * ha, srb_t * sp)
40925 +{
40926 +        unsigned long flags;
40927 +
40928 +        spin_lock_irqsave(&ha->list_lock, flags);
40929 +        __add_to_done_queue(ha,sp);
40930 +        spin_unlock_irqrestore(&ha->list_lock, flags);
40931 +}
40932 +
40933 +static inline void 
40934 +add_to_free_queue(struct scsi_qla_host * ha, srb_t * sp)
40935 +{
40936 +        unsigned long flags;
40937 +
40938 +        spin_lock_irqsave(&ha->list_lock, flags);
40939 +        __add_to_free_queue(ha,sp);
40940 +        spin_unlock_irqrestore(&ha->list_lock, flags);
40941 +}
40942 +
40943 +static inline void 
40944 +add_to_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40945 +{
40946 +        unsigned long flags;
40947 +
40948 +        spin_lock_irqsave(&ha->list_lock, flags);
40949 +        __add_to_retry_queue(ha,sp);
40950 +        spin_unlock_irqrestore(&ha->list_lock, flags);
40951 +}
40952 +
40953 +static inline void 
40954 +add_to_scsi_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40955 +{
40956 +        unsigned long flags;
40957 +
40958 +        spin_lock_irqsave(&ha->list_lock, flags);
40959 +        __add_to_scsi_retry_queue(ha,sp);
40960 +        spin_unlock_irqrestore(&ha->list_lock, flags);
40961 +}
40962 +
40963 +/*
40964 + * __del_from_retry_queue
40965 + *      Function used to remove a command block from the
40966 + *      watchdog timer queue.
40967 + *
40968 + *      Note: Must insure that command is on watchdog
40969 + *            list before calling del_from_retry_queue
40970 + *            if (sp->flags & SRB_WATCHDOG)
40971 + *
40972 + * Input: 
40973 + *      ha = adapter block pointer.
40974 + *      sp = srb pointer.
40975 + * Locking:
40976 + *     this function assumes the list_lock is already taken
40977 + */
40978 +static inline void 
40979 +__del_from_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40980 +{
40981 +        list_del_init(&sp->list);
40982 +
40983 +        if (list_empty(&ha->retry_queue))
40984 +                ha->flags.watchdog_enabled = FALSE;
40985 +        sp->flags &= ~(SRB_WATCHDOG | SRB_BUSY);
40986 +        sp->state = SRB_NO_QUEUE_STATE;
40987 +        ha->retry_q_cnt--;
40988 +}
40989 +
40990 +/*
40991 + * __del_from_scsi_retry_queue
40992 + *      Function used to remove a command block from the
40993 + *      scsi retry queue.
40994 + *
40995 + * Input: 
40996 + *      ha = adapter block pointer.
40997 + *      sp = srb pointer.
40998 + * Locking:
40999 + *     this function assumes the list_lock is already taken
41000 + */
41001 +static inline void 
41002 +__del_from_scsi_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
41003 +{
41004 +        list_del_init(&sp->list);
41005 +
41006 +        ha->scsi_retry_q_cnt--;
41007 +        sp->state = SRB_NO_QUEUE_STATE;
41008 +}
41009 +
41010 +/*
41011 + * del_from_retry_queue
41012 + *      Function used to remove a command block from the
41013 + *      watchdog timer queue.
41014 + *
41015 + *      Note: Must insure that command is on watchdog
41016 + *            list before calling del_from_retry_queue
41017 + *            if (sp->flags & SRB_WATCHDOG)
41018 + *
41019 + * Input: 
41020 + *      ha = adapter block pointer.
41021 + *      sp = srb pointer.
41022 + * Locking:
41023 + *     this function takes and releases the list_lock
41024 + */
41025 +static inline void 
41026 +del_from_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
41027 +{
41028 +        unsigned long flags;
41029 +
41030 +        /*     if (unlikely(!(sp->flags & SRB_WATCHDOG)))
41031 +                       BUG();*/
41032 +        spin_lock_irqsave(&ha->list_lock, flags);
41033 +
41034 +        /*     if (unlikely(list_empty(&ha->retry_queue)))
41035 +                       BUG();*/
41036 +
41037 +        __del_from_retry_queue(ha,sp);
41038 +
41039 +        spin_unlock_irqrestore(&ha->list_lock, flags);
41040 +}
41041 +/*
41042 + * del_from_scsi_retry_queue
41043 + *      Function used to remove a command block from the
41044 + *      scsi retry queue.
41045 + *
41046 + * Input: 
41047 + *      ha = adapter block pointer.
41048 + *      sp = srb pointer.
41049 + * Locking:
41050 + *     this function takes and releases the list_lock
41051 + */
41052 +static inline void 
41053 +del_from_scsi_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
41054 +{
41055 +        unsigned long flags;
41056 +
41057 +        spin_lock_irqsave(&ha->list_lock, flags);
41058 +
41059 +        /*     if (unlikely(list_empty(&ha->scsi_retry_queue)))
41060 +                       BUG();*/
41061 +
41062 +        __del_from_scsi_retry_queue(ha,sp);
41063 +
41064 +        spin_unlock_irqrestore(&ha->list_lock, flags);
41065 +}
41066 +
41067 +static inline void
41068 +__del_from_free_queue(struct scsi_qla_host * ha, srb_t * sp)
41069 +{
41070 +        ha->srb_cnt--;
41071 +        list_del_init(&sp->list);
41072 +        sp->state = SRB_NO_QUEUE_STATE;
41073 +}
41074 +
41075 +/*
41076 + * __add_to_pending_queue
41077 + *      Add the standard SCB job to the bottom of standard SCB commands.
41078 + *
41079 + * Input:
41080 + * COMPLETE!!!
41081 + *      q  = SCSI LU pointer.
41082 + *      sp = srb pointer.
41083 + *      SCSI_LU_Q lock must be already obtained.
41084 + */
41085 +static inline void 
41086 +__add_to_pending_queue(struct scsi_qla_host *ha, srb_t * sp)
41087 +{
41088 +       /*
41089 +        if( sp->state != SRB_NO_QUEUE_STATE &&
41090 +               sp->state != SRB_FREE_STATE &&
41091 +               sp->state != SRB_ACTIVE_STATE)
41092 +               BUG();
41093 +       */
41094 +
41095 +       list_add_tail(&sp->list, &ha->pending_queue);
41096 +       ha->qthreads++;
41097 +       sp->state = SRB_PENDING_STATE;
41098 +}
41099 +
41100 +static inline void 
41101 +__add_to_pending_queue_head(struct scsi_qla_host *ha, srb_t * sp)
41102 +{
41103 +       /*
41104 +        if( sp->state != SRB_NO_QUEUE_STATE && 
41105 +               sp->state != SRB_FREE_STATE &&
41106 +               sp->state != SRB_ACTIVE_STATE)
41107 +               BUG();
41108 +       */
41109 +
41110 +       list_add(&sp->list, &ha->pending_queue);
41111 +       ha->qthreads++;
41112 +       sp->state = SRB_PENDING_STATE;
41113 +}
41114 +
41115 +static inline void
41116 +add_to_pending_queue(struct scsi_qla_host *ha, srb_t *sp)
41117 +{
41118 +       unsigned long flags;
41119 +
41120 +       spin_lock_irqsave(&ha->list_lock, flags);
41121 +       __add_to_pending_queue(ha, sp);
41122 +       spin_unlock_irqrestore(&ha->list_lock, flags);
41123 +}
41124 +static inline void
41125 +add_to_pending_queue_head(struct scsi_qla_host *ha, srb_t *sp)
41126 +{
41127 +       unsigned long flags;
41128 +
41129 +       spin_lock_irqsave(&ha->list_lock, flags);
41130 +       __add_to_pending_queue_head(ha, sp);
41131 +       spin_unlock_irqrestore(&ha->list_lock, flags);
41132 +}
41133 +
41134 +static inline void
41135 +__del_from_pending_queue(struct scsi_qla_host *ha, srb_t *sp)
41136 +{
41137 +       list_del_init(&sp->list);
41138 +       ha->qthreads--;
41139 +       sp->state = SRB_NO_QUEUE_STATE;
41140 +}
41141 +
41142 +/*
41143 + * Failover Stuff.
41144 + */
41145 +static inline void
41146 +__add_to_failover_queue(struct scsi_qla_host * ha, srb_t * sp)
41147 +{
41148 +       /*
41149 +        if( sp->state != SRB_NO_QUEUE_STATE && 
41150 +               sp->state != SRB_ACTIVE_STATE)
41151 +               BUG();
41152 +       */
41153 +
41154 +        list_add_tail(&sp->list,&ha->failover_queue);
41155 +        ha->failover_cnt++;
41156 +        sp->state = SRB_FAILOVER_STATE;
41157 +       sp->ha = ha;
41158 +}
41159 +
41160 +static inline void add_to_failover_queue(struct scsi_qla_host * ha, srb_t * sp)
41161 +{
41162 +        unsigned long flags;
41163 +
41164 +        spin_lock_irqsave(&ha->list_lock, flags);
41165 +
41166 +        __add_to_failover_queue(ha,sp);
41167 +
41168 +        spin_unlock_irqrestore(&ha->list_lock, flags);
41169 +}
41170 +static inline void __del_from_failover_queue(struct scsi_qla_host * ha, srb_t *
41171 +                sp)
41172 +{
41173 +        ha->failover_cnt--;
41174 +        list_del_init(&sp->list);
41175 +        sp->state = SRB_NO_QUEUE_STATE;
41176 +}
41177 +
41178 +static inline void del_from_failover_queue(struct scsi_qla_host * ha, srb_t * sp)
41179 +{
41180 +        unsigned long flags;
41181 +
41182 +        spin_lock_irqsave(&ha->list_lock, flags);
41183 +
41184 +        __del_from_failover_queue(ha,sp);
41185 +
41186 +        spin_unlock_irqrestore(&ha->list_lock, flags);
41187 +}
41188 +
41189 +static inline void 
41190 +del_from_pending_queue(struct scsi_qla_host * ha, srb_t * sp)
41191 +{
41192 +        unsigned long flags;
41193 +
41194 +        spin_lock_irqsave(&ha->list_lock, flags);
41195 +
41196 +        __del_from_pending_queue(ha,sp);
41197 +
41198 +        spin_unlock_irqrestore(&ha->list_lock, flags);
41199 +}
41200 +
41201 --- /dev/null   Thu Apr 11 07:25:15 2002
41202 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_mbx.c   Thu Jul  3 15:34:42 2003
41203 @@ -0,0 +1,2884 @@
41204 +/*
41205 + *                  QLOGIC LINUX SOFTWARE
41206 + *
41207 + * QLogic ISP2x00 device driver for Linux 2.5.x
41208 + * Copyright (C) 2003 Qlogic Corporation
41209 + * (www.qlogic.com)
41210 + *
41211 + * This program is free software; you can redistribute it and/or modify it
41212 + * under the terms of the GNU General Public License as published by the
41213 + * Free Software Foundation; either version 2, or (at your option) any
41214 + * later version.
41215 + *
41216 + * This program is distributed in the hope that it will be useful, but
41217 + * WITHOUT ANY WARRANTY; without even the implied warranty of
41218 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
41219 + * General Public License for more details.
41220 + *
41221 + */
41222 +
41223 +#include "qla_os.h"
41224 +
41225 +#include "qla_def.h"
41226 +
41227 +/*
41228 + *  Local Function Prototypes.
41229 + */
41230 +static void
41231 +qla2x00_mbx_sem_timeout(unsigned long);
41232 +
41233 +static uint8_t
41234 +qla2x00_get_mbx_access(scsi_qla_host_t *, uint32_t);
41235 +
41236 +static uint8_t
41237 +qla2x00_release_mbx_access(scsi_qla_host_t *, uint32_t);
41238 +
41239 +static uint8_t
41240 +qla2x00_mbx_q_add(scsi_qla_host_t *, mbx_cmdq_t **);
41241 +
41242 +static void
41243 +qla2x00_mbx_q_get(scsi_qla_host_t *, mbx_cmdq_t **);
41244 +
41245 +static void
41246 +qla2x00_mbx_q_memb_alloc(scsi_qla_host_t *, mbx_cmdq_t **);
41247 +
41248 +static void
41249 +qla2x00_mbx_q_memb_free(scsi_qla_host_t *, mbx_cmdq_t *);
41250 +
41251 +/***************************/
41252 +/* Function implementation */
41253 +/***************************/
41254 +
41255 +static void
41256 +qla2x00_mbx_sem_timeout(unsigned long data)
41257 +{
41258 +       struct semaphore        *sem_ptr = (struct semaphore *)data;
41259 +
41260 +       DEBUG11(printk("qla2x00_sem_timeout: entered.\n");)
41261 +
41262 +       if (sem_ptr != NULL) {
41263 +               up(sem_ptr);
41264 +       }
41265 +
41266 +       DEBUG11(printk("qla2x00_mbx_sem_timeout: exiting.\n");)
41267 +}
41268 +
41269 +/*
41270 + *  tov = timeout value in seconds
41271 + */
41272 +static uint8_t
41273 +qla2x00_get_mbx_access(scsi_qla_host_t *ha, uint32_t tov)
41274 +{
41275 +       uint8_t         ret;
41276 +       int             prev_val = 1;  /* assume no access yet */
41277 +       mbx_cmdq_t      *ptmp_mbq;
41278 +       struct timer_list       tmp_cmd_timer;
41279 +       unsigned long   cpu_flags;
41280 +
41281 +
41282 +       DEBUG11(printk("qla2x00_get_mbx_access(%ld): entered.\n",
41283 +           ha->host_no);)
41284 +
41285 +       while (1) {
41286 +               if (test_bit(MBX_CMD_WANT, &ha->mbx_cmd_flags) == 0) {
41287 +
41288 +                       DEBUG11(printk("qla2x00_get_mbx_access(%ld): going "
41289 +                           " to test access flags.\n", ha->host_no);)
41290 +
41291 +                       /* No one else is waiting. Go ahead and try to
41292 +                        * get access.
41293 +                        */
41294 +                       if ((prev_val = test_and_set_bit(MBX_CMD_ACTIVE,
41295 +                           &ha->mbx_cmd_flags)) == 0) {
41296 +                               break;
41297 +                       }
41298 +               }
41299 +
41300 +               /* wait for previous command to finish */
41301 +               DEBUG(printk("qla2x00_get_mbx_access(%ld): access "
41302 +                   "flags=%lx. busy. Waiting for access. curr time=0x%lx.\n",
41303 +                   ha->host_no, ha->mbx_cmd_flags, jiffies);)
41304 +
41305 +               DEBUG11(printk("qla2x00_get_mbx_access(%ld): access "
41306 +                   "flags=%lx. busy. Waiting for access. curr time=0x%lx.\n",
41307 +                   ha->host_no, ha->mbx_cmd_flags, jiffies);)
41308 +
41309 +               /*
41310 +                * Init timer and get semaphore from mbx q. After we got valid
41311 +                * semaphore pointer the MBX_CMD_WANT flag would also had
41312 +                * been set.
41313 +                */
41314 +               qla2x00_mbx_q_add(ha, &ptmp_mbq);
41315 +
41316 +               if (ptmp_mbq == NULL) {
41317 +                       /* queue full? problem? can't proceed. */
41318 +                       DEBUG2_3_11(printk("qla2x00_get_mbx_access(%ld): ERROR "
41319 +                           "no more mbx_q allowed. exiting.\n", ha->host_no);)
41320 +
41321 +                       break;
41322 +               }
41323 +
41324 +               /* init timer and semaphore */
41325 +               init_timer(&tmp_cmd_timer);
41326 +               tmp_cmd_timer.data = (unsigned long)&ptmp_mbq->cmd_sem;
41327 +               tmp_cmd_timer.function =
41328 +                   (void (*)(unsigned long))qla2x00_mbx_sem_timeout;
41329 +               tmp_cmd_timer.expires = jiffies + tov * HZ;
41330 +
41331 +               DEBUG11(printk("get_mbx_access(%ld): adding timer. "
41332 +                   "curr time=0x%lx timeoutval=0x%lx.\n",
41333 +                   ha->host_no, jiffies, tmp_cmd_timer.expires);)
41334 +
41335 +                       /* wait. */
41336 +/*              add_timer(&tmp_cmd_timer);*/
41337 +               DEBUG11(printk("get_mbx_access(%ld): going to sleep. "
41338 +                   "current time=0x%lx.\n", ha->host_no, jiffies);)
41339 +
41340 +               down_interruptible(&ptmp_mbq->cmd_sem);
41341 +
41342 +               DEBUG11(printk("get_mbx_access(%ld): woke up. current "
41343 +                   "time=0x%lx.\n",
41344 +                   ha->host_no, jiffies);)
41345 +
41346 +/*             del_timer(&tmp_cmd_timer);*/
41347 +
41348 +               /* try to get lock again. we'll test later to see
41349 +                * if we actually got the lock.
41350 +                */
41351 +               prev_val = test_and_set_bit(MBX_CMD_ACTIVE,
41352 +                   &ha->mbx_cmd_flags);
41353 +
41354 +               /*
41355 +                * After we tried to get access then we check to see
41356 +                * if we need to clear the MBX_CMD_WANT flag. Don't clear
41357 +                * this flag before trying to get access or else another
41358 +                * new thread might grab it before we did.
41359 +                */
41360 +               spin_lock_irqsave(&ha->mbx_q_lock, cpu_flags);
41361 +               if (ha->mbx_q_head == NULL) {
41362 +                       /* We're the last thread in queue. */
41363 +                       clear_bit(MBX_CMD_WANT, &ha->mbx_cmd_flags);
41364 +               }
41365 +               qla2x00_mbx_q_memb_free(ha, ptmp_mbq);
41366 +               spin_unlock_irqrestore(&ha->mbx_q_lock, cpu_flags);
41367 +
41368 +               break;
41369 +       }
41370 +
41371 +       if (prev_val == 0) {
41372 +               /* We got the lock */
41373 +               DEBUG11(printk("qla2x00_get_mbx_access(%ld): success.\n",
41374 +                   ha->host_no);)
41375 +
41376 +               ret = QL_STATUS_SUCCESS;
41377 +       } else {
41378 +               /* Timeout or resource error. */
41379 +               DEBUG2_3_11(printk("qla2x00_get_mbx_access(%ld): timed out.\n",
41380 +                   ha->host_no);)
41381 +
41382 +               ret = QL_STATUS_TIMEOUT;
41383 +       }
41384 +
41385 +       return ret;
41386 +}
41387 +
41388 +static uint8_t
41389 +qla2x00_release_mbx_access(scsi_qla_host_t *ha, uint32_t tov)
41390 +{
41391 +       mbx_cmdq_t      *next_thread;
41392 +
41393 +       DEBUG11(printk("qla2x00_release_mbx_access:(%ld): entered.\n",
41394 +           ha->host_no);)
41395 +
41396 +       clear_bit(MBX_CMD_ACTIVE, &ha->mbx_cmd_flags);
41397 +
41398 +       /* Wake up one pending mailbox cmd thread in queue. */
41399 +       qla2x00_mbx_q_get(ha, &next_thread);
41400 +       if (next_thread) {
41401 +               DEBUG11(printk("qla2x00_release_mbx_access: found pending "
41402 +                   "mbx cmd. Waking up sem in %p.\n", &next_thread);)
41403 +               up(&next_thread->cmd_sem);
41404 +       }
41405 +
41406 +       DEBUG11(printk("qla2x00_release_mbx_access:(%ld): exiting.\n",
41407 +           ha->host_no);)
41408 +
41409 +       return QL_STATUS_SUCCESS;
41410 +}
41411 +
41412 +/* Allocates a mbx_cmdq_t struct and add to the mbx_q list. */
41413 +static uint8_t
41414 +qla2x00_mbx_q_add(scsi_qla_host_t *ha, mbx_cmdq_t **ret_mbq)
41415 +{
41416 +       uint8_t         ret;
41417 +       unsigned long   cpu_flags;
41418 +       mbx_cmdq_t      *ptmp = NULL;
41419 +
41420 +       spin_lock_irqsave(&ha->mbx_q_lock, cpu_flags);
41421 +
41422 +       DEBUG11(printk("qla2x00_mbx_q_add: got mbx_q spinlock. "
41423 +           "Inst=%d.\n", apiHBAInstance);)
41424 +
41425 +       qla2x00_mbx_q_memb_alloc(ha, &ptmp);
41426 +       if (ptmp == NULL) {
41427 +               /* can't add any more threads */
41428 +               DEBUG2_3_11(printk("qla2x00_mbx_q_add: ERROR no more "
41429 +                   "ioctl threads allowed. Inst=%d.\n", apiHBAInstance);)
41430 +
41431 +               ret = QL_STATUS_RESOURCE_ERROR;
41432 +       } else {
41433 +               if (ha->mbx_q_tail == NULL) {
41434 +                       /* First thread to queue. */
41435 +                       set_bit(IOCTL_WANT, &ha->mbx_cmd_flags);
41436 +
41437 +                       ha->mbx_q_head = ptmp;
41438 +               } else {
41439 +                       ha->mbx_q_tail->pnext = ptmp;
41440 +               }
41441 +               ha->mbx_q_tail = ptmp;
41442 +
41443 +               /* Now init the semaphore */
41444 +               init_MUTEX_LOCKED(&ptmp->cmd_sem);
41445 +               ret = QL_STATUS_SUCCESS;
41446 +       }
41447 +
41448 +       *ret_mbq = ptmp;
41449 +
41450 +       DEBUG11(printk("qla2x00_mbx_q_add: going to release spinlock. "
41451 +           "ret_mbq=%p, ret=%d. Inst=%d.\n", *ret_mbq, ret, apiHBAInstance);)
41452 +
41453 +       spin_unlock_irqrestore(&ha->mbx_q_lock, cpu_flags);
41454 +
41455 +       return ret;
41456 +}
41457 +
41458 +/* Just remove and return first member from mbx_cmdq.  Don't free anything. */
41459 +static void
41460 +qla2x00_mbx_q_get(scsi_qla_host_t *ha, mbx_cmdq_t **ret_mbq)
41461 +{
41462 +       unsigned long   cpu_flags;
41463 +
41464 +       spin_lock_irqsave(&ha->mbx_q_lock, cpu_flags);
41465 +
41466 +       DEBUG11(printk("qla2x00_mbx_q_get: got mbx_q spinlock. "
41467 +           "Inst=%d.\n", apiHBAInstance);)
41468 +
41469 +       /* Remove from head */
41470 +       *ret_mbq = ha->mbx_q_head;
41471 +       if (ha->mbx_q_head != NULL) {
41472 +               ha->mbx_q_head = ha->mbx_q_head->pnext;
41473 +               if (ha->mbx_q_head == NULL) {
41474 +                       /* That's the last one in queue. */
41475 +                       ha->mbx_q_tail = NULL;
41476 +               }
41477 +               (*ret_mbq)->pnext = NULL;
41478 +       }
41479 +
41480 +       DEBUG11(printk("qla2x00_mbx_q_remove: return ret_mbq=%p. Going to "
41481 +           "release spinlock. Inst=%d.\n", *ret_mbq, apiHBAInstance);)
41482 +
41483 +       spin_unlock_irqrestore(&ha->mbx_q_lock, cpu_flags);
41484 +}
41485 +
41486 +/* Find a free mbx_q member from the array. Must already got the
41487 + * mbx_q_lock spinlock.
41488 + */
41489 +static void
41490 +qla2x00_mbx_q_memb_alloc(scsi_qla_host_t *ha, mbx_cmdq_t **ret_mbx_q_memb)
41491 +{
41492 +       mbx_cmdq_t      *ptmp = NULL;
41493 +
41494 +       DEBUG11(printk("qla2x00_mbx_q_memb_alloc: entered. "
41495 +           "Inst=%d.\n", apiHBAInstance);)
41496 +
41497 +       ptmp = ha->mbx_sem_pool_head;
41498 +       if (ptmp != NULL) {
41499 +               ha->mbx_sem_pool_head = ptmp->pnext;
41500 +               ptmp->pnext = NULL;
41501 +               if (ha->mbx_sem_pool_head == NULL) {
41502 +                       ha->mbx_sem_pool_tail = NULL;
41503 +               }
41504 +       } else {
41505 +               /* We ran out of pre-allocated semaphores.  Try to allocate
41506 +                * a new one.
41507 +                */
41508 +               ptmp = (void *)KMEM_ZALLOC(sizeof(mbx_cmdq_t), 40);
41509 +       }
41510 +
41511 +       *ret_mbx_q_memb = ptmp;
41512 +
41513 +       DEBUG11(printk("qla2x00_mbx_q_memb_alloc: return waitq_memb=%p. "
41514 +           "Inst=%d.\n", *ret_mbx_q_memb, apiHBAInstance);)
41515 +}
41516 +
41517 +/* Add the specified mbx_q member back to the free semaphore pool. Must
41518 + * already got the mbx_q_lock spinlock.
41519 + */
41520 +static void
41521 +qla2x00_mbx_q_memb_free(scsi_qla_host_t *ha, mbx_cmdq_t *pfree_mbx_q_memb)
41522 +{
41523 +       DEBUG11(printk("qla2x00_mbx_q_memb_free: entered. Inst=%d.\n",
41524 +           apiHBAInstance);)
41525 +
41526 +       if (pfree_mbx_q_memb != NULL) {
41527 +               if (ha->mbx_sem_pool_tail != NULL) {
41528 +                       /* Add to tail */
41529 +                       ha->mbx_sem_pool_tail->pnext = pfree_mbx_q_memb;
41530 +               } else {
41531 +                       ha->mbx_sem_pool_head = pfree_mbx_q_memb;
41532 +               }
41533 +               ha->mbx_sem_pool_tail = pfree_mbx_q_memb;
41534 +       }
41535 +
41536 +       /* put it back to the free pool. */
41537 +
41538 +       DEBUG11(printk("qla2x00_mbx_q_memb_free: exiting. "
41539 +           "Inst=%d.\n", apiHBAInstance);)
41540 +}
41541 +
41542 +/*
41543 + * qla2x00_mailbox_command
41544 + *     Issue mailbox command and waits for completion.
41545 + *
41546 + * Input:
41547 + *     ha = adapter block pointer.
41548 + *     mcp = driver internal mbx struct pointer.
41549 + *
41550 + * Output:
41551 + *     mb[MAX_MAILBOX_REGISTER_COUNT] = returned mailbox data.
41552 + *
41553 + * Returns:
41554 + *     0 : QL_STATUS_SUCCESS = cmd performed success
41555 + *     1 : QL_STATUS_ERROR   (error encountered)
41556 + *     6 : QL_STATUS_TIMEOUT (timeout condition encountered)
41557 + *
41558 + * Context:
41559 + *     Kernel context.
41560 + */
41561 +uint8_t
41562 +qla2x00_mailbox_command(scsi_qla_host_t *ha, mbx_cmd_t *mcp)
41563 +{
41564 +       unsigned long    flags = 0;
41565 +       device_reg_t     *reg       = ha->iobase;
41566 +       struct timer_list       tmp_intr_timer;
41567 +       uint8_t         abort_active = test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
41568 +       uint8_t         io_lock_on = ha->init_done;
41569 +       uint8_t         mbx_count;
41570 +       uint8_t         status = 0;
41571 +       uint8_t         tmp_stat = 0;
41572 +       uint16_t        command;
41573 +       uint16_t        *iptr, *optr;
41574 +       uint32_t        cnt;
41575 +       uint32_t        mboxes;
41576 +       unsigned long   mbx_flags = 0;
41577 +       unsigned long   wait_time;
41578 +
41579 +       DEBUG11(printk("qla2x00_mailbox_command(%ld): entered.\n",
41580 +           ha->host_no);)
41581 +       /*
41582 +        * Wait for active mailbox commands to finish by waiting at most
41583 +        * tov seconds. This is to serialize actual issuing of mailbox cmds
41584 +        * during non ISP abort time.
41585 +        */
41586 +       if (!abort_active) {
41587 +               tmp_stat = qla2x00_get_mbx_access(ha, mcp->tov);
41588 +               if (tmp_stat != QL_STATUS_SUCCESS) {
41589 +                       /* Timeout occurred. Return error. */
41590 +                       DEBUG2_3_11(printk("qla2x00_mailbox_command(%ld): cmd "
41591 +                           "access timeout. Exiting.\n", ha->host_no);)
41592 +                       return QL_STATUS_TIMEOUT;
41593 +               }
41594 +       }
41595 +
41596 +       ha->flags.mbox_busy = TRUE;
41597 +       /* Save mailbox command for debug */
41598 +       ha->mcp = mcp;
41599 +
41600 +       /* Try to get mailbox register access */
41601 +       if (!abort_active)
41602 +               QLA_MBX_REG_LOCK(ha);
41603 +
41604 +       DEBUG11(printk("scsi%d: prepare to issue mbox cmd=0x%x.\n",
41605 +           (int)ha->host_no, mcp->mb[0]);)
41606 +
41607 +       ha->mbox_trace = 0;
41608 +
41609 +       spin_lock_irqsave(&ha->hardware_lock, flags);
41610 +
41611 +       /* Load mailbox registers. */
41612 +       optr = (uint16_t *)&reg->mailbox0;
41613 +       mbx_count = MAILBOX_REGISTER_COUNT;
41614 +
41615 +       iptr = mcp->mb;
41616 +       command = mcp->mb[0];
41617 +       mboxes = mcp->out_mb;
41618 +
41619 +       for (cnt = 0; cnt < mbx_count; cnt++) {
41620 +#if defined(ISP2200)
41621 +               if (cnt == 8) {
41622 +                       optr = (uint16_t *)&reg->mailbox8;
41623 +               }
41624 +#endif
41625 +               if (mboxes & BIT_0) {
41626 +                       WRT_REG_WORD(optr, *iptr);
41627 +               }
41628 +
41629 +               mboxes >>= 1;
41630 +               optr++;
41631 +               iptr++;
41632 +       }
41633 +
41634 +#if defined(QL_DEBUG_LEVEL_1)
41635 +       printk("qla2x00_mailbox_command: Loaded MBX registers "
41636 +           "(displayed in bytes) = \n");
41637 +       qla2x00_dump_buffer((uint8_t *)mcp->mb, 16);
41638 +       printk("\n");
41639 +       qla2x00_dump_buffer(((uint8_t *)mcp->mb + 0x10), 16);
41640 +       printk("\n");
41641 +       qla2x00_dump_buffer(((uint8_t *)mcp->mb + 0x20), 8);
41642 +       printk("\n");
41643 +       printk("qla2x00_mailbox_command: I/O address = %lx.\n",
41644 +           (u_long)optr);
41645 +       qla2x00_dump_regs(ha->host);
41646 +#endif
41647 +
41648 +       /* Issue set host interrupt command to send cmd out. */
41649 +       ha->flags.mbox_int = FALSE;
41650 +       clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
41651 +
41652 +       /* Unlock mbx registers and wait for interrupt */
41653 +
41654 +       DEBUG11(printk("qla2x00_mailbox_command: going to unlock irq & "
41655 +           "waiting for interrupt. jiffies=%lx.\n", jiffies);)
41656 +
41657 +       /* Wait for mbx cmd completion until timeout */
41658 +
41659 +       if (!abort_active && io_lock_on) {
41660 +               /* sleep on completion semaphore */
41661 +               DEBUG11(printk("qla2x00_mailbox_command(%ld): "
41662 +                   "INTERRUPT MODE. Initializing timer.\n",
41663 +                   ha->host_no);)
41664 +
41665 +               init_timer(&tmp_intr_timer);
41666 +               tmp_intr_timer.data = (unsigned long)&ha->mbx_intr_sem;
41667 +               tmp_intr_timer.expires = jiffies + mcp->tov * HZ;
41668 +               tmp_intr_timer.function =
41669 +                   (void (*)(unsigned long))qla2x00_mbx_sem_timeout;
41670 +
41671 +               DEBUG11(printk("qla2x00_mailbox_command(%ld): "
41672 +                   "Adding timer.\n", ha->host_no);)
41673 +               add_timer(&tmp_intr_timer);
41674 +
41675 +               DEBUG11(printk("qla2x00_mailbox_command: going to "
41676 +                   "unlock & sleep. time=0x%lx.\n", jiffies);)
41677 +
41678 +               MBOX_TRACE(ha,BIT_0);
41679 +               set_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
41680 +
41681 +               WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
41682 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
41683 +
41684 +               if (!abort_active)
41685 +                       QLA_MBX_REG_UNLOCK(ha);
41686 +
41687 +               MBOX_TRACE(ha,BIT_1);
41688 +
41689 +               /* Wait for either the timer to expire
41690 +                * or the mbox completion interrupt
41691 +                */
41692 +               down_interruptible(&ha->mbx_intr_sem);
41693 +
41694 +               DEBUG11(printk("qla2x00_mailbox_command:"
41695 +                   "waking up."
41696 +                   "time=0x%lx\n", jiffies);)
41697 +               clear_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
41698 +
41699 +               /* delete the timer */
41700 +               del_timer(&tmp_intr_timer);
41701 +#if QLA2100_LIPTEST
41702 +               if (mbxtimeout) {
41703 +                       DEBUG(printk("qla2x00_mailbox_command(%ld): "
41704 +                           "INTERRUPT MODE - testing timeout handling.\n",
41705 +                           ha->host_no);)
41706 +                       ha->flags.mbox_int= FALSE;
41707 +               }
41708 +               mbxtimeout= 0;
41709 +#endif
41710 +
41711 +       } else {
41712 +
41713 +               DEBUG3_11(printk("qla2x00_mailbox_command(%ld): cmd=%x "
41714 +                       "POLLING MODE.\n", ha->host_no, command);)
41715 +
41716 +               WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
41717 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
41718 +               if (!abort_active)
41719 +                       QLA_MBX_REG_UNLOCK(ha);
41720 +
41721 +
41722 +               wait_time = jiffies + mcp->tov * HZ; /* wait at most tov secs */
41723 +               while (!ha->flags.mbox_int) {
41724 +                       if (time_after(jiffies, wait_time))
41725 +                               break;
41726 +
41727 +                       /* Check for pending interrupts. */
41728 +                       qla2x00_poll(ha);
41729 +
41730 +                       udelay(10); /* v4.27 */
41731 +               } /* while */
41732 +       }
41733 +
41734 +       if (!abort_active)
41735 +               QLA_MBX_REG_LOCK(ha);
41736 +
41737 +       /* Check whether we timed out */
41738 +       if (ha->flags.mbox_int) {
41739 +
41740 +               DEBUG3_11(printk("qla2x00_mailbox_cmd: cmd %x completed.\n",
41741 +                   command);)
41742 +
41743 +               /* Got interrupt. Clear the flag. */
41744 +               ha->flags.mbox_int = FALSE;
41745 +               clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
41746 +
41747 +               if( ha->mailbox_out[0] != MBS_CMD_CMP ) {
41748 +                       qla2x00_stats.mboxerr++;
41749 +                       status = QL_STATUS_ERROR;
41750 +               }
41751 +
41752 +               /* Load return mailbox registers. */
41753 +               optr = mcp->mb;
41754 +               iptr = (uint16_t *)&ha->mailbox_out[0];
41755 +               mboxes = mcp->in_mb;
41756 +               for (cnt = 0; cnt < mbx_count; cnt++) {
41757 +
41758 +                       if (mboxes & BIT_0)
41759 +                               *optr = *iptr;
41760 +
41761 +                       mboxes >>= 1;
41762 +                       optr++;
41763 +                       iptr++;
41764 +               }
41765 +       } else {
41766 +
41767 +#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3) || \
41768 +               defined(QL_DEBUG_LEVEL_11)
41769 +               printk("qla2x00_mailbox_command(%ld): **** MB Command Timeout "
41770 +                   "for cmd %x ****\n", ha->host_no, command);
41771 +               printk("qla2x00_mailbox_command: icontrol=%x jiffies=%lx\n",
41772 +                   RD_REG_WORD(&reg->ictrl), jiffies);
41773 +               printk("qla2x00_mailbox_command: *** mailbox[0] = 0x%x ***\n",
41774 +                   RD_REG_WORD(optr));
41775 +               qla2x00_dump_regs(ha->host);
41776 +#endif
41777 +
41778 +               qla2x00_stats.mboxtout++;
41779 +               status = QL_STATUS_TIMEOUT;
41780 +       }
41781 +
41782 +       if (!abort_active)
41783 +               QLA_MBX_REG_UNLOCK(ha);
41784 +
41785 +       ha->flags.mbox_busy = FALSE;
41786 +
41787 +       /* Clean up */
41788 +       ha->mcp = NULL;
41789 +
41790 +       if (!abort_active) {
41791 +               DEBUG11(printk("qla2x00_mailbox_cmd: checking for additional "
41792 +                   "resp interrupt.\n");)
41793 +
41794 +               /* polling mode for non isp_abort commands. */
41795 +               qla2x00_poll(ha);
41796 +       }
41797 +
41798 +       if (status == QL_STATUS_TIMEOUT ) {
41799 +               if (!io_lock_on || (mcp->flags & IOCTL_CMD)) {
41800 +                       /* not in dpc. schedule it for dpc to take over. */
41801 +                       DEBUG(printk("qla2x00_mailbox_command(%ld): timeout "
41802 +                           "schedule isp_abort_needed.\n",
41803 +                           ha->host_no);)
41804 +                       DEBUG2_3_11(printk("qla2x00_mailbox_command(%ld): "
41805 +                           "timeout schedule isp_abort_needed.\n",
41806 +                           ha->host_no);)
41807 +                       set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
41808 +                       if (ha->dpc_wait && !ha->dpc_active) 
41809 +                               up(ha->dpc_wait);
41810 +
41811 +               } else if (!abort_active) {
41812 +
41813 +                       /* call abort directly since we are in the DPC thread */
41814 +                       DEBUG(printk("qla2x00_mailbox_command(%ld): timeout "
41815 +                           "calling abort_isp\n", ha->host_no);)
41816 +                       DEBUG2_3_11(printk("qla2x00_mailbox_command(%ld): "
41817 +                           "timeout calling abort_isp\n", ha->host_no);)
41818 +
41819 +                       set_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
41820 +                       clear_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
41821 +                       if (qla2x00_abort_isp(ha, 0)) {
41822 +                               /* failed. retry later. */
41823 +                               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
41824 +                       }
41825 +                       clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
41826 +
41827 +                       DEBUG(printk("qla2x00_mailbox_command: finished "
41828 +                           "abort_isp\n");)
41829 +                       DEBUG2_3_11(printk("qla2x00_mailbox_command: finished "
41830 +                           "abort_isp\n");)
41831 +               }
41832 +       }
41833 +
41834 +       /* Allow next mbx cmd to come in. */
41835 +       if (!abort_active) {
41836 +               tmp_stat = qla2x00_release_mbx_access(ha, mcp->tov);
41837 +
41838 +               if (status == 0)
41839 +                       status = tmp_stat;
41840 +       }
41841 +
41842 +       if (status) {
41843 +               DEBUG2_3_11(printk("qla2x00_mailbox_command(%ld): **** FAILED. "
41844 +                   "mbx0=%x, mbx1=%x, mbx2=%x, cmd=%x ****\n",
41845 +               ha->host_no, mcp->mb[0], mcp->mb[1], mcp->mb[2], command);)
41846 +       } else {
41847 +               DEBUG11(printk("qla2x00_mailbox_command(%ld): done.\n",
41848 +                   ha->host_no);)
41849 +       }
41850 +
41851 +       DEBUG11(printk("qla2x00_mailbox_command(%ld): exiting.\n",
41852 +           ha->host_no);)
41853 +
41854 +       return status;
41855 +}
41856 +
41857 +/*
41858 + * qla2x00_load_ram
41859 + *     Load adapter RAM using DMA.
41860 + *
41861 + * Input:
41862 + *     ha = adapter block pointer.
41863 + *
41864 + * Returns:
41865 + *     qla2x00 local function return status code.
41866 + *
41867 + * Context:
41868 + *     Kernel context.
41869 + */
41870 +int
41871 +qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma,
41872 +               uint16_t risc_addr, uint16_t risc_code_size)
41873 +{
41874 +       int rval;
41875 +       mbx_cmd_t mc;
41876 +       mbx_cmd_t *mcp = &mc;
41877 +       uint32_t        req_len;
41878 +       dma_addr_t      nml_dma;
41879 +       uint32_t        nml_len;
41880 +       uint32_t        normalized;
41881 +
41882 +       DEBUG11(printk("qla2x00_load_ram(%ld): entered.\n",
41883 +           ha->host_no);)
41884 +
41885 +       req_len = risc_code_size;
41886 +       nml_dma = 0;
41887 +       nml_len = 0;
41888 +
41889 +       normalized = qla2x00_normalize_dma_addr(
41890 +                       &req_dma, &req_len,
41891 +                       &nml_dma, &nml_len);
41892 +
41893 +       /* Load first segment */
41894 +       mcp->mb[0] = MBC_LOAD_RAM_A64;
41895 +       mcp->mb[1] = risc_addr;
41896 +       mcp->mb[2] = MSW(req_dma);
41897 +       mcp->mb[3] = LSW(req_dma);
41898 +       mcp->mb[4] = (uint16_t)req_len;
41899 +       mcp->mb[6] = MSW(MSD(req_dma));
41900 +       mcp->mb[7] = LSW(MSD(req_dma));
41901 +
41902 +       mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
41903 +       mcp->in_mb = MBX_0;
41904 +       mcp->tov = 30;
41905 +       mcp->flags = 0;
41906 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
41907 +
41908 +       /* Load second segment - if necessary */
41909 +       if (normalized && (rval == QL_STATUS_SUCCESS)) {
41910 +               mcp->mb[0] = MBC_LOAD_RAM_A64;
41911 +               mcp->mb[1] = risc_addr + (uint16_t)req_len;
41912 +               mcp->mb[2] = MSW(nml_dma);
41913 +               mcp->mb[3] = LSW(nml_dma);
41914 +               mcp->mb[4] = (uint16_t)nml_len;
41915 +               mcp->mb[6] = MSW(MSD(nml_dma));
41916 +               mcp->mb[7] = LSW(MSD(nml_dma));
41917 +
41918 +               mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
41919 +               mcp->in_mb = MBX_0;
41920 +               mcp->tov = 30;
41921 +               mcp->flags = 0;
41922 +               rval = (int)qla2x00_mailbox_command(ha, mcp);
41923 +       }
41924 +
41925 +       if (rval == QL_STATUS_SUCCESS) {
41926 +               /* Empty */
41927 +               DEBUG11(printk("qla2x00_load_ram(%ld): done.\n",
41928 +                   ha->host_no);)
41929 +       } else {
41930 +               /* Empty */
41931 +               DEBUG2_3_11(printk("qla2x00_load_ram(%ld): failed. rval=%x "
41932 +                   "mb[0]=%x.\n",
41933 +                   ha->host_no, rval, mcp->mb[0]);)
41934 +       }
41935 +       return rval;
41936 +}
41937 +
41938 +/*
41939 + * qla2x00_load_ram_ext
41940 + *     Load adapter extended RAM using DMA.
41941 + *
41942 + * Input:
41943 + *     ha = adapter block pointer.
41944 + *
41945 + * Returns:
41946 + *     qla2x00 local function return status code.
41947 + *
41948 + * Context:
41949 + *     Kernel context.
41950 + */
41951 +int
41952 +qla2x00_load_ram_ext(scsi_qla_host_t *ha,
41953 +    dma_addr_t req_dma, uint32_t risc_addr, uint16_t risc_code_size)
41954 +{
41955 +       int rval;
41956 +       mbx_cmd_t mc;
41957 +       mbx_cmd_t *mcp = &mc;
41958 +       uint32_t        req_len;
41959 +       dma_addr_t      nml_dma;
41960 +       uint32_t        nml_len;
41961 +       uint32_t        normalized;
41962 +
41963 +       DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
41964 +
41965 +       req_len = risc_code_size;
41966 +       nml_dma = 0;
41967 +       nml_len = 0;
41968 +
41969 +       normalized = qla2x00_normalize_dma_addr(
41970 +                       &req_dma, &req_len,
41971 +                       &nml_dma, &nml_len);
41972 +
41973 +       /* Load first segment */
41974 +       mcp->mb[0] = MBC_LOAD_RAM_EXTENDED;
41975 +       mcp->mb[1] = LSW(risc_addr);
41976 +       mcp->mb[2] = MSW(req_dma);
41977 +       mcp->mb[3] = LSW(req_dma);
41978 +       mcp->mb[4] = (uint16_t)req_len;
41979 +       mcp->mb[6] = MSW(MSD(req_dma));
41980 +       mcp->mb[7] = LSW(MSD(req_dma));
41981 +       mcp->mb[8] = MSW(risc_addr);
41982 +
41983 +       mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
41984 +       mcp->in_mb = MBX_0;
41985 +       mcp->tov = 30;
41986 +       mcp->flags = 0;
41987 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
41988 +
41989 +       /* Load second segment - if necessary */
41990 +       if (normalized && (rval == QL_STATUS_SUCCESS)) {
41991 +               risc_addr += req_len;
41992 +               mcp->mb[0] = MBC_LOAD_RAM_EXTENDED;
41993 +               mcp->mb[1] = LSW(risc_addr);
41994 +               mcp->mb[2] = MSW(nml_dma);
41995 +               mcp->mb[3] = LSW(nml_dma);
41996 +               mcp->mb[4] = (uint16_t)nml_len;
41997 +               mcp->mb[6] = MSW(MSD(nml_dma));
41998 +               mcp->mb[7] = LSW(MSD(nml_dma));
41999 +               mcp->mb[8] = MSW(risc_addr);
42000 +
42001 +               mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
42002 +               mcp->in_mb = MBX_0;
42003 +               mcp->tov = 30;
42004 +               mcp->flags = 0;
42005 +               rval = (int)qla2x00_mailbox_command(ha, mcp);
42006 +       }
42007 +
42008 +       if (rval != QL_STATUS_SUCCESS) {
42009 +               /*EMPTY*/
42010 +               DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n",
42011 +                   __func__, ha->host_no, rval, mcp->mb[0]));
42012 +       } else {
42013 +               /*EMPTY*/
42014 +               DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42015 +       }
42016 +
42017 +       return rval;
42018 +}
42019 +
42020 +/*
42021 + * qla2x00_execute_fw
42022 + *     Start adapter firmware.
42023 + *
42024 + * Input:
42025 + *     ha = adapter block pointer.
42026 + *     TARGET_QUEUE_LOCK must be released.
42027 + *     ADAPTER_STATE_LOCK must be released.
42028 + *
42029 + * Returns:
42030 + *     qla2x00 local function return status code.
42031 + *
42032 + * Context:
42033 + *     Kernel context.
42034 + */
42035 +int
42036 +qla2x00_execute_fw(scsi_qla_host_t *ha)
42037 +{
42038 +       int rval;
42039 +       mbx_cmd_t mc;
42040 +       mbx_cmd_t *mcp = &mc;
42041 +
42042 +       DEBUG11(printk("qla2x00_execute_fw(%ld): entered.\n",
42043 +           ha->host_no);)
42044 +
42045 +       mcp->mb[0] = MBC_EXECUTE_FIRMWARE;
42046 +       mcp->mb[1] = *ha->brd_info->fwinfo[0].fwstart;
42047 +       mcp->out_mb = MBX_1|MBX_0;
42048 +       if (ha->pdev->device == QLA2322_DEVICE_ID) {
42049 +               mcp->mb[2] = 0;
42050 +               mcp->out_mb |= MBX_2;
42051 +       }
42052 +       mcp->in_mb = MBX_0;
42053 +       mcp->tov = 30;
42054 +       mcp->flags = 0;
42055 +       rval = qla2x00_mailbox_command(ha, mcp);
42056 +
42057 +       DEBUG11(printk("qla2x00_execute_fw(%ld): done.\n",
42058 +           ha->host_no);)
42059 +
42060 +       return rval;
42061 +}
42062 +
42063 +/*
42064 + * qla2x00_get_fw_version
42065 + *     Get firmware version.
42066 + *
42067 + * Input:
42068 + *     ha:             adapter state pointer.
42069 + *     major:          pointer for major number.
42070 + *     minor:          pointer for minor number.
42071 + *     subminor:       pointer for subminor number.
42072 + *
42073 + * Returns:
42074 + *     qla2x00 local function return status code.
42075 + *
42076 + * Context:
42077 + *     Kernel context.
42078 + */
42079 +void
42080 +qla2x00_get_fw_version(scsi_qla_host_t *ha, uint16_t *major,
42081 +    uint16_t *minor, uint16_t *subminor, uint16_t *attributes)
42082 +{
42083 +       int             rval;
42084 +       mbx_cmd_t       mc;
42085 +       mbx_cmd_t       *mcp = &mc;
42086 +
42087 +       DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
42088 +
42089 +       mcp->mb[0] = MBC_ABOUT_FIRMWARE;
42090 +       mcp->out_mb = MBX_0;
42091 +       mcp->in_mb = MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
42092 +       mcp->flags = 0;
42093 +       mcp->tov = 30;
42094 +       rval = qla2x00_mailbox_command(ha, mcp);
42095 +
42096 +       /* Return mailbox data. */
42097 +       *major = mcp->mb[1];
42098 +       *minor = mcp->mb[2];
42099 +       *subminor = mcp->mb[3];
42100 +       *attributes = mcp->mb[6];
42101 +
42102 +       if (rval != QL_STATUS_SUCCESS) {
42103 +               /*EMPTY*/
42104 +               DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
42105 +                   __func__, ha->host_no, rval));
42106 +       } else {
42107 +               /*EMPTY*/
42108 +               DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42109 +       }
42110 +}
42111 +
42112 +/*
42113 + * qla2x00_get_fw_options
42114 + *     Set firmware options.
42115 + *
42116 + * Input:
42117 + *     ha = adapter block pointer.
42118 + *     fwopt = pointer for firmware options.
42119 + *
42120 + * Returns:
42121 + *     qla2x00 local function return status code.
42122 + *
42123 + * Context:
42124 + *     Kernel context.
42125 + */
42126 +int
42127 +qla2x00_get_fw_options(scsi_qla_host_t *ha,
42128 +    uint16_t *fwopts1, uint16_t *fwopts2, uint16_t *fwopts3)
42129 +{
42130 +       int rval;
42131 +       mbx_cmd_t mc;
42132 +       mbx_cmd_t *mcp = &mc;
42133 +
42134 +       DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
42135 +
42136 +       mcp->mb[0] = MBC_GET_FIRMWARE_OPTIONS;
42137 +       mcp->out_mb = MBX_0;
42138 +       mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
42139 +       mcp->tov = 30;
42140 +       mcp->flags = 0;
42141 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42142 +
42143 +       if (rval != QL_STATUS_SUCCESS) {
42144 +               /*EMPTY*/
42145 +               DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
42146 +                   __func__, ha->host_no, rval));
42147 +       } else {
42148 +               *fwopts1 = mcp->mb[1];
42149 +               *fwopts2 = mcp->mb[2];
42150 +               *fwopts3 = mcp->mb[3];
42151 +
42152 +               DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42153 +       }
42154 +
42155 +       return rval;
42156 +}
42157 +
42158 +
42159 +/*
42160 + * qla2x00_set_fw_options
42161 + *     Set firmware options.
42162 + *
42163 + * Input:
42164 + *     ha = adapter block pointer.
42165 + *     fwopt = pointer for firmware options.
42166 + *
42167 + * Returns:
42168 + *     qla2x00 local function return status code.
42169 + *
42170 + * Context:
42171 + *     Kernel context.
42172 + */
42173 +int
42174 +qla2x00_set_fw_options(scsi_qla_host_t *ha,
42175 +    uint16_t fwopts1, uint16_t fwopts2, uint16_t fwopts3, 
42176 +    uint16_t fwopts10, uint16_t fwopts11)
42177 +{
42178 +       int rval;
42179 +       mbx_cmd_t mc;
42180 +       mbx_cmd_t *mcp = &mc;
42181 +
42182 +       DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
42183 +
42184 +       mcp->mb[0] = MBC_SET_FIRMWARE_OPTIONS;
42185 +       mcp->mb[1] = fwopts1;
42186 +       mcp->mb[2] = fwopts2;
42187 +       mcp->mb[3] = fwopts3;
42188 +       mcp->mb[10] = fwopts10;
42189 +       mcp->mb[11] = fwopts11;
42190 +       mcp->mb[12] = 0;        /* Undocumented, but used */
42191 +       mcp->out_mb = MBX_12|MBX_11|MBX_10|MBX_3|MBX_2|MBX_1|MBX_0;
42192 +       mcp->in_mb = MBX_0;
42193 +       mcp->tov = 30;
42194 +       mcp->flags = 0;
42195 +
42196 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42197 +
42198 +       if (rval != QL_STATUS_SUCCESS) {
42199 +               /*EMPTY*/
42200 +               DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
42201 +                   __func__, ha->host_no, rval));
42202 +       } else {
42203 +               /*EMPTY*/
42204 +               DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42205 +       }
42206 +
42207 +       return rval;
42208 +}
42209 +
42210 +/*
42211 + * qla2x00_read_ram_word
42212 + *
42213 + * Input:
42214 + *     ha = adapter block pointer.
42215 + *
42216 + * Returns:
42217 + *     qla2x00 local function return status code.
42218 + *
42219 + * Context:
42220 + *     Kernel context.
42221 + */
42222 +int
42223 +qla2x00_read_ram_word(scsi_qla_host_t *ha, uint16_t addr, uint16_t *data)
42224 +{
42225 +       int rval;
42226 +       mbx_cmd_t mc;
42227 +       mbx_cmd_t *mcp = &mc;
42228 +
42229 +       DEBUG11(printk("qla2x00_read_ram_word(%ld): entered.\n",
42230 +           ha->host_no);)
42231 +
42232 +       mcp->mb[0] = MBC_READ_RAM_WORD;
42233 +       mcp->mb[1] = addr;
42234 +
42235 +       mcp->out_mb = MBX_1|MBX_0;
42236 +       mcp->in_mb = MBX_0|MBX_2;
42237 +       mcp->tov = 30;
42238 +       mcp->flags = 0;
42239 +
42240 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42241 +
42242 +       if (rval != QL_STATUS_SUCCESS) {
42243 +               /*EMPTY*/
42244 +               DEBUG2_3_11(printk("qla2x00_read_ram_word(%ld): failed=%x.\n",
42245 +                   ha->host_no, rval);)
42246 +       } else {
42247 +               *data = mcp->mb[2];
42248 +               DEBUG11(printk("qla2x00_read_ram_word(%ld): done.\n",
42249 +                   ha->host_no);)
42250 +       }
42251 +
42252 +       return rval;
42253 +}
42254 +
42255 +/*
42256 + * qla2x00_write_ram_word
42257 + *
42258 + * Input:
42259 + *     ha = adapter block pointer.
42260 + *
42261 + * Returns:
42262 + *     qla2x00 local function return status code.
42263 + *
42264 + * Context:
42265 + *     Kernel context.
42266 + */
42267 +int
42268 +qla2x00_write_ram_word(scsi_qla_host_t *ha, uint16_t addr, uint16_t data)
42269 +{
42270 +       int rval;
42271 +       mbx_cmd_t mc;
42272 +       mbx_cmd_t *mcp = &mc;
42273 +
42274 +       DEBUG11(printk("qla2x00_write_ram_word(%ld): entered.\n",
42275 +           ha->host_no);)
42276 +
42277 +       mcp->mb[0] = MBC_WRITE_RAM_WORD;
42278 +       mcp->mb[1] = addr;
42279 +       mcp->mb[2] = data;
42280 +       mcp->out_mb = MBX_2|MBX_1|MBX_0;
42281 +       mcp->in_mb = MBX_0;
42282 +       mcp->tov = 30;
42283 +       mcp->flags = 0;
42284 +
42285 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42286 +
42287 +       if (rval != QL_STATUS_SUCCESS) {
42288 +               /*EMPTY*/
42289 +               DEBUG2_3_11(printk("qla2x00_write_ram_word(%ld): failed=%x.\n",
42290 +                   ha->host_no, rval);)
42291 +       } else {
42292 +               /*EMPTY*/
42293 +               DEBUG11(printk("qla2x00_write_ram_word(%ld): done.\n",
42294 +                   ha->host_no);)
42295 +       }
42296 +
42297 +       return rval;
42298 +}
42299 +
42300 +/*
42301 + * qla2x00_write_ram_word_ext
42302 + *
42303 + * Input:
42304 + *     ha = adapter block pointer.
42305 + *
42306 + * Returns:
42307 + *     qla2x00 local function return status code.
42308 + *
42309 + * Context:
42310 + *     Kernel context.
42311 + */
42312 +int
42313 +qla2x00_write_ram_word_ext(scsi_qla_host_t *ha, uint32_t addr, uint16_t data)
42314 +{
42315 +       int rval;
42316 +       mbx_cmd_t mc;
42317 +       mbx_cmd_t *mcp = &mc;
42318 +
42319 +       DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
42320 +
42321 +       mcp->mb[0] = MBC_WRITE_RAM_WORD_EXTENDED;
42322 +       mcp->mb[1] = LSW(addr);
42323 +       mcp->mb[2] = data;
42324 +       mcp->mb[8] = MSW(addr);
42325 +       mcp->out_mb = MBX_8|MBX_2|MBX_1|MBX_0;
42326 +       mcp->in_mb = MBX_0;
42327 +       mcp->tov = 30;
42328 +       mcp->flags = 0;
42329 +
42330 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42331 +
42332 +       if (rval != QL_STATUS_SUCCESS) {
42333 +               /*EMPTY*/
42334 +               DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
42335 +                   __func__, ha->host_no, rval));
42336 +       } else {
42337 +               /*EMPTY*/
42338 +               DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42339 +       }
42340 +
42341 +       return rval;
42342 +}
42343 +
42344 +/*
42345 + * qla2x00_mbx_reg_test
42346 + *     Mailbox register wrap test.
42347 + *
42348 + * Input:
42349 + *     ha = adapter block pointer.
42350 + *     TARGET_QUEUE_LOCK must be released.
42351 + *     ADAPTER_STATE_LOCK must be released.
42352 + *
42353 + * Returns:
42354 + *     qla2x00 local function return status code.
42355 + *
42356 + * Context:
42357 + *     Kernel context.
42358 + */
42359 +int
42360 +qla2x00_mbx_reg_test(scsi_qla_host_t *ha)
42361 +{
42362 +       int rval;
42363 +       mbx_cmd_t mc;
42364 +       mbx_cmd_t *mcp = &mc;
42365 +
42366 +       DEBUG11(printk("qla2x00_mbx_reg_test(%ld): entered.\n",
42367 +           ha->host_no);)
42368 +
42369 +       mcp->mb[0] = MBC_MAILBOX_REGISTER_TEST;
42370 +       mcp->mb[1] = 0xAAAA;
42371 +       mcp->mb[2] = 0x5555;
42372 +       mcp->mb[3] = 0xAA55;
42373 +       mcp->mb[4] = 0x55AA;
42374 +       mcp->mb[5] = 0xA5A5;
42375 +       mcp->mb[6] = 0x5A5A;
42376 +       mcp->mb[7] = 0x2525;
42377 +       mcp->out_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
42378 +       mcp->in_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
42379 +       mcp->tov = 30;
42380 +       mcp->flags = 0;
42381 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42382 +
42383 +       if (rval == QL_STATUS_SUCCESS) {
42384 +               if (mcp->mb[1] != 0xAAAA || mcp->mb[2] != 0x5555 ||
42385 +                   mcp->mb[3] != 0xAA55 || mcp->mb[4] != 0x55AA)
42386 +                       rval = QL_STATUS_ERROR;
42387 +               if (mcp->mb[5] != 0xA5A5 || mcp->mb[6] != 0x5A5A ||
42388 +                   mcp->mb[7] != 0x2525)
42389 +                       rval = QL_STATUS_ERROR;
42390 +       }
42391 +
42392 +       if (rval != QL_STATUS_SUCCESS) {
42393 +               /*EMPTY*/
42394 +               DEBUG2_3_11(printk("qla2x00_mbx_reg_test(%ld): failed=%x.\n",
42395 +                   ha->host_no, rval);)
42396 +       } else {
42397 +               /*EMPTY*/
42398 +               DEBUG11(printk("qla2x00_mbx_reg_test(%ld): done.\n",
42399 +                   ha->host_no);)
42400 +       }
42401 +
42402 +       return rval;
42403 +}
42404 +
42405 +/*
42406 + * qla2x00_verify_checksum
42407 + *     Verify firmware checksum.
42408 + *
42409 + * Input:
42410 + *     ha = adapter block pointer.
42411 + *     TARGET_QUEUE_LOCK must be released.
42412 + *     ADAPTER_STATE_LOCK must be released.
42413 + *
42414 + * Returns:
42415 + *     qla2x00 local function return status code.
42416 + *
42417 + * Context:
42418 + *     Kernel context.
42419 + */
42420 +int
42421 +qla2x00_verify_checksum(scsi_qla_host_t *ha)
42422 +{
42423 +       int rval;
42424 +       mbx_cmd_t mc;
42425 +       mbx_cmd_t *mcp = &mc;
42426 +
42427 +       DEBUG11(printk("qla2x00_verify_checksum(%ld): entered.\n",
42428 +           ha->host_no);)
42429 +
42430 +       mcp->mb[0] = MBC_VERIFY_CHECKSUM;
42431 +       mcp->mb[1] = *ha->brd_info->fwinfo[0].fwstart;
42432 +       mcp->out_mb = MBX_1|MBX_0;
42433 +       mcp->in_mb = MBX_2|MBX_0;
42434 +       mcp->tov = 30;
42435 +       mcp->flags = 0;
42436 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42437 +
42438 +       if (rval != QL_STATUS_SUCCESS) {
42439 +               /*EMPTY*/
42440 +               DEBUG2_3_11(printk("qla2x00_verify_checksum(%ld): failed=%x.\n",
42441 +                   ha->host_no, rval);)
42442 +       } else {
42443 +               /*EMPTY*/
42444 +               DEBUG11(printk("qla2x00_verify_checksum(%ld): done.\n",
42445 +                   ha->host_no);)
42446 +       }
42447 +
42448 +       return rval;
42449 +}
42450 +
42451 +/*
42452 + * qla2x00_issue_iocb
42453 + *     Issue IOCB using mailbox command
42454 + *
42455 + * Input:
42456 + *     ha = adapter state pointer.
42457 + *     buffer = buffer pointer.
42458 + *     phys_addr = physical address of buffer.
42459 + *     size = size of buffer.
42460 + *     TARGET_QUEUE_LOCK must be released.
42461 + *     ADAPTER_STATE_LOCK must be released.
42462 + *
42463 + * Returns:
42464 + *     qla2x00 local function return status code.
42465 + *
42466 + * Context:
42467 + *     Kernel context.
42468 + */
42469 +int
42470 +qla2x00_issue_iocb(scsi_qla_host_t *ha, void*  buffer, dma_addr_t phys_addr,
42471 +    size_t size)
42472 +{
42473 +       int             rval;
42474 +       mbx_cmd_t       mc;
42475 +       mbx_cmd_t       *mcp = &mc;
42476 +
42477 +       ENTER("qla2x00_issue_iocb: started");
42478 +
42479 +       mcp->mb[0] = MBC_IOCB_EXECUTE_A64;
42480 +       mcp->mb[1] = 0;
42481 +       mcp->mb[2] = MSW(phys_addr);
42482 +       mcp->mb[3] = LSW(phys_addr);
42483 +       mcp->mb[6] = MSW(MSD(phys_addr));
42484 +       mcp->mb[7] = LSW(MSD(phys_addr));
42485 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
42486 +       mcp->in_mb = MBX_2|MBX_0;
42487 +       mcp->tov = 30;
42488 +       mcp->flags = 0;
42489 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42490 +
42491 +       if (rval != QLA2X00_SUCCESS) {
42492 +               /*EMPTY*/
42493 +               DEBUG(printk("qla2x00_issue_iocb(%ld): failed rval 0x%x",
42494 +                   ha->host_no,rval);)
42495 +               DEBUG2(printk("qla2x00_issue_iocb(%ld): failed rval 0x%x",
42496 +                   ha->host_no,rval);)
42497 +       } else {
42498 +               /*EMPTY*/
42499 +               LEAVE("qla2x00_issue_iocb: exiting normally");
42500 +       }
42501 +
42502 +       return rval;
42503 +}
42504 +
42505 +/*
42506 + * qla2x00_abort_command
42507 + *     Abort command aborts a specified IOCB.
42508 + *
42509 + * Input:
42510 + *     ha = adapter block pointer.
42511 + *     sp = SB structure pointer.
42512 + *
42513 + * Returns:
42514 + *     qla2x00 local function return status code.
42515 + *
42516 + * Context:
42517 + *     Kernel context.
42518 + */
42519 +int
42520 +qla2x00_abort_command(scsi_qla_host_t *ha, srb_t *sp)
42521 +{
42522 +       unsigned long   flags = 0;
42523 +       scsi_qla_host_t *curr_ha;
42524 +       fc_port_t       *fcport;
42525 +       int             rval;
42526 +       uint32_t        handle;
42527 +       uint16_t        t;
42528 +       mbx_cmd_t       mc;
42529 +       mbx_cmd_t       *mcp = &mc;
42530 +       os_lun_t        *lq = sp->lun_queue;
42531 +
42532 +       DEBUG11(printk("qla2x00_abort_command(%ld): entered.\n",
42533 +           ha->host_no);)
42534 +
42535 +       curr_ha = lq->fclun->fcport->ha;
42536 +       t = SCSI_TCN_32(sp->cmd);
42537 +       fcport = lq->fclun->fcport;
42538 +       if (curr_ha->loop_state == LOOP_DOWN ||
42539 +               atomic_read(&fcport->state) == FC_DEVICE_LOST) {
42540 +               /* v2.19.8 Ignore abort request if port is down */
42541 +               return 1;
42542 +       }
42543 +
42544 +       spin_lock_irqsave(&ha->hardware_lock, flags);
42545 +       for (handle = 1; handle < MAX_OUTSTANDING_COMMANDS; handle++) {
42546 +               if( ha->outstanding_cmds[handle] == sp )
42547 +                       break;
42548 +       }
42549 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
42550 +
42551 +       if (handle == MAX_OUTSTANDING_COMMANDS) {
42552 +               /* command not found */
42553 +               return QL_STATUS_ERROR;
42554 +       }
42555 +
42556 +       mcp->mb[0] = MBC_ABORT_COMMAND;
42557 +#if defined(EXTENDED_IDS)
42558 +       mcp->mb[1] = fcport->loop_id & 0xFF;
42559 +#else
42560 +       mcp->mb[1] = fcport->loop_id << 8;
42561 +#endif
42562 +       mcp->mb[2] = (uint16_t)handle;
42563 +       mcp->mb[3] = (uint16_t)(handle >> 16);
42564 +       mcp->mb[6] = (uint16_t)lq->fclun->lun;
42565 +       mcp->out_mb = MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
42566 +       mcp->in_mb = MBX_0;
42567 +       mcp->tov = 30;
42568 +       mcp->flags = 0;
42569 +
42570 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42571 +
42572 +       if (rval != QL_STATUS_SUCCESS) {
42573 +               DEBUG2_3_11(printk("qla2x00_abort_command(%ld): failed=%x.\n",
42574 +                   ha->host_no, rval);)
42575 +       } else {
42576 +               sp->flags |= SRB_ABORT_PENDING;
42577 +               DEBUG11(printk("qla2x00_abort_command(%ld): done.\n",
42578 +                   ha->host_no);)
42579 +       }
42580 +
42581 +       return rval;
42582 +}
42583 +
42584 +/*
42585 + * qla2x00_abort_device
42586 + *
42587 + * Input:
42588 + *     ha = adapter block pointer.
42589 + *      loop_id  = FC loop ID
42590 + *      lun  = SCSI LUN.
42591 + *
42592 + * Returns:
42593 + *     qla2x00 local function return status code.
42594 + *
42595 + * Context:
42596 + *     Kernel context.
42597 + */
42598 +int
42599 +qla2x00_abort_device(scsi_qla_host_t *ha, uint16_t loop_id, uint16_t lun)
42600 +{
42601 +       int rval;
42602 +       mbx_cmd_t mc;
42603 +       mbx_cmd_t *mcp = &mc;
42604 +
42605 +       DEBUG11(printk("qla2x00_abort_device(%ld): entered.\n",
42606 +                       ha->host_no);)
42607 +
42608 +       mcp->mb[0] = MBC_ABORT_DEVICE;
42609 +#if defined(EXTENDED_IDS)
42610 +       mcp->mb[1] = loop_id & 0xFF;
42611 +#else
42612 +       mcp->mb[1] = loop_id << 8;
42613 +#endif
42614 +       mcp->mb[2] = lun;
42615 +       mcp->out_mb = MBX_2|MBX_1|MBX_0;
42616 +       mcp->in_mb = MBX_0;
42617 +       mcp->tov = 30;
42618 +       mcp->flags = 0;
42619 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42620 +
42621 +       /* Issue marker command. */
42622 +       qla2x00_marker(ha, loop_id, lun, MK_SYNC_ID_LUN);
42623 +
42624 +       if (rval != QL_STATUS_SUCCESS) {
42625 +               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
42626 +               if (ha->dpc_wait && !ha->dpc_active) 
42627 +                       up(ha->dpc_wait);
42628 +               DEBUG2_3_11(printk("qla2x00_abort_device(%ld): failed=%x.\n",
42629 +                   ha->host_no, rval);)
42630 +       } else {
42631 +               /*EMPTY*/
42632 +               DEBUG11(printk("qla2x00_abort_device(%ld): done.\n",
42633 +                   ha->host_no);)
42634 +       }
42635 +
42636 +       return rval;
42637 +}
42638 +
42639 +#if USE_ABORT_TGT
42640 +/*
42641 + * qla2x00_abort_target
42642 + *     Issue abort target mailbox command.
42643 + *
42644 + * Input:
42645 + *     ha = adapter block pointer.
42646 + *     b = Always 0.
42647 + *     t = SCSI ID.
42648 + *     TARGET_QUEUE_LOCK must be released.
42649 + *     ADAPTER_STATE_LOCK must be released.
42650 + *
42651 + * Returns:
42652 + *     qla2x00 local function return status code.
42653 + *
42654 + * Context:
42655 + *     Kernel context.
42656 + */
42657 +int
42658 +qla2x00_abort_target(fc_port_t *fcport)
42659 +{
42660 +       int        rval;
42661 +       uint16_t   loop_id;
42662 +       mbx_cmd_t  mc;
42663 +       mbx_cmd_t  *mcp = &mc;
42664 +
42665 +       DEBUG11(printk("qla2x00_abort_target(%ld): entered.\n",
42666 +           fcport->ha->host_no);)
42667 +
42668 +       if (fcport == NULL) {
42669 +               /* no target to abort */
42670 +               return 0;
42671 +       }
42672 +
42673 +       loop_id = fcport->loop_id;
42674 +
42675 +       mcp->mb[0] = MBC_ABORT_TARGET;
42676 +#if defined(EXTENDED_IDS)
42677 +       mcp->mb[1] = loop_id & 0xFF;
42678 +#else
42679 +       mcp->mb[1] = loop_id << 8;
42680 +#endif
42681 +       mcp->mb[2] = fcport->ha->loop_reset_delay;
42682 +       mcp->out_mb = MBX_2|MBX_1|MBX_0;
42683 +#if defined(EXTENDED_IDS)
42684 +       mcp->mb[10] = 0;
42685 +       mcp->out_mb |= MBX_10;
42686 +#endif
42687 +       mcp->in_mb = MBX_0;
42688 +       mcp->tov = 30;
42689 +       mcp->flags = 0;
42690 +       rval = (int)qla2x00_mailbox_command(fcport->ha, mcp);
42691 +
42692 +       /* Issue marker command. */
42693 +/*     qla2x00_marker(fcport->ha, loop_id, 0, MK_SYNC_ID);*/
42694 +       fcport->ha->marker_needed = 1;
42695 +
42696 +       if (rval != QL_STATUS_SUCCESS) {
42697 +/*             set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
42698 +               if (ha->dpc_wait && !ha->dpc_active) 
42699 +                       up(ha->dpc_wait); */
42700 +               DEBUG2_3_11(printk("qla2x00_abort_target(%ld): failed=%x.\n",
42701 +                   fcport->ha->host_no, rval);)
42702 +       } else {
42703 +               /*EMPTY*/
42704 +               DEBUG11(printk("qla2x00_abort_target(%ld): done.\n",
42705 +                   fcport->ha->host_no);)
42706 +       }
42707 +
42708 +       return rval;
42709 +}
42710 +#endif
42711 +
42712 +/*
42713 + * qla2x00_target_reset
42714 + *     Issue target reset mailbox command.
42715 + *
42716 + * Input:
42717 + *     ha = adapter block pointer.
42718 + *     TARGET_QUEUE_LOCK must be released.
42719 + *     ADAPTER_STATE_LOCK must be released.
42720 + *
42721 + * Returns:
42722 + *     qla2x00 local function return status code.
42723 + *
42724 + * Context:
42725 + *     Kernel context.
42726 + */
42727 +int
42728 +qla2x00_target_reset(scsi_qla_host_t *ha, uint16_t b, uint16_t t)
42729 +{
42730 +       int rval;
42731 +       mbx_cmd_t mc;
42732 +       mbx_cmd_t *mcp = &mc;
42733 +       os_tgt_t *tgt;
42734 +
42735 +       DEBUG11(printk("qla2x00_target_reset(%ld): entered.\n", ha->host_no);)
42736 +
42737 +       tgt = TGT_Q(ha, t);
42738 +       if (tgt->vis_port == NULL) {
42739 +               /* no target to abort */
42740 +               return 0;
42741 +       }
42742 +       if (atomic_read(&tgt->vis_port->state) != FC_ONLINE) {
42743 +               /* target not online */
42744 +               return 0;
42745 +       }
42746 +
42747 +       mcp->mb[0] = MBC_TARGET_RESET;
42748 +#if defined(EXTENDED_IDS)
42749 +       mcp->mb[1] = tgt->vis_port->loop_id & 0xFF;
42750 +#else
42751 +       mcp->mb[1] = tgt->vis_port->loop_id << 8;
42752 +#endif
42753 +       mcp->mb[2] = ha->loop_reset_delay;
42754 +       mcp->out_mb = MBX_2|MBX_1|MBX_0;
42755 +       mcp->in_mb = MBX_0;
42756 +       mcp->tov = 30;
42757 +       mcp->flags = 0;
42758 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42759 +
42760 +       if (rval != QL_STATUS_SUCCESS) {
42761 +               /*EMPTY*/
42762 +               DEBUG2_3_11(printk("qla2x00_target_reset(%ld): failed=%x.\n",
42763 +                   ha->host_no, rval);)
42764 +       } else {
42765 +               /*EMPTY*/
42766 +               DEBUG11(printk("qla2x00_target_reset(%ld): done.\n",
42767 +                   ha->host_no);)
42768 +       }
42769 +
42770 +       return rval;
42771 +}
42772 +
42773 +/*
42774 + * qla2x00_get_adapter_id
42775 + *     Get adapter ID and topology.
42776 + *
42777 + * Input:
42778 + *     ha = adapter block pointer.
42779 + *     id = pointer for loop ID.
42780 + *     al_pa = pointer for AL_PA.
42781 + *     area = pointer for area.
42782 + *     domain = pointer for domain.
42783 + *     top = pointer for topology.
42784 + *     TARGET_QUEUE_LOCK must be released.
42785 + *     ADAPTER_STATE_LOCK must be released.
42786 + *
42787 + * Returns:
42788 + *     qla2x00 local function return status code.
42789 + *
42790 + * Context:
42791 + *     Kernel context.
42792 + */
42793 +int
42794 +qla2x00_get_adapter_id(scsi_qla_host_t *ha, uint16_t *id, uint8_t *al_pa,
42795 +    uint8_t *area, uint8_t *domain, uint16_t *top)
42796 +{
42797 +       int rval;
42798 +       mbx_cmd_t mc;
42799 +       mbx_cmd_t *mcp = &mc;
42800 +
42801 +       DEBUG11(printk("qla2x00_get_adapter_id(%ld): entered.\n",
42802 +           ha->host_no);)
42803 +
42804 +       mcp->mb[0] = MBC_GET_ADAPTER_LOOP_ID;
42805 +       mcp->out_mb = MBX_0;
42806 +       mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
42807 +       mcp->tov = 30;
42808 +       mcp->flags = 0;
42809 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42810 +
42811 +       /* Return data. */
42812 +       *id = mcp->mb[1];
42813 +       *al_pa = LSB(mcp->mb[2]);
42814 +       *area = MSB(mcp->mb[2]);
42815 +       *domain = LSB(mcp->mb[3]);
42816 +       *top = mcp->mb[6];
42817 +
42818 +       if (rval != QL_STATUS_SUCCESS) {
42819 +               /*EMPTY*/
42820 +               DEBUG2_3_11(printk("qla2x00_get_adapter_id(%ld): failed=%x.\n",
42821 +                   ha->host_no, rval);)
42822 +       } else {
42823 +               /*EMPTY*/
42824 +               DEBUG11(printk("qla2x00_get_adapter_id(%ld): done.\n",
42825 +                   ha->host_no);)
42826 +       }
42827 +
42828 +       return rval;
42829 +}
42830 +
42831 +/*
42832 + * qla2x00_get_retry_cnt
42833 + *     Get current firmware login retry count and delay.
42834 + *
42835 + * Input:
42836 + *     ha = adapter block pointer.
42837 + *     retry_cnt = pointer to login retry count.
42838 + *     tov = pointer to login timeout value.
42839 + *
42840 + * Returns:
42841 + *     qla2x00 local function return status code.
42842 + *
42843 + * Context:
42844 + *     Kernel context.
42845 + */
42846 +int
42847 +qla2x00_get_retry_cnt(scsi_qla_host_t *ha, uint8_t *retry_cnt, uint8_t *tov)
42848 +{
42849 +       int rval;
42850 +       uint16_t ratov;
42851 +       mbx_cmd_t mc;
42852 +       mbx_cmd_t *mcp = &mc;
42853 +
42854 +       DEBUG11(printk("qla2x00_get_retry_cnt(%ld): entered.\n",
42855 +                       ha->host_no);)
42856 +
42857 +       mcp->mb[0] = MBC_GET_RETRY_COUNT;
42858 +       mcp->out_mb = MBX_0;
42859 +       mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
42860 +       mcp->tov = 30;
42861 +       mcp->flags = 0;
42862 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42863 +
42864 +       if (rval != QL_STATUS_SUCCESS) {
42865 +               /*EMPTY*/
42866 +               DEBUG2_3_11(printk("qla2x00_get_retry_cnt(%ld): failed = %x.\n",
42867 +                   ha->host_no, mcp->mb[0]);)
42868 +       } else {
42869 +               /* Convert returned data and check our values. */
42870 +               ratov = (mcp->mb[3]/2) / 10;  /* mb[3] value is in 100ms */
42871 +               if (mcp->mb[1] * ratov > (*retry_cnt) * (*tov)) {
42872 +                       /* Update to the larger values */
42873 +                       *retry_cnt = (uint8_t)mcp->mb[1];
42874 +                       *tov = ratov;
42875 +               }
42876 +
42877 +               DEBUG11(printk("qla2x00_get_retry_cnt(%ld): done. mb3=%d "
42878 +                   "ratov=%d.\n", ha->host_no, mcp->mb[3], ratov);)
42879 +       }
42880 +
42881 +       return rval;
42882 +}
42883 +
42884 +/*
42885 + * qla2x00_loopback_test
42886 + *     Send out a LOOPBACK mailbox command.
42887 + *
42888 + * Input:
42889 + *     ha = adapter block pointer.
42890 + *     retry_cnt = pointer to login retry count.
42891 + *     tov = pointer to login timeout value.
42892 + *
42893 + * Returns:
42894 + *     qla2x00 local function return status code.
42895 + *
42896 + * Context:
42897 + *     Kernel context.
42898 + */
42899 +int
42900 +qla2x00_loopback_test(scsi_qla_host_t *ha, INT_LOOPBACK_REQ *req,
42901 +    uint16_t *ret_mb)
42902 +{
42903 +       int             rval;
42904 +       mbx_cmd_t       mc;
42905 +       mbx_cmd_t       *mcp = &mc;
42906 +
42907 +       memset(mcp->mb, 0 , sizeof(mcp->mb));
42908 +
42909 +       mcp->mb[0] = MBC_DIAGNOSTIC_LOOP_BACK;
42910 +       mcp->mb[1] = req->Options;
42911 +       mcp->mb[10] = LSW(req->TransferCount);
42912 +       mcp->mb[11] = MSW(req->TransferCount);
42913 +
42914 +       mcp->mb[14] = LSW(ha->ioctl_mem_phys); /* send data address */
42915 +       mcp->mb[15] = MSW(ha->ioctl_mem_phys);
42916 +       mcp->mb[20] = LSW(MSD(ha->ioctl_mem_phys));
42917 +       mcp->mb[21] = MSW(MSD(ha->ioctl_mem_phys));
42918 +
42919 +       mcp->mb[16] = LSW(ha->ioctl_mem_phys); /* rcv data address */
42920 +       mcp->mb[17] = MSW(ha->ioctl_mem_phys);
42921 +       mcp->mb[6] = LSW(MSD(ha->ioctl_mem_phys));
42922 +       mcp->mb[7] = MSW(MSD(ha->ioctl_mem_phys));
42923 +
42924 +       mcp->mb[18] = LSW(req->IterationCount); /* iteration count lsb */
42925 +       mcp->mb[19] = MSW(req->IterationCount); /* iteration count msb */
42926 +
42927 +       mcp->out_mb = MBX_21|MBX_20|MBX_19|MBX_18|MBX_17|MBX_16|MBX_15|
42928 +               MBX_14|MBX_13|MBX_12|MBX_11|MBX_10|MBX_7|MBX_6|MBX_1|MBX_0;
42929 +       mcp->in_mb = MBX_19|MBX_18|MBX_3|MBX_2|MBX_1|MBX_0;
42930 +       mcp->buf_size = req->TransferCount;
42931 +       mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD;
42932 +       mcp->tov = 30;
42933 +
42934 +       DEBUG11(printk("qla2x00_send_loopback: req.Options=%x iterations=%x "
42935 +           "MAILBOX_CNT=%d.\n", req->Options, req->IterationCount,
42936 +           MAILBOX_REGISTER_COUNT);)
42937 +
42938 +       rval = qla2x00_mailbox_command(ha, mcp);
42939 +
42940 +       /* Always copy back return mailbox values. */
42941 +       memcpy((void *)ret_mb, (void *)mcp->mb, sizeof(mcp->mb));
42942 +
42943 +       if (rval != QL_STATUS_SUCCESS) {
42944 +               /* Empty. */
42945 +               DEBUG2_3_11(printk(
42946 +                   "qla2x00_loopback_test(%ld): mailbox command FAILED=%x.\n",
42947 +                   ha->host_no, mcp->mb[0]);)
42948 +       } else {
42949 +               /* Empty. */
42950 +               DEBUG11(printk(
42951 +                   "qla2x00_loopback_test(%ld): done.\n", ha->host_no);)
42952 +       }
42953 +
42954 +       return rval;
42955 +}
42956 +
42957 +/*
42958 + * qla2x00_init_firmware
42959 + *     Initialize adapter firmware.
42960 + *
42961 + * Input:
42962 + *     ha = adapter block pointer.
42963 + *     dptr = Initialization control block pointer.
42964 + *     size = size of initialization control block.
42965 + *     TARGET_QUEUE_LOCK must be released.
42966 + *     ADAPTER_STATE_LOCK must be released.
42967 + *
42968 + * Returns:
42969 + *     qla2x00 local function return status code.
42970 + *
42971 + * Context:
42972 + *     Kernel context.
42973 + */
42974 +int
42975 +qla2x00_init_firmware(scsi_qla_host_t *ha, uint16_t size)
42976 +{
42977 +       int rval;
42978 +       mbx_cmd_t mc;
42979 +       mbx_cmd_t *mcp = &mc;
42980 +
42981 +       DEBUG11(printk("qla2x00_init_firmware(%ld): entered.\n",
42982 +           ha->host_no);)
42983 +
42984 +       mcp->mb[0] = MBC_INITIALIZE_FIRMWARE;
42985 +       mcp->mb[2] = MSW(ha->init_cb_dma);
42986 +       mcp->mb[3] = LSW(ha->init_cb_dma);
42987 +       mcp->mb[4] = 0;
42988 +       mcp->mb[5] = 0;
42989 +       mcp->mb[6] = MSW(MSD(ha->init_cb_dma));
42990 +       mcp->mb[7] = LSW(MSD(ha->init_cb_dma));
42991 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
42992 +       mcp->in_mb = MBX_5|MBX_4|MBX_0;
42993 +       mcp->buf_size = size;
42994 +       mcp->flags = MBX_DMA_OUT;
42995 +       mcp->tov = 30;
42996 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
42997 +
42998 +       if (rval != QL_STATUS_SUCCESS) {
42999 +               /*EMPTY*/
43000 +               DEBUG2_3_11(printk("qla2x00_init_firmware(%ld): failed=%x "
43001 +                   "mb0=%x.\n",
43002 +                   ha->host_no, rval, mcp->mb[0]);)
43003 +       } else {
43004 +               /*EMPTY*/
43005 +               DEBUG11(printk("qla2x00_init_firmware(%ld): done.\n",
43006 +                   ha->host_no);)
43007 +       }
43008 +
43009 +       return rval;
43010 +}
43011 +
43012 +/*
43013 + * qla2x00_get_port_database
43014 + *     Issue normal/enhanced get port database mailbox command
43015 + *     and copy device name as necessary.
43016 + *
43017 + * Input:
43018 + *     ha = adapter state pointer.
43019 + *     dev = structure pointer.
43020 + *     opt = enhanced cmd option byte.
43021 + *
43022 + * Returns:
43023 + *     qla2x00 local function return status code.
43024 + *
43025 + * Context:
43026 + *     Kernel context.
43027 + */
43028 +int
43029 +qla2x00_get_port_database(scsi_qla_host_t *ha, fcdev_t *dev, uint8_t opt)
43030 +{
43031 +       int rval;
43032 +       mbx_cmd_t mc;
43033 +       mbx_cmd_t *mcp = &mc;
43034 +       port_database_t *pd;
43035 +       dma_addr_t phys_address = 0;
43036 +
43037 +       DEBUG11(printk("qla2x00_get_port_database(%ld): entered.\n",
43038 +           ha->host_no);)
43039 +
43040 +       pd = pci_alloc_consistent(ha->pdev, PORT_DATABASE_SIZE, &phys_address);
43041 +       if (pd  == NULL) {
43042 +               DEBUG2_3_11(printk("qla2x00_get_port_database(%ld): **** "
43043 +                   "Mem Alloc Failed ****",
43044 +                   ha->host_no);)
43045 +               return QL_STATUS_RESOURCE_ERROR;
43046 +       }
43047 +
43048 +       memset(pd, 0, PORT_DATABASE_SIZE);
43049 +
43050 +       if (opt != 0)
43051 +               mcp->mb[0] = MBC_ENHANCED_GET_PORT_DATABASE;
43052 +       else
43053 +               mcp->mb[0] = MBC_GET_PORT_DATABASE;
43054 +
43055 +#if defined(EXTENDED_IDS)
43056 +       mcp->mb[1] = dev->loop_id & 0xFF;
43057 +#else
43058 +       mcp->mb[1] = dev->loop_id << 8 | opt;
43059 +#endif
43060 +       mcp->mb[2] = MSW(phys_address);
43061 +       mcp->mb[3] = LSW(phys_address);
43062 +       mcp->mb[6] = MSW(MSD(phys_address));
43063 +       mcp->mb[7] = LSW(MSD(phys_address));
43064 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43065 +#if defined(EXTENDED_IDS)
43066 +       mcp->mb[10] = opt;
43067 +       mcp->out_mb |= MBX_10;
43068 +#endif
43069 +       mcp->in_mb = MBX_0;
43070 +       mcp->buf_size = PORT_DATABASE_SIZE;
43071 +       mcp->flags = MBX_DMA_IN;
43072 +       /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/
43073 +       mcp->tov =  ha->login_timeout * 2;
43074 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43075 +
43076 +       if (rval == QL_STATUS_SUCCESS) {
43077 +               /* Save some data */
43078 +               /* Names are big endian. */
43079 +               memcpy((void *)&dev->name[0],(void *)&pd->node_name[0], 8);
43080 +               memcpy((void *)&dev->wwn[0], (void *)&pd->port_name[0], 8);
43081 +
43082 +               /* Get port_id of device. */
43083 +               dev->d_id.b.al_pa = pd->port_id[2];
43084 +               dev->d_id.b.area = pd->port_id[3];
43085 +               dev->d_id.b.domain = pd->port_id[0];
43086 +               dev->d_id.b.rsvd_1 = 0;
43087 +
43088 +               /* Get initiator status of device. */
43089 +               pd->prli_svc_param_word_3[0] & BIT_5 ?
43090 +                   (dev->flag = dev->flag | DEV_INITIATOR) :
43091 +                   (dev->flag = dev->flag & ~DEV_INITIATOR);
43092 +
43093 +               /* Check for logged in and whether target device. */
43094 +               if (pd->master_state != PD_STATE_PORT_LOGGED_IN &&
43095 +                   pd->slave_state != PD_STATE_PORT_LOGGED_IN) {
43096 +                       rval = QL_STATUS_ERROR;
43097 +               } else if (pd->master_state == PD_STATE_PORT_UNAVAILABLE) {
43098 +                       rval = QL_STATUS_ERROR;
43099 +               }
43100 +       }
43101 +
43102 +       pci_free_consistent(ha->pdev, PORT_DATABASE_SIZE, pd, phys_address);
43103 +
43104 +       if (rval != QL_STATUS_SUCCESS) {
43105 +               /*EMPTY*/
43106 +               DEBUG2_3_11(printk("qla2x00_get_port_database(%ld): "
43107 +                   "failed=%x.\n", ha->host_no, rval);)
43108 +       } else {
43109 +               /*EMPTY*/
43110 +               DEBUG11(printk("qla2x00_get_port_database(%ld): done.\n",
43111 +                   ha->host_no);)
43112 +       }
43113 +
43114 +       return rval;
43115 +}
43116 +
43117 +/*
43118 + * qla2x00_get_firmware_state
43119 + *     Get adapter firmware state.
43120 + *
43121 + * Input:
43122 + *     ha = adapter block pointer.
43123 + *     dptr = pointer for firmware state.
43124 + *     TARGET_QUEUE_LOCK must be released.
43125 + *     ADAPTER_STATE_LOCK must be released.
43126 + *
43127 + * Returns:
43128 + *     qla2x00 local function return status code.
43129 + *
43130 + * Context:
43131 + *     Kernel context.
43132 + */
43133 +int
43134 +qla2x00_get_firmware_state(scsi_qla_host_t *ha, uint16_t *dptr)
43135 +{
43136 +       int rval;
43137 +       mbx_cmd_t mc;
43138 +       mbx_cmd_t *mcp = &mc;
43139 +
43140 +       DEBUG11(printk("qla2x00_get_firmware_state(%ld): entered.\n",
43141 +           ha->host_no);)
43142 +
43143 +       mcp->mb[0] = MBC_GET_FIRMWARE_STATE;
43144 +       mcp->out_mb = MBX_0;
43145 +       mcp->in_mb = MBX_2|MBX_1|MBX_0;
43146 +       mcp->tov = 30;
43147 +       mcp->flags = 0;
43148 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43149 +
43150 +       /* Return firmware state. */
43151 +       *dptr = mcp->mb[1];
43152 +
43153 +       if (rval != QL_STATUS_SUCCESS) {
43154 +               /*EMPTY*/
43155 +               DEBUG2_3_11(printk("qla2x00_get_firmware_state(%ld): "
43156 +                   "failed=%x.\n", ha->host_no, rval);)
43157 +       } else {
43158 +               /*EMPTY*/
43159 +               DEBUG11(printk("qla2x00_get_firmware_state(%ld): done.\n",
43160 +                   ha->host_no);)
43161 +       }
43162 +
43163 +       return rval;
43164 +}
43165 +
43166 +/*
43167 + * qla2x00_get_port_name
43168 + *     Issue get port name mailbox command.
43169 + *     Returned name is in big endian format.
43170 + *
43171 + * Input:
43172 + *     ha = adapter block pointer.
43173 + *     loop_id = loop ID of device.
43174 + *     name = pointer for name.
43175 + *     TARGET_QUEUE_LOCK must be released.
43176 + *     ADAPTER_STATE_LOCK must be released.
43177 + *
43178 + * Returns:
43179 + *     qla2x00 local function return status code.
43180 + *
43181 + * Context:
43182 + *     Kernel context.
43183 + */
43184 +int
43185 +qla2x00_get_port_name(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t *name,
43186 +    uint8_t opt)
43187 +{
43188 +       int rval;
43189 +       mbx_cmd_t mc;
43190 +       mbx_cmd_t *mcp = &mc;
43191 +
43192 +       DEBUG11(printk("qla2x00_get_port_name(%ld): entered.\n",
43193 +           ha->host_no);)
43194 +
43195 +       mcp->mb[0] = MBC_GET_PORT_NAME;
43196 +#if defined(EXTENDED_IDS)
43197 +       mcp->mb[1] = loop_id & 0xFF;
43198 +#else
43199 +       mcp->mb[1] = loop_id << 8 | opt;
43200 +#endif
43201 +       mcp->out_mb = MBX_1|MBX_0;
43202 +#if defined(EXTENDED_IDS)
43203 +       mcp->mb[10] = opt;
43204 +       mcp->out_mb |= MBX_10;
43205 +#endif
43206 +       mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43207 +       mcp->tov = 30;
43208 +       mcp->flags = 0;
43209 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43210 +
43211 +       if (rval != QL_STATUS_SUCCESS) {
43212 +               /*EMPTY*/
43213 +               DEBUG2_3_11(printk("qla2x00_get_port_name(%ld): failed=%x.\n",
43214 +                   ha->host_no, rval);)
43215 +       } else {
43216 +               if (name != NULL) {
43217 +                       /* This function returns name in big endian. */
43218 +                       name[0] = LSB(mcp->mb[2]);
43219 +                       name[1] = MSB(mcp->mb[2]);
43220 +                       name[2] = LSB(mcp->mb[3]);
43221 +                       name[3] = MSB(mcp->mb[3]);
43222 +                       name[4] = LSB(mcp->mb[6]);
43223 +                       name[5] = MSB(mcp->mb[6]);
43224 +                       name[6] = LSB(mcp->mb[7]);
43225 +                       name[7] = MSB(mcp->mb[7]);
43226 +               }
43227 +
43228 +               DEBUG11(printk("qla2x00_get_port_name(%ld): done.\n",
43229 +                   ha->host_no);)
43230 +       }
43231 +
43232 +       return rval;
43233 +}
43234 +
43235 +/*
43236 + * qla2x00_get_link_status
43237 + *
43238 + * Input:
43239 + *     ha = adapter block pointer.
43240 + *     loop_id = device loop ID.
43241 + *     ret_buf = pointer to link status return buffer.
43242 + *
43243 + * Returns:
43244 + *     0 = success.
43245 + *     BIT_0 = mem alloc error.
43246 + *     BIT_1 = mailbox error.
43247 + */
43248 +uint8_t
43249 +qla2x00_get_link_status(scsi_qla_host_t *ha, uint8_t loop_id, void *ret_buf,
43250 +    uint16_t *status)
43251 +{
43252 +       int rval;
43253 +       mbx_cmd_t mc;
43254 +       mbx_cmd_t *mcp = &mc;
43255 +       link_stat_t *stat_buf;
43256 +       dma_addr_t phys_address = 0;
43257 +
43258 +
43259 +       DEBUG11(printk("qla2x00_get_link_status(%ld): entered.\n",
43260 +           ha->host_no);)
43261 +
43262 +       stat_buf = pci_alloc_consistent(ha->pdev, sizeof(link_stat_t),
43263 +           &phys_address);
43264 +       if (stat_buf == NULL) {
43265 +               DEBUG2_3_11(printk("qla2x00_get_link_status(%ld): Failed to "
43266 +                   "allocate memory.\n", ha->host_no));
43267 +               return BIT_0;
43268 +       }
43269 +
43270 +       memset(stat_buf, 0, sizeof(link_stat_t));
43271 +
43272 +       mcp->mb[0] = MBC_GET_LINK_STATUS;
43273 +#if defined(EXTENDED_IDS)
43274 +       mcp->mb[1] = loop_id & 0xFF;
43275 +#else
43276 +       mcp->mb[1] = loop_id << 8;
43277 +#endif
43278 +       mcp->mb[2] = MSW(phys_address);
43279 +       mcp->mb[3] = LSW(phys_address);
43280 +       mcp->mb[6] = MSW(MSD(phys_address));
43281 +       mcp->mb[7] = LSW(MSD(phys_address));
43282 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43283 +#if defined(EXTENDED_IDS)
43284 +       mcp->mb[10] = 0;
43285 +       mcp->out_mb |= MBX_10;
43286 +#endif
43287 +       mcp->in_mb = MBX_0;
43288 +       mcp->tov = 30;
43289 +       mcp->flags = IOCTL_CMD;
43290 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43291 +
43292 +       if (rval == QL_STATUS_SUCCESS) {
43293 +
43294 +               if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
43295 +                       DEBUG2_3_11(printk("qla2x00_get_link_status(%ld): cmd "
43296 +                           "failed. mbx0=%x.\n", ha->host_no, mcp->mb[0]);)
43297 +                       status[0] = mcp->mb[0];
43298 +                       rval = BIT_1;
43299 +               } else {
43300 +                       /* copy over data */
43301 +                       memcpy(ret_buf, stat_buf,sizeof(link_stat_t));
43302 +                       DEBUG(printk("qla2x00_get_link_status(%ld): stat dump: "
43303 +                           "fail_cnt=%d loss_sync=%d loss_sig=%d seq_err=%d "
43304 +                           "inval_xmt_word=%d inval_crc=%d.\n",
43305 +                           ha->host_no,
43306 +                           stat_buf->link_fail_cnt, stat_buf->loss_sync_cnt,
43307 +                           stat_buf->loss_sig_cnt, stat_buf->prim_seq_err_cnt,
43308 +                           stat_buf->inval_xmit_word_cnt,
43309 +                           stat_buf->inval_crc_cnt);)
43310 +                       DEBUG11(printk("qla2x00_get_link_status(%ld): stat "
43311 +                           "dump: fail_cnt=%d loss_sync=%d loss_sig=%d "
43312 +                           "seq_err=%d inval_xmt_word=%d inval_crc=%d.\n",
43313 +                           ha->host_no,
43314 +                           stat_buf->link_fail_cnt, stat_buf->loss_sync_cnt,
43315 +                           stat_buf->loss_sig_cnt, stat_buf->prim_seq_err_cnt,
43316 +                           stat_buf->inval_xmit_word_cnt,
43317 +                           stat_buf->inval_crc_cnt);)
43318 +               }
43319 +       } else {
43320 +               /* Failed. */
43321 +               DEBUG2_3_11(printk("qla2x00_get_link_status(%ld): failed=%x.\n",
43322 +                   ha->host_no, rval);)
43323 +               rval = BIT_1;
43324 +       }
43325 +
43326 +       pci_free_consistent(ha->pdev, sizeof(link_stat_t),
43327 +           stat_buf, phys_address);
43328 +
43329 +       return rval;
43330 +}
43331 +
43332 +/*
43333 + * qla2x00_lip_reset
43334 + *     Issue LIP reset mailbox command.
43335 + *
43336 + * Input:
43337 + *     ha = adapter block pointer.
43338 + *     TARGET_QUEUE_LOCK must be released.
43339 + *     ADAPTER_STATE_LOCK must be released.
43340 + *
43341 + * Returns:
43342 + *     qla2x00 local function return status code.
43343 + *
43344 + * Context:
43345 + *     Kernel context.
43346 + */
43347 +int
43348 +qla2x00_lip_reset(scsi_qla_host_t *ha)
43349 +{
43350 +       int rval;
43351 +       mbx_cmd_t mc;
43352 +       mbx_cmd_t *mcp = &mc;
43353 +
43354 +       DEBUG11(printk("qla2x00_lip_reset(%ld): entered.\n",
43355 +           ha->host_no);)
43356 +
43357 +       mcp->mb[0] = MBC_LIP_RESET;
43358 +#if defined(EXTENDED_IDS)
43359 +       mcp->mb[1] = 0x00ff;
43360 +#else
43361 +       mcp->mb[1] = 0xff00;
43362 +#endif
43363 +       mcp->mb[2] = ha->loop_reset_delay;
43364 +       mcp->mb[3] = 0;
43365 +       mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
43366 +#if defined(EXTENDED_IDS)
43367 +       mcp->mb[10] = 0;
43368 +       mcp->out_mb |= MBX_10;
43369 +#endif
43370 +       mcp->in_mb = MBX_0;
43371 +       mcp->tov = 30;
43372 +       mcp->flags = 0;
43373 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43374 +
43375 +       if (rval != QL_STATUS_SUCCESS) {
43376 +               /*EMPTY*/
43377 +               DEBUG2_3_11(printk("qla2x00_lip_reset(%ld): failed=%x.\n",
43378 +                   ha->host_no, rval);)
43379 +       } else {
43380 +               /*EMPTY*/
43381 +               DEBUG11(printk("qla2x00_lip_reset(%ld): done.\n",
43382 +                   ha->host_no);)
43383 +       }
43384 +
43385 +       return rval;
43386 +}
43387 +
43388 +/*
43389 + * qla2x00_send_sns
43390 + *     Send SNS command.
43391 + *
43392 + * Input:
43393 + *     ha = adapter block pointer.
43394 + *     sns = pointer for command.
43395 + *     cmd_size = command size.
43396 + *     buf_size = response/command size.
43397 + *     TARGET_QUEUE_LOCK must be released.
43398 + *     ADAPTER_STATE_LOCK must be released.
43399 + *
43400 + * Returns:
43401 + *     qla2x00 local function return status code.
43402 + *
43403 + * Context:
43404 + *     Kernel context.
43405 + */
43406 +int
43407 +qla2x00_send_sns(scsi_qla_host_t *ha, dma_addr_t sns_phys_address,
43408 +    uint16_t cmd_size, size_t buf_size)
43409 +{
43410 +       int rval;
43411 +       mbx_cmd_t mc;
43412 +       mbx_cmd_t *mcp = &mc;
43413 +
43414 +       DEBUG11(printk("qla2x00_send_sns(%ld): entered.\n",
43415 +           ha->host_no);)
43416 +
43417 +       mcp->mb[0] = MBC_SEND_SNS_COMMAND;
43418 +       mcp->mb[1] = cmd_size;
43419 +       mcp->mb[2] = MSW(sns_phys_address);
43420 +       mcp->mb[3] = LSW(sns_phys_address);
43421 +       mcp->mb[6] = MSW(MSD(sns_phys_address));
43422 +       mcp->mb[7] = LSW(MSD(sns_phys_address));
43423 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43424 +       mcp->in_mb = MBX_0|MBX_1;
43425 +       mcp->buf_size = buf_size;
43426 +       mcp->flags = MBX_DMA_OUT|MBX_DMA_IN;
43427 +       /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/
43428 +       mcp->tov =  ha->login_timeout * 2;
43429 +
43430 +       DEBUG11(printk("qla2x00_send_sns: retry cnt=%d ratov=%d total "
43431 +           "tov=%d.\n", ha->retry_count, ha->login_timeout, mcp->tov);)
43432 +
43433 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43434 +
43435 +       if (rval != QL_STATUS_SUCCESS) {
43436 +               /*EMPTY*/
43437 +               DEBUG(printk("qla2x00_send_sns(%ld): failed=%x mb[0]=%x "
43438 +                   "mb[1]=%x.\n",
43439 +                   ha->host_no, rval, mcp->mb[0], mcp->mb[1]);)
43440 +               DEBUG2_3_11(printk("qla2x00_send_sns(%ld): failed=%x mb[0]=%x "
43441 +                   "mb[1]=%x.\n",
43442 +                   ha->host_no, rval, mcp->mb[0], mcp->mb[1]);)
43443 +       } else {
43444 +               /*EMPTY*/
43445 +               DEBUG11(printk("qla2x00_send_sns(%ld): done.\n",
43446 +                   ha->host_no);)
43447 +       }
43448 +
43449 +       return rval;
43450 +}
43451 +
43452 +/*
43453 + * qla2x00_login_fabric
43454 + *     Issue login fabric port mailbox command.
43455 + *
43456 + * Input:
43457 + *     ha = adapter block pointer.
43458 + *     loop_id = device loop ID.
43459 + *     domain = device domain.
43460 + *     area = device area.
43461 + *     al_pa = device AL_PA.
43462 + *     status = pointer for return status.
43463 + *     opt = command options.
43464 + *     TARGET_QUEUE_LOCK must be released.
43465 + *     ADAPTER_STATE_LOCK must be released.
43466 + *
43467 + * Returns:
43468 + *     qla2x00 local function return status code.
43469 + *
43470 + * Context:
43471 + *     Kernel context.
43472 + */
43473 +int
43474 +qla2x00_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
43475 +    uint8_t area, uint8_t al_pa, uint16_t *status, uint8_t opt)
43476 +{
43477 +       int rval;
43478 +       mbx_cmd_t mc;
43479 +       mbx_cmd_t *mcp = &mc;
43480 +
43481 +       DEBUG11(printk("qla2x00_login_fabric(%ld): entered.\n",
43482 +           ha->host_no);)
43483 +
43484 +       mcp->mb[0] = MBC_LOGIN_FABRIC_PORT;
43485 +#if defined(EXTENDED_IDS)
43486 +       mcp->mb[1] = loop_id & 0xFF;
43487 +#else
43488 +       mcp->mb[1] = (loop_id << 8) | opt;
43489 +#endif
43490 +       mcp->mb[2] = domain;
43491 +       mcp->mb[3] = area << 8 | al_pa;
43492 +       mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
43493 +#if defined(EXTENDED_IDS)
43494 +       mcp->mb[10] = opt;
43495 +       mcp->out_mb |= MBX_10;
43496 +#endif
43497 +       mcp->in_mb = MBX_2|MBX_1|MBX_0;
43498 +       /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/
43499 +       mcp->tov = ha->login_timeout * 2;
43500 +       mcp->flags = 0;
43501 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43502 +
43503 +       /* Return mailbox statuses. */
43504 +       if (status != NULL) {
43505 +               *status++ = mcp->mb[0];
43506 +               *status++ = mcp->mb[1];
43507 +               *status = mcp->mb[2];
43508 +       }
43509 +
43510 +       if (rval != QL_STATUS_SUCCESS) {
43511 +               /* RLU tmp code: need to change main mailbox_command function to
43512 +                * return ok even when the mailbox completion value is not
43513 +                * SUCCESS. The caller needs to be responsible to interpret
43514 +                * the return values of this mailbox command if we're not
43515 +                * to change too much of the existing code.
43516 +                */
43517 +               if (mcp->mb[0] == 0x4001 || mcp->mb[0] == 0x4002 ||
43518 +                   mcp->mb[0] == 0x4003 || mcp->mb[0] == 0x4005 ||
43519 +                   mcp->mb[0] == 0x4006)
43520 +                       rval = QL_STATUS_SUCCESS;
43521 +
43522 +               /*EMPTY*/
43523 +               DEBUG2_3_11(printk("qla2x00_login_fabric(%ld): failed=%x "
43524 +                   "mb[1]=%x mb[2]=%x.\n",
43525 +                   ha->host_no, rval, mcp->mb[1], mcp->mb[2]);)
43526 +       } else {
43527 +               /*EMPTY*/
43528 +               DEBUG11(printk("qla2x00_login_fabric(%ld): done.\n",
43529 +                   ha->host_no);)
43530 +       }
43531 +
43532 +       return rval;
43533 +}
43534 +
43535 +/*
43536 + * qla2x00_login_local_device
43537 + *           Issue login loop port mailbox command.
43538 + *    
43539 + * Input:
43540 + *           ha = adapter block pointer.
43541 + *           loop_id = device loop ID.
43542 + *           opt = command options.
43543 + *          
43544 + * Returns:
43545 + *            Return status code.
43546 + *             
43547 + * Context:
43548 + *            Kernel context.
43549 + *             
43550 + */
43551 +int
43552 +qla2x00_login_local_device(scsi_qla_host_t *ha,
43553 +               uint16_t loop_id, uint16_t *mb_ret, uint8_t opt)
43554 +{
43555 +       int rval;
43556 +       mbx_cmd_t mc;
43557 +       mbx_cmd_t *mcp = &mc;
43558 +
43559 +       DEBUG3(printk("%s(%ld): entered.\n", __func__, ha->host_no);)
43560 +
43561 +       mcp->mb[0] = MBC_LOGIN_LOOP_PORT;
43562 +#if defined(EXTENDED_IDS)
43563 +       mcp->mb[1] = loop_id & 0xFF;
43564 +#else
43565 +       mcp->mb[1] = (loop_id << 8);
43566 +#endif
43567 +       mcp->mb[2] = opt;
43568 +       mcp->out_mb = MBX_2|MBX_1|MBX_0;
43569 +       mcp->in_mb = MBX_7|MBX_6|MBX_1|MBX_0;
43570 +       mcp->tov =  ha->login_timeout * 2;
43571 +       mcp->flags = 0;
43572 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43573 +
43574 +       /* Return mailbox statuses. */
43575 +       if (mb_ret != NULL) {
43576 +               mb_ret[0] = mcp->mb[0];
43577 +               mb_ret[1] = mcp->mb[1];
43578 +               mb_ret[6] = mcp->mb[6];
43579 +               mb_ret[7] = mcp->mb[7];
43580 +       }
43581 +
43582 +       if (rval != QL_STATUS_SUCCESS) {
43583 +               /* AV tmp code: need to change main mailbox_command function to
43584 +                * return ok even when the mailbox completion value is not
43585 +                * SUCCESS. The caller needs to be responsible to interpret
43586 +                * the return values of this mailbox command if we're not
43587 +                * to change too much of the existing code.
43588 +                */
43589 +               if (mcp->mb[0] == 0x4005 || mcp->mb[0] == 0x4006)
43590 +                       rval = QL_STATUS_SUCCESS;
43591 +
43592 +               DEBUG(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x "
43593 +                   "mb[6]=%x mb[7]=%x.\n",
43594 +                   __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1],
43595 +                   mcp->mb[6], mcp->mb[7]);)
43596 +               DEBUG2_3(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x "
43597 +                   "mb[6]=%x mb[7]=%x.\n",
43598 +                   __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1],
43599 +                   mcp->mb[6], mcp->mb[7]);)
43600 +       } else {
43601 +               /*EMPTY*/
43602 +               DEBUG3(printk("%s(%ld): done.\n", __func__, ha->host_no);)
43603 +       }
43604 +
43605 +       return (rval);
43606 +}
43607 +
43608 +/*
43609 + * qla2x00_fabric_logout
43610 + *     Issue logout fabric port mailbox command.
43611 + *
43612 + * Input:
43613 + *     ha = adapter block pointer.
43614 + *     loop_id = device loop ID.
43615 + *     TARGET_QUEUE_LOCK must be released.
43616 + *     ADAPTER_STATE_LOCK must be released.
43617 + *
43618 + * Returns:
43619 + *     qla2x00 local function return status code.
43620 + *
43621 + * Context:
43622 + *     Kernel context.
43623 + */
43624 +int
43625 +qla2x00_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id)
43626 +{
43627 +       int rval;
43628 +       mbx_cmd_t mc;
43629 +       mbx_cmd_t *mcp = &mc;
43630 +
43631 +       DEBUG11(printk("qla2x00_fabric_logout(%ld): entered.\n",
43632 +           ha->host_no);)
43633 +
43634 +       mcp->mb[0] = MBC_LOGOUT_FABRIC_PORT;
43635 +#if defined(EXTENDED_IDS)
43636 +       mcp->mb[1] = loop_id & 0xFF;
43637 +#else
43638 +       mcp->mb[1] = loop_id << 8;
43639 +#endif
43640 +       mcp->out_mb = MBX_1|MBX_0;
43641 +#if defined(EXTENDED_IDS)
43642 +       mcp->mb[10] = 0;
43643 +       mcp->out_mb |= MBX_10;
43644 +#endif
43645 +       mcp->in_mb = MBX_1|MBX_0;
43646 +       mcp->tov = 30;
43647 +       mcp->flags = 0;
43648 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43649 +
43650 +       if (rval != QL_STATUS_SUCCESS) {
43651 +               /*EMPTY*/
43652 +               DEBUG2_3_11(printk("qla2x00_fabric_logout(%ld): failed=%x "
43653 +                   "mbx1=%x.\n",
43654 +                   ha->host_no, rval, mcp->mb[1]);)
43655 +       } else {
43656 +               /*EMPTY*/
43657 +               DEBUG11(printk("qla2x00_fabric_logout(%ld): done.\n",
43658 +                   ha->host_no);)
43659 +       }
43660 +
43661 +       return rval;
43662 +}
43663 +
43664 +/*
43665 + * qla2x00_full_login_lip
43666 + *     Issue full login LIP mailbox command.
43667 + *
43668 + * Input:
43669 + *     ha = adapter block pointer.
43670 + *     TARGET_QUEUE_LOCK must be released.
43671 + *     ADAPTER_STATE_LOCK must be released.
43672 + *
43673 + * Returns:
43674 + *     qla2x00 local function return status code.
43675 + *
43676 + * Context:
43677 + *     Kernel context.
43678 + */
43679 +int
43680 +qla2x00_full_login_lip(scsi_qla_host_t *ha)
43681 +{
43682 +       int rval;
43683 +       mbx_cmd_t mc;
43684 +       mbx_cmd_t *mcp = &mc;
43685 +
43686 +       DEBUG11(printk("qla2x00_full_login_lip(%ld): entered.\n",
43687 +           ha->host_no);)
43688 +
43689 +       mcp->mb[0] = MBC_LIP_FULL_LOGIN;
43690 +       mcp->mb[1] = 0;
43691 +       mcp->mb[2] = 0;
43692 +       mcp->mb[3] = 0;
43693 +       mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
43694 +       mcp->in_mb = MBX_0;
43695 +       mcp->tov = 30;
43696 +       mcp->flags = 0;
43697 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43698 +
43699 +       if (rval != QL_STATUS_SUCCESS) {
43700 +               /*EMPTY*/
43701 +               DEBUG2_3_11(printk("qla2x00_full_login_lip(%ld): failed=%x.\n",
43702 +                   ha->instance, rval);)
43703 +       } else {
43704 +               /*EMPTY*/
43705 +               DEBUG11(printk("qla2x00_full_login_lip(%ld): done.\n",
43706 +                   ha->host_no);)
43707 +       }
43708 +
43709 +       return rval;
43710 +}
43711 +
43712 +/*
43713 + * qla2x00_get_port_list
43714 + *
43715 + * Input:
43716 + *     ha = adapter block pointer.
43717 + *     TARGET_QUEUE_LOCK must be released.
43718 + *     ADAPTER_STATE_LOCK must be released.
43719 + *
43720 + * Returns:
43721 + *     qla2x00 local function return status code.
43722 + *
43723 + * Context:
43724 + *     Kernel context.
43725 + */
43726 +int
43727 +qla2x00_get_port_list(scsi_qla_host_t *ha, port_list_entry_t *gp_list,
43728 +    dma_addr_t gpl_phys_address, uint16_t opt, uint16_t *size)
43729 +{
43730 +       int rval;
43731 +       mbx_cmd_t mc;
43732 +       mbx_cmd_t *mcp = &mc;
43733 +
43734 +       DEBUG11(printk("qla2x00_get_port_list(%ld): entered.\n",
43735 +           ha->host_no);)
43736 +
43737 +       if( gp_list == NULL ) {
43738 +               return QL_STATUS_ERROR;
43739 +       }
43740 +
43741 +       mcp->mb[0] = MBC_GET_PORT_LIST;
43742 +       mcp->mb[1] = opt;
43743 +       mcp->mb[2] = MSW(gpl_phys_address);
43744 +       mcp->mb[3] = LSW(gpl_phys_address);
43745 +       mcp->mb[6] = MSW(MSD(gpl_phys_address));
43746 +       mcp->mb[7] = LSW(MSD(gpl_phys_address));
43747 +
43748 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43749 +       mcp->in_mb = MBX_1|MBX_0;
43750 +       mcp->tov = 30;
43751 +       mcp->flags = 0;
43752 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43753 +
43754 +       if (rval != QL_STATUS_SUCCESS) {
43755 +               /*EMPTY*/
43756 +               DEBUG2_3_11(printk("qla2x00_get_port_list(%ld): failed=%x.\n",
43757 +                   ha->host_no, rval);)
43758 +       } else {
43759 +               *size = mcp->mb[1];
43760 +               DEBUG11(printk("qla2x00_get_port_list(%ld): done.\n",
43761 +                   ha->host_no);)
43762 +       }
43763 +
43764 +       return rval;
43765 +}
43766 +
43767 +#if 0 /* not yet needed */
43768 +int
43769 +qla2x00_dump_ram(scsi_qla_host_t *ha, uint32_t risc_address,
43770 +    dma_addr_t ispdump_dma, uint32_t size)
43771 +{
43772 +       int rval;
43773 +       mbx_cmd_t mc;
43774 +       mbx_cmd_t *mcp = &mc;
43775 +
43776 +       mcp->mb[0] = MBC_DUMP_RAM;
43777 +       mcp->mb[1] = risc_address & 0xffff;
43778 +       mcp->mb[2] = MSW(ispdump_dma);
43779 +       mcp->mb[3] = LSW(ispdump_dma);
43780 +       mcp->mb[4] = 0;
43781 +       mcp->mb[6] = MSW(MSD(ispdump_dma));
43782 +       mcp->mb[7] = LSW(MSD(ispdump_dma));
43783 +
43784 +       mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
43785 +       mcp->in_mb = MBX_0;
43786 +       mcp->tov = 30;
43787 +       mcp->flags = 0;
43788 +       rval = qla2x00_mailbox_command(ha, mcp);
43789 +
43790 +       return rval;
43791 +}
43792 +#endif
43793 +
43794 +/*
43795 + * qla2x00_lun_reset
43796 + *     Issue lun reset mailbox command.
43797 + *
43798 + * Input:
43799 + *     ha = adapter block pointer.
43800 + *     loop_id = device loop ID.
43801 + *      lun = lun to be reset.
43802 + *     TARGET_QUEUE_LOCK must be released.
43803 + *     ADAPTER_STATE_LOCK must be released.
43804 + *
43805 + * Returns:
43806 + *     qla2x00 local function return status code.
43807 + *
43808 + * Context:
43809 + *     Kernel context.
43810 + */
43811 +int
43812 +qla2x00_lun_reset(scsi_qla_host_t *ha, uint16_t loop_id, uint16_t lun)
43813 +{
43814 +       int             rval;
43815 +       mbx_cmd_t       mc;
43816 +       mbx_cmd_t       *mcp = &mc;
43817 +
43818 +       ENTER("qla2x00_lun_reset");
43819 +
43820 +       mcp->mb[0] = MBC_LUN_RESET;
43821 +#if defined(EXTENDED_IDS)
43822 +       mcp->mb[1] = loop_id & 0xFF;
43823 +#else
43824 +       mcp->mb[1] = loop_id << 8;
43825 +#endif
43826 +       mcp->mb[2] = lun;
43827 +       mcp->out_mb = MBX_2|MBX_1|MBX_0;
43828 +       mcp->in_mb = MBX_0;
43829 +       mcp->tov = 30;
43830 +       mcp->flags = 0;
43831 +       rval = qla2x00_mailbox_command(ha, mcp);
43832 +
43833 +       if (rval != QLA2X00_SUCCESS) {
43834 +               /*EMPTY*/
43835 +               printk(KERN_WARNING "qla2x00_lun_reset(%d): failed = %d",
43836 +                   (int)ha->instance, rval);
43837 +       } else {
43838 +               /*EMPTY*/
43839 +               LEAVE("qla2x00_lun_reset: exiting normally");
43840 +       }
43841 +
43842 +       return rval;
43843 +}
43844 +
43845 +/*
43846 + * qla2x00_send_rnid_mbx
43847 + *     Issue RNID ELS using mailbox command
43848 + *
43849 + * Input:
43850 + *     ha = adapter state pointer.
43851 + *     loop_id = loop ID of the target device.
43852 + *     data_fmt = currently supports only 0xDF.
43853 + *     buffer = buffer pointer.
43854 + *     buf_size = size of buffer.
43855 + *     mb_reg = pointer to return mailbox registers.
43856 + *
43857 + * Returns:
43858 + *     qla2x00 local function return status code.
43859 + *
43860 + * Context:
43861 + *     Kernel context.
43862 + */
43863 +int
43864 +qla2x00_send_rnid_mbx(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t data_fmt,
43865 +    dma_addr_t buf_phys_addr, size_t buf_size, uint16_t *mb_reg)
43866 +{
43867 +       int             rval;
43868 +       mbx_cmd_t       mc;
43869 +       mbx_cmd_t       *mcp = &mc;
43870 +
43871 +       DEBUG11(printk("qla2x00_send_rnid_mbx(%ld): entered.\n",
43872 +           ha->host_no);)
43873 +
43874 +       mcp->mb[0] = MBC_SEND_RNID_ELS;
43875 +#if defined(EXTENDED_IDS)
43876 +       mcp->mb[1] = loop_id & 0xFF;
43877 +#else
43878 +       mcp->mb[1] = (loop_id << 8 ) | data_fmt;
43879 +#endif
43880 +       mcp->mb[2] = MSW(buf_phys_addr);
43881 +       mcp->mb[3] = LSW(buf_phys_addr);
43882 +       mcp->mb[6] = MSW(MSD(buf_phys_addr));
43883 +       mcp->mb[7] = LSW(MSD(buf_phys_addr));
43884 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43885 +#if defined(EXTENDED_IDS)
43886 +       mcp->mb[10] = data_fmt;
43887 +       mcp->out_mb |= MBX_10;
43888 +#endif
43889 +       mcp->in_mb = MBX_1|MBX_0;
43890 +       mcp->buf_size = buf_size;
43891 +       mcp->flags = MBX_DMA_IN;
43892 +       mcp->tov = 30;
43893 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43894 +
43895 +       if (rval != QL_STATUS_SUCCESS) {
43896 +               memcpy(mb_reg, mcp->mb, 2 * 2); /* 2 status regs */
43897 +
43898 +               DEBUG2_3_11(printk("qla2x00_send_rnid_mbx(%ld): failed=%x "
43899 +                   "mb[1]=%x.\n",
43900 +                   ha->host_no, mcp->mb[0], mcp->mb[1]);)
43901 +       } else {
43902 +               /*EMPTY*/
43903 +               DEBUG11(printk("qla2x00_send_rnid_mbx(%ld): done.\n",
43904 +                    ha->host_no);)
43905 +       }
43906 +
43907 +       return (rval);
43908 +}
43909 +
43910 +/*
43911 + * qla2x00_set_rnid_params_mbx
43912 + *     Set RNID parameters using mailbox command
43913 + *
43914 + * Input:
43915 + *     ha = adapter state pointer.
43916 + *     buffer = buffer pointer.
43917 + *     buf_size = size of buffer.
43918 + *     mb_reg = pointer to return mailbox registers.
43919 + *
43920 + * Returns:
43921 + *     qla2x00 local function return status code.
43922 + *
43923 + * Context:
43924 + *     Kernel context.
43925 + */
43926 +int
43927 +qla2x00_set_rnid_params_mbx(scsi_qla_host_t *ha, dma_addr_t buf_phys_addr,
43928 +    size_t buf_size, uint16_t *mb_reg)
43929 +{
43930 +       int             rval;
43931 +       mbx_cmd_t       mc;
43932 +       mbx_cmd_t       *mcp = &mc;
43933 +
43934 +       DEBUG11(printk("qla2x00_set_rnid_params_mbx(%ld): entered.\n",
43935 +           ha->host_no);)
43936 +
43937 +       mcp->mb[0] = MBC_SET_RNID_PARAMS;
43938 +       mcp->mb[1] = 0;
43939 +       mcp->mb[2] = MSW(buf_phys_addr);
43940 +       mcp->mb[3] = LSW(buf_phys_addr);
43941 +       mcp->mb[6] = MSW(MSD(buf_phys_addr));
43942 +       mcp->mb[7] = LSW(MSD(buf_phys_addr));
43943 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43944 +       mcp->in_mb = MBX_1|MBX_0;
43945 +       mcp->buf_size = buf_size;
43946 +       mcp->flags = MBX_DMA_OUT;
43947 +       mcp->tov = 30;
43948 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
43949 +
43950 +       if (rval != QLA2X00_SUCCESS) {
43951 +               memcpy(mb_reg, mcp->mb, 2 * 2); /* 2 status regs */
43952 +
43953 +               DEBUG2_3_11(printk("qla2x00_set_rnid_params_mbx(%ld): "
43954 +                   "failed=%x mb[1]=%x.\n",
43955 +                   ha->host_no, mcp->mb[0], mcp->mb[1]);)
43956 +       } else {
43957 +               /*EMPTY*/
43958 +               DEBUG11(printk("qla2x00_set_rnid_params_mbx(%ld): done.\n",
43959 +                   ha->host_no);)
43960 +       }
43961 +
43962 +       return (rval);
43963 +}
43964 +
43965 +/*
43966 + * qla2x00_get_rnid_params_mbx
43967 + *     Get RNID parameters using mailbox command
43968 + *
43969 + * Input:
43970 + *     ha = adapter state pointer.
43971 + *     buffer = buffer pointer.
43972 + *     buf_size = size of buffer.
43973 + *     mb_reg = pointer to return mailbox registers.
43974 + *
43975 + * Returns:
43976 + *     qla2x00 local function return status code.
43977 + *
43978 + * Context:
43979 + *     Kernel context.
43980 + */
43981 +int
43982 +qla2x00_get_rnid_params_mbx(scsi_qla_host_t *ha, dma_addr_t buf_phys_addr,
43983 +    size_t buf_size, uint16_t *mb_reg)
43984 +{
43985 +       int             rval;
43986 +       mbx_cmd_t       mc;
43987 +       mbx_cmd_t       *mcp = &mc;
43988 +
43989 +       DEBUG11(printk("qla2x00_get_rnid_params_mbx(%ld): entered.\n",
43990 +           ha->host_no);)
43991 +
43992 +       mcp->mb[0] = MBC_GET_RNID_PARAMS;
43993 +       mcp->mb[1] = 0;
43994 +       mcp->mb[2] = MSW(buf_phys_addr);
43995 +       mcp->mb[3] = LSW(buf_phys_addr);
43996 +       mcp->mb[6] = MSW(MSD(buf_phys_addr));
43997 +       mcp->mb[7] = LSW(MSD(buf_phys_addr));
43998 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43999 +       mcp->in_mb = MBX_1|MBX_0;
44000 +       mcp->buf_size = buf_size;
44001 +       mcp->flags = MBX_DMA_IN;
44002 +       mcp->tov = 30;
44003 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
44004 +
44005 +       if (rval != QLA2X00_SUCCESS) {
44006 +               memcpy(mb_reg, mcp->mb, 2 * 2); /* 2 status regs */
44007 +
44008 +               DEBUG2_3_11(printk("qla2x00_get_rnid_params_mbx(%ld): "
44009 +                   "failed=%x mb[1]=%x.\n",
44010 +                   ha->host_no, mcp->mb[0], mcp->mb[1]);)
44011 +       } else {
44012 +               /*EMPTY*/
44013 +               DEBUG11(printk("qla2x00_get_rnid_params_mbx(%ld): done.\n",
44014 +                   ha->host_no);)
44015 +       }
44016 +
44017 +       return (rval);
44018 +}
44019 +
44020 +#if defined(QL_DEBUG_LEVEL_3)
44021 +/*
44022 + * qla2x00_get_fcal_position_map
44023 + *     Get FCAL (LILP) position map using mailbox command
44024 + *
44025 + * Input:
44026 + *     ha = adapter state pointer.
44027 + *     pos_map = buffer pointer (can be NULL).
44028 + *
44029 + * Returns:
44030 + *     qla2x00 local function return status code.
44031 + *
44032 + * Context:
44033 + *     Kernel context.
44034 + */
44035 +int
44036 +qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map)
44037 +{
44038 +       int rval;
44039 +       mbx_cmd_t mc;
44040 +       mbx_cmd_t *mcp = &mc;
44041 +       char *pmap;
44042 +       dma_addr_t pmap_dma;
44043 +
44044 +       pmap = pci_alloc_consistent(ha->pdev, FCAL_MAP_SIZE, &pmap_dma);
44045 +       if (pmap  == NULL) {
44046 +               DEBUG2_3_11(printk("%s(%ld): **** Mem Alloc Failed ****",
44047 +                   __func__, ha->host_no));
44048 +               return QL_STATUS_RESOURCE_ERROR;
44049 +       }
44050 +
44051 +       memset(pmap, 0, FCAL_MAP_SIZE);
44052 +
44053 +       mcp->mb[0] = MBC_GET_FCAL_MAP;
44054 +       mcp->mb[2] = MSW(pmap_dma);
44055 +       mcp->mb[3] = LSW(pmap_dma);
44056 +       mcp->mb[6] = MSW(MSD(pmap_dma));
44057 +       mcp->mb[7] = LSW(MSD(pmap_dma));
44058 +       mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
44059 +       mcp->in_mb = MBX_1|MBX_0;
44060 +       mcp->buf_size = FCAL_MAP_SIZE;
44061 +       mcp->flags = MBX_DMA_IN;
44062 +       mcp->tov =  ha->login_timeout * 2;
44063 +       rval = (int)qla2x00_mailbox_command(ha, mcp);
44064 +
44065 +       if (rval == QL_STATUS_SUCCESS) {
44066 +               DEBUG11(printk("%s(%ld): (mb0=%x/mb1=%x) FC/AL Position Map "
44067 +                   "size (%x)\n",
44068 +                   __func__, ha->host_no,
44069 +                   mcp->mb[0], mcp->mb[1], (unsigned)pmap[0]));
44070 +               DEBUG11(qla2x00_dump_buffer(pmap, pmap[0] + 1));
44071 +
44072 +               if (pos_map)
44073 +                       memcpy(pos_map, pmap, FCAL_MAP_SIZE);
44074 +       }
44075 +       pci_free_consistent(ha->pdev, FCAL_MAP_SIZE, pmap, pmap_dma);
44076 +
44077 +       if (rval != QL_STATUS_SUCCESS) {
44078 +               DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
44079 +                   __func__, ha->host_no, rval));
44080 +       } else {
44081 +               DEBUG11(printk("%s(%ld): done.\n",
44082 +                   __func__, ha->host_no));
44083 +       }
44084 +
44085 +       return rval;
44086 +}
44087 +#endif
44088 --- /dev/null   Thu Apr 11 07:25:15 2002
44089 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_os.c    Thu Jul  3 15:34:42 2003
44090 @@ -0,0 +1,5879 @@
44091 +/*
44092 + *                  QLOGIC LINUX SOFTWARE
44093 + *
44094 + * QLogic ISP2x00 device driver for Linux 2.5.x
44095 + * Copyright (C) 2003 Qlogic Corporation
44096 + * (www.qlogic.com)
44097 + *
44098 + * This program is free software; you can redistribute it and/or modify it
44099 + * under the terms of the GNU General Public License as published by the
44100 + * Free Software Foundation; either version 2, or (at your option) any
44101 + * later version.
44102 + *
44103 + * This program is distributed in the hope that it will be useful, but
44104 + * WITHOUT ANY WARRANTY; without even the implied warranty of
44105 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
44106 + * General Public License for more details.
44107 + *
44108 + */
44109 +#define QLA_MODVERSION
44110 +#include "qla_os.h"
44111 +
44112 +#include "qla_def.h"
44113 +
44114 +/*
44115 + * Driver version
44116 + */
44117 +char qla2x00_version_str[40] = { 0 };
44118 +
44119 +/*
44120 +* Command line options.
44121 +*/
44122 +unsigned long qla2x00_verbose = 1L;
44123 +unsigned long qla2x00_quiet   = 0L;
44124 +unsigned long qla2x00_reinit = 1L;
44125 +unsigned long qla2x00_req_dmp = 0L;
44126 +
44127 +/*
44128 + * Stats for all adpaters.
44129 + */
44130 +struct _qla2x00stats qla2x00_stats;
44131 +
44132 +/*
44133 + * Ioctl related information.
44134 + */
44135 +int num_hosts = 0;       
44136 +int apiHBAInstance = 0;
44137 +
44138 +/*
44139 + * Module parameter information and variables
44140 + */
44141 +
44142 +char *ql2xdevconf = NULL;
44143 +#if MPIO_SUPPORT
44144 +int ql2xretrycount = 30;
44145 +#else
44146 +int ql2xretrycount = 20;
44147 +#endif
44148 +int qla2xenbinq = 1;
44149 +int max_srbs = MAX_SRBS;
44150 +#if defined(ISP2200) || defined(ISP2300)
44151 +int ql2xlogintimeout = 20;
44152 +int qlport_down_retry = 0;
44153 +#endif
44154 +int ql2xmaxqdepth = 0;
44155 +int displayConfig = 0;
44156 +
44157 +/* Enable for failover */
44158 +#if MPIO_SUPPORT
44159 +int ql2xfailover = 1;
44160 +#else
44161 +int ql2xfailover = 0;
44162 +#endif
44163 +
44164 +int ConfigRequired = 0;
44165 +int recoveryTime = MAX_RECOVERYTIME;
44166 +int failbackTime = MAX_FAILBACKTIME;
44167 +
44168 +/* Persistent binding type */
44169 +int Bind = BIND_BY_PORT_NAME;
44170 +
44171 +int ql2xsuspendcount = SUSPEND_COUNT;
44172 +
44173 +int qla2x00_retryq_dmp = 0;
44174 +
44175 +#if defined(MODULE)
44176 +char *ql2xopts = NULL;
44177 +
44178 +static char dummy_buffer[60] =
44179 +               "Please don't add commas in your insmod command!!\n";
44180 +
44181 +/* insmod qla2100 ql2xopts=verbose" */
44182 +MODULE_PARM(ql2xopts, "s");
44183 +MODULE_PARM_DESC(ql2xopts,
44184 +               "Additional driver options.");
44185 +
44186 +MODULE_PARM(ql2xfailover, "i");
44187 +MODULE_PARM_DESC(ql2xfailover,
44188 +               "Driver failover support: 0 to disable; 1 to enable. "
44189 +               "Default behaviour based on compile-time option "
44190 +               "MPIO_SUPPORT.");
44191 +
44192 +MODULE_PARM(ql2xmaxqdepth, "i");
44193 +MODULE_PARM_DESC(ql2xmaxqdepth,
44194 +               "Maximum queue depth to report for target devices.");
44195 +
44196 +#if defined(ISP2200) || defined(ISP2300)
44197 +MODULE_PARM(ql2xlogintimeout,"i");
44198 +MODULE_PARM_DESC(ql2xlogintimeout,
44199 +               "Login timeout value in seconds.");
44200 +
44201 +MODULE_PARM(qlport_down_retry,"i");
44202 +MODULE_PARM_DESC(qlport_down_retry,
44203 +               "Maximum number of command retries to a port that returns"
44204 +               "a PORT-DOWN status.");
44205 +#endif
44206 +
44207 +MODULE_PARM(ql2xretrycount,"i");
44208 +MODULE_PARM_DESC(ql2xretrycount,
44209 +               "Maximum number of mid-layer retries allowed for a command.  "
44210 +               "Default value in non-failover mode is 20, "
44211 +               "in failover mode, 30.");
44212 +
44213 +MODULE_PARM(max_srbs,"i");
44214 +MODULE_PARM_DESC(max_srbs,
44215 +               "Maximum number of simultaneous commands allowed for an HBA.");
44216 +
44217 +MODULE_PARM(displayConfig, "i");
44218 +MODULE_PARM_DESC(displayConfig,
44219 +               "If 1 then display the configuration used in "
44220 +               "/etc/modules.conf.");
44221 +
44222 +MODULE_PARM(ConfigRequired, "i");
44223 +MODULE_PARM_DESC(ConfigRequired,
44224 +               "If 1, then only configured devices passed in through the"
44225 +               "ql2xopts parameter will be presented to the OS");
44226 +
44227 +MODULE_PARM(recoveryTime, "i");
44228 +MODULE_PARM_DESC(recoveryTime,
44229 +               "Recovery time in seconds before a target device is sent I/O "
44230 +               "after a failback is performed.");
44231 +
44232 +MODULE_PARM(failbackTime, "i");
44233 +MODULE_PARM_DESC(failbackTime,
44234 +               "Delay in seconds before a failback is performed.");
44235 +
44236 +MODULE_PARM(Bind, "i");
44237 +MODULE_PARM_DESC(Bind,
44238 +               "Target persistent binding method: "
44239 +               "0 by Portname (default); 1 by PortID; 2 by Nodename. ");
44240 +
44241 +MODULE_PARM(ql2xsuspendcount,"i");
44242 +MODULE_PARM_DESC(ql2xsuspendcount,
44243 +               "Number of 6-second suspend iterations to perform while a "
44244 +               "target returns a <NOT READY> status.  Default is 10 "
44245 +               "iterations.");
44246 +#endif
44247 +
44248 +MODULE_AUTHOR("QLogic Corporation");
44249 +MODULE_DESCRIPTION("QLogic " ISP_NAME " FC-SCSI Host Bus Adapter driver");
44250 +MODULE_LICENSE("GPL");
44251 +
44252 +
44253 +/*
44254 + * Proc structures and functions
44255 + */
44256 +struct info_str {
44257 +       char    *buffer;
44258 +       int     length;
44259 +       off_t   offset;
44260 +       int     pos;
44261 +};
44262 +
44263 +static void copy_mem_info(struct info_str *, char *, int);
44264 +static int copy_info(struct info_str *, char *, ...);
44265 +
44266 +
44267 +/*
44268 + * List of host adapters
44269 + */
44270 +struct list_head qla_hostlist;
44271 +rwlock_t qla_hostlist_lock;
44272 +
44273 +
44274 +/*
44275 + * PCI driver interface definitions
44276 + */
44277 +#define ISP21XX_FW_INDEX       0
44278 +#define ISP22XX_FW_INDEX       0
44279 +#define ISP23XX_FW_INDEX       0
44280 +#define ISP232X_FW_INDEX       2
44281 +
44282 +static struct qla_fw_info qla_fw_tbl[] = {
44283 +#if defined(ISP2100)
44284 +       /* Start of 21xx firmware list */
44285 +       {
44286 +               .addressing     = FW_INFO_ADDR_NORMAL,
44287 +               .fwcode         = &fw2100tp_code01[0],
44288 +               .fwlen          = &fw2100tp_length01,
44289 +               .fwstart        = &fw2100tp_addr01,
44290 +       },
44291 +#endif
44292 +
44293 +#if defined(ISP2200)
44294 +       /* Start of 22xx firmware list */
44295 +       {
44296 +               .addressing     = FW_INFO_ADDR_NORMAL,
44297 +               .fwcode         = &fw2200ip_code01[0],
44298 +               .fwlen          = &fw2200ip_length01,
44299 +               .fwstart        = &fw2200ip_addr01,
44300 +       },
44301 +#endif
44302 +
44303 +#if defined(ISP2300)
44304 +       /* Start of 23xx firmware list */
44305 +#if defined(TPX)
44306 +       {
44307 +               .addressing     = FW_INFO_ADDR_NORMAL,
44308 +               .fwcode         = &fw2300tpx_code01[0],
44309 +               .fwlen          = &fw2300tpx_length01,
44310 +               .fwstart        = &fw2300tpx_addr01,
44311 +       },
44312 +#else
44313 +       {
44314 +               .addressing     = FW_INFO_ADDR_NORMAL,
44315 +               .fwcode         = &fw2300ipx_code01[0],
44316 +               .fwlen          = &fw2300ipx_length01,
44317 +               .fwstart        = &fw2300ipx_addr01,
44318 +       },
44319 +#endif
44320 +
44321 +#if defined(ISP2322)
44322 +       /* End of 23xx firmware list */
44323 +       { FW_INFO_ADDR_NOMORE, },
44324 +
44325 +       /* Start of 232x firmware list */
44326 +#if defined(TPX)
44327 +       {
44328 +               .addressing     = FW_INFO_ADDR_NORMAL,
44329 +               .fwcode         = &fw2322tpx_code01[0],
44330 +               .fwlen          = &fw2322tpx_length01,
44331 +               .fwstart        = &fw2322tpx_addr01,
44332 +       },
44333 +       {
44334 +               .addressing     = FW_INFO_ADDR_EXTENDED,
44335 +               .fwcode         = &rseqtpx_code01[0],
44336 +               .fwlen          = &rseqtpx_code_length01,
44337 +               .lfwstart       = &rseqtpx_code_addr01,
44338 +       },
44339 +       {
44340 +               .addressing     = FW_INFO_ADDR_EXTENDED,
44341 +               .fwcode         = &xseqtpx_code01[0],
44342 +               .fwlen          = &xseqtpx_code_length01,
44343 +               .lfwstart       = &xseqtpx_code_addr01,
44344 +       },
44345 +#else
44346 +       {
44347 +               .addressing     = FW_INFO_ADDR_NORMAL,
44348 +               .fwcode         = &fw2322ipx_code01[0],
44349 +               .fwlen          = &fw2322ipx_length01,
44350 +               .fwstart        = &fw2322ipx_addr01,
44351 +       },
44352 +       {
44353 +               .addressing     = FW_INFO_ADDR_EXTENDED,
44354 +               .fwcode         = &rseqipx_code01[0],
44355 +               .fwlen          = &rseqipx_code_length01,
44356 +               .lfwstart       = &rseqipx_code_addr01,
44357 +       },
44358 +       {
44359 +               .addressing     = FW_INFO_ADDR_EXTENDED,
44360 +               .fwcode         = &xseqipx_code01[0],
44361 +               .fwlen          = &xseqipx_code_length01,
44362 +               .lfwstart       = &xseqipx_code_addr01,
44363 +       },
44364 +#endif
44365 +
44366 +#endif
44367 +
44368 +#endif
44369 +
44370 +       /* End of firmware list */
44371 +       { FW_INFO_ADDR_NOMORE, },
44372 +};
44373 +
44374 +#define ISP21XX_BRD_INDEX      0
44375 +#define ISP22XX_BRD_INDEX      0
44376 +#define ISP23XX_BRD_INDEX      0
44377 +#define ISP2312_BRD_INDEX      1
44378 +#define ISP2322_BRD_INDEX      2
44379 +
44380 +static struct qla_board_info qla_board_tbl[] = {
44381 +#if defined(ISP2100)
44382 +       {
44383 +               .name           = "QLA2100 ",
44384 +               .fwinfo         = &qla_fw_tbl[ISP21XX_FW_INDEX],
44385 +       }
44386 +#endif
44387 +
44388 +#if defined(ISP2200)
44389 +       {
44390 +               .name           = "QLA2200 ",
44391 +               .fwinfo         = &qla_fw_tbl[ISP22XX_FW_INDEX],
44392 +       }
44393 +#endif
44394 +
44395 +#if defined(ISP2300)
44396 +       {
44397 +               .name           = "QLA2300 ",
44398 +               .fwinfo         = &qla_fw_tbl[ISP23XX_FW_INDEX],
44399 +       },
44400 +
44401 +       {
44402 +               .name           = "QLA2312 ",
44403 +               .fwinfo         = &qla_fw_tbl[ISP23XX_FW_INDEX],
44404 +       },
44405 +
44406 +#if defined(ISP2322)
44407 +       {
44408 +               .name           = "QLA2322 ",
44409 +               .fwinfo         = &qla_fw_tbl[ISP232X_FW_INDEX],
44410 +       }
44411 +#endif
44412 +#endif
44413 +};
44414 +
44415 +static struct pci_device_id qla_pci_tbl[] __devinitdata = {
44416 +#if defined(ISP2100)
44417 +       {
44418 +               .vendor         = QLA2X00_VENDOR_ID,
44419 +               .device         = QLA2100_DEVICE_ID,
44420 +               .subvendor      = PCI_ANY_ID,
44421 +               .subdevice      = PCI_ANY_ID,
44422 +               .driver_data
44423 +                       = (unsigned long)&qla_board_tbl[ISP21XX_BRD_INDEX],
44424 +       },
44425 +#endif
44426 +
44427 +#if defined(ISP2200)
44428 +       {
44429 +               .vendor         = QLA2X00_VENDOR_ID,
44430 +               .device         = QLA2200_DEVICE_ID,
44431 +               .subvendor      = PCI_ANY_ID,
44432 +               .subdevice      = PCI_ANY_ID,
44433 +               .driver_data
44434 +                       = (unsigned long)&qla_board_tbl[ISP22XX_BRD_INDEX],
44435 +       },
44436 +#endif
44437 +
44438 +#if defined(ISP2300)
44439 +       {
44440 +               .vendor         = QLA2X00_VENDOR_ID,
44441 +               .device         = QLA2300_DEVICE_ID,
44442 +               .subvendor      = PCI_ANY_ID,
44443 +               .subdevice      = PCI_ANY_ID,
44444 +               .driver_data
44445 +                       = (unsigned long)&qla_board_tbl[ISP23XX_BRD_INDEX],
44446 +       },
44447 +
44448 +       {
44449 +               .vendor         = QLA2X00_VENDOR_ID,
44450 +               .device         = QLA2312_DEVICE_ID,
44451 +               .subvendor      = PCI_ANY_ID,
44452 +               .subdevice      = PCI_ANY_ID,
44453 +               .driver_data
44454 +                       = (unsigned long)&qla_board_tbl[ISP2312_BRD_INDEX],
44455 +       },
44456 +
44457 +#if defined(ISP2322)
44458 +       {
44459 +               .vendor         = QLA2X00_VENDOR_ID,
44460 +               .device         = QLA2322_DEVICE_ID,
44461 +               .subvendor      = PCI_ANY_ID,
44462 +               .subdevice      = PCI_ANY_ID,
44463 +               .driver_data
44464 +                       = (unsigned long)&qla_board_tbl[ISP2322_BRD_INDEX],
44465 +       },
44466 +#endif
44467 +#endif
44468 +       {0 , 0}
44469 +};
44470 +MODULE_DEVICE_TABLE(pci, qla_pci_tbl);
44471 +
44472 +static int __devinit qla_probe_device(struct pci_dev *,
44473 +    const struct pci_device_id *);
44474 +static void __devexit qla_remove_device(struct pci_dev *);
44475 +static void qla2x00_free_device(scsi_qla_host_t *);
44476 +
44477 +struct pci_driver qla_pci_driver = {
44478 +       .name           = DRIVER_NAME,
44479 +       .id_table       = qla_pci_tbl,
44480 +
44481 +       .probe          = qla_probe_device,
44482 +       .remove         = __devexit_p(qla_remove_device),
44483 +};
44484 +
44485 +
44486 +/*
44487 + * SCSI host template entry points 
44488 + */
44489 +static int qla2x00_detect(Scsi_Host_Template *);
44490 +static int qla2x00_release(struct Scsi_Host *);
44491 +static const char *qla2x00_info(struct Scsi_Host *);
44492 +static int qla2xxx_slave_configure(Scsi_Device * device);
44493 +static int qla2x00_biosparam(struct scsi_device *,
44494 +    struct block_device *, sector_t, int[]);
44495 +extern int qla2x00_ioctl(Scsi_Device *, int , void *);
44496 +static int qla2xxx_eh_abort(Scsi_Cmnd *);
44497 +static int qla2xxx_eh_device_reset(Scsi_Cmnd *);
44498 +static int qla2xxx_eh_bus_reset(Scsi_Cmnd *);
44499 +static int qla2xxx_eh_host_reset(Scsi_Cmnd *);
44500 +static uint8_t qla2x00_loop_reset(scsi_qla_host_t *ha);
44501 +static int qla2x00_device_reset(scsi_qla_host_t *, uint16_t, uint16_t);
44502 +
44503 +static int qla2x00_proc_info(char *, char **, off_t, int, int, int);
44504 +
44505 +static uint8_t qla2x00_register_with_Linux(scsi_qla_host_t *, uint8_t);
44506 +
44507 +#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP)
44508 +int qla2x00_get_scsi_info_from_wwn(int mode, unsigned long long wwn, int *host, int *channel, int *lun, int *id);
44509 +int qla2x00_get_wwn_from_scsi_info(int host, int id, unsigned long long *wwn);
44510 +#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */
44511 +
44512 +#if !defined(MODULE)
44513 +static int __init qla2x00_setup(char *);
44514 +#else
44515 +static void qla2x00_setup(char *);
44516 +#endif
44517 +static char *qla2x00_get_line(char *, char *);
44518 +static int qla2x00_get_tokens(char *, char **, int);
44519 +
44520 +
44521 +static Scsi_Host_Template qla2x00_driver_template = {
44522 +       .module                 = THIS_MODULE,
44523 +       .name                   = DRIVER_NAME,
44524 +       .proc_name              = DRIVER_NAME,
44525 +       .proc_info              = qla2x00_proc_info,
44526 +       .detect                 = qla2x00_detect,
44527 +       .release                = qla2x00_release,
44528 +       .info                   = qla2x00_info,
44529 +       .ioctl                  = qla2x00_ioctl,
44530 +       .queuecommand           = qla2x00_queuecommand,
44531 +
44532 +       .eh_abort_handler       = qla2xxx_eh_abort,
44533 +       .eh_device_reset_handler = qla2xxx_eh_device_reset,
44534 +       .eh_bus_reset_handler   = qla2xxx_eh_bus_reset,
44535 +       .eh_host_reset_handler  = qla2xxx_eh_host_reset,
44536 +       .bios_param             = qla2x00_biosparam,
44537 +
44538 +       .slave_configure        = qla2xxx_slave_configure,
44539 +
44540 +       .this_id                = -1,
44541 +       .can_queue              = 255,
44542 +       .cmd_per_lun            = 3,
44543 +       .sg_tablesize           = SG_ALL,
44544 +       .use_clustering         = ENABLE_CLUSTERING,
44545 +       .unchecked_isa_dma      = 0,
44546 +       .max_sectors            = 8192,
44547 +       .highmem_io             = 1,
44548 +};
44549 +
44550 +static void qla2x00_display_fc_names(scsi_qla_host_t *);
44551 +
44552 +/* TODO Convert to inlines
44553 + *
44554 + * Timer routines
44555 + */
44556 +#define        WATCH_INTERVAL          1       /* number of seconds */
44557 +
44558 +static void qla2x00_timer(scsi_qla_host_t *);
44559 +
44560 +static __inline__ void qla2x00_start_timer(scsi_qla_host_t *,
44561 +    void *, unsigned long);
44562 +static __inline__ void qla2x00_restart_timer(scsi_qla_host_t *, unsigned long);
44563 +static __inline__ void qla2x00_stop_timer(scsi_qla_host_t *);
44564 +
44565 +static inline void
44566 +qla2x00_start_timer(scsi_qla_host_t *ha, void *func, unsigned long interval)
44567 +{
44568 +       init_timer(&ha->timer);
44569 +       ha->timer.expires = jiffies + interval * HZ;
44570 +       ha->timer.data = (unsigned long)ha;
44571 +       ha->timer.function = (void (*)(unsigned long))func;
44572 +       add_timer(&ha->timer);
44573 +       ha->timer_active = 1;
44574 +}
44575 +
44576 +static inline void
44577 +qla2x00_restart_timer(scsi_qla_host_t *ha, unsigned long interval)
44578 +{
44579 +       mod_timer(&ha->timer, jiffies + interval * HZ);
44580 +}
44581 +
44582 +static __inline__ void
44583 +qla2x00_stop_timer(scsi_qla_host_t *ha)
44584 +{
44585 +       del_timer_sync(&ha->timer);
44586 +       ha->timer_active = 0;
44587 +}
44588 +
44589 +
44590 +static void qla2x00_cmd_timeout(srb_t *sp);
44591 +static __inline__ void qla2x00_add_timer_to_cmd(srb_t *sp, int timeout);
44592 +static __inline__ void qla2x00_delete_timer_from_cmd(srb_t *sp);
44593 +
44594 +/**************************************************************************
44595 +*   qla2x00_add_timer_to_cmd
44596 +*
44597 +* Description:
44598 +*       Creates a timer for the specified command. The timeout is usually
44599 +*       the command time from kernel minus 2 secs.
44600 +*
44601 +* Input:
44602 +*     sp - pointer to validate
44603 +*
44604 +* Returns:
44605 +*     None.
44606 +**************************************************************************/
44607 +static inline void
44608 +qla2x00_add_timer_to_cmd(srb_t *sp, int timeout)
44609 +{
44610 +       init_timer(&sp->timer);
44611 +       sp->timer.expires = jiffies + timeout * HZ;
44612 +       sp->timer.data = (unsigned long) sp;
44613 +       sp->timer.function = (void (*) (unsigned long))qla2x00_cmd_timeout;
44614 +       add_timer(&sp->timer);
44615 +}
44616 +
44617 +/**************************************************************************
44618 +*   qla2x00_delete_timer_from_cmd
44619 +*
44620 +* Description:
44621 +*       Delete the timer for the specified command.
44622 +*
44623 +* Input:
44624 +*     sp - pointer to validate
44625 +*
44626 +* Returns:
44627 +*     None.
44628 +**************************************************************************/
44629 +static inline void 
44630 +qla2x00_delete_timer_from_cmd(srb_t *sp)
44631 +{
44632 +       if (sp->timer.function != NULL) {
44633 +               del_timer(&sp->timer);
44634 +               sp->timer.function =  NULL;
44635 +               sp->timer.data = (unsigned long) NULL;
44636 +       }
44637 +}
44638 +
44639 +static __inline__ void qla2x00_callback(scsi_qla_host_t *, Scsi_Cmnd *);
44640 +static __inline__ void sp_put(struct scsi_qla_host * ha, srb_t *sp);
44641 +static __inline__ void sp_get(struct scsi_qla_host * ha, srb_t *sp);
44642 +static __inline__ void __sp_put(struct scsi_qla_host * ha, srb_t *sp);
44643 +static __inline__ void
44644 +qla2x00_delete_from_done_queue(scsi_qla_host_t *, srb_t *); 
44645 +
44646 +/**************************************************************************
44647 +* sp_put
44648 +*
44649 +* Description:
44650 +*   Decrement reference count and call the callback if we're the last
44651 +*   owner of the specified sp. Will get io_request_lock before calling
44652 +*   the callback.
44653 +*
44654 +* Input:
44655 +*   ha - pointer to the scsi_qla_host_t where the callback is to occur.
44656 +*   sp - pointer to srb_t structure to use.
44657 +*
44658 +* Returns:
44659 +*
44660 +**************************************************************************/
44661 +static inline void
44662 +sp_put(struct scsi_qla_host * ha, srb_t *sp)
44663 +{
44664 +        unsigned long flags;
44665 +
44666 +        if (atomic_read(&sp->ref_count) == 0) {
44667 +               printk(KERN_INFO
44668 +                       "%s(): **** SP->ref_count not zero\n",
44669 +                       __func__);
44670 +                DEBUG2(BUG();)
44671 +
44672 +                return;
44673 +       }
44674 +
44675 +        if (!atomic_dec_and_test(&sp->ref_count))
44676 +        {
44677 +                return;
44678 +        }
44679 +
44680 +        spin_lock_irqsave(ha->host->host_lock, flags);
44681 +
44682 +        qla2x00_callback(ha, sp->cmd);
44683 +
44684 +        spin_unlock_irqrestore(ha->host->host_lock, flags);
44685 +}
44686 +
44687 +/**************************************************************************
44688 +* sp_get
44689 +*
44690 +* Description:
44691 +*   Increment reference count of the specified sp.
44692 +*
44693 +* Input:
44694 +*   sp - pointer to srb_t structure to use.
44695 +*
44696 +* Returns:
44697 +*
44698 +**************************************************************************/
44699 +static inline void
44700 +sp_get(struct scsi_qla_host * ha, srb_t *sp)
44701 +{
44702 +        atomic_inc(&sp->ref_count);
44703 +
44704 +        if (atomic_read(&sp->ref_count) > 2) {
44705 +               printk(KERN_INFO
44706 +                       "%s(): **** SP->ref_count greater than two\n",
44707 +                       __func__);
44708 +                DEBUG2(BUG();)
44709 +
44710 +               return;
44711 +       }
44712 +}
44713 +
44714 +/**************************************************************************
44715 +* __sp_put
44716 +*
44717 +* Description:
44718 +*   Decrement reference count and call the callback if we're the last
44719 +*   owner of the specified sp. Will NOT get io_request_lock before calling
44720 +*   the callback.
44721 +*
44722 +* Input:
44723 +*   ha - pointer to the scsi_qla_host_t where the callback is to occur.
44724 +*   sp - pointer to srb_t structure to use.
44725 +*
44726 +* Returns:
44727 +*
44728 +**************************************************************************/
44729 +static inline void
44730 +__sp_put(struct scsi_qla_host * ha, srb_t *sp)
44731 +{
44732 +        if (atomic_read(&sp->ref_count) == 0) {
44733 +               printk(KERN_INFO
44734 +                       "%s(): **** SP->ref_count not zero\n",
44735 +                       __func__);
44736 +                DEBUG2(BUG();)
44737 +
44738 +               return;
44739 +       }
44740 +
44741 +        if (!atomic_dec_and_test(&sp->ref_count))
44742 +        {
44743 +                return;
44744 +        }
44745 +
44746 +        qla2x00_callback(ha, sp->cmd);
44747 +}
44748 +
44749 +
44750 +/*
44751 +* qla2x00_callback
44752 +*      Returns the completed SCSI command to LINUX.
44753 +*
44754 +* Input:
44755 +*      ha -- Host adapter structure
44756 +*      cmd -- SCSI mid-level command structure.
44757 +* Returns:
44758 +*      None
44759 +* Note:From failover point of view we always get the sp
44760 +*      from vis_ha pool in queuecommand.So when we put it 
44761 +*      back to the pool it has to be the vis_ha.        
44762 +*      So rely on Scsi_Cmnd to get the vis_ha and not on sp.                   
44763 +*/
44764 +static inline void
44765 +qla2x00_callback(scsi_qla_host_t *ha, Scsi_Cmnd *cmd)
44766 +{
44767 +       srb_t *sp = (srb_t *) CMD_SP(cmd);
44768 +       scsi_qla_host_t *vis_ha;
44769 +       os_lun_t *lq;
44770 +       int got_sense;
44771 +       unsigned long   cpu_flags = 0;
44772 +
44773 +       ENTER(__func__);
44774 +
44775 +       CMD_HANDLE(cmd) = (unsigned char *) NULL;
44776 +       vis_ha = (scsi_qla_host_t *) cmd->device->host->hostdata;
44777 +
44778 +       if (sp == NULL) {
44779 +               printk(KERN_INFO
44780 +                       "%s(): **** CMD derives a NULL SP\n",
44781 +                       __func__);
44782 +                DEBUG2(BUG();)
44783 +               return;
44784 +       }
44785 +
44786 +       /*
44787 +        * If command status is not DID_BUS_BUSY then go ahead and freed sp.
44788 +        */
44789 +       /*
44790 +        * Cancel command timeout
44791 +        */
44792 +       qla2x00_delete_timer_from_cmd(sp);
44793 +
44794 +       /*
44795 +        * Put SP back in the free queue
44796 +        */
44797 +       sp->cmd   = NULL;
44798 +       CMD_SP(cmd) = NULL;
44799 +       lq = sp->lun_queue;
44800 +       got_sense = (sp->flags & SRB_GOT_SENSE)? 1: 0;
44801 +       add_to_free_queue(vis_ha, sp);
44802 +
44803 +       if ((CMD_RESULT(cmd)>>16) == DID_OK) {
44804 +               /* device ok */
44805 +               ha->total_bytes += cmd->bufflen;
44806 +               if (!got_sense) {
44807 +                       /* If lun was suspended then clear retry count */
44808 +                       spin_lock_irqsave(&lq->q_lock, cpu_flags);
44809 +                       if (!test_bit(LUN_EXEC_DELAYED, &lq->q_flag))
44810 +                               lq->q_state = LUN_STATE_READY;
44811 +                       spin_unlock_irqrestore(&lq->q_lock, cpu_flags);
44812 +               }
44813 +       } else if ((CMD_RESULT(cmd)>>16) == DID_ERROR) {
44814 +               /* device error */
44815 +               ha->total_dev_errs++;
44816 +       }
44817 +
44818 +       if (cmd->flags & IS_RESETTING) {
44819 +               CMD_RESULT(cmd) = (int)DID_RESET << 16;
44820 +       }
44821 +
44822 +       /* Call the mid-level driver interrupt handler */
44823 +       (*(cmd)->scsi_done)(cmd);
44824 +
44825 +       LEAVE(__func__);
44826 +}
44827 +
44828 +static inline void 
44829 +qla2x00_delete_from_done_queue(scsi_qla_host_t *dest_ha, srb_t *sp) 
44830 +{
44831 +       /* remove command from done list */
44832 +       list_del_init(&sp->list);
44833 +       dest_ha->done_q_cnt--;
44834 +       sp->state = SRB_NO_QUEUE_STATE;
44835 +
44836 +       if (sp->flags & SRB_DMA_VALID) {
44837 +               sp->flags &= ~SRB_DMA_VALID;
44838 +
44839 +               /* Release memory used for this I/O */
44840 +               if (sp->cmd->use_sg) {
44841 +                       pci_unmap_sg(dest_ha->pdev,
44842 +                                       sp->cmd->request_buffer,
44843 +                                       sp->cmd->use_sg,
44844 +                                       scsi_to_pci_dma_dir(
44845 +                                               sp->cmd->sc_data_direction));
44846 +               } else if (sp->cmd->request_bufflen) {
44847 +                       pci_unmap_page(dest_ha->pdev,
44848 +                                       sp->saved_dma_handle,
44849 +                                       sp->cmd->request_bufflen,
44850 +                                       scsi_to_pci_dma_dir(
44851 +                                               sp->cmd->sc_data_direction));
44852 +               }
44853 +       }
44854 +}
44855 +
44856 +static int qla2x00_do_dpc(void *data);
44857 +static uint8_t qla2x00_check_for_devices_online(scsi_qla_host_t *);
44858 +
44859 +static void qla2x00_rst_aen(scsi_qla_host_t *);
44860 +static void qla2x00_done_work(void *);
44861 +
44862 +static void qla2x00_process_failover(scsi_qla_host_t *);
44863 +
44864 +static uint8_t qla2x00_mem_alloc(scsi_qla_host_t *);
44865 +static void qla2x00_mem_free(scsi_qla_host_t *ha);
44866 +uint8_t qla2x00_allocate_sp_pool( scsi_qla_host_t *ha);
44867 +void qla2x00_free_sp_pool(scsi_qla_host_t *ha);
44868 +
44869 +
44870 +static int apidev_init(struct Scsi_Host *);
44871 +static int apidev_cleanup(void);
44872 +static int apidev_open(struct inode *, struct file *);
44873 +static int apidev_close(struct inode *, struct file *);
44874 +static int apidev_ioctl(struct inode *,
44875 +    struct file *, unsigned int, unsigned long arg);
44876 +
44877 +/*************************************************************************
44878 +*   qla2x00_set_info
44879 +*
44880 +* Description:
44881 +*   Set parameters for the driver from the /proc filesystem.
44882 +*
44883 +* Returns:
44884 +*************************************************************************/
44885 +int
44886 +qla2x00_set_info(char *buffer, int length, struct Scsi_Host *shost)
44887 +{
44888 +       return (-ENOSYS);  /* Currently this is a no-op */
44889 +}
44890 +
44891 +/**************************************************************************
44892 +* qla2x00_detect
44893 +*
44894 +* Description:
44895 +*    This routine will probe for Qlogic FC SCSI host adapters.
44896 +*    It returns the number of host adapters of a particular
44897 +*    type that were found.      It also initialize all data necessary for
44898 +*    the driver.  It is passed-in the host number, so that it
44899 +*    knows where its first entry is in the scsi_hosts[] array.
44900 +*
44901 +* Input:
44902 +*     template - pointer to SCSI template
44903 +*
44904 +* Returns:
44905 +*  num - number of host adapters found.
44906 +**************************************************************************/
44907 +int
44908 +qla2x00_detect(Scsi_Host_Template *template)
44909 +{
44910 +#if defined(MODULE)
44911 +       DEBUG2(printk("DEBUG: qla2x00_set_info() starts at address = %p\n",
44912 +           qla2x00_set_info));
44913 +       printk(KERN_INFO
44914 +           "qla2x00_set_info() starts at address = %p\n",
44915 +           qla2x00_set_info);
44916 +
44917 +       /*
44918 +        * If we are called as a module, the qla2100 pointer may not be null
44919 +        * and it would point to our bootup string, just like on the lilo
44920 +        * command line.  IF not NULL, then process this config string with
44921 +        * qla2x00_setup
44922 +        *
44923 +        * Boot time Options To add options at boot time add a line to your
44924 +        * lilo.conf file like:
44925 +        * append="qla2100=verbose,tag_info:{{32,32,32,32},{32,32,32,32}}"
44926 +        * which will result in the first four devices on the first two
44927 +        * controllers being set to a tagged queue depth of 32.
44928 +        */
44929 +       if (ql2xopts)
44930 +               qla2x00_setup(ql2xopts);
44931 +       if (dummy_buffer[0] != 'P')
44932 +               printk(KERN_WARNING
44933 +                   "qla2x00: Please read the file "
44934 +                   "/usr/src/linux/drivers/scsi/README.qla2x00\n"
44935 +                   "qla2x00: to see the proper way to specify options to "
44936 +                   "the qla2x00 module\n"
44937 +                   "qla2x00: Specifically, don't use any commas when passing "
44938 +                   "arguments to\n"
44939 +                   "qla2x00: insmod or else it might trash certain memory "
44940 +                   "areas.\n");
44941 +#endif
44942 +
44943 +       rwlock_init(&qla_hostlist_lock);
44944 +       INIT_LIST_HEAD(&qla_hostlist);
44945 +
44946 +       pci_module_init(&qla_pci_driver);
44947 +
44948 +       return (num_hosts);
44949 +}
44950 +
44951 +/**************************************************************************
44952 +*   qla2x00_register_with_Linux
44953 +*
44954 +* Description:
44955 +*   Free the passed in Scsi_Host memory structures prior to unloading the
44956 +*   module.
44957 +*
44958 +* Input:
44959 +*     ha - pointer to host adapter structure
44960 +*     maxchannels - MAX number of channels.
44961 +*
44962 +* Returns:
44963 +*  0 - Sucessfully reserved resources.
44964 +*  1 - Failed to reserved a resource.
44965 +**************************************************************************/
44966 +static uint8_t
44967 +qla2x00_register_with_Linux(scsi_qla_host_t *ha, uint8_t maxchannels)
44968 +{
44969 +       struct Scsi_Host *host = ha->host;
44970 +
44971 +       host->can_queue = max_srbs;  /* default value:-MAX_SRBS(4096)  */
44972 +       host->cmd_per_lun = 3;
44973 +       host->max_cmd_len = MAX_CMDSZ;
44974 +
44975 +#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP)
44976 +       host->hostt->get_scsi_info_from_wwn = qla2x00_get_scsi_info_from_wwn;
44977 +       host->hostt->get_wwn_from_scsi_info = qla2x00_get_wwn_from_scsi_info;
44978 +#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */
44979 +
44980 +       host->n_io_port = 0xFF;
44981 +
44982 +#if MEMORY_MAPPED_IO
44983 +       host->base = (unsigned long)ha->mmpbase;
44984 +#else
44985 +       host->base = 0;
44986 +#endif
44987 +
44988 +       host->max_channel = maxchannels;
44989 +       host->max_lun = ha->max_luns;
44990 +       host->unique_id = ha->instance;
44991 +       host->max_id = ha->max_targets;
44992 +
44993 +       /* set our host ID  (need to do something about our two IDs) */
44994 +       host->this_id = 255;
44995 +
44996 +#if defined(CONFIG_MD_MULTIHOST_FC)
44997 +       {
44998 +               unsigned long   i;
44999 +               unsigned long   j;
45000 +
45001 +               union {
45002 +                       __u64   identifier;
45003 +                       char    wwn[WWN_SIZE];
45004 +               } foo;
45005 +
45006 +               for (i = 0, j = WWN_SIZE-1; i < WWN_SIZE; i++, j--) {
45007 +                       foo.wwn[i] = ha->init_cb->port_name[j];
45008 +               }
45009 +
45010 +               host->fc_wwn = foo.identifier;
45011 +       }
45012 +#endif /* CONFIG_MD_MULTIHOST_FC */
45013 +
45014 +       /* Register the I/O space with Linux */
45015 +       if (request_region(host->io_port, 0xff, DRIVER_NAME) == 0) {
45016 +               printk(KERN_WARNING
45017 +                   "scsi(%ld): Failed to reserved i/o base region "
45018 +                   "0x%04lx-0x%04lx already in use\n",
45019 +                   ha->host_no,
45020 +                   host->io_port, host->io_port + 0xff);
45021 +               return 1;
45022 +       }
45023 +
45024 +       /* Register the IRQ with Linux (sharable) */
45025 +       if (request_irq(host->irq, qla2x00_intr_handler,
45026 +           SA_INTERRUPT|SA_SHIRQ, DRIVER_NAME, ha)) {
45027 +               printk(KERN_WARNING
45028 +                   "scsi(%ld): Failed to reserve interrupt %d already in "
45029 +                   "use\n",
45030 +                   ha->host_no, host->irq);
45031 +               release_region(host->io_port, 0xff);
45032 +               return 1;
45033 +       }
45034 +
45035 +       /* Initialized the timer */
45036 +       qla2x00_start_timer(ha, qla2x00_timer, WATCH_INTERVAL);
45037 +
45038 +       return 0;
45039 +}
45040 +
45041 +
45042 +/**************************************************************************
45043 +*   qla2x00_release
45044 +*
45045 +* Description:
45046 +*   Free the passed in Scsi_Host memory structures prior to unloading the
45047 +*   module.
45048 +*
45049 +* Input:
45050 +*     ha - pointer to host adapter structure
45051 +*
45052 +* Returns:
45053 +*  0 - Always returns good status
45054 +**************************************************************************/
45055 +int
45056 +qla2x00_release(struct Scsi_Host *host)
45057 +{
45058 +       scsi_qla_host_t *ha;
45059 +
45060 +       if (host != NULL) {
45061 +               ha = (scsi_qla_host_t *)host->hostdata;
45062 +               list_del(&ha->list);
45063 +               qla2x00_free_device(ha);
45064 +       }
45065 +
45066 +       if (list_empty(&qla_hostlist))
45067 +               pci_unregister_driver(&qla_pci_driver);
45068 +
45069 +       return 0;
45070 +}
45071 +
45072 +/**************************************************************************
45073 +*   qla2x00_info
45074 +*
45075 +* Description:
45076 +*
45077 +* Input:
45078 +*     host - pointer to Scsi host adapter structure
45079 +*
45080 +* Returns:
45081 +*     Return a text string describing the driver.
45082 +**************************************************************************/
45083 +const char *
45084 +qla2x00_info(struct Scsi_Host *host)
45085 +{
45086 +       static char qla2x00_buffer[255];
45087 +       char *bp;
45088 +       scsi_qla_host_t *ha;
45089 +
45090 +       /*
45091 +        * We must create the api node here instead of qla2x00_detect since we
45092 +        * want the api node to be subdirectory of /proc/scsi/qla2x00 which
45093 +        * will not have been created when qla2x00_detect exits, but which will
45094 +        * have been created by this point.
45095 +        */
45096 +       apidev_init(host);
45097 +
45098 +       bp = &qla2x00_buffer[0];
45099 +       ha = (scsi_qla_host_t *)host->hostdata;
45100 +       memset(bp, 0, sizeof(qla2x00_buffer));
45101 +
45102 +       sprintf(bp,
45103 +           "QLogic %sPCI to Fibre Channel Host Adapter: bus %d device %d "
45104 +           "irq %d\n        Firmware version: %2d.%02d.%02d, "
45105 +           "Driver version %s\n",
45106 +           ha->brd_info->name,
45107 +           ha->pdev->bus->number,
45108 +           PCI_SLOT(ha->pdev->devfn),
45109 +           host->irq,
45110 +           ha->fw_major_version, 
45111 +           ha->fw_minor_version, 
45112 +           ha->fw_subminor_version,
45113 +           qla2x00_version_str);
45114 +
45115 +       return bp;
45116 +}
45117 +
45118 +/**************************************************************************
45119 +* qla2x00_queuecommand
45120 +*
45121 +* Description:
45122 +*     Queue a command to the controller.
45123 +*
45124 +* Input:
45125 +*     cmd - pointer to Scsi cmd structure
45126 +*     fn - pointer to Scsi done function
45127 +*
45128 +* Returns:
45129 +*   0 - Always
45130 +*
45131 +* Note:
45132 +* The mid-level driver tries to ensures that queuecommand never gets invoked
45133 +* concurrently with itself or the interrupt handler (although the
45134 +* interrupt handler may call this routine as part of request-completion
45135 +* handling).
45136 +**************************************************************************/
45137 +int
45138 +qla2x00_queuecommand(Scsi_Cmnd *cmd, void (*fn)(Scsi_Cmnd *))
45139 +{
45140 +       fc_port_t       *fcport;
45141 +       os_lun_t        *lq;
45142 +       os_tgt_t        *tq;
45143 +       scsi_qla_host_t *ha, *ha2;
45144 +       srb_t           *sp;
45145 +       struct Scsi_Host *host;
45146 +       uint32_t        b, t, l;
45147 +#if  BITS_PER_LONG <= 32
45148 +       uint32_t        handle;
45149 +#else
45150 +       u_long          handle;
45151 +#endif
45152 +
45153 +       ENTER(__func__);
45154 +
45155 +       host = cmd->device->host;
45156 +       ha = (scsi_qla_host_t *) host->hostdata;
45157 +
45158 +       cmd->scsi_done = fn;
45159 +
45160 +       spin_unlock(ha->host->host_lock);
45161 +
45162 +       /*
45163 +        * Allocate a command packet from the "sp" pool.  If we cant get back
45164 +        * one then let scsi layer come back later.
45165 +        */
45166 +       if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
45167 +               printk(KERN_WARNING
45168 +                   "scsi(%ld): Couldn't allocate memory for sp - retried.\n",
45169 +                   ha->host_no);
45170 +
45171 +               spin_lock_irq(ha->host->host_lock);
45172 +
45173 +               LEAVE(__func__);
45174 +               return (1);
45175 +       }
45176 +
45177 +       sp->cmd = cmd;
45178 +       CMD_SP(cmd) = (void *)sp;
45179 +
45180 +       sp->flags = 0;
45181 +       if (CMD_RESID_LEN(cmd) & SRB_IOCTL) {
45182 +               /* Need to set sp->flags */
45183 +               sp->flags |= SRB_IOCTL;
45184 +               CMD_RESID_LEN(cmd) = 0; /* Clear it since no more use. */
45185 +       }
45186 +
45187 +       sp->fo_retry_cnt = 0;
45188 +#if defined(IOCB_THROLLE_USAGE)
45189 +       sp->iocb_cnt = 0;
45190 +#endif
45191 +
45192 +       if (cmd->allowed < ql2xretrycount) {
45193 +               cmd->allowed = ql2xretrycount;
45194 +       }
45195 +
45196 +       /* Generate LU queue on bus, target, LUN */
45197 +       b = SCSI_BUS_32(cmd);
45198 +       t = SCSI_TCN_32(cmd);
45199 +       l = SCSI_LUN_32(cmd);
45200 +
45201 +       /*
45202 +        * Start Command Timer. Typically it will be 2 seconds less than what
45203 +        * is requested by the Host such that we can return the IO before
45204 +        * aborts are called.
45205 +        */
45206 +       if ((CMD_TIMEOUT(cmd)/HZ) > QLA_CMD_TIMER_DELTA)
45207 +               qla2x00_add_timer_to_cmd(sp,
45208 +                   (CMD_TIMEOUT(cmd)/HZ) - QLA_CMD_TIMER_DELTA);
45209 +       else
45210 +               qla2x00_add_timer_to_cmd(sp, (CMD_TIMEOUT(cmd)/HZ));
45211 +
45212 +       if (l >= ha->max_luns) {
45213 +               CMD_RESULT(cmd) = DID_NO_CONNECT << 16;
45214 +
45215 +               spin_lock_irq(ha->host->host_lock);
45216 +
45217 +               __sp_put(ha, sp);
45218 +               LEAVE(__func__);
45219 +
45220 +               return (0);
45221 +       }
45222 +
45223 +       if ((tq = (os_tgt_t *) TGT_Q(ha, t)) != NULL &&
45224 +               (lq = (os_lun_t *) LUN_Q(ha, t, l)) != NULL ) {
45225 +
45226 +               fcport = lq->fclun->fcport;
45227 +               ha2 = fcport->ha;
45228 +       } else {
45229 +               lq = NULL;
45230 +               fcport = NULL;
45231 +               ha2 = ha;
45232 +       }
45233 +
45234 +       /* Set an invalid handle until we issue the command to ISP */
45235 +       /* then we will set the real handle value.                 */
45236 +       handle = INVALID_HANDLE;
45237 +       CMD_HANDLE(cmd) = (unsigned char *)handle;
45238 +
45239 +       /* Bookkeeping information */
45240 +       sp->r_start = jiffies;       /* time the request was recieved */
45241 +       sp->u_start = 0;
45242 +
45243 +       /* Setup device queue pointers. */
45244 +       sp->tgt_queue = tq;
45245 +       sp->lun_queue = lq;
45246 +
45247 +       /*
45248 +        * NOTE : q is NULL
45249 +        *
45250 +        * 1. When device is added from persistent binding but has not been
45251 +        *    discovered yet.The state of loopid == PORT_AVAIL.
45252 +        * 2. When device is never found on the bus.(loopid == UNUSED)
45253 +        *
45254 +        * IF Device Queue is not created, or device is not in a valid state
45255 +        * and link down error reporting is enabled, reject IO.
45256 +        */
45257 +       if (fcport == NULL) {
45258 +               DEBUG3(printk("scsi(%ld:%2d:%2d): port unavailable\n",
45259 +                   ha->host_no,t,l));
45260 +
45261 +               CMD_RESULT(cmd) = DID_NO_CONNECT << 16;
45262 +
45263 +               spin_lock_irq(ha->host->host_lock);
45264 +
45265 +               __sp_put(ha, sp);
45266 +
45267 +               return (0);
45268 +       }
45269 +
45270 +       DEBUG5(printk("scsi(%ld:%2d:%2d): (queuecmd) queue sp = %p, "
45271 +           "flags=0x%x fo retry=%d, pid=%ld, cmd flags= 0x%x\n",
45272 +           ha->host_no,
45273 +           t, l,
45274 +           sp, sp->flags, sp->fo_retry_cnt,
45275 +           cmd->serial_number,cmd->flags));
45276 +       DEBUG5(qla2x00_print_scsi_cmd(cmd));
45277 +
45278 +       sp->flags &= ~SRB_ISP_COMPLETED;
45279 +
45280 +       sp->fclun = lq->fclun;
45281 +       sp->ha = ha2;
45282 +
45283 +       sp->cmd_length = CMD_CDBLEN(cmd);
45284 +
45285 +       if (cmd->sc_data_direction == SCSI_DATA_UNKNOWN &&
45286 +           cmd->request_bufflen != 0) {
45287 +
45288 +               DEBUG2(printk(KERN_WARNING
45289 +                   "scsi(%ld): Incorrect data direction - transfer "
45290 +                   "length=%d, direction=%d, pid=%ld, opcode=%x\n",
45291 +                   ha->host_no,
45292 +                   cmd->request_bufflen,
45293 +                   cmd->sc_data_direction,
45294 +                   cmd->serial_number,
45295 +                   cmd->cmnd[0]));
45296 +       }
45297 +
45298 +       /* Final pre-check */
45299 +       if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) {
45300 +               /*
45301 +                * Add the command to the done-queue for later failover
45302 +                * processing
45303 +                */
45304 +               CMD_RESULT(cmd) = DID_NO_CONNECT << 16;
45305 +               add_to_done_queue(ha, sp);
45306 +               schedule_work(&ha->run_qla_task);
45307 +
45308 +               spin_lock_irq(ha->host->host_lock);
45309 +               return (0);
45310 +       }
45311 +
45312 +       add_to_pending_queue(ha, sp);
45313 +
45314 +       /* First start cmds for this lun if possible */
45315 +       qla2x00_next(ha);
45316 +
45317 +       spin_lock_irq(ha->host->host_lock);
45318 +
45319 +       LEAVE(__func__);
45320 +       return (0);
45321 +}
45322 +
45323 +/*
45324 + * qla2x00_eh_wait_on_command
45325 + *    Waits for the command to be returned by the Firmware for some
45326 + *    max time.
45327 + *
45328 + * Input:
45329 + *    ha = actual ha whose done queue will contain the command
45330 + *           returned by firmware.
45331 + *    cmd = Scsi Command to wait on.
45332 + *    flag = Abort/Reset(Bus or Device Reset)
45333 + *
45334 + * Return:
45335 + *    Not Found : 0
45336 + *    Found : 1
45337 + */
45338 +static int
45339 +qla2x00_eh_wait_on_command(scsi_qla_host_t *ha, Scsi_Cmnd *cmd)
45340 +{
45341 +#define ABORT_WAIT_TIME        10 /* seconds */
45342 +#define EH_ACTIVE       1  /* Error Handler Active */  
45343 +
45344 +       int             found = 0;
45345 +       int             done = 0;
45346 +       srb_t           *rp;
45347 +       struct list_head *list, *temp;
45348 +       u_long          cpu_flags = 0;
45349 +       u_long          max_wait_time = ABORT_WAIT_TIME;
45350 +
45351 +       ENTER(__func__);
45352 +
45353 +       do {
45354 +               /* Check on done queue */
45355 +               if (!found) {
45356 +                       spin_lock_irqsave(&ha->list_lock, cpu_flags);
45357 +                       list_for_each_safe(list, temp, &ha->done_queue) {
45358 +                               rp = list_entry(list, srb_t, list);
45359 +
45360 +                               /*
45361 +                               * Found command.  Just exit and wait for the
45362 +                               * cmd sent to OS.
45363 +                               */
45364 +                               if (cmd == rp->cmd) {
45365 +                                       found++;
45366 +                                       DEBUG3(printk("%s: found in done "
45367 +                                                       "queue.\n", __func__);)
45368 +                                       break;
45369 +                               }
45370 +                       }
45371 +                       spin_unlock_irqrestore(&ha->list_lock, cpu_flags);
45372 +               }
45373 +
45374 +               /* Checking to see if its returned to OS */
45375 +               rp = (srb_t *) CMD_SP(cmd);
45376 +               if (rp == NULL ) {
45377 +                       done++;
45378 +                       break;
45379 +               }
45380 +
45381 +               spin_unlock_irq(ha->host->host_lock);
45382 +
45383 +               set_current_state(TASK_INTERRUPTIBLE);
45384 +               schedule_timeout(2*HZ);
45385 +
45386 +               spin_lock_irq(ha->host->host_lock);
45387 +
45388 +       } while ((max_wait_time--));
45389 +
45390 +       DEBUG2(if (done))
45391 +       DEBUG2(printk("%s: found cmd=%p.\n", __func__, cmd);)
45392 +
45393 +       LEAVE(__func__);
45394 +
45395 +       return(done);
45396 +}
45397 +
45398 +/**************************************************************************
45399 +* qla2xxx_eh_abort
45400 +*
45401 +* Description:
45402 +*    The abort function will abort the specified command.
45403 +*
45404 +* Input:
45405 +*    cmd = Linux SCSI command packet to be aborted.
45406 +*
45407 +* Returns:
45408 +*    Either SUCCESS or FAILED.
45409 +*
45410 +* Note:
45411 +**************************************************************************/
45412 +int
45413 +qla2xxx_eh_abort(Scsi_Cmnd *cmd)
45414 +{
45415 +       int             i;
45416 +       int             return_status = FAILED;
45417 +       os_lun_t        *q;
45418 +       scsi_qla_host_t *ha;
45419 +       scsi_qla_host_t *vis_ha;
45420 +       srb_t           *sp;
45421 +       srb_t           *rp;
45422 +       struct list_head *list, *temp;
45423 +       struct Scsi_Host *host;
45424 +       uint8_t         found = 0;
45425 +       uint32_t        b, t, l;
45426 +       unsigned long   flags;
45427 +
45428 +
45429 +       ENTER("qla2xxx_eh_abort");
45430 +
45431 +       /* Get the SCSI request ptr */
45432 +       sp = (srb_t *) CMD_SP(cmd);
45433 +
45434 +       /*
45435 +        * If sp is NULL, command is already returned.
45436 +        * sp is NULLed just before we call back scsi_done
45437 +        *
45438 +        */
45439 +       if ((sp == NULL)) {
45440 +               /* no action - we don't have command */
45441 +               DEBUG(printk("qla2xxx_eh_abort: cmd already done sp=%p\n",sp);)
45442 +               return(SUCCESS);
45443 +       }
45444 +       if (sp) {
45445 +               DEBUG(printk("qla2xxx_eh_abort: refcount %i \n",
45446 +                   atomic_read(&sp->ref_count));)
45447 +       }
45448 +
45449 +       vis_ha = (scsi_qla_host_t *) cmd->device->host->hostdata;
45450 +       vis_ha->eh_start=0;
45451 +       if (vis_ha->flags.failover_enabled)
45452 +               /* Get Actual HA pointer */
45453 +               ha = (scsi_qla_host_t *)sp->ha;
45454 +       else
45455 +               ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
45456 +
45457 +       host = ha->host;
45458 +
45459 +       /* Generate LU queue on bus, target, LUN */
45460 +       b = SCSI_BUS_32(cmd);
45461 +       t = SCSI_TCN_32(cmd);
45462 +       l = SCSI_LUN_32(cmd);
45463 +       q = GET_LU_Q(vis_ha, t, l);
45464 +
45465 +       /*
45466 +        * if no LUN queue then something is very wrong!!!
45467 +        */
45468 +       if (q == NULL) {
45469 +               printk(KERN_WARNING
45470 +                       "qla2x00: (%x:%x:%x) No LUN queue.\n", b, t, l);
45471 +
45472 +               /* no action - we don't have command */
45473 +               return(FAILED);
45474 +       }
45475 +
45476 +       DEBUG2(printk("scsi(%ld): ABORTing cmd=%p sp=%p jiffies = 0x%lx, "
45477 +           "timeout=%x, dpc_flags=%lx, vis_ha->dpc_flags=%lx\n",
45478 +           ha->host_no,
45479 +           cmd,
45480 +           sp,
45481 +           jiffies,
45482 +           CMD_TIMEOUT(cmd)/HZ,
45483 +           ha->dpc_flags,
45484 +           vis_ha->dpc_flags);)
45485 +       DEBUG2(qla2x00_print_scsi_cmd(cmd));
45486 +       DEBUG2(qla2x00_print_q_info(q);)
45487 +
45488 +       /* Search done queue */
45489 +       spin_lock_irqsave(&ha->list_lock,flags);
45490 +       list_for_each_safe(list, temp, &ha->done_queue) {
45491 +               rp = list_entry(list, srb_t, list);
45492 +
45493 +               if (cmd != rp->cmd)
45494 +                       continue;
45495 +
45496 +               /*
45497 +                * Found command. No need to remove command from done list.
45498 +                * Just proceed to call done.
45499 +                */
45500 +               return_status = SUCCESS;
45501 +               found++;
45502 +               qla2x00_delete_from_done_queue(ha, sp);
45503 +
45504 +               break;
45505 +       } /* list_for_each_safe() */
45506 +       spin_unlock_irqrestore(&ha->list_lock, flags);
45507 +
45508 +       /*
45509 +        * Return immediately if the aborted command was already in the done
45510 +        * queue
45511 +        */
45512 +       if (found) {
45513 +               printk(KERN_INFO "qla2xxx_eh_abort: Returning completed "
45514 +                       "command=%p sp=%p\n", cmd, sp);
45515 +               __sp_put(ha, sp);
45516 +               return (return_status);
45517 +       }
45518 +       
45519 +
45520 +       /*
45521 +        * See if this command is in the retry queue
45522 +        */
45523 +       if (!found) {
45524 +               DEBUG3(printk("qla2xxx_eh_abort: searching sp %p "
45525 +                   "in retry queue.\n", sp);)
45526 +
45527 +               spin_lock_irqsave(&ha->list_lock, flags);
45528 +               list_for_each_safe(list, temp, &ha->retry_queue) {
45529 +                       rp = list_entry(list, srb_t, list);
45530 +
45531 +                       if (cmd != rp->cmd)
45532 +                               continue;
45533 +
45534 +
45535 +                       DEBUG2(printk("qla2xxx_eh_abort: found "
45536 +                           "in retry queue. SP=%p\n", sp);)
45537 +
45538 +                       __del_from_retry_queue(ha, rp);
45539 +                       CMD_RESULT(rp->cmd) = DID_ABORT << 16;
45540 +                       __add_to_done_queue(ha, rp);
45541 +
45542 +                       return_status = SUCCESS;
45543 +                       found++;
45544 +
45545 +                       break;
45546 +
45547 +               } /* list_for_each_safe() */
45548 +               spin_unlock_irqrestore(&ha->list_lock, flags);
45549 +       }
45550 +
45551 +       /*
45552 +        * Search failover queue
45553 +        */
45554 +       if (ha->flags.failover_enabled) {
45555 +               if (!found) {
45556 +                       DEBUG3(printk("qla2xxx_eh_abort: searching sp %p "
45557 +                                       "in failover queue.\n", sp);)
45558 +
45559 +                       spin_lock_irqsave(&ha->list_lock, flags);
45560 +                       list_for_each_safe(list, temp, &ha->failover_queue) {
45561 +                               rp = list_entry(list, srb_t, list);
45562 +
45563 +                               if (cmd != rp->cmd)
45564 +                                       continue;
45565 +
45566 +                               DEBUG2(printk(KERN_WARNING
45567 +                                               "qla2xxx_eh_abort: found "
45568 +                                               "in failover queue. SP=%p\n",
45569 +                                               sp);)
45570 +
45571 +                               /* Remove srb from failover queue. */
45572 +                               __del_from_failover_queue(ha, rp);
45573 +                               CMD_RESULT(rp->cmd) = DID_ABORT << 16;
45574 +                               __add_to_done_queue(ha, rp);
45575 +
45576 +                               return_status = SUCCESS;
45577 +                               found++;
45578 +
45579 +                               break;
45580 +
45581 +                       } /* list_for_each_safe() */
45582 +                       spin_unlock_irqrestore(&ha->list_lock, flags);
45583 +               } /*End of if !found */
45584 +       }
45585 +
45586 +       /*
45587 +        * Our SP pointer points at the command we want to remove from the
45588 +        * pending queue providing we haven't already sent it to the adapter.
45589 +        */
45590 +       if (!found) {
45591 +               DEBUG3(printk("qla2xxx_eh_abort: searching sp %p "
45592 +                   "in pending queue.\n", sp);)
45593 +
45594 +               spin_lock_irqsave(&vis_ha->list_lock, flags);
45595 +               list_for_each_safe(list, temp, &vis_ha->pending_queue) {
45596 +                       rp = list_entry(list, srb_t, list);
45597 +                       if (rp->cmd != cmd)
45598 +                               continue;
45599 +
45600 +                       /* Remove srb from LUN queue. */
45601 +                       rp->flags |=  SRB_ABORTED;
45602 +
45603 +                       DEBUG2(printk("qla2xxx_eh_abort: Cmd in pending queue."
45604 +                           " serial_number %ld.\n",
45605 +                           sp->cmd->serial_number);)
45606 +
45607 +                       __del_from_pending_queue(vis_ha, rp);
45608 +                       CMD_RESULT(cmd) = DID_ABORT << 16;
45609 +
45610 +                       __add_to_done_queue(vis_ha, rp);
45611 +
45612 +                       return_status = SUCCESS;
45613 +
45614 +                       found++;
45615 +                       break;
45616 +               } /* list_for_each_safe() */
45617 +               spin_unlock_irqrestore(&vis_ha->list_lock, flags);
45618 +       } /*End of if !found */
45619 +
45620 +       if (!found) {  /* find the command in our active list */
45621 +               DEBUG3(printk("qla2xxx_eh_abort: searching sp %p "
45622 +                   "in outstanding queue.\n", sp);)
45623 +
45624 +               spin_lock_irqsave(&ha->hardware_lock, flags);
45625 +               for (i = 1; i < MAX_OUTSTANDING_COMMANDS; i++) {
45626 +                       sp = ha->outstanding_cmds[i];
45627 +
45628 +                       if (sp == NULL)
45629 +                               continue;
45630 +
45631 +                       if (sp->cmd != cmd)
45632 +                               continue;
45633 +
45634 +
45635 +                       DEBUG2(printk("qla2xxx_eh_abort(%ld): aborting sp %p "
45636 +                           "from RISC. pid=%d sp->state=%x\n",
45637 +                           ha->host_no, 
45638 +                           sp, 
45639 +                           (int)sp->cmd->serial_number,
45640 +                           sp->state);)
45641 +                       DEBUG(qla2x00_print_scsi_cmd(cmd);)
45642 +                       DEBUG(qla2x00_print_q_info(q);)
45643 +
45644 +                       /* Get a reference to the sp and drop the lock.*/
45645 +                       sp_get(ha,sp);
45646 +
45647 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
45648 +                       spin_unlock(ha->host->host_lock);
45649 +
45650 +                       if (qla2x00_abort_command(ha, sp)) {
45651 +                               DEBUG2(printk("qla2xxx_eh_abort: abort_command "
45652 +                                   "mbx failed.\n");)
45653 +                               return_status = FAILED;
45654 +                       } else {
45655 +                               DEBUG3(printk("qla2xxx_eh_abort: abort_command "
45656 +                                   " mbx success.\n");)
45657 +                               return_status = SUCCESS;
45658 +                       }
45659 +
45660 +                       sp_put(ha,sp);
45661 +
45662 +                       spin_lock_irq(ha->host->host_lock);
45663 +                       spin_lock_irqsave(&ha->hardware_lock, flags);
45664 +
45665 +                       /*
45666 +                        * Regardless of mailbox command status, go check on
45667 +                        * done queue just in case the sp is already done.
45668 +                        */
45669 +                       break;
45670 +
45671 +               }/*End of for loop */
45672 +               spin_unlock_irqrestore(&ha->hardware_lock, flags);
45673 +
45674 +       } /*End of if !found */
45675 +
45676 +         /*Waiting for our command in done_queue to be returned to OS.*/
45677 +       if (qla2x00_eh_wait_on_command(ha, cmd) != 0) {
45678 +               DEBUG2(printk("qla2xxx_eh_abort: cmd returned back to OS.\n");)
45679 +               return_status = SUCCESS;
45680 +       }
45681 +
45682 +       if (return_status == FAILED) {
45683 +               printk(KERN_INFO "qla2xxx_eh_abort Exiting: status=Failed\n");
45684 +               return FAILED;
45685 +       }
45686 +
45687 +       DEBUG(printk("qla2xxx_eh_abort: Exiting. return_status=0x%x.\n",
45688 +           return_status));
45689 +
45690 +       LEAVE("qla2xxx_eh_abort");
45691 +
45692 +       return(return_status);
45693 +}
45694 +
45695 +/**************************************************************************
45696 +* qla2x00_eh_wait_for_pending_target_commands
45697 +*
45698 +* Description:
45699 +*    Waits for all the commands to come back from the specified target.
45700 +*
45701 +* Input:
45702 +*    ha - pointer to scsi_qla_host structure.
45703 +*    t  - target       
45704 +* Returns:
45705 +*    Either SUCCESS or FAILED.
45706 +*
45707 +* Note:
45708 +**************************************************************************/
45709 +int
45710 +qla2x00_eh_wait_for_pending_target_commands(scsi_qla_host_t *ha, int t)
45711 +{
45712 +       int     cnt;
45713 +       int     status;
45714 +       unsigned long   flags;
45715 +       srb_t           *sp;
45716 +       Scsi_Cmnd       *cmd;
45717 +
45718 +       status = 0;
45719 +
45720 +       /*
45721 +        * Waiting for all commands for the designated target in the active
45722 +        * array
45723 +        */
45724 +       for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) {
45725 +               spin_lock_irqsave(&ha->hardware_lock, flags);
45726 +               sp = ha->outstanding_cmds[cnt];
45727 +               if (sp) {
45728 +                       cmd = sp->cmd;
45729 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
45730 +                       if (SCSI_TCN_32(cmd) == t) {
45731 +                               qla2x00_eh_wait_on_command(ha, cmd);
45732 +                       }
45733 +               }
45734 +               else {
45735 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
45736 +               }
45737 +       }
45738 +       return (status);
45739 +}
45740 +
45741 +
45742 +/**************************************************************************
45743 +* qla2xxx_eh_device_reset
45744 +*
45745 +* Description:
45746 +*    The device reset function will reset the target and abort any
45747 +*    executing commands.
45748 +*
45749 +*    NOTE: The use of SP is undefined within this context.  Do *NOT*
45750 +*          attempt to use this value, even if you determine it is 
45751 +*          non-null.
45752 +*
45753 +* Input:
45754 +*    cmd = Linux SCSI command packet of the command that cause the
45755 +*          bus device reset.
45756 +*
45757 +* Returns:
45758 +*    SUCCESS/FAILURE (defined as macro in scsi.h).
45759 +*
45760 +**************************************************************************/
45761 +int
45762 +qla2xxx_eh_device_reset(Scsi_Cmnd *cmd)
45763 +{
45764 +       int             return_status = SUCCESS;
45765 +       uint32_t        b, t, l;
45766 +       scsi_qla_host_t *ha;
45767 +
45768 +#if defined(LOGOUT_AFTER_DEVICE_RESET)
45769 +       os_lun_t        *lq;
45770 +       fc_port_t       *fcport;
45771 +#endif
45772 +
45773 +       ENTER(__func__);
45774 +
45775 +       if (cmd == NULL) {
45776 +               printk(KERN_INFO
45777 +                       "%s(): **** SCSI mid-layer passing in NULL cmd\n",
45778 +                       __func__);
45779 +                DEBUG2(BUG();)
45780 +
45781 +               return (FAILED);
45782 +       }
45783 +
45784 +       /* Verify the device exists. */
45785 +       ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
45786 +       ha->eh_start = 0;
45787 +       b = SCSI_BUS_32(cmd);
45788 +       t = SCSI_TCN_32(cmd);
45789 +       l = SCSI_LUN_32(cmd);
45790 +       if (TGT_Q(ha, t) == NULL) {
45791 +               printk(KERN_INFO
45792 +                       "%s(): **** CMD derives a NULL TGT_Q\n",
45793 +                       __func__);
45794 +                DEBUG2(BUG();)
45795 +
45796 +               return (FAILED);
45797 +       }
45798 +
45799 +       ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
45800 +
45801 +#if STOP_ON_RESET
45802 +       printk(debug_buff,"Resetting Device= 0x%x\n", (int)cmd);
45803 +/* WE SHOULD NOT call this function, since it dereferences SP */
45804 +       //qla2x00_print_scsi_cmd(cmd);
45805 +       qla2x00_panic(__func__, ha->host);
45806 +#endif
45807 +
45808 +       if (qla2x00_verbose)
45809 +               printk(KERN_INFO
45810 +                       "scsi(%ld:%d:%d:%d): DEVICE RESET ISSUED.\n",
45811 +                       ha->host_no, (int)b, (int)t, (int)l);
45812 +
45813 +       DEBUG2(printk("scsi(%ld): DEVICE_RESET cmd=%p jiffies = 0x%lx, "
45814 +               "timeout=%x, dpc_flags=%lx, status=%x allowed=%d "
45815 +               "cmd.state=%x\n",
45816 +               ha->host_no,
45817 +               cmd,
45818 +               jiffies,
45819 +               CMD_TIMEOUT(cmd)/HZ,
45820 +               ha->dpc_flags,
45821 +               cmd->result,
45822 +               cmd->allowed,
45823 +               cmd->state);)
45824 +/* WE SHOULD NOT call this function, since it dereferences SP */
45825 +       //qla2x00_print_scsi_cmd(cmd);
45826 +
45827 +       if (!((test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
45828 +               (test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags)) ||
45829 +               (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) ||
45830 +               (!atomic_read(&ha->loop_down_timer) &&
45831 +                ha->loop_state == LOOP_DOWN)||
45832 +               test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
45833 +               ha->loop_state != LOOP_READY)) {
45834 +
45835 +               clear_bit(DEVICE_RESET_NEEDED, &ha->dpc_flags);
45836 +
45837 +               spin_unlock_irq(ha->host->host_lock);
45838 +
45839 +               if (qla2x00_device_reset(ha, t, l) != 0) {
45840 +                       return_status = FAILED;
45841 +               }
45842 +
45843 +#if defined(LOGOUT_AFTER_DEVICE_RESET)
45844 +               if (return_status == SUCCESS) {
45845 +                       lq = (os_lun_t *)LUN_Q(ha, t, l);
45846 +                       fcport = lq->fclun->fcport;
45847 +
45848 +                       if (fcport->flags & FC_FABRIC_DEVICE) {
45849 +                               qla2x00_fabric_logout(ha,
45850 +                                               ha->fc_db[t].loop_id & 0xff);
45851 +                               ha->fc_db[t].flag |= DEV_RELOGIN;
45852 +                               qla2x00_mark_device_lost(ha, fcport);
45853 +                       }
45854 +               }
45855 +#endif
45856 +
45857 +               spin_lock_irq(ha->host->host_lock);
45858 +       } else {
45859 +               /*
45860 +                * Wait a while for the loop to come back. Return SUCCESS
45861 +                * for the kernel to try again.
45862 +                */
45863 +               spin_unlock_irq(ha->host->host_lock);
45864 +
45865 +               set_current_state(TASK_INTERRUPTIBLE);
45866 +               schedule_timeout(5 * HZ);
45867 +
45868 +               spin_lock_irq(ha->host->host_lock);
45869 +
45870 +               return_status = SUCCESS;
45871 +       }
45872 +
45873 +       if (return_status == FAILED) {
45874 +               DEBUG2(printk("%s() Exiting: Reset Failed\n", __func__);)
45875 +               return (FAILED);
45876 +       }
45877 +
45878 +       /* Waiting for all commands to complete for the device */
45879 +       if (qla2x00_eh_wait_for_pending_target_commands(ha, t))
45880 +               return_status = FAILED;
45881 +
45882 +       if (return_status == FAILED) {
45883 +               printk(KERN_INFO "%s() Exiting: status = Failed\n", __func__);
45884 +               return (FAILED);
45885 +       }
45886 +
45887 +       LEAVE(__func__);
45888 +
45889 +       return (return_status);
45890 +}
45891 +
45892 +/**************************************************************************
45893 +* qla2x00_eh_wait_for_pending_commands
45894 +*
45895 +* Description:
45896 +*    Waits for all the commands to come back from the specified host.
45897 +*
45898 +* Input:
45899 +*    ha - pointer to scsi_qla_host structure.
45900 +*
45901 +* Returns:
45902 +*    1 : SUCCESS
45903 +*    0 : FAILED
45904 +*
45905 +* Note:
45906 +**************************************************************************/
45907 +int
45908 +qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *ha)
45909 +{
45910 +       int     cnt;
45911 +       int     status;
45912 +       unsigned long   flags;
45913 +       srb_t           *sp;
45914 +       Scsi_Cmnd       *cmd;
45915 +
45916 +       status = 1;
45917 +
45918 +       /*
45919 +        * Waiting for all commands for the designated target in the active
45920 +        * array
45921 +        */
45922 +       for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) {
45923 +               spin_lock_irqsave(&ha->hardware_lock, flags);
45924 +               sp = ha->outstanding_cmds[cnt];
45925 +               if (sp) {
45926 +                       cmd = sp->cmd;
45927 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
45928 +                               status = qla2x00_eh_wait_on_command(ha, cmd);
45929 +               }
45930 +               else {
45931 +                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
45932 +               }
45933 +       }
45934 +       return (status);
45935 +}
45936 +
45937 +
45938 +/**************************************************************************
45939 +* qla2xxx_eh_bus_reset
45940 +*
45941 +* Description:
45942 +*    The bus reset function will reset the bus and abort any executing
45943 +*    commands.
45944 +*
45945 +* Input:
45946 +*    cmd = Linux SCSI command packet of the command that cause the
45947 +*          bus reset.
45948 +*
45949 +* Returns:
45950 +*    SUCCESS/FAILURE (defined as macro in scsi.h).
45951 +*
45952 +**************************************************************************/
45953 +int
45954 +qla2xxx_eh_bus_reset(Scsi_Cmnd *cmd)
45955 +{
45956 +       int        return_status = SUCCESS;
45957 +       uint32_t   b, t, l;
45958 +       srb_t      *sp;
45959 +       int     found;
45960 +       struct list_head *hal;
45961 +       scsi_qla_host_t *ha, *search_ha;
45962 +
45963 +
45964 +       ENTER("qla2xxx_eh_bus_reset");
45965 +
45966 +       if (cmd == NULL) {
45967 +               printk(KERN_INFO
45968 +                       "%s(): **** SCSI mid-layer passing in NULL cmd\n",
45969 +                       __func__);
45970 +                DEBUG2(BUG();)
45971 +
45972 +               return (FAILED);
45973 +       }
45974 +
45975 +       b = SCSI_BUS_32(cmd);
45976 +       t = SCSI_TCN_32(cmd);
45977 +       l = SCSI_LUN_32(cmd);
45978 +
45979 +       ha = (scsi_qla_host_t *) cmd->device->host->hostdata;
45980 +       ha->eh_start=0;
45981 +       sp = (srb_t *) CMD_SP(cmd);
45982 +
45983 +       if (ha == NULL) {
45984 +               printk(KERN_INFO
45985 +                       "%s(): **** CMD derives a NULL HA\n",
45986 +                       __func__);
45987 +                DEBUG2(BUG();)
45988 +
45989 +               return (FAILED);
45990 +       }
45991 +
45992 +       found = 0;
45993 +       read_lock(&qla_hostlist_lock);
45994 +       list_for_each(hal, &qla_hostlist) {
45995 +               search_ha = list_entry(hal, scsi_qla_host_t, list);
45996 +
45997 +               if (search_ha == ha) {
45998 +                       found ++;
45999 +                       break;
46000 +               }
46001 +       }
46002 +       read_unlock(&qla_hostlist_lock);
46003 +
46004 +       if (!found) {
46005 +               printk(KERN_INFO
46006 +                       "%s(): **** CMD derives a NULL search HA\n",
46007 +                       __func__);
46008 +                DEBUG2(BUG();)
46009 +
46010 +               return (FAILED);
46011 +       }
46012 +
46013 +#if  STOP_ON_RESET
46014 +       printk("Resetting the Bus= 0x%x\n", (int)cmd);
46015 +       qla2x00_print_scsi_cmd(cmd);
46016 +       qla2x00_panic("qla2100_reset", ha->host);
46017 +#endif
46018 +
46019 +       if (qla2x00_verbose)
46020 +               printk(KERN_INFO
46021 +                       "scsi(%ld:%d:%d:%d): LOOP RESET ISSUED.\n",
46022 +                       ha->host_no, (int)b, (int)t, (int)l);
46023 +
46024 +       if (!((test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
46025 +               (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) ||
46026 +               (!atomic_read(&ha->loop_down_timer) &&
46027 +                ha->loop_state == LOOP_DOWN)||
46028 +               test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
46029 +               ha->loop_state != LOOP_READY)) {
46030 +
46031 +               clear_bit(LOOP_RESET_NEEDED, &ha->dpc_flags);
46032 +               spin_unlock_irq(ha->host->host_lock);
46033 +
46034 +               if (qla2x00_loop_reset(ha) != 0) {
46035 +                       return_status = FAILED;
46036 +               }
46037 +               spin_lock_irq(ha->host->host_lock);
46038 +       } else {
46039 +               /*
46040 +                * Wait a while for the loop to come back. Return SUCCESS
46041 +                * for the kernel to try again.
46042 +                */
46043 +               spin_unlock_irq(ha->host->host_lock);
46044 +
46045 +               set_current_state(TASK_INTERRUPTIBLE);
46046 +               schedule_timeout(5 * HZ);
46047 +
46048 +               spin_lock_irq(ha->host->host_lock);
46049 +
46050 +               return_status = SUCCESS;
46051 +       }
46052 +
46053 +       if (return_status == FAILED) {
46054 +               DEBUG2(printk("qla2xxx_eh_bus_reset Exiting: Reset Failed\n");)
46055 +               printk("qla2xxx_eh_bus_reset Exiting: Reset Failed\n");
46056 +               return FAILED;
46057 +       }
46058 +
46059 +       /* Blocking Call. It goes to sleep waiting for cmd to get to done q */
46060 +        /* Waiting for our command in done_queue to be returned to OS.*/
46061 +
46062 +       if ( qla2x00_eh_wait_for_pending_commands(ha) == 0) {
46063 +               return_status = FAILED;
46064 +       }
46065 +
46066 +       if(return_status == FAILED) {
46067 +               printk(KERN_INFO "qla2xxx_eh_bus_reset Exiting: status=Failed\n");
46068 +               return FAILED;
46069 +       } else
46070 +               printk(KERN_INFO "qla2xxx_eh_bus_reset Exiting: status=SUCCESS\n");
46071 +
46072 +       LEAVE("qla2xxx_eh_bus_reset");
46073 +
46074 +       return (return_status);
46075 +}
46076 +
46077 +/**************************************************************************
46078 +* qla2xxx_eh_host_reset
46079 +*
46080 +* Description:
46081 +*    The reset function will reset the Adapter.
46082 +*
46083 +* Input:
46084 +*      cmd = Linux SCSI command packet of the command that cause the
46085 +*            adapter reset.
46086 +*
46087 +* Returns:
46088 +*      Either SUCCESS or FAILED.
46089 +*
46090 +* Note:
46091 +**************************************************************************/
46092 +int
46093 +qla2xxx_eh_host_reset(Scsi_Cmnd *cmd)
46094 +{
46095 +       int             return_status = SUCCESS;
46096 +       srb_t           *sp;
46097 +       uint32_t        b, t, l;
46098 +       int     found;
46099 +       struct list_head *hal;
46100 +       scsi_qla_host_t *ha, *search_ha;
46101 +
46102 +       ENTER("qla2xxx_eh_host_reset");
46103 +
46104 +       if (cmd == NULL) {
46105 +               printk(KERN_INFO
46106 +                       "%s(): **** SCSI mid-layer passing in NULL cmd\n",
46107 +                       __func__);
46108 +                DEBUG2(BUG();)
46109 +
46110 +               return (FAILED);
46111 +       }
46112 +
46113 +       ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
46114 +       ha->eh_start= 0;
46115 +       /* Find actual ha */
46116 +       sp = (srb_t *)CMD_SP(cmd);
46117 +       if (ha->flags.failover_enabled && sp != NULL)
46118 +               ha = sp->ha;
46119 +       else
46120 +               ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
46121 +
46122 +       if (ha == NULL) {
46123 +               printk(KERN_INFO
46124 +                       "%s(): **** CMD derives a NULL HA\n",
46125 +                       __func__);
46126 +                DEBUG2(BUG();)
46127 +
46128 +               return (FAILED);
46129 +       }
46130 +
46131 +       found = 0;
46132 +       read_lock(&qla_hostlist_lock);
46133 +       list_for_each(hal, &qla_hostlist) {
46134 +               search_ha = list_entry(hal, scsi_qla_host_t, list);
46135 +
46136 +               if (search_ha == ha) {
46137 +                       found ++;
46138 +                       break;
46139 +               }
46140 +       }
46141 +       read_unlock(&qla_hostlist_lock);
46142 +
46143 +       if (!found) {
46144 +               printk(KERN_INFO
46145 +                       "%s(): **** CMD derives a NULL search HA\n",
46146 +                       __func__);
46147 +                DEBUG2(BUG();)
46148 +
46149 +               return (FAILED);
46150 +       }
46151 +
46152 +       /* Display which one we're actually resetting for debug. */
46153 +       DEBUG(printk("qla2xxx_eh_host_reset: entered for scsi%ld. "
46154 +                       "Resetting host_no %ld.\n", 
46155 +                       ((scsi_qla_host_t *)cmd->device->host->hostdata)->host_no,
46156 +                       ha->host_no));
46157 +
46158 +#if  STOP_ON_RESET
46159 +       printk("Host Reset...  Command=\n");
46160 +       qla2x00_print_scsi_cmd(cmd);
46161 +       qla2x00_panic("qla2xxx_eh_host_reset", ha->host);
46162 +#endif
46163 +
46164 +       /*
46165 +        *  Now issue reset.
46166 +        */
46167 +       b = SCSI_BUS_32(cmd);
46168 +       t = SCSI_TCN_32(cmd);
46169 +       l = SCSI_LUN_32(cmd);
46170 +
46171 +       if (qla2x00_verbose) {
46172 +               printk(KERN_INFO
46173 +                       "scsi(%ld:%d:%d:%d): now issue ADAPTER RESET.\n",
46174 +                       ((scsi_qla_host_t *)cmd->device->host->hostdata)->host_no,
46175 +                       (int)b, 
46176 +                       (int)t, 
46177 +                       (int)l);
46178 +       }
46179 +
46180 +       DEBUG2(printk(KERN_INFO
46181 +           "scsi(%ld:%d:%d:%d): now issue ADAPTER RESET.\n",
46182 +           ((scsi_qla_host_t *)cmd->device->host->hostdata)->host_no,
46183 +           (int)b, (int)t, (int)l));
46184 +
46185 +       if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags))) {
46186 +               set_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
46187 +
46188 +               spin_unlock_irq(ha->host->host_lock);
46189 +
46190 +               if (qla2x00_abort_isp(ha, 1)) {
46191 +                       /* failed. try later */
46192 +                       set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
46193 +                       return_status = FAILED;
46194 +
46195 +                       DEBUG2(printk(KERN_WARNING
46196 +                           "scsi(%ld:%d:%d:%d): ha %ld ADAPTER RESET "
46197 +                           "failed. Scheduled retry later.\n",
46198 +                           ((scsi_qla_host_t *)cmd->device->host->hostdata)->host_no,
46199 +                           (int)b, (int)t, (int)l, ha->host_no);)
46200 +               } else {
46201 +                       return_status = SUCCESS;
46202 +               }
46203 +
46204 +               spin_lock_irq(ha->host->host_lock);
46205 +
46206 +               clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
46207 +       } else {
46208 +               /*
46209 +                * Already active. Sleep a while then return SUCCESS for kernel
46210 +                * to retry the IO.
46211 +                */
46212 +               spin_unlock_irq(ha->host->host_lock);
46213 +
46214 +               set_current_state(TASK_INTERRUPTIBLE);
46215 +               schedule_timeout(5 * HZ);
46216 +
46217 +               spin_lock_irq(ha->host->host_lock);
46218 +
46219 +               return_status = SUCCESS;
46220 +       }
46221 +       if ( return_status == FAILED) {
46222 +               DEBUG2(printk("qla2xxx_eh_host_reset Exiting: Reset Failed\n");)
46223 +               return FAILED;
46224 +       }
46225 +
46226 +       /* Waiting for our command in done_queue to be returned to OS.*/
46227 +       if ( qla2x00_eh_wait_for_pending_commands(ha) == 0) {
46228 +               return_status = FAILED;
46229 +       }
46230 +
46231 +       if(return_status == FAILED) {
46232 +               printk(KERN_INFO "qla2xxx_eh_host_reset Exiting: status=Failed\n");
46233 +               return FAILED;
46234 +       } else
46235 +               printk(KERN_INFO "qla2xxx_eh_host_reset Exiting: status=SUCCESS\n");
46236 +
46237 +       LEAVE("qla2xxx_eh_host_reset");
46238 +
46239 +       return(return_status);
46240 +}
46241 +
46242 +
46243 +/*
46244 +* qla2x00_loop_reset
46245 +*      Issue loop reset.
46246 +*
46247 +* Input:
46248 +*      ha = adapter block pointer.
46249 +*
46250 +* Returns:
46251 +*      0 = success
46252 +*/
46253 +static uint8_t
46254 +qla2x00_loop_reset(scsi_qla_host_t *ha)
46255 +{
46256 +       uint8_t  status = QL_STATUS_SUCCESS;
46257 +       uint16_t t;
46258 +       os_tgt_t        *tq;
46259 +
46260 +       ENTER(__func__);
46261 +
46262 +       if (ha->flags.enable_lip_reset) {
46263 +               status = qla2x00_lip_reset(ha);
46264 +       }
46265 +
46266 +       if (status == QL_STATUS_SUCCESS && ha->flags.enable_target_reset) {
46267 +               for (t = 0; t < MAX_FIBRE_DEVICES; t++) {
46268 +                       if ((tq = TGT_Q(ha, t)) == NULL)
46269 +                               continue;
46270 +
46271 +                       if (tq->vis_port == NULL)
46272 +                               continue;
46273 +
46274 +                       status = qla2x00_target_reset(ha, 0, t);
46275 +                       if (status != QL_STATUS_SUCCESS) {
46276 +                               break;
46277 +                       }
46278 +               }
46279 +       }
46280 +
46281 +       if (status == QL_STATUS_SUCCESS &&
46282 +               ((!ha->flags.enable_target_reset && 
46283 +                 !ha->flags.enable_lip_reset) ||
46284 +               ha->flags.enable_lip_full_login)) {
46285 +
46286 +               status = qla2x00_full_login_lip(ha);
46287 +       }
46288 +
46289 +       /* Issue marker command only when we are going to start the I/O */
46290 +       ha->marker_needed = 1;
46291 +
46292 +       if (status) {
46293 +               /* Empty */
46294 +               DEBUG2_3(printk("%s(%ld): **** FAILED ****\n",
46295 +                               __func__,
46296 +                               ha->host_no);)
46297 +       } else {
46298 +               /* Empty */
46299 +               DEBUG3(printk("%s(%ld): exiting normally.\n",
46300 +                               __func__,
46301 +                               ha->host_no);)
46302 +       }
46303 +
46304 +       LEAVE(__func__);
46305 +
46306 +       return(status);
46307 +}
46308 +
46309 +/*
46310 + * qla2x00_device_reset
46311 + *     Issue bus device reset message to the target.
46312 + *
46313 + * Input:
46314 + *     ha = adapter block pointer.
46315 + *     t = SCSI ID.
46316 + *     TARGET_QUEUE_LOCK must be released.
46317 + *     ADAPTER_STATE_LOCK must be released.
46318 + *
46319 + * Context:
46320 + *     Kernel context.
46321 + */
46322 +static int
46323 +qla2x00_device_reset(scsi_qla_host_t *vis_ha, uint16_t tgt, uint16_t lun)
46324 +{
46325 +#if !USE_ABORT_TGT
46326 +       uint16_t        l;
46327 +       fc_port_t       *fcport;
46328 +#endif
46329 +       os_lun_t        *lq;
46330 +       uint8_t         status = 0;
46331 +
46332 +       ENTER(__func__);
46333 +
46334 +#if USE_ABORT_TGT
46335 +       /* Abort Target command will clear Reservation */
46336 +       lq = GET_LU_Q(vis_ha, tgt, lun);
46337 +       if (lq && lq->fclun)
46338 +                status = qla2x00_abort_target(lq->fclun->fcport);
46339 +#else
46340 +       /* Abort Device command will not clear Reservation */
46341 +       for (l = 0; l < MAX_LUNS; l++) {
46342 +               lq = GET_LU_Q(vis_ha, tgt, l);
46343 +               if (lq == NULL)
46344 +                       continue;
46345 +
46346 +               fcport = lq->fclun->fcport;
46347 +               if (LOOP_RDY(fcport->ha)) {
46348 +                       qla2x00_abort_device(fcport->ha, 
46349 +                                       fcport->loop_id,
46350 +                                       lq->fclun->lun);
46351 +               }
46352 +       }
46353 +#endif
46354 +
46355 +       LEAVE(__func__);
46356 +
46357 +       return( status );
46358 +}
46359 +
46360 +/**************************************************************************
46361 +* qla1200_biosparam
46362 +*
46363 +* Description:
46364 +*   Return the disk geometry for the given SCSI device.
46365 +**************************************************************************/
46366 +int
46367 +qla2x00_biosparam(struct scsi_device *sdev,
46368 +    struct block_device *bdev, sector_t capacity, int geom[])
46369 +{
46370 +       int heads, sectors, cylinders;
46371 +
46372 +       heads = 64;
46373 +       sectors = 32;
46374 +       cylinders = (unsigned long)capacity / (heads * sectors);
46375 +       if (cylinders > 1024) {
46376 +               heads = 255;
46377 +               sectors = 63;
46378 +               cylinders = (unsigned long)capacity / (heads * sectors);
46379 +       }
46380 +
46381 +       geom[0] = heads;
46382 +       geom[1] = sectors;
46383 +       geom[2] = cylinders;
46384 +
46385 +       return (0);
46386 +}
46387 +
46388 +/**************************************************************************
46389 + * qla2x00_slave_configure
46390 + *   Determines the queue depth for a given device.  There are two ways
46391 + *   a queue depth can be obtained for a tagged queueing device.  One
46392 + *   way is the default queue depth which is determined by whether
46393 + *   If it is defined, then it is used
46394 + *   as the default queue depth.  Otherwise, we use either 4 or 8 as the
46395 + *   default queue depth (dependent on the number of hardware SCBs).
46396 + **************************************************************************/
46397 +int
46398 +qla2xxx_slave_configure(Scsi_Device * device)
46399 +{
46400 +       int queue_depth = 64;
46401 +
46402 +       if (device->tagged_supported) {
46403 +#if defined(MODULE)
46404 +               if (!(ql2xmaxqdepth == 0 || ql2xmaxqdepth > 256))
46405 +                       queue_depth = ql2xmaxqdepth;
46406 +#endif 
46407 +               ql2xmaxqdepth = queue_depth;
46408 +
46409 +               scsi_adjust_queue_depth(device, MSG_ORDERED_TAG, queue_depth);
46410 +
46411 +               printk(KERN_INFO
46412 +                   "scsi(%d:%d:%d:%d): Enabled tagged queuing, queue "
46413 +                   "depth %d.\n",
46414 +                   device->host->host_no,
46415 +                   device->channel, device->id, device->lun,
46416 +                   device->queue_depth);
46417 +       } else {
46418 +                scsi_adjust_queue_depth(device, 0 /* TCQ off */,
46419 +                    device->host->hostt->cmd_per_lun /* 3 */);
46420 +       }
46421 +
46422 +       return (0);
46423 +}
46424 +
46425 +/*
46426 + * PCI driver interface
46427 + */
46428 +static int __devinit
46429 +qla_probe_device(struct pci_dev *pdev, const struct pci_device_id *ent)
46430 +{
46431 +       device_reg_t    *reg;
46432 +       struct Scsi_Host *host;
46433 +       scsi_qla_host_t *ha;
46434 +       unsigned long           flags = 0;
46435 +       unsigned long           wait_switch = 0;
46436 +
46437 +       if (pci_enable_device(pdev))
46438 +               return -1;
46439 +
46440 +       printk(KERN_INFO
46441 +           "qla2x00: Found VID=%x DID=%x SSVID=%x SSDID=%x\n",
46442 +           pdev->vendor, pdev->device,
46443 +           pdev->subsystem_vendor, pdev->subsystem_device);
46444 +
46445 +       if (ql2xfailover) {
46446 +               sprintf(qla2x00_version_str, "%s-fo", QLA2100_VERSION);
46447 +       } else {
46448 +               sprintf(qla2x00_version_str, "%s", QLA2100_VERSION);
46449 +       }
46450 +
46451 +       host = scsi_register(&qla2x00_driver_template, sizeof(scsi_qla_host_t));
46452 +       if (host == NULL) {
46453 +               printk(KERN_WARNING
46454 +                   "qla2x00: Couldn't register with scsi layer!\n");
46455 +               return -1;
46456 +       }
46457 +
46458 +       /* Clear our data area */
46459 +       ha = (scsi_qla_host_t *)host->hostdata;
46460 +       memset(ha, 0, sizeof(scsi_qla_host_t));
46461 +
46462 +       ha->host_no = host->host_no;
46463 +       ha->host = host;
46464 +
46465 +       /* Sanitize the information from PCI BIOS. */
46466 +       host->irq = pdev->irq;
46467 +       host->io_port = pci_resource_start(pdev, 0);
46468 +       ha->pdev = pdev;
46469 +       scsi_set_device(host, &pdev->dev);
46470 +
46471 +       ha->brd_info = (struct qla_board_info *)ent->driver_data;
46472 +
46473 +       if (qla2x00_verbose) {
46474 +               printk(KERN_INFO
46475 +                   "scsi(%d): Found a %s @ bus %d, device 0x%x, irq %d, "
46476 +                   "iobase 0x%lx\n",
46477 +                   host->host_no,
46478 +                   ha->brd_info->name,
46479 +                   ha->pdev->bus->number,
46480 +                   PCI_SLOT(ha->pdev->devfn),
46481 +                   host->irq, host->io_port);
46482 +       }
46483 +
46484 +       ha->iobase = (device_reg_t *) host->io_port;
46485 +
46486 +       spin_lock_init(&ha->hardware_lock);
46487 +
46488 +       /* 4.23 Initialize /proc/scsi/qla2x00 counters */
46489 +       ha->actthreads = 0;
46490 +       ha->qthreads   = 0;
46491 +       ha->dump_done  = 0;
46492 +       ha->total_isr_cnt = 0;
46493 +       ha->total_isp_aborts = 0;
46494 +       ha->total_lip_cnt = 0;
46495 +       ha->total_dev_errs = 0;
46496 +       ha->total_ios = 0;
46497 +       ha->total_bytes = 0;
46498 +
46499 +       if (qla2x00_mem_alloc(ha)) {
46500 +               printk(KERN_WARNING
46501 +                   "scsi(%d): [ERROR] Failed to allocate memory for adapter\n",
46502 +                   host->host_no);
46503 +
46504 +               qla2x00_mem_free(ha);
46505 +
46506 +               scsi_unregister(host);
46507 +
46508 +               return -1;
46509 +       }
46510 +
46511 +       ha->prev_topology = 0;
46512 +       ha->ports = MAX_BUSES;
46513 +
46514 +#if defined(ISP2100)
46515 +       ha->max_targets = MAX_TARGETS_2100;
46516 +#else
46517 +       ha->max_targets = MAX_TARGETS_2200;
46518 +#endif
46519 +
46520 +       /* load the F/W, read paramaters, and init the H/W */
46521 +       ha->instance = num_hosts;
46522 +
46523 +       init_MUTEX_LOCKED(&ha->mbx_intr_sem);
46524 +
46525 +       INIT_LIST_HEAD(&ha->list);
46526 +       INIT_LIST_HEAD(&ha->fcports);
46527 +       INIT_LIST_HEAD(&ha->fcinitiators);
46528 +       INIT_LIST_HEAD(&ha->done_queue);
46529 +       INIT_LIST_HEAD(&ha->retry_queue);
46530 +       INIT_LIST_HEAD(&ha->scsi_retry_queue);
46531 +       INIT_LIST_HEAD(&ha->failover_queue);
46532 +       INIT_LIST_HEAD(&ha->pending_queue);
46533 +
46534 +       if (ql2xfailover)
46535 +               ha->flags.failover_enabled = 1;
46536 +       else
46537 +               ha->flags.failover_enabled = 0;
46538 +
46539 +       INIT_WORK(&ha->run_qla_task, qla2x00_done_work, (void *) ha);
46540 +
46541 +       /*
46542 +        * These locks are used to prevent more than one CPU
46543 +        * from modifying the queue at the same time. The
46544 +        * higher level "io_request_lock" will reduce most
46545 +        * contention for these locks.
46546 +        */
46547 +       spin_lock_init(&ha->mbx_bits_lock);
46548 +       spin_lock_init(&ha->mbx_reg_lock);
46549 +       spin_lock_init(&ha->mbx_q_lock);
46550 +       spin_lock_init(&ha->list_lock);
46551 +
46552 +       if (qla2x00_initialize_adapter(ha) &&
46553 +           !(ha->device_flags & DFLG_NO_CABLE)) {
46554 +
46555 +               printk(KERN_WARNING
46556 +                   "scsi(%ld): Failed to initialize adapter\n", ha->host_no);
46557 +
46558 +               DEBUG2(printk("scsi(%ld): Failed to initialize adapter - "
46559 +                   "Adapter flags %x.\n",
46560 +                   ha->host_no, ha->device_flags));
46561 +
46562 +               qla2x00_mem_free(ha);
46563 +
46564 +               scsi_unregister(host);
46565 +
46566 +               return -1;
46567 +       }
46568 +
46569 +       /*
46570 +        * Startup the kernel thread for this host adapter
46571 +        */
46572 +       init_completion(&ha->dpc_inited);
46573 +       init_completion(&ha->dpc_exited);
46574 +
46575 +       ha->dpc_should_die = 0;
46576 +       ha->dpc_pid = kernel_thread(qla2x00_do_dpc, ha, 0);
46577 +       if (ha->dpc_pid < 0) {
46578 +               printk(KERN_WARNING
46579 +                   "scsi(%ld): Unable to start DPC thread!\n", ha->host_no);
46580 +
46581 +               qla2x00_mem_free(ha);
46582 +
46583 +               scsi_unregister(host);
46584 +
46585 +               return -1;
46586 +       }
46587 +       wait_for_completion(&ha->dpc_inited);
46588 +
46589 +       /*  Mark preallocated Loop IDs in use. */
46590 +       ha->fabricid[SNS_FL_PORT].in_use = TRUE;
46591 +       ha->fabricid[FABRIC_CONTROLLER].in_use = TRUE;
46592 +       ha->fabricid[SIMPLE_NAME_SERVER].in_use = TRUE;
46593 +
46594 +       /* Register our resources with Linux */
46595 +       if (qla2x00_register_with_Linux(ha, ha->ports - 1)) {
46596 +               printk(KERN_WARNING
46597 +                   "scsi(%ld): Failed to register resources.\n",
46598 +                   ha->host_no);
46599 +
46600 +               qla2x00_mem_free(ha);
46601 +
46602 +               scsi_unregister(host);
46603 +
46604 +               return -1;
46605 +       }
46606 +
46607 +       DEBUG2(printk("DEBUG: detect hba %ld at address = %p\n",
46608 +           ha->host_no, ha));
46609 +
46610 +       reg = ha->iobase;
46611 +
46612 +       /* Disable ISP interrupts. */
46613 +       qla2x00_disable_intrs(ha);
46614 +
46615 +       /* Ensure mailbox registers are free. */
46616 +       spin_lock_irqsave(&ha->hardware_lock, flags);
46617 +       WRT_REG_WORD(&reg->semaphore, 0);
46618 +       WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
46619 +       WRT_REG_WORD(&reg->hccr, HCCR_CLR_HOST_INT);
46620 +
46621 +       /* Enable proper parity */
46622 +#if defined(ISP2300)
46623 +       if (ha->pdev->device == QLA2312_DEVICE_ID ||
46624 +           ha->pdev->device == QLA2322_DEVICE_ID)
46625 +               /* SRAM, Instruction RAM and GP RAM parity */
46626 +               WRT_REG_WORD(&reg->hccr, (HCCR_ENABLE_PARITY + 0x7));
46627 +       else
46628 +               /* SRAM parity */
46629 +               WRT_REG_WORD(&reg->hccr, (HCCR_ENABLE_PARITY + 0x1));
46630 +#endif
46631 +       spin_unlock_irqrestore(&ha->hardware_lock, flags);
46632 +
46633 +       /*
46634 +        * if failover is enabled read the user configuration
46635 +        */
46636 +       if (ha->flags.failover_enabled) {
46637 +               if (ConfigRequired > 0)
46638 +                       mp_config_required = 1;
46639 +               else
46640 +                       mp_config_required = 0;
46641 +
46642 +               DEBUG(printk("qla2x00_detect: qla2x00_cfg_init for hba %ld\n",
46643 +                   ha->instance));
46644 +
46645 +               qla2x00_cfg_init(ha);
46646 +       }
46647 +
46648 +       /* Enable chip interrupts. */
46649 +       qla2x00_enable_intrs(ha);
46650 +
46651 +       /* Insert new entry into the list of adapters */
46652 +       write_lock(&qla_hostlist_lock);
46653 +       list_add_tail(&ha->list, &qla_hostlist);
46654 +       write_unlock(&qla_hostlist_lock);
46655 +
46656 +       /* v2.19.5b6 */
46657 +       /*
46658 +        * Wait around max loop_reset_delay secs for the devices to come
46659 +        * on-line. We don't want Linux scanning before we are ready.
46660 +        *
46661 +        */
46662 +       for (wait_switch = jiffies + (ha->loop_reset_delay * HZ);
46663 +           time_before(jiffies,wait_switch) &&
46664 +            !(ha->device_flags & (DFLG_NO_CABLE | DFLG_FABRIC_DEVICES))
46665 +            && (ha->device_flags & SWITCH_FOUND) ;) {
46666 +
46667 +               qla2x00_check_fabric_devices(ha);
46668 +
46669 +               set_current_state(TASK_INTERRUPTIBLE);
46670 +               schedule_timeout(5);
46671 +       }
46672 +
46673 +       /* List the target we have found */
46674 +       if (displayConfig && (!ha->flags.failover_enabled))
46675 +               qla2x00_display_fc_names(ha);
46676 +
46677 +       pci_set_drvdata(pdev, ha);
46678 +       ha->init_done = 1;
46679 +       num_hosts++;
46680 +
46681 +       if (displayConfig && ha->flags.failover_enabled)
46682 +               qla2x00_cfg_display_devices();
46683 +
46684 +       return 0;
46685 +}
46686 +
46687 +static void __devexit
46688 +qla_remove_device(struct pci_dev *pdev)
46689 +{
46690 +       struct list_head *hal, *temp;
46691 +       scsi_qla_host_t *ha, *iter_ha;
46692 +
46693 +       ha = pci_get_drvdata(pdev);
46694 +
46695 +       /* Sanity check -- make sure the entry is in our list */
46696 +       write_lock(&qla_hostlist_lock);
46697 +       list_for_each_safe(hal, temp, &qla_hostlist) {
46698 +               iter_ha = list_entry(hal, scsi_qla_host_t, list);
46699 +                                                
46700 +               if (iter_ha == ha) {
46701 +                       list_del(&ha->list);
46702 +                       qla2x00_free_device(ha);
46703 +                       break;
46704 +               }
46705 +       }
46706 +       write_unlock(&qla_hostlist_lock);
46707 +}
46708 +
46709 +static void
46710 +qla2x00_free_device(scsi_qla_host_t *ha)
46711 +{
46712 +       int ret;
46713 +       struct Scsi_Host *host;
46714 +
46715 +       host = ha->host;
46716 +
46717 +       /* turn-off interrupts on the card */
46718 +       if (ha->interrupts_on)
46719 +               qla2x00_disable_intrs(ha);
46720 +
46721 +       /* Detach interrupts */
46722 +       if (host->irq)
46723 +               free_irq(host->irq, ha);
46724 +
46725 +       /* release io space registers  */
46726 +       if (host->io_port)
46727 +               release_region(host->io_port, 0xff);
46728 +
46729 +       /* Disable timer */
46730 +       if (ha->timer_active)
46731 +               qla2x00_stop_timer(ha);
46732 +
46733 +       /* Kill the kernel thread for this host */
46734 +       if (ha->dpc_pid >= 0) {
46735 +               ha->dpc_should_die = 1;
46736 +               wmb();
46737 +               ret = kill_proc(ha->dpc_pid, SIGTERM, 1);
46738 +               if (ret) {
46739 +                       printk(KERN_ERR
46740 +                           "scsi(%ld): Unable to signal DPC thread -- (%d)\n",
46741 +                           ha->host_no, ret);
46742 +
46743 +                       /* TODO: SOMETHING MORE??? */
46744 +               } else {
46745 +                       wait_for_completion(&ha->dpc_exited);
46746 +               }
46747 +       }
46748 +
46749 +#if MEMORY_MAPPED_IO
46750 +       if (ha->mmpbase) {
46751 +               iounmap((void *) (((unsigned long) ha->mmpbase) & PAGE_MASK));
46752 +       }
46753 +#endif
46754 +
46755 +       apidev_cleanup();
46756 +
46757 +       qla2x00_mem_free(ha);
46758 +
46759 +       if (ha->flags.failover_enabled)
46760 +               qla2x00_cfg_mem_free(ha);
46761 +
46762 +       ha->flags.online = FALSE;
46763 +
46764 +       scsi_unregister(host);
46765 +}
46766 +
46767 +
46768 +/*
46769 + * The following support functions are adopted to handle
46770 + * the re-entrant qla2x00_proc_info correctly.
46771 + */
46772 +static void
46773 +copy_mem_info(struct info_str *info, char *data, int len)
46774 +{
46775 +       if (info->pos + len > info->offset + info->length)
46776 +               len = info->offset + info->length - info->pos;
46777 +
46778 +       if (info->pos + len < info->offset) {
46779 +               info->pos += len;
46780 +               return;
46781 +       }
46782
46783 +       if (info->pos < info->offset) {
46784 +               off_t partial;
46785
46786 +               partial = info->offset - info->pos;
46787 +               data += partial;
46788 +               info->pos += partial;
46789 +               len  -= partial;
46790 +       }
46791
46792 +       if (len > 0) {
46793 +               memcpy(info->buffer, data, len);
46794 +               info->pos += len;
46795 +               info->buffer += len;
46796 +       }
46797 +}
46798 +
46799 +static int
46800 +copy_info(struct info_str *info, char *fmt, ...)
46801 +{
46802 +       va_list args;
46803 +       char buf[256];
46804 +       int len;
46805
46806 +       va_start(args, fmt);
46807 +       len = vsprintf(buf, fmt, args);
46808 +       va_end(args);
46809
46810 +       copy_mem_info(info, buf, len);
46811 +
46812 +       return (len);
46813 +}
46814 +
46815 +/*************************************************************************
46816 +* qla2x00_proc_info
46817 +*
46818 +* Description:
46819 +*   Return information to handle /proc support for the driver.
46820 +*
46821 +* inout : decides the direction of the dataflow and the meaning of the
46822 +*         variables
46823 +* buffer: If inout==FALSE data is being written to it else read from it
46824 +*         (ptr to a page buffer)
46825 +* *start: If inout==FALSE start of the valid data in the buffer
46826 +* offset: If inout==FALSE starting offset from the beginning of all
46827 +*         possible data to return.
46828 +* length: If inout==FALSE max number of bytes to be written into the buffer
46829 +*         else number of bytes in "buffer"
46830 +* Returns:
46831 +*         < 0:  error. errno value.
46832 +*         >= 0: sizeof data returned.
46833 +*************************************************************************/
46834 +int
46835 +qla2x00_proc_info(char *buffer,
46836 +    char **start, off_t offset, int length, int hostno, int inout)
46837 +{
46838 +       struct Scsi_Host *host;
46839 +       struct info_str info;
46840 +       int             i;
46841 +       int             retval = -EINVAL;
46842 +       os_lun_t        *up;
46843 +       uint32_t        t, l;
46844 +       uint32_t        tmp_sn;
46845 +       unsigned long   *flags;
46846 +       struct list_head *list, *temp;
46847 +       unsigned long   cpu_flags;
46848 +       uint8_t         *loop_state;
46849 +#if REQ_TRACE
46850 +       Scsi_Cmnd       *cp;
46851 +       srb_t           *sp;
46852 +#endif
46853 +       int     found;
46854 +       struct list_head *hal;
46855 +       scsi_qla_host_t *ha;
46856 +
46857 +       DEBUG3(printk(KERN_INFO
46858 +           "Entering proc_info buff_in=%p, offset=0x%lx, length=0x%x, "
46859 +           "hostno=%d\n", buffer, offset, length, hostno);)
46860 +
46861 +       ha = NULL;
46862 +       host = NULL;
46863 +
46864 +       /* Find the host that was specified */
46865 +       found = 0;
46866 +       read_lock(&qla_hostlist_lock);
46867 +       list_for_each(hal, &qla_hostlist) {
46868 +               ha = list_entry(hal, scsi_qla_host_t, list);
46869 +
46870 +               if (ha->host->host_no == hostno) {
46871 +                       found++;
46872 +                       break;
46873 +               }
46874 +       }
46875 +       read_unlock(&qla_hostlist_lock);
46876 +
46877 +       /* if host wasn't found then exit */
46878 +       if (!found) {
46879 +               DEBUG2_3(printk(KERN_WARNING
46880 +                   "%s: Can't find adapter for host number %d\n", 
46881 +                   __func__, hostno);)
46882 +
46883 +               return (retval);
46884 +       }
46885 +
46886 +       host = ha->host;
46887 +
46888 +       if (inout == TRUE) {
46889 +               /* Has data been written to the file? */
46890 +               DEBUG3(printk(
46891 +                   "%s: has data been written to the file. \n",
46892 +                   __func__);)
46893 +               return (qla2x00_set_info(buffer, length, host));
46894 +       }
46895 +
46896 +       if (start) {
46897 +               *start = buffer;
46898 +       }
46899 +
46900 +       info.buffer = buffer;
46901 +       info.length = length;
46902 +       info.offset = offset;
46903 +       info.pos    = 0;
46904 +
46905 +       /* start building the print buffer */
46906 +       copy_info(&info,
46907 +           "QLogic PCI to Fibre Channel Host Adapter for " ISP_NAME ":\n"
46908 +           "        Firmware version: %2d.%02d.%02d ",
46909 +           ha->fw_major_version, 
46910 +           ha->fw_minor_version, 
46911 +           ha->fw_subminor_version);
46912 +
46913 +       switch (ha->fw_attributes & 0xFF) {
46914 +       case 0x7:
46915 +               copy_info(&info, "EF");
46916 +               break;
46917 +       case 0x17:
46918 +               copy_info(&info, "TP");
46919 +               break;
46920 +       case 0x37:
46921 +               copy_info(&info, "IP");
46922 +               break;
46923 +       case 0x77:
46924 +               copy_info(&info, "VI");
46925 +               break;
46926 +       default:
46927 +               copy_info(&info, "(%x)", ha->fw_attributes);
46928 +               break;
46929 +       }
46930 +       if (ha->fw_attributes & 0x100)
46931 +               copy_info(&info, "X");
46932 +       copy_info(&info, ", ");
46933 +
46934 +       copy_info(&info, "Driver version %s\n", qla2x00_version_str);
46935 +
46936 +       copy_info(&info, "Entry address = %p\n", qla2x00_set_info);
46937 +
46938 +       tmp_sn = ((ha->serial0 & 0x1f) << 16) | (ha->serial2 << 8) | 
46939 +           ha->serial1;
46940 +       copy_info(&info, "HBA: %s, Serial# %c%05d\n",
46941 +           ha->brd_info->name, ('A' + tmp_sn/100000), (tmp_sn%100000));
46942 +
46943 +       copy_info(&info,
46944 +           "Request Queue = 0x%lx, Response Queue = 0x%lx\n",
46945 +           (long unsigned int)ha->request_dma,
46946 +           (long unsigned int)ha->response_dma);
46947 +
46948 +       copy_info(&info,
46949 +           "Request Queue count= %ld, Response Queue count= %ld\n",
46950 +           (long)REQUEST_ENTRY_CNT, (long)RESPONSE_ENTRY_CNT);
46951 +
46952 +       copy_info(&info,
46953 +           "Total number of active commands = %ld\n",
46954 +           ha->actthreads);
46955 +
46956 +       copy_info(&info,
46957 +           "Total number of interrupts = %ld\n",
46958 +           (long)ha->total_isr_cnt);
46959 +
46960 +#if defined(FC_IP_SUPPORT)
46961 +       copy_info(&info,
46962 +           "Total number of active IP commands = %ld\n",
46963 +           ha->ipreq_cnt);
46964 +#endif
46965 +
46966 +#if defined(IOCB_THROLLE_USAGE)
46967 +#if defined(IOCB_HIT_RATE)
46968 +       copy_info(&info,
46969 +           "Total number of IOCBs (used/max/#hit) "
46970 +           "= (%d/%d/%d)\n",
46971 +           (int)ha->iocb_cnt,
46972 +           (int)ha->iocb_hiwat,
46973 +           (int)ha->iocb_overflow_cnt);
46974 +#else
46975 +       copy_info(&info,
46976 +           "Total number of IOCBs (used/max) "
46977 +           "= (%d/%d)\n",
46978 +           (int)ha->iocb_cnt, (int)ha->iocb_hiwat);
46979 +#endif
46980 +#endif
46981 +
46982 +
46983 +       copy_info(&info,
46984 +           "Total number of queued commands = %d\n",
46985 +           (max_srbs - ha->srb_cnt));
46986 +
46987 +       copy_info(&info,
46988 +           "    Device queue depth = 0x%x\n",
46989 +           (ql2xmaxqdepth == 0) ? 16 : ql2xmaxqdepth);
46990 +
46991 +       copy_info(&info,
46992 +           "Number of free request entries = %d\n", ha->req_q_cnt);
46993 +
46994 +       copy_info(&info,
46995 +           "Number of mailbox timeouts = %ld\n",
46996 +           qla2x00_stats.mboxtout);
46997 +
46998 +       copy_info(&info,
46999 +           "Number of ISP aborts = %ld\n",qla2x00_stats.ispAbort);
47000 +
47001 +       copy_info(&info,
47002 +           "Number of loop resyncs = %ld\n",
47003 +           qla2x00_stats.loop_resync);
47004 +
47005 +       copy_info(&info,
47006 +           "Number of retries for empty slots = %ld\n",
47007 +           qla2x00_stats.outarray_full);
47008 +
47009 +       copy_info(&info,
47010 +           "Number of reqs in pending_q= %ld, retry_q= %d, "
47011 +           "done_q= %ld, scsi_retry_q= %d\n",
47012 +           ha->qthreads, ha->retry_q_cnt,
47013 +           ha->done_q_cnt, ha->scsi_retry_q_cnt);
47014 +
47015 +       if (ha->flags.failover_enabled) {
47016 +               copy_info(&info,
47017 +                   "Number of reqs in failover_q= %d\n",
47018 +                   ha->failover_cnt);
47019 +       }
47020 +
47021 +       flags = (unsigned long *) &ha->flags;
47022 +
47023 +       if (ha->loop_state == LOOP_DOWN) {
47024 +               loop_state = "DOWN";
47025 +       } else if (ha->loop_state ==LOOP_UP) {
47026 +               loop_state = "UP";
47027 +       } else if (ha->loop_state ==LOOP_READY) {
47028 +               loop_state = "READY";
47029 +       } else if (ha->loop_state ==LOOP_TIMEOUT) {
47030 +               loop_state = "TIMEOUT";
47031 +       } else if (ha->loop_state ==LOOP_UPDATE) {
47032 +               loop_state = "UPDATE";
47033 +       } else {
47034 +               loop_state = "UNKNOWN";
47035 +       }
47036 +
47037 +       copy_info(&info, 
47038 +           "Host adapter:loop state= <%s>, flags= 0x%lx\n",
47039 +           loop_state , *flags);
47040 +
47041 +       copy_info(&info, "Dpc flags = 0x%lx\n", ha->dpc_flags);
47042 +
47043 +       copy_info(&info, "MBX flags = 0x%x\n", ha->mbx_flags);
47044 +
47045 +       copy_info(&info, "SRB Free Count = %d\n", ha->srb_cnt);
47046 +
47047 +       copy_info(&info, "Port down retry = %3.3d\n",
47048 +           ha->port_down_retry_count);
47049 +
47050 +       copy_info(&info, "Login retry count = %3.3d\n",
47051 +           ha->login_retry_count);
47052 +
47053 +       copy_info(&info,
47054 +           "Commands retried with dropped frame(s) = %d\n",
47055 +           ha->dropped_frame_error_cnt);
47056 +
47057 +       copy_info(&info, "\n");
47058 +
47059 +#if REQ_TRACE
47060 +       if (qla2x00_req_dmp) {
47061 +               copy_info(&info,
47062 +                   "Outstanding Commands on controller:\n");
47063 +
47064 +               for (i = 1; i < MAX_OUTSTANDING_COMMANDS; i++) {
47065 +                       if ((sp = ha->outstanding_cmds[i]) == NULL) {
47066 +                               continue;
47067 +                       }
47068 +
47069 +                       if ((cp = sp->cmd) == NULL) {
47070 +                               continue;
47071 +                       }
47072 +
47073 +                       copy_info(&info, "(%d): Pid=%d, sp flags=0x%lx"
47074 +                           ", cmd=0x%p, state=%d\n", 
47075 +                           i, 
47076 +                           (int)sp->cmd->serial_number, 
47077 +                           (long)sp->flags,
47078 +                           CMD_SP(sp->cmd),
47079 +                           (int)sp->state);
47080 +
47081 +                       if (info.pos >= info.offset + info.length) {
47082 +                               /* No need to continue */
47083 +                               goto profile_stop;
47084 +                       }
47085 +               }
47086 +       }
47087 +#endif /* REQ_TRACE */
47088 +
47089 +       if (qla2x00_retryq_dmp) {
47090 +               if (!list_empty(&ha->retry_queue)) {
47091 +                       copy_info(&info,
47092 +                           "qla%ld: Retry queue requests:\n",
47093 +                           ha->host_no);
47094 +
47095 +                       spin_lock_irqsave(&ha->list_lock, cpu_flags);
47096 +
47097 +                       i = 0;
47098 +                       list_for_each_safe(list, temp, &ha->retry_queue) {
47099 +                               sp = list_entry(list, srb_t, list);
47100 +                               t = SCSI_TCN_32(sp->cmd);
47101 +                               l = SCSI_LUN_32(sp->cmd);
47102 +
47103 +                               copy_info(&info,
47104 +                                   "%d: target=%d, lun=%d, "
47105 +                                   "pid=%ld sp=%p, sp->flags=0x%x,"
47106 +                                   "sp->state= %d\n", 
47107 +                                   i, t, l, 
47108 +                                   sp->cmd->serial_number, sp, 
47109 +                                   sp->flags, sp->state );
47110 +
47111 +                               i++;
47112 +
47113 +                               if (info.pos >= info.offset + info.length) {
47114 +                                       /* No need to continue */
47115 +                                       goto profile_stop;
47116 +                               }
47117 +                       }
47118 +
47119 +                       spin_unlock_irqrestore(&ha->list_lock, cpu_flags);
47120 +
47121 +               } /* if (!list_empty(&ha->retry_queue))*/
47122 +       } /* if ( qla2x00_retryq_dmp )  */
47123 +
47124 +       /* 2.25 node/port display to proc */
47125 +       /* Display the node name for adapter */
47126 +       copy_info(&info, "\nSCSI Device Information:\n");
47127 +       copy_info(&info,
47128 +           "scsi-qla%d-adapter-node="
47129 +           "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
47130 +           (int)ha->instance,
47131 +           ha->init_cb->node_name[0],
47132 +           ha->init_cb->node_name[1],
47133 +           ha->init_cb->node_name[2],
47134 +           ha->init_cb->node_name[3],
47135 +           ha->init_cb->node_name[4],
47136 +           ha->init_cb->node_name[5],
47137 +           ha->init_cb->node_name[6],
47138 +           ha->init_cb->node_name[7]);
47139 +
47140 +       /* display the port name for adapter */
47141 +       copy_info(&info,
47142 +           "scsi-qla%d-adapter-port="
47143 +           "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
47144 +           (int)ha->instance,
47145 +           ha->init_cb->port_name[0],
47146 +           ha->init_cb->port_name[1],
47147 +           ha->init_cb->port_name[2],
47148 +           ha->init_cb->port_name[3],
47149 +           ha->init_cb->port_name[4],
47150 +           ha->init_cb->port_name[5],
47151 +           ha->init_cb->port_name[6],
47152 +           ha->init_cb->port_name[7]);
47153 +
47154 +       /* Print out device port names */
47155 +       for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
47156 +               if (ha->fc_db[i].loop_id == PORT_UNUSED) {
47157 +                       continue;
47158 +               }
47159 +
47160 +               if (ha->flags.failover_enabled) {
47161 +                       copy_info(&info,
47162 +                           "scsi-qla%d-port-%d="
47163 +                           "%02x%02x%02x%02x%02x%02x%02x%02x:"
47164 +                           "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
47165 +                           (int)ha->instance, i,
47166 +                           ha->fc_db[i].name[0],
47167 +                           ha->fc_db[i].name[1],
47168 +                           ha->fc_db[i].name[2],
47169 +                           ha->fc_db[i].name[3],
47170 +                           ha->fc_db[i].name[4],
47171 +                           ha->fc_db[i].name[5],
47172 +                           ha->fc_db[i].name[6],
47173 +                           ha->fc_db[i].name[7],
47174 +                           ha->fc_db[i].wwn[0],
47175 +                           ha->fc_db[i].wwn[1],
47176 +                           ha->fc_db[i].wwn[2],
47177 +                           ha->fc_db[i].wwn[3],
47178 +                           ha->fc_db[i].wwn[4],
47179 +                           ha->fc_db[i].wwn[5],
47180 +                           ha->fc_db[i].wwn[6],
47181 +                           ha->fc_db[i].wwn[7]);
47182 +               } else {
47183 +                       copy_info(&info,
47184 +                           "scsi-qla%d-target-%d="
47185 +                           "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
47186 +                           (int)ha->instance, i,
47187 +                           ha->fc_db[i].wwn[0],
47188 +                           ha->fc_db[i].wwn[1],
47189 +                           ha->fc_db[i].wwn[2],
47190 +                           ha->fc_db[i].wwn[3],
47191 +                           ha->fc_db[i].wwn[4],
47192 +                           ha->fc_db[i].wwn[5],
47193 +                           ha->fc_db[i].wwn[6],
47194 +                           ha->fc_db[i].wwn[7]);
47195 +               }
47196 +
47197 +       } /* 2.25 node/port display to proc */
47198 +
47199 +       copy_info(&info, "\nSCSI LUN Information:\n");
47200 +
47201 +       copy_info(&info, "(Id:Lun)\n");
47202 +
47203 +       /* scan for all equipment stats */
47204 +       for (t = 0; t < MAX_FIBRE_DEVICES; t++) {
47205 +               /* scan all luns */
47206 +               for (l = 0; l < ha->max_luns; l++) {
47207 +                       up = (os_lun_t *) GET_LU_Q(ha, t, l);
47208 +
47209 +                       if (up == NULL) {
47210 +                               continue;
47211 +                       }
47212 +                       if (up->fclun == NULL) {
47213 +                               continue;
47214 +                       }
47215 +                       if (up->fclun->flags & FC_DISCON_LUN) {
47216 +                               continue;
47217 +                       }
47218 +
47219 +                       copy_info(&info,
47220 +                           "(%2d:%2d): Total reqs %ld,",
47221 +                           t,l,up->io_cnt);
47222 +
47223 +                       copy_info(&info,
47224 +                           " Pending reqs %ld,",
47225 +                           up->out_cnt);
47226 +
47227 +                       if (up->io_cnt < 3) {
47228 +                               copy_info(&info,
47229 +                                   " flags 0x%x*,",
47230 +                                   (int)up->q_flag);
47231 +                       } else {
47232 +                               copy_info(&info,
47233 +                                   " flags 0x%x,",
47234 +                                   (int)up->q_flag);
47235 +                       }
47236 +
47237 +                       copy_info(&info, 
47238 +                           " %ld:%d:%02x,",
47239 +                           up->fclun->fcport->ha->instance,
47240 +                           up->fclun->fcport->cur_path,
47241 +                           up->fclun->fcport->loop_id);
47242 +
47243 +                       copy_info(&info, "\n");
47244 +
47245 +                       if (info.pos >= info.offset + info.length) {
47246 +                               /* No need to continue */
47247 +                               goto profile_stop;
47248 +                       }
47249 +               }
47250 +
47251 +               if (info.pos >= info.offset + info.length) {
47252 +                       /* No need to continue */
47253 +                       break;
47254 +               }
47255 +       }
47256 +
47257 +profile_stop:
47258 +
47259 +       retval = info.pos > info.offset ? info.pos - info.offset : 0;
47260 +
47261 +       DEBUG3(printk(KERN_INFO 
47262 +           "Exiting proc_info: info.pos=%d, offset=0x%lx, "
47263 +           "length=0x%x\n", info.pos, offset, length);)
47264 +
47265 +#if QLA2100_LIPTEST
47266 +       qla2x00_lip = 1;
47267 +#endif
47268 +
47269 +       return (retval);
47270 +}
47271 +
47272 +#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP)
47273 +union wwnmap {
47274 +       unsigned long long wwn;
47275 +       unsigned char wwn_u8[8];
47276 +};
47277 +
47278 +int qla2x00_get_scsi_info_from_wwn (int mode,
47279 +       unsigned long long wwn,
47280 +       int *host,
47281 +       int *channel,
47282 +       int *lun,
47283 +       int *id) {
47284 +
47285 +scsi_qla_host_t *list;
47286 +Scsi_Device *scsi_device;
47287 +union wwnmap wwncompare;
47288 +union wwnmap wwncompare2;
47289 +int i, j, k;
47290 +
47291 +       /*
47292 +        * Retrieve big endian version of world wide name
47293 +        */
47294 +       wwncompare2.wwn = wwn;
47295 +       for (j = 0, k=7; j < 8; j++, k--) {
47296 +               wwncompare.wwn_u8[j] = wwncompare2.wwn_u8[k];
47297 +       }
47298 +
47299 +       /*
47300 +        * query all hosts searching for WWN
47301 +        */
47302 +       for (list = qla2x00_hostlist; list; list = list->next) {
47303 +               for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
47304 +                       /*
47305 +                        * Scan all devices in FibreChannel database
47306 +                        * if WWN match found, return SCSI device information
47307 +                        */
47308 +                       if (memcmp (wwncompare.wwn_u8, list->fc_db[i].name, 8) == 0) {
47309 +                               /*
47310 +                                * If inserting, avoid scan for channel and lun information
47311 +                                */
47312 +                               if (mode == 0) {
47313 +                                       *channel = 0;
47314 +                                       *lun = 0;
47315 +                                       *host = list->host->host_no;
47316 +                                       *id = i;
47317 +                                       return (0);
47318 +                               }
47319 +                       
47320 +
47321 +                               /*
47322 +                                * WWN matches, find channel and lun information from scsi
47323 +                                * device
47324 +                                */
47325 +                               for (scsi_device = list->host->host_queue; scsi_device; scsi_device = scsi_device->next) {
47326 +                                       if (scsi_device->id == i) {
47327 +                                               *channel = scsi_device->channel;
47328 +                                               *lun = scsi_device->lun;
47329 +                                               break;
47330 +                                       }
47331 +                               }
47332 +                               if (scsi_device == 0) {
47333 +                                       return (-ENOENT);
47334 +                               }
47335 +                               /*
47336 +                                * Device found, return all data
47337 +                                */
47338 +                               *host = list->host->host_no;
47339 +                               *id = i;
47340 +                               return (0);
47341 +                       } /* memcmp */
47342 +               } /* i < MAXFIBREDEVICES */
47343 +       }
47344 +       return (-ENOENT);
47345 +}
47346 +
47347 +int qla2x00_get_wwn_from_scsi_info (int host, int id, unsigned long long *wwn) {
47348 +scsi_qla_host_t *list;
47349 +union wwnmap wwnendian;
47350 +union wwnmap wwnendian2;
47351 +int j, k;
47352 +
47353 +       /*
47354 +        * Examine all QLogic hosts
47355 +        */
47356 +       for (list = qla2x00_hostlist; list; list = list->next) {
47357 +               if (host == list->host->host_no) {
47358 +                       /*
47359 +                        * Get endian corrected 64 bit WWN
47360 +                        */
47361 +
47362 +                       memcpy (&wwnendian2.wwn, list->fc_db[id].name, 8);
47363 +                       for (j = 0, k=7; j < 8; j++, k--) {
47364 +                               wwnendian.wwn_u8[j] = wwnendian2.wwn_u8[k];
47365 +                       }
47366 +                       *wwn = wwnendian.wwn;
47367 +                       return (0);
47368 +               }
47369 +       }
47370 +       return (-ENOENT);
47371 +}
47372 +#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */
47373 +
47374 +/**************************************************************************
47375 +*   qla2x00_setup
47376 +*
47377 +*   Handle Linux boot parameters. This routine allows for assigning a value
47378 +*   to a parameter with a ';' between the parameter and the value.
47379 +*   ie. qla2x00=arg0;arg1;...;argN;<properties .... properties>  OR
47380 +*   via the command line.
47381 +*   ie. qla2x00 ql2xopts=arg0;arg1;...;argN;<properties .... properties>
47382 +**************************************************************************/
47383 +#if !defined(MODULE)
47384 +static int __init
47385 +qla2x00_setup(char *s)
47386 +#else
47387 +void 
47388 +qla2x00_setup(char *s)
47389 +#endif 
47390 +{
47391 +       char            *cp, *np;
47392 +       char            *slots[MAXARGS];
47393 +       char            **argv = &slots[0];
47394 +       static char     buf[LINESIZE];
47395 +       int             argc, opts;
47396 +
47397 +#if !defined(MODULE)
47398 +       if (s == NULL || *s == '\0')
47399 +               return 0;
47400 +#endif
47401 +
47402 +       /*
47403 +        * Determine if we have any properties.
47404 +        */
47405 +       cp = s;
47406 +       opts = 1;
47407 +       while (*cp && (np = qla2x00_get_line(cp, buf)) != NULL) {
47408 +               if (strncmp("scsi-qla",buf,8) == 0) {
47409 +                       DEBUG(printk("qla2100: devconf=%s\n",cp);)
47410 +
47411 +                       ql2xdevconf = cp;
47412 +                       (opts > 0)? opts-- : 0;
47413 +                       break;
47414 +               }
47415 +               opts++;
47416 +               cp = np;
47417 +       }
47418 +
47419 +       /*
47420 +        * Parse the args before the properties
47421 +        */
47422 +       if (opts) {
47423 +               opts = (opts > MAXARGS-1)? MAXARGS-1: opts;
47424 +               argc = qla2x00_get_tokens(s, argv, opts);
47425 +               while (argc > 0) {
47426 +                       cp = *argv;
47427 +                       DEBUG(printk("scsi: found cmd arg =[%s]\n", cp));
47428 +
47429 +                       if (strcmp(cp, "verbose") == 0) {
47430 +                               DEBUG(printk("qla2100: verbose\n"));
47431 +                               qla2x00_verbose++;
47432 +                       } else if (strcmp(cp, "quiet") == 0) {
47433 +                               qla2x00_quiet = 1;
47434 +                       } else if (strcmp(cp, "reinit_on_loopdown") == 0) {
47435 +                               qla2x00_reinit++;
47436 +                               DEBUG(printk("qla2100: reinit_on_loopdown\n"));
47437 +                       }
47438 +                       argc--, argv++;
47439 +               }
47440 +       }
47441 +
47442 +#if !defined(MODULE)
47443 +       if (ql2xdevconf)
47444 +               return 1;
47445 +       else
47446 +               return 0;
47447 +#endif
47448 +}
47449 +
47450 +#if !defined(MODULE)
47451 +__setup("ql2xopts=", qla2x00_setup);
47452 +#endif
47453 +
47454 +/********************** qla2x00_get_line *********************
47455 +* qla2x00_get_line
47456 +* Copy a substring from the specified string. The substring
47457 +* consists of any number of chars seperated by white spaces (i.e. spaces)
47458 +* and ending with a newline '\n' or a semicolon ';'.
47459 +*
47460 +* Enter:
47461 +* str - orig string
47462 +* line - substring
47463 +*
47464 +* Returns:
47465 +*   cp - pointer to next string
47466 +*     or
47467 +*   null - End of string
47468 +*************************************************************/
47469 +static char *
47470 +qla2x00_get_line(char *str, char *line) 
47471 +{
47472 +       register        char    *cp = str;
47473 +       register        char    *sp = line;
47474 +
47475 +       /* skip preceeding spaces */
47476 +       while (*cp && *cp == ' ')
47477 +               ++cp;
47478 +       while ((*cp) && *cp != '\n' && *cp != ';')   /* end of line */
47479 +               *sp++ = *cp++;
47480 +
47481 +       *sp = '\0';
47482 +
47483 +       DEBUG5(printk("%s(): %s\n", __func__, line));
47484 +
47485 +       if( (*cp) ) {
47486 +               cp++;
47487 +               return (cp);
47488 +       }
47489 +
47490 +       return (NULL);
47491 +}
47492 +
47493 +
47494 +/**************************** get_tokens *********************
47495 +* Parse command line into argv1, argv2, ... argvX
47496 +* Arguments are seperated by white spaces and colons and end
47497 +* with a NULL.
47498 +*************************************************************/
47499 +static int 
47500 +qla2x00_get_tokens(char *line, char **argv, int maxargs) 
47501 +{
47502 +       register        char    *cp = line;
47503 +       int     count = 0;
47504 +
47505 +       while (*cp && count < maxargs) {
47506 +               /* skip preceeding spaces */
47507 +               while ((*cp) && *cp == ' ')
47508 +                       ++cp;
47509 +               /* symbol starts here */
47510 +               argv[count++] = cp;
47511 +               /* skip symbols */
47512 +               while ((*cp) && !(*cp == ' ' || *cp == ';' || *cp == ':'))
47513 +                       cp++;
47514 +               /* replace comma or space with a null */
47515 +               if((*cp) && (*cp ==' ' ) && argv[count-1] != cp)
47516 +                       *cp++ = '\0';
47517 +       }
47518 +       return (count);
47519 +}
47520 +
47521 +/*
47522 +* qla2x00_display_fc_names
47523 +*      This routine will the node names of the different devices found
47524 +*      after port inquiry.
47525 +*
47526 +* Input:
47527 +*      cmd = SCSI command structure
47528 +*
47529 +* Returns:
47530 +*      None.
47531 +*/
47532 +static void
47533 +qla2x00_display_fc_names(scsi_qla_host_t *ha) 
47534 +{
47535 +       uint16_t        tgt;
47536 +       os_tgt_t        *tq;
47537 +
47538 +       /* Display the node name for adapter */
47539 +       printk(KERN_INFO
47540 +           "scsi-qla%d-adapter-node=%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
47541 +           (int)ha->instance,
47542 +           ha->init_cb->node_name[0],
47543 +           ha->init_cb->node_name[1],
47544 +           ha->init_cb->node_name[2],
47545 +           ha->init_cb->node_name[3],
47546 +           ha->init_cb->node_name[4],
47547 +           ha->init_cb->node_name[5],
47548 +           ha->init_cb->node_name[6],
47549 +           ha->init_cb->node_name[7]);
47550 +
47551 +       /* display the port name for adapter */
47552 +       printk(KERN_INFO
47553 +           "scsi-qla%d-adapter-port=%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
47554 +           (int)ha->instance,
47555 +           ha->init_cb->port_name[0],
47556 +           ha->init_cb->port_name[1],
47557 +           ha->init_cb->port_name[2],
47558 +           ha->init_cb->port_name[3],
47559 +           ha->init_cb->port_name[4],
47560 +           ha->init_cb->port_name[5],
47561 +           ha->init_cb->port_name[6],
47562 +           ha->init_cb->port_name[7]);
47563 +
47564 +       /* Print out device port names */
47565 +       for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
47566 +               if ((tq = ha->otgt[tgt]) == NULL)
47567 +                       continue;
47568 +
47569 +               if (tq->vis_port == NULL)
47570 +                       continue;
47571 +
47572 +               switch (ha->binding_type) {
47573 +                       case BIND_BY_PORT_NAME:
47574 +                               printk(KERN_INFO
47575 +                                   "scsi-qla%d-tgt-%d-di-0-port="
47576 +                                   "%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
47577 +                                   (int)ha->instance, 
47578 +                                   tgt,
47579 +                                   tq->port_name[0], 
47580 +                                   tq->port_name[1],
47581 +                                   tq->port_name[2], 
47582 +                                   tq->port_name[3],
47583 +                                   tq->port_name[4], 
47584 +                                   tq->port_name[5],
47585 +                                   tq->port_name[6], 
47586 +                                   tq->port_name[7]);
47587 +
47588 +                               break;
47589 +
47590 +                       case BIND_BY_PORT_ID:
47591 +                               printk(KERN_INFO
47592 +                                   "scsi-qla%d-tgt-%d-di-0-pid="
47593 +                                   "%02x%02x%02x\\;\n",
47594 +                                   (int)ha->instance,
47595 +                                   tgt,
47596 +                                   tq->d_id.b.domain,
47597 +                                   tq->d_id.b.area,
47598 +                                   tq->d_id.b.al_pa);
47599 +                               break;
47600 +
47601 +                       case BIND_BY_NODE_NAME:
47602 +                               printk(KERN_INFO
47603 +                                   "scsi-qla%d-tgt-%d-di-0-node="
47604 +                                   "%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
47605 +                                   (int)ha->instance, 
47606 +                                   tgt,
47607 +                                   tq->node_name[0], 
47608 +                                   tq->node_name[1],
47609 +                                   tq->node_name[2], 
47610 +                                   tq->node_name[3],
47611 +                                   tq->node_name[4], 
47612 +                                   tq->node_name[5],
47613 +                                   tq->node_name[6], 
47614 +                                   tq->node_name[7]);
47615 +                               break;
47616 +               }
47617 +
47618 +#if VSA
47619 +               printk(KERN_INFO
47620 +                   "scsi-qla%d-target-%d-vsa=01;\n", (int)ha->instance, tgt);
47621 +#endif
47622 +       }
47623 +}
47624 +
47625 +/*
47626 + *  qla2x00_suspend_lun
47627 + *     Suspend lun and start port down timer
47628 + *
47629 + * Input:
47630 + *     ha = visable adapter block pointer.
47631 + *  lq = lun queue
47632 + *  cp = Scsi command pointer 
47633 + *  time = time in seconds
47634 + *  count = number of times to let time expire
47635 + *  delay_lun = non-zero, if lun should be delayed rather than suspended
47636 + *
47637 + * Return:
47638 + *     QL_STATUS_SUCCESS  -- suspended lun 
47639 + *     QL_STATUS_ERROR  -- Didn't suspend lun
47640 + *
47641 + * Context:
47642 + *     Interrupt context.
47643 + */
47644 +uint8_t
47645 +__qla2x00_suspend_lun(scsi_qla_host_t *ha,
47646 +               os_lun_t *lq, int time, int count, int delay_lun)
47647 +{
47648 +       srb_t *sp;
47649 +       struct list_head *list, *temp;
47650 +       unsigned long flags;
47651 +       uint8_t status;
47652 +
47653 +       /* if the lun_q is already suspended then don't do it again */
47654 +       if (lq->q_state == LUN_STATE_READY ||lq->q_state == LUN_STATE_RUN) {
47655 +
47656 +               spin_lock_irqsave(&lq->q_lock, flags);
47657 +               if (lq->q_state == LUN_STATE_READY) {
47658 +                       lq->q_max = count;
47659 +                       lq->q_count = 0;
47660 +               }
47661 +               /* Set the suspend time usually 6 secs */
47662 +               atomic_set(&lq->q_timer, time);
47663 +
47664 +               /* now suspend the lun */
47665 +               lq->q_state = LUN_STATE_WAIT;
47666 +
47667 +               if (delay_lun) {
47668 +                       set_bit(LUN_EXEC_DELAYED, &lq->q_flag);
47669 +                       DEBUG(printk(KERN_INFO
47670 +                           "scsi(%ld): Delay lun execution for %d secs, "
47671 +                           "count=%d, max count=%d, state=%d\n",
47672 +                           ha->host_no,
47673 +                           time,
47674 +                           lq->q_count, lq->q_max, lq->q_state));
47675 +               } else {
47676 +                       DEBUG(printk(KERN_INFO
47677 +                           "scsi(%ld): Suspend lun for %d secs, count=%d, "
47678 +                           "max count=%d, state=%d\n",
47679 +                           ha->host_no,
47680 +                           time,
47681 +                           lq->q_count, lq->q_max, lq->q_state));
47682 +               }
47683 +               spin_unlock_irqrestore(&lq->q_lock, flags);
47684 +
47685 +               /*
47686 +                * Remove all pending commands from request queue and  put them
47687 +                * in the scsi_retry queue.
47688 +                */
47689 +               spin_lock_irqsave(&ha->list_lock, flags);
47690 +               list_for_each_safe(list, temp, &ha->pending_queue) {
47691 +                       sp = list_entry(list, srb_t, list);
47692 +                       if (sp->lun_queue != lq)
47693 +                               continue;
47694 +
47695 +                       __del_from_pending_queue(ha, sp);
47696 +
47697 +                       if (sp->cmd->allowed < count)
47698 +                               sp->cmd->allowed = count;
47699 +                       __add_to_scsi_retry_queue(ha,sp);
47700 +
47701 +               } /* list_for_each_safe */
47702 +               spin_unlock_irqrestore(&ha->list_lock, flags);
47703 +               status = QL_STATUS_SUCCESS;
47704 +       } else {
47705 +               status = QL_STATUS_ERROR;
47706 +       }
47707 +
47708 +       return (status);
47709 +
47710 +}
47711 +
47712 +/*
47713 + * qla2x00_mark_device_lost Updates fcport state when device goes offline.
47714 + *
47715 + * Input: ha = adapter block pointer.  fcport = port structure pointer.
47716 + *
47717 + * Return: None.
47718 + *
47719 + * Context:
47720 + */
47721 +void qla2x00_mark_device_lost(scsi_qla_host_t *ha, fc_port_t *fcport)
47722 +{
47723 +       /* 
47724 +        * We may need to retry the login, so don't change the state of the
47725 +        * port but do the retries.
47726 +        */
47727 +       if (atomic_read(&fcport->state) != FC_DEVICE_DEAD)
47728 +               atomic_set(&fcport->state, FC_DEVICE_LOST);
47729 +
47730 +       if (fcport->login_retry == 0) {
47731 +               fcport->login_retry = ha->login_retry_count;
47732 +               set_bit(RELOGIN_NEEDED, &ha->dpc_flags);
47733 +
47734 +               DEBUG(printk("scsi(%ld): Port login retry: "
47735 +                   "%02x%02x%02x%02x%02x%02x%02x%02x, "
47736 +                   "id = 0x%04x retry cnt=%d\n",
47737 +                   ha->host_no,
47738 +                   fcport->port_name[0],
47739 +                   fcport->port_name[1],
47740 +                   fcport->port_name[2],
47741 +                   fcport->port_name[3],
47742 +                   fcport->port_name[4],
47743 +                   fcport->port_name[5],
47744 +                   fcport->port_name[6],
47745 +                   fcport->port_name[7],
47746 +                   fcport->loop_id,
47747 +                   fcport->login_retry));
47748 +       }
47749 +}
47750 +
47751 +/*
47752 + * qla2x00_mark_all_devices_lost
47753 + *     Updates fcport state when device goes offline.
47754 + *
47755 + * Input:
47756 + *     ha = adapter block pointer.
47757 + *     fcport = port structure pointer.
47758 + *
47759 + * Return:
47760 + *     None.
47761 + *
47762 + * Context:
47763 + */
47764 +void
47765 +qla2x00_mark_all_devices_lost(scsi_qla_host_t *ha) 
47766 +{
47767 +       struct list_head        *fcpl;
47768 +       fc_port_t               *fcport;
47769 +
47770 +       list_for_each(fcpl, &ha->fcports) {
47771 +               fcport = list_entry(fcpl, fc_port_t, list);
47772 +
47773 +               /*
47774 +                * No point in marking the device as lost, if the device is
47775 +                * already DEAD.
47776 +                */
47777 +               if (atomic_read(&fcport->state) == FC_DEVICE_DEAD)
47778 +                       continue;
47779 +
47780 +               atomic_set(&fcport->state, FC_DEVICE_LOST);
47781 +       }
47782 +}
47783 +
47784 +/*
47785 +* qla2x00_mem_alloc
47786 +*      Allocates adapter memory.
47787 +*
47788 +* Returns:
47789 +*      0  = success.
47790 +*      1  = failure.
47791 +*/
47792 +static uint8_t
47793 +qla2x00_mem_alloc(scsi_qla_host_t *ha)
47794 +{
47795 +       uint8_t   status = 1;
47796 +       uint8_t   i;
47797 +       int     retry= 10;
47798 +       mbx_cmdq_t      *ptmp;
47799 +       mbx_cmdq_t      *tmp_q_head;
47800 +       mbx_cmdq_t      *tmp_q_tail;
47801 +
47802 +       ENTER(__func__);
47803 +
47804 +       do {
47805 +               /*
47806 +                * This will loop only once if everything goes well, else some
47807 +                * number of retries will be performed to get around a kernel
47808 +                * bug where available mem is not allocated until after a
47809 +                * little delay and a retry.
47810 +                */
47811 +
47812 +#if defined(FC_IP_SUPPORT)
47813 +               ha->risc_rec_q = pci_alloc_consistent(ha->pdev,
47814 +                   ((IP_BUFFER_QUEUE_DEPTH) * (sizeof(struct risc_rec_entry))),
47815 +                   &ha->risc_rec_q_dma);
47816 +               if (ha->risc_rec_q == NULL) {
47817 +                       printk(KERN_WARNING
47818 +                           "scsi(%ld): Memory Allocation failed - "
47819 +                           "risc_rec_q\n",
47820 +                           ha->host_no);
47821 +
47822 +                       set_current_state(TASK_INTERRUPTIBLE);
47823 +                       schedule_timeout(HZ/10);
47824 +
47825 +                       continue;
47826 +               }
47827 +#endif /* #if defined(FC_IP_SUPPORT) */
47828 +
47829 +               ha->request_ring = pci_alloc_consistent(ha->pdev,
47830 +                   ((REQUEST_ENTRY_CNT + 1) * (sizeof(request_t))),
47831 +                   &ha->request_dma);
47832 +               if (ha->request_ring == NULL) {
47833 +                       printk(KERN_WARNING
47834 +                           "scsi(%ld): Memory Allocation failed - "
47835 +                           "request_ring\n",
47836 +                           ha->host_no);
47837 +
47838 +                       qla2x00_mem_free(ha);
47839 +                       set_current_state(TASK_INTERRUPTIBLE);
47840 +                       schedule_timeout(HZ/10);
47841 +
47842 +                       continue;
47843 +               }
47844 +
47845 +               ha->response_ring = pci_alloc_consistent(ha->pdev,
47846 +                   ((RESPONSE_ENTRY_CNT + 1) * (sizeof(response_t))),
47847 +                   &ha->response_dma);
47848 +               if (ha->response_ring == NULL) {
47849 +                       printk(KERN_WARNING
47850 +                           "scsi(%ld): Memory Allocation failed - "
47851 +                           "response_ring\n",
47852 +                           ha->host_no);
47853 +
47854 +                       qla2x00_mem_free(ha);
47855 +                       set_current_state(TASK_INTERRUPTIBLE);
47856 +                       schedule_timeout(HZ/10);
47857 +
47858 +                       continue;
47859 +               }
47860 +
47861 +               /* get consistent memory allocated for init control block */
47862 +               ha->init_cb = pci_alloc_consistent(ha->pdev,
47863 +                   sizeof(init_cb_t), &ha->init_cb_dma);
47864 +               if (ha->init_cb == NULL) {
47865 +                       printk(KERN_WARNING
47866 +                           "scsi(%ld): Memory Allocation failed - "
47867 +                           "init_cb\n",
47868 +                           ha->host_no);
47869 +
47870 +                       qla2x00_mem_free(ha);
47871 +                       set_current_state(TASK_INTERRUPTIBLE);
47872 +                       schedule_timeout(HZ/10);
47873 +
47874 +                       continue;
47875 +               }
47876 +               memset(ha->init_cb, 0, sizeof(init_cb_t));
47877 +
47878 +               /* Allocate ioctl related memory. */
47879 +               if (qla2x00_alloc_ioctl_mem(ha)) {
47880 +                       printk(KERN_WARNING
47881 +                           "scsi(%ld): Memory Allocation failed - "
47882 +                           "ioctl_mem\n",
47883 +                           ha->host_no);
47884 +
47885 +                       qla2x00_mem_free(ha);
47886 +                       set_current_state(TASK_INTERRUPTIBLE);
47887 +                       schedule_timeout(HZ/10);
47888 +
47889 +                       continue;
47890 +               }
47891 +
47892 +               if (qla2x00_allocate_sp_pool(ha)) {
47893 +                       printk(KERN_WARNING
47894 +                           "scsi(%ld): Memory Allocation failed - "
47895 +                           "qla2x00_allocate_sp_pool()\n",
47896 +                           ha->host_no);
47897 +
47898 +                       qla2x00_mem_free(ha);
47899 +                       set_current_state(TASK_INTERRUPTIBLE);
47900 +                       schedule_timeout(HZ/10);
47901 +
47902 +                       continue;
47903 +               }
47904 +
47905 +               /*
47906 +                * Allocate an initial list of mailbox semaphore queue to be
47907 +                * used for serialization of the mailbox commands.
47908 +                */
47909 +               tmp_q_head = (void *)KMEM_ZALLOC(sizeof(mbx_cmdq_t), 20);
47910 +               if (tmp_q_head == NULL) {
47911 +                       /* error */
47912 +                       printk(KERN_WARNING
47913 +                           "scsi(%ld): Memory Allocation failed - "
47914 +                           "mbx_cmd_q",
47915 +                           ha->host_no);
47916 +
47917 +                       qla2x00_mem_free(ha);
47918 +                       set_current_state(TASK_INTERRUPTIBLE);
47919 +                       schedule_timeout(HZ/10);
47920 +
47921 +                       continue;
47922 +               }
47923 +               ha->mbx_sem_pool_head = tmp_q_head;
47924 +               tmp_q_tail = tmp_q_head;
47925 +
47926 +               /* Now try to allocate more */
47927 +               for (i = 1; i < MBQ_INIT_LEN; i++) {
47928 +                       ptmp = (void *)KMEM_ZALLOC(sizeof(mbx_cmdq_t), 20 + i);
47929 +                       if (ptmp == NULL) {
47930 +                               /*
47931 +                                * Error. Just exit. If more is needed later
47932 +                                * they will be allocated at that time.
47933 +                                */
47934 +                               break;
47935 +                       }
47936 +                       tmp_q_tail->pnext = ptmp;
47937 +                       tmp_q_tail = ptmp;
47938 +               }
47939 +               ha->mbx_sem_pool_tail = tmp_q_tail;
47940 +
47941 +               /* Get consistent memory allocated for MS IOCB */
47942 +               ha->ms_iocb = pci_alloc_consistent(ha->pdev,
47943 +                   sizeof(ms_iocb_entry_t), &ha->ms_iocb_dma);
47944 +               if (ha->ms_iocb == NULL) {
47945 +                       /* error */
47946 +                       printk(KERN_WARNING
47947 +                           "scsi(%ld): Memory Allocation failed - ms_iocb\n",
47948 +                           ha->host_no);
47949 +
47950 +                       qla2x00_mem_free(ha);
47951 +                       set_current_state(TASK_INTERRUPTIBLE);
47952 +                       schedule_timeout(HZ/10);
47953 +
47954 +                       continue;
47955 +               }
47956 +               memset(ha->ms_iocb, 0, sizeof(ms_iocb_entry_t));
47957 +
47958 +               /* Get consistent memory allocated for CT SNS commands */
47959 +               ha->ct_sns = pci_alloc_consistent(ha->pdev,
47960 +                   sizeof(struct ct_sns_pkt), &ha->ct_sns_dma);
47961 +               if (ha->ct_sns == NULL) {
47962 +                       /* error */
47963 +                       printk(KERN_WARNING
47964 +                           "scsi(%ld): Memory Allocation failed - ct_sns\n",
47965 +                           ha->host_no);
47966 +
47967 +                       qla2x00_mem_free(ha);
47968 +                       set_current_state(TASK_INTERRUPTIBLE);
47969 +                       schedule_timeout(HZ/10);
47970 +
47971 +                       continue;
47972 +               }
47973 +               memset(ha->ct_sns, 0, sizeof(struct ct_sns_pkt));
47974 +
47975 +               /* Done all allocations without any error. */
47976 +               status = 0;
47977 +
47978 +       } while (retry-- && status != 0);
47979 +
47980 +       if (status) {
47981 +               printk(KERN_WARNING
47982 +                       "%s(): **** FAILED ****\n", __func__);
47983 +       }
47984 +
47985 +       LEAVE(__func__);
47986 +
47987 +       return(status);
47988 +}
47989 +
47990 +/*
47991 +* qla2x00_mem_free
47992 +*      Frees all adapter allocated memory.
47993 +*
47994 +* Input:
47995 +*      ha = adapter block pointer.
47996 +*/
47997 +static void
47998 +qla2x00_mem_free(scsi_qla_host_t *ha)
47999 +{
48000 +       uint32_t        t;
48001 +       struct list_head        *fcpl, *fcptemp;
48002 +       fc_port_t       *fcport;
48003 +       struct list_head        *fcll, *fcltemp;
48004 +       fc_lun_t        *fclun;
48005 +       mbx_cmdq_t      *ptmp;
48006 +       mbx_cmdq_t      *tmp_q_head;
48007 +       unsigned long   wtime;/* max wait time if mbx cmd is busy. */
48008 +       struct list_head *fcil, *fcitemp;
48009 +       fc_initiator_t  *fcinitiator;
48010 +
48011 +       ENTER(__func__);
48012 +
48013 +       if (ha == NULL) {
48014 +               /* error */
48015 +               DEBUG2(printk("%s(): ERROR invalid ha pointer.\n", __func__));
48016 +               return;
48017 +       }
48018 +
48019 +       /* Free the target queues */
48020 +       for (t = 0; t < MAX_TARGETS; t++) {
48021 +               qla2x00_tgt_free(ha, t);
48022 +       }
48023 +
48024 +       /* Make sure all other threads are stopped. */
48025 +       wtime = 60 * HZ;
48026 +       while ((ha->dpc_wait != NULL || ha->mbx_q_head != NULL) && wtime) {
48027 +               set_current_state(TASK_INTERRUPTIBLE);
48028 +               wtime = schedule_timeout(wtime);
48029 +       }
48030 +
48031 +       /* Now free the mbx sem pool */
48032 +       tmp_q_head = ha->mbx_sem_pool_head;
48033 +       while (tmp_q_head != NULL) {
48034 +               ptmp = tmp_q_head->pnext;
48035 +               KMEM_FREE(tmp_q_head, sizeof(mbx_cmdq_t));
48036 +               tmp_q_head = ptmp;
48037 +       }
48038 +       ha->mbx_sem_pool_head = NULL;
48039 +
48040 +       /* free ioctl memory */
48041 +       qla2x00_free_ioctl_mem(ha);
48042 +
48043 +       /* Free host database. */
48044 +       list_for_each_safe(fcil, fcitemp, &ha->fcinitiators) {
48045 +               fcinitiator = list_entry(fcil, fc_initiator_t, list);
48046 +
48047 +               list_del(&fcinitiator->list);
48048 +               kfree(fcinitiator);
48049 +       }
48050 +       INIT_LIST_HEAD(&ha->fcinitiators);
48051 +
48052 +       /* free sp pool */
48053 +       qla2x00_free_sp_pool(ha);
48054 +
48055 +       if (ha->ct_sns) {
48056 +               pci_free_consistent(ha->pdev,
48057 +                   sizeof(struct ct_sns_pkt), ha->ct_sns, ha->ct_sns_dma);
48058 +       }
48059 +       if (ha->ms_iocb) {
48060 +               pci_free_consistent(ha->pdev,
48061 +                   sizeof(ms_iocb_entry_t), ha->ms_iocb, ha->ms_iocb_dma);
48062 +       }
48063 +
48064 +       if (ha->init_cb) {
48065 +               pci_free_consistent(ha->pdev,
48066 +                   sizeof(init_cb_t), ha->init_cb, ha->init_cb_dma);
48067 +       }
48068 +
48069 +       if (ha->request_ring) {
48070 +               pci_free_consistent(ha->pdev,
48071 +                   ((REQUEST_ENTRY_CNT + 1) * (sizeof(request_t))),
48072 +                   ha->request_ring, ha->request_dma);
48073 +       }
48074 +
48075 +       if (ha->response_ring) {
48076 +               pci_free_consistent(ha->pdev,
48077 +                   ((RESPONSE_ENTRY_CNT + 1) * (sizeof(response_t))),
48078 +                   ha->response_ring, ha->response_dma);
48079 +       }
48080 +
48081 +#if defined(FC_IP_SUPPORT)
48082 +       if (ha->risc_rec_q) {
48083 +               pci_free_consistent(ha->pdev,
48084 +                   ((IP_BUFFER_QUEUE_DEPTH) * (sizeof(struct risc_rec_entry))),
48085 +                   ha->risc_rec_q, ha->risc_rec_q_dma);
48086 +       }
48087 +       ha->risc_rec_q = NULL;
48088 +       ha->risc_rec_q_dma = 0;
48089 +#endif
48090 +
48091 +       ha->ct_sns = NULL;
48092 +       ha->ms_iocb = NULL;
48093 +
48094 +       ha->init_cb = NULL;
48095 +       ha->request_ring = NULL;
48096 +       ha->request_dma = 0;
48097 +       ha->response_ring = NULL;
48098 +       ha->response_dma = 0;
48099 +
48100 +       list_for_each_safe(fcpl, fcptemp, &ha->fcports) {
48101 +               fcport = list_entry(fcpl, fc_port_t, list);
48102 +
48103 +               /* fc luns */
48104 +               list_for_each_safe(fcll, fcltemp, &fcport->fcluns) {
48105 +                       fclun = list_entry(fcll, fc_lun_t, list);
48106 +
48107 +                       list_del_init(&fclun->list);
48108 +                       kfree(fclun);
48109 +               }
48110 +
48111 +               /* fc ports */
48112 +               list_del_init(&fcport->list);
48113 +               kfree(fcport);
48114 +       }
48115 +       INIT_LIST_HEAD(&ha->fcports);
48116 +
48117 +       LEAVE(__func__);
48118 +}
48119 +
48120 +/*
48121 + * qla2x00_allocate_sp_pool
48122 + *      This routine is called during initialization to allocate
48123 + *      memory for local srb_t.
48124 + *
48125 + * Input:
48126 + *      ha   = adapter block pointer.
48127 + *
48128 + * Context:
48129 + *      Kernel context.
48130 + * 
48131 + * Note: Sets the ref_count for non Null sp to one.
48132 + */
48133 +uint8_t
48134 +qla2x00_allocate_sp_pool(scsi_qla_host_t *ha) 
48135 +{
48136 +       srb_t   *sp;
48137 +       int  i;
48138 +       uint8_t      status = QL_STATUS_SUCCESS;
48139 +
48140 +       ENTER(__func__);
48141 +       
48142 +       INIT_LIST_HEAD(&ha->free_queue);
48143 +       ha->srb_alloc_cnt = 0;
48144 +
48145 +       ha->srb_pool_order = get_order(max_srbs * sizeof(srb_t));
48146 +       ha->srb_pool =
48147 +           (srb_t *) __get_free_pages(GFP_KERNEL, ha->srb_pool_order);
48148 +       if (ha->srb_pool != NULL) {
48149 +               for (i = 0, sp = ha->srb_pool; i < max_srbs; i++, sp++) {
48150 +                       memset(sp, 0, sizeof(srb_t));
48151 +                       __add_to_free_queue (ha, sp);
48152 +                       sp->magic = SRB_MAGIC;
48153 +                       sp->ref_num = ha->srb_alloc_cnt;
48154 +                       sp->host_no = ha->host_no;
48155 +                       atomic_set(&sp->ref_count, 0);
48156 +
48157 +                       ha->srb_alloc_cnt++;
48158 +               }
48159 +       }
48160 +
48161 +       /*
48162 +        * If we fail to allocte memory return an error
48163 +        */
48164 +       if (ha->srb_alloc_cnt == 0)
48165 +               status = QL_STATUS_ERROR;
48166 +
48167 +       printk(KERN_INFO
48168 +           "scsi(%ld): Allocated %d SRB(s).\n",
48169 +           ha->host_no, ha->srb_alloc_cnt);
48170 +
48171 +       LEAVE(__func__);
48172 +
48173 +       return (status);
48174 +}
48175 +
48176 +/*
48177 + *  This routine frees all adapter allocated memory.
48178 + *  
48179 + */
48180 +void
48181 +qla2x00_free_sp_pool( scsi_qla_host_t *ha) 
48182 +{
48183 +       int cnt_free_srbs = 0;
48184 +       srb_t *sp;
48185 +       struct list_head *list, *temp;
48186 +
48187 +       /*
48188 +        * Count the number of entries, remove the entries from the list, then
48189 +        * free the pool.
48190 +        */
48191 +       list_for_each_safe(list, temp, &ha->free_queue) {
48192 +               sp = list_entry(list, srb_t, list);
48193 +               
48194 +               __del_from_free_queue(ha, sp);
48195 +               cnt_free_srbs++;
48196 +       }
48197 +       free_pages((unsigned long)ha->srb_pool, ha->srb_pool_order);
48198 +
48199 +       if (cnt_free_srbs != ha->srb_alloc_cnt) {
48200 +               DEBUG(printk("scsi(%ld): Did not free all srbs, Free count = "
48201 +                   "%d, Alloc Count = %d\n",
48202 +                   ha->host_no, cnt_free_srbs, ha->srb_alloc_cnt));
48203 +               printk(KERN_INFO
48204 +                   "scsi(%ld): Did not free all srbs, Free count = %d, "
48205 +                   "Alloc Count = %d\n",
48206 +                   ha->host_no, cnt_free_srbs, ha->srb_alloc_cnt);
48207 +       }
48208 +}
48209 +
48210 +
48211 +
48212 +/**************************************************************************
48213 +* qla2x00_do_dpc
48214 +*   This kernel thread is a task that is schedule by the interrupt handler
48215 +*   to perform the background processing for interrupts.
48216 +*
48217 +* Notes:
48218 +* This task always run in the context of a kernel thread.  It
48219 +* is kick-off by the driver's detect code and starts up
48220 +* up one per adapter. It immediately goes to sleep and waits for
48221 +* some fibre event.  When either the interrupt handler or
48222 +* the timer routine detects a event it will one of the task
48223 +* bits then wake us up.
48224 +**************************************************************************/
48225 +static int
48226 +qla2x00_do_dpc(void *data)
48227 +{
48228 +       DECLARE_MUTEX_LOCKED(sem);
48229 +       scsi_qla_host_t *ha;
48230 +       fcdev_t         dev;
48231 +       struct list_head *fcpl;
48232 +       fc_port_t       *fcport;
48233 +       os_lun_t        *q;
48234 +       srb_t           *sp;
48235 +       uint8_t         status;
48236 +       uint32_t        t;
48237 +       unsigned long   flags = 0;
48238 +       struct list_head *list, *templist;
48239 +       int     dead_cnt, online_cnt;
48240 +
48241 +       ha = (scsi_qla_host_t *)data;
48242 +
48243 +       lock_kernel();
48244 +
48245 +       daemonize("%s_dpc%ld", DRIVER_NAME, ha->host_no);
48246 +       allow_signal(SIGTERM);
48247 +
48248 +       ha->dpc_wait = &sem;
48249 +
48250 +       unlock_kernel();
48251 +
48252 +       complete(&ha->dpc_inited);
48253 +
48254 +       while (1) {
48255 +               /*
48256 +                * If we get a signal, it means we are supposed to go
48257 +                * away and die.  This typically happens if the user is
48258 +                * trying to unload a module.
48259 +                */
48260 +               DEBUG3(printk("qla2x00: DPC handler sleeping\n"));
48261 +
48262 +               down_interruptible(&sem);
48263 +
48264 +               if (signal_pending(current))
48265 +                       break;   /* get out */
48266 +
48267 +               if (ha->dpc_should_die)
48268 +                       break;
48269 +
48270 +               if (!list_empty(&ha->done_queue))
48271 +                       schedule_work(&ha->run_qla_task);
48272 +
48273 +               DEBUG3(printk("qla2x00: DPC handler waking up\n"));
48274 +
48275 +               /* Initialization not yet finished. Don't do anything yet. */
48276 +               if (!ha->init_done || ha->dpc_active)
48277 +                       continue;
48278 +
48279 +               DEBUG3(printk("scsi(%ld): DPC handler\n", ha->host_no));
48280 +
48281 +               /* spin_lock_irqsave(&io_request_lock, ha->cpu_flags);*/
48282 +               ha->dpc_active = 1;
48283 +
48284 +               /* Determine what action is necessary */
48285 +
48286 +               /* Process commands in retry queue */
48287 +               if (test_and_clear_bit(PORT_RESTART_NEEDED, &ha->dpc_flags)) {
48288 +                       DEBUG(printk("scsi(%ld): DPC checking retry_q. "
48289 +                           "total=%d\n",
48290 +                           ha->host_no, ha->retry_q_cnt));
48291 +
48292 +                       spin_lock_irqsave(&ha->list_lock, flags);
48293 +                       dead_cnt = online_cnt = 0;
48294 +                       list_for_each_safe(list, templist, &ha->retry_queue) {
48295 +                               sp = list_entry(list, srb_t, list);
48296 +                               q = sp->lun_queue;
48297 +                               DEBUG3(printk("scsi(%ld): pid=%ld sp=%p, "
48298 +                                   "spflags=0x%x, q_flag= 0x%lx\n",
48299 +                                   ha->host_no,
48300 +                                   sp->cmd->serial_number,
48301 +                                   sp, sp->flags, q->q_flag));
48302 +
48303 +                               if (q == NULL)
48304 +                                       continue;
48305 +                               fcport = q->fclun->fcport;
48306 +
48307 +                               if (atomic_read(&fcport->state) ==
48308 +                                   FC_DEVICE_DEAD) {
48309 +
48310 +                                       __del_from_retry_queue(ha, sp);
48311 +                                       CMD_RESULT(sp->cmd) =
48312 +                                           DID_NO_CONNECT << 16;
48313 +                                       CMD_HANDLE(sp->cmd) =
48314 +                                           (unsigned char *) NULL;
48315 +                                       __add_to_done_queue(ha, sp);
48316 +                                       dead_cnt++;
48317 +                               } else if (atomic_read(&fcport->state) !=
48318 +                                   FC_DEVICE_LOST) {
48319 +
48320 +                                       __del_from_retry_queue(ha, sp);
48321 +                                       CMD_RESULT(sp->cmd) =
48322 +                                           DID_BUS_BUSY << 16;
48323 +                                       CMD_HANDLE(sp->cmd) =
48324 +                                           (unsigned char *) NULL;
48325 +                                       __add_to_done_queue(ha, sp);
48326 +                                       online_cnt++;
48327 +                               }
48328 +                       } /* list_for_each_safe() */
48329 +                       spin_unlock_irqrestore(&ha->list_lock, flags);
48330 +
48331 +                       DEBUG(printk("scsi(%ld): done processing retry queue "
48332 +                           "- dead=%d, online=%d\n ",
48333 +                           ha->host_no, dead_cnt, online_cnt));
48334 +               }
48335 +
48336 +               /* Process commands in scsi retry queue */
48337 +               if (test_and_clear_bit(SCSI_RESTART_NEEDED, &ha->dpc_flags)) {
48338 +                       /*
48339 +                        * Any requests we want to delay for some period is put
48340 +                        * in the scsi retry queue with a delay added. The
48341 +                        * timer will schedule a "scsi_restart_needed" every 
48342 +                        * second as long as there are requests in the scsi
48343 +                        * queue. 
48344 +                        */
48345 +                       DEBUG(printk("scsi(%ld): DPC checking scsi "
48346 +                           "retry_q.total=%d\n",
48347 +                           ha->host_no, ha->scsi_retry_q_cnt));
48348 +
48349 +                       online_cnt = 0;
48350 +                       spin_lock_irqsave(&ha->list_lock, flags);
48351 +                       list_for_each_safe(list,
48352 +                                               templist,
48353 +                                               &ha->scsi_retry_queue) {
48354 +
48355 +                               sp = list_entry(list, srb_t, list);
48356 +                               q = sp->lun_queue;
48357 +
48358 +                               DEBUG3(printk("scsi(%ld): scsi_retry_q: "
48359 +                                   "pid=%ld sp=%p, spflags=0x%x, "
48360 +                                   "q_flag= 0x%lx,q_state=%d\n",
48361 +                                   ha->host_no,
48362 +                                   sp->cmd->serial_number,
48363 +                                   sp, sp->flags, q->q_flag, q->q_state));
48364 +
48365 +                               /* Was this lun suspended */
48366 +                               if (q->q_state != LUN_STATE_WAIT) {
48367 +                                       online_cnt++;
48368 +                                       __del_from_scsi_retry_queue(ha, sp);
48369 +                                       __add_to_retry_queue(ha,sp);
48370 +                               }
48371 +
48372 +                               /* Was this command suspended for N secs */
48373 +                               if (sp->delay != 0) {
48374 +                                       sp->delay--;
48375 +                                       if (sp->delay == 0) {
48376 +                                               online_cnt++;
48377 +                                               __del_from_scsi_retry_queue(
48378 +                                                   ha, sp);
48379 +                                               __add_to_retry_queue(ha,sp);
48380 +                                       }
48381 +                               }
48382 +                       }
48383 +                       spin_unlock_irqrestore(&ha->list_lock, flags);
48384 +
48385 +                       DEBUG(if (online_cnt > 0))
48386 +                       DEBUG(printk("scsi(%ld): dpc() found scsi reqs to "
48387 +                           "restart= %d\n",
48388 +                           ha->host_no, online_cnt));
48389 +               }
48390 +
48391 +               if (ha->flags.mbox_busy) {
48392 +                       if (!list_empty(&ha->done_queue))
48393 +                               schedule_work(&ha->run_qla_task);
48394 +
48395 +                       ha->dpc_active = 0;
48396 +                       continue;
48397 +               }
48398 +
48399 +               if (test_and_clear_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) {
48400 +
48401 +                       DEBUG(printk("scsi(%ld): dpc: sched "
48402 +                           "qla2x00_abort_isp ha = %p\n",
48403 +                           ha->host_no, ha));
48404 +                       if (!(test_and_set_bit(ABORT_ISP_ACTIVE,
48405 +                           &ha->dpc_flags))) {
48406 +
48407 +                               if (qla2x00_abort_isp(ha, 0)) {
48408 +                                       /* failed. retry later */
48409 +                                       set_bit(ISP_ABORT_NEEDED,
48410 +                                           &ha->dpc_flags);
48411 +                               }
48412 +                               clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
48413 +                       }
48414 +                       DEBUG(printk("scsi(%ld): dpc: qla2x00_abort_isp end\n",
48415 +                           ha->host_no));
48416 +               }
48417 +
48418 +               if (test_and_clear_bit(LOOP_RESET_NEEDED, &ha->dpc_flags)) {
48419 +
48420 +                       DEBUG(printk("scsi(%ld): Loop Reset Needed -- "
48421 +                           "calling qla2x00_loop_reset().\n",
48422 +                           ha->host_no));
48423 +
48424 +                       qla2x00_loop_reset(ha);
48425 +               }
48426 +
48427 +               if (test_and_clear_bit(DEVICE_ABORT_NEEDED, &ha->dpc_flags)) {
48428 +
48429 +                       DEBUG(printk("scsi(%ld): Device Abort Needed -- "
48430 +                           "calling qla2x00_abort_device().\n",
48431 +                           ha->host_no));
48432 +
48433 +                       t = ha->reset_tgt_id;
48434 +                       if (ha->otgt[t] && ha->otgt[t]->vis_port)
48435 +                               qla2x00_abort_device(ha,
48436 +                                       ha->otgt[t]->vis_port->loop_id,
48437 +                                       ha->reset_lun);
48438 +               }
48439 +
48440 +               if (test_and_clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) &&
48441 +                   (!(test_and_set_bit(RESET_ACTIVE, &ha->dpc_flags)))) {
48442 +
48443 +                       DEBUG(printk("scsi(%ld): qla2x00_reset_marker()\n",
48444 +                           ha->host_no));
48445 +
48446 +                       qla2x00_rst_aen(ha);
48447 +                       clear_bit(RESET_ACTIVE, &ha->dpc_flags);
48448 +               }
48449 +
48450 +               /* Retry each device up to login retry count */
48451 +               if ((test_and_clear_bit(RELOGIN_NEEDED, &ha->dpc_flags)) &&
48452 +                   !test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) &&
48453 +                   ha->loop_state != LOOP_DOWN) {
48454 +
48455 +                       DEBUG(printk("scsi(%ld): qla2x00_port_login()\n",
48456 +                           ha->host_no));
48457 +
48458 +                       list_for_each(fcpl, &ha->fcports) {
48459 +                               fcport = list_entry(fcpl, fc_port_t, list);
48460 +                               
48461 +                               /*
48462 +                                * If the port is not ONLINE then try to login
48463 +                                * to it if we haven't run out of retries.
48464 +                                */
48465 +                               if (atomic_read(&fcport->state) != FC_ONLINE &&
48466 +                                   fcport->login_retry) {
48467 +
48468 +                                       fcport->login_retry--;
48469 +                                       memset(&dev, 0, sizeof(fcdev_t));
48470 +                                       dev.loop_id = fcport->old_loop_id;
48471 +                                       dev.d_id.b24 = fcport->d_id.b24;
48472 +                                       if (ha->fc_db[fcport->dev_id].flag &
48473 +                                           DEV_PUBLIC) 
48474 +                                               status = qla2x00_fabric_login(
48475 +                                                   ha, &dev);
48476 +                                       else    
48477 +                                               status =
48478 +                                                   qla2x00_local_device_login(
48479 +                                                       ha,
48480 +                                                       (dev.loop_id & 0xff));
48481 +
48482 +                                       if (status == QL_STATUS_SUCCESS) {
48483 +                                               ha->fc_db[fcport->dev_id].loop_id = dev.loop_id;
48484 +                                               fcport->loop_id = dev.loop_id;
48485 +                                               fcport->old_loop_id = dev.loop_id;
48486 +
48487 +                                               DEBUG(printk("scsi(%ld): port login OK: logged in ID 0x%x\n",
48488 +                                                   ha->host_no, fcport->loop_id));
48489 +                                               
48490 +                                               fcport->port_login_retry_count =
48491 +                                                   ha->port_down_retry_count * PORT_RETRY_TIME;
48492 +                                               atomic_set(&fcport->state, FC_ONLINE);
48493 +                                               atomic_set(&fcport->port_down_timer,
48494 +                                                   ha->port_down_retry_count * PORT_RETRY_TIME);
48495 +
48496 +                                               fcport->login_retry = 0;
48497 +                                       } else if (status == 1) {
48498 +                                               if (dev.loop_id != fcport->old_loop_id) {
48499 +                                                       fcport->old_loop_id = dev.loop_id;
48500 +                                                       ha->fc_db[fcport->dev_id].loop_id = dev.loop_id;
48501 +                                               }
48502 +
48503 +                                               set_bit(RELOGIN_NEEDED, &ha->dpc_flags);
48504 +                                               /* retry the login again */
48505 +                                               DEBUG(printk("scsi(%ld): Retrying %d login again loop_id 0x%x\n",
48506 +                                                   ha->host_no,
48507 +                                                   fcport->login_retry, fcport->loop_id));
48508 +                                       } else {
48509 +                                               fcport->login_retry = 0;
48510 +                                       }
48511 +                               }
48512 +                               if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))
48513 +                                       break;
48514 +                       }
48515 +                       DEBUG(printk("scsi(%ld): qla2x00_port_login - end\n",
48516 +                           ha->host_no));
48517 +               }
48518 +
48519 +               if ((test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags)) &&
48520 +                   ha->loop_state != LOOP_DOWN ) {
48521 +
48522 +                       clear_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags);
48523 +                       DEBUG(printk("scsi(%ld): qla2x00_login_retry()\n",
48524 +                           ha->host_no));
48525 +                               
48526 +                       set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
48527 +
48528 +                       DEBUG(printk("scsi(%ld): qla2x00_login_retry - end\n",
48529 +                           ha->host_no));
48530 +               }
48531 +
48532 +               if (test_and_clear_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) {
48533 +
48534 +                       DEBUG(printk("scsi(%ld): qla2x00_loop_resync()\n",
48535 +                           ha->host_no));
48536 +
48537 +                       if (!(test_and_set_bit(LOOP_RESYNC_ACTIVE,
48538 +                           &ha->dpc_flags))) {
48539 +
48540 +                               qla2x00_loop_resync(ha);
48541 +
48542 +                               clear_bit(LOOP_RESYNC_ACTIVE, &ha->dpc_flags);
48543 +                       }
48544 +
48545 +                       DEBUG(printk("scsi(%ld): qla2x00_loop_resync - end\n",
48546 +                           ha->host_no));
48547 +               }
48548 +
48549 +               if (ha->flags.failover_enabled) {
48550 +                       /*
48551 +                        * If we are not processing a ioctl or one of
48552 +                        * the ports are still MISSING or need a resync
48553 +                        * then process the failover event.
48554 +                       */  
48555 +                       if (!test_bit(CFG_ACTIVE, &ha->cfg_flags)) {
48556 +                               if (qla2x00_check_for_devices_online(ha)) {
48557 +                                       if (test_and_clear_bit(FAILOVER_EVENT, &ha->dpc_flags)) {
48558 +
48559 +                                               DEBUG(printk("scsi(%ld): qla2x00_cfg_event_notify()\n",
48560 +                                                   ha->host_no));
48561 +
48562 +                                               if (ha->flags.online) {
48563 +                                                       qla2x00_cfg_event_notify(ha, ha->failover_type);
48564 +                                               }
48565 +
48566 +                                               DEBUG(printk("scsi(%ld): qla2x00_cfg_event_notify - end\n",
48567 +                                                   ha->host_no));
48568 +                                       }
48569 +                               }
48570 +
48571 +                               if (test_and_clear_bit(FAILOVER_NEEDED, &ha->dpc_flags)) {
48572 +                                       /*
48573 +                                        * Get any requests from failover queue
48574 +                                        */
48575 +                                       DEBUG(printk("scsi(%ld): qla2x00_process_failover()\n",
48576 +                                           ha->host_no));
48577 +
48578 +                                       qla2x00_process_failover(ha);
48579 +
48580 +                                       DEBUG(printk("scsi(%ld): qla2x00_process_failover - end\n",
48581 +                                           ha->host_no));
48582 +                               }
48583 +                       }
48584 +               }
48585 +
48586 +               if (test_bit(RESTART_QUEUES_NEEDED, &ha->dpc_flags)) {
48587 +                       DEBUG(printk("scsi(%ld): qla2x00_restart_queues()\n",
48588 +                           ha->host_no));
48589 +
48590 +                       qla2x00_restart_queues(ha,FALSE);
48591 +
48592 +                       DEBUG(printk("scsi(%ld): qla2x00_restart_queues - end\n",
48593 +                           ha->host_no));
48594 +               }
48595 +
48596 +               if (test_bit(ABORT_QUEUES_NEEDED, &ha->dpc_flags)) {
48597 +
48598 +                       DEBUG(printk("scsi(%ld): qla2x00_abort_queues()\n",
48599 +                           ha->host_no));
48600 +                               
48601 +                       qla2x00_abort_queues(ha, FALSE);
48602 +
48603 +                       DEBUG(printk("scsi(%ld): qla2x00_abort_queues - end\n",
48604 +                           ha->host_no));
48605 +               }
48606 +
48607 +               if (!ha->interrupts_on)
48608 +                       qla2x00_enable_intrs(ha);
48609 +
48610 +               if (!list_empty(&ha->done_queue))
48611 +                       schedule_work(&ha->run_qla_task);
48612 +
48613 +               ha->dpc_active = 0;
48614 +       } /* End of while(1) */
48615 +
48616 +       DEBUG(printk("scsi(%ld): DPC handler exiting\n", ha->host_no));
48617 +
48618 +       /*
48619 +        * Make sure that nobody tries to wake us up again.
48620 +        */
48621 +       ha->dpc_wait = NULL;
48622 +       ha->dpc_active = 0;
48623 +
48624 +       complete_and_exit(&ha->dpc_exited, 0);
48625 +}
48626 +
48627 +/*
48628 + *  qla2x00_abort_queues
48629 + *     Abort all commands on queues on device
48630 + *
48631 + * Input:
48632 + *     ha = adapter block pointer.
48633 + *
48634 + * Context:
48635 + *     Interrupt context.
48636 + */
48637 +void
48638 +qla2x00_abort_queues(scsi_qla_host_t *ha, uint8_t doneqflg) 
48639 +{
48640 +
48641 +       srb_t       *sp;
48642 +       struct list_head *list, *temp;
48643 +       unsigned long flags;
48644 +
48645 +       ENTER(__func__);
48646 +
48647 +       clear_bit(ABORT_QUEUES_NEEDED, &ha->dpc_flags);
48648 +
48649 +       /* Return all commands device queues. */
48650 +       spin_lock_irqsave(&ha->list_lock,flags);
48651 +       list_for_each_safe(list, temp, &ha->pending_queue) {
48652 +               sp = list_entry(list, srb_t, list);
48653 +
48654 +               if (sp->flags & SRB_ABORTED)
48655 +                       continue;
48656 +
48657 +               /* Remove srb from LUN queue. */
48658 +               __del_from_pending_queue(ha, sp);
48659 +
48660 +               /* Set ending status. */
48661 +               CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
48662 +
48663 +               __add_to_done_queue(ha, sp);
48664 +       }
48665 +       spin_unlock_irqrestore(&ha->list_lock, flags);
48666 +
48667 +       LEAVE(__func__);
48668 +}
48669 +
48670 +/*
48671 + * qla2x00_check_for_devices_online
48672 + *
48673 + *     Check fcport state of all devices to make sure online.
48674 + *
48675 + * Input:
48676 + *     ha = adapter block pointer.
48677 + *
48678 + * Return:
48679 + *     None.
48680 + *
48681 + * Context:
48682 + */
48683 +static uint8_t
48684 +qla2x00_check_for_devices_online(scsi_qla_host_t *ha) 
48685 +{
48686 +       struct list_head        *fcpl;
48687 +       fc_port_t       *fcport;
48688 +       int             found, cnt;
48689 +
48690 +       found = 0;
48691 +       cnt = 0;
48692 +
48693 +       list_for_each(fcpl, &ha->fcports) {
48694 +               fcport = list_entry(fcpl, fc_port_t, list);
48695 +
48696 +               if ((atomic_read(&fcport->state) == FC_ONLINE) ||
48697 +                       (atomic_read(&fcport->state) == FC_DEVICE_DEAD))
48698 +                       found++;
48699 +
48700 +               cnt++;
48701 +       }
48702 +       if (cnt == found) {
48703 +               DEBUG5(printk("%s(%ld): all online\n",
48704 +                               __func__,
48705 +                               ha->host_no);)
48706 +               return 1;
48707 +       } else
48708 +               return 0;
48709 +}
48710 +
48711 +/*
48712 +*  qla2x00_rst_aen
48713 +*      Processes asynchronous reset.
48714 +*
48715 +* Input:
48716 +*      ha  = adapter block pointer.
48717 +*/
48718 +static void
48719 +qla2x00_rst_aen(scsi_qla_host_t *ha) 
48720 +{
48721 +       ENTER(__func__);
48722 +
48723 +       if (ha->flags.online && !ha->flags.reset_active &&
48724 +           !atomic_read(&ha->loop_down_timer) &&
48725 +           !(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags))) {
48726 +
48727 +               /* 10/15 ha->flags.reset_active = TRUE; */
48728 +               do {
48729 +                       clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
48730 +
48731 +                       /*
48732 +                        * Issue marker command only when we are going to start
48733 +                        * the I/O.
48734 +                        */
48735 +                       ha->marker_needed = 1;
48736 +               } while (!atomic_read(&ha->loop_down_timer) &&
48737 +                   (test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags)));
48738 +
48739 +               /* 10/15 ha->flags.reset_active = FALSE; */
48740 +       }
48741 +
48742 +       LEAVE(__func__);
48743 +}
48744 +
48745 +
48746 +/*
48747 + * This routine will alloacte SP from the free queue
48748 + * input:
48749 + *        scsi_qla_host_t *
48750 + * output:
48751 + *        srb_t * or NULL
48752 + */
48753 +srb_t *
48754 +qla2x00_get_new_sp(scsi_qla_host_t *ha)
48755 +{
48756 +       srb_t * sp = NULL;
48757 +       ulong  flags;
48758 +
48759 +       spin_lock_irqsave(&ha->list_lock, flags);
48760 +       if (!list_empty(&ha->free_queue)) {
48761 +               sp = list_entry(ha->free_queue.next, srb_t, list);
48762 +               __del_from_free_queue(ha, sp);
48763 +       }
48764 +       spin_unlock_irqrestore(&ha->list_lock, flags);
48765 +
48766 +       if (sp) {
48767 +#if defined(QL_DEBUG_LEVEL_4)
48768 +               if ((int)atomic_read(&sp->ref_count) != 0) {
48769 +                       printk(KERN_WARNING
48770 +                           "scsi(%ld): WARNING ref_count not zero!\n",
48771 +                           ha->host_no);
48772 +               }
48773 +#endif
48774 +
48775 +               sp_get(ha, sp);
48776 +       }
48777 +
48778 +       return (sp);
48779 +}
48780 +
48781 +/**************************************************************************
48782 +*   qla2x00_timer
48783 +*
48784 +* Description:
48785 +*   One second timer
48786 +*
48787 +* Context: Interrupt
48788 +***************************************************************************/
48789 +static void
48790 +qla2x00_timer(scsi_qla_host_t *ha)
48791 +{
48792 +       int             t,l;
48793 +       unsigned long   cpu_flags = 0;
48794 +       struct list_head        *fcpl;
48795 +       fc_port_t       *fcport;
48796 +       os_lun_t *lq;
48797 +       os_tgt_t *tq;
48798 +       int             start_dpc = 0;
48799 +
48800 +       /*
48801 +        * We try and restart any request in the retry queue every second.
48802 +        */
48803 +       if (!list_empty(&ha->retry_queue)) {
48804 +               set_bit(PORT_RESTART_NEEDED, &ha->dpc_flags);
48805 +               start_dpc++;
48806 +       }
48807 +
48808 +       /*
48809 +        * We try and restart any request in the scsi_retry queue every second.
48810 +        */
48811 +       if (!list_empty(&ha->scsi_retry_queue)) {
48812 +               set_bit(SCSI_RESTART_NEEDED, &ha->dpc_flags);
48813 +               start_dpc++;
48814 +       }
48815 +
48816 +       /*
48817 +        * We try and failover any request in the failover queue every second.
48818 +        */
48819 +       if (!list_empty(&ha->failover_queue)) {
48820 +               set_bit(FAILOVER_NEEDED, &ha->dpc_flags);
48821 +               start_dpc++;
48822 +       }
48823 +
48824 +       /*
48825 +        * Ports - Port down timer.
48826 +        *
48827 +        * Whenever, a port is in the LOST state we start decrementing its port
48828 +        * down timer every second until it reaches zero. Once  it reaches zero
48829 +        * the port it marked DEAD. 
48830 +        */
48831 +       t = 0;
48832 +       list_for_each(fcpl, &ha->fcports) {
48833 +               fcport = list_entry(fcpl, fc_port_t, list);
48834 +
48835 +               if (atomic_read(&fcport->state) == FC_DEVICE_LOST) {
48836 +
48837 +                       if (atomic_read(&fcport->port_down_timer) == 0)
48838 +                               continue;
48839 +
48840 +                       if (atomic_dec_and_test(&fcport->port_down_timer) != 0) 
48841 +                               atomic_set(&fcport->state, FC_DEVICE_DEAD);
48842 +                       
48843 +                       DEBUG(printk("scsi(%ld): fcport-%d - port retry count: "
48844 +                           "%d remainning\n",
48845 +                           ha->host_no,
48846 +                           t, atomic_read(&fcport->port_down_timer)));
48847 +               }
48848 +               t++;
48849 +       } /* End of for fcport  */
48850 +
48851 +       /*
48852 +        * LUNS - lun suspend timer.
48853 +        *
48854 +        * Whenever, a lun is suspended the timer starts decrementing its
48855 +        * suspend timer every second until it reaches zero. Once  it reaches
48856 +        * zero the lun retry count is decremented. 
48857 +        */
48858 +
48859 +       /*
48860 +        * FIXME(dg) - Need to convert this linear search of luns into a search
48861 +        * of a list of suspended luns.
48862 +        */
48863 +       for (t = 0; t < ha->max_targets; t++) {
48864 +               if ((tq = ha->otgt[t]) == NULL)
48865 +                       continue;
48866 +
48867 +               for (l = 0; l < ha->max_luns; l++) {
48868 +                       if ((lq = (os_lun_t *) tq->olun[l]) == NULL)
48869 +                               continue;
48870 +
48871 +                       spin_lock_irqsave(&lq->q_lock, cpu_flags);
48872 +                       if (lq->q_state == LUN_STATE_WAIT &&
48873 +                               atomic_read(&lq->q_timer) != 0) {
48874 +
48875 +                               if (atomic_dec_and_test(&lq->q_timer) != 0) {
48876 +                                       /*
48877 +                                        * A delay should immediately
48878 +                                        * transition to a READY state
48879 +                                        */
48880 +                                       if (test_and_clear_bit(LUN_EXEC_DELAYED,
48881 +                                           &lq->q_flag)) {
48882 +                                               lq->q_state = LUN_STATE_READY;
48883 +                                       }
48884 +                                       else {
48885 +                                               lq->q_count++;
48886 +                                               if (lq->q_count == lq->q_max)
48887 +                                                       lq->q_state =
48888 +                                                           LUN_STATE_TIMEOUT;
48889 +                                               else
48890 +                                                       lq->q_state =
48891 +                                                           LUN_STATE_RUN;
48892 +                                       }
48893 +                               }
48894 +                               DEBUG3(printk("scsi(%ld): lun%d - timer %d, "
48895 +                                   "count=%d, max=%d, state=%d\n",
48896 +                                   ha->host_no,
48897 +                                   l,
48898 +                                   atomic_read(&lq->q_timer),
48899 +                                   lq->q_count, lq->q_max, lq->q_state));
48900 +                       }
48901 +                       spin_unlock_irqrestore(&lq->q_lock, cpu_flags);
48902 +               } /* End of for luns  */
48903 +       } /* End of for targets  */
48904 +
48905 +       /* Loop down handler. */
48906 +       if (atomic_read(&ha->loop_down_timer) > 0 &&
48907 +           !(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) && ha->flags.online) {
48908 +
48909 +               /* dg 10/30 if (atomic_read(&ha->loop_down_timer) == LOOP_DOWN_TIME) { */
48910 +               if (atomic_read(&ha->loop_down_timer) ==
48911 +                   ha->loop_down_abort_time ) {
48912 +
48913 +                       DEBUG(printk("scsi(%ld): Loop Down - aborting the "
48914 +                           "queues before time expire\n",
48915 +                           ha->host_no));
48916 +
48917 +                       set_bit(ABORT_QUEUES_NEEDED, &ha->dpc_flags);
48918 +                       start_dpc++;
48919 +               }
48920 +
48921 +               /* if the loop has been down for 4 minutes, reinit adapter */
48922 +               if (atomic_dec_and_test(&ha->loop_down_timer) != 0) {
48923 +                       DEBUG(printk("scsi(%ld): Loop down exceed 4 mins - "
48924 +                           "restarting queues.\n",
48925 +                           ha->host_no));
48926 +
48927 +                       set_bit(RESTART_QUEUES_NEEDED, &ha->dpc_flags);
48928 +                       start_dpc++;
48929 +                       if (!(ha->device_flags & DFLG_NO_CABLE) &&
48930 +                           qla2x00_reinit && !ha->flags.failover_enabled) {
48931 +
48932 +                               DEBUG(printk("scsi(%ld): Loop down - "
48933 +                                   "aborting ISP.\n",
48934 +                                   ha->host_no));
48935 +
48936 +                               set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
48937 +                       }
48938 +               }
48939 +               DEBUG3(printk("scsi(%ld): Loop Down - seconds remainning %d\n",
48940 +                   ha->host_no,
48941 +                   atomic_read(&ha->loop_down_timer)));
48942 +       }
48943 +
48944 +       /*
48945 +        * Done Q Handler -- dgFIXME This handler will kick off doneq if we
48946 +        * haven't process it in 2 seconds.
48947 +        */
48948 +       if (!list_empty(&ha->done_queue))
48949 +               schedule_work(&ha->run_qla_task);
48950 +
48951 +#if QLA2100_LIPTEST
48952 +       /*
48953 +        * This block is used to periodically schedule isp abort after
48954 +        * qla2x00_lip flag is set. 
48955 +        */
48956 +
48957 +       /*
48958 +          if (qla2x00_lip && (ha->forceLip++) == (60*2)) {
48959 +          printk("timer: schedule isp abort.\n");
48960 +          set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
48961 +          ha->forceLip = 0;
48962 +          }
48963 +        */
48964 +
48965 +       /*
48966 +        * This block is used to periodically schedule mailbox cmd timeout
48967 +        * simulation
48968 +        */
48969 +       if (qla2x00_lip && (ha->forceLip++) == (60*6)) {
48970 +               printk("qla2x00_timer: Going to force mbx timeout\n");
48971 +
48972 +               ha->forceLip = 0;
48973 +               mbxtimeout = 1;
48974 +       }
48975 +#endif
48976 +
48977 +       if (test_bit(FAILOVER_EVENT_NEEDED, &ha->dpc_flags)) {
48978 +               if (ha->failback_delay)  {
48979 +                       ha->failback_delay--;
48980 +                       if (ha->failback_delay == 0)  {
48981 +                               set_bit(FAILOVER_EVENT, &ha->dpc_flags);
48982 +                               clear_bit(FAILOVER_EVENT_NEEDED,
48983 +                                   &ha->dpc_flags);
48984 +                       }
48985 +               } else {
48986 +                       set_bit(FAILOVER_EVENT, &ha->dpc_flags);
48987 +                       clear_bit(FAILOVER_EVENT_NEEDED, &ha->dpc_flags);
48988 +               }
48989 +       }
48990 +
48991 +       /* Schedule the DPC routine if needed */
48992 +       if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) ||
48993 +           test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) ||
48994 +           start_dpc ||
48995 +           test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags) ||
48996 +           test_bit(FAILOVER_EVENT, &ha->dpc_flags) ||
48997 +           test_bit(FAILOVER_NEEDED, &ha->dpc_flags) ||
48998 +           test_bit(MAILBOX_CMD_NEEDED, &ha->dpc_flags)) &&
48999 +           ha->dpc_wait && !ha->dpc_active ) {
49000 +
49001 +               up(ha->dpc_wait);
49002 +       }
49003 +
49004 +       qla2x00_restart_timer(ha, WATCH_INTERVAL);
49005 +}
49006 +
49007 +/*
49008 + * qla2x00_extend_timeout
49009 + *      This routine will extend the timeout to the specified value.
49010 + *
49011 + * Input:
49012 + *      cmd = SCSI command structure
49013 + *
49014 + * Returns:
49015 + *      None.
49016 + */
49017 +void 
49018 +qla2x00_extend_timeout(Scsi_Cmnd *cmd, int timeout) 
49019 +{
49020 +       srb_t *sp = (srb_t *) CMD_SP(cmd);
49021 +       u_long our_jiffies = (timeout * HZ) + jiffies;
49022 +
49023 +       sp->ext_history= 0; 
49024 +       sp->e_start = jiffies;
49025 +       if (cmd->eh_timeout.function) {
49026 +               mod_timer(&cmd->eh_timeout,our_jiffies);
49027 +               sp->ext_history |= 1;
49028 +       }
49029 +       if (sp->timer.function != NULL) {
49030 +               /* 
49031 +                * Our internal timer should timeout before the midlayer has a
49032 +                * chance begin the abort process
49033 +                */
49034 +               mod_timer(&sp->timer,our_jiffies - (QLA_CMD_TIMER_DELTA * HZ));
49035 +
49036 +               sp->ext_history |= 2;
49037 +       }
49038 +}
49039 +
49040 +/**************************************************************************
49041 +*   qla2x00_cmd_timeout
49042 +*
49043 +* Description:
49044 +*       Handles the command if it times out in any state.
49045 +*
49046 +* Input:
49047 +*     sp - pointer to validate
49048 +*
49049 +* Returns:
49050 +* None.
49051 +* Note:Need to add the support for if( sp->state == SRB_FAILOVER_STATE).
49052 +**************************************************************************/
49053 +static void
49054 +qla2x00_cmd_timeout(srb_t *sp)
49055 +{
49056 +       int t, l;
49057 +       int processed;
49058 +       scsi_qla_host_t *vis_ha, *dest_ha;
49059 +       Scsi_Cmnd *cmd;
49060 +       ulong      flags;
49061 +#if defined(QL_DEBUG_LEVEL_3)
49062 +       ulong      cpu_flags;
49063 +#endif
49064 +       fc_port_t       *fcport;
49065 +
49066 +       cmd = sp->cmd;
49067 +       vis_ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
49068 +
49069 +       DEBUG3(printk("cmd_timeout: Entering sp->state = %x\n", sp->state));
49070 +
49071 +       t = SCSI_TCN_32(cmd);
49072 +       l = SCSI_LUN_32(cmd);
49073 +       fcport = sp->fclun->fcport;
49074 +       dest_ha = sp->ha;
49075 +
49076 +       /*
49077 +        * If IO is found either in retry Queue 
49078 +        *    OR in Lun Queue
49079 +        * Return this IO back to host
49080 +        */
49081 +       spin_lock_irqsave(&vis_ha->list_lock, flags);
49082 +       processed = 0;
49083 +       if (sp->state == SRB_PENDING_STATE) {
49084 +               __del_from_pending_queue(vis_ha, sp);
49085 +               DEBUG2(printk("scsi(%ld): Found in Pending queue pid %ld, "
49086 +                   "State = %x., fcport state=%d jiffies=%lx\n",
49087 +                   vis_ha->host_no,
49088 +                   sp->cmd->serial_number, sp->state,
49089 +                   atomic_read(&fcport->state), jiffies));
49090 +
49091 +               /*
49092 +                * If FC_DEVICE is marked as dead return the cmd with
49093 +                * DID_NO_CONNECT status.  Otherwise set the host_byte to
49094 +                * DID_BUS_BUSY to let the OS  retry this cmd.
49095 +                */
49096 +               if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) {
49097 +                       cmd->result = DID_NO_CONNECT << 16;
49098 +               } else {
49099 +                       cmd->result = DID_BUS_BUSY << 16;
49100 +               }
49101 +               __add_to_done_queue(vis_ha, sp);
49102 +               processed++;
49103 +       } 
49104 +       spin_unlock_irqrestore(&vis_ha->list_lock, flags);
49105 +
49106 +       if (processed) {
49107 +                schedule_work(&vis_ha->run_qla_task);
49108 +
49109 +                return;
49110 +       }
49111 +
49112 +       spin_lock_irqsave(&dest_ha->list_lock, flags);
49113 +       if ((sp->state == SRB_RETRY_STATE) ||
49114 +           (sp->state == SRB_SCSI_RETRY_STATE) ||
49115 +           (sp->state == SRB_FAILOVER_STATE)) {
49116 +
49117 +               DEBUG2(printk("scsi(%ld): Found in (Scsi) Retry queue or "
49118 +                   "failover Q pid %ld, State = %x., fcport state=%d "
49119 +                   "jiffies=%lx retried=%d\n",
49120 +                   dest_ha->host_no,
49121 +                   sp->cmd->serial_number, sp->state,
49122 +                   atomic_read(&fcport->state),
49123 +                   jiffies, sp->cmd->retries));
49124 +
49125 +               if ((sp->state == SRB_RETRY_STATE)) {
49126 +                       __del_from_retry_queue(dest_ha, sp);
49127 +               } else if ((sp->state == SRB_SCSI_RETRY_STATE)) {
49128 +                       __del_from_scsi_retry_queue(dest_ha, sp);
49129 +               } else if ((sp->state == SRB_FAILOVER_STATE)) {
49130 +                       __del_from_failover_queue(dest_ha, sp);
49131 +               }
49132 +
49133 +               /*
49134 +                * If FC_DEVICE is marked as dead return the cmd with
49135 +                * DID_NO_CONNECT status.  Otherwise set the host_byte to
49136 +                * DID_BUS_BUSY to let the OS  retry this cmd.
49137 +                */
49138 +               if (dest_ha->flags.failover_enabled) {
49139 +                       cmd->result = DID_BUS_BUSY << 16;
49140 +               } else {
49141 +                       if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) {
49142 +                               cmd->result = DID_NO_CONNECT << 16;
49143 +                               qla2x00_extend_timeout(cmd, EXTEND_CMD_TIMEOUT);
49144 +                       } else {
49145 +                               cmd->result = DID_BUS_BUSY << 16;
49146 +                       }
49147 +               }
49148 +
49149 +               __add_to_done_queue(dest_ha, sp);
49150 +               processed++;
49151 +       } 
49152 +       spin_unlock_irqrestore(&dest_ha->list_lock, flags);
49153 +
49154 +       if (processed) {
49155 +                schedule_work(&dest_ha->run_qla_task);
49156 +
49157 +                return;
49158 +       }
49159 +/* TODO: Remove this code!!! */
49160 +#if defined(QL_DEBUG_LEVEL_3)
49161 +       spin_lock_irqsave(&dest_ha->list_lock, cpu_flags);
49162 +       if (sp->state == SRB_DONE_STATE) {
49163 +               /* IO in done_q  -- leave it */
49164 +               DEBUG(printk("scsi(%ld): Found in Done queue pid %ld sp=%p.\n",
49165 +                   dest_ha->host_no, sp->cmd->serial_number, sp));
49166 +       } else if (sp->state == SRB_SUSPENDED_STATE) {
49167 +               DEBUG(printk("scsi(%ld): Found SP %p in suspended state  "
49168 +                   "- pid %d:\n",
49169 +                   dest_ha->host_no,sp,
49170 +                   (int)sp->cmd->serial_number));
49171 +               DEBUG(qla2x00_dump_buffer((uint8_t *)sp, sizeof(srb_t));)
49172 +       } else if (sp->state == SRB_ACTIVE_STATE) {
49173 +               /*
49174 +                * IO is with ISP find the command in our active list.
49175 +                */
49176 +               spin_unlock_irqrestore(&dest_ha->list_lock, cpu_flags);
49177 +               spin_lock_irqsave(&dest_ha->hardware_lock, flags);
49178 +               if (sp ==
49179 +                   dest_ha->outstanding_cmds[(u_long)CMD_HANDLE(sp->cmd)]) {
49180 +
49181 +                       DEBUG(printk("cmd_timeout: Found in ISP \n");)
49182 +
49183 +                       sp->state = SRB_ACTIVE_TIMEOUT_STATE;
49184 +                       spin_unlock_irqrestore(&dest_ha->hardware_lock, flags);
49185 +               } else {
49186 +                       spin_unlock_irqrestore(&dest_ha->hardware_lock, flags);
49187 +                       printk(KERN_INFO 
49188 +                               "qla_cmd_timeout: State indicates it is with "
49189 +                               "ISP, But not in active array\n");
49190 +               }
49191 +               spin_lock_irqsave(&dest_ha->list_lock, cpu_flags);      /* 01/03 */
49192 +       } else if (sp->state == SRB_ACTIVE_TIMEOUT_STATE) {
49193 +               DEBUG(printk("qla2100%ld: Found in Active timeout state"
49194 +                               "pid %ld, State = %x., \n",
49195 +                               dest_ha->host_no,
49196 +                               sp->cmd->serial_number, sp->state);)
49197 +       } else {
49198 +               /* EMPTY */
49199 +               DEBUG2(printk("cmd_timeout%ld: LOST command state = "
49200 +                               "0x%x, sp=%p\n",
49201 +                               vis_ha->host_no, sp->state,sp);)
49202 +
49203 +               printk(KERN_INFO
49204 +                       "cmd_timeout: LOST command state = 0x%x\n", sp->state);
49205 +       }
49206 +       spin_unlock_irqrestore(&dest_ha->list_lock, cpu_flags);
49207 +#endif
49208 +       
49209 +       DEBUG3(printk("cmd_timeout: Leaving\n");)
49210 +}
49211 +
49212 +/*
49213 + * qla2x00_done_work
49214 + *
49215 + * This is a task to process completion only similar to a
49216 + * bottom half handler.
49217 + *
49218 + *      Input:
49219 + *      p -- pointer to hba struct
49220 + *
49221 + */
49222 +void
49223 +qla2x00_done_work(void *p)
49224 +{
49225 +       scsi_qla_host_t *ha = (scsi_qla_host_t *) p;
49226 +
49227 +       ENTER(__func__);
49228 +
49229 +       set_bit(TASKLET_SCHED, &ha->dpc_flags);
49230 +
49231 +       if (!list_empty(&ha->done_queue))
49232 +               qla2x00_done(ha);
49233 +       
49234 +       clear_bit(TASKLET_SCHED, &ha->dpc_flags);
49235 +
49236 +       LEAVE(__func__);
49237 +}
49238 +
49239 +
49240 +/**************************************************************************
49241 +* qla2x00_done
49242 +*      Process completed commands.
49243 +*
49244 +* Input:
49245 +*      old_ha           = adapter block pointer.
49246 +*
49247 +* Returns:
49248 +* int     
49249 +**************************************************************************/
49250 +int
49251 +qla2x00_done(scsi_qla_host_t *old_ha)
49252 +{
49253 +       os_lun_t        *lq;
49254 +       Scsi_Cmnd       *cmd;
49255 +       unsigned long   flags = 0;
49256 +       scsi_qla_host_t *ha;
49257 +       scsi_qla_host_t *vis_ha;
49258 +       int     cnt;
49259 +       int     send_marker_once = 0;
49260 +       struct list_head        *spl, *sptemp;
49261 +       srb_t           *sp;
49262 +       struct  list_head local_sp_list;
49263 +
49264 +       ENTER(__func__);
49265 +
49266 +       if (test_bit(DONE_RUNNING, &old_ha->dpc_flags))
49267 +               return (0);
49268 +
49269 +       set_bit(DONE_RUNNING, &old_ha->dpc_flags);
49270 +       cnt = 0;
49271 +
49272 +       INIT_LIST_HEAD(&local_sp_list);
49273 +
49274 +       /*
49275 +        * Get into local queue such that we do not wind up calling done queue
49276 +        * takslet for the same IOs from DPC or any other place.
49277 +        */
49278 +       spin_lock_irqsave(&old_ha->list_lock,flags);
49279 +       list_for_each_safe(spl, sptemp, &old_ha->done_queue) {
49280 +               sp = list_entry(spl, srb_t, list);
49281 +
49282 +               /* remove command from done list */
49283 +               list_del_init(&sp->list);
49284 +
49285 +               old_ha->done_q_cnt--;
49286 +               sp->state = SRB_NO_QUEUE_STATE;
49287 +
49288 +               /* add to local queue */
49289 +               list_add_tail(&sp->list, &local_sp_list);
49290 +       }
49291 +       spin_unlock_irqrestore(&old_ha->list_lock, flags);
49292 +
49293 +       /*
49294 +        * All done commands are in the local queue, now do the call back.
49295 +        */
49296 +       list_for_each_safe(spl, sptemp, &local_sp_list) {
49297 +               sp = list_entry(spl, srb_t, list);
49298 +
49299 +               /* remove command from local list */
49300 +               list_del_init(&sp->list);
49301 +
49302 +               cnt++;
49303 +
49304 +               cmd = sp->cmd;
49305 +               if (cmd == NULL)
49306 +                       continue;
49307 +
49308 +               vis_ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
49309 +               lq = sp->lun_queue;
49310 +               ha = lq->fclun->fcport->ha;
49311 +
49312 +               if (sp->flags & SRB_DMA_VALID) {
49313 +                       sp->flags &= ~SRB_DMA_VALID;
49314 +
49315 +                       /* 4.10   64 and 32 bit */
49316 +                       /* Release memory used for this I/O */
49317 +                       if (cmd->use_sg) {
49318 +                               pci_unmap_sg(ha->pdev,
49319 +                                   cmd->request_buffer,
49320 +                                   cmd->use_sg,
49321 +                                   scsi_to_pci_dma_dir(
49322 +                                           cmd->sc_data_direction));
49323 +                       } else if (cmd->request_bufflen) {
49324 +                               pci_unmap_page(ha->pdev,
49325 +                                   sp->saved_dma_handle,
49326 +                                   cmd->request_bufflen,
49327 +                                   scsi_to_pci_dma_dir(
49328 +                                           cmd->sc_data_direction));
49329 +                       }
49330 +               }
49331 +
49332 +               if (!(sp->flags & SRB_IOCTL) && ha->flags.failover_enabled) {
49333 +                       /*
49334 +                        * This routine checks for DID_NO_CONNECT to decide
49335 +                        * whether to failover to another path or not. We only
49336 +                        * failover on that status.
49337 +                        */
49338 +                       if (qla2x00_fo_check(ha,sp)) {
49339 +                               if ((sp->state != SRB_FAILOVER_STATE)) {
49340 +                                       /*
49341 +                                        * Retry the command on this path
49342 +                                        * several times before selecting a new
49343 +                                        * path.
49344 +                                        */
49345 +                                       add_to_pending_queue_head(vis_ha, sp);
49346 +                                       qla2x00_next(vis_ha);
49347 +                               }
49348 +                               else {
49349 +                                       /* we failover this path */
49350 +                                       qla2x00_extend_timeout(sp->cmd,
49351 +                                                       EXTEND_CMD_TIMEOUT);
49352 +                               }
49353 +                               continue;
49354 +                       }
49355 +                       
49356 +               }
49357 +
49358 +               switch ((CMD_RESULT(cmd)>>16)) {
49359 +                       case DID_OK:
49360 +                       case DID_ERROR:
49361 +                               break;
49362 +
49363 +                       case DID_RESET:
49364 +                               /*
49365 +                                * Set marker needed, so we don't have to
49366 +                                * send multiple markers
49367 +                                */
49368 +                               if (!send_marker_once) {
49369 +                                       ha->marker_needed = 1;
49370 +                                       send_marker_once++;
49371 +                               }
49372 +
49373 +                               /*
49374 +                                * WORKAROUND
49375 +                                *
49376 +                                * A backdoor device-reset requires different
49377 +                                * error handling.  This code differentiates
49378 +                                * between normal error handling and the
49379 +                                * backdoor method.
49380 +                                *
49381 +                                */
49382 +                               if (ha->host->eh_active != EH_ACTIVE)
49383 +                                       CMD_RESULT(sp->cmd) =
49384 +                                           DID_BUS_BUSY << 16;
49385 +                               break;
49386 +
49387 +
49388 +                       case DID_ABORT:
49389 +                               sp->flags &= ~SRB_ABORT_PENDING;
49390 +                               sp->flags |= SRB_ABORTED;
49391 +
49392 +                               if (sp->flags & SRB_TIMEOUT)
49393 +                                       CMD_RESULT(cmd)= DID_TIME_OUT << 16;
49394 +
49395 +                               break;
49396 +
49397 +                       default:
49398 +                               DEBUG2(printk("scsi(%ld:%d:%d) %s: did_error "
49399 +                                   "= %d, comp-scsi= 0x%x-0x%x.\n",
49400 +                                   vis_ha->host_no,
49401 +                                   SCSI_TCN_32(cmd),
49402 +                                   SCSI_LUN_32(cmd),
49403 +                                   __func__,
49404 +                                   (CMD_RESULT(cmd)>>16),
49405 +                                   CMD_COMPL_STATUS(cmd),
49406 +                                   CMD_SCSI_STATUS(cmd)));
49407 +                               break;
49408 +               }
49409 +
49410 +               /*
49411 +                * Call the mid-level driver interrupt handler -- via sp_put()
49412 +                */
49413 +               sp_put(ha, sp);
49414 +
49415 +               qla2x00_next(vis_ha);
49416 +
49417 +       } /* end of while */
49418 +       clear_bit(DONE_RUNNING, &old_ha->dpc_flags);
49419 +
49420 +       LEAVE(__func__);
49421 +
49422 +       return (cnt);
49423 +}
49424 +
49425 +/*
49426 + * qla2x00_next
49427 + *     Retrieve and process next job in the LUN queue.
49428 + *
49429 + * Input:
49430 + *     tq = SCSI target queue pointer.
49431 + *     lq = SCSI LUN queue pointer.
49432 + *     TGT_LOCK must be already obtained.
49433 + *
49434 + * Output:
49435 + *     Releases TGT_LOCK upon exit.
49436 + *
49437 + * Context:
49438 + *     Kernel/Interrupt context.
49439 + * 
49440 + * Note: This routine will always try to start I/O from visible HBA.
49441 + */
49442 +void
49443 +qla2x00_next(scsi_qla_host_t *vis_ha) 
49444 +{
49445 +       scsi_qla_host_t *dest_ha;
49446 +       fc_port_t       *fcport;
49447 +       srb_t           *sp;
49448 +       int             rval;
49449 +       unsigned long   flags;
49450 +
49451 +       ENTER(__func__);
49452 +
49453 +       spin_lock_irqsave(&vis_ha->list_lock, flags);
49454 +       while (!list_empty(&vis_ha->pending_queue)) {
49455 +               sp = list_entry(vis_ha->pending_queue.next, srb_t, list);
49456 +
49457 +               fcport = sp->fclun->fcport;
49458 +               dest_ha = fcport->ha;
49459 +
49460 +               /* Check if command can be started, exit if not. */
49461 +               if (LOOP_TRANSITION(dest_ha)) {
49462 +                       break;
49463 +               }
49464 +
49465 +               __del_from_pending_queue(vis_ha, sp);
49466 +
49467 +               /* If device is dead then send request back to OS */
49468 +               if ((dest_ha->flags.link_down_error_enable &&
49469 +                   atomic_read(&fcport->state) == FC_DEVICE_DEAD)) {
49470 +
49471 +                       CMD_RESULT(sp->cmd) = DID_NO_CONNECT << 16;
49472 +
49473 +                       if (!atomic_read(&dest_ha->loop_down_timer) &&
49474 +                           dest_ha->loop_state == LOOP_DOWN) {
49475 +                               sp->err_id = 2;
49476 +                       } else {
49477 +                               sp->err_id = 1;
49478 +                       }
49479 +                       DEBUG3(printk("scsi(%ld): loop/port is down - "
49480 +                           "pid=%ld, sp=%p loopid=0x%x queued to dest HBA "
49481 +                           "scsi%ld.\n",
49482 +                           dest_ha->host_no,
49483 +                           sp->cmd->serial_number, sp,
49484 +                           fcport->loop_id, dest_ha->host_no));
49485 +                       /* 
49486 +                        * Initiate a failover - done routine will initiate.
49487 +                        */
49488 +                       __add_to_done_queue(vis_ha, sp);
49489 +
49490 +                       continue;
49491 +               }
49492 +
49493 +               /*
49494 +                * SCSI Kluge: Whenever, we need to wait for an event such as
49495 +                * loop down (i.e. loop_down_timer ) or port down (i.e.  LUN
49496 +                * request qeueue is suspended) then we will recycle new
49497 +                * commands back to the SCSI layer.  We do this because this is
49498 +                * normally a temporary condition and we don't want the
49499 +                * mid-level scsi.c driver to get upset and start aborting
49500 +                * commands.  The timeout value is extracted from the command
49501 +                * minus 1-second and put on a retry queue (watchdog). Once the
49502 +                * command timeout it is returned to the mid-level with a BUSY
49503 +                * status, so the mid-level will retry it. This process
49504 +                * continues until the LOOP DOWN time expires or the condition
49505 +                * goes away.
49506 +                */
49507 +               if (!(sp->flags & SRB_IOCTL) &&
49508 +                   (atomic_read(&fcport->state) != FC_ONLINE ||
49509 +                       test_bit(ABORT_ISP_ACTIVE, &dest_ha->dpc_flags) ||
49510 +                       (dest_ha->loop_state != LOOP_READY) ||
49511 +                       (sp->flags & SRB_FAILOVER))) {
49512 +
49513 +                       DEBUG3(printk("scsi(%ld): port=(0x%x) retry_q(%d) "
49514 +                           "loop state = %d, loop counter = 0x%x dpc flags "
49515 +                           "= 0x%lx\n",
49516 +                           dest_ha->host_no,
49517 +                           fcport->loop_id,
49518 +                           atomic_read(&fcport->state),
49519 +                           dest_ha->loop_state,
49520 +                           atomic_read(&dest_ha->loop_down_timer),
49521 +                           dest_ha->dpc_flags));
49522 +
49523 +                       qla2x00_extend_timeout(sp->cmd, EXTEND_CMD_TIMEOUT);
49524 +                       __add_to_retry_queue(vis_ha, sp);
49525 +
49526 +                       continue;
49527 +               } 
49528 +
49529 +               /*
49530 +                * If this request's lun is suspended then put the request on
49531 +                * the  scsi_retry queue. 
49532 +                */
49533 +               if (!(sp->flags & SRB_IOCTL) &&
49534 +                   sp->lun_queue->q_state == LUN_STATE_WAIT) {
49535 +                       DEBUG3(printk("scsi(%ld): lun wait state - pid=%ld, "
49536 +                           "opcode=%d, allowed=%d, retries=%d\n",
49537 +                           dest_ha->host_no,
49538 +                           sp->cmd->serial_number,
49539 +                           sp->cmd->cmnd[0],
49540 +                           sp->cmd->allowed,
49541 +                           sp->cmd->retries));
49542 +                               
49543 +                       __add_to_scsi_retry_queue(vis_ha, sp);
49544 +
49545 +                       continue;
49546 +               }
49547 +
49548 +               sp->lun_queue->io_cnt++;
49549 +
49550 +               /* Release target queue lock */
49551 +               spin_unlock_irqrestore(&vis_ha->list_lock, flags);
49552 +
49553 +               rval = qla2x00_start_scsi(sp);
49554 +
49555 +               spin_lock_irqsave(&vis_ha->list_lock, flags);
49556 +
49557 +               if (rval != QLA2X00_SUCCESS) {
49558 +                       /* Place request back on top of device queue */
49559 +                       /* add to the top of queue */
49560 +                       __add_to_pending_queue_head(vis_ha, sp);
49561 +
49562 +                       sp->lun_queue->io_cnt--;
49563 +                       break;
49564 +               }
49565 +       }
49566 +       spin_unlock_irqrestore(&vis_ha->list_lock, flags);
49567 +
49568 +       LEAVE(__func__);
49569 +}
49570 +
49571 +/*
49572 + *  qla2x00_flush_failover_queue
49573 + *     Return cmds of a "specific" LUN from the failover queue with
49574 + *      DID_BUS_BUSY status.
49575 + *
49576 + * Input:
49577 + *     ha = adapter block pointer.
49578 + *      q  = lun queue.
49579 + *
49580 + * Context:
49581 + *     Interrupt context.
49582 + */
49583 +void
49584 +qla2x00_flush_failover_q(scsi_qla_host_t *ha, os_lun_t *q)
49585 +{
49586 +       srb_t  *sp;
49587 +       struct list_head *list, *temp;
49588 +       unsigned long flags;
49589 +
49590 +       spin_lock_irqsave(&ha->list_lock, flags);
49591 +       list_for_each_safe(list, temp, &ha->failover_queue) {
49592 +               sp = list_entry(list, srb_t, list);
49593 +               /*
49594 +                * If request originated from the same lun_q then delete it
49595 +                * from the failover queue 
49596 +                */
49597 +               if (q == sp->lun_queue) {
49598 +                       /* Remove srb from failover queue. */
49599 +                       __del_from_failover_queue(ha,sp);
49600 +                       CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
49601 +                       CMD_HANDLE(sp->cmd) = (unsigned char *) NULL;
49602 +                       __add_to_done_queue(ha, sp);
49603 +               }
49604 +       }
49605 +       spin_unlock_irqrestore(&ha->list_lock, flags);
49606 +}
49607 +
49608 +
49609 +/*
49610 + * qla2x00_reset_lun_fo_counts
49611 + *     Reset failover retry counts
49612 + *
49613 + * Input:
49614 + *     ha = adapter block pointer.
49615 + *
49616 + * Context:
49617 + *     Interrupt context.
49618 + */
49619 +void 
49620 +qla2x00_reset_lun_fo_counts(scsi_qla_host_t *ha, os_lun_t *lq) 
49621 +{
49622 +       srb_t           *tsp;
49623 +       os_lun_t        *orig_lq;
49624 +       struct list_head *list;
49625 +       unsigned long   flags ;
49626 +
49627 +       spin_lock_irqsave(&ha->list_lock, flags);
49628 +       /*
49629 +        * the pending queue.
49630 +        */
49631 +       list_for_each(list,&ha->pending_queue) {
49632 +               tsp = list_entry(list, srb_t, list);
49633 +               orig_lq = tsp->lun_queue;
49634 +               if (orig_lq == lq)
49635 +                       tsp->fo_retry_cnt = 0;
49636 +       }
49637 +       /*
49638 +        * the retry queue.
49639 +        */
49640 +       list_for_each(list,&ha->retry_queue) {
49641 +               tsp = list_entry(list, srb_t, list);
49642 +               orig_lq = tsp->lun_queue;
49643 +               if (orig_lq == lq)
49644 +                       tsp->fo_retry_cnt = 0;
49645 +       }
49646 +
49647 +       /*
49648 +        * the done queue.
49649 +        */
49650 +       list_for_each(list, &ha->done_queue) {
49651 +               tsp = list_entry(list, srb_t, list);
49652 +               orig_lq = tsp->lun_queue;
49653 +               if (orig_lq == lq)
49654 +                       tsp->fo_retry_cnt = 0;
49655 +       }
49656 +       spin_unlock_irqrestore(&ha->list_lock, flags);
49657 +}
49658 +
49659 +/*
49660 + *  qla2x00_failover_cleanup
49661 + *     Cleanup queues after a failover.
49662 + *
49663 + * Input:
49664 + *     sp = command pointer
49665 + *
49666 + * Context:
49667 + *     Interrupt context.
49668 + */
49669 +static void
49670 +qla2x00_failover_cleanup(srb_t *sp) 
49671 +{
49672 +       CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
49673 +       CMD_HANDLE(sp->cmd) = (unsigned char *) NULL;
49674 +
49675 +       /* turn-off all failover flags */
49676 +       sp->flags = sp->flags & ~(SRB_RETRY|SRB_FAILOVER|SRB_FO_CANCEL);
49677 +}
49678 +
49679 +
49680 +/*
49681 + *  qla2x00_process_failover
49682 + *     Process any command on the failover queue.
49683 + *
49684 + * Input:
49685 + *     ha = adapter block pointer.
49686 + *
49687 + * Context:
49688 + *     Interrupt context.
49689 + */
49690 +static void
49691 +qla2x00_process_failover(scsi_qla_host_t *ha) 
49692 +{
49693 +
49694 +       os_tgt_t        *tq;
49695 +       os_lun_t        *lq;
49696 +       srb_t       *sp;
49697 +       fc_port_t *fcport;
49698 +       struct list_head *list, *temp;
49699 +       unsigned long flags;
49700 +       uint32_t    t, l;
49701 +       scsi_qla_host_t *vis_ha = NULL;
49702 +
49703 +       DEBUG(printk("scsi(%ld): Processing failover for hba.\n", ha->host_no));
49704 +
49705 +       /*
49706 +        * Process all the commands in the failover queue. Attempt to failover
49707 +        * then either complete the command as is or requeue for retry.
49708 +        */
49709 +
49710 +       /* Prevent or allow acceptance of new I/O requests. */
49711 +       spin_lock_irqsave(&ha->list_lock, flags);
49712 +
49713 +       /*
49714 +        * Get first entry to find our visible adapter.  We could never get
49715 +        * here if the list is empty
49716 +        */
49717 +       list = ha->failover_queue.next;
49718 +       sp = list_entry(list, srb_t, list);
49719 +       vis_ha = (scsi_qla_host_t *) sp->cmd->device->host->hostdata;
49720 +       list_for_each_safe(list, temp, &ha->failover_queue) {
49721 +               sp = list_entry(list, srb_t, list);
49722 +
49723 +               tq = sp->tgt_queue;
49724 +               lq = sp->lun_queue;
49725 +               fcport = lq->fclun->fcport;
49726 +
49727 +               /* Remove srb from failover queue. */
49728 +               __del_from_failover_queue(ha, sp);
49729 +
49730 +               DEBUG2(printk("%s(): pid %ld retrycnt=%d\n",
49731 +                   __func__, sp->cmd->serial_number, sp->cmd->retries));
49732 +
49733 +               /*** Select an alternate path ***/
49734 +               /* 
49735 +                * If the path has already been change by a previous request
49736 +                * sp->fclun != lq->fclun
49737 +                */
49738 +               if (sp->fclun != lq->fclun ||
49739 +                   atomic_read(&fcport->state) != FC_DEVICE_DEAD) {
49740 +
49741 +                       qla2x00_failover_cleanup(sp);
49742 +
49743 +               } else if (qla2x00_cfg_failover(ha,
49744 +                   lq->fclun, tq, sp) == NULL) {
49745 +
49746 +                       /*
49747 +                        * We ran out of paths, so just post the status which
49748 +                        * is already set in the cmd.
49749 +                        */
49750 +                       printk(KERN_INFO
49751 +                           "scsi(%ld): Ran out of paths - pid %ld\n",
49752 +                           ha->host_no, sp->cmd->serial_number);
49753 +               } else {
49754 +                       qla2x00_failover_cleanup(sp);
49755 +
49756 +               }
49757 +               __add_to_done_queue(ha, sp);
49758 +       } /* list_for_each_safe */
49759 +       spin_unlock_irqrestore(&ha->list_lock,flags);
49760 +
49761 +       for (t = 0; t < vis_ha->max_targets; t++) {
49762 +               if ((tq = vis_ha->otgt[t]) == NULL)
49763 +                       continue;
49764 +               for (l = 0; l < vis_ha->max_luns; l++) {
49765 +                       if ((lq = (os_lun_t *) tq->olun[l]) == NULL)
49766 +                               continue;
49767 +
49768 +                       if( test_and_clear_bit(LUN_MPIO_BUSY, &lq->q_flag) ) {
49769 +                               /* EMPTY */
49770 +                               DEBUG(printk("scsi(%ld): remove suspend for "
49771 +                                   "lun %d\n", ha->host_no, lq->fclun->lun));
49772 +                       }
49773 +               }
49774 +       }
49775 +
49776 +       //qla2x00_restart_queues(ha,TRUE);
49777 +       qla2x00_restart_queues(ha, FALSE);
49778 +
49779 +       DEBUG(printk("%s() - done", __func__));
49780 +}
49781 +
49782 +/**************************************************************************
49783 +*   qla2x00_check_tgt_status
49784 +*
49785 +* Description:
49786 +*     Checks to see if the target or loop is down.
49787 +*
49788 +* Input:
49789 +*     cmd - pointer to Scsi cmd structure
49790 +*
49791 +* Returns:
49792 +*   1 - if target is present
49793 +*   0 - if target is not present
49794 +*
49795 +**************************************************************************/
49796 +uint8_t
49797 +qla2x00_check_tgt_status(scsi_qla_host_t *ha, Scsi_Cmnd *cmd)
49798 +{
49799 +       os_lun_t        *lq;
49800 +       uint32_t         b, t, l;
49801 +       fc_port_t       *fcport;
49802 +
49803 +       /* Generate LU queue on bus, target, LUN */
49804 +       b = SCSI_BUS_32(cmd);
49805 +       t = SCSI_TCN_32(cmd);
49806 +       l = SCSI_LUN_32(cmd);
49807 +
49808 +       if ((lq = GET_LU_Q(ha,t,l)) == NULL) {
49809 +               return(QL_STATUS_ERROR);
49810 +       }
49811 +
49812 +       fcport = lq->fclun->fcport;
49813 +
49814 +       if (TGT_Q(ha, t) == NULL ||
49815 +           l >= ha->max_luns ||
49816 +           (atomic_read(&fcport->state) == FC_DEVICE_DEAD) ||
49817 +           (!atomic_read(&ha->loop_down_timer) &&
49818 +               ha->loop_state == LOOP_DOWN) ||
49819 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
49820 +           ABORTS_ACTIVE ||
49821 +           ha->loop_state != LOOP_READY) {
49822 +
49823 +               DEBUG(printk(KERN_INFO
49824 +                   "scsi(%ld:%2d:%2d:%2d): %s connection is down\n",
49825 +                   ha->host_no,
49826 +                   b, t, l,
49827 +                   __func__));
49828 +
49829 +               CMD_RESULT(cmd) = DID_NO_CONNECT << 16;
49830 +               return(QL_STATUS_ERROR);
49831 +       }
49832 +       return (QL_STATUS_SUCCESS);
49833 +}
49834 +
49835 +/**************************************************************************
49836 +*   qla2x00_check_port_status
49837 +*
49838 +* Description:
49839 +*     Checks to see if the port or loop is down.
49840 +*
49841 +* Input:
49842 +*     fcport - pointer to fc_port_t structure.
49843 +*
49844 +* Returns:
49845 +*   1 - if port is present
49846 +*   0 - if port is not present
49847 +*
49848 +**************************************************************************/
49849 +uint8_t
49850 +qla2x00_check_port_status(scsi_qla_host_t *ha, fc_port_t *fcport)
49851 +{
49852 +       uint32_t        port_state;
49853 +
49854 +       if (fcport == NULL) {
49855 +               return(QL_STATUS_ERROR);
49856 +       }
49857 +
49858 +       port_state = (uint32_t)atomic_read(&fcport->state);
49859 +       if ((port_state != FC_ONLINE) ||
49860 +           (port_state == FC_DEVICE_DEAD) ||
49861 +           (!atomic_read(&ha->loop_down_timer) &&
49862 +               ha->loop_state == LOOP_DOWN) ||
49863 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
49864 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
49865 +           ABORTS_ACTIVE || ha->loop_state != LOOP_READY) {
49866 +
49867 +               DEBUG(printk(KERN_INFO
49868 +                   "scsi(%ld): Connection is down. fcport=%p.\n",
49869 +                   ha->host_no, fcport));
49870 +
49871 +               return (QL_STATUS_ERROR);
49872 +       }
49873 +
49874 +       return (QL_STATUS_SUCCESS);
49875 +}
49876 +
49877 +/****************************************************************************/
49878 +/* Create character driver "HbaApiDev" w dynamically allocated major number */
49879 +/* and create "/proc/scsi/qla2x00/HbaApiNode" as the device node associated */
49880 +/* with the major number.                                                   */
49881 +/****************************************************************************/
49882 +
49883 +#define APIDEV_NODE  "HbaApiNode"
49884 +#define APIDEV_NAME  "HbaApiDev"
49885 +
49886 +static int apidev_major = 0;
49887 +static struct Scsi_Host *apidev_host = 0;
49888 +
49889 +static struct file_operations apidev_fops = {
49890 +       .ioctl = apidev_ioctl,
49891 +       .open = apidev_open,
49892 +       .release = apidev_close,
49893 +};
49894 +
49895 +static int 
49896 +apidev_init(struct Scsi_Host *host) 
49897 +{
49898 +       if (apidev_host)
49899 +               return (0);
49900 +
49901 +       apidev_major = register_chrdev(0, APIDEV_NAME, &apidev_fops);
49902 +       if (0 > apidev_major) {
49903 +               DEBUG(printk("%s(): register_chrdev rc=%d\n",
49904 +                   __func__, apidev_major));
49905 +
49906 +               return (apidev_major);
49907 +       }
49908 +
49909 +       apidev_host = host;
49910 +
49911 +       DEBUG(printk("%s(): Creating (%s) %s/%s major=%d\n",
49912 +           __func__,
49913 +           host->hostt->proc_name, host->hostt->proc_dir->name,
49914 +           APIDEV_NODE, apidev_major));
49915 +
49916 +       proc_mknod(APIDEV_NODE, 0777+S_IFCHR, host->hostt->proc_dir,
49917 +           (kdev_t)mk_kdev(apidev_major, 0));
49918 +
49919 +       return 0;
49920 +}
49921 +
49922 +static int apidev_cleanup() 
49923 +{
49924 +       if (!apidev_host)
49925 +               return (0);
49926 +
49927 +       unregister_chrdev(apidev_major,APIDEV_NAME);
49928 +       remove_proc_entry(APIDEV_NODE,apidev_host->hostt->proc_dir);
49929 +       apidev_host = 0;
49930 +
49931 +       return (0);
49932 +}
49933 +
49934 +static int 
49935 +apidev_open(struct inode *inode, struct file *file) 
49936 +{
49937 +       DEBUG9(printk(KERN_INFO
49938 +           "%s(): open MAJOR number = %d, MINOR number = %d\n",
49939 +           __func__, major(inode->i_rdev), minor(inode->i_rdev)));
49940 +
49941 +       return 0;
49942 +}
49943 +
49944 +static int 
49945 +apidev_close(struct inode *inode, struct file *file) 
49946 +{
49947 +       DEBUG9(printk(KERN_INFO
49948 +           "%s(): closed\n", __func__));
49949 +
49950 +       return 0;
49951 +}
49952 +
49953 +static int 
49954 +apidev_ioctl(struct inode *inode,
49955 +    struct file *fp, unsigned int cmd, unsigned long arg) 
49956 +{
49957 +       /*
49958 +        * Since this var is not really used, use static type to conserve
49959 +        * stack space.
49960 +        */
49961 +       static Scsi_Device dummy_scsi_device;
49962 +
49963 +       dummy_scsi_device.host = apidev_host;
49964 +
49965 +       return (qla2x00_ioctl(&dummy_scsi_device, (int)cmd, (void*)arg));
49966 +}
49967 +
49968 +#define driver_template qla2x00_driver_template
49969 +#include "scsi_module.c"
49970 --- /dev/null   Thu Apr 11 07:25:15 2002
49971 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_os.h    Thu Jul  3 15:34:42 2003
49972 @@ -0,0 +1,156 @@
49973 +/******************************************************************************
49974 + *                  QLOGIC LINUX SOFTWARE
49975 + *
49976 + * QLogic ISP2x00 device driver for Linux 2.5.x
49977 + * Copyright (C) 2003 Qlogic Corporation
49978 + * (www.qlogic.com)
49979 + *
49980 + * Portions (C) Arjan van de Ven <arjanv@redhat.com> for Red Hat, Inc.
49981 + *
49982 + * This program is free software; you can redistribute it and/or modify it
49983 + * under the terms of the GNU General Public License as published by the
49984 + * Free Software Foundation; either version 2, or (at your option) any
49985 + * later version.
49986 + *
49987 + * This program is distributed in the hope that it will be useful, but
49988 + * WITHOUT ANY WARRANTY; without even the implied warranty of
49989 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
49990 + * General Public License for more details.
49991 + *
49992 + ******************************************************************************/
49993 +
49994 +#ifndef __QLA_OS_H
49995 +#define __QLA_OS_H
49996 +
49997 +/*
49998 + * Driver debug definitions.
49999 + */
50000 +/* #define QL_DEBUG_LEVEL_1  */ /* Output register accesses to COM1 */
50001 +/* #define QL_DEBUG_LEVEL_2  */ /* Output error msgs to COM1 */
50002 +/* #define QL_DEBUG_LEVEL_3  */ /* Output function trace msgs to COM1 */
50003 +/* #define QL_DEBUG_LEVEL_4  */ /* Output NVRAM trace msgs to COM1 */
50004 +/* #define QL_DEBUG_LEVEL_5  */ /* Output ring trace msgs to COM1 */
50005 +/* #define QL_DEBUG_LEVEL_6  */ /* Output WATCHDOG timer trace to COM1 */
50006 +/* #define QL_DEBUG_LEVEL_7  */ /* Output RISC load trace msgs to COM1 */
50007 +/* #define QL_DEBUG_LEVEL_8  */ /* Output ring saturation msgs to COM1 */
50008 +/* #define QL_DEBUG_LEVEL_9  */ /* Output IOCTL trace msgs */
50009 +/* #define QL_DEBUG_LEVEL_10 */ /* Output IOCTL error msgs */
50010 +/* #define QL_DEBUG_LEVEL_11 */ /* Output Mbx Cmd trace msgs */
50011 +/* #define QL_DEBUG_LEVEL_12 */ /* Output IP trace msgs */
50012 +/*
50013 + *  Local Macro Definitions.
50014 + */
50015 +#if defined(QL_DEBUG_LEVEL_1)  || defined(QL_DEBUG_LEVEL_2) || \
50016 +    defined(QL_DEBUG_LEVEL_3)  || defined(QL_DEBUG_LEVEL_4) || \
50017 +    defined(QL_DEBUG_LEVEL_5)  || defined(QL_DEBUG_LEVEL_6) || \
50018 +    defined(QL_DEBUG_LEVEL_7)  || defined(QL_DEBUG_LEVEL_8) || \
50019 +    defined(QL_DEBUG_LEVEL_9)  || defined(QL_DEBUG_LEVEL_10) || \
50020 +    defined(QL_DEBUG_LEVEL_11) || defined(QL_DEBUG_LEVEL_12)
50021 +    #define QL_DEBUG_ROUTINES
50022 +#endif
50023 +
50024 +#include <linux/config.h>
50025 +#ifndef QLA_MODVERSION
50026 +#define __NO_VERSION__
50027 +#endif
50028 +#include <linux/module.h>
50029 +#include <linux/version.h>
50030 +#include <linux/init.h>
50031 +#include <linux/string.h>
50032 +#include <linux/errno.h>
50033 +#include <linux/kernel.h>
50034 +#include <linux/ioport.h>
50035 +#include <linux/delay.h>
50036 +#include <linux/timer.h>
50037 +#include <linux/sched.h>
50038 +#include <linux/pci.h>
50039 +#include <linux/proc_fs.h>
50040 +#include <linux/blk.h>
50041 +#include <linux/interrupt.h>
50042 +#include <linux/stat.h>
50043 +#include <linux/slab.h>
50044 +#define __KERNEL_SYSCALLS__
50045 +#include <linux/unistd.h>
50046 +#include <linux/smp_lock.h>
50047 +#include <linux/bio.h>
50048 +#include <linux/moduleparam.h>
50049 +
50050 +#include <asm/system.h>
50051 +
50052 +#include <asm/io.h>
50053 +#include <asm/irq.h>
50054 +#include <asm/segment.h>
50055 +#include <asm/byteorder.h>
50056 +#include <asm/pgtable.h>
50057 +
50058 +#include "scsi.h"
50059 +#include "hosts.h"
50060 +
50061 +#if defined(FC_IP_SUPPORT)
50062 +#include <linux/ip.h>
50063 +#include <linux/if_arp.h>
50064 +#include <linux/skbuff.h>
50065 +#endif
50066 +
50067 +#include <linux/ioctl.h>
50068 +#include <scsi/scsi_ioctl.h>
50069 +#include <asm/uaccess.h>
50070 +
50071 +//TODO Fix this!!!
50072 +/*
50073 +* String arrays
50074 +*/
50075 +#define LINESIZE    256
50076 +#define MAXARGS      26
50077 +
50078 +/* PCI interface definitions */
50079 +struct qla_fw_info {
50080 +       unsigned short  addressing;     /* addressing method used to load fw */
50081 +#define FW_INFO_ADDR_NORMAL    0
50082 +#define FW_INFO_ADDR_EXTENDED  1
50083 +#define FW_INFO_ADDR_NOMORE    0xffff
50084 +       unsigned short  *fwcode;        /* pointer to FW array */
50085 +       unsigned short  *fwlen;         /* number of words in array */
50086 +       unsigned short  *fwstart;       /* start address for F/W */
50087 +       unsigned long   *lfwstart;      /* start address (long) for F/W */
50088 +};
50089 +struct qla_board_info {
50090 +       char                    name[9];        /* Board ID String */
50091 +       struct qla_fw_info      *fwinfo;
50092 +};
50093 +
50094 +/***********************************************************************
50095 +* We use the Scsi_Pointer structure that's included with each command
50096 +* SCSI_Cmnd as a scratchpad. 
50097 +*
50098 +* SCp is defined as follows:
50099 +*  - SCp.ptr  -- > pointer to the SRB
50100 +*  - SCp.this_residual  -- > HBA completion status for ioctl code. 
50101 +*
50102 +* Cmnd->host_scribble --> Used to hold the hba actived handle (1..255).
50103 +***********************************************************************/
50104 +#define        CMD_SP(Cmnd)            ((Cmnd)->SCp.ptr)
50105 +#define CMD_COMPL_STATUS(Cmnd)  ((Cmnd)->SCp.this_residual)
50106 +#define        CMD_HANDLE(Cmnd)        ((Cmnd)->host_scribble)
50107 +/* Additional fields used by ioctl passthru */
50108 +#define CMD_RESID_LEN(Cmnd)    ((Cmnd)->SCp.buffers_residual)
50109 +#define CMD_SCSI_STATUS(Cmnd)  ((Cmnd)->SCp.Status)
50110 +#define CMD_ACTUAL_SNSLEN(Cmnd)        ((Cmnd)->SCp.Message)
50111 +#define CMD_ENTRY_STATUS(Cmnd) ((Cmnd)->SCp.have_data_in)
50112 +
50113 +/*
50114 + * Other SCS__Cmnd members we only reference
50115 + */
50116 +#define        CMD_XFRLEN(Cmnd)        (Cmnd)->request_bufflen
50117 +#define        CMD_CDBLEN(Cmnd)        (Cmnd)->cmd_len
50118 +#define        CMD_CDBP(Cmnd)          (Cmnd)->cmnd
50119 +#define        CMD_SNSP(Cmnd)          (Cmnd)->sense_buffer
50120 +#define        CMD_SNSLEN(Cmnd)        (sizeof (Cmnd)->sense_buffer)
50121 +#define        CMD_RESULT(Cmnd)        ((Cmnd)->result)
50122 +#define        CMD_TIMEOUT(Cmnd)       ((Cmnd)->timeout_per_command)
50123 +
50124 +#define  SCSI_BUS_32(scp)      ((scp)->device->channel)
50125 +#define  SCSI_TCN_32(scp)      ((scp)->device->id)
50126 +#define  SCSI_LUN_32(scp)      ((scp)->device->lun)
50127 +
50128 +#endif
50129 --- /dev/null   Thu Apr 11 07:25:15 2002
50130 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_settings.h      Thu Jul  3 15:34:42 2003
50131 @@ -0,0 +1,80 @@
50132 +/******************************************************************************
50133 + *                  QLOGIC LINUX SOFTWARE
50134 + *
50135 + * QLogic ISP2x00 device driver for Linux 2.5.x
50136 + * Copyright (C) 2003 Qlogic Corporation
50137 + * (www.qlogic.com)
50138 + *
50139 + * This program is free software; you can redistribute it and/or modify it
50140 + * under the terms of the GNU General Public License as published by the
50141 + * Free Software Foundation; either version 2, or (at your option) any
50142 + * later version.
50143 + *
50144 + * This program is distributed in the hope that it will be useful, but
50145 + * WITHOUT ANY WARRANTY; without even the implied warranty of
50146 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
50147 + * General Public License for more details.
50148 + *
50149 + ******************************************************************************/
50150 +/*
50151 + * Compile time Options:
50152 + *     0 - Disable and 1 - Enable
50153 + */
50154 +#define MEMORY_MAPPED_IO              0
50155 +#define STOP_ON_ERROR                 0   /* Stop on aborts and resets  */
50156 +#define STOP_ON_RESET                 0
50157 +#define STOP_ON_ABORT                 0
50158 +#define QLA_SCSI_VENDOR_DIR           0 /* Decode vendor specific opcodes for direction */
50159 +#define QLA2100_LIPTEST               0
50160 +#define REQ_TRACE                     1
50161 +#define USE_ABORT_TGT                  1 /* Use Abort Target mbx cmd */
50162 +
50163 +#define DEBUG_QLA2100                 0  /* For Debug of qla2x00 */
50164 +
50165 +#define MPIO_SUPPORT                   0
50166 +#define VSA                            0  /* Volume Set Addressing */
50167 +
50168 +/* 
50169 + * When a lun is suspended for the "Not Ready" condition
50170 + * then it will suspend the lun for increments of 6 sec delays.
50171 + * SUSPEND_COUNT is that count.
50172 + */
50173 +#define SUSPEND_COUNT                  10  /* 6 secs * 10 retries = 60 secs */
50174 +                                       
50175 +/* Failover options */
50176 +#define MAX_RECOVERYTIME               10  /* Max suspend time for a lun recovery time */
50177 +#define MAX_FAILBACKTIME               5  /* (60) Max suspend time before failing back */
50178 +
50179 +#define QLA_CMD_TIMER_DELTA            3
50180 +
50181 +#define MAX_RETRIES_OF_ISP_ABORT       5  /*  */
50182 +
50183 +/*
50184 + * Defines the time in seconds that 
50185 + * the driver extends the command timeout
50186 + * to get around the problem where the
50187 + * mid-layer only allows 5 retries for commands
50188 + * that return BUS_BUSY
50189 + */
50190 +#define EXTEND_CMD_TIMEOUT              60
50191 +
50192 +/*
50193 + * We need to hardcode this value since the firmware
50194 + * does not allow us to retrieve the maximum number of 
50195 + * IOCBs available during initializtion.
50196 + *
50197 + * Factors that affect this value include the amount of 
50198 + * memory on-board (HBA) and firmware IP support.
50199 + *
50200 + */
50201 +#undef IOCB_THROTTLE_USAGE
50202 +#undef IOCB_HIT_RATE
50203 +#define MAX_IOCBS_AVAILBALE            3000
50204 +
50205 +/*
50206 + * Some vendor subsystems do not recover properly after a device reset.  Define
50207 + * the following to force a logout after a successful device reset.
50208 + */
50209 +#undef LOGOUT_AFTER_DEVICE_RESET
50210 +
50211 +#include "qla_version.h"
50212 --- /dev/null   Thu Apr 11 07:25:15 2002
50213 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_sup.c   Thu Jul  3 15:34:42 2003
50214 @@ -0,0 +1,560 @@
50215 +/******************************************************************************
50216 + *                  QLOGIC LINUX SOFTWARE
50217 + *
50218 + * QLogic ISP2x00 device driver for Linux 2.5.x
50219 + * Copyright (C) 2003 Qlogic Corporation
50220 + * (www.qlogic.com)
50221 + *
50222 + * This program is free software; you can redistribute it and/or modify it
50223 + * under the terms of the GNU General Public License as published by the
50224 + * Free Software Foundation; either version 2, or (at your option) any
50225 + * later version.
50226 + *
50227 + * This program is distributed in the hope that it will be useful, but
50228 + * WITHOUT ANY WARRANTY; without even the implied warranty of
50229 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
50230 + * General Public License for more details.
50231 + *
50232 + ******************************************************************************/
50233 +
50234 +#include "qla_os.h"
50235 +#include "qla_def.h"
50236 +
50237 +static uint16_t qla2x00_nvram_request(scsi_qla_host_t *, uint32_t);
50238 +
50239 +static void qla2x00_flash_enable(scsi_qla_host_t *);
50240 +static void qla2x00_flash_disable(scsi_qla_host_t *);
50241 +
50242 +uint8_t qla2x00_read_flash_byte(scsi_qla_host_t *, uint32_t);
50243 +static void qla2x00_write_flash_byte(scsi_qla_host_t *, uint32_t, uint8_t);
50244 +static uint8_t qla2x00_poll_flash(scsi_qla_host_t *ha,
50245 +               uint32_t addr, uint8_t poll_data, uint8_t mid);
50246 +static uint8_t qla2x00_program_flash_address(scsi_qla_host_t *ha,
50247 +               uint32_t addr, uint8_t data, uint8_t mid);
50248 +static uint8_t qla2x00_erase_flash_sector(scsi_qla_host_t *ha,
50249 +               uint32_t addr, uint32_t sec_mask, uint8_t mid);
50250 +
50251 +uint8_t qla2x00_get_flash_manufacturer(scsi_qla_host_t *ha);
50252 +uint16_t qla2x00_get_flash_version(scsi_qla_host_t *);
50253 +uint16_t qla2x00_get_flash_image(scsi_qla_host_t *ha, uint8_t *image);
50254 +uint16_t qla2x00_set_flash_image(scsi_qla_host_t *ha, uint8_t *image);
50255 +
50256 +
50257 +/*
50258 + * NVRAM support routines
50259 + */
50260 +
50261 +/**
50262 + * qla2x00_get_nvram_word() - Calculates word position in NVRAM and calls the
50263 + *     request routine to get the word from NVRAM.
50264 + * @ha: HA context
50265 + * @addr: Address in NVRAM to read
50266 + *
50267 + * Returns the word read from nvram @addr.
50268 + */
50269 +uint16_t
50270 +qla2x00_get_nvram_word(scsi_qla_host_t *ha, uint32_t addr)
50271 +{
50272 +       uint16_t        data;
50273 +       uint32_t        nv_cmd;
50274 +
50275 +       ENTER(__func__);
50276 +
50277 +       nv_cmd = addr << 16;
50278 +       nv_cmd |= NV_READ_OP;
50279 +       data = qla2x00_nvram_request(ha, nv_cmd);
50280 +
50281 +       DEBUG4(printk("%s(%ld): NVRAM[%lx]=%lx.\n",
50282 +           __func__, ha->host_no, (u_long)addr, (u_long)data));
50283 +
50284 +       LEAVE(__func__);
50285 +
50286 +       return (data);
50287 +}
50288 +
50289 +/**
50290 + * qla2x00_nvram_request() - Sends read command to NVRAM and gets data from
50291 + *     NVRAM.
50292 + * @ha: HA context
50293 + * @nv_cmd: NVRAM command
50294 + *
50295 + * Bit definitions for NVRAM command:
50296 + *
50297 + *     Bit 26     = start bit
50298 + *     Bit 25, 24 = opcode
50299 + *     Bit 23-16  = address
50300 + *     Bit 15-0   = write data
50301 + *
50302 + * Returns the word read from nvram @addr.
50303 + */
50304 +static uint16_t
50305 +qla2x00_nvram_request(scsi_qla_host_t *ha, uint32_t nv_cmd)
50306 +{
50307 +       uint8_t         cnt;
50308 +       device_reg_t    *reg = ha->iobase;
50309 +       uint16_t        data = 0;
50310 +       uint16_t        reg_data;
50311 +
50312 +       /* Send command to NVRAM. */
50313 +       nv_cmd <<= 5;
50314 +       for (cnt = 0; cnt < 11; cnt++) {
50315 +               if (nv_cmd & BIT_31)
50316 +                       qla2x00_nv_write(ha, NVR_DATA_OUT);
50317 +               else
50318 +                       qla2x00_nv_write(ha, 0);
50319 +               nv_cmd <<= 1;
50320 +       }
50321 +
50322 +       /* Read data from NVRAM. */
50323 +       for (cnt = 0; cnt < 16; cnt++) {
50324 +               WRT_REG_WORD(&reg->nvram, NVR_SELECT | NVR_CLOCK);
50325 +               NVRAM_DELAY();
50326 +               data <<= 1;
50327 +               reg_data = RD_REG_WORD(&reg->nvram);
50328 +               if (reg_data & NVR_DATA_IN)
50329 +                       data |= BIT_0;
50330 +               WRT_REG_WORD(&reg->nvram, NVR_SELECT);
50331 +               NVRAM_DELAY();
50332 +       }
50333 +
50334 +       /* Deselect chip. */
50335 +       WRT_REG_WORD(&reg->nvram, NVR_DESELECT);
50336 +       NVRAM_DELAY();
50337 +
50338 +       return (data);
50339 +}
50340 +
50341 +/**
50342 + * qla2x00_nv_write() - Clean NVRAM operations.
50343 + * @ha: HA context
50344 + */
50345 +void
50346 +qla2x00_nv_deselect(scsi_qla_host_t *ha)
50347 +{
50348 +       device_reg_t *reg = ha->iobase;
50349 +
50350 +       WRT_REG_WORD(&reg->nvram, NVR_DESELECT);
50351 +       NVRAM_DELAY();
50352 +}
50353 +
50354 +/**
50355 + * qla2x00_nv_write() - Prepare for NVRAM read/write operation.
50356 + * @ha: HA context
50357 + * @data: Serial interface selector
50358 + */
50359 +void
50360 +qla2x00_nv_write(scsi_qla_host_t *ha, uint16_t data)
50361 +{
50362 +       device_reg_t *reg = ha->iobase;
50363 +
50364 +       WRT_REG_WORD(&reg->nvram, data | NVR_SELECT);
50365 +       NVRAM_DELAY();
50366 +       WRT_REG_WORD(&reg->nvram, data | NVR_SELECT | NVR_CLOCK);
50367 +       NVRAM_DELAY();
50368 +       WRT_REG_WORD(&reg->nvram, data | NVR_SELECT);
50369 +       NVRAM_DELAY();
50370 +}
50371 +
50372 +/*
50373 + * Flash support routines
50374 + */
50375 +
50376 +/**
50377 + * qla2x00_flash_enable() - Setup flash for reading and writing.
50378 + * @ha: HA context
50379 + */
50380 +static void
50381 +qla2x00_flash_enable(scsi_qla_host_t *ha)
50382 +{
50383 +       uint16_t        data;
50384 +       device_reg_t    *reg = ha->iobase;
50385 +
50386 +       data = RD_REG_WORD(&reg->ctrl_status);
50387 +       data |= CSR_FLASH_ENABLE;
50388 +       WRT_REG_WORD(&reg->ctrl_status, data);
50389 +}
50390 +
50391 +/**
50392 + * qla2x00_flash_disable() - Disable flash and allow RISC to run.
50393 + * @ha: HA context
50394 + */
50395 +static void
50396 +qla2x00_flash_disable(scsi_qla_host_t *ha)
50397 +{
50398 +       uint16_t        data;
50399 +       device_reg_t    *reg = ha->iobase;
50400 +
50401 +       data = RD_REG_WORD(&reg->ctrl_status);
50402 +       data &= ~(CSR_FLASH_ENABLE);
50403 +       WRT_REG_WORD(&reg->ctrl_status, data);
50404 +}
50405 +
50406 +/**
50407 + * qla2x00_read_flash_byte() - Reads a byte from flash
50408 + * @ha: HA context
50409 + * @addr: Address in flash to read
50410 + *
50411 + * A word is read from the chip, but, only the lower byte is valid.
50412 + *
50413 + * Returns the byte read from flash @addr.
50414 + */
50415 +uint8_t
50416 +qla2x00_read_flash_byte(scsi_qla_host_t *ha, uint32_t addr)
50417 +{
50418 +       uint16_t        data;
50419 +       uint16_t        bank_select;
50420 +       device_reg_t    *reg = ha->iobase;
50421 +
50422 +       /* Setup bit 16 of flash address. */
50423 +       bank_select = RD_REG_WORD(&reg->ctrl_status);
50424 +       if ((addr & BIT_16) && ((bank_select & CSR_FLASH_64K_BANK) == 0)) {
50425 +               bank_select |= CSR_FLASH_64K_BANK;
50426 +               WRT_REG_WORD(&reg->ctrl_status, bank_select);
50427 +       } else if (((addr & BIT_16) == 0) &&
50428 +           (bank_select & CSR_FLASH_64K_BANK)) {
50429 +               bank_select &= ~(CSR_FLASH_64K_BANK);
50430 +               WRT_REG_WORD(&reg->ctrl_status, bank_select);
50431 +       }
50432 +       WRT_REG_WORD(&reg->flash_address, (uint16_t)addr);
50433 +       data = qla2x00_debounce_register(&reg->flash_data);
50434 +
50435 +       return ((uint8_t)data);
50436 +}
50437 +
50438 +/**
50439 + * qla2x00_write_flash_byte() - Write a byte to flash
50440 + * @ha: HA context
50441 + * @addr: Address in flash to write
50442 + * @data: Data to write
50443 + */
50444 +static void
50445 +qla2x00_write_flash_byte(scsi_qla_host_t *ha, uint32_t addr, uint8_t data)
50446 +{
50447 +       uint16_t        bank_select;
50448 +       device_reg_t    *reg = ha->iobase;
50449 +
50450 +       /* Setup bit 16 of flash address. */
50451 +       bank_select = RD_REG_WORD(&reg->ctrl_status);
50452 +       if ((addr & BIT_16) && ((bank_select & CSR_FLASH_64K_BANK) == 0)) {
50453 +               bank_select |= CSR_FLASH_64K_BANK;
50454 +               WRT_REG_WORD(&reg->ctrl_status, bank_select);
50455 +       } else if (((addr & BIT_16) == 0) &&
50456 +           (bank_select & CSR_FLASH_64K_BANK)) {
50457 +               bank_select &= ~(CSR_FLASH_64K_BANK);
50458 +               WRT_REG_WORD(&reg->ctrl_status, bank_select);
50459 +       }
50460 +       WRT_REG_WORD(&reg->flash_address, (uint16_t)addr);
50461 +       WRT_REG_WORD(&reg->flash_data, (uint16_t)data);
50462 +}
50463 +
50464 +/**
50465 + * qla2x00_poll_flash() - Polls flash for completion.
50466 + * @ha: HA context
50467 + * @addr: Address in flash to poll
50468 + * @poll_data: Data to be polled
50469 + * @mid: Flash manufacturer ID
50470 + *
50471 + * This function polls the device until bit 7 of what is read matches data
50472 + * bit 7 or until data bit 5 becomes a 1.  If that hapens, the flash ROM timed
50473 + * out (a fatal error).  The flash book recommeds reading bit 7 again after
50474 + * reading bit 5 as a 1.
50475 + *
50476 + * Returns 0 on success, else non-zero.
50477 + */
50478 +static uint8_t
50479 +qla2x00_poll_flash(scsi_qla_host_t *ha,
50480 +    uint32_t addr, uint8_t poll_data, uint8_t mid)
50481 +{
50482 +       uint8_t         status;
50483 +       uint8_t         flash_data;
50484 +       uint32_t        cnt;
50485 +       int             failed_pass;
50486 +
50487 +       status = 1;
50488 +       failed_pass = 1;
50489 +
50490 +       /* Wait for 30 seconds for command to finish. */
50491 +       poll_data &= BIT_7;
50492 +       for (cnt = 3000000; cnt; cnt--) {
50493 +               flash_data = qla2x00_read_flash_byte(ha, addr);
50494 +               if ((flash_data & BIT_7) == poll_data) {
50495 +                       status = 0;
50496 +                       break;
50497 +               }
50498 +
50499 +               if (mid != 0x40 && mid != 0xda) {
50500 +                       if (flash_data & BIT_5)
50501 +                               failed_pass--;
50502 +                       if (failed_pass < 0)
50503 +                               break;
50504 +               }
50505 +               udelay(10);
50506 +               barrier();
50507 +       }
50508 +       return (status);
50509 +}
50510 +
50511 +/**
50512 + * qla2x00_program_flash_address() - Programs a flash address
50513 + * @ha: HA context
50514 + * @addr: Address in flash to program
50515 + * @data: Data to be written in flash
50516 + * @mid: Flash manufacturer ID
50517 + *
50518 + * Returns 0 on success, else non-zero.
50519 + */
50520 +static uint8_t
50521 +qla2x00_program_flash_address(scsi_qla_host_t *ha,
50522 +    uint32_t addr, uint8_t data, uint8_t mid)
50523 +{
50524 +       /* Write Program Command Sequence */
50525 +       qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
50526 +       qla2x00_write_flash_byte(ha, 0x2aaa, 0x55);
50527 +       qla2x00_write_flash_byte(ha, 0x5555, 0xa0);
50528 +       qla2x00_write_flash_byte(ha, addr, data);
50529 +
50530 +       /* Wait for write to complete. */
50531 +       return (qla2x00_poll_flash(ha, addr, data, mid));
50532 +}
50533 +
50534 +/**
50535 + * qla2x00_erase_flash_sector() - Erase a flash sector.
50536 + * @ha: HA context
50537 + * @addr: Flash sector to erase
50538 + * @sec_mask: Sector address mask
50539 + * @mid: Flash manufacturer ID
50540 + *
50541 + * Returns 0 on success, else non-zero.
50542 + */
50543 +static uint8_t
50544 +qla2x00_erase_flash_sector(scsi_qla_host_t *ha,
50545 +    uint32_t addr, uint32_t sec_mask, uint8_t mid)
50546 +{
50547 +       /* Individual Sector Erase Command Sequence */
50548 +       qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
50549 +       qla2x00_write_flash_byte(ha, 0x2aaa, 0x55);
50550 +       qla2x00_write_flash_byte(ha, 0x5555, 0x80);
50551 +       qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
50552 +       qla2x00_write_flash_byte(ha, 0x2aaa, 0x55);
50553 +
50554 +       if (mid == 0xda)
50555 +               qla2x00_write_flash_byte(ha, addr & sec_mask, 0x10);
50556 +       else
50557 +               qla2x00_write_flash_byte(ha, addr & sec_mask, 0x30);
50558 +
50559 +       udelay(150);
50560 +
50561 +       /* Wait for erase to complete. */
50562 +       return (qla2x00_poll_flash(ha, addr, 0x80, mid));
50563 +}
50564 +
50565 +/**
50566 + * qla2x00_get_flash_manufacturer() - Read manufacturer ID from flash chip.
50567 + * @ha: HA context
50568 + *
50569 + * Returns the manufacturer's ID read from the flash chip.
50570 + */
50571 +uint8_t
50572 +qla2x00_get_flash_manufacturer(scsi_qla_host_t *ha)
50573 +{
50574 +       uint8_t manuf_id;
50575 +
50576 +       qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
50577 +       qla2x00_write_flash_byte(ha, 0x2aaa, 0x55);
50578 +       qla2x00_write_flash_byte(ha, 0x5555, 0x90);
50579 +       manuf_id = qla2x00_read_flash_byte(ha, 0x0001);
50580 +
50581 +       return (manuf_id);
50582 +}
50583 +
50584 +/**
50585 + * qla2x00_get_flash_version() - Read version information from flash.
50586 + * @ha: HA context
50587 + *
50588 + * Returns QL_STATUS_SUCCESS on successful retrieval of flash version.
50589 + */
50590 +uint16_t
50591 +qla2x00_get_flash_version(scsi_qla_host_t *ha)
50592 +{
50593 +       uint16_t        ret = QL_STATUS_SUCCESS;
50594 +       uint32_t        loop_cnt = 1;  /* this is for error exit only */
50595 +       uint32_t        pcir_adr;
50596 +
50597 +       ENTER(__func__);
50598 +
50599 +       qla2x00_flash_enable(ha);
50600 +       do {    /* Loop once to provide quick error exit */
50601 +               /* Match signature */
50602 +               if (!(qla2x00_read_flash_byte(ha, 0) == 0x55 &&
50603 +                   qla2x00_read_flash_byte(ha, 1) == 0xaa)) {
50604 +                       /* No signature */
50605 +                       DEBUG2(printk("scsi(%ld): No matching FLASH "
50606 +                           "signature.\n", ha->host_no));
50607 +                       ret = QL_STATUS_ERROR;
50608 +                       break;
50609 +               }
50610 +
50611 +               pcir_adr = qla2x00_read_flash_byte(ha, 0x18) & 0xff;
50612 +
50613 +               /* validate signature of PCI data structure */
50614 +               if ((qla2x00_read_flash_byte(ha, pcir_adr)) == 'P' &&
50615 +                   (qla2x00_read_flash_byte(ha, pcir_adr + 1)) == 'C' &&
50616 +                   (qla2x00_read_flash_byte(ha, pcir_adr + 2)) == 'I' &&
50617 +                   (qla2x00_read_flash_byte(ha, pcir_adr + 3)) == 'R') {
50618 +
50619 +                       /* Read version */
50620 +                       ha->optrom_minor =
50621 +                           qla2x00_read_flash_byte(ha, pcir_adr + 0x12);
50622 +                       ha->optrom_major =
50623 +                           qla2x00_read_flash_byte(ha, pcir_adr + 0x13);
50624 +                       DEBUG3(printk("%s(): got %d.%d.\n",
50625 +                           __func__, ha->optrom_major, ha->optrom_minor));
50626 +               } else {
50627 +                       /* error */
50628 +                       DEBUG2(printk("%s(): PCI data struct not found. "
50629 +                           "pcir_adr=%x.\n",
50630 +                           __func__, pcir_adr));
50631 +                       ret = QL_STATUS_ERROR;
50632 +                       break;
50633 +               }
50634 +
50635 +       } while (--loop_cnt);
50636 +       qla2x00_flash_disable(ha);
50637 +
50638 +       LEAVE(__func__);
50639 +
50640 +       return (ret);
50641 +}
50642 +
50643 +/**
50644 + * qla2x00_get_flash_image() - Read image from flash chip.
50645 + * @ha: HA context
50646 + * @image: Buffer to receive flash image
50647 + *
50648 + * Returns 0 on success, else non-zero.
50649 + */
50650 +uint16_t
50651 +qla2x00_get_flash_image(scsi_qla_host_t *ha, uint8_t *image)
50652 +{
50653 +       uint32_t        addr;
50654 +       uint32_t        midpoint;
50655 +       uint8_t         *data;
50656 +       device_reg_t    *reg = ha->iobase;
50657 +
50658 +       midpoint = FLASH_IMAGE_SIZE / 2;
50659 +
50660 +       qla2x00_flash_enable(ha);
50661 +       WRT_REG_WORD(&reg->nvram, 0);
50662 +       for (addr = 0, data = image; addr < FLASH_IMAGE_SIZE; addr++, data++) {
50663 +               if (addr == midpoint)
50664 +                       WRT_REG_WORD(&reg->nvram, NVR_SELECT);
50665 +
50666 +               *data = qla2x00_read_flash_byte(ha, addr);
50667 +       }
50668 +       qla2x00_flash_disable(ha);
50669 +
50670 +       return (0);
50671 +}
50672 +
50673 +/**
50674 + * qla2x00_set_flash_image() - Write image to flash chip.
50675 + * @ha: HA context
50676 + * @image: Source image to write to flash
50677 + *
50678 + * Returns 0 on success, else non-zero.
50679 + */
50680 +uint16_t
50681 +qla2x00_set_flash_image(scsi_qla_host_t *ha, uint8_t *image)
50682 +{
50683 +       uint16_t        status;
50684 +       uint32_t        addr;
50685 +       uint32_t        midpoint;
50686 +       uint32_t        sec_mask;
50687 +       uint32_t        rest_addr;
50688 +       uint8_t         mid;
50689 +       uint8_t         sec_number;
50690 +       uint8_t         data;
50691 +       device_reg_t    *reg = ha->iobase;
50692 +
50693 +       status = 0;
50694 +       sec_number = 0;
50695 +
50696 +       /* Reset ISP chip. */
50697 +       WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
50698 +
50699 +       qla2x00_flash_enable(ha);
50700 +       do {    /* Loop once to provide quick error exit */
50701 +               /* Structure of flash memory based on manufacturer */
50702 +               mid = qla2x00_get_flash_manufacturer(ha);
50703 +               if (mid == 0x6d) {
50704 +                       // Am29LV001 part
50705 +                       rest_addr = 0x1fff;
50706 +                       sec_mask = 0x1e000;
50707 +               }
50708 +               else if (mid == 0x40) {
50709 +                       // Mostel v29c51001 part
50710 +                       rest_addr = 0x1ff;
50711 +                       sec_mask = 0x1fe00;
50712 +               }
50713 +               else if (mid == 0xbf) {
50714 +                       // SST39sf10 part
50715 +                       rest_addr = 0xfff;
50716 +                       sec_mask = 0x1f000;
50717 +               }
50718 +               else if (mid == 0xda) {
50719 +                       // Winbond W29EE011 part
50720 +                       rest_addr = 0x7f;
50721 +                       sec_mask = 0x1ff80;
50722 +                       addr = 0;
50723 +                       if (qla2x00_erase_flash_sector(ha,
50724 +                           addr, sec_mask, mid)) {
50725 +                               status = 1;
50726 +                               break;
50727 +                       }
50728 +               }
50729 +               else {
50730 +                       // Am29F010 part
50731 +                       rest_addr = 0x3fff;
50732 +                       sec_mask = 0x1c000;
50733 +               }
50734 +
50735 +               midpoint = FLASH_IMAGE_SIZE / 2;
50736 +               for (addr = 0; addr < FLASH_IMAGE_SIZE; addr++) {
50737 +                       data = *image++;
50738 +                       /* Are we at the beginning of a sector? */
50739 +                       if (!(addr & rest_addr)) {
50740 +                               if (addr == midpoint)
50741 +                                       WRT_REG_WORD(&reg->nvram, NVR_SELECT);
50742 +
50743 +                               /* Then erase it */
50744 +                               if (qla2x00_erase_flash_sector(ha,
50745 +                                   addr, sec_mask, mid)) {
50746 +                                       status = 1;
50747 +                                       break;
50748 +                               }
50749 +
50750 +                               sec_number++;
50751 +                       }
50752 +                       if (mid == 0x6d) {
50753 +                               if (sec_number == 1 &&
50754 +                                   (addr == (rest_addr - 1))) {
50755 +                                       rest_addr = 0x0fff;
50756 +                                       sec_mask   = 0x1f000;
50757 +                               }
50758 +                               else if (sec_number == 3 && (addr & 0x7ffe)) {
50759 +                                       rest_addr = 0x3fff;
50760 +                                       sec_mask   = 0x1c000;
50761 +                               }
50762 +                       }
50763 +
50764 +                       if (qla2x00_program_flash_address(ha,
50765 +                           addr, data, mid)) {
50766 +                               status = 1;
50767 +                               break;
50768 +                       }
50769 +               }
50770 +       } while (0);
50771 +       qla2x00_flash_disable(ha);
50772 +
50773 +       return (status);
50774 +}
50775 --- /dev/null   Thu Apr 11 07:25:15 2002
50776 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_vendor.c        Thu Jul  3 15:34:42 2003
50777 @@ -0,0 +1,193 @@
50778 +/******************************************************************************
50779 + *                  QLOGIC LINUX SOFTWARE
50780 + *
50781 + * QLogic ISP2x00 device driver for Linux 2.5.x
50782 + * Copyright (C) 2003 Qlogic Corporation
50783 + * (www.qlogic.com)
50784 + *
50785 + * This program is free software; you can redistribute it and/or modify it
50786 + * under the terms of the GNU General Public License as published by the
50787 + * Free Software Foundation; either version 2, or (at your option) any
50788 + * later version.
50789 + *
50790 + * This program is distributed in the hope that it will be useful, but
50791 + * WITHOUT ANY WARRANTY; without even the implied warranty of
50792 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
50793 + * General Public License for more details.
50794 + *
50795 + ******************************************************************************/
50796 +
50797 +#include "qla_os.h"
50798 +#include "qla_def.h"
50799 +
50800 +/*
50801 + * vendor specific op codes.
50802 +*/
50803 +#define        UCSCSI_DCMD             0x20 /* vendor specific command */
50804 +#define DAC_CDB_LEN            12
50805 +#define DAC_SENSE_LEN          64
50806 +
50807 +#define DACMD_WRITE_CONF_ONDISK        0x4B
50808 +#define        DACMD_WRITE_CONFIG      0x06
50809 +#define        DACMD_WRITE_CONF2       0x3C
50810 +#define        DACMD_WRITE_CONFLABEL   0x49 /* Write configuration label */
50811 +#define        DACMD_WRITE_CONFIG_V3x  0x4F
50812 +#define        DACMD_ADD_CONFIG_V2x    0x18
50813 +#define        DACMD_ADD_CONFIG_V3x    0x4C
50814 +#define        DACMD_STORE_IMAGE       0x21
50815 +#define        DACMD_ADD_CAPACITY      0x2A /* add physical drives to existing array */
50816 +#define        DACMD_WRITE_IOPORT      0x3A /* write port B */
50817 +#define        DACMD_S2S_WRITEFULLCONF         0x60 /* write full configuration */
50818 +#define        DACMD_S2S_ADDFULLCONF           0x62 /* add   full configuration */
50819 +#define        DACMD_S2S_WRITELUNMAP_OLD       0x58 /* write LUN map information */
50820 +#define DACMD_S2S_WRITELUNMAP          0xD2    /* Write LUN MAP Information */
50821 +#define        DACMD_S2S_WRITE_IOPORT  0x66 /* write expanded IO port */
50822 +#define        DACMD_WRITE_V3x         0x34 /* write data from plain memory */
50823 +#define        DACMD_S2S_WRITESIG      0x4D /* write signature information */
50824 +
50825 +#if !defined(s08bits)
50826 +#define        s08bits char
50827 +#define        s16bits short
50828 +#define        s32bits int
50829 +#define        u08bits unsigned s08bits
50830 +#define        u16bits unsigned s16bits
50831 +#define        u32bits unsigned s32bits
50832 +#endif
50833 +
50834 +typedef struct dac_command
50835 +{
50836 +        u08bits        mb_Command;     /* Mail Box register 0  */
50837 +        u08bits        mb_CmdID;       /* Mail Box register 1  */
50838 +        u08bits        mb_ChannelNo;   /* Mail Box register 2  */
50839 +        u08bits        mb_TargetID;    /* Mail Box register 3  */
50840 +        u08bits        mb_DevState;    /* Mail Box register 4  */
50841 +        u08bits        mb_MailBox5;    /* Mail Box register 5  */
50842 +        u08bits        mb_MailBox6;    /* Mail Box register 6  */
50843 +        u08bits        mb_SysDevNo;    /* Mail Box register 7  */
50844 +        u32bits        mb_Datap;       /* Mail Box register 8-B */
50845 +        u08bits        mb_MailBoxC;    /* Mail Box register C  */
50846 +        u08bits        mb_StatusID;    /* Mail box register D  */
50847 +        u16bits        mb_Status;      /* Mail Box Register E,F */
50848 +}
50849 +dac_command_t;
50850 +
50851 +typedef struct dac_scdb
50852 +{
50853 +        u08bits db_ChannelTarget;      /* ChannelNo 7..4 & Target 3..0 */
50854 +        u08bits db_DATRET;             /* different bits, see below */
50855 +        u16bits        db_TransferSize;        /* Request/done size in bytes */
50856 +        u32bits db_PhysDatap;          /* Physical addr in host memory */
50857 +        u08bits db_CdbLen;             /* 6, 10 or 12                  */
50858 +        u08bits db_SenseLen;           /* If returned from DAC (<= 64) */
50859 +        u08bits        db_Cdb[DAC_CDB_LEN];    /* The CDB itself               */
50860 +        u08bits        db_SenseData[DAC_SENSE_LEN];/* Result of request sense  */
50861 +        u08bits db_StatusIn;           /* SCSI status returned         */
50862 +        u08bits        db_Reserved1;
50863 +}
50864 +dac_scdb_t;
50865 +
50866 +typedef        struct dga_scdb
50867 +{
50868 +        u08bits        dsc_osreq[1024];        /* OS related buffer:sizeof(mdac_req_t) */
50869 +
50870 +        u08bits        dsc_familyctlno;        /* Controller number within family */
50871 +        u08bits        dsc_ctlno;              /* Controller number */
50872 +        u08bits        dsc_chno;               /* Channel number */
50873 +        u08bits        dsc_tgt;                /* target ID */
50874 +
50875 +        u08bits        dsc_lun;                /* Lun ID */
50876 +        u08bits        dsc_rebuildflag;        /* current rebuild flag */
50877 +        u16bits        dsc_status;             /* completion status */
50878 +
50879 +        u08bits        dsc_scsiversion;        /* SCSI protocol version */
50880 +        u08bits        dsc_hostctlno;          /* host system controller number */
50881 +        u16bits        dsc_reqsenseseqno;      /* request sense sequence number */
50882 +
50883 +        u32bits        dsc_events;             /* # events at start */
50884 +
50885 +        u32bits        dsc_pollwaitchan;       /* sleep/wakeup channel */
50886 +        u32bits        dsc_poll;               /* polling value, if =0 op complete */
50887 +
50888 +        struct dga_ctldev *dsc_ctp;    /* pointer back to controller */
50889 +        void *dsc_pdp; /* pointer back to physical device */
50890 +        void *dsc_ldp; /* pointer back to logical device */
50891 +        void (*dsc_intr)(void);        /* completion call back function */
50892 +
50893 +        /* all save functions are used in S2S */
50894 +        u08bits        dsc_savedcdb[DAC_CDB_LEN];/* 12 bytes saved CDB from SCSI CDB */
50895 +        u32bits        (*dsc_statsintr)(struct dga_scdb *); /* statistics completion function */
50896 +
50897 +        void (*dsc_savedintr)(void);   /* completion call back function */
50898 +        void *dsc_savedctp;            /* pointer back to controller */
50899 +        u08bits        dsc_savedfamilyctlno;   /* Controller number within family */
50900 +        u08bits        dsc_savedctlno;         /* Controller number */
50901 +        u08bits        dsc_savedchno;          /* Channel number */
50902 +        u08bits        dsc_savedtgt;           /* target ID */
50903 +
50904 +        u08bits        dsc_savedlun;           /* Lun ID */
50905 +        u08bits        dsc_savedcdblen;        /* saved CDB len for SCDB */
50906 +        u08bits        dsc_scanmode;
50907 +        u08bits dsc_pageno;             /* pageno for data > 4K */
50908 +        u32bits        dsc_residue;
50909 +        u32bits        dsc_Reserved4;
50910 +
50911 +        dac_command_t dsc_dcmd;                /* DCMD space, 16 bytes */
50912 +        dac_scdb_t dsc_scdb;           /* SCDB space */
50913 +        u32bits        dsc_EventSeqNo;
50914 +        u32bits        dsc_ReqSenseNo;
50915 +
50916 +        u32bits        dsc_Reserved64[16];     /* leave this for OLD SCO driver bug */
50917 +
50918 +        u08bits        dsc_data[256];          /* Rest is data */
50919 +}
50920 +dga_scdb_t;
50921 +
50922 +/*
50923 +* qla2100_set_scsi_direction
50924 +*      This routine will set the proper direction for vendor specific
50925 +*      commands. 
50926 +*
50927 +*      Note: Vendors should modify this routine to set the proper 
50928 +*      direction of the transfer if they used vendor specific commands.
50929 +*
50930 +* Input:
50931 +*      ha = adapter block pointer.
50932 +*      sp = SCSI Request Block structure pointer.
50933 +*
50934 +* Returns:
50935 +*      0 = success, was able to issue command.
50936 +*/
50937 +void
50938 +qla2x00_set_vend_direction(scsi_qla_host_t *ha,
50939 +    Scsi_Cmnd *cmd, cmd_entry_t *pkt)
50940 +{
50941 +       dga_scdb_t      *dsp = (dga_scdb_t *) cmd;
50942 +
50943 +       if (cmd->data_cmnd[0] == UCSCSI_DCMD) {
50944 +               switch( dsp->dsc_dcmd.mb_Command ) {
50945 +               case DACMD_WRITE_CONF_ONDISK:
50946 +               case DACMD_WRITE_CONFIG:
50947 +               case DACMD_WRITE_CONF2:
50948 +               case DACMD_WRITE_CONFLABEL:
50949 +               case DACMD_WRITE_CONFIG_V3x:
50950 +               case DACMD_ADD_CONFIG_V2x:
50951 +               case DACMD_ADD_CONFIG_V3x:
50952 +               case DACMD_STORE_IMAGE:
50953 +               case DACMD_ADD_CAPACITY:
50954 +               case DACMD_WRITE_IOPORT:
50955 +               case DACMD_S2S_WRITEFULLCONF:
50956 +               case DACMD_S2S_ADDFULLCONF:
50957 +               case DACMD_S2S_WRITELUNMAP_OLD:
50958 +               case DACMD_S2S_WRITELUNMAP:
50959 +               case DACMD_S2S_WRITE_IOPORT:
50960 +               case DACMD_WRITE_V3x:
50961 +               case DACMD_S2S_WRITESIG:
50962 +                       pkt->control_flags |= BIT_6;
50963 +                       break;
50964 +               default:
50965 +                       pkt->control_flags |= BIT_5;
50966 +               }
50967 +       } else
50968 +               pkt->control_flags |= BIT_5;
50969 +}
50970 +
50971 --- /dev/null   Thu Apr 11 07:25:15 2002
50972 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_version.h       Thu Jul  3 15:34:42 2003
50973 @@ -0,0 +1,31 @@
50974 +/******************************************************************************
50975 + *                  QLOGIC LINUX SOFTWARE
50976 + *
50977 + * QLogic ISP2x00 device driver for Linux 2.5.x
50978 + * Copyright (C) 2003 Qlogic Corporation
50979 + * (www.qlogic.com)
50980 + *
50981 + * This program is free software; you can redistribute it and/or modify it
50982 + * under the terms of the GNU General Public License as published by the
50983 + * Free Software Foundation; either version 2, or (at your option) any
50984 + * later version.
50985 + *
50986 + * This program is distributed in the hope that it will be useful, but
50987 + * WITHOUT ANY WARRANTY; without even the implied warranty of
50988 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
50989 + * General Public License for more details.
50990 + *
50991 + ******************************************************************************/
50992 +/*
50993 + * Driver version 
50994 + */
50995 +#if DEBUG_QLA2100
50996 +#define QLA2100_VERSION      "8.00.00b1-debug"
50997 +#else
50998 +#define QLA2100_VERSION      "8.00.00b1"
50999 +#endif
51000 +
51001 +#define QLA_DRIVER_MAJOR_VER   8
51002 +#define QLA_DRIVER_MINOR_VER   0
51003 +#define QLA_DRIVER_PATCH_VER   0
51004 +#define QLA_DRIVER_BETA_VER    1
51005 --- /dev/null   Thu Apr 11 07:25:15 2002
51006 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_xioct.c Thu Jul  3 15:34:42 2003
51007 @@ -0,0 +1,6589 @@
51008 +/******************************************************************************
51009 + *                  QLOGIC LINUX SOFTWARE
51010 + *
51011 + * QLogic ISP2x00 device driver for Linux 2.5.x
51012 + * Copyright (C) 2003 Qlogic Corporation
51013 + * (www.qlogic.com)
51014 + *
51015 + * This program is free software; you can redistribute it and/or modify it
51016 + * under the terms of the GNU General Public License as published by the
51017 + * Free Software Foundation; either version 2, or (at your option) any
51018 + * later version.
51019 + *
51020 + * This program is distributed in the hope that it will be useful, but
51021 + * WITHOUT ANY WARRANTY; without even the implied warranty of
51022 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
51023 + * General Public License for more details.
51024 + *
51025 + ******************************************************************************/
51026 +
51027 +
51028 +#include "qla_os.h"
51029 +#include "qla_def.h"
51030 +
51031 +#include "inioct.h"
51032 +
51033 +
51034 +#define        QLA_PT_CMD_TOV                  (60) /* firmware timeout */
51035 +#define QLA_PT_CMD_DRV_TOV             (QLA_PT_CMD_TOV + 1) /* drvr timeout */
51036 +#define QLA_IOCTL_ACCESS_WAIT_TIME     (QLA_PT_CMD_DRV_TOV + 2) /* wait_q tov */
51037 +#define QLA_INITIAL_IOCTLMEM_SIZE      (2 * PAGE_SIZE)
51038 +#define QLA_IOCTL_SCRAP_SIZE           2048 /* scrap memory for local use. */
51039 +
51040 +/* ELS related defines */
51041 +#define FC_HEADER_LEN          24
51042 +#define ELS_RJT_LENGTH         0x08    /* 8  */
51043 +#define ELS_RPS_ACC_LENGTH     0x40    /* 64 */
51044 +#define ELS_RLS_ACC_LENGTH     0x1C    /* 28 */
51045 +
51046 +/* ELS cmd Reply Codes */
51047 +#define ELS_STAT_LS_RJT                0x01
51048 +#define ELS_STAT_LS_ACC                0x02
51049 +
51050 +#define IOCTL_INVALID_STATUS    0xffff
51051 +
51052 +
51053 +int qla2x00_alloc_ioctl_mem(scsi_qla_host_t *);
51054 +void qla2x00_free_ioctl_mem(scsi_qla_host_t *);
51055 +
51056 +int qla2x00_get_ioctl_scrap_mem(scsi_qla_host_t *, void **, uint32_t);
51057 +void qla2x00_free_ioctl_scrap_mem(scsi_qla_host_t *);
51058 +
51059 +/*
51060 + * Local prototypes
51061 + */
51062 +static int qla2x00_get_new_ioctl_dma_mem(scsi_qla_host_t *, uint32_t);
51063 +
51064 +#if defined(ISP2300)
51065 +static uint8_t qla2x00_get_next_free_pub_id(scsi_qla_host_t *, uint16_t *);
51066 +static uint8_t qla2x00_host_relogin(scsi_qla_host_t *, fcdev_t *);
51067 +#endif
51068 +
51069 +static int qla2x00_find_curr_ha(uint16_t, scsi_qla_host_t **);
51070 +
51071 +static int qla2x00_get_driver_specifics(EXT_IOCTL *);
51072 +
51073 +static int qla2x00_aen_reg(scsi_qla_host_t *, EXT_IOCTL *, int);
51074 +static int qla2x00_aen_get(scsi_qla_host_t *, EXT_IOCTL *, int);
51075 +
51076 +static int qla2x00_query(scsi_qla_host_t *, EXT_IOCTL *, int);
51077 +static int qla2x00_query_hba_node(scsi_qla_host_t *, EXT_IOCTL *, int);
51078 +static int qla2x00_query_hba_port(scsi_qla_host_t *, EXT_IOCTL *, int);
51079 +static int qla2x00_query_disc_port(scsi_qla_host_t *, EXT_IOCTL *, int);
51080 +static int qla2x00_query_disc_tgt(scsi_qla_host_t *, EXT_IOCTL *, int);
51081 +static int qla2x00_query_chip(scsi_qla_host_t *, EXT_IOCTL *, int);
51082 +
51083 +static int qla2x00_get_data(scsi_qla_host_t *, EXT_IOCTL *, int);
51084 +static int qla2x00_get_statistics(scsi_qla_host_t *, EXT_IOCTL *, int);
51085 +static int qla2x00_get_fc_statistics(scsi_qla_host_t *, EXT_IOCTL *, int);
51086 +static int qla2x00_get_port_summary(scsi_qla_host_t *, EXT_IOCTL *, int);
51087 +static int qla2x00_query_driver(scsi_qla_host_t *, EXT_IOCTL *, int);
51088 +static int qla2x00_query_fw(scsi_qla_host_t *, EXT_IOCTL *, int);
51089 +
51090 +#if defined(ISP2300)
51091 +static int qla2x00_send_els_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51092 +#endif
51093 +static int qla2x00_send_fcct(scsi_qla_host_t *, EXT_IOCTL *, int);
51094 +static int qla2x00_start_ms_cmd(scsi_qla_host_t *, EXT_IOCTL *, srb_t *,
51095 +    EXT_ELS_PT_REQ *);
51096 +
51097 +static int qla2x00_wwpn_to_scsiaddr(scsi_qla_host_t *, EXT_IOCTL *, int);
51098 +static int qla2x00_scsi_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51099 +static int qla2x00_sc_scsi_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51100 +static int qla2x00_sc_fc_scsi_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51101 +static int qla2x00_sc_scsi3_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51102 +
51103 +static int qla2x00_send_els_rnid(scsi_qla_host_t *, EXT_IOCTL *, int);
51104 +static int qla2x00_get_rnid_params(scsi_qla_host_t *, EXT_IOCTL *, int);
51105 +static int qla2x00_set_host_data(scsi_qla_host_t *, EXT_IOCTL *, int);
51106 +static int qla2x00_set_rnid_params(scsi_qla_host_t *, EXT_IOCTL *, int);
51107 +
51108 +static void qla2x00_waitq_sem_timeout(unsigned long);
51109 +static uint8_t qla2x00_get_ioctl_access(scsi_qla_host_t *, uint32_t);
51110 +static uint8_t qla2x00_release_ioctl_access(scsi_qla_host_t *);
51111 +
51112 +static void qla2x00_wait_q_memb_alloc(scsi_qla_host_t *, wait_q_t **);
51113 +static void qla2x00_wait_q_memb_free(scsi_qla_host_t *, wait_q_t *);
51114 +static uint8_t qla2x00_wait_q_add(scsi_qla_host_t *, wait_q_t **);
51115 +static void qla2x00_wait_q_get_next(scsi_qla_host_t *, wait_q_t **);
51116 +static void qla2x00_wait_q_remove(scsi_qla_host_t *, wait_q_t *);
51117 +
51118 +
51119 +/*
51120 + * qla2x00_ioctl_sleep_done
51121 + *
51122 + * Description:
51123 + *   This is the callback function to wakeup ioctl completion semaphore
51124 + *   for the ioctl request that is waiting.
51125 + *
51126 + * Input:
51127 + *   sem - pointer to the ioctl completion semaphore.
51128 + *
51129 + * Returns:
51130 + */
51131 +static void
51132 +qla2x00_ioctl_sleep_done(struct semaphore * sem)
51133 +{
51134 +       DEBUG9(printk("%s: entered.\n", __func__);)
51135 +
51136 +       if (sem != NULL){
51137 +               DEBUG9(printk("ioctl_sleep: wake up sem.\n");)
51138 +               up(sem);
51139 +       }
51140 +
51141 +       DEBUG9(printk("%s: exiting.\n", __func__);)
51142 +}
51143 +
51144 +/*
51145 + * qla2x00_ioctl_sem_init
51146 + *
51147 + * Description:
51148 + *   Initialize the ioctl timer and semaphore used to wait for passthru
51149 + *   completion.
51150 + *
51151 + * Input:
51152 + *   ha - pointer to scsi_qla_host_t structure used for initialization.
51153 + *
51154 + * Returns:
51155 + *   None.
51156 + */
51157 +static void
51158 +qla2x00_ioctl_sem_init(scsi_qla_host_t *ha)
51159 +{
51160 +       init_MUTEX_LOCKED(&ha->ioctl->cmpl_sem);
51161 +       init_timer(&(ha->ioctl->cmpl_timer));
51162 +       ha->ioctl->cmpl_timer.data = (unsigned long)&ha->ioctl->cmpl_sem;
51163 +       ha->ioctl->cmpl_timer.function =
51164 +           (void (*)(unsigned long))qla2x00_ioctl_sleep_done;
51165 +}
51166 +
51167 +/*
51168 + * qla2x00_scsi_pt_done
51169 + *
51170 + * Description:
51171 + *   Resets ioctl progress flag and wakes up the ioctl completion semaphore.
51172 + *
51173 + * Input:
51174 + *   pscsi_cmd - pointer to the passthru Scsi cmd structure which has completed.
51175 + *
51176 + * Returns:
51177 + */
51178 +static void
51179 +qla2x00_scsi_pt_done(Scsi_Cmnd *pscsi_cmd)
51180 +{
51181 +       struct Scsi_Host *host;
51182 +       scsi_qla_host_t  *ha;
51183 +
51184 +       host = pscsi_cmd->device->host;
51185 +       ha = (scsi_qla_host_t *) host->hostdata;
51186 +
51187 +       DEBUG9(printk("%s post function called OK\n", __func__);)
51188 +
51189 +       /* save detail status for IOCTL reporting */
51190 +       ha->ioctl->SCSIPT_InProgress = 0;
51191 +       ha->ioctl->ioctl_tov = 0;
51192 +
51193 +       up(&ha->ioctl->cmpl_sem);
51194 +
51195 +       DEBUG9(printk("%s: exiting.\n", __func__);)
51196 +
51197 +       return;
51198 +}
51199 +
51200 +/*
51201 + * qla2x00_msiocb_done
51202 + *
51203 + * Description:
51204 + *   Resets MSIOCB ioctl progress flag and wakes up the ioctl completion
51205 + *   semaphore.
51206 + *
51207 + * Input:
51208 + *   cmd - pointer to the passthru Scsi cmd structure which has completed.
51209 + *
51210 + * Returns:
51211 + */
51212 +static void
51213 +qla2x00_msiocb_done(Scsi_Cmnd *pscsi_cmd)
51214 +{
51215 +       struct Scsi_Host *host;
51216 +       scsi_qla_host_t  *ha;
51217 +
51218 +       host = pscsi_cmd->device->host;
51219 +       ha = (scsi_qla_host_t *) host->hostdata;
51220 +
51221 +       DEBUG9(printk("%s post function called OK\n", __func__);)
51222 +
51223 +       ha->ioctl->MSIOCB_InProgress = 0;
51224 +       ha->ioctl->ioctl_tov = 0;
51225 +
51226 +       up(&ha->ioctl->cmpl_sem);
51227 +
51228 +       DEBUG9(printk("%s: exiting.\n", __func__);)
51229 +               
51230 +       return;
51231 +}
51232 +
51233 +/*************************************************************************
51234 + * qla2x00_ioctl
51235 + *
51236 + * Description:
51237 + *   Performs additional ioctl requests not satisfied by the upper levels.
51238 + *
51239 + * Returns:
51240 + *   ret  = 0    Success
51241 + *   ret != 0    Failed; detailed status copied to EXT_IOCTL structure
51242 + *               if possible
51243 + *************************************************************************/
51244 +int
51245 +qla2x00_ioctl(Scsi_Device *dev, int cmd, void *arg)
51246 +{
51247 +       int             mode = 0;
51248 +       int             tmp_rval = 0;
51249 +       int             ret = -EINVAL;
51250 +
51251 +       uint8_t         *temp;
51252 +       uint8_t         tempbuf[8];
51253 +       uint32_t        i;
51254 +       uint32_t        status;
51255 +
51256 +       EXT_IOCTL       *pext;
51257 +
51258 +       scsi_qla_host_t *ha;
51259 +
51260 +
51261 +       DEBUG9(printk("%s: entry to command (%x), arg (%p)\n",
51262 +           __func__, cmd, arg);)
51263 +
51264 +       /* Catch any non-exioct ioctls */
51265 +       if (_IOC_TYPE(cmd) != QLMULTIPATH_MAGIC) {
51266 +               return (ret);
51267 +       }
51268 +
51269 +       ret = verify_area(VERIFY_READ, (void *)arg, sizeof(EXT_IOCTL));
51270 +       if (ret) {
51271 +               DEBUG9_10(printk("%s: ERROR VERIFY_READ EXT_IOCTL "
51272 +                   "sturct. cmd=%d arg=%p.\n", __func__, cmd, arg);)
51273 +               return (ret);
51274 +       }
51275 +
51276 +       /* Allocate ioctl structure buffer to support multiple concurrent
51277 +        * entries.
51278 +        */
51279 +       pext = KMEM_ZALLOC(sizeof(EXT_IOCTL), 16);
51280 +       if (pext == NULL) {
51281 +               /* error */
51282 +               printk(KERN_WARNING
51283 +                   "qla2x00: ERROR in main ioctl buffer allocation.\n");
51284 +               return (-ENOMEM);
51285 +       }
51286 +
51287 +       /* copy in application layer EXT_IOCTL */
51288 +       ret = copy_from_user(pext, arg, sizeof(EXT_IOCTL));
51289 +       if (ret) {
51290 +               DEBUG9_10(printk("%s: ERROR COPY_FROM_USER "
51291 +                   "EXT_IOCTL sturct. cmd=%d arg=%p.\n",
51292 +                   __func__, cmd, arg);)
51293 +
51294 +               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51295 +               return (ret);
51296 +       }
51297 +
51298 +       /* Verify before update status fields in EXT_IOCTL struct. */
51299 +       ret = verify_area(VERIFY_WRITE, (void *)arg, sizeof(EXT_IOCTL));
51300 +       if (ret) {
51301 +               DEBUG9_10(printk("%s: ERROR VERIFY_WRITE EXT_IOCTL "
51302 +                   "sturct. cmd=%d arg=%p.\n", __func__, cmd, arg);)
51303 +
51304 +               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51305 +               return (ret);
51306 +       }
51307 +
51308 +       /* check signature of this ioctl */
51309 +       temp = (uint8_t *) &pext->Signature;
51310 +
51311 +       for (i = 0; i < 4; i++, temp++)
51312 +               tempbuf[i] = *temp;
51313 +
51314 +       if ((tempbuf[0] == 'Q') && (tempbuf[1] == 'L') &&
51315 +           (tempbuf[2] == 'O') && (tempbuf[3] == 'G'))
51316 +               status = 0;
51317 +       else
51318 +               status = 1;
51319 +
51320 +       if (status != 0) {
51321 +               DEBUG9_10(printk("%s: signature did not match. "
51322 +                   "cmd=%d arg=%p.\n", __func__, cmd, arg);)
51323 +               pext->Status = EXT_STATUS_INVALID_PARAM;
51324 +               copy_to_user((void *)arg, (void *)pext, sizeof(EXT_IOCTL));
51325 +
51326 +               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51327 +               return (-EINVAL);
51328 +       }
51329 +
51330 +       /* check version of this ioctl */
51331 +       if (pext->Version > EXT_VERSION) {
51332 +               printk(KERN_WARNING
51333 +                   "qla2x00: ioctl interface version not supported = %d.\n",
51334 +                   pext->Version);
51335 +               pext->Status = EXT_STATUS_UNSUPPORTED_VERSION;
51336 +               copy_to_user((void *)arg, (void *)pext, sizeof(EXT_IOCTL));
51337 +
51338 +               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51339 +               return (-EINVAL);
51340 +       }
51341 +
51342 +       /* check for special cmds used during application's setup time. */
51343 +       switch (cmd) {
51344 +       case EXT_CC_STARTIOCTL:
51345 +               DEBUG9(printk("%s: got startioctl command.\n", __func__);)
51346 +
51347 +               pext->Instance = num_hosts;
51348 +               pext->Status = EXT_STATUS_OK;
51349 +               ret = copy_to_user((void *)arg, (void *)pext,
51350 +                   sizeof(EXT_IOCTL));
51351 +
51352 +               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51353 +               return (ret);
51354 +
51355 +       case EXT_CC_SETINSTANCE:
51356 +               /* This call is used to return the HBA's host number to
51357 +                * ioctl caller.  All subsequent ioctl commands will put
51358 +                * the host number in HbaSelect field to tell us which
51359 +                * HBA is the destination.
51360 +                */
51361 +               if (pext->Instance < num_hosts) {
51362 +                       if (!((uint32_t)pext->VendorSpecificData &
51363 +                           EXT_DEF_USE_HBASELECT)) {
51364 +                               /* Backward compatible code. */
51365 +                               apiHBAInstance = pext->Instance;
51366 +                       }
51367 +
51368 +                       /*
51369 +                        * Return host number via pext->HbaSelect for
51370 +                        * specified API instance number.
51371 +                        */
51372 +                       if (qla2x00_find_curr_ha(pext->Instance, &ha) != 0) {
51373 +                               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
51374 +                               ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51375 +                               DEBUG9_10(printk("%s: SETINSTANCE invalid inst "
51376 +                                   "%d. num_hosts=%d ha=%p ret=%d.\n",
51377 +                                   __func__, pext->Instance, num_hosts, ha,
51378 +                                   ret);)
51379 +
51380 +                               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51381 +                               return (ret); /* ioctl completed ok */
51382 +                       }
51383 +
51384 +                       pext->HbaSelect = ha->host_no;
51385 +                       pext->Status = EXT_STATUS_OK;
51386 +
51387 +                       DEBUG9(printk("%s: Matching instance %d to hba "
51388 +                           "%ld.\n", __func__, pext->Instance, ha->host_no);)
51389 +               } else {
51390 +                       DEBUG9_10(printk("%s: ERROR EXT_SETINSTANCE."
51391 +                           " Instance=%d num_hosts=%d ha=%p.\n",
51392 +                           __func__, pext->Instance, num_hosts, ha);)
51393 +
51394 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
51395 +               }
51396 +               ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51397 +               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51398 +
51399 +               DEBUG9(printk("%s: SETINSTANCE exiting. ret=%d.\n",
51400 +                   __func__, ret);)
51401 +
51402 +               return (ret);
51403 +
51404 +       case EXT_CC_DRIVER_SPECIFIC:
51405 +               ret = qla2x00_get_driver_specifics(pext);
51406 +               tmp_rval = copy_to_user(arg, (void *)pext, sizeof(EXT_IOCTL));
51407 +
51408 +               if (ret == 0)
51409 +                       ret = tmp_rval;
51410 +
51411 +               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51412 +               return (ret);
51413 +
51414 +       default:
51415 +               break;
51416 +       }
51417 +
51418 +       if (!((uint32_t)pext->VendorSpecificData & EXT_DEF_USE_HBASELECT)) {
51419 +               /* Backward compatible code. */
51420 +               /* Will phase out soon. */
51421 +
51422 +               /* Check for valid apiHBAInstance (set previously by
51423 +                * EXT_SETINSTANCE or default 0)  and set ha context
51424 +                * for this IOCTL.
51425 +                */
51426 +               if (qla2x00_find_curr_ha(apiHBAInstance, &ha) != 0) {
51427 +
51428 +                       DEBUG9_10(printk("%s: ERROR matching apiHBAInstance "
51429 +                           "%d to an HBA Instance.\n",
51430 +                           __func__, pext->HbaSelect);)
51431 +
51432 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
51433 +                       copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51434 +
51435 +                       KMEM_FREE(pext, sizeof(EXT_IOCTL));
51436 +                       return (-EINVAL);
51437 +               }
51438 +
51439 +               DEBUG9(printk("%s: active apiHBAInstance=%d host_no=%ld "
51440 +                   "CC=%x SC=%x.\n",
51441 +                   __func__, apiHBAInstance, ha->host_no, cmd, pext->SubCode);)
51442 +
51443 +       } else {
51444 +               /* Use HbaSelect value to get a matching ha instance
51445 +                * for this ioctl command.
51446 +                */
51447 +               if (qla2x00_find_curr_ha(pext->HbaSelect, &ha) != 0) {
51448 +
51449 +                       DEBUG9_10(printk("%s: ERROR matching pext->HbaSelect "
51450 +                           "%d to an HBA Instance.\n",
51451 +                           __func__, pext->HbaSelect);)
51452 +
51453 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
51454 +                       copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51455 +
51456 +                       KMEM_FREE(pext, sizeof(EXT_IOCTL));
51457 +                       return (-EINVAL);
51458 +               }
51459 +
51460 +               DEBUG9(printk("%s: active host_inst=%ld CC=%x SC=%x.\n",
51461 +                   __func__, ha->instance, cmd, pext->SubCode);)
51462 +       }
51463 +
51464 +       /*
51465 +        * Get permission to process ioctl command. Only one will proceed
51466 +        * at a time.
51467 +        */
51468 +       if (qla2x00_get_ioctl_access(ha, QLA_IOCTL_ACCESS_WAIT_TIME) != 0) {
51469 +               /* error timed out */
51470 +               DEBUG9_10(printk("%s: ERROR timeout getting ioctl "
51471 +                   "access. host no=%d.\n", __func__, pext->HbaSelect);)
51472 +
51473 +               pext->Status = EXT_STATUS_BUSY;
51474 +               copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51475 +
51476 +               KMEM_FREE(pext, sizeof(EXT_IOCTL));
51477 +               return (-EBUSY);
51478 +       }
51479 +
51480 +
51481 +       while (test_bit(CFG_ACTIVE, &ha->cfg_flags) || ha->dpc_active) {
51482 +               if( signal_pending(current) )
51483 +                       break;   /* get out */
51484 +
51485 +               set_current_state(TASK_INTERRUPTIBLE);
51486 +               schedule_timeout(HZ);
51487 +       }
51488 +
51489 +       switch (cmd) { /* switch on EXT IOCTL COMMAND CODE */
51490 +
51491 +       case EXT_CC_QUERY:
51492 +               DEBUG9(printk("%s: got query command.\n", __func__);)
51493 +
51494 +               ret = qla2x00_query(ha, pext, 0);
51495 +
51496 +               break;
51497 +
51498 +       case EXT_CC_GET_DATA:
51499 +               DEBUG9(printk("%s: got get_data command.\n", __func__);)
51500 +
51501 +               ret = qla2x00_get_data(ha, pext, 0);
51502 +
51503 +               break;
51504 +
51505 +       case EXT_CC_SEND_FCCT_PASSTHRU:
51506 +               DEBUG9(printk("%s: got CT passthru cmd.\n", __func__));
51507 +
51508 +               ret = qla2x00_send_fcct(ha, pext, 0);
51509 +
51510 +               break;
51511 +
51512 +       case EXT_CC_SEND_SCSI_PASSTHRU:
51513 +               DEBUG9(printk("%s: got SCSI passthru cmd.\n", __func__));
51514 +
51515 +               ret = qla2x00_scsi_passthru(ha, pext, mode);
51516 +
51517 +               break;
51518 +
51519 +       case EXT_CC_REG_AEN:
51520 +               ret = qla2x00_aen_reg(ha, pext, mode);
51521 +
51522 +               break;
51523 +
51524 +       case EXT_CC_GET_AEN:
51525 +               ret = qla2x00_aen_get(ha, pext, mode);
51526 +
51527 +               break;
51528 +
51529 +       case EXT_CC_WWPN_TO_SCSIADDR:
51530 +               ret = qla2x00_wwpn_to_scsiaddr(ha, pext, 0);
51531 +               break;
51532 +
51533 +       case EXT_CC_SEND_ELS_RNID:
51534 +               ret = qla2x00_send_els_rnid(ha, pext, mode);
51535 +               break;
51536 +
51537 +       case EXT_CC_SET_DATA:
51538 +               ret = qla2x00_set_host_data(ha, pext, mode);
51539 +               break;                                                          
51540 +
51541 +       case INT_CC_READ_NVRAM:
51542 +               ret = qla2x00_read_nvram(ha, pext, mode);
51543 +
51544 +               break;
51545 +
51546 +       case INT_CC_UPDATE_NVRAM:
51547 +               ret = qla2x00_update_nvram(ha, pext, mode);
51548 +
51549 +               break;
51550 +
51551 +       case INT_CC_LOOPBACK:
51552 +               ret = qla2x00_send_loopback(ha, pext, mode);
51553 +
51554 +               break;
51555 +
51556 +       case INT_CC_READ_OPTION_ROM:
51557 +               ret = qla2x00_read_option_rom(ha, pext, mode);
51558 +
51559 +               break;
51560 +
51561 +       case INT_CC_UPDATE_OPTION_ROM:
51562 +               ret = qla2x00_update_option_rom(ha, pext, mode);
51563 +
51564 +               break;
51565 +
51566 +#if defined(ISP2300)
51567 +       case EXT_CC_SEND_ELS_PASSTHRU:
51568 +               DEBUG9(printk("%s: got ELS passthru cmd.\n", __func__));
51569 +
51570 +               ret = qla2x00_send_els_passthru(ha, pext, 0);
51571 +
51572 +               break;
51573 +#endif
51574 +
51575 +       /* all others go here */
51576 +       /*
51577 +          case EXT_CC_PLATFORM_REG:
51578 +          break;
51579 +        */
51580 +
51581 +       /* Failover IOCTLs */
51582 +       case FO_CC_GET_PARAMS:
51583 +       case FO_CC_SET_PARAMS:
51584 +       case FO_CC_GET_PATHS:
51585 +       case FO_CC_SET_CURRENT_PATH:
51586 +       case FO_CC_RESET_HBA_STAT:
51587 +       case FO_CC_GET_HBA_STAT:
51588 +       case FO_CC_GET_LUN_DATA:
51589 +       case FO_CC_SET_LUN_DATA:
51590 +       case FO_CC_GET_TARGET_DATA:
51591 +       case FO_CC_SET_TARGET_DATA:
51592 +               DEBUG9(printk("%s: failover arg (%p):\n", __func__, arg);)
51593 +
51594 +               qla2x00_fo_ioctl(ha, cmd, pext, mode);
51595 +
51596 +               break;
51597 +
51598 +       default:
51599 +               pext->Status = EXT_STATUS_INVALID_REQUEST;
51600 +               break;
51601 +
51602 +       } /* end of CC decode switch */
51603 +
51604 +       /* Always try to copy values back regardless what happened before. */
51605 +       tmp_rval = copy_to_user(arg, (void *)pext, sizeof(EXT_IOCTL));
51606 +
51607 +       if (ret == 0)
51608 +               ret = tmp_rval;
51609 +
51610 +       DEBUG9(printk("%s: exiting. tmp_rval(%d) ret(%d)\n",
51611 +           __func__, tmp_rval, ret);)
51612 +
51613 +       qla2x00_release_ioctl_access(ha);
51614 +
51615 +       KMEM_FREE(pext, sizeof(EXT_IOCTL));
51616 +       return (ret);
51617 +}
51618 +
51619 +/*
51620 + * qla2x00_alloc_ioctl_mem
51621 + *     Allocates memory needed by IOCTL code.
51622 + *
51623 + * Input:
51624 + *     ha = adapter state pointer.
51625 + *
51626 + * Returns:
51627 + *     qla2x00 local function return status code.
51628 + *
51629 + * Context:
51630 + *     Kernel context.
51631 + */
51632 +int
51633 +qla2x00_alloc_ioctl_mem(scsi_qla_host_t *ha)
51634 +{
51635 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51636 +           __func__, ha->host_no, ha->instance);)
51637 +
51638 +       if (qla2x00_get_new_ioctl_dma_mem(ha, QLA_INITIAL_IOCTLMEM_SIZE) !=
51639 +           QL_STATUS_SUCCESS) {
51640 +               printk(KERN_WARNING
51641 +                   "qla2x00: ERROR in ioctl physical memory allocation\n");
51642 +
51643 +               return QL_STATUS_RESOURCE_ERROR;
51644 +       }
51645 +
51646 +       /* Allocate context memory buffer */
51647 +       ha->ioctl = KMEM_ZALLOC(sizeof(hba_ioctl_context), 11);
51648 +       if (ha->ioctl == NULL) {
51649 +               /* error */
51650 +               printk(KERN_WARNING
51651 +                   "qla2x00: ERROR in ioctl context allocation.\n");
51652 +               return QL_STATUS_RESOURCE_ERROR;
51653 +       }
51654 +
51655 +       /* Allocate AEN tracking buffer */
51656 +       ha->ioctl->aen_tracking_queue =
51657 +           KMEM_ZALLOC(EXT_DEF_MAX_AEN_QUEUE * sizeof(EXT_ASYNC_EVENT), 12);
51658 +       if (ha->ioctl->aen_tracking_queue == NULL) {
51659 +               printk(KERN_WARNING
51660 +                   "qla2x00: ERROR in ioctl aen_queue allocation.\n");
51661 +               return QL_STATUS_RESOURCE_ERROR;
51662 +       }
51663 +
51664 +       ha->ioctl->ioctl_tq = KMEM_ZALLOC(sizeof(os_tgt_t), 13);
51665 +       if (ha->ioctl->ioctl_tq == NULL) {
51666 +               printk(KERN_WARNING
51667 +                   "qla2x00: ERROR in ioctl tgt queue allocation.\n");
51668 +               return QL_STATUS_RESOURCE_ERROR;
51669 +       }
51670 +
51671 +       ha->ioctl->ioctl_lq = KMEM_ZALLOC(sizeof(os_lun_t), 14);
51672 +       if (ha->ioctl->ioctl_lq == NULL) {
51673 +               printk(KERN_WARNING
51674 +                   "qla2x00: ERROR in ioctl lun queue allocation.\n");
51675 +               return QL_STATUS_RESOURCE_ERROR;
51676 +       }
51677 +       /*INIT_LIST_HEAD(&(ha->ioctl->ioctl_lq->cmd));*/
51678 +
51679 +       /* Pick the largest size we'll need per ha of all ioctl cmds.
51680 +        * Use this size when freeing.
51681 +        */
51682 +       ha->ioctl->scrap_mem = KMEM_ZALLOC(QLA_IOCTL_SCRAP_SIZE, 15);
51683 +       if (ha->ioctl->scrap_mem == NULL) {
51684 +               printk(KERN_WARNING
51685 +                   "qla2x00: ERROR in ioctl scrap_mem allocation.\n");
51686 +               return QL_STATUS_RESOURCE_ERROR;
51687 +       }
51688 +       ha->ioctl->scrap_mem_size = QLA_IOCTL_SCRAP_SIZE;
51689 +       ha->ioctl->scrap_mem_used = 0;
51690 +       DEBUG9(printk("%s(%ld): scrap_mem_size=%d.\n",
51691 +           __func__, ha->host_no, ha->ioctl->scrap_mem_size);)
51692 +
51693 +       ha->ioctl->ioctl_lq->q_state = LUN_STATE_READY;
51694 +       ha->ioctl->ioctl_lq->q_lock = SPIN_LOCK_UNLOCKED;
51695 +
51696 +       /* Init wait_q fields */
51697 +       ha->ioctl->wait_q_lock = SPIN_LOCK_UNLOCKED;
51698 +
51699 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
51700 +           __func__, ha->host_no, ha->instance);)
51701 +  
51702 +       return QL_STATUS_SUCCESS;
51703 +}
51704 +
51705 +/*
51706 + * qla2x00_get_new_ioctl_dma_mem
51707 + *     Allocates dma memory of the specified size.
51708 + *     This is done to replace any previously allocated ioctl dma buffer.
51709 + *
51710 + * Input:
51711 + *     ha = adapter state pointer.
51712 + *
51713 + * Returns:
51714 + *     qla2x00 local function return status code.
51715 + *
51716 + * Context:
51717 + *     Kernel context.
51718 + */
51719 +static int
51720 +qla2x00_get_new_ioctl_dma_mem(scsi_qla_host_t *ha, uint32_t size)
51721 +{
51722 +       DEBUG9(printk("%s entered.\n", __func__);)
51723 +
51724 +       if (ha->ioctl_mem) {
51725 +               DEBUG9(printk("%s: ioctl_mem was previously allocated. "
51726 +                   "Dealloc old buffer.\n", __func__);)
51727 +
51728 +               /* free the memory first */
51729 +               pci_free_consistent(ha->pdev, ha->ioctl_mem_size, ha->ioctl_mem,
51730 +                   ha->ioctl_mem_phys);
51731 +       }
51732 +
51733 +       /* Get consistent memory allocated for ioctl I/O operations. */
51734 +       ha->ioctl_mem = pci_alloc_consistent(ha->pdev,
51735 +           size, &ha->ioctl_mem_phys);
51736 +
51737 +       if (ha->ioctl_mem == NULL) {
51738 +               printk(KERN_WARNING
51739 +                   "%s: ERROR in ioctl physical memory allocation. "
51740 +                   "Requested length=%x.\n", __func__, size);
51741 +
51742 +               ha->ioctl_mem_size = 0;
51743 +               return QL_STATUS_RESOURCE_ERROR;
51744 +       }
51745 +       ha->ioctl_mem_size = size;
51746 +
51747 +       DEBUG9(printk("%s exiting.\n", __func__);)
51748 +
51749 +       return QL_STATUS_SUCCESS;
51750 +}
51751 +
51752 +/*
51753 + * qla2x00_free_ioctl_mem
51754 + *     Frees memory used by IOCTL code for the specified ha.
51755 + *
51756 + * Input:
51757 + *     ha = adapter state pointer.
51758 + *
51759 + * Context:
51760 + *     Kernel context.
51761 + */
51762 +void
51763 +qla2x00_free_ioctl_mem(scsi_qla_host_t *ha)
51764 +{
51765 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51766 +           __func__, ha->host_no, ha->instance);)
51767 +
51768 +       if (ha->ioctl != NULL) {
51769 +
51770 +               if (ha->ioctl->scrap_mem != NULL) {
51771 +                       /* The size here must match up to what we
51772 +                        * allocated before.
51773 +                        */
51774 +                       KMEM_FREE(ha->ioctl->scrap_mem,
51775 +                           ha->ioctl->scrap_mem_size);
51776 +                       ha->ioctl->scrap_mem = NULL;
51777 +                       ha->ioctl->scrap_mem_size = 0;
51778 +               }
51779 +
51780 +               if (ha->ioctl->ioctl_tq != NULL) {
51781 +                       KMEM_FREE(ha->ioctl->ioctl_tq, sizeof(os_tgt_t));
51782 +                       ha->ioctl->ioctl_tq = NULL;
51783 +               }
51784 +
51785 +               if (ha->ioctl->ioctl_lq != NULL) {
51786 +                       KMEM_FREE(ha->ioctl->ioctl_lq, sizeof(os_lun_t));
51787 +                       ha->ioctl->ioctl_lq = NULL;
51788 +               }
51789 +
51790 +               if (ha->ioctl->aen_tracking_queue != NULL) {
51791 +                       KMEM_FREE(ha->ioctl->aen_tracking_queue,
51792 +                           EXT_DEF_MAX_AEN_QUEUE * sizeof(EXT_ASYNC_EVENT));
51793 +                       ha->ioctl->aen_tracking_queue = NULL;
51794 +               }
51795 +
51796 +               KMEM_FREE(ha->ioctl, sizeof(hba_ioctl_context));
51797 +               ha->ioctl = NULL;
51798 +       }
51799 +
51800 +       /* free memory allocated for ioctl operations */
51801 +       pci_free_consistent(ha->pdev, ha->ioctl_mem_size, ha->ioctl_mem,
51802 +           ha->ioctl_mem_phys);
51803 +       ha->ioctl_mem = NULL;
51804 +
51805 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
51806 +           __func__, ha->host_no, ha->instance);)
51807 +
51808 +}
51809 +
51810 +/*
51811 + * qla2x00_get_ioctl_scrap_mem
51812 + *     Returns pointer to memory of the specified size from the scrap buffer.
51813 + *     This can be called multiple times before the free call as long
51814 + *     as the memory is to be used by the same ioctl command and
51815 + *     there's still memory left in the scrap buffer.
51816 + *
51817 + * Input:
51818 + *     ha = adapter state pointer.
51819 + *     ppmem = pointer to return a buffer pointer.
51820 + *     size = size of buffer to return.
51821 + *
51822 + * Returns:
51823 + *     qla2x00 local function return status code.
51824 + *
51825 + * Context:
51826 + *     Kernel context.
51827 + */
51828 +int
51829 +qla2x00_get_ioctl_scrap_mem(scsi_qla_host_t *ha, void **ppmem, uint32_t size)
51830 +{
51831 +       int             ret = QL_STATUS_SUCCESS;
51832 +       uint32_t        free_mem;
51833 +
51834 +       DEBUG9(printk("%s(%ld): inst=%ld entered. size=%d.\n",
51835 +           __func__, ha->host_no, ha->instance, size);)
51836 +
51837 +       free_mem = ha->ioctl->scrap_mem_size - ha->ioctl->scrap_mem_used;
51838 +       if (free_mem >= size) {
51839 +               *ppmem = ha->ioctl->scrap_mem + ha->ioctl->scrap_mem_used;
51840 +               ha->ioctl->scrap_mem_used += size;
51841 +       } else {
51842 +               DEBUG10(printk("%s(%ld): no more scrap memory.\n",
51843 +                   __func__, ha->host_no);)
51844 +
51845 +               ret = QL_STATUS_ERROR;
51846 +       }
51847 +
51848 +       DEBUG9(printk("%s(%ld): exiting. ret=%d.\n",
51849 +           __func__, ha->host_no, ret);)
51850 +
51851 +       return (ret);
51852 +}
51853 +
51854 +/*
51855 + * qla2x00_free_ioctl_scrap_mem
51856 + *     Makes the entire scrap buffer free for use.
51857 + *
51858 + * Input:
51859 + *     ha = adapter state pointer.
51860 + *
51861 + * Returns:
51862 + *     qla2x00 local function return status code.
51863 + *
51864 + */
51865 +void
51866 +qla2x00_free_ioctl_scrap_mem(scsi_qla_host_t *ha)
51867 +{
51868 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51869 +           __func__, ha->host_no, ha->instance);)
51870 +
51871 +       memset(ha->ioctl->scrap_mem, 0, ha->ioctl->scrap_mem_size);
51872 +       ha->ioctl->scrap_mem_used = 0;
51873 +
51874 +       DEBUG9(printk("%s(%ld): exiting.\n",
51875 +           __func__, ha->host_no);)
51876 +}
51877 +
51878 +#if defined(ISP2300)
51879 +/*
51880 + * qla2x00_get_next_free_pub_id
51881 + *     Find the next free public loop ID to use, starting from the old
51882 + *     loop ID passed in.  If the old loop ID is invalid, this function
51883 + *     will start the search from beginning.
51884 + *
51885 + * Input:
51886 + *     ha              = adapter block pointer.
51887 + *     ploop_id        = pointer to a 16bit var containing the old loop
51888 + *                     ID which is also to be used to get the new loop ID.
51889 + *
51890 + * Returns:
51891 + *      QL_STATUS_SUCCESS - Found an usable loop ID
51892 + *      QL_STATUS_RESOURCE_ERROR - No more free loop ID
51893 + */
51894 +static uint8_t
51895 +qla2x00_get_next_free_pub_id(scsi_qla_host_t *ha, uint16_t *ploop_id)
51896 +{
51897 +       uint8_t         retval = QL_STATUS_SUCCESS;
51898 +       uint16_t        index;
51899 +       uint16_t        old_id;
51900 +
51901 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51902 +           __func__, ha->host_no, ha->instance);)
51903 +
51904 +       old_id = *ploop_id;
51905 +       if (old_id >= LAST_SNS_LOOP_ID) {
51906 +               /* set a starting point */
51907 +               old_id = ha->min_external_loopid;
51908 +       }
51909 +
51910 +       for (index = old_id; index < LAST_SNS_LOOP_ID; index++) {
51911 +               if (!ha->fabricid[index].in_use) {
51912 +                       ha->fabricid[index].in_use = TRUE;
51913 +                       *ploop_id = index;
51914 +                       DEBUG9(printk("%s(%ld): found Lid %02x.\n",
51915 +                           __func__, ha->host_no, index);)
51916 +                       break;
51917 +               }
51918 +       }
51919 +       if (index >= LAST_SNS_LOOP_ID) {
51920 +               /* no more free ID */
51921 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR no more free LID "
51922 +                   "available.\n", __func__, ha->host_no, ha->instance);)
51923 +
51924 +               retval = QL_STATUS_RESOURCE_ERROR;
51925 +       }
51926 +
51927 +       DEBUG9(printk("%s(%ld): inst=%ld exiting. retval=%d.\n",
51928 +            __func__, ha->host_no, ha->instance, retval);)
51929 +
51930 +       return retval;
51931 +}
51932 +
51933 +/*
51934 + * qla2x00_host_relogin
51935 + *     Issue fabric login command to a host in the host_db which
51936 + *     had somehow been lost before. All updates are passed back
51937 + *     via pdevice. No update will be done to any of ha's database.
51938 + *
51939 + * Input:
51940 + *     ha = adapter block pointer.
51941 + *     pdevice = pointer to FC device type structure.
51942 + *
51943 + * Returns:
51944 + *      QL_STATUS_SUCCESS - Login successfully
51945 + *      QL_STATUS_ERROR - Login failed
51946 + *      QL_STATUS_FATAL_ERROR - Fatal error
51947 + */
51948 +static uint8_t
51949 +qla2x00_host_relogin(scsi_qla_host_t *ha, fcdev_t *pdevice) 
51950 +{
51951 +       uint8_t         retval = QL_STATUS_SUCCESS;
51952 +       uint16_t        status[3];
51953 +       uint16_t        tmp_loop_id;
51954 +
51955 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51956 +           __func__, ha->host_no, ha->instance);)
51957 +
51958 +       /* pdevice->loop_id is assumed to be straight from the current
51959 +        * database content.
51960 +        */
51961 +       tmp_loop_id = pdevice->loop_id & 0xff;
51962 +       if (tmp_loop_id >= LAST_SNS_LOOP_ID) {
51963 +               /* Invalid value.  We need to find a valid ID to use. */
51964 +               if (qla2x00_get_next_free_pub_id(ha, &tmp_loop_id) != 0) {
51965 +                       /* no more free IDs to use */
51966 +                       DEBUG9_10(printk("%s(%ld): inst=%ld no free loop_id "
51967 +                           " available for login.\n",
51968 +                           __func__, ha->host_no, ha->instance);)
51969 +
51970 +                       return QL_STATUS_ERROR;
51971 +               }
51972 +       }
51973 +
51974 +       for (;;) {
51975 +               DEBUG9(printk("%s(%ld): Login w/loop id 0x%02x for port "
51976 +                   "%02x%02x%02x\n",
51977 +                   __func__, ha->host_no, pdevice->loop_id,
51978 +                   pdevice->d_id.b.domain,
51979 +                   pdevice->d_id.b.area,
51980 +                   pdevice->d_id.b.al_pa));
51981 +
51982 +               /* Login device on switch. */
51983 +               qla2x00_login_fabric(ha,
51984 +                   tmp_loop_id, pdevice->d_id.b.domain,
51985 +                   pdevice->d_id.b.area, pdevice->d_id.b.al_pa, 
51986 +                   &status[0], 0);
51987 +
51988 +               if (status[0] != MBS_CMD_CMP &&
51989 +                   status[0] != MBS_PORT_ID_IN_USE &&
51990 +                   status[0] != MBS_LOOP_ID_IN_USE) {
51991 +
51992 +                       DEBUG9_10(printk("%s(%ld): inst=%ld "
51993 +                           "ERROR login status[0]=%x status[1]=%x.\n",
51994 +                           __func__, ha->host_no, ha->instance, status[0],
51995 +                           status[1]);)
51996 +
51997 +                       retval = QL_STATUS_FATAL_ERROR;
51998 +                       break;
51999 +               }
52000 +
52001 +               if (status[0] == MBS_CMD_CMP) {
52002 +                       DEBUG9(printk("%s(%ld): inst=%ld "
52003 +                           " host login success; loop_id=%x.\n",
52004 +                           __func__, ha->host_no, ha->instance, tmp_loop_id);)
52005 +
52006 +                       pdevice->loop_id = tmp_loop_id;
52007 +                       retval = QL_STATUS_SUCCESS;
52008 +                       break;
52009 +
52010 +               } else if (status[0] == MBS_PORT_ID_IN_USE) {
52011 +                       ha->fabricid[tmp_loop_id].in_use = FALSE;
52012 +                       tmp_loop_id = status[1];
52013 +
52014 +                       DEBUG9(printk("%s(%ld): inst=%ld "
52015 +                           "port %02x%02x%02x already using loop id=0x%02x in "
52016 +                           "f/w database. Retrying.\n",
52017 +                           __func__, ha->host_no, ha->instance,
52018 +                           pdevice->d_id.b.domain,
52019 +                           pdevice->d_id.b.area,
52020 +                           pdevice->d_id.b.al_pa,
52021 +                           tmp_loop_id);)
52022 +
52023 +                       if (tmp_loop_id <= LAST_SNS_LOOP_ID) {
52024 +                               ha->fabricid[tmp_loop_id].in_use = TRUE;
52025 +                       } else {
52026 +                               /* Error */
52027 +                               DEBUG9_10(printk("%s(%ld): inst=%ld "
52028 +                                   "PORT_ID_IN_USE - invalid loop id %02x "
52029 +                                   "returned.\n",
52030 +                                   __func__, ha->host_no, ha->instance,
52031 +                                   pdevice->loop_id);)
52032 +                               retval = QL_STATUS_ERROR;
52033 +                               break;
52034 +                       }
52035 +
52036 +               } else if (status[0] == MBS_LOOP_ID_IN_USE) {
52037 +                       /* loop id already used by others; try another one */
52038 +                       DEBUG9_10(printk("%s(%ld): inst=%ld "
52039 +                           "loop id %02x already used.\n",
52040 +                           __func__, ha->host_no, ha->instance,
52041 +                           pdevice->loop_id);)
52042 +
52043 +                       /* Search for another usable loop_id */
52044 +                       if (qla2x00_get_next_free_pub_id(ha,
52045 +                           &tmp_loop_id) == 0) {
52046 +
52047 +                               DEBUG9(printk("%s(%ld): previous loop "
52048 +                                   "id in use. Retry with 0x%02x.\n",
52049 +                                   __func__, ha->host_no, tmp_loop_id);)
52050 +
52051 +                               ha->fabricid[tmp_loop_id].in_use = TRUE;
52052 +                       } else {
52053 +                               /* Error */
52054 +                               DEBUG9_10(printk("%s(%ld): inst=%ld loop id "
52055 +                                   "in use; no more free loop id.\n",
52056 +                                   __func__, ha->host_no, ha->instance);)
52057 +
52058 +                               retval = QL_STATUS_ERROR;
52059 +                               break;
52060 +                       }
52061 +               }
52062 +       }
52063 +
52064 +       DEBUG9(printk("%s(%ld): inst=%ld exiting. retval=%d.\n",
52065 +            __func__, ha->host_no, ha->instance, retval);)
52066 +
52067 +       return (retval);
52068 +}
52069 +#endif
52070 +
52071 +/*
52072 + * qla2x00_find_curr_ha
52073 + *     Searches and returns the pointer to the adapter host_no specified.
52074 + *
52075 + * Input:
52076 + *     host_inst = driver internal adapter instance number to search.
52077 + *     ha = adapter state pointer of the instance requested.
52078 + *
52079 + * Returns:
52080 + *     qla2x00 local function return status code.
52081 + *
52082 + * Context:
52083 + *     Kernel context.
52084 + */
52085 +static int
52086 +qla2x00_find_curr_ha(uint16_t host_inst, scsi_qla_host_t **ret_ha)
52087 +{
52088 +       int     rval = QL_STATUS_SUCCESS;
52089 +       int     found;
52090 +       struct list_head *hal;
52091 +       scsi_qla_host_t *search_ha = NULL;
52092 +
52093 +       /*
52094 +        * Set ha context for this IOCTL by matching host_no.
52095 +        */
52096 +       found = 0;
52097 +       read_lock(&qla_hostlist_lock);
52098 +       list_for_each(hal, &qla_hostlist) {
52099 +               search_ha = list_entry(hal, scsi_qla_host_t, list);
52100 +
52101 +               if (search_ha->instance == host_inst) {
52102 +                       found++;
52103 +                       break;
52104 +               }
52105 +       }
52106 +       read_unlock(&qla_hostlist_lock);
52107 +
52108 +       if (!found) {
52109 +               DEBUG10(printk("%s: ERROR matching host_inst "
52110 +                   "%d to an HBA Instance.\n", __func__, host_inst);)
52111 +               rval = QL_STATUS_ERROR;
52112 +       } else {
52113 +               DEBUG9(printk("%s: found matching host_inst "
52114 +                   "%d to an HBA Instance.\n", __func__, host_inst);)
52115 +               *ret_ha = search_ha;
52116 +       }
52117 +
52118 +       return rval;
52119 +}
52120 +
52121 +/*
52122 + * qla2x00_get_driver_specifics
52123 + *     Returns driver specific data in the response buffer.
52124 + *
52125 + * Input:
52126 + *     pext = pointer to EXT_IOCTL structure containing values from user.
52127 + *
52128 + * Returns:
52129 + *     0 = success
52130 + *     others = errno value
52131 + *
52132 + * Context:
52133 + *     Kernel context.
52134 + */
52135 +static int
52136 +qla2x00_get_driver_specifics(EXT_IOCTL *pext)
52137 +{
52138 +       int                     ret = 0;
52139 +       EXT_LN_DRIVER_DATA      data;
52140 +
52141 +       DEBUG9(printk("%s: entered.\n",
52142 +           __func__);)
52143 +
52144 +       if (pext->ResponseLen < sizeof(EXT_LN_DRIVER_DATA)) {
52145 +               pext->Status = EXT_STATUS_BUFFER_TOO_SMALL;
52146 +               DEBUG9_10(printk("%s: ERROR ResponseLen too small.\n",
52147 +                   __func__);)
52148 +
52149 +               return (ret);
52150 +       }
52151 +
52152 +       data.DrvVer.Major = QLA_DRIVER_MAJOR_VER;
52153 +       data.DrvVer.Minor = QLA_DRIVER_MINOR_VER;
52154 +       data.DrvVer.Patch = QLA_DRIVER_PATCH_VER;
52155 +       data.DrvVer.Beta = QLA_DRIVER_BETA_VER;
52156 +
52157 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
52158 +           sizeof(EXT_LN_DRIVER_DATA));
52159 +       if (ret) {
52160 +               pext->Status = EXT_STATUS_COPY_ERR;
52161 +               DEBUG9_10(printk("%s: ERROR verify write resp buf\n",
52162 +                   __func__);)
52163 +
52164 +               return (ret);
52165 +       }
52166 +
52167 +       ret = copy_to_user(pext->ResponseAdr, &data, sizeof(EXT_LN_DRIVER_DATA));
52168 +       if (ret) {
52169 +               pext->Status = EXT_STATUS_COPY_ERR;
52170 +               DEBUG9_10(printk("%s: ERROR copy resp buf\n",
52171 +                   __func__);)
52172 +       }
52173 +
52174 +       DEBUG9(printk("%s: exiting. ret=%d.\n",
52175 +           __func__, ret);)
52176 +
52177 +       return (ret);
52178 +}
52179 +
52180 +/*
52181 + * qla2x00_aen_reg
52182 + *     IOCTL management server Asynchronous Event Tracking Enable/Disable.
52183 + *
52184 + * Input:
52185 + *     ha = pointer to the adapter struct of the adapter to register.
52186 + *     cmd = pointer to EXT_IOCTL structure containing values from user.
52187 + *     mode = flags. not used.
52188 + *
52189 + * Returns:
52190 + *     0 = success
52191 + *     others = errno value
52192 + *
52193 + * Context:
52194 + *     Kernel context.
52195 + */
52196 +static int
52197 +qla2x00_aen_reg(scsi_qla_host_t *ha, EXT_IOCTL *cmd, int mode)
52198 +{
52199 +       int             rval = 0;
52200 +       EXT_REG_AEN     reg_struct;
52201 +
52202 +       DEBUG9(printk("%s(%ld): inst %ld entered.\n",
52203 +           __func__, ha->host_no, ha->instance);)
52204 +
52205 +       rval = verify_area(VERIFY_READ, (void *)cmd->RequestAdr,
52206 +           sizeof(EXT_REG_AEN));
52207 +       if (rval) {
52208 +               cmd->Status = EXT_STATUS_COPY_ERR;
52209 +               DEBUG9_10(printk("%s(%ld): inst %ld ERROR verify read req buf\n",
52210 +                   __func__, ha->host_no, ha->instance);)
52211 +
52212 +               return (rval);
52213 +       }
52214 +
52215 +       rval = copy_from_user(&reg_struct, cmd->RequestAdr, sizeof(EXT_REG_AEN));
52216 +       if (rval == 0) {
52217 +               cmd->Status = EXT_STATUS_OK;
52218 +               if (reg_struct.Enable) {
52219 +                       ha->ioctl->flags |= IOCTL_AEN_TRACKING_ENABLE;
52220 +               } else {
52221 +                       ha->ioctl->flags &= ~IOCTL_AEN_TRACKING_ENABLE;
52222 +               }
52223 +       } else {
52224 +               cmd->Status = EXT_STATUS_COPY_ERR;
52225 +       }
52226 +
52227 +       DEBUG9(printk("%s(%ld): inst %ld reg_struct.Enable(%d) "
52228 +           "ha->ioctl_flag(%x) cmd->Status(%d).",
52229 +           __func__, ha->host_no, ha->instance, reg_struct.Enable,
52230 +           ha->ioctl->flags, cmd->Status);)
52231 +
52232 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52233 +           __func__, ha->host_no, ha->instance);)
52234 +
52235 +       return (rval);
52236 +}
52237 +
52238 +/*
52239 + * qla2x00_aen_get
52240 + *     Asynchronous Event Record Transfer to user.
52241 + *     The entire queue will be emptied and transferred back.
52242 + *
52243 + * Input:
52244 + *     ha = pointer to the adapter struct of the specified adapter.
52245 + *     pext = pointer to EXT_IOCTL structure containing values from user.
52246 + *     mode = flags.
52247 + *
52248 + * Returns:
52249 + *     0 = success
52250 + *     others = errno value
52251 + *
52252 + * Context:
52253 + *     Kernel context.
52254 + *
52255 + * NOTE: Need to use hardware lock to protect the queues from updates
52256 + *      via isr/enqueue_aen after we get rid of io_request_lock.
52257 + */
52258 +static int
52259 +qla2x00_aen_get(scsi_qla_host_t *ha, EXT_IOCTL *cmd, int mode)
52260 +{
52261 +       int             rval = 0;
52262 +       EXT_ASYNC_EVENT *tmp_q;
52263 +       EXT_ASYNC_EVENT *paen;
52264 +       uint8_t         i;
52265 +       uint8_t         queue_cnt;
52266 +       uint8_t         request_cnt;
52267 +       uint32_t        stat = EXT_STATUS_OK;
52268 +       uint32_t        ret_len = 0;
52269 +       unsigned long   cpu_flags = 0;
52270 +
52271 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52272 +           __func__, ha->host_no, ha->instance);)
52273 +
52274 +       request_cnt = (uint8_t)(cmd->ResponseLen / sizeof(EXT_ASYNC_EVENT));
52275 +
52276 +       if (request_cnt < EXT_DEF_MAX_AEN_QUEUE) {
52277 +               /* We require caller to alloc for the maximum request count */
52278 +               cmd->Status       = EXT_STATUS_BUFFER_TOO_SMALL;
52279 +               DEBUG9_10(printk("%s(%ld): inst=%ld Buffer too small. "
52280 +                   "Exiting normally.",
52281 +                   __func__, ha->host_no, ha->instance);)
52282 +
52283 +               return (rval);
52284 +       }
52285 +
52286 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&paen,
52287 +           sizeof(EXT_ASYNC_EVENT) * EXT_DEF_MAX_AEN_QUEUE)) {
52288 +               /* not enough memory */
52289 +               cmd->Status = EXT_STATUS_NO_MEMORY;
52290 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
52291 +                   "size requested=%d.\n",
52292 +                   __func__, ha->host_no, ha->instance,
52293 +                   sizeof(EXT_ASYNC_EVENT)*EXT_DEF_MAX_AEN_QUEUE);)
52294 +               return (rval);
52295 +       }
52296 +
52297 +       /* 1st: Make a local copy of the entire queue content. */
52298 +       tmp_q = (EXT_ASYNC_EVENT *)ha->ioctl->aen_tracking_queue;
52299 +       queue_cnt = 0;
52300 +
52301 +       spin_lock_irqsave(&ha->hardware_lock, cpu_flags);
52302 +       i = ha->ioctl->aen_q_head;
52303 +
52304 +       for (; queue_cnt < EXT_DEF_MAX_AEN_QUEUE;) {
52305 +               if (tmp_q[i].AsyncEventCode != 0) {
52306 +                       memcpy(&paen[queue_cnt], &tmp_q[i],
52307 +                           sizeof(EXT_ASYNC_EVENT));
52308 +                       queue_cnt++;
52309 +                       tmp_q[i].AsyncEventCode = 0; /* empty out the slot */
52310 +               }
52311 +
52312 +               if (i == ha->ioctl->aen_q_tail) {
52313 +                       /* done. */
52314 +                       break;
52315 +               }
52316 +
52317 +               i++;
52318 +
52319 +               if (i == EXT_DEF_MAX_AEN_QUEUE) {
52320 +                       i = 0;
52321 +               }
52322 +       }
52323 +
52324 +       /* Empty the queue. */
52325 +       ha->ioctl->aen_q_head = 0;
52326 +       ha->ioctl->aen_q_tail = 0;
52327 +
52328 +       spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
52329 +
52330 +       /* 2nd: Now transfer the queue content to user buffer */
52331 +       /* Copy the entire queue to user's buffer. */
52332 +       ret_len = (uint32_t)(queue_cnt * sizeof(EXT_ASYNC_EVENT));
52333 +       if (queue_cnt != 0) {
52334 +               rval = verify_area(VERIFY_WRITE, (void *)cmd->ResponseAdr,
52335 +                   ret_len);
52336 +               if (rval != 0) {
52337 +                       cmd->Status = EXT_STATUS_COPY_ERR;
52338 +                       DEBUG9_10(printk(
52339 +                           "%s(%ld): inst=%ld ERROR verify write resp buf.\n",
52340 +                           __func__, ha->host_no, ha->instance);)
52341 +
52342 +                       qla2x00_free_ioctl_scrap_mem(ha);
52343 +                       return (rval);
52344 +               }
52345 +
52346 +               rval = copy_to_user(cmd->ResponseAdr, paen, ret_len);
52347 +       }
52348 +       cmd->ResponseLen = ret_len;
52349 +
52350 +       if (rval != 0) {
52351 +               stat = EXT_STATUS_COPY_ERR;
52352 +               DEBUG9_10(printk("%s(%ld): inst=%ld FAILED. error = %d\n",
52353 +                   __func__, ha->host_no, ha->instance, stat);)
52354 +       } else {
52355 +               stat = EXT_STATUS_OK;
52356 +       }
52357 +
52358 +       cmd->Status = stat;
52359 +       qla2x00_free_ioctl_scrap_mem(ha);
52360 +
52361 +       DEBUG9(printk("%s(%ld): inst=%ld exiting. rval=%d.\n",
52362 +            __func__, ha->host_no, ha->instance, rval);)
52363 +
52364 +       return (rval);
52365 +}
52366 +
52367 +/*
52368 + * qla2x00_enqueue_aen
52369 + *
52370 + * Input:
52371 + *     ha = adapter state pointer.
52372 + *     event_code = async event code of the event to add to queue.
52373 + *     payload = event payload for the queue.
52374 + *
52375 + * Context:
52376 + *     Interrupt context.
52377 + * NOTE: Need to hold the hardware lock to protect the queues from
52378 + *      aen_get after we get rid of the io_request_lock.
52379 + */
52380 +void
52381 +qla2x00_enqueue_aen(scsi_qla_host_t *ha, uint16_t event_code, void *payload)
52382 +{
52383 +       uint8_t                 new_entry; /* index to current entry */
52384 +       uint16_t                *mbx;
52385 +       EXT_ASYNC_EVENT         *aen_queue;
52386 +
52387 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52388 +           __func__, ha->host_no, ha->instance);)
52389 +
52390 +       aen_queue = (EXT_ASYNC_EVENT *)ha->ioctl->aen_tracking_queue;
52391 +       if (aen_queue[ha->ioctl->aen_q_tail].AsyncEventCode != 0) {
52392 +               /* Need to change queue pointers to make room. */
52393 +
52394 +               /* Increment tail for adding new entry. */
52395 +               ha->ioctl->aen_q_tail++;
52396 +               if (ha->ioctl->aen_q_tail == EXT_DEF_MAX_AEN_QUEUE) {
52397 +                       ha->ioctl->aen_q_tail = 0;
52398 +               }
52399 +
52400 +               if (ha->ioctl->aen_q_head == ha->ioctl->aen_q_tail) {
52401 +                       /*
52402 +                        * We're overwriting the oldest entry, so need to
52403 +                        * update the head pointer.
52404 +                        */
52405 +                       ha->ioctl->aen_q_head++;
52406 +                       if (ha->ioctl->aen_q_head == EXT_DEF_MAX_AEN_QUEUE) {
52407 +                               ha->ioctl->aen_q_head = 0;
52408 +                       }
52409 +               }
52410 +       }
52411 +
52412 +       DEBUG(printk("%s(%ld): inst=%ld Adding code 0x%x to aen_q %p @ %d\n",
52413 +           __func__, ha->host_no, ha->instance, event_code, aen_queue,
52414 +           ha->ioctl->aen_q_tail);)
52415 +
52416 +       new_entry = ha->ioctl->aen_q_tail;
52417 +       aen_queue[new_entry].AsyncEventCode = event_code;
52418 +
52419 +               /* Update payload */
52420 +       switch (event_code) {
52421 +       case MBA_LIP_OCCURRED:
52422 +       case MBA_LOOP_UP:
52423 +       case MBA_LOOP_DOWN:
52424 +       case MBA_LIP_RESET:
52425 +       case MBA_PORT_UPDATE:
52426 +               /* empty */
52427 +               break;
52428 +
52429 +       case MBA_SCR_UPDATE:
52430 +               mbx = (uint16_t *)payload;
52431 +               /* al_pa */
52432 +               aen_queue[new_entry].Payload.RSCN.RSCNInfo[0] = LSB(mbx[2]);
52433 +               /* area */
52434 +               aen_queue[new_entry].Payload.RSCN.RSCNInfo[1] = MSB(mbx[2]);
52435 +               /* domain */
52436 +               aen_queue[new_entry].Payload.RSCN.RSCNInfo[2] = LSB(mbx[1]);
52437 +               /* save in big endian */
52438 +               BIG_ENDIAN_24(aen_queue[new_entry].Payload.RSCN.RSCNInfo[0]);
52439 +
52440 +               aen_queue[new_entry].Payload.RSCN.AddrFormat = MSB(mbx[1]);
52441 +
52442 +               break;
52443 +
52444 +       default:
52445 +               /* Not supported */
52446 +               aen_queue[new_entry].AsyncEventCode = 0;
52447 +               break;
52448 +       }
52449 +
52450 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52451 +           __func__, ha->host_no, ha->instance);)
52452 +}
52453 +
52454 +/*
52455 + * qla2x00_query
52456 + *     Handles all subcommands of the EXT_CC_QUERY command.
52457 + *
52458 + * Input:
52459 + *     ha = adapter state pointer.
52460 + *     pext = EXT_IOCTL structure pointer.
52461 + *     mode = not used.
52462 + *
52463 + * Returns:
52464 + *     0 = success
52465 + *     others = errno value
52466 + *
52467 + * Context:
52468 + *     Kernel context.
52469 + */
52470 +static int
52471 +qla2x00_query(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52472 +{
52473 +       int rval = 0;
52474 +
52475 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52476 +           __func__, ha->host_no, ha->instance);)
52477 +
52478 +       /* All Query type ioctls are done here */
52479 +       switch(pext->SubCode) {
52480 +
52481 +       case EXT_SC_QUERY_HBA_NODE:
52482 +               /* fill in HBA NODE Information */
52483 +               rval = qla2x00_query_hba_node(ha, pext, mode);
52484 +               break;
52485 +
52486 +       case EXT_SC_QUERY_HBA_PORT:
52487 +               /* return HBA PORT related info */
52488 +               rval = qla2x00_query_hba_port(ha, pext, mode);
52489 +               break;
52490 +
52491 +       case EXT_SC_QUERY_DISC_PORT:
52492 +               /* return discovered port information */
52493 +               rval = qla2x00_query_disc_port(ha, pext, mode);
52494 +               break;
52495 +
52496 +       case EXT_SC_QUERY_DISC_TGT:
52497 +               /* return discovered target information */
52498 +               rval = qla2x00_query_disc_tgt(ha, pext, mode);
52499 +               break;
52500 +
52501 +       case EXT_SC_QUERY_CHIP:
52502 +               rval = qla2x00_query_chip(ha, pext, mode);
52503 +               break;
52504 +
52505 +       case EXT_SC_QUERY_DISC_LUN:
52506 +               pext->Status = EXT_STATUS_UNSUPPORTED_SUBCODE;
52507 +               break;
52508 +
52509 +       default:
52510 +               DEBUG9_10(printk("%s(%ld): inst=%ld unknown SubCode %d.\n",
52511 +                   __func__, ha->host_no, ha->instance, pext->SubCode);)
52512 +               pext->Status = EXT_STATUS_UNSUPPORTED_SUBCODE;
52513 +               break;
52514 +       }
52515 +
52516 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52517 +           __func__, ha->host_no, ha->instance);)
52518 +       return rval;
52519 +}
52520 +
52521 +/*
52522 + * qla2x00_query_hba_node
52523 + *     Handles EXT_SC_QUERY_HBA_NODE subcommand.
52524 + *
52525 + * Input:
52526 + *     ha = adapter state pointer.
52527 + *     pext = EXT_IOCTL structure pointer.
52528 + *     mode = not used.
52529 + *
52530 + * Returns:
52531 + *     0 = success
52532 + *     others = errno value
52533 + *
52534 + * Context:
52535 + *     Kernel context.
52536 + */
52537 +static int
52538 +qla2x00_query_hba_node(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52539 +{
52540 +       int             ret = 0;
52541 +       uint32_t        i, transfer_size;
52542 +       EXT_HBA_NODE    *ptmp_hba_node;
52543 +
52544 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52545 +           __func__, ha->host_no, ha->instance);)
52546 +
52547 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_hba_node,
52548 +           sizeof(EXT_HBA_NODE))) {
52549 +               /* not enough memory */
52550 +               pext->Status = EXT_STATUS_NO_MEMORY;
52551 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
52552 +                   "size requested=%d.\n",
52553 +                   __func__, ha->host_no, ha->instance,
52554 +                   sizeof(EXT_HBA_NODE));)
52555 +               return (ret);
52556 +       }
52557 +
52558 +       /* fill all available HBA NODE Information */
52559 +       for (i = 0; i < 8 ; i++)
52560 +               ptmp_hba_node->WWNN[i] = ha->node_name[i];
52561 +
52562 +       sprintf((char *)(ptmp_hba_node->Manufacturer),"Qlogic Corp.");
52563 +       sprintf((char *)(ptmp_hba_node->Model), ha->brd_info->name);
52564 +
52565 +       ptmp_hba_node->SerialNum[0] = ha->serial0;
52566 +       ptmp_hba_node->SerialNum[1] = ha->serial1;
52567 +       ptmp_hba_node->SerialNum[2] = ha->serial2;
52568 +       sprintf((char *)(ptmp_hba_node->DriverVersion), qla2x00_version_str);
52569 +       sprintf((char *)(ptmp_hba_node->FWVersion),"%2d.%02d.%02d",
52570 +           ha->fw_major_version, 
52571 +           ha->fw_minor_version, 
52572 +           ha->fw_subminor_version);
52573 +
52574 +       sprintf((char *)(ptmp_hba_node->OptRomVersion),"%d.%d",
52575 +           ha->optrom_major, ha->optrom_minor);
52576 +
52577 +       ptmp_hba_node->InterfaceType = EXT_DEF_FC_INTF_TYPE;
52578 +       ptmp_hba_node->PortCount = 1;
52579 +
52580 +
52581 +       ptmp_hba_node->DriverAttr = (ha->flags.failover_enabled) ?
52582 +           DRVR_FO_ENABLED : 0;
52583 +
52584 +       ret = verify_area(VERIFY_WRITE, (void  *)pext->ResponseAdr,
52585 +           sizeof(EXT_HBA_NODE));
52586 +       if (ret) {
52587 +               pext->Status = EXT_STATUS_COPY_ERR;
52588 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
52589 +                   __func__, ha->host_no, ha->instance);)
52590 +               qla2x00_free_ioctl_scrap_mem(ha);
52591 +               return (ret);
52592 +       }
52593 +
52594 +       /* now copy up the HBA_NODE to user */
52595 +       if (pext->ResponseLen < sizeof(EXT_HBA_NODE))
52596 +               transfer_size = pext->ResponseLen;
52597 +       else
52598 +               transfer_size = sizeof(EXT_HBA_NODE);
52599 +
52600 +       ret = copy_to_user((uint8_t *)pext->ResponseAdr,
52601 +           (uint8_t *)ptmp_hba_node, transfer_size);
52602 +       if (ret) {
52603 +               pext->Status = EXT_STATUS_COPY_ERR;
52604 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
52605 +                   __func__, ha->host_no, ha->instance);)
52606 +               qla2x00_free_ioctl_scrap_mem(ha);
52607 +               return (ret);
52608 +       }
52609 +
52610 +       pext->Status       = EXT_STATUS_OK;
52611 +       pext->DetailStatus = EXT_STATUS_OK;
52612 +
52613 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52614 +           __func__, ha->host_no, ha->instance);)
52615 +
52616 +       qla2x00_free_ioctl_scrap_mem(ha);
52617 +       return (ret);
52618 +}
52619 +
52620 +/*
52621 + * qla2x00_query_hba_port
52622 + *     Handles EXT_SC_QUERY_HBA_PORT subcommand.
52623 + *
52624 + * Input:
52625 + *     ha = adapter state pointer.
52626 + *     pext = EXT_IOCTL structure pointer.
52627 + *     mode = not used.
52628 + *
52629 + * Returns:
52630 + *     0 = success
52631 + *     others = errno value
52632 + *
52633 + * Context:
52634 + *     Kernel context.
52635 + */
52636 +static int
52637 +qla2x00_query_hba_port(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52638 +{
52639 +       int             ret = 0;
52640 +       uint32_t        tgt_cnt, tgt, transfer_size;
52641 +       uint32_t        port_cnt;
52642 +       struct list_head        *fcpl;
52643 +       fc_port_t       *fcport;
52644 +       EXT_HBA_PORT    *ptmp_hba_port;
52645 +
52646 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52647 +           __func__, ha->host_no, ha->instance);)
52648 +
52649 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_hba_port,
52650 +           sizeof(EXT_HBA_PORT))) {
52651 +               /* not enough memory */
52652 +               pext->Status = EXT_STATUS_NO_MEMORY;
52653 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
52654 +                   "size requested=%d.\n",
52655 +                   __func__, ha->host_no, ha->instance,
52656 +                   sizeof(EXT_HBA_PORT));)
52657 +               return (ret);
52658 +       }
52659 +
52660 +       /* reflect all HBA PORT related info */
52661 +       ptmp_hba_port->WWPN[7] = ha->init_cb->port_name[7];
52662 +       ptmp_hba_port->WWPN[6] = ha->init_cb->port_name[6];
52663 +       ptmp_hba_port->WWPN[5] = ha->init_cb->port_name[5];
52664 +       ptmp_hba_port->WWPN[4] = ha->init_cb->port_name[4];
52665 +       ptmp_hba_port->WWPN[3] = ha->init_cb->port_name[3];
52666 +       ptmp_hba_port->WWPN[2] = ha->init_cb->port_name[2];
52667 +       ptmp_hba_port->WWPN[1] = ha->init_cb->port_name[1];
52668 +       ptmp_hba_port->WWPN[0] = ha->init_cb->port_name[0];
52669 +       ptmp_hba_port->Id[0] = 0;
52670 +       ptmp_hba_port->Id[1] = ha->d_id.r.d_id[2];
52671 +       ptmp_hba_port->Id[2] = ha->d_id.r.d_id[1];
52672 +       ptmp_hba_port->Id[3] = ha->d_id.r.d_id[0];
52673 +       ptmp_hba_port->Type =  EXT_DEF_INITIATOR_DEV;
52674 +
52675 +       switch (ha->current_topology) {
52676 +       case ISP_CFG_NL:
52677 +       case ISP_CFG_FL:
52678 +               ptmp_hba_port->Mode = EXT_DEF_LOOP_MODE;
52679 +               break;
52680 +
52681 +       case ISP_CFG_N:
52682 +       case ISP_CFG_F:
52683 +               ptmp_hba_port->Mode = EXT_DEF_P2P_MODE;
52684 +               break;
52685 +
52686 +       default:
52687 +               ptmp_hba_port->Mode = EXT_DEF_UNKNOWN_MODE;
52688 +               break;
52689 +       }
52690 +
52691 +       port_cnt = 0;
52692 +       list_for_each(fcpl, &ha->fcports) {
52693 +               fcport = list_entry(fcpl, fc_port_t, list);
52694 +
52695 +               /* if removed or missing */
52696 +               if (atomic_read(&fcport->state) != FC_ONLINE) {
52697 +                       DEBUG9_10(printk(
52698 +                           "%s(%ld): inst=%ld port %02x%02x%02x not online\n",
52699 +                           __func__, ha->host_no, ha->instance,
52700 +                           fcport->d_id.b.domain,
52701 +                           fcport->d_id.b.area,
52702 +                           fcport->d_id.b.al_pa));
52703 +                       continue;
52704 +               }
52705 +               port_cnt++;
52706 +       }
52707 +
52708 +       tgt_cnt  = 0;
52709 +       for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
52710 +               if (ha->otgt[tgt] == NULL) {
52711 +                       continue;
52712 +               }
52713 +               tgt_cnt++;
52714 +       }
52715 +
52716 +       DEBUG9_10(printk("%s(%ld): inst=%ld disc_port cnt=%d, tgt cnt=%d.\n",
52717 +           __func__, ha->host_no, ha->instance,
52718 +           port_cnt, tgt_cnt);)
52719 +       ptmp_hba_port->DiscPortCount   = port_cnt;
52720 +       ptmp_hba_port->DiscTargetCount = tgt_cnt;
52721 +
52722 +       if (ha->loop_state == LOOP_DOWN) {
52723 +
52724 +               ptmp_hba_port->State = EXT_DEF_HBA_LOOP_DOWN;
52725 +
52726 +       } else if (ha->loop_state != LOOP_READY ||
52727 +           test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags) ||
52728 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) || ABORTS_ACTIVE) {
52729 +
52730 +               ptmp_hba_port->State = EXT_DEF_HBA_SUSPENDED;
52731 +
52732 +       } else {
52733 +
52734 +               ptmp_hba_port->State = EXT_DEF_HBA_OK;
52735 +
52736 +       }
52737 +
52738 +       ptmp_hba_port->DiscPortNameType = EXT_DEF_USE_PORT_NAME;
52739 +
52740 +       /* Return supported FC4 type depending on driver support. */
52741 +       ptmp_hba_port->PortSupportedFC4Types = EXT_DEF_FC4_TYPE_SCSI;
52742 +#if defined(FC_IP_SUPPORT)
52743 +
52744 +       ptmp_hba_port->PortSupportedFC4Types |= EXT_DEF_FC4_TYPE_IP;
52745 +#endif
52746 +#if defined(FC_SCTP_SUPPORT)
52747 +
52748 +       ptmp_hba_port->PortSupportedFC4Types |= EXT_DEF_FC4_TYPE_SCTP;
52749 +#endif
52750 +
52751 +       ptmp_hba_port->PortActiveFC4Types = ha->active_fc4_types;
52752 +
52753 +       /* Return supported speed depending on adapter type */
52754 +#if defined(ISP2100)
52755 +
52756 +       ptmp_hba_port->PortSupportedSpeed = EXT_DEF_PORTSPEED_1GBIT;
52757 +#elif defined(ISP2200)
52758 +
52759 +       ptmp_hba_port->PortSupportedSpeed = EXT_DEF_PORTSPEED_1GBIT;
52760 +#elif defined(ISP2300)
52761 +
52762 +       ptmp_hba_port->PortSupportedSpeed = EXT_DEF_PORTSPEED_2GBIT;
52763 +#else
52764 +       /* invalid */
52765 +       ptmp_hba_port->PortSupportedSpeed = 0;
52766 +#endif
52767 +
52768 +       ptmp_hba_port->PortSpeed = ha->current_speed;
52769 +
52770 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
52771 +           sizeof(EXT_HBA_PORT));
52772 +       if (ret) {
52773 +               pext->Status = EXT_STATUS_COPY_ERR;
52774 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
52775 +                   __func__, ha->host_no, ha->instance);)
52776 +               qla2x00_free_ioctl_scrap_mem(ha);
52777 +               return (ret);
52778 +       }
52779 +
52780 +       /* now copy up the HBA_PORT to user */
52781 +       if (pext->ResponseLen < sizeof(EXT_HBA_PORT))
52782 +               transfer_size = pext->ResponseLen;
52783 +       else
52784 +               transfer_size = sizeof(EXT_HBA_PORT);
52785 +
52786 +       ret = copy_to_user((uint8_t *)pext->ResponseAdr,
52787 +           (uint8_t *)ptmp_hba_port, transfer_size);
52788 +       if (ret) {
52789 +               pext->Status = EXT_STATUS_COPY_ERR;
52790 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
52791 +                   __func__, ha->host_no, ha->instance);)
52792 +               qla2x00_free_ioctl_scrap_mem(ha);
52793 +               return (ret);
52794 +       }
52795 +
52796 +       pext->Status       = EXT_STATUS_OK;
52797 +       pext->DetailStatus = EXT_STATUS_OK;
52798 +       qla2x00_free_ioctl_scrap_mem(ha);
52799 +
52800 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52801 +           __func__, ha->host_no, ha->instance);)
52802 +
52803 +       return ret;
52804 +}
52805 +
52806 +/*
52807 + * qla2x00_query_disc_port
52808 + *     Handles EXT_SC_QUERY_DISC_PORT subcommand.
52809 + *
52810 + * Input:
52811 + *     ha = adapter state pointer.
52812 + *     pext = EXT_IOCTL structure pointer.
52813 + *     mode = not used.
52814 + *
52815 + * Returns:
52816 + *     0 = success
52817 + *     others = errno value
52818 + *
52819 + * Context:
52820 + *     Kernel context.
52821 + */
52822 +static int
52823 +qla2x00_query_disc_port(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52824 +{
52825 +       int             ret = 0;
52826 +       int             found;
52827 +       uint32_t        tgt, transfer_size, inst;
52828 +       struct list_head *fcpl;
52829 +       fc_port_t       *fcport;
52830 +       os_tgt_t        *tq;
52831 +       EXT_DISC_PORT   *ptmp_disc_port;
52832 +
52833 +       DEBUG9(printk("%s(%ld): inst=%ld entered. Port inst=%02d.\n",
52834 +           __func__, ha->host_no, ha->instance, pext->Instance);)
52835 +
52836 +       inst = 0;
52837 +       found = 0;
52838 +       fcport = NULL;
52839 +       list_for_each(fcpl, &ha->fcports) {
52840 +               fcport = list_entry(fcpl, fc_port_t, list);
52841 +
52842 +               if (atomic_read(&fcport->state) != FC_ONLINE) {
52843 +                       /* port does not exist anymore */
52844 +                       DEBUG9(printk("%s(%ld): fcport marked lost. "
52845 +                           "d_id=%02x%02x%02x loop_id=%02x not online.\n",
52846 +                           __func__, ha->host_no,
52847 +                           fcport->d_id.b.domain,
52848 +                           fcport->d_id.b.area,
52849 +                           fcport->d_id.b.al_pa,
52850 +                           fcport->loop_id);)
52851 +
52852 +                       continue;
52853 +               }
52854 +
52855 +               if (inst != pext->Instance) {
52856 +                       DEBUG9(printk("%s(%ld): found fcport %02d "
52857 +                           "d_id=%02x%02x%02x. Skipping.\n",
52858 +                           __func__, ha->host_no, inst,
52859 +                           fcport->d_id.b.domain,
52860 +                           fcport->d_id.b.area,
52861 +                           fcport->d_id.b.al_pa));
52862 +
52863 +                       inst++;
52864 +                       continue;
52865 +               }
52866 +
52867 +               DEBUG9(printk("%s(%ld): inst=%ld found matching fcport %02d "
52868 +                   "online. d_id=%02x%02x%02x loop_id=%02x online.\n",
52869 +                   __func__, ha->host_no, ha->instance, inst,
52870 +                   fcport->d_id.b.domain,
52871 +                   fcport->d_id.b.area,
52872 +                   fcport->d_id.b.al_pa,
52873 +                   fcport->loop_id);)
52874 +
52875 +               /* Found the matching port still connected. */
52876 +               found++;
52877 +               break;
52878 +       }
52879 +
52880 +       if (!found) {
52881 +               DEBUG9_10(printk("%s(%ld): inst=%ld dev not found.\n",
52882 +                   __func__, ha->host_no, ha->instance);)
52883 +
52884 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
52885 +               return (ret);
52886 +       }
52887 +
52888 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_disc_port,
52889 +           sizeof(EXT_DISC_PORT))) {
52890 +               /* not enough memory */
52891 +               pext->Status = EXT_STATUS_NO_MEMORY;
52892 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
52893 +                   "size requested=%d.\n",
52894 +                   __func__, ha->host_no, ha->instance,
52895 +                   sizeof(EXT_DISC_PORT));)
52896 +               return (ret);
52897 +       }
52898 +
52899 +       memcpy(ptmp_disc_port->WWNN, fcport->node_name, WWN_SIZE);
52900 +       memcpy(ptmp_disc_port->WWPN, fcport->port_name, WWN_SIZE);
52901 +
52902 +       ptmp_disc_port->Id[0] = 0;
52903 +       ptmp_disc_port->Id[1] = fcport->d_id.r.d_id[2];
52904 +       ptmp_disc_port->Id[2] = fcport->d_id.r.d_id[1];
52905 +       ptmp_disc_port->Id[3] = fcport->d_id.r.d_id[0];
52906 +
52907 +       /* Currently all devices on fcport list are target capable devices */
52908 +       /* This default value may need to be changed after we add non target
52909 +        * devices also to this list.
52910 +        */
52911 +       ptmp_disc_port->Type = EXT_DEF_TARGET_DEV;
52912 +
52913 +       if (fcport->flags & FC_FABRIC_DEVICE) {
52914 +               ptmp_disc_port->Type |= EXT_DEF_FABRIC_DEV;
52915 +       }
52916 +       if (fcport->flags & FC_TAPE_DEVICE) {
52917 +               ptmp_disc_port->Type |= EXT_DEF_TAPE_DEV;
52918 +       }
52919 +       if (fcport->flags & FC_INITIATOR_DEVICE) {
52920 +               ptmp_disc_port->Type |= EXT_DEF_INITIATOR_DEV;
52921 +       }
52922 +
52923 +       ptmp_disc_port->LoopID = fcport->loop_id;
52924 +       ptmp_disc_port->Status = 0;
52925 +       ptmp_disc_port->Bus    = 0;
52926 +
52927 +       for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
52928 +               if ((tq = ha->otgt[tgt]) == NULL) {
52929 +                       continue;
52930 +               }
52931 +
52932 +               if (tq->vis_port == NULL)  /* dg 08/14/01 */
52933 +                       continue;
52934 +
52935 +               if (memcmp(fcport->port_name, tq->vis_port->port_name,
52936 +                   EXT_DEF_WWN_NAME_SIZE) == 0) {
52937 +                       ptmp_disc_port->TargetId = tgt;
52938 +                       break;
52939 +               }
52940 +       }
52941 +
52942 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
52943 +           sizeof(EXT_DISC_PORT));
52944 +       if (ret) {
52945 +               pext->Status = EXT_STATUS_COPY_ERR;
52946 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
52947 +                   __func__, ha->host_no, ha->instance);)
52948 +               qla2x00_free_ioctl_scrap_mem(ha);
52949 +               return (ret);
52950 +       }
52951 +
52952 +       /* now copy up the DISC_PORT to user */
52953 +       if (pext->ResponseLen < sizeof(EXT_DISC_PORT))
52954 +               transfer_size = pext->ResponseLen;
52955 +       else
52956 +               transfer_size = sizeof(EXT_DISC_PORT);
52957 +
52958 +       ret = copy_to_user((uint8_t *)pext->ResponseAdr,
52959 +           (uint8_t *)ptmp_disc_port, transfer_size);
52960 +       if (ret) {
52961 +               pext->Status = EXT_STATUS_COPY_ERR;
52962 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
52963 +                   __func__, ha->host_no, ha->instance);)
52964 +               qla2x00_free_ioctl_scrap_mem(ha);
52965 +               return (ret);
52966 +       }
52967 +
52968 +       pext->Status       = EXT_STATUS_OK;
52969 +       pext->DetailStatus = EXT_STATUS_OK;
52970 +       qla2x00_free_ioctl_scrap_mem(ha);
52971 +
52972 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52973 +           __func__, ha->host_no, ha->instance);)
52974 +
52975 +       return (ret);
52976 +}
52977 +
52978 +/*
52979 + * qla2x00_query_disc_tgt
52980 + *     Handles EXT_SC_QUERY_DISC_TGT subcommand.
52981 + *
52982 + * Input:
52983 + *     ha = adapter state pointer.
52984 + *     pext = EXT_IOCTL structure pointer.
52985 + *     mode = not used.
52986 + *
52987 + * Returns:
52988 + *     0 = success
52989 + *     others = errno value
52990 + *
52991 + * Context:
52992 + *     Kernel context.
52993 + */
52994 +static int
52995 +qla2x00_query_disc_tgt(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52996 +{
52997 +       int             ret = 0;
52998 +       uint32_t        tgt, transfer_size, inst;
52999 +       uint32_t        cnt, i;
53000 +       fc_port_t       *tgt_fcport;
53001 +       os_tgt_t        *tq;
53002 +       EXT_DISC_TARGET *ptmp_disc_target;
53003 +
53004 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53005 +           __func__, ha->host_no, ha->instance);)
53006 +
53007 +       tq = NULL;
53008 +       for (tgt = 0, inst = 0; tgt < MAX_TARGETS; tgt++) {
53009 +               if (ha->otgt[tgt] == NULL) {
53010 +                       continue;
53011 +               }
53012 +               /* if wrong target id then skip to next entry */
53013 +               if (inst != pext->Instance) {
53014 +                       inst++;
53015 +                       continue;
53016 +               }
53017 +               tq = ha->otgt[tgt];
53018 +               break;
53019 +       }
53020 +
53021 +       if (tq == NULL || tgt == MAX_TARGETS) {
53022 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
53023 +               DEBUG9_10(printk("%s(%ld): inst=%ld target dev not found. "
53024 +                   "tq=%p, tgt=%d.\n",
53025 +                   __func__, ha->host_no, ha->instance, tq, tgt);)
53026 +               return (ret);
53027 +       }
53028 +
53029 +       if (tq->vis_port == NULL) {     /* dg 08/14/01 */
53030 +               pext->Status = EXT_STATUS_BUSY;
53031 +               DEBUG9_10(printk("%s(%ld): inst=%ld target dev not found. "
53032 +                   "tq=%p.\n",
53033 +                   __func__, ha->host_no, ha->instance, tq);)
53034 +               return (ret);
53035 +       }
53036 +
53037 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_disc_target,
53038 +           sizeof(EXT_DISC_TARGET))) {
53039 +               /* not enough memory */
53040 +               pext->Status = EXT_STATUS_NO_MEMORY;
53041 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53042 +                   "size requested=%d.\n",
53043 +                   __func__, ha->host_no, ha->instance,
53044 +                   sizeof(EXT_DISC_TARGET));)
53045 +               return (ret);
53046 +       }
53047 +
53048 +       tgt_fcport = tq->vis_port;
53049 +       memcpy(ptmp_disc_target->WWNN, tgt_fcport->node_name, WWN_SIZE);
53050 +       memcpy(ptmp_disc_target->WWPN, tgt_fcport->port_name, WWN_SIZE);
53051 +
53052 +       ptmp_disc_target->Id[0] = 0;
53053 +       ptmp_disc_target->Id[1] = tgt_fcport->d_id.r.d_id[2];
53054 +       ptmp_disc_target->Id[2] = tgt_fcport->d_id.r.d_id[1];
53055 +       ptmp_disc_target->Id[3] = tgt_fcport->d_id.r.d_id[0];
53056 +
53057 +       /* All devices on ha->otgt list are target capable devices. */
53058 +       ptmp_disc_target->Type = EXT_DEF_TARGET_DEV;
53059 +
53060 +       if (tgt_fcport->flags & FC_FABRIC_DEVICE) {
53061 +               ptmp_disc_target->Type |= EXT_DEF_FABRIC_DEV;
53062 +       }
53063 +       if (tgt_fcport->flags & FC_TAPE_DEVICE) {
53064 +               ptmp_disc_target->Type |= EXT_DEF_TAPE_DEV;
53065 +       }
53066 +       if (tgt_fcport->flags & FC_INITIATOR_DEVICE) {
53067 +               ptmp_disc_target->Type |= EXT_DEF_INITIATOR_DEV;
53068 +       }
53069 +
53070 +       ptmp_disc_target->LoopID   = tgt_fcport->loop_id;
53071 +       ptmp_disc_target->Status   = 0;
53072 +       ptmp_disc_target->Bus      = 0;
53073 +       ptmp_disc_target->TargetId = tgt;
53074 +
53075 +       cnt = 0;
53076 +       /* enumerate available LUNs under this TGT (if any) */
53077 +       if (ha->otgt[tgt] != NULL) {
53078 +               for (i = 0; i < MAX_LUNS ; i++) {
53079 +                       if ((ha->otgt[tgt])->olun[i] !=0)
53080 +                               cnt++;
53081 +               }
53082 +       }
53083 +
53084 +       ptmp_disc_target->LunCount = cnt;
53085 +
53086 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
53087 +           sizeof(EXT_DISC_TARGET));
53088 +       if (ret) {
53089 +               pext->Status = EXT_STATUS_COPY_ERR;
53090 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
53091 +                   __func__, ha->host_no, ha->instance);)
53092 +               qla2x00_free_ioctl_scrap_mem(ha);
53093 +               return (ret);
53094 +       }
53095 +
53096 +       /* now copy up the DISC_PORT to user */
53097 +       if (pext->ResponseLen < sizeof(EXT_DISC_PORT))
53098 +               transfer_size = pext->ResponseLen;
53099 +       else
53100 +               transfer_size = sizeof(EXT_DISC_TARGET);
53101 +
53102 +       ret = copy_to_user((uint8_t *)pext->ResponseAdr,
53103 +           (uint8_t *)ptmp_disc_target, transfer_size);
53104 +       if (ret) {
53105 +               pext->Status = EXT_STATUS_COPY_ERR;
53106 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53107 +                   __func__, ha->host_no, ha->instance);)
53108 +               qla2x00_free_ioctl_scrap_mem(ha);
53109 +               return (ret);
53110 +       }
53111 +
53112 +       pext->Status       = EXT_STATUS_OK;
53113 +       pext->DetailStatus = EXT_STATUS_OK;
53114 +       qla2x00_free_ioctl_scrap_mem(ha);
53115 +
53116 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53117 +           __func__, ha->host_no, ha->instance);)
53118 +
53119 +       return (ret);
53120 +}
53121 +
53122 +/*
53123 + * qla2x00_query_chip
53124 + *     Handles EXT_SC_QUERY_CHIP subcommand.
53125 + *
53126 + * Input:
53127 + *     ha = adapter state pointer.
53128 + *     pext = EXT_IOCTL structure pointer.
53129 + *     mode = not used.
53130 + *
53131 + * Returns:
53132 + *     0 = success
53133 + *     others = errno value
53134 + *
53135 + * Context:
53136 + *     Kernel context.
53137 + */
53138 +static int
53139 +qla2x00_query_chip(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53140 +{
53141 +       int             ret = 0;
53142 +       uint32_t        transfer_size, i;
53143 +       EXT_CHIP                *ptmp_isp;
53144 +       struct Scsi_Host        *host;
53145 +
53146 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53147 +           __func__, ha->host_no, ha->instance);)
53148 +
53149 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_isp,
53150 +           sizeof(EXT_CHIP))) {
53151 +               /* not enough memory */
53152 +               pext->Status = EXT_STATUS_NO_MEMORY;
53153 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53154 +                   "size requested=%d.\n",
53155 +                   __func__, ha->host_no, ha->instance,
53156 +                   sizeof(EXT_CHIP));)
53157 +               return (ret);
53158 +       }
53159 +
53160 +       host = ha->host;
53161 +       ptmp_isp->VendorId       = ha->pdev->vendor;
53162 +       ptmp_isp->DeviceId       = ha->pdev->device;
53163 +       ptmp_isp->SubVendorId    = ha->pdev->subsystem_vendor;
53164 +       ptmp_isp->SubSystemId    = ha->pdev->subsystem_device;
53165 +       ptmp_isp->PciBusNumber   = ha->pdev->bus->number;
53166 +       ptmp_isp->PciDevFunc     = ha->pdev->devfn;
53167 +       ptmp_isp->PciSlotNumber  = PCI_SLOT(ha->pdev->devfn);
53168 +       ptmp_isp->IoAddr         = host->io_port;
53169 +       ptmp_isp->IoAddrLen      = 512;
53170 +       ptmp_isp->MemAddr        = 0; /* ? */
53171 +       ptmp_isp->MemAddrLen     = 0; /* ? */
53172 +       ptmp_isp->ChipType       = 0; /* ? */
53173 +       ptmp_isp->InterruptLevel = host->irq;
53174 +
53175 +       for (i = 0; i < 8; i++)
53176 +               ptmp_isp->OutMbx[i] = 0;
53177 +
53178 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
53179 +           sizeof(EXT_CHIP));
53180 +       if (ret) {
53181 +               pext->Status = EXT_STATUS_COPY_ERR;
53182 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
53183 +                   __func__, ha->host_no, ha->instance);)
53184 +               qla2x00_free_ioctl_scrap_mem(ha);
53185 +               return (ret);
53186 +       }
53187 +
53188 +       /* now copy up the ISP to user */
53189 +       if (pext->ResponseLen < sizeof(EXT_CHIP))
53190 +               transfer_size = pext->ResponseLen;
53191 +       else
53192 +               transfer_size = sizeof(EXT_CHIP);
53193 +
53194 +       ret = copy_to_user((uint8_t *)pext->ResponseAdr, (uint8_t *)ptmp_isp,
53195 +           transfer_size);
53196 +       if (ret) {
53197 +               pext->Status = EXT_STATUS_COPY_ERR;
53198 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53199 +                   __func__, ha->host_no, ha->instance);)
53200 +               qla2x00_free_ioctl_scrap_mem(ha);
53201 +               return (ret);
53202 +       }
53203 +
53204 +       pext->Status       = EXT_STATUS_OK;
53205 +       pext->DetailStatus = EXT_STATUS_OK;
53206 +       qla2x00_free_ioctl_scrap_mem(ha);
53207 +
53208 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53209 +           __func__, ha->host_no, ha->instance);)
53210 +
53211 +       return (ret);
53212 +}
53213 +
53214 +/*
53215 + * qla2x00_get_data
53216 + *     Handles all subcommands of the EXT_CC_GET_DATA command.
53217 + *
53218 + * Input:
53219 + *     ha = adapter state pointer.
53220 + *     pext = EXT_IOCTL structure pointer.
53221 + *     mode = not used.
53222 + *
53223 + * Returns:
53224 + *     0 = success
53225 + *     others = errno value
53226 + *
53227 + * Context:
53228 + *     Kernel context.
53229 + */
53230 +static int
53231 +qla2x00_get_data(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53232 +{
53233 +       int     tmp_rval = 0;
53234 +
53235 +       switch(pext->SubCode) {
53236 +       case EXT_SC_GET_STATISTICS:
53237 +               tmp_rval = qla2x00_get_statistics(ha, pext, mode);
53238 +               break;
53239 +
53240 +       case EXT_SC_GET_FC_STATISTICS:
53241 +               tmp_rval = qla2x00_get_fc_statistics(ha, pext, mode);
53242 +               break;
53243 +
53244 +       case EXT_SC_GET_PORT_SUMMARY:
53245 +               tmp_rval = qla2x00_get_port_summary(ha, pext, mode);
53246 +               break;
53247 +
53248 +       case EXT_SC_QUERY_DRIVER:
53249 +               tmp_rval = qla2x00_query_driver(ha, pext, mode);
53250 +               break;
53251 +
53252 +       case EXT_SC_QUERY_FW:
53253 +               tmp_rval = qla2x00_query_fw(ha, pext, mode);
53254 +               break;
53255 +
53256 +       case EXT_SC_GET_RNID:
53257 +               tmp_rval = qla2x00_get_rnid_params(ha, pext, mode);
53258 +               break;
53259 +
53260 +       default:
53261 +               DEBUG10(printk("%s(%ld): inst=%ld unknown SubCode %d.\n",
53262 +                   __func__, ha->host_no, ha->instance, pext->SubCode);)
53263 +               pext->Status = EXT_STATUS_UNSUPPORTED_SUBCODE;
53264 +               break;
53265 +        }
53266 +
53267 +       return (tmp_rval);
53268 +}
53269 +
53270 +/*
53271 + * qla2x00_get_statistics
53272 + *     Issues get_link_status mbx cmd and returns statistics
53273 + *     relavent to the specified adapter.
53274 + *
53275 + * Input:
53276 + *     ha = pointer to adapter struct of the specified adapter.
53277 + *     pext = pointer to EXT_IOCTL structure containing values from user.
53278 + *     mode = not used.
53279 + *
53280 + * Returns:
53281 + *     0 = success
53282 + *     others = errno value
53283 + *
53284 + * Context:
53285 + *     Kernel context.
53286 + */
53287 +static int
53288 +qla2x00_get_statistics(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53289 +{
53290 +       EXT_HBA_PORT_STAT       *ptmp_stat;
53291 +       int             ret = 0;
53292 +       link_stat_t     stat_buf;
53293 +       uint8_t         rval;
53294 +       uint8_t         *usr_temp, *kernel_tmp;
53295 +       uint16_t        mb_stat[1];
53296 +       uint32_t        transfer_size;
53297 +
53298 +
53299 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53300 +           __func__, ha->host_no, ha->instance);)
53301 +
53302 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
53303 +           sizeof(EXT_HBA_PORT_STAT));
53304 +       if (ret) {
53305 +               pext->Status = EXT_STATUS_COPY_ERR;
53306 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY_WRITE "
53307 +                   "EXT_HBA_PORT_STAT.\n",
53308 +                   __func__, ha->host_no, ha->instance);)
53309 +               return (ret);
53310 +       }
53311 +
53312 +       /* check on loop down */
53313 +       if (ha->loop_state != LOOP_READY || 
53314 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
53315 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
53316 +           ABORTS_ACTIVE || ha->dpc_active) {
53317 +
53318 +               pext->Status = EXT_STATUS_BUSY;
53319 +               DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
53320 +                   __func__, ha->host_no, ha->instance);)
53321 +
53322 +               return (ret);
53323 +       }
53324 +
53325 +       /* Send mailbox cmd to get more. */
53326 +       if ((rval = qla2x00_get_link_status(ha, ha->loop_id, &stat_buf,
53327 +           mb_stat)) != QL_STATUS_SUCCESS) {
53328 +
53329 +               if (rval == BIT_0) {
53330 +                       pext->Status = EXT_STATUS_NO_MEMORY;
53331 +               } else if (rval == BIT_1) {
53332 +                       pext->Status = EXT_STATUS_MAILBOX;
53333 +                       pext->DetailStatus = EXT_DSTATUS_NOADNL_INFO;
53334 +               } else {
53335 +                       pext->Status = EXT_STATUS_ERR;
53336 +               }
53337 +
53338 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR mailbox failed. "
53339 +                   "mb[0]=%x.\n",
53340 +                   __func__, ha->host_no, ha->instance, mb_stat[0]);)
53341 +               printk(KERN_WARNING
53342 +                    "%s(%ld): inst=%ld ERROR mailbox failed. mb[0]=%x.\n",
53343 +                   __func__, ha->host_no, ha->instance, mb_stat[0]);
53344 +
53345 +               return (ret);
53346 +       }
53347 +
53348 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_stat,
53349 +           sizeof(EXT_HBA_PORT_STAT))) {
53350 +               /* not enough memory */
53351 +               pext->Status = EXT_STATUS_NO_MEMORY;
53352 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53353 +                   "size requested=%d.\n",
53354 +                   __func__, ha->host_no, ha->instance,
53355 +                   sizeof(EXT_HBA_PORT_STAT));)
53356 +               return (ret);
53357 +       }
53358 +
53359 +       ptmp_stat->ControllerErrorCount   =  ha->total_isp_aborts;
53360 +       ptmp_stat->DeviceErrorCount       =  ha->total_dev_errs;
53361 +       ptmp_stat->TotalIoCount           =  ha->total_ios;
53362 +       ptmp_stat->TotalMBytes            =  ha->total_bytes >> 20;
53363 +       ptmp_stat->TotalLipResets         =  ha->total_lip_cnt;
53364 +       /*
53365 +          ptmp_stat->TotalInterrupts        =  ha->total_isr_cnt;
53366 +        */
53367 +
53368 +       ptmp_stat->TotalLinkFailures               = stat_buf.link_fail_cnt;
53369 +       ptmp_stat->TotalLossOfSync                 = stat_buf.loss_sync_cnt;
53370 +       ptmp_stat->TotalLossOfSignals              = stat_buf.loss_sig_cnt;
53371 +       ptmp_stat->PrimitiveSeqProtocolErrorCount  = stat_buf.prim_seq_err_cnt;
53372 +       ptmp_stat->InvalidTransmissionWordCount    = stat_buf.inval_xmit_word_cnt;
53373 +       ptmp_stat->InvalidCRCCount                 = stat_buf.inval_crc_cnt;
53374 +
53375 +       /* now copy up the STATISTICS to user */
53376 +       if (pext->ResponseLen < sizeof(EXT_HBA_PORT_STAT))
53377 +               transfer_size = pext->ResponseLen;
53378 +       else
53379 +               transfer_size = sizeof(EXT_HBA_PORT_STAT);
53380 +
53381 +       usr_temp   = (uint8_t *)pext->ResponseAdr;
53382 +       kernel_tmp = (uint8_t *)ptmp_stat;
53383 +       ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53384 +       if (ret) {
53385 +               pext->Status = EXT_STATUS_COPY_ERR;
53386 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53387 +                   __func__, ha->host_no, ha->instance);)
53388 +               qla2x00_free_ioctl_scrap_mem(ha);
53389 +               return (ret);
53390 +       }
53391 +
53392 +       pext->Status       = EXT_STATUS_OK;
53393 +       pext->DetailStatus = EXT_STATUS_OK;
53394 +       qla2x00_free_ioctl_scrap_mem(ha);
53395 +
53396 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53397 +           __func__, ha->host_no, ha->instance);)
53398 +
53399 +       return (ret);
53400 +}
53401 +
53402 +/*
53403 + * qla2x00_get_fc_statistics
53404 + *     Issues get_link_status mbx cmd to the target device with
53405 + *     the specified WWN and returns statistics relavent to the
53406 + *     device.
53407 + *
53408 + * Input:
53409 + *     ha = pointer to adapter struct of the specified device.
53410 + *     pext = pointer to EXT_IOCTL structure containing values from user.
53411 + *     mode = not used.
53412 + *
53413 + * Returns:
53414 + *     0 = success
53415 + *     others = errno value
53416 + *
53417 + * Context:
53418 + *     Kernel context.
53419 + */
53420 +static int
53421 +qla2x00_get_fc_statistics(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53422 +{
53423 +       EXT_HBA_PORT_STAT       *ptmp_stat;
53424 +       EXT_DEST_ADDR           addr_struct;
53425 +       int             ret = 0;
53426 +       link_stat_t     stat_buf;
53427 +       uint8_t         rval, tgt;
53428 +       uint8_t         *usr_temp, *kernel_tmp;
53429 +       uint8_t         *req_name;
53430 +       uint16_t        mb_stat[1];
53431 +       uint32_t        transfer_size;
53432 +
53433 +
53434 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53435 +           __func__, ha->host_no, ha->instance);)
53436 +
53437 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
53438 +           sizeof(EXT_HBA_PORT_STAT));
53439 +       if (ret) {
53440 +               pext->Status = EXT_STATUS_COPY_ERR;
53441 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY_WRITE.\n",
53442 +                   __func__, ha->host_no, ha->instance);)
53443 +               return (ret);
53444 +       }
53445 +
53446 +       ret = copy_from_user(&addr_struct, pext->RequestAdr, pext->RequestLen);
53447 +       if (ret) {
53448 +               pext->Status = EXT_STATUS_COPY_ERR;
53449 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy req buf.\n",
53450 +                   __func__, ha->host_no, ha->instance);)
53451 +               return (ret);
53452 +       }
53453 +
53454 +       /* find the device's loop_id */
53455 +       switch (addr_struct.DestType) {
53456 +       case EXT_DEF_DESTTYPE_WWPN:
53457 +               req_name = addr_struct.DestAddr.WWPN;
53458 +               for (tgt = 0; tgt < MAX_FIBRE_DEVICES; tgt++) {
53459 +                       if (memcmp(ha->fc_db[tgt].wwn, req_name,
53460 +                           EXT_DEF_WWN_NAME_SIZE) == 0) {
53461 +                               break;
53462 +                       }
53463 +               }
53464 +               break;
53465 +
53466 +       case EXT_DEF_DESTTYPE_WWNN:
53467 +       case EXT_DEF_DESTTYPE_PORTID:
53468 +       case EXT_DEF_DESTTYPE_FABRIC:
53469 +       case EXT_DEF_DESTTYPE_SCSI:
53470 +       default:
53471 +               pext->Status = EXT_STATUS_INVALID_PARAM;
53472 +               pext->DetailStatus = EXT_DSTATUS_NOADNL_INFO;
53473 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR Unsupported subcode "
53474 +                   "address type.\n", __func__, ha->host_no, ha->instance);)
53475 +               return (ret);
53476 +
53477 +               break;
53478 +       }
53479 +
53480 +       if (tgt == MAX_FIBRE_DEVICES) {
53481 +               /* not found */
53482 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
53483 +               pext->DetailStatus = EXT_DSTATUS_TARGET;
53484 +               return (ret);
53485 +       }
53486 +
53487 +       /* check for suspended/lost device */
53488 +       /*
53489 +          if (ha->fcport is suspended/lost) {
53490 +          pext->Status = EXT_STATUS_SUSPENDED;
53491 +          pext->DetailStatus = EXT_DSTATUS_TARGET;
53492 +          return pext->Status;
53493 +          }
53494 +        */
53495 +
53496 +       /* check on loop down */
53497 +       if (ha->loop_state != LOOP_READY ||
53498 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
53499 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
53500 +           ABORTS_ACTIVE || ha->dpc_active) {
53501 +
53502 +               pext->Status = EXT_STATUS_BUSY;
53503 +               DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
53504 +                    __func__, ha->host_no, ha->instance);)
53505 +               return (ret);
53506 +       }
53507 +
53508 +       /* Send mailbox cmd to get more. */
53509 +       if ((rval = qla2x00_get_link_status(ha, ha->fc_db[tgt].loop_id,
53510 +           &stat_buf, mb_stat)) != QL_STATUS_SUCCESS) {
53511 +               if (rval == BIT_0) {
53512 +                       pext->Status = EXT_STATUS_NO_MEMORY;
53513 +               } else if (rval == BIT_1) {
53514 +                       pext->Status = EXT_STATUS_MAILBOX;
53515 +                       pext->DetailStatus = EXT_DSTATUS_NOADNL_INFO;
53516 +               } else {
53517 +                       pext->Status = EXT_STATUS_ERR;
53518 +               }
53519 +
53520 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR mailbox failed. "
53521 +                   "mb[0]=%x.\n",
53522 +                   __func__, ha->host_no, ha->instance, mb_stat[0]);)
53523 +               return (ret);
53524 +       }
53525 +
53526 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_stat,
53527 +           sizeof(EXT_HBA_PORT_STAT))) {
53528 +               /* not enough memory */
53529 +               pext->Status = EXT_STATUS_NO_MEMORY;
53530 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53531 +                   "size requested=%d.\n",
53532 +                   __func__, ha->host_no, ha->instance,
53533 +                   sizeof(EXT_HBA_PORT_STAT));)
53534 +               return (ret);
53535 +       }
53536 +
53537 +       ptmp_stat->ControllerErrorCount   =  ha->total_isp_aborts;
53538 +       ptmp_stat->DeviceErrorCount       =  ha->total_dev_errs;
53539 +       ptmp_stat->TotalIoCount           =  ha->total_ios;
53540 +       ptmp_stat->TotalMBytes            =  ha->total_bytes >> 20;
53541 +       ptmp_stat->TotalLipResets         =  ha->total_lip_cnt;
53542 +       /*
53543 +          ptmp_stat->TotalInterrupts        =  ha->total_isr_cnt;
53544 +        */
53545 +
53546 +       ptmp_stat->TotalLinkFailures               = stat_buf.link_fail_cnt;
53547 +       ptmp_stat->TotalLossOfSync                 = stat_buf.loss_sync_cnt;
53548 +       ptmp_stat->TotalLossOfSignals              = stat_buf.loss_sig_cnt;
53549 +       ptmp_stat->PrimitiveSeqProtocolErrorCount  = stat_buf.prim_seq_err_cnt;
53550 +       ptmp_stat->InvalidTransmissionWordCount    = stat_buf.inval_xmit_word_cnt;
53551 +       ptmp_stat->InvalidCRCCount                 = stat_buf.inval_crc_cnt;
53552 +
53553 +       /* now copy up the STATISTICS to user */
53554 +       if (pext->ResponseLen < sizeof(EXT_HBA_PORT_STAT))
53555 +               transfer_size = pext->ResponseLen;
53556 +       else
53557 +               transfer_size = sizeof(EXT_HBA_PORT_STAT);
53558 +
53559 +       usr_temp   = (uint8_t *)pext->ResponseAdr;
53560 +       kernel_tmp = (uint8_t *)ptmp_stat;
53561 +       ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53562 +       if (ret) {
53563 +               pext->Status = EXT_STATUS_COPY_ERR;
53564 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53565 +                   __func__, ha->host_no, ha->instance);)
53566 +               qla2x00_free_ioctl_scrap_mem(ha);
53567 +               return (ret);
53568 +       }
53569 +
53570 +       pext->Status       = EXT_STATUS_OK;
53571 +       pext->DetailStatus = EXT_STATUS_OK;
53572 +       qla2x00_free_ioctl_scrap_mem(ha);
53573 +
53574 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53575 +           __func__, ha->host_no, ha->instance);)
53576 +
53577 +       return (ret);
53578 +}
53579 +
53580 +/*
53581 + * qla2x00_get_port_summary
53582 + *     Handles EXT_SC_GET_PORT_SUMMARY subcommand.
53583 + *     Returns values of devicedata and dd_entry list.
53584 + *
53585 + * Input:
53586 + *     ha = adapter state pointer.
53587 + *     pext = EXT_IOCTL structure pointer.
53588 + *     mode = not used.
53589 + *
53590 + * Returns:
53591 + *     0 = success
53592 + *     others = errno value
53593 + *
53594 + * Context:
53595 + *     Kernel context.
53596 + */
53597 +static int
53598 +qla2x00_get_port_summary(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53599 +{
53600 +       int             ret = 0;
53601 +       uint8_t         *usr_temp, *kernel_tmp;
53602 +       uint32_t        b;
53603 +       uint32_t        i, port_cnt, entry;
53604 +       uint32_t        number_of_entries = 0;
53605 +       uint32_t        tgt_cnt, transfer_size;
53606 +       struct list_head        *fcpl;
53607 +       fc_port_t       *fcport;
53608 +       uint32_t        current_offset;
53609 +       void            *start_of_entry_list;
53610 +
53611 +       EXT_DEVICEDATA          *pdevicedata;
53612 +       EXT_DEVICEDATAENTRY     *pdd_entry;
53613 +
53614 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53615 +           __func__, ha->host_no, ha->instance);)
53616 +
53617 +       port_cnt = 0;
53618 +       tgt_cnt  = 0;
53619 +
53620 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pdevicedata,
53621 +           sizeof(EXT_DEVICEDATA))) {
53622 +               /* not enough memory */
53623 +               pext->Status = EXT_STATUS_NO_MEMORY;
53624 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53625 +                   "pdevicedata requested=%d.\n",
53626 +                   __func__, ha->host_no, ha->instance,
53627 +                   sizeof(EXT_DEVICEDATA));)
53628 +               return (ret);
53629 +       }
53630 +
53631 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pdd_entry,
53632 +           sizeof(EXT_DEVICEDATAENTRY))) {
53633 +               /* not enough memory */
53634 +               pext->Status = EXT_STATUS_NO_MEMORY;
53635 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53636 +                   "pdd_entry requested=%d.\n",
53637 +                   __func__, ha->host_no, ha->instance,
53638 +                   sizeof(EXT_DEVICEDATAENTRY));)
53639 +               qla2x00_free_ioctl_scrap_mem(ha);
53640 +               return (ret);
53641 +       }
53642 +
53643 +       list_for_each(fcpl, &ha->fcports) {
53644 +               fcport = list_entry(fcpl, fc_port_t, list);
53645 +
53646 +               port_cnt++;
53647 +       }
53648 +       pdevicedata->TotalDevices = port_cnt;
53649 +
53650 +       number_of_entries = pext->ResponseLen / sizeof(EXT_DEVICEDATAENTRY);
53651 +
53652 +       /* we want the lesser of port_cnt and number_of_entries */
53653 +       if (number_of_entries > port_cnt)
53654 +               number_of_entries = port_cnt;
53655 +       pdevicedata->ReturnListEntryCount  = number_of_entries;
53656 +
53657 +       DEBUG9(printk("%s(%ld): inst=%ld EXT_SC_GET_PORT_SUMMARY port_cnt=%x, "
53658 +           "return entry cnt=%x.\n",
53659 +           __func__, ha->host_no, ha->instance, port_cnt,
53660 +           number_of_entries);)
53661 +
53662 +       transfer_size = sizeof(pdevicedata->ReturnListEntryCount) +
53663 +           sizeof(pdevicedata->TotalDevices);
53664 +
53665 +       /* copy top of devicedata here */
53666 +       ret = verify_area(VERIFY_WRITE, (void *)(pext->ResponseAdr),
53667 +           transfer_size);
53668 +       if (ret) {
53669 +               pext->Status = EXT_STATUS_COPY_ERR;
53670 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
53671 +                   __func__, ha->host_no, ha->instance);)
53672 +               qla2x00_free_ioctl_scrap_mem(ha);
53673 +               return (ret);
53674 +       }
53675 +
53676 +       usr_temp   = (uint8_t *)pext->ResponseAdr;
53677 +       kernel_tmp = (uint8_t *)pdevicedata;
53678 +       ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53679 +       if (ret) {
53680 +               pext->Status = EXT_STATUS_COPY_ERR;
53681 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp "
53682 +                   "devicedata buffer.\n",
53683 +                   __func__, ha->host_no, ha->instance);)
53684 +               qla2x00_free_ioctl_scrap_mem(ha);
53685 +               return (ret);
53686 +       }
53687 +
53688 +       start_of_entry_list = (void *)(pext->ResponseAdr) + transfer_size;
53689 +
53690 +       entry = 0;
53691 +       list_for_each(fcpl, &ha->fcports) {
53692 +               fcport = list_entry(fcpl, fc_port_t, list);
53693
53694 +               if (entry >= number_of_entries)
53695 +                       break;
53696
53697 +               /* copy from fc_db of this target (port) to dd_entry */
53698 +
53699 +               memcpy(pdd_entry->NodeWWN, fcport->node_name, WWN_SIZE);
53700 +               memcpy(pdd_entry->PortWWN, fcport->port_name, WWN_SIZE);
53701 +
53702 +               for (b = 0; b < 3 ; b++)
53703 +                       pdd_entry->PortID[b] = fcport->d_id.r.d_id[2-b];
53704 +
53705 +               if (fcport->flags & FC_FABRIC_DEVICE) {
53706 +                       pdd_entry->ControlFlags = EXT_DEF_GET_FABRIC_DEVICE;
53707 +               } else {
53708 +                       pdd_entry->ControlFlags = 0;
53709 +               }
53710 +
53711 +               pdd_entry->TargetAddress.Bus    = 0;
53712 +               /* Retrieve 'Target' number for port via fc_db */
53713 +               for (i = 0; i < MAX_TARGETS; i++) {
53714 +                       if (ha->fc_db[i].loop_id == PORT_UNUSED)
53715 +                               continue;
53716 +
53717 +                       if (memcmp(fcport->port_name, ha->fc_db[i].wwn,
53718 +                           EXT_DEF_WWN_NAME_SIZE) == 0) {
53719 +                               pdd_entry->TargetAddress.Target = i;
53720 +                               break;
53721 +                       }
53722 +               }
53723 +               pdd_entry->TargetAddress.Lun    = 0;
53724 +               pdd_entry->DeviceFlags          = 0;
53725 +               pdd_entry->LoopID               = fcport->loop_id;
53726 +               pdd_entry->BaseLunNumber        = 0;
53727 +
53728 +               current_offset = entry * sizeof(EXT_DEVICEDATAENTRY);
53729 +
53730 +               transfer_size = sizeof(EXT_DEVICEDATAENTRY);
53731 +               ret = verify_area(VERIFY_WRITE,
53732 +                   (void *)(start_of_entry_list + current_offset),
53733 +                   transfer_size);
53734 +
53735 +               if (ret) {
53736 +                       pext->Status = EXT_STATUS_COPY_ERR;
53737 +                       DEBUG10(printk("%s(%ld): inst=%ld ERROR verify WRITE "
53738 +                           "rsp bufaddr=%p\n",
53739 +                           __func__, ha->host_no, ha->instance,
53740 +                           (void *)(start_of_entry_list + current_offset));)
53741 +                       qla2x00_free_ioctl_scrap_mem(ha);
53742 +                       return pext->Status;
53743 +               }
53744 +
53745 +               /* now copy up this dd_entry to user */
53746 +               usr_temp = (uint8_t *)((u_long) start_of_entry_list +
53747 +                   current_offset);
53748 +               kernel_tmp = (uint8_t *)pdd_entry;
53749 +               ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53750 +               if (ret) {
53751 +                       pext->Status = EXT_STATUS_COPY_ERR;
53752 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp "
53753 +                           "entry list buffer.\n",
53754 +                           __func__, ha->host_no, ha->instance);)
53755 +                       qla2x00_free_ioctl_scrap_mem(ha);
53756 +                       return (ret);
53757 +               }
53758 +
53759 +               entry++;
53760 +       } /* for number_of_entries */
53761 +
53762 +       pext->Status       = EXT_STATUS_OK;
53763 +       pext->DetailStatus = EXT_STATUS_OK;
53764 +       qla2x00_free_ioctl_scrap_mem(ha);
53765 +
53766 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53767 +           __func__, ha->host_no, ha->instance);)
53768 +
53769 +       return (ret);
53770 +}
53771 +
53772 +/*
53773 + * qla2x00_query_driver
53774 + *     Handles EXT_SC_QUERY_DRIVER subcommand.
53775 + *
53776 + * Input:
53777 + *     ha = adapter state pointer.
53778 + *     pext = EXT_IOCTL structure pointer.
53779 + *     mode = not used.
53780 + *
53781 + * Returns:
53782 + *     0 = success
53783 + *     others = errno value
53784 + *
53785 + * Context:
53786 + *     Kernel context.
53787 + */
53788 +static int
53789 +qla2x00_query_driver(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53790 +{
53791 +       int             ret = 0;
53792 +       uint8_t         *usr_temp, *kernel_tmp;
53793 +       uint32_t        transfer_size;
53794 +       EXT_DRIVER      *pdriver_prop;
53795 +
53796 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53797 +           __func__, ha->host_no, ha->instance);)
53798 +
53799 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pdriver_prop,
53800 +           sizeof(EXT_DRIVER))) {
53801 +               /* not enough memory */
53802 +               pext->Status = EXT_STATUS_NO_MEMORY;
53803 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53804 +                   "size requested=%d.\n",
53805 +                   __func__, ha->host_no, ha->instance,
53806 +                   sizeof(EXT_DRIVER));)
53807 +               return (ret);
53808 +       }
53809 +
53810 +       sprintf(pdriver_prop->Version, qla2x00_version_str);
53811 +       pdriver_prop->NumOfBus = MAX_BUSES;
53812 +       pdriver_prop->TargetsPerBus = MAX_FIBRE_DEVICES;
53813 +       pdriver_prop->LunsPerTarget = MAX_LUNS;
53814 +       pdriver_prop->MaxTransferLen  = 0xffffffff;
53815 +       pdriver_prop->MaxDataSegments = 0xffffffff;
53816 +
53817 +       if (ha->flags.enable_64bit_addressing == 1)
53818 +               pdriver_prop->DmaBitAddresses = 64;
53819 +       else
53820 +               pdriver_prop->DmaBitAddresses = 32;
53821 +
53822 +       if (pext->ResponseLen < sizeof(EXT_DRIVER))
53823 +               transfer_size = pext->ResponseLen;
53824 +       else
53825 +               transfer_size = sizeof(EXT_DRIVER);
53826 +
53827 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
53828 +           transfer_size);
53829 +       if (ret) {
53830 +               pext->Status = EXT_STATUS_COPY_ERR;
53831 +               DEBUG10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf.\n",
53832 +                   __func__, ha->host_no, ha->instance);)
53833 +               qla2x00_free_ioctl_scrap_mem(ha);
53834 +               return (ret);
53835 +       }
53836 +
53837 +       /* now copy up the ISP to user */
53838 +       usr_temp   = (uint8_t *)pext->ResponseAdr;
53839 +       kernel_tmp = (uint8_t *)pdriver_prop;
53840 +       ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53841 +       if (ret) {
53842 +               pext->Status = EXT_STATUS_COPY_ERR;
53843 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53844 +                   __func__, ha->host_no, ha->instance);)
53845 +               qla2x00_free_ioctl_scrap_mem(ha);
53846 +               return (ret);
53847 +       }
53848 +
53849 +       pext->Status       = EXT_STATUS_OK;
53850 +       pext->DetailStatus = EXT_STATUS_OK;
53851 +       qla2x00_free_ioctl_scrap_mem(ha);
53852 +
53853 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53854 +           __func__, ha->host_no, ha->instance);)
53855 +
53856 +       return (ret);
53857 +}
53858 +
53859 +/*
53860 + * qla2x00_query_fw
53861 + *     Handles EXT_SC_QUERY_FW subcommand.
53862 + *
53863 + * Input:
53864 + *     ha = adapter state pointer.
53865 + *     pext = EXT_IOCTL structure pointer.
53866 + *     mode = not used.
53867 + *
53868 + * Returns:
53869 + *     0 = success
53870 + *     others = errno value
53871 + *
53872 + * Context:
53873 + *     Kernel context.
53874 + */
53875 +static int
53876 +qla2x00_query_fw(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53877 +{
53878 +       int             ret = 0;
53879 +       uint8_t         *usr_temp, *kernel_tmp;
53880 +       uint32_t        transfer_size;
53881 +       EXT_FW          *pfw_prop;
53882 +
53883 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53884 +           __func__, ha->host_no, ha->instance);)
53885 +
53886 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfw_prop,
53887 +           sizeof(EXT_FW))) {
53888 +               /* not enough memory */
53889 +               pext->Status = EXT_STATUS_NO_MEMORY;
53890 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53891 +                   "size requested=%d.\n",
53892 +                   __func__, ha->host_no, ha->instance,
53893 +                   sizeof(EXT_FW));)
53894 +               return (ret);
53895 +       }
53896 +
53897 +       pfw_prop->Version[0] = ha->fw_major_version; 
53898 +       pfw_prop->Version[1] = ha->fw_minor_version; 
53899 +       pfw_prop->Version[2] = ha->fw_subminor_version;
53900 +
53901 +       transfer_size = sizeof(EXT_FW);
53902 +
53903 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
53904 +           transfer_size);
53905 +       if (ret) {
53906 +               pext->Status = EXT_STATUS_COPY_ERR;
53907 +               DEBUG10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf.\n",
53908 +                   __func__, ha->host_no, ha->instance);)
53909 +               qla2x00_free_ioctl_scrap_mem(ha);
53910 +               return (ret);
53911 +       }
53912 +
53913 +       usr_temp   = (uint8_t *)pext->ResponseAdr;
53914 +       kernel_tmp = (uint8_t *)pfw_prop;
53915 +       ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53916 +       if (ret) {
53917 +               pext->Status = EXT_STATUS_COPY_ERR;
53918 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53919 +                   __func__, ha->host_no, ha->instance);)
53920 +               qla2x00_free_ioctl_scrap_mem(ha);
53921 +               return (ret);
53922 +       }
53923 +
53924 +       pext->Status       = EXT_STATUS_OK;
53925 +       pext->DetailStatus = EXT_STATUS_OK;
53926 +       qla2x00_free_ioctl_scrap_mem(ha);
53927 +
53928 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53929 +           __func__, ha->host_no, ha->instance);)
53930 +
53931 +       return (ret);
53932 +}
53933 +
53934 +#if defined(ISP2300)
53935 +/*
53936 + * qla2x00_send_els_passthru
53937 + *     Passes the ELS command down to firmware as MSIOCB and
53938 + *     copies the response back when it completes.
53939 + *
53940 + * Input:
53941 + *     ha = adapter state pointer.
53942 + *     pext = EXT_IOCTL structure pointer.
53943 + *     mode = not used.
53944 + *
53945 + * Returns:
53946 + *     0 = success
53947 + *     others = errno value
53948 + *
53949 + * Context:
53950 + *     Kernel context.
53951 + */
53952 +static int
53953 +qla2x00_send_els_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53954 +{
53955 +       int             ret = 0;
53956 +       int             tmp_rval = 0;
53957 +
53958 +       uint8_t         index;
53959 +       uint8_t         invalid_wwn = FALSE;
53960 +       uint8_t         port_found;
53961 +       uint8_t         *ptmp_stat;
53962 +       uint8_t         *pusr_req_buf;
53963 +       uint8_t         *presp_payload;
53964 +       uint32_t        payload_len;
53965 +       uint32_t        usr_req_len;
53966 +
53967 +       fcdev_t         tmpdev;
53968 +
53969 +       fc_lun_t        *ptemp_fclun;   /* buf from scrap mem */
53970 +       fc_port_t       *ptemp_fcport;  /* buf from scrap mem */
53971 +
53972 +       struct list_head *fcpl;
53973 +       fc_port_t       *fcport;
53974 +
53975 +       os_lun_t        *plq;
53976 +       os_tgt_t        *ptq;
53977 +
53978 +       Scsi_Cmnd       *pscsi_cmd;
53979 +
53980 +       srb_t           *sp = NULL;
53981 +       EXT_ELS_PT_REQ  *pels_pt_req;
53982 +
53983 +       struct list_head *fcil;
53984 +       fc_initiator_t  *fcinitiator;
53985 +
53986 +
53987 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53988 +           __func__, ha->host_no, ha->instance);)
53989 +
53990 +       /* check on current topology */
53991 +       if ((ha->current_topology != ISP_CFG_F) &&
53992 +           (ha->current_topology != ISP_CFG_FL)) {
53993 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
53994 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR not in F or FL mode\n",
53995 +                   __func__, ha->host_no, ha->instance);)
53996 +               return (ret);
53997 +       }
53998 +
53999 +       if (ha->ioctl_mem_size <= 0) {
54000 +               if (qla2x00_get_new_ioctl_dma_mem(ha,
54001 +                   QLA_INITIAL_IOCTLMEM_SIZE) != QL_STATUS_SUCCESS) {
54002 +
54003 +                       DEBUG9_10(printk("%s: ERROR cannot alloc DMA "
54004 +                           "buffer size=%lx.\n",
54005 +                           __func__, QLA_INITIAL_IOCTLMEM_SIZE);)
54006 +
54007 +                       pext->Status = EXT_STATUS_NO_MEMORY;
54008 +                       return (ret);
54009 +               }
54010 +       }
54011 +
54012 +       if (pext->ResponseLen > ha->ioctl_mem_size) {
54013 +               if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
54014 +                   QL_STATUS_SUCCESS) {
54015 +
54016 +                       DEBUG9_10(printk("%s: ERROR cannot alloc requested"
54017 +                           "DMA buffer size %x.\n",
54018 +                           __func__, pext->ResponseLen);)
54019 +
54020 +                       pext->Status = EXT_STATUS_NO_MEMORY;
54021 +                       return (ret);
54022 +               }
54023 +
54024 +               DEBUG9(printk("%s(%ld): inst=%ld rsp buf length larger than "
54025 +                   "existing size. Additional mem alloc successful.\n",
54026 +                   __func__, ha->host_no, ha->instance);)
54027 +       }
54028 +
54029 +       usr_req_len = pext->RequestLen - sizeof(EXT_ELS_PT_REQ);
54030 +       if (usr_req_len > ha->ioctl_mem_size) {
54031 +               pext->Status = EXT_STATUS_INVALID_PARAM;
54032 +
54033 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR ReqLen too big=%x.\n",
54034 +                   __func__, ha->host_no, ha->instance, pext->RequestLen);)
54035 +
54036 +               return (ret);
54037 +       }
54038 +
54039 +       /* Verify entire EXT IOCTL request buffer */
54040 +       
54041 +       ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
54042 +           pext->RequestLen);
54043 +       if (ret) {
54044 +               pext->Status = EXT_STATUS_COPY_ERR;
54045 +               DEBUG9_10(printk(
54046 +                   "%s(%ld): inst=%ld ERROR verify read req buf\n",
54047 +                   __func__, ha->host_no, ha->instance);)
54048 +
54049 +               return (ret);
54050 +       }
54051 +
54052 +       DEBUG9(printk("%s(%ld): inst=%ld req buf verified.\n",
54053 +           __func__, ha->host_no, ha->instance);)
54054 +
54055 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_cmd,
54056 +           sizeof(Scsi_Cmnd))) {
54057 +               /* not enough memory */
54058 +               pext->Status = EXT_STATUS_NO_MEMORY;
54059 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54060 +                   "size requested=%d.\n",
54061 +                   __func__, ha->host_no, ha->instance,
54062 +                   sizeof(Scsi_Cmnd));)
54063 +               return (ret);
54064 +       }
54065 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pels_pt_req,
54066 +           sizeof(EXT_ELS_PT_REQ))) {
54067 +               /* not enough memory */
54068 +               pext->Status = EXT_STATUS_NO_MEMORY;
54069 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54070 +                   "els_pt_req size requested=%d.\n",
54071 +                   __func__, ha->host_no, ha->instance,
54072 +                   sizeof(EXT_ELS_PT_REQ));)
54073 +               goto els_passthru_done;
54074 +       }
54075 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptemp_fclun,
54076 +           sizeof(fc_lun_t))) {
54077 +               /* not enough memory */
54078 +               pext->Status = EXT_STATUS_NO_MEMORY;
54079 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54080 +                   "fclun size requested=%d.\n",
54081 +                   __func__, ha->host_no, ha->instance,
54082 +                   sizeof(fc_lun_t));)
54083 +               goto els_passthru_done;
54084 +       }
54085 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptemp_fcport,
54086 +           sizeof(fc_port_t))) {
54087 +               /* not enough memory */
54088 +               pext->Status = EXT_STATUS_NO_MEMORY;
54089 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54090 +                   "fcport size requested=%d.\n",
54091 +                   __func__, ha->host_no, ha->instance,
54092 +                   sizeof(fc_port_t));)
54093 +               goto els_passthru_done;
54094 +       }
54095 +
54096 +       /* initialize */
54097 +
54098 +       memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
54099 +
54100 +       /* copy request buffer */
54101 +       
54102 +       ret = copy_from_user(pels_pt_req, pext->RequestAdr,
54103 +           sizeof(EXT_ELS_PT_REQ));
54104 +       if (ret) {
54105 +               pext->Status = EXT_STATUS_COPY_ERR;
54106 +
54107 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR"
54108 +                   "copy_from_user() of struct failed (%d).\n",
54109 +                   __func__, ha->host_no, ha->instance, ret);)
54110 +
54111 +               goto els_passthru_done;
54112 +       }
54113 +
54114 +       pusr_req_buf = (uint8_t *)pext->RequestAdr + sizeof(EXT_ELS_PT_REQ);
54115 +       
54116 +       ret = copy_from_user(ha->ioctl_mem, pusr_req_buf, usr_req_len);
54117 +       if (ret) {
54118 +               pext->Status = EXT_STATUS_COPY_ERR;
54119 +
54120 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR"
54121 +                   "copy_from_user() of request buf failed (%d).\n",
54122 +                   __func__, ha->host_no, ha->instance, ret);)
54123 +
54124 +               goto els_passthru_done;
54125 +       }
54126 +
54127 +       DEBUG9(printk("%s(%ld): inst=%ld after copy request.\n",
54128 +           __func__, ha->host_no, ha->instance);)
54129 +       
54130 +       /* check on loop down (1) */
54131 +       if (ha->loop_state != LOOP_READY || 
54132 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
54133 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || ABORTS_ACTIVE) {
54134 +
54135 +               DEBUG9_10(printk(
54136 +                   "%s(%ld): inst=%ld before dest port validation- loop not "
54137 +                   "ready; cannot proceed.\n",
54138 +                   __func__, ha->host_no, ha->instance);)
54139 +
54140 +               pext->Status = EXT_STATUS_BUSY;
54141 +
54142 +               goto els_passthru_done;
54143 +       }
54144 +
54145 +       /*********************************/
54146 +       /* Validate the destination port */
54147 +       /*********************************/
54148 +
54149 +       /* first: WWN cannot be zero if no PID is specified */
54150 +       invalid_wwn = qla2x00_is_wwn_zero(pels_pt_req->WWPN);
54151 +       if (invalid_wwn && !(pels_pt_req->ValidMask & EXT_DEF_PID_VALID)) {
54152 +               /* error: both are not set. */
54153 +               pext->Status = EXT_STATUS_INVALID_PARAM;
54154 +
54155 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR no valid WWPN/PID\n",
54156 +                   __func__, ha->host_no, ha->instance);)
54157 +
54158 +               goto els_passthru_done;
54159 +       }
54160 +
54161 +       /* second: it cannot be the local/current HBA itself */
54162 +       if (!invalid_wwn) {
54163 +               if (memcmp(ha->init_cb->port_name, pels_pt_req->WWPN,
54164 +                   EXT_DEF_WWN_NAME_SIZE) == 0) {
54165 +
54166 +                       /* local HBA specified. */
54167 +
54168 +                       pext->Status = EXT_STATUS_INVALID_PARAM;
54169 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR local HBA's "
54170 +                           "WWPN found.\n",
54171 +                           __func__, ha->host_no, ha->instance);)
54172 +
54173 +                       goto els_passthru_done;
54174 +               }
54175 +       } else { /* using PID */
54176 +               if (pels_pt_req->Id[1] == ha->d_id.r.d_id[2]
54177 +                   && pels_pt_req->Id[2] == ha->d_id.r.d_id[1]
54178 +                   && pels_pt_req->Id[3] == ha->d_id.r.d_id[0]) {
54179 +
54180 +                       /* local HBA specified. */
54181 +
54182 +                       pext->Status = EXT_STATUS_INVALID_PARAM;
54183 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR local HBA's "
54184 +                           "PID found.\n",
54185 +                           __func__, ha->host_no, ha->instance);)
54186 +
54187 +                       goto els_passthru_done;
54188 +               }
54189 +       }
54190 +
54191 +       /************************/
54192 +       /* Now find the loop ID */
54193 +       /************************/
54194 +
54195 +       /* 1st: scan thru our HBA database */
54196 +       index = 0;
54197 +       port_found = FALSE;
54198 +       fcinitiator = NULL;
54199 +       if (!invalid_wwn) {
54200 +               /* search with WWPN */
54201 +               list_for_each(fcil, &ha->fcinitiators) {
54202 +                       fcinitiator = list_entry(fcil, fc_initiator_t, list);
54203 +
54204 +                       if (memcmp(pels_pt_req->WWPN, fcinitiator->port_name,
54205 +                                EXT_DEF_WWN_NAME_SIZE) == 0) {
54206 +
54207 +                               port_found = TRUE;
54208 +                               pels_pt_req->Lid = fcinitiator->loop_id;
54209 +
54210 +                               DEBUG9(printk("%s(%ld): inst=%ld found host "
54211 +                                   "w/ WWN. loop_id = %02x.\n",
54212 +                                   __func__, ha->host_no, ha->instance,
54213 +                                   pels_pt_req->Lid);)
54214 +
54215 +                               break;
54216 +                       }
54217 +               }
54218 +       } else {
54219 +               /* search with PID */
54220 +               list_for_each(fcil, &ha->fcinitiators) {
54221 +                       fcinitiator = list_entry(fcil, fc_initiator_t, list);
54222 +
54223 +                       if (pels_pt_req->Id[1] == fcinitiator->d_id.r.d_id[2]
54224 +                           && pels_pt_req->Id[2] == fcinitiator->d_id.r.d_id[1]
54225 +                           && pels_pt_req->Id[3] ==
54226 +                                   fcinitiator->d_id.r.d_id[0]) {
54227 +
54228 +                               port_found = TRUE;
54229 +                               pels_pt_req->Lid = fcinitiator->loop_id;
54230 +
54231 +                               DEBUG9(printk("%s(%ld): inst=%ld found host "
54232 +                                   "w/ WWN. loop_id = %02x.\n",
54233 +                                   __func__, ha->host_no, ha->instance,
54234 +                                   pels_pt_req->Lid);)
54235 +
54236 +                               break;
54237 +                       }
54238 +               }
54239 +       }
54240 +
54241 +       /* If this is for a host device, check if we need to perform login */
54242 +       if (port_found && (fcinitiator->loop_id >= LAST_SNS_LOOP_ID)) {
54243 +
54244 +               DEBUG9_10(printk("%s(%ld): inst=%ld need to relogin to "
54245 +                   "dest host.\n",
54246 +                   __func__, ha->host_no, ha->instance);)
54247 +
54248 +               if (fcinitiator->d_id.b24 == 0) {
54249 +                       /* Either RSCN hasn't been processed yet or
54250 +                        * this host is no longer connected to us.
54251 +                        */
54252 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54253 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR dest host "
54254 +                           "port lost.\n",
54255 +                           __func__, ha->host_no, ha->instance);)
54256 +
54257 +                       goto els_passthru_done;
54258 +               }
54259 +
54260 +               /* login and update database */
54261 +               tmpdev.d_id.b24 = fcinitiator->d_id.b24;
54262 +               tmpdev.loop_id = fcinitiator->loop_id;
54263 +
54264 +               if (qla2x00_host_relogin(ha, &tmpdev) != 0) {
54265 +                       /* login failed. */
54266 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54267 +
54268 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR login to "
54269 +                           "host port failed. loop_id=%02x pid=%02x%02x%02x "
54270 +                           "ret=%d.\n",
54271 +                           __func__, ha->host_no, ha->instance, tmpdev.loop_id,
54272 +                           tmpdev.d_id.b.domain,
54273 +                           tmpdev.d_id.b.area,
54274 +                           tmpdev.d_id.b.al_pa,
54275 +                           ret);)
54276 +
54277 +                       goto els_passthru_done;
54278 +               } else {
54279 +                       fcinitiator->loop_id = tmpdev.loop_id;
54280 +                       pels_pt_req->Lid = tmpdev.loop_id;
54281 +
54282 +                       DEBUG9(printk("%s(%ld): inst=%ld success login to "
54283 +                           "remote host; Lid=%02x.\n",
54284 +                           __func__, ha->host_no, ha->instance,
54285 +                           fcinitiator->loop_id);)
54286 +               }
54287 +       }
54288 +       
54289 +       /* 2nd: scan thru our fcport database */
54290 +       if (!invalid_wwn && !port_found) {
54291 +               /* search with WWPN */
54292 +               list_for_each(fcpl, &ha->fcports) {
54293 +                       fcport = list_entry(fcpl, fc_port_t, list);
54294 +        
54295 +                       if (memcmp(fcport->port_name, pels_pt_req->WWPN,
54296 +                           EXT_DEF_WWN_NAME_SIZE) == 0) {
54297 +
54298 +                               port_found = TRUE;
54299 +                               pels_pt_req->Lid = fcport->loop_id;
54300 +
54301 +                               DEBUG9(printk("%s(%ld): inst=%ld found fcport "
54302 +                                   "w/ WWN. loop_id = %02x.\n",
54303 +                                   __func__, ha->host_no, ha->instance,
54304 +                                   pels_pt_req->Lid);)
54305 +                               break;
54306 +                       }
54307 +               }
54308 +       } else  if (!port_found) {
54309 +               /* search with PID */
54310 +               list_for_each(fcpl, &ha->fcports) {
54311 +                       fcport = list_entry(fcpl, fc_port_t, list);
54312 +        
54313 +                       if (pels_pt_req->Id[1] == fcport->d_id.r.d_id[2]
54314 +                           && pels_pt_req->Id[2] == fcport->d_id.r.d_id[1]
54315 +                           && pels_pt_req->Id[3] == fcport->d_id.r.d_id[0]) {
54316 +
54317 +                               port_found = TRUE;
54318 +                               pels_pt_req->Lid = fcport->loop_id;
54319 +
54320 +                               DEBUG9(printk("%s(%ld): inst=%ld found fcport "
54321 +                                   "w/ PID. loop_id = %02x.\n",
54322 +                                   __func__, ha->host_no, ha->instance,
54323 +                                   pels_pt_req->Lid);)
54324 +
54325 +                               break;
54326 +                       }
54327 +               }
54328 +       }
54329 +       
54330 +       if (!port_found) {
54331 +               /* invalid WWN or PID specified */
54332 +               pext->Status = EXT_STATUS_INVALID_PARAM;
54333 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR WWPN/PID invalid.\n",
54334 +                   __func__, ha->host_no, ha->instance);)
54335 +
54336 +               goto els_passthru_done;
54337 +       }
54338 +
54339 +       /* alloc sp */
54340 +       if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
54341 +
54342 +               pext->Status = EXT_STATUS_NO_MEMORY;
54343 +               DEBUG9_10(printk("%s: ERROR cannot alloc sp %p.\n",
54344 +                   __func__, sp);)
54345 +
54346 +               goto els_passthru_done;
54347 +       }
54348 +
54349 +       DEBUG9(printk("%s(%ld): inst=%ld after alloc sp.\n",
54350 +           __func__, ha->host_no, ha->instance);)
54351 +
54352 +       /* setup sp for this command */
54353 +       ptq = ha->ioctl->ioctl_tq;
54354 +       plq = ha->ioctl->ioctl_lq;
54355 +       sp->cmd = pscsi_cmd;
54356 +       sp->flags = SRB_IOCTL;
54357 +       sp->lun_queue = plq;
54358 +       sp->tgt_queue = ptq;
54359 +       ptemp_fclun->fcport = ptemp_fcport;
54360 +       ptemp_fclun->lun = 0;
54361 +       ptemp_fclun->flags = 0;
54362 +       plq->fclun = ptemp_fclun;
54363 +       plq->fclun->fcport->ha = ha;
54364 +
54365 +       /* init scsi_cmd */
54366 +       pscsi_cmd->device->host = ha->host;
54367 +       pscsi_cmd->scsi_done = qla2x00_msiocb_done;
54368 +
54369 +       /* check on loop down (2)- check again just before sending cmd out. */
54370 +       if (ha->loop_state != LOOP_READY || 
54371 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
54372 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
54373 +           ABORTS_ACTIVE) {
54374 +
54375 +               DEBUG9_10(printk("%s(%ld): inst=%ld before issue cmd- loop "
54376 +                   "not ready.\n",
54377 +                   __func__, ha->host_no, ha->instance);)
54378 +
54379 +               pext->Status = EXT_STATUS_BUSY;
54380 +
54381 +               atomic_set(&sp->ref_count, 0);
54382 +               add_to_free_queue (ha, sp);
54383 +
54384 +               goto els_passthru_done;
54385 +       }
54386 +
54387 +       DEBUG9(printk("%s(%ld): inst=%ld going to issue command.\n",
54388 +           __func__, ha->host_no, ha->instance);)
54389 +
54390 +       tmp_rval = qla2x00_start_ms_cmd(ha, pext, sp, pels_pt_req);
54391 +
54392 +       DEBUG9(printk("%s(%ld): inst=%ld after issue command.\n",
54393 +           __func__, ha->host_no, ha->instance);)
54394 +
54395 +       if (tmp_rval != 0) {
54396 +               /* We waited and post function did not get called */
54397 +               DEBUG9_10(printk("%s(%ld): inst=%ld command timed out.\n",
54398 +                   __func__, ha->host_no, ha->instance);)
54399 +
54400 +               pext->Status = EXT_STATUS_MS_NO_RESPONSE;
54401 +
54402 +               atomic_set(&sp->ref_count, 0);
54403 +               add_to_free_queue (ha, sp);
54404 +
54405 +               goto els_passthru_done;
54406 +       }
54407 +
54408 +       /* check on data returned */
54409 +       ptmp_stat = (uint8_t *)ha->ioctl_mem + FC_HEADER_LEN;
54410 +
54411 +       if (*ptmp_stat == ELS_STAT_LS_RJT) {
54412 +               payload_len = FC_HEADER_LEN + ELS_RJT_LENGTH;
54413 +
54414 +       } else if (*ptmp_stat == ELS_STAT_LS_ACC) {
54415 +               payload_len = pext->ResponseLen - sizeof(EXT_ELS_PT_REQ);
54416 +
54417 +       } else {
54418 +               /* invalid. just copy the status word. */
54419 +               DEBUG9_10(printk("%s(%ld): inst=%ld invalid stat "
54420 +                   "returned =0x%x.\n",
54421 +                   __func__, ha->host_no, ha->instance, *ptmp_stat);)
54422 +
54423 +               payload_len = FC_HEADER_LEN + 4;
54424 +       }
54425 +
54426 +       DEBUG9(printk("%s(%ld): inst=%ld data dump-\n",
54427 +           __func__, ha->host_no, ha->instance);)
54428 +       DEBUG9(qla2x00_dump_buffer((uint8_t *)ptmp_stat,
54429 +           pext->ResponseLen - sizeof(EXT_ELS_PT_REQ) - FC_HEADER_LEN);)
54430 +       
54431 +       /* Verify response buffer to be written */
54432 +       /* The data returned include FC frame header */
54433 +       presp_payload = (uint8_t *)pext->ResponseAdr + sizeof(EXT_ELS_PT_REQ);
54434 +
54435 +       ret = verify_area(VERIFY_WRITE, (void *)presp_payload, payload_len);
54436 +       if (ret) {
54437 +               pext->Status = EXT_STATUS_COPY_ERR;
54438 +
54439 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp "
54440 +                   "buffer. ha=%p.\n",
54441 +                   __func__, ha->host_no, ha->instance, ha);)
54442 +
54443 +               goto els_passthru_done;
54444 +       }
54445 +
54446 +       /* copy back data returned to response buffer */
54447 +       ret = copy_to_user(presp_payload, (uint8_t *)ha->ioctl_mem,
54448 +           payload_len);
54449 +       if (ret) {
54450 +               pext->Status = EXT_STATUS_COPY_ERR;
54451 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
54452 +                   __func__, ha->host_no, ha->instance);)
54453 +               goto els_passthru_done;
54454 +       }
54455 +
54456 +       DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n",
54457 +           __func__, ha->host_no, ha->instance);)
54458 +
54459 +els_passthru_done:
54460 +
54461 +       qla2x00_free_ioctl_scrap_mem(ha);
54462 +       return (ret);
54463 +}
54464 +#endif
54465 +
54466 +/*
54467 + * qla2x00_send_fcct
54468 + *     Passes the FC CT command down to firmware as MSIOCB and
54469 + *     copies the response back when it completes.
54470 + *
54471 + * Input:
54472 + *     ha = adapter state pointer.
54473 + *     pext = EXT_IOCTL structure pointer.
54474 + *     mode = not used.
54475 + *
54476 + * Returns:
54477 + *     0 = success
54478 + *     others = errno value
54479 + *
54480 + * Context:
54481 + *     Kernel context.
54482 + */
54483 +static int
54484 +qla2x00_send_fcct(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
54485 +{
54486 +       int             ret = 0;
54487 +       int             tmp_rval = 0;
54488 +       uint16_t        mb[MAILBOX_REGISTER_COUNT];
54489 +
54490 +       fc_lun_t        *ptemp_fclun;
54491 +       fc_port_t       *ptemp_fcport;
54492 +
54493 +       os_lun_t        *lq;
54494 +       os_tgt_t        *tq;
54495 +
54496 +       Scsi_Cmnd       *pscsi_cmd;
54497 +       srb_t           *sp = NULL;
54498 +
54499 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
54500 +           __func__, ha->host_no, ha->instance);)
54501 +
54502 +       /* check on current topology */
54503 +       if ((ha->current_topology != ISP_CFG_F) &&
54504 +           (ha->current_topology != ISP_CFG_FL)) {
54505 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54506 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR not in F or FL mode\n",
54507 +                   __func__, ha->host_no, ha->instance);)
54508 +               return (ret);
54509 +       }
54510 +
54511 +       if (ha->ioctl_mem_size <= 0) {
54512 +               if (qla2x00_get_new_ioctl_dma_mem(ha,
54513 +                   QLA_INITIAL_IOCTLMEM_SIZE) != QL_STATUS_SUCCESS) {
54514 +
54515 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
54516 +                           "DMA buffer size=%lx.\n",
54517 +                           __func__, ha->host_no, ha->instance,
54518 +                           QLA_INITIAL_IOCTLMEM_SIZE);)
54519 +
54520 +                       pext->Status = EXT_STATUS_NO_MEMORY;
54521 +                       return (ret);
54522 +               }
54523 +       }
54524 +
54525 +       if (pext->ResponseLen > ha->ioctl_mem_size) {
54526 +               if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
54527 +                   QL_STATUS_SUCCESS) {
54528 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
54529 +                           "requested DMA buffer size %x.\n",
54530 +                           __func__, ha->host_no, ha->instance,
54531 +                           pext->ResponseLen);)
54532 +                       pext->Status = EXT_STATUS_NO_MEMORY;
54533 +                       return (ret);
54534 +               }
54535 +
54536 +               DEBUG9(printk("%s(%ld): inst=%ld rsp buf len larger than "
54537 +                   "existing size. Additional mem alloc successful.\n",
54538 +                   __func__, ha->host_no, ha->instance);)
54539 +       }
54540 +
54541 +       if (pext->RequestLen > ha->ioctl_mem_size) {
54542 +               pext->Status = EXT_STATUS_INVALID_PARAM;
54543 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR ReqLen too big=%x.\n",
54544 +                   __func__, ha->host_no, ha->instance, pext->RequestLen);)
54545 +
54546 +               return (ret);
54547 +       }
54548 +
54549 +       ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
54550 +           pext->RequestLen);
54551 +       if (ret) {
54552 +               pext->Status = EXT_STATUS_COPY_ERR;
54553 +               DEBUG9_10(printk(
54554 +                   "%s(%ld): inst=%ld ERROR verify read req buf\n",
54555 +                   __func__, ha->host_no, ha->instance);)
54556 +
54557 +               return (ret);
54558 +       }
54559 +
54560 +       DEBUG9(printk("%s(%ld): inst=%ld req buf verified.\n",
54561 +           __func__, ha->host_no, ha->instance);)
54562 +
54563 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_cmd,
54564 +           sizeof(Scsi_Cmnd))) {
54565 +               /* not enough memory */
54566 +               pext->Status = EXT_STATUS_NO_MEMORY;
54567 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54568 +                   "size requested=%d.\n",
54569 +                   __func__, ha->host_no, ha->instance,
54570 +                   sizeof(Scsi_Cmnd));)
54571 +               return (ret);
54572 +       }
54573 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptemp_fclun,
54574 +           sizeof(fc_lun_t))) {
54575 +               /* not enough memory */
54576 +               pext->Status = EXT_STATUS_NO_MEMORY;
54577 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54578 +                   "fclun size requested=%d.\n",
54579 +                   __func__, ha->host_no, ha->instance,
54580 +                   sizeof(fc_lun_t));)
54581 +               goto fcct_passthru_done;
54582 +       }
54583 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptemp_fcport,
54584 +           sizeof(fc_port_t))) {
54585 +               /* not enough memory */
54586 +               pext->Status = EXT_STATUS_NO_MEMORY;
54587 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54588 +                   "fcport size requested=%d.\n",
54589 +                   __func__, ha->host_no, ha->instance,
54590 +                   sizeof(fc_port_t));)
54591 +               goto fcct_passthru_done;
54592 +       }
54593 +
54594 +       /* initialize */
54595 +       memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
54596 +
54597 +       /* copy request buffer */
54598 +       ret = copy_from_user(ha->ioctl_mem, pext->RequestAdr, pext->RequestLen);
54599 +       if (ret) {
54600 +               pext->Status = EXT_STATUS_COPY_ERR;
54601 +               DEBUG9_10(printk(
54602 +                   "%s(%ld): inst=%ld ERROR copy req buf. ret=%d\n",
54603 +                   __func__, ha->host_no, ha->instance, ret);)
54604 +
54605 +
54606 +               goto fcct_passthru_done;
54607 +       }
54608 +
54609 +       DEBUG9(printk("%s(%ld): inst=%ld after copy request.\n",
54610 +           __func__, ha->host_no, ha->instance);)
54611 +
54612 +       /* alloc sp */
54613 +       if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
54614 +
54615 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
54616 +                   "sp %p.\n",
54617 +                   __func__, ha->host_no, ha->instance, sp);)
54618 +
54619 +               pext->Status = EXT_STATUS_NO_MEMORY;
54620 +               goto fcct_passthru_done;
54621 +       }
54622 +
54623 +       DEBUG9(printk("%s(%ld): inst=%ld after alloc sp.\n",
54624 +           __func__, ha->host_no, ha->instance);)
54625 +
54626 +       /* setup sp for this command */
54627 +       tq = ha->ioctl->ioctl_tq;
54628 +       lq = ha->ioctl->ioctl_lq;
54629 +       sp->cmd = pscsi_cmd;
54630 +       sp->flags = SRB_IOCTL;
54631 +       sp->lun_queue = lq;
54632 +       sp->tgt_queue = tq;
54633 +       ptemp_fclun->fcport = ptemp_fcport;
54634 +       ptemp_fclun->lun = 0;
54635 +       ptemp_fclun->flags = 0;
54636 +       lq->fclun = ptemp_fclun;
54637 +       lq->fclun->fcport->ha = ha;
54638 +
54639 +       /* init scsi_cmd */
54640 +       pscsi_cmd->device->host = ha->host;
54641 +       pscsi_cmd->scsi_done = qla2x00_msiocb_done;
54642 +
54643 +       /* check on management server login status */
54644 +       if (ha->flags.management_server_logged_in == 0) {
54645 +               /* login to management server device */
54646 +
54647 +               tmp_rval = qla2x00_login_fabric(ha, MANAGEMENT_SERVER,
54648 +                   0xff, 0xff, 0xfa, &mb[0], BIT_1);
54649 +
54650 +               if (tmp_rval != 0 || mb[0] != 0x4000) {
54651 +                       pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54652 +
54653 +                       DEBUG10(printk("%s(%ld): inst=%ld ERROR login to MS.\n",
54654 +                           __func__, ha->host_no, ha->instance);)
54655 +
54656 +                       atomic_set(&sp->ref_count, 0);
54657 +                       add_to_free_queue (ha, sp);
54658 +
54659 +                       goto fcct_passthru_done;
54660 +               }
54661 +
54662 +               ha->flags.management_server_logged_in = 1;
54663 +       }
54664 +
54665 +       DEBUG9(printk("%s(%ld): success login to MS.\n",
54666 +           __func__, ha->host_no);)
54667 +
54668 +       /* check on loop down */
54669 +       if (ha->loop_state != LOOP_READY || 
54670 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
54671 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
54672 +           ABORTS_ACTIVE) {
54673 +
54674 +               DEBUG10(printk("%s(%ld): inst=%ld loop not ready.\n",
54675 +                   __func__, ha->host_no, ha->instance);)
54676 +
54677 +               pext->Status = EXT_STATUS_BUSY;
54678 +
54679 +               atomic_set(&sp->ref_count, 0);
54680 +               add_to_free_queue (ha, sp);
54681 +
54682 +               goto fcct_passthru_done;
54683 +       }
54684 +
54685 +       DEBUG9(printk("%s(%ld): inst=%ld going to issue command.\n",
54686 +           __func__, ha->host_no, ha->instance);)
54687 +
54688 +       tmp_rval = qla2x00_start_ms_cmd(ha, pext, sp, NULL);
54689 +
54690 +       DEBUG9(printk("%s(%ld): inst=%ld after issue command.\n",
54691 +           __func__, ha->host_no, ha->instance);)
54692 +
54693 +       if (tmp_rval != 0) {
54694 +               /* We waited and post function did not get called */
54695 +               DEBUG9_10(printk("%s(%ld): inst=%ld command timed out.\n",
54696 +                   __func__, ha->host_no, ha->instance);)
54697 +               pext->Status = EXT_STATUS_MS_NO_RESPONSE;
54698 +               atomic_set(&sp->ref_count, 0);
54699 +               add_to_free_queue (ha, sp);
54700 +
54701 +               goto fcct_passthru_done;
54702 +       }
54703 +
54704 +       if (CMD_COMPL_STATUS(pscsi_cmd) != 0 ||
54705 +           CMD_ENTRY_STATUS(pscsi_cmd) != 0) {
54706 +               DEBUG9_10(printk("%s(%ld): inst=%ld cmd returned error=%x.\n",
54707 +                   __func__, ha->host_no, ha->instance,
54708 +                   CMD_COMPL_STATUS(pscsi_cmd));)
54709 +               pext->Status = EXT_STATUS_ERR;
54710 +               goto fcct_passthru_done;
54711 +       }
54712 +
54713 +       /* getting device data and putting in pext->ResponseAdr */
54714 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
54715 +           pext->ResponseLen);
54716 +       if (ret) {
54717 +               pext->Status = EXT_STATUS_COPY_ERR;
54718 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp "
54719 +                   "buffer. ha=%p.\n",
54720 +                   __func__, ha->host_no, ha->instance, ha);)
54721 +               goto fcct_passthru_done;
54722 +       }
54723 +
54724 +       /* sending back data returned from Management Server */
54725 +       ret = copy_to_user((uint8_t *)pext->ResponseAdr,
54726 +           (uint8_t *)ha->ioctl_mem, pext->ResponseLen);
54727 +       if (ret) {
54728 +               pext->Status = EXT_STATUS_COPY_ERR;
54729 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
54730 +                   __func__, ha->host_no, ha->instance);)
54731 +               goto fcct_passthru_done;
54732 +       }
54733 +
54734 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
54735 +           __func__, ha->host_no, ha->instance);)
54736 +
54737 +fcct_passthru_done:
54738 +
54739 +       qla2x00_free_ioctl_scrap_mem(ha);
54740 +       return (ret);
54741 +}
54742 +
54743 +/*
54744 + * qla2x00_start_ms_cmd
54745 + *     Allocates an MSIOCB request pkt and sends out the passthru cmd.
54746 + *
54747 + * Input:
54748 + *     ha = adapter state pointer.
54749 + *
54750 + * Returns:
54751 + *     qla2x00 local function return status code.
54752 + *
54753 + * Context:
54754 + *     Kernel context.
54755 + */
54756 +static int
54757 +qla2x00_start_ms_cmd(scsi_qla_host_t *ha, EXT_IOCTL *pext, srb_t *sp,
54758 +    EXT_ELS_PT_REQ *pels_pt_req)
54759 +{
54760 +#define        ELS_REQUEST_RCTL        0x22
54761 +#define ELS_REPLY_RCTL         0x23
54762 +
54763 +       uint32_t        usr_req_len;
54764 +       uint32_t        usr_resp_len;
54765 +       uint64_t        usr_reqbuf_addr;
54766 +
54767 +       ms_iocb_entry_t         *pkt;
54768 +       unsigned long           cpu_flags = 0;
54769 +
54770 +
54771 +       /* get spin lock for this operation */
54772 +       spin_lock_irqsave(&ha->hardware_lock, cpu_flags);
54773 +
54774 +       /* Get MS request packet. */
54775 +       pkt = (ms_iocb_entry_t *)qla2x00_ms_req_pkt(ha, sp);
54776 +       if (pkt == NULL) {
54777 +               /* release spin lock and return error. */
54778 +               spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
54779 +
54780 +               pext->Status = EXT_STATUS_NO_MEMORY;
54781 +               DEBUG10(printk("%s(%ld): inst=%ld MSIOCB PT - could not get "
54782 +                   "Request Packet.\n", __func__, ha->host_no, ha->instance);)
54783 +               return (QL_STATUS_RESOURCE_ERROR);
54784 +       }
54785 +
54786 +       pkt->entry_type  = MS_IOCB_TYPE;
54787 +       pkt->entry_count = 1;
54788 +       
54789 +       if (pels_pt_req != NULL) {
54790 +               /* process ELS passthru command */
54791 +               usr_reqbuf_addr = (uint64_t)ha->ioctl_mem_phys +
54792 +                   sizeof(EXT_ELS_PT_REQ);
54793 +               usr_req_len = pext->RequestLen - sizeof(EXT_ELS_PT_REQ);
54794 +               usr_resp_len = pext->ResponseLen - sizeof(EXT_ELS_PT_REQ);
54795 +       
54796 +               pkt->control_flags = BIT_15; /* ELS passthru enabled */
54797 +               pkt->loop_id = pels_pt_req->Lid;
54798 +               pkt->type    = 1; /* ELS frame */
54799 +               
54800 +               if (pext->ResponseLen != 0) {
54801 +                       pkt->r_ctl    = ELS_REQUEST_RCTL;
54802 +                       pkt->rx_id    = 0;
54803 +               } else {
54804 +                       pkt->r_ctl    = ELS_REPLY_RCTL;
54805 +                       pkt->rx_id    = pels_pt_req->Rxid;
54806 +               }
54807 +       } else {
54808 +               usr_reqbuf_addr = (uint64_t)ha->ioctl_mem_phys;
54809 +               usr_req_len = pext->RequestLen;
54810 +               usr_resp_len = pext->ResponseLen;
54811 +               pkt->loop_id     = MANAGEMENT_SERVER;
54812 +       }
54813 +
54814 +       DEBUG9_10(printk("%s(%ld): inst=%ld using loop_id=%02x req_len=%d, "
54815 +           "resp_len=%d.\n", __func__, ha->host_no, ha->instance,
54816 +           pkt->loop_id, usr_req_len, usr_resp_len);)
54817 +
54818 +       pkt->timeout = QLA_PT_CMD_TOV;
54819 +       pkt->cmd_dsd_count = 1;
54820 +       pkt->total_dsd_count = 2; /* no continuation */
54821 +       pkt->rsp_bytecount = usr_resp_len;
54822 +       pkt->req_bytecount = usr_req_len;
54823 +
54824 +       /* loading command payload address */
54825 +       pkt->dseg_req_address[0] = LSD(usr_reqbuf_addr);
54826 +       pkt->dseg_req_address[1] = MSD(usr_reqbuf_addr);
54827 +       pkt->dseg_req_length = usr_req_len;
54828 +
54829 +       /* loading response payload address */
54830 +       pkt->dseg_rsp_address[0] = LSD(ha->ioctl_mem_phys);
54831 +       pkt->dseg_rsp_address[1] = MSD(ha->ioctl_mem_phys);
54832 +       pkt->dseg_rsp_length = usr_resp_len;
54833 +
54834 +       /* set flag to indicate IOCTL MSIOCB cmd in progress */
54835 +       ha->ioctl->MSIOCB_InProgress = 1;
54836 +       ha->ioctl->ioctl_tov = pkt->timeout + 1; /* 1 second more */
54837 +
54838 +       /* prepare for receiving completion. */
54839 +       qla2x00_ioctl_sem_init(ha);
54840 +
54841 +       /* Issue command to ISP */
54842 +       qla2x00_isp_cmd(ha);
54843 +
54844 +       ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ;
54845 +       add_timer(&ha->ioctl->cmpl_timer);
54846 +
54847 +       DEBUG9(printk("%s(%ld): inst=%ld releasing hardware_lock.\n",
54848 +           __func__, ha->host_no, ha->instance);)
54849 +       spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
54850 +
54851 +       DEBUG9(printk("%s(%ld): inst=%ld sleep for completion.\n",
54852 +           __func__, ha->host_no, ha->instance);)
54853 +
54854 +       down(&ha->ioctl->cmpl_sem);
54855 +
54856 +       del_timer(&ha->ioctl->cmpl_timer);
54857 +
54858 +       if (ha->ioctl->MSIOCB_InProgress == 1) {
54859 +               DEBUG9_10(printk("%s(%ld): inst=%ld timed out. exiting.\n",
54860 +                   __func__, ha->host_no, ha->instance);)
54861 +               return QL_STATUS_ERROR;
54862 +       }
54863 +
54864 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
54865 +           __func__, ha->host_no, ha->instance);)
54866 +
54867 +       return QL_STATUS_SUCCESS;
54868 +}
54869 +
54870 +/*
54871 + * qla2x00_wwpn_to_scsiaddr
54872 + *     Handles the EXT_CC_WWPN_TO_SCSIADDR command.
54873 + *
54874 + * Input:
54875 + *     ha = adapter state pointer.
54876 + *     pext = EXT_IOCTL structure pointer.
54877 + *     mode = not used.
54878 + *
54879 + * Returns:
54880 + *     0 = success
54881 + *     others = errno value
54882 + *
54883 + * Context:
54884 + *     Kernel context.
54885 + */
54886 +static int
54887 +qla2x00_wwpn_to_scsiaddr(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
54888 +{
54889 +       int             ret = 0;
54890 +       fc_port_t       *tgt_fcport;
54891 +       os_tgt_t        *tq;
54892 +       uint8_t         tmp_wwpn[EXT_DEF_WWN_NAME_SIZE];
54893 +       uint32_t        b, tgt, l;
54894 +       EXT_SCSI_ADDR   tmp_addr;
54895 +
54896 +
54897 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
54898 +           __func__, ha->host_no, ha->instance);)
54899 +
54900 +       if (pext->RequestLen != EXT_DEF_WWN_NAME_SIZE ||
54901 +           pext->ResponseLen < sizeof(EXT_SCSI_ADDR)) {
54902 +               /* error */
54903 +               DEBUG9_10(printk("%s(%ld): inst=%ld invalid WWN buffer size %d "
54904 +                   "received.\n",
54905 +                   __func__, ha->host_no, ha->instance, pext->ResponseLen);)
54906 +               pext->Status = EXT_STATUS_INVALID_PARAM;
54907 +
54908 +               return (ret);
54909 +       }
54910 +
54911 +       ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
54912 +           pext->RequestLen);
54913 +       if (ret) {
54914 +               DEBUG9_10(printk(
54915 +                   "%s(%ld): inst=%ld ERROR VERIFY_READ req buf\n",
54916 +                   __func__, ha->host_no, ha->instance);)
54917 +               pext->Status = EXT_STATUS_COPY_ERR;
54918 +               return (ret);
54919 +       }
54920 +
54921 +       ret = copy_from_user(tmp_wwpn, pext->RequestAdr, pext->RequestLen);
54922 +       if (ret) {
54923 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy_from_user "
54924 +                   "failed(%d) on request buf.\n",
54925 +                   __func__, ha->host_no, ha->instance, ret);)
54926 +               pext->Status = EXT_STATUS_COPY_ERR;
54927 +               return (ret);
54928 +       }
54929 +
54930 +       tq = NULL;
54931 +       for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
54932 +               if (ha->otgt[tgt] == NULL) {
54933 +                       continue;
54934 +               }
54935 +
54936 +               tq = ha->otgt[tgt];
54937 +               if (tq->vis_port == NULL) {
54938 +                       break;
54939 +               }
54940 +
54941 +               tgt_fcport = tq->vis_port;
54942 +               if (memcmp(tmp_wwpn, tgt_fcport->port_name,
54943 +                   EXT_DEF_WWN_NAME_SIZE) == 0) {
54944 +                       break;
54945 +               }
54946 +       }
54947 +
54948 +       if (tq == NULL || tgt >= MAX_TARGETS) {
54949 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54950 +               DEBUG9_10(printk("%s(%ld): inst=%ld target dev not found. "
54951 +                   "tq=%p, tgt=%x.\n", __func__, ha->host_no, ha->instance,
54952 +                   tq, tgt);)
54953 +               return (ret);
54954 +       }
54955 +
54956 +       if (tq->vis_port == NULL) {     /* dg 08/14/01 */
54957 +               pext->Status = EXT_STATUS_BUSY;
54958 +               DEBUG9_10(printk("%s(%ld): inst=%ld target port not found. "
54959 +                   "tq=%p, tgt=%x.\n",
54960 +                   __func__, ha->host_no, ha->instance, tq, tgt);)
54961 +               return (ret);
54962 +       }       
54963 +
54964 +       /* Currently we only have bus 0 and no translation on LUN */
54965 +       b = 0;
54966 +       l = 0;
54967 +
54968 +       /*
54969 +        * Return SCSI address. Currently no translation is done for
54970 +        * LUN.
54971 +        */
54972 +       tmp_addr.Bus = b;
54973 +       tmp_addr.Target = tgt;
54974 +       tmp_addr.Lun = l;
54975 +       if (pext->ResponseLen > sizeof(EXT_SCSI_ADDR))
54976 +               pext->ResponseLen = sizeof(EXT_SCSI_ADDR);
54977 +
54978 +       ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
54979 +           pext->ResponseLen);
54980 +       if (ret) {
54981 +               pext->Status = EXT_STATUS_COPY_ERR;
54982 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY wrt rsp buf\n",
54983 +                   __func__, ha->host_no, ha->instance);)
54984 +               return (ret);
54985 +       }
54986 +
54987 +       ret = copy_to_user((uint8_t *)pext->ResponseAdr, &tmp_addr,
54988 +           pext->ResponseLen);
54989 +       if (ret) {
54990 +               pext->Status = EXT_STATUS_COPY_ERR;
54991 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
54992 +                   __func__, ha->host_no, ha->instance);)
54993 +               return (ret);
54994 +       }
54995 +
54996 +       DEBUG9(printk(KERN_INFO
54997 +           "%s(%ld): Found t%d l%d for %02x%02x%02x%02x%02x%02x%02x%02x.\n",
54998 +           __func__, ha->host_no,
54999 +           tmp_addr.Target, tmp_addr.Lun,
55000 +           tmp_wwpn[0], tmp_wwpn[1], tmp_wwpn[2], tmp_wwpn[3],
55001 +           tmp_wwpn[4], tmp_wwpn[5], tmp_wwpn[6], tmp_wwpn[7]);)
55002 +
55003 +       pext->Status = EXT_STATUS_OK;
55004 +
55005 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
55006 +           __func__, ha->host_no, ha->instance);)
55007 +
55008 +       return (ret);
55009 +}
55010 +
55011 +/*
55012 + * qla2x00_scsi_passthru
55013 + *     Handles all subcommands of the EXT_CC_SEND_SCSI_PASSTHRU command.
55014 + *
55015 + * Input:
55016 + *     ha = adapter state pointer.
55017 + *     pext = EXT_IOCTL structure pointer.
55018 + *     mode = not used.
55019 + *
55020 + * Returns:
55021 + *     0 = success
55022 + *     others = errno value
55023 + *
55024 + * Context:
55025 + *     Kernel context.
55026 + */
55027 +static int
55028 +qla2x00_scsi_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
55029 +{
55030 +       int tmp_rval = 0;
55031 +
55032 +       switch(pext->SubCode) {
55033 +       case EXT_SC_SEND_SCSI_PASSTHRU:
55034 +               tmp_rval = qla2x00_sc_scsi_passthru(ha, pext, mode);
55035 +               break;
55036 +       case EXT_SC_SEND_FC_SCSI_PASSTHRU:
55037 +               tmp_rval = qla2x00_sc_fc_scsi_passthru(ha, pext, mode);
55038 +               break;
55039 +       case EXT_SC_SCSI3_PASSTHRU:
55040 +               tmp_rval = qla2x00_sc_scsi3_passthru(ha, pext, mode);
55041 +               break;
55042 +       default:
55043 +               break;
55044 +       }
55045 +
55046 +       return tmp_rval;
55047 +}
55048 +
55049 +/*
55050 + * qla2x00_sc_scsi_passthru
55051 + *     Handles EXT_SC_SEND_SCSI_PASSTHRU subcommand.
55052 + *
55053 + * Input:
55054 + *     ha = adapter state pointer.
55055 + *     pext = EXT_IOCTL structure pointer.
55056 + *     mode = not used.
55057 + *
55058 + * Returns:
55059 + *     0 = success
55060 + *     others = errno value
55061 + *
55062 + * Context:
55063 + *     Kernel context.
55064 + */
55065 +static int
55066 +qla2x00_sc_scsi_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
55067 +{
55068 +       int             ret = 0;
55069 +       uint8_t         *usr_temp, *kernel_tmp;
55070 +       uint8_t         scsi_direction;
55071 +       uint32_t        i;
55072 +
55073 +#if defined(QL_DEBUG_LEVEL_9)
55074 +       uint32_t        b, t, l;
55075 +#endif
55076 +       uint32_t        transfer_len;
55077 +
55078 +       EXT_SCSI_PASSTHRU       *pscsi_pass;
55079 +
55080 +       Scsi_Cmnd               *pscsi_cmd;
55081 +       Scsi_Device             *pscsi_device;
55082 +
55083 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
55084 +           __func__, ha->host_no, ha->instance);)
55085 +
55086 +       ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
55087 +           sizeof(EXT_SCSI_PASSTHRU));
55088 +       if (ret) {
55089 +               pext->Status = EXT_STATUS_COPY_ERR;
55090 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify READ "
55091 +                   "req buf.\n",
55092 +                   __func__, ha->host_no, ha->instance);)
55093 +               return (ret);
55094 +       }
55095 +
55096 +       if (pext->ResponseLen > ha->ioctl_mem_size) {
55097 +               if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
55098 +                   QL_STATUS_SUCCESS) {
55099 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
55100 +                           "requested DMA buffer size %x.\n",
55101 +                           __func__, ha->host_no, ha->instance,
55102 +                           pext->ResponseLen);)
55103 +                       pext->Status = EXT_STATUS_NO_MEMORY;
55104 +                       return (ret);
55105 +               }
55106 +       }
55107 +
55108 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_pass,
55109 +           sizeof(EXT_SCSI_PASSTHRU))) {
55110 +               /* not enough memory */
55111 +               pext->Status = EXT_STATUS_NO_MEMORY;
55112 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55113 +                   "size requested=%d.\n",
55114 +                   __func__, ha->host_no, ha->instance,
55115 +                   sizeof(EXT_SCSI_PASSTHRU));)
55116 +               return (ret);
55117 +       }
55118 +
55119 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_cmd,
55120 +           sizeof(Scsi_Cmnd))) {
55121 +               /* not enough memory */
55122 +               pext->Status = EXT_STATUS_NO_MEMORY;
55123 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55124 +                   "pscsi_cmd requested=%d.\n",
55125 +                   __func__, ha->host_no, ha->instance,
55126 +                   sizeof(Scsi_Cmnd));)
55127 +               goto scsi_passthru_done;
55128 +       }
55129 +
55130 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_device,
55131 +           sizeof(Scsi_Device))) {
55132 +               /* not enough memory */
55133 +               pext->Status = EXT_STATUS_NO_MEMORY;
55134 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55135 +                   "pscsi_device requested=%d.\n",
55136 +                   __func__, ha->host_no, ha->instance,
55137 +                   sizeof(Scsi_Device));)
55138 +               goto scsi_passthru_done;
55139 +       }
55140 +
55141 +       /* clear ioctl_mem to be used */
55142 +       memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
55143 +
55144 +       /* Copy request buffer */
55145 +       usr_temp = (uint8_t *)pext->RequestAdr;
55146 +       kernel_tmp = (uint8_t *)pscsi_pass;
55147 +       ret = copy_from_user(kernel_tmp, usr_temp, sizeof(EXT_SCSI_PASSTHRU));
55148 +       if (ret) {
55149 +               pext->Status = EXT_STATUS_COPY_ERR;
55150 +               DEBUG9_10(printk(
55151 +                   "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
55152 +                   __func__, ha->host_no, ha->instance, ret);)
55153 +               goto scsi_passthru_done;
55154 +       }
55155 +
55156 +       /* set target coordinates */
55157 +       pscsi_cmd->device->id = pscsi_pass->TargetAddr.Target;
55158 +       pscsi_cmd->device->lun = pscsi_pass->TargetAddr.Lun;
55159 +
55160 +       /* Verify target exists */
55161 +       if (TGT_Q(ha, pscsi_cmd->device->id) == NULL) {
55162 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55163 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR tgt %d not found.\n",
55164 +                   __func__,
55165 +                   ha->host_no, ha->instance, pscsi_cmd->device->id));
55166 +               goto scsi_passthru_done;
55167 +       }
55168 +
55169 +       /* Copy over cdb */
55170 +
55171 +       if (pscsi_pass->CdbLength == 6) {
55172 +               pscsi_cmd->cmd_len = 6;
55173 +
55174 +       } else if (pscsi_pass->CdbLength == 10) {
55175 +               pscsi_cmd->cmd_len = 0x0A;
55176 +
55177 +       } else if (pscsi_pass->CdbLength == 12) {
55178 +               pscsi_cmd->cmd_len = 0x0C;
55179 +
55180 +       } else {
55181 +               printk(KERN_WARNING
55182 +                   "%s: Unsupported Cdb Length=%x.\n",
55183 +                   __func__, pscsi_pass->CdbLength);
55184 +
55185 +               pext->Status = EXT_STATUS_INVALID_PARAM;
55186 +               goto scsi_passthru_done;
55187 +       }
55188 +
55189 +       memcpy(pscsi_cmd->data_cmnd, pscsi_pass->Cdb, pscsi_cmd->cmd_len);
55190 +       memcpy(pscsi_cmd->cmnd, pscsi_pass->Cdb, pscsi_cmd->cmd_len);
55191 +
55192 +       DEBUG9(printk("%s Dump of cdb buffer:\n", __func__);)
55193 +       DEBUG9(qla2x00_dump_buffer((uint8_t *)&pscsi_cmd->data_cmnd[0],
55194 +           pscsi_cmd->cmd_len);)
55195 +
55196 +       pscsi_cmd->device->host = ha->host;
55197 +
55198 +       /* mark this as a special delivery and collection command */
55199 +       pscsi_cmd->flags     = 0;
55200 +       pscsi_cmd->scsi_done = qla2x00_scsi_pt_done;
55201 +
55202 +       pscsi_cmd->device               = pscsi_device;
55203 +       pscsi_cmd->device->tagged_queue = 0;
55204 +       pscsi_cmd->use_sg               = 0; /* no ScatterGather */
55205 +       pscsi_cmd->request_bufflen      = pext->ResponseLen;
55206 +       pscsi_cmd->request_buffer       = ha->ioctl_mem;
55207 +       pscsi_cmd->timeout_per_command  = QLA_PT_CMD_TOV * HZ;
55208 +       CMD_RESID_LEN(pscsi_cmd) = SRB_IOCTL; /* Used to set sp->flags later */
55209 +
55210 +       if (pscsi_pass->Direction == EXT_DEF_SCSI_PASSTHRU_DATA_OUT) {
55211 +               /* sending user data from pext->ResponseAdr to device */
55212 +               ret = verify_area(VERIFY_READ, (void *)pext->ResponseAdr,
55213 +                   pext->ResponseLen);
55214 +               if (ret) {
55215 +                       pext->Status = EXT_STATUS_COPY_ERR;
55216 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify READ "
55217 +                           "rsp buf.\n", __func__, ha->host_no, ha->instance);)
55218 +                       goto scsi_passthru_done;
55219 +               }
55220 +
55221 +               pscsi_cmd->sc_data_direction = SCSI_DATA_WRITE;
55222 +               usr_temp   = (uint8_t *)pext->ResponseAdr;
55223 +               kernel_tmp = (uint8_t *)ha->ioctl_mem;
55224 +               ret = copy_from_user(kernel_tmp, usr_temp, pext->ResponseLen);
55225 +               if (ret) {
55226 +                       pext->Status = EXT_STATUS_COPY_ERR;
55227 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buf "
55228 +                           "failed(%d).\n",
55229 +                           __func__, ha->host_no, ha->instance, ret);)
55230 +                       goto scsi_passthru_done;
55231 +               }
55232 +       } else {
55233 +               pscsi_cmd->sc_data_direction = SCSI_DATA_READ;
55234 +       }
55235 +
55236 +       DEBUG9({
55237 +               b = SCSI_BUS_32(pscsi_cmd);
55238 +               t = SCSI_TCN_32(pscsi_cmd);
55239 +               l = SCSI_LUN_32(pscsi_cmd);
55240 +       })
55241 +       DEBUG9(printk("%s(%ld): CDB=%02x %02x %02x %02x; b=%x t=%x l=%x.\n",
55242 +           __func__, ha->host_no, pscsi_cmd->cmnd[0], pscsi_cmd->cmnd[1],
55243 +           pscsi_cmd->cmnd[2], pscsi_cmd->cmnd[3], b, t, l);)
55244 +
55245 +       /*
55246 +        * Check the status of the port
55247 +        */
55248 +       if (qla2x00_check_tgt_status(ha, pscsi_cmd) != QL_STATUS_SUCCESS) {
55249 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55250 +               DEBUG9_10(printk("%s(%ld): inst=%ld check_tgt_status "
55251 +                   "failed.\n",
55252 +                   __func__, ha->host_no, ha->instance);)
55253 +               goto scsi_passthru_done;
55254 +       }
55255 +
55256 +       /* set flag to indicate IOCTL SCSI PassThru in progress */
55257 +       ha->ioctl->SCSIPT_InProgress = 1;
55258 +       ha->ioctl->ioctl_tov = (int)QLA_PT_CMD_DRV_TOV;
55259 +
55260 +       /* prepare for receiving completion. */
55261 +       qla2x00_ioctl_sem_init(ha);
55262 +       CMD_COMPL_STATUS(pscsi_cmd) = (int) IOCTL_INVALID_STATUS;
55263 +
55264 +       /* send command to adapter */
55265 +       DEBUG9(printk("%s(%ld): inst=%ld sending command.\n",
55266 +           __func__, ha->host_no, ha->instance);)
55267 +
55268 +       /* get spin lock for this operation */
55269 +       spin_lock_irqsave(ha->host->host_lock, ha->cpu_flags);
55270 +
55271 +       qla2x00_queuecommand(pscsi_cmd, (void *) qla2x00_scsi_pt_done);
55272 +
55273 +       ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ;
55274 +       add_timer(&ha->ioctl->cmpl_timer);
55275 +
55276 +       spin_unlock_irqrestore(ha->host->host_lock, ha->cpu_flags);
55277 +
55278 +       DEBUG9(printk("%s(%ld): inst=%ld waiting for completion.\n",
55279 +           __func__, ha->host_no, ha->instance);)
55280 +
55281 +       down(&ha->ioctl->cmpl_sem);
55282 +
55283 +       del_timer(&ha->ioctl->cmpl_timer);
55284 +
55285 +       DEBUG9(printk("%s(%ld): inst=%ld completed.\n",
55286 +           __func__, ha->host_no, ha->instance);)
55287 +
55288 +       if (ha->ioctl->SCSIPT_InProgress == 1) {
55289 +
55290 +               printk(KERN_WARNING
55291 +                   "qla2x00: scsi%ld ERROR passthru command timeout.\n",
55292 +                   ha->host_no);
55293 +
55294 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55295 +               goto scsi_passthru_done;
55296 +       }
55297 +
55298 +       if (CMD_COMPL_STATUS(pscsi_cmd) == (int)IOCTL_INVALID_STATUS) {
55299 +
55300 +               DEBUG9(printk("%s(%ld): inst=%ld ERROR - cmd not completed.\n",
55301 +                   __func__, ha->host_no, ha->instance);)
55302 +
55303 +               pext->Status = EXT_STATUS_ERR;
55304 +               goto scsi_passthru_done;
55305 +       }
55306 +
55307 +       switch (CMD_COMPL_STATUS(pscsi_cmd)) {
55308 +       case CS_INCOMPLETE:
55309 +       case CS_ABORTED:
55310 +       case CS_PORT_UNAVAILABLE:
55311 +       case CS_PORT_LOGGED_OUT:
55312 +       case CS_PORT_CONFIG_CHG:
55313 +       case CS_PORT_BUSY:
55314 +               DEBUG9_10(printk("%s(%ld): inst=%ld cs err = %x.\n",
55315 +                   __func__, ha->host_no, ha->instance,
55316 +                   CMD_COMPL_STATUS(pscsi_cmd));)
55317 +               pext->Status = EXT_STATUS_BUSY;
55318 +
55319 +               goto scsi_passthru_done;
55320 +       }
55321 +
55322 +       if ((CMD_COMPL_STATUS(pscsi_cmd) == CS_DATA_UNDERRUN) ||
55323 +           (CMD_SCSI_STATUS(pscsi_cmd) != 0)) {
55324 +
55325 +               /* have done the post function */
55326 +               pext->Status       = EXT_STATUS_SCSI_STATUS;
55327 +               pext->DetailStatus = CMD_SCSI_STATUS(pscsi_cmd) & 0xff;
55328 +               DEBUG9_10(printk("%s(%ld): inst=%ld data underrun or scsi err. "
55329 +                   "host status =0x%x, scsi status = 0x%x.\n",
55330 +                   __func__, ha->host_no, ha->instance,
55331 +                   CMD_COMPL_STATUS(pscsi_cmd), CMD_SCSI_STATUS(pscsi_cmd));)
55332 +
55333 +       } else if (CMD_COMPL_STATUS(pscsi_cmd) != 0) {
55334 +               DEBUG9_10(printk("%s(%ld): inst=%ld cs err=%x.\n",
55335 +                   __func__, ha->host_no, ha->instance,
55336 +                   CMD_COMPL_STATUS(pscsi_cmd));)
55337 +               pext->Status = EXT_STATUS_ERR;
55338 +               goto scsi_passthru_done;
55339 +       }
55340 +
55341 +       /* copy up structure to make sense data available to user */
55342 +       pscsi_pass->SenseLength = CMD_ACTUAL_SNSLEN(pscsi_cmd);
55343 +       if (CMD_ACTUAL_SNSLEN(pscsi_cmd)) {
55344 +               for (i = 0; i < CMD_ACTUAL_SNSLEN(pscsi_cmd); i++)
55345 +                       pscsi_pass->SenseData[i] = pscsi_cmd->sense_buffer[i];
55346 +
55347 +               DEBUG10(printk("%s Dump of sense buffer:\n", __func__);)
55348 +               DEBUG10(qla2x00_dump_buffer(
55349 +                   (uint8_t *)&pscsi_pass->SenseData[0],
55350 +                   CMD_ACTUAL_SNSLEN(pscsi_cmd));)
55351 +
55352 +               ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr,
55353 +                   sizeof(EXT_SCSI_PASSTHRU));
55354 +               if (ret) {
55355 +                       pext->Status = EXT_STATUS_COPY_ERR;
55356 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE "
55357 +                           "req buf.\n", __func__, ha->host_no, ha->instance);)
55358 +                       goto scsi_passthru_done;
55359 +               }
55360 +
55361 +               usr_temp   = (uint8_t *)pext->RequestAdr;
55362 +               kernel_tmp = (uint8_t *)pscsi_pass;
55363 +               ret = copy_to_user(usr_temp, kernel_tmp,
55364 +                   sizeof(EXT_SCSI_PASSTHRU));
55365 +               if (ret) {
55366 +                       pext->Status = EXT_STATUS_COPY_ERR;
55367 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy sense "
55368 +                           "buffer.\n",
55369 +                           __func__, ha->host_no, ha->instance);)
55370 +                       goto scsi_passthru_done;
55371 +               }
55372 +       }
55373 +
55374 +       scsi_direction = pscsi_pass->Direction;
55375 +
55376 +       if (scsi_direction == EXT_DEF_SCSI_PASSTHRU_DATA_IN) {
55377 +               DEBUG9(printk("%s(%ld): inst=%ld copying data.\n",
55378 +                   __func__, ha->host_no, ha->instance);)
55379 +
55380 +               /* getting device data and putting in pext->ResponseAdr */
55381 +               ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
55382 +                   pext->ResponseLen);
55383 +               if (ret) {
55384 +                       pext->Status = EXT_STATUS_COPY_ERR;
55385 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write "
55386 +                           "ResponseAdr.\n",
55387 +                           __func__, ha->host_no, ha->instance);)
55388 +                       goto scsi_passthru_done;
55389 +               }
55390 +
55391 +               /* now copy up the READ data to user */
55392 +               if ((CMD_COMPL_STATUS(pscsi_cmd) == CS_DATA_UNDERRUN) &&
55393 +                   (CMD_RESID_LEN(pscsi_cmd))) {
55394 +
55395 +                       transfer_len = pext->ResponseLen -
55396 +                           CMD_RESID_LEN(pscsi_cmd);
55397 +
55398 +                       pext->ResponseLen = transfer_len;
55399 +               } else {
55400 +                       transfer_len = pext->ResponseLen;
55401 +               }
55402 +
55403 +               usr_temp   = (uint8_t *)pext->ResponseAdr;
55404 +               kernel_tmp = (uint8_t *)ha->ioctl_mem;
55405 +               ret = copy_to_user(usr_temp, kernel_tmp, transfer_len);
55406 +               if (ret) {
55407 +                       pext->Status = EXT_STATUS_COPY_ERR;
55408 +                       DEBUG9_10(printk(
55409 +                           "%s(%ld): inst=%ld ERROR copy rsp buf\n",
55410 +                           __func__, ha->host_no, ha->instance);)
55411 +                       goto scsi_passthru_done;
55412 +               }
55413 +       }
55414 +
55415 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
55416 +           __func__, ha->host_no, ha->instance);)
55417 +
55418 +scsi_passthru_done:
55419 +
55420 +       qla2x00_free_ioctl_scrap_mem(ha);
55421 +       return (ret);
55422 +}
55423 +
55424 +/*
55425 + * qla2x00_sc_fc_scsi_passthru
55426 + *     Handles EXT_SC_SEND_FC_SCSI_PASSTHRU subcommand.
55427 + *
55428 + * Input:
55429 + *     ha = adapter state pointer.
55430 + *     pext = EXT_IOCTL structure pointer.
55431 + *     mode = not used.
55432 + *
55433 + * Returns:
55434 + *     0 = success
55435 + *     others = errno value
55436 + *
55437 + * Context:
55438 + *     Kernel context.
55439 + */
55440 +static int
55441 +qla2x00_sc_fc_scsi_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
55442 +{
55443 +       int                     ret = 0;
55444 +       int                     port_found, lun_found;
55445 +       fc_lun_t                temp_fclun;
55446 +       struct list_head        *fcpl;
55447 +       fc_port_t               *fcport;
55448 +       struct list_head        *fcll;
55449 +       fc_lun_t                *fclun = NULL;
55450 +       os_lun_t                *lq;
55451 +       os_tgt_t                *tq;
55452 +       srb_t                   *sp = NULL;
55453 +       uint8_t                 *usr_temp, *kernel_tmp;
55454 +       uint32_t                i;
55455 +
55456 +#if defined(QL_DEBUG_LEVEL_9)
55457 +       uint32_t                b, t, l;
55458 +#endif
55459 +       uint32_t                transfer_len;
55460 +       uint8_t                 scsi_direction;
55461 +
55462 +       EXT_FC_SCSI_PASSTHRU    *pfc_scsi_pass;
55463 +
55464 +       Scsi_Cmnd               *pfc_scsi_cmd;
55465 +       Scsi_Device             *pfc_scsi_device;
55466 +
55467 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
55468 +           __func__, ha->host_no, ha->instance);)
55469 +
55470 +       if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
55471 +
55472 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc sp.\n",
55473 +                   __func__, ha->host_no, ha->instance);)
55474 +
55475 +               pext->Status = EXT_STATUS_NO_MEMORY;
55476 +               return (ret);
55477 +       }
55478 +
55479 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi_pass,
55480 +           sizeof(EXT_FC_SCSI_PASSTHRU))) {
55481 +               /* not enough memory */
55482 +               pext->Status = EXT_STATUS_NO_MEMORY;
55483 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55484 +                   "size requested=%d.\n",
55485 +                   __func__, ha->host_no, ha->instance,
55486 +                   sizeof(EXT_FC_SCSI_PASSTHRU));)
55487 +               return (ret);
55488 +       }
55489 +
55490 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi_cmd,
55491 +           sizeof(Scsi_Cmnd))) {
55492 +               /* not enough memory */
55493 +               pext->Status = EXT_STATUS_NO_MEMORY;
55494 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55495 +                   "size requested=%d.\n",
55496 +                   __func__, ha->host_no, ha->instance,
55497 +                   sizeof(Scsi_Cmnd));)
55498 +               goto fc_scsi_passthru_done;
55499 +       }
55500 +
55501 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi_device,
55502 +           sizeof(Scsi_Device))) {
55503 +               /* not enough memory */
55504 +               pext->Status = EXT_STATUS_NO_MEMORY;
55505 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55506 +                   "size requested=%d.\n",
55507 +                   __func__, ha->host_no, ha->instance,
55508 +                   sizeof(Scsi_Device));)
55509 +               goto fc_scsi_passthru_done;
55510 +       }
55511 +
55512 +       /* clear ioctl_mem to be used */
55513 +       memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
55514 +
55515 +       ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
55516 +           sizeof(EXT_FC_SCSI_PASSTHRU));
55517 +       if (ret) {
55518 +               pext->Status = EXT_STATUS_COPY_ERR;
55519 +               DEBUG9_10(printk(
55520 +                   "%s(%ld): inst=%ld ERROR verify READ req buf.\n",
55521 +                   __func__, ha->host_no, ha->instance);)
55522 +               atomic_set(&sp->ref_count, 0);
55523 +               add_to_free_queue (ha, sp);
55524 +
55525 +               goto fc_scsi_passthru_done;
55526 +       }
55527 +
55528 +       if (pext->ResponseLen > ha->ioctl_mem_size) {
55529 +               if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
55530 +                   QL_STATUS_SUCCESS) {
55531 +
55532 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
55533 +                           "requested DMA buffer size %x.\n",
55534 +                           __func__, ha->host_no, ha->instance,
55535 +                           pext->ResponseLen);)
55536 +
55537 +                       pext->Status = EXT_STATUS_NO_MEMORY;
55538 +                       atomic_set(&sp->ref_count, 0);
55539 +                       add_to_free_queue (ha, sp);
55540 +                       goto fc_scsi_passthru_done;
55541 +               }
55542 +       }
55543 +
55544 +       /* Copy request buffer */
55545 +       usr_temp   = (uint8_t *)pext->RequestAdr;
55546 +       kernel_tmp = (uint8_t *)pfc_scsi_pass;
55547 +       ret = copy_from_user(kernel_tmp, usr_temp,
55548 +           sizeof(EXT_FC_SCSI_PASSTHRU));
55549 +       if (ret) {
55550 +               pext->Status = EXT_STATUS_COPY_ERR;
55551 +               DEBUG9_10(printk(
55552 +                   "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
55553 +                   __func__, ha->host_no, ha->instance, ret);)
55554 +               atomic_set(&sp->ref_count, 0);
55555 +               add_to_free_queue (ha, sp);
55556 +
55557 +               goto fc_scsi_passthru_done;
55558 +       }
55559 +
55560 +       if (pfc_scsi_pass->FCScsiAddr.DestType != EXT_DEF_DESTTYPE_WWPN) {
55561 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55562 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR -wrong Dest type. \n",
55563 +                   __func__, ha->host_no, ha->instance);)
55564 +               ret = EXT_STATUS_ERR;
55565 +               atomic_set(&sp->ref_count, 0);
55566 +               add_to_free_queue (ha, sp);
55567 +               goto fc_scsi_passthru_done;
55568 +       }
55569 +
55570 +       fcport = NULL;
55571 +       fclun = NULL;
55572 +       port_found = lun_found = 0;
55573 +       list_for_each(fcpl, &ha->fcports) {
55574 +               fcport = list_entry(fcpl, fc_port_t, list);
55575
55576 +               if (memcmp(fcport->port_name,
55577 +                   pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN, 8) != 0) {
55578 +                       continue;
55579 +
55580 +               }
55581 +               port_found++;
55582
55583 +               list_for_each(fcll, &fcport->fcluns) {
55584 +                       fclun = list_entry(fcll, fc_lun_t, list);
55585 +
55586 +                       if (fclun->lun == pfc_scsi_pass->FCScsiAddr.Lun) {
55587 +                               /* Found the right LUN */
55588 +                               lun_found++;
55589 +                               break;
55590 +                       }
55591 +               }
55592 +               break;
55593 +       }
55594 +
55595 +       if (!port_found) {
55596 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55597 +               DEBUG9_10(printk("%s(%ld): inst=%ld FC AddrFormat - DID NOT "
55598 +                   "FIND Port matching WWPN.\n",
55599 +                   __func__, ha->host_no, ha->instance);)
55600 +               atomic_set(&sp->ref_count, 0);
55601 +               add_to_free_queue (ha, sp);
55602 +               goto fc_scsi_passthru_done;
55603 +       }
55604 +
55605 +       /* v5.21b9 - use a temporary fclun */
55606 +       if (!lun_found) {
55607 +               fclun = &temp_fclun;
55608 +               fclun->fcport = fcport;
55609 +               fclun->lun = pfc_scsi_pass->FCScsiAddr.Lun;
55610 +               fclun->flags = 0;
55611 +       }
55612 +
55613 +       /* set target coordinates */
55614 +       pfc_scsi_cmd->device->id = 0xff; /* not used. just put something there. */
55615 +       pfc_scsi_cmd->device->lun = pfc_scsi_pass->FCScsiAddr.Lun;
55616 +
55617 +       DEBUG9(printk("%s(%ld): inst=%ld cmd for loopid=%04x L=%04x "
55618 +           "WWPN=%02x%02x%02x%02x%02x%02x%02x%02x.\n",
55619 +           __func__, ha->host_no, ha->instance, fclun->fcport->loop_id,
55620 +           pfc_scsi_cmd->device->lun,
55621 +           pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[0],
55622 +           pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[1],
55623 +           pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[2],
55624 +           pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[3],
55625 +           pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[4],
55626 +           pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[5],
55627 +           pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[6],
55628 +           pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[7]);)
55629 +
55630 +       if (pfc_scsi_pass->CdbLength == 6) {
55631 +               sp->cmd_length = 6;
55632 +               pfc_scsi_cmd->cmd_len = 6;
55633 +
55634 +       } else if (pfc_scsi_pass->CdbLength == 0x0A) {
55635 +               sp->cmd_length = 0x0A;
55636 +               pfc_scsi_cmd->cmd_len = 0x0A;
55637 +
55638 +       } else if (pfc_scsi_pass->CdbLength == 0x0C) {
55639 +               sp->cmd_length = 0x0C;
55640 +               pfc_scsi_cmd->cmd_len = 0x0C;
55641 +
55642 +       } else if (pfc_scsi_pass->CdbLength == 0x10) {
55643 +               sp->cmd_length = 0x10;
55644 +               pfc_scsi_cmd->cmd_len = 0x10;
55645 +       } else {
55646 +               printk(KERN_WARNING
55647 +                   "qla2x00_ioctl: FC_SCSI_PASSTHRU Unknown Cdb Length=%x.\n",
55648 +                   pfc_scsi_pass->CdbLength);
55649 +               pext->Status = EXT_STATUS_INVALID_PARAM;
55650 +               atomic_set(&sp->ref_count, 0);
55651 +               add_to_free_queue (ha, sp);
55652 +
55653 +               goto fc_scsi_passthru_done;
55654 +       }
55655 +
55656 +       memcpy(pfc_scsi_cmd->data_cmnd, pfc_scsi_pass->Cdb,
55657 +           pfc_scsi_cmd->cmd_len);
55658 +       memcpy(pfc_scsi_cmd->cmnd, pfc_scsi_pass->Cdb,
55659 +           pfc_scsi_cmd->cmd_len);
55660 +
55661 +       DEBUG9(printk("%s Dump of cdb buffer:\n", __func__);)
55662 +       DEBUG9(qla2x00_dump_buffer((uint8_t *)&pfc_scsi_cmd->data_cmnd[0], 16);)
55663 +
55664 +       pfc_scsi_cmd->device->host = ha->host;
55665 +       sp->ha                = ha;
55666 +       sp->cmd               = pfc_scsi_cmd;
55667 +       sp->flags             = SRB_IOCTL;
55668 +
55669 +       /* set local fc_scsi_cmd's sp pointer to sp */
55670 +       CMD_SP(pfc_scsi_cmd)  = (void *) sp;
55671 +
55672 +       /* mark this as a special delivery and collection command */
55673 +       pfc_scsi_cmd->flags     = 0;
55674 +       pfc_scsi_cmd->scsi_done = qla2x00_scsi_pt_done;
55675 +
55676 +       pfc_scsi_cmd->device               = pfc_scsi_device;
55677 +       pfc_scsi_cmd->device->tagged_queue = 0;
55678 +       pfc_scsi_cmd->use_sg               = 0; /* no ScatterGather */
55679 +       pfc_scsi_cmd->request_bufflen      = pext->ResponseLen;
55680 +       pfc_scsi_cmd->request_buffer       = ha->ioctl_mem;
55681 +       pfc_scsi_cmd->timeout_per_command  = QLA_PT_CMD_TOV * HZ;
55682 +
55683 +       if (pfc_scsi_pass->Direction == EXT_DEF_SCSI_PASSTHRU_DATA_OUT) {
55684 +               /* sending user data from pext->ResponseAdr to device */
55685 +               ret = verify_area(VERIFY_READ, (void *)pext->ResponseAdr,
55686 +                   pext->ResponseLen);
55687 +               if (ret) {
55688 +                       pext->Status = EXT_STATUS_COPY_ERR;
55689 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify read "
55690 +                           "ResponseAdr.\n",
55691 +                           __func__, ha->host_no, ha->instance);)
55692 +                       atomic_set(&sp->ref_count, 0);
55693 +                       add_to_free_queue (ha, sp);
55694 +
55695 +                       goto fc_scsi_passthru_done;
55696 +               }
55697 +
55698 +               pfc_scsi_cmd->sc_data_direction = SCSI_DATA_WRITE;
55699 +               usr_temp   = (uint8_t *)pext->ResponseAdr;
55700 +               kernel_tmp = (uint8_t *)ha->ioctl_mem;
55701 +               ret = copy_from_user(kernel_tmp, usr_temp, pext->ResponseLen);
55702 +               if (ret) {
55703 +                       pext->Status = EXT_STATUS_COPY_ERR;
55704 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy "
55705 +                           "failed(%d) on rsp buf.\n",
55706 +                           __func__, ha->host_no, ha->instance, ret);)
55707 +                       atomic_set(&sp->ref_count, 0);
55708 +                       add_to_free_queue (ha, sp);
55709 +
55710 +                       goto fc_scsi_passthru_done;
55711 +               }
55712 +       } else {
55713 +               pfc_scsi_cmd->sc_data_direction = SCSI_DATA_READ;
55714 +       }
55715 +
55716 +       tq = ha->ioctl->ioctl_tq;
55717 +       lq = ha->ioctl->ioctl_lq;
55718 +
55719 +       if (fclun && tq && lq ) {
55720 +               tq->olun[fclun->lun] = lq;
55721 +               tq->ha = ha;
55722 +
55723 +               lq->fclun = fclun;
55724 +               fcport = fclun->fcport;
55725 +
55726 +               sp->lun_queue = lq;
55727 +               sp->tgt_queue = tq;
55728 +               sp->fclun = fclun;
55729 +       }
55730 +
55731 +       DEBUG9({
55732 +               b = SCSI_BUS_32(pfc_scsi_cmd);
55733 +               t = SCSI_TCN_32(pfc_scsi_cmd);
55734 +               l = SCSI_LUN_32(pfc_scsi_cmd);
55735 +       })
55736 +       DEBUG9(printk("%s(%ld): ha instance=%ld tq=%p lq=%p "
55737 +           "fclun=%p.\n",
55738 +           __func__, ha->host_no, ha->instance, tq, lq, fclun);)
55739 +       DEBUG9(printk("\tCDB=%02x %02x %02x %02x; b=%x t=%x l=%x.\n",
55740 +           pfc_scsi_cmd->cmnd[0], pfc_scsi_cmd->cmnd[1], pfc_scsi_cmd->cmnd[2],
55741 +           pfc_scsi_cmd->cmnd[3], b, t, l);)
55742 +
55743 +       /*
55744 +        * Check the status of the port
55745 +        */
55746 +       if (qla2x00_check_port_status(ha, fcport) != QL_STATUS_SUCCESS) {
55747 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55748 +               atomic_set(&sp->ref_count, 0);
55749 +               add_to_free_queue (ha, sp);
55750 +               goto fc_scsi_passthru_done;
55751 +       }
55752 +
55753 +       /* set flag to indicate IOCTL SCSI PassThru in progress */
55754 +       ha->ioctl->SCSIPT_InProgress = 1;
55755 +       ha->ioctl->ioctl_tov = (int)QLA_PT_CMD_DRV_TOV;
55756 +
55757 +       /* prepare for receiving completion. */
55758 +       qla2x00_ioctl_sem_init(ha);
55759 +       CMD_COMPL_STATUS(pfc_scsi_cmd) = (int) IOCTL_INVALID_STATUS;
55760 +
55761 +       /* send command to adapter */
55762 +       DEBUG9(printk("%s(%ld): inst=%ld sending command.\n",
55763 +           __func__, ha->host_no, ha->instance);)
55764 +
55765 +       add_to_pending_queue(ha, sp);
55766 +
55767 +       qla2x00_next(ha);
55768 +
55769 +       ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ;
55770 +       add_timer(&ha->ioctl->cmpl_timer);
55771 +
55772 +       down(&ha->ioctl->cmpl_sem);
55773 +
55774 +       del_timer(&ha->ioctl->cmpl_timer);
55775 +
55776 +       if (ha->ioctl->SCSIPT_InProgress == 1) {
55777 +
55778 +               printk(KERN_WARNING
55779 +                   "qla2x00: scsi%ld ERROR passthru command timeout.\n",
55780 +                   ha->host_no);
55781 +
55782 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55783 +               atomic_set(&sp->ref_count, 0);
55784 +               add_to_free_queue (ha, sp);
55785 +               goto fc_scsi_passthru_done;
55786 +       }
55787 +
55788 +       if (CMD_COMPL_STATUS(pfc_scsi_cmd) == (int)IOCTL_INVALID_STATUS) {
55789 +
55790 +               DEBUG9(printk("%s(%ld): inst=%ld ERROR. cmd not completed.\n",
55791 +                   __func__, ha->host_no, ha->instance);)
55792 +
55793 +               pext->Status = EXT_STATUS_ERR;
55794 +               atomic_set(&sp->ref_count, 0);
55795 +               add_to_free_queue (ha, sp);
55796 +               goto fc_scsi_passthru_done;
55797 +       }
55798 +
55799 +       switch (CMD_COMPL_STATUS(pfc_scsi_cmd)) {
55800 +       case CS_INCOMPLETE:
55801 +       case CS_ABORTED:
55802 +       case CS_PORT_UNAVAILABLE:
55803 +       case CS_PORT_LOGGED_OUT:
55804 +       case CS_PORT_CONFIG_CHG:
55805 +       case CS_PORT_BUSY:
55806 +               DEBUG10(printk("%s(%ld): inst=%ld cs err = %x.\n",
55807 +                   __func__, ha->host_no, ha->instance,
55808 +                   CMD_COMPL_STATUS(pfc_scsi_cmd));)
55809 +               pext->Status = EXT_STATUS_BUSY;
55810 +               break;
55811 +       }
55812 +
55813 +       if ((CMD_COMPL_STATUS(pfc_scsi_cmd) == CS_DATA_UNDERRUN) ||
55814 +           (CMD_SCSI_STATUS(pfc_scsi_cmd) != 0))  {
55815 +
55816 +               /* have done the post function */
55817 +               pext->Status       = EXT_STATUS_SCSI_STATUS;
55818 +               /* The SDMAPI is only concerned with the low-order byte */
55819 +               pext->DetailStatus = CMD_SCSI_STATUS(pfc_scsi_cmd) & 0xff;
55820 +
55821 +               DEBUG9_10(printk("%s(%ld): inst=%ld data underrun or scsi err. "
55822 +                   "host status =0x%x, scsi status = 0x%x.\n",
55823 +                   __func__, ha->host_no, ha->instance,
55824 +                   CMD_COMPL_STATUS(pfc_scsi_cmd),
55825 +                   CMD_SCSI_STATUS(pfc_scsi_cmd));)
55826 +
55827 +       } else if (CMD_COMPL_STATUS(pfc_scsi_cmd) != 0) {
55828 +               DEBUG9_10(printk("%s(%ld): inst=%ld cs err=%x.\n",
55829 +                   __func__, ha->host_no, ha->instance,
55830 +                   CMD_COMPL_STATUS(pfc_scsi_cmd));)
55831 +               pext->Status = EXT_STATUS_ERR;
55832 +
55833 +               goto fc_scsi_passthru_done;
55834 +       }
55835 +
55836 +       /* Process completed command */
55837 +       DEBUG9(printk("%s(%ld): inst=%ld done. host status=0x%x, "
55838 +           "scsi status=0x%x.\n",
55839 +           __func__, ha->host_no, ha->instance, CMD_COMPL_STATUS(pfc_scsi_cmd),
55840 +           CMD_SCSI_STATUS(pfc_scsi_cmd));)
55841 +
55842 +       /* copy up structure to make sense data available to user */
55843 +       pfc_scsi_pass->SenseLength = CMD_ACTUAL_SNSLEN(pfc_scsi_cmd);
55844 +       if (CMD_ACTUAL_SNSLEN(pfc_scsi_cmd)) {
55845 +               DEBUG9_10(printk("%s(%ld): inst=%ld sense[0]=%x sense[2]=%x.\n",
55846 +                   __func__, ha->host_no, ha->instance,
55847 +                   pfc_scsi_cmd->sense_buffer[0],
55848 +                   pfc_scsi_cmd->sense_buffer[2]);)
55849 +
55850 +               for (i = 0; i < CMD_ACTUAL_SNSLEN(pfc_scsi_cmd); i++) {
55851 +                       pfc_scsi_pass->SenseData[i] =
55852 +                       pfc_scsi_cmd->sense_buffer[i];
55853 +               }
55854 +
55855 +               ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr,
55856 +                   sizeof(EXT_FC_SCSI_PASSTHRU));
55857 +               if (ret) {
55858 +                       pext->Status = EXT_STATUS_COPY_ERR;
55859 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE "
55860 +                           "RequestAdr.\n",
55861 +                           __func__, ha->host_no, ha->instance);)
55862 +                       goto fc_scsi_passthru_done;
55863 +               }
55864 +
55865 +               usr_temp = (uint8_t *)pext->RequestAdr;
55866 +               kernel_tmp = (uint8_t *)pfc_scsi_pass;
55867 +               ret = copy_to_user(usr_temp, kernel_tmp,
55868 +                   sizeof(EXT_FC_SCSI_PASSTHRU));
55869 +               if (ret) {
55870 +                       pext->Status = EXT_STATUS_COPY_ERR;
55871 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy sense "
55872 +                           "buffer.\n",
55873 +                           __func__, ha->host_no, ha->instance);)
55874 +                       goto fc_scsi_passthru_done;
55875 +               }
55876 +       }
55877 +
55878 +       scsi_direction = pfc_scsi_pass->Direction;
55879 +
55880 +       if (scsi_direction == EXT_DEF_SCSI_PASSTHRU_DATA_IN) {
55881 +
55882 +               DEBUG9(printk("%s(%ld): inst=%ld copying data.\n",
55883 +                   __func__, ha->host_no, ha->instance);)
55884 +
55885 +               /* getting device data and putting in pext->ResponseAdr */
55886 +               ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
55887 +                   pext->ResponseLen);
55888 +               if (ret) {
55889 +                       pext->Status = EXT_STATUS_COPY_ERR;
55890 +
55891 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write "
55892 +                           "ResponseAdr.\n",
55893 +                           __func__, ha->host_no, ha->instance);)
55894 +
55895 +                       goto fc_scsi_passthru_done;
55896 +               }
55897 +
55898 +               /* now copy up the READ data to user */
55899 +               if ((CMD_COMPL_STATUS(pfc_scsi_cmd) == CS_DATA_UNDERRUN) &&
55900 +                   (CMD_RESID_LEN(pfc_scsi_cmd))) {
55901 +
55902 +                       transfer_len = pext->ResponseLen -
55903 +                           CMD_RESID_LEN(pfc_scsi_cmd);
55904 +
55905 +                       pext->ResponseLen = transfer_len;
55906 +               } else {
55907 +                       transfer_len = pext->ResponseLen;
55908 +               }
55909 +
55910 +               usr_temp = (uint8_t *)pext->ResponseAdr;
55911 +               kernel_tmp = (uint8_t *)ha->ioctl_mem;
55912 +               ret = copy_to_user(usr_temp, kernel_tmp, transfer_len);
55913 +               if (ret) {
55914 +                       pext->Status = EXT_STATUS_COPY_ERR;
55915 +                       DEBUG9_10(printk(
55916 +                           "%s(%ld): inst=%ld ERROR copy rsp buf\n",
55917 +                           __func__, ha->host_no, ha->instance);)
55918 +                       goto fc_scsi_passthru_done;
55919 +               }
55920 +       }
55921 +
55922 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
55923 +           __func__, ha->host_no, ha->instance);)
55924 +
55925 +fc_scsi_passthru_done:
55926 +
55927 +       qla2x00_free_ioctl_scrap_mem(ha);
55928 +       return (ret);
55929 +}
55930 +
55931 +/*
55932 + * qla2x00_sc_scsi3_passthru
55933 + *     Handles EXT_SC_SCSI3_PASSTHRU subcommand.
55934 + *
55935 + * Input:
55936 + *     ha = adapter state pointer.
55937 + *     pext = EXT_IOCTL structure pointer.
55938 + *     mode = not used.
55939 + *
55940 + * Returns:
55941 + *     0 = success
55942 + *     others = errno value
55943 + *
55944 + * Context:
55945 + *     Kernel context.
55946 + */
55947 +static int
55948 +qla2x00_sc_scsi3_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
55949 +{
55950 +#define MAX_SCSI3_CDB_LEN      16
55951 +
55952 +       int                     ret = 0;
55953 +       int                     found;
55954 +       fc_lun_t                temp_fclun;
55955 +       fc_lun_t                *fclun = NULL;
55956 +       struct list_head        *fcpl;
55957 +       fc_port_t               *fcport;
55958 +       os_lun_t                *lq;
55959 +       os_tgt_t                *tq;
55960 +       srb_t                   *sp = NULL;
55961 +       uint8_t                 *usr_temp, *kernel_tmp;
55962 +       uint32_t                transfer_len;
55963 +       uint32_t                i, b, t;
55964 +       uint32_t                scsi_direction;
55965 +
55966 +       EXT_FC_SCSI_PASSTHRU    *pfc_scsi3_pass;
55967 +
55968 +       Scsi_Cmnd               *pscsi3_cmd;
55969 +       Scsi_Device             *pscsi3_device;
55970 +
55971 +
55972 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
55973 +           __func__, ha->host_no, ha->instance);)
55974 +
55975 +       if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
55976 +
55977 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc sp.\n",
55978 +                   __func__, ha->host_no, ha->instance);)
55979 +
55980 +               pext->Status = EXT_STATUS_NO_MEMORY;
55981 +               return (ret);
55982 +       }
55983 +
55984 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi3_pass,
55985 +           sizeof(EXT_FC_SCSI_PASSTHRU))) {
55986 +               /* not enough memory */
55987 +               pext->Status = EXT_STATUS_NO_MEMORY;
55988 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55989 +                   "size requested=%d.\n",
55990 +                   __func__, ha->host_no, ha->instance,
55991 +                   sizeof(EXT_FC_SCSI_PASSTHRU));)
55992 +               return (ret);
55993 +       }
55994 +
55995 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi3_cmd,
55996 +           sizeof(Scsi_Cmnd))) {
55997 +               /* not enough memory */
55998 +               pext->Status = EXT_STATUS_NO_MEMORY;
55999 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
56000 +                   "size requested=%d.\n",
56001 +                   __func__, ha->host_no, ha->instance,
56002 +                   sizeof(Scsi_Cmnd));)
56003 +               goto scsi3_passthru_done;
56004 +       }
56005 +
56006 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi3_device,
56007 +           sizeof(Scsi_Device))) {
56008 +               /* not enough memory */
56009 +               pext->Status = EXT_STATUS_NO_MEMORY;
56010 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
56011 +                   "size requested=%d.\n",
56012 +                   __func__, ha->host_no, ha->instance,
56013 +                   sizeof(Scsi_Device));)
56014 +               goto scsi3_passthru_done;
56015 +       }
56016 +
56017 +       /* clear ioctl_mem to be used */
56018 +       memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
56019 +
56020 +       ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
56021 +           sizeof(EXT_FC_SCSI_PASSTHRU));
56022 +       if (ret) {
56023 +               pext->Status = EXT_STATUS_COPY_ERR;
56024 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify READ "
56025 +                   "req buf.\n", __func__, ha->host_no, ha->instance);)
56026 +               atomic_set(&sp->ref_count, 0);
56027 +               add_to_free_queue (ha, sp);
56028 +               goto scsi3_passthru_done;
56029 +       }
56030 +
56031 +       if (pext->ResponseLen > ha->ioctl_mem_size) {
56032 +               if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
56033 +                   QL_STATUS_SUCCESS) {
56034 +
56035 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot "
56036 +                           "alloc requested DMA buffer size=%x.\n",
56037 +                           __func__, ha->host_no, ha->instance,
56038 +                           pext->ResponseLen);)
56039 +
56040 +                       pext->Status = EXT_STATUS_NO_MEMORY;
56041 +                       atomic_set(&sp->ref_count, 0);
56042 +                       add_to_free_queue (ha, sp);
56043 +                       goto scsi3_passthru_done;
56044 +               }
56045 +       }
56046 +
56047 +       /* Copy request buffer */
56048 +       usr_temp   = (uint8_t *)pext->RequestAdr;
56049 +       kernel_tmp = (uint8_t *)pfc_scsi3_pass;
56050 +       ret = copy_from_user(kernel_tmp, usr_temp,
56051 +           sizeof(EXT_FC_SCSI_PASSTHRU));
56052 +       if (ret) {
56053 +               pext->Status = EXT_STATUS_COPY_ERR;
56054 +               DEBUG9_10(printk(
56055 +                   "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
56056 +                   __func__, ha->host_no, ha->instance, ret);)
56057 +               atomic_set(&sp->ref_count, 0);
56058 +               add_to_free_queue (ha, sp);
56059 +               goto scsi3_passthru_done;
56060 +       }
56061 +
56062 +       if (pfc_scsi3_pass->FCScsiAddr.DestType != EXT_DEF_DESTTYPE_WWPN) {
56063 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56064 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR - wrong Dest type.\n",
56065 +                   __func__, ha->host_no, ha->instance);)
56066 +               ret = EXT_STATUS_ERR;
56067 +               atomic_set(&sp->ref_count, 0);
56068 +               add_to_free_queue (ha, sp);
56069 +
56070 +               goto scsi3_passthru_done;
56071 +       }
56072 +
56073 +       /*
56074 +        * For this ioctl command we always assume all 16 bytes are
56075 +        * initialized.
56076 +        */
56077 +       if (pfc_scsi3_pass->CdbLength != MAX_SCSI3_CDB_LEN) {
56078 +               pext->Status = EXT_STATUS_INVALID_PARAM;
56079 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR -wrong Cdb Len %d.\n",
56080 +                   __func__, ha->host_no, ha->instance,
56081 +                   pfc_scsi3_pass->CdbLength);)
56082 +               atomic_set(&sp->ref_count, 0);
56083 +               add_to_free_queue (ha, sp);
56084 +               goto scsi3_passthru_done;
56085 +       }
56086 +
56087 +       fcport = NULL;
56088 +       found = 0;
56089 +       list_for_each(fcpl, &ha->fcports) {
56090 +               fcport = list_entry(fcpl, fc_port_t, list);
56091 +
56092 +               if (memcmp(fcport->port_name,
56093 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN, 8) == 0) {
56094 +                       found++;
56095 +                       break;
56096 +               }
56097 +       }
56098 +       if (!found) {
56099 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56100 +
56101 +               DEBUG9_10(printk("%s(%ld): inst=%ld DID NOT FIND Port for WWPN "
56102 +                   "%02x%02x%02x%02x%02x%02x%02x%02x.\n",
56103 +                   __func__, ha->host_no, ha->instance,
56104 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[0],
56105 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[1],
56106 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[2],
56107 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[3],
56108 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[4],
56109 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[5],
56110 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[6],
56111 +                   pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[7]);)
56112 +
56113 +               atomic_set(&sp->ref_count, 0);
56114 +               add_to_free_queue (ha, sp);
56115 +
56116 +               goto scsi3_passthru_done;
56117 +       }
56118 +
56119 +       /* Use a temporary fclun to send out the command. */
56120 +       fclun = &temp_fclun;
56121 +       fclun->fcport = fcport;
56122 +       fclun->lun = pfc_scsi3_pass->FCScsiAddr.Lun;
56123 +       fclun->flags = 0;
56124 +
56125 +       /* set target coordinates */
56126 +       pscsi3_cmd->device->id = 0xff;  /* not used. just put something there. */
56127 +       pscsi3_cmd->device->lun = pfc_scsi3_pass->FCScsiAddr.Lun;
56128 +
56129 +       DEBUG9(printk("%s(%ld): inst=%ld cmd for loopid=%04x L=%04x "
56130 +           "WWPN=%02x%02x%02x%02x%02x%02x%02x%02x.\n",
56131 +           __func__, ha->host_no, ha->instance,
56132 +           fclun->fcport->loop_id, pscsi3_cmd->device->lun,
56133 +           pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[0],
56134 +           pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[1],
56135 +           pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[2],
56136 +           pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[3],
56137 +           pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[4],
56138 +           pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[5],
56139 +           pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[6],
56140 +           pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[7]);)
56141 +
56142 +       sp->cmd_length = MAX_SCSI3_CDB_LEN;
56143 +       pscsi3_cmd->cmd_len = MAX_SCSI3_CDB_LEN;
56144 +
56145 +       memcpy(pscsi3_cmd->data_cmnd, pfc_scsi3_pass->Cdb, pscsi3_cmd->cmd_len);
56146 +       memcpy(pscsi3_cmd->cmnd, pfc_scsi3_pass->Cdb, pscsi3_cmd->cmd_len);
56147 +
56148 +       DEBUG9(printk("%s(%ld): inst=%ld cdb buffer dump:\n",
56149 +           __func__, ha->host_no, ha->instance);)
56150 +       DEBUG9(qla2x00_dump_buffer((uint8_t *)&pscsi3_cmd->data_cmnd[0], 16);)
56151 +
56152 +       pscsi3_cmd->device->host = ha->host;
56153 +       sp->ha                = ha;
56154 +       sp->cmd               = pscsi3_cmd;
56155 +       sp->flags             = SRB_IOCTL;
56156 +
56157 +       /* set local scsi3_cmd's sp pointer to sp */
56158 +       CMD_SP(pscsi3_cmd)    = (void *) sp;
56159 +
56160 +       /* mark this as a special delivery and collection command */
56161 +       pscsi3_cmd->flags     = 0;
56162 +       pscsi3_cmd->scsi_done = qla2x00_scsi_pt_done;
56163 +
56164 +       pscsi3_cmd->device               = pscsi3_device;
56165 +       pscsi3_cmd->device->tagged_queue = 0;
56166 +       pscsi3_cmd->use_sg               = 0; /* no ScatterGather */
56167 +       pscsi3_cmd->request_bufflen      = pext->ResponseLen;
56168 +       pscsi3_cmd->request_buffer       = ha->ioctl_mem;
56169 +       pscsi3_cmd->timeout_per_command  = QLA_PT_CMD_TOV * HZ;
56170 +
56171 +       if (pfc_scsi3_pass->Direction == EXT_DEF_SCSI_PASSTHRU_DATA_OUT) {
56172 +               /* sending user data from pext->ResponseAdr to device */
56173 +               ret = verify_area(VERIFY_READ, (void *)pext->ResponseAdr,
56174 +                   pext->ResponseLen);
56175 +               if (ret) {
56176 +                       pext->Status = EXT_STATUS_COPY_ERR;
56177 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify read "
56178 +                           "ResponseAdr.\n",
56179 +                           __func__, ha->host_no, ha->instance);)
56180 +                       atomic_set(&sp->ref_count, 0);
56181 +                       add_to_free_queue (ha, sp);
56182 +                       goto scsi3_passthru_done;
56183 +               }
56184 +
56185 +               pscsi3_cmd->sc_data_direction = SCSI_DATA_WRITE;
56186 +               usr_temp   = (uint8_t *)pext->ResponseAdr;
56187 +               kernel_tmp = (uint8_t *)ha->ioctl_mem;
56188 +               ret = copy_from_user(kernel_tmp, usr_temp, pext->ResponseLen);
56189 +               if (ret) {
56190 +                       pext->Status = EXT_STATUS_COPY_ERR;
56191 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buf "
56192 +                           "ret=%d.\n",
56193 +                           __func__, ha->host_no, ha->instance, ret);)
56194 +                       atomic_set(&sp->ref_count, 0);
56195 +                       add_to_free_queue (ha, sp);
56196 +                       goto scsi3_passthru_done;
56197 +               }
56198 +
56199 +       } else {
56200 +               pscsi3_cmd->sc_data_direction = SCSI_DATA_READ;
56201 +       }
56202 +
56203 +       /* Use temporary LU and TGT queue */
56204 +       tq = ha->ioctl->ioctl_tq;
56205 +       lq = ha->ioctl->ioctl_lq;
56206 +
56207 +       b = SCSI_BUS_32(pscsi3_cmd);
56208 +       t = SCSI_TCN_32(pscsi3_cmd);
56209 +
56210 +       DEBUG9(printk("%s(%ld): ha instance=%ld tq=%p lq=%p fclun=%p.\n",
56211 +           __func__, ha->host_no, ha->instance,tq,lq,fclun); )
56212 +       DEBUG9(printk("%s(%ld): CDB=%02x %02x %02x %02x; b=%x t=%x fclun=%x\n",
56213 +           __func__, ha->host_no, pscsi3_cmd->cmnd[0], pscsi3_cmd->cmnd[1],
56214 +           pscsi3_cmd->cmnd[2], pscsi3_cmd->cmnd[3], b, t,
56215 +           SCSI_LUN_32(pscsi3_cmd));)
56216 +
56217 +       if (tq && lq) {
56218 +               /*
56219 +                * For now just save lq using the lower LUN byte value,
56220 +                * even though this may not be the actual LUN number.
56221 +                * Since we're only sending out passthru cmd one at a time,
56222 +                * and only passthru is using FCP LUN format now, no need
56223 +                * to change rest of driver just to decode the LUN.
56224 +                */
56225 +               tq->olun[fclun->lun & 0xff] = lq;
56226 +
56227 +               tq->ha = ha;
56228 +               lq->fclun = fclun;
56229 +               fcport = fclun->fcport;
56230 +
56231 +               sp->lun_queue = lq;
56232 +               sp->tgt_queue = tq;
56233 +               sp->fclun = fclun;
56234 +       } else {
56235 +               lq = NULL;
56236 +               fcport = NULL;
56237 +       }
56238 +
56239 +       /*
56240 +        * Check the status of the port
56241 +        */
56242 +       if (qla2x00_check_port_status(ha, fcport) != QL_STATUS_SUCCESS) {
56243 +
56244 +               DEBUG9_10(printk("%s(%ld): inst=%ld port missing or loop down. "
56245 +                   "fcport=%p timer=%d state=%d dpc=%lx.\n",
56246 +                   __func__, ha->host_no, ha->instance, fcport,
56247 +                   atomic_read(&ha->loop_down_timer), ha->loop_state,
56248 +                   ha->dpc_flags);)
56249 +
56250 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56251 +               atomic_set(&sp->ref_count, 0);
56252 +               add_to_free_queue (ha, sp);
56253 +               goto scsi3_passthru_done;
56254 +       }
56255 +
56256 +       /* set flag to indicate IOCTL SCSI PassThru in progress */
56257 +       ha->ioctl->SCSIPT_InProgress = 1;
56258 +       ha->ioctl->ioctl_tov = (int)QLA_PT_CMD_DRV_TOV;
56259 +
56260 +       /* prepare for receiving completion. */
56261 +       qla2x00_ioctl_sem_init(ha);
56262 +       CMD_COMPL_STATUS(pscsi3_cmd) = (int) IOCTL_INVALID_STATUS;
56263 +
56264 +       /* send command to adapter */
56265 +
56266 +       /*add_to_cmd_queue(ha, lq, sp);*/
56267 +       add_to_pending_queue(ha, sp);
56268 +
56269 +       /*qla2x00_next(ha, tq, lq);*/
56270 +       qla2x00_next(ha);
56271 +
56272 +       ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ;
56273 +       add_timer(&ha->ioctl->cmpl_timer);
56274 +
56275 +       down(&ha->ioctl->cmpl_sem);
56276 +
56277 +       del_timer(&ha->ioctl->cmpl_timer);
56278 +
56279 +       if (ha->ioctl->SCSIPT_InProgress == 1) {
56280 +
56281 +               printk(KERN_WARNING
56282 +                   "qla2x00: inst=%ld scsi%ld ERROR PT command timeout.\n",
56283 +                   ha->host_no, ha->instance);
56284 +
56285 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56286 +               atomic_set(&sp->ref_count, 0);
56287 +               add_to_free_queue (ha, sp);
56288 +               goto scsi3_passthru_done;
56289 +
56290 +       }
56291 +       if (CMD_COMPL_STATUS(pscsi3_cmd) == (int)IOCTL_INVALID_STATUS) {
56292 +
56293 +               DEBUG9(printk("%s(%ld): inst=%ld ERROR - cmd not completed.\n",
56294 +                   __func__, ha->host_no, ha->instance);)
56295 +
56296 +               pext->Status = EXT_STATUS_ERR;
56297 +               atomic_set(&sp->ref_count, 0);
56298 +               add_to_free_queue (ha, sp);
56299 +               goto scsi3_passthru_done;
56300 +       }
56301 +
56302 +       switch (CMD_COMPL_STATUS(pscsi3_cmd)) {
56303 +       case CS_INCOMPLETE:
56304 +       case CS_ABORTED:
56305 +       case CS_PORT_UNAVAILABLE:
56306 +       case CS_PORT_LOGGED_OUT:
56307 +       case CS_PORT_CONFIG_CHG:
56308 +       case CS_PORT_BUSY:
56309 +               DEBUG10(printk("%s(%ld): inst=%ld cs err = %x.\n",
56310 +                   __func__, ha->host_no, ha->instance,
56311 +                   CMD_COMPL_STATUS(pscsi3_cmd));)
56312 +               pext->Status = EXT_STATUS_BUSY;
56313 +               break;
56314 +       }
56315 +
56316 +       if ((CMD_COMPL_STATUS(pscsi3_cmd) == CS_DATA_UNDERRUN) ||
56317 +           (CMD_SCSI_STATUS(pscsi3_cmd) != 0)) {
56318 +
56319 +               /* have done the post function */
56320 +               pext->Status       = EXT_STATUS_SCSI_STATUS;
56321 +               pext->DetailStatus = CMD_SCSI_STATUS(pscsi3_cmd) & 0xff;
56322 +
56323 +               DEBUG9_10(printk("%s(%ld): inst=%ld data underrun or scsi err. "
56324 +                   "host status =0x%x, scsi status = 0x%x.\n",
56325 +                   __func__, ha->host_no, ha->instance,
56326 +                   CMD_COMPL_STATUS(pscsi3_cmd), CMD_SCSI_STATUS(pscsi3_cmd));)
56327 +
56328 +       } else if (CMD_COMPL_STATUS(pscsi3_cmd) != 0) {
56329 +               DEBUG9_10(printk("%s(%ld): inst=%ld cs err = %x.\n",
56330 +                   __func__, ha->host_no, ha->instance,
56331 +                   CMD_COMPL_STATUS(pscsi3_cmd));)
56332 +               pext->Status = EXT_STATUS_ERR;
56333 +               goto scsi3_passthru_done;
56334 +       }
56335 +
56336 +       /* Process completed command */
56337 +       DEBUG9(printk("%s(%ld): inst=%ld done. host status=0x%x, "
56338 +           "scsi status=0x%x.\n",
56339 +           __func__, ha->host_no, ha->instance, CMD_COMPL_STATUS(pscsi3_cmd),
56340 +           CMD_SCSI_STATUS(pscsi3_cmd));)
56341 +
56342 +       /* copy up structure to make sense data available to user */
56343 +       pfc_scsi3_pass->SenseLength = CMD_ACTUAL_SNSLEN(pscsi3_cmd);
56344 +       if (CMD_ACTUAL_SNSLEN(pscsi3_cmd)) {
56345 +               DEBUG9_10(printk("%s(%ld): inst=%ld sense[0]=%x sense[2]=%x.\n",
56346 +                   __func__, ha->host_no, ha->instance,
56347 +                   pscsi3_cmd->sense_buffer[0],
56348 +                   pscsi3_cmd->sense_buffer[2]);)
56349 +
56350 +               for (i = 0; i < CMD_ACTUAL_SNSLEN(pscsi3_cmd); i++) {
56351 +                       pfc_scsi3_pass->SenseData[i] =
56352 +                           pscsi3_cmd->sense_buffer[i];
56353 +               }
56354 +
56355 +               ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr,
56356 +                   sizeof(EXT_FC_SCSI_PASSTHRU));
56357 +               if (ret) {
56358 +                       pext->Status = EXT_STATUS_COPY_ERR;
56359 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE "
56360 +                           "RequestAdr.\n",
56361 +                           __func__, ha->host_no, ha->instance);)
56362 +                       goto scsi3_passthru_done;
56363 +               }
56364 +
56365 +               usr_temp = (uint8_t *)pext->RequestAdr;
56366 +               kernel_tmp = (uint8_t *)pfc_scsi3_pass;
56367 +               ret = copy_to_user(usr_temp, kernel_tmp,
56368 +                   sizeof(EXT_FC_SCSI_PASSTHRU));
56369 +               if (ret) {
56370 +                       pext->Status = EXT_STATUS_COPY_ERR;
56371 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy sense "
56372 +                           "buffer.\n",
56373 +                           __func__, ha->host_no, ha->instance);)
56374 +                       goto scsi3_passthru_done;
56375 +               }
56376 +       }
56377 +
56378 +       scsi_direction = pfc_scsi3_pass->Direction;
56379 +
56380 +       if (scsi_direction == EXT_DEF_SCSI_PASSTHRU_DATA_IN) {
56381 +
56382 +               DEBUG9(printk("%s(%ld): inst=%ld copying data.\n",
56383 +                   __func__, ha->host_no, ha->instance);)
56384 +
56385 +               /* getting device data and putting in pext->ResponseAdr */
56386 +               ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
56387 +                   pext->ResponseLen);
56388 +               if (ret) {
56389 +                       pext->Status = EXT_STATUS_COPY_ERR;
56390 +
56391 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write "
56392 +                           "ResponseAdr.\n",
56393 +                           __func__, ha->host_no, ha->instance);)
56394 +
56395 +                       goto scsi3_passthru_done;
56396 +               }
56397 +
56398 +               /* now copy up the READ data to user */
56399 +               if ((CMD_COMPL_STATUS(pscsi3_cmd) == CS_DATA_UNDERRUN) &&
56400 +                   (CMD_RESID_LEN(pscsi3_cmd))) {
56401 +
56402 +                       transfer_len = pext->ResponseLen -
56403 +                           CMD_RESID_LEN(pscsi3_cmd);
56404 +
56405 +                       pext->ResponseLen = transfer_len;
56406 +               } else {
56407 +                       transfer_len = pext->ResponseLen;
56408 +               }
56409 +
56410 +               usr_temp = (uint8_t *)pext->ResponseAdr;
56411 +               kernel_tmp = (uint8_t *)ha->ioctl_mem;
56412 +               ret = copy_to_user(usr_temp, kernel_tmp, transfer_len);
56413 +               if (ret) {
56414 +                       pext->Status = EXT_STATUS_COPY_ERR;
56415 +                       DEBUG9_10(printk(
56416 +                           "%s(%ld): inst=%ld ERROR copy rsp buf\n",
56417 +                           __func__, ha->host_no, ha->instance);)
56418 +                       goto scsi3_passthru_done;
56419 +               }
56420 +       }
56421 +
56422 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
56423 +           __func__, ha->host_no, ha->instance);)
56424 +
56425 +scsi3_passthru_done:
56426 +
56427 +       qla2x00_free_ioctl_scrap_mem(ha);
56428 +       return (ret);
56429 +}
56430 +
56431 +/*
56432 + * qla2x00_send_els_rnid
56433 + *     IOCTL to send extended link service RNID command to a target.
56434 + *
56435 + * Input:
56436 + *     ha = adapter state pointer.
56437 + *     pext = User space CT arguments pointer.
56438 + *     mode = flags.
56439 + *
56440 + * Returns:
56441 + *     0 = success
56442 + *     others = errno value
56443 + *
56444 + * Context:
56445 + *     Kernel context.
56446 + */
56447 +static int
56448 +qla2x00_send_els_rnid(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
56449 +{
56450 +#define TGT_DEV         1
56451 +#define HOST_DEV        2
56452 +
56453 +       EXT_RNID_REQ    *tmp_rnid;
56454 +       int             ret = 0;
56455 +       uint8_t         dev_found = 0;
56456 +       uint16_t        dev_loop_id = 0;
56457 +       uint16_t        mb[MAILBOX_REGISTER_COUNT];
56458 +       uint32_t        copy_len;
56459 +       struct list_head        *fcpl;
56460 +       fc_port_t       *fcport;
56461 +       int             found;
56462 +       struct list_head *fcil;
56463 +       fc_initiator_t  *fcinitiator;
56464 +
56465 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
56466 +           __func__, ha->host_no, ha->instance);)
56467 +
56468 +       if (ha->ioctl_mem_size < SEND_RNID_RSP_SIZE) {
56469 +               if (qla2x00_get_new_ioctl_dma_mem(ha,
56470 +                   SEND_RNID_RSP_SIZE) != QL_STATUS_SUCCESS) {
56471 +
56472 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
56473 +                           "DMA buffer. size=%x.\n",
56474 +                           __func__, ha->host_no, ha->instance,
56475 +                           SEND_RNID_RSP_SIZE);)
56476 +
56477 +                       pext->Status = EXT_STATUS_NO_MEMORY;
56478 +                       return (ret);
56479 +               }
56480 +       }
56481 +
56482 +       if (pext->RequestLen != sizeof(EXT_RNID_REQ)) {
56483 +               /* parameter error */
56484 +               DEBUG9_10(printk("%s(%ld): inst=%ld invalid req length %d.\n",
56485 +                   __func__, ha->host_no, ha->instance, pext->RequestLen);)
56486 +               pext->Status = EXT_STATUS_INVALID_PARAM;
56487 +               return (ret);
56488 +       }
56489 +
56490 +       ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
56491 +           pext->RequestLen);
56492 +
56493 +       if (ret != 0) {
56494 +               pext->Status = EXT_STATUS_COPY_ERR;
56495 +               DEBUG9_10(printk(
56496 +                   "%s(%ld): inst=%ld req buf verify READ FAILED\n",
56497 +                   __func__, ha->host_no, ha->instance);)
56498 +               return (ret);
56499 +       }
56500 +
56501 +       DEBUG9(printk("%s(%ld): inst=%ld req buf verified. Copying req data.\n",
56502 +           __func__, ha->host_no, ha->instance);)
56503 +
56504 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&tmp_rnid,
56505 +           sizeof(EXT_RNID_REQ))) {
56506 +               /* not enough memory */
56507 +               pext->Status = EXT_STATUS_NO_MEMORY;
56508 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
56509 +                   "size requested=%d.\n",
56510 +                   __func__, ha->host_no, ha->instance,
56511 +                   sizeof(EXT_RNID_REQ));)
56512 +               return (ret);
56513 +       }
56514 +
56515 +       ret = copy_from_user(tmp_rnid, pext->RequestAdr, pext->RequestLen);
56516 +       if (ret) {
56517 +               pext->Status = EXT_STATUS_COPY_ERR;
56518 +               DEBUG9_10(printk(
56519 +                   "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
56520 +                   __func__, ha->host_no, ha->instance, ret);)
56521 +               qla2x00_free_ioctl_scrap_mem(ha);
56522 +               return (ret);
56523 +       }
56524 +
56525 +       /* Find loop ID of the device */
56526 +       fcinitiator = NULL;
56527 +       switch (tmp_rnid->Addr.Type) {
56528 +       case EXT_DEF_TYPE_WWNN:
56529 +
56530 +               DEBUG9(printk("%s(%ld): inst=%ld got node name.\n",
56531 +                   __func__, ha->host_no, ha->instance);)
56532 +
56533 +               fcport = NULL;
56534 +               list_for_each(fcpl, &ha->fcports) {
56535 +                       fcport = list_entry(fcpl, fc_port_t, list);
56536 +
56537 +                       /* if removed or missing */
56538 +                       if (atomic_read(&fcport->state) == FC_ONLINE &&
56539 +                           memcmp((void *)tmp_rnid->Addr.FcAddr.WWNN,
56540 +                           (void *)fcport->node_name,
56541 +                           EXT_DEF_WWN_NAME_SIZE) == 0) {
56542 +                               break;
56543 +                       }
56544 +               }
56545 +               if (fcport != NULL) {
56546 +                       DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; "
56547 +                           "loop_id=%x.\n",
56548 +                           __func__, ha->host_no, ha->instance,
56549 +                           fcport->loop_id);)
56550 +
56551 +                       dev_found = TGT_DEV;
56552 +                       dev_loop_id = fcport->loop_id;
56553 +                       break;
56554 +               }
56555 +
56556 +               found = 0;
56557 +               fcinitiator = NULL;
56558 +               list_for_each(fcil, &ha->fcinitiators) {
56559 +                       fcinitiator = list_entry(fcil, fc_initiator_t, list);
56560 +
56561 +                       if (memcmp(tmp_rnid->Addr.FcAddr.WWNN,
56562 +                                fcinitiator->node_name,
56563 +                                EXT_DEF_WWN_NAME_SIZE) == 0 &&
56564 +                               fcinitiator->d_id.b24 != 0) {
56565 +
56566 +                               found++;
56567 +                               break;
56568 +                       }
56569 +               }
56570 +               if (found) {
56571 +                       DEBUG9(printk("%s(%ld): inst=%ld found host device; "
56572 +                           "loop_id=%x.\n",
56573 +                           __func__, ha->host_no, ha->instance,
56574 +                           fcinitiator->loop_id);)
56575 +
56576 +                       dev_found = HOST_DEV;
56577 +                       dev_loop_id = fcinitiator->loop_id;
56578 +                       break;
56579 +               }
56580 +
56581 +               break;
56582 +
56583 +       case EXT_DEF_TYPE_WWPN:
56584 +               DEBUG9(printk("%s(%ld): inst=%ld got port name.\n",
56585 +                   __func__, ha->host_no, ha->instance);)
56586 +
56587 +               fcport = NULL;
56588 +               list_for_each(fcpl, &ha->fcports) {
56589 +                       fcport = list_entry(fcpl, fc_port_t, list);
56590 +
56591 +                       /* if removed or missing */
56592 +                       if (atomic_read(&fcport->state) == FC_ONLINE &&
56593 +                           memcmp((void *)tmp_rnid->Addr.FcAddr.WWPN,
56594 +                           (void *)fcport->port_name,
56595 +                           EXT_DEF_WWN_NAME_SIZE) == 0) {
56596 +                               break;
56597 +                       }
56598 +               }
56599 +               if (fcport != NULL) {
56600 +                       DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; "
56601 +                           "loop_id=%x.\n",
56602 +                           __func__, ha->host_no, ha->instance,
56603 +                           fcport->loop_id);)
56604 +
56605 +                       dev_found = TGT_DEV; /* target device */
56606 +                       dev_loop_id = fcport->loop_id;
56607 +                       break;
56608 +               }
56609 +
56610 +               found = 0;
56611 +               fcinitiator = NULL;
56612 +               list_for_each(fcil, &ha->fcinitiators) {
56613 +                       fcinitiator = list_entry(fcil, fc_initiator_t, list);
56614 +
56615 +                       if (memcmp(tmp_rnid->Addr.FcAddr.WWPN,
56616 +                                fcinitiator->port_name,
56617 +                                EXT_DEF_WWN_NAME_SIZE) == 0 &&
56618 +                               fcinitiator->d_id.b24 != 0) {
56619 +
56620 +                               found++;
56621 +                               break;
56622 +                       }
56623 +               }
56624 +               if (found) {
56625 +                       DEBUG9(printk("%s(%ld): inst=%ld found host device; "
56626 +                           "loop_id=%x.\n",
56627 +                           __func__, ha->host_no, ha->instance,
56628 +                           fcinitiator->loop_id);)
56629 +
56630 +                       dev_found = HOST_DEV;
56631 +                       dev_loop_id = fcinitiator->loop_id;
56632 +                       break;
56633 +               }
56634 +
56635 +               break;
56636 +
56637 +       case EXT_DEF_TYPE_PORTID:
56638 +               DEBUG9(printk("%s(%ld): inst=%ld got port ID.\n",
56639 +                   __func__, ha->host_no, ha->instance);)
56640 +
56641 +               /* PORTID bytes entered must already be big endian */
56642 +               fcport = NULL;
56643 +               list_for_each(fcpl, &ha->fcports) {
56644 +                       fcport = list_entry(fcpl, fc_port_t, list);
56645 +
56646 +                       /* if removed or missing */
56647 +                       if (atomic_read(&fcport->state) == FC_ONLINE &&
56648 +                           memcmp((void *)&tmp_rnid->Addr.FcAddr.Id[1],
56649 +                           (void *)(fcport->d_id.r.d_id),
56650 +                           EXT_DEF_PORTID_SIZE_ACTUAL) == 0) {
56651 +                               break;
56652 +                       }
56653 +               }
56654 +               if (fcport != NULL) {
56655 +                       DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; "
56656 +                           "loop_id=%x.\n",
56657 +                           __func__, ha->host_no, ha->instance,
56658 +                           fcport->loop_id);)
56659 +
56660 +                       dev_found = TGT_DEV; /* target device */
56661 +                       dev_loop_id = fcport->loop_id;
56662 +                       break;
56663 +               }
56664 +
56665 +               found = 0;
56666 +               fcinitiator = NULL;
56667 +               list_for_each(fcil, &ha->fcinitiators) {
56668 +                       fcinitiator = list_entry(fcil, fc_initiator_t, list);
56669 +
56670 +                       if (memcmp(&tmp_rnid->Addr.FcAddr.Id[1],
56671 +                               &fcinitiator->d_id,
56672 +                               EXT_DEF_PORTID_SIZE_ACTUAL) == 0) {
56673 +
56674 +                               found++;
56675 +                               break;
56676 +                       }
56677 +               }
56678 +               if (found) {
56679 +                       DEBUG9(printk("%s(%ld): inst=%ld found host device; "
56680 +                           "loop_id=%x.\n",
56681 +                           __func__, ha->host_no, ha->instance,
56682 +                           fcinitiator->loop_id);)
56683 +
56684 +                       dev_found = HOST_DEV;
56685 +                       dev_loop_id = fcinitiator->loop_id;
56686 +                       break;
56687 +               }
56688 +
56689 +               break;
56690 +       default:
56691 +               /* parameter error */
56692 +               pext->Status = EXT_STATUS_INVALID_PARAM;
56693 +               DEBUG9_10(printk("%s(%ld): inst=%ld invalid addressing type.\n",
56694 +                   __func__, ha->host_no, ha->instance);)
56695 +               qla2x00_free_ioctl_scrap_mem(ha);
56696 +               return (ret);
56697 +       }
56698 +
56699 +       if (!dev_found ||
56700 +           (dev_found == TGT_DEV && dev_loop_id > LAST_SNS_LOOP_ID)) {
56701 +               /* No matching device or the target device is not
56702 +                * configured; just return error.
56703 +                */
56704 +               pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56705 +               DEBUG9_10(printk(
56706 +                   "%s(%ld): inst=%ld device not found. dev_found=%d "
56707 +                   "dev_loop_id=%x.\n",
56708 +                   __func__, ha->host_no, ha->instance, dev_found,
56709 +                   dev_loop_id);)
56710 +               qla2x00_free_ioctl_scrap_mem(ha);
56711 +               return (ret);
56712 +       }
56713 +
56714 +       /* check on loop down */
56715 +       if (ha->loop_state != LOOP_READY || 
56716 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
56717 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
56718 +           ABORTS_ACTIVE || ha->dpc_active) {
56719 +
56720 +               pext->Status = EXT_STATUS_BUSY;
56721 +               DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
56722 +                   __func__, ha->host_no, ha->instance);)
56723 +
56724 +               qla2x00_free_ioctl_scrap_mem(ha);
56725 +               return (ret);
56726 +       }
56727 +
56728 +       /* Check whether we need to login first. */
56729 +       if (dev_found == HOST_DEV && dev_loop_id > LAST_SNS_LOOP_ID) {
56730 +               /*
56731 +                * Search for a usable loop ID before try to login to it.
56732 +                */
56733 +               if ((dev_loop_id &= ~PORT_LOST_ID) > LAST_SNS_LOOP_ID) {
56734 +                       /* Just start searching from first possible ID. */
56735 +                       dev_loop_id = ha->min_external_loopid;
56736 +               }
56737 +               for (;;) {
56738 +                       if (ha->fabricid[dev_loop_id].in_use == TRUE) {
56739 +                               dev_loop_id++;
56740 +                       } else {
56741 +                               ha->fabricid[dev_loop_id].in_use = TRUE;
56742 +                               break;
56743 +                       }
56744 +               }
56745 +
56746 +               DEBUG9(printk("%s(%ld): inst=%ld try relogin to host dev; "
56747 +                   "dev_loop_id=%x.\n",
56748 +                   __func__, ha->host_no, ha->instance, dev_loop_id);)
56749 +
56750 +               for (;;) {
56751 +                       if (dev_loop_id > LAST_SNS_LOOP_ID) {
56752 +                               /* error */
56753 +                               DEBUG10(printk("%s(%ld): inst=%ld "
56754 +                                   "no valid loop_id for login.\n",
56755 +                                   __func__, ha->host_no, ha->instance);)
56756 +
56757 +                               break;
56758 +                       }
56759 +
56760 +                       qla2x00_login_fabric(ha, 
56761 +                           dev_loop_id,
56762 +                           fcinitiator->d_id.b.domain,
56763 +                           fcinitiator->d_id.b.area,
56764 +                           fcinitiator->d_id.b.al_pa,
56765 +                           &mb[0], 0);
56766 +
56767 +                       if (mb[0] != MBS_CMD_CMP &&
56768 +                           mb[0] != MBS_PORT_ID_IN_USE &&
56769 +                           mb[0] != MBS_LOOP_ID_IN_USE) {
56770 +
56771 +                               DEBUG10(printk("%s(%ld): inst=%ld "
56772 +                                   "ERROR login mb[0]=%x mb[1]=%x.\n",
56773 +                                   __func__, ha->host_no, ha->instance,
56774 +                                   mb[0], mb[1]);)
56775 +                               break;
56776 +                       }
56777 +
56778 +                       if (mb[0] == MBS_CMD_CMP) {
56779 +                               DEBUG9(printk("%s(%ld): inst=%ld host login "
56780 +                                   "success; loop_id=%x.\n",
56781 +                                   __func__, ha->host_no, ha->instance,
56782 +                                   dev_loop_id);)
56783 +
56784 +                               fcinitiator->loop_id = dev_loop_id;
56785 +                               break;
56786 +                       } else if (mb[0] == MBS_PORT_ID_IN_USE) {
56787 +                               ha->fabricid[dev_loop_id].in_use = FALSE;
56788 +                               dev_loop_id = mb[1];
56789 +
56790 +                               DEBUG9(printk("%s(%ld): inst=%ld "
56791 +                                   "port %02x%02x%02x using loop id=0x%04x.\n",
56792 +                                   __func__, ha->host_no, ha->instance,
56793 +                                   fcinitiator->d_id.b.domain,
56794 +                                   fcinitiator->d_id.b.area,
56795 +                                   fcinitiator->d_id.b.al_pa,
56796 +                                   dev_loop_id);)
56797 +
56798 +                               if (dev_loop_id <= LAST_SNS_LOOP_ID)
56799 +                                       ha->fabricid[dev_loop_id].in_use = TRUE;
56800 +                               else
56801 +                                       /* Error */
56802 +                                       break;
56803 +
56804 +                       } else if (mb[0] == MBS_LOOP_ID_IN_USE) {
56805 +                               /* Search for another usable loop_id */
56806 +                               dev_loop_id++;
56807 +                               while (ha->fabricid[dev_loop_id].in_use) {
56808 +                                       if (dev_loop_id++ > LAST_SNS_LOOP_ID) {
56809 +                                               /* Error */
56810 +                                               break;
56811 +                                       }
56812 +                               }
56813 +
56814 +                               if (dev_loop_id <= LAST_SNS_LOOP_ID) {
56815 +                                       DEBUG9(printk(
56816 +                                           "%s(%ld): inst=%ld previous loop "
56817 +                                           "id in use. Retry with 0x%04x.\n",
56818 +                                           __func__, ha->host_no, ha->instance,
56819 +                                           dev_loop_id);)
56820 +
56821 +                                       ha->fabricid[dev_loop_id].in_use = TRUE;
56822 +                               } else {
56823 +                                       /* Error */
56824 +                                       break;
56825 +                               }
56826 +                       }
56827 +               }
56828 +
56829 +               if (mb[0] != MBS_CMD_CMP) {
56830 +                       pext->Status = EXT_STATUS_ERR;
56831 +                       DEBUG9_10(printk( "%s(%ld): inst=%ld login failed.\n",
56832 +                           __func__, ha->host_no, ha->instance);)
56833 +
56834 +                       qla2x00_free_ioctl_scrap_mem(ha);
56835 +                       return (ret);
56836 +               }
56837 +       }
56838 +
56839 +       /* Send command */
56840 +       DEBUG9(printk("%s(%ld): inst=%ld sending rnid cmd.\n",
56841 +           __func__, ha->host_no, ha->instance);)
56842 +
56843 +       ret = qla2x00_send_rnid_mbx(ha, dev_loop_id,
56844 +           (uint8_t)tmp_rnid->DataFormat, ha->ioctl_mem_phys,
56845 +           SEND_RNID_RSP_SIZE, &mb[0]);
56846 +
56847 +       if (ret != QLA2X00_SUCCESS) {
56848 +               /* error */
56849 +               pext->Status = EXT_STATUS_ERR;
56850 +
56851 +                DEBUG9_10(printk("%s(%ld): inst=%ld FAILED. rval = %x.\n",
56852 +                    __func__, ha->host_no, ha->instance, mb[0]);)
56853 +               qla2x00_free_ioctl_scrap_mem(ha);
56854 +               return (ret);
56855 +       }
56856 +
56857 +       DEBUG9(printk("%s(%ld): inst=%ld rnid cmd sent ok.\n",
56858 +           __func__, ha->host_no, ha->instance);)
56859 +
56860 +       /* Copy the response */
56861 +       copy_len = (pext->ResponseLen > SEND_RNID_RSP_SIZE) ?
56862 +           SEND_RNID_RSP_SIZE : pext->ResponseLen;
56863 +
56864 +       ret = verify_area(VERIFY_WRITE, (void  *)pext->ResponseAdr,
56865 +           copy_len);
56866 +
56867 +       if (ret != 0) {
56868 +               pext->Status = EXT_STATUS_COPY_ERR;
56869 +               DEBUG9_10(printk(
56870 +                   "%s(%ld): inst=%ld rsp buf verify WRITE error\n",
56871 +                   __func__, ha->host_no, ha->instance);)
56872 +       } else {
56873 +               ret = copy_to_user((uint8_t *)pext->ResponseAdr,
56874 +                   (uint8_t *)ha->ioctl_mem, copy_len);
56875 +               if (ret) {
56876 +                       pext->Status = EXT_STATUS_COPY_ERR;
56877 +                       DEBUG9_10(printk(
56878 +                           "%s(%ld): inst=%ld ERROR copy rsp buf\n",
56879 +                           __func__, ha->host_no, ha->instance);)
56880 +                       qla2x00_free_ioctl_scrap_mem(ha);
56881 +                       return (ret);
56882 +               }
56883 +
56884 +               if (SEND_RNID_RSP_SIZE > pext->ResponseLen) {
56885 +                       pext->Status = EXT_STATUS_DATA_OVERRUN;
56886 +                       DEBUG9(printk("%s(%ld): inst=%ld data overrun. "
56887 +                           "exiting normally.\n",
56888 +                           __func__, ha->host_no, ha->instance);)
56889 +               } else {
56890 +                       pext->Status = EXT_STATUS_OK;
56891 +                       DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n",
56892 +                           __func__, ha->host_no, ha->instance);)
56893 +               }
56894 +               pext->ResponseLen = copy_len;
56895 +       }
56896 +
56897 +       qla2x00_free_ioctl_scrap_mem(ha);
56898 +       return (ret);
56899 +}
56900 +
56901 +/*
56902 + * qla2x00_get_rnid_params
56903 + *     IOCTL to get RNID parameters of the adapter.
56904 + *
56905 + * Input:
56906 + *     ha = adapter state pointer.
56907 + *     pext = User space CT arguments pointer.
56908 + *     mode = flags.
56909 + *
56910 + * Returns:
56911 + *     0 = success
56912 + *     others = errno value
56913 + *
56914 + * Context:
56915 + *     Kernel context.
56916 + */
56917 +static int
56918 +qla2x00_get_rnid_params(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
56919 +{
56920 +       int             ret = 0;
56921 +       int             tmp_rval = 0;
56922 +       uint32_t        copy_len;
56923 +       uint16_t        mb[MAILBOX_REGISTER_COUNT];
56924 +
56925 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
56926 +           __func__, ha->host_no, ha->instance);)
56927 +
56928 +       /* check on loop down */
56929 +       if (ha->loop_state != LOOP_READY || 
56930 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
56931 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
56932 +           ABORTS_ACTIVE || ha->dpc_active) {
56933 +
56934 +               pext->Status = EXT_STATUS_BUSY;
56935 +               DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
56936 +                   __func__, ha->host_no, ha->instance);)
56937 +
56938 +               return (ret);
56939 +       }
56940 +
56941 +       /* Send command */
56942 +       tmp_rval = qla2x00_get_rnid_params_mbx(ha, ha->ioctl_mem_phys,
56943 +           sizeof(EXT_RNID_DATA), &mb[0]);
56944 +
56945 +       if (tmp_rval != QLA2X00_SUCCESS) {
56946 +               /* error */
56947 +               pext->Status = EXT_STATUS_ERR;
56948 +
56949 +               DEBUG9_10(printk("%s(%ld): inst=%ld cmd FAILED=%x.\n",
56950 +                   __func__, ha->host_no, ha->instance, mb[0]);)
56951 +               return (ret);
56952 +       }
56953 +
56954 +       /* Copy the response */
56955 +       copy_len = (pext->ResponseLen > sizeof(EXT_RNID_DATA)) ?
56956 +           (uint32_t)sizeof(EXT_RNID_DATA) : pext->ResponseLen;
56957 +       ret = verify_area(VERIFY_WRITE, (void  *)pext->ResponseAdr,
56958 +           copy_len);
56959 +
56960 +       if (ret != 0) {
56961 +               pext->Status = EXT_STATUS_COPY_ERR;
56962 +               DEBUG9_10(printk("%s(%ld): inst=%ld verify WRITE rsp buf error\n",
56963 +                   __func__, ha->host_no, ha->instance);)
56964 +       } else {
56965 +               ret = copy_to_user((void *)pext->ResponseAdr,
56966 +                   (void *)ha->ioctl_mem, copy_len);
56967 +               if (ret) {
56968 +                       pext->Status = EXT_STATUS_COPY_ERR;
56969 +                       DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buf\n",
56970 +                           __func__, ha->host_no, ha->instance);)
56971 +                       return (ret);
56972 +               }
56973 +
56974 +               pext->ResponseLen = copy_len;
56975 +               if (copy_len < sizeof(EXT_RNID_DATA)) {
56976 +                       pext->Status = EXT_STATUS_DATA_OVERRUN;
56977 +                       DEBUG9_10(printk("%s(%ld): inst=%ld data overrun. "
56978 +                           "exiting normally.\n",
56979 +                           __func__, ha->host_no, ha->instance);)
56980 +               } else if (pext->ResponseLen > sizeof(EXT_RNID_DATA)) {
56981 +                       pext->Status = EXT_STATUS_DATA_UNDERRUN;
56982 +                       DEBUG9_10(printk("%s(%ld): inst=%ld data underrun. "
56983 +                           "exiting normally.\n",
56984 +                           __func__, ha->host_no, ha->instance);)
56985 +               } else {
56986 +                       pext->Status = EXT_STATUS_OK;
56987 +                       DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n",
56988 +                           __func__, ha->host_no, ha->instance);)
56989 +               }
56990 +       }
56991 +
56992 +       return (ret);
56993 +}
56994 +
56995 +/*
56996 + * qla2x00_set_host_data
56997 + *     IOCTL command to set host/adapter related data.
56998 + *
56999 + * Input:
57000 + *     ha = adapter state pointer.
57001 + *     pext = User space CT arguments pointer.
57002 + *     mode = flags.
57003 + *
57004 + * Returns:
57005 + *     0 = success
57006 + *     others = errno value
57007 + *
57008 + * Context:
57009 + *     Kernel context.
57010 + */
57011 +static int
57012 +qla2x00_set_host_data(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
57013 +{
57014 +       int     ret = 0;
57015 +
57016 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57017 +           __func__, ha->host_no, ha->instance);)
57018 +
57019 +       /* check on loop down */
57020 +       if (ha->loop_state != LOOP_READY || 
57021 +           test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
57022 +           (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
57023 +           ABORTS_ACTIVE || ha->dpc_active) {
57024 +
57025 +               pext->Status = EXT_STATUS_BUSY;
57026 +               DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
57027 +                   __func__, ha->host_no, ha->instance);)
57028 +
57029 +               return (ret);
57030 +       }
57031 +
57032 +       /* switch on command subcode */
57033 +       switch (pext->SubCode) {
57034 +       case EXT_SC_SET_RNID:
57035 +               ret = qla2x00_set_rnid_params(ha, pext, mode);
57036 +               break;
57037 +       default:
57038 +               /* function not supported. */
57039 +               pext->Status = EXT_STATUS_UNSUPPORTED_SUBCODE;
57040 +               break;
57041 +       }
57042 +
57043 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
57044 +           __func__, ha->host_no, ha->instance);)
57045 +
57046 +       return (ret);
57047 +}
57048 +
57049 +/*
57050 + * qla2x00_set_rnid_params
57051 + *     IOCTL to set RNID parameters of the adapter.
57052 + *
57053 + * Input:
57054 + *     ha = adapter state pointer.
57055 + *     pext = User space CT arguments pointer.
57056 + *     mode = flags.
57057 + *
57058 + * Returns:
57059 + *     0 = success
57060 + *     others = errno value
57061 + *
57062 + * Context:
57063 + *     Kernel context.
57064 + */
57065 +static int
57066 +qla2x00_set_rnid_params(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
57067 +{
57068 +       EXT_SET_RNID_REQ        *tmp_set;
57069 +       EXT_RNID_DATA   *tmp_buf;
57070 +       int             ret = 0;
57071 +       int             tmp_rval = 0;
57072 +       uint16_t        mb[MAILBOX_REGISTER_COUNT];
57073 +
57074 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57075 +           __func__, ha->host_no, ha->instance);)
57076 +
57077 +       if (pext->RequestLen != sizeof(EXT_SET_RNID_REQ)) {
57078 +               /* parameter error */
57079 +               pext->Status = EXT_STATUS_INVALID_PARAM;
57080 +               DEBUG9_10(printk("%s(%ld): inst=%ld invalid request length.\n",
57081 +                   __func__, ha->host_no, ha->instance);)
57082 +               return(ret);
57083 +       }
57084 +
57085 +       ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
57086 +           pext->RequestLen);
57087 +
57088 +       if (ret != 0) {
57089 +               pext->Status = EXT_STATUS_COPY_ERR;
57090 +               DEBUG9_10(printk("%s(%ld): inst=%ld verify READ request buf.\n",
57091 +                   __func__, ha->host_no, ha->instance);)
57092 +               return(ret);
57093 +       }
57094 +
57095 +       if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&tmp_set,
57096 +           sizeof(EXT_SET_RNID_REQ))) {
57097 +               /* not enough memory */
57098 +               pext->Status = EXT_STATUS_NO_MEMORY;
57099 +               DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
57100 +                   "size requested=%d.\n",
57101 +                   __func__, ha->host_no, ha->instance,
57102 +                   sizeof(EXT_SET_RNID_REQ));)
57103 +               return (ret);
57104 +       }
57105 +
57106 +       ret = copy_from_user(tmp_set, pext->RequestAdr, pext->RequestLen);
57107 +       if (ret) {
57108 +               pext->Status = EXT_STATUS_COPY_ERR;
57109 +               DEBUG9_10(printk(
57110 +                   "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n", 
57111 +                   __func__, ha->host_no, ha->instance, ret);)
57112 +               qla2x00_free_ioctl_scrap_mem(ha);
57113 +               return(ret);
57114 +       }
57115 +
57116 +       tmp_rval = qla2x00_get_rnid_params_mbx(ha, ha->ioctl_mem_phys,
57117 +           sizeof(EXT_RNID_DATA), &mb[0]);
57118 +       if (tmp_rval != QLA2X00_SUCCESS) {
57119 +               /* error */
57120 +               pext->Status = EXT_STATUS_ERR;
57121 +
57122 +                DEBUG9_10(printk("%s(%ld): inst=%ld read cmd FAILED=%x.\n",
57123 +                    __func__, ha->host_no, ha->instance, mb[0]);)
57124 +               qla2x00_free_ioctl_scrap_mem(ha);
57125 +               return (ret);
57126 +       }
57127 +
57128 +       tmp_buf = (EXT_RNID_DATA *)ha->ioctl_mem;
57129 +       /* Now set the params. */
57130 +       memcpy(tmp_buf->IPVersion, tmp_set->IPVersion, 2);
57131 +       memcpy(tmp_buf->UDPPortNumber, tmp_set->UDPPortNumber, 2);
57132 +       memcpy(tmp_buf->IPAddress, tmp_set->IPAddress, 16);
57133 +       tmp_rval = qla2x00_set_rnid_params_mbx(ha, ha->ioctl_mem_phys,
57134 +           sizeof(EXT_RNID_DATA), &mb[0]);
57135 +
57136 +       if (tmp_rval != QLA2X00_SUCCESS) {
57137 +               /* error */
57138 +               pext->Status = EXT_STATUS_ERR;
57139 +
57140 +               DEBUG9_10(printk("%s(%ld): inst=%ld set cmd FAILED=%x.\n",
57141 +                   __func__, ha->host_no, ha->instance, mb[0]);)
57142 +       } else {
57143 +               pext->Status = EXT_STATUS_OK;
57144 +               DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n",
57145 +                   __func__, ha->host_no, ha->instance);)
57146 +       }
57147 +
57148 +       qla2x00_free_ioctl_scrap_mem(ha);
57149 +       return (ret);
57150 +}
57151 +
57152 +/*
57153 + * qla2x00_waitq_sem_timeout
57154 + *     Timeout function to be called when a thread on the wait_q
57155 + *     queue timed out.
57156 + *
57157 + * Input:
57158 + *     data = data pointer for timeout function.
57159 + *
57160 + * Returns:
57161 + *     qla2x00 local function return status code.
57162 + *
57163 + * Context:
57164 + *     Kernel context.
57165 + */
57166 +static void
57167 +qla2x00_waitq_sem_timeout(unsigned long data)
57168 +{
57169 +       wait_q_t *tmp_ptr = (wait_q_t *)data;
57170 +
57171 +       DEBUG9(printk("%s: entered.\n", __func__);)
57172 +
57173 +       if (tmp_ptr != NULL) {
57174 +               DEBUG9(printk("%s: wait_q thread=%p.\n", __func__, tmp_ptr);)
57175 +               up(&tmp_ptr->wait_q_sem);
57176 +       }
57177 +
57178 +       DEBUG9(printk("%s: exiting.\n", __func__);)
57179 +
57180 +}
57181 +
57182 +/*
57183 + * qla2x00_get_ioctl_access
57184 + *     Serialization routine for the ioctl commands.
57185 + *     When succeeded the exiting thread gains "access" and
57186 + *     proceeds, otherwise it gives up and returns error.
57187 + *     Each thread would wait tov seconds before giving up.
57188 + *
57189 + * Input:
57190 + *     ha = adapter state pointer.
57191 + *     tov = timeout value in seconds
57192 + *
57193 + * Returns:
57194 + *     qla2x00 local function return status code.
57195 + *
57196 + * Context:
57197 + *     Kernel context.
57198 + */
57199 +static uint8_t
57200 +qla2x00_get_ioctl_access(scsi_qla_host_t *ha, uint32_t tov)
57201 +{
57202 +       int             prev_val = 1;
57203 +       uint8_t         rval = QL_STATUS_SUCCESS;
57204 +       unsigned long   cpu_flags;
57205 +       struct timer_list       tmp_access_timer;
57206 +       wait_q_t        *ptmp_wq = NULL;
57207 +
57208 +
57209 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57210 +           __func__, ha->host_no, ha->instance);)
57211 +
57212 +       while (1) {
57213 +               if (test_bit(IOCTL_WANT, (void *)&(ha->ioctl->access_bits)) ==
57214 +                   0) {
57215 +
57216 +                       DEBUG9(printk("%s(%ld): going to test access_bits.\n",
57217 +                           __func__, ha->host_no);)
57218 +
57219 +                       /* No one else is waiting. Go ahead and try to
57220 +                        * get access.
57221 +                        */
57222 +                       if ((prev_val = test_and_set_bit(IOCTL_ACTIVE,
57223 +                           (void *)&ha->ioctl->access_bits)) == 0) {
57224 +                               break;
57225 +                       }
57226 +               }
57227 +
57228 +               /* wait for previous command to finish */
57229 +               DEBUG9(printk("%s(%ld): inst=%ld access_bits=%x. busy. "
57230 +                   "Waiting for access. curr time=0x%lx.\n",
57231 +                   __func__, ha->host_no, ha->instance,
57232 +                   ha->ioctl->access_bits, jiffies);)
57233 +
57234 +               /*
57235 +                * Init timer and get semaphore from wait_q. if we got valid
57236 +                * semaphore pointer the IOCTL_WANT flag would also had
57237 +                * been set.
57238 +                */
57239 +               qla2x00_wait_q_add(ha, &ptmp_wq);
57240 +
57241 +               if (ptmp_wq == NULL) {
57242 +                       /* queue full? problem? can't proceed. */
57243 +                       DEBUG9_10(printk("%s(%ld): ERROR no more wait_q "
57244 +                           "allowed. exiting.\n", __func__, ha->host_no);)
57245 +
57246 +                       break;
57247 +               }
57248 +
57249 +               init_timer(&tmp_access_timer);
57250 +
57251 +               tmp_access_timer.data = (unsigned long)ptmp_wq;
57252 +               tmp_access_timer.function =
57253 +                   (void (*)(unsigned long))qla2x00_waitq_sem_timeout;
57254 +               tmp_access_timer.expires = jiffies + tov * HZ;
57255 +
57256 +               DEBUG9(printk("%s(%ld): adding timer. "
57257 +                   "curr time=0x%lx timeoutval=0x%lx.\n",
57258 +                   __func__, ha->host_no, jiffies, tmp_access_timer.expires);)
57259 +
57260 +               /* wait. */
57261 +               add_timer(&tmp_access_timer);
57262 +
57263 +               DEBUG9(printk("%s(%ld): inst=%ld wait_q %p going to sleep. "
57264 +                   "current time=0x%lx.\n",
57265 +                   __func__, ha->host_no, ha->instance, ptmp_wq, jiffies);)
57266 +
57267 +               down_interruptible(&ptmp_wq->wait_q_sem);
57268 +
57269 +               DEBUG9(printk("%s(%ld): inst=%ld wait_q %p woke up. current "
57270 +                   "time=0x%lx.\n",
57271 +                   __func__, ha->host_no, ha->instance, ptmp_wq, jiffies);)
57272 +
57273 +               del_timer(&tmp_access_timer);
57274 +
57275 +               /* try to get lock again. we'll test later to see
57276 +                * if we actually got the lock.
57277 +                */
57278 +               prev_val = test_and_set_bit(IOCTL_ACTIVE,
57279 +                   (void *)&(ha->ioctl->access_bits));
57280 +
57281 +               /*
57282 +                * After we tried to get access then we check to see
57283 +                * if we need to clear the IOCTL_WANT flag. Don't clear
57284 +                * this flag before trying to get access or another
57285 +                * new thread might grab it before we did.
57286 +                */
57287 +               spin_lock_irqsave(&ha->ioctl->wait_q_lock, cpu_flags);
57288 +               if (prev_val != 0) {
57289 +                       /* We'll return with error.
57290 +                        * Make sure we remove ourselves from wait_q.
57291 +                        */
57292 +                       qla2x00_wait_q_remove(ha, ptmp_wq);
57293 +               }
57294 +               if (ha->ioctl->wait_q_head == NULL) {
57295 +                       /* We're the last thread in wait_q queue. */
57296 +                       clear_bit(IOCTL_WANT, (void *)&ha->ioctl->access_bits);
57297 +               }
57298 +               qla2x00_wait_q_memb_free(ha, ptmp_wq);
57299 +               spin_unlock_irqrestore(&ha->ioctl->wait_q_lock, cpu_flags);
57300 +
57301 +               break;
57302 +       }
57303 +
57304 +       if (prev_val == 0) {
57305 +               /* We got the lock */
57306 +
57307 +               DEBUG9(printk("%s(%ld): inst=%ld got access.\n",
57308 +                   __func__, ha->host_no, ha->instance);)
57309 +
57310 +       } else {
57311 +               /* Timeout or resource error. */
57312 +               DEBUG9_10(printk("%s(%ld): inst=%ld timed out "
57313 +                   "or wait_q error.\n", __func__, ha->host_no, ha->instance);)
57314 +
57315 +               rval = QL_STATUS_TIMEOUT;
57316 +       }
57317 +
57318 +       return (rval);
57319 +}
57320 +
57321 +/*
57322 + * qla2x00_release_ioctl_access
57323 + *     Serialization routine for the ioctl commands.
57324 + *     This releases "access" and checks on wai_q queue. If there's
57325 + *     another thread waiting then wakes it up.
57326 + *
57327 + * Input:
57328 + *     ha = adapter state pointer.
57329 + *     tov = timeout value in seconds
57330 + *
57331 + * Returns:
57332 + *     qla2x00 local function return status code.
57333 + *
57334 + * Context:
57335 + *     Kernel context.
57336 + */
57337 +static uint8_t
57338 +qla2x00_release_ioctl_access(scsi_qla_host_t *ha)
57339 +{
57340 +       wait_q_t        *next_thread = NULL;
57341 +
57342 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57343 +           __func__, ha->host_no, ha->instance);)
57344 +
57345 +       clear_bit(IOCTL_ACTIVE, (void *)&(ha->ioctl->access_bits));
57346 +
57347 +       /* Wake up one pending ioctl thread in wait_q */
57348 +       qla2x00_wait_q_get_next(ha, &next_thread);
57349 +       if (next_thread) {
57350 +               DEBUG9(printk(
57351 +                   "%s(%ld): inst=%ld found wait_q. Wake up waitq %p\n",
57352 +                   __func__, ha->host_no, ha->instance, &next_thread);)
57353 +               up(&next_thread->wait_q_sem);
57354 +       }
57355 +
57356 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
57357 +           __func__, ha->host_no, ha->instance);)
57358 +
57359 +       return QL_STATUS_SUCCESS;
57360 +}
57361 +
57362 +/*
57363 + * qla2x00_wait_q_memb_alloc
57364 + *     Finds a free wait_q member from the array. Must already got the
57365 + *     wait_q_lock spinlock.
57366 + *
57367 + * Input:
57368 + *     ha = adapter state pointer.
57369 + *
57370 + * Returns:
57371 + *     qla2x00 local function return status code.
57372 + *
57373 + * Context:
57374 + *     Kernel context.
57375 + */
57376 +static void
57377 +qla2x00_wait_q_memb_alloc(scsi_qla_host_t *ha, wait_q_t **ret_wait_q_memb)
57378 +{
57379 +       uint8_t         i;
57380 +       wait_q_t        *ptmp = NULL;
57381 +
57382 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57383 +           __func__, ha->host_no, ha->instance);)
57384 +
57385 +       for (i = 0; i < MAX_IOCTL_WAIT_THREADS; i++) {
57386 +               if (!(ha->ioctl->wait_q_arr[i].flags & WQ_IN_USE)) {
57387 +                       ha->ioctl->wait_q_arr[i].flags |= WQ_IN_USE;
57388 +                       ptmp = &ha->ioctl->wait_q_arr[i];
57389 +                       break;
57390 +               }
57391 +       }
57392 +
57393 +       *ret_wait_q_memb = ptmp;
57394 +
57395 +       DEBUG9(printk("%s(%ld): inst=%ld return waitq_memb=%p.\n",
57396 +           __func__, ha->host_no, ha->instance, *ret_wait_q_memb);)
57397 +}
57398 +
57399 +/*
57400 + * qla2x00_wait_q_memb_free
57401 + *     Frees the specified wait_q member. Must already got the wait_q_lock
57402 + *     spinlock.
57403 + *
57404 + * Input:
57405 + *     ha = adapter state pointer.
57406 + *
57407 + * Returns:
57408 + *     qla2x00 local function return status code.
57409 + *
57410 + * Context:
57411 + *     Kernel context.
57412 + */
57413 +static void
57414 +qla2x00_wait_q_memb_free(scsi_qla_host_t *ha, wait_q_t *pfree_wait_q_memb)
57415 +{
57416 +       DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57417 +           __func__, ha->host_no, ha->instance);)
57418 +
57419 +       if (pfree_wait_q_memb != NULL) {
57420 +               DEBUG9(printk("%s(%ld): freeing %p.\n",
57421 +                   __func__, ha->host_no, pfree_wait_q_memb);)
57422 +               pfree_wait_q_memb->flags &= ~WQ_IN_USE;
57423 +       }
57424 +
57425 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
57426 +           __func__, ha->host_no, ha->instance);)
57427 +}
57428 +
57429 +/*
57430 + * qla2x00_wait_q_add
57431 + *     Allocates a wait_q_t struct and add to the wait_q list.
57432 + *
57433 + * Input:
57434 + *     ha = adapter state pointer.
57435 + *
57436 + * Returns:
57437 + *     qla2x00 local function return status code.
57438 + *
57439 + * Context:
57440 + *     Kernel context.
57441 + */
57442 +static uint8_t
57443 +qla2x00_wait_q_add(scsi_qla_host_t *ha, wait_q_t **ret_wq)
57444 +{
57445 +       uint8_t         rval = QL_STATUS_SUCCESS;
57446 +       unsigned long   cpu_flags;
57447 +       wait_q_t        *ptmp = NULL;
57448 +
57449 +       spin_lock_irqsave(&ha->ioctl->wait_q_lock, cpu_flags);
57450 +
57451 +       DEBUG9(printk("%s(%ld): inst=%ld got wait_q spinlock.\n",
57452 +           __func__, ha->host_no, ha->instance);)
57453 +
57454 +       qla2x00_wait_q_memb_alloc(ha, &ptmp);
57455 +       if (ptmp == NULL) {
57456 +               /* can't add any more threads */
57457 +               DEBUG9_10(printk("%s(%ld): inst=%ld ERROR no more ioctl "
57458 +                   "threads allowed.\n",
57459 +                   __func__, ha->host_no, ha->instance);)
57460 +
57461 +               rval = QL_STATUS_RESOURCE_ERROR;
57462 +       } else {
57463 +               if (ha->ioctl->wait_q_tail == NULL) {
57464 +                       /* First thread to queue. */
57465 +                       set_bit(IOCTL_WANT, (void *)&ha->ioctl->access_bits);
57466 +
57467 +                       ha->ioctl->wait_q_head = ptmp;
57468 +               } else {
57469 +                       ha->ioctl->wait_q_tail->pnext = ptmp;
57470 +               }
57471 +               ha->ioctl->wait_q_tail = ptmp;
57472 +
57473 +               *ret_wq = ptmp;
57474 +
57475 +               /* Now init the semaphore */
57476 +
57477 +               init_MUTEX_LOCKED(&ptmp->wait_q_sem);
57478 +
57479 +               rval = QL_STATUS_SUCCESS;
57480 +       }
57481 +
57482 +       DEBUG9(printk("%s(%ld): inst=%ld going to release spinlock. "
57483 +           "ret_wq=%p, rval=%d.\n",
57484 +           __func__, ha->host_no, ha->instance, *ret_wq, rval);)
57485 +
57486 +       spin_unlock_irqrestore(&ha->ioctl->wait_q_lock, cpu_flags);
57487 +
57488 +       return rval;
57489 +}
57490 +
57491 +/*
57492 + * qla2x00_wait_q_get_next
57493 + *     This just removes one member from head of wait_q.
57494 + *
57495 + * Input:
57496 + *     ha = adapter state pointer.
57497 + *
57498 + * Returns:
57499 + *     qla2x00 local function return status code.
57500 + *
57501 + * Context:
57502 + *     Kernel context.
57503 + */
57504 +static void
57505 +qla2x00_wait_q_get_next(scsi_qla_host_t *ha, wait_q_t **ret_wq)
57506 +{
57507 +       unsigned long   cpu_flags;
57508 +
57509 +       if (test_bit(IOCTL_ACTIVE, (void *)&(ha->ioctl->access_bits)) != 0) {
57510 +               /* Another thread just became active. Exit. */
57511 +               *ret_wq = NULL;
57512 +               return;
57513 +       }
57514 +
57515 +       /* Find the next thread to wake up */
57516 +       spin_lock_irqsave(&ha->ioctl->wait_q_lock, cpu_flags);
57517 +
57518 +       DEBUG9(printk("%s(%ld): inst=%ld got wait_q spinlock.\n",
57519 +           __func__, ha->host_no, ha->instance);)
57520 +
57521 +       /* Remove from head */
57522 +       *ret_wq = ha->ioctl->wait_q_head;
57523 +       if (ha->ioctl->wait_q_head != NULL) {
57524 +
57525 +               ha->ioctl->wait_q_head = ha->ioctl->wait_q_head->pnext;
57526 +
57527 +               if (ha->ioctl->wait_q_head == NULL) {
57528 +                       /* That's the last one in queue. */
57529 +                       ha->ioctl->wait_q_tail = NULL;
57530 +               }
57531 +
57532 +               (*ret_wq)->pnext = NULL;
57533 +       }
57534 +
57535 +       DEBUG9(printk("%s(%ld): inst=%ld return ret_wq=%p. Going to release "
57536 +           "spinlock.\n",
57537 +           __func__, ha->host_no, ha->instance, *ret_wq);)
57538 +       spin_unlock_irqrestore(&ha->ioctl->wait_q_lock, cpu_flags);
57539 +}
57540 +
57541 +/*
57542 + * qla2x00_wait_q_remove
57543 + *     Removes the specified member from wait_q.
57544 + *     Must already got the wait_q_lock spin lock.
57545 + *
57546 + * Input:
57547 + *     ha = adapter state pointer.
57548 + *
57549 + * Returns:
57550 + *     qla2x00 local function return status code.
57551 + *
57552 + * Context:
57553 + *     Kernel context.
57554 + */
57555 +static void
57556 +qla2x00_wait_q_remove(scsi_qla_host_t *ha, wait_q_t *rem_wq)
57557 +{
57558 +       wait_q_t        *ptmp_wq;
57559 +       wait_q_t        *ptmp_prev;
57560 +
57561 +       DEBUG9(printk("%s(%ld): inst=%ld rem_wq=%p.\n",
57562 +           __func__, ha->host_no, ha->instance, rem_wq);)
57563 +
57564 +       /* Search then remove */
57565 +       ptmp_prev = NULL;
57566 +       for (ptmp_wq = ha->ioctl->wait_q_head; ptmp_wq != NULL;
57567 +           ptmp_wq = ptmp_wq->pnext) {
57568 +
57569 +               if (ptmp_wq == rem_wq) {
57570 +                       /* Found it in wait_q. Remove. */
57571 +
57572 +                       DEBUG9(printk("%s(%ld): inst=%ld removing.\n",
57573 +                           __func__, ha->host_no, ha->instance);)
57574 +
57575 +                       if (ha->ioctl->wait_q_head == ptmp_wq) {
57576 +                               ha->ioctl->wait_q_head = ptmp_wq->pnext;
57577 +                       } else {
57578 +                               ptmp_prev->pnext = ptmp_wq->pnext;
57579 +                       }
57580 +
57581 +                       if (ha->ioctl->wait_q_tail == ptmp_wq) {
57582 +                               ha->ioctl->wait_q_tail = ptmp_prev;
57583 +                       }
57584 +
57585 +                       ptmp_wq->pnext = NULL;
57586 +
57587 +                       break;
57588 +               }
57589 +               ptmp_prev = ptmp_wq;
57590 +       }
57591 +
57592 +       DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
57593 +           __func__, ha->host_no, ha->instance);)
57594 +}
57595 +
57596 +
57597 --- /dev/null   Thu Apr 11 07:25:15 2002
57598 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qlfo.h      Thu Jul  3 15:34:42 2003
57599 @@ -0,0 +1,413 @@
57600 +/******************************************************************************
57601 + *                  QLOGIC LINUX SOFTWARE
57602 + *
57603 + * QLogic ISP2x00 device driver for Linux 2.5.x
57604 + * Copyright (C) 2003 Qlogic Corporation
57605 + * (www.qlogic.com)
57606 + *
57607 + * This program is free software; you can redistribute it and/or modify it
57608 + * under the terms of the GNU General Public License as published by the
57609 + * Free Software Foundation; either version 2, or (at your option) any
57610 + * later version.
57611 + *
57612 + * This program is distributed in the hope that it will be useful, but
57613 + * WITHOUT ANY WARRANTY; without even the implied warranty of
57614 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
57615 + * General Public License for more details.
57616 + *
57617 + ******************************************************************************/
57618 +
57619 +/*
57620 + * San/Device Management Failover Ioctl Header
57621 + * File is created to adhere to Solaris requirement using 8-space tabs.
57622 + *
57623 + * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
57624 + * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
57625 + * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
57626 + *
57627 + * Revision History:
57628 + *
57629 + * Rev. 0.00   August 8, 2000
57630 + * WTR - Created.
57631 + *
57632 + * Rev. 0.01   August 8, 2000
57633 + * WTR - Made size of HbaInstance fields consistant as UINT8.
57634 + *        Made command codes as 300 upward to be consistant with definitions
57635 + *        in ExIoct.h.
57636 + * Rev. 0.01   October 3, 2000
57637 + * TLE  - Exclusion of ExIoct.h
57638 + *
57639 + * Rev. 0.01   October 6, 2000
57640 + * TLE  - Made size of HbaInstance fields UINT8
57641 + *
57642 + * Rev. 0.01   October 10, 2000
57643 + * TLE  - Add _FO_DRIVER_VERSION data structure
57644 + */
57645 +
57646 +
57647 +
57648 +#ifndef _FO_H
57649 +#define _FO_H
57650 +
57651 +/*
57652 + * ***********************************************************************
57653 + * X OS type definitions
57654 + * ***********************************************************************
57655 + */
57656 +#ifdef _MSC_VER                                                /* NT */
57657 +
57658 +#pragma pack(1)
57659 +#include "qlfont.h"
57660 +
57661 +#elif defined(linux)                                   /* Linux */
57662 +
57663 +#include "qlfoln.h"
57664 +
57665 +#elif defined(sun) || defined(__sun)                   /* Solaris */
57666 +
57667 +#include "qlfoso.h"
57668 +
57669 +#endif
57670 +
57671 +#define SDM_DEF_MAX_DEVICES            16
57672 +#define SDM_DEF_MAX_PATHS_PER_TARGET   4
57673 +#define SDM_DEF_MAX_TARGETS_PER_DEVICE 4
57674 +#define SDM_DEF_MAX_PATHS_PER_DEVICE (SDM_DEF_MAX_PATHS_PER_TARGET * SDM_DEF_MAX_TARGETS_PER_DEVICE)
57675 +
57676 +#define FO_MAX_LUNS_PER_DEVICE MAX_LUNS_OS
57677 +#define FO_MAX_PATHS (SDM_DEF_MAX_PATHS_PER_DEVICE * SDM_DEF_MAX_DEVICES)
57678 +#define FO_MAX_ADAPTERS                32
57679 +#define FO_ADAPTER_ALL         0xFF
57680 +#define FO_DEF_WWN_SIZE             8
57681 +#define FO_MAX_GEN_INFO_STRING_LEN  32
57682 +
57683 +
57684 +#define FO_NOTIFY_TYPE_NONE                   0
57685 +#define FO_NOTIFY_TYPE_LUN_RESET              1
57686 +#define FO_NOTIFY_TYPE_CDB                    2
57687 +#define FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET    3
57688 +#define FO_NOTIFY_TYPE_LOGOUT_OR_CDB          4
57689 +
57690 +#define FO_NOTIFY_TYPE_MIN                FO_NOTIFY_TYPE_NONE
57691 +#define FO_NOTIFY_TYPE_MAX                FO_NOTIFY_TYPE_LOGOUT_OR_CDB
57692 +#define FO_NOTIFY_TYPE_DEF                FO_NOTIFY_TYPE_NONE
57693 +
57694 +#define FO_NOTIFY_CDB_LENGTH_MIN              6
57695 +#define FO_NOTIFY_CDB_LENGTH_MAX             16
57696 +
57697 +/*
57698 + * IOCTL Commands
57699 + */
57700 +
57701 +#define FO_CC_GET_PARAMS                       FO_CC_GET_PARAMS_OS
57702 +#define FO_CC_SET_PARAMS                       FO_CC_SET_PARAMS_OS
57703 +#define FO_CC_GET_PATHS                            FO_CC_GET_PATHS_OS
57704 +#define FO_CC_SET_CURRENT_PATH         FO_CC_SET_CURRENT_PATH_OS
57705 +#define FO_CC_GET_HBA_STAT                     FO_CC_GET_HBA_STAT_OS
57706 +#define FO_CC_RESET_HBA_STAT           FO_CC_RESET_HBA_STAT_OS
57707 +#define FO_CC_GET_LUN_DATA              FO_CC_GET_LUN_DATA_OS
57708 +#define FO_CC_SET_LUN_DATA              FO_CC_SET_LUN_DATA_OS
57709 +#define FO_CC_GET_TARGET_DATA           FO_CC_GET_TARGET_DATA_OS
57710 +#define FO_CC_SET_TARGET_DATA           FO_CC_SET_TARGET_DATA_OS
57711 +#define FO_CC_GET_FO_DRIVER_VERSION     FO_CC_GET_FO_DRIVER_VERSION_OS
57712 +
57713 +
57714 +/* Systemwide failover parameters. */
57715 +
57716 +typedef struct _FO_PARAMS
57717 +{
57718 +        UINT32      InspectionInterval;     /* Timer interval to check for failover.*/
57719 +        UINT8       MaxPathsPerDevice;     /* Max paths to any single device. */
57720 +        UINT8       MaxRetriesPerPath;     /* Max retries on a path before */
57721 +
57722 +        /* Failover. */
57723 +        UINT8       MaxRetriesPerIo;       /* Max retries per i/o request. */
57724 +        UINT8       Reserved1;
57725 +        UINT32      Flags;                             /* Control flags. */
57726 +        UINT8       DeviceErrorThreshold;   /* Max device errors. */
57727 +        UINT8       DeviceTimeoutThreshold; /* Max device timeouts.*/
57728 +        UINT8       FrameErrorThreshold;    /* Max frame errors.*/
57729 +        UINT8       LinkErrorThreshold;     /* Max link errors.*/
57730 +        UINT32      Reserved2[4];           /* Spares.*/
57731 +
57732 +        /* Load balancing parameters.*/
57733 +
57734 +        UINT8       RollingAverageIntervals;/* Intervals to sum for rolling average.*/
57735 +        UINT8       MaxDevicesToMigrate;    /* Max devices to migrate in any interval.*/
57736 +        UINT8       BalanceMethod;          /* Method to use for load balancing.*/
57737 +        UINT8       Reserved3;              /* Memory alignment.*/
57738 +
57739 +        UINT16      LoadShareMinPercentage; /* Load balancing parameter.*/
57740 +        UINT16      LoadShareMaxPercentage; /* Load balancing parameter.*/
57741 +
57742 +        /* Failover notify parameters. */
57743 +
57744 +        UINT8       FailoverNotifyType;        /* Type of notification. */
57745 +        UINT8       FailoverNotifyCdbLength;/* Length of notification CDB. */
57746 +        UINT16      Reserved4;
57747 +        UINT8       FailoverNotifyCdb[16];     /* CDB if notification by CDB. */
57748 +        UINT32      Reserved5;
57749 +
57750 +}
57751 +FO_PARAMS, *PFO_PARAMS, SysFoParams_t, *SysFoParams_p;
57752 +
57753 +extern SysFoParams_t qla_fo_params;
57754 +
57755 +typedef struct _FO_GET_PATHS
57756 +{
57757 +        UINT8       HbaInstance;
57758 +        EXT_DEST_ADDR HbaAddr;       /* Lun field is ignored */
57759 +        UINT32      Reserved[5];
57760 +
57761 +}
57762 +FO_GET_PATHS, *PFO_GET_PATHS;
57763 +
57764 +
57765 +typedef struct _FO_PATH_ENTRY
57766 +{
57767 +        UINT8   Reserved1;
57768 +        UINT8   Visible;               /* Path is visible path. */
57769 +        UINT8   Priority;
57770 +        UINT8   Reserved2;
57771 +        UINT8   HbaInstance;
57772 +        UINT8   PortName[EXT_DEF_WWN_NAME_SIZE];
57773 +        UINT16  Reserved3;
57774 +        UINT32  Reserved[3];
57775 +
57776 +}
57777 +FO_PATH_ENTRY, *PFO_PATH_ENTRY;
57778 +
57779 +
57780 +typedef struct _FO_PATHS_INFO
57781 +{
57782 +        /* These first fields in the output buffer are specifically the
57783 +         * same as the fields in the input buffer.  This is because the
57784 +         * same system buffer holds both, and this allows us to reference
57785 +         * the input buffer parameters while filling the output buffer. */
57786 +
57787 +        UINT8       HbaInstance;
57788 +        EXT_DEST_ADDR HbaAddr;
57789 +        UINT32      Reserved[5];
57790 +        UINT8       PathCount;          /* Number of Paths in PathEntry array */
57791 +        UINT8       Reserved3;
57792 +        UINT8       VisiblePathIndex;   /* Which index has BOOLEAN "visible" flag set */
57793 +        UINT8       Reserved4;
57794 +
57795 +        UINT8       CurrentPathIndex[FO_MAX_LUNS_PER_DEVICE];   /* Current Path Index for each Lun */
57796 +
57797 +        FO_PATH_ENTRY   PathEntry[FO_MAX_PATHS];
57798 +
57799 +        UINT32      Reserved5[4];
57800 +
57801 +}
57802 +FO_PATHS_INFO, *PFO_PATHS_INFO;
57803 +
57804 +typedef struct _FO_SET_CURRENT_PATH
57805 +{
57806 +        UINT8       HbaInstance;
57807 +        EXT_DEST_ADDR HbaAddr;
57808 +        UINT8       NewCurrentPathIndex;    /* Path index to make current path. */
57809 +        UINT8       FailoverType;           /* Reason for failover. */
57810 +        UINT32      Reserved[3];
57811 +
57812 +}
57813 +FO_SET_CURRENT_PATH, *PFO_SET_CURRENT_PATH;
57814 +
57815 +typedef union _FO_PATHS {
57816 +        FO_GET_PATHS input;
57817 +        FO_SET_CURRENT_PATH set
57818 +                ;
57819 +        FO_PATHS_INFO info;
57820 +} FO_PATHS;
57821 +
57822 +
57823 +typedef struct  _FO_HBA_STAT_INPUT
57824 +{
57825 +        /* The first field in the input buffer is specifically the
57826 +         * same as the field in the output buffer.  This is because the
57827 +         * same system buffer holds both, and this allows us to reference
57828 +         * the input buffer parameters while filling the output buffer. */
57829 +
57830 +        UINT8       HbaInstance;               /* Port number or ADAPTER_ALL. */
57831 +        UINT8       Reserved1[3];
57832 +        UINT32      Reserved2[7];
57833 +
57834 +}
57835 +FO_HBA_STAT_INPUT, *PFO_HBA_STAT_INPUT;
57836 +
57837 +
57838 +typedef struct _FO_HBA_STAT_ENTRY
57839 +{
57840 +        UINT8       HbaInstance;
57841 +        UINT8       Reserved1[3];
57842 +        UINT32      Reserved2;
57843 +        UINT64      IosRequested; /* IOs requested on this adapter. */
57844 +        UINT64      BytesRequested;            /* Bytes requested on this adapter. */
57845 +        UINT64      IosExecuted; /* IOs executed on this adapter. */
57846 +        UINT64      BytesExecuted;             /* Bytes executed on this adapter. */
57847 +        UINT32      Reserved3[22];
57848 +
57849 +}
57850 +FO_HBA_STAT_ENTRY, *PFO_HBA_STAT_ENTRY;
57851 +
57852 +
57853 +typedef struct _FO_HBA_STAT_INFO
57854 +{
57855 +        /* The first fields in the output buffer is specifically the
57856 +         * same as the field in the input buffer.  This is because the
57857 +         * same system buffer holds both, and this allows us to reference
57858 +         * the input buffer parameters while filling the output buffer. */
57859 +
57860 +        UINT8       HbaInstance; /* Port number or ADAPTER_ALL. */
57861 +        UINT8       HbaCount; /* Count of adapters returned. */
57862 +        UINT8       Reserved1[2];
57863 +        UINT32      Reserved2[7];
57864 +
57865 +        FO_HBA_STAT_ENTRY StatEntry[FO_MAX_ADAPTERS];
57866 +
57867 +}
57868 +FO_HBA_STAT_INFO, *PFO_HBA_STAT_INFO;
57869 +
57870 +
57871 +
57872 +/*  The "external" LUN data refers to the LUNs as represented in our
57873 +  configuration utility, where one physical target can support up to
57874 +  2048 LUNs, which are mapped around internally.  This is in comparison
57875 +  to an "internal" LUN data, which is 256 LUNs, after being mapped
57876 +  inside the driver to multiple target slots. */
57877 +
57878 +#define EXTERNAL_LUN_COUNT          2048
57879 +
57880 +/* Structure as used in the IOCTL.*/
57881 +
57882 +typedef struct _FO_EXTERNAL_LUN_DATA_ENTRY
57883 +{
57884 +        UINT8       NodeName[EXT_DEF_WWN_NAME_SIZE];
57885 +        UINT8       PortName[EXT_DEF_WWP_NAME_SIZE];  //sri
57886 +
57887 +        UINT16      LunCount;   /* Entries in Lun Data array. */
57888 +        UINT8       TargetId;
57889 +        UINT8       Dev_No;
57890 +        UINT32      Reserved3;
57891 +        UINT32      Reserved4;
57892 +        UINT32      Reserved5;                     /* Pad to 32-byte header.*/
57893 +
57894 +        UINT8       Data[EXTERNAL_LUN_COUNT];
57895 +}
57896 +FO_EXTERNAL_LUN_DATA_ENTRY, *PFO_EXTERNAL_LUN_DATA_ENTRY;
57897 +
57898 +//  Structure as it is stored in the NT registry.
57899 +
57900 +typedef struct _FO_LUN_DATA_LIST
57901 +{
57902 +        UINT16      Version;                       /* Should be LUN_DATA_REGISTRY_VERSION.*/
57903 +        UINT16      EntryCount;                    /* Count of variable entries following.*/
57904 +        UINT32      Reserved1;
57905 +        UINT32      Reserved2;
57906 +        UINT32      Reserved3;
57907 +        UINT32      Reserved4;
57908 +        UINT32      Reserved5;
57909 +        UINT32      Reserved6;
57910 +        UINT32      Reserved7;                     /* Pad to 32-byte header.*/
57911 +
57912 +        FO_EXTERNAL_LUN_DATA_ENTRY DataEntry[1];   /* Variable-length data.*/
57913 +
57914 +}
57915 +FO_LUN_DATA_LIST, *PFO_LUN_DATA_LIST;
57916 +
57917 +typedef struct  _FO_LUN_DATA_INPUT
57918 +{
57919 +        /* The first field in the input buffer is specifically the
57920 +         * same as the field in the output buffer.  This is because the
57921 +         * same system buffer holds both, and this allows us to reference
57922 +         * the input buffer parameters while filling the output buffer. */
57923 +
57924 +        UINT8       HbaInstance;               /* Port number */
57925 +        UINT8       Reserved1[3];
57926 +        UINT32      Reserved2[7];
57927 +
57928 +}
57929 +FO_LUN_DATA_INPUT, *PFO_LUN_DATA_INPUT;
57930 +
57931 +typedef struct _FO_REQUEST_ADDR
57932 +{
57933 +        UINT8           HbaInstance;
57934 +        EXT_DEST_ADDR   TargetAddr;
57935 +        UINT32          Reserved[5];
57936 +
57937 +}
57938 +FO_REQUEST_ADDR, *PFO_REQUEST_ADDR;
57939 +
57940 +typedef struct  _FO_TARGET_DATA_INPUT
57941 +{
57942 +        UINT8       HbaInstance;               /* Port number */
57943 +        UINT8       Reserved1[3];
57944 +        UINT32      Reserved2[7];
57945 +
57946 +}
57947 +FO_TARGET_DATA_INPUT, *PFO_TARGET_DATA_INPUT;
57948 +
57949 +#define FO_INTERNAL_LUN_COUNT          256
57950 +#define FO_INTERNAL_LUN_BITMASK_BYTES  (FO_INTERNAL_LUN_COUNT / 8)
57951 +
57952 +typedef struct _FO_INTERNAL_LUN_BITMASK
57953 +{
57954 +        UINT8       Bitmask[FO_INTERNAL_LUN_BITMASK_BYTES];
57955 +}
57956 +FO_INTERNAL_LUN_BITMASK, *PFO_INTERNAL_LUN_BITMASK;
57957 +
57958 +typedef struct _FO_DEVICE_DATA
57959 +{
57960 +        UINT32      DeviceFlags;        /* Device flags */
57961 +        UINT16      LoopId;             /* Current loop ID */
57962 +        UINT16      BaseLunNumber;      /* Base LUN number */
57963 +        UINT8       WorldWideName[8];   /* World Wide Name for device */
57964 +        UINT8       PortId[3];          /* Port ID */
57965 +        UINT8       MultipathControl;   /* Multipath control byte. */
57966 +        UINT16      DeviceState;        /* Device state */
57967 +        UINT16      LoginRetryCount;    /* Number of login retries */
57968 +        UINT8       PortName[8];        /* Port name for device */
57969 +        UINT16      TimeoutCount;       /* Command timeout count */
57970 +        UINT8       TargetId;
57971 +        UINT8       Dev_No;
57972 +        FO_INTERNAL_LUN_BITMASK    LunBitmask; /* LUN bitmask */
57973 +}
57974 +FO_DEVICE_DATA, *PFO_DEVICE_DATA;
57975 +
57976 +typedef struct _FO_DEVICE_DATABASE
57977 +{
57978 +        FO_DEVICE_DATA  DeviceData[256];
57979 +}
57980 +FO_DEVICE_DATABASE, *PFO_DEVICE_DATABASE;
57981 +
57982 +typedef struct _FO_DRIVER_VERSION
57983 +{
57984 +        // Numeric version.
57985 +        UINT8       Version;                       // Major version number.
57986 +        UINT8       Revision;                      // Minor version number.
57987 +        UINT8       Subrevision;                   // Subminor version number.
57988 +        UINT8       Reserved1;                      // Memory alignment.
57989 +
57990 +        // String version.
57991 +        UINT8       VersionStr[FO_MAX_GEN_INFO_STRING_LEN];
57992 +
57993 +        // Reserved fields.
57994 +        UINT32      Reserved2[16];
57995 +
57996 +}
57997 +FO_DRIVER_VERSION, *PFO_DRIVER_VERSION;
57998 +
57999 +
58000 +#define FO_LUN_DATA_LIST_MIN_ENTRIES      1
58001 +#define FO_LUN_DATA_LIST_MAX_ENTRIES    256
58002 +#ifdef _WIN64
58003 +#define FO_LUN_DATA_LIST_HEADER_SIZE 32
58004 +#else
58005 +#define FO_LUN_DATA_LIST_HEADER_SIZE offsetof(FO_LUN_DATA_LIST, DataEntry)
58006 +#endif
58007 +
58008 +#define FO_LUN_DATA_LIST_MIN_SIZE (FO_LUN_DATA_LIST_HEADER_SIZE + (sizeof(FO_EXTERNAL_LUN_DATA_ENTRY) * FO_LUN_DATA_LIST_MIN_ENTRIES))
58009 +#define FO_LUN_DATA_LIST_MAX_SIZE (FO_LUN_DATA_LIST_HEADER_SIZE + (sizeof(FO_EXTERNAL_LUN_DATA_ENTRY) * FO_LUN_DATA_LIST_MAX_ENTRIES))
58010 +
58011 +
58012 +#endif /* ifndef _FO_H */
58013 --- /dev/null   Thu Apr 11 07:25:15 2002
58014 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qlfolimits.h        Thu Jul  3 15:34:42 2003
58015 @@ -0,0 +1,92 @@
58016 +/******************************************************************************
58017 + *                  QLOGIC LINUX SOFTWARE
58018 + *
58019 + * QLogic ISP2x00 device driver for Linux 2.5.x
58020 + * Copyright (C) 2003 Qlogic Corporation
58021 + * (www.qlogic.com)
58022 + *
58023 + * This program is free software; you can redistribute it and/or modify it
58024 + * under the terms of the GNU General Public License as published by the
58025 + * Free Software Foundation; either version 2, or (at your option) any
58026 + * later version.
58027 + *
58028 + * This program is distributed in the hope that it will be useful, but
58029 + * WITHOUT ANY WARRANTY; without even the implied warranty of
58030 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
58031 + * General Public License for more details.
58032 + *
58033 + ******************************************************************************/
58034 +
58035 +/*
58036 + *  Minimums, maximums, defaults, and other definitions for MC_PARAMS.
58037 + */
58038 +
58039 +#define FO_INSPECTION_INTERVAL_MIN                     0
58040 +#define FO_INSPECTION_INTERVAL_MAX               1000000
58041 +#define FO_INSPECTION_INTERVAL_DEF                   600
58042 +
58043 +#define FO_MAX_PATHS_PER_DEVICE_MIN                    1
58044 +#define FO_MAX_PATHS_PER_DEVICE_MAX                    8
58045 +#define FO_MAX_PATHS_PER_DEVICE_DEF                    8
58046 +
58047 +#define FO_MAX_RETRIES_PER_PATH_MIN                    1
58048 +#define FO_MAX_RETRIES_PER_PATH_MAX                    8
58049 +#define FO_MAX_RETRIES_PER_PATH_DEF                    3
58050 +
58051 +#define FO_MAX_RETRIES_PER_IO_MIN          ((FO_MAX_PATHS_PER_DEVICE_MIN * FO_MAX_RETRIES_PER_PATH_MIN) + 1)
58052 +#define FO_MAX_RETRIES_PER_IO_MAX          ((FO_MAX_PATHS_PER_DEVICE_MAX * FO_MAX_RETRIES_PER_PATH_MAX) + 1)
58053 +#define FO_MAX_RETRIES_PER_IO_DEF          ((FO_MAX_PATHS_PER_DEVICE_DEF * FO_MAX_RETRIES_PER_PATH_DEF) + 1)
58054 +
58055 +#define FO_DEVICE_ERROR_THRESHOLD_MIN                  1
58056 +#define FO_DEVICE_ERROR_THRESHOLD_MAX                255
58057 +#define FO_DEVICE_ERROR_THRESHOLD_DEF                  4
58058 +
58059 +#define FO_DEVICE_TIMEOUT_THRESHOLD_MIN                1
58060 +#define FO_DEVICE_TIMEOUT_THRESHOLD_MAX              255
58061 +#define FO_DEVICE_TIMEOUT_THRESHOLD_DEF                4
58062 +
58063 +#define FO_FRAME_ERROR_THRESHOLD_MIN                   1
58064 +#define FO_FRAME_ERROR_THRESHOLD_MAX                 255
58065 +#define FO_FRAME_ERROR_THRESHOLD_DEF                   4
58066 +
58067 +#define FO_LINK_ERROR_THRESHOLD_MIN                    1
58068 +#define FO_LINK_ERROR_THRESHOLD_MAX                  255
58069 +#define FO_LINK_ERROR_THRESHOLD_DEF                    4
58070 +
58071 +#define FO_ROLLING_AVERAGE_INTERVALS_MIN               1
58072 +#define FO_ROLLING_AVERAGE_INTERVALS_MAX              10
58073 +#define FO_ROLLING_AVERAGE_INTERVALS_DEF               1
58074 +
58075 +#define FO_MAX_DEVICES_TO_MIGRATE_MIN                  0
58076 +#define FO_MAX_DEVICES_TO_MIGRATE_MAX                255
58077 +#define FO_MAX_DEVICES_TO_MIGRATE_DEF                  4
58078 +
58079 +#define FO_BALANCE_METHOD_NONE                         0
58080 +#define FO_BALANCE_METHOD_IOS                          1
58081 +#define FO_BALANCE_METHOD_MBS                          2
58082 +
58083 +#define FO_BALANCE_METHOD_MIN                      FO_BALANCE_METHOD_NONE
58084 +#define FO_BALANCE_METHOD_MAX                      FO_BALANCE_METHOD_MBS
58085 +#define FO_BALANCE_METHOD_DEF                      FO_BALANCE_METHOD_IOS
58086 +
58087 +#define FO_LOAD_SHARE_MIN_PERCENTAGE_MIN              25
58088 +#define FO_LOAD_SHARE_MIN_PERCENTAGE_MAX              99
58089 +#define FO_LOAD_SHARE_MIN_PERCENTAGE_DEF              75
58090 +
58091 +#define FO_LOAD_SHARE_MAX_PERCENTAGE_MIN             101
58092 +#define FO_LOAD_SHARE_MAX_PERCENTAGE_MAX             500
58093 +#define FO_LOAD_SHARE_MAX_PERCENTAGE_DEF             150
58094 +
58095 +#define FO_NOTIFY_TYPE_NONE                   0
58096 +#define FO_NOTIFY_TYPE_LUN_RESET              1
58097 +#define FO_NOTIFY_TYPE_CDB                    2
58098 +#define FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET    3
58099 +#define FO_NOTIFY_TYPE_LOGOUT_OR_CDB          4
58100 +
58101 +#define FO_NOTIFY_TYPE_MIN                FO_NOTIFY_TYPE_NONE
58102 +#define FO_NOTIFY_TYPE_MAX                FO_NOTIFY_TYPE_LOGOUT_OR_CDB
58103 +#define FO_NOTIFY_TYPE_DEF                FO_NOTIFY_TYPE_NONE
58104 +
58105 +#define FO_NOTIFY_CDB_LENGTH_MIN              6
58106 +#define FO_NOTIFY_CDB_LENGTH_MAX             16
58107 +
58108 --- /dev/null   Thu Apr 11 07:25:15 2002
58109 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qlfoln.h    Thu Jul  3 15:34:42 2003
58110 @@ -0,0 +1,76 @@
58111 +/******************************************************************************
58112 + *                  QLOGIC LINUX SOFTWARE
58113 + *
58114 + * QLogic ISP2x00 device driver for Linux 2.5.x
58115 + * Copyright (C) 2003 Qlogic Corporation
58116 + * (www.qlogic.com)
58117 + *
58118 + * This program is free software; you can redistribute it and/or modify it
58119 + * under the terms of the GNU General Public License as published by the
58120 + * Free Software Foundation; either version 2, or (at your option) any
58121 + * later version.
58122 + *
58123 + * This program is distributed in the hope that it will be useful, but
58124 + * WITHOUT ANY WARRANTY; without even the implied warranty of
58125 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
58126 + * General Public License for more details.
58127 + *
58128 + ******************************************************************************/
58129 +
58130 +
58131 +#define QLMULTIPATH_MAGIC 'y'
58132 +/********************************************************/
58133 +/* Failover ioctl command codes range from 0xc0 to 0xdf */
58134 +/********************************************************/
58135 +
58136 +
58137 +#define FO_CC_GET_PARAMS_OS             \
58138 +    _IOWR(QLMULTIPATH_MAGIC, 200, sizeof(EXT_IOCTL))   /* 0xc8 */
58139 +#define FO_CC_SET_PARAMS_OS             \
58140 +    _IOWR(QLMULTIPATH_MAGIC, 201, sizeof(EXT_IOCTL))   /* 0xc9 */
58141 +#define FO_CC_GET_PATHS_OS              \
58142 +    _IOWR(QLMULTIPATH_MAGIC, 202, sizeof(EXT_IOCTL))   /* 0xca */
58143 +#define FO_CC_SET_CURRENT_PATH_OS       \
58144 +    _IOWR(QLMULTIPATH_MAGIC, 203, sizeof(EXT_IOCTL))   /* 0xcb */
58145 +#define FO_CC_GET_HBA_STAT_OS           \
58146 +    _IOWR(QLMULTIPATH_MAGIC, 204, sizeof(EXT_IOCTL))   /* 0xcc */
58147 +#define FO_CC_RESET_HBA_STAT_OS         \
58148 +    _IOWR(QLMULTIPATH_MAGIC, 205, sizeof(EXT_IOCTL))   /* 0xcd */
58149 +#define FO_CC_GET_LUN_DATA_OS           \
58150 +    _IOWR(QLMULTIPATH_MAGIC, 206, sizeof(EXT_IOCTL))   /* 0xce */
58151 +#define FO_CC_SET_LUN_DATA_OS           \
58152 +    _IOWR(QLMULTIPATH_MAGIC, 207, sizeof(EXT_IOCTL))   /* 0xcf */
58153 +#define FO_CC_GET_TARGET_DATA_OS        \
58154 +    _IOWR(QLMULTIPATH_MAGIC, 208, sizeof(EXT_IOCTL))   /* 0xd0 */
58155 +#define FO_CC_SET_TARGET_DATA_OS        \
58156 +    _IOWR(QLMULTIPATH_MAGIC, 209, sizeof(EXT_IOCTL))   /* 0xd1 */
58157 +#define FO_CC_GET_FO_DRIVER_VERSION_OS  \
58158 +    _IOWR(QLMULTIPATH_MAGIC, 210, sizeof(EXT_IOCTL))   /* 0xd2 */
58159 +
58160 +
58161 +#define BOOLEAN uint8_t
58162 +#define MAX_LUNS_OS    256
58163 +
58164 +/* Driver attributes bits */
58165 +#define DRVR_FO_ENABLED                0x1     /* bit 0 */
58166 +
58167 +
58168 +/*
58169 + * Overrides for Emacs so that we almost follow Linus's tabbing style.
58170 + * Emacs will notice this stuff at the end of the file and automatically
58171 + * adjust the settings for this buffer only.  This must remain at the end
58172 + * of the file.
58173 + * ---------------------------------------------------------------------------
58174 + * Local variables:
58175 + * c-indent-level: 2
58176 + * c-brace-imaginary-offset: 0
58177 + * c-brace-offset: -2
58178 + * c-argdecl-indent: 2
58179 + * c-label-offset: -2
58180 + * c-continued-statement-offset: 2
58181 + * c-continued-brace-offset: 0
58182 + * indent-tabs-mode: nil
58183 + * tab-width: 8
58184 + * End:
58185 + */
58186 +
58187 --- /dev/null   Thu Apr 11 07:25:15 2002
58188 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/release.txt Thu Jul  3 15:34:42 2003
58189 @@ -0,0 +1,28 @@
58190 +
58191 +                 QLogic QLA2200 and QLA2300 Linux Driver 
58192 +
58193 +                           Release Notes
58194 +                          =============
58195 +
58196 +Version  8.00.00b1     March 05, 2003
58197 +
58198 ++**********************************************+
58199 +* Features supported by this version of driver *
58200 ++**********************************************+
58201 +o FCAL - direct attach
58202 +o Point-to-point 
58203 +o Fabric support 
58204 +o Initiator mode only
58205 +o Fault recovery on down loops
58206 +o Persistent binding - HBA node name valid
58207 +o Linux 2.5.x Kernel Support *ONLY*
58208 +o IPFC support
58209 +
58210 ++********************************+
58211 +* Changes From Previous Releases *
58212 ++********************************+
58213 +o Please view revision.notes file
58214
58215 ++**************+
58216 +* Known Issues *
58217 ++**************+
58218 --- /dev/null   Thu Apr 11 07:25:15 2002
58219 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/revision.notes      Thu Jul  3 15:34:42 2003
58220 @@ -0,0 +1,167 @@
58221 +/*
58222 + * QLogic ISP2200 and ISP2300 Linux Driver Revision List File.
58223 + *
58224 + ********************************************************************
58225 + *
58226 + * Revision History
58227 + *
58228 + *  Rev  8.00.00       May 05, 2003            AV
58229 + *     - Resync with Linux Kernel 2.5.69.
58230 + *     - Firmware versions: 2100 TP (1.19.24), 2200 TP (2.02.05),
58231 + *       2300 TPX (3.02.10).
58232 + *
58233 + *  Rev  8.00.00b1-pre45 April ??, 2003                AV
58234 + *     - Resync with Linux Kernel 2.5.68-bk11:
58235 + *     - Fix improper return-code assignment during fabric
58236 + *       discovery.
58237 + *     - Remove additional extraneous #defines from
58238 + *       qla_settings.h.
58239 + *       - USE_PORTNAME -- FO will always use portname.
58240 + *     - Default queue depth size set to 64.
58241 + *
58242 + *  Rev  8.00.00b1-pre42 April ??, 2003                AV
58243 + *     - Convert bottom-half tasklet to a work_queue.
58244 + *     - Initial basic coding of dynamic queue depth handling
58245 + *       during QUEUE FULL statuses.
58246 + *     - Fix mailbox interface problem with
58247 + *       qla2x00_get_retry_cnt().
58248 + *
58249 + *  Rev  8.00.00b1-pre41 April ??, 2003                AV
58250 + *     - Convert build defines qla2[1|2|3]00 macros to
58251 + *       qla2[1|2|3]xx due to module name stringification clashes.
58252 + *     - Add additional ISP2322 checks during board configuration.
58253 + *
58254 + *  Rev  8.00.00b1-pre40 April ??, 2003                AV
58255 + *     - Resync with Linux Kernel 2.5.68-bk8:
58256 + *       - Updated IRQ handler interface.
58257 + *     - Add ISP dump code (stub) in case of SYSTEM_ERROR on
58258 + *       ISP2100.
58259 + *     - Add new 2200 IP firmware (2.02.05).
58260 + *
58261 + *  Rev  8.00.00b1-pre39 April ??, 2003                AV
58262 + *     - Resync with Linux Kernel 2.5.68.
58263 + *     - Add simple build.sh script to aid in external compilation.
58264 + *     - Clean-break with Kernel 2.4 compatibility.
58265 + *       - Rework DPC routine -- completion routines for signaling.
58266 + *     - Re-add HBAAPI character device node for IOCTL support.
58267 + *     - Remove residual QLA2X_PERFORMANCE defines.
58268 + *     - Allocate SP pool via __get_free_pages() rather than
58269 + *       individual kmalloc()'s.
58270 + *     - Inform SCSI mid-layer of 16-byte CDB support
58271 + *       (host->max_cmd_len):
58272 + *       - Remove unecessary 'more_cdb' handling code from
58273 + *         qla_iocb.c and qla_xioct.c.
58274 + *     - Reduce duplicate code in fabric scanning logic (MS IOCB
58275 + *       preparation).
58276 + *     - Add ISP dump code in case of SYSTEM_ERROR.
58277 + *     - Remove 2300 VIX firmware from distribution:
58278 + *       - Add initial code for IPX support.
58279 + *     - Add new 2300 TPX firmware (3.02.10).
58280 + *
58281 + *  Rev  8.00.00b1-pre34 April ??, 2003                AV
58282 + *     - Resync with Linux Kernel 2.5.67.
58283 + *     - Use domain/area/al_pa fields when displaying PortID 
58284 + *       values -- addresses endianess issues.
58285 + *     - Rework large case statement to check 'common' CDB commands
58286 + *       early in qla2x00_get_cmd_direction().
58287 + *
58288 + *  Rev  8.00.00b1-pre31 April ??, 2003                AV
58289 + *     - Update makefile to support PPC64 build.
58290 + *     - Retool NVRAM configuration routine and structures:
58291 + *       - Consoldate ISP21xx/ISP22xx/ISP23xx configuration
58292 + *         (struct nvram_t).
58293 + *       - Remove big/little endian support structures in favor of
58294 + *         simplified bit-operations within byte fields.
58295 + *     - Fix long-standing 'static' buffer sharing problem in 
58296 + *       qla2x00_configure_fabric().
58297 + *
58298 + *  Rev  8.00.00b1-pre30 April ??, 2003                AV
58299 + *     - Complete implementation of GID_PT scan.
58300 + *     - Use consistent MS IOCB invocation method to query SNS:
58301 + *       - Add RNN_ID and RSNN_NN registrations in a fabric.
58302 + *     - Remove unused Mailbox Command 6Eh (Send SNS) support
58303 + *       structures.
58304 + *     - Use 64bit safe IOCBs while issuing INQUIRY and RLC during
58305 + *       topology scan.
58306 + *     - Until reimplementation of fcdev_t/fcport list
58307 + *       consolidation, valid loop_id ranges are still limited from
58308 + *       0x00 through 0xFF -- enforce this within the code.
58309 + *
58310 + *  Rev  8.00.00b1-pre27 March ??, 2003                AV
58311 + *     - Resync with 6.05.00b9.
58312 + *     - Retool HBA PCI configuration -- qla2x00_pci_config().
58313 + *     - Remove inconsistent use of delay routines (UDELAY/SYS*).
58314 + *     - Continue to teardown/clean/add comments and debug
58315 + *       routines.
58316 + *     - Properly swap bytes of the device's nodename in
58317 + *       qla2x00_configure_local_loop().
58318 + *
58319 + *  Rev  8.00.00b1-pre25 March ??, 2003                AV
58320 + *     - Resync with 6.05.00b8.
58321 + *
58322 + *  Rev  8.00.00b1-pre23 March ??, 2003                AV
58323 + *     - Remove (#define) IOCB usage throttling.
58324 + *     - Abstract interrupt polling with qla2x00_poll().
58325 + *     - Modify lun scanning logic:
58326 + *       - If the device does not support the SCSI Report Luns
58327 + *         command, the driver will now only scan from 0 to the
58328 + *         max#-luns as defined in the NVRAM (BIOS), rather than
58329 + *         blindly scanning from 0 to 255 -- which could result in
58330 + *         an increase in startup time when running against slow
58331 + *         (JBOD) devices.
58332 + *     - Rework reset logic in qla2x00_reset_chip() (spec).
58333 + *
58334 + *  Rev  8.00.00b1-pre22 March ??, 2003                AV
58335 + *     - Resync with 6.05.00b7.
58336 + *     - Cleanup (rewrite) ISR handler.
58337 + *     - Rename kmem_zalloc --> qla2x00_kmem_zalloc():
58338 + *       - This function will eventually be removed.
58339 + *     - Add new 2300 VIX firmware (3.02.09):
58340 + *       - Support for Tape, Fabric, 2K logins, IP, and VI.
58341 + *
58342 + *  Rev  8.00.00b1-pre18 March ??, 2003                AV
58343 + *     - Support 232x type ISPs.
58344 + *     - Support single firmware for each ISP type:
58345 + *       - Restructure brd_info/fw_info methods.
58346 + *       - Streamline firmware load process.
58347 + *       - Properly query firmware for version information.
58348 + *     - Remove extraneous scsi_qla_host members:
58349 + *       - device_id ==> pdev->device
58350 + *     - Fix fc4 features (RFF_ID) registration.
58351 + *     - Convert kmem_zalloc --> qla2x00_kmem_zalloc().
58352 + *     - Remove unused/extraneous #defines (USE_PORTNAME).
58353 + *
58354 + *  Rev  8.00.00b1-pre14 March ??, 2003                AV
58355 + *     - Resync with 6.05.00b6.
58356 + *     - Initial source-code restructuring effort.
58357 + *       - Build procedure.
58358 + *       - Source file layout -- intuitive component layout.
58359 + *       - Remove unused #defines (*PERFORMANCE, WORD_FW_LOAD, etc).
58360 + *     - Add support for 2K logins (TPX -- firmware).
58361 + *     - Add module parameter ql2xsuspendcount.
58362 + *     - Add new 2200 IP/TP firmware (2.02.04).
58363 + *
58364 + *  Rev  8.00.00b1-pre9        March ??, 2003  RL/DG/RA/AV
58365 + *     - Use kernel struct list_head for fcport and fclun lists.
58366 + *     - Remove extraneous (L|M)S_64BITS() and QL21_64*() defines.
58367 + *
58368 + *  Rev  8.00.00b1-pre8        February 28, 2003       RL/DG/RA/AV
58369 + *     - Resync with 6.05.00b3.
58370 + *
58371 + *  Rev  8.00.00b1-pre7        February 23, 2003       RL/DG/RA/AV
58372 + *     - Add alternate fabric scanning logic (GID_PT/GNN_ID/GPN_ID).
58373 + *     - Remove use of deprecated function check_region().
58374 + *     - Add new 2300 IP/TP firmware (3.02.08).
58375 + *
58376 + *  Rev  8.00.00b1-pre5        January 28, 2003        RL/DG/RA/AV
58377 + *     - Resync with 6.05.00b3.
58378 + *     - Consolidate device_reg structure definitions for ISP types.
58379 + *     - Add support for new queue-depth selection.
58380 + *     - Add new 2300 IP/TP firmware (3.02.07).
58381 + *
58382 + *  Rev  8.00.00b1-pre1        January 17, 2003        AV
58383 + *     - Initial branch from 6.04.00b8 driver.
58384 + *     - Remove VMWARE specific code.
58385 + *     - Add support for pci_driver interface.
58386 + *
58387 + ********************************************************************/
58388
58389 _