diff options
author | mjacob <mjacob@FreeBSD.org> | 1999-03-17 05:04:39 +0000 |
---|---|---|
committer | mjacob <mjacob@FreeBSD.org> | 1999-03-17 05:04:39 +0000 |
commit | a319ea83415837ad8647a18c8e78badd29ff07aa (patch) | |
tree | da00c146e4b3c579caf0e02c453e3f78c7387500 | |
parent | 544adda3ecf0eb5f9bbe85bada85b8c67c896618 (diff) | |
download | FreeBSD-src-a319ea83415837ad8647a18c8e78badd29ff07aa.zip FreeBSD-src-a319ea83415837ad8647a18c8e78badd29ff07aa.tar.gz |
A wad of changes- prepping for 1080/1240 support (which caused a massive
thwank in register layout goop). A different mboxcmd approach. Some PDB change
infrastructure. Some better management of loopdown/loopup events (keep them
distinct from resource starvation for simq freeze/unfreeze actions).
-rw-r--r-- | sys/dev/isp/asm_pci.h | 1901 | ||||
-rw-r--r-- | sys/dev/isp/asm_sbus.h | 4 | ||||
-rw-r--r-- | sys/dev/isp/isp.c | 716 | ||||
-rw-r--r-- | sys/dev/isp/isp_freebsd.c | 251 | ||||
-rw-r--r-- | sys/dev/isp/isp_freebsd.h | 139 | ||||
-rw-r--r-- | sys/dev/isp/isp_freebsd_cam.h | 34 | ||||
-rw-r--r-- | sys/dev/isp/ispmbox.h | 100 | ||||
-rw-r--r-- | sys/dev/isp/ispreg.h | 90 | ||||
-rw-r--r-- | sys/dev/isp/ispvar.h | 33 |
9 files changed, 2918 insertions, 350 deletions
diff --git a/sys/dev/isp/asm_pci.h b/sys/dev/isp/asm_pci.h index 4bd3425..30fa695 100644 --- a/sys/dev/isp/asm_pci.h +++ b/sys/dev/isp/asm_pci.h @@ -1,10 +1,12 @@ -/* $Id: asm_pci.h,v 1.5 1999/01/30 07:20:50 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: asm_pci.h,v 1.6 1999/02/09 01:05:37 mjacob Exp $ */ +/* release_03_16_99 */ /* * Copyright (c) 1995, 1996, 1997, 1998 by Qlogic Corporation */ +#ifndef ISP_DISABLE_1020_SUPPORT /* + * Firmware for ISP1020-1040. * Firmware Version 7.55.00 (16:16 Mar 20, 1998) */ #define ISP_CODE_ORG 0x1000 @@ -1959,7 +1961,1901 @@ static const u_int16_t ISP_RISC_CODE[] = { 0x0000, 0xad4c }; #define ISP_CODE_LENGTH 0x3cd2 +#endif /* ISP_DISABLE_1020_SUPPORT */ +/************************************************************************ + * * + * --- ISP1240/1080/1280 Initiator Firmware --- * + * 32 LUN Support * + * * + ************************************************************************ + * * + * NOTICE * + * * + * COPYRIGHT 1999 QLOGIC CORPORATION * + * ALL RIGHTS RESERVED * + * * + * This computer program is CONFIDENTIAL and contains TRADE SECRETS of * + * QLOGIC CORPORATION. The receipt or possession of this program does * + * not convey any rights to reproduce or disclose its contents, or to * + * manufacture, use, or sell anything that it may describe, in whole or * + * in part, without the specific written consent of QLOGIC CORPORATION. * + * Any reproduction of this program without the express written consent * + * of QLOGIC CORPORATION is a violation of the copyright laws and may * + * subject you to civil liability and criminal prosecution. * + * * + ************************************************************************ + */ + + +/* + * Firmware Version 8.07.00 (17:49 Mar 03, 1999) + */ + +#ifndef ISP_DISABLE_1080_SUPPORT +#define ISP1080_CODE_ORG 0x1000 +#define ISP1080_CODE_VERSION 8*1024+7 +static const u_int16_t ISP1080_RISC_CODE[] = { + 0x0078, 0x1041, 0x0000, 0x39f2, 0x0000, 0x2043, 0x4f50, 0x5952, + 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932, 0x2c31, + 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749, 0x4320, + 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049, 0x5350, + 0x3132, 0x3430, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056, + 0x6572, 0x7369, 0x6f6e, 0x2030, 0x382e, 0x3037, 0x2020, 0x2043, + 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, 0x3030, 0x2050, + 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, 0x3030, 0x2020, + 0x2400, 0x20c9, 0x93ff, 0x2001, 0x04fc, 0x2004, 0xa086, 0x1080, + 0x00c0, 0x1054, 0x2071, 0x0100, 0x70a0, 0x70a2, 0x20c1, 0x0010, + 0x2089, 0x1363, 0x0078, 0x106d, 0x2001, 0x04fc, 0x2004, 0xa086, + 0x1280, 0x00c0, 0x1069, 0x2071, 0x0200, 0x70a0, 0x70a2, 0x2071, + 0x0100, 0x70a0, 0x70a2, 0x20c1, 0x0010, 0x2089, 0x13e3, 0x0078, + 0x106d, 0x20c1, 0x0020, 0x2089, 0x130b, 0x2071, 0x0010, 0x70c3, + 0x0004, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, + 0x0008, 0x2001, 0x04fe, 0x70d6, 0x20c1, 0x0001, 0x2019, 0x0000, + 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, 0xa1ec, 0x7fff, 0x2d64, + 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, 0x205b, 0x5050, 0x2114, + 0xa286, 0xa5a5, 0x0040, 0x10a4, 0xa386, 0x000f, 0x0040, 0x10a0, + 0x2c6a, 0x2a5a, 0x20c1, 0x0000, 0x2019, 0x000f, 0x0078, 0x1080, + 0x2c6a, 0x2a5a, 0x0078, 0x10a2, 0x2c6a, 0x2a5a, 0x2130, 0x2128, + 0xa1a2, 0x4a00, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, + 0xa192, 0x9400, 0x2009, 0x0000, 0x2001, 0x0032, 0x1078, 0x2056, + 0x2218, 0x2079, 0x4a00, 0x2fa0, 0x2408, 0x2011, 0x0000, 0x20a9, + 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10bf, 0x2001, 0x04fc, 0x2004, + 0xa086, 0x1080, 0x00c0, 0x10d7, 0x2071, 0x0100, 0x1078, 0x49bd, + 0x7810, 0xc0ed, 0x7812, 0x781b, 0x0064, 0x0078, 0x10fc, 0x2001, + 0x04fc, 0x2004, 0xa086, 0x1280, 0x00c0, 0x10f7, 0x7814, 0xc0ed, + 0xc0d5, 0x7816, 0x781b, 0x0064, 0x2071, 0x0200, 0x0d7e, 0x2069, + 0x4a40, 0x1078, 0x49bd, 0x2069, 0x4a80, 0x2071, 0x0100, 0x1078, + 0x49bd, 0x7814, 0xc0d4, 0x7816, 0x0d7f, 0x0078, 0x10fc, 0x7814, + 0xc0e5, 0x7816, 0x781b, 0x003c, 0x7eca, 0x7cc2, 0x7bc6, 0x7867, + 0x0000, 0x2031, 0x0030, 0x78af, 0x0101, 0x7823, 0x0002, 0x7827, + 0x0002, 0x2009, 0x0002, 0x2069, 0x4a40, 0x681b, 0x0003, 0x6823, + 0x0007, 0x6827, 0x00fa, 0x682b, 0x0008, 0x682f, 0x0028, 0x6837, + 0x0000, 0x683b, 0x0006, 0x6833, 0x0008, 0x683f, 0x0000, 0x8109, + 0x0040, 0x114d, 0x68d3, 0x000a, 0x68c3, 0x4ac0, 0x2079, 0x4a00, + 0x7814, 0xd0e4, 0x00c0, 0x1133, 0xd0ec, 0x00c0, 0x1137, 0x68d7, + 0x7329, 0x0078, 0x1139, 0x68d7, 0x730d, 0x0078, 0x1139, 0x68d7, + 0x7329, 0x68c7, 0x4fc0, 0x68cb, 0x4ec0, 0x68cf, 0x8fc0, 0x68ab, + 0x9244, 0x68af, 0x9249, 0x68b3, 0x9244, 0x68b7, 0x9244, 0x68a7, + 0x0001, 0x2069, 0x4a80, 0x0078, 0x110d, 0x68d3, 0x000a, 0x68c3, + 0x4cc0, 0x7814, 0xd0e4, 0x00c0, 0x1159, 0x68d7, 0x7439, 0x0078, + 0x115b, 0x68d7, 0x7419, 0x68c7, 0x6fc0, 0x68cb, 0x4f40, 0x68cf, + 0x90d0, 0x68ab, 0x9249, 0x68af, 0x924e, 0x68b3, 0x9249, 0x68b7, + 0x9249, 0x68a7, 0x0001, 0x7810, 0xd0ec, 0x00c0, 0x11b1, 0x7814, + 0xd0e4, 0x00c0, 0x11a3, 0x0e7e, 0x2069, 0x4ec0, 0x2071, 0x0200, + 0x70ec, 0xd0e4, 0x00c0, 0x1184, 0x2019, 0x0c0c, 0x2021, 0x000c, + 0x1078, 0x1fe5, 0x0078, 0x118a, 0x2019, 0x0c0a, 0x2021, 0x000a, + 0x1078, 0x1fe5, 0x2069, 0x4f40, 0x2071, 0x0100, 0x70ec, 0xd0e4, + 0x00c0, 0x119a, 0x2019, 0x0c0c, 0x2021, 0x000c, 0x1078, 0x1fe5, + 0x0078, 0x11a0, 0x2019, 0x0c0a, 0x2021, 0x000a, 0x1078, 0x1fe5, + 0x0e7f, 0x0078, 0x11ca, 0x2019, 0x0c0c, 0x2021, 0x000c, 0x2069, + 0x4ec0, 0x1078, 0x1fe5, 0x2069, 0x4f40, 0x1078, 0x1fe5, 0x0078, + 0x11ca, 0x2069, 0x4ec0, 0x0e7e, 0x2071, 0x0100, 0x70ec, 0xd0e4, + 0x00c0, 0x11c3, 0x2019, 0x0c0c, 0x2021, 0x000c, 0x1078, 0x1fe5, + 0x0e7f, 0x0078, 0x11ca, 0x2019, 0x0c0a, 0x2021, 0x000a, 0x1078, + 0x1fe5, 0x0e7f, 0x2011, 0x0002, 0x2069, 0x4fc0, 0x2009, 0x0002, + 0x20a9, 0x0100, 0x683f, 0x0000, 0x680b, 0x0040, 0x7bc8, 0xa386, + 0xfeff, 0x00c0, 0x11e1, 0x6817, 0x0100, 0x681f, 0x0064, 0x0078, + 0x11e5, 0x6817, 0x0064, 0x681f, 0x0002, 0xade8, 0x0010, 0x00f0, + 0x11d2, 0x8109, 0x00c0, 0x11d0, 0x8211, 0x0040, 0x11f3, 0x2069, + 0x6fc0, 0x0078, 0x11ce, 0x1078, 0x25ef, 0x1078, 0x43df, 0x1078, + 0x1dd0, 0x1078, 0x4913, 0x2091, 0x2100, 0x2079, 0x4a00, 0x7810, + 0xd0ec, 0x0040, 0x1207, 0x2071, 0x0020, 0x0078, 0x1209, 0x2071, + 0x0050, 0x2091, 0x2200, 0x2079, 0x4a00, 0x2071, 0x0020, 0x2091, + 0x2300, 0x2079, 0x4a00, 0x7810, 0xd0ec, 0x0040, 0x121b, 0x2079, + 0x0100, 0x0078, 0x121d, 0x2079, 0x0200, 0x2071, 0x4a40, 0x2091, + 0x2400, 0x2079, 0x0100, 0x2071, 0x4a80, 0x2091, 0x2000, 0x2079, + 0x4a00, 0x2071, 0x0010, 0x3200, 0xa085, 0x303d, 0x2090, 0x2071, + 0x0010, 0x70c3, 0x0000, 0x0090, 0x123c, 0x70c0, 0xa086, 0x0002, + 0x00c0, 0x123c, 0x1078, 0x15a6, 0x2039, 0x0000, 0x7810, 0xd0ec, + 0x00c0, 0x12be, 0x1078, 0x147b, 0x78ac, 0xa005, 0x00c0, 0x125a, + 0x0068, 0x1250, 0x786c, 0xa065, 0x0040, 0x1250, 0x1078, 0x2346, + 0x1078, 0x207d, 0x0068, 0x1267, 0x786c, 0xa065, 0x0040, 0x125a, + 0x1078, 0x2346, 0x0068, 0x1267, 0x2009, 0x4a47, 0x2011, 0x4a87, + 0x2104, 0x220c, 0xa105, 0x0040, 0x1267, 0x1078, 0x1efc, 0x2071, + 0x4a40, 0x70a4, 0xa005, 0x0040, 0x128c, 0x7450, 0xa485, 0x0000, + 0x0040, 0x128c, 0x2079, 0x0200, 0x2091, 0x8000, 0x72d4, 0xa28c, + 0x303d, 0x2190, 0x1078, 0x2a7a, 0x2091, 0x8000, 0x2091, 0x303d, + 0x0068, 0x128c, 0x2079, 0x4a00, 0x786c, 0xa065, 0x0040, 0x128c, + 0x2071, 0x0010, 0x1078, 0x2346, 0x00e0, 0x1294, 0x2079, 0x4a00, + 0x2071, 0x0010, 0x1078, 0x4725, 0x2071, 0x4a80, 0x70a4, 0xa005, + 0x0040, 0x12ac, 0x7050, 0xa025, 0x0040, 0x12ac, 0x2079, 0x0100, + 0x2091, 0x8000, 0x72d4, 0xa28c, 0x303d, 0x2190, 0x1078, 0x2a7a, + 0x2091, 0x8000, 0x2091, 0x303d, 0x2079, 0x4a00, 0x2071, 0x0010, + 0x0068, 0x12b8, 0x786c, 0xa065, 0x0040, 0x12b8, 0x1078, 0x2346, + 0x00e0, 0x1242, 0x1078, 0x4725, 0x0078, 0x1242, 0x1078, 0x147b, + 0x78ac, 0xa005, 0x00c0, 0x12d6, 0x0068, 0x12cc, 0x786c, 0xa065, + 0x0040, 0x12cc, 0x1078, 0x2346, 0x1078, 0x207d, 0x0068, 0x12e0, + 0x786c, 0xa065, 0x0040, 0x12d6, 0x1078, 0x2346, 0x0068, 0x12e0, + 0x2009, 0x4a47, 0x2104, 0xa005, 0x0040, 0x12e0, 0x1078, 0x1efc, + 0x2071, 0x4a40, 0x70a4, 0xa005, 0x0040, 0x12fb, 0x7450, 0xa485, + 0x0000, 0x0040, 0x12fb, 0x2079, 0x0100, 0x2091, 0x8000, 0x72d4, + 0xa28c, 0x303d, 0x2190, 0x1078, 0x2a7a, 0x2091, 0x8000, 0x2091, + 0x303d, 0x2079, 0x4a00, 0x2071, 0x0010, 0x0068, 0x1305, 0x786c, + 0xa065, 0x0040, 0x1305, 0x1078, 0x2346, 0x00e0, 0x12be, 0x1078, + 0x4725, 0x0078, 0x12be, 0x132b, 0x132b, 0x132d, 0x132d, 0x133a, + 0x133a, 0x133a, 0x133a, 0x1345, 0x1345, 0x1352, 0x1352, 0x133a, + 0x133a, 0x133a, 0x133a, 0x132b, 0x132b, 0x132d, 0x132d, 0x133a, + 0x133a, 0x133a, 0x133a, 0x1345, 0x1345, 0x1352, 0x1352, 0x133a, + 0x133a, 0x133a, 0x133a, 0x0078, 0x132b, 0x007e, 0x107e, 0x127e, + 0x2091, 0x2400, 0x1078, 0x28e9, 0x127f, 0x107f, 0x007f, 0x2091, + 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13b3, 0x127f, + 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, + 0x2091, 0x2300, 0x1078, 0x28e9, 0x127f, 0x107f, 0x007f, 0x2091, + 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, + 0x28e9, 0x2091, 0x2400, 0x1078, 0x28e9, 0x127f, 0x107f, 0x007f, + 0x2091, 0x8001, 0x007c, 0x1383, 0x1383, 0x1385, 0x1385, 0x1392, + 0x1392, 0x1392, 0x1392, 0x139d, 0x139d, 0x1385, 0x1385, 0x1392, + 0x1392, 0x1392, 0x1392, 0x139e, 0x139e, 0x139e, 0x139e, 0x139e, + 0x139e, 0x139e, 0x139e, 0x139e, 0x139e, 0x139e, 0x139e, 0x139e, + 0x139e, 0x139e, 0x139e, 0x0078, 0x1383, 0x007e, 0x107e, 0x127e, + 0x2091, 0x2300, 0x1078, 0x28e9, 0x127f, 0x107f, 0x007f, 0x2091, + 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13c0, 0x127f, + 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007c, 0x0e7e, 0x007e, + 0x2071, 0x4a00, 0x70e0, 0xa005, 0x00c0, 0x13b0, 0x0f7e, 0x2079, + 0x0100, 0x70e3, 0x0020, 0x78ec, 0xa084, 0x1c00, 0x70e6, 0x0f7f, + 0x007f, 0x0e7f, 0x007c, 0x3c00, 0xa084, 0x0007, 0x0079, 0x13b8, + 0x13c9, 0x13c9, 0x13cb, 0x13cb, 0x13d0, 0x13d0, 0x13d5, 0x13d5, + 0x3c00, 0xa084, 0x0003, 0x0079, 0x13c5, 0x13c9, 0x13c9, 0x13de, + 0x13de, 0x1078, 0x28ca, 0x2091, 0x2200, 0x1078, 0x4479, 0x007c, + 0x2091, 0x2100, 0x1078, 0x4479, 0x007c, 0x2091, 0x2100, 0x1078, + 0x4479, 0x2091, 0x2200, 0x1078, 0x4479, 0x007c, 0x2091, 0x2100, + 0x1078, 0x4479, 0x007c, 0x1403, 0x1403, 0x1405, 0x1405, 0x1412, + 0x1412, 0x1412, 0x1412, 0x141d, 0x141d, 0x142a, 0x142a, 0x1412, + 0x1412, 0x1412, 0x1412, 0x143b, 0x143b, 0x143b, 0x143b, 0x143b, + 0x143b, 0x143b, 0x143b, 0x143b, 0x143b, 0x143b, 0x143b, 0x143b, + 0x143b, 0x143b, 0x143b, 0x0078, 0x1403, 0x007e, 0x107e, 0x127e, + 0x2091, 0x2400, 0x1078, 0x28e9, 0x127f, 0x107f, 0x007f, 0x2091, + 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13b3, 0x127f, + 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, + 0x2091, 0x2300, 0x1078, 0x28e9, 0x127f, 0x107f, 0x007f, 0x2091, + 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, + 0x28e9, 0x2091, 0x2400, 0x1078, 0x28e9, 0x127f, 0x107f, 0x007f, + 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x0e7e, 0x0f7e, + 0x2079, 0x4a00, 0x3e00, 0xd084, 0x0040, 0x1452, 0x2071, 0x0200, + 0x78e0, 0xa005, 0x00c0, 0x1452, 0x78e3, 0x0020, 0x70ec, 0xa084, + 0x1c00, 0x78e6, 0x3e00, 0xd08c, 0x0040, 0x1462, 0x2071, 0x0100, + 0x78e8, 0xa005, 0x00c0, 0x1462, 0x78eb, 0x0020, 0x70ec, 0xa084, + 0x1c00, 0x78ee, 0x0f7f, 0x0e7f, 0x127f, 0x107f, 0x007f, 0x007c, + 0x7008, 0x800b, 0x00c8, 0x1476, 0x7007, 0x0002, 0xa08c, 0x01e0, + 0x00c0, 0x1477, 0xd09c, 0x0040, 0x1476, 0x087a, 0x097a, 0x70c3, + 0x4002, 0x0078, 0x15a9, 0x0068, 0x1500, 0x2061, 0x0000, 0x6018, + 0xd084, 0x00c0, 0x1500, 0x7828, 0xa005, 0x00c0, 0x148b, 0x0010, + 0x1501, 0x0078, 0x1500, 0x7910, 0xd1f4, 0x0040, 0x1493, 0x2001, + 0x4007, 0x0078, 0x15a8, 0x7914, 0xd1ec, 0x0040, 0x14ae, 0xd0fc, + 0x0040, 0x14a4, 0x007e, 0x1078, 0x1d6d, 0x007f, 0x0040, 0x14ae, + 0x2001, 0x4007, 0x0078, 0x15a8, 0x007e, 0x1078, 0x1d5d, 0x007f, + 0x0040, 0x14ae, 0x2001, 0x4007, 0x0078, 0x15a8, 0x7910, 0xd0fc, + 0x00c0, 0x14b8, 0x2061, 0x4a40, 0xc19c, 0xc7fc, 0x0078, 0x14bc, + 0x2061, 0x4a80, 0xc19d, 0xc7fd, 0x6064, 0xa005, 0x00c0, 0x1500, + 0x7912, 0x6083, 0x0000, 0x7828, 0xc0fc, 0xa086, 0x0018, 0x00c0, + 0x14cd, 0x0c7e, 0x1078, 0x1b1c, 0x0c7f, 0x782b, 0x0000, 0x607c, + 0xa065, 0x0040, 0x14e6, 0x0c7e, 0x609c, 0x1078, 0x1e3b, 0x0c7f, + 0x609f, 0x0000, 0x1078, 0x1c48, 0x2009, 0x0018, 0x6087, 0x0103, + 0x1078, 0x1d7d, 0x00c0, 0x14fa, 0x1078, 0x1dc2, 0x7810, 0xd09c, + 0x00c0, 0x14ee, 0x2061, 0x4a40, 0x0078, 0x14f2, 0x2061, 0x4a80, + 0xc09c, 0x7812, 0x607f, 0x0000, 0x60d4, 0xd0dc, 0x0040, 0x14fe, + 0xc0dc, 0x60d6, 0x2001, 0x4005, 0x0078, 0x15a8, 0x0078, 0x15a6, + 0x007c, 0x7810, 0xd0f4, 0x0040, 0x1509, 0x2001, 0x4007, 0x0078, + 0x15a8, 0xa006, 0x70c2, 0x70c6, 0x70ca, 0x70ce, 0x70da, 0x70c0, + 0xa08a, 0x0040, 0x00c8, 0x1516, 0x0079, 0x151d, 0x2100, 0xa08a, + 0x0040, 0x00c8, 0x15b4, 0x0079, 0x155d, 0x15a6, 0x15fc, 0x15c5, + 0x1634, 0x166c, 0x166c, 0x15bc, 0x1c60, 0x1677, 0x15b4, 0x15c9, + 0x15cb, 0x15cd, 0x15cf, 0x1c65, 0x15b4, 0x1685, 0x16dd, 0x1b3e, + 0x1c5a, 0x15d1, 0x19b0, 0x19f2, 0x1a28, 0x1a74, 0x196b, 0x1978, + 0x198c, 0x199f, 0x17ad, 0x1ce5, 0x170f, 0x171c, 0x1728, 0x1734, + 0x174a, 0x1756, 0x1759, 0x1765, 0x1771, 0x1779, 0x1795, 0x17a1, + 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x17ba, 0x17cc, 0x17e8, 0x181e, + 0x1846, 0x1856, 0x1859, 0x188a, 0x18bb, 0x18cd, 0x193a, 0x194a, + 0x1d3b, 0x15b4, 0x15b4, 0x15b4, 0x195a, 0x15b4, 0x15b4, 0x15b4, + 0x15b4, 0x15b4, 0x1c8a, 0x1c90, 0x15b4, 0x15b4, 0x15b4, 0x1c94, + 0x1ce1, 0x15b4, 0x15b4, 0x1cf1, 0x1d00, 0x15f6, 0x1666, 0x167f, + 0x16d7, 0x1b38, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x1c7c, + 0x1c86, 0x15b4, 0x15b4, 0x1d0b, 0x1d24, 0x15b4, 0x15b4, 0x15b4, + 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, + 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, + 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, + 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x15b4, 0x72ca, 0x71c6, 0x2001, + 0x4006, 0x0078, 0x15a8, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, + 0x70c2, 0x0068, 0x15a9, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, + 0x5000, 0x2091, 0x4080, 0x007c, 0x70c3, 0x4001, 0x0078, 0x15a9, + 0x70c3, 0x4006, 0x0078, 0x15a9, 0x2099, 0x0041, 0x20a1, 0x0041, + 0x20a9, 0x0005, 0x53a3, 0x0078, 0x15a6, 0x70c4, 0x70c3, 0x0004, + 0x007a, 0x0078, 0x15a6, 0x0078, 0x15a6, 0x0078, 0x15a6, 0x0078, + 0x15a6, 0x2091, 0x8000, 0x70c3, 0x0004, 0x70c7, 0x4953, 0x70cb, + 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0008, 0x2001, 0x0007, 0x70d6, + 0x2079, 0x0000, 0x781b, 0x0001, 0x2031, 0x0030, 0x2059, 0x1000, + 0x2029, 0x041a, 0x2051, 0x0445, 0x2061, 0x0447, 0x20c1, 0x0000, + 0x2091, 0x5000, 0x2091, 0x4080, 0x0078, 0x0418, 0x75d8, 0x74dc, + 0x75da, 0x74de, 0x0078, 0x15ff, 0x2029, 0x0000, 0x2520, 0x71d0, + 0x72c8, 0x73cc, 0x70c4, 0x20a0, 0x2099, 0x0030, 0x7003, 0x0001, + 0x7007, 0x0006, 0x731a, 0x721e, 0x7422, 0x7526, 0x2021, 0x0040, + 0x81ff, 0x0040, 0x15a6, 0xa182, 0x0040, 0x00c8, 0x1619, 0x2120, + 0xa006, 0x2008, 0x8403, 0x7012, 0x7007, 0x0004, 0x7007, 0x0001, + 0x7008, 0xd0fc, 0x0040, 0x1620, 0x7007, 0x0002, 0xa084, 0x01e0, + 0x0040, 0x162e, 0x70c3, 0x4002, 0x0078, 0x15a9, 0x24a8, 0x53a5, + 0x0078, 0x1610, 0x0078, 0x15a6, 0x2029, 0x0000, 0x2520, 0x71d0, + 0x72c8, 0x73cc, 0x70c4, 0x2098, 0x20a1, 0x0030, 0x7003, 0x0000, + 0x7007, 0x0006, 0x731a, 0x721e, 0x7422, 0x7526, 0x2021, 0x0040, + 0x7007, 0x0006, 0x81ff, 0x0040, 0x15a6, 0xa182, 0x0040, 0x00c8, + 0x1653, 0x2120, 0xa006, 0x2008, 0x8403, 0x7012, 0x24a8, 0x53a6, + 0x7007, 0x0001, 0x7008, 0xd0fc, 0x0040, 0x165a, 0xa084, 0x01e0, + 0x0040, 0x1648, 0x70c3, 0x4002, 0x0078, 0x15a9, 0x75d8, 0x74dc, + 0x75da, 0x74de, 0x0078, 0x1637, 0x71c4, 0x70c8, 0x2114, 0xa79e, + 0x0004, 0x00c0, 0x1674, 0x200a, 0x72ca, 0x0078, 0x15a5, 0x70c7, + 0x0008, 0x70cb, 0x0007, 0x70cf, 0x0000, 0x0078, 0x15a6, 0x75d8, + 0x76dc, 0x75da, 0x76de, 0x0078, 0x1688, 0x2029, 0x0000, 0x2530, + 0x70c4, 0x72c8, 0x73cc, 0x74d0, 0x70c6, 0x72ca, 0x73ce, 0x74d2, + 0xa005, 0x0040, 0x16d2, 0x8001, 0x7872, 0xa084, 0xfc00, 0x0040, + 0x16a0, 0x78ac, 0xc085, 0x78ae, 0x2001, 0x4005, 0x0078, 0x15a8, + 0x7b7e, 0x7a7a, 0x7e86, 0x7d82, 0x7c76, 0xa48c, 0xff00, 0x0040, + 0x16b8, 0x8407, 0x8004, 0x8004, 0x810c, 0x810c, 0x810f, 0xa118, + 0xa291, 0x0000, 0xa6b1, 0x0000, 0xa581, 0x0000, 0x0078, 0x16c2, + 0x8407, 0x8004, 0x8004, 0xa318, 0xa291, 0x0000, 0xa6b1, 0x0000, + 0xa581, 0x0000, 0x731a, 0x721e, 0x7622, 0x7026, 0xa605, 0x0040, + 0x16cc, 0x7a10, 0xc2c5, 0x7a12, 0x78ac, 0xa084, 0xfffc, 0x78ae, + 0x0078, 0x16d5, 0x78ac, 0xc085, 0x78ae, 0x0078, 0x15a6, 0x75d8, + 0x76dc, 0x75da, 0x76de, 0x0078, 0x16e0, 0x2029, 0x0000, 0x2530, + 0x70c4, 0x72c8, 0x73cc, 0x74d4, 0x70c6, 0x72ca, 0x73ce, 0x74d6, + 0xa005, 0x0040, 0x170a, 0x8001, 0x7892, 0xa084, 0xfc00, 0x0040, + 0x16f8, 0x78ac, 0xc0c5, 0x78ae, 0x2001, 0x4005, 0x0078, 0x15a8, + 0x7a9a, 0x7b9e, 0x7da2, 0x7ea6, 0x2600, 0xa505, 0x0040, 0x1703, + 0x7a10, 0xc2c5, 0x7a12, 0x7c96, 0x78ac, 0xa084, 0xfcff, 0x78ae, + 0x0078, 0x170d, 0x78ac, 0xc0c5, 0x78ae, 0x0078, 0x15a6, 0x2009, + 0x0000, 0x786c, 0xa065, 0x0040, 0x1719, 0x8108, 0x6000, 0x0078, + 0x1712, 0x7ac4, 0x0078, 0x15a4, 0x2009, 0x4a48, 0x210c, 0x7810, + 0xd0ec, 0x00c0, 0x15a5, 0x2011, 0x4a88, 0x2214, 0x0078, 0x15a4, + 0x2009, 0x4a49, 0x210c, 0x7810, 0xd0ec, 0x00c0, 0x15a5, 0x2011, + 0x4a89, 0x2214, 0x0078, 0x15a4, 0x2061, 0x4a40, 0x6128, 0x622c, + 0x8214, 0x8214, 0x8214, 0x7810, 0xd0ec, 0x00c0, 0x1748, 0x2061, + 0x4a80, 0x6328, 0x73da, 0x632c, 0x831c, 0x831c, 0x831c, 0x73de, + 0x0078, 0x15a4, 0x2009, 0x4a4c, 0x210c, 0x7810, 0xd0ec, 0x00c0, + 0x15a5, 0x2011, 0x4a8c, 0x2214, 0x0078, 0x15a4, 0x7918, 0x0078, + 0x15a5, 0x2009, 0x4a4d, 0x210c, 0x7810, 0xd0ec, 0x00c0, 0x15a5, + 0x2011, 0x4a8d, 0x2214, 0x0078, 0x15a4, 0x2009, 0x4a4e, 0x210c, + 0x7810, 0xd0ec, 0x00c0, 0x15a5, 0x2011, 0x4a8e, 0x2214, 0x0078, + 0x15a4, 0x7920, 0x7810, 0xd0ec, 0x00c0, 0x15a5, 0x7a24, 0x0078, + 0x15a4, 0x71c4, 0xd1fc, 0x00c0, 0x1781, 0x2011, 0x4ec0, 0x0078, + 0x1783, 0x2011, 0x4f40, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, + 0x8003, 0xa268, 0x6a00, 0x6804, 0xd09c, 0x0040, 0x1792, 0x6b08, + 0x0078, 0x1793, 0x6b0c, 0x0078, 0x15a3, 0x77c4, 0x1078, 0x1de0, + 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, 0x0078, + 0x15a3, 0x2061, 0x4a40, 0x6118, 0x7810, 0xd0ec, 0x00c0, 0x15a5, + 0x2061, 0x4a80, 0x6218, 0x0078, 0x15a4, 0x77c4, 0x1078, 0x1de0, + 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, 0x77da, 0x2091, 0x8001, + 0x0078, 0x15a3, 0x71c4, 0x2110, 0xa294, 0x000f, 0xa282, 0x0010, + 0x00c8, 0x159e, 0x1078, 0x2707, 0xa384, 0x4000, 0x0040, 0x17ca, + 0xa295, 0x0020, 0x0078, 0x15a3, 0x71c4, 0x2100, 0xc0bc, 0xa082, + 0x0010, 0x00c8, 0x159e, 0xd1bc, 0x00c0, 0x17db, 0x2011, 0x4a48, + 0x2204, 0x0078, 0x17df, 0x2011, 0x4a88, 0x2204, 0xc0bd, 0x007e, + 0x2100, 0xc0bc, 0x2012, 0x1078, 0x2664, 0x017f, 0x0078, 0x15a5, + 0x71c4, 0x2021, 0x4a49, 0x2404, 0x70c6, 0x2019, 0x0000, 0x0078, + 0x17f7, 0x71c8, 0x2021, 0x4a89, 0x2404, 0x70ca, 0xc3fd, 0x2011, + 0x1816, 0x20a9, 0x0008, 0x2204, 0xa106, 0x0040, 0x1806, 0x8210, + 0x00f0, 0x17fb, 0x71c4, 0x72c8, 0x0078, 0x159d, 0xa292, 0x1816, + 0x027e, 0x2122, 0x017f, 0x1078, 0x2685, 0x7810, 0xd0ec, 0x00c0, + 0x1814, 0xd3fc, 0x0040, 0x17f1, 0x0078, 0x15a6, 0x03e8, 0x00fa, + 0x01f4, 0x02ee, 0x0064, 0x0019, 0x0032, 0x004b, 0x2061, 0x4a40, + 0x6128, 0x622c, 0x8214, 0x8214, 0x8214, 0x70c4, 0x602a, 0x70c8, + 0x8003, 0x8003, 0x8003, 0x602e, 0x7810, 0xd0ec, 0x00c0, 0x1844, + 0x027e, 0x017e, 0x2061, 0x4a80, 0x6128, 0x622c, 0x8214, 0x8214, + 0x8214, 0x70d8, 0x602a, 0x70dc, 0x8003, 0x8003, 0x8003, 0x602e, + 0x71da, 0x72de, 0x017f, 0x027f, 0x0078, 0x15a4, 0x2061, 0x4a40, + 0x6130, 0x70c4, 0x6032, 0x7810, 0xd0ec, 0x00c0, 0x15a5, 0x2061, + 0x4a80, 0x6230, 0x70c8, 0x6032, 0x0078, 0x15a4, 0x7918, 0x0078, + 0x15a5, 0x71c4, 0xa184, 0xffcf, 0x0040, 0x1865, 0x7810, 0xd0ec, + 0x00c0, 0x159e, 0x72c8, 0x0078, 0x159d, 0x2011, 0x4a4d, 0x2204, + 0x2112, 0x007e, 0x2019, 0x0000, 0x1078, 0x26ec, 0x7810, 0xd0ec, + 0x0040, 0x1875, 0x017f, 0x0078, 0x15a5, 0x71c8, 0xa184, 0xffcf, + 0x0040, 0x187e, 0x2110, 0x71c4, 0x0078, 0x159d, 0x2011, 0x4a8d, + 0x2204, 0x2112, 0x007e, 0xc3fd, 0x1078, 0x26ec, 0x027f, 0x017f, + 0x0078, 0x15a4, 0x71c4, 0xa182, 0x0010, 0x0048, 0x1896, 0x7810, + 0xd0ec, 0x00c0, 0x159e, 0x72c8, 0x0078, 0x159d, 0x2011, 0x4a4e, + 0x2204, 0x007e, 0x2112, 0x2019, 0x0000, 0x1078, 0x26ca, 0x7810, + 0xd0ec, 0x0040, 0x18a6, 0x017f, 0x0078, 0x15a5, 0x71c8, 0xa182, + 0x0010, 0x0048, 0x18af, 0x2110, 0x71c4, 0x0078, 0x159d, 0x2011, + 0x4a8e, 0x2204, 0x007e, 0x2112, 0xc3fd, 0x1078, 0x26ca, 0x027f, + 0x017f, 0x0078, 0x15a4, 0x71c4, 0x72c8, 0xa184, 0xfffd, 0x00c0, + 0x159d, 0xa284, 0xfffd, 0x00c0, 0x159d, 0x2100, 0x7920, 0x7822, + 0x2200, 0x7a24, 0x7826, 0x0078, 0x15a4, 0x71c4, 0xd1fc, 0x00c0, + 0x18d5, 0x2011, 0x4ec0, 0x0078, 0x18d7, 0x2011, 0x4f40, 0x8107, + 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa268, 0x2019, 0x0000, + 0x72c8, 0xa284, 0x0080, 0x0040, 0x18eb, 0x6c14, 0x84ff, 0x00c0, + 0x18eb, 0x6817, 0x0040, 0xa284, 0x0040, 0x0040, 0x18f5, 0x6c10, + 0x84ff, 0x00c0, 0x18f5, 0x6813, 0x0001, 0x6800, 0x007e, 0xa226, + 0x0040, 0x1912, 0x6a02, 0xd4ec, 0x0040, 0x18ff, 0xc3a5, 0xd4e4, + 0x0040, 0x1903, 0xc39d, 0xd4f4, 0x0040, 0x1912, 0x810f, 0xd2f4, + 0x0040, 0x190e, 0x1078, 0x2749, 0x0078, 0x1912, 0x1078, 0x2727, + 0x0078, 0x1912, 0x72cc, 0x6808, 0xa206, 0x0040, 0x1932, 0xa2a4, + 0x00ff, 0x7814, 0xd0e4, 0x00c0, 0x1925, 0xa482, 0x0028, 0x0048, + 0x192f, 0x0040, 0x192f, 0x0078, 0x1929, 0xa482, 0x0043, 0x0048, + 0x192f, 0x71c4, 0x71c6, 0x027f, 0x72ca, 0x0078, 0x159f, 0x6a0a, + 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x71c4, + 0x0078, 0x15a3, 0x77c4, 0x1078, 0x1de0, 0x2091, 0x8000, 0x6a14, + 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e, 0x2708, + 0x0078, 0x15a3, 0x70c4, 0x2061, 0x4a40, 0x6118, 0x601a, 0x7810, + 0xd0ec, 0x00c0, 0x15a5, 0x70c8, 0x2061, 0x4a80, 0x6218, 0x601a, + 0x0078, 0x15a4, 0x71c4, 0x72c8, 0x73cc, 0xa182, 0x0010, 0x00c8, + 0x159e, 0x1078, 0x276b, 0xa384, 0x4000, 0x0040, 0x1969, 0xa295, + 0x0020, 0x0078, 0x15a3, 0x77c4, 0x1078, 0x1de0, 0x2091, 0x8000, + 0x6a08, 0xc28d, 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, 0x15a4, + 0x77c4, 0x1078, 0x1de0, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9, + 0x6a0a, 0x6804, 0xa005, 0x0040, 0x1987, 0x1078, 0x25bc, 0x2091, + 0x8001, 0x2708, 0x0078, 0x15a4, 0x77c4, 0x1078, 0x1de0, 0x2091, + 0x8000, 0x6a08, 0xc295, 0x6a0a, 0x6804, 0xa005, 0x0040, 0x199a, + 0x1078, 0x25bc, 0x2091, 0x8001, 0x2708, 0x0078, 0x15a4, 0x77c4, + 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, + 0x1078, 0x1dfb, 0x2091, 0x8001, 0x2708, 0x6a08, 0x0078, 0x15a4, + 0x77c4, 0x7814, 0xd0e4, 0x00c0, 0x19c4, 0xd7fc, 0x0040, 0x19be, + 0x1078, 0x1d6d, 0x0040, 0x19c4, 0x0078, 0x15a8, 0x1078, 0x1d5d, + 0x0040, 0x19c4, 0x0078, 0x15a8, 0x73c8, 0x72cc, 0x77c6, 0x73ca, + 0x72ce, 0x1078, 0x1e78, 0x00c0, 0x19ee, 0x6818, 0xa005, 0x0040, + 0x19e8, 0x2708, 0x077e, 0x1078, 0x279b, 0x077f, 0x00c0, 0x19e8, + 0x2001, 0x0015, 0xd7fc, 0x00c0, 0x19e1, 0x2061, 0x4a40, 0x0078, + 0x19e4, 0xc0fd, 0x2061, 0x4a80, 0x782a, 0x2091, 0x8001, 0x007c, + 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, 0x15a8, 0x2091, 0x8001, + 0x0078, 0x15a6, 0x77c4, 0x7814, 0xd0e4, 0x00c0, 0x1a06, 0xd7fc, + 0x0040, 0x1a00, 0x1078, 0x1d6d, 0x0040, 0x1a06, 0x0078, 0x15a8, + 0x1078, 0x1d5d, 0x0040, 0x1a06, 0x0078, 0x15a8, 0x77c6, 0x2041, + 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, + 0x1dfb, 0x2009, 0x0016, 0xd7fc, 0x00c0, 0x1a1a, 0x2061, 0x4a40, + 0x0078, 0x1a1d, 0x2061, 0x4a80, 0xc1fd, 0x6067, 0x0003, 0x6776, + 0x6083, 0x000f, 0x792a, 0x1078, 0x25bc, 0x2091, 0x8001, 0x007c, + 0x77c8, 0x77ca, 0x77c4, 0x77c6, 0x7814, 0xd0e4, 0x00c0, 0x1a3f, + 0xd7fc, 0x0040, 0x1a39, 0x1078, 0x1d6d, 0x0040, 0x1a3f, 0x0078, + 0x15a8, 0x1078, 0x1d5d, 0x0040, 0x1a3f, 0x0078, 0x15a8, 0xa7bc, + 0xff00, 0x2091, 0x8000, 0x2009, 0x0017, 0xd7fc, 0x00c0, 0x1a4c, + 0x2061, 0x4a40, 0x0078, 0x1a4f, 0x2061, 0x4a80, 0xc1fd, 0x6067, + 0x0002, 0x6776, 0x6083, 0x000f, 0x792a, 0x1078, 0x25bc, 0x2091, + 0x8001, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0010, 0x2091, + 0x8000, 0x70c8, 0xa005, 0x0040, 0x1a68, 0x60d4, 0xc0fd, 0x60d6, + 0x1078, 0x1dfb, 0x70c8, 0x683e, 0x8738, 0xa784, 0x001f, 0x00c0, + 0x1a68, 0x2091, 0x8001, 0x007c, 0x7814, 0xd0e4, 0x00c0, 0x1a88, + 0x72c8, 0xd284, 0x0040, 0x1a82, 0x1078, 0x1d6d, 0x0040, 0x1a88, + 0x0078, 0x15a8, 0x1078, 0x1d5d, 0x0040, 0x1a88, 0x0078, 0x15a8, + 0x72c8, 0x72ca, 0x78ac, 0xa084, 0x0003, 0x00c0, 0x1ab3, 0x2039, + 0x0000, 0xd284, 0x0040, 0x1a95, 0xc7fd, 0x2041, 0x0021, 0x2049, + 0x0004, 0x2051, 0x0008, 0x1078, 0x1de0, 0x2091, 0x8000, 0x6808, + 0xc0d4, 0xa80d, 0x690a, 0x2091, 0x8001, 0x8738, 0xa784, 0x001f, + 0x00c0, 0x1a9b, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, + 0x0f00, 0x00c0, 0x1a9b, 0x2091, 0x8000, 0x72c8, 0xd284, 0x00c0, + 0x1ac5, 0x7810, 0xd0ec, 0x0040, 0x1ac1, 0x2069, 0x0100, 0x0078, + 0x1ac7, 0x2069, 0x0200, 0x0078, 0x1ac7, 0x2069, 0x0100, 0x6830, + 0xd0b4, 0x0040, 0x1ae3, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, + 0xd094, 0x0040, 0x1ad5, 0x00f0, 0x1acf, 0x684b, 0x0009, 0x20a9, + 0x0014, 0x6848, 0xd084, 0x0040, 0x1adf, 0x00f0, 0x1ad9, 0x20a9, + 0x00fa, 0x00f0, 0x1ae1, 0x2079, 0x4a00, 0x2009, 0x0018, 0x72c8, + 0xd284, 0x00c0, 0x1aef, 0x2061, 0x4a40, 0x0078, 0x1af2, 0x2061, + 0x4a80, 0xc1fd, 0x792a, 0x6067, 0x0001, 0x6083, 0x000f, 0x60a7, + 0x0000, 0x60a8, 0x60b2, 0x60b6, 0x60d4, 0xd0b4, 0x0040, 0x1b0c, + 0xc0b4, 0x60d6, 0x0c7e, 0x60b8, 0xa065, 0x6008, 0xc0d4, 0x600a, + 0x6018, 0x8001, 0x601a, 0x0c7f, 0x60d4, 0xa084, 0x77ff, 0x60d6, + 0x78ac, 0xc08d, 0x78ae, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b, + 0x0047, 0x2091, 0x8001, 0x007c, 0xd7fc, 0x00c0, 0x1b23, 0x2069, + 0x4a40, 0x0078, 0x1b25, 0x2069, 0x4a80, 0x78ac, 0xc08c, 0x78ae, + 0xd084, 0x00c0, 0x1b2f, 0x0d7e, 0x1078, 0x1ed8, 0x0d7f, 0x71c4, + 0x71c6, 0x6916, 0x81ff, 0x00c0, 0x1b37, 0x68a7, 0x0001, 0x007c, + 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1b41, 0x2029, 0x0000, + 0x2520, 0x71c4, 0x73c8, 0x72cc, 0x71c6, 0x73ca, 0x72ce, 0x2079, + 0x4a00, 0x7dde, 0x7cda, 0x7bd6, 0x7ad2, 0x1078, 0x1db9, 0x0040, + 0x1c44, 0x20a9, 0x0005, 0x20a1, 0x4a14, 0x2091, 0x8000, 0x41a1, + 0x2091, 0x8001, 0x2009, 0x0040, 0x1078, 0x1fad, 0x0040, 0x1b64, + 0x1078, 0x1dc2, 0x0078, 0x1c44, 0x6004, 0xa08c, 0x00ff, 0xa18e, + 0x0009, 0x00c0, 0x1b6f, 0x007e, 0x1078, 0x2329, 0x007f, 0xa084, + 0xff00, 0x8007, 0x8009, 0x0040, 0x1be3, 0x0c7e, 0x2c68, 0x1078, + 0x1db9, 0x0040, 0x1bb5, 0x2c00, 0x689e, 0x8109, 0x00c0, 0x1b76, + 0x609f, 0x0000, 0x0c7f, 0x0c7e, 0x7ddc, 0x7cd8, 0x7bd4, 0x7ad0, + 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, + 0x7dde, 0x7cda, 0x7bd6, 0x7ad2, 0x2c68, 0x689c, 0xa065, 0x0040, + 0x1be2, 0x2009, 0x0040, 0x1078, 0x1fad, 0x00c0, 0x1bcc, 0x6004, + 0xa084, 0x00ff, 0xa086, 0x0002, 0x00c0, 0x1bb5, 0x6004, 0xa084, + 0x00ff, 0xa086, 0x000a, 0x00c0, 0x1bb1, 0x017e, 0x1078, 0x2325, + 0x017f, 0x2d00, 0x6002, 0x0078, 0x1b84, 0x0c7f, 0x0c7e, 0x609c, + 0x1078, 0x1e3b, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1c48, 0x2009, + 0x0018, 0x6008, 0xc0cd, 0x600a, 0x6004, 0x6086, 0x1078, 0x1d7d, + 0x1078, 0x1dc2, 0x0078, 0x1c44, 0x0c7f, 0x0c7e, 0x609c, 0x1078, + 0x1e3b, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1c48, 0x2009, 0x0018, + 0x6087, 0x0103, 0x601b, 0x0003, 0x1078, 0x1d7d, 0x1078, 0x1dc2, + 0x0078, 0x1c44, 0x0c7f, 0x7814, 0xd0e4, 0x00c0, 0x1c08, 0x6114, + 0xd1fc, 0x0040, 0x1bf1, 0x1078, 0x1d6d, 0x0040, 0x1c08, 0x0078, + 0x1bf5, 0x1078, 0x1d5d, 0x0040, 0x1c08, 0x2029, 0x0000, 0x2520, + 0x2009, 0x0018, 0x73c8, 0x72cc, 0x6087, 0x0103, 0x601b, 0x0021, + 0x1078, 0x1d7d, 0x1078, 0x1dc2, 0x2001, 0x4007, 0x0078, 0x15a8, + 0x74c4, 0x73c8, 0x72cc, 0x6014, 0x2091, 0x8000, 0x0e7e, 0x2009, + 0x0012, 0xd0fc, 0x00c0, 0x1c18, 0x2071, 0x4a40, 0x0078, 0x1c1b, + 0x2071, 0x4a80, 0xc1fd, 0x792a, 0x7067, 0x0005, 0x71d4, 0xa18c, + 0xf77f, 0x71d6, 0x736a, 0x726e, 0x7472, 0x7076, 0x707b, 0x0000, + 0x2c00, 0x707e, 0xa02e, 0x2530, 0x611c, 0xa184, 0x0060, 0x0040, + 0x1c33, 0x1078, 0x4383, 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x66aa, + 0x60af, 0x0000, 0x60b3, 0x0000, 0x6714, 0x6023, 0x0000, 0x1078, + 0x25bc, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, 0x0078, 0x15a9, + 0x20a9, 0x0005, 0x2099, 0x4a14, 0x2091, 0x8000, 0x530a, 0x2091, + 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, + 0x0000, 0x007c, 0x71c4, 0x70c7, 0x0000, 0x791e, 0x0078, 0x15a6, + 0x71c4, 0x71c6, 0x2168, 0x0078, 0x1c67, 0x2069, 0x1000, 0x690c, + 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x00c0, 0x1c69, 0xa285, + 0x0000, 0x00c0, 0x1c77, 0x70c3, 0x4000, 0x0078, 0x1c79, 0x70c3, + 0x4003, 0x70ca, 0x0078, 0x15a9, 0x7964, 0x71c6, 0x71c4, 0xa182, + 0x0003, 0x00c8, 0x159e, 0x7966, 0x0078, 0x15a6, 0x7964, 0x71c6, + 0x0078, 0x15a6, 0x7900, 0x71c6, 0x71c4, 0x7902, 0x0078, 0x15a6, + 0x7900, 0x71c6, 0x0078, 0x15a6, 0x70c4, 0xd08c, 0x0040, 0x1c9d, + 0x7a10, 0xd2ec, 0x00c0, 0x1c9d, 0xc08c, 0x2011, 0x0000, 0xa08c, + 0x000d, 0x0040, 0x1cb1, 0x810c, 0x0048, 0x1cad, 0x8210, 0x810c, + 0x810c, 0x0048, 0x1cad, 0x8210, 0x810c, 0x81ff, 0x00c0, 0x159f, + 0x8210, 0x7a0e, 0xd28c, 0x0040, 0x1cdd, 0x7910, 0xc1cd, 0x7912, + 0x2009, 0x0021, 0x2019, 0x0003, 0xd284, 0x0040, 0x1cd7, 0x8108, + 0x2019, 0x0041, 0x2011, 0x924e, 0x2312, 0x2019, 0x0042, 0x8210, + 0x2312, 0x2019, 0x0043, 0x8210, 0x2312, 0x2019, 0x0046, 0x8210, + 0x2312, 0x2019, 0x0047, 0x8210, 0x2312, 0x2019, 0x0006, 0x2011, + 0x9253, 0x2112, 0x2011, 0x9273, 0x2312, 0x7904, 0x7806, 0x0078, + 0x15a5, 0x7804, 0x70c6, 0x0078, 0x15a6, 0x2091, 0x8000, 0x2019, + 0x0000, 0x2011, 0x0000, 0x2009, 0x0000, 0x2091, 0x8001, 0x0078, + 0x15a3, 0x77c4, 0x1078, 0x1de0, 0x2091, 0x8000, 0x6830, 0xa084, + 0xff00, 0x8007, 0x2010, 0x2091, 0x8001, 0x2708, 0x0078, 0x15a4, + 0x77c4, 0x1078, 0x1de0, 0x2091, 0x8000, 0x6a34, 0x2091, 0x8001, + 0x2708, 0x0078, 0x15a4, 0x77c4, 0x077e, 0xa7bc, 0xff00, 0x20a9, + 0x0008, 0x72c8, 0x8217, 0x1078, 0x1de0, 0x2091, 0x8000, 0x6c30, + 0x6a32, 0x2091, 0x8001, 0x8738, 0x00f0, 0x1d13, 0x077f, 0x2708, + 0x8427, 0x2410, 0x0078, 0x15a4, 0x77c4, 0x077e, 0xa7bc, 0xff00, + 0x20a9, 0x0008, 0x72c8, 0x1078, 0x1de0, 0x2091, 0x8000, 0x6c34, + 0x6a36, 0x2091, 0x8001, 0x8738, 0x00f0, 0x1d2b, 0x077f, 0x2708, + 0x2410, 0x0078, 0x15a4, 0x2011, 0x4a3c, 0x220c, 0x70c4, 0x2012, + 0x0078, 0x15a5, 0x017e, 0x7814, 0xd0f4, 0x0040, 0x1d4f, 0x2001, + 0x4007, 0x70db, 0x0000, 0xa18d, 0x0001, 0x0078, 0x1d5b, 0xd0fc, + 0x0040, 0x1d5a, 0x2001, 0x4007, 0x70db, 0x0001, 0xa18d, 0x0001, + 0x0078, 0x1d5b, 0xa006, 0x017f, 0x007c, 0x017e, 0x7814, 0xd0f4, + 0x0040, 0x1d6a, 0x2001, 0x4007, 0x70db, 0x0000, 0xa18d, 0x0001, + 0x0078, 0x1d6b, 0xa006, 0x017f, 0x007c, 0x017e, 0x7814, 0xd0fc, + 0x0040, 0x1d7a, 0x2001, 0x4007, 0x70db, 0x0001, 0xa18d, 0x0001, + 0x0078, 0x1d7b, 0xa006, 0x017f, 0x007c, 0x7112, 0x721a, 0x731e, + 0x7810, 0xd0c4, 0x0040, 0x1d86, 0x7422, 0x7526, 0xac80, 0x0001, + 0x8108, 0x810c, 0x81a9, 0x8098, 0x20a1, 0x0030, 0x7003, 0x0000, + 0x6084, 0x20a2, 0x53a6, 0x7007, 0x0001, 0x7974, 0x8107, 0x8004, + 0x8004, 0x797c, 0xa108, 0x7a78, 0xa006, 0xa211, 0x7d10, 0xd5c4, + 0x0040, 0x1da6, 0x7b84, 0xa319, 0x7c80, 0xa421, 0x7008, 0xd0fc, + 0x0040, 0x1da6, 0x7003, 0x0001, 0x7007, 0x0006, 0x711a, 0x721e, + 0x7d10, 0xd5c4, 0x0040, 0x1db6, 0x7322, 0x7426, 0xa084, 0x01e0, + 0x007c, 0x7848, 0xa065, 0x0040, 0x1dc1, 0x2c04, 0x784a, 0x2063, + 0x0000, 0x007c, 0x0f7e, 0x2079, 0x4a00, 0x7848, 0x2062, 0x2c00, + 0xa005, 0x00c0, 0x1dcd, 0x1078, 0x28ca, 0x784a, 0x0f7f, 0x007c, + 0x2011, 0x9400, 0x7a4a, 0x7bc4, 0x8319, 0x0040, 0x1ddd, 0xa280, + 0x0032, 0x2012, 0x2010, 0x0078, 0x1dd4, 0x2013, 0x0000, 0x007c, + 0x017e, 0x027e, 0xd7fc, 0x00c0, 0x1de9, 0x2011, 0x4fc0, 0x0078, + 0x1deb, 0x2011, 0x6fc0, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, + 0x0040, 0x1df6, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xa268, + 0x027f, 0x017f, 0x007c, 0x1078, 0x1de0, 0x2900, 0x682a, 0x2a00, + 0x682e, 0x6808, 0xa084, 0xf9ef, 0xa80d, 0x690a, 0xd7fc, 0x00c0, + 0x1e0d, 0x2009, 0x4a53, 0x0078, 0x1e0f, 0x2009, 0x4a93, 0x210c, + 0x6804, 0xa005, 0x0040, 0x1e1f, 0xa116, 0x00c0, 0x1e1f, 0x2060, + 0x6000, 0x6806, 0x017e, 0x200b, 0x0000, 0x0078, 0x1e22, 0x2009, + 0x0000, 0x017e, 0x6804, 0xa065, 0x0040, 0x1e37, 0x6000, 0x6806, + 0x1078, 0x1e4d, 0x1078, 0x1ff9, 0x6810, 0x7908, 0x8109, 0x790a, + 0x8001, 0x6812, 0x00c0, 0x1e22, 0x7910, 0xc1a5, 0x7912, 0x017f, + 0x6902, 0x6906, 0x007c, 0xa065, 0x0040, 0x1e4c, 0x2008, 0x609c, + 0xa005, 0x0040, 0x1e49, 0x2062, 0x609f, 0x0000, 0xa065, 0x0078, + 0x1e3f, 0x7848, 0x794a, 0x2062, 0x007c, 0x6007, 0x0103, 0x608f, + 0x0000, 0x20a9, 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001, 0x0000, + 0x40a4, 0x6828, 0x601a, 0x682c, 0x6022, 0x007c, 0x0e7e, 0xd7fc, + 0x00c0, 0x1e68, 0x2071, 0x4a40, 0x2031, 0x4ac0, 0x0078, 0x1e6c, + 0x2071, 0x4a80, 0x2031, 0x4cc0, 0x7050, 0xa08c, 0x0200, 0x00c0, + 0x1e76, 0xa608, 0x2d0a, 0x8000, 0x7052, 0xa006, 0x0e7f, 0x007c, + 0x0f7e, 0xd7fc, 0x00c0, 0x1e80, 0x2079, 0x4a40, 0x0078, 0x1e82, + 0x2079, 0x4a80, 0x1078, 0x1de0, 0x2091, 0x8000, 0x6804, 0x780a, + 0xa065, 0x0040, 0x1ed6, 0x0078, 0x1e94, 0x2c00, 0x780a, 0x2060, + 0x6000, 0xa065, 0x0040, 0x1ed6, 0x6010, 0xa306, 0x00c0, 0x1e8d, + 0x600c, 0xa206, 0x00c0, 0x1e8d, 0x2c28, 0x784c, 0xac06, 0x00c0, + 0x1ea3, 0x0078, 0x1ed3, 0x6804, 0xac06, 0x00c0, 0x1eb1, 0x6000, + 0x2060, 0x6806, 0xa005, 0x00c0, 0x1eb1, 0x6803, 0x0000, 0x0078, + 0x1ebb, 0x6400, 0x7808, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, + 0x1ebb, 0x2c00, 0x6802, 0x2560, 0x0f7f, 0x1078, 0x1e4d, 0x0f7e, + 0x601b, 0x0005, 0x6023, 0x0020, 0x0f7f, 0x1078, 0x1ff9, 0x0f7e, + 0x7908, 0x8109, 0x790a, 0x6810, 0x8001, 0x6812, 0x00c0, 0x1ed3, + 0x7810, 0xc0a5, 0x7812, 0x2001, 0xffff, 0xa005, 0x0f7f, 0x007c, + 0x077e, 0x2700, 0x2039, 0x0000, 0xd0fc, 0x0040, 0x1ee0, 0xc7fd, + 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x2091, 0x8000, + 0x1078, 0x1dfb, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1ee8, 0xa7bc, + 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1ee8, + 0x2091, 0x8001, 0x077f, 0x007c, 0x2061, 0x0000, 0x6018, 0xd084, + 0x00c0, 0x1f1c, 0x7810, 0xd08c, 0x0040, 0x1f0d, 0xc08c, 0x7812, + 0xc7fc, 0x2069, 0x4a40, 0x0078, 0x1f12, 0xc08d, 0x7812, 0x2069, + 0x4a80, 0xc7fd, 0x2091, 0x8000, 0x681c, 0x681f, 0x0000, 0x2091, + 0x8001, 0xa005, 0x00c0, 0x1f1d, 0x007c, 0xa08c, 0xfff0, 0x0040, + 0x1f23, 0x1078, 0x28ca, 0x0079, 0x1f25, 0x1f35, 0x1f38, 0x1f3e, + 0x1f42, 0x1f36, 0x1f46, 0x1f36, 0x1f36, 0x1f36, 0x1f4c, 0x1f7d, + 0x1f81, 0x1f87, 0x1f36, 0x1f36, 0x1f36, 0x007c, 0x1078, 0x28ca, + 0x1078, 0x1ed8, 0x2001, 0x8001, 0x0078, 0x1f9c, 0x2001, 0x8003, + 0x0078, 0x1f9c, 0x2001, 0x8004, 0x0078, 0x1f9c, 0x1078, 0x1ed8, + 0x2001, 0x8006, 0x0078, 0x1f9c, 0x2091, 0x8000, 0x077e, 0xd7fc, + 0x00c0, 0x1f58, 0x2069, 0x4a40, 0x2039, 0x0009, 0x0078, 0x1f5c, + 0x2069, 0x4a80, 0x2039, 0x0009, 0x6800, 0xa086, 0x0000, 0x0040, + 0x1f66, 0x007f, 0x6f1e, 0x2091, 0x8001, 0x007c, 0x6874, 0x077f, + 0xa0bc, 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, + 0x1078, 0x1dfb, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1f70, 0x2091, + 0x8001, 0x2001, 0x800a, 0x0078, 0x1f9c, 0x2001, 0x800c, 0x0078, + 0x1f9c, 0x1078, 0x1ed8, 0x2001, 0x800d, 0x0078, 0x1f9c, 0x7814, + 0xd0e4, 0x00c0, 0x1f9a, 0xd0ec, 0x0040, 0x1f94, 0xd7fc, 0x0040, + 0x1f94, 0x78ec, 0x0078, 0x1f95, 0x78e4, 0x70c6, 0x2001, 0x800e, + 0x0078, 0x1f9c, 0x0078, 0x1f36, 0x70c2, 0xd7fc, 0x00c0, 0x1fa4, + 0x70db, 0x0000, 0x0078, 0x1fa6, 0x70db, 0x0001, 0x2061, 0x0000, + 0x601b, 0x0001, 0x2091, 0x4080, 0x007c, 0xac80, 0x0001, 0x81ff, + 0x0040, 0x1fd8, 0x2099, 0x0030, 0x20a0, 0x700c, 0xa084, 0x03ff, + 0x0040, 0x1fba, 0x7018, 0x007e, 0x701c, 0x007e, 0x7020, 0x007e, + 0x7024, 0x007e, 0x7112, 0x81ac, 0x721a, 0x731e, 0x7422, 0x7526, + 0x7003, 0x0001, 0x7007, 0x0001, 0x7008, 0x800b, 0x00c8, 0x1fcc, + 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x1fd8, 0x53a5, 0xa006, + 0x7003, 0x0000, 0x7007, 0x0004, 0x007f, 0x7026, 0x007f, 0x7022, + 0x007f, 0x701e, 0x007f, 0x701a, 0x007c, 0x2011, 0x0020, 0x2009, + 0x0010, 0x6b0a, 0x6c0e, 0x6803, 0xfd00, 0x6807, 0x0018, 0x6a1a, + 0x2d00, 0xa0e8, 0x0008, 0xa290, 0x0004, 0x8109, 0x00c0, 0x1fe9, + 0x007c, 0x6004, 0x6086, 0x2c08, 0x2063, 0x0000, 0x7868, 0xa005, + 0x796a, 0x0040, 0x2006, 0x2c02, 0x0078, 0x2007, 0x796e, 0x007c, + 0x0c7e, 0x2061, 0x4a00, 0x6887, 0x0103, 0x2d08, 0x206b, 0x0000, + 0x6068, 0xa005, 0x616a, 0x0040, 0x2018, 0x2d02, 0x0078, 0x2019, + 0x616e, 0x0c7f, 0x007c, 0x2091, 0x8000, 0x2c04, 0x786e, 0xa005, + 0x00c0, 0x2023, 0x786a, 0x2091, 0x8001, 0x609c, 0xa005, 0x0040, + 0x203c, 0x0c7e, 0x2060, 0x2008, 0x609c, 0xa005, 0x0040, 0x2038, + 0x2062, 0x609f, 0x0000, 0xa065, 0x609c, 0xa005, 0x00c0, 0x2030, + 0x7848, 0x794a, 0x2062, 0x0c7f, 0x7848, 0x2062, 0x609f, 0x0000, + 0xac85, 0x0000, 0x00c0, 0x2046, 0x1078, 0x28ca, 0x784a, 0x007c, + 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, 0x2051, + 0xa200, 0x00f0, 0x204c, 0x8086, 0x818e, 0x007c, 0x157e, 0x20a9, + 0x0010, 0xa005, 0x0040, 0x2077, 0xa11a, 0x00c8, 0x2077, 0x8213, + 0x818d, 0x0048, 0x206a, 0xa11a, 0x00c8, 0x206b, 0x00f0, 0x205f, + 0x0078, 0x206f, 0xa11a, 0x2308, 0x8210, 0x00f0, 0x205f, 0x007e, + 0x3200, 0xa084, 0xf7ff, 0x2080, 0x007f, 0x157f, 0x007c, 0x007e, + 0x3200, 0xa085, 0x0800, 0x0078, 0x2073, 0x7d74, 0x70d0, 0xa506, + 0x0040, 0x2163, 0x7810, 0x2050, 0x7800, 0xd08c, 0x0040, 0x209f, + 0xdaec, 0x0040, 0x209f, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x0020, + 0x7004, 0xa005, 0x00c0, 0x209c, 0x7008, 0x0e7f, 0xa086, 0x0008, + 0x0040, 0x209f, 0x0078, 0x2163, 0x0e7f, 0x0078, 0x2163, 0x1078, + 0x1db9, 0x0040, 0x2163, 0xa046, 0x7970, 0x2500, 0x8000, 0xa112, + 0x2009, 0x0040, 0x00c8, 0x20ae, 0x0078, 0x20b5, 0x72d0, 0xa206, + 0x0040, 0x20b5, 0x8840, 0x2009, 0x0080, 0x0c7e, 0x7112, 0x7007, + 0x0001, 0x2099, 0x0030, 0x20a9, 0x0020, 0xac80, 0x0001, 0x20a0, + 0x2061, 0x0000, 0x88ff, 0x0040, 0x20c7, 0x1078, 0x1db9, 0x7008, + 0xd0fc, 0x0040, 0x20c7, 0x7007, 0x0002, 0x2091, 0x8001, 0xa08c, + 0x01e0, 0x00c0, 0x20fe, 0x53a5, 0x8cff, 0x00c0, 0x20dc, 0x88ff, + 0x0040, 0x214d, 0x0078, 0x20e6, 0x2c00, 0x788e, 0x20a9, 0x0020, + 0xac80, 0x0001, 0x20a0, 0x53a5, 0x0078, 0x214d, 0xa046, 0x7218, + 0x731c, 0xdac4, 0x0040, 0x20ee, 0x7420, 0x7524, 0xa292, 0x0040, + 0xa39b, 0x0000, 0xa4a3, 0x0000, 0xa5ab, 0x0000, 0x721a, 0x731e, + 0xdac4, 0x0040, 0x20fe, 0x7422, 0x7526, 0xa006, 0x7007, 0x0004, + 0x0040, 0x214d, 0x8cff, 0x0040, 0x2107, 0x1078, 0x1dc2, 0x0c7f, + 0x1078, 0x1dc2, 0xa046, 0x7888, 0x8000, 0x788a, 0xa086, 0x0002, + 0x0040, 0x212d, 0x7a7c, 0x7b78, 0xdac4, 0x0040, 0x2119, 0x7c84, + 0x7d80, 0x7974, 0x8107, 0x8004, 0x8004, 0xa210, 0xa399, 0x0000, + 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x721a, 0x731e, 0xdac4, 0x0040, + 0x2163, 0x7422, 0x7526, 0x0078, 0x2163, 0x6014, 0xd0fc, 0x00c0, + 0x2135, 0x2069, 0x4a40, 0x0078, 0x2137, 0x2069, 0x4a80, 0x2091, + 0x8000, 0x681f, 0x0002, 0x88ff, 0x0040, 0x2143, 0xa046, 0x788c, + 0x2060, 0x0078, 0x212d, 0x788b, 0x0000, 0x78ac, 0xa085, 0x0003, + 0x78ae, 0x2091, 0x8001, 0x0078, 0x2163, 0x0c7f, 0x788b, 0x0000, + 0x1078, 0x22f7, 0x6004, 0xa084, 0x000f, 0x1078, 0x2164, 0x88ff, + 0x0040, 0x2161, 0x788c, 0x2060, 0x6004, 0xa084, 0x000f, 0x1078, + 0x2164, 0x0078, 0x207d, 0x007c, 0x0079, 0x2166, 0x2176, 0x2194, + 0x21b2, 0x2176, 0x21c3, 0x2187, 0x2176, 0x2176, 0x2176, 0x2192, + 0x21b0, 0x2176, 0x2176, 0x2176, 0x2176, 0x2176, 0x2039, 0x0400, + 0x78bc, 0xa705, 0x78be, 0x6008, 0xa705, 0x600a, 0x1078, 0x2206, + 0x609c, 0x78ba, 0x609f, 0x0000, 0x1078, 0x22e1, 0x007c, 0x78bc, + 0xd0c4, 0x0040, 0x218d, 0x0078, 0x2176, 0x601c, 0xc0bd, 0x601e, + 0x0078, 0x219a, 0x1078, 0x2329, 0x78bc, 0xd0c4, 0x0040, 0x219a, + 0x0078, 0x2176, 0x78bf, 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, + 0x78b2, 0x8001, 0x0040, 0x21ad, 0x1078, 0x2206, 0x0040, 0x21ad, + 0x78bc, 0xc0c5, 0x78be, 0x0078, 0x21af, 0x0078, 0x2225, 0x007c, + 0x1078, 0x2325, 0x78bc, 0xa08c, 0x0e00, 0x00c0, 0x21ba, 0xd0c4, + 0x00c0, 0x21bc, 0x0078, 0x2176, 0x1078, 0x2206, 0x00c0, 0x21c2, + 0x0078, 0x2225, 0x007c, 0x78bc, 0xd0c4, 0x0040, 0x21c9, 0x0078, + 0x2176, 0x78bf, 0x0000, 0x6714, 0x2011, 0x0001, 0x22a8, 0x6018, + 0xa084, 0x00ff, 0xa005, 0x0040, 0x21e9, 0xa7bc, 0xff00, 0x20a9, + 0x0020, 0xa08e, 0x0001, 0x0040, 0x21e9, 0xa7bc, 0x8000, 0x2011, + 0x0002, 0x20a9, 0x0100, 0xa08e, 0x0002, 0x0040, 0x21e9, 0x0078, + 0x2203, 0x1078, 0x1de0, 0x2d00, 0x2091, 0x8000, 0x682b, 0x0000, + 0x682f, 0x0000, 0x6808, 0xa084, 0xffde, 0x680a, 0xade8, 0x0010, + 0x2091, 0x8001, 0x00f0, 0x21ec, 0x8211, 0x0040, 0x2203, 0x20a9, + 0x0100, 0x0078, 0x21ec, 0x1078, 0x1dc2, 0x007c, 0x609f, 0x0000, + 0x78b4, 0xa06d, 0x2c00, 0x78b6, 0x00c0, 0x2211, 0x78ba, 0x0078, + 0x2219, 0x689e, 0x2d00, 0x6002, 0x78b8, 0xad06, 0x00c0, 0x2219, + 0x6002, 0x78b0, 0x8001, 0x78b2, 0x00c0, 0x2224, 0x78bc, 0xc0c4, + 0x78be, 0x78b8, 0x2060, 0xa006, 0x007c, 0x0e7e, 0xa02e, 0x2530, + 0x7dba, 0x7db6, 0x65ae, 0x65b2, 0x601c, 0x60a2, 0x2048, 0xa984, + 0xe1ff, 0x601e, 0xa984, 0x0060, 0x0040, 0x2238, 0x1078, 0x4383, + 0x6596, 0x65a6, 0x669a, 0x66aa, 0x6714, 0x2071, 0x4a80, 0xd7fc, + 0x00c0, 0x2244, 0x2071, 0x4a40, 0xa784, 0x0f00, 0x800b, 0xa784, + 0x001f, 0x0040, 0x224f, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, + 0x71c4, 0xa168, 0x2700, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, + 0x8003, 0x71c8, 0xa100, 0x60c2, 0x2091, 0x8000, 0x7810, 0xd0f4, + 0x00c0, 0x2269, 0x6e08, 0xd684, 0x0040, 0x227f, 0xd9fc, 0x00c0, + 0x227f, 0x2091, 0x8001, 0x1078, 0x1e4d, 0x2091, 0x8000, 0x1078, + 0x1ff9, 0x2091, 0x8001, 0x7814, 0xd0e4, 0x00c0, 0x22df, 0x7810, + 0xd0f4, 0x0040, 0x22df, 0x601b, 0x0021, 0x0078, 0x22df, 0x6024, + 0xa096, 0x0001, 0x00c0, 0x2286, 0x8000, 0x6026, 0x6a10, 0x6814, + 0xa202, 0x0048, 0x2299, 0x0040, 0x2299, 0x2091, 0x8001, 0x2039, + 0x0200, 0x609c, 0x78ba, 0x609f, 0x0000, 0x1078, 0x22e1, 0x0078, + 0x22df, 0x2c08, 0xd9fc, 0x0040, 0x22bc, 0x6800, 0xa065, 0x0040, + 0x22bc, 0x6a04, 0x7000, 0xa084, 0x0002, 0x0040, 0x22b7, 0x704c, + 0xa206, 0x00c0, 0x22b7, 0x6b04, 0x2160, 0x2304, 0x6002, 0xa005, + 0x00c0, 0x22b3, 0x6902, 0x2260, 0x6102, 0x0078, 0x22c8, 0x2160, + 0x6202, 0x6906, 0x0078, 0x22c8, 0x6800, 0x6902, 0xa065, 0x0040, + 0x22c4, 0x6102, 0x0078, 0x22c5, 0x6906, 0x2160, 0x6003, 0x0000, + 0x2160, 0xd9fc, 0x0040, 0x22cf, 0xa6b4, 0xfffc, 0x6e0a, 0x6810, + 0x7d08, 0x8528, 0x7d0a, 0x8000, 0x6812, 0x2091, 0x8001, 0xd6b4, + 0x0040, 0x22df, 0xa6b6, 0x0040, 0x6e0a, 0x1078, 0x1e5e, 0x0e7f, + 0x007c, 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, 0x1078, 0x1ff9, + 0x2091, 0x8001, 0x78b8, 0xa065, 0x0040, 0x22f4, 0x609c, 0x78ba, + 0x609f, 0x0000, 0x0078, 0x22e1, 0x78b6, 0x78ba, 0x007c, 0x7970, + 0x7874, 0x2818, 0xd384, 0x0040, 0x2301, 0x8000, 0xa112, 0x0048, + 0x2306, 0x8000, 0xa112, 0x00c8, 0x2316, 0xc384, 0x7a7c, 0x721a, + 0x7a78, 0x721e, 0xdac4, 0x0040, 0x2311, 0x7a84, 0x7222, 0x7a80, + 0x7226, 0xa006, 0xd384, 0x0040, 0x2316, 0x8000, 0x7876, 0x70d2, + 0x781c, 0xa005, 0x0040, 0x2324, 0x8001, 0x781e, 0x00c0, 0x2324, + 0x0068, 0x2324, 0x2091, 0x4080, 0x007c, 0x2039, 0x233d, 0x0078, + 0x232b, 0x2039, 0x2343, 0x2704, 0xa005, 0x0040, 0x233c, 0xac00, + 0x2068, 0x6908, 0x6810, 0x6912, 0x680a, 0x690c, 0x6814, 0x6916, + 0x680e, 0x8738, 0x0078, 0x232b, 0x007c, 0x0003, 0x0009, 0x000f, + 0x0015, 0x001b, 0x0000, 0x0015, 0x001b, 0x0000, 0x2041, 0x0000, + 0x780c, 0x0079, 0x234b, 0x2513, 0x24e6, 0x234f, 0x23c3, 0x2039, + 0x9274, 0x2734, 0x7d10, 0x0078, 0x236a, 0x6084, 0xa086, 0x0103, + 0x00c0, 0x23ac, 0x6114, 0x6018, 0xa105, 0x00c0, 0x23ac, 0x8603, + 0xa080, 0x9255, 0x620c, 0x2202, 0x8000, 0x6210, 0x2202, 0x1078, + 0x201b, 0x8630, 0xa68e, 0x000f, 0x0040, 0x2432, 0x786c, 0xa065, + 0x00c0, 0x2355, 0x7808, 0xa602, 0x00c8, 0x237b, 0xd5ac, 0x00c0, + 0x237b, 0x263a, 0x007c, 0xa682, 0x0003, 0x00c8, 0x2432, 0x2091, + 0x8000, 0x2069, 0x0000, 0x6818, 0xd084, 0x00c0, 0x23a7, 0x2011, + 0x9255, 0x2204, 0x70c6, 0x8210, 0x2204, 0x70ca, 0xd684, 0x00c0, + 0x2397, 0x8210, 0x2204, 0x70da, 0x8210, 0x2204, 0x70de, 0xa685, + 0x8020, 0x70c2, 0x681b, 0x0001, 0x2091, 0x4080, 0x7810, 0xa084, + 0xffcf, 0x7812, 0x2091, 0x8001, 0x203b, 0x0000, 0x007c, 0x7810, + 0xc0ad, 0x7812, 0x0078, 0x2432, 0x263a, 0x1078, 0x251d, 0x00c0, + 0x252c, 0x786c, 0xa065, 0x00c0, 0x2355, 0x2091, 0x8000, 0x7810, + 0xa084, 0xffcf, 0x86ff, 0x0040, 0x23be, 0xc0ad, 0x7812, 0x2091, + 0x8001, 0x0078, 0x252c, 0x2039, 0x9274, 0x2734, 0x7d10, 0x0078, + 0x23da, 0x6084, 0xa086, 0x0103, 0x00c0, 0x241b, 0x6114, 0x6018, + 0xa105, 0x00c0, 0x241b, 0xa680, 0x9255, 0x620c, 0x2202, 0x1078, + 0x201b, 0x8630, 0xa68e, 0x001e, 0x0040, 0x2432, 0x786c, 0xa065, + 0x00c0, 0x23c9, 0x7808, 0xa602, 0x00c8, 0x23eb, 0xd5ac, 0x00c0, + 0x23eb, 0x263a, 0x007c, 0xa682, 0x0006, 0x00c8, 0x2432, 0x2091, + 0x8000, 0x2069, 0x0000, 0x6818, 0xd084, 0x00c0, 0x2416, 0x2011, + 0x9255, 0x2009, 0x924e, 0x26a8, 0x211c, 0x2204, 0x201a, 0x8108, + 0x8210, 0x00f0, 0x23fc, 0xa685, 0x8030, 0x70c2, 0x681b, 0x0001, + 0x2091, 0x4080, 0x7810, 0xa084, 0xffcf, 0x7812, 0x2091, 0x8001, + 0xa006, 0x2009, 0x9275, 0x200a, 0x203a, 0x007c, 0x7810, 0xc0ad, + 0x7812, 0x0078, 0x2432, 0x263a, 0x1078, 0x251d, 0x00c0, 0x252c, + 0x786c, 0xa065, 0x00c0, 0x23c9, 0x2091, 0x8000, 0x7810, 0xa084, + 0xffcf, 0x86ff, 0x0040, 0x242d, 0xc0ad, 0x7812, 0x2091, 0x8001, + 0x0078, 0x252c, 0x2091, 0x8000, 0x7007, 0x0004, 0x7994, 0x70d4, + 0xa102, 0x0048, 0x2443, 0x0040, 0x244d, 0x7b90, 0xa302, 0x00c0, + 0x244d, 0x0078, 0x2446, 0x8002, 0x00c0, 0x244d, 0x263a, 0x7810, + 0xc0ad, 0x7812, 0x2091, 0x8001, 0x007c, 0xa184, 0xff00, 0x0040, + 0x245a, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, + 0x0078, 0x245d, 0x8107, 0x8004, 0x8004, 0x7a9c, 0xa210, 0x721a, + 0x7a98, 0xa006, 0xa211, 0x721e, 0xd4c4, 0x0040, 0x246d, 0x7aa4, + 0xa211, 0x7222, 0x7aa0, 0xa211, 0x7226, 0x20a1, 0x0030, 0x7003, + 0x0000, 0x2009, 0x9254, 0x260a, 0x8109, 0x2198, 0x2104, 0xd084, + 0x0040, 0x247b, 0x8633, 0xa6b0, 0x0002, 0x26a8, 0x53a6, 0x8603, + 0x7012, 0x7007, 0x0001, 0x7990, 0x7894, 0x8000, 0xa10a, 0x00c8, + 0x248a, 0xa006, 0x2028, 0x7974, 0xa184, 0xff00, 0x0040, 0x2499, + 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, 0x0078, + 0x249c, 0x8107, 0x8004, 0x8004, 0x797c, 0xa108, 0x7a78, 0xa006, + 0xa211, 0xd4c4, 0x0040, 0x24a8, 0x7b84, 0xa319, 0x7c80, 0xa421, + 0x7008, 0xd0fc, 0x0040, 0x24a8, 0xa084, 0x01e0, 0x0040, 0x24cd, + 0x7d10, 0x2031, 0x9254, 0x2634, 0x78a8, 0x8000, 0x78aa, 0xd08c, + 0x00c0, 0x24c2, 0x7007, 0x0006, 0x7004, 0xd094, 0x00c0, 0x24bc, + 0x0078, 0x2434, 0x2069, 0x4a47, 0x206b, 0x0003, 0x78ac, 0xa085, + 0x0300, 0x78ae, 0xa006, 0x0078, 0x24d6, 0x2030, 0x75d6, 0x2091, + 0x4080, 0x7d96, 0x7d10, 0xa5ac, 0xffcf, 0x7d12, 0x2091, 0x8001, + 0x78aa, 0x7007, 0x0006, 0x263a, 0x7003, 0x0001, 0x711a, 0x721e, + 0xd5c4, 0x0040, 0x24e5, 0x7322, 0x7426, 0x007c, 0x6084, 0xa086, + 0x0103, 0x00c0, 0x2509, 0x6114, 0x6018, 0xa105, 0x00c0, 0x2509, + 0x2069, 0x0000, 0x6818, 0xd084, 0x00c0, 0x2509, 0x600c, 0x70c6, + 0x6010, 0x70ca, 0x70c3, 0x8020, 0x681b, 0x0001, 0x2091, 0x4080, + 0x1078, 0x201b, 0x0068, 0x2508, 0x786c, 0xa065, 0x00c0, 0x24e6, + 0x007c, 0x1078, 0x251d, 0x00c0, 0x252c, 0x786c, 0xa065, 0x00c0, + 0x24e6, 0x0078, 0x252c, 0x1078, 0x251d, 0x00c0, 0x252c, 0x786c, + 0xa065, 0x00c0, 0x2513, 0x0078, 0x252c, 0x1078, 0x2532, 0x00c0, + 0x2524, 0xa085, 0x0001, 0x007c, 0x1078, 0x2541, 0x00c0, 0x252a, + 0x2041, 0x0001, 0x7d10, 0x007c, 0x88ff, 0x0040, 0x2531, 0x2091, + 0x4080, 0x007c, 0x7b90, 0x7994, 0x70d4, 0xa102, 0x00c0, 0x253b, + 0xa385, 0x0000, 0x007c, 0x0048, 0x253f, 0xa302, 0x007c, 0x8002, + 0x007c, 0x7810, 0xd0ec, 0x0040, 0x2559, 0x0e7e, 0x2091, 0x8000, + 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x2556, 0x7008, 0x0e7f, + 0xa086, 0x0008, 0x0040, 0x2559, 0x0078, 0x25aa, 0x0e7f, 0x0078, + 0x25aa, 0xa184, 0xff00, 0x0040, 0x2566, 0x810f, 0x810c, 0x810c, + 0x8004, 0x8004, 0x8007, 0xa100, 0x0078, 0x2569, 0x8107, 0x8004, + 0x8004, 0x7a9c, 0x7b98, 0x7ca4, 0x7da0, 0xa210, 0xa006, 0xa319, + 0xa421, 0xa529, 0x2009, 0x0018, 0x6028, 0xa005, 0x0040, 0x257a, + 0x2009, 0x0040, 0x1078, 0x1d7d, 0x0040, 0x259c, 0x78a8, 0x8000, + 0x78aa, 0xd08c, 0x00c0, 0x25aa, 0x6014, 0xd0fc, 0x00c0, 0x258c, + 0x2069, 0x4a40, 0x0078, 0x258e, 0x2069, 0x4a80, 0x2091, 0x8000, + 0x681f, 0x0003, 0x78ab, 0x0000, 0x78ac, 0xa085, 0x0300, 0x78ae, + 0x2091, 0x8001, 0x0078, 0x25aa, 0x78ab, 0x0000, 0x1078, 0x201b, + 0x7990, 0x7894, 0x8000, 0xa10a, 0x00c8, 0x25a7, 0xa006, 0x7896, + 0x70d6, 0xa006, 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x2138, + 0xd7fc, 0x00c0, 0x25b7, 0x2009, 0x4a59, 0x0078, 0x25b9, 0x2009, + 0x4a99, 0x2091, 0x8000, 0x200a, 0x0f7e, 0xd7fc, 0x00c0, 0x25d0, + 0x2009, 0x4a40, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x0040, 0x25cc, + 0x2079, 0x0100, 0x0078, 0x25d4, 0x2079, 0x0200, 0x0078, 0x25d4, + 0x2009, 0x4a80, 0x2079, 0x0100, 0x2104, 0xa086, 0x0000, 0x00c0, + 0x25ed, 0xd7fc, 0x00c0, 0x25e0, 0x2009, 0x4a45, 0x0078, 0x25e2, + 0x2009, 0x4a85, 0x2104, 0xa005, 0x00c0, 0x25ed, 0x7830, 0xa084, + 0x00c0, 0x00c0, 0x25ed, 0x781b, 0x0045, 0x0f7f, 0x007c, 0x2009, + 0x0002, 0x2069, 0x4a00, 0x6810, 0xd0ec, 0x00c0, 0x2650, 0x2071, + 0x4a80, 0x2079, 0x0100, 0x2021, 0x4cbf, 0x784b, 0x000f, 0x2019, + 0x41c7, 0xd184, 0x0040, 0x2610, 0x6810, 0xd0ec, 0x0040, 0x260c, + 0x20a1, 0x012b, 0x0078, 0x2612, 0x20a1, 0x022b, 0x0078, 0x2612, + 0x20a1, 0x012b, 0x2304, 0xa005, 0x0040, 0x261f, 0x789a, 0x8318, + 0x23ac, 0x8318, 0x2398, 0x53a6, 0x3318, 0x0078, 0x2612, 0x789b, + 0x0020, 0x20a9, 0x0010, 0x78af, 0x0000, 0x78af, 0x8020, 0x00f0, + 0x2623, 0x7003, 0x0000, 0x017e, 0xd18c, 0x2009, 0x0000, 0x0040, + 0x2632, 0xc1bd, 0x1078, 0x281b, 0x017f, 0x7020, 0xa084, 0x000f, + 0x007e, 0x6814, 0xd0e4, 0x007f, 0x00c0, 0x2642, 0xa085, 0x6340, + 0x0078, 0x2644, 0xa085, 0x62c0, 0x7806, 0x780f, 0x9200, 0x7843, + 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008, 0x7456, 0x7053, 0x0000, + 0x8109, 0x0040, 0x2663, 0x2071, 0x4a40, 0x6810, 0xd0ec, 0x0040, + 0x265d, 0x2079, 0x0100, 0x0078, 0x265f, 0x2079, 0x0200, 0x2021, + 0x4abf, 0x0078, 0x25fd, 0x007c, 0x017e, 0xd1bc, 0x00c0, 0x2678, + 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2674, + 0x2011, 0x0101, 0x0078, 0x267a, 0x2011, 0x0201, 0x0078, 0x267a, + 0x2011, 0x0101, 0xa18c, 0x000f, 0x2204, 0xa084, 0xfff0, 0xa105, + 0x2012, 0x017f, 0x1078, 0x281b, 0x007c, 0xd3fc, 0x00c0, 0x2698, + 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2694, + 0x2011, 0x0101, 0x0078, 0x269a, 0x2011, 0x0201, 0x0078, 0x269a, + 0x2011, 0x0101, 0x20a9, 0x0009, 0x810b, 0x00f0, 0x269c, 0xa18c, + 0x0e00, 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012, 0x007c, 0x2019, + 0x0002, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x0040, 0x26b4, 0x8319, + 0x2009, 0x0101, 0x0078, 0x26b6, 0x2009, 0x0101, 0x20a9, 0x0005, + 0x8213, 0x00f0, 0x26b8, 0xa294, 0x00e0, 0x2104, 0xa084, 0xff1f, + 0xa205, 0x200a, 0x8319, 0x0040, 0x26c9, 0x2009, 0x0201, 0x0078, + 0x26b6, 0x007c, 0xd3fc, 0x00c0, 0x26dd, 0x007e, 0x2001, 0x4a04, + 0x2004, 0xd0ec, 0x007f, 0x0040, 0x26d9, 0x2011, 0x0101, 0x0078, + 0x26df, 0x2011, 0x0201, 0x0078, 0x26df, 0x2011, 0x0101, 0x20a9, + 0x000c, 0x810b, 0x00f0, 0x26e1, 0xa18c, 0xf000, 0x2204, 0xa084, + 0x0fff, 0xa105, 0x2012, 0x007c, 0xd3fc, 0x00c0, 0x26ff, 0x007e, + 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x26fb, 0x2011, + 0x0102, 0x0078, 0x2701, 0x2011, 0x0202, 0x0078, 0x2701, 0x2011, + 0x0102, 0x2204, 0xa084, 0xffcf, 0xa105, 0x2012, 0x007c, 0x0c7e, + 0xd1bc, 0x00c0, 0x271b, 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, + 0x007f, 0x0040, 0x2717, 0x2061, 0x0100, 0x0078, 0x271d, 0x2061, + 0x0200, 0x0078, 0x271d, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, + 0xa080, 0x0020, 0x609a, 0x62ac, 0x63ac, 0x0c7f, 0x007c, 0x0c7e, + 0xd1bc, 0x00c0, 0x273b, 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, + 0x007f, 0x0040, 0x2737, 0x2061, 0x0100, 0x0078, 0x273d, 0x2061, + 0x0200, 0x0078, 0x273d, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, + 0xa080, 0x0022, 0x609a, 0x60a4, 0xa084, 0xffdf, 0x60ae, 0x0c7f, + 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x275d, 0x007e, 0x2001, 0x4a04, + 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2759, 0x2061, 0x0100, 0x0078, + 0x275f, 0x2061, 0x0200, 0x0078, 0x275f, 0x2061, 0x0100, 0xc1bc, + 0x8103, 0x8003, 0xa080, 0x0022, 0x609a, 0x60a4, 0xa085, 0x0020, + 0x60ae, 0x0c7f, 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x277f, 0x007e, + 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x277b, 0x2061, + 0x0100, 0x0078, 0x2781, 0x2061, 0x0200, 0x0078, 0x2781, 0x2061, + 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0020, 0x609a, 0x60a4, + 0xa28c, 0x0020, 0x0040, 0x278f, 0xc2ac, 0xa39d, 0x4000, 0xc3fc, + 0xd3b4, 0x00c0, 0x2794, 0xc3fd, 0x62ae, 0x2010, 0x60a4, 0x63ae, + 0x2018, 0x0c7f, 0x007c, 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, + 0xa005, 0x0040, 0x27f9, 0xd1fc, 0x0040, 0x27aa, 0x2061, 0x91d0, + 0x0078, 0x27ac, 0x2061, 0x90c0, 0x1078, 0x2801, 0x0040, 0x27df, + 0x20a9, 0x0101, 0xd1fc, 0x0040, 0x27b9, 0x2061, 0x90d0, 0x0078, + 0x27bb, 0x2061, 0x8fc0, 0x0c7e, 0x1078, 0x2801, 0x0040, 0x27c6, + 0x0c7f, 0x8c60, 0x00f0, 0x27bb, 0x0078, 0x27f9, 0x007f, 0xd1fc, + 0x0040, 0x27d0, 0xa082, 0x90d0, 0x2071, 0x4a80, 0x0078, 0x27d4, + 0xa082, 0x8fc0, 0x2071, 0x4a40, 0x707a, 0x7176, 0x2001, 0x0004, + 0x7066, 0x7083, 0x000f, 0x1078, 0x25af, 0x0078, 0x27f5, 0xd1fc, + 0x00c0, 0x27e6, 0x2071, 0x4a40, 0x0078, 0x27e8, 0x2071, 0x4a80, + 0x6020, 0xc0dd, 0x6022, 0x7176, 0x2c00, 0x707e, 0x2001, 0x0006, + 0x7066, 0x7083, 0x000f, 0x1078, 0x25af, 0x2001, 0x0000, 0x0078, + 0x27fb, 0x2001, 0x0001, 0x2091, 0x8001, 0xa005, 0x0e7f, 0x0c7f, + 0x007c, 0x2c04, 0xa005, 0x0040, 0x2818, 0x2060, 0x6010, 0xa306, + 0x00c0, 0x2815, 0x600c, 0xa206, 0x00c0, 0x2815, 0x6014, 0xa106, + 0x00c0, 0x2815, 0xa006, 0x0078, 0x281a, 0x6000, 0x0078, 0x2802, + 0xa085, 0x0001, 0x007c, 0x0f7e, 0x0e7e, 0x017e, 0xd1bc, 0x00c0, + 0x2833, 0x2079, 0x4a40, 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, + 0x007f, 0x0040, 0x282f, 0x2071, 0x0100, 0x0078, 0x2837, 0x2071, + 0x0200, 0x0078, 0x2837, 0x2079, 0x4a80, 0x2071, 0x0100, 0x7920, + 0xa18c, 0x000f, 0x70ec, 0xd0c4, 0x00c0, 0x2841, 0x017f, 0x0078, + 0x285c, 0x810b, 0x810b, 0x810b, 0x810b, 0x007f, 0xd0bc, 0x00c0, + 0x2859, 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, + 0x2855, 0xa18d, 0x0f00, 0x0078, 0x285b, 0xa18d, 0x0f00, 0x0078, + 0x285b, 0xa18d, 0x0800, 0x2104, 0x0e7f, 0x0f7f, 0x007c, 0x0e7e, + 0x2001, 0x4a01, 0x2004, 0xd0ac, 0x00c0, 0x28c8, 0x68e4, 0xd0ac, + 0x0040, 0x28c8, 0xa084, 0x0006, 0x00c0, 0x28c8, 0x6014, 0xd0fc, + 0x00c0, 0x2876, 0x2071, 0x4ec0, 0x0078, 0x2878, 0x2071, 0x4f40, + 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xae70, 0x7004, + 0xa084, 0x000a, 0x00c0, 0x28c8, 0x7108, 0xa194, 0xff00, 0x0040, + 0x28c8, 0xa18c, 0x00ff, 0x2001, 0x000a, 0xa106, 0x0040, 0x28ab, + 0x2001, 0x000c, 0xa106, 0x0040, 0x28af, 0x2001, 0x0012, 0xa106, + 0x0040, 0x28b3, 0x2001, 0x0014, 0xa106, 0x0040, 0x28b7, 0x2001, + 0x0019, 0xa106, 0x0040, 0x28bb, 0x2001, 0x0032, 0xa106, 0x0040, + 0x28bf, 0x0078, 0x28c3, 0x2009, 0x000c, 0x0078, 0x28c5, 0x2009, + 0x0012, 0x0078, 0x28c5, 0x2009, 0x0014, 0x0078, 0x28c5, 0x2009, + 0x0019, 0x0078, 0x28c5, 0x2009, 0x0020, 0x0078, 0x28c5, 0x2009, + 0x003f, 0x0078, 0x28c5, 0x2011, 0x0000, 0x2100, 0xa205, 0x700a, + 0x0e7f, 0x007c, 0x0068, 0x28ca, 0x2091, 0x8000, 0x2071, 0x0000, + 0x007e, 0x7018, 0xd084, 0x00c0, 0x28d1, 0x007f, 0x2071, 0x0010, + 0x70ca, 0x007f, 0x70c6, 0x70c3, 0x8002, 0x70db, 0x0807, 0x70df, + 0x0000, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, + 0x28e7, 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x78a0, 0x708e, 0x7592, + 0x7496, 0x769a, 0x779e, 0xa594, 0x003f, 0xd4f4, 0x0040, 0x28fe, + 0xa784, 0x007d, 0x00c0, 0x413d, 0x1078, 0x28ca, 0xa49c, 0x000f, + 0xa382, 0x0004, 0x0050, 0x2909, 0xa3a6, 0x0007, 0x00c0, 0x28ca, + 0x2418, 0x8507, 0xa084, 0x000f, 0x0079, 0x290e, 0x2f23, 0x3013, + 0x303a, 0x329b, 0x360d, 0x3673, 0x370e, 0x378a, 0x3865, 0x394c, + 0x2921, 0x291e, 0x2d08, 0x2e21, 0x35e0, 0x291e, 0x1078, 0x28ca, + 0x007c, 0xa006, 0x0078, 0x292b, 0x7808, 0xc08d, 0x780a, 0xa006, + 0x7002, 0x704e, 0x7046, 0x70d2, 0x7060, 0xa005, 0x00c0, 0x2a42, + 0x7064, 0xa084, 0x0007, 0x0079, 0x2935, 0x293d, 0x29ad, 0x29b6, + 0x29c1, 0x29cc, 0x2a28, 0x29d7, 0x29ad, 0x7830, 0xd0bc, 0x00c0, + 0x2920, 0x71d4, 0xd1b4, 0x00c0, 0x298a, 0x70a4, 0xa086, 0x0001, + 0x0040, 0x2920, 0x70b4, 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b, + 0x0010, 0x6b0c, 0x7baa, 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d, + 0xa05d, 0xa886, 0x0001, 0x0040, 0x2960, 0x69bc, 0x7daa, 0x79aa, + 0x68c0, 0xa04d, 0x6e1c, 0x2001, 0x0010, 0x0078, 0x2b9b, 0x7060, + 0xa005, 0x00c0, 0x2920, 0x0c7e, 0x0d7e, 0x70b4, 0xa06d, 0x6800, + 0xa065, 0xa055, 0x789b, 0x0010, 0x6b0c, 0x7baa, 0x6808, 0xa045, + 0x6d10, 0x6804, 0xa06d, 0xa05d, 0xa886, 0x0001, 0x0040, 0x2983, + 0x69bc, 0x7daa, 0x79aa, 0x68c0, 0xa04d, 0x6e1c, 0x2001, 0x0020, + 0x0078, 0x2b9b, 0x1078, 0x40de, 0x00c0, 0x2920, 0x781b, 0x005b, + 0x70bc, 0xa06d, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, + 0x78d2, 0x78da, 0x7808, 0xc08d, 0x780a, 0x68bc, 0x7042, 0xc1b4, + 0x71d6, 0x70b8, 0xa065, 0x68c0, 0x705a, 0x7003, 0x0002, 0x2d00, + 0x704e, 0xad80, 0x0009, 0x7046, 0x007c, 0x1078, 0x40de, 0x00c0, + 0x29b5, 0x781b, 0x0047, 0x7003, 0x0004, 0x007c, 0x1078, 0x40de, + 0x00c0, 0x29c0, 0x2011, 0x000c, 0x1078, 0x29e7, 0x7003, 0x0004, + 0x007c, 0x1078, 0x40de, 0x00c0, 0x29cb, 0x2011, 0x0006, 0x1078, + 0x29e7, 0x7003, 0x0004, 0x007c, 0x1078, 0x40de, 0x00c0, 0x29d6, + 0x2011, 0x000d, 0x1078, 0x29e7, 0x7003, 0x0004, 0x007c, 0x1078, + 0x40de, 0x00c0, 0x29e6, 0x2011, 0x0006, 0x1078, 0x29e7, 0x707c, + 0x707f, 0x0000, 0x2068, 0x704e, 0x7003, 0x0001, 0x007c, 0x7174, + 0xc1fc, 0x8107, 0x7882, 0x789b, 0x0010, 0xa286, 0x000c, 0x00c0, + 0x29f6, 0x7aaa, 0x2001, 0x0001, 0x0078, 0x2a0b, 0xa18c, 0x001f, + 0xa18d, 0x00c0, 0x79aa, 0xa286, 0x000d, 0x0040, 0x2a04, 0x7aaa, + 0x2001, 0x0002, 0x0078, 0x2a0b, 0x78ab, 0x0020, 0x7178, 0x79aa, + 0x7aaa, 0x2001, 0x0004, 0x789b, 0x0060, 0x78aa, 0x785b, 0x0004, + 0x781b, 0x0107, 0x1078, 0x40f3, 0x7083, 0x000f, 0x70d4, 0xd0b4, + 0x0040, 0x2a27, 0xc0b4, 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, + 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, + 0x1078, 0x40de, 0x00c0, 0x2920, 0x707c, 0x2068, 0x7774, 0x1078, + 0x3fa3, 0x2c50, 0x1078, 0x41b2, 0x789b, 0x0010, 0x6814, 0xa084, + 0x001f, 0xc0bd, 0x78aa, 0x6e1c, 0x2041, 0x0001, 0x2001, 0x0004, + 0x0078, 0x2ba1, 0x1078, 0x40de, 0x00c0, 0x2920, 0x789b, 0x0010, + 0x7060, 0x2068, 0x6f14, 0x70d4, 0xd0b4, 0x0040, 0x2a5c, 0xc0b4, + 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, + 0x6018, 0x8001, 0x601a, 0x0c7f, 0x1078, 0x3fa3, 0x2c50, 0x1078, + 0x41b2, 0x6824, 0xa005, 0x0040, 0x2a6d, 0xa082, 0x0006, 0x0048, + 0x2a6b, 0x0078, 0x2a6d, 0x6827, 0x0005, 0x6814, 0xa084, 0x001f, + 0xc0bd, 0x78aa, 0x2031, 0x0020, 0x2041, 0x0001, 0x2001, 0x0003, + 0x0078, 0x2ba1, 0xc28d, 0x72d6, 0x72c0, 0xa200, 0xa015, 0x7154, + 0x8108, 0xa12a, 0x0048, 0x2a85, 0x71c0, 0x2164, 0x6504, 0x85ff, + 0x00c0, 0x2a9c, 0x7156, 0x8421, 0x00c0, 0x2a80, 0x70d4, 0xd08c, + 0x0040, 0x2a98, 0x70d0, 0xa005, 0x00c0, 0x2a98, 0x70d3, 0x000a, + 0x007c, 0x2200, 0x0078, 0x2a8a, 0x70d4, 0xc08c, 0x70d6, 0x70d3, + 0x0000, 0x603c, 0xa005, 0x00c0, 0x2a99, 0x6708, 0xa784, 0x073f, + 0x0040, 0x2acb, 0xd7d4, 0x00c0, 0x2a99, 0xa784, 0x0021, 0x00c0, + 0x2a99, 0xa784, 0x0002, 0x0040, 0x2abc, 0xa784, 0x0004, 0x0040, + 0x2a99, 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0218, 0x00c0, 0x2a99, + 0xa784, 0x0100, 0x0040, 0x2acb, 0x6018, 0xa005, 0x00c0, 0x2a99, + 0xa7bc, 0xfeff, 0x670a, 0x2568, 0x6823, 0x0000, 0x6e1c, 0xa684, + 0x000e, 0x6318, 0x0040, 0x2adc, 0x601c, 0xa302, 0x0048, 0x2adf, + 0x0040, 0x2adf, 0x0078, 0x2a99, 0x83ff, 0x00c0, 0x2a99, 0x2d58, + 0x2c50, 0x7156, 0xd7bc, 0x00c0, 0x2ae7, 0x7028, 0x6022, 0xc7bc, + 0x670a, 0x68c0, 0xa065, 0xa04d, 0x6100, 0x2a60, 0x2041, 0x0001, + 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, 0xd1fc, 0x0040, 0x2afb, + 0xd684, 0x0040, 0x2afd, 0xa39c, 0xffbf, 0xd6a4, 0x0040, 0x2b02, + 0xa39d, 0x0020, 0xa684, 0x000e, 0x00c0, 0x2b4d, 0xc7a5, 0x670a, + 0x2c00, 0x68c6, 0x77a4, 0xa786, 0x0001, 0x00c0, 0x2b21, 0x70d4, + 0xd0b4, 0x00c0, 0x2b21, 0x7000, 0xa082, 0x0002, 0x00c8, 0x2b21, + 0x7830, 0xd0bc, 0x00c0, 0x2b21, 0x789b, 0x0010, 0x7baa, 0x0078, + 0x2b99, 0x8739, 0x77a6, 0x2750, 0x77b0, 0xa7b0, 0x0005, 0x70ac, + 0xa606, 0x00c0, 0x2b2c, 0x76a8, 0x76b2, 0x2c3a, 0x8738, 0x2d3a, + 0x8738, 0x283a, 0x8738, 0x233a, 0x8738, 0x253a, 0x7830, 0xd0bc, + 0x0040, 0x2b44, 0x2091, 0x8000, 0x2091, 0x303d, 0x70d4, 0xa084, + 0x303d, 0x2091, 0x8000, 0x2090, 0xaad5, 0x0000, 0x0040, 0x2b4c, + 0x8421, 0x2200, 0x00c0, 0x2a7f, 0x007c, 0xd1dc, 0x0040, 0x3ba7, + 0x2029, 0x0020, 0xd69c, 0x00c0, 0x2b5a, 0x8528, 0xd68c, 0x00c0, + 0x2b5a, 0x8528, 0x8840, 0x6f14, 0x610c, 0x8108, 0xa18c, 0x00ff, + 0x70cc, 0xa160, 0x2c64, 0x8cff, 0x0040, 0x2b79, 0x6014, 0xa706, + 0x00c0, 0x2b62, 0x60b8, 0x8001, 0x60ba, 0x00c0, 0x2b5d, 0x2a60, + 0x6008, 0xa085, 0x0100, 0x600a, 0x2200, 0x8421, 0x00c0, 0x2a7f, + 0x007c, 0x2a60, 0x610e, 0x69be, 0x2c00, 0x68c6, 0x8840, 0x6008, + 0xc0d5, 0x600a, 0x77a4, 0xa786, 0x0001, 0x00c0, 0x2b21, 0x70d4, + 0xd0b4, 0x00c0, 0x2b21, 0x7000, 0xa082, 0x0002, 0x00c8, 0x2b21, + 0x7830, 0xd0bc, 0x00c0, 0x2b21, 0x789b, 0x0010, 0x7baa, 0x7daa, + 0x79aa, 0x2001, 0x0002, 0x007e, 0x6018, 0x8000, 0x601a, 0x0078, + 0x2ba2, 0x007e, 0x2960, 0x6104, 0x2a60, 0xa184, 0x0018, 0x0040, + 0x2bbe, 0xa184, 0x0010, 0x0040, 0x2bb1, 0x1078, 0x3db8, 0x00c0, + 0x2be3, 0xa184, 0x0008, 0x0040, 0x2bbe, 0x69a0, 0xa184, 0x0600, + 0x00c0, 0x2bbe, 0x1078, 0x3c9c, 0x0078, 0x2be3, 0x69a0, 0xa184, + 0x1e00, 0x0040, 0x2bee, 0xa184, 0x0800, 0x0040, 0x2bd7, 0x0c7e, + 0x2960, 0x6000, 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d, 0x0010, + 0x6106, 0x0c7f, 0x1078, 0x3db8, 0x00c0, 0x2be3, 0x69a0, 0xa184, + 0x0200, 0x0040, 0x2bdf, 0x1078, 0x3cfc, 0x0078, 0x2be3, 0xa184, + 0x0400, 0x00c0, 0x2bba, 0x69a0, 0xa184, 0x1000, 0x0040, 0x2bee, + 0x6914, 0xa18c, 0xff00, 0x810f, 0x1078, 0x2727, 0x027f, 0xa68c, + 0x00e0, 0xa684, 0x0060, 0x0040, 0x2bfb, 0xa086, 0x0060, 0x00c0, + 0x2bfb, 0xa18d, 0x4000, 0xa18d, 0x0104, 0x69b6, 0x789b, 0x0060, + 0x2800, 0x78aa, 0x6818, 0xc0fd, 0x681a, 0xd6bc, 0x0040, 0x2c16, + 0xc0fc, 0x7087, 0x0000, 0xa08a, 0x000d, 0x0050, 0x2c14, 0xa08a, + 0x000c, 0x7186, 0x2001, 0x000c, 0x800c, 0x718a, 0x78aa, 0x3518, + 0x3340, 0x3428, 0x8000, 0x80ac, 0xaf80, 0x002b, 0x20a0, 0x789b, + 0x0000, 0xad80, 0x000b, 0x2098, 0x53a6, 0x23a8, 0x2898, 0x25a0, + 0xa286, 0x0020, 0x00c0, 0x2c4e, 0x70d4, 0xc0b5, 0x70d6, 0x2c00, + 0x70ba, 0x2d00, 0x70be, 0x6814, 0xc0fc, 0x8007, 0x7882, 0xa286, + 0x0002, 0x0040, 0x2c84, 0x70a4, 0x8000, 0x70a6, 0x74b4, 0xa498, + 0x0005, 0x70ac, 0xa306, 0x00c0, 0x2c46, 0x73a8, 0x73b6, 0xa286, + 0x0010, 0x0040, 0x2920, 0x0d7f, 0x0c7f, 0x007c, 0x7000, 0xa005, + 0x00c0, 0x2c2c, 0xa286, 0x0002, 0x00c0, 0x2c9e, 0x1078, 0x40de, + 0x00c0, 0x2c2c, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x2091, 0x8000, + 0x781b, 0x005b, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, + 0x78d2, 0x78da, 0x2091, 0x8001, 0x7808, 0xc08d, 0x780a, 0x127e, + 0x0d7e, 0x0c7e, 0x70d4, 0xa084, 0x2700, 0x2090, 0x0c7f, 0x0d7f, + 0x127f, 0x2900, 0x705a, 0x68bc, 0x7042, 0x7003, 0x0002, 0x2d00, + 0x704e, 0xad80, 0x0009, 0x7046, 0x7830, 0xd0bc, 0x0040, 0x2c90, + 0x2091, 0x303d, 0x70d4, 0xa084, 0x303d, 0x2091, 0x8000, 0x2090, + 0x70a4, 0xa005, 0x00c0, 0x2c95, 0x007c, 0x8421, 0x0040, 0x2c94, + 0x7250, 0x70c0, 0xa200, 0xa015, 0x0078, 0x2a7f, 0xa286, 0x0010, + 0x00c0, 0x2ccf, 0x1078, 0x40de, 0x00c0, 0x2c2c, 0x6814, 0xc0fc, + 0x8007, 0x7882, 0x781b, 0x005b, 0x68b4, 0x785a, 0x6894, 0x78d6, + 0x78de, 0x6898, 0x78d2, 0x78da, 0x7808, 0xc08d, 0x780a, 0x70a4, + 0x8000, 0x70a6, 0x74b4, 0xa490, 0x0005, 0x70ac, 0xa206, 0x00c0, + 0x2cc2, 0x72a8, 0x72b6, 0x2900, 0x705a, 0x68bc, 0x7042, 0x7003, + 0x0002, 0x2d00, 0x704e, 0xad80, 0x0009, 0x7046, 0x007c, 0x6bb4, + 0xa39d, 0x2000, 0x7b5a, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x6b94, + 0x7bd6, 0x7bde, 0x6e98, 0x7ed2, 0x7eda, 0x781b, 0x005b, 0x2900, + 0x705a, 0x7202, 0x7808, 0xc08d, 0x780a, 0x2300, 0xa605, 0x0040, + 0x2cfa, 0x70d4, 0xa084, 0x2700, 0xa086, 0x2300, 0x00c0, 0x2cf4, + 0x2009, 0x0000, 0x0078, 0x2cf6, 0x2009, 0x0001, 0xa284, 0x000f, + 0x1079, 0x2cfe, 0xad80, 0x0009, 0x7046, 0x007c, 0x2d06, 0x45b9, + 0x45b9, 0x45a6, 0x45b9, 0x2d06, 0x2d06, 0x2d06, 0x1078, 0x28ca, + 0x7808, 0xa084, 0xfffd, 0x780a, 0x0f7e, 0x2079, 0x4a00, 0x78ac, + 0x0f7f, 0xd084, 0x0040, 0x2d2c, 0x7064, 0xa086, 0x0001, 0x00c0, + 0x2d1c, 0x7066, 0x0078, 0x2e05, 0x7064, 0xa086, 0x0005, 0x00c0, + 0x2d2a, 0x707c, 0x2068, 0x681b, 0x0004, 0x6817, 0x0000, 0x6820, + 0xc09d, 0x6822, 0x7067, 0x0000, 0x70a7, 0x0000, 0x70a8, 0x70b2, + 0x70b6, 0x70d4, 0xd0b4, 0x0040, 0x2d42, 0xc0b4, 0x70d6, 0x0c7e, + 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, + 0x601a, 0x0c7f, 0x157e, 0x2011, 0x0004, 0x7164, 0xa186, 0x0001, + 0x0040, 0x2d5b, 0xa186, 0x0007, 0x00c0, 0x2d52, 0x701f, 0x0005, + 0x0078, 0x2d5b, 0x701f, 0x0001, 0x7067, 0x0000, 0x70d4, 0xc0dd, + 0x70d6, 0x0078, 0x2d5d, 0x7067, 0x0000, 0x2001, 0x4a0a, 0x2004, + 0xa084, 0x00ff, 0xa086, 0x0018, 0x0040, 0x2d6d, 0x7018, 0x7016, + 0xa005, 0x00c0, 0x2d6d, 0x70a7, 0x0001, 0x1078, 0x42e7, 0x20a9, + 0x0010, 0x2039, 0x0000, 0x1078, 0x3e9d, 0xa7b8, 0x0100, 0x00f0, + 0x2d73, 0x7000, 0x0079, 0x2d7c, 0x2dab, 0x2d91, 0x2d91, 0x2d86, + 0x2dab, 0x2dab, 0x2dab, 0x2d84, 0x1078, 0x28ca, 0x7060, 0xa005, + 0x0040, 0x2dab, 0xad06, 0x00c0, 0x2d91, 0x6800, 0x7062, 0x0078, + 0x2da3, 0x6820, 0xd084, 0x00c0, 0x2d9f, 0x6f14, 0x1078, 0x3fa3, + 0x6008, 0xc0d4, 0x600a, 0x1078, 0x3b77, 0x0078, 0x2da3, 0x705c, + 0x2060, 0x6800, 0x6002, 0x6a1a, 0x6817, 0x0000, 0x6820, 0xc09d, + 0x6822, 0x1078, 0x2008, 0xb284, 0x0400, 0x0040, 0x2db3, 0x2021, + 0x91d0, 0x0078, 0x2db5, 0x2021, 0x90c0, 0x1078, 0x2e0a, 0xb284, + 0x0400, 0x0040, 0x2dbf, 0x2021, 0x4a98, 0x0078, 0x2dc1, 0x2021, + 0x4a58, 0x1078, 0x2e0a, 0x20a9, 0x0101, 0xb284, 0x0400, 0x0040, + 0x2dcd, 0x2021, 0x90d0, 0x0078, 0x2dcf, 0x2021, 0x8fc0, 0x1078, + 0x2e0a, 0x8420, 0x00f0, 0x2dcf, 0xb284, 0x0300, 0x0040, 0x2ddc, + 0x2061, 0x4fc0, 0x0078, 0x2dde, 0x2061, 0x6fc0, 0x2021, 0x0002, + 0x20a9, 0x0100, 0x6110, 0x81ff, 0x0040, 0x2dfb, 0x6018, 0x017e, + 0x007e, 0x2011, 0x4a02, 0x220c, 0xa102, 0x2012, 0x007f, 0x017f, + 0xa102, 0x0050, 0x2dfb, 0x6012, 0x00c0, 0x2dfb, 0x2011, 0x4a04, + 0x2204, 0xc0a5, 0x2012, 0x601b, 0x0000, 0xace0, 0x0010, 0x00f0, + 0x2de2, 0x8421, 0x00c0, 0x2de0, 0x157f, 0x7003, 0x0000, 0x704f, + 0x0000, 0x007c, 0x047e, 0x2404, 0xa005, 0x0040, 0x2e1d, 0x2068, + 0x6800, 0x007e, 0x6a1a, 0x6817, 0x0000, 0x6820, 0xc09d, 0x6822, + 0x1078, 0x2008, 0x007f, 0x0078, 0x2e0c, 0x047f, 0x2023, 0x0000, + 0x007c, 0xa282, 0x0003, 0x0050, 0x2e27, 0x1078, 0x28ca, 0x2300, + 0x0079, 0x2e2a, 0x2e2d, 0x2eb8, 0x2ed5, 0xa282, 0x0002, 0x0040, + 0x2e33, 0x1078, 0x28ca, 0x7064, 0x7067, 0x0000, 0x7083, 0x0000, + 0x0079, 0x2e3a, 0x2e42, 0x2e42, 0x2e44, 0x2e84, 0x3bb3, 0x2e42, + 0x2e84, 0x2e42, 0x1078, 0x28ca, 0x7774, 0x1078, 0x3e9d, 0x7774, + 0xa7bc, 0x8f00, 0x1078, 0x3fa3, 0x6018, 0xa005, 0x0040, 0x2e7b, + 0xd7fc, 0x00c0, 0x2e57, 0x2021, 0x90c0, 0x0078, 0x2e59, 0x2021, + 0x91d0, 0x2009, 0x0005, 0x2011, 0x0010, 0x1078, 0x2ef0, 0x0040, + 0x2e7b, 0x157e, 0x20a9, 0x0101, 0xd7fc, 0x00c0, 0x2e6b, 0x2021, + 0x8fc0, 0x0078, 0x2e6d, 0x2021, 0x90d0, 0x047e, 0x2009, 0x0005, + 0x2011, 0x0010, 0x1078, 0x2ef0, 0x047f, 0x0040, 0x2e7a, 0x8420, + 0x00f0, 0x2e6d, 0x157f, 0x8738, 0xa784, 0x001f, 0x00c0, 0x2e4a, + 0x0078, 0x2924, 0x0078, 0x2924, 0x7774, 0x1078, 0x3fa3, 0x6018, + 0xa005, 0x0040, 0x2eb6, 0xd7fc, 0x00c0, 0x2e92, 0x2021, 0x90c0, + 0x0078, 0x2e94, 0x2021, 0x91d0, 0x2009, 0x0005, 0x2011, 0x0020, + 0x1078, 0x2ef0, 0x0040, 0x2eb6, 0x157e, 0x20a9, 0x0101, 0xd7fc, + 0x00c0, 0x2ea6, 0x2021, 0x8fc0, 0x0078, 0x2ea8, 0x2021, 0x90d0, + 0x047e, 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x2ef0, 0x047f, + 0x0040, 0x2eb5, 0x8420, 0x00f0, 0x2ea8, 0x157f, 0x0078, 0x2924, + 0x2200, 0x0079, 0x2ebb, 0x2ebe, 0x2ec0, 0x2ec0, 0x1078, 0x28ca, + 0x2009, 0x0012, 0x7064, 0xa086, 0x0002, 0x0040, 0x2ec9, 0x2009, + 0x000e, 0x6818, 0xd0fc, 0x0040, 0x2ece, 0x691a, 0x7067, 0x0000, + 0x70d4, 0xc0dd, 0x70d6, 0x0078, 0x408b, 0x2200, 0x0079, 0x2ed8, + 0x2edd, 0x2ec0, 0x2edb, 0x1078, 0x28ca, 0x1078, 0x42e7, 0x7000, + 0xa086, 0x0002, 0x00c0, 0x3b3c, 0x1078, 0x3b94, 0x6008, 0xa084, + 0xfbef, 0x600a, 0x1078, 0x3b2d, 0x0040, 0x3b3c, 0x0078, 0x2924, + 0x2404, 0xa005, 0x0040, 0x2f1f, 0x2068, 0x2d04, 0x007e, 0x6814, + 0xa706, 0x0040, 0x2eff, 0x2d20, 0x007f, 0x0078, 0x2ef1, 0x007f, + 0x2022, 0x691a, 0x6817, 0x0000, 0x6820, 0xa205, 0x6822, 0x1078, + 0x2008, 0x2021, 0x4a02, 0x241c, 0x8319, 0x2322, 0x6010, 0x8001, + 0x6012, 0x00c0, 0x2f18, 0x2021, 0x4a04, 0x2404, 0xc0a5, 0x2022, + 0x6008, 0xa084, 0xf9ef, 0x600a, 0x1078, 0x3b94, 0x007c, 0xa085, + 0x0001, 0x0078, 0x2f1e, 0x2300, 0x0079, 0x2f26, 0x2f2b, 0x2f29, + 0x2fac, 0x1078, 0x28ca, 0x78e4, 0xa005, 0x00d0, 0x2f62, 0x3208, + 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2f3c, + 0xa18c, 0x0300, 0x0078, 0x2f3e, 0xa18c, 0x0400, 0x0040, 0x2f44, + 0x0018, 0x2920, 0x0078, 0x2f46, 0x0028, 0x2920, 0x2008, 0xa084, + 0x0030, 0x00c0, 0x2f4e, 0x781b, 0x005b, 0x007c, 0x78ec, 0xa084, + 0x0003, 0x0040, 0x2f4b, 0x2100, 0xa084, 0x0007, 0x0079, 0x2f58, + 0x2f8c, 0x2f96, 0x2f81, 0x2f60, 0x40d3, 0x40d3, 0x2f60, 0x2fa1, + 0x1078, 0x28ca, 0x7000, 0xa086, 0x0004, 0x00c0, 0x2f7c, 0x7064, + 0xa086, 0x0002, 0x00c0, 0x2f72, 0x2011, 0x0002, 0x2019, 0x0000, + 0x0078, 0x2e21, 0x7064, 0xa086, 0x0006, 0x0040, 0x2f6c, 0x7064, + 0xa086, 0x0004, 0x0040, 0x2f6c, 0x79e4, 0x2001, 0x0003, 0x0078, + 0x32dc, 0x6818, 0xd0fc, 0x0040, 0x2f87, 0x681b, 0x001d, 0x1078, + 0x3e70, 0x781b, 0x0061, 0x007c, 0x6818, 0xd0fc, 0x0040, 0x2f92, + 0x681b, 0x001d, 0x1078, 0x3e70, 0x0078, 0x40af, 0x6818, 0xd0fc, + 0x0040, 0x2f9c, 0x681b, 0x001d, 0x1078, 0x3e70, 0x781b, 0x00ee, + 0x007c, 0x6818, 0xd0fc, 0x0040, 0x2fa7, 0x681b, 0x001d, 0x1078, + 0x3e70, 0x781b, 0x00bf, 0x007c, 0xa584, 0x000f, 0x00c0, 0x2fc9, + 0x7000, 0x0079, 0x2fb3, 0x2924, 0x2fbb, 0x2fbd, 0x3b3c, 0x3b3c, + 0x3b3c, 0x2fbb, 0x2fbb, 0x1078, 0x28ca, 0x1078, 0x3b94, 0x6008, + 0xa084, 0xfbef, 0x600a, 0x1078, 0x3b2d, 0x0040, 0x3b3c, 0x0078, + 0x2924, 0x78e4, 0xa005, 0x00d0, 0x2f62, 0x3208, 0x007e, 0x2001, + 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2fda, 0xa18c, 0x0300, + 0x0078, 0x2fdc, 0xa18c, 0x0400, 0x0040, 0x2fe2, 0x0018, 0x2f62, + 0x0078, 0x2fe4, 0x0028, 0x2f62, 0x2008, 0xa084, 0x0030, 0x00c0, + 0x2fec, 0x781b, 0x005b, 0x007c, 0x78ec, 0xa084, 0x0003, 0x0040, + 0x2fe9, 0x2100, 0xa184, 0x0007, 0x0079, 0x2ff6, 0x3005, 0x3009, + 0x3000, 0x2ffe, 0x40d3, 0x40d3, 0x2ffe, 0x40cd, 0x1078, 0x28ca, + 0x1078, 0x3e78, 0x781b, 0x0061, 0x007c, 0x1078, 0x3e78, 0x0078, + 0x40af, 0x1078, 0x3e78, 0x781b, 0x00ee, 0x007c, 0x1078, 0x3e78, + 0x781b, 0x00bf, 0x007c, 0x2300, 0x0079, 0x3016, 0x301b, 0x3019, + 0x301d, 0x1078, 0x28ca, 0x0078, 0x378a, 0x681b, 0x0008, 0x78a3, + 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x378a, 0x78ec, 0xa084, + 0x0003, 0x0040, 0x378a, 0xa184, 0x0007, 0x0079, 0x302f, 0x3037, + 0x3009, 0x2f81, 0x408b, 0x40d3, 0x40d3, 0x3037, 0x40cd, 0x1078, + 0x4097, 0x007c, 0xa282, 0x0005, 0x0050, 0x3040, 0x1078, 0x28ca, + 0x2300, 0x0079, 0x3043, 0x3046, 0x3265, 0x3270, 0x2200, 0x0079, + 0x3049, 0x3063, 0x3050, 0x3063, 0x304e, 0x3248, 0x1078, 0x28ca, + 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa082, 0x0020, 0x0048, + 0x3e5f, 0xa08a, 0x0004, 0x00c8, 0x3e5f, 0x0079, 0x305f, 0x3e5f, + 0x3e5f, 0x3e5f, 0x3e09, 0x789b, 0x0018, 0x79a8, 0xa184, 0x0080, + 0x0040, 0x3074, 0x0078, 0x3e5f, 0x7000, 0xa005, 0x00c0, 0x306a, + 0x2011, 0x0004, 0x0078, 0x395a, 0xa184, 0x00ff, 0xa08a, 0x0010, + 0x00c8, 0x3e5f, 0x0079, 0x307c, 0x308e, 0x308c, 0x30a3, 0x30a7, + 0x3169, 0x3e5f, 0x3e5f, 0x316b, 0x3e5f, 0x3e5f, 0x3244, 0x3244, + 0x3e5f, 0x3e5f, 0x3e5f, 0x3246, 0x1078, 0x28ca, 0xd6e4, 0x0040, + 0x3099, 0x2001, 0x0300, 0x8000, 0x8000, 0x783a, 0x781b, 0x00ba, + 0x007c, 0x6818, 0xd0fc, 0x0040, 0x30a1, 0x681b, 0x001d, 0x0078, + 0x3091, 0x0078, 0x408b, 0x681b, 0x001d, 0x0078, 0x3e69, 0x6920, + 0x6922, 0xa684, 0x1800, 0x00c0, 0x30fb, 0x6820, 0xd084, 0x00c0, + 0x3101, 0x6818, 0xa086, 0x0008, 0x00c0, 0x30b8, 0x681b, 0x0000, + 0xd6d4, 0x0040, 0x3166, 0xd6bc, 0x0040, 0x30f8, 0x7087, 0x0000, + 0x6818, 0xa084, 0x003f, 0xa08a, 0x000d, 0x0050, 0x30f8, 0xa08a, + 0x000c, 0x7186, 0x2001, 0x000c, 0x800c, 0x718a, 0x789b, 0x0061, + 0x78aa, 0x157e, 0x137e, 0x147e, 0x017e, 0x3208, 0xa18c, 0x0300, + 0x0040, 0x30ea, 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, + 0x0040, 0x30e6, 0x20a1, 0x012b, 0x0078, 0x30ec, 0x20a1, 0x022b, + 0x0078, 0x30ec, 0x20a1, 0x012b, 0x017f, 0x789b, 0x0000, 0x8000, + 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, + 0x781b, 0x0064, 0x007c, 0xd6e4, 0x0040, 0x3101, 0x781b, 0x0076, + 0x007c, 0xa684, 0x0060, 0x0040, 0x3163, 0xd6dc, 0x0040, 0x3163, + 0xd6fc, 0x00c0, 0x310d, 0x0078, 0x3124, 0xc6fc, 0x7e5a, 0x6eb6, + 0x7adc, 0x79d8, 0x78d0, 0x801b, 0x00c8, 0x3117, 0x8000, 0xa084, + 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, + 0x6b94, 0x2200, 0xa303, 0x68ae, 0xd6f4, 0x0040, 0x312a, 0xc6f4, + 0x7e5a, 0x6eb6, 0x7000, 0xa086, 0x0003, 0x00c0, 0x3138, 0x007e, + 0x1078, 0x42e7, 0x1078, 0x45b9, 0x007f, 0x781b, 0x0073, 0x007c, + 0xa006, 0x1078, 0x46a5, 0x6ab0, 0x69ac, 0x6c98, 0x6b94, 0x2200, + 0xa105, 0x0040, 0x3147, 0x2200, 0xa422, 0x2100, 0xa31b, 0x6caa, + 0x7cd2, 0x7cda, 0x6ba6, 0x7bd6, 0x7bde, 0x2300, 0xa405, 0x00c0, + 0x3157, 0xc6f5, 0x7e5a, 0x6eb6, 0x781b, 0x0073, 0x007c, 0x781b, + 0x0073, 0x2200, 0xa115, 0x00c0, 0x3160, 0x1078, 0x45b9, 0x007c, + 0x1078, 0x45ee, 0x007c, 0x781b, 0x0076, 0x007c, 0x781b, 0x0064, + 0x007c, 0x1078, 0x28ca, 0x0078, 0x31b7, 0x6920, 0xd1c4, 0x0040, + 0x3180, 0xc1c4, 0x6922, 0x0c7e, 0x7058, 0x2060, 0x6000, 0xc0e4, + 0x6002, 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x0078, 0x31ab, + 0xd1cc, 0x0040, 0x31ab, 0xc1cc, 0x6922, 0x0c7e, 0x7058, 0x2060, + 0x6000, 0xc0ec, 0x6002, 0x6004, 0xc0a4, 0x6006, 0x2008, 0x2c48, + 0x0c7f, 0xd19c, 0x0040, 0x31ab, 0x1078, 0x3f9f, 0x1078, 0x3c9c, + 0x88ff, 0x0040, 0x31ab, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, + 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x31a8, 0x781b, 0x0061, 0x007c, + 0x781b, 0x0075, 0x007c, 0x7e58, 0xd6d4, 0x00c0, 0x31b2, 0x781b, + 0x0064, 0x007c, 0x781b, 0x0076, 0x007c, 0x0078, 0x3e64, 0x2019, + 0x0000, 0x7990, 0xa18c, 0x0007, 0x00c0, 0x31c5, 0x6820, 0xa084, + 0x0100, 0x0040, 0x31b5, 0x2009, 0x0008, 0x789b, 0x0010, 0x78a8, + 0xa094, 0x00ff, 0xa286, 0x0001, 0x00c0, 0x31e1, 0x2300, 0x7ca8, + 0xa400, 0x2018, 0xa102, 0x0040, 0x31d9, 0x0048, 0x31d9, 0x0078, + 0x31db, 0x0078, 0x316d, 0x24a8, 0x7aa8, 0x00f0, 0x31db, 0x0078, + 0x31c7, 0xa284, 0x00f0, 0xa086, 0x0020, 0x00c0, 0x3235, 0x8318, + 0x8318, 0x2300, 0xa102, 0x0040, 0x31f1, 0x0048, 0x31f1, 0x0078, + 0x3232, 0xa286, 0x0023, 0x0040, 0x31b5, 0x681c, 0xa084, 0xfff1, + 0x681e, 0x7e58, 0xa684, 0xfff1, 0xc0a5, 0x2030, 0x7e5a, 0x6008, + 0xc0a5, 0x600a, 0x0c7e, 0x7058, 0x2060, 0x6004, 0x2008, 0x2c48, + 0x0c7f, 0xd1a4, 0x0040, 0x3212, 0x1078, 0x3f9f, 0x1078, 0x3db8, + 0x0078, 0x3220, 0x0c7e, 0x7058, 0x2060, 0x6004, 0x2008, 0x2c48, + 0x0c7f, 0xd19c, 0x0040, 0x31ab, 0x1078, 0x3f9f, 0x1078, 0x3c9c, + 0x88ff, 0x0040, 0x31ab, 0x789b, 0x0060, 0x2800, 0x78aa, 0xc695, + 0x7e5a, 0xd6d4, 0x00c0, 0x322f, 0x781b, 0x0061, 0x007c, 0x781b, + 0x0075, 0x007c, 0x7aa8, 0x0078, 0x31c7, 0x8318, 0x2300, 0xa102, + 0x0040, 0x323e, 0x0048, 0x323e, 0x0078, 0x31c7, 0xa284, 0x0080, + 0x00c0, 0x3e69, 0x0078, 0x3e64, 0x0078, 0x3e69, 0x0078, 0x3e5f, + 0x7058, 0xa04d, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa08e, + 0x0001, 0x0040, 0x3255, 0x1078, 0x28ca, 0x7aa8, 0xa294, 0x00ff, + 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x3e5f, 0x0079, + 0x3261, 0x3e5f, 0x3bee, 0x3e5f, 0x3d60, 0xa282, 0x0000, 0x00c0, + 0x326b, 0x1078, 0x28ca, 0x1078, 0x3e70, 0x781b, 0x0075, 0x007c, + 0xa282, 0x0003, 0x00c0, 0x3276, 0x1078, 0x28ca, 0xd4fc, 0x00c0, + 0x3296, 0x7064, 0xa005, 0x0040, 0x327f, 0x1078, 0x28ca, 0x6f14, + 0x7776, 0xa7bc, 0x8f00, 0x1078, 0x3fa3, 0x6008, 0xa085, 0x0021, + 0x600a, 0x8738, 0xa784, 0x001f, 0x00c0, 0x3283, 0x1078, 0x3e74, + 0x7067, 0x0002, 0x701f, 0x0009, 0x0078, 0x3298, 0x1078, 0x3e80, + 0x781b, 0x0075, 0x007c, 0xa282, 0x0004, 0x0050, 0x32a1, 0x1078, + 0x28ca, 0x2300, 0x0079, 0x32a4, 0x32a7, 0x3443, 0x3486, 0xa286, + 0x0003, 0x0040, 0x32dc, 0x7200, 0x7cd8, 0x7ddc, 0x7fd0, 0x71d4, + 0xd1b4, 0x0040, 0x32d4, 0x7868, 0xa084, 0x00ff, 0x00c0, 0x32d4, + 0xa282, 0x0002, 0x00c8, 0x32d4, 0x0d7e, 0x783b, 0x8300, 0x781b, + 0x004c, 0x70bc, 0xa06d, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, + 0x6898, 0x78d2, 0x78da, 0xc1b4, 0x71d6, 0x7003, 0x0030, 0x0d7f, + 0x2001, 0x0000, 0x0078, 0x32e0, 0x783b, 0x1300, 0x781b, 0x004a, + 0x2001, 0x0000, 0x0078, 0x32e0, 0x7200, 0x7cd8, 0x7ddc, 0x7fd0, + 0x704a, 0x68a0, 0xd0ec, 0x0040, 0x32e8, 0x6008, 0xc08d, 0x600a, + 0xa284, 0x000f, 0x0079, 0x32ec, 0x3423, 0x32f9, 0x32f6, 0x3580, + 0x35c4, 0x2924, 0x32f4, 0x32f4, 0x1078, 0x28ca, 0x6008, 0xc0d4, + 0x600a, 0xd6e4, 0x00c0, 0x3300, 0x1078, 0x42e7, 0x0040, 0x33dc, + 0x7868, 0xa08c, 0x00ff, 0x0040, 0x3341, 0xa186, 0x0008, 0x00c0, + 0x3316, 0x1078, 0x3b94, 0x6008, 0xc0a4, 0x600a, 0x1078, 0x3b2d, + 0x0040, 0x3341, 0x1078, 0x42e7, 0x0078, 0x332b, 0xa186, 0x0028, + 0x00c0, 0x3341, 0x1078, 0x42e7, 0x6008, 0xc0a4, 0x600a, 0x6018, + 0xa005, 0x0040, 0x332b, 0x8001, 0x601a, 0x0040, 0x332b, 0x8001, + 0x0040, 0x332b, 0x601e, 0x6820, 0xd084, 0x0040, 0x2924, 0xc084, + 0x6822, 0x705c, 0x0c7e, 0x2060, 0x6800, 0x6002, 0x0c7f, 0x6004, + 0x6802, 0xa005, 0x2d00, 0x00c0, 0x333e, 0x6002, 0x6006, 0x0078, + 0x2924, 0x017e, 0x81ff, 0x00c0, 0x3388, 0x7000, 0xa086, 0x0030, + 0x0040, 0x3388, 0x71d4, 0xd1b4, 0x00c0, 0x336f, 0x7060, 0xa005, + 0x00c0, 0x3388, 0x70a4, 0xa086, 0x0001, 0x0040, 0x3388, 0x7003, + 0x0000, 0x047e, 0x057e, 0x077e, 0x067e, 0x0c7e, 0x0d7e, 0x1078, + 0x294a, 0x0d7f, 0x0c7f, 0x067f, 0x077f, 0x057f, 0x047f, 0x71d4, + 0xd1b4, 0x00c0, 0x3388, 0x7003, 0x0040, 0x0078, 0x3388, 0x1078, + 0x40de, 0x00c0, 0x3388, 0x781b, 0x005b, 0x0d7e, 0x70bc, 0xa06d, + 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, + 0xc1b4, 0x71d6, 0x7003, 0x0030, 0x7808, 0xc08d, 0x780a, 0x0d7f, + 0x1078, 0x34c0, 0x017f, 0x81ff, 0x0040, 0x33db, 0xa684, 0xdf00, + 0x681e, 0x682b, 0x0000, 0x6f14, 0xa186, 0x0002, 0x00c0, 0x33dc, + 0x70d4, 0xd0b4, 0x0040, 0x33a9, 0xc0b4, 0x70d6, 0x0c7e, 0x70b8, + 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, + 0x0c7f, 0x6820, 0xd0dc, 0x00c0, 0x33dc, 0x8717, 0xa294, 0x000f, + 0x8213, 0x8213, 0x8213, 0xb284, 0x0300, 0x0040, 0x33bb, 0xa290, + 0x4ec0, 0x0078, 0x33bd, 0xa290, 0x4f40, 0xa290, 0x0000, 0x221c, + 0xd3c4, 0x00c0, 0x33c5, 0x0078, 0x33cb, 0x8210, 0x2204, 0xa085, + 0x0018, 0x2012, 0x8211, 0xd3d4, 0x0040, 0x33d6, 0x68a0, 0xd0c4, + 0x00c0, 0x33d6, 0x1078, 0x3534, 0x0078, 0x2924, 0x6008, 0xc08d, + 0x600a, 0x0078, 0x33dc, 0x692a, 0x6916, 0x6818, 0xd0fc, 0x0040, + 0x33e3, 0x7048, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x6410, 0x84ff, + 0x0040, 0x33f8, 0x2009, 0x4a02, 0x2104, 0x8001, 0x200a, 0x8421, + 0x6412, 0x00c0, 0x33f8, 0x2021, 0x4a04, 0x2404, 0xc0a5, 0x2022, + 0x6018, 0xa005, 0x0040, 0x3400, 0x8001, 0x601a, 0x00c0, 0x3403, + 0x6008, 0xc0a4, 0x600a, 0x6820, 0xd084, 0x00c0, 0x340f, 0x6800, + 0xa005, 0x00c0, 0x340c, 0x6002, 0x6006, 0x0078, 0x3413, 0x705c, + 0x2060, 0x6800, 0x6002, 0x2061, 0x4a00, 0x6887, 0x0103, 0x2d08, + 0x206b, 0x0000, 0x6068, 0xa005, 0x616a, 0x0040, 0x3422, 0x2d02, + 0x0078, 0x3423, 0x616e, 0x7200, 0xa286, 0x0030, 0x0040, 0x3433, + 0xa286, 0x0040, 0x00c0, 0x2924, 0x7003, 0x0002, 0x704c, 0x2068, + 0x68c4, 0x2060, 0x007c, 0x7003, 0x0002, 0x70bc, 0xa06d, 0x68bc, + 0x7042, 0x70b8, 0xa065, 0x68c0, 0x705a, 0x2d00, 0x704e, 0xad80, + 0x0009, 0x7046, 0x007c, 0xa282, 0x0004, 0x0048, 0x3449, 0x1078, + 0x28ca, 0x2200, 0x0079, 0x344c, 0x3450, 0x3461, 0x346e, 0x3461, + 0xa586, 0x1300, 0x0040, 0x3461, 0xa586, 0x8300, 0x00c0, 0x3447, + 0x7003, 0x0000, 0x6018, 0x8001, 0x601a, 0x6008, 0xa084, 0xfbef, + 0x600a, 0x7000, 0xa086, 0x0005, 0x0040, 0x346b, 0x1078, 0x3e70, + 0x781b, 0x0075, 0x007c, 0x781b, 0x0076, 0x007c, 0x7890, 0x8007, + 0x8001, 0xa084, 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, + 0x00ff, 0xa186, 0x0003, 0x0040, 0x3483, 0xa186, 0x0000, 0x0040, + 0x3483, 0x0078, 0x3e5f, 0x781b, 0x0076, 0x007c, 0x6820, 0xc095, + 0x6822, 0x82ff, 0x00c0, 0x3490, 0x1078, 0x3e70, 0x0078, 0x3497, + 0x8211, 0x0040, 0x3495, 0x1078, 0x28ca, 0x1078, 0x3e80, 0x781b, + 0x0075, 0x007c, 0x1078, 0x40f3, 0x7830, 0xa084, 0x00c0, 0x00c0, + 0x34bd, 0x017e, 0x3208, 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, + 0x007f, 0x0040, 0x34af, 0xa18c, 0x0300, 0x0078, 0x34b1, 0xa18c, + 0x0400, 0x017f, 0x0040, 0x34b8, 0x0018, 0x34bd, 0x0078, 0x34ba, + 0x0028, 0x34bd, 0x791a, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, + 0xa684, 0x0060, 0x00c0, 0x34ca, 0x682f, 0x0000, 0x6833, 0x0000, + 0x0078, 0x3533, 0xd6dc, 0x00c0, 0x34e5, 0x68b4, 0xa084, 0x4800, + 0xa635, 0xd6dc, 0x00c0, 0x34e5, 0x6998, 0x6a94, 0x692e, 0x6a32, + 0x7048, 0xa005, 0x00c0, 0x34e2, 0x2200, 0xa105, 0x0040, 0x34e4, + 0x704b, 0x0015, 0x0078, 0x42e7, 0x007c, 0xd6ac, 0x0040, 0x3502, + 0xd6f4, 0x0040, 0x34f1, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, + 0x42e7, 0x68b4, 0xa084, 0x4800, 0xa635, 0xd6f4, 0x00c0, 0x34eb, + 0x7048, 0xa005, 0x00c0, 0x34fe, 0x704b, 0x0015, 0x6c2e, 0x6d32, + 0x0078, 0x42e7, 0xd6f4, 0x0040, 0x350b, 0x682f, 0x0000, 0x6833, + 0x0000, 0x0078, 0x42e7, 0x68b4, 0xa084, 0x4800, 0xa635, 0xd6f4, + 0x00c0, 0x3505, 0x7048, 0xa005, 0x00c0, 0x3518, 0x704b, 0x0015, + 0x2408, 0x2510, 0x2700, 0x80fb, 0x00c8, 0x351f, 0x8000, 0xa084, + 0x003f, 0xa108, 0xa291, 0x0000, 0x692e, 0x6a32, 0x2100, 0xa205, + 0x00c0, 0x352c, 0x0078, 0x42e7, 0x7000, 0xa086, 0x0006, 0x0040, + 0x3533, 0x0078, 0x42e7, 0x007c, 0x6008, 0xc0cd, 0xd3cc, 0x0040, + 0x353a, 0xc08d, 0x600a, 0x681b, 0x0006, 0x688f, 0x0000, 0x6893, + 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942, 0x682f, 0x0003, 0x6833, + 0x0000, 0x6837, 0x0020, 0x6897, 0x0000, 0x689b, 0x0020, 0x7000, + 0x0079, 0x3552, 0x2924, 0x3564, 0x355c, 0x355a, 0x355a, 0x355a, + 0x355a, 0x355a, 0x1078, 0x28ca, 0x6820, 0xd084, 0x00c0, 0x3564, + 0x1078, 0x3b77, 0x0078, 0x356a, 0x705c, 0x2c50, 0x2060, 0x6800, + 0x6002, 0x2a60, 0x3208, 0xa18c, 0x0300, 0x0040, 0x3573, 0x2021, + 0x4a58, 0x0078, 0x3575, 0x2021, 0x4a98, 0x2404, 0xa005, 0x0040, + 0x357c, 0x2020, 0x0078, 0x3575, 0x2d22, 0x206b, 0x0000, 0x007c, + 0x1078, 0x3b7e, 0x1078, 0x3b94, 0x6008, 0xc0cc, 0x600a, 0x682b, + 0x0000, 0x789b, 0x000e, 0x6f14, 0x6817, 0x0002, 0x3208, 0xa18c, + 0x0300, 0x0040, 0x3597, 0x2009, 0x0000, 0x0078, 0x3599, 0x2009, + 0x0001, 0x1078, 0x46da, 0xd6dc, 0x0040, 0x35a1, 0x691c, 0xc1ed, + 0x691e, 0x6818, 0xd0fc, 0x0040, 0x35b0, 0x7868, 0xa08c, 0x00ff, + 0x0040, 0x35ae, 0x681b, 0x001e, 0x0078, 0x35b0, 0x681b, 0x0000, + 0xb284, 0x0300, 0x00c0, 0x35b8, 0x2021, 0x4a98, 0x0078, 0x35ba, + 0x2021, 0x4a58, 0x6800, 0x2022, 0x6a3c, 0x6940, 0x6a32, 0x692e, + 0x1078, 0x2008, 0x0078, 0x2924, 0x7cd8, 0x7ddc, 0x7fd0, 0x1078, + 0x34c0, 0x682b, 0x0000, 0x789b, 0x000e, 0x6f14, 0x1078, 0x40f7, + 0xa08c, 0x00ff, 0x6916, 0x6818, 0xd0fc, 0x0040, 0x35d9, 0x7048, + 0x681a, 0xa68c, 0xdf00, 0x691e, 0x7067, 0x0000, 0x0078, 0x2924, + 0x7000, 0xa005, 0x00c0, 0x35e6, 0x0078, 0x2924, 0xa006, 0x1078, + 0x42e7, 0x6817, 0x0000, 0x681b, 0x0014, 0xa68c, 0xdf00, 0x691e, + 0x682b, 0x0000, 0x6820, 0xa084, 0x00ff, 0x6822, 0x7000, 0x0079, + 0x35f9, 0x2924, 0x3606, 0x3603, 0x3608, 0x3608, 0x3608, 0x3601, + 0x3601, 0x1078, 0x28ca, 0x6008, 0xc0d4, 0x600a, 0x1078, 0x3b94, + 0x6008, 0xc0a4, 0x600a, 0x0078, 0x3b47, 0x2300, 0x0079, 0x3610, + 0x3613, 0x3615, 0x3671, 0x1078, 0x28ca, 0xd6fc, 0x00c0, 0x3658, + 0x7000, 0xa00d, 0x0079, 0x361c, 0x2924, 0x3626, 0x3626, 0x364a, + 0x3626, 0x3655, 0x3624, 0x3624, 0x1078, 0x28ca, 0xa684, 0x0060, + 0xa086, 0x0060, 0x00c0, 0x3647, 0xc6ac, 0xc6f4, 0xc6ed, 0x7e5a, + 0x681c, 0xc0ac, 0x681e, 0xa186, 0x0002, 0x0040, 0x3639, 0x1078, + 0x42e7, 0x1078, 0x45b9, 0x781b, 0x0076, 0x71d4, 0xd1b4, 0x00c0, + 0x2920, 0x70a4, 0xa086, 0x0001, 0x00c0, 0x2967, 0x007c, 0xd6ec, + 0x0040, 0x362e, 0x6818, 0xd0fc, 0x0040, 0x3655, 0x681b, 0x0015, + 0xd6f4, 0x0040, 0x3655, 0x681b, 0x0007, 0x1078, 0x4097, 0x007c, + 0xc6fc, 0x7e5a, 0x7adc, 0x79d8, 0x78d0, 0x801b, 0x00c8, 0x3661, + 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, + 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x781b, 0x0076, + 0x007c, 0x1078, 0x28ca, 0x2300, 0x0079, 0x3676, 0x367b, 0x3693, + 0x36e6, 0x1078, 0x28ca, 0x7000, 0x0079, 0x367e, 0x3686, 0x3686, + 0x3688, 0x3686, 0x3686, 0x3686, 0x3686, 0x3686, 0x1078, 0x28ca, + 0x1078, 0x45b9, 0x681c, 0xc0b4, 0x681e, 0x70a4, 0xa086, 0x0001, + 0x00c0, 0x2967, 0x007c, 0xd6fc, 0x00c0, 0x36d7, 0x7000, 0xa00d, + 0x0079, 0x369a, 0x2924, 0x36aa, 0x36a4, 0x36ce, 0x36aa, 0x36d4, + 0x36a2, 0x36a2, 0x1078, 0x28ca, 0x6894, 0x78d6, 0x78de, 0x6898, + 0x78d2, 0x78da, 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, 0x36cb, + 0xa6b4, 0xbfbf, 0xc6ed, 0x7e5a, 0xa186, 0x0002, 0x0040, 0x36ba, + 0x1078, 0x42e7, 0x1078, 0x45b9, 0x781b, 0x0076, 0x681c, 0xc0b4, + 0x681e, 0x71d4, 0xd1b4, 0x00c0, 0x2920, 0x70a4, 0xa086, 0x0001, + 0x00c0, 0x2967, 0x007c, 0xd6ec, 0x0040, 0x36b2, 0x6818, 0xd0fc, + 0x0040, 0x36d4, 0x681b, 0x0007, 0x781b, 0x00ef, 0x007c, 0xc6fc, + 0x7e5a, 0x7adc, 0x79d8, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, + 0x2200, 0xa303, 0x68ae, 0x781b, 0x0076, 0x007c, 0xd6dc, 0x0040, + 0x36ef, 0x782b, 0x3009, 0x781b, 0x0076, 0x0078, 0x2920, 0x7884, + 0xc0ac, 0x7886, 0x78e4, 0xa084, 0x0008, 0x00c0, 0x3702, 0xa484, + 0x0200, 0x0040, 0x36fc, 0xc6f5, 0xc6dd, 0x7e5a, 0x781b, 0x0076, + 0x0078, 0x2920, 0x6820, 0xc095, 0x6822, 0x1078, 0x4024, 0xc6dd, + 0x1078, 0x3e70, 0x781b, 0x0075, 0x0078, 0x2920, 0x2300, 0x0079, + 0x3711, 0x3714, 0x3716, 0x3718, 0x1078, 0x28ca, 0x0078, 0x3e69, + 0xd6d4, 0x00c0, 0x373e, 0x79e4, 0xd1ac, 0x0040, 0x3726, 0x78ec, + 0xa084, 0x0003, 0x0040, 0x3726, 0x782b, 0x3009, 0x789b, 0x0060, + 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x79e4, 0xd1ac, 0x0040, + 0x3736, 0x78ec, 0xa084, 0x0003, 0x00c0, 0x373a, 0x2001, 0x0014, + 0x0078, 0x32dc, 0xa184, 0x0007, 0x0079, 0x3774, 0x7a90, 0xa294, + 0x0007, 0x789b, 0x0060, 0x79a8, 0x81ff, 0x0040, 0x3772, 0x789b, + 0x0010, 0x7ba8, 0xa384, 0x0001, 0x00c0, 0x3765, 0x7ba8, 0x7ba8, + 0xa386, 0x0001, 0x00c0, 0x3758, 0x2009, 0xfff7, 0x0078, 0x375e, + 0xa386, 0x0003, 0x00c0, 0x3765, 0x2009, 0xffef, 0x0c7e, 0x7058, + 0x2060, 0x6004, 0xa104, 0x6006, 0x0c7f, 0x789b, 0x0060, 0x78ab, + 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b, 0x3009, 0x6920, 0xa18c, + 0xfcff, 0x6922, 0x0078, 0x408b, 0x2f8c, 0x2f96, 0x377e, 0x3784, + 0x377c, 0x377c, 0x408b, 0x408b, 0x1078, 0x28ca, 0x6920, 0xa18c, + 0xfcff, 0x6922, 0x0078, 0x4091, 0x6920, 0xa18c, 0xfcff, 0x6922, + 0x0078, 0x408b, 0x79e4, 0xa184, 0x0030, 0x0040, 0x3794, 0x78ec, + 0xa084, 0x0003, 0x00c0, 0x37ba, 0x7000, 0xa086, 0x0004, 0x00c0, + 0x37ae, 0x7064, 0xa086, 0x0002, 0x00c0, 0x37a4, 0x2011, 0x0002, + 0x2019, 0x0000, 0x0078, 0x2e21, 0x7064, 0xa086, 0x0006, 0x0040, + 0x379e, 0x7064, 0xa086, 0x0004, 0x0040, 0x379e, 0x7000, 0xa086, + 0x0000, 0x0040, 0x2920, 0x6818, 0xc0fd, 0x681a, 0x2001, 0x0014, + 0x0078, 0x32dc, 0xa184, 0x0007, 0x0079, 0x37be, 0x408b, 0x408b, + 0x37c6, 0x408b, 0x40d3, 0x40d3, 0x408b, 0x408b, 0xd6bc, 0x0040, + 0x3808, 0x7184, 0x81ff, 0x0040, 0x3808, 0xa182, 0x000d, 0x00d0, + 0x37d5, 0x7087, 0x0000, 0x0078, 0x37da, 0xa182, 0x000c, 0x7086, + 0x2009, 0x000c, 0x789b, 0x0061, 0x79aa, 0x157e, 0x137e, 0x147e, + 0x7088, 0x8114, 0xa210, 0x728a, 0xa080, 0x000b, 0xad00, 0x2098, + 0xb284, 0x0300, 0x0040, 0x37fc, 0x007e, 0x2001, 0x4a04, 0x2004, + 0xd0ec, 0x007f, 0x0040, 0x37f8, 0x20a1, 0x012b, 0x0078, 0x37fe, + 0x20a1, 0x022b, 0x0078, 0x37fe, 0x20a1, 0x012b, 0x789b, 0x0000, + 0x8108, 0x81ac, 0x53a6, 0x147f, 0x137f, 0x157f, 0x0078, 0x4091, + 0xd6d4, 0x00c0, 0x385c, 0x6820, 0xd084, 0x0040, 0x4091, 0xa68c, + 0x0060, 0xa684, 0x0060, 0x0040, 0x381a, 0xa086, 0x0060, 0x00c0, + 0x381a, 0xc1f5, 0xc194, 0x795a, 0x69b6, 0x789b, 0x0060, 0x78ab, + 0x0000, 0x789b, 0x0061, 0x6818, 0xc0fd, 0x681a, 0x78aa, 0x8008, + 0x810c, 0x0040, 0x3bad, 0xa18c, 0x00f8, 0x00c0, 0x3bad, 0x157e, + 0x137e, 0x147e, 0x017e, 0x3208, 0xa18c, 0x0300, 0x0040, 0x3848, + 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x3844, + 0x20a1, 0x012b, 0x0078, 0x384a, 0x20a1, 0x022b, 0x0078, 0x384a, + 0x20a1, 0x012b, 0x017f, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, + 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6814, 0xc0fc, + 0x8007, 0x7882, 0x0078, 0x4091, 0x6818, 0xd0fc, 0x0040, 0x3862, + 0x681b, 0x0008, 0x781b, 0x00e1, 0x007c, 0x2300, 0x0079, 0x3868, + 0x386d, 0x393d, 0x386b, 0x1078, 0x28ca, 0x7cd8, 0x7ddc, 0x7fd0, + 0x82ff, 0x00c0, 0x3893, 0x7200, 0xa286, 0x0003, 0x0040, 0x32ac, + 0x71d4, 0xd1b4, 0x0040, 0x3896, 0x0d7e, 0x783b, 0x8800, 0x781b, + 0x004c, 0x70bc, 0xa06d, 0x68b4, 0xc0a5, 0x785a, 0x6894, 0x78d6, + 0x78de, 0x6898, 0x78d2, 0x78da, 0xc1b4, 0x71d6, 0x7003, 0x0030, + 0x0d7f, 0x0078, 0x389a, 0x7200, 0x0078, 0x389a, 0x783b, 0x1800, + 0x781b, 0x004a, 0xa284, 0x000f, 0x0079, 0x389e, 0x3928, 0x38dc, + 0x38a8, 0x32d8, 0x38a6, 0x3928, 0x38a6, 0x38a6, 0x1078, 0x28ca, + 0x681c, 0xd0ec, 0x0040, 0x38af, 0x6008, 0xc08d, 0x600a, 0x6920, + 0xc185, 0x6922, 0x6800, 0x6006, 0xa005, 0x00c0, 0x38b8, 0x6002, + 0x6008, 0xc0d4, 0x600a, 0x681c, 0xa084, 0x000e, 0x00c0, 0x38cc, + 0xb284, 0x0300, 0x0040, 0x38c8, 0x2009, 0x90c0, 0x0078, 0x38d1, + 0x2009, 0x91d0, 0x0078, 0x38d1, 0x7030, 0x68ba, 0x7140, 0x70cc, + 0xa108, 0x2104, 0x6802, 0x2d0a, 0x715e, 0xd6dc, 0x00c0, 0x38dc, + 0xc6fc, 0x6eb6, 0x0078, 0x3928, 0x6eb6, 0xa684, 0x0060, 0x0040, + 0x3928, 0xd6dc, 0x00c0, 0x38ef, 0xa684, 0x7fff, 0x68b6, 0x6894, + 0x68a6, 0x6898, 0x68aa, 0x1078, 0x42e7, 0x0078, 0x3928, 0xd6ac, + 0x0040, 0x38fb, 0xa006, 0x1078, 0x42e7, 0x2408, 0x2510, 0x69aa, + 0x6aa6, 0x0078, 0x390b, 0x2408, 0x2510, 0x2700, 0x801b, 0x00c8, + 0x3902, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x69aa, + 0x6aa6, 0x1078, 0x42e7, 0xd6fc, 0x0040, 0x3928, 0xa684, 0x7fff, + 0x68b6, 0x2510, 0x2408, 0xd6ac, 0x00c0, 0x3920, 0x2700, 0x801b, + 0x00c8, 0x391b, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, + 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, + 0x7000, 0xa086, 0x0030, 0x00c0, 0x2924, 0x7003, 0x0002, 0x70bc, + 0xa06d, 0x68bc, 0x7042, 0x70b8, 0xa065, 0x68c0, 0x705a, 0x2d00, + 0x704e, 0xad80, 0x0009, 0x7046, 0x007c, 0xa586, 0x8800, 0x00c0, + 0x394a, 0x7003, 0x0000, 0x6018, 0x8001, 0x601a, 0x6008, 0xa084, + 0xfbef, 0x600a, 0x0078, 0x3e69, 0x7047, 0x0000, 0xa282, 0x0006, + 0x0050, 0x3954, 0x1078, 0x28ca, 0x2300, 0x0079, 0x3957, 0x395a, + 0x3991, 0x39c3, 0x2200, 0x0079, 0x395d, 0x3963, 0x3e69, 0x3965, + 0x3963, 0x39fa, 0x3a5d, 0x1078, 0x28ca, 0x7003, 0x0005, 0xb284, + 0x0300, 0x0040, 0x396f, 0x2001, 0x91e0, 0x0078, 0x3971, 0x2001, + 0x9212, 0x2068, 0x704e, 0x157e, 0x20a9, 0x0032, 0x2003, 0x0000, + 0x8000, 0x00f0, 0x3976, 0x157f, 0xb284, 0x0300, 0x0040, 0x3984, + 0x6817, 0x0000, 0x0078, 0x3986, 0x6817, 0x8000, 0xad80, 0x0009, + 0x7046, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x0078, + 0x3e5f, 0x7000, 0xa086, 0x0002, 0x00c0, 0x39a2, 0x1078, 0x3b94, + 0x0078, 0x399c, 0x1078, 0x42e7, 0x6008, 0xa084, 0xfbef, 0x600a, + 0x0078, 0x39a7, 0x7000, 0xa086, 0x0003, 0x0040, 0x399a, 0x7003, + 0x0005, 0xb284, 0x0300, 0x0040, 0x39b1, 0x2001, 0x91e0, 0x0078, + 0x39b3, 0x2001, 0x9212, 0x2068, 0x704e, 0xad80, 0x0009, 0x7046, + 0x2200, 0x0079, 0x39bb, 0x3e69, 0x39c1, 0x39c1, 0x39fa, 0x39c1, + 0x3e69, 0x1078, 0x28ca, 0x7000, 0xa086, 0x0002, 0x00c0, 0x39d4, + 0x1078, 0x3b94, 0x0078, 0x39ce, 0x1078, 0x42e7, 0x6008, 0xa084, + 0xfbef, 0x600a, 0x0078, 0x39d9, 0x7000, 0xa086, 0x0003, 0x0040, + 0x39cc, 0x7003, 0x0005, 0xb284, 0x0300, 0x0040, 0x39e3, 0x2001, + 0x91e0, 0x0078, 0x39e5, 0x2001, 0x9212, 0x2068, 0x704e, 0xad80, + 0x0009, 0x7046, 0x2200, 0x0079, 0x39ed, 0x39f5, 0x39f3, 0x39f3, + 0x39f5, 0x39f3, 0x39f5, 0x1078, 0x28ca, 0x1078, 0x3e80, 0x781b, + 0x0075, 0x007c, 0x7000, 0xa086, 0x0002, 0x00c0, 0x3a0c, 0x70d4, + 0xc0b5, 0x70d6, 0x2c00, 0x70ba, 0x2d00, 0x70be, 0x0078, 0x3a11, + 0x1078, 0x42e7, 0x0078, 0x3a11, 0x7000, 0xa086, 0x0003, 0x0040, + 0x3a08, 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, + 0x7ca8, 0xa484, 0x001f, 0xa215, 0x2069, 0x90c0, 0xb284, 0x0300, + 0x00c0, 0x3a25, 0xc2fd, 0x2069, 0x91d0, 0x2d04, 0x2d08, 0x715e, + 0xa06d, 0x0040, 0x3a32, 0x6814, 0xa206, 0x0040, 0x3a52, 0x6800, + 0x0078, 0x3a26, 0x7003, 0x0005, 0xd2fc, 0x00c0, 0x3a3b, 0x2001, + 0x91e0, 0x0078, 0x3a3d, 0x2001, 0x9212, 0x2068, 0x704e, 0x157e, + 0x20a9, 0x0032, 0x2003, 0x0000, 0x8000, 0x00f0, 0x3a42, 0x157f, + 0xad80, 0x0009, 0x7046, 0x6a16, 0x68b7, 0x0700, 0x6823, 0x0800, + 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6820, 0xa084, 0x0c00, 0x0040, + 0x3ad2, 0x1078, 0x3e78, 0x0078, 0x3ad2, 0x7200, 0xa286, 0x0002, + 0x00c0, 0x3a6f, 0x70d4, 0xc0b5, 0x70d6, 0x2c00, 0x70ba, 0x2d00, + 0x70be, 0x0078, 0x3a73, 0x1078, 0x42e7, 0x0078, 0x3a73, 0xa286, + 0x0003, 0x0040, 0x3a6b, 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, + 0x789b, 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0xb284, 0x0300, + 0x00c0, 0x3a83, 0xc2fd, 0x79a8, 0x79a8, 0xa18c, 0x00ff, 0x70cc, + 0xa168, 0x2d04, 0x2d08, 0x715e, 0xa06d, 0x0040, 0x3a96, 0x6814, + 0xa206, 0x0040, 0x3abf, 0x6800, 0x0078, 0x3a8a, 0x7003, 0x0005, + 0xb284, 0x0300, 0x0040, 0x3aa0, 0x2001, 0x91e0, 0x0078, 0x3aa2, + 0x2001, 0x9212, 0x2068, 0x704e, 0x157e, 0x20a9, 0x0032, 0x2003, + 0x0000, 0x8000, 0x00f0, 0x3aa7, 0x157f, 0xb284, 0x0300, 0x0040, + 0x3ab4, 0xc2fc, 0x0078, 0x3ab5, 0xc2fd, 0x6a16, 0xad80, 0x0009, + 0x7046, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, + 0x6820, 0xa084, 0x0c00, 0x0040, 0x3ad2, 0xd0dc, 0x0040, 0x3acc, + 0x1078, 0x3e7c, 0x0078, 0x3ad2, 0x1078, 0x3e78, 0x707f, 0x0000, + 0x0078, 0x3ad2, 0xa6ac, 0x0060, 0x0040, 0x3b10, 0x6b98, 0x6c94, + 0x69ac, 0x68b0, 0xa105, 0x00c0, 0x3af5, 0x7bd2, 0x7bda, 0x7cd6, + 0x7cde, 0xa6b4, 0xb7ff, 0xa586, 0x0060, 0x0040, 0x3b10, 0xc6ed, + 0x7e5a, 0x2009, 0x0076, 0xd69c, 0x0040, 0x3af0, 0x2009, 0x0075, + 0x791a, 0x1078, 0x45b9, 0x0078, 0x3b19, 0x68b0, 0xa31a, 0x2100, + 0xa423, 0x2400, 0xa305, 0x0040, 0x3b10, 0x7bd2, 0x7bda, 0x7cd6, + 0x7cde, 0x68b0, 0xc6f4, 0x7e5a, 0x2011, 0x0076, 0xd69c, 0x0040, + 0x3b0b, 0x2011, 0x0075, 0x7a1a, 0x1078, 0x45ee, 0x0078, 0x3b19, + 0x7e5a, 0x2009, 0x0076, 0xd69c, 0x0040, 0x3b18, 0x2009, 0x0075, + 0x791a, 0x68c0, 0x705a, 0x2d00, 0x704e, 0x68c4, 0x2060, 0x71d4, + 0xd1b4, 0x00c0, 0x2920, 0x2300, 0xa405, 0x0040, 0x2920, 0x70a4, + 0xa086, 0x0001, 0x00c0, 0x2967, 0x007c, 0x6020, 0xa005, 0x0040, + 0x3b3b, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, 0x600a, 0x700f, + 0x0100, 0x702c, 0x6026, 0x007c, 0xa006, 0x1078, 0x42e7, 0x6817, + 0x0000, 0x681b, 0x0001, 0x6823, 0x0040, 0x681f, 0x0100, 0x7000, + 0xa084, 0x000f, 0x0079, 0x3b4c, 0x2924, 0x3b56, 0x3b56, 0x3b73, + 0x3b5e, 0x2924, 0x3b54, 0x3b54, 0x1078, 0x28ca, 0x1078, 0x3b7e, + 0x1078, 0x3b77, 0x1078, 0x2008, 0x0078, 0x2924, 0x7064, 0x7067, + 0x0000, 0x7083, 0x0000, 0x0079, 0x3b65, 0x3b6f, 0x3b6f, 0x3b6d, + 0x3b6d, 0x3b6d, 0x3b6f, 0x3b6d, 0x3b6f, 0x0079, 0x2e3a, 0x7067, + 0x0000, 0x0078, 0x2924, 0x681b, 0x0000, 0x0078, 0x3580, 0x6800, + 0xa005, 0x00c0, 0x3b7c, 0x6002, 0x6006, 0x007c, 0x6410, 0x84ff, + 0x0040, 0x3b90, 0x2009, 0x4a02, 0x2104, 0x8001, 0x200a, 0x8421, + 0x6412, 0x00c0, 0x3b90, 0x2021, 0x4a04, 0x2404, 0xc0a5, 0x2022, + 0x6008, 0xc0a4, 0x600a, 0x007c, 0x6018, 0xa005, 0x0040, 0x3b9a, + 0x8001, 0x601a, 0x007c, 0x1078, 0x40f3, 0x681b, 0x0018, 0x0078, + 0x3bdc, 0x1078, 0x40f3, 0x681b, 0x0019, 0x0078, 0x3bdc, 0x1078, + 0x40f3, 0x681b, 0x001a, 0x0078, 0x3bdc, 0x1078, 0x40f3, 0x681b, + 0x0003, 0x0078, 0x3bdc, 0x7774, 0x1078, 0x3fa3, 0x7178, 0xa18c, + 0x00ff, 0x3210, 0xa294, 0x0300, 0x0040, 0x3bc2, 0xa1e8, 0x8fc0, + 0x0078, 0x3bc4, 0xa1e8, 0x90d0, 0x2d04, 0x2d08, 0x2068, 0xa005, + 0x00c0, 0x3bcc, 0x0078, 0x2924, 0x6814, 0xc0fc, 0x7274, 0xc2fc, + 0xa206, 0x0040, 0x3bd6, 0x6800, 0x0078, 0x3bc5, 0x6800, 0x200a, + 0x681b, 0x0005, 0x707f, 0x0000, 0x1078, 0x3b7e, 0x6820, 0xd084, + 0x00c0, 0x3be4, 0x1078, 0x3b77, 0x1078, 0x3b94, 0x681f, 0x0000, + 0x6823, 0x0020, 0x1078, 0x2008, 0x0078, 0x2924, 0xa282, 0x0003, + 0x00c0, 0x3e5f, 0x7da8, 0xa5ac, 0x00ff, 0x7ea8, 0xa6b4, 0x00ff, + 0x6920, 0xc1bd, 0x6922, 0xd1c4, 0x0040, 0x3c48, 0xc1c4, 0x6922, + 0xa6b4, 0x00ff, 0x0040, 0x3c35, 0xa682, 0x000c, 0x0048, 0x3c0c, + 0x0040, 0x3c0c, 0x2031, 0x000c, 0x2500, 0xa086, 0x000a, 0x0040, + 0x3c13, 0x852b, 0x852b, 0x1078, 0x3f35, 0x0040, 0x3c1b, 0x1078, + 0x3d17, 0x0078, 0x3c3e, 0x1078, 0x3ef0, 0x0c7e, 0x2960, 0x6004, + 0xa084, 0xfff5, 0x6006, 0x1078, 0x3d4c, 0x0c7f, 0x6920, 0xc1c5, + 0x6922, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x3c32, 0x781b, + 0x0061, 0x007c, 0x781b, 0x0075, 0x007c, 0x0c7e, 0x2960, 0x6004, + 0xa084, 0xfff5, 0x6006, 0x1078, 0x3d4c, 0x0c7f, 0x7e58, 0xd6d4, + 0x00c0, 0x3c45, 0x781b, 0x0064, 0x007c, 0x781b, 0x0076, 0x007c, + 0x0c7e, 0x7058, 0x2060, 0x6100, 0xd1e4, 0x0040, 0x3c91, 0x6208, + 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c, 0x0048, 0x3c5b, 0x0040, + 0x3c5b, 0x2011, 0x000c, 0x2600, 0xa202, 0x00c8, 0x3c60, 0x2230, + 0x6208, 0xa294, 0x00ff, 0x2001, 0x4a05, 0x2004, 0xd0e4, 0x00c0, + 0x3c75, 0x78ec, 0xd0e4, 0x0040, 0x3c75, 0xa282, 0x000a, 0x00c8, + 0x3c7b, 0x2011, 0x000a, 0x0078, 0x3c7b, 0xa282, 0x000c, 0x00c8, + 0x3c7b, 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, 0x3c80, 0x2228, + 0x1078, 0x3ef4, 0x2500, 0xa086, 0x000a, 0x0040, 0x3c89, 0x852b, + 0x852b, 0x1078, 0x3f35, 0x0040, 0x3c91, 0x1078, 0x3d17, 0x0078, + 0x3c95, 0x1078, 0x3ef0, 0x1078, 0x3d4c, 0x7858, 0xc095, 0x785a, + 0x0c7f, 0x781b, 0x0075, 0x007c, 0x0c7e, 0x2960, 0x6000, 0xd0e4, + 0x00c0, 0x3cb3, 0x6010, 0xa084, 0x000f, 0x00c0, 0x3cad, 0x6104, + 0xa18c, 0xfff5, 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, + 0x0000, 0x0078, 0x3cde, 0x68a0, 0xd0cc, 0x00c0, 0x3cad, 0x6208, + 0xa294, 0x00ff, 0x2001, 0x4a05, 0x2004, 0xd0e4, 0x00c0, 0x3ccc, + 0x78ec, 0xd0e4, 0x0040, 0x3ccc, 0xa282, 0x000a, 0x00c0, 0x3ccc, + 0x2011, 0x000a, 0x0078, 0x3cd2, 0xa282, 0x000c, 0x00c8, 0x3cd2, + 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382, 0x000c, + 0x0048, 0x3cde, 0x0040, 0x3cde, 0x2019, 0x000c, 0x78ab, 0x0001, + 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, + 0x6820, 0xc0c5, 0x6822, 0x70d4, 0xd0b4, 0x0040, 0x3cfa, 0xc0b4, + 0x70d6, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, + 0x8001, 0x601a, 0x0c7f, 0x007c, 0x0c7e, 0x2960, 0x6104, 0xa18c, + 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078, 0x3d08, + 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, + 0xa8c0, 0x0005, 0x6820, 0xc0c5, 0x6822, 0x0c7f, 0x007c, 0x0c7e, + 0x7158, 0x2160, 0x2018, 0xa08c, 0x0020, 0x0040, 0x3d20, 0xc0ac, + 0x2008, 0xa084, 0xfff0, 0xa635, 0x7e86, 0x6018, 0x789a, 0x7eae, + 0x6612, 0x78a4, 0xa084, 0xfff0, 0xa18c, 0x000f, 0xa105, 0xa39c, + 0x0020, 0x0040, 0x3d35, 0xa085, 0x4000, 0xc0fc, 0xd0b4, 0x00c0, + 0x3d3a, 0xc0fd, 0x78a6, 0x6016, 0x788a, 0xa6b4, 0x000f, 0x8637, + 0x8204, 0x8004, 0xa084, 0x00ff, 0xa605, 0x600e, 0x6004, 0xa084, + 0xfff5, 0x6006, 0x0c7f, 0x007c, 0x0c7e, 0x7058, 0x2060, 0x6018, + 0x789a, 0x78a4, 0xa084, 0xfff0, 0x78a6, 0x6012, 0x7884, 0xa084, + 0xfff0, 0x7886, 0x600c, 0xa084, 0x00ff, 0x600e, 0x0c7f, 0x007c, + 0xa282, 0x0002, 0x00c0, 0x3e5f, 0x7aa8, 0x6920, 0xc1bd, 0x6922, + 0xd1cc, 0x0040, 0x3d9b, 0xc1cc, 0x6922, 0xa294, 0x00ff, 0xa282, + 0x0002, 0x00c8, 0x3e5f, 0x1078, 0x3dec, 0x1078, 0x3d4c, 0xa980, + 0x0001, 0x200c, 0x1078, 0x3f9f, 0x1078, 0x3c9c, 0x88ff, 0x0040, + 0x3d91, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a, + 0xd6d4, 0x00c0, 0x3d8e, 0x781b, 0x0061, 0x007c, 0x781b, 0x0075, + 0x007c, 0x7e58, 0xd6d4, 0x00c0, 0x3d98, 0x781b, 0x0064, 0x007c, + 0x781b, 0x0076, 0x007c, 0xa282, 0x0002, 0x00c8, 0x3da3, 0xa284, + 0x0001, 0x0040, 0x3dac, 0x7158, 0xa188, 0x0000, 0x210c, 0xd1ec, + 0x00c0, 0x3dac, 0x2011, 0x0000, 0x1078, 0x3ed1, 0x1078, 0x3dec, + 0x1078, 0x3d4c, 0x7858, 0xc095, 0x785a, 0x781b, 0x0075, 0x007c, + 0x0c7e, 0x027e, 0x2960, 0x6000, 0x2011, 0x0001, 0xd0ec, 0x00c0, + 0x3dcd, 0x6014, 0xa084, 0x0040, 0x00c0, 0x3dcb, 0xc1a4, 0x6106, + 0xa006, 0x0078, 0x3de9, 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, + 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x70d4, 0xd0b4, + 0x0040, 0x3de5, 0xc0b4, 0x70d6, 0x70b8, 0xa065, 0x6008, 0xa084, + 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x6820, 0xa085, 0x0200, + 0x6822, 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7058, 0x2060, 0x82ff, + 0x0040, 0x3df4, 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, + 0x78a4, 0xa084, 0xffbf, 0xa205, 0xc0fc, 0xd0b4, 0x00c0, 0x3e01, + 0xc0fd, 0x78a6, 0x6016, 0x788a, 0x6004, 0xc0a4, 0x6006, 0x0c7f, + 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, 0x0040, 0x3e12, 0x007f, + 0x0078, 0x3e15, 0x007f, 0x0078, 0x3e5c, 0xd6ac, 0x0040, 0x3e5c, + 0x7888, 0xa084, 0x0040, 0x0040, 0x3e5c, 0x7bb8, 0xa384, 0x003f, + 0x831b, 0x00c8, 0x3e24, 0x8000, 0xa005, 0x0040, 0x3e39, 0x831b, + 0x00c8, 0x3e2d, 0x8001, 0x0040, 0x3e59, 0xd6f4, 0x0040, 0x3e39, + 0x78b8, 0x801b, 0x00c8, 0x3e35, 0x8000, 0xa084, 0x003f, 0x00c0, + 0x3e59, 0xc6f4, 0x7e5a, 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, + 0x00c8, 0x3e44, 0xa291, 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, + 0x1078, 0x46a5, 0x781b, 0x0073, 0xb284, 0x0300, 0x0040, 0x3e54, + 0x2001, 0x0000, 0x0078, 0x3e56, 0x2001, 0x0001, 0x1078, 0x4547, + 0x007c, 0x781b, 0x0073, 0x007c, 0x781b, 0x0076, 0x007c, 0x1078, + 0x3e84, 0x781b, 0x0075, 0x007c, 0x1078, 0x3e70, 0x781b, 0x0075, + 0x007c, 0x6827, 0x0002, 0x1078, 0x3e78, 0x781b, 0x0075, 0x007c, + 0x2001, 0x0005, 0x0078, 0x3e86, 0x2001, 0x000c, 0x0078, 0x3e86, + 0x2001, 0x0006, 0x0078, 0x3e86, 0x2001, 0x000d, 0x0078, 0x3e86, + 0x2001, 0x0009, 0x0078, 0x3e86, 0x2001, 0x0007, 0x789b, 0x007e, + 0x78aa, 0xc69d, 0x7e5a, 0x70d4, 0xd0b4, 0x0040, 0x3e9c, 0xc0b4, + 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, + 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, 0x077e, 0x873f, 0xa7bc, + 0x000f, 0x873b, 0x873b, 0x8703, 0x017e, 0xb28c, 0x0300, 0x0040, + 0x3ead, 0xa0e0, 0x4ec0, 0x0078, 0x3eaf, 0xa0e0, 0x4f40, 0x017f, + 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184, 0x000f, 0x0040, 0x3ebf, + 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004, 0xc09d, 0x6006, 0x8738, + 0x8738, 0x7f9a, 0x79a4, 0xa184, 0x0040, 0x0040, 0x3ecf, 0xa184, + 0xffbf, 0xc0fd, 0x78a6, 0x6016, 0x6004, 0xc0a5, 0x6006, 0x077f, + 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, + 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab, 0x0004, 0x70d4, 0xd0b4, + 0x0040, 0x3eef, 0xc0b4, 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, + 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, + 0x2031, 0x0000, 0x2029, 0x0032, 0x789b, 0x0010, 0x78ab, 0x0001, + 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, 0x7eaa, 0x789b, 0x0060, + 0x78ab, 0x0005, 0x70d4, 0xd0b4, 0x0040, 0x3f13, 0xc0b4, 0x70d6, + 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, + 0x8001, 0x601a, 0x0c7f, 0x007c, 0x157e, 0x8007, 0xa084, 0x00ff, + 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, 0x79a4, 0xa18c, 0xfff0, + 0x2021, 0x3f88, 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011, 0x0032, + 0x2404, 0xa084, 0xfff0, 0xa106, 0x0040, 0x3f33, 0x8420, 0x2300, + 0xa210, 0x00f0, 0x3f28, 0x157f, 0x007c, 0x157e, 0x2001, 0x4a05, + 0x2004, 0xd0e4, 0x00c0, 0x3f66, 0x2021, 0x3f96, 0x20a9, 0x0009, + 0x2011, 0x0028, 0xa582, 0x0019, 0x0040, 0x3f7c, 0x0048, 0x3f7c, + 0x8420, 0x95a9, 0x2011, 0x0032, 0xa582, 0x0032, 0x0040, 0x3f7c, + 0x0048, 0x3f7c, 0x8420, 0x95a9, 0x2019, 0x000a, 0x2011, 0x0064, + 0x2200, 0xa502, 0x0040, 0x3f7c, 0x0048, 0x3f7c, 0x8420, 0x2300, + 0xa210, 0x00f0, 0x3f58, 0x157f, 0x0078, 0x3f7a, 0x2021, 0x3f88, + 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011, 0x0032, 0x2200, 0xa502, + 0x0040, 0x3f7c, 0x0048, 0x3f7c, 0x8420, 0x2300, 0xa210, 0x00f0, + 0x3f6e, 0x157f, 0xa006, 0x007c, 0x157f, 0xa582, 0x0064, 0x00c8, + 0x3f85, 0x7808, 0xa085, 0x0070, 0x780a, 0x2404, 0xa005, 0x007c, + 0x1209, 0x3002, 0x3202, 0x4203, 0x4403, 0x5404, 0x5604, 0x6605, + 0x6805, 0x7806, 0x7a06, 0x0c07, 0x0c07, 0x0e07, 0x10e1, 0x330a, + 0x5805, 0x5a05, 0x6a06, 0x6c06, 0x7c07, 0x7e07, 0x0e00, 0x789b, + 0x0010, 0xa046, 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, + 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xd7fc, 0x0040, 0x3fb4, + 0xa0e0, 0x6fc0, 0x0078, 0x3fb6, 0xa0e0, 0x4fc0, 0x007c, 0x0e7e, + 0x0f7e, 0xd084, 0x0040, 0x3fc4, 0x2079, 0x0100, 0x2009, 0x4a80, + 0x2071, 0x4a80, 0x0078, 0x3fd6, 0x2009, 0x4a40, 0x007e, 0x2001, + 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x3fd2, 0x2079, 0x0100, + 0x0078, 0x3fd6, 0x2079, 0x0200, 0x2071, 0x4a40, 0x2091, 0x8000, + 0x2104, 0xa084, 0x000f, 0x0079, 0x3fdd, 0x401f, 0x3fe7, 0x3fe7, + 0x3fe7, 0x3fe7, 0x3fe7, 0x3fe5, 0x3fe5, 0x1078, 0x28ca, 0x784b, + 0x0004, 0x7848, 0xa084, 0x0004, 0x00c0, 0x3fe9, 0x784b, 0x0008, + 0x7848, 0xa084, 0x0008, 0x00c0, 0x3ff0, 0x68b4, 0xc0f5, 0x68b6, + 0x7858, 0xc0f5, 0x785a, 0x7830, 0xd0bc, 0x00c0, 0x401f, 0x007e, + 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x400b, 0xb284, + 0x0300, 0x0078, 0x400d, 0xb284, 0x0400, 0x0040, 0x4013, 0x0018, + 0x401f, 0x0078, 0x4015, 0x0028, 0x401f, 0x681c, 0xd0ac, 0x00c0, + 0x401d, 0x1078, 0x4097, 0x0078, 0x401f, 0x781b, 0x00ef, 0x2091, + 0x8001, 0x0f7f, 0x0e7f, 0x007c, 0x0c7e, 0x2001, 0x4a01, 0x2004, + 0xd0ac, 0x00c0, 0x4089, 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, + 0x8003, 0x8003, 0xb28c, 0x0300, 0x0040, 0x403a, 0xa0e0, 0x4ec0, + 0x0078, 0x403c, 0xa0e0, 0x4f40, 0x6004, 0xa084, 0x000a, 0x00c0, + 0x4089, 0x6108, 0xa194, 0xff00, 0x0040, 0x4089, 0xa18c, 0x00ff, + 0x2001, 0x000a, 0xa106, 0x0040, 0x4068, 0x2001, 0x000c, 0xa106, + 0x0040, 0x406c, 0x2001, 0x0012, 0xa106, 0x0040, 0x4070, 0x2001, + 0x0014, 0xa106, 0x0040, 0x4074, 0x2001, 0x0019, 0xa106, 0x0040, + 0x4078, 0x2001, 0x0032, 0xa106, 0x0040, 0x407c, 0x0078, 0x4080, + 0x2009, 0x000c, 0x0078, 0x4082, 0x2009, 0x0012, 0x0078, 0x4082, + 0x2009, 0x0014, 0x0078, 0x4082, 0x2009, 0x0019, 0x0078, 0x4082, + 0x2009, 0x0020, 0x0078, 0x4082, 0x2009, 0x003f, 0x0078, 0x4082, + 0x2011, 0x0000, 0x2100, 0xa205, 0x600a, 0x6004, 0xa085, 0x0002, + 0x6006, 0x0c7f, 0x007c, 0x781b, 0x0076, 0x007c, 0x781b, 0x0075, + 0x007c, 0x781b, 0x0064, 0x007c, 0x781b, 0x0061, 0x007c, 0x2009, + 0x4a19, 0x210c, 0xa186, 0x0000, 0x0040, 0x40a9, 0xa186, 0x0001, + 0x0040, 0x40ac, 0x701f, 0x000b, 0x7067, 0x0001, 0x781b, 0x0047, + 0x007c, 0x781b, 0x00e6, 0x007c, 0x701f, 0x000a, 0x007c, 0x2009, + 0x4a19, 0x210c, 0xa186, 0x0000, 0x0040, 0x40c4, 0xa186, 0x0001, + 0x0040, 0x40c1, 0x701f, 0x000b, 0x7067, 0x0001, 0x781b, 0x0047, + 0x007c, 0x701f, 0x000a, 0x007c, 0x781b, 0x00e5, 0x007c, 0x781b, + 0x00ef, 0x007c, 0x781b, 0x00ee, 0x007c, 0x781b, 0x00c0, 0x007c, + 0x781b, 0x00bf, 0x007c, 0x6818, 0xd0fc, 0x0040, 0x40d9, 0x681b, + 0x001d, 0x7067, 0x0001, 0x781b, 0x0047, 0x007c, 0x7830, 0xa084, + 0x00c0, 0x00c0, 0x40f2, 0x7808, 0xc08c, 0x780a, 0x0005, 0x0005, + 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, 0x40f2, 0x7808, + 0xc08d, 0x780a, 0x007c, 0x7808, 0xc08d, 0x780a, 0x007c, 0x7830, + 0xa084, 0x0040, 0x00c0, 0x40f7, 0x2001, 0x4a04, 0x2004, 0xd0ec, + 0x0040, 0x4106, 0xb284, 0x0300, 0x0078, 0x4108, 0xb284, 0x0400, + 0x0040, 0x410e, 0x0098, 0x4112, 0x0078, 0x4110, 0x00a8, 0x4112, + 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, + 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, 0x4135, 0x007e, + 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x412b, 0xb284, + 0x0300, 0x0078, 0x412d, 0xb284, 0x0400, 0x0040, 0x4133, 0x0098, + 0x412f, 0x0078, 0x4135, 0x00a8, 0x4133, 0x78ac, 0x007e, 0x7808, + 0xa085, 0x0002, 0x780a, 0x007f, 0x007c, 0xa784, 0x0001, 0x00c0, + 0x35e0, 0xa784, 0x0070, 0x0040, 0x414d, 0x0c7e, 0x2d60, 0x2f68, + 0x1078, 0x285f, 0x2d78, 0x2c68, 0x0c7f, 0xa784, 0x0008, 0x0040, + 0x415a, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2924, + 0x0078, 0x408b, 0xa784, 0x0004, 0x0040, 0x4189, 0x78b8, 0xa084, + 0x4001, 0x0040, 0x4189, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, + 0x0040, 0x2924, 0x78e4, 0xa084, 0x0007, 0xa086, 0x0001, 0x00c0, + 0x4189, 0x78c0, 0xa685, 0x4800, 0x2030, 0x7e5a, 0x781b, 0x00ef, + 0x007c, 0x784b, 0x0008, 0x6818, 0xd0fc, 0x0040, 0x4186, 0x681b, + 0x0015, 0xd6f4, 0x0040, 0x4186, 0x681b, 0x0007, 0x1078, 0x4097, + 0x007c, 0x681b, 0x0003, 0x7858, 0xa084, 0x3f00, 0x681e, 0x682f, + 0x0000, 0x6833, 0x0000, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, + 0x0040, 0x2f62, 0x007e, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x007f, + 0x0040, 0x41a6, 0xb284, 0x0300, 0x0078, 0x41a8, 0xb284, 0x0400, + 0x0040, 0x41ae, 0x0018, 0x2920, 0x0078, 0x41b0, 0x0028, 0x2920, + 0x0078, 0x3e64, 0x6b14, 0x8307, 0xa084, 0x000f, 0x8003, 0x8003, + 0x8003, 0xd3fc, 0x0040, 0x41c0, 0xa080, 0x4f40, 0x0078, 0x41c2, + 0xa080, 0x4ec0, 0x2060, 0x2048, 0x705a, 0x2a60, 0x007c, 0x0020, + 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, + 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, + 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, + 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, + 0x0020, 0x0062, 0x0009, 0x0014, 0x0014, 0x9848, 0x0014, 0x0014, + 0x9905, 0x98f3, 0x0014, 0x0014, 0x0080, 0x00f0, 0x0100, 0x0402, + 0x2008, 0xf880, 0x0018, 0xa20a, 0x0014, 0x300b, 0xa20c, 0x0014, + 0x2500, 0x0013, 0x2500, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0xa200, 0x3806, 0x8839, 0x20c4, 0x0864, 0xa850, 0x3008, + 0x28c1, 0x9d0c, 0xa201, 0x300c, 0x2847, 0x8161, 0x846a, 0x8000, + 0x84a4, 0x1856, 0x883a, 0xa808, 0x28e2, 0x9cc2, 0xa8f3, 0x0864, + 0xa83e, 0x300c, 0xa801, 0x3008, 0x28e1, 0x9cc2, 0x2021, 0xa81b, + 0xa205, 0x870c, 0xd8de, 0x64a0, 0x6de0, 0x6fc0, 0x63a4, 0x6c80, + 0x0212, 0xa205, 0x883d, 0x9d24, 0x882b, 0x1814, 0x883b, 0x9d2a, + 0x883b, 0x7027, 0x85f2, 0xa737, 0xa532, 0xf003, 0x8576, 0x8677, + 0xa812, 0x883e, 0xa810, 0x280c, 0xa204, 0x64c0, 0x6de0, 0x67a0, + 0x6fc0, 0x9d24, 0x1814, 0x9d2a, 0x883b, 0x7023, 0x8576, 0x8677, + 0xa802, 0x7861, 0x883e, 0x206b, 0x28c1, 0x9d0c, 0x2044, 0x2103, + 0x20a2, 0x2081, 0xa8c9, 0xa207, 0x2901, 0xa80a, 0x0014, 0xa203, + 0x8000, 0x85a4, 0x1872, 0x879a, 0x883c, 0x1fe2, 0xf601, 0xa208, + 0x856e, 0x866f, 0x7161, 0x0014, 0x0704, 0x3008, 0x9cc2, 0x0014, + 0xa202, 0x8000, 0x85a4, 0x3009, 0x84a8, 0x19e2, 0xf844, 0x856e, + 0x883f, 0x08e6, 0xa8f5, 0xf861, 0xa8ea, 0xf801, 0x0014, 0xf881, + 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfaa2, 0x1de2, 0x0014, 0x8532, + 0xf221, 0x0014, 0x1de2, 0x84a8, 0xd6e0, 0x1fe6, 0x0014, 0x8000, + 0x284a, 0x1011, 0xa8fc, 0x3008, 0x9d24, 0x8000, 0xa000, 0x2802, + 0x1011, 0xa8fd, 0x9d2a, 0xa888, 0x3008, 0x9d24, 0x283b, 0x1011, + 0xa8fd, 0xa209, 0x0017, 0x300c, 0x8000, 0x85a4, 0x1de2, 0xdac1, + 0x0014, 0x0210, 0xa801, 0x0014, 0x26e0, 0x873a, 0xfaa3, 0x19f2, + 0x26e0, 0x18f2, 0x0014, 0xa20b, 0x0014, 0xa20d, 0x3806, 0x0210, + 0x9d16, 0x0704, 0xa206, 0x6865, 0x817e, 0x842a, 0x1dc1, 0x8823, + 0x0016, 0x6042, 0x8008, 0xa8fa, 0x8000, 0x84a4, 0x8160, 0x842a, + 0xf021, 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d4, + 0x8822, 0x0016, 0x7944, 0x8421, 0xa020, 0xa532, 0x84a1, 0x0016, + 0x7944, 0x8421, 0xa0df, 0x9532, 0x84a1, 0x0016, 0x0000, 0x127e, + 0x70d4, 0xa084, 0x4600, 0x8004, 0x2090, 0x7204, 0x7008, 0xc09c, + 0xa205, 0x00c0, 0x4303, 0x720c, 0x82ff, 0x0040, 0x42fe, 0x8aff, + 0x00c0, 0x4303, 0x7200, 0xd284, 0x00c0, 0x4303, 0x7003, 0x0008, + 0x127f, 0x2000, 0x007c, 0x7000, 0xa084, 0x0003, 0x7002, 0xc69c, + 0xd084, 0x0040, 0x4336, 0x2001, 0x4a05, 0xd0ec, 0x00c0, 0x4367, + 0x2001, 0x4a04, 0xd0ec, 0x0040, 0x431c, 0x2001, 0x04fd, 0x2004, + 0xa086, 0x0003, 0x0040, 0x4367, 0x0e7e, 0x2071, 0x0010, 0x2009, + 0x0007, 0x7008, 0xa084, 0x3000, 0x00c0, 0x431f, 0x8109, 0x00c0, + 0x4321, 0x0e7f, 0x2009, 0x0007, 0x7008, 0xa084, 0x3000, 0x00c0, + 0x431c, 0x8109, 0x00c0, 0x432c, 0x0078, 0x4367, 0x7108, 0xd1fc, + 0x0040, 0x4341, 0x1078, 0x447c, 0x8aff, 0x0040, 0x42ed, 0x0078, + 0x4336, 0x700c, 0xa08c, 0x03ff, 0x0040, 0x436c, 0x7004, 0xd084, + 0x0040, 0x435e, 0x7014, 0xa005, 0x00c0, 0x435a, 0x7010, 0x7310, + 0xa306, 0x00c0, 0x434e, 0x2300, 0xa005, 0x0040, 0x435e, 0xa102, + 0x00c8, 0x4336, 0x7007, 0x0010, 0x0078, 0x4367, 0x8aff, 0x0040, + 0x436c, 0x1078, 0x4663, 0x00c0, 0x4361, 0x0040, 0x4336, 0x1078, + 0x4405, 0x127f, 0x2000, 0x007c, 0x7204, 0x7108, 0xc19c, 0x8103, + 0x00c8, 0x437b, 0x1078, 0x447c, 0x0078, 0x436c, 0x7003, 0x0008, + 0x127f, 0x2000, 0x007c, 0xa205, 0x00c0, 0x4367, 0x7003, 0x0008, + 0x127f, 0x2000, 0x007c, 0x6428, 0x84ff, 0x0040, 0x43af, 0x2c70, + 0x7004, 0xa0bc, 0x000f, 0xa7b8, 0x43bf, 0x273c, 0x87fb, 0x00c0, + 0x439d, 0x0048, 0x4395, 0x1078, 0x28ca, 0x609c, 0xa075, 0x0040, + 0x43af, 0x0078, 0x4388, 0x2039, 0x43b4, 0x2704, 0xae68, 0x6808, + 0xa630, 0x680c, 0xa529, 0x8421, 0x0040, 0x43af, 0x8738, 0x2704, + 0xa005, 0x00c0, 0x439e, 0x709c, 0xa075, 0x00c0, 0x4388, 0x007c, + 0x0000, 0x0005, 0x0009, 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, + 0x0000, 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, + 0x43b4, 0x43b1, 0x0000, 0x0000, 0x8000, 0x0000, 0x43b4, 0x0000, + 0x43bc, 0x43b9, 0x0000, 0x0000, 0x0000, 0x0000, 0x43bc, 0x0000, + 0x43b7, 0x43b7, 0x0000, 0x0000, 0x8000, 0x0000, 0x43b7, 0x0000, + 0x43bd, 0x43bd, 0x0000, 0x0000, 0x0000, 0x0000, 0x43bd, 0x2079, + 0x4a00, 0x2071, 0x0010, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, + 0x0001, 0x7810, 0xd0ec, 0x0040, 0x43f3, 0x2009, 0x0001, 0x2071, + 0x0020, 0x0078, 0x43f7, 0x2009, 0x0002, 0x2071, 0x0050, 0x7007, + 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x8109, 0x0040, 0x4404, + 0x2071, 0x0020, 0x0078, 0x43f7, 0x007c, 0x7004, 0x8004, 0x00c8, + 0x4468, 0x7007, 0x0012, 0x2019, 0x0000, 0x7108, 0x7008, 0xa106, + 0x00c0, 0x440d, 0xa184, 0x01e0, 0x0040, 0x4418, 0x1078, 0x28ca, + 0x7810, 0xd0ec, 0x0040, 0x4432, 0x2001, 0x04fd, 0x2004, 0xa086, + 0x0003, 0x00c0, 0x4436, 0xa184, 0x4000, 0x0040, 0x443a, 0xa382, + 0x0003, 0x00c8, 0x443a, 0xa184, 0x0004, 0x0040, 0x440d, 0x8318, + 0x0078, 0x440d, 0x7814, 0xd0ec, 0x00c0, 0x443a, 0xa184, 0x4000, + 0x00c0, 0x440d, 0xa19c, 0x300c, 0xa386, 0x2004, 0x0040, 0x4448, + 0xa386, 0x0008, 0x0040, 0x4453, 0xa386, 0x200c, 0x00c0, 0x440d, + 0x7200, 0x8204, 0x0048, 0x4453, 0x730c, 0xa384, 0x03ff, 0x0040, + 0x4453, 0x1078, 0x28ca, 0x7007, 0x0012, 0x7000, 0xd084, 0x00c0, + 0x4468, 0x7008, 0xa084, 0x01e0, 0x00c0, 0x4468, 0x7310, 0x7014, + 0xa305, 0x0040, 0x4468, 0x710c, 0xa184, 0x03ff, 0x00c0, 0x4405, + 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xd09c, 0x00c0, 0x446c, + 0x7007, 0x0012, 0x7108, 0x8103, 0x0048, 0x4470, 0x7003, 0x0008, + 0x007c, 0x7108, 0x0078, 0x447c, 0xa184, 0x01e0, 0x00c0, 0x44b0, + 0x7108, 0xa184, 0x01e0, 0x00c0, 0x44b0, 0xa184, 0x0007, 0x0079, + 0x4489, 0x4493, 0x44a3, 0x4491, 0x44a3, 0x4491, 0x44f5, 0x4491, + 0x44f3, 0x1078, 0x28ca, 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, + 0x8aff, 0x00c0, 0x449e, 0x2049, 0x0000, 0x007c, 0x1078, 0x4663, + 0x00c0, 0x449e, 0x007c, 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, + 0x8aff, 0x0040, 0x44af, 0x1078, 0x4663, 0x00c0, 0x44ab, 0x007c, + 0x7007, 0x0012, 0x7108, 0x00e0, 0x44b3, 0x2091, 0x6000, 0x00e0, + 0x44b7, 0x2091, 0x6000, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, + 0xd09c, 0x00c0, 0x44bf, 0x7007, 0x0012, 0x7108, 0xd1fc, 0x00c0, + 0x44c3, 0x7003, 0x0000, 0x7000, 0xa005, 0x00c0, 0x44d7, 0x7004, + 0xa005, 0x00c0, 0x44d7, 0x700c, 0xa005, 0x0040, 0x44d9, 0x0078, + 0x44bb, 0x2049, 0x0000, 0xb284, 0x0100, 0x0040, 0x44e3, 0x2001, + 0x0000, 0x0078, 0x44e5, 0x2001, 0x0001, 0x1078, 0x3fb7, 0x6818, + 0xa084, 0x8000, 0x0040, 0x44ee, 0x681b, 0x0002, 0x007c, 0x1078, + 0x28ca, 0x1078, 0x28ca, 0x1078, 0x4532, 0x7210, 0x7114, 0x700c, + 0xa09c, 0x03ff, 0x2800, 0xa300, 0xa211, 0xa189, 0x0000, 0x1078, + 0x4532, 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200, 0xa322, 0x630c, + 0x2100, 0xa31b, 0x2400, 0xa305, 0x0040, 0x4518, 0x00c8, 0x4518, + 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0078, 0x44ff, + 0x2b60, 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008, 0x0040, 0x4524, + 0xa7ba, 0x43b9, 0x0078, 0x4526, 0xa7ba, 0x43b1, 0x007f, 0xa73d, + 0x2c00, 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x7007, 0x0012, 0x1078, + 0x4405, 0x007c, 0x8a50, 0x8739, 0x2704, 0xa004, 0x00c0, 0x4546, + 0x6000, 0xa064, 0x00c0, 0x453d, 0x2d60, 0x6004, 0xa084, 0x000f, + 0xa080, 0x43cf, 0x203c, 0x87fb, 0x1040, 0x28ca, 0x007c, 0x127e, + 0x0d7e, 0x70d4, 0xa084, 0x4600, 0x8004, 0x2090, 0x0d7f, 0x6884, + 0x2060, 0x6888, 0x6b8c, 0x6c90, 0x8057, 0xaad4, 0x00ff, 0xa084, + 0x00ff, 0x007e, 0x6804, 0xa084, 0x0008, 0x007f, 0x0040, 0x4564, + 0xa0b8, 0x43b9, 0x0078, 0x4566, 0xa0b8, 0x43b1, 0xb284, 0x0100, + 0x0040, 0x456d, 0x7e20, 0x0078, 0x456e, 0x7e24, 0xa6b5, 0x000c, + 0x681c, 0xd0b4, 0x0040, 0x4575, 0xc685, 0x2400, 0xa305, 0x0040, + 0x459f, 0x2c58, 0x2704, 0x6104, 0xac60, 0x6000, 0xa400, 0x701a, + 0x6004, 0xa301, 0x701e, 0xa184, 0x0008, 0x0040, 0x458f, 0x6010, + 0xa081, 0x0000, 0x7022, 0x6014, 0xa081, 0x0000, 0x7026, 0x6208, + 0x2400, 0xa202, 0x7012, 0x620c, 0x2300, 0xa203, 0x7016, 0x7602, + 0x7007, 0x0001, 0x2b60, 0x1078, 0x4686, 0x0078, 0x45a1, 0x1078, + 0x4663, 0x00c0, 0x459f, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, + 0x70d4, 0xa084, 0x4600, 0x8004, 0x2090, 0x0d7f, 0x7007, 0x0004, + 0x7004, 0xd094, 0x00c0, 0x45b0, 0x7003, 0x0008, 0x127f, 0x2000, + 0x007c, 0x127e, 0x0d7e, 0x70d4, 0xa084, 0x4600, 0x8004, 0x2090, + 0x0d7f, 0x7e20, 0xd0c4, 0x00c0, 0x45c6, 0x7e24, 0xa6b5, 0x000c, + 0x681c, 0xd0ac, 0x00c0, 0x45d1, 0xc685, 0x7003, 0x0000, 0x7007, + 0x0004, 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, 0x000f, 0xa7b8, + 0x43bf, 0x273c, 0x87fb, 0x00c0, 0x45e7, 0x0048, 0x45e1, 0x1078, + 0x28ca, 0x689c, 0xa065, 0x0040, 0x45eb, 0x0078, 0x45d4, 0x1078, + 0x4663, 0x00c0, 0x45e7, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e, + 0x017e, 0x0d7e, 0x70d4, 0xa084, 0x4600, 0x8004, 0x2090, 0x7e20, + 0xd0c4, 0x00c0, 0x45fc, 0x7e24, 0x0d7f, 0x037f, 0x047f, 0xa6b5, + 0x000c, 0x681c, 0xd0b4, 0x0040, 0x460a, 0xc685, 0x7003, 0x0000, + 0x7007, 0x0004, 0x2049, 0x45ee, 0x6828, 0xa055, 0x0040, 0x4660, + 0x2d70, 0x2e60, 0x7004, 0xa0bc, 0x000f, 0xa7b8, 0x43bf, 0x273c, + 0x87fb, 0x00c0, 0x4626, 0x0048, 0x461f, 0x1078, 0x28ca, 0x709c, + 0xa075, 0x2060, 0x0040, 0x4660, 0x0078, 0x4612, 0x2704, 0xae68, + 0x6808, 0xa422, 0x680c, 0xa31b, 0x0048, 0x463f, 0x8a51, 0x00c0, + 0x4633, 0x1078, 0x28ca, 0x8738, 0x2704, 0xa005, 0x00c0, 0x4627, + 0x709c, 0xa075, 0x2060, 0x0040, 0x4660, 0x0078, 0x4612, 0x8422, + 0x8420, 0x831a, 0xa399, 0x0000, 0x6908, 0x2400, 0xa122, 0x690c, + 0x2300, 0xa11b, 0x00c8, 0x464e, 0x1078, 0x28ca, 0xb284, 0x0100, + 0x0040, 0x465c, 0x2001, 0x4a04, 0x2004, 0xd0ec, 0x00c0, 0x465c, + 0x2071, 0x0050, 0x0078, 0x465e, 0x2071, 0x0020, 0x0078, 0x4575, + 0x127f, 0x2000, 0x007c, 0x7008, 0xa084, 0x0003, 0xa086, 0x0003, + 0x00c0, 0x466b, 0x007c, 0x2704, 0xac78, 0x7800, 0x701a, 0x7804, + 0x701e, 0x7808, 0x7012, 0x780c, 0x7016, 0x6004, 0xa084, 0x0008, + 0x0040, 0x467e, 0x7810, 0x7022, 0x7814, 0x7026, 0x7602, 0x7004, + 0xa084, 0x0010, 0xc085, 0x7006, 0x2079, 0x4a00, 0x8a51, 0x0040, + 0x46a1, 0x8738, 0x2704, 0xa005, 0x00c0, 0x469c, 0x609c, 0xa005, + 0x0040, 0x46a2, 0x2060, 0x6004, 0xa084, 0x000f, 0xa080, 0x43bf, + 0x203c, 0x87fb, 0x1040, 0x28ca, 0x7008, 0xa084, 0x0003, 0xa086, + 0x0003, 0x007c, 0x2051, 0x0000, 0x007c, 0x127e, 0x007e, 0x0d7e, + 0x70d4, 0xa084, 0x4600, 0x8004, 0x2090, 0x0d7f, 0x087f, 0x7108, + 0xa184, 0x0003, 0x00c0, 0x46ba, 0x6828, 0xa005, 0x0040, 0x46ca, + 0x0078, 0x4303, 0x7108, 0xd1fc, 0x0040, 0x46c2, 0x1078, 0x447c, + 0x0078, 0x46af, 0x7007, 0x0010, 0x7108, 0xd1fc, 0x0040, 0x46c4, + 0x1078, 0x447c, 0x7008, 0xa086, 0x0008, 0x00c0, 0x46af, 0x7000, + 0xa005, 0x00c0, 0x46af, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, + 0x2000, 0x007c, 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e, + 0x70d4, 0xa084, 0x4600, 0x8004, 0x2090, 0x0d7f, 0x2049, 0x46da, + 0xad80, 0x0011, 0x20a0, 0xb284, 0x0100, 0x0040, 0x46fd, 0x2001, + 0x4a04, 0x2004, 0xd0ec, 0x0040, 0x46f9, 0x2099, 0x0031, 0x0078, + 0x46ff, 0x2099, 0x0032, 0x0078, 0x46ff, 0x2099, 0x0031, 0x700c, + 0xa084, 0x03ff, 0x682a, 0x7007, 0x0008, 0x7007, 0x0002, 0x7003, + 0x0001, 0x0040, 0x470e, 0x8000, 0x80ac, 0x53a5, 0x700c, 0xa084, + 0x03ff, 0x0040, 0x471a, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, + 0x00c0, 0x4715, 0x0c7f, 0x2049, 0x0000, 0x7003, 0x0000, 0x157f, + 0x137f, 0x147f, 0x127f, 0x2000, 0x007c, 0x2091, 0x8000, 0x2091, + 0x6000, 0x78ac, 0xa005, 0x00c0, 0x473c, 0x7974, 0x70d0, 0xa106, + 0x00c0, 0x473c, 0x781c, 0xa005, 0x0040, 0x473c, 0x781f, 0x0000, + 0x0068, 0x473c, 0x2091, 0x4080, 0x7830, 0x8001, 0x7832, 0x00c0, + 0x47be, 0x7834, 0x7832, 0x7810, 0xd0ec, 0x00c0, 0x47b7, 0x2061, + 0x6fc0, 0x2069, 0x4a80, 0xc7fd, 0x68d0, 0xa005, 0x0040, 0x4756, + 0x8001, 0x68d2, 0x00c0, 0x4756, 0x1078, 0x4954, 0x6800, 0xa084, + 0x000f, 0x0040, 0x476b, 0xa086, 0x0001, 0x0040, 0x476b, 0x6844, + 0xa00d, 0x0040, 0x476b, 0x2104, 0xa005, 0x0040, 0x476b, 0x8001, + 0x200a, 0x0040, 0x48c5, 0x6814, 0xa005, 0x0040, 0x478a, 0x8001, + 0x6816, 0x00c0, 0x478a, 0x68a7, 0x0001, 0x0f7e, 0xd7fc, 0x00c0, + 0x4785, 0x7810, 0xd0ec, 0x0040, 0x4781, 0x2079, 0x0100, 0x0078, + 0x4787, 0x2079, 0x0200, 0x0078, 0x4787, 0x2079, 0x0100, 0x1078, + 0x40f3, 0x0f7f, 0x6880, 0xa005, 0x0040, 0x4797, 0x8001, 0x6882, + 0x00c0, 0x4797, 0x6867, 0x0000, 0x68d4, 0xc0dd, 0x68d6, 0x68d4, + 0xd0fc, 0x0040, 0x47b4, 0xc0fc, 0x68d6, 0x20a9, 0x0200, 0x603c, + 0xa005, 0x0040, 0x47b0, 0x8001, 0x603e, 0x68d4, 0xc0fd, 0x68d6, + 0x00c0, 0x47b0, 0x6010, 0xa005, 0x0040, 0x47b0, 0x1078, 0x25bc, + 0xace0, 0x0010, 0x00f0, 0x479f, 0xd7fc, 0x0040, 0x47be, 0x2061, + 0x4fc0, 0x2069, 0x4a40, 0xc7fc, 0x0078, 0x474c, 0x1078, 0x47fc, + 0x7838, 0x8001, 0x783a, 0x00c0, 0x47e0, 0x783c, 0x783a, 0x2061, + 0x4fc0, 0x2069, 0x4a40, 0xc7fc, 0x680c, 0xa005, 0x0040, 0x47d2, + 0x1078, 0x483b, 0xd7fc, 0x00c0, 0x47e0, 0x7810, 0xd0ec, 0x00c0, + 0x47e0, 0x2061, 0x6fc0, 0x2069, 0x4a80, 0xc7fd, 0x0078, 0x47cc, + 0x7814, 0xd0e4, 0x00c0, 0x47e6, 0x1078, 0x496a, 0x7810, 0xd0cc, + 0x0040, 0x47f9, 0xd0ac, 0x00c0, 0x47f2, 0xd0a4, 0x0040, 0x47f9, + 0xc0ad, 0x7812, 0x2091, 0x8001, 0x0068, 0x47f8, 0x1078, 0x2346, + 0x007c, 0x2091, 0x8001, 0x007c, 0x7840, 0x8001, 0x7842, 0x00c0, + 0x483a, 0x7844, 0x7842, 0x2091, 0x8000, 0x2061, 0x4fc0, 0x2069, + 0x4a40, 0xc7fc, 0x6810, 0xa005, 0x00c0, 0x4810, 0x2001, 0x0101, + 0x8001, 0x6812, 0xd7fc, 0x0040, 0x4819, 0xa080, 0x90d0, 0x0078, + 0x481b, 0xa080, 0x8fc0, 0x2040, 0x2004, 0xa065, 0x0040, 0x482c, + 0x6024, 0xa005, 0x0040, 0x4828, 0x8001, 0x6026, 0x0040, 0x4869, + 0x6000, 0x2c40, 0x0078, 0x481d, 0xd7fc, 0x00c0, 0x483a, 0x7810, + 0xd0ec, 0x00c0, 0x483a, 0x2061, 0x6fc0, 0x2069, 0x4a80, 0xc7fd, + 0x0078, 0x480a, 0x007c, 0x2009, 0x0000, 0x20a9, 0x0200, 0x6008, + 0xd09c, 0x0040, 0x4855, 0x6024, 0xa005, 0x0040, 0x484b, 0x8001, + 0x6026, 0x0078, 0x4853, 0x6008, 0xc09c, 0xc0bd, 0x600a, 0xa18d, + 0x0001, 0x0078, 0x4855, 0xa18d, 0x0100, 0xace0, 0x0010, 0x00f0, + 0x483f, 0xa184, 0x0001, 0x0040, 0x4864, 0xa18c, 0xfffe, 0x690e, + 0x1078, 0x25bc, 0x0078, 0x4865, 0x690e, 0x007c, 0x00c0, 0x4865, + 0x786c, 0x6800, 0xa005, 0x0040, 0x4871, 0x684c, 0xac06, 0x0040, + 0x48c5, 0x6864, 0xa005, 0x0040, 0x4879, 0x6027, 0x0001, 0x0078, + 0x48c2, 0x2c00, 0x687e, 0x601b, 0x0006, 0x60b4, 0xa084, 0x3f00, + 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0060, 0x6022, 0x6000, + 0x2042, 0x6714, 0x6f76, 0x1078, 0x1de0, 0x6818, 0xa005, 0x0040, + 0x4893, 0x8001, 0x681a, 0x6808, 0xc0a4, 0x680a, 0x6810, 0x7908, + 0x8109, 0x790a, 0x8001, 0x00d0, 0x489f, 0x1078, 0x28ca, 0x6812, + 0x00c0, 0x48a5, 0x7910, 0xc1a5, 0x7912, 0x602f, 0x0000, 0x6033, + 0x0000, 0x2c68, 0x1078, 0x2008, 0xd7fc, 0x00c0, 0x48b3, 0x2069, + 0x4a40, 0x0078, 0x48b5, 0x2069, 0x4a80, 0x6910, 0xa184, 0x0100, + 0x2001, 0x0006, 0x00c0, 0x48bf, 0x697a, 0x2001, 0x0004, 0x2708, + 0x1078, 0x25af, 0x2091, 0x8001, 0x007c, 0x0d7e, 0x694c, 0x2160, + 0xd7fc, 0x00c0, 0x48d7, 0x7810, 0xd0ec, 0x0040, 0x48d3, 0x2069, + 0x0100, 0x0078, 0x48d9, 0x2069, 0x0200, 0x0078, 0x48d9, 0x2069, + 0x0100, 0x1078, 0x285f, 0x601b, 0x0006, 0x6858, 0xa084, 0x3f00, + 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0048, 0x6022, 0x602f, + 0x0000, 0x6033, 0x0000, 0x6830, 0xd0b4, 0x0040, 0x4907, 0x684b, + 0x0004, 0x20a9, 0x0014, 0x6848, 0xd094, 0x0040, 0x48f9, 0x00f0, + 0x48f3, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xd084, 0x0040, + 0x4903, 0x00f0, 0x48fd, 0x20a9, 0x00fa, 0x00f0, 0x4905, 0x6808, + 0xa084, 0xfffd, 0x680a, 0x681b, 0x0047, 0x0d7f, 0x6867, 0x0007, + 0x2091, 0x8001, 0x007c, 0x2079, 0x4a00, 0x1078, 0x4947, 0x1078, + 0x492d, 0x1078, 0x493a, 0x2009, 0x0002, 0x2069, 0x4a80, 0x680f, + 0x0000, 0x6813, 0x0000, 0x6817, 0x0000, 0x8109, 0x0040, 0x492c, + 0x2069, 0x4a40, 0x0078, 0x491f, 0x007c, 0x7810, 0xd0ec, 0x0040, + 0x4935, 0x2019, 0x00cc, 0x0078, 0x4937, 0x2019, 0x007b, 0x7b3a, + 0x7b3e, 0x007c, 0x7814, 0xd0e4, 0x00c0, 0x4942, 0x2019, 0x0040, + 0x0078, 0x4944, 0x2019, 0x0026, 0x7b42, 0x7b46, 0x007c, 0x7814, + 0xd0e4, 0x00c0, 0x494f, 0x2019, 0x3f94, 0x0078, 0x4951, 0x2019, + 0x2624, 0x7b32, 0x7b36, 0x007c, 0x6950, 0xa185, 0x0000, 0x0040, + 0x4969, 0x0c7e, 0x6ac0, 0x2264, 0x602b, 0x0000, 0x602f, 0x0000, + 0x6008, 0xc0b5, 0x600a, 0x8210, 0x8109, 0x00c0, 0x495b, 0x6952, + 0x0c7f, 0x007c, 0x0d7e, 0x0e7e, 0xd0ec, 0x0040, 0x49a1, 0x78e0, + 0xa005, 0x0040, 0x4987, 0x2010, 0x2071, 0x0200, 0x70ec, 0xa084, + 0x1c00, 0x79e4, 0xa106, 0x00c0, 0x4984, 0x8211, 0x00c0, 0x4986, + 0x2069, 0x4a40, 0x1078, 0x49bd, 0x2011, 0x0000, 0x6ae2, 0x78e8, + 0xa005, 0x0040, 0x49ba, 0x2010, 0x2071, 0x0100, 0x70ec, 0xa084, + 0x1c00, 0x79ec, 0xa106, 0x00c0, 0x499c, 0x8211, 0x00c0, 0x499e, + 0x2069, 0x4a80, 0x1078, 0x49bd, 0x2011, 0x0000, 0x6aea, 0x0078, + 0x49ba, 0x2069, 0x4a00, 0x2071, 0x0100, 0x68e0, 0xa015, 0x0040, + 0x49ba, 0x70ec, 0xa084, 0x1c00, 0x69e4, 0xa106, 0x00c0, 0x49b7, + 0x8211, 0x00c0, 0x49b9, 0x2069, 0x4a40, 0x1078, 0x49bd, 0x2011, + 0x0000, 0x6ae2, 0x0e7f, 0x0d7f, 0x007c, 0x70ec, 0xd0dc, 0x00c0, + 0x49c6, 0xd0d4, 0x0040, 0x49e5, 0x0078, 0x49e8, 0x7810, 0xd0ec, + 0x0040, 0x49d1, 0xc0f5, 0x7812, 0xd0ec, 0x0040, 0x49ee, 0x0078, + 0x49ea, 0xae8e, 0x0100, 0x0040, 0x49dd, 0x7814, 0xc0f5, 0x7816, + 0xd0d4, 0x00c0, 0x49ee, 0x0078, 0x49ea, 0x7814, 0xc0fd, 0x7816, + 0xd0d4, 0x00c0, 0x49ee, 0x0078, 0x49ea, 0xd0e4, 0x0040, 0x49f0, + 0x70a0, 0x70a2, 0x7804, 0xd08c, 0x0040, 0x49f0, 0x681f, 0x000c, + 0x007c, 0x5a88 +}; +#define ISP1080_CODE_LENGTH 0x39f2 +#endif /* ISP_DISABLE_1080_SUPPORT */ + +#ifndef ISP_DISABLE_2100_SUPPORT /* * We now only support 1.15.07 version F/W with some various flavors * @@ -14717,3 +16613,4 @@ static const u_int16_t ISP2100_RISC_CODE[] = { }; #define ISP2100_CODE_LENGTH 0x669c #endif +#endif /* ISP_DISABLE_2100_SUPPORT */ diff --git a/sys/dev/isp/asm_sbus.h b/sys/dev/isp/asm_sbus.h index ab5f85b..25f3683 100644 --- a/sys/dev/isp/asm_sbus.h +++ b/sys/dev/isp/asm_sbus.h @@ -1,5 +1,5 @@ -/* $Id: asm_sbus.h,v 1.4 1999/01/30 07:22:29 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: asm_sbus.h,v 1.5 1999/02/09 01:05:41 mjacob Exp $ */ +/* release_03_16_99 */ /* * SBus Qlogic Host Adapter Firmware Tables * Copyright (c) 1996, 1997, 1998 by Qlogic Corporation diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 555d11e..769d296 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -1,5 +1,5 @@ -/* $Id: isp.c,v 1.12 1999/01/30 07:28:59 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: isp.c,v 1.13 1999/02/09 01:07:06 mjacob Exp $ */ +/* release_03_16_99 */ /* * Machine and OS Independent (well, as best as possible) * code for the Qlogic ISP SCSI adapters. @@ -51,6 +51,9 @@ #ifdef __FreeBSD__ #include <dev/isp/isp_freebsd.h> #endif +#ifdef __OpenBSD__ +#include <dev/ic/isp_openbsd.h> +#endif #ifdef __linux__ #include "isp_linux.h" #endif @@ -74,9 +77,13 @@ static const char tgtiqd[36] = { # ifdef __FreeBSD__ 0x46, 0x52, 0x45, 0x45, 0x42, 0x52, 0x44, 0x20, # else -# ifdef linux - 0x4C, 0x49, 0x4E, 0x55, 0x58, 0x20, 0x20, 0x20, +# ifdef __OpenBSD__ + 0x4F, 0x50, 0x45, 0x4E, 0x42, 0x52, 0x44, 0x20, # else +# ifdef linux + 0x4C, 0x49, 0x4E, 0x55, 0x58, 0x20, 0x20, 0x20, +# else +# endif # endif # endif #endif @@ -102,12 +109,14 @@ static void isp_handle_ctio2 __P((struct ispsoftc *, void *)); #endif static void isp_parse_status __P((struct ispsoftc *, ispstatusreq_t *, ISP_SCSI_XFER_T *)); +static void isp_fastpost_complete __P((struct ispsoftc *, int)); static void isp_fibre_init __P((struct ispsoftc *)); +static void isp_mark_getpdb_all __P((struct ispsoftc *)); +static int isp_getpdb __P((struct ispsoftc *, int, isp_pdb_t *)); +static int isp_fclink_test __P((struct ispsoftc *)); static void isp_fw_state __P((struct ispsoftc *)); static void isp_dumpregs __P((struct ispsoftc *, const char *)); static void isp_dumpxflist __P((struct ispsoftc *)); -static void isp_prtstst __P((ispstatusreq_t *)); -static char *isp2100_fw_statename __P((int)); static void isp_mboxcmd __P((struct ispsoftc *, mbreg_t *)); static void isp_update __P((struct ispsoftc *)); @@ -126,7 +135,6 @@ void isp_reset(isp) struct ispsoftc *isp; { - static char once = 1; mbreg_t mbs; int loops, i, dodnld = 1; char *revname; @@ -153,12 +161,11 @@ isp_reset(isp) * case, we don't really use this yet, but we may in * the future. */ - if (once == 1) { + if (isp->isp_used == 0) { /* * Just in case it was paused... */ ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE); - once = 0; mbs.param[0] = MBOX_ABOUT_FIRMWARE; isp_mboxcmd(isp, &mbs); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { @@ -171,6 +178,7 @@ isp_reset(isp) isp->isp_romfw_rev = (((u_int16_t) mbs.param[1]) << 10) + mbs.param[2]; } + isp->isp_used = 1; } /* @@ -178,8 +186,14 @@ isp_reset(isp) */ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); - if (isp->isp_type & ISP_HA_FC) { + if (IS_FC(isp)) { revname = "2100"; + } else if (IS_1080(isp)) { + sdparam *sdp = isp->isp_param; + revname = "1080"; + sdp->isp_clock = 0; /* don't set clock */ + sdp->isp_diffmode = 1; + sdp->isp_ultramode = 1; } else { sdparam *sdp = isp->isp_param; i = ISP_READ(isp, BIU_CONF0) & BIU_CONF0_HW_MASK; @@ -223,9 +237,6 @@ isp_reset(isp) * Now, while we're at it, gather info about ultra * and/or differential mode. */ - if (isp->isp_bustype != ISP_BT_SBUS) { - ISP_SETBITS(isp, BIU_CONF1, BIU_PCI_CONF1_SXP); - } if (ISP_READ(isp, SXP_PINS_DIFF) & SXP_PINS_DIFF_MODE) { PRINTF("%s: Differential Mode\n", isp->isp_name); sdp->isp_diffmode = 1; @@ -238,16 +249,19 @@ isp_reset(isp) } else { i &= RISC_PSR_PCI_ULTRA; } - if (isp->isp_bustype != ISP_BT_SBUS) { - ISP_CLRBITS(isp, BIU_CONF1, BIU_PCI_CONF1_SXP); - } if (i != 0) { PRINTF("%s: Ultra Mode Capable\n", isp->isp_name); sdp->isp_ultramode = 1; + /* + * If we're in Ultra Mode, we have to be 60Mhz clock- + * even for the SBus version. + */ sdp->isp_clock = 60; } else { sdp->isp_ultramode = 0; - sdp->isp_clock = 40; + /* + * Clock is known. Gronk. + */ } /* @@ -274,13 +288,21 @@ again: * and give the ISP a chance to recover. */ - if (isp->isp_type & ISP_HA_SCSI) { + if (IS_SCSI(isp)) { ISP_WRITE(isp, BIU_ICR, BIU_ICR_SOFT_RESET); /* * A slight delay... */ SYS_DELAY(100); +#if 0 + PRINTF("%s: mbox0-5: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", + isp->isp_name, ISP_READ(isp, OUTMAILBOX0), + ISP_READ(isp, OUTMAILBOX1), ISP_READ(isp, OUTMAILBOX2), + ISP_READ(isp, OUTMAILBOX3), ISP_READ(isp, OUTMAILBOX4), + ISP_READ(isp, OUTMAILBOX5)); +#endif + /* * Clear data && control DMA engines. */ @@ -288,6 +310,8 @@ again: DMA_CNTRL_CLEAR_CHAN | DMA_CNTRL_RESET_INT); ISP_WRITE(isp, DDMA_CONTROL, DMA_CNTRL_CLEAR_CHAN | DMA_CNTRL_RESET_INT); + + } else { ISP_WRITE(isp, BIU2100_CSR, BIU2100_SOFT_RESET); /* @@ -330,7 +354,7 @@ again: * for SCSI adapters and other settings for the 2100. */ - if (isp->isp_type & ISP_HA_SCSI) { + if (IS_SCSI(isp)) { ISP_WRITE(isp, BIU_CONF1, 0); } else { ISP_WRITE(isp, BIU2100_CSR, 0); @@ -347,7 +371,7 @@ again: * (only for the 1XX0 boards). This really should * be done later after fetching from NVRAM. */ - if (isp->isp_type & ISP_HA_SCSI) { + if (IS_SCSI(isp)) { u_int16_t tmp = isp->isp_mdvec->dv_conf1; /* * Busted FIFO. Turn off all but burst enables. @@ -560,11 +584,18 @@ isp_init(isp) isp_setdfltparm(isp); /* + * Set up DMA for the request and result mailboxes. + */ + if (ISP_MBOXDMASETUP(isp) != 0) { + PRINTF("%s: can't setup dma mailboxes\n", isp->isp_name); + return; + } + + /* * If we're fibre, we have a completely different * initialization method. */ - - if (isp->isp_type & ISP_HA_FC) { + if (IS_FC(isp)) { isp_fibre_init(isp); return; } @@ -712,14 +743,6 @@ isp_init(isp) sdp->isp_devparam[tgt].dev_announced = 0; } - /* - * Set up DMA for the request and result mailboxes. - */ - if (ISP_MBOXDMASETUP(isp) != 0) { - PRINTF("%s: can't setup dma mailboxes\n", isp->isp_name); - return; - } - mbs.param[0] = MBOX_INIT_RES_QUEUE; mbs.param[1] = RESULT_QUEUE_LEN; mbs.param[2] = (u_int16_t) (isp->isp_result_dma >> 16); @@ -797,14 +820,9 @@ isp_fibre_init(isp) isp_icb_t *icbp; mbreg_t mbs; int count, loopid; - u_int8_t lwfs; fcp = isp->isp_param; - if (ISP_MBOXDMASETUP(isp) != 0) { - PRINTF("%s: can't setup DMA for mailboxes\n", isp->isp_name); - return; - } /* * For systems that don't have BIOS methods for which * we can easily change the NVRAM based loopid, we'll @@ -847,10 +865,7 @@ isp_fibre_init(isp) #ifdef CHECKME fcp->isp_fwoptions |= ICBOPT_USE_PORTNAME; #endif -#ifdef THIS_WORKED - /* - * This has unhappiness in target mode - */ +#ifdef ISP2100_FABRIC fcp->isp_fwoptions |= ICBOPT_FULL_LOGIN; #endif @@ -882,6 +897,7 @@ isp_fibre_init(isp) (u_int16_t) (isp->isp_result_dma & 0xffff); icbp->icb_respaddr[RQRSP_ADDR1631] = (u_int16_t) (isp->isp_result_dma >> 16); + MemoryBarrier(); for (count = 0; count < 10; count++) { mbs.param[0] = MBOX_INIT_FIRMWARE; @@ -899,11 +915,13 @@ isp_fibre_init(isp) case MBOX_COMMAND_COMPLETE: count = 10; break; + case ASYNC_PDB_CHANGED: + isp_mark_getpdb_all(isp); + /* FALL THROUGH */ case ASYNC_LIP_OCCURRED: case ASYNC_LOOP_UP: case ASYNC_LOOP_DOWN: case ASYNC_LOOP_RESET: - case ASYNC_PDB_CHANGED: case ASYNC_CHANGE_NOTIFY: if (count > 9) { PRINTF("%s: too many retries to get going- " @@ -918,12 +936,118 @@ isp_fibre_init(isp) } isp->isp_reqidx = isp->isp_reqodx = 0; isp->isp_residx = 0; + isp->isp_sendmarker = 1; + + /* + * Whatever happens, we're now committed to being here. + */ + isp->isp_state = ISP_INITSTATE; + fcp->isp_fwstate = FW_CONFIG_WAIT; + +#ifdef ISP_TARGET_MODE + if (isp_modify_lun(isp, 0, 1, 1)) { + PRINTF("%s: failed to enable target mode\n", isp->isp_name); + } +#endif +} + +/* + * Fibre Channel Support- get the port database for the id. + * + * Locks are held before coming here. Return 0 if success, + * else failure. + */ + +static void +isp_mark_getpdb_all(isp) + struct ispsoftc *isp; +{ + isp_pdb_t *p; + fcparam *fcp = (fcparam *) isp->isp_param; + for (p = &fcp->isp_pdb[0]; p < &fcp->isp_pdb[MAX_FC_TARG]; p++) { + p->pdb_options = INVALID_PDB_OPTIONS; + } +} + +static int +isp_getpdb(isp, id, pdbp) + struct ispsoftc *isp; + int id; + isp_pdb_t *pdbp; +{ +#ifdef GETPDB_WORKING_YET + fcparam *fcp = (fcparam *) isp->isp_param; + mbreg_t mbs; + + /* + * Get Port Queue Parameters first- this is + * a Q&D way to see whether we're logged into + * this port. + */ + mbs.param[0] = MBOX_GET_DEV_QUEUE_PARAMS; + mbs.param[1] = id << 8; + mbs.param[2] = 0; +#ifdef ISP2100_SCCLUN + mbs.param[3] = 0; +#endif + isp_mboxcmd(isp, &mbs); + if (mbs.param[0] != MBOX_COMMAND_COMPLETE) + return (-1); + + mbs.param[0] = MBOX_GET_PORT_DB; + mbs.param[1] = id << 8; + mbs.param[2] = (u_int16_t) (fcp->isp_scdma >> 16); + mbs.param[3] = (u_int16_t) (fcp->isp_scdma & 0xffff); + mbs.param[4] = 0; + mbs.param[5] = 0; + mbs.param[6] = 0; + mbs.param[7] = 0; + isp_mboxcmd(isp, &mbs); + switch (mbs.param[0]) { + case MBOX_COMMAND_COMPLETE: + MemoryBarrier(); + MEMCPY(pdbp, fcp->isp_scratch, sizeof (isp_pdb_t)); + break; + case MBOX_HOST_INTERFACE_ERROR: + PRINTF("%s: DMA error getting port database\n", isp->isp_name); + return (-1); + case MBOX_COMMAND_PARAM_ERROR: + /* Not Logged In */ + IDPRINTF(3, ("%s: Comand Param Error on Get Port Database\n", + isp->isp_name)); + return (-1); + default: + PRINTF("%s: error 0x%x getting port database for ID %d\n", + isp->isp_name, mbs.param[0], id); + return (-1); + } +#else + pdbp->pdb_options = 1; +#endif + return (0); +} + +/* + * Make sure we have good FC link and know our Loop ID. + */ + +static int +isp_fclink_test(isp) + struct ispsoftc *isp; +{ + mbreg_t mbs; + int count; + u_int8_t lwfs; + fcparam *fcp; + + fcp = isp->isp_param; /* - * Wait up to 5 seconds for FW to go to READY state. + * Wait up to N microseconds for F/W to go to a ready state. + * This is a platform specific */ lwfs = FW_CONFIG_WAIT; - for (count = 0; count < 12000; count++) { + for (count = 0; count < FC_FW_READY_DELAY; count += 100) { isp_fw_state(isp); if (lwfs != fcp->isp_fwstate) { PRINTF("%s: Firmware State %s -> %s\n", @@ -934,38 +1058,30 @@ isp_fibre_init(isp) if (fcp->isp_fwstate == FW_READY) { break; } - SYS_DELAY(1000); /* wait one millisecond */ + SYS_DELAY(100); /* wait 100 microseconds */ } - isp->isp_sendmarker = 1; /* - * Get our Loop ID - * (if possible) + * If we haven't gone to 'ready' state, return. */ - if (fcp->isp_fwstate == FW_READY) { - mbs.param[0] = MBOX_GET_LOOP_ID; - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { - isp_dumpregs(isp, "GET LOOP ID failed"); - return; - } - fcp->isp_loopid = mbs.param[1]; - fcp->isp_alpa = mbs.param[2]; - PRINTF("%s: Loop ID %d, ALPA 0x%x\n", isp->isp_name, - fcp->isp_loopid, fcp->isp_alpa); - isp->isp_state = ISP_INITSTATE; -#ifdef ISP_TARGET_MODE - DISABLE_INTS(isp); - if (isp_modify_lun(isp, 0, 1, 1)) { - PRINTF("%s: failed to enable target mode\n", - isp->isp_name); - } - ENABLE_INTS(isp); -#endif - } else { - PRINTF("%s: failed to go to FW READY state- will not attach\n", - isp->isp_name); + if (fcp->isp_fwstate != FW_READY) { + return (-1); } + /* + * Get our Loop ID (if possible). We really need to have it. + */ + mbs.param[0] = MBOX_GET_LOOP_ID; + isp_mboxcmd(isp, &mbs); + if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { + PRINTF("%s: GET LOOP ID failed\n", isp->isp_name); + return (-1); + } + fcp->isp_loopid = mbs.param[1]; + fcp->isp_alpa = mbs.param[2]; + PRINTF("%s: Loop ID %d, ALPA 0x%x\n", isp->isp_name, + fcp->isp_loopid, fcp->isp_alpa); + return (0); + } /* @@ -985,7 +1101,7 @@ ispscsicmd(xs) #define reqp _u._reqp #define t2reqp _u._t2reqp #define UZSIZE max(sizeof (ispreq_t), sizeof (ispreqt2_t)) - int i; + int i, rqidx; XS_INITERR(xs); isp = XS_ISP(xs); @@ -997,9 +1113,10 @@ ispscsicmd(xs) } /* - * We *could* do the different sequence type that has clos - * to the whole Queue Entry for the command,. + * We *could* do the different sequence type that has close + * to the whole Queue Entry for the command,... */ + if (XS_CDBLEN(xs) > ((isp->isp_type & ISP_HA_FC)? 16 : 12)) { PRINTF("%s: unsupported cdb length (%d)\n", isp->isp_name, XS_CDBLEN(xs)); @@ -1008,7 +1125,48 @@ ispscsicmd(xs) } /* - * First check to see if any HBA or Device + * Check to see whether we have good firmware state still or + * need to refresh our port database for this target. + */ + if (IS_FC(isp)) { + fcparam *fcp = isp->isp_param; + isp_pdb_t *pdbp = &fcp->isp_pdb[XS_TGT(xs)]; + + /* + * Check for f/w being in ready state. Well, okay, + * our cached copy of it... + */ + if (fcp->isp_fwstate != FW_READY) { + if (isp_fclink_test(isp)) { + XS_SETERR(xs, HBA_SELTIMEOUT); + return (CMD_COMPLETE); + } + } + /* + * Here's the spot we would need to find out whether + * the port names have changed, whether it's still + * a target role, etc.. + */ + if (pdbp->pdb_options == INVALID_PDB_OPTIONS) { + /* + * If we don't know what it is- don't talk to it. + * This also handles cases where it's not logged + * into this port/target. + */ + if (isp_getpdb(isp, XS_TGT(xs), pdbp)) { + XS_SETERR(xs, HBA_SELTIMEOUT); + return (CMD_COMPLETE); +#ifdef GETPDB_WORKING_YET + } else { + isp_async(isp, ISPASYNC_PDB_CHANGE_COMPLETE, + (void *) (long) XS_TGT(xs)); +#endif + } + } + } + + /* + * Next check to see if any HBA or Device * parameters need to be updated. */ if (isp->isp_update) { @@ -1025,9 +1183,6 @@ ispscsicmd(xs) XS_SETERR(xs, HBA_BOTCH); return (CMD_EAGAIN); } - if (isp->isp_type & ISP_HA_FC) { - DISABLE_INTS(isp); - } if (isp->isp_sendmarker) { u_int8_t niptr; @@ -1038,8 +1193,6 @@ ispscsicmd(xs) marker->req_header.rqs_entry_type = RQSTYPE_MARKER; marker->req_modifier = SYNC_ALL; - isp->isp_sendmarker = 0; - /* * Unconditionally update the input pointer anyway. */ @@ -1048,9 +1201,6 @@ ispscsicmd(xs) niptr = ISP_NXT_QENTRY(iptr, RQUEST_QUEUE_LEN); if (niptr == optr) { - if (isp->isp_type & ISP_HA_FC) { - ENABLE_INTS(isp); - } IDPRINTF(2, ("%s: Request Queue Overflow+\n", isp->isp_name)); XS_SETERR(xs, HBA_BOTCH); @@ -1070,13 +1220,11 @@ ispscsicmd(xs) reqp->req_header.rqs_flags = 0; reqp->req_header.rqs_seqno = isp->isp_seqno++; - for (i = 0; i < RQUEST_QUEUE_LEN; i++) { - if (isp->isp_xflist[i] == NULL) + for (rqidx = 0; rqidx < RQUEST_QUEUE_LEN; rqidx++) { + if (isp->isp_xflist[rqidx] == NULL) break; } - if (i == RQUEST_QUEUE_LEN) { - if (isp->isp_type & ISP_HA_FC) - ENABLE_INTS(isp); + if (rqidx == RQUEST_QUEUE_LEN) { IDPRINTF(2, ("%s: out of xflist pointers\n", isp->isp_name)); XS_SETERR(xs, HBA_BOTCH); return (CMD_EAGAIN); @@ -1085,8 +1233,8 @@ ispscsicmd(xs) * Never have a handle that is zero, so * set req_handle off by one. */ - isp->isp_xflist[i] = xs; - reqp->req_handle = i+1; + isp->isp_xflist[rqidx] = xs; + reqp->req_handle = rqidx+1; } if (isp->isp_type & ISP_HA_FC) { @@ -1120,7 +1268,7 @@ ispscsicmd(xs) reqp->req_lun_trn = XS_LUN(xs); reqp->req_cdblen = XS_CDBLEN(xs); } else { -#ifdef SCCLUN +#ifdef ISP2100_SCCLUN reqp->req_scclun = XS_LUN(xs); #else reqp->req_lun_trn = XS_LUN(xs); @@ -1136,10 +1284,19 @@ ispscsicmd(xs) reqp->req_time = XS_TIME(xs) / 1000; if (reqp->req_time == 0 && XS_TIME(xs)) reqp->req_time = 1; + + /* + * Always give a bit more leeway to commands after a bus reset. + */ + if (isp->isp_sendmarker && reqp->req_time < 5) + reqp->req_time = 5; + i = ISP_DMASETUP(isp, xs, reqp, &iptr, optr); if (i != CMD_QUEUED) { - if (isp->isp_type & ISP_HA_FC) - ENABLE_INTS(isp); + /* + * Take memory of it away... + */ + isp->isp_xflist[rqidx] = NULL; /* * dmasetup sets actual error in packet, and * return what we were given to return. @@ -1147,12 +1304,12 @@ ispscsicmd(xs) return (i); } XS_SETERR(xs, HBA_NOERROR); + MemoryBarrier(); ISP_WRITE(isp, INMAILBOX4, iptr); isp->isp_reqidx = iptr; - if (isp->isp_type & ISP_HA_FC) { - ENABLE_INTS(isp); - } isp->isp_nactive++; + if (isp->isp_sendmarker) + isp->isp_sendmarker = 0; return (CMD_QUEUED); #undef reqp #undef t2reqp @@ -1180,10 +1337,20 @@ isp_control(isp, ctl, arg) break; case ISPCTL_RESET_BUS: + /* + * This is really important to have set after a bus reset. + */ + isp->isp_sendmarker = 1; + + /* + * Issue a bus reset. + */ mbs.param[0] = MBOX_BUS_RESET; if (isp->isp_type & ISP_HA_SCSI) { mbs.param[1] = ((sdparam *) isp->isp_param)->isp_bus_reset_delay; + if (mbs.param[1] < 2) + mbs.param[1] = 2; } else { /* * Unparameterized. @@ -1195,10 +1362,6 @@ isp_control(isp, ctl, arg) isp_dumpregs(isp, "isp_control SCSI bus reset failed"); break; } - /* - * This is really important to have set after a bus reset. - */ - isp->isp_sendmarker = 1; PRINTF("%s: driver initiated bus reset\n", isp->isp_name); return (0); @@ -1229,7 +1392,7 @@ isp_control(isp, ctl, arg) break; } mbs.param[0] = MBOX_ABORT; -#ifdef SCCLUN +#ifdef ISP2100_SCCLUN if (isp->isp_type & ISP_HA_FC) { mbs.param[1] = XS_TGT(xs) << 8; mbs.param[4] = 0; @@ -1256,6 +1419,9 @@ isp_control(isp, ctl, arg) case ISPCTL_UPDATE_PARAMS: isp_update(isp); return(0); + + case ISPCTL_FCLINK_TEST: + return (isp_fclink_test(isp)); } return (-1); } @@ -1298,30 +1464,37 @@ isp_intr(arg) if (ISP_READ(isp, BIU_SEMA) & 1) { u_int16_t mbox = ISP_READ(isp, OUTMAILBOX0); - u_int32_t fast_post_handle = isp_parse_async(isp, (int) mbox); - ISP_WRITE(isp, BIU_SEMA, 0); - if (fast_post_handle < 0) { - return (1); - } else if (fast_post_handle > 0) { - xs = (ISP_SCSI_XFER_T *) - isp->isp_xflist[fast_post_handle - 1]; - isp->isp_xflist[fast_post_handle - 1] = NULL; - /* - * Since we don't have a result queue entry item, - * we must believe that SCSI status is zero and - * that all data transferred. - */ - XS_RESID(xs) = 0; - XS_STS(xs) = 0; - if (XS_XFRLEN(xs)) { - ISP_DMAFREE(isp, xs, fast_post_handle - 1); + if (mbox & 0x4000) { + if (mbox != MBOX_COMMAND_COMPLETE) { + PRINTF("%s: isp_intr sees 0x%x\n", + isp->isp_name,mbox); + } + ISP_WRITE(isp, BIU_SEMA, 0); + } else { + u_int32_t fhandle = isp_parse_async(isp, (int) mbox); + ISP_WRITE(isp, BIU_SEMA, 0); + if (fhandle < 0) { + return (1); + } else if (fhandle > 0) { + xs = (ISP_SCSI_XFER_T *) + isp->isp_xflist[fhandle - 1]; + isp->isp_xflist[fhandle - 1] = NULL; + /* + * Since we don't have a result queue entry + * item, we must believe that SCSI status is + * zero and that all data transferred. + */ + XS_RESID(xs) = 0; + XS_STS(xs) = 0; + if (XS_XFRLEN(xs)) { + ISP_DMAFREE(isp, xs, fhandle - 1); + } + if (isp->isp_nactive > 0) + isp->isp_nactive--; + complist[ndone++] = xs; } - if (isp->isp_nactive > 0) - isp->isp_nactive--; - complist[ndone++] = xs; } } - ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); optr = isp->isp_residx; @@ -1342,7 +1515,7 @@ isp_intr(arg) oop = optr; optr = ISP_NXT_QENTRY(optr, RESULT_QUEUE_LEN); nlooked++; - + MemoryBarrier(); if (sp->req_header.rqs_entry_type != RQSTYPE_RESPONSE) { if (isp_handle_other_response(isp, sp, &optr) == 0) { ISP_WRITE(isp, INMAILBOX5, optr); @@ -1499,7 +1672,7 @@ isp_intr(arg) * what the outpointer is. It also is a trigger to update the * ISP's notion of what we've seen so far. */ - if (ndone) { + if (nlooked) { ISP_WRITE(isp, INMAILBOX5, optr); isp->isp_reqodx = ISP_READ(isp, OUTMAILBOX4); } @@ -1525,8 +1698,10 @@ isp_parse_async(isp, mbox) u_int32_t fast_post_handle = 0; switch (mbox) { + case MBOX_COMMAND_COMPLETE: /* sometimes these show up */ + break; case ASYNC_BUS_RESET: - PRINTF("%s: SCSI bus reset detected\n", isp->isp_name); + isp_async(isp, ISPASYNC_BUS_RESET, NULL); isp->isp_sendmarker = 1; #ifdef ISP_TARGET_MODE isp_notify_ack(isp, NULL); @@ -1563,6 +1738,7 @@ isp_parse_async(isp, mbox) break; case ASYNC_DEVICE_RESET: + isp->isp_sendmarker = 1; PRINTF("%s: device reset\n", isp->isp_name); #ifdef ISP_TARGET_MODE isp_notify_ack(isp, NULL); @@ -1606,20 +1782,21 @@ isp_parse_async(isp, mbox) break; case ASYNC_LIP_OCCURRED: + isp->isp_sendmarker = 1; PRINTF("%s: LIP occurred\n", isp->isp_name); break; case ASYNC_LOOP_UP: - PRINTF("%s: Loop UP\n", isp->isp_name); + isp->isp_sendmarker = 1; isp_async(isp, ISPASYNC_LOOP_UP, NULL); break; case ASYNC_LOOP_DOWN: - PRINTF("%s: Loop DOWN\n", isp->isp_name); isp_async(isp, ISPASYNC_LOOP_DOWN, NULL); break; case ASYNC_LOOP_RESET: + isp->isp_sendmarker = 1; PRINTF("%s: Loop RESET\n", isp->isp_name); #ifdef ISP_TARGET_MODE isp_notify_ack(isp, NULL); @@ -1627,15 +1804,16 @@ isp_parse_async(isp, mbox) break; case ASYNC_PDB_CHANGED: + isp->isp_sendmarker = 1; + isp_mark_getpdb_all(isp); PRINTF("%s: Port Database Changed\n", isp->isp_name); break; case ASYNC_CHANGE_NOTIFY: - PRINTF("%s: Name Server Database Changed\n", isp->isp_name); break; default: - PRINTF("%s: async %x\n", isp->isp_name, mbox); + PRINTF("%s: unknown async code 0x%x\n", isp->isp_name, mbox); break; } return (fast_post_handle); @@ -1756,7 +1934,7 @@ isp_handle_other_response(isp, sp, optrp) ispatiot2_t *at2 = (ispatiot2_t *) sp; int s, lun; -#ifdef SCCLUN +#ifdef ISP2100_SCCLUN lun = at2->req_scclun; #else lun = at2->req_lun; @@ -1804,7 +1982,7 @@ isp_handle_other_response(isp, sp, optrp) ct2->req_header.rqs_flags = 0; ct2->req_header.rqs_seqno = isp->isp_seqno++; ct2->req_handle = (at2->req_initiator << 16) | lun; -#ifndef SCCLUN +#ifndef ISP2100_SCCLUN ct2->req_lun = lun; #endif ct2->req_initiator = at2->req_initiator; @@ -2519,6 +2697,35 @@ isp_parse_status(isp, sp, xs) XS_SETERR(xs, HBA_BOTCH); } +static void +isp_fastpost_complete(isp, fph) + struct ispsoftc *isp; + int fph; +{ + ISP_SCSI_XFER_T *xs; + + if (fph < 1) + return; + xs = (ISP_SCSI_XFER_T *) isp->isp_xflist[fph - 1]; + isp->isp_xflist[fph - 1] = NULL; + if (xs == NULL) { + PRINTF("%s: fast posting handle 0x%x not found\n", + isp->isp_name, fph - 1); + return; + } + /* + * Since we don't have a result queue entry item, + * we must believe that SCSI status is zero and + * that all data transferred. + */ + XS_RESID(xs) = 0; + XS_STS(xs) = 0; + if (XS_XFRLEN(xs)) { + ISP_DMAFREE(isp, xs, fph - 1); + } + XS_CMD_DONE(xs); +} + #define HINIB(x) ((x) >> 0x4) #define LONIB(x) ((x) & 0xf) #define MAKNIB(a, b) (((a) << 4) | (b)) @@ -2627,8 +2834,17 @@ static u_int8_t mbpcnt[] = { MAKNIB(3, 1), /* 0x65: MBOX_CLEAR_ACA */ MAKNIB(3, 1), /* 0x66: MBOX_TARGET_RESET */ MAKNIB(3, 1), /* 0x67: MBOX_CLEAR_TASK_SET */ - MAKNIB(3, 1), /* 0x69: MBOX_ABORT_TASK_SET */ - MAKNIB(1, 2) /* 0x69: MBOX_GET_FW_STATE */ + MAKNIB(3, 1), /* 0x68: MBOX_ABORT_TASK_SET */ + MAKNIB(1, 2), /* 0x69: MBOX_GET_FW_STATE */ + MAKNIB(2, 8), /* 0x6a: MBOX_GET_PORT_NAME */ + MAKNIB(8, 1), /* 0x6b: MBOX_GET_LINK_STATUS */ + MAKNIB(4, 4), /* 0x6c: MBOX_INIT_LIP_RESET */ + MAKNIB(0, 0), /* 0x6d: */ + MAKNIB(0, 0), /* 0x6e: */ + MAKNIB(0, 0), /* 0x6f: */ + MAKNIB(0, 0), /* 0x70: */ + MAKNIB(0, 0), /* 0x71: */ + MAKNIB(4, 1) /* 0x72: MBOX_INIT_LIP_LOGIN */ }; #define NMBCOM (sizeof (mbpcnt) / sizeof (mbpcnt[0])) @@ -2665,7 +2881,7 @@ isp_mboxcmd(isp, mbp) /* * Check for variants */ -#ifdef SCCLUN +#ifdef ISP2100_SCCLUN if (isp->isp_type & ISP_HA_FC) { switch (mbp->param[0]) { case MBOX_ABORT: @@ -2687,33 +2903,68 @@ isp_mboxcmd(isp, mbp) command_known: +#define NEW_MB_WAY 1 +#ifdef NEW_MB_WAY /* - * Make sure we can send some words.. + * Set semaphore on mailbox registers to win any races to acquire them. + */ + ISP_WRITE(isp, BIU_SEMA, 1); +#endif + + + /* + * Make sure we can send some words. Check to see id there's + * an async mbox event pending. */ loops = MBOX_DELAY_COUNT; while ((ISP_READ(isp, HCCR) & HCCR_HOST_INT) != 0) { SYS_DELAY(100); - if (--loops < 0) { - PRINTF("%s: isp_mboxcmd timeout #1\n", isp->isp_name); - if (dld++) { - return; - } - PRINTF("%s: but we'll try again, isr=%x\n", - isp->isp_name, ISP_READ(isp, BIU_ISR)); - if (ISP_READ(isp, BIU_SEMA) & 1) { - u_int16_t mbox = ISP_READ(isp, OUTMAILBOX0); - if (isp_parse_async(isp, (int) mbox)) + if (ISP_READ(isp, BIU_SEMA) & 1) { + int fph; + u_int16_t mbox = ISP_READ(isp, OUTMAILBOX0); + /* + * We have a pending MBOX async event. + */ + if (mbox & 0x8000) { + fph = isp_parse_async(isp, (int) mbox); + ISP_WRITE(isp, BIU_SEMA, 0); + ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); + if (fph < 0) { return; + } else if (fph > 0) { + isp_fastpost_complete(isp, fph); + } + SYS_DELAY(100); + goto command_known; + } + /* + * We have a pending MBOX completion? Might be + * from a previous command. We can't (sometimes) + * just clear HOST INTERRUPT, so we'll just silently + * eat this here. + */ + if (mbox == MBOX_COMMAND_COMPLETE) { ISP_WRITE(isp, BIU_SEMA, 0); + ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); + SYS_DELAY(100); + goto command_known; } + } + if (--loops < 0) { + if (dld++ > 10) { + PRINTF("%s: isp_mboxcmd could not get command " + "started\n", isp->isp_name); + return; + } + ISP_WRITE(isp, BIU_SEMA, 0); ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); goto command_known; } } /* - * Write input parameters + * Write input parameters. */ switch (inparam) { case 8: ISP_WRITE(isp, INMAILBOX7, mbp->param[7]); mbp->param[7] = 0; @@ -2727,20 +2978,23 @@ command_known: } /* - * Clear semaphore on mailbox registers + * Clear RISC int condition. */ - ISP_WRITE(isp, BIU_SEMA, 0); + ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); /* - * Clear RISC int condition. + * Clear semaphore on mailbox registers so that the Qlogic + * may update outgoing registers. */ - ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); + ISP_WRITE(isp, BIU_SEMA, 0); + ENABLE_INTS(isp); /* * Set Host Interrupt condition so that RISC will pick up mailbox regs. */ ISP_WRITE(isp, HCCR, HCCR_CMD_SET_HOST_INT); +#ifndef NEW_MB_WAY /* * Wait until RISC int is set, except 2100 */ @@ -2762,24 +3016,83 @@ command_known: loops = MBOX_DELAY_COUNT; while ((ISP_READ(isp, BIU_SEMA) & 1) == 0) { SYS_DELAY(100); + /* + * Wierd- I've seen the case where the semaphore register + * isn't getting set- sort of a violation of the protocol.. + */ + if (ISP_READ(isp, OUTMAILBOX0) & 0x4000) + break; if (--loops < 0) { PRINTF("%s: isp_mboxcmd timeout #3\n", isp->isp_name); return; } } +#else + /* + * Wait until HOST INT has gone away (meaning that the Qlogic + * has picked up the mailbox command. Wait a long time. + */ + loops = MBOX_DELAY_COUNT * 5; + while ((ISP_READ(isp, HCCR) & HCCR_CMD_CLEAR_RISC_INT) != 0) { + SYS_DELAY(100); + if (--loops < 0) { + PRINTF("%s: isp_mboxcmd timeout #2\n", isp->isp_name); + return; + } + } /* - * Make sure that the MBOX_BUSY has gone away + * While the Semaphore registers isn't set, wait for the Qlogic + * to process the mailbox command. Again- wait a long time. */ - loops = MBOX_DELAY_COUNT; - while (ISP_READ(isp, OUTMAILBOX0) == MBOX_BUSY) { + loops = MBOX_DELAY_COUNT * 5; + while ((ISP_READ(isp, BIU_SEMA) & 1) == 0) { SYS_DELAY(100); + /* + * Wierd- I've seen the case where the semaphore register + * isn't getting set- sort of a violation of the protocol.. + */ + if (ISP_READ(isp, OUTMAILBOX0) & 0x4000) + break; if (--loops < 0) { - PRINTF("%s: isp_mboxcmd timeout #4\n", isp->isp_name); + PRINTF("%s: isp_mboxcmd timeout #3\n", isp->isp_name); return; } } +#endif + /* + * Make sure that the MBOX_BUSY has gone away + */ + loops = MBOX_DELAY_COUNT; + for (;;) { + u_int16_t mbox = ISP_READ(isp, OUTMAILBOX0); + if (mbox == MBOX_BUSY) { + if (--loops < 0) { + PRINTF("%s: isp_mboxcmd timeout #4\n", + isp->isp_name); + return; + } + SYS_DELAY(100); + continue; + } + /* + * We have a pending MBOX async event. + */ + if (mbox & 0x8000) { + int fph = isp_parse_async(isp, (int) mbox); + ISP_WRITE(isp, BIU_SEMA, 0); + ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); + if (fph < 0) { + return; + } else if (fph > 0) { + isp_fastpost_complete(isp, fph); + } + SYS_DELAY(100); + continue; + } + break; + } /* * Pick up output parameters. @@ -2828,17 +3141,29 @@ command_known: isp->isp_name, opcode); break; case MBOX_COMMAND_PARAM_ERROR: - PRINTF("%s: mbox cmd %x failed with COMMAND_PARAM_ERROR\n", - isp->isp_name, opcode); + switch (opcode) { + case MBOX_GET_PORT_DB: + case MBOX_GET_PORT_NAME: + case MBOX_GET_DEV_QUEUE_PARAMS: + break; + default: + PRINTF("%s: mbox cmd %x failed with " + "COMMAND_PARAM_ERROR\n", isp->isp_name, opcode); + } break; /* * Be silent about these... */ - case ASYNC_LOOP_UP: case ASYNC_LIP_OCCURRED: + case ASYNC_LOOP_UP: + case ASYNC_LOOP_DOWN: + case ASYNC_LOOP_RESET: + case ASYNC_CHANGE_NOTIFY: + break; case ASYNC_PDB_CHANGED: + isp_mark_getpdb_all(isp); break; default: @@ -2960,12 +3285,19 @@ again: mbs.param[0] = MBOX_GET_FW_STATE; isp_mboxcmd(isp, &mbs); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { - if (mbs.param[0] == ASYNC_LIP_OCCURRED || - mbs.param[0] == ASYNC_PDB_CHANGED || - mbs.param[0] == ASYNC_LOOP_UP) { + switch (mbs.param[0]) { + case ASYNC_PDB_CHANGED: + isp_mark_getpdb_all(isp); + /* FALL THROUGH */ + case ASYNC_LIP_OCCURRED: + case ASYNC_LOOP_UP: + case ASYNC_LOOP_DOWN: + case ASYNC_LOOP_RESET: + case ASYNC_CHANGE_NOTIFY: if (once++ < 2) { goto again; } + break; } isp_dumpregs(isp, "GET FIRMWARE STATE failed"); return; @@ -3024,6 +3356,10 @@ isp_update(isp) } if (get == 0) { + /* + * XXX: Need a SYNC_TARGET for efficiency... + */ + isp->isp_sendmarker = 1; sdp->isp_devparam[tgt].cur_dflags = sdp->isp_devparam[tgt].dev_flags; continue; @@ -3076,7 +3412,7 @@ isp_setdfltparm(isp) (isp_read_nvram(isp) == 0)) { return; } - if (isp->isp_type & ISP_HA_FC) { + if (IS_FC(isp)) { fcparam *fcp = (fcparam *) isp->isp_param; fcp->isp_maxfrmlen = ICB_DFLT_FRMLEN; fcp->isp_maxalloc = 256; @@ -3232,66 +3568,6 @@ isp_restart(isp) } /* - * Miscellaneous debug statements. - */ -static void -isp_prtstst(sp) - ispstatusreq_t *sp; -{ - PRINTF("states->"); - if (sp->req_state_flags & RQSF_GOT_BUS) - PRINTF("GOT_BUS "); - if (sp->req_state_flags & RQSF_GOT_TARGET) - PRINTF("GOT_TGT "); - if (sp->req_state_flags & RQSF_SENT_CDB) - PRINTF("SENT_CDB "); - if (sp->req_state_flags & RQSF_XFRD_DATA) - PRINTF("XFRD_DATA "); - if (sp->req_state_flags & RQSF_GOT_STATUS) - PRINTF("GOT_STS "); - if (sp->req_state_flags & RQSF_GOT_SENSE) - PRINTF("GOT_SNS "); - if (sp->req_state_flags & RQSF_XFER_COMPLETE) - PRINTF("XFR_CMPLT "); - PRINTF("\n"); - PRINTF("status->"); - if (sp->req_status_flags & RQSTF_DISCONNECT) - PRINTF("Disconnect "); - if (sp->req_status_flags & RQSTF_SYNCHRONOUS) - PRINTF("Sync_xfr "); - if (sp->req_status_flags & RQSTF_PARITY_ERROR) - PRINTF("Parity "); - if (sp->req_status_flags & RQSTF_BUS_RESET) - PRINTF("Bus_Reset "); - if (sp->req_status_flags & RQSTF_DEVICE_RESET) - PRINTF("Device_Reset "); - if (sp->req_status_flags & RQSTF_ABORTED) - PRINTF("Aborted "); - if (sp->req_status_flags & RQSTF_TIMEOUT) - PRINTF("Timeout "); - if (sp->req_status_flags & RQSTF_NEGOTIATION) - PRINTF("Negotiation "); - PRINTF("\n"); -} - -static char * -isp2100_fw_statename(state) - int state; -{ - switch(state) { - case FW_CONFIG_WAIT: return "Config Wait"; - case FW_WAIT_AL_PA: return "Waiting for AL/PA"; - case FW_WAIT_LOGIN: return "Wait Login"; - case FW_READY: return "Ready"; - case FW_LOSS_OF_SYNC: return "Loss Of Sync"; - case FW_ERROR: return "Error"; - case FW_REINIT: return "Re-Init"; - case FW_NON_PART: return "Nonparticipating"; - default: return "eh?"; - } -} - -/* * NVRAM Routines */ @@ -3308,7 +3584,7 @@ isp_read_nvram(isp) #define nvram_data _n._x #define nvram_words _n._s - if (isp->isp_type & ISP_HA_FC) { + if (IS_FC(isp)) { amt = ISP2100_NVRAM_SIZE; minversion = 1; } else { diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c index ee56cf6..dcbf752 100644 --- a/sys/dev/isp/isp_freebsd.c +++ b/sys/dev/isp/isp_freebsd.c @@ -1,5 +1,5 @@ -/* $Id: isp_freebsd.c,v 1.11 1999/01/30 07:29:00 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: isp_freebsd.c,v 1.12 1999/02/09 01:08:38 mjacob Exp $ */ +/* release_03_16_99 */ /* * Platform (FreeBSD) dependent common attachment code for Qlogic adapters. * @@ -92,7 +92,8 @@ isp_attach(struct ispsoftc *isp) if (isp->isp_type & ISP_HA_FC) { isp->isp_sim->base_transfer_speed = 100000; } - isp->isp_state = ISP_RUNSTATE; + if (isp->isp_state == ISP_INITSTATE) + isp->isp_state = ISP_RUNSTATE; } static void @@ -148,6 +149,30 @@ isp_action(struct cam_sim *sim, union ccb *ccb) isp = (struct ispsoftc *)cam_sim_softc(sim); ccb->ccb_h.sim_priv.entries[0].field = 0; ccb->ccb_h.sim_priv.entries[1].ptr = isp; + /* + * This should only happen for Fibre Channel adapters. + * We want to pass through all but XPT_SCSI_IO (e.g., + * path inquiry) but fail if we can't get good Fibre + * Channel link status. + */ + if (ccb->ccb_h.func_code == XPT_SCSI_IO && + isp->isp_state != ISP_RUNSTATE) { + s = splcam(); + DISABLE_INTS(isp); + isp_init(isp); + if (isp->isp_state != ISP_INITSTATE) { + (void) splx(s); + /* + * Lie. Say it was a selection timeout. + */ + ccb->ccb_h.status = CAM_SEL_TIMEOUT; + xpt_done(ccb); + return; + } + isp->isp_state = ISP_RUNSTATE; + ENABLE_INTS(isp); + (void) splx(s); + } IDPRINTF(4, ("%s: isp_action code %x\n", isp->isp_name, ccb->ccb_h.func_code)); @@ -218,9 +243,9 @@ isp_action(struct cam_sim *sim, union ccb *ccb) ccb->ccb_h.status |= CAM_SIM_QUEUED; break; case CMD_EAGAIN: - if (isp->isp_osinfo.simqfrozen == 0) { + if (!(isp->isp_osinfo.simqfrozen & SIMQFRZ_RESOURCE)) { xpt_freeze_simq(sim, 1); - isp->isp_osinfo.simqfrozen = 1; + isp->isp_osinfo.simqfrozen |= SIMQFRZ_RESOURCE; } ccb->ccb_h.status &= ~CAM_STATUS_MASK; ccb->ccb_h.status |= CAM_REQUEUE_REQ; @@ -547,13 +572,10 @@ isp_done(struct ccb_scsiio *sccb) sccb->ccb_h.status |= CAM_DEV_QFRZN; } } - if (isp->isp_osinfo.simqfrozen) { - - xpt_print_path(sccb->ccb_h.path); - printf("isp_done releasing SIMQ\n"); - + if (isp->isp_osinfo.simqfrozen & SIMQFRZ_RESOURCE) { + isp->isp_osinfo.simqfrozen &= ~SIMQFRZ_RESOURCE; sccb->ccb_h.status |= CAM_RELEASE_SIMQ; - isp->isp_osinfo.simqfrozen = 0; + xpt_release_simq(isp->isp_sim, 1); } sccb->ccb_h.status &= ~CAM_SIM_QUEUED; if (CAM_DEBUGGED(sccb->ccb_h.path, ISPDDB) && @@ -572,29 +594,6 @@ isp_async(isp, cmd, arg) { int rv = 0; switch (cmd) { - case ISPASYNC_LOOP_DOWN: - if (isp->isp_path) { - /* - * We can get multiple LOOP downs, so only count one. - */ - if (isp->isp_osinfo.simqfrozen == 0) { - xpt_freeze_simq(isp->isp_sim, 1); - isp->isp_osinfo.simqfrozen = 1; - xpt_print_path(isp->isp_path); - printf("freezing SIMQ until loop comes up\n"); - } - } - break; - case ISPASYNC_LOOP_UP: - if (isp->isp_path) { - xpt_print_path(isp->isp_path); - if (isp->isp_osinfo.simqfrozen) { - isp->isp_osinfo.simqfrozen = 0; - printf("releasing frozen SIMQ\n"); - xpt_release_simq(isp->isp_sim, 1); - } - } - break; case ISPASYNC_NEW_TGT_PARAMS: if (isp->isp_type & ISP_HA_SCSI) { int flags, tgt; @@ -638,6 +637,100 @@ isp_async(isp, cmd, arg) xpt_free_path(tmppath); } break; + case ISPASYNC_BUS_RESET: + printf("%s: SCSI bus reset detected\n", isp->isp_name); + if (isp->isp_path) { + xpt_async(AC_BUS_RESET, isp->isp_path, NULL); + } + break; + case ISPASYNC_LOOP_DOWN: + if (isp->isp_path) { + /* + * We can get multiple LOOP downs, so only count one. + */ + if (!(isp->isp_osinfo.simqfrozen & SIMQFRZ_LOOPDOWN)) { + xpt_freeze_simq(isp->isp_sim, 1); + isp->isp_osinfo.simqfrozen |= SIMQFRZ_LOOPDOWN; + printf("%s: Loop DOWN- freezing SIMQ until Loop" + " comes up\n", isp->isp_name); + } + } else { + printf("%s: Loop DOWN\n", isp->isp_name); + } + break; + case ISPASYNC_LOOP_UP: + if (isp->isp_path) { + if (isp->isp_osinfo.simqfrozen & SIMQFRZ_LOOPDOWN) { + xpt_release_simq(isp->isp_sim, 1); + isp->isp_osinfo.simqfrozen &= ~SIMQFRZ_LOOPDOWN; + if (isp->isp_osinfo.simqfrozen) { + printf("%s: Loop UP- SIMQ still " + "frozen\n", isp->isp_name); + } else { + printf("%s: Loop UP-releasing frozen " + "SIMQ\n", isp->isp_name); + } + } + } else { + printf("%s: Loop UP\n", isp->isp_name); + } + break; + case ISPASYNC_PDB_CHANGE_COMPLETE: + if (isp->isp_type & ISP_HA_FC) { + int i; + static char *roles[4] = { + "No", "Target", "Initiator", "Target/Initiator" + }; + for (i = 0; i < MAX_FC_TARG; i++) { + isp_pdb_t *pdbp = + &((fcparam *)isp->isp_param)->isp_pdb[i]; + if (pdbp->pdb_options == INVALID_PDB_OPTIONS) + continue; + printf("%s: Loop ID %d, %s role\n", + isp->isp_name, pdbp->pdb_loopid, + roles[(pdbp->pdb_prli_svc3 >> 4) & 0x3]); + printf(" Node Address 0x%x WWN 0x" + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + BITS2WORD(pdbp->pdb_portid_bits), + pdbp->pdb_portname[0], pdbp->pdb_portname[1], + pdbp->pdb_portname[2], pdbp->pdb_portname[3], + pdbp->pdb_portname[4], pdbp->pdb_portname[5], + pdbp->pdb_portname[6], pdbp->pdb_portname[7]); + if (pdbp->pdb_options & PDB_OPTIONS_ADISC) + printf(" Hard Address 0x%x WWN 0x" + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + BITS2WORD(pdbp->pdb_hardaddr_bits), + pdbp->pdb_nodename[0], + pdbp->pdb_nodename[1], + pdbp->pdb_nodename[2], + pdbp->pdb_nodename[3], + pdbp->pdb_nodename[4], + pdbp->pdb_nodename[5], + pdbp->pdb_nodename[6], + pdbp->pdb_nodename[7]); + switch (pdbp->pdb_prli_svc3 & SVC3_ROLE_MASK) { + case SVC3_TGT_ROLE|SVC3_INI_ROLE: + printf(" Master State=%s, Slave State=%s\n", + isp2100_pdb_statename(pdbp->pdb_mstate), + isp2100_pdb_statename(pdbp->pdb_sstate)); + break; + case SVC3_TGT_ROLE: + printf(" Master State=%s\n", + isp2100_pdb_statename(pdbp->pdb_mstate)); + break; + case SVC3_INI_ROLE: + printf(" Slave State=%s\n", + isp2100_pdb_statename(pdbp->pdb_sstate)); + break; + default: + break; + } + } + break; + } + case ISPASYNC_CHANGE_NOTIFY: + printf("%s: Name Server Database Changed\n", isp->isp_name); + break; default: break; } @@ -672,7 +765,9 @@ isp_attach(struct ispsoftc *isp) if(!scbus) { return; } - isp->isp_state = ISP_RUNSTATE; + if (isp->isp_state == ISP_INITSTATE) + isp->isp_state = ISP_RUNSTATE; + START_WATCHDOG(isp); isp->isp_osinfo._link.adapter_unit = isp->isp_osinfo.unit; @@ -736,14 +831,25 @@ static int ispcmd(ISP_SCSI_XFER_T *xs) { struct ispsoftc *isp; - int r; - ISP_LOCKVAL_DECL; + int r, s; isp = XS_ISP(xs); - ISP_LOCK; + s = splbio(); + DISABLE_INTS(isp); + if (isp->isp_state != ISP_RUNSTATE) { + isp_init(isp); + if (isp->isp_state != ISP_INITSTATE) { + ENABLE_INTS(isp); + (void) splx(s); + XS_SETERR(xs, HBA_BOTCH); + return (CMD_COMPLETE); + } + isp_state = ISP_RUNSTATE; + } r = ispscsicmd(xs); + ENABLE_INTS(isp); if (r != CMD_QUEUED || (xs->flags & SCSI_NOMASK) == 0) { - ISP_UNLOCK; + (void) splx(s); return (r); } @@ -765,7 +871,7 @@ ispcmd(ISP_SCSI_XFER_T *xs) } } } - ISP_UNLOCK; + (void) splx(s); return (CMD_COMPLETE); } @@ -873,6 +979,71 @@ isp_async(isp, cmd, arg) } } break; + case ISPASYNC_BUS_RESET: + printf("%s: SCSI bus reset detected\n", isp->isp_name); + break; + case ISPASYNC_LOOP_DOWN: + printf("%s: Loop DOWN\n", isp->isp_name); + break; + case ISPASYNC_LOOP_UP: + printf("%s: Loop UP\n", isp->isp_name); + break; + case ISPASYNC_PDB_CHANGE_COMPLETE: + if (isp->isp_type & ISP_HA_FC) { + int i; + static char *roles[4] = { + "No", "Target", "Initiator", "Target/Initiator" + }; + for (i = 0 i < MAX_FC_TARG; i++) { + isp_pdb_t *pdbp = + &((fcparam *)isp->isp_param)->isp_pdb[i]; + if (pdbp->pdb_options == INVALID_PDB_OPTIONS) + continue; + printf("%s: Loop ID %d, %s role\n", + isp->isp_name, pdbp->pdb_loopid, + roles[(pdbp->pdb_prli_svc3 >> 4) & 0x3]); + printf(" Node Address 0x%x WWN 0x" + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + BITS2WORD(pdbp->pdb_portid_bits), + pdbp->pdb_portname[0], pdbp->pdb_portname[1], + pdbp->pdb_portname[2], pdbp->pdb_portname[3], + pdbp->pdb_portname[4], pdbp->pdb_portname[5], + pdbp->pdb_portname[6], pdbp->pdb_portname[7]); + if (pdbp->pdb_options & PDB_OPTIONS_ADISC) + printf(" Hard Address 0x%x WWN 0x" + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + BITS2WORD(pdbp->pdb_hardaddr_bits), + pdbp->pdb_nodename[0], + pdbp->pdb_nodename[1], + pdbp->pdb_nodename[2], + pdbp->pdb_nodename[3], + pdbp->pdb_nodename[4], + pdbp->pdb_nodename[5], + pdbp->pdb_nodename[6], + pdbp->pdb_nodename[7]); + switch (pdbp->pdb_prli_svc3 & SVC3_ROLE_MASK) { + case SVC3_TGT_ROLE|SVC3_INI_ROLE: + printf(" Master State=%s, Slave State=%s\n", + isp2100_pdb_statename(pdbp->pdb_mstate), + isp2100_pdb_statename(pdbp->pdb_sstate)); + break; + case SVC3_TGT_ROLE: + printf(" Master State=%s\n", + isp2100_pdb_statename(pdbp->pdb_mstate)); + break; + case SVC3_INI_ROLE: + printf(" Slave State=%s\n", + isp2100_pdb_statename(pdbp->pdb_sstate)); + break; + default: + break; + } + } + break; + } + case ISPASYNC_CHANGE_NOTIFY: + printf("%s: Name Server Database Changed\n", isp->isp_name); + break; default: break; } diff --git a/sys/dev/isp/isp_freebsd.h b/sys/dev/isp/isp_freebsd.h index 6795448..e9e5023 100644 --- a/sys/dev/isp/isp_freebsd.h +++ b/sys/dev/isp/isp_freebsd.h @@ -1,5 +1,5 @@ -/* $Id: isp_freebsd.h,v 1.10 1999/01/30 07:29:00 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: isp_freebsd.h,v 1.11 1999/02/09 01:05:42 mjacob Exp $ */ +/* release_03_16_99 */ /* * Qlogic ISP SCSI Host Adapter FreeBSD Wrapper Definitions (non CAM version) *--------------------------------------- @@ -45,8 +45,10 @@ #endif #if __FreeBSD_version >= 300004 +#define MAXISPREQUEST 256 #include <dev/isp/isp_freebsd_cam.h> #else +#define MAXISPREQUEST 64 #include <sys/systm.h> #include <sys/malloc.h> @@ -60,6 +62,11 @@ #include <vm/pmap.h> #include <sys/kernel.h> + +#include <dev/isp/ispreg.h> +#include <dev/isp/ispvar.h> +#include <dev/isp/ispmbox.h> + #define ISP_SCSI_XFER_T struct scsi_xfer struct isposinfo { char name[8]; @@ -70,19 +77,8 @@ struct isposinfo { #endif }; -#define MAXISPREQUEST 64 - -#include <dev/isp/ispreg.h> -#include <dev/isp/ispvar.h> -#include <dev/isp/ispmbox.h> - -#define PRINTF printf -#define IDPRINTF(lev, x) if (isp->isp_dblev >= lev) printf x +#define PVS "Qlogic ISP Driver, FreeBSD Non-Cam" #define DFLT_DBLEVEL 1 - -#define MEMZERO BZERO -#define MEMCPY(dst, src, amt) bcopy((src), (dst), (amt)) - #define ISP_LOCKVAL_DECL int isp_spl_save #define ISP_ILOCKVAL_DECL ISP_LOCKVAL_DECL #define ISP_UNLOCK(isp) (void) splx(isp_spl_save) @@ -144,7 +140,6 @@ struct isposinfo { #define isp_name isp_osinfo.name -#define SYS_DELAY(x) DELAY(x) #define WATCH_INTERVAL 30 #if __FreeBSD_version >= 300001 @@ -160,10 +155,118 @@ struct isposinfo { #endif #define RESTART_WATCHDOG(f, s) START_WATCHDOG(f, s) -extern void isp_attach __P((struct ispsoftc *)); -extern void isp_uninit __P((struct ispsoftc *)); -#define PVS "Qlogic ISP Driver, FreeBSD Non-Cam" #endif /* __FreeBSD_version >= 300004 */ + +extern void isp_attach(struct ispsoftc *); +extern void isp_uninit(struct ispsoftc *); + +#define MEMZERO bzero +#define MEMCPY(dst, src, amt) bcopy((src), (dst), (amt)) +#ifdef __alpha__ +#define MemoryBarrier alpha_mb +#else +#define MemoryBarrier() +#endif + + +#define IDPRINTF(lev, x) if (isp->isp_dblev >= lev) printf x +#define PRINTF printf + +#define SYS_DELAY(x) DELAY(x) + +#define FC_FW_READY_DELAY (5 * 1000000) + +static __inline void isp_prtstst(ispstatusreq_t *sp); +static __inline const char *isp2100_fw_statename(int state); +static __inline const char *isp2100_pdb_statename(int pdb_state); + +static __inline void isp_prtstst(ispstatusreq_t *sp) +{ + char buf[128]; + sprintf(buf, "states->"); + if (sp->req_state_flags & RQSF_GOT_BUS) + sprintf(buf, "%s%s", buf, "GOT_BUS "); + if (sp->req_state_flags & RQSF_GOT_TARGET) + sprintf(buf, "%s%s", buf, "GOT_TGT "); + if (sp->req_state_flags & RQSF_SENT_CDB) + sprintf(buf, "%s%s", buf, "SENT_CDB "); + if (sp->req_state_flags & RQSF_XFRD_DATA) + sprintf(buf, "%s%s", buf, "XFRD_DATA "); + if (sp->req_state_flags & RQSF_GOT_STATUS) + sprintf(buf, "%s%s", buf, "GOT_STS "); + if (sp->req_state_flags & RQSF_GOT_SENSE) + sprintf(buf, "%s%s", buf, "GOT_SNS "); + if (sp->req_state_flags & RQSF_XFER_COMPLETE) + sprintf(buf, "%s%s", buf, "XFR_CMPLT "); + sprintf(buf, "%s%s", buf, "\n"); + sprintf(buf, "%s%s", buf, "status->"); + if (sp->req_status_flags & RQSTF_DISCONNECT) + sprintf(buf, "%s%s", buf, "Disconnect "); + if (sp->req_status_flags & RQSTF_SYNCHRONOUS) + sprintf(buf, "%s%s", buf, "Sync_xfr "); + if (sp->req_status_flags & RQSTF_PARITY_ERROR) + sprintf(buf, "%s%s", buf, "Parity "); + if (sp->req_status_flags & RQSTF_BUS_RESET) + sprintf(buf, "%s%s", buf, "Bus_Reset "); + if (sp->req_status_flags & RQSTF_DEVICE_RESET) + sprintf(buf, "%s%s", buf, "Device_Reset "); + if (sp->req_status_flags & RQSTF_ABORTED) + sprintf(buf, "%s%s", buf, "Aborted "); + if (sp->req_status_flags & RQSTF_TIMEOUT) + sprintf(buf, "%s%s", buf, "Timeout "); + if (sp->req_status_flags & RQSTF_NEGOTIATION) + sprintf(buf, "%s%s", buf, "Negotiation "); + sprintf(buf, "%s%s", buf, "\n"); +} + +static __inline const char *isp2100_fw_statename(int state) +{ + static char buf[16]; + switch(state) { + case FW_CONFIG_WAIT: return "Config Wait"; + case FW_WAIT_AL_PA: return "Waiting for AL_PA"; + case FW_WAIT_LOGIN: return "Wait Login"; + case FW_READY: return "Ready"; + case FW_LOSS_OF_SYNC: return "Loss Of Sync"; + case FW_ERROR: return "Error"; + case FW_REINIT: return "Re-Init"; + case FW_NON_PART: return "Nonparticipating"; + default: + sprintf(buf, "?0x%x?", state); + return buf; + } +} + +static __inline const char *isp2100_pdb_statename(int pdb_state) +{ + static char buf[16]; + switch(pdb_state) { + case PDB_STATE_DISCOVERY: return "Port Discovery"; + case PDB_STATE_WDISC_ACK: return "Waiting Port Discovery ACK"; + case PDB_STATE_PLOGI: return "Port Login"; + case PDB_STATE_PLOGI_ACK: return "Wait Port Login ACK"; + case PDB_STATE_PRLI: return "Process Login"; + case PDB_STATE_PRLI_ACK: return "Wait Process Login ACK"; + case PDB_STATE_LOGGED_IN: return "Logged In"; + case PDB_STATE_PORT_UNAVAIL: return "Port Unavailable"; + case PDB_STATE_PRLO: return "Process Logout"; + case PDB_STATE_PRLO_ACK: return "Wait Process Logout ACK"; + case PDB_STATE_PLOGO: return "Port Logout"; + case PDB_STATE_PLOG_ACK: return "Wait Port Logout ACK"; + default: + sprintf(buf, "?0x%x?", pdb_state); + return buf; + } +} + +/* + * Disable these for now + */ + +#define ISP_NO_FASTPOST_SCSI 1 +#define ISP_NO_FASTPOST_FC 1 +#define ISP_DISABLE_1080_SUPPORT 1 + #endif /* _ISP_FREEBSD_H */ diff --git a/sys/dev/isp/isp_freebsd_cam.h b/sys/dev/isp/isp_freebsd_cam.h index abe7530..7a76657 100644 --- a/sys/dev/isp/isp_freebsd_cam.h +++ b/sys/dev/isp/isp_freebsd_cam.h @@ -1,5 +1,5 @@ -/* $Id: isp_freebsd_cam.h,v 1.13 1999/01/30 07:29:00 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: isp_freebsd_cam.h,v 1.14 1999/02/09 01:09:03 mjacob Exp $ */ +/* release_03_16_99 */ /* * Qlogic ISP SCSI Host Adapter FreeBSD Wrapper Definitions (CAM version) *--------------------------------------- @@ -55,6 +55,13 @@ #include <cam/scsi/scsi_all.h> #include <cam/scsi/scsi_message.h> +#include "opt_isp.h" +#ifdef SCSI_ISP_FABRIC +#define ISP2100_FABRIC 1 +#endif +#ifdef SCSI_ISP_SCCLUN +#define ISP2100_SCCLUN 1 +#endif #ifndef SCSI_CHECK #define SCSI_CHECK SCSI_STATUS_CHECK_COND @@ -71,6 +78,8 @@ struct isposinfo { struct cam_path *path; volatile char simqfrozen; }; +#define SIMQFRZ_RESOURCE 0x1 +#define SIMQFRZ_LOOPDOWN 0x2 #define isp_sim isp_osinfo.sim #define isp_path isp_osinfo.path @@ -78,26 +87,16 @@ struct isposinfo { #define isp_name isp_osinfo.name -#define MAXISPREQUEST 64 - -#define PVS "Qlogic ISP Driver, FreeBSD CAM" - #include <dev/isp/ispreg.h> #include <dev/isp/ispvar.h> #include <dev/isp/ispmbox.h> -#define PRINTF printf -#define IDPRINTF(lev, x) if (isp->isp_dblev >= lev) printf x - -#define MEMZERO bzero -#define MEMCPY(dst, src, amt) bcopy((src), (dst), (amt)) - +#define PVS "Qlogic ISP Driver, FreeBSD CAM" #ifdef CAMDEBUG #define DFLT_DBLEVEL 2 #else #define DFLT_DBLEVEL 1 #endif - #define ISP_LOCKVAL_DECL int isp_spl_save #define ISP_ILOCKVAL_DECL ISP_LOCKVAL_DECL #define ISP_UNLOCK(isp) (void) splx(isp_spl_save) @@ -157,7 +156,6 @@ extern void isp_done(struct ccb_scsiio *); /* * Can we tag? */ - #define XS_CANTAG(ccb) (((ccb)->ccb_h.flags & CAM_TAG_ACTION_VALID) \ && (ccb)->tag_action != CAM_TAG_ACTION_NONE) /* @@ -172,14 +170,6 @@ extern void isp_done(struct ccb_scsiio *); #define CMD_COMPLETE 0 #define CMD_EAGAIN 1 #define CMD_QUEUED 2 - -#define SYS_DELAY(x) DELAY(x) #define STOP_WATCHDOG(f, s) -#define ISP_NO_FASTPOST_SCSI 1 -#define ISP_NO_FASTPOST_FC 1 - -extern void isp_attach __P((struct ispsoftc *)); -extern void isp_uninit __P((struct ispsoftc *)); - #endif /* _ISP_FREEBSD_CAM_H */ diff --git a/sys/dev/isp/ispmbox.h b/sys/dev/isp/ispmbox.h index 0e879bc..846e647 100644 --- a/sys/dev/isp/ispmbox.h +++ b/sys/dev/isp/ispmbox.h @@ -1,5 +1,5 @@ -/* $Id: ispmbox.h,v 1.5 1999/01/30 07:29:00 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: ispmbox.h,v 1.6 1999/02/09 01:05:42 mjacob Exp $ */ +/* release_03_16_99 */ /* * Mailbox and Queue Entry Definitions for for Qlogic ISP SCSI adapters. * @@ -127,7 +127,8 @@ #define MBOX_CLEAR_TASK_SET 0x67 #define MBOX_ABORT_TASK_SET 0x68 #define MBOX_GET_FW_STATE 0x69 -#define MBOX_GET_LINK_STATUS 0x6a +#define MBOX_GET_PORT_NAME 0x6a +#define MBOX_GET_LINK_STATUS 0x6b #define MBOX_INIT_LIP_RESET 0x6c #define MBOX_INIT_LIP_LOGIN 0x72 @@ -429,7 +430,7 @@ typedef struct { #define RQSTF_NEGOTIATION 0x0080 /* - * FC (ISP2100) specific initialization data structures + * FC (ISP2100) specific data structures */ /* @@ -522,6 +523,97 @@ typedef struct { array[ICB_NNM7] = (u_int8_t) ((wwn >> 56) & 0xff) /* + * Port Data Base Element + */ + +typedef struct { + u_int16_t pdb_options; +#if BYTE_ORDER == BIG_ENDIAN + u_int8_t pdb_sstate; + u_int8_t pdb_mstate; +#else + u_int8_t pdb_mstate; + u_int8_t pdb_sstate; +#endif +#if BYTE_ORDER == BIG_ENDIAN +#define BITS2WORD(x) \ + (x)[1] << 16 | (x)[2] << 8 | (x)[3] +#else +#define BITS2WORD(x) \ + (x)[0] << 16 | (x)[3] << 8 | (x)[2] +#endif + u_int8_t pdb_hardaddr_bits[4]; + u_int8_t pdb_portid_bits[4]; + u_int8_t pdb_nodename[8]; + u_int8_t pdb_portname[8]; + u_int16_t pdb_execthrottle; + u_int16_t pdb_exec_count; +#if BYTE_ORDER == BIG_ENDIAN + u_int8_t pdb_retry_delay; + u_int8_t pdb_retry_count; +#else + u_int8_t pdb_retry_count; + u_int8_t pdb_retry_delay; +#endif + u_int16_t pdb_resalloc; + u_int16_t pdb_curalloc; + u_int16_t pdb_qhead; + u_int16_t pdb_qtail; + u_int16_t pdb_tl_next; + u_int16_t pdb_tl_last; + u_int16_t pdb_features; /* PLOGI, Common Service */ + u_int16_t pdb_pconcurrnt; /* PLOGI, Common Service */ + u_int16_t pdb_roi; /* PLOGI, Common Service */ +#if BYTE_ORDER == BIG_ENDIAN + u_int8_t pdb_initiator; /* PLOGI, Class 3 Control Flags */ + u_int8_t pdb_target; +#else + u_int8_t pdb_target; + u_int8_t pdb_initiator; /* PLOGI, Class 3 Control Flags */ +#endif + u_int16_t pdb_rdsiz; /* PLOGI, Class 3 */ + u_int16_t pdb_ncseq; /* PLOGI, Class 3 */ + u_int16_t pdb_noseq; /* PLOGI, Class 3 */ + u_int16_t pdb_labrtflg; + u_int16_t pdb_lstopflg; + u_int16_t pdb_sqhead; + u_int16_t pdb_sqtail; + u_int16_t pdb_ptimer; + u_int16_t pdb_nxt_seqid; + u_int16_t pdb_fcount; + u_int16_t pdb_prli_len; + u_int16_t pdb_prli_svc0; + u_int16_t pdb_prli_svc3; + u_int16_t pdb_loopid; + u_int16_t pdb_il_ptr; + u_int16_t pdb_sl_ptr; +} isp_pdb_t; + +#define INVALID_PDB_OPTIONS 0xDEAD + +#define PDB_OPTIONS_XMITTING (1<<11) +#define PDB_OPTIONS_LNKXMIT (1<<10) +#define PDB_OPTIONS_ABORTED (1<<9) +#define PDB_OPTIONS_ADISC (1<<1) + +#define PDB_STATE_DISCOVERY 0 +#define PDB_STATE_WDISC_ACK 1 +#define PDB_STATE_PLOGI 2 +#define PDB_STATE_PLOGI_ACK 3 +#define PDB_STATE_PRLI 4 +#define PDB_STATE_PRLI_ACK 5 +#define PDB_STATE_LOGGED_IN 6 +#define PDB_STATE_PORT_UNAVAIL 7 +#define PDB_STATE_PRLO 8 +#define PDB_STATE_PRLO_ACK 9 +#define PDB_STATE_PLOGO 10 +#define PDB_STATE_PLOG_ACK 11 + +#define SVC3_TGT_ROLE 0x10 +#define SVC3_INI_ROLE 0x20 +#define SVC3_ROLE_MASK 0x30 + +/* * Target Mode Structures */ #define TGTSVALID 0x80 /* scsi status & sense data valid */ diff --git a/sys/dev/isp/ispreg.h b/sys/dev/isp/ispreg.h index 5bf5001..940aa50 100644 --- a/sys/dev/isp/ispreg.h +++ b/sys/dev/isp/ispreg.h @@ -1,5 +1,5 @@ -/* $Id: ispreg.h,v 1.5 1999/01/30 07:29:00 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: ispreg.h,v 1.6 1999/02/09 01:09:35 mjacob Exp $ */ +/* release_03_16_99 */ /* * Machine Independent (well, as best as possible) register * definitions for Qlogic ISP SCSI adapters. @@ -57,28 +57,40 @@ * Sad but true, different architectures have different offsets. */ -#define BIU_REGS_OFF 0x00 +#define BIU_REGS_OFF 0x00 -#define PCI_MBOX_REGS_OFF 0x70 -#define PCI_MBOX_REGS2100_OFF 0x10 +#define PCI_MBOX_REGS_OFF 0x70 +#define PCI_MBOX_REGS2100_OFF 0x10 #define SBUS_MBOX_REGS_OFF 0x80 -#define PCI_SXP_REGS_OFF 0x80 +#define PCI_SXP_REGS_OFF 0x80 #define SBUS_SXP_REGS_OFF 0x200 -#define PCI_RISC_REGS_OFF 0x80 +#define PCI_RISC_REGS_OFF 0x80 #define SBUS_RISC_REGS_OFF 0x400 +/* Bless me! Chip designers have putzed it again! */ +#define ISP1080_DMA_REGS_OFF 0x60 +#define DMA_REGS_OFF 0x00 /* same as BIU block */ + /* * NB: The *_BLOCK definitions have no specific hardware meaning. * They serve simply to note to the MD layer which block of * registers offsets are being accessed. */ +#define _NREG_BLKS 5 +#define _BLK_REG_SHFT 13 +#define _BLK_REG_MASK (7 << _BLK_REG_SHFT) +#define BIU_BLOCK (0 << _BLK_REG_SHFT) +#define MBOX_BLOCK (1 << _BLK_REG_SHFT) +#define SXP_BLOCK (2 << _BLK_REG_SHFT) +#define RISC_BLOCK (3 << _BLK_REG_SHFT) +#define DMA_BLOCK (4 << _BLK_REG_SHFT) /* * Bus Interface Block Register Offsets */ -#define BIU_BLOCK 0x0100 + #define BIU_ID_LO BIU_BLOCK+0x0 /* R : Bus ID, Low */ #define BIU2100_FLASH_ADDR BIU_BLOCK+0x0 #define BIU_ID_HI BIU_BLOCK+0x2 /* R : Bus ID, High */ @@ -90,34 +102,37 @@ #define BIU_ISR BIU_BLOCK+0xA /* R : Bus Interface Status */ #define BIU_SEMA BIU_BLOCK+0xC /* RW : Bus Semaphore */ #define BIU_NVRAM BIU_BLOCK+0xE /* RW : Bus NVRAM */ -#define CDMA_CONF BIU_BLOCK+0x20 /* RW*: DMA Configuration */ -#define CDMA2100_CONTROL CDMA_CONF -#define CDMA_CONTROL BIU_BLOCK+0x22 /* RW*: DMA Control */ -#define CDMA_STATUS BIU_BLOCK+0x24 /* R : DMA Status */ -#define CDMA_FIFO_STS BIU_BLOCK+0x26 /* R : DMA FIFO Status */ -#define CDMA_COUNT BIU_BLOCK+0x28 /* RW*: DMA Transfer Count */ -#define CDMA_ADDR0 BIU_BLOCK+0x2C /* RW*: DMA Address, Word 0 */ -#define CDMA_ADDR1 BIU_BLOCK+0x2E /* RW*: DMA Address, Word 1 */ -/* these are for the 1040A cards */ -#define CDMA_ADDR2 BIU_BLOCK+0x30 /* RW*: DMA Address, Word 2 */ -#define CDMA_ADDR3 BIU_BLOCK+0x32 /* RW*: DMA Address, Word 3 */ +#define DFIFO_COMMAND BIU_BLOCK+0x60 /* RW : Command FIFO Port */ +#define RDMA2100_CONTROL DFIFO_COMMAND +#define DFIFO_DATA BIU_BLOCK+0x62 /* RW : Data FIFO Port */ -#define DDMA_CONF BIU_BLOCK+0x40 /* RW*: DMA Configuration */ +/* + * Putzed DMA register layouts. + */ +#define CDMA_CONF DMA_BLOCK+0x20 /* RW*: DMA Configuration */ +#define CDMA2100_CONTROL CDMA_CONF +#define CDMA_CONTROL DMA_BLOCK+0x22 /* RW*: DMA Control */ +#define CDMA_STATUS DMA_BLOCK+0x24 /* R : DMA Status */ +#define CDMA_FIFO_STS DMA_BLOCK+0x26 /* R : DMA FIFO Status */ +#define CDMA_COUNT DMA_BLOCK+0x28 /* RW*: DMA Transfer Count */ +#define CDMA_ADDR0 DMA_BLOCK+0x2C /* RW*: DMA Address, Word 0 */ +#define CDMA_ADDR1 DMA_BLOCK+0x2E /* RW*: DMA Address, Word 1 */ +#define CDMA_ADDR2 DMA_BLOCK+0x30 /* RW*: DMA Address, Word 2 */ +#define CDMA_ADDR3 DMA_BLOCK+0x32 /* RW*: DMA Address, Word 3 */ + +#define DDMA_CONF DMA_BLOCK+0x40 /* RW*: DMA Configuration */ #define TDMA2100_CONTROL DDMA_CONF -#define DDMA_CONTROL BIU_BLOCK+0x42 /* RW*: DMA Control */ -#define DDMA_STATUS BIU_BLOCK+0x44 /* R : DMA Status */ -#define DDMA_FIFO_STS BIU_BLOCK+0x46 /* R : DMA FIFO Status */ -#define DDMA_COUNT_LO BIU_BLOCK+0x48 /* RW*: DMA Xfer Count, Low */ -#define DDMA_COUNT_HI BIU_BLOCK+0x4A /* RW*: DMA Xfer Count, High */ -#define DDMA_ADDR0 BIU_BLOCK+0x4C /* RW*: DMA Address, Word 0 */ -#define DDMA_ADDR1 BIU_BLOCK+0x4E /* RW*: DMA Address, Word 1 */ +#define DDMA_CONTROL DMA_BLOCK+0x42 /* RW*: DMA Control */ +#define DDMA_STATUS DMA_BLOCK+0x44 /* R : DMA Status */ +#define DDMA_FIFO_STS DMA_BLOCK+0x46 /* R : DMA FIFO Status */ +#define DDMA_COUNT_LO DMA_BLOCK+0x48 /* RW*: DMA Xfer Count, Low */ +#define DDMA_COUNT_HI DMA_BLOCK+0x4A /* RW*: DMA Xfer Count, High */ +#define DDMA_ADDR0 DMA_BLOCK+0x4C /* RW*: DMA Address, Word 0 */ +#define DDMA_ADDR1 DMA_BLOCK+0x4E /* RW*: DMA Address, Word 1 */ /* these are for the 1040A cards */ -#define DDMA_ADDR2 BIU_BLOCK+0x50 /* RW*: DMA Address, Word 2 */ -#define DDMA_ADDR3 BIU_BLOCK+0x52 /* RW*: DMA Address, Word 3 */ +#define DDMA_ADDR2 DMA_BLOCK+0x50 /* RW*: DMA Address, Word 2 */ +#define DDMA_ADDR3 DMA_BLOCK+0x52 /* RW*: DMA Address, Word 3 */ -#define DFIFO_COMMAND BIU_BLOCK+0x60 /* RW : Command FIFO Port */ -#define RDMA2100_CONTROL DFIFO_COMMAND -#define DFIFO_DATA BIU_BLOCK+0x62 /* RW : Data FIFO Port */ /* * Bus Interface Block Register Definitions @@ -141,6 +156,9 @@ #define BIU_SBUS_CONF1_BURST8 0x0008 /* Enable 8-byte bursts */ #define BIU_PCI_CONF1_SXP 0x0008 /* SXP register select */ +#define BIU_PCI1080_CONF1_SXP 0x0100 /* SXP bank select */ +#define BIU_PCI1080_CONF1_DMA 0x0300 /* DMA bank select */ + /* ISP2100 Bus Control/Status Register */ #define BIU2100_ICSR_REGBSEL 0x30 /* RW: register bank select */ @@ -175,6 +193,11 @@ ISP_WRITE(isp, BIU_ICR, BIU_ICR_ENABLE_RISC_INT | BIU_ICR_ENABLE_ALL_INTS) : \ ISP_WRITE(isp, BIU_ICR, BIU2100_ICR_ENA_RISC_INT | BIU2100_ICR_ENABLE_ALL_INTS) +#define INTS_ENABLED(isp) ((isp->isp_type & ISP_HA_SCSI)? \ + (ISP_READ(isp, BIU_ICR) & (BIU_ICR_ENABLE_RISC_INT|BIU_ICR_ENABLE_ALL_INTS)) :\ + (ISP_READ(isp, BIU_ICR) & \ + (BIU2100_ICR_ENA_RISC_INT|BIU2100_ICR_ENABLE_ALL_INTS))) + #define DISABLE_INTS(isp) ISP_WRITE(isp, BIU_ICR, 0) /* BUS STATUS REGISTER */ @@ -287,7 +310,6 @@ * Mailbox Block Register Offsets */ -#define MBOX_BLOCK 0x0200 #define INMAILBOX0 MBOX_BLOCK+0x0 #define INMAILBOX1 MBOX_BLOCK+0x2 #define INMAILBOX2 MBOX_BLOCK+0x4 @@ -314,7 +336,6 @@ /* * SXP Block Register Offsets */ -#define SXP_BLOCK 0x0400 #define SXP_PART_ID SXP_BLOCK+0x0 /* R : Part ID Code */ #define SXP_CONFIG1 SXP_BLOCK+0x2 /* RW*: Configuration Reg #1 */ #define SXP_CONFIG2 SXP_BLOCK+0x4 /* RW*: Configuration Reg #2 */ @@ -485,7 +506,6 @@ /* * RISC and Host Command and Control Block Register Offsets */ -#define RISC_BLOCK 0x0800 #define RISC_ACC RISC_BLOCK+0x0 /* RW*: Accumulator */ #define RISC_R1 RISC_BLOCK+0x2 /* RW*: GP Reg R1 */ diff --git a/sys/dev/isp/ispvar.h b/sys/dev/isp/ispvar.h index 79ecf93..139a0d7 100644 --- a/sys/dev/isp/ispvar.h +++ b/sys/dev/isp/ispvar.h @@ -1,5 +1,5 @@ -/* $Id: ispvar.h,v 1.9 1999/01/30 07:29:00 mjacob Exp $ */ -/* release_02_05_99 */ +/* $Id: ispvar.h,v 1.10 1999/02/09 01:11:35 mjacob Exp $ */ +/* release_03_16_99 */ /* * Soft Definitions for for Qlogic ISP SCSI adapters. * @@ -37,7 +37,7 @@ #ifndef _ISPVAR_H #define _ISPVAR_H -#ifdef __NetBSD__ +#if defined(__NetBSD__) || defined(__OpenBSD__) #include <dev/ic/ispmbox.h> #endif #ifdef __FreeBSD__ @@ -77,13 +77,17 @@ struct ispmdvec { }; #define MAX_TARGETS 16 +#ifdef ISP2100_FABRIC +#define MAX_FC_TARG 256 +#else #define MAX_FC_TARG 126 +#endif #define DEFAULT_LOOPID 113 /* queue length must be a power of two */ #define QENTRY_LEN 64 #define RQUEST_QUEUE_LEN MAXISPREQUEST -#define RESULT_QUEUE_LEN (MAXISPREQUEST/4) +#define RESULT_QUEUE_LEN (MAXISPREQUEST/2) #define ISP_QUEUE_ENTRY(q, idx) ((q) + ((idx) * QENTRY_LEN)) #define ISP_QUEUE_SIZE(n) ((n) * QENTRY_LEN) #define ISP_NXT_QENTRY(idx, qlen) (((idx) + 1) & ((qlen)-1)) @@ -164,6 +168,11 @@ typedef struct { u_int16_t isp_maxfrmlen; u_int16_t isp_fwoptions; /* + * Port Data Base + */ + isp_pdb_t isp_pdb[MAX_FC_TARG]; + + /* * Scratch DMA mapped in area to fetch Port Database stuff, etc. */ volatile caddr_t isp_scratch; @@ -237,7 +246,8 @@ struct ispsoftc { u_int : 8, isp_confopts : 8, - : 2, + : 1, + isp_used : 1, isp_dblev : 3, isp_gotdparms : 1, isp_dogactive : 1, @@ -256,7 +266,7 @@ struct ispsoftc { : 19, isp_state : 3, isp_sendmarker : 1, /* send a marker entry */ - isp_update : 1, /* update paramters */ + isp_update : 1, /* update parameters */ isp_nactive : 9; /* how many commands active */ /* @@ -341,9 +351,14 @@ struct ispsoftc { #define ISP_HA_SCSI_1040 0x4 #define ISP_HA_SCSI_1040A 0x5 #define ISP_HA_SCSI_1040B 0x6 +#define ISP_HA_SCSI_1080 0xe #define ISP_HA_FC 0xf0 #define ISP_HA_FC_2100 0x10 +#define IS_SCSI(isp) (isp->isp_type & ISP_HA_SCSI) +#define IS_1080(isp) (isp->isp_type == ISP_HA_SCSI_1080) +#define IS_FC(isp) (isp->isp_type & ISP_HA_FC) + /* * Macros to read, write ISP registers through bus specific code. */ @@ -424,6 +439,7 @@ typedef enum { ISPCTL_RESET_DEV, ISPCTL_ABORT_CMD, ISPCTL_UPDATE_PARAMS, + ISPCTL_FCLINK_TEST } ispctl_t; int isp_control __P((struct ispsoftc *, ispctl_t, void *)); @@ -439,8 +455,11 @@ int isp_control __P((struct ispsoftc *, ispctl_t, void *)); typedef enum { ISPASYNC_NEW_TGT_PARAMS, + ISPASYNC_BUS_RESET, /* Bus Reset */ ISPASYNC_LOOP_DOWN, /* Obvious FC only */ - ISPASYNC_LOOP_UP /* Obvious FC only */ + ISPASYNC_LOOP_UP, /* "" */ + ISPASYNC_PDB_CHANGE_COMPLETE, /* "" */ + ISPASYNC_CHANGE_NOTIFY /* "" */ } ispasync_t; int isp_async __P((struct ispsoftc *, ispasync_t, void *)); |